Upgrade mesos driver to Mesos 1.5 with protobuf 2.5
diff --git a/build.gradle b/build.gradle
index 075b768..575f1b6 100644
--- a/build.gradle
+++ b/build.gradle
@@ -52,6 +52,7 @@
     }
 }
 
+
 subprojects {
 
     apply plugin: 'java'
@@ -69,7 +70,7 @@
     version = "0.2.0"
 
     ext {
-        mesosVer = "0.28.1"
+        //mesosVer = "1.5.0"
         //Allows passing -PhadoopVer=2.6.0 from command line
         if(!project.hasProperty('hadoopVer')) {
             hadoopVer = "2.7.0"
@@ -102,7 +103,7 @@
         capsule "co.paralleluniverse:capsule:0.7.1"
     	myriadExecutorConf 'org.slf4j:slf4j-log4j12:1.7.10'
 
-        compile "org.apache.mesos:mesos:${mesosVer}"
+        //compile "org.apache.mesos:mesos:${mesosVer}"
         compile 'com.google.code.gson:gson:2.3.1'        // marshalling between the scheduler and executor
 
         testCompile 'org.apache.zookeeper:zookeeper:3.4.6' // to resolve temporary mavenlocal issue
@@ -115,4 +116,5 @@
     run {
         systemProperty "myriad.config", "build/resources/main/myriad-config-default.yml"
     }
+
 }
diff --git a/gradle/quality.gradle b/gradle/quality.gradle
index c013d7d..e58d9ef 100644
--- a/gradle/quality.gradle
+++ b/gradle/quality.gradle
@@ -25,6 +25,22 @@
   excludeFilter = file("$rootProject.projectDir/config/findbugs/excludeFilter.xml")
 }
 
+tasks.withType(FindBugs) {
+    exclude '**/org/apache/mesos/*'
+    classes = classes.filter {
+        !it.path.contains(new File("org/apache/mesos/").path)
+    }
+}
+
+tasks.withType(Pmd) {
+    exclude 'org/apache/mesos/**'
+}
+
+tasks.withType(Checkstyle) {
+    exclude 'org/apache/mesos/**'
+}
+
+
 pmd {
     ruleSets = [
 //            'java-basic',         // need brandon's http config to add in
diff --git a/myriad-commons/build.gradle b/myriad-commons/build.gradle
new file mode 100644
index 0000000..c66e8f7
--- /dev/null
+++ b/myriad-commons/build.gradle
@@ -0,0 +1,22 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+dependencies {
+    compile group: 'com.google.protobuf', name: 'protobuf-java', version: '2.5.0'
+}
\ No newline at end of file
diff --git a/myriad-commons/proto/mesos/executor.proto b/myriad-commons/proto/mesos/executor.proto
new file mode 100644
index 0000000..1b5fa5d
--- /dev/null
+++ b/myriad-commons/proto/mesos/executor.proto
@@ -0,0 +1,212 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto2";
+
+import "mesos/mesos.proto";
+
+package mesos.executor;
+
+option java_package = "org.apache.mesos.executor";
+option java_outer_classname = "Protos";
+
+
+/**
+ * Executor event API.
+ *
+ * An event is described using the standard protocol buffer "union"
+ * trick, see https://developers.google.com/protocol-buffers/docs/techniques#union.
+ */
+message Event {
+  // Possible event types, followed by message definitions if
+  // applicable.
+  enum Type {
+    // This must be the first enum value in this list, to
+    // ensure that if 'type' is not set, the default value
+    // is UNKNOWN. This enables enum values to be added
+    // in a backwards-compatible way. See: MESOS-4997.
+    UNKNOWN = 0;
+
+    SUBSCRIBED = 1;   // See 'Subscribed' below.
+    LAUNCH = 2;       // See 'Launch' below.
+    LAUNCH_GROUP = 8; // See 'LaunchGroup' below.
+    KILL = 3;         // See 'Kill' below.
+    ACKNOWLEDGED = 4; // See 'Acknowledged' below.
+    MESSAGE = 5;      // See 'Message' below.
+    ERROR = 6;        // See 'Error' below.
+
+    // Received when the agent asks the executor to shutdown/kill itself.
+    // The executor is then required to kill all its active tasks, send
+    // `TASK_KILLED` status updates and gracefully exit. The executor
+    // should terminate within a `MESOS_EXECUTOR_SHUTDOWN_GRACE_PERIOD`
+    // (an environment variable set by the agent upon executor startup);
+    // it can be configured via `ExecutorInfo.shutdown_grace_period`. If
+    // the executor fails to do so, the agent will forcefully destroy the
+    // container where the executor is running. The agent would then send
+    // `TASK_LOST` updates for any remaining active tasks of this executor.
+    //
+    // NOTE: The executor must not assume that it will always be allotted
+    // the full grace period, as the agent may decide to allot a shorter
+    // period and failures / forcible terminations may occur.
+    //
+    // TODO(alexr): Consider adding a duration field into the `Shutdown`
+    // message so that the agent can communicate when a shorter period
+    // has been allotted.
+    SHUTDOWN = 7;
+  }
+
+  // First event received when the executor subscribes.
+  // The 'id' field in the 'framework_info' will be set.
+   message Subscribed {
+    required ExecutorInfo executor_info = 1;
+    required FrameworkInfo framework_info = 2;
+    required SlaveInfo slave_info = 3;
+
+    // Uniquely identifies the container of an executor run.
+    optional ContainerID container_id = 4;
+  }
+
+  // Received when the framework attempts to launch a task. Once
+  // the task is successfuly launched, the executor must respond with
+  // a TASK_RUNNING update (See TaskState in mesos.proto).
+  message Launch {
+    required TaskInfo task = 1;
+  }
+
+  // Received when the framework attempts to launch a group of tasks atomically.
+  // Similar to `Launch` above the executor must send TASK_RUNNING updates for
+  // tasks that are successfully launched.
+  message LaunchGroup {
+    required TaskGroupInfo task_group = 1;
+  }
+
+  // Received when the scheduler wants to kill a specific task. Once
+  // the task is terminated, the executor should send a TASK_KILLED
+  // (or TASK_FAILED) update. The terminal update is necessary so
+  // Mesos can release the resources associated with the task.
+  message Kill {
+    required TaskID task_id = 1;
+
+    // If set, overrides any previously specified kill policy for this task.
+    // This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+    optional KillPolicy kill_policy = 2;
+  }
+
+  // Received when the slave acknowledges the receipt of status
+  // update. Schedulers are responsible for explicitly acknowledging
+  // the receipt of status updates that have 'update.status().uuid()'
+  // field set. Unacknowledged updates can be retried by the executor.
+  // They should also be sent by the executor whenever it
+  // re-subscribes.
+  message Acknowledged {
+    required TaskID task_id = 1;
+    required bytes uuid = 2;
+  }
+
+  // Received when a custom message generated by the scheduler is
+  // forwarded by the slave. Note that this message is not
+  // interpreted by Mesos and is only forwarded (without reliability
+  // guarantees) to the executor. It is up to the scheduler to retry
+  // if the message is dropped for any reason.
+  message Message {
+    required bytes data = 1;
+  }
+
+  // Received in case the executor sends invalid calls (e.g.,
+  // required values not set).
+  // TODO(arojas): Remove this once the old executor driver is no
+  // longer supported. With HTTP API all errors will be signaled via
+  // HTTP response codes.
+  message Error {
+    required string message = 1;
+  }
+
+  // Type of the event, indicates which optional field below should be
+  // present if that type has a nested message definition.
+  // Enum fields should be optional, see: MESOS-4997.
+  optional Type type = 1;
+
+  optional Subscribed subscribed = 2;
+  optional Acknowledged acknowledged = 3;
+  optional Launch launch = 4;
+  optional LaunchGroup launch_group = 8;
+  optional Kill kill = 5;
+  optional Message message = 6;
+  optional Error error = 7;
+}
+
+
+/**
+ * Executor call API.
+ *
+ * Like Event, a Call is described using the standard protocol buffer
+ * "union" trick (see above).
+ */
+message Call {
+  // Possible call types, followed by message definitions if
+  // applicable.
+  enum Type {
+    // See comments above on `Event::Type` for more details on this enum value.
+    UNKNOWN = 0;
+
+    SUBSCRIBE = 1;    // See 'Subscribe' below.
+    UPDATE = 2;       // See 'Update' below.
+    MESSAGE = 3;      // See 'Message' below.
+  }
+
+  // Request to subscribe with the slave. If subscribing after a disconnection,
+  // it must include a list of all the tasks and updates which haven't been
+  // acknowledged by the scheduler.
+  message Subscribe {
+    repeated TaskInfo unacknowledged_tasks = 1;
+    repeated Update unacknowledged_updates = 2;
+  }
+
+  // Notifies the scheduler that a task has transitioned from one
+  // state to another. Status updates should be used by executors
+  // to reliably communicate the status of the tasks that they
+  // manage. It is crucial that a terminal update (see TaskState
+  // in mesos.proto) is sent to the scheduler as soon as the task
+  // terminates, in order for Mesos to release the resources allocated
+  // to the task. It is the responsibility of the scheduler to
+  // explicitly acknowledge the receipt of a status update. See
+  // 'Acknowledged' in the 'Events' section above for the semantics.
+  message Update {
+    required TaskStatus status = 1;
+  }
+
+  // Sends arbitrary binary data to the scheduler. Note that Mesos
+  // neither interprets this data nor makes any guarantees about the
+  // delivery of this message to the scheduler.
+  // See 'Message' in the 'Events' section.
+  message Message {
+    required bytes data = 2;
+  }
+
+  // Identifies the executor which generated this call.
+  required ExecutorID executor_id = 1;
+  required FrameworkID framework_id = 2;
+
+  // Type of the call, indicates which optional field below should be
+  // present if that type has a nested message definition.
+  // In case type is SUBSCRIBED, no message needs to be set.
+  // See comments on `Event::Type` above on the reasoning behind this field being optional.
+  optional Type type = 3;
+
+  optional Subscribe subscribe = 4;
+  optional Update update = 5;
+  optional Message message = 6;
+}
diff --git a/myriad-commons/proto/mesos/mesos.proto b/myriad-commons/proto/mesos/mesos.proto
new file mode 100644
index 0000000..3449c2d
--- /dev/null
+++ b/myriad-commons/proto/mesos/mesos.proto
@@ -0,0 +1,3190 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto2";
+
+package mesos;
+
+option java_package = "org.apache.mesos";
+option java_outer_classname = "Protos";
+
+
+/**
+ * Status is used to indicate the state of the scheduler and executor
+ * driver after function calls.
+ */
+enum Status {
+  DRIVER_NOT_STARTED = 1;
+  DRIVER_RUNNING = 2;
+  DRIVER_ABORTED = 3;
+  DRIVER_STOPPED = 4;
+}
+
+
+/**
+ * A unique ID assigned to a framework. A framework can reuse this ID
+ * in order to do failover (see MesosSchedulerDriver).
+ */
+message FrameworkID {
+  required string value = 1;
+}
+
+
+/**
+ * A unique ID assigned to an offer.
+ */
+message OfferID {
+  required string value = 1;
+}
+
+
+/**
+ * A unique ID assigned to a slave. Currently, a slave gets a new ID
+ * whenever it (re)registers with Mesos. Framework writers shouldn't
+ * assume any binding between a slave ID and and a hostname.
+ */
+message SlaveID {
+  required string value = 1;
+}
+
+
+/**
+ * A framework-generated ID to distinguish a task. The ID must remain
+ * unique while the task is active. A framework can reuse an ID _only_
+ * if the previous task with the same ID has reached a terminal state
+ * (e.g., TASK_FINISHED, TASK_KILLED, etc.). However, reusing task IDs
+ * is strongly discouraged (MESOS-2198).
+ */
+message TaskID {
+  required string value = 1;
+}
+
+
+/**
+ * A framework-generated ID to distinguish an executor. Only one
+ * executor with the same ID can be active on the same slave at a
+ * time. However, reusing executor IDs is discouraged.
+ */
+message ExecutorID {
+  required string value = 1;
+}
+
+
+/**
+ * ID used to uniquely identify a container. If the `parent` is not
+ * specified, the ID is a UUID generated by the agent to uniquely
+ * identify the container of an executor run. If the `parent` field is
+ * specified, it represents a nested container.
+ */
+message ContainerID {
+  required string value = 1;
+  optional ContainerID parent = 2;
+}
+
+
+/**
+ * A unique ID assigned to a resource provider. Currently, a resource
+ * provider gets a new ID whenever it (re)registers with Mesos.
+ */
+message ResourceProviderID {
+  required string value = 1;
+}
+
+
+/**
+ * Represents time since the epoch, in nanoseconds.
+ */
+message TimeInfo {
+  required int64 nanoseconds = 1;
+}
+
+
+/**
+ * Represents duration in nanoseconds.
+ */
+message DurationInfo {
+  required int64 nanoseconds = 1;
+}
+
+
+/**
+ * A network address.
+ *
+ * TODO(bmahler): Use this more widely.
+ */
+message Address {
+  // May contain a hostname, IP address, or both.
+  optional string hostname = 1;
+  optional string ip = 2;
+
+  required int32 port = 3;
+}
+
+
+/**
+ * Represents a URL.
+ */
+message URL {
+  required string scheme = 1;
+  required Address address = 2;
+  optional string path = 3;
+  repeated Parameter query = 4;
+  optional string fragment = 5;
+}
+
+
+/**
+ * Represents an interval, from a given start time over a given duration.
+ * This interval pertains to an unavailability event, such as maintenance,
+ * and is not a generic interval.
+ */
+message Unavailability {
+  required TimeInfo start = 1;
+
+  // When added to `start`, this represents the end of the interval.
+  // If unspecified, the duration is assumed to be infinite.
+  optional DurationInfo duration = 2;
+
+  // TODO(josephw): Add additional fields for expressing the purpose and
+  // urgency of the unavailability event.
+}
+
+
+/**
+ * Represents a single machine, which may hold one or more slaves.
+ *
+ * NOTE: In order to match a slave to a machine, both the `hostname` and
+ * `ip` must match the values advertised by the slave to the master.
+ * Hostname is not case-sensitive.
+ */
+message MachineID {
+  optional string hostname = 1;
+  optional string ip = 2;
+}
+
+
+/**
+ * Holds information about a single machine, its `mode`, and any other
+ * relevant information which may affect the behavior of the machine.
+ */
+message MachineInfo {
+  // Describes the several states that a machine can be in.  A `Mode`
+  // applies to a machine and to all associated slaves on the machine.
+  enum Mode {
+    // In this mode, a machine is behaving normally;
+    // offering resources, executing tasks, etc.
+    UP = 1;
+
+    // In this mode, all slaves on the machine are expected to cooperate with
+    // frameworks to drain resources.  In general, draining is done ahead of
+    // a pending `unavailability`.  The resources should be drained so as to
+    // maximize utilization prior to the maintenance but without knowingly
+    // violating the frameworks' requirements.
+    DRAINING = 2;
+
+    // In this mode, a machine is not running any tasks and will not offer
+    // any of its resources.  Slaves on the machine will not be allowed to
+    // register with the master.
+    DOWN = 3;
+  }
+
+  required MachineID id = 1;
+  optional Mode mode = 2;
+
+  // Signifies that the machine may be unavailable during the given interval.
+  // See comments in `Unavailability` and for the `unavailability` fields
+  // in `Offer` and `InverseOffer` for more information.
+  optional Unavailability unavailability = 3;
+}
+
+
+/**
+ * Describes a framework.
+ */
+message FrameworkInfo {
+  // Used to determine the Unix user that an executor or task should be
+  // launched as.
+  //
+  // When using the MesosSchedulerDriver, if the field is set to an
+  // empty string, it will automagically set it to the current user.
+  //
+  // When using the HTTP Scheduler API, the user has to be set
+  // explicitly.
+  required string user = 1;
+
+  // Name of the framework that shows up in the Mesos Web UI.
+  required string name = 2;
+
+  // Note that 'id' is only available after a framework has
+  // registered, however, it is included here in order to facilitate
+  // scheduler failover (i.e., if it is set then the
+  // MesosSchedulerDriver expects the scheduler is performing
+  // failover).
+  optional FrameworkID id = 3;
+
+  // The amount of time (in seconds) that the master will wait for the
+  // scheduler to failover before it tears down the framework by
+  // killing all its tasks/executors. This should be non-zero if a
+  // framework expects to reconnect after a failure and not lose its
+  // tasks/executors.
+  //
+  // NOTE: To avoid accidental destruction of tasks, production
+  // frameworks typically set this to a large value (e.g., 1 week).
+  optional double failover_timeout = 4 [default = 0.0];
+
+  // If set, agents running tasks started by this framework will write
+  // the framework pid, executor pids and status updates to disk. If
+  // the agent exits (e.g., due to a crash or as part of upgrading
+  // Mesos), this checkpointed data allows the restarted agent to
+  // reconnect to executors that were started by the old instance of
+  // the agent. Enabling checkpointing improves fault tolerance, at
+  // the cost of a (usually small) increase in disk I/O.
+  optional bool checkpoint = 5 [default = false];
+
+  // Roles are the entities to which allocations are made.
+  // The framework must have at least one role in order to
+  // be offered resources. Note that `role` is deprecated
+  // in favor of `roles` and only one of these fields must
+  // be used. Since we cannot distinguish between empty
+  // `roles` and the default unset `role`, we require that
+  // frameworks set the `MULTI_ROLE` capability if
+  // setting the `roles` field.
+  optional string role = 6 [default = "*", deprecated=true];
+  repeated string roles = 12;
+
+  // Used to indicate the current host from which the scheduler is
+  // registered in the Mesos Web UI. If set to an empty string Mesos
+  // will automagically set it to the current hostname if one is
+  // available.
+  optional string hostname = 7;
+
+  // This field should match the credential's principal the framework
+  // uses for authentication. This field is used for framework API
+  // rate limiting and dynamic reservations. It should be set even
+  // if authentication is not enabled if these features are desired.
+  optional string principal = 8;
+
+  // This field allows a framework to advertise its web UI, so that
+  // the Mesos web UI can link to it. It is expected to be a full URL,
+  // for example http://my-scheduler.example.com:8080/.
+  optional string webui_url = 9;
+
+  message Capability {
+    enum Type {
+      // This must be the first enum value in this list, to
+      // ensure that if 'type' is not set, the default value
+      // is UNKNOWN. This enables enum values to be added
+      // in a backwards-compatible way. See: MESOS-4997.
+      UNKNOWN = 0;
+
+      // Receive offers with revocable resources. See 'Resource'
+      // message for details.
+      REVOCABLE_RESOURCES = 1;
+
+      // Receive the TASK_KILLING TaskState when a task is being
+      // killed by an executor. The executor will examine this
+      // capability to determine whether it can send TASK_KILLING.
+      TASK_KILLING_STATE = 2;
+
+      // Indicates whether the framework is aware of GPU resources.
+      // Frameworks that are aware of GPU resources are expected to
+      // avoid placing non-GPU workloads on GPU agents, in order
+      // to avoid occupying a GPU agent and preventing GPU workloads
+      // from running! Currently, if a framework is unaware of GPU
+      // resources, it will not be offered *any* of the resources on
+      // an agent with GPUs. This restriction is in place because we
+      // do not have a revocation mechanism that ensures GPU workloads
+      // can evict GPU agent occupants if necessary.
+      //
+      // TODO(bmahler): As we add revocation we can relax the
+      // restriction here. See MESOS-5634 for more information.
+      GPU_RESOURCES = 3;
+
+      // Receive offers with resources that are shared.
+      SHARED_RESOURCES = 4;
+
+      // Indicates that (1) the framework is prepared to handle the
+      // following TaskStates: TASK_UNREACHABLE, TASK_DROPPED,
+      // TASK_GONE, TASK_GONE_BY_OPERATOR, and TASK_UNKNOWN, and (2)
+      // the framework will assume responsibility for managing
+      // partitioned tasks that reregister with the master.
+      //
+      // Frameworks that enable this capability can define how they
+      // would like to handle partitioned tasks. Frameworks will
+      // receive TASK_UNREACHABLE for tasks on agents that are
+      // partitioned from the master. If/when a partitioned agent
+      // reregisters, tasks on the agent that were started by
+      // PARTITION_AWARE frameworks will not killed.
+      //
+      // Without this capability, frameworks will receive TASK_LOST
+      // for tasks on partitioned agents; such tasks will be killed by
+      // Mesos when the agent reregisters (unless the master has
+      // failed over).
+      PARTITION_AWARE = 5;
+
+      // This expresses the ability for the framework to be
+      // "multi-tenant" via using the newly introduced `roles`
+      // field, and examining `Offer.allocation_info` to determine
+      // which role the offers are being made to. We also
+      // expect that "single-tenant" schedulers eventually
+      // provide this and move away from the deprecated
+      // `role` field.
+      MULTI_ROLE = 6;
+
+      // This capability has two effects for a framework.
+      //
+      // (1) The framework is offered resources in a new format.
+      //
+      //     The offered resources have the `Resource.reservations` field set
+      //     rather than `Resource.role` and `Resource.reservation`. In short,
+      //     an empty `reservations` field denotes unreserved resources, and
+      //     each `ReservationInfo` in the `reservations` field denotes a
+      //     reservation that refines the previous one.
+      //
+      //     See the 'Resource Format' section for more details.
+      //
+      // (2) The framework can create refined reservations.
+      //
+      //     A framework can refine an existing reservation via the
+      //     `Resource.reservations` field. For example, a reservation for role
+      //     `eng` can be refined to `eng/front_end`.
+      //
+      //     See `ReservationInfo.reservations` for more details.
+      //
+      // NOTE: Without this capability, a framework is not offered resources
+      // that have refined reservations. A resource is said to have refined
+      // reservations if it uses the `Resource.reservations` field, and
+      // `Resource.reservations_size() > 1`.
+      RESERVATION_REFINEMENT = 7; // EXPERIMENTAL.
+
+      // Indicates that the framework is prepared to receive offers
+      // for agents whose region is different from the master's
+      // region. Network links between hosts in different regions
+      // typically have higher latency and lower bandwidth than
+      // network links within a region, so frameworks should be
+      // careful to only place suitable workloads in remote regions.
+      // Frameworks that are not region-aware will never receive
+      // offers for remote agents; region-aware frameworks are assumed
+      // to implement their own logic to decide which workloads (if
+      // any) are suitable for placement on remote agents.
+      REGION_AWARE = 8;
+    }
+
+    // Enum fields should be optional, see: MESOS-4997.
+    optional Type type = 1;
+  }
+
+  // This field allows a framework to advertise its set of
+  // capabilities (e.g., ability to receive offers for revocable
+  // resources).
+  repeated Capability capabilities = 10;
+
+  // Labels are free-form key value pairs supplied by the framework
+  // scheduler (e.g., to describe additional functionality offered by
+  // the framework). These labels are not interpreted by Mesos itself.
+  // Labels should not contain duplicate key-value pairs.
+  optional Labels labels = 11;
+}
+
+
+/**
+ * Describes a general non-interpreting non-killing check for a task or
+ * executor (or any arbitrary process/command). A type is picked by
+ * specifying one of the optional fields. Specifying more than one type
+ * is an error.
+ *
+ * NOTE: This API is unstable and the related feature is experimental.
+ */
+message CheckInfo {
+  enum Type {
+    UNKNOWN = 0;
+    COMMAND = 1;
+    HTTP = 2;
+    TCP = 3;
+
+    // TODO(alexr): Consider supporting custom user checks. They should
+    // probably be paired with a `data` field and complemented by a
+    // `data` response in `CheckStatusInfo`.
+  }
+
+  // Describes a command check. If applicable, enters mount and/or network
+  // namespaces of the task.
+  message Command {
+    required CommandInfo command = 1;
+  }
+
+  // Describes an HTTP check. Sends a GET request to
+  // http://<host>:port/path. Note that <host> is not configurable and is
+  // resolved automatically to 127.0.0.1.
+  message Http {
+    // Port to send the HTTP request.
+    required uint32 port = 1;
+
+    // HTTP request path.
+    optional string path = 2;
+
+    // TODO(alexr): Add support for HTTP method. While adding POST
+    // and PUT is simple, supporting payload is more involved.
+
+    // TODO(alexr): Add support for custom HTTP headers.
+
+    // TODO(alexr): Consider adding an optional message to describe TLS
+    // options and thus enabling https. Such message might contain certificate
+    // validation, TLS version.
+  }
+
+  // Describes a TCP check, i.e. based on establishing a TCP connection to
+  // the specified port. Note that <host> is not configurable and is resolved
+  // automatically to 127.0.0.1.
+  message Tcp {
+    required uint32 port = 1;
+  }
+
+  // The type of the check.
+  optional Type type = 1;
+
+  // Command check.
+  optional Command command = 2;
+
+  // HTTP check.
+  optional Http http = 3;
+
+  // TCP check.
+  optional Tcp tcp = 7;
+
+  // Amount of time to wait to start checking the task after it
+  // transitions to `TASK_RUNNING` or `TASK_STARTING` if the latter
+  // is used by the executor.
+  optional double delay_seconds = 4 [default = 15.0];
+
+  // Interval between check attempts, i.e., amount of time to wait after
+  // the previous check finished or timed out to start the next check.
+  optional double interval_seconds = 5 [default = 10.0];
+
+  // Amount of time to wait for the check to complete. Zero means infinite
+  // timeout.
+  //
+  // After this timeout, the check attempt is aborted and no result is
+  // reported. Note that this may be considered a state change and hence
+  // may trigger a check status change delivery to the corresponding
+  // scheduler. See `CheckStatusInfo` for more details.
+  optional double timeout_seconds = 6 [default = 20.0];
+}
+
+
+/**
+ * Describes a health check for a task or executor (or any arbitrary
+ * process/command). A type is picked by specifying one of the
+ * optional fields. Specifying more than one type is an error.
+ */
+message HealthCheck {
+  enum Type {
+    UNKNOWN = 0;
+    COMMAND = 1;
+    HTTP = 2;
+    TCP = 3;
+  }
+
+  // Describes an HTTP health check. Sends a GET request to
+  // scheme://<host>:port/path. Note that <host> is not configurable and is
+  // resolved automatically, in most cases to 127.0.0.1. Default executors
+  // treat return codes between 200 and 399 as success; custom executors
+  // may employ a different strategy, e.g. leveraging the `statuses` field.
+  message HTTPCheckInfo {
+    // Currently "http" and "https" are supported.
+    optional string scheme = 3;
+
+    // Port to send the HTTP request.
+    required uint32 port = 1;
+
+    // HTTP request path.
+    optional string path = 2;
+
+    // TODO(alexr): Add support for HTTP method. While adding POST
+    // and PUT is simple, supporting payload is more involved.
+
+    // TODO(alexr): Add support for custom HTTP headers.
+
+    // TODO(alexr): Add support for success and possibly failure
+    // statuses.
+
+    // NOTE: It is up to the custom executor to interpret and act on this
+    // field. Setting this field has no effect on the default executors.
+    //
+    // TODO(haosdent): Deprecate this field when we add better support for
+    // success and possibly failure statuses, e.g. ranges of success and
+    // failure statuses.
+    repeated uint32 statuses = 4;
+
+    // TODO(haosdent): Consider adding a flag to enable task's certificate
+    // validation for HTTPS health checks, see MESOS-5997.
+
+    // TODO(benh): Include an 'optional bytes data' field for checking
+    // for specific data in the response.
+  }
+
+  // Describes a TCP health check, i.e. based on establishing
+  // a TCP connection to the specified port.
+  message TCPCheckInfo {
+    // Port expected to be open.
+    required uint32 port = 1;
+  }
+
+  // TODO(benh): Consider adding a URL health check strategy which
+  // allows doing something similar to the HTTP strategy but
+  // encapsulates all the details in a single string field.
+
+  // Amount of time to wait to start health checking the task after it
+  // transitions to `TASK_RUNNING` or `TASK_STATING` if the latter is
+  // used by the executor.
+  optional double delay_seconds = 2 [default = 15.0];
+
+  // Interval between health checks, i.e., amount of time to wait after
+  // the previous health check finished or timed out to start the next
+  // health check.
+  optional double interval_seconds = 3 [default = 10.0];
+
+  // Amount of time to wait for the health check to complete. After this
+  // timeout, the health check is aborted and treated as a failure. Zero
+  // means infinite timeout.
+  optional double timeout_seconds = 4 [default = 20.0];
+
+  // Number of consecutive failures until the task is killed by the executor.
+  optional uint32 consecutive_failures = 5 [default = 3];
+
+  // Amount of time after the task is launched during which health check
+  // failures are ignored. Once a check succeeds for the first time,
+  // the grace period does not apply anymore. Note that it includes
+  // `delay_seconds`, i.e., setting `grace_period_seconds` < `delay_seconds`
+  // has no effect.
+  optional double grace_period_seconds = 6 [default = 10.0];
+
+  // TODO(alexr): Add an optional `KillPolicy` that should be used
+  // if the task is killed because of a health check failure.
+
+  // The type of health check.
+  optional Type type = 8;
+
+  // Command health check.
+  optional CommandInfo command = 7;
+
+  // HTTP health check.
+  optional HTTPCheckInfo http = 1;
+
+  // TCP health check.
+  optional TCPCheckInfo tcp = 9;
+}
+
+
+/**
+ * Describes a kill policy for a task. Currently does not express
+ * different policies (e.g. hitting HTTP endpoints), only controls
+ * how long to wait between graceful and forcible task kill:
+ *
+ *     graceful kill --------------> forcible kill
+ *                    grace_period
+ *
+ * Kill policies are best-effort, because machine failures / forcible
+ * terminations may occur.
+ *
+ * NOTE: For executor-less command-based tasks, the kill is performed
+ * via sending a signal to the task process: SIGTERM for the graceful
+ * kill and SIGKILL for the forcible kill. For the docker executor-less
+ * tasks the grace period is passed to 'docker stop --time'.
+ */
+message KillPolicy {
+  // The grace period specifies how long to wait before forcibly
+  // killing the task. It is recommended to attempt to gracefully
+  // kill the task (and send TASK_KILLING) to indicate that the
+  // graceful kill is in progress. Once the grace period elapses,
+  // if the task has not terminated, a forcible kill should occur.
+  // The task should not assume that it will always be allotted
+  // the full grace period. For example, the executor may be
+  // shutdown more quickly by the agent, or failures / forcible
+  // terminations may occur.
+  optional DurationInfo grace_period = 1;
+}
+
+
+/**
+ * Describes a command, executed via: '/bin/sh -c value'. Any URIs specified
+ * are fetched before executing the command.  If the executable field for an
+ * uri is set, executable file permission is set on the downloaded file.
+ * Otherwise, if the downloaded file has a recognized archive extension
+ * (currently [compressed] tar and zip) it is extracted into the executor's
+ * working directory. This extraction can be disabled by setting `extract` to
+ * false. In addition, any environment variables are set before executing
+ * the command (so they can be used to "parameterize" your command).
+ */
+message CommandInfo {
+  message URI {
+    required string value = 1;
+    optional bool executable = 2;
+
+    // In case the fetched file is recognized as an archive, extract
+    // its contents into the sandbox. Note that a cached archive is
+    // not copied from the cache to the sandbox in case extraction
+    // originates from an archive in the cache.
+    optional bool extract = 3 [default = true];
+
+    // If this field is "true", the fetcher cache will be used. If not,
+    // fetching bypasses the cache and downloads directly into the
+    // sandbox directory, no matter whether a suitable cache file is
+    // available or not. The former directs the fetcher to download to
+    // the file cache, then copy from there to the sandbox. Subsequent
+    // fetch attempts with the same URI will omit downloading and copy
+    // from the cache as long as the file is resident there. Cache files
+    // may get evicted at any time, which then leads to renewed
+    // downloading. See also "docs/fetcher.md" and
+    // "docs/fetcher-cache-internals.md".
+    optional bool cache = 4;
+
+    // The fetcher's default behavior is to use the URI string's basename to
+    // name the local copy. If this field is provided, the local copy will be
+    // named with its value instead. If there is a directory component (which
+    // must be a relative path), the local copy will be stored in that
+    // subdirectory inside the sandbox.
+    optional string output_file = 5;
+  }
+
+  repeated URI uris = 1;
+
+  optional Environment environment = 2;
+
+  // There are two ways to specify the command:
+  // 1) If 'shell == true', the command will be launched via shell
+  //		(i.e., /bin/sh -c 'value'). The 'value' specified will be
+  //		treated as the shell command. The 'arguments' will be ignored.
+  // 2) If 'shell == false', the command will be launched by passing
+  //		arguments to an executable. The 'value' specified will be
+  //		treated as the filename of the executable. The 'arguments'
+  //		will be treated as the arguments to the executable. This is
+  //		similar to how POSIX exec families launch processes (i.e.,
+  //		execlp(value, arguments(0), arguments(1), ...)).
+  // NOTE: The field 'value' is changed from 'required' to 'optional'
+  // in 0.20.0. It will only cause issues if a new framework is
+  // connecting to an old master.
+  optional bool shell = 6 [default = true];
+  optional string value = 3;
+  repeated string arguments = 7;
+
+  // Enables executor and tasks to run as a specific user. If the user
+  // field is present both in FrameworkInfo and here, the CommandInfo
+  // user value takes precedence.
+  optional string user = 5;
+}
+
+
+/**
+ * Describes information about an executor.
+ */
+message ExecutorInfo {
+  enum Type {
+    UNKNOWN = 0;
+
+    // Mesos provides a simple built-in default executor that frameworks can
+    // leverage to run shell commands and containers.
+    //
+    // NOTES:
+    //
+    // 1) `command` must not be set when using a default executor.
+    //
+    // 2) Default executor only accepts a *single* `LAUNCH` or `LAUNCH_GROUP`
+    //    offer operation.
+    //
+    // 3) If `container` is set, `container.type` must be `MESOS`
+    //    and `container.mesos.image` must not be set.
+    DEFAULT = 1;
+
+    // For frameworks that need custom functionality to run tasks, a `CUSTOM`
+    // executor can be used. Note that `command` must be set when using a
+    // `CUSTOM` executor.
+    CUSTOM = 2;
+  }
+
+  // For backwards compatibility, if this field is not set when using `LAUNCH`
+  // offer operation, Mesos will infer the type by checking if `command` is
+  // set (`CUSTOM`) or unset (`DEFAULT`). `type` must be set when using
+  // `LAUNCH_GROUP` offer operation.
+  //
+  // TODO(vinod): Add support for explicitly setting `type` to `DEFAULT `
+  // in `LAUNCH` offer operation.
+  optional Type type = 15;
+
+  required ExecutorID executor_id = 1;
+  optional FrameworkID framework_id = 8; // TODO(benh): Make this required.
+  optional CommandInfo command = 7;
+
+  // Executor provided with a container will launch the container
+  // with the executor's CommandInfo and we expect the container to
+  // act as a Mesos executor.
+  optional ContainerInfo container = 11;
+
+  repeated Resource resources = 5;
+  optional string name = 9;
+
+  // 'source' is an identifier style string used by frameworks to
+  // track the source of an executor. This is useful when it's
+  // possible for different executor ids to be related semantically.
+  //
+  // NOTE: 'source' is exposed alongside the resource usage of the
+  // executor via JSON on the slave. This allows users to import usage
+  // information into a time series database for monitoring.
+  //
+  // This field is deprecated since 1.0. Please use labels for
+  // free-form metadata instead.
+  optional string source = 10 [deprecated = true]; // Since 1.0.
+
+  // This field can be used to pass arbitrary bytes to an executor.
+  optional bytes data = 4;
+
+  // Service discovery information for the executor. It is not
+  // interpreted or acted upon by Mesos. It is up to a service
+  // discovery system to use this information as needed and to handle
+  // executors without service discovery information.
+  optional DiscoveryInfo discovery = 12;
+
+  // When shutting down an executor the agent will wait in a
+  // best-effort manner for the grace period specified here
+  // before forcibly destroying the container. The executor
+  // must not assume that it will always be allotted the full
+  // grace period, as the agent may decide to allot a shorter
+  // period and failures / forcible terminations may occur.
+  optional DurationInfo shutdown_grace_period = 13;
+
+  // Labels are free-form key value pairs which are exposed through
+  // master and slave endpoints. Labels will not be interpreted or
+  // acted upon by Mesos itself. As opposed to the data field, labels
+  // will be kept in memory on master and slave processes. Therefore,
+  // labels should be used to tag executors with lightweight metadata.
+  // Labels should not contain duplicate key-value pairs.
+  optional Labels labels = 14;
+}
+
+
+/**
+ * Describes a domain. A domain is a collection of hosts that have
+ * similar characteristics. Mesos currently only supports "fault
+ * domains", which identify groups of hosts with similar failure
+ * characteristics.
+ *
+ * Frameworks can generally assume that network links between hosts in
+ * the same fault domain have lower latency, higher bandwidth, and better
+ * availability than network links between hosts in different domains.
+ * Schedulers may prefer to place network-intensive workloads in the
+ * same domain, as this may improve performance. Conversely, a single
+ * failure that affects a host in a domain may be more likely to
+ * affect other hosts in the same domain; hence, schedulers may prefer
+ * to place workloads that require high availability in multiple
+ * domains. (For example, all the hosts in a single rack might lose
+ * power or network connectivity simultaneously.)
+ *
+ * There are two kinds of fault domains: regions and zones. Regions
+ * offer the highest degree of fault isolation, but network latency
+ * between regions is typically high (typically >50 ms). Zones offer a
+ * modest degree of fault isolation along with reasonably low network
+ * latency (typically <10 ms).
+ *
+ * The mapping from fault domains to physical infrastructure is up to
+ * the operator to configure. In cloud environments, regions and zones
+ * can be mapped to the "region" and "availability zone" concepts
+ * exposed by most cloud providers, respectively. In on-premise
+ * deployments, regions and zones can be mapped to data centers and
+ * racks, respectively.
+ *
+ * Both masters and agents can be configured with domains. Frameworks
+ * can compare the domains of two hosts to determine if the hosts are
+ * in the same zone, in different zones in the same region, or in
+ * different regions. Note that all masters in a given Mesos cluster
+ * must be in the same region.
+ */
+message DomainInfo {
+  message FaultDomain {
+    message RegionInfo {
+      required string name = 1;
+    }
+
+    message ZoneInfo {
+      required string name = 1;
+    }
+
+    required RegionInfo region = 1;
+    required ZoneInfo zone = 2;
+  }
+
+  optional FaultDomain fault_domain = 1;
+}
+
+
+/**
+ * Describes a master. This will probably have more fields in the
+ * future which might be used, for example, to link a framework webui
+ * to a master webui.
+ */
+message MasterInfo {
+  required string id = 1;
+
+  // The IP address (only IPv4) as a packed 4-bytes integer,
+  // stored in network order.  Deprecated, use `address.ip` instead.
+  required uint32 ip = 2;
+
+  // The TCP port the Master is listening on for incoming
+  // HTTP requests; deprecated, use `address.port` instead.
+  required uint32 port = 3 [default = 5050];
+
+  // In the default implementation, this will contain information
+  // about both the IP address, port and Master name; it should really
+  // not be relied upon by external tooling/frameworks and be
+  // considered an "internal" implementation field.
+  optional string pid = 4;
+
+  // The server's hostname, if available; it may be unreliable
+  // in environments where the DNS configuration does not resolve
+  // internal hostnames (eg, some public cloud providers).
+  // Deprecated, use `address.hostname` instead.
+  optional string hostname = 5;
+
+  // The running Master version, as a string; taken from the
+  // generated "master/version.hpp".
+  optional string version = 6;
+
+  // The full IP address (supports both IPv4 and IPv6 formats)
+  // and supersedes the use of `ip`, `port` and `hostname`.
+  // Since Mesos 0.24.
+  optional Address address = 7;
+
+  // The domain that this master belongs to. All masters in a Mesos
+  // cluster should belong to the same region.
+  optional DomainInfo domain = 8;
+}
+
+
+/**
+ * Describes a slave. Note that the 'id' field is only available after
+ * a slave is registered with the master, and is made available here
+ * to facilitate re-registration.
+ */
+message SlaveInfo {
+  required string hostname = 1;
+  optional int32 port = 8 [default = 5051];
+
+  // The configured resources at the agent. This does not include any
+  // dynamic reservations or persistent volumes that may currently
+  // exist at the agent.
+  repeated Resource resources = 3;
+
+  repeated Attribute attributes = 5;
+  optional SlaveID id = 6;
+
+  // The domain that this slave belongs to. If the slave's region
+  // differs from the master's region, it will not appear in resource
+  // offers to frameworks that have not enabled the REGION_AWARE
+  // capability.
+  optional DomainInfo domain = 10;
+
+  // Slave checkpointing is always enabled in recent Mesos versions;
+  // the value of this field is ignored.
+  // TODO(joerg84): Remove checkpoint field after deprecation cycle starting
+  // with 0.27 (MESOS-2317).
+  optional bool checkpoint = 7 [default = false];
+
+  message Capability {
+    enum Type {
+      // This must be the first enum value in this list, to
+      // ensure that if 'type' is not set, the default value
+      // is UNKNOWN. This enables enum values to be added
+      // in a backwards-compatible way. See: MESOS-4997.
+      UNKNOWN = 0;
+
+      // This expresses the ability for the agent to be able
+      // to launch tasks of a 'multi-role' framework.
+      MULTI_ROLE = 1;
+
+      // This expresses the ability for the agent to be able to launch
+      // tasks, reserve resources, and create volumes using resources
+      // allocated to a 'hierarchical-role'.
+      // NOTE: This capability is required specifically for creating
+      // volumes because a hierchical role includes '/' (slashes) in them.
+      // Agents with this capability know to transform the '/' (slashes)
+      // into ' ' (spaces).
+      HIERARCHICAL_ROLE = 2;
+
+      // This capability has three effects for an agent.
+      //
+      // (1) The format of the checkpointed resources, and
+      //     the resources reported to master.
+      //
+      //     These resources are reported in the "pre-reservation-refinement"
+      //     format if none of the resources have refined reservations. If any
+      //     of the resources have refined reservations, they are reported in
+      //     the "post-reservation-refinement" format. The purpose is to allow
+      //     downgrading of an agent as well as communication with a pre-1.4.0
+      //     master until the reservation refinement feature is actually used.
+      //
+      //     See the 'Resource Format' section for more details.
+      //
+      // (2) The format of the resources reported by the HTTP endpoints.
+      //
+      //     For resources reported by agent endpoints, the
+      //     "pre-reservation-refinement" format is "injected" if possible.
+      //     That is, resources without refined reservations will have the
+      //     `Resource.role` and `Resource.reservation` set, whereas
+      //     resources with refined reservations will not.
+      //
+      //     See the 'Resource Format' section for more details.
+      //
+      // (3) The ability for the agent to launch tasks, reserve resources, and
+      //     create volumes using resources that have refined reservations.
+      //
+      //     See `ReservationInfo.reservations` section for more details.
+      //
+      // NOTE: Resources are said to have refined reservations if it uses the
+      // `Resource.reservations` field, and `Resource.reservations_size() > 1`.
+      RESERVATION_REFINEMENT = 3;
+    }
+
+    // Enum fields should be optional, see: MESOS-4997.
+    optional Type type = 1;
+  }
+}
+
+
+/**
+ * Describes a resource provider. Note that the 'id' field is only available
+ * after a resource provider is registered with the master, and is made
+ * available here to facilitate re-registration.
+ */
+message ResourceProviderInfo {
+  optional ResourceProviderID id = 1;
+  repeated Attribute attributes = 2;
+
+  // The type of the resource provider. This uniquely identifies a
+  // resource provider implementation. For instance:
+  //     org.apache.mesos.rp.local.storage
+  //
+  // Please follow to Java package naming convention
+  // (https://en.wikipedia.org/wiki/Java_package#Package_naming_conventions)
+  // to avoid conflicts on type names.
+  required string type = 3;
+
+  // The name of the resource provider. There could be multiple
+  // instances of a type of resource provider. The name field is used
+  // to distinguish these instances.
+  required string name = 4;
+}
+
+
+/**
+ * Describes an Attribute or Resource "value". A value is described
+ * using the standard protocol buffer "union" trick.
+ */
+message Value {
+  enum Type {
+    SCALAR = 0;
+    RANGES = 1;
+    SET = 2;
+    TEXT = 3;
+  }
+
+  message Scalar {
+    // Scalar values are represented using floating point. To reduce
+    // the chance of unpredictable floating point behavior due to
+    // roundoff error, Mesos only supports three decimal digits of
+    // precision for scalar resource values. That is, floating point
+    // values are converted to a fixed point format that supports
+    // three decimal digits of precision, and then converted back to
+    // floating point on output. Any additional precision in scalar
+    // resource values is discarded (via rounding).
+    required double value = 1;
+  }
+
+  message Range {
+    required uint64 begin = 1;
+    required uint64 end = 2;
+  }
+
+  message Ranges {
+    repeated Range range = 1;
+  }
+
+  message Set {
+    repeated string item = 1;
+  }
+
+  message Text {
+    required string value = 1;
+  }
+
+  required Type type = 1;
+  optional Scalar scalar = 2;
+  optional Ranges ranges = 3;
+  optional Set set = 4;
+  optional Text text = 5;
+}
+
+
+/**
+ * Describes an attribute that can be set on a machine. For now,
+ * attributes and resources share the same "value" type, but this may
+ * change in the future and attributes may only be string based.
+ */
+message Attribute {
+  required string name = 1;
+  required Value.Type type = 2;
+  optional Value.Scalar scalar = 3;
+  optional Value.Ranges ranges = 4;
+  optional Value.Set set = 6;
+  optional Value.Text text = 5;
+}
+
+
+/**
+ * Describes a resource from a resource provider. The `name` field is
+ * a string like "cpus" or "mem" that indicates which kind of resource
+ * this is; the rest of the fields describe the properties of the
+ * resource. A resource can take on one of three types: scalar
+ * (double), a list of finite and discrete ranges (e.g., [1-10,
+ * 20-30]), or a set of items. A resource is described using the
+ * standard protocol buffer "union" trick.
+ *
+ * Note that "disk" and "mem" resources are scalar values expressed in
+ * megabytes. Fractional "cpus" values are allowed (e.g., "0.5"),
+ * which correspond to partial shares of a CPU.
+ */
+message Resource {
+  optional ResourceProviderID provider_id = 12;
+
+  required string name = 1;
+  required Value.Type type = 2;
+  optional Value.Scalar scalar = 3;
+  optional Value.Ranges ranges = 4;
+  optional Value.Set set = 5;
+
+  // The role that this resource is reserved for. If "*", this indicates
+  // that the resource is unreserved. Otherwise, the resource will only
+  // be offered to frameworks that belong to this role.
+  //
+  // NOTE: Frameworks must not set this field if `reservations` is set.
+  //       See the 'Resource Format' section for more details.
+  //
+  // TODO(mpark): Deprecate once `reservations` is no longer experimental.
+  optional string role = 6 [default = "*", deprecated=true];
+
+  // This was initially introduced to support MULTI_ROLE capable
+  // frameworks. Frameworks that are not MULTI_ROLE capable can
+  // continue to assume that the offered resources are allocated
+  // to their role.
+  message AllocationInfo {
+    // If set, this resource is allocated to a role. Note that in the
+    // future, this may be unset and the scheduler may be responsible
+    // for allocating to one of its roles.
+    optional string role = 1;
+
+    // In the future, we may add additional fields here, e.g. priority
+    // tier, type of allocation (quota / fair share).
+  }
+
+  optional AllocationInfo allocation_info = 11;
+
+  // Resource Format:
+  //
+  // Frameworks receive resource offers in one of two formats, depending on
+  // whether the RESERVATION_REFINEMENT capability is enabled.
+  //
+  // __WITHOUT__ the RESERVATION_REFINEMENT capability, the framework is offered
+  // resources in the "pre-reservation-refinement" format. In this format, the
+  // `Resource.role` and `Resource.reservation` fields are used in conjunction
+  // to describe the reservation state of a `Resource` message.
+  //
+  // The following is an overview of the possible reservation states:
+  //
+  // +------------+------------------------------------------------------------+
+  // | unreserved | {                                                          |
+  // |            |   role: "*",                                               |
+  // |            |   reservation: <not set>,                                  |
+  // |            |   reservations: <unused>                                   |
+  // |            | }                                                          |
+  // +------------+------------------------------------------------------------+
+  // | static     | {                                                          |
+  // |            |   role: "eng",                                             |
+  // |            |   reservation: <not set>,                                  |
+  // |            |   reservations: <unused>                                   |
+  // |            | }                                                          |
+  // +------------+------------------------------------------------------------+
+  // | dynamic    | {                                                          |
+  // |            |   role: "eng",                                             |
+  // |            |   reservation: {                                           |
+  // |            |     type: <unused>,                                        |
+  // |            |     role: <unused>,                                        |
+  // |            |     principal: <optional>,                                 |
+  // |            |     labels: <optional>                                     |
+  // |            |   },                                                       |
+  // |            |   reservations: <unused>                                   |
+  // |            | }                                                          |
+  // +------------+------------------------------------------------------------+
+  //
+  // __WITH__ the RESERVATION_REFINEMENT capability, the framework is offered
+  // resources in the "post-reservation-refinement" format. In this format, the
+  // reservation state of a `Resource` message is expressed solely in
+  // `Resource.reservations` field.
+  //
+  // The following is an overview of the possible reservation states:
+  //
+  // +------------+------------------------------------------------------------+
+  // | unreserved | {                                                          |
+  // |            |   role: <unused>,                                          |
+  // |            |   reservation: <unused>,                                   |
+  // |            |   reservations: []                                         |
+  // |            | }                                                          |
+  // +------------+------------------------------------------------------------+
+  // | static     | {                                                          |
+  // |            |   role: <unused>,                                          |
+  // |            |   reservation: <unused>,                                   |
+  // |            |   reservations: [                                          |
+  // |            |     {                                                      |
+  // |            |       type: STATIC,                                        |
+  // |            |       role: "eng",                                         |
+  // |            |       principal: <optional>,                               |
+  // |            |       labels: <optional>                                   |
+  // |            |     }                                                      |
+  // |            |   ]                                                        |
+  // |            | }                                                          |
+  // +------------+------------------------------------------------------------+
+  // | dynamic    | {                                                          |
+  // |            |   role: <unused>,                                          |
+  // |            |   reservation: <unused>,                                   |
+  // |            |   reservations: [                                          |
+  // |            |     {                                                      |
+  // |            |       type: DYNAMIC,                                       |
+  // |            |       role: "eng",                                         |
+  // |            |       principal: <optional>,                               |
+  // |            |       labels: <optional>                                   |
+  // |            |     }                                                      |
+  // |            |   ]                                                        |
+  // |            | }                                                          |
+  // +------------+------------------------------------------------------------+
+  //
+  // We can also __refine__ reservations with this capability like so:
+  //
+  // +------------+------------------------------------------------------------+
+  // | refined    | {                                                          |
+  // |            |   role: <unused>,                                          |
+  // |            |   reservation: <unused>,                                   |
+  // |            |   reservations: [                                          |
+  // |            |     {                                                      |
+  // |            |       type: STATIC or DYNAMIC,                             |
+  // |            |       role: "eng",                                         |
+  // |            |       principal: <optional>,                               |
+  // |            |       labels: <optional>                                   |
+  // |            |     },                                                     |
+  // |            |     {                                                      |
+  // |            |       type: DYNAMIC,                                       |
+  // |            |       role: "eng/front_end",                               |
+  // |            |       principal: <optional>,                               |
+  // |            |       labels: <optional>                                   |
+  // |            |     }                                                      |
+  // |            |   ]                                                        |
+  // |            | }                                                          |
+  // +------------+------------------------------------------------------------+
+  //
+  // NOTE: Each `ReservationInfo` in the `reservations` field denotes
+  //       a reservation that refines the previous `ReservationInfo`.
+
+  message ReservationInfo {
+    // Describes a reservation. A static reservation is set by the operator on
+    // the command-line and they are immutable without agent restart. A dynamic
+    // reservation is made by an operator via the '/reserve' HTTP endpoint
+    // or by a framework via the offer cycle by sending back an
+    // 'Offer::Operation::Reserve' message.
+    //
+    // NOTE: We currently do not allow frameworks with role "*" to make dynamic
+    // reservations.
+
+    enum Type {
+      UNKNOWN = 0;
+      STATIC = 1;
+      DYNAMIC = 2;
+    }
+
+    // The type of this reservation.
+    //
+    // NOTE: This field must not be set for `Resource.reservation`.
+    //       See the 'Resource Format' section for more details.
+    optional Type type = 4;
+
+    // The role to which this reservation is made for.
+    //
+    // NOTE: This field must not be set for `Resource.reservation`.
+    //       See the 'Resource Format' section for more details.
+    optional string role = 3;
+
+    // Indicates the principal, if any, of the framework or operator
+    // that reserved this resource. If reserved by a framework, the
+    // field should match the `FrameworkInfo.principal`. It is used in
+    // conjunction with the `UnreserveResources` ACL to determine
+    // whether the entity attempting to unreserve this resource is
+    // permitted to do so.
+    optional string principal = 1;
+
+    // Labels are free-form key value pairs that can be used to
+    // associate arbitrary metadata with a reserved resource.  For
+    // example, frameworks can use labels to identify the intended
+    // purpose for a portion of the resources the framework has
+    // reserved at a given slave. Labels should not contain duplicate
+    // key-value pairs.
+    optional Labels labels = 2;
+  }
+
+  // If this is set, this resource was dynamically reserved by an
+  // operator or a framework. Otherwise, this resource is either unreserved
+  // or statically reserved by an operator via the --resources flag.
+  //
+  // NOTE: Frameworks must not set this field if `reservations` is set.
+  //       See the 'Resource Format' section for more details.
+  //
+  // TODO(mpark): Deprecate once `reservations` is no longer experimental.
+  optional ReservationInfo reservation = 8;
+
+  // The stack of reservations. If this field is empty, it indicates that this
+  // resource is unreserved. Otherwise, the resource is reserved. The first
+  // `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+  // have `DYNAMIC`. One can create a new reservation on top of an existing
+  // one by pushing a new `ReservationInfo` to the back. The last
+  // `ReservationInfo` in this stack is the "current" reservation. The new
+  // reservation's role must be a child of the current reservation's role.
+  //
+  // NOTE: Frameworks must not set this field if `reservation` is set.
+  //       See the 'Resource Format' section for more details.
+  //
+  // TODO(mpark): Deprecate `role` and `reservation` once this is stable.
+  repeated ReservationInfo reservations = 13;  // EXPERIMENTAL.
+
+  message DiskInfo {
+    // Describes a persistent disk volume.
+    //
+    // A persistent disk volume will not be automatically garbage
+    // collected if the task/executor/slave terminates, but will be
+    // re-offered to the framework(s) belonging to the 'role'.
+    //
+    // NOTE: Currently, we do not allow persistent disk volumes
+    // without a reservation (i.e., 'role' cannot be '*').
+    message Persistence {
+      // A unique ID for the persistent disk volume. This ID must be
+      // unique per role on each slave. Although it is possible to use
+      // the same ID on different slaves in the cluster and to reuse
+      // IDs after a volume with that ID has been destroyed, both
+      // practices are discouraged.
+      required string id = 1;
+
+      // This field indicates the principal of the operator or
+      // framework that created this volume. It is used in conjunction
+      // with the "destroy" ACL to determine whether an entity
+      // attempting to destroy the volume is permitted to do so.
+      //
+      // NOTE: This field should match the FrameworkInfo.principal of
+      // the framework that created the volume.
+      optional string principal = 2;
+    }
+
+    optional Persistence persistence = 1;
+
+    // Describes how this disk resource will be mounted in the
+    // container. If not set, the disk resource will be used as the
+    // sandbox. Otherwise, it will be mounted according to the
+    // 'container_path' inside 'volume'. The 'host_path' inside
+    // 'volume' is ignored.
+    // NOTE: If 'volume' is set but 'persistence' is not set, the
+    // volume will be automatically garbage collected after
+    // task/executor terminates. Currently, if 'persistence' is set,
+    // 'volume' must be set.
+    optional Volume volume = 2;
+
+    // Describes where a disk originates from.
+    // TODO(jmlvanre): Add support for BLOCK devices.
+    message Source {
+      enum Type {
+        UNKNOWN = 0;
+        PATH = 1;
+        MOUNT = 2;
+      }
+
+      // A folder that can be located on a separate disk device. This
+      // can be shared and carved up as necessary between frameworks.
+      message Path {
+        // Path to the folder (e.g., /mnt/raid/disk0).
+        optional string root = 1;
+      }
+
+      // A mounted file-system set up by the Agent administrator. This
+      // can only be used exclusively: a framework cannot accept a
+      // partial amount of this disk.
+      message Mount {
+        // Path to mount point (e.g., /mnt/raid/disk0).
+        optional string root = 1;
+      }
+
+      required Type type = 1;
+      optional Path path = 2;
+      optional Mount mount = 3;
+    }
+
+    optional Source source = 3;
+  }
+
+  optional DiskInfo disk = 7;
+
+  message RevocableInfo {}
+
+  // If this is set, the resources are revocable, i.e., any tasks or
+  // executors launched using these resources could get preempted or
+  // throttled at any time. This could be used by frameworks to run
+  // best effort tasks that do not need strict uptime or performance
+  // guarantees. Note that if this is set, 'disk' or 'reservation'
+  // cannot be set.
+  optional RevocableInfo revocable = 9;
+
+  // Allow the resource to be shared across tasks.
+  message SharedInfo {}
+
+  // If this is set, the resources are shared, i.e. multiple tasks
+  // can be launched using this resource and all of them shall refer
+  // to the same physical resource on the cluster. Note that only
+  // persistent volumes can be shared currently.
+  optional SharedInfo shared = 10;
+}
+
+
+/**
+ * When the network bandwidth caps are enabled and the container
+ * is over its limit, outbound packets may be either delayed or
+ * dropped completely either because it exceeds the maximum bandwidth
+ * allocation for a single container (the cap) or because the combined
+ * network traffic of multiple containers on the host exceeds the
+ * transmit capacity of the host (the share). We can report the
+ * following statistics for each of these conditions exported directly
+ * from the Linux Traffic Control Queueing Discipline.
+ *
+ * id         : name of the limiter, e.g. 'tx_bw_cap'
+ * backlog    : number of packets currently delayed
+ * bytes      : total bytes seen
+ * drops      : number of packets dropped in total
+ * overlimits : number of packets which exceeded allocation
+ * packets    : total packets seen
+ * qlen       : number of packets currently queued
+ * rate_bps   : throughput in bytes/sec
+ * rate_pps   : throughput in packets/sec
+ * requeues   : number of times a packet has been delayed due to
+ *              locking or device contention issues
+ *
+ * More information on the operation of Linux Traffic Control can be
+ * found at http://www.lartc.org/lartc.html.
+ */
+message TrafficControlStatistics {
+  required string id = 1;
+  optional uint64 backlog = 2;
+  optional uint64 bytes = 3;
+  optional uint64 drops = 4;
+  optional uint64 overlimits = 5;
+  optional uint64 packets = 6;
+  optional uint64 qlen = 7;
+  optional uint64 ratebps = 8;
+  optional uint64 ratepps = 9;
+  optional uint64 requeues = 10;
+}
+
+
+message IpStatistics {
+  optional int64 Forwarding = 1;
+  optional int64 DefaultTTL = 2;
+  optional int64 InReceives = 3;
+  optional int64 InHdrErrors = 4;
+  optional int64 InAddrErrors = 5;
+  optional int64 ForwDatagrams = 6;
+  optional int64 InUnknownProtos = 7;
+  optional int64 InDiscards = 8;
+  optional int64 InDelivers = 9;
+  optional int64 OutRequests = 10;
+  optional int64 OutDiscards = 11;
+  optional int64 OutNoRoutes = 12;
+  optional int64 ReasmTimeout = 13;
+  optional int64 ReasmReqds = 14;
+  optional int64 ReasmOKs = 15;
+  optional int64 ReasmFails = 16;
+  optional int64 FragOKs = 17;
+  optional int64 FragFails = 18;
+  optional int64 FragCreates = 19;
+}
+
+
+message IcmpStatistics {
+  optional int64 InMsgs = 1;
+  optional int64 InErrors = 2;
+  optional int64 InCsumErrors = 3;
+  optional int64 InDestUnreachs = 4;
+  optional int64 InTimeExcds = 5;
+  optional int64 InParmProbs = 6;
+  optional int64 InSrcQuenchs = 7;
+  optional int64 InRedirects = 8;
+  optional int64 InEchos = 9;
+  optional int64 InEchoReps = 10;
+  optional int64 InTimestamps = 11;
+  optional int64 InTimestampReps = 12;
+  optional int64 InAddrMasks = 13;
+  optional int64 InAddrMaskReps = 14;
+  optional int64 OutMsgs = 15;
+  optional int64 OutErrors = 16;
+  optional int64 OutDestUnreachs = 17;
+  optional int64 OutTimeExcds = 18;
+  optional int64 OutParmProbs = 19;
+  optional int64 OutSrcQuenchs = 20;
+  optional int64 OutRedirects = 21;
+  optional int64 OutEchos = 22;
+  optional int64 OutEchoReps = 23;
+  optional int64 OutTimestamps = 24;
+  optional int64 OutTimestampReps = 25;
+  optional int64 OutAddrMasks = 26;
+  optional int64 OutAddrMaskReps = 27;
+}
+
+
+message TcpStatistics {
+  optional int64 RtoAlgorithm = 1;
+  optional int64 RtoMin = 2;
+  optional int64 RtoMax = 3;
+  optional int64 MaxConn = 4;
+  optional int64 ActiveOpens = 5;
+  optional int64 PassiveOpens = 6;
+  optional int64 AttemptFails = 7;
+  optional int64 EstabResets = 8;
+  optional int64 CurrEstab = 9;
+  optional int64 InSegs = 10;
+  optional int64 OutSegs = 11;
+  optional int64 RetransSegs = 12;
+  optional int64 InErrs = 13;
+  optional int64 OutRsts = 14;
+  optional int64 InCsumErrors = 15;
+}
+
+
+message UdpStatistics {
+  optional int64 InDatagrams = 1;
+  optional int64 NoPorts = 2;
+  optional int64 InErrors = 3;
+  optional int64 OutDatagrams = 4;
+  optional int64 RcvbufErrors = 5;
+  optional int64 SndbufErrors = 6;
+  optional int64 InCsumErrors = 7;
+  optional int64 IgnoredMulti = 8;
+}
+
+
+message SNMPStatistics {
+  optional IpStatistics ip_stats = 1;
+  optional IcmpStatistics icmp_stats = 2;
+  optional TcpStatistics tcp_stats = 3;
+  optional UdpStatistics udp_stats = 4;
+}
+
+
+message DiskStatistics {
+  optional Resource.DiskInfo.Source source = 1;
+  optional Resource.DiskInfo.Persistence persistence = 2;
+  optional uint64 limit_bytes = 3;
+  optional uint64 used_bytes = 4;
+}
+
+
+/**
+ * A snapshot of resource usage statistics.
+ */
+message ResourceStatistics {
+  required double timestamp = 1; // Snapshot time, in seconds since the Epoch.
+
+  optional uint32 processes = 30;
+  optional uint32 threads = 31;
+
+  // CPU Usage Information:
+  // Total CPU time spent in user mode, and kernel mode.
+  optional double cpus_user_time_secs = 2;
+  optional double cpus_system_time_secs = 3;
+
+  // Number of CPUs allocated.
+  optional double cpus_limit = 4;
+
+  // cpu.stat on process throttling (for contention issues).
+  optional uint32 cpus_nr_periods = 7;
+  optional uint32 cpus_nr_throttled = 8;
+  optional double cpus_throttled_time_secs = 9;
+
+  // Memory Usage Information:
+
+  // mem_total_bytes was added in 0.23.0 to represent the total memory
+  // of a process in RAM (as opposed to in Swap). This was previously
+  // reported as mem_rss_bytes, which was also changed in 0.23.0 to
+  // represent only the anonymous memory usage, to keep in sync with
+  // Linux kernel's (arguably erroneous) use of terminology.
+  optional uint64 mem_total_bytes = 36;
+
+  // Total memory + swap usage. This is set if swap is enabled.
+  optional uint64 mem_total_memsw_bytes = 37;
+
+  // Hard memory limit for a container.
+  optional uint64 mem_limit_bytes = 6;
+
+  // Soft memory limit for a container.
+  optional uint64 mem_soft_limit_bytes = 38;
+
+  // Broken out memory usage information: pagecache, rss (anonymous),
+  // mmaped files and swap.
+
+  // TODO(chzhcn) mem_file_bytes and mem_anon_bytes are deprecated in
+  // 0.23.0 and will be removed in 0.24.0.
+  optional uint64 mem_file_bytes = 10;
+  optional uint64 mem_anon_bytes = 11;
+
+  // mem_cache_bytes is added in 0.23.0 to represent page cache usage.
+  optional uint64 mem_cache_bytes = 39;
+
+  // Since 0.23.0, mem_rss_bytes is changed to represent only
+  // anonymous memory usage. Note that neither its requiredness, type,
+  // name nor numeric tag has been changed.
+  optional uint64 mem_rss_bytes = 5;
+
+  optional uint64 mem_mapped_file_bytes = 12;
+  // This is only set if swap is enabled.
+  optional uint64 mem_swap_bytes = 40;
+  optional uint64 mem_unevictable_bytes = 41;
+
+  // Number of occurrences of different levels of memory pressure
+  // events reported by memory cgroup. Pressure listening (re)starts
+  // with these values set to 0 when slave (re)starts. See
+  // https://www.kernel.org/doc/Documentation/cgroups/memory.txt for
+  // more details.
+  optional uint64 mem_low_pressure_counter = 32;
+  optional uint64 mem_medium_pressure_counter = 33;
+  optional uint64 mem_critical_pressure_counter = 34;
+
+  // Disk Usage Information for executor working directory.
+  optional uint64 disk_limit_bytes = 26;
+  optional uint64 disk_used_bytes = 27;
+
+  // Per disk (resource) statistics.
+  repeated DiskStatistics disk_statistics = 43;
+
+  // Cgroups blkio statistics.
+  optional CgroupInfo.Blkio.Statistics blkio_statistics = 44;
+
+  // Perf statistics.
+  optional PerfStatistics perf = 13;
+
+  // Network Usage Information:
+  optional uint64 net_rx_packets = 14;
+  optional uint64 net_rx_bytes = 15;
+  optional uint64 net_rx_errors = 16;
+  optional uint64 net_rx_dropped = 17;
+  optional uint64 net_tx_packets = 18;
+  optional uint64 net_tx_bytes = 19;
+  optional uint64 net_tx_errors = 20;
+  optional uint64 net_tx_dropped = 21;
+
+  // The kernel keeps track of RTT (round-trip time) for its TCP
+  // sockets. RTT is a way to tell the latency of a container.
+  optional double net_tcp_rtt_microsecs_p50 = 22;
+  optional double net_tcp_rtt_microsecs_p90 = 23;
+  optional double net_tcp_rtt_microsecs_p95 = 24;
+  optional double net_tcp_rtt_microsecs_p99 = 25;
+
+  optional double net_tcp_active_connections = 28;
+  optional double net_tcp_time_wait_connections = 29;
+
+  // Network traffic flowing into or out of a container can be delayed
+  // or dropped due to congestion or policy inside and outside the
+  // container.
+  repeated TrafficControlStatistics net_traffic_control_statistics = 35;
+
+  // Network SNMP statistics for each container.
+  optional SNMPStatistics net_snmp_statistics = 42;
+}
+
+
+/**
+ * Describes a snapshot of the resource usage for executors.
+ */
+message ResourceUsage {
+  message Executor {
+    required ExecutorInfo executor_info = 1;
+
+    // This includes resources used by the executor itself
+    // as well as its active tasks.
+    repeated Resource allocated = 2;
+
+    // Current resource usage. If absent, the containerizer
+    // cannot provide resource usage.
+    optional ResourceStatistics statistics = 3;
+
+    // The container id for the executor specified in the executor_info field.
+    required ContainerID container_id = 4;
+
+    message Task {
+      required string name = 1;
+      required TaskID id = 2;
+      repeated Resource resources = 3;
+      optional Labels labels = 4;
+    }
+
+    // Non-terminal tasks.
+    repeated Task tasks = 5;
+  }
+
+  repeated Executor executors = 1;
+
+  // Slave's total resources including checkpointed dynamic
+  // reservations and persistent volumes.
+  repeated Resource total = 2;
+}
+
+
+/**
+ * Describes a sample of events from "perf stat". Only available on
+ * Linux.
+ *
+ * NOTE: Each optional field matches the name of a perf event (see
+ * "perf list") with the following changes:
+ * 1. Names are downcased.
+ * 2. Hyphens ('-') are replaced with underscores ('_').
+ * 3. Events with alternate names use the name "perf stat" returns,
+ *    e.g., for the event "cycles OR cpu-cycles" perf always returns
+ *    cycles.
+ */
+message PerfStatistics {
+  required double timestamp = 1; // Start of sample interval, in seconds since the Epoch.
+  required double duration = 2;  // Duration of sample interval, in seconds.
+
+  // Hardware event.
+  optional uint64 cycles = 3;
+  optional uint64 stalled_cycles_frontend = 4;
+  optional uint64 stalled_cycles_backend = 5;
+  optional uint64 instructions = 6;
+  optional uint64 cache_references = 7;
+  optional uint64 cache_misses = 8;
+  optional uint64 branches = 9;
+  optional uint64 branch_misses = 10;
+  optional uint64 bus_cycles = 11;
+  optional uint64 ref_cycles = 12;
+
+  // Software event.
+  optional double cpu_clock = 13;
+  optional double task_clock = 14;
+  optional uint64 page_faults = 15;
+  optional uint64 minor_faults = 16;
+  optional uint64 major_faults = 17;
+  optional uint64 context_switches = 18;
+  optional uint64 cpu_migrations = 19;
+  optional uint64 alignment_faults = 20;
+  optional uint64 emulation_faults = 21;
+
+  // Hardware cache event.
+  optional uint64 l1_dcache_loads = 22;
+  optional uint64 l1_dcache_load_misses = 23;
+  optional uint64 l1_dcache_stores = 24;
+  optional uint64 l1_dcache_store_misses = 25;
+  optional uint64 l1_dcache_prefetches = 26;
+  optional uint64 l1_dcache_prefetch_misses = 27;
+  optional uint64 l1_icache_loads = 28;
+  optional uint64 l1_icache_load_misses = 29;
+  optional uint64 l1_icache_prefetches = 30;
+  optional uint64 l1_icache_prefetch_misses = 31;
+  optional uint64 llc_loads = 32;
+  optional uint64 llc_load_misses = 33;
+  optional uint64 llc_stores = 34;
+  optional uint64 llc_store_misses = 35;
+  optional uint64 llc_prefetches = 36;
+  optional uint64 llc_prefetch_misses = 37;
+  optional uint64 dtlb_loads = 38;
+  optional uint64 dtlb_load_misses = 39;
+  optional uint64 dtlb_stores = 40;
+  optional uint64 dtlb_store_misses = 41;
+  optional uint64 dtlb_prefetches = 42;
+  optional uint64 dtlb_prefetch_misses = 43;
+  optional uint64 itlb_loads = 44;
+  optional uint64 itlb_load_misses = 45;
+  optional uint64 branch_loads = 46;
+  optional uint64 branch_load_misses = 47;
+  optional uint64 node_loads = 48;
+  optional uint64 node_load_misses = 49;
+  optional uint64 node_stores = 50;
+  optional uint64 node_store_misses = 51;
+  optional uint64 node_prefetches = 52;
+  optional uint64 node_prefetch_misses = 53;
+}
+
+
+/**
+ * Describes a request for resources that can be used by a framework
+ * to proactively influence the allocator.  If 'slave_id' is provided
+ * then this request is assumed to only apply to resources on that
+ * slave.
+ */
+message Request {
+  optional SlaveID slave_id = 1;
+  repeated Resource resources = 2;
+}
+
+
+/**
+ * Describes some resources available on a slave. An offer only
+ * contains resources from a single slave.
+ */
+message Offer {
+  required OfferID id = 1;
+  required FrameworkID framework_id = 2;
+  required SlaveID slave_id = 3;
+  required string hostname = 4;
+
+  // URL for reaching the slave running on the host.
+  optional URL url = 8;
+
+  // The domain of the slave.
+  optional DomainInfo domain = 11;
+
+  repeated Resource resources = 5;
+  repeated Attribute attributes = 7;
+  repeated ExecutorID executor_ids = 6;
+
+  // Signifies that the resources in this Offer may be unavailable during
+  // the given interval.  Any tasks launched using these resources may be
+  // killed when the interval arrives.  For example, these resources may be
+  // part of a planned maintenance schedule.
+  //
+  // This field only provides information about a planned unavailability.
+  // The unavailability interval may not necessarily start at exactly this
+  // interval, nor last for exactly the duration of this interval.
+  // The unavailability may also be forever!  See comments in
+  // `Unavailability` for more details.
+  optional Unavailability unavailability = 9;
+
+  // An offer represents resources allocated to *one* of the
+  // roles managed by the scheduler. (Therefore, each
+  // `Offer.resources[i].allocation_info` will match the
+  // top level `Offer.allocation_info`).
+  optional Resource.AllocationInfo allocation_info = 10;
+
+  // Defines an operation that can be performed against offers.
+  message Operation {
+    enum Type {
+      UNKNOWN = 0;
+      LAUNCH = 1;
+      LAUNCH_GROUP = 6;
+      RESERVE = 2;
+      UNRESERVE = 3;
+      CREATE = 4;
+      DESTROY = 5;
+    }
+
+    // TODO(vinod): Deprecate this in favor of `LaunchGroup` below.
+    message Launch {
+      repeated TaskInfo task_infos = 1;
+    }
+
+    // Unlike `Launch` above, all the tasks in a `task_group` are
+    // atomically delivered to an executor.
+    //
+    // `NetworkInfo` set on executor will be shared by all tasks in
+    // the task group.
+    //
+    // TODO(vinod): Any volumes set on executor could be used by a
+    // task by explicitly setting `Volume.source` in its resources.
+    message LaunchGroup {
+      required ExecutorInfo executor = 1;
+      required TaskGroupInfo task_group = 2;
+    }
+
+    message Reserve {
+      repeated Resource resources = 1;
+    }
+
+    message Unreserve {
+      repeated Resource resources = 1;
+    }
+
+    message Create {
+      repeated Resource volumes = 1;
+    }
+
+    message Destroy {
+      repeated Resource volumes = 1;
+    }
+
+    optional Type type = 1;
+    optional Launch launch = 2;
+    optional LaunchGroup launch_group = 7;
+    optional Reserve reserve = 3;
+    optional Unreserve unreserve = 4;
+    optional Create create = 5;
+    optional Destroy destroy = 6;
+  }
+}
+
+
+/**
+ * A request to return some resources occupied by a framework.
+ */
+message InverseOffer {
+  // This is the same OfferID as found in normal offers, which allows
+  // re-use of some of the OfferID-only messages.
+  required OfferID id = 1;
+
+  // URL for reaching the slave running on the host.  This enables some
+  // optimizations as described in MESOS-3012, such as allowing the
+  // scheduler driver to bypass the master and talk directly with a slave.
+  optional URL url = 2;
+
+  // The framework that should release its resources.
+  // If no specifics are provided (i.e. which slave), all the framework's
+  // resources are requested back.
+  required FrameworkID framework_id = 3;
+
+  // Specified if the resources need to be released from a particular slave.
+  // All the framework's resources on this slave are requested back,
+  // unless further qualified by the `resources` field.
+  optional SlaveID slave_id = 4;
+
+  // This InverseOffer represents a planned unavailability event in the
+  // specified interval.  Any tasks running on the given framework or slave
+  // may be killed when the interval arrives.  Therefore, frameworks should
+  // aim to gracefully terminate tasks prior to the arrival of the interval.
+  //
+  // For reserved resources, the resources are expected to be returned to the
+  // framework after the unavailability interval.  This is an expectation,
+  // not a guarantee.  For example, if the unavailability duration is not set,
+  // the resources may be removed permanently.
+  //
+  // For other resources, there is no guarantee that requested resources will
+  // be returned after the unavailability interval.  The allocator has no
+  // obligation to re-offer these resources to the prior framework after
+  // the unavailability.
+  required Unavailability unavailability = 5;
+
+  // A list of resources being requested back from the framework,
+  // on the slave identified by `slave_id`.  If no resources are specified
+  // then all resources are being requested back.  For the purpose of
+  // maintenance, this field is always empty (maintenance always requests
+  // all resources back).
+  repeated Resource resources = 6;
+
+  // TODO(josephw): Add additional options for narrowing down the resources
+  // being requested back.  Such as specific executors, tasks, etc.
+}
+
+
+/**
+ * Describes a task. Passed from the scheduler all the way to an
+ * executor (see SchedulerDriver::launchTasks and
+ * Executor::launchTask). Either ExecutorInfo or CommandInfo should be set.
+ * A different executor can be used to launch this task, and subsequent tasks
+ * meant for the same executor can reuse the same ExecutorInfo struct.
+ */
+message TaskInfo {
+  required string name = 1;
+  required TaskID task_id = 2;
+  required SlaveID slave_id = 3;
+  repeated Resource resources = 4;
+  optional ExecutorInfo executor = 5;
+  optional CommandInfo command = 7;
+
+  // Task provided with a container will launch the container as part
+  // of this task paired with the task's CommandInfo.
+  optional ContainerInfo container = 9;
+
+  // A health check for the task. Implemented for executor-less
+  // command-based tasks. For tasks that specify an executor, it is
+  // the executor's responsibility to implement the health checking.
+  optional HealthCheck health_check = 8;
+
+  // A general check for the task. Implemented for all built-in executors.
+  // For tasks that specify an executor, it is the executor's responsibility
+  // to implement checking support. Executors should (all built-in executors
+  // will) neither interpret nor act on the check's result.
+  //
+  // NOTE: Check support in built-in executors is experimental.
+  //
+  // TODO(alexr): Consider supporting multiple checks per task.
+  optional CheckInfo check = 13;
+
+  // A kill policy for the task. Implemented for executor-less
+  // command-based and docker tasks. For tasks that specify an
+  // executor, it is the executor's responsibility to implement
+  // the kill policy.
+  optional KillPolicy kill_policy = 12;
+
+  optional bytes data = 6;
+
+  // Labels are free-form key value pairs which are exposed through
+  // master and slave endpoints. Labels will not be interpreted or
+  // acted upon by Mesos itself. As opposed to the data field, labels
+  // will be kept in memory on master and slave processes. Therefore,
+  // labels should be used to tag tasks with light-weight meta-data.
+  // Labels should not contain duplicate key-value pairs.
+  optional Labels labels = 10;
+
+  // Service discovery information for the task. It is not interpreted
+  // or acted upon by Mesos. It is up to a service discovery system
+  // to use this information as needed and to handle tasks without
+  // service discovery information.
+  optional DiscoveryInfo discovery = 11;
+}
+
+
+/**
+ * Describes a group of tasks that belong to an executor. The
+ * executor will receive the task group in a single message to
+ * allow the group to be launched "atomically".
+ *
+ * NOTES:
+ * 1) `NetworkInfo` must not be set inside task's `ContainerInfo`.
+ * 2) `TaskInfo.executor` doesn't need to set. If set, it should match
+ *    `LaunchGroup.executor`.
+ */
+message TaskGroupInfo {
+  repeated TaskInfo tasks = 1;
+}
+
+
+// TODO(bmahler): Add executor_uuid here, and send it to the master. This will
+// allow us to expose executor work directories for tasks in the webui when
+// looking from the master level. Currently only the slave knows which run the
+// task belongs to.
+/**
+ * Describes a task, similar to `TaskInfo`.
+ *
+ * `Task` is used in some of the Mesos messages found below.
+ * `Task` is used instead of `TaskInfo` if:
+ *   1) we need additional IDs, such as a specific
+ *      framework, executor, or agent; or
+ *   2) we do not need the additional data, such as the command run by the
+ *      task or the health checks.  These additional fields may be large and
+ *      unnecessary for some Mesos messages.
+ *
+ * `Task` is generally constructed from a `TaskInfo`.  See protobuf::createTask.
+ */
+message Task {
+  required string name = 1;
+  required TaskID task_id = 2;
+  required FrameworkID framework_id = 3;
+  optional ExecutorID executor_id = 4;
+  required SlaveID slave_id = 5;
+  required TaskState state = 6; // Latest state of the task.
+  repeated Resource resources = 7;
+  repeated TaskStatus statuses = 8;
+
+  // These fields correspond to the state and uuid of the latest
+  // status update forwarded to the master.
+  // NOTE: Either both the fields must be set or both must be unset.
+  optional TaskState status_update_state = 9;
+  optional bytes status_update_uuid = 10;
+
+  optional Labels labels = 11;
+
+  // Service discovery information for the task. It is not interpreted
+  // or acted upon by Mesos. It is up to a service discovery system
+  // to use this information as needed and to handle tasks without
+  // service discovery information.
+  optional DiscoveryInfo discovery = 12;
+
+  // Container information for the task.
+  optional ContainerInfo container = 13;
+
+  // Specific user under which task is running.
+  optional string user = 14;
+}
+
+
+/**
+ * Describes possible task states. IMPORTANT: Mesos assumes tasks that
+ * enter terminal states (see below) imply the task is no longer
+ * running and thus clean up any thing associated with the task
+ * (ultimately offering any resources being consumed by that task to
+ * another task).
+ */
+enum TaskState {
+  TASK_STAGING = 6;  // Initial state. Framework status updates should not use.
+  TASK_STARTING = 0; // The task is being launched by the executor.
+  TASK_RUNNING = 1;
+
+  // NOTE: This should only be sent when the framework has
+  // the TASK_KILLING_STATE capability.
+  TASK_KILLING = 8;  // The task is being killed by the executor.
+
+  TASK_FINISHED = 2; // TERMINAL: The task finished successfully.
+  TASK_FAILED = 3;   // TERMINAL: The task failed to finish successfully.
+  TASK_KILLED = 4;   // TERMINAL: The task was killed by the executor.
+  TASK_ERROR = 7;    // TERMINAL: The task description contains an error.
+
+  // In Mesos 1.3, this will only be sent when the framework does NOT
+  // opt-in to the PARTITION_AWARE capability.
+  //
+  // NOTE: This state is not always terminal. For example, tasks might
+  // transition from TASK_LOST to TASK_RUNNING or other states when a
+  // partitioned agent re-registers.
+  TASK_LOST = 5;     // The task failed but can be rescheduled.
+
+  // The following task states are only sent when the framework
+  // opts-in to the PARTITION_AWARE capability.
+
+  // The task failed to launch because of a transient error. The
+  // task's executor never started running. Unlike TASK_ERROR, the
+  // task description is valid -- attempting to launch the task again
+  // may be successful.
+  TASK_DROPPED = 9;  // TERMINAL.
+
+  // The task was running on an agent that has lost contact with the
+  // master, typically due to a network failure or partition. The task
+  // may or may not still be running.
+  TASK_UNREACHABLE = 10;
+
+  // The task is no longer running. This can occur if the agent has
+  // been terminated along with all of its tasks (e.g., the host that
+  // was running the agent was rebooted). It might also occur if the
+  // task was terminated due to an agent or containerizer error, or if
+  // the task was preempted by the QoS controller in an
+  // oversubscription scenario.
+  TASK_GONE = 11;    // TERMINAL.
+
+  // The task was running on an agent that the master cannot contact;
+  // the operator has asserted that the agent has been shutdown, but
+  // this has not been directly confirmed by the master. If the
+  // operator is correct, the task is not running and this is a
+  // terminal state; if the operator is mistaken, the task may still
+  // be running and might return to RUNNING in the future.
+  TASK_GONE_BY_OPERATOR = 12;
+
+  // The master has no knowledge of the task. This is typically
+  // because either (a) the master never had knowledge of the task, or
+  // (b) the master forgot about the task because it garbage collected
+  // its metadata about the task. The task may or may not still be
+  // running.
+  TASK_UNKNOWN = 13;
+}
+
+
+/**
+* Describes the status of a check. Type and the corresponding field, i.e.,
+* `command` or `http` must be set. If the result of the check is not available
+* (e.g., the check timed out), these fields must contain empty messages, i.e.,
+* `exit_code` or `status_code` will be unset.
+*
+* NOTE: This API is unstable and the related feature is experimental.
+*/
+message CheckStatusInfo {
+  message Command {
+    // Exit code of a command check. It is the result of calling
+    // `WEXITSTATUS()` on `waitpid()` termination information on
+    // Posix and calling `GetExitCodeProcess()` on Windows.
+    optional int32 exit_code = 1;
+  }
+
+  message Http {
+    // HTTP status code of an HTTP check.
+    optional uint32 status_code = 1;
+  }
+
+  message Tcp {
+    // Whether a TCP connection succeeded.
+    optional bool succeeded = 1;
+  }
+
+  // TODO(alexr): Consider adding a `data` field, which can contain, e.g.,
+  // truncated stdout/stderr output for command checks or HTTP response body
+  // for HTTP checks. Alternatively, it can be an even shorter `message` field
+  // containing the last line of stdout or Reason-Phrase of the status line of
+  // the HTTP response.
+
+  // The type of the check this status corresponds to.
+  optional CheckInfo.Type type = 1;
+
+  // Status of a command check.
+  optional Command command = 2;
+
+  // Status of an HTTP check.
+  optional Http http = 3;
+
+  // Status of a TCP check.
+  optional Tcp tcp = 4;
+
+  // TODO(alexr): Consider introducing a "last changed at" timestamp, since
+  // task status update's timestamp may not correspond to the last check's
+  // state, e.g., for reconciliation.
+
+  // TODO(alexr): Consider introducing a `reason` enum here to explicitly
+  // distinguish between completed, delayed, and timed out checks.
+}
+
+
+/**
+ * Describes the current status of a task.
+ */
+message TaskStatus {
+  // Describes the source of the task status update.
+  enum Source {
+    SOURCE_MASTER = 0;
+    SOURCE_SLAVE = 1;
+    SOURCE_EXECUTOR = 2;
+  }
+
+  // Detailed reason for the task status update.
+  //
+  // TODO(bmahler): Differentiate between slave removal reasons
+  // (e.g. unhealthy vs. unregistered for maintenance).
+  enum Reason {
+    // TODO(jieyu): The default value when a caller doesn't check for
+    // presence is 0 and so ideally the 0 reason is not a valid one.
+    // Since this is not used anywhere, consider removing this reason.
+    REASON_COMMAND_EXECUTOR_FAILED = 0;
+
+    REASON_CONTAINER_LAUNCH_FAILED = 21;
+    REASON_CONTAINER_LIMITATION = 19;
+    REASON_CONTAINER_LIMITATION_DISK = 20;
+    REASON_CONTAINER_LIMITATION_MEMORY = 8;
+    REASON_CONTAINER_PREEMPTED = 17;
+    REASON_CONTAINER_UPDATE_FAILED = 22;
+    REASON_EXECUTOR_REGISTRATION_TIMEOUT = 23;
+    REASON_EXECUTOR_REREGISTRATION_TIMEOUT = 24;
+    REASON_EXECUTOR_TERMINATED = 1;
+    REASON_EXECUTOR_UNREGISTERED = 2; // No longer used.
+    REASON_FRAMEWORK_REMOVED = 3;
+    REASON_GC_ERROR = 4;
+    REASON_INVALID_FRAMEWORKID = 5;
+    REASON_INVALID_OFFERS = 6;
+    REASON_IO_SWITCHBOARD_EXITED = 27;
+    REASON_MASTER_DISCONNECTED = 7;
+    REASON_RECONCILIATION = 9;
+    REASON_RESOURCES_UNKNOWN = 18;
+    REASON_SLAVE_DISCONNECTED = 10;
+    REASON_SLAVE_REMOVED = 11;
+    REASON_SLAVE_RESTARTED = 12;
+    REASON_SLAVE_UNKNOWN = 13;
+    REASON_TASK_KILLED_DURING_LAUNCH = 30;
+    REASON_TASK_CHECK_STATUS_UPDATED = 28;
+    REASON_TASK_HEALTH_CHECK_STATUS_UPDATED = 29;
+    REASON_TASK_GROUP_INVALID = 25;
+    REASON_TASK_GROUP_UNAUTHORIZED = 26;
+    REASON_TASK_INVALID = 14;
+    REASON_TASK_UNAUTHORIZED = 15;
+    REASON_TASK_UNKNOWN = 16;
+  }
+
+  required TaskID task_id = 1;
+  required TaskState state = 2;
+  optional string message = 4; // Possible message explaining state.
+  optional Source source = 9;
+  optional Reason reason = 10;
+  optional bytes data = 3;
+  optional SlaveID slave_id = 5;
+  optional ExecutorID executor_id = 7; // TODO(benh): Use in master/slave.
+  optional double timestamp = 6;
+
+  // Statuses that are delivered reliably to the scheduler will
+  // include a 'uuid'. The status is considered delivered once
+  // it is acknowledged by the scheduler. Schedulers can choose
+  // to either explicitly acknowledge statuses or let the scheduler
+  // driver implicitly acknowledge (default).
+  //
+  // TODO(bmahler): This is currently overwritten in the scheduler
+  // driver and executor driver, but executors will need to set this
+  // to a valid RFC-4122 UUID if using the HTTP API.
+  optional bytes uuid = 11;
+
+  // Describes whether the task has been determined to be healthy (true) or
+  // unhealthy (false) according to the `health_check` field in `TaskInfo`.
+  optional bool healthy = 8;
+
+  // Contains check status for the check specified in the corresponding
+  // `TaskInfo`. If no check has been specified, this field must be
+  // absent, otherwise it must be present even if the check status is
+  // not available yet. If the status update is triggered for a different
+  // reason than `REASON_TASK_CHECK_STATUS_UPDATED`, this field will contain
+  // the last known value.
+  //
+  // NOTE: A check-related task status update is triggered if and only if
+  // the value or presence of any field in `CheckStatusInfo` changes.
+  //
+  // NOTE: Check support in built-in executors is experimental.
+  optional CheckStatusInfo check_status = 15;
+
+  // Labels are free-form key value pairs which are exposed through
+  // master and slave endpoints. Labels will not be interpreted or
+  // acted upon by Mesos itself. As opposed to the data field, labels
+  // will be kept in memory on master and slave processes. Therefore,
+  // labels should be used to tag TaskStatus message with light-weight
+  // meta-data. Labels should not contain duplicate key-value pairs.
+  optional Labels labels = 12;
+
+  // Container related information that is resolved dynamically such as
+  // network address.
+  optional ContainerStatus container_status = 13;
+
+  // The time (according to the master's clock) when the agent where
+  // this task was running became unreachable. This is only set on
+  // status updates for tasks running on agents that are unreachable
+  // (e.g., partitioned away from the master).
+  optional TimeInfo unreachable_time = 14;
+}
+
+
+/**
+ * Describes possible filters that can be applied to unused resources
+ * (see SchedulerDriver::launchTasks) to influence the allocator.
+ */
+message Filters {
+  // Time to consider unused resources refused. Note that all unused
+  // resources will be considered refused and use the default value
+  // (below) regardless of whether Filters was passed to
+  // SchedulerDriver::launchTasks. You MUST pass Filters with this
+  // field set to change this behavior (i.e., get another offer which
+  // includes unused resources sooner or later than the default).
+  optional double refuse_seconds = 1 [default = 5.0];
+}
+
+
+/**
+* Describes a collection of environment variables. This is used with
+* CommandInfo in order to set environment variables before running a
+* command. The contents of each variable may be specified as a string
+* or a Secret; only one of `value` and `secret` must be set.
+*/
+message Environment {
+  message Variable {
+    required string name = 1;
+
+    enum Type {
+      UNKNOWN = 0;
+      VALUE = 1;
+      SECRET = 2;
+    }
+
+    // In Mesos 1.2, the `Environment.variables.value` message was made
+    // optional. The default type for `Environment.variables.type` is now VALUE,
+    // which requires `value` to be set, maintaining backward compatibility.
+    //
+    // TODO(greggomann): The default can be removed in Mesos 2.1 (MESOS-7134).
+    optional Type type = 3 [default = VALUE];
+
+    // Only one of `value` and `secret` must be set.
+    optional string value = 2;
+    optional Secret secret = 4;
+  }
+
+  repeated Variable variables = 1;
+}
+
+
+/**
+ * A generic (key, value) pair used in various places for parameters.
+ */
+message Parameter {
+  required string key = 1;
+  required string value = 2;
+}
+
+
+/**
+ * Collection of Parameter.
+ */
+message Parameters {
+  repeated Parameter parameter = 1;
+}
+
+
+/**
+ * Credential used in various places for authentication and
+ * authorization.
+ *
+ * NOTE: A 'principal' is different from 'FrameworkInfo.user'. The
+ * former is used for authentication and authorization while the
+ * latter is used to determine the default user under which the
+ * framework's executors/tasks are run.
+ */
+message Credential {
+  required string principal = 1;
+  optional string secret = 2;
+}
+
+
+/**
+ * Credentials used for framework authentication, HTTP authentication
+ * (where the common 'username' and 'password' are captured as
+ * 'principal' and 'secret' respectively), etc.
+ */
+message Credentials {
+  repeated Credential credentials = 1;
+}
+
+
+/**
+ * Secret used to pass privileged information. It is designed to provide
+ * pass-by-value or pass-by-reference semantics, where the REFERENCE type can be
+ * used by custom modules which interact with a secure back-end.
+ */
+message Secret
+{
+  enum Type {
+    UNKNOWN = 0;
+    REFERENCE = 1;
+    VALUE = 2;
+  }
+
+  // Can be used by modules to refer to a secret stored in a secure back-end.
+  // The `key` field is provided to permit reference to a single value within a
+  // secret containing arbitrary key-value pairs.
+  //
+  // For example, given a back-end secret store with a secret named
+  // "my-secret" containing the following key-value pairs:
+  //
+  //   {
+  //     "username": "my-user",
+  //     "password": "my-password
+  //   }
+  //
+  // the username could be referred to in a `Secret` by specifying
+  // "my-secret" for the `name` and "username" for the `key`.
+  message Reference
+  {
+    required string name = 1;
+    optional string key = 2;
+  }
+
+  // Used to pass the value of a secret.
+  message Value
+  {
+    required bytes data = 1;
+  }
+
+  optional Type type = 1;
+
+  // Only one of `reference` and `value` must be set.
+  optional Reference reference = 2;
+  optional Value value = 3;
+}
+
+
+/**
+ * Rate (queries per second, QPS) limit for messages from a framework to master.
+ * Strictly speaking they are the combined rate from all frameworks of the same
+ * principal.
+ */
+message RateLimit {
+  // Leaving QPS unset gives it unlimited rate (i.e., not throttled),
+  // which also implies unlimited capacity.
+  optional double qps = 1;
+
+  // Principal of framework(s) to be throttled. Should match
+  // FrameworkInfo.principal and Credential.principal (if using authentication).
+  required string principal = 2;
+
+  // Max number of outstanding messages from frameworks of this principal
+  // allowed by master before the next message is dropped and an error is sent
+  // back to the sender. Messages received before the capacity is reached are
+  // still going to be processed after the error is sent.
+  // If unspecified, this principal is assigned unlimited capacity.
+  // NOTE: This value is ignored if 'qps' is not set.
+  optional uint64 capacity = 3;
+}
+
+
+/**
+ * Collection of RateLimit.
+ * Frameworks without rate limits defined here are not throttled unless
+ * 'aggregate_default_qps' is specified.
+ */
+message RateLimits {
+  // Items should have unique principals.
+  repeated RateLimit limits = 1;
+
+  // All the frameworks not specified in 'limits' get this default rate.
+  // This rate is an aggregate rate for all of them, i.e., their combined
+  // traffic is throttled together at this rate.
+  optional double aggregate_default_qps = 2;
+
+  // All the frameworks not specified in 'limits' get this default capacity.
+  // This is an aggregate value similar to 'aggregate_default_qps'.
+  optional uint64 aggregate_default_capacity = 3;
+}
+
+
+/**
+ * Describe an image used by tasks or executors. Note that it's only
+ * for tasks or executors launched by MesosContainerizer currently.
+ */
+message Image {
+  enum Type {
+    APPC = 1;
+    DOCKER = 2;
+  }
+
+  // Protobuf for specifying an Appc container image. See:
+  // https://github.com/appc/spec/blob/master/spec/aci.md
+  message Appc {
+    // The name of the image.
+    required string name = 1;
+
+    // An image ID is a string of the format "hash-value", where
+    // "hash" is the hash algorithm used and "value" is the hex
+    // encoded string of the digest. Currently the only permitted
+    // hash algorithm is sha512.
+    optional string id = 2;
+
+    // Optional labels. Suggested labels: "version", "os", and "arch".
+    optional Labels labels = 3;
+  }
+
+  message Docker {
+    // The name of the image. Expected format:
+    //   [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG|@TYPE:DIGEST]
+    //
+    // See: https://docs.docker.com/reference/commandline/pull/
+    required string name = 1;
+
+    // Credential to authenticate with docker registry.
+    // NOTE: This is not encrypted, therefore framework and operators
+    // should enable SSL when passing this information.
+    //
+    // This field has never been used in Mesos before and is
+    // deprecated since Mesos 1.3. Please use `config` below
+    // (see MESOS-7088 for details).
+    optional Credential credential = 2 [deprecated = true]; // Since 1.3.
+
+    // Docker config containing credentails to authenticate with
+    // docker registry. The secret is expected to be a docker
+    // config file in JSON format with UTF-8 character encoding.
+    optional Secret config = 3;
+  }
+
+  required Type type = 1;
+
+  // Only one of the following image messages should be set to match
+  // the type.
+  optional Appc appc = 2;
+  optional Docker docker = 3;
+
+  // With this flag set to false, the mesos containerizer will pull
+  // the docker/appc image from the registry even if the image is
+  // already downloaded on the agent.
+  optional bool cached = 4 [default = true];
+}
+
+
+/**
+ * Describes a volume mapping either from host to container or vice
+ * versa. Both paths can either refer to a directory or a file.
+ */
+message Volume {
+  enum Mode {
+    RW = 1; // read-write.
+    RO = 2; // read-only.
+  }
+
+  // TODO(gyliu513): Make this as `optional` after deprecation cycle of 1.0.
+  required Mode mode = 3;
+
+  // Path pointing to a directory or file in the container. If the
+  // path is a relative path, it is relative to the container work
+  // directory. If the path is an absolute path, that path must
+  // already exist.
+  required string container_path = 1;
+
+  // The following specifies the source of this volume. At most one of
+  // the following should be set.
+
+  // Absolute path pointing to a directory or file on the host or a
+  // path relative to the container work directory.
+  optional string host_path = 2;
+
+  // The source of the volume is an Image which describes a root
+  // filesystem which will be provisioned by Mesos.
+  optional Image image = 4;
+
+  // Describes where a volume originates from.
+  message Source {
+    enum Type {
+      // This must be the first enum value in this list, to
+      // ensure that if 'type' is not set, the default value
+      // is UNKNOWN. This enables enum values to be added
+      // in a backwards-compatible way. See: MESOS-4997.
+      UNKNOWN = 0;
+
+      // TODO(gyliu513): Add HOST_PATH and IMAGE as volume source type.
+      DOCKER_VOLUME = 1;
+      SANDBOX_PATH = 2;
+      SECRET = 3;
+    }
+
+    message DockerVolume {
+      // Driver of the volume, it can be flocker, convoy, raxrey etc.
+      optional string driver = 1;
+
+      // Name of the volume.
+      required string name = 2;
+
+      // Volume driver specific options.
+      optional Parameters driver_options = 3;
+    }
+
+    // Describe a path from a container's sandbox. The container can
+    // be the current container (SELF), or its parent container
+    // (PARENT). PARENT allows all child containers to share a volume
+    // from their parent container's sandbox. It'll be an error if
+    // the current container is a top level container.
+    message SandboxPath {
+      enum Type {
+        UNKNOWN = 0;
+        SELF = 1;
+        PARENT = 2;
+      }
+
+      optional Type type = 1;
+
+      // A path relative to the corresponding container's sandbox.
+      // Note that upwards traversal (i.e. ../../abc) is not allowed.
+      required string path = 2;
+    }
+
+    // Enum fields should be optional, see: MESOS-4997.
+    optional Type type = 1;
+
+    // The following specifies the source of this volume. At most one of
+    // the following should be set.
+
+    // The source of the volume created by docker volume driver.
+    optional DockerVolume docker_volume = 2;
+
+    optional SandboxPath sandbox_path = 3;
+
+    // The volume/secret isolator uses the secret-fetcher module (third-party or
+    // internal) downloads the secret and makes it available at container_path.
+    optional Secret secret = 4;
+  }
+
+  optional Source source = 5;
+}
+
+
+/**
+ * Describes a network request from a framework as well as network resolution
+ * provided by Mesos.
+ *
+ * A framework may request the network isolator on the Agent to isolate the
+ * container in a network namespace and create a virtual network interface.
+ * The `NetworkInfo` message describes the properties of that virtual
+ * interface, including the IP addresses and network isolation policy
+ * (network group membership).
+ *
+ * The NetworkInfo message is not interpreted by the Master or Agent and is
+ * intended to be used by Agent and Master modules implementing network
+ * isolation. If the modules are missing, the message is simply ignored. In
+ * future, the task launch will fail if there is no module providing the
+ * network isolation capabilities (MESOS-3390).
+ *
+ * An executor, Agent, or an Agent module may append NetworkInfos inside
+ * TaskStatus::container_status to provide information such as the container IP
+ * address and isolation groups.
+ */
+message NetworkInfo {
+  enum Protocol {
+    IPv4 = 1;
+    IPv6 = 2;
+  }
+
+  // Specifies a request for an IP address, or reports the assigned container
+  // IP address.
+  //
+  // Users can request an automatically assigned IP (for example, via an
+  // IPAM service) or a specific IP by adding a NetworkInfo to the
+  // ContainerInfo for a task.  On a request, specifying neither `protocol`
+  // nor `ip_address` means that any available address may be assigned.
+  message IPAddress {
+    // Specify IP address requirement. Set protocol to the desired value to
+    // request the network isolator on the Agent to assign an IP address to the
+    // container being launched. If a specific IP address is specified in
+    // ip_address, this field should not be set.
+    optional Protocol protocol = 1 [default = IPv4];
+
+    // Statically assigned IP provided by the Framework. This IP will be
+    // assigned to the container by the network isolator module on the Agent.
+    // This field should not be used with the protocol field above.
+    //
+    // If an explicit address is requested but is unavailable, the network
+    // isolator should fail the task.
+    optional string ip_address = 2;
+  }
+
+  // When included in a ContainerInfo, each of these represent a
+  // request for an IP address. Each request can specify an explicit address
+  // or the IP protocol to use.
+  //
+  // When included in a TaskStatus message, these inform the framework
+  // scheduler about the IP addresses that are bound to the container
+  // interface. When there are no custom network isolator modules installed,
+  // this field is filled in automatically with the Agent IP address.
+  repeated IPAddress ip_addresses = 5;
+
+  // Name of the network which will be used by network isolator to determine
+  // the network that the container joins. It's up to the network isolator
+  // to decide how to interpret this field.
+  optional string name = 6;
+
+  // A group is the name given to a set of logically-related interfaces that
+  // are allowed to communicate among themselves. Network traffic is allowed
+  // between two container interfaces that share at least one network group.
+  // For example, one might want to create separate groups for isolating dev,
+  // testing, qa and prod deployment environments.
+  repeated string groups = 3;
+
+  // To tag certain metadata to be used by Isolator/IPAM, e.g., rack, etc.
+  optional Labels labels = 4;
+
+  // Specifies a port mapping request for the task on this network.
+  message PortMapping {
+    required uint32 host_port = 1;
+    required uint32 container_port = 2;
+    // Protocol to expose as (ie: tcp, udp).
+    optional string protocol = 3;
+  }
+
+  repeated PortMapping port_mappings = 7;
+};
+
+
+/**
+ * Encapsulation of `Capabilities` supported by Linux.
+ * Reference: http://linux.die.net/man/7/capabilities.
+ */
+message CapabilityInfo {
+  // We start the actual values at an offset(1000) because Protobuf 2
+  // uses the first value as the default one. Separating the default
+  // value from the real first value helps to disambiguate them. This
+  // is especially valuable for backward compatibility.
+  // See: MESOS-4997.
+  enum Capability {
+    UNKNOWN = 0;
+    CHOWN = 1000;
+    DAC_OVERRIDE = 1001;
+    DAC_READ_SEARCH = 1002;
+    FOWNER = 1003;
+    FSETID = 1004;
+    KILL = 1005;
+    SETGID = 1006;
+    SETUID = 1007;
+    SETPCAP = 1008;
+    LINUX_IMMUTABLE = 1009;
+    NET_BIND_SERVICE = 1010;
+    NET_BROADCAST = 1011;
+    NET_ADMIN = 1012;
+    NET_RAW = 1013;
+    IPC_LOCK = 1014;
+    IPC_OWNER = 1015;
+    SYS_MODULE = 1016;
+    SYS_RAWIO = 1017;
+    SYS_CHROOT = 1018;
+    SYS_PTRACE = 1019;
+    SYS_PACCT = 1020;
+    SYS_ADMIN = 1021;
+    SYS_BOOT = 1022;
+    SYS_NICE = 1023;
+    SYS_RESOURCE = 1024;
+    SYS_TIME = 1025;
+    SYS_TTY_CONFIG = 1026;
+    MKNOD = 1027;
+    LEASE = 1028;
+    AUDIT_WRITE = 1029;
+    AUDIT_CONTROL = 1030;
+    SETFCAP = 1031;
+    MAC_OVERRIDE = 1032;
+    MAC_ADMIN = 1033;
+    SYSLOG = 1034;
+    WAKE_ALARM = 1035;
+    BLOCK_SUSPEND = 1036;
+    AUDIT_READ = 1037;
+  }
+
+  repeated Capability capabilities = 1;
+}
+
+
+/**
+ * Encapsulation for Linux specific configuration.
+ * E.g, capabilities, limits etc.
+ */
+message LinuxInfo {
+  // Since 1.4.0, deprecated in favor of `effective_capabilities`.
+  optional CapabilityInfo capability_info = 1 [deprecated = true];
+
+  // The set of capabilities that are allowed but not initially
+  // granted to tasks.
+  optional CapabilityInfo bounding_capabilities = 2;
+
+  // Represents the set of capabilities that the task will
+  // be executed with.
+  optional CapabilityInfo effective_capabilities = 3;
+
+  // If set as 'true', the container shares the pid namespace with
+  // its parent. If the container is a top level container, it will
+  // share the pid namespace with the agent. If the container is a
+  // nested container, it will share the pid namespace with its
+  // parent container. This field will be ignored if 'namespaces/pid'
+  // isolator is not enabled.
+  optional bool share_pid_namespace = 4;
+}
+
+
+/**
+* Encapsulation for POSIX rlimits, see
+* http://pubs.opengroup.org/onlinepubs/009695399/functions/getrlimit.html.
+* Note that some types might only be defined for Linux.
+* We use a custom prefix to avoid conflict with existing system macros
+* (e.g., `RLIMIT_CPU` or `NOFILE`).
+*/
+message RLimitInfo {
+  message RLimit {
+    enum Type {
+      UNKNOWN = 0;
+      RLMT_AS = 1;
+      RLMT_CORE = 2;
+      RLMT_CPU = 3;
+      RLMT_DATA = 4;
+      RLMT_FSIZE = 5;
+      RLMT_LOCKS = 6;
+      RLMT_MEMLOCK = 7;
+      RLMT_MSGQUEUE = 8;
+      RLMT_NICE = 9;
+      RLMT_NOFILE = 10;
+      RLMT_NPROC = 11;
+      RLMT_RSS = 12;
+      RLMT_RTPRIO = 13;
+      RLMT_RTTIME = 14;
+      RLMT_SIGPENDING = 15;
+      RLMT_STACK = 16;
+    }
+    optional Type type = 1;
+
+    // Either both are set or both are not set.
+    // If both are not set, it represents unlimited.
+    // If both are set, we require `soft` <= `hard`.
+    optional uint64 hard = 2;
+    optional uint64 soft = 3;
+  }
+
+  repeated RLimit rlimits = 1;
+}
+
+
+/**
+ * Describes the information about (pseudo) TTY that can
+ * be attached to a process running in a container.
+ */
+message TTYInfo {
+  message WindowSize {
+    required uint32 rows = 1;
+    required uint32 columns = 2;
+  }
+
+  optional WindowSize window_size = 1;
+}
+
+
+/**
+ * Describes a container configuration and allows extensible
+ * configurations for different container implementations.
+ *
+ * NOTE: `ContainerInfo` may be specified, e.g., by a task, even if no
+ * container image is provided. In this case neither `MesosInfo` nor
+ * `DockerInfo` is set, the required `type` must be `MESOS`. This is to
+ * address a case when a task without an image, e.g., a shell script
+ * with URIs, wants to use features originally designed for containers,
+ * for example custom network isolation via `NetworkInfo`.
+ */
+message ContainerInfo {
+  // All container implementation types.
+  enum Type {
+    DOCKER = 1;
+    MESOS = 2;
+  }
+
+  message DockerInfo {
+    // The docker image that is going to be passed to the registry.
+    required string image = 1;
+
+    // Network options.
+    enum Network {
+      HOST = 1;
+      BRIDGE = 2;
+      NONE = 3;
+      USER = 4;
+    }
+
+    optional Network network = 2 [default = HOST];
+
+    message PortMapping {
+      required uint32 host_port = 1;
+      required uint32 container_port = 2;
+      // Protocol to expose as (ie: tcp, udp).
+      optional string protocol = 3;
+    }
+
+    repeated PortMapping port_mappings = 3;
+
+    optional bool privileged = 4 [default = false];
+
+    // Allowing arbitrary parameters to be passed to docker CLI.
+    // Note that anything passed to this field is not guaranteed
+    // to be supported moving forward, as we might move away from
+    // the docker CLI.
+    repeated Parameter parameters = 5;
+
+    // With this flag set to true, the docker containerizer will
+    // pull the docker image from the registry even if the image
+    // is already downloaded on the slave.
+    optional bool force_pull_image = 6;
+
+    // The name of volume driver plugin.
+    optional string volume_driver = 7 [deprecated = true]; // Since 1.0
+  }
+
+  message MesosInfo {
+    optional Image image = 1;
+  }
+
+  required Type type = 1;
+  repeated Volume volumes = 2;
+  optional string hostname = 4;
+
+  // Only one of the following *Info messages should be set to match
+  // the type.
+  optional DockerInfo docker = 3;
+  optional MesosInfo mesos = 5;
+
+  // A list of network requests. A framework can request multiple IP addresses
+  // for the container.
+  repeated NetworkInfo network_infos = 7;
+
+  // Linux specific information for the container.
+  optional LinuxInfo linux_info = 8;
+
+  // (POSIX only) rlimits of the container.
+  optional RLimitInfo rlimit_info = 9;
+
+  // If specified a tty will be attached to the container entrypoint.
+  optional TTYInfo tty_info = 10;
+}
+
+
+/**
+ * Container related information that is resolved during container
+ * setup. The information is sent back to the framework as part of the
+ * TaskStatus message.
+ */
+message ContainerStatus {
+  optional ContainerID container_id = 4;
+
+  // This field can be reliably used to identify the container IP address.
+  repeated NetworkInfo network_infos = 1;
+
+  // Information about Linux control group (cgroup).
+  optional CgroupInfo cgroup_info = 2;
+
+  // Information about Executor PID.
+  optional uint32 executor_pid = 3;
+}
+
+
+/**
+ * Linux control group (cgroup) information.
+ */
+message CgroupInfo {
+  // Configuration of a blkio cgroup subsystem.
+  message Blkio {
+    enum Operation {
+      UNKNOWN = 0;
+      TOTAL = 1;
+      READ = 2;
+      WRITE = 3;
+      SYNC = 4;
+      ASYNC = 5;
+    }
+
+    // Describes a stat value without the device descriptor part.
+    message Value {
+      optional Operation op = 1; // Required.
+      optional uint64 value = 2; // Required.
+    }
+
+    message CFQ {
+      message Statistics {
+        // Stats are grouped by block devices. If `device` is not
+        // set, it represents `Total`.
+        optional Device.Number device = 1;
+        // blkio.sectors
+        optional uint64 sectors = 2;
+        // blkio.time
+        optional uint64 time = 3;
+        // blkio.io_serviced
+        repeated Value io_serviced = 4;
+        // blkio.io_service_bytes
+        repeated Value io_service_bytes = 5;
+        // blkio.io_service_time
+        repeated Value io_service_time = 6;
+        // blkio.io_wait_time
+        repeated Value io_wait_time = 7;
+        // blkio.io_merged
+        repeated Value io_merged = 8;
+        // blkio.io_queued
+        repeated Value io_queued = 9;
+      }
+
+      // TODO(jasonlai): Add fields for blkio weight and weight
+      // device.
+    }
+
+    message Throttling {
+      message Statistics {
+        // Stats are grouped by block devices. If `device` is not
+        // set, it represents `Total`.
+        optional Device.Number device = 1;
+        // blkio.throttle.io_serviced
+        repeated Value io_serviced = 2;
+        // blkio.throttle.io_service_bytes
+        repeated Value io_service_bytes = 3;
+      }
+
+      // TODO(jasonlai): Add fields for blkio.throttle.*_device.
+    }
+
+    message Statistics {
+      repeated CFQ.Statistics cfq = 1;
+      repeated CFQ.Statistics cfq_recursive = 2;
+      repeated Throttling.Statistics throttling = 3;
+    }
+  }
+
+  // Configuration of a net_cls cgroup subsystem.
+  message NetCls {
+    // The 32-bit classid consists of two parts, a 16 bit major handle
+    // and a 16-bit minor handle. The major and minor handle are
+    // represented using the format 0xAAAABBBB, where 0xAAAA is the
+    // 16-bit major handle and 0xBBBB is the 16-bit minor handle.
+    optional uint32 classid = 1;
+  }
+
+  optional NetCls net_cls = 1;
+}
+
+
+/**
+ * Collection of labels. Labels should not contain duplicate key-value
+ * pairs.
+ */
+message Labels {
+  repeated Label labels = 1;
+}
+
+
+/**
+ * Key, value pair used to store free form user-data.
+ */
+message Label {
+  required string key = 1;
+  optional string value = 2;
+}
+
+
+/**
+ * Named port used for service discovery.
+ */
+message Port {
+  // Port number on which the framework exposes a service.
+  required uint32 number = 1;
+
+  // Name of the service hosted on this port.
+  optional string name = 2;
+
+  // Layer 4-7 protocol on which the framework exposes its services.
+  optional string protocol = 3;
+
+  // This field restricts discovery within a framework (FRAMEWORK),
+  // within a Mesos cluster (CLUSTER), or places no restrictions (EXTERNAL).
+  // The visibility setting for a Port overrides the general visibility setting
+  // in the DiscoveryInfo.
+  optional DiscoveryInfo.Visibility visibility = 4;
+
+  // This can be used to decorate the message with metadata to be
+  // interpreted by external applications such as firewalls.
+  optional Labels labels = 5;
+}
+
+
+/**
+ * Collection of ports.
+ */
+message Ports {
+  repeated Port ports = 1;
+}
+
+
+/**
+* Service discovery information.
+* The visibility field restricts discovery within a framework (FRAMEWORK),
+* within a Mesos cluster (CLUSTER), or places no restrictions (EXTERNAL).
+* Each port in the ports field also has an optional visibility field.
+* If visibility is specified for a port, it overrides the default service-wide
+* DiscoveryInfo.visibility for that port.
+* The environment, location, and version fields provide first class support for
+* common attributes used to differentiate between similar services. The
+* environment may receive values such as PROD/QA/DEV, the location field may
+* receive values like EAST-US/WEST-US/EUROPE/AMEA, and the version field may
+* receive values like v2.0/v0.9. The exact use of these fields is up to each
+* service discovery system.
+*/
+message DiscoveryInfo {
+  enum Visibility {
+    FRAMEWORK = 0;
+    CLUSTER = 1;
+    EXTERNAL = 2;
+  }
+
+  required Visibility visibility = 1;
+  optional string name = 2;
+  optional string environment = 3;
+  optional string location = 4;
+  optional string version = 5;
+  optional Ports ports = 6;
+  optional Labels labels = 7;
+}
+
+
+/**
+ * Named WeightInfo to indicate resource allocation
+ * priority between the different roles.
+ */
+message WeightInfo {
+  required double weight = 1;
+
+  // Related role name.
+  optional string role = 2;
+}
+
+
+/**
+ * Version information of a component.
+ */
+message VersionInfo {
+  required string version = 1;
+  optional string build_date = 2;
+  optional double build_time = 3;
+  optional string build_user = 4;
+  optional string git_sha = 5;
+  optional string git_branch = 6;
+  optional string git_tag = 7;
+}
+
+
+/**
+ * Flag consists of a name and optionally its value.
+ */
+message Flag {
+  required string name = 1;
+  optional string value = 2;
+}
+
+
+/**
+ * Describes a Role. Roles can be used to specify that certain resources are
+ * reserved for the use of one or more frameworks.
+ */
+message Role {
+  required string name = 1;
+  required double weight = 2;
+  repeated FrameworkID frameworks = 3;
+  repeated Resource resources = 4;
+}
+
+
+/**
+ * Metric consists of a name and optionally its value.
+ */
+message Metric {
+  required string name = 1;
+  optional double value = 2;
+}
+
+
+/**
+ * Describes a File.
+ */
+message FileInfo {
+  // Absolute path to the file.
+  required string path = 1;
+
+  // Number of hard links.
+  optional int32 nlink = 2;
+
+  // Total size in bytes.
+  optional uint64 size = 3;
+
+  // Last modification time.
+  optional TimeInfo mtime = 4;
+
+  // Represents a file's mode and permission bits. The bits have the same
+  // definition on all systems and is portable.
+  optional uint32 mode = 5;
+
+  // User ID of owner.
+  optional string uid = 6;
+
+  // Group ID of owner.
+  optional string gid = 7;
+}
+
+
+/**
+ * Describes information abount a device.
+ */
+message Device {
+  message Number {
+    required uint64 major_number = 1;
+    required uint64 minor_number = 2;
+  }
+
+  optional string path = 1;
+  optional Number number = 2;
+}
+
+
+/**
+ * Describes a device whitelist entry that expose from host to container.
+ */
+message DeviceAccess {
+  message Access {
+    optional bool read = 1;
+    optional bool write = 2;
+    optional bool mknod = 3;
+  }
+  required Device device = 1;
+  required Access access = 2;
+}
+
+
+message DeviceWhitelist {
+   repeated DeviceAccess allowed_devices = 1;
+}
diff --git a/myriad-commons/proto/mesos/scheduler.proto b/myriad-commons/proto/mesos/scheduler.proto
new file mode 100644
index 0000000..0528a7e
--- /dev/null
+++ b/myriad-commons/proto/mesos/scheduler.proto
@@ -0,0 +1,433 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto2";
+
+import "mesos/mesos.proto";
+
+package mesos.scheduler;
+
+option java_package = "org.apache.mesos.scheduler";
+option java_outer_classname = "Protos";
+
+
+/**
+ * Scheduler event API.
+ *
+ * An event is described using the standard protocol buffer "union"
+ * trick, see:
+ * https://developers.google.com/protocol-buffers/docs/techniques#union.
+ */
+message Event {
+  // Possible event types, followed by message definitions if
+  // applicable.
+  enum Type {
+    // This must be the first enum value in this list, to
+    // ensure that if 'type' is not set, the default value
+    // is UNKNOWN. This enables enum values to be added
+    // in a backwards-compatible way. See: MESOS-4997.
+    UNKNOWN = 0;
+
+    SUBSCRIBED = 1;             // See 'Subscribed' below.
+    OFFERS = 2;                 // See 'Offers' below.
+    INVERSE_OFFERS = 9;         // See 'InverseOffers' below.
+    RESCIND = 3;                // See 'Rescind' below.
+    RESCIND_INVERSE_OFFER = 10; // See 'RescindInverseOffer' below.
+    UPDATE = 4;                 // See 'Update' below.
+    MESSAGE = 5;                // See 'Message' below.
+    FAILURE = 6;                // See 'Failure' below.
+    ERROR = 7;                  // See 'Error' below.
+
+    // Periodic message sent by the Mesos master according to
+    // 'Subscribed.heartbeat_interval_seconds'. If the scheduler does
+    // not receive any events (including heartbeats) for an extended
+    // period of time (e.g., 5 x heartbeat_interval_seconds), there is
+    // likely a network partition. In such a case the scheduler should
+    // close the existing subscription connection and resubscribe
+    // using a backoff strategy.
+    HEARTBEAT = 8;
+  }
+
+  // First event received when the scheduler subscribes.
+  message Subscribed {
+    required FrameworkID framework_id = 1;
+
+    // This value will be set if the master is sending heartbeats. See
+    // the comment above on 'HEARTBEAT' for more details.
+    optional double heartbeat_interval_seconds = 2;
+
+    // Since Mesos 1.1.
+    optional MasterInfo master_info = 3;
+  }
+
+  // Received whenever there are new resources that are offered to the
+  // scheduler. Each offer corresponds to a set of resources on an
+  // agent. Until the scheduler accepts or declines an offer the
+  // resources are considered allocated to the scheduler.
+  message Offers {
+    repeated Offer offers = 1;
+  }
+
+  // Received whenever there are resources requested back from the
+  // scheduler. Each inverse offer specifies the agent, and
+  // optionally specific resources. Accepting or Declining an inverse
+  // offer informs the allocator of the scheduler's ability to release
+  // the specified resources without violating an SLA. If no resources
+  // are specified then all resources on the agent are requested to be
+  // released.
+  message InverseOffers {
+    repeated InverseOffer inverse_offers = 1;
+  }
+
+  // Received when a particular offer is no longer valid (e.g., the
+  // slave corresponding to the offer has been removed) and hence
+  // needs to be rescinded. Any future calls ('Accept' / 'Decline') made
+  // by the scheduler regarding this offer will be invalid.
+  message Rescind {
+    required OfferID offer_id = 1;
+  }
+
+  // Received when a particular inverse offer is no longer valid
+  // (e.g., the agent corresponding to the offer has been removed)
+  // and hence needs to be rescinded. Any future calls ('Accept' /
+  // 'Decline') made by the scheduler regarding this inverse offer
+  // will be invalid.
+  message RescindInverseOffer {
+    required OfferID inverse_offer_id = 1;
+  }
+
+  // Received whenever there is a status update that is generated by
+  // the executor or slave or master. Status updates should be used by
+  // executors to reliably communicate the status of the tasks that
+  // they manage. It is crucial that a terminal update (see TaskState
+  // in mesos.proto) is sent by the executor as soon as the task
+  // terminates, in order for Mesos to release the resources allocated
+  // to the task. It is also the responsibility of the scheduler to
+  // explicitly acknowledge the receipt of a status update. See
+  // 'Acknowledge' in the 'Call' section below for the semantics.
+  //
+  // A task status update may be used for guaranteed delivery of some
+  // task-related information, e.g., task's health update. Such
+  // information may be shadowed by subsequent task status updates, that
+  // do not preserve fields of the previously sent message.
+  message Update {
+    required TaskStatus status = 1;
+  }
+
+  // Received when a custom message generated by the executor is
+  // forwarded by the master. Note that this message is not
+  // interpreted by Mesos and is only forwarded (without reliability
+  // guarantees) to the scheduler. It is up to the executor to retry
+  // if the message is dropped for any reason.
+  message Message {
+    required SlaveID slave_id = 1;
+    required ExecutorID executor_id = 2;
+    required bytes data = 3;
+  }
+
+  // Received when a slave is removed from the cluster (e.g., failed
+  // health checks) or when an executor is terminated. Note that, this
+  // event coincides with receipt of terminal UPDATE events for any
+  // active tasks belonging to the slave or executor and receipt of
+  // 'Rescind' events for any outstanding offers belonging to the
+  // slave. Note that there is no guaranteed order between the
+  // 'Failure', 'Update' and 'Rescind' events when a slave or executor
+  // is removed.
+  // TODO(vinod): Consider splitting the lost slave and terminated
+  // executor into separate events and ensure it's reliably generated.
+  message Failure {
+    optional SlaveID slave_id = 1;
+
+    // If this was just a failure of an executor on a slave then
+    // 'executor_id' will be set and possibly 'status' (if we were
+    // able to determine the exit status).
+    optional ExecutorID executor_id = 2;
+
+    // On Posix, `status` corresponds to termination information in the
+    // `stat_loc` area returned from a `waitpid` call. On Windows, `status`
+    // is obtained via calling the `GetExitCodeProcess()` function. For
+    // messages coming from Posix agents, schedulers need to apply
+    // `WEXITSTATUS` family macros or equivalent transformations to obtain
+    // exit codes.
+    //
+    // TODO(alexr): Consider unifying Windows and Posix behavior by returning
+    // exit code here, see MESOS-7241.
+    optional int32 status = 3;
+  }
+
+  // Received when there is an unrecoverable error in the scheduler (e.g.,
+  // scheduler failed over, rate limiting, authorization errors etc.). The
+  // scheduler should abort on receiving this event.
+  message Error {
+    required string message = 1;
+  }
+
+  // Type of the event, indicates which optional field below should be
+  // present if that type has a nested message definition.
+  // Enum fields should be optional, see: MESOS-4997.
+  optional Type type = 1;
+
+  optional Subscribed subscribed = 2;
+  optional Offers offers = 3;
+  optional InverseOffers inverse_offers = 9;
+  optional Rescind rescind = 4;
+  optional RescindInverseOffer rescind_inverse_offer = 10;
+  optional Update update = 5;
+  optional Message message = 6;
+  optional Failure failure = 7;
+  optional Error error = 8;
+}
+
+
+/**
+ * Scheduler call API.
+ *
+ * Like Event, a Call is described using the standard protocol buffer
+ * "union" trick (see above).
+ */
+message Call {
+  // Possible call types, followed by message definitions if
+  // applicable.
+  enum Type {
+    // See comments above on `Event::Type` for more details on this enum value.
+    UNKNOWN = 0;
+
+    SUBSCRIBE = 1;   // See 'Subscribe' below.
+    TEARDOWN = 2;    // Shuts down all tasks/executors and removes framework.
+    ACCEPT = 3;      // See 'Accept' below.
+    DECLINE = 4;     // See 'Decline' below.
+    ACCEPT_INVERSE_OFFERS = 13;  // See 'AcceptInverseOffers' below.
+    DECLINE_INVERSE_OFFERS = 14; // See 'DeclineInverseOffers' below.
+    REVIVE = 5;      // Removes any previous filters set via ACCEPT or DECLINE.
+    KILL = 6;        // See 'Kill' below.
+    SHUTDOWN = 7;    // See 'Shutdown' below.
+    ACKNOWLEDGE = 8; // See 'Acknowledge' below.
+    RECONCILE = 9;   // See 'Reconcile' below.
+    MESSAGE = 10;    // See 'Message' below.
+    REQUEST = 11;    // See 'Request' below.
+    SUPPRESS = 12;   // Inform master to stop sending offers to the framework.
+
+    // TODO(benh): Consider adding an 'ACTIVATE' and 'DEACTIVATE' for
+    // already subscribed frameworks as a way of stopping offers from
+    // being generated and other events from being sent by the master.
+    // Note that this functionality existed originally to support
+    // SchedulerDriver::abort which was only necessary to handle
+    // exceptions getting thrown from within Scheduler callbacks,
+    // something that is not an issue with the Event/Call API.
+  }
+
+  // Subscribes the scheduler with the master to receive events. A
+  // scheduler must send other calls only after it has received the
+  // SUBCRIBED event.
+  message Subscribe {
+    // See the comments below on 'framework_id' on the semantics for
+    // 'framework_info.id'.
+    required FrameworkInfo framework_info = 1;
+
+    // NOTE: 'force' field is not present in v1/scheduler.proto because it is
+    // only used by the scheduler driver. The driver sets it to true when the
+    // scheduler re-registers for the first time after a failover. Once
+    // re-registered all subsequent re-registration attempts (e.g., due to ZK
+    // blip) will have 'force' set to false. This is important because master
+    // uses this field to know when it needs to send FrameworkRegisteredMessage
+    // vs FrameworkReregisteredMessage.
+    optional bool force = 2;
+
+    // List of suppressed roles for which the framework does not wish to be
+    // offered resources. The framework can decide to suppress all or a subset
+    // of roles the framework (re)registers as.
+    //
+    // Note: This field is not set by scheduler driver, so will always be
+    // empty. It is added here for transformation from `v1::Call::Subscribe`.
+    repeated string suppressed_roles = 3;
+  }
+
+  // Accepts an offer, performing the specified operations
+  // in a sequential manner.
+  //
+  // E.g. Launch a task with a newly reserved persistent volume:
+  //
+  //   Accept {
+  //     offer_ids: [ ... ]
+  //     operations: [
+  //       { type: RESERVE,
+  //         reserve: { resources: [ disk(role):2 ] } }
+  //       { type: CREATE,
+  //         create: { volumes: [ disk(role):1+persistence ] } }
+  //       { type: LAUNCH,
+  //         launch: { task_infos ... disk(role):1;disk(role):1+persistence } }
+  //     ]
+  //   }
+  //
+  // NOTE: Any of the offer’s resources not used in the `Accept` call
+  // (e.g., to launch a task) are considered unused and might be
+  // reoffered to other frameworks. In other words, the same `OfferID`
+  // cannot be used in more than one `Accept` call.
+  // NOTE: All offers must belong to the same agent.
+  message Accept {
+    repeated OfferID offer_ids = 1;
+    repeated Offer.Operation operations = 2;
+    optional Filters filters = 3;
+  }
+
+  // Declines an offer, signaling the master to potentially reoffer
+  // the resources to a different framework. Note that this is same
+  // as sending an Accept call with no operations. See comments on
+  // top of 'Accept' for semantics.
+  message Decline {
+    repeated OfferID offer_ids = 1;
+    optional Filters filters = 2;
+  }
+
+  // Accepts an inverse offer. Inverse offers should only be accepted
+  // if the resources in the offer can be safely evacuated before the
+  // provided unavailability.
+  message AcceptInverseOffers {
+    repeated OfferID inverse_offer_ids = 1;
+    optional Filters filters = 2;
+  }
+
+  // Declines an inverse offer. Inverse offers should be declined if
+  // the resources in the offer might not be safely evacuated before
+  // the provided unavailability.
+  message DeclineInverseOffers {
+    repeated OfferID inverse_offer_ids = 1;
+    optional Filters filters = 2;
+  }
+
+  // Revive offers for the specified roles. If `roles` is empty,
+  // the `REVIVE` call will revive offers for all of the roles
+  // the framework is currently subscribed to.
+  message Revive {
+    repeated string roles = 1;
+  }
+
+  // Kills a specific task. If the scheduler has a custom executor,
+  // the kill is forwarded to the executor and it is up to the
+  // executor to kill the task and send a TASK_KILLED (or TASK_FAILED)
+  // update. Note that Mesos releases the resources for a task once it
+  // receives a terminal update (See TaskState in mesos.proto) for it.
+  // If the task is unknown to the master, a TASK_LOST update is
+  // generated.
+  //
+  // If a task within a task group is killed before the group is
+  // delivered to the executor, all tasks in the task group are
+  // killed. When a task group has been delivered to the executor,
+  // it is up to the executor to decide how to deal with the kill.
+  // Note The default Mesos executor will currently kill all the
+  // tasks in the task group if it gets a kill for any task.
+  message Kill {
+    required TaskID task_id = 1;
+    optional SlaveID slave_id = 2;
+
+    // If set, overrides any previously specified kill policy for this task.
+    // This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+    // Can be used to forcefully kill a task which is already being killed.
+    optional KillPolicy kill_policy = 3;
+  }
+
+  // Shuts down a custom executor. When the executor gets a shutdown
+  // event, it is expected to kill all its tasks (and send TASK_KILLED
+  // updates) and terminate. If the executor doesn’t terminate within
+  // a certain timeout (configurable via
+  // '--executor_shutdown_grace_period' slave flag), the slave will
+  // forcefully destroy the container (executor and its tasks) and
+  // transition its active tasks to TASK_LOST.
+  message Shutdown {
+    required ExecutorID executor_id = 1;
+    required SlaveID slave_id = 2;
+  }
+
+  // Acknowledges the receipt of status update. Schedulers are
+  // responsible for explicitly acknowledging the receipt of status
+  // updates that have 'Update.status().uuid()' field set. Such status
+  // updates are retried by the slave until they are acknowledged by
+  // the scheduler.
+  message Acknowledge {
+    required SlaveID slave_id = 1;
+    required TaskID task_id = 2;
+    required bytes uuid = 3;
+  }
+
+  // Allows the scheduler to query the status for non-terminal tasks.
+  // This causes the master to send back the latest task status for
+  // each task in 'tasks', if possible. Tasks that are no longer known
+  // will result in a TASK_LOST, TASK_UNKNOWN, or TASK_UNREACHABLE update.
+  // If 'tasks' is empty, then the master will send the latest status
+  // for each task currently known.
+  message Reconcile {
+    // TODO(vinod): Support arbitrary queries than just state of tasks.
+    message Task {
+      required TaskID task_id = 1;
+      optional SlaveID slave_id = 2;
+    }
+
+    repeated Task tasks = 1;
+  }
+
+  // Sends arbitrary binary data to the executor. Note that Mesos
+  // neither interprets this data nor makes any guarantees about the
+  // delivery of this message to the executor.
+  message Message {
+    required SlaveID slave_id = 1;
+    required ExecutorID executor_id = 2;
+    required bytes data = 3;
+  }
+
+  // Requests a specific set of resources from Mesos's allocator. If
+  // the allocator has support for this, corresponding offers will be
+  // sent asynchronously via the OFFERS event(s).
+  //
+  // NOTE: The built-in hierarchical allocator doesn't have support
+  // for this call and hence simply ignores it.
+  message Request {
+    repeated mesos.Request requests = 1;
+  }
+
+  // Suppress offers for the specified roles. If `roles` is empty,
+  // the `SUPPRESS` call will suppress offers for all of the roles
+  // the framework is currently subscribed to.
+  message Suppress {
+    repeated string roles = 1;
+  }
+
+  // Identifies who generated this call. Master assigns a framework id
+  // when a new scheduler subscribes for the first time. Once assigned,
+  // the scheduler must set the 'framework_id' here and within its
+  // FrameworkInfo (in any further 'Subscribe' calls). This allows the
+  // master to identify a scheduler correctly across disconnections,
+  // failovers, etc.
+  optional FrameworkID framework_id = 1;
+
+  // Type of the call, indicates which optional field below should be
+  // present if that type has a nested message definition.
+  // See comments on `Event::Type` above on the reasoning behind this field being optional.
+  optional Type type = 2;
+
+  optional Subscribe subscribe = 3;
+  optional Accept accept = 4;
+  optional Decline decline = 5;
+  optional AcceptInverseOffers accept_inverse_offers = 13;
+  optional DeclineInverseOffers decline_inverse_offers = 14;
+  optional Revive revive = 15;
+  optional Kill kill = 6;
+  optional Shutdown shutdown = 7;
+  optional Acknowledge acknowledge = 8;
+  optional Reconcile reconcile = 9;
+  optional Message message = 10;
+  optional Request request = 11;
+  optional Suppress suppress = 16;
+}
diff --git a/myriad-commons/proto/mesos/v1/executor.proto b/myriad-commons/proto/mesos/v1/executor.proto
new file mode 100644
index 0000000..b2ef325
--- /dev/null
+++ b/myriad-commons/proto/mesos/v1/executor.proto
@@ -0,0 +1,214 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto2";
+
+import "mesos/v1/mesos.proto";
+
+package mesos.v1.executor;
+
+option java_package = "org.apache.mesos.v1.executor";
+option java_outer_classname = "Protos";
+
+
+/**
+ * Executor event API.
+ *
+ * An event is described using the standard protocol buffer "union"
+ * trick, see https://developers.google.com/protocol-buffers/docs/techniques#union.
+ */
+message Event {
+  // Possible event types, followed by message definitions if
+  // applicable.
+  enum Type {
+    // This must be the first enum value in this list, to
+    // ensure that if 'type' is not set, the default value
+    // is UNKNOWN. This enables enum values to be added
+    // in a backwards-compatible way. See: MESOS-4997.
+    UNKNOWN = 0;
+
+    SUBSCRIBED = 1;   // See 'Subscribed' below.
+    LAUNCH = 2;       // See 'Launch' below.
+    LAUNCH_GROUP = 8; // See 'LaunchGroup' below.
+    KILL = 3;         // See 'Kill' below.
+    ACKNOWLEDGED = 4; // See 'Acknowledged' below.
+    MESSAGE = 5;      // See 'Message' below.
+    ERROR = 6;        // See 'Error' below.
+
+    // Received when the agent asks the executor to shutdown/kill itself.
+    // The executor is then required to kill all its active tasks, send
+    // `TASK_KILLED` status updates and gracefully exit. The executor
+    // should terminate within a `MESOS_EXECUTOR_SHUTDOWN_GRACE_PERIOD`
+    // (an environment variable set by the agent upon executor startup);
+    // it can be configured via `ExecutorInfo.shutdown_grace_period`. If
+    // the executor fails to do so, the agent will forcefully destroy the
+    // container where the executor is running. The agent would then send
+    // `TASK_LOST` updates for any remaining active tasks of this executor.
+    //
+    // NOTE: The executor must not assume that it will always be allotted
+    // the full grace period, as the agent may decide to allot a shorter
+    // period and failures / forcible terminations may occur.
+    //
+    // TODO(alexr): Consider adding a duration field into the `Shutdown`
+    // message so that the agent can communicate when a shorter period
+    // has been allotted.
+    SHUTDOWN = 7;
+  }
+
+  // First event received when the executor subscribes.
+  // The 'id' field in the 'framework_info' will be set.
+   message Subscribed {
+    required ExecutorInfo executor_info = 1;
+    required FrameworkInfo framework_info = 2;
+    required AgentInfo agent_info = 3;
+
+    // Uniquely identifies the container of an executor run.
+    optional ContainerID container_id = 4;
+  }
+
+  // Received when the framework attempts to launch a task. Once
+  // the task is successfully launched, the executor must respond with
+  // a TASK_RUNNING update (See TaskState in v1/mesos.proto).
+  message Launch {
+    required TaskInfo task = 1;
+  }
+
+  // Received when the framework attempts to launch a group of tasks atomically.
+  // Similar to `Launch` above the executor must send TASK_RUNNING updates for
+  // tasks that are successfully launched.
+  message LaunchGroup {
+    required TaskGroupInfo task_group = 1;
+  }
+
+  // Received when the scheduler wants to kill a specific task. Once
+  // the task is terminated, the executor should send a TASK_KILLED
+  // (or TASK_FAILED) update. The terminal update is necessary so
+  // Mesos can release the resources associated with the task.
+  message Kill {
+    required TaskID task_id = 1;
+
+    // If set, overrides any previously specified kill policy for this task.
+    // This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+    // Can be used to forcefully kill a task which is already being killed.
+    optional KillPolicy kill_policy = 2;
+  }
+
+  // Received when the agent acknowledges the receipt of status
+  // update. Schedulers are responsible for explicitly acknowledging
+  // the receipt of status updates that have 'update.status().uuid()'
+  // field set. Unacknowledged updates can be retried by the executor.
+  // They should also be sent by the executor whenever it
+  // re-subscribes.
+  message Acknowledged {
+    required TaskID task_id = 1;
+    required bytes uuid = 2;
+  }
+
+  // Received when a custom message generated by the scheduler is
+  // forwarded by the agent. Note that this message is not
+  // interpreted by Mesos and is only forwarded (without reliability
+  // guarantees) to the executor. It is up to the scheduler to retry
+  // if the message is dropped for any reason.
+  message Message {
+    required bytes data = 1;
+  }
+
+  // Received in case the executor sends invalid calls (e.g.,
+  // required values not set).
+  // TODO(arojas): Remove this once the old executor driver is no
+  // longer supported. With HTTP API all errors will be signaled via
+  // HTTP response codes.
+  message Error {
+    required string message = 1;
+  }
+
+  // Type of the event, indicates which optional field below should be
+  // present if that type has a nested message definition.
+  // Enum fields should be optional, see: MESOS-4997.
+  optional Type type = 1;
+
+  optional Subscribed subscribed = 2;
+  optional Acknowledged acknowledged = 3;
+  optional Launch launch = 4;
+  optional LaunchGroup launch_group = 8;
+  optional Kill kill = 5;
+  optional Message message = 6;
+  optional Error error = 7;
+}
+
+
+/**
+ * Executor call API.
+ *
+ * Like Event, a Call is described using the standard protocol buffer
+ * "union" trick (see above).
+ */
+ message Call {
+  // Possible call types, followed by message definitions if
+  // applicable.
+  enum Type {
+    // See comments above on `Event::Type` for more details on this enum value.
+    UNKNOWN = 0;
+
+    SUBSCRIBE = 1;    // See 'Subscribe' below.
+    UPDATE = 2;       // See 'Update' below.
+    MESSAGE = 3;      // See 'Message' below.
+  }
+
+  // Request to subscribe with the agent. If subscribing after a disconnection,
+  // it must include a list of all the tasks and updates which haven't been
+  // acknowledged by the scheduler.
+  message Subscribe {
+    repeated TaskInfo unacknowledged_tasks = 1;
+    repeated Update unacknowledged_updates = 2;
+  }
+
+  // Notifies the scheduler that a task has transitioned from one
+  // state to another. Status updates should be used by executors
+  // to reliably communicate the status of the tasks that they
+  // manage. It is crucial that a terminal update (see TaskState
+  // in v1/mesos.proto) is sent to the scheduler as soon as the task
+  // terminates, in order for Mesos to release the resources allocated
+  // to the task. It is the responsibility of the scheduler to
+  // explicitly acknowledge the receipt of a status update. See
+  // 'Acknowledged' in the 'Events' section above for the semantics.
+  message Update {
+    required TaskStatus status = 1;
+  }
+
+  // Sends arbitrary binary data to the scheduler. Note that Mesos
+  // neither interprets this data nor makes any guarantees about the
+  // delivery of this message to the scheduler.
+  // See 'Message' in the 'Events' section.
+  message Message {
+    required bytes data = 2;
+  }
+
+  // Identifies the executor which generated this call.
+  required ExecutorID executor_id = 1;
+  required FrameworkID framework_id = 2;
+
+  // Type of the call, indicates which optional field below should be
+  // present if that type has a nested message definition.
+  // In case type is SUBSCRIBED, no message needs to be set.
+  // See comments on `Event::Type` above on the reasoning behind this
+  // field being optional.
+  optional Type type = 3;
+
+  optional Subscribe subscribe = 4;
+  optional Update update = 5;
+  optional Message message = 6;
+}
diff --git a/myriad-commons/proto/mesos/v1/mesos.proto b/myriad-commons/proto/mesos/v1/mesos.proto
new file mode 100644
index 0000000..4d905d3
--- /dev/null
+++ b/myriad-commons/proto/mesos/v1/mesos.proto
@@ -0,0 +1,3173 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto2";
+
+package mesos.v1;
+
+option java_package = "org.apache.mesos.v1";
+option java_outer_classname = "Protos";
+
+
+/**
+ * Status is used to indicate the state of the scheduler and executor
+ * driver after function calls.
+ */
+enum Status {
+  DRIVER_NOT_STARTED = 1;
+  DRIVER_RUNNING = 2;
+  DRIVER_ABORTED = 3;
+  DRIVER_STOPPED = 4;
+}
+
+
+/**
+ * A unique ID assigned to a framework. A framework can reuse this ID
+ * in order to do failover (see MesosSchedulerDriver).
+ */
+message FrameworkID {
+  required string value = 1;
+}
+
+
+/**
+ * A unique ID assigned to an offer.
+ */
+message OfferID {
+  required string value = 1;
+}
+
+
+/**
+ * A unique ID assigned to an agent. Currently, an agent gets a new ID
+ * whenever it (re)registers with Mesos. Framework writers shouldn't
+ * assume any binding between an agent ID and and a hostname.
+ */
+message AgentID {
+  required string value = 1;
+}
+
+
+/**
+ * A framework-generated ID to distinguish a task. The ID must remain
+ * unique while the task is active. A framework can reuse an ID _only_
+ * if the previous task with the same ID has reached a terminal state
+ * (e.g., TASK_FINISHED, TASK_KILLED, etc.). However, reusing task IDs
+ * is strongly discouraged (MESOS-2198).
+ */
+message TaskID {
+  required string value = 1;
+}
+
+
+/**
+ * A framework-generated ID to distinguish an executor. Only one
+ * executor with the same ID can be active on the same agent at a
+ * time. However, reusing executor IDs is discouraged.
+ */
+message ExecutorID {
+  required string value = 1;
+}
+
+
+/**
+ * ID used to uniquely identify a container. If the `parent` is not
+ * specified, the ID is a UUID generated by the agent to uniquely
+ * identify the container of an executor run. If the `parent` field is
+ * specified, it represents a nested container.
+ */
+message ContainerID {
+  required string value = 1;
+  optional ContainerID parent = 2;
+}
+
+
+/**
+ * A unique ID assigned to a resource provider. Currently, a resource
+ * provider gets a new ID whenever it (re)registers with Mesos.
+ */
+message ResourceProviderID {
+  required string value = 1;
+}
+
+
+/**
+ * Represents time since the epoch, in nanoseconds.
+ */
+message TimeInfo {
+  required int64 nanoseconds = 1;
+}
+
+
+/**
+ * Represents duration in nanoseconds.
+ */
+message DurationInfo {
+  required int64 nanoseconds = 1;
+}
+
+
+/**
+ * A network address.
+ *
+ * TODO(bmahler): Use this more widely.
+ */
+message Address {
+  // May contain a hostname, IP address, or both.
+  optional string hostname = 1;
+  optional string ip = 2;
+
+  required int32 port = 3;
+}
+
+
+/**
+ * Represents a URL.
+ */
+message URL {
+  required string scheme = 1;
+  required Address address = 2;
+  optional string path = 3;
+  repeated Parameter query = 4;
+  optional string fragment = 5;
+}
+
+
+/**
+ * Represents an interval, from a given start time over a given duration.
+ * This interval pertains to an unavailability event, such as maintenance,
+ * and is not a generic interval.
+ */
+message Unavailability {
+  required TimeInfo start = 1;
+
+  // When added to `start`, this represents the end of the interval.
+  // If unspecified, the duration is assumed to be infinite.
+  optional DurationInfo duration = 2;
+
+  // TODO(josephw): Add additional fields for expressing the purpose and
+  // urgency of the unavailability event.
+}
+
+
+/**
+ * Represents a single machine, which may hold one or more agents.
+ *
+ * NOTE: In order to match an agent to a machine, both the `hostname` and
+ * `ip` must match the values advertised by the agent to the master.
+ * Hostname is not case-sensitive.
+ */
+message MachineID {
+  optional string hostname = 1;
+  optional string ip = 2;
+}
+
+
+/**
+ * Holds information about a single machine, its `mode`, and any other
+ * relevant information which may affect the behavior of the machine.
+ */
+message MachineInfo {
+  // Describes the several states that a machine can be in.  A `Mode`
+  // applies to a machine and to all associated agents on the machine.
+  enum Mode {
+    // In this mode, a machine is behaving normally;
+    // offering resources, executing tasks, etc.
+    UP = 1;
+
+    // In this mode, all agents on the machine are expected to cooperate with
+    // frameworks to drain resources.  In general, draining is done ahead of
+    // a pending `unavailability`.  The resources should be drained so as to
+    // maximize utilization prior to the maintenance but without knowingly
+    // violating the frameworks' requirements.
+    DRAINING = 2;
+
+    // In this mode, a machine is not running any tasks and will not offer
+    // any of its resources.  Agents on the machine will not be allowed to
+    // register with the master.
+    DOWN = 3;
+  }
+
+  required MachineID id = 1;
+  optional Mode mode = 2;
+
+  // Signifies that the machine may be unavailable during the given interval.
+  // See comments in `Unavailability` and for the `unavailability` fields
+  // in `Offer` and `InverseOffer` for more information.
+  optional Unavailability unavailability = 3;
+}
+
+
+/**
+ * Describes a framework.
+ */
+message FrameworkInfo {
+  // Used to determine the Unix user that an executor or task should be
+  // launched as.
+  //
+  // When using the MesosSchedulerDriver, if the field is set to an
+  // empty string, it will automagically set it to the current user.
+  //
+  // When using the HTTP Scheduler API, the user has to be set
+  // explicitly.
+  required string user = 1;
+
+  // Name of the framework that shows up in the Mesos Web UI.
+  required string name = 2;
+
+  // Note that 'id' is only available after a framework has
+  // registered, however, it is included here in order to facilitate
+  // scheduler failover (i.e., if it is set then the
+  // MesosSchedulerDriver expects the scheduler is performing
+  // failover).
+  optional FrameworkID id = 3;
+
+  // The amount of time (in seconds) that the master will wait for the
+  // scheduler to failover before it tears down the framework by
+  // killing all its tasks/executors. This should be non-zero if a
+  // framework expects to reconnect after a failure and not lose its
+  // tasks/executors.
+  //
+  // NOTE: To avoid accidental destruction of tasks, production
+  // frameworks typically set this to a large value (e.g., 1 week).
+  optional double failover_timeout = 4 [default = 0.0];
+
+  // If set, agents running tasks started by this framework will write
+  // the framework pid, executor pids and status updates to disk. If
+  // the agent exits (e.g., due to a crash or as part of upgrading
+  // Mesos), this checkpointed data allows the restarted agent to
+  // reconnect to executors that were started by the old instance of
+  // the agent. Enabling checkpointing improves fault tolerance, at
+  // the cost of a (usually small) increase in disk I/O.
+  optional bool checkpoint = 5 [default = false];
+
+  // Roles are the entities to which allocations are made.
+  // The framework must have at least one role in order to
+  // be offered resources. Note that `role` is deprecated
+  // in favor of `roles` and only one of these fields must
+  // be used. Since we cannot distinguish between empty
+  // `roles` and the default unset `role`, we require that
+  // frameworks set the `MULTI_ROLE` capability if
+  // setting the `roles` field.
+  optional string role = 6 [default = "*", deprecated=true];
+  repeated string roles = 12;
+
+  // Used to indicate the current host from which the scheduler is
+  // registered in the Mesos Web UI. If set to an empty string Mesos
+  // will automagically set it to the current hostname if one is
+  // available.
+  optional string hostname = 7;
+
+  // This field should match the credential's principal the framework
+  // uses for authentication. This field is used for framework API
+  // rate limiting and dynamic reservations. It should be set even
+  // if authentication is not enabled if these features are desired.
+  optional string principal = 8;
+
+  // This field allows a framework to advertise its web UI, so that
+  // the Mesos web UI can link to it. It is expected to be a full URL,
+  // for example http://my-scheduler.example.com:8080/.
+  optional string webui_url = 9;
+
+  message Capability {
+    enum Type {
+      // This must be the first enum value in this list, to
+      // ensure that if 'type' is not set, the default value
+      // is UNKNOWN. This enables enum values to be added
+      // in a backwards-compatible way. See: MESOS-4997.
+      UNKNOWN = 0;
+
+      // Receive offers with revocable resources. See 'Resource'
+      // message for details.
+      REVOCABLE_RESOURCES = 1;
+
+      // Receive the TASK_KILLING TaskState when a task is being
+      // killed by an executor. The executor will examine this
+      // capability to determine whether it can send TASK_KILLING.
+      TASK_KILLING_STATE = 2;
+
+      // Indicates whether the framework is aware of GPU resources.
+      // Frameworks that are aware of GPU resources are expected to
+      // avoid placing non-GPU workloads on GPU agents, in order
+      // to avoid occupying a GPU agent and preventing GPU workloads
+      // from running! Currently, if a framework is unaware of GPU
+      // resources, it will not be offered *any* of the resources on
+      // an agent with GPUs. This restriction is in place because we
+      // do not have a revocation mechanism that ensures GPU workloads
+      // can evict GPU agent occupants if necessary.
+      //
+      // TODO(bmahler): As we add revocation we can relax the
+      // restriction here. See MESOS-5634 for more information.
+      GPU_RESOURCES = 3;
+
+      // Receive offers with resources that are shared.
+      SHARED_RESOURCES = 4;
+
+      // Indicates that (1) the framework is prepared to handle the
+      // following TaskStates: TASK_UNREACHABLE, TASK_DROPPED,
+      // TASK_GONE, TASK_GONE_BY_OPERATOR, and TASK_UNKNOWN, and (2)
+      // the framework will assume responsibility for managing
+      // partitioned tasks that reregister with the master.
+      //
+      // Frameworks that enable this capability can define how they
+      // would like to handle partitioned tasks. Frameworks will
+      // receive TASK_UNREACHABLE for tasks on agents that are
+      // partitioned from the master. If/when a partitioned agent
+      // reregisters, tasks on the agent that were started by
+      // PARTITION_AWARE frameworks will not killed.
+      //
+      // Without this capability, frameworks will receive TASK_LOST
+      // for tasks on partitioned agents; such tasks will be killed by
+      // Mesos when the agent reregisters (unless the master has
+      // failed over).
+      PARTITION_AWARE = 5;
+
+      // This expresses the ability for the framework to be
+      // "multi-tenant" via using the newly introduced `roles`
+      // field, and examining `Offer.allocation_info` to determine
+      // which role the offers are being made to. We also
+      // expect that "single-tenant" schedulers eventually
+      // provide this and move away from the deprecated
+      // `role` field.
+      MULTI_ROLE = 6;
+
+      // This capability has two effects for a framework.
+      //
+      // (1) The framework is offered resources in a new format.
+      //
+      //     The offered resources have the `Resource.reservations` field set
+      //     rather than `Resource.role` and `Resource.reservation`. In short,
+      //     an empty `reservations` field denotes unreserved resources, and
+      //     each `ReservationInfo` in the `reservations` field denotes a
+      //     reservation that refines the previous one.
+      //
+      //     See the 'Resource Format' section for more details.
+      //
+      // (2) The framework can create refined reservations.
+      //
+      //     A framework can refine an existing reservation via the
+      //     `Resource.reservations` field. For example, a reservation for role
+      //     `eng` can be refined to `eng/front_end`.
+      //
+      //     See `ReservationInfo.reservations` for more details.
+      //
+      // NOTE: Without this capability, a framework is not offered resources
+      // that have refined reservations. A resource is said to have refined
+      // reservations if it uses the `Resource.reservations` field, and
+      // `Resource.reservations_size() > 1`.
+      RESERVATION_REFINEMENT = 7; // EXPERIMENTAL.
+
+      // Indicates that the framework is prepared to receive offers
+      // for agents whose region is different from the master's
+      // region. Network links between hosts in different regions
+      // typically have higher latency and lower bandwidth than
+      // network links within a region, so frameworks should be
+      // careful to only place suitable workloads in remote regions.
+      // Frameworks that are not region-aware will never receive
+      // offers for remote agents; region-aware frameworks are assumed
+      // to implement their own logic to decide which workloads (if
+      // any) are suitable for placement on remote agents.
+      REGION_AWARE = 8;
+    }
+
+    // Enum fields should be optional, see: MESOS-4997.
+    optional Type type = 1;
+  }
+
+  // This field allows a framework to advertise its set of
+  // capabilities (e.g., ability to receive offers for revocable
+  // resources).
+  repeated Capability capabilities = 10;
+
+  // Labels are free-form key value pairs supplied by the framework
+  // scheduler (e.g., to describe additional functionality offered by
+  // the framework). These labels are not interpreted by Mesos itself.
+  // Labels should not contain duplicate key-value pairs.
+  optional Labels labels = 11;
+}
+
+
+/**
+ * Describes a general non-interpreting non-killing check for a task or
+ * executor (or any arbitrary process/command). A type is picked by
+ * specifying one of the optional fields. Specifying more than one type
+ * is an error.
+ *
+ * NOTE: This API is unstable and the related feature is experimental.
+ */
+message CheckInfo {
+  enum Type {
+    UNKNOWN = 0;
+    COMMAND = 1;
+    HTTP = 2;
+    TCP = 3;
+
+    // TODO(alexr): Consider supporting custom user checks. They should
+    // probably be paired with a `data` field and complemented by a
+    // `data` response in `CheckStatusInfo`.
+  }
+
+  // Describes a command check. If applicable, enters mount and/or network
+  // namespaces of the task.
+  message Command {
+    required CommandInfo command = 1;
+  }
+
+  // Describes an HTTP check. Sends a GET request to
+  // http://<host>:port/path. Note that <host> is not configurable and is
+  // resolved automatically to 127.0.0.1.
+  message Http {
+    // Port to send the HTTP request.
+    required uint32 port = 1;
+
+    // HTTP request path.
+    optional string path = 2;
+
+    // TODO(alexr): Add support for HTTP method. While adding POST
+    // and PUT is simple, supporting payload is more involved.
+
+    // TODO(alexr): Add support for custom HTTP headers.
+
+    // TODO(alexr): Consider adding an optional message to describe TLS
+    // options and thus enabling https. Such message might contain certificate
+    // validation, TLS version.
+  }
+
+  // Describes a TCP check, i.e. based on establishing a TCP connection to
+  // the specified port. Note that <host> is not configurable and is resolved
+  // automatically to 127.0.0.1.
+  message Tcp {
+    required uint32 port = 1;
+  }
+
+  // The type of the check.
+  optional Type type = 1;
+
+  // Command check.
+  optional Command command = 2;
+
+  // HTTP check.
+  optional Http http = 3;
+
+  // TCP check.
+  optional Tcp tcp = 7;
+
+  // Amount of time to wait to start checking the task after it
+  // transitions to `TASK_RUNNING` or `TASK_STARTING` if the latter
+  // is used by the executor.
+  optional double delay_seconds = 4 [default = 15.0];
+
+  // Interval between check attempts, i.e., amount of time to wait after
+  // the previous check finished or timed out to start the next check.
+  optional double interval_seconds = 5 [default = 10.0];
+
+  // Amount of time to wait for the check to complete. Zero means infinite
+  // timeout.
+  //
+  // After this timeout, the check attempt is aborted and no result is
+  // reported. Note that this may be considered a state change and hence
+  // may trigger a check status change delivery to the corresponding
+  // scheduler. See `CheckStatusInfo` for more details.
+  optional double timeout_seconds = 6 [default = 20.0];
+}
+
+
+/**
+ * Describes a health check for a task or executor (or any arbitrary
+ * process/command). A type is picked by specifying one of the
+ * optional fields. Specifying more than one type is an error.
+ */
+message HealthCheck {
+  enum Type {
+    UNKNOWN = 0;
+    COMMAND = 1;
+    HTTP = 2;
+    TCP = 3;
+  }
+
+  // Describes an HTTP health check. Sends a GET request to
+  // scheme://<host>:port/path. Note that <host> is not configurable and is
+  // resolved automatically, in most cases to 127.0.0.1. Default executors
+  // treat return codes between 200 and 399 as success; custom executors
+  // may employ a different strategy, e.g. leveraging the `statuses` field.
+  message HTTPCheckInfo {
+    // Currently "http" and "https" are supported.
+    optional string scheme = 3;
+
+    // Port to send the HTTP request.
+    required uint32 port = 1;
+
+    // HTTP request path.
+    optional string path = 2;
+
+    // TODO(alexr): Add support for HTTP method. While adding POST
+    // and PUT is simple, supporting payload is more involved.
+
+    // TODO(alexr): Add support for custom HTTP headers.
+
+    // TODO(alexr): Add support for success and possibly failure
+    // statuses.
+
+    // NOTE: It is up to the custom executor to interpret and act on this
+    // field. Setting this field has no effect on the default executors.
+    //
+    // TODO(haosdent): Deprecate this field when we add better support for
+    // success and possibly failure statuses, e.g. ranges of success and
+    // failure statuses.
+    repeated uint32 statuses = 4;
+
+    // TODO(haosdent): Consider adding a flag to enable task's certificate
+    // validation for HTTPS health checks, see MESOS-5997.
+
+    // TODO(benh): Include an 'optional bytes data' field for checking
+    // for specific data in the response.
+  }
+
+  // Describes a TCP health check, i.e. based on establishing
+  // a TCP connection to the specified port.
+  message TCPCheckInfo {
+    // Port expected to be open.
+    required uint32 port = 1;
+  }
+
+  // TODO(benh): Consider adding a URL health check strategy which
+  // allows doing something similar to the HTTP strategy but
+  // encapsulates all the details in a single string field.
+
+  // Amount of time to wait to start health checking the task after it
+  // transitions to `TASK_RUNNING` or `TASK_STATING` if the latter is
+  // used by the executor.
+  optional double delay_seconds = 2 [default = 15.0];
+
+  // Interval between health checks, i.e., amount of time to wait after
+  // the previous health check finished or timed out to start the next
+  // health check.
+  optional double interval_seconds = 3 [default = 10.0];
+
+  // Amount of time to wait for the health check to complete. After this
+  // timeout, the health check is aborted and treated as a failure. Zero
+  // means infinite timeout.
+  optional double timeout_seconds = 4 [default = 20.0];
+
+  // Number of consecutive failures until the task is killed by the executor.
+  optional uint32 consecutive_failures = 5 [default = 3];
+
+  // Amount of time after the task is launched during which health check
+  // failures are ignored. Once a check succeeds for the first time,
+  // the grace period does not apply anymore. Note that it includes
+  // `delay_seconds`, i.e., setting `grace_period_seconds` < `delay_seconds`
+  // has no effect.
+  optional double grace_period_seconds = 6 [default = 10.0];
+
+  // TODO(alexr): Add an optional `KillPolicy` that should be used
+  // if the task is killed because of a health check failure.
+
+  // The type of health check.
+  optional Type type = 8;
+
+  // Command health check.
+  optional CommandInfo command = 7;
+
+  // HTTP health check.
+  optional HTTPCheckInfo http = 1;
+
+  // TCP health check.
+  optional TCPCheckInfo tcp = 9;
+}
+
+
+/**
+ * Describes a kill policy for a task. Currently does not express
+ * different policies (e.g. hitting HTTP endpoints), only controls
+ * how long to wait between graceful and forcible task kill:
+ *
+ *     graceful kill --------------> forcible kill
+ *                    grace_period
+ *
+ * Kill policies are best-effort, because machine failures / forcible
+ * terminations may occur.
+ *
+ * NOTE: For executor-less command-based tasks, the kill is performed
+ * via sending a signal to the task process: SIGTERM for the graceful
+ * kill and SIGKILL for the forcible kill. For the docker executor-less
+ * tasks the grace period is passed to 'docker stop --time'.
+ */
+message KillPolicy {
+  // The grace period specifies how long to wait before forcibly
+  // killing the task. It is recommended to attempt to gracefully
+  // kill the task (and send TASK_KILLING) to indicate that the
+  // graceful kill is in progress. Once the grace period elapses,
+  // if the task has not terminated, a forcible kill should occur.
+  // The task should not assume that it will always be allotted
+  // the full grace period. For example, the executor may be
+  // shutdown more quickly by the agent, or failures / forcible
+  // terminations may occur.
+  optional DurationInfo grace_period = 1;
+}
+
+
+/**
+ * Describes a command, executed via: '/bin/sh -c value'. Any URIs specified
+ * are fetched before executing the command.  If the executable field for an
+ * uri is set, executable file permission is set on the downloaded file.
+ * Otherwise, if the downloaded file has a recognized archive extension
+ * (currently [compressed] tar and zip) it is extracted into the executor's
+ * working directory. This extraction can be disabled by setting `extract` to
+ * false. In addition, any environment variables are set before executing
+ * the command (so they can be used to "parameterize" your command).
+ */
+message CommandInfo {
+  message URI {
+    required string value = 1;
+    optional bool executable = 2;
+
+    // In case the fetched file is recognized as an archive, extract
+    // its contents into the sandbox. Note that a cached archive is
+    // not copied from the cache to the sandbox in case extraction
+    // originates from an archive in the cache.
+    optional bool extract = 3 [default = true];
+
+    // If this field is "true", the fetcher cache will be used. If not,
+    // fetching bypasses the cache and downloads directly into the
+    // sandbox directory, no matter whether a suitable cache file is
+    // available or not. The former directs the fetcher to download to
+    // the file cache, then copy from there to the sandbox. Subsequent
+    // fetch attempts with the same URI will omit downloading and copy
+    // from the cache as long as the file is resident there. Cache files
+    // may get evicted at any time, which then leads to renewed
+    // downloading. See also "docs/fetcher.md" and
+    // "docs/fetcher-cache-internals.md".
+    optional bool cache = 4;
+
+    // The fetcher's default behavior is to use the URI string's basename to
+    // name the local copy. If this field is provided, the local copy will be
+    // named with its value instead. If there is a directory component (which
+    // must be a relative path), the local copy will be stored in that
+    // subdirectory inside the sandbox.
+    optional string output_file = 5;
+  }
+
+  repeated URI uris = 1;
+
+  optional Environment environment = 2;
+
+  // There are two ways to specify the command:
+  // 1) If 'shell == true', the command will be launched via shell
+  //		(i.e., /bin/sh -c 'value'). The 'value' specified will be
+  //		treated as the shell command. The 'arguments' will be ignored.
+  // 2) If 'shell == false', the command will be launched by passing
+  //		arguments to an executable. The 'value' specified will be
+  //		treated as the filename of the executable. The 'arguments'
+  //		will be treated as the arguments to the executable. This is
+  //		similar to how POSIX exec families launch processes (i.e.,
+  //		execlp(value, arguments(0), arguments(1), ...)).
+  // NOTE: The field 'value' is changed from 'required' to 'optional'
+  // in 0.20.0. It will only cause issues if a new framework is
+  // connecting to an old master.
+  optional bool shell = 6 [default = true];
+  optional string value = 3;
+  repeated string arguments = 7;
+
+  // Enables executor and tasks to run as a specific user. If the user
+  // field is present both in FrameworkInfo and here, the CommandInfo
+  // user value takes precedence.
+  optional string user = 5;
+}
+
+
+/**
+ * Describes information about an executor.
+ */
+message ExecutorInfo {
+  enum Type {
+    UNKNOWN = 0;
+
+    // Mesos provides a simple built-in default executor that frameworks can
+    // leverage to run shell commands and containers.
+    //
+    // NOTES:
+    //
+    // 1) `command` must not be set when using a default executor.
+    //
+    // 2) Default executor only accepts a *single* `LAUNCH` or `LAUNCH_GROUP`
+    //    offer operation.
+    //
+    // 3) If `container` is set, `container.type` must be `MESOS`
+    //    and `container.mesos.image` must not be set.
+    DEFAULT = 1;
+
+    // For frameworks that need custom functionality to run tasks, a `CUSTOM`
+    // executor can be used. Note that `command` must be set when using a
+    // `CUSTOM` executor.
+    CUSTOM = 2;
+  }
+
+  // For backwards compatibility, if this field is not set when using `LAUNCH`
+  // offer operation, Mesos will infer the type by checking if `command` is
+  // set (`CUSTOM`) or unset (`DEFAULT`). `type` must be set when using
+  // `LAUNCH_GROUP` offer operation.
+  //
+  // TODO(vinod): Add support for explicitly setting `type` to `DEFAULT `
+  // in `LAUNCH` offer operation.
+  optional Type type = 15;
+
+  required ExecutorID executor_id = 1;
+  optional FrameworkID framework_id = 8; // TODO(benh): Make this required.
+  optional CommandInfo command = 7;
+
+  // Executor provided with a container will launch the container
+  // with the executor's CommandInfo and we expect the container to
+  // act as a Mesos executor.
+  optional ContainerInfo container = 11;
+
+  repeated Resource resources = 5;
+  optional string name = 9;
+
+  // 'source' is an identifier style string used by frameworks to
+  // track the source of an executor. This is useful when it's
+  // possible for different executor ids to be related semantically.
+  //
+  // NOTE: 'source' is exposed alongside the resource usage of the
+  // executor via JSON on the agent. This allows users to import usage
+  // information into a time series database for monitoring.
+  //
+  // This field is deprecated since 1.0. Please use labels for
+  // free-form metadata instead.
+  optional string source = 10 [deprecated = true]; // Since 1.0.
+
+  // This field can be used to pass arbitrary bytes to an executor.
+  optional bytes data = 4;
+
+  // Service discovery information for the executor. It is not
+  // interpreted or acted upon by Mesos. It is up to a service
+  // discovery system to use this information as needed and to handle
+  // executors without service discovery information.
+  optional DiscoveryInfo discovery = 12;
+
+  // When shutting down an executor the agent will wait in a
+  // best-effort manner for the grace period specified here
+  // before forcibly destroying the container. The executor
+  // must not assume that it will always be allotted the full
+  // grace period, as the agent may decide to allot a shorter
+  // period and failures / forcible terminations may occur.
+  optional DurationInfo shutdown_grace_period = 13;
+
+  // Labels are free-form key value pairs which are exposed through
+  // master and agent endpoints. Labels will not be interpreted or
+  // acted upon by Mesos itself. As opposed to the data field, labels
+  // will be kept in memory on master and agent processes. Therefore,
+  // labels should be used to tag executors with lightweight metadata.
+  // Labels should not contain duplicate key-value pairs.
+  optional Labels labels = 14;
+}
+
+
+/**
+ * Describes a domain. A domain is a collection of hosts that have
+ * similar characteristics. Mesos currently only supports "fault
+ * domains", which identify groups of hosts with similar failure
+ * characteristics.
+ *
+ * Frameworks can generally assume that network links between hosts in
+ * the same fault domain have lower latency, higher bandwidth, and better
+ * availability than network links between hosts in different domains.
+ * Schedulers may prefer to place network-intensive workloads in the
+ * same domain, as this may improve performance. Conversely, a single
+ * failure that affects a host in a domain may be more likely to
+ * affect other hosts in the same domain; hence, schedulers may prefer
+ * to place workloads that require high availability in multiple
+ * domains. (For example, all the hosts in a single rack might lose
+ * power or network connectivity simultaneously.)
+ *
+ * There are two kinds of fault domains: regions and zones. Regions
+ * offer the highest degree of fault isolation, but network latency
+ * between regions is typically high (typically >50 ms). Zones offer a
+ * modest degree of fault isolation along with reasonably low network
+ * latency (typically <10 ms).
+ *
+ * The mapping from fault domains to physical infrastructure is up to
+ * the operator to configure. In cloud environments, regions and zones
+ * can be mapped to the "region" and "availability zone" concepts
+ * exposed by most cloud providers, respectively. In on-premise
+ * deployments, regions and zones can be mapped to data centers and
+ * racks, respectively.
+ *
+ * Both masters and agents can be configured with domains. Frameworks
+ * can compare the domains of two hosts to determine if the hosts are
+ * in the same zone, in different zones in the same region, or in
+ * different regions. Note that all masters in a given Mesos cluster
+ * must be in the same region.
+ */
+message DomainInfo {
+  message FaultDomain {
+    message RegionInfo {
+      required string name = 1;
+    }
+
+    message ZoneInfo {
+      required string name = 1;
+    }
+
+    required RegionInfo region = 1;
+    required ZoneInfo zone = 2;
+  }
+
+  optional FaultDomain fault_domain = 1;
+}
+
+
+/**
+ * Describes a master. This will probably have more fields in the
+ * future which might be used, for example, to link a framework webui
+ * to a master webui.
+ */
+message MasterInfo {
+  required string id = 1;
+
+  // The IP address (only IPv4) as a packed 4-bytes integer,
+  // stored in network order.  Deprecated, use `address.ip` instead.
+  required uint32 ip = 2;
+
+  // The TCP port the Master is listening on for incoming
+  // HTTP requests; deprecated, use `address.port` instead.
+  required uint32 port = 3 [default = 5050];
+
+  // In the default implementation, this will contain information
+  // about both the IP address, port and Master name; it should really
+  // not be relied upon by external tooling/frameworks and be
+  // considered an "internal" implementation field.
+  optional string pid = 4;
+
+  // The server's hostname, if available; it may be unreliable
+  // in environments where the DNS configuration does not resolve
+  // internal hostnames (eg, some public cloud providers).
+  // Deprecated, use `address.hostname` instead.
+  optional string hostname = 5;
+
+  // The running Master version, as a string; taken from the
+  // generated "master/version.hpp".
+  optional string version = 6;
+
+  // The full IP address (supports both IPv4 and IPv6 formats)
+  // and supersedes the use of `ip`, `port` and `hostname`.
+  // Since Mesos 0.24.
+  optional Address address = 7;
+
+  // The domain that this master belongs to. All masters in a Mesos
+  // cluster should belong to the same region.
+  optional DomainInfo domain = 8;
+}
+
+
+/**
+ * Describes an agent. Note that the 'id' field is only available
+ * after an agent is registered with the master, and is made available
+ * here to facilitate re-registration.
+ */
+message AgentInfo {
+  required string hostname = 1;
+  optional int32 port = 8 [default = 5051];
+
+  // The configured resources at the agent. This does not include any
+  // dynamic reservations or persistent volumes that may currently
+  // exist at the agent.
+  repeated Resource resources = 3;
+
+  repeated Attribute attributes = 5;
+  optional AgentID id = 6;
+
+  // The domain that this agent belongs to. If the agent's region
+  // differs from the master's region, it will not appear in resource
+  // offers to frameworks that have not enabled the REGION_AWARE
+  // capability.
+  optional DomainInfo domain = 10;
+
+  message Capability {
+    enum Type {
+      // This must be the first enum value in this list, to
+      // ensure that if 'type' is not set, the default value
+      // is UNKNOWN. This enables enum values to be added
+      // in a backwards-compatible way. See: MESOS-4997.
+      UNKNOWN = 0;
+
+      // This expresses the ability for the agent to be able
+      // to launch tasks of a 'multi-role' framework.
+      MULTI_ROLE = 1;
+
+      // This expresses the ability for the agent to be able to launch
+      // tasks, reserve resources, and create volumes using resources
+      // allocated to a 'hierarchical-role'.
+      // NOTE: This capability is required specifically for creating
+      // volumes because a hierchical role includes '/' (slashes) in them.
+      // Agents with this capability know to transform the '/' (slashes)
+      // into ' ' (spaces).
+      HIERARCHICAL_ROLE = 2;
+
+      // This capability has three effects for an agent.
+      //
+      // (1) The format of the checkpointed resources, and
+      //     the resources reported to master.
+      //
+      //     These resources are reported in the "pre-reservation-refinement"
+      //     format if none of the resources have refined reservations. If any
+      //     of the resources have refined reservations, they are reported in
+      //     the "post-reservation-refinement" format. The purpose is to allow
+      //     downgrading of an agent as well as communication with a pre-1.4.0
+      //     master until the reservation refinement feature is actually used.
+      //
+      //     See the 'Resource Format' section for more details.
+      //
+      // (2) The format of the resources reported by the HTTP endpoints.
+      //
+      //     For resources reported by agent endpoints, the
+      //     "pre-reservation-refinement" format is "injected" if possible.
+      //     That is, resources without refined reservations will have the
+      //     `Resource.role` and `Resource.reservation` set, whereas
+      //     resources with refined reservations will not.
+      //
+      //     See the 'Resource Format' section for more details.
+      //
+      // (3) The ability for the agent to launch tasks, reserve resources, and
+      //     create volumes using resources that have refined reservations.
+      //
+      //     See `ReservationInfo.reservations` section for more details.
+      //
+      // NOTE: Resources are said to have refined reservations if it uses the
+      // `Resource.reservations` field, and `Resource.reservations_size() > 1`.
+      RESERVATION_REFINEMENT = 3;
+    }
+
+    // Enum fields should be optional, see: MESOS-4997.
+    optional Type type = 1;
+  }
+}
+
+
+/**
+ * Describes a resource provider. Note that the 'id' field is only available
+ * after a resource provider is registered with the master, and is made
+ * available here to facilitate re-registration.
+ */
+message ResourceProviderInfo {
+  optional ResourceProviderID id = 1;
+  repeated Attribute attributes = 2;
+
+  // The type of the resource provider. This uniquely identifies a
+  // resource provider implementation. For instance:
+  //     org.apache.mesos.rp.local.storage
+  //
+  // Please follow to Java package naming convention
+  // (https://en.wikipedia.org/wiki/Java_package#Package_naming_conventions)
+  // to avoid conflicts on type names.
+  required string type = 3;
+
+  // The name of the resource provider. There could be multiple
+  // instances of a type of resource provider. The name field is used
+  // to distinguish these instances.
+  required string name = 4;
+}
+
+
+/**
+ * Describes an Attribute or Resource "value". A value is described
+ * using the standard protocol buffer "union" trick.
+ */
+message Value {
+  enum Type {
+    SCALAR = 0;
+    RANGES = 1;
+    SET = 2;
+    TEXT = 3;
+  }
+
+  message Scalar {
+    // Scalar values are represented using floating point. To reduce
+    // the chance of unpredictable floating point behavior due to
+    // roundoff error, Mesos only supports three decimal digits of
+    // precision for scalar resource values. That is, floating point
+    // values are converted to a fixed point format that supports
+    // three decimal digits of precision, and then converted back to
+    // floating point on output. Any additional precision in scalar
+    // resource values is discarded (via rounding).
+    required double value = 1;
+  }
+
+  message Range {
+    required uint64 begin = 1;
+    required uint64 end = 2;
+  }
+
+  message Ranges {
+    repeated Range range = 1;
+  }
+
+  message Set {
+    repeated string item = 1;
+  }
+
+  message Text {
+    required string value = 1;
+  }
+
+  required Type type = 1;
+  optional Scalar scalar = 2;
+  optional Ranges ranges = 3;
+  optional Set set = 4;
+  optional Text text = 5;
+}
+
+
+/**
+ * Describes an attribute that can be set on a machine. For now,
+ * attributes and resources share the same "value" type, but this may
+ * change in the future and attributes may only be string based.
+ */
+message Attribute {
+  required string name = 1;
+  required Value.Type type = 2;
+  optional Value.Scalar scalar = 3;
+  optional Value.Ranges ranges = 4;
+  optional Value.Set set = 6;
+  optional Value.Text text = 5;
+}
+
+
+/**
+ * Describes a resource from a resource provider. The `name` field is
+ * a string like "cpus" or "mem" that indicates which kind of resource
+ * this is; the rest of the fields describe the properties of the
+ * resource. A resource can take on one of three types: scalar
+ * (double), a list of finite and discrete ranges (e.g., [1-10,
+ * 20-30]), or a set of items. A resource is described using the
+ * standard protocol buffer "union" trick.
+ *
+ * Note that "disk" and "mem" resources are scalar values expressed in
+ * megabytes. Fractional "cpus" values are allowed (e.g., "0.5"),
+ * which correspond to partial shares of a CPU.
+ */
+message Resource {
+  optional ResourceProviderID provider_id = 12;
+
+  required string name = 1;
+  required Value.Type type = 2;
+  optional Value.Scalar scalar = 3;
+  optional Value.Ranges ranges = 4;
+  optional Value.Set set = 5;
+
+  // The role that this resource is reserved for. If "*", this indicates
+  // that the resource is unreserved. Otherwise, the resource will only
+  // be offered to frameworks that belong to this role.
+  //
+  // NOTE: Frameworks must not set this field if `reservations` is set.
+  //       See the 'Resource Format' section for more details.
+  //
+  // TODO(mpark): Deprecate once `reservations` is no longer experimental.
+  optional string role = 6 [default = "*", deprecated=true];
+
+  // This was initially introduced to support MULTI_ROLE capable
+  // frameworks. Frameworks that are not MULTI_ROLE capable can
+  // continue to assume that the offered resources are allocated
+  // to their role.
+  message AllocationInfo {
+    // If set, this resource is allocated to a role. Note that in the
+    // future, this may be unset and the scheduler may be responsible
+    // for allocating to one of its roles.
+    optional string role = 1;
+
+    // In the future, we may add additional fields here, e.g. priority
+    // tier, type of allocation (quota / fair share).
+  }
+
+  optional AllocationInfo allocation_info = 11;
+
+  // Resource Format:
+  //
+  // Frameworks receive resource offers in one of two formats, depending on
+  // whether the RESERVATION_REFINEMENT capability is enabled.
+  //
+  // __WITHOUT__ the RESERVATION_REFINEMENT capability, the framework is offered
+  // resources in the "pre-reservation-refinement" format. In this format, the
+  // `Resource.role` and `Resource.reservation` fields are used in conjunction
+  // to describe the reservation state of a `Resource` message.
+  //
+  // The following is an overview of the possible reservation states:
+  //
+  // +------------+------------------------------------------------------------+
+  // | unreserved | {                                                          |
+  // |            |   role: "*",                                               |
+  // |            |   reservation: <not set>,                                  |
+  // |            |   reservations: <unused>                                   |
+  // |            | }                                                          |
+  // +------------+------------------------------------------------------------+
+  // | static     | {                                                          |
+  // |            |   role: "eng",                                             |
+  // |            |   reservation: <not set>,                                  |
+  // |            |   reservations: <unused>                                   |
+  // |            | }                                                          |
+  // +------------+------------------------------------------------------------+
+  // | dynamic    | {                                                          |
+  // |            |   role: "eng",                                             |
+  // |            |   reservation: {                                           |
+  // |            |     type: <unused>,                                        |
+  // |            |     role: <unused>,                                        |
+  // |            |     principal: <optional>,                                 |
+  // |            |     labels: <optional>                                     |
+  // |            |   },                                                       |
+  // |            |   reservations: <unused>                                   |
+  // |            | }                                                          |
+  // +------------+------------------------------------------------------------+
+  //
+  // __WITH__ the RESERVATION_REFINEMENT capability, the framework is offered
+  // resources in the "post-reservation-refinement" format. In this format, the
+  // reservation state of a `Resource` message is expressed solely in
+  // `Resource.reservations` field.
+  //
+  // The following is an overview of the possible reservation states:
+  //
+  // +------------+------------------------------------------------------------+
+  // | unreserved | {                                                          |
+  // |            |   role: <unused>,                                          |
+  // |            |   reservation: <unused>,                                   |
+  // |            |   reservations: []                                         |
+  // |            | }                                                          |
+  // +------------+------------------------------------------------------------+
+  // | static     | {                                                          |
+  // |            |   role: <unused>,                                          |
+  // |            |   reservation: <unused>,                                   |
+  // |            |   reservations: [                                          |
+  // |            |     {                                                      |
+  // |            |       type: STATIC,                                        |
+  // |            |       role: "eng",                                         |
+  // |            |       principal: <optional>,                               |
+  // |            |       labels: <optional>                                   |
+  // |            |     }                                                      |
+  // |            |   ]                                                        |
+  // |            | }                                                          |
+  // +------------+------------------------------------------------------------+
+  // | dynamic    | {                                                          |
+  // |            |   role: <unused>,                                          |
+  // |            |   reservation: <unused>,                                   |
+  // |            |   reservations: [                                          |
+  // |            |     {                                                      |
+  // |            |       type: DYNAMIC,                                       |
+  // |            |       role: "eng",                                         |
+  // |            |       principal: <optional>,                               |
+  // |            |       labels: <optional>                                   |
+  // |            |     }                                                      |
+  // |            |   ]                                                        |
+  // |            | }                                                          |
+  // +------------+------------------------------------------------------------+
+  //
+  // We can also __refine__ reservations with this capability like so:
+  //
+  // +------------+------------------------------------------------------------+
+  // | refined    | {                                                          |
+  // |            |   role: <unused>,                                          |
+  // |            |   reservation: <unused>,                                   |
+  // |            |   reservations: [                                          |
+  // |            |     {                                                      |
+  // |            |       type: STATIC or DYNAMIC,                             |
+  // |            |       role: "eng",                                         |
+  // |            |       principal: <optional>,                               |
+  // |            |       labels: <optional>                                   |
+  // |            |     },                                                     |
+  // |            |     {                                                      |
+  // |            |       type: DYNAMIC,                                       |
+  // |            |       role: "eng/front_end",                               |
+  // |            |       principal: <optional>,                               |
+  // |            |       labels: <optional>                                   |
+  // |            |     }                                                      |
+  // |            |   ]                                                        |
+  // |            | }                                                          |
+  // +------------+------------------------------------------------------------+
+  //
+  // NOTE: Each `ReservationInfo` in the `reservations` field denotes
+  //       a reservation that refines the previous `ReservationInfo`.
+
+  message ReservationInfo {
+    // TODO(mpark): Explain the two resource formats.
+
+    // Describes a reservation. A static reservation is set by the operator on
+    // the command-line and they are immutable without agent restart. A dynamic
+    // reservation is acquired by an operator via the '/reserve' HTTP endpoint
+    // or by a framework via the offer cycle by sending back an
+    // 'Offer::Operation::Reserve' message.
+    // NOTE: We currently do not allow frameworks with role "*" to make dynamic
+    // reservations.
+
+    enum Type {
+      UNKNOWN = 0;
+      STATIC = 1;
+      DYNAMIC = 2;
+    }
+
+    // The type of this reservation.
+    // NOTE: This field must not be set for `Resource.reservation`.
+    optional Type type = 4;
+
+    // The role to which this reservation is made for.
+    // NOTE: This field must not be set for `Resource.reservation`.
+    optional string role = 3;
+
+    // Indicates the principal, if any, of the framework or operator
+    // that reserved this resource. If reserved by a framework, the
+    // field should match the `FrameworkInfo.principal`. It is used in
+    // conjunction with the `UnreserveResources` ACL to determine
+    // whether the entity attempting to unreserve this resource is
+    // permitted to do so.
+    optional string principal = 1;
+
+    // Labels are free-form key value pairs that can be used to
+    // associate arbitrary metadata with a reserved resource.  For
+    // example, frameworks can use labels to identify the intended
+    // purpose for a portion of the resources the framework has
+    // reserved at a given agent. Labels should not contain duplicate
+    // key-value pairs.
+    optional Labels labels = 2;
+  }
+
+  // If this is set, this resource was dynamically reserved by an
+  // operator or a framework. Otherwise, this resource is either unreserved
+  // or statically reserved by an operator via the --resources flag.
+  // NOTE: Frameworks must not set this field if `reservations` is set.
+  optional ReservationInfo reservation = 8;
+
+  // The stack of reservations. If this field is empty, it indicates that this
+  // resource is unreserved. Otherwise, the resource is reserved. The first
+  // `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+  // have `DYNAMIC`. One can create a new reservation on top of an existing
+  // one by pushing a new `ReservationInfo` to the back. The last
+  // `ReservationInfo` in this stack is the "current" reservation. The new
+  // reservation's role must be a child of the current reservation's role.
+  // NOTE: Frameworks must not set this field if `reservation` is set.
+  repeated ReservationInfo reservations = 13;  // EXPERIMENTAL.
+
+  message DiskInfo {
+    // Describes a persistent disk volume.
+    //
+    // A persistent disk volume will not be automatically garbage
+    // collected if the task/executor/agent terminates, but will be
+    // re-offered to the framework(s) belonging to the 'role'.
+    //
+    // NOTE: Currently, we do not allow persistent disk volumes
+    // without a reservation (i.e., 'role' cannot be '*').
+    message Persistence {
+      // A unique ID for the persistent disk volume. This ID must be
+      // unique per role on each agent. Although it is possible to use
+      // the same ID on different agents in the cluster and to reuse
+      // IDs after a volume with that ID has been destroyed, both
+      // practices are discouraged.
+      required string id = 1;
+
+      // This field indicates the principal of the operator or
+      // framework that created this volume. It is used in conjunction
+      // with the "destroy" ACL to determine whether an entity
+      // attempting to destroy the volume is permitted to do so.
+      //
+      // NOTE: This field should match the FrameworkInfo.principal of
+      // the framework that created the volume.
+      optional string principal = 2;
+    }
+
+    optional Persistence persistence = 1;
+
+    // Describes how this disk resource will be mounted in the
+    // container. If not set, the disk resource will be used as the
+    // sandbox. Otherwise, it will be mounted according to the
+    // 'container_path' inside 'volume'. The 'host_path' inside
+    // 'volume' is ignored.
+    // NOTE: If 'volume' is set but 'persistence' is not set, the
+    // volume will be automatically garbage collected after
+    // task/executor terminates. Currently, if 'persistence' is set,
+    // 'volume' must be set.
+    optional Volume volume = 2;
+
+    // Describes where a disk originates from.
+    // TODO(jmlvanre): Add support for BLOCK devices.
+    message Source {
+      enum Type {
+        UNKNOWN = 0;
+        PATH = 1;
+        MOUNT = 2;
+      }
+
+      // A folder that can be located on a separate disk device. This
+      // can be shared and carved up as necessary between frameworks.
+      message Path {
+        // Path to the folder (e.g., /mnt/raid/disk0).
+        optional string root = 1;
+      }
+
+      // A mounted file-system set up by the Agent administrator. This
+      // can only be used exclusively: a framework cannot accept a
+      // partial amount of this disk.
+      message Mount {
+        // Path to mount point (e.g., /mnt/raid/disk0).
+        optional string root = 1;
+      }
+
+      required Type type = 1;
+      optional Path path = 2;
+      optional Mount mount = 3;
+    }
+
+    optional Source source = 3;
+  }
+
+  optional DiskInfo disk = 7;
+
+  message RevocableInfo {}
+
+  // If this is set, the resources are revocable, i.e., any tasks or
+  // executors launched using these resources could get preempted or
+  // throttled at any time. This could be used by frameworks to run
+  // best effort tasks that do not need strict uptime or performance
+  // guarantees. Note that if this is set, 'disk' or 'reservation'
+  // cannot be set.
+  optional RevocableInfo revocable = 9;
+
+  // Allow the resource to be shared across tasks.
+  message SharedInfo {}
+
+  // If this is set, the resources are shared, i.e. multiple tasks
+  // can be launched using this resource and all of them shall refer
+  // to the same physical resource on the cluster. Note that only
+  // persistent volumes can be shared currently.
+  optional SharedInfo shared = 10;
+}
+
+
+/**
+ * When the network bandwidth caps are enabled and the container
+ * is over its limit, outbound packets may be either delayed or
+ * dropped completely either because it exceeds the maximum bandwidth
+ * allocation for a single container (the cap) or because the combined
+ * network traffic of multiple containers on the host exceeds the
+ * transmit capacity of the host (the share). We can report the
+ * following statistics for each of these conditions exported directly
+ * from the Linux Traffic Control Queueing Discipline.
+ *
+ * id         : name of the limiter, e.g. 'tx_bw_cap'
+ * backlog    : number of packets currently delayed
+ * bytes      : total bytes seen
+ * drops      : number of packets dropped in total
+ * overlimits : number of packets which exceeded allocation
+ * packets    : total packets seen
+ * qlen       : number of packets currently queued
+ * rate_bps   : throughput in bytes/sec
+ * rate_pps   : throughput in packets/sec
+ * requeues   : number of times a packet has been delayed due to
+ *              locking or device contention issues
+ *
+ * More information on the operation of Linux Traffic Control can be
+ * found at http://www.lartc.org/lartc.html.
+ */
+message TrafficControlStatistics {
+  required string id = 1;
+  optional uint64 backlog = 2;
+  optional uint64 bytes = 3;
+  optional uint64 drops = 4;
+  optional uint64 overlimits = 5;
+  optional uint64 packets = 6;
+  optional uint64 qlen = 7;
+  optional uint64 ratebps = 8;
+  optional uint64 ratepps = 9;
+  optional uint64 requeues = 10;
+}
+
+
+message IpStatistics {
+  optional int64 Forwarding = 1;
+  optional int64 DefaultTTL = 2;
+  optional int64 InReceives = 3;
+  optional int64 InHdrErrors = 4;
+  optional int64 InAddrErrors = 5;
+  optional int64 ForwDatagrams = 6;
+  optional int64 InUnknownProtos = 7;
+  optional int64 InDiscards = 8;
+  optional int64 InDelivers = 9;
+  optional int64 OutRequests = 10;
+  optional int64 OutDiscards = 11;
+  optional int64 OutNoRoutes = 12;
+  optional int64 ReasmTimeout = 13;
+  optional int64 ReasmReqds = 14;
+  optional int64 ReasmOKs = 15;
+  optional int64 ReasmFails = 16;
+  optional int64 FragOKs = 17;
+  optional int64 FragFails = 18;
+  optional int64 FragCreates = 19;
+}
+
+
+message IcmpStatistics {
+  optional int64 InMsgs = 1;
+  optional int64 InErrors = 2;
+  optional int64 InCsumErrors = 3;
+  optional int64 InDestUnreachs = 4;
+  optional int64 InTimeExcds = 5;
+  optional int64 InParmProbs = 6;
+  optional int64 InSrcQuenchs = 7;
+  optional int64 InRedirects = 8;
+  optional int64 InEchos = 9;
+  optional int64 InEchoReps = 10;
+  optional int64 InTimestamps = 11;
+  optional int64 InTimestampReps = 12;
+  optional int64 InAddrMasks = 13;
+  optional int64 InAddrMaskReps = 14;
+  optional int64 OutMsgs = 15;
+  optional int64 OutErrors = 16;
+  optional int64 OutDestUnreachs = 17;
+  optional int64 OutTimeExcds = 18;
+  optional int64 OutParmProbs = 19;
+  optional int64 OutSrcQuenchs = 20;
+  optional int64 OutRedirects = 21;
+  optional int64 OutEchos = 22;
+  optional int64 OutEchoReps = 23;
+  optional int64 OutTimestamps = 24;
+  optional int64 OutTimestampReps = 25;
+  optional int64 OutAddrMasks = 26;
+  optional int64 OutAddrMaskReps = 27;
+}
+
+
+message TcpStatistics {
+  optional int64 RtoAlgorithm = 1;
+  optional int64 RtoMin = 2;
+  optional int64 RtoMax = 3;
+  optional int64 MaxConn = 4;
+  optional int64 ActiveOpens = 5;
+  optional int64 PassiveOpens = 6;
+  optional int64 AttemptFails = 7;
+  optional int64 EstabResets = 8;
+  optional int64 CurrEstab = 9;
+  optional int64 InSegs = 10;
+  optional int64 OutSegs = 11;
+  optional int64 RetransSegs = 12;
+  optional int64 InErrs = 13;
+  optional int64 OutRsts = 14;
+  optional int64 InCsumErrors = 15;
+}
+
+
+message UdpStatistics {
+  optional int64 InDatagrams = 1;
+  optional int64 NoPorts = 2;
+  optional int64 InErrors = 3;
+  optional int64 OutDatagrams = 4;
+  optional int64 RcvbufErrors = 5;
+  optional int64 SndbufErrors = 6;
+  optional int64 InCsumErrors = 7;
+  optional int64 IgnoredMulti = 8;
+}
+
+
+message SNMPStatistics {
+  optional IpStatistics ip_stats = 1;
+  optional IcmpStatistics icmp_stats = 2;
+  optional TcpStatistics tcp_stats = 3;
+  optional UdpStatistics udp_stats = 4;
+}
+
+
+message DiskStatistics {
+  optional Resource.DiskInfo.Source source = 1;
+  optional Resource.DiskInfo.Persistence persistence = 2;
+  optional uint64 limit_bytes = 3;
+  optional uint64 used_bytes = 4;
+}
+
+
+/**
+ * A snapshot of resource usage statistics.
+ */
+message ResourceStatistics {
+  required double timestamp = 1; // Snapshot time, in seconds since the Epoch.
+
+  optional uint32 processes = 30;
+  optional uint32 threads = 31;
+
+  // CPU Usage Information:
+  // Total CPU time spent in user mode, and kernel mode.
+  optional double cpus_user_time_secs = 2;
+  optional double cpus_system_time_secs = 3;
+
+  // Number of CPUs allocated.
+  optional double cpus_limit = 4;
+
+  // cpu.stat on process throttling (for contention issues).
+  optional uint32 cpus_nr_periods = 7;
+  optional uint32 cpus_nr_throttled = 8;
+  optional double cpus_throttled_time_secs = 9;
+
+  // Memory Usage Information:
+
+  // mem_total_bytes was added in 0.23.0 to represent the total memory
+  // of a process in RAM (as opposed to in Swap). This was previously
+  // reported as mem_rss_bytes, which was also changed in 0.23.0 to
+  // represent only the anonymous memory usage, to keep in sync with
+  // Linux kernel's (arguably erroneous) use of terminology.
+  optional uint64 mem_total_bytes = 36;
+
+  // Total memory + swap usage. This is set if swap is enabled.
+  optional uint64 mem_total_memsw_bytes = 37;
+
+  // Hard memory limit for a container.
+  optional uint64 mem_limit_bytes = 6;
+
+  // Soft memory limit for a container.
+  optional uint64 mem_soft_limit_bytes = 38;
+
+  // Broken out memory usage information: pagecache, rss (anonymous),
+  // mmaped files and swap.
+
+  // TODO(chzhcn) mem_file_bytes and mem_anon_bytes are deprecated in
+  // 0.23.0 and will be removed in 0.24.0.
+  optional uint64 mem_file_bytes = 10;
+  optional uint64 mem_anon_bytes = 11;
+
+  // mem_cache_bytes is added in 0.23.0 to represent page cache usage.
+  optional uint64 mem_cache_bytes = 39;
+
+  // Since 0.23.0, mem_rss_bytes is changed to represent only
+  // anonymous memory usage. Note that neither its requiredness, type,
+  // name nor numeric tag has been changed.
+  optional uint64 mem_rss_bytes = 5;
+
+  optional uint64 mem_mapped_file_bytes = 12;
+  // This is only set if swap is enabled.
+  optional uint64 mem_swap_bytes = 40;
+  optional uint64 mem_unevictable_bytes = 41;
+
+  // Number of occurrences of different levels of memory pressure
+  // events reported by memory cgroup. Pressure listening (re)starts
+  // with these values set to 0 when agent (re)starts. See
+  // https://www.kernel.org/doc/Documentation/cgroups/memory.txt for
+  // more details.
+  optional uint64 mem_low_pressure_counter = 32;
+  optional uint64 mem_medium_pressure_counter = 33;
+  optional uint64 mem_critical_pressure_counter = 34;
+
+  // Disk Usage Information for executor working directory.
+  optional uint64 disk_limit_bytes = 26;
+  optional uint64 disk_used_bytes = 27;
+
+  // Per disk (resource) statistics.
+  repeated DiskStatistics disk_statistics = 43;
+
+  // Cgroups blkio statistics.
+  optional CgroupInfo.Blkio.Statistics blkio_statistics = 44;
+
+  // Perf statistics.
+  optional PerfStatistics perf = 13;
+
+  // Network Usage Information:
+  optional uint64 net_rx_packets = 14;
+  optional uint64 net_rx_bytes = 15;
+  optional uint64 net_rx_errors = 16;
+  optional uint64 net_rx_dropped = 17;
+  optional uint64 net_tx_packets = 18;
+  optional uint64 net_tx_bytes = 19;
+  optional uint64 net_tx_errors = 20;
+  optional uint64 net_tx_dropped = 21;
+
+  // The kernel keeps track of RTT (round-trip time) for its TCP
+  // sockets. RTT is a way to tell the latency of a container.
+  optional double net_tcp_rtt_microsecs_p50 = 22;
+  optional double net_tcp_rtt_microsecs_p90 = 23;
+  optional double net_tcp_rtt_microsecs_p95 = 24;
+  optional double net_tcp_rtt_microsecs_p99 = 25;
+
+  optional double net_tcp_active_connections = 28;
+  optional double net_tcp_time_wait_connections = 29;
+
+  // Network traffic flowing into or out of a container can be delayed
+  // or dropped due to congestion or policy inside and outside the
+  // container.
+  repeated TrafficControlStatistics net_traffic_control_statistics = 35;
+
+  // Network SNMP statistics for each container.
+  optional SNMPStatistics net_snmp_statistics = 42;
+}
+
+
+/**
+ * Describes a snapshot of the resource usage for executors.
+ */
+message ResourceUsage {
+  message Executor {
+    required ExecutorInfo executor_info = 1;
+
+    // This includes resources used by the executor itself
+    // as well as its active tasks.
+    repeated Resource allocated = 2;
+
+    // Current resource usage. If absent, the containerizer
+    // cannot provide resource usage.
+    optional ResourceStatistics statistics = 3;
+
+    // The container id for the executor specified in the executor_info field.
+    required ContainerID container_id = 4;
+
+    message Task {
+      required string name = 1;
+      required TaskID id = 2;
+      repeated Resource resources = 3;
+      optional Labels labels = 4;
+    }
+
+    // Non-terminal tasks.
+    repeated Task tasks = 5;
+  }
+
+  repeated Executor executors = 1;
+
+  // Agent's total resources including checkpointed dynamic
+  // reservations and persistent volumes.
+  repeated Resource total = 2;
+}
+
+
+/**
+ * Describes a sample of events from "perf stat". Only available on
+ * Linux.
+ *
+ * NOTE: Each optional field matches the name of a perf event (see
+ * "perf list") with the following changes:
+ * 1. Names are downcased.
+ * 2. Hyphens ('-') are replaced with underscores ('_').
+ * 3. Events with alternate names use the name "perf stat" returns,
+ *    e.g., for the event "cycles OR cpu-cycles" perf always returns
+ *    cycles.
+ */
+message PerfStatistics {
+  required double timestamp = 1; // Start of sample interval, in seconds since the Epoch.
+  required double duration = 2;  // Duration of sample interval, in seconds.
+
+  // Hardware event.
+  optional uint64 cycles = 3;
+  optional uint64 stalled_cycles_frontend = 4;
+  optional uint64 stalled_cycles_backend = 5;
+  optional uint64 instructions = 6;
+  optional uint64 cache_references = 7;
+  optional uint64 cache_misses = 8;
+  optional uint64 branches = 9;
+  optional uint64 branch_misses = 10;
+  optional uint64 bus_cycles = 11;
+  optional uint64 ref_cycles = 12;
+
+  // Software event.
+  optional double cpu_clock = 13;
+  optional double task_clock = 14;
+  optional uint64 page_faults = 15;
+  optional uint64 minor_faults = 16;
+  optional uint64 major_faults = 17;
+  optional uint64 context_switches = 18;
+  optional uint64 cpu_migrations = 19;
+  optional uint64 alignment_faults = 20;
+  optional uint64 emulation_faults = 21;
+
+  // Hardware cache event.
+  optional uint64 l1_dcache_loads = 22;
+  optional uint64 l1_dcache_load_misses = 23;
+  optional uint64 l1_dcache_stores = 24;
+  optional uint64 l1_dcache_store_misses = 25;
+  optional uint64 l1_dcache_prefetches = 26;
+  optional uint64 l1_dcache_prefetch_misses = 27;
+  optional uint64 l1_icache_loads = 28;
+  optional uint64 l1_icache_load_misses = 29;
+  optional uint64 l1_icache_prefetches = 30;
+  optional uint64 l1_icache_prefetch_misses = 31;
+  optional uint64 llc_loads = 32;
+  optional uint64 llc_load_misses = 33;
+  optional uint64 llc_stores = 34;
+  optional uint64 llc_store_misses = 35;
+  optional uint64 llc_prefetches = 36;
+  optional uint64 llc_prefetch_misses = 37;
+  optional uint64 dtlb_loads = 38;
+  optional uint64 dtlb_load_misses = 39;
+  optional uint64 dtlb_stores = 40;
+  optional uint64 dtlb_store_misses = 41;
+  optional uint64 dtlb_prefetches = 42;
+  optional uint64 dtlb_prefetch_misses = 43;
+  optional uint64 itlb_loads = 44;
+  optional uint64 itlb_load_misses = 45;
+  optional uint64 branch_loads = 46;
+  optional uint64 branch_load_misses = 47;
+  optional uint64 node_loads = 48;
+  optional uint64 node_load_misses = 49;
+  optional uint64 node_stores = 50;
+  optional uint64 node_store_misses = 51;
+  optional uint64 node_prefetches = 52;
+  optional uint64 node_prefetch_misses = 53;
+}
+
+
+/**
+ * Describes a request for resources that can be used by a framework
+ * to proactively influence the allocator.  If 'agent_id' is provided
+ * then this request is assumed to only apply to resources on that
+ * agent.
+ */
+message Request {
+  optional AgentID agent_id = 1;
+  repeated Resource resources = 2;
+}
+
+
+/**
+ * Describes some resources available on an agent. An offer only
+ * contains resources from a single agent.
+ */
+message Offer {
+  required OfferID id = 1;
+  required FrameworkID framework_id = 2;
+  required AgentID agent_id = 3;
+  required string hostname = 4;
+
+  // URL for reaching the agent running on the host.
+  optional URL url = 8;
+
+  // The domain of the agent.
+  optional DomainInfo domain = 11;
+
+  repeated Resource resources = 5;
+  repeated Attribute attributes = 7;
+  repeated ExecutorID executor_ids = 6;
+
+  // Signifies that the resources in this Offer may be unavailable during
+  // the given interval.  Any tasks launched using these resources may be
+  // killed when the interval arrives.  For example, these resources may be
+  // part of a planned maintenance schedule.
+  //
+  // This field only provides information about a planned unavailability.
+  // The unavailability interval may not necessarily start at exactly this
+  // interval, nor last for exactly the duration of this interval.
+  // The unavailability may also be forever!  See comments in
+  // `Unavailability` for more details.
+  optional Unavailability unavailability = 9;
+
+  // An offer represents resources allocated to *one* of the
+  // roles managed by the scheduler. (Therefore, each
+  // `Offer.resources[i].allocation_info` will match the
+  // top level `Offer.allocation_info`).
+  optional Resource.AllocationInfo allocation_info = 10;
+
+  // Defines an operation that can be performed against offers.
+  message Operation {
+    enum Type {
+      UNKNOWN = 0;
+      LAUNCH = 1;
+      LAUNCH_GROUP = 6;
+      RESERVE = 2;
+      UNRESERVE = 3;
+      CREATE = 4;
+      DESTROY = 5;
+    }
+
+    // TODO(vinod): Deprecate this in favor of `LaunchGroup` below.
+    message Launch {
+      repeated TaskInfo task_infos = 1;
+    }
+
+    // Unlike `Launch` above, all the tasks in a `task_group` are
+    // atomically delivered to an executor.
+    //
+    // `NetworkInfo` set on executor will be shared by all tasks in
+    // the task group.
+    //
+    // TODO(vinod): Any volumes set on executor could be used by a
+    // task by explicitly setting `Volume.source` in its resources.
+    message LaunchGroup {
+      required ExecutorInfo executor = 1;
+      required TaskGroupInfo task_group = 2;
+    }
+
+    message Reserve {
+      repeated Resource resources = 1;
+    }
+
+    message Unreserve {
+      repeated Resource resources = 1;
+    }
+
+    message Create {
+      repeated Resource volumes = 1;
+    }
+
+    message Destroy {
+      repeated Resource volumes = 1;
+    }
+
+    optional Type type = 1;
+    optional Launch launch = 2;
+    optional LaunchGroup launch_group = 7;
+    optional Reserve reserve = 3;
+    optional Unreserve unreserve = 4;
+    optional Create create = 5;
+    optional Destroy destroy = 6;
+  }
+}
+
+
+/**
+ * A request to return some resources occupied by a framework.
+ */
+message InverseOffer {
+  // This is the same OfferID as found in normal offers, which allows
+  // re-use of some of the OfferID-only messages.
+  required OfferID id = 1;
+
+  // URL for reaching the agent running on the host.  This enables some
+  // optimizations as described in MESOS-3012, such as allowing the
+  // scheduler driver to bypass the master and talk directly with an agent.
+  optional URL url = 2;
+
+  // The framework that should release its resources.
+  // If no specifics are provided (i.e. which agent), all the framework's
+  // resources are requested back.
+  required FrameworkID framework_id = 3;
+
+  // Specified if the resources need to be released from a particular agent.
+  // All the framework's resources on this agent are requested back,
+  // unless further qualified by the `resources` field.
+  optional AgentID agent_id = 4;
+
+  // This InverseOffer represents a planned unavailability event in the
+  // specified interval.  Any tasks running on the given framework or agent
+  // may be killed when the interval arrives.  Therefore, frameworks should
+  // aim to gracefully terminate tasks prior to the arrival of the interval.
+  //
+  // For reserved resources, the resources are expected to be returned to the
+  // framework after the unavailability interval.  This is an expectation,
+  // not a guarantee.  For example, if the unavailability duration is not set,
+  // the resources may be removed permanently.
+  //
+  // For other resources, there is no guarantee that requested resources will
+  // be returned after the unavailability interval.  The allocator has no
+  // obligation to re-offer these resources to the prior framework after
+  // the unavailability.
+  required Unavailability unavailability = 5;
+
+  // A list of resources being requested back from the framework,
+  // on the agent identified by `agent_id`.  If no resources are specified
+  // then all resources are being requested back.  For the purpose of
+  // maintenance, this field is always empty (maintenance always requests
+  // all resources back).
+  repeated Resource resources = 6;
+
+  // TODO(josephw): Add additional options for narrowing down the resources
+  // being requested back.  Such as specific executors, tasks, etc.
+}
+
+
+/**
+ * Describes a task. Passed from the scheduler all the way to an
+ * executor (see SchedulerDriver::launchTasks and
+ * Executor::launchTask). Either ExecutorInfo or CommandInfo should be set.
+ * A different executor can be used to launch this task, and subsequent tasks
+ * meant for the same executor can reuse the same ExecutorInfo struct.
+ */
+message TaskInfo {
+  required string name = 1;
+  required TaskID task_id = 2;
+  required AgentID agent_id = 3;
+  repeated Resource resources = 4;
+  optional ExecutorInfo executor = 5;
+  optional CommandInfo command = 7;
+
+  // Task provided with a container will launch the container as part
+  // of this task paired with the task's CommandInfo.
+  optional ContainerInfo container = 9;
+
+  // A health check for the task. Implemented for executor-less
+  // command-based tasks. For tasks that specify an executor, it is
+  // the executor's responsibility to implement the health checking.
+  optional HealthCheck health_check = 8;
+
+  // A general check for the task. Implemented for all built-in executors.
+  // For tasks that specify an executor, it is the executor's responsibility
+  // to implement checking support. Executors should (all built-in executors
+  // will) neither interpret nor act on the check's result.
+  //
+  // NOTE: Check support in built-in executors is experimental.
+  //
+  // TODO(alexr): Consider supporting multiple checks per task.
+  optional CheckInfo check = 13;
+
+  // A kill policy for the task. Implemented for executor-less
+  // command-based and docker tasks. For tasks that specify an
+  // executor, it is the executor's responsibility to implement
+  // the kill policy.
+  optional KillPolicy kill_policy = 12;
+
+  optional bytes data = 6;
+
+  // Labels are free-form key value pairs which are exposed through
+  // master and agent endpoints. Labels will not be interpreted or
+  // acted upon by Mesos itself. As opposed to the data field, labels
+  // will be kept in memory on master and agent processes. Therefore,
+  // labels should be used to tag tasks with light-weight meta-data.
+  // Labels should not contain duplicate key-value pairs.
+  optional Labels labels = 10;
+
+  // Service discovery information for the task. It is not interpreted
+  // or acted upon by Mesos. It is up to a service discovery system
+  // to use this information as needed and to handle tasks without
+  // service discovery information.
+  optional DiscoveryInfo discovery = 11;
+}
+
+
+/**
+ * Describes a group of tasks that belong to an executor. The
+ * executor will receive the task group in a single message to
+ * allow the group to be launched "atomically".
+ *
+ * NOTES:
+ * 1) `NetworkInfo` must not be set inside task's `ContainerInfo`.
+ * 2) `TaskInfo.executor` doesn't need to set. If set, it should match
+ *    `LaunchGroup.executor`.
+ */
+message TaskGroupInfo {
+  repeated TaskInfo tasks = 1;
+}
+
+
+// TODO(bmahler): Add executor_uuid here, and send it to the master. This will
+// allow us to expose executor work directories for tasks in the webui when
+// looking from the master level. Currently only the agent knows which run the
+// task belongs to.
+/**
+ * Describes a task, similar to `TaskInfo`.
+ *
+ * `Task` is used in some of the Mesos messages found below.
+ * `Task` is used instead of `TaskInfo` if:
+ *   1) we need additional IDs, such as a specific
+ *      framework, executor, or agent; or
+ *   2) we do not need the additional data, such as the command run by the
+ *      task or the health checks.  These additional fields may be large and
+ *      unnecessary for some Mesos messages.
+ *
+ * `Task` is generally constructed from a `TaskInfo`.  See protobuf::createTask.
+ */
+message Task {
+  required string name = 1;
+  required TaskID task_id = 2;
+  required FrameworkID framework_id = 3;
+  optional ExecutorID executor_id = 4;
+  required AgentID agent_id = 5;
+  required TaskState state = 6; // Latest state of the task.
+  repeated Resource resources = 7;
+  repeated TaskStatus statuses = 8;
+
+  // These fields correspond to the state and uuid of the latest
+  // status update forwarded to the master.
+  // NOTE: Either both the fields must be set or both must be unset.
+  optional TaskState status_update_state = 9;
+  optional bytes status_update_uuid = 10;
+
+  optional Labels labels = 11;
+
+  // Service discovery information for the task. It is not interpreted
+  // or acted upon by Mesos. It is up to a service discovery system
+  // to use this information as needed and to handle tasks without
+  // service discovery information.
+  optional DiscoveryInfo discovery = 12;
+
+  // Container information for the task.
+  optional ContainerInfo container = 13;
+
+  // Specific user under which task is running.
+  optional string user = 14;
+}
+
+
+/**
+ * Describes possible task states. IMPORTANT: Mesos assumes tasks that
+ * enter terminal states (see below) imply the task is no longer
+ * running and thus clean up any thing associated with the task
+ * (ultimately offering any resources being consumed by that task to
+ * another task).
+ */
+enum TaskState {
+  TASK_STAGING = 6;  // Initial state. Framework status updates should not use.
+  TASK_STARTING = 0; // The task is being launched by the executor.
+  TASK_RUNNING = 1;
+
+  // NOTE: This should only be sent when the framework has
+  // the TASK_KILLING_STATE capability.
+  TASK_KILLING = 8;  // The task is being killed by the executor.
+
+  TASK_FINISHED = 2; // TERMINAL: The task finished successfully.
+  TASK_FAILED = 3;   // TERMINAL: The task failed to finish successfully.
+  TASK_KILLED = 4;   // TERMINAL: The task was killed by the executor.
+  TASK_ERROR = 7;    // TERMINAL: The task description contains an error.
+
+  // In Mesos 1.3, this will only be sent when the framework does NOT
+  // opt-in to the PARTITION_AWARE capability.
+  //
+  // NOTE: This state is not always terminal. For example, tasks might
+  // transition from TASK_LOST to TASK_RUNNING or other states when a
+  // partitioned agent re-registers.
+  TASK_LOST = 5;     // The task failed but can be rescheduled.
+
+  // The following task states are only sent when the framework
+  // opts-in to the PARTITION_AWARE capability.
+
+  // The task failed to launch because of a transient error. The
+  // task's executor never started running. Unlike TASK_ERROR, the
+  // task description is valid -- attempting to launch the task again
+  // may be successful.
+  TASK_DROPPED = 9;  // TERMINAL.
+
+  // The task was running on an agent that has lost contact with the
+  // master, typically due to a network failure or partition. The task
+  // may or may not still be running.
+  TASK_UNREACHABLE = 10;
+
+  // The task is no longer running. This can occur if the agent has
+  // been terminated along with all of its tasks (e.g., the host that
+  // was running the agent was rebooted). It might also occur if the
+  // task was terminated due to an agent or containerizer error, or if
+  // the task was preempted by the QoS controller in an
+  // oversubscription scenario.
+  TASK_GONE = 11;    // TERMINAL.
+
+  // The task was running on an agent that the master cannot contact;
+  // the operator has asserted that the agent has been shutdown, but
+  // this has not been directly confirmed by the master. If the
+  // operator is correct, the task is not running and this is a
+  // terminal state; if the operator is mistaken, the task may still
+  // be running and might return to RUNNING in the future.
+  TASK_GONE_BY_OPERATOR = 12;
+
+  // The master has no knowledge of the task. This is typically
+  // because either (a) the master never had knowledge of the task, or
+  // (b) the master forgot about the task because it garbage collected
+  // its metadata about the task. The task may or may not still be
+  // running.
+  TASK_UNKNOWN = 13;
+}
+
+
+/**
+* Describes the status of a check. Type and the corresponding field, i.e.,
+* `command` or `http` must be set. If the result of the check is not available
+* (e.g., the check timed out), these fields must contain empty messages, i.e.,
+* `exit_code` or `status_code` will be unset.
+*
+* NOTE: This API is unstable and the related feature is experimental.
+*/
+message CheckStatusInfo {
+  message Command {
+    // Exit code of a command check. It is the result of calling
+    // `WEXITSTATUS()` on `waitpid()` termination information on
+    // Posix and calling `GetExitCodeProcess()` on Windows.
+    optional int32 exit_code = 1;
+  }
+
+  message Http {
+    // HTTP status code of an HTTP check.
+    optional uint32 status_code = 1;
+  }
+
+  message Tcp {
+    // Whether a TCP connection succeeded.
+    optional bool succeeded = 1;
+  }
+
+  // TODO(alexr): Consider adding a `data` field, which can contain, e.g.,
+  // truncated stdout/stderr output for command checks or HTTP response body
+  // for HTTP checks. Alternatively, it can be an even shorter `message` field
+  // containing the last line of stdout or Reason-Phrase of the status line of
+  // the HTTP response.
+
+  // The type of the check this status corresponds to.
+  optional CheckInfo.Type type = 1;
+
+  // Status of a command check.
+  optional Command command = 2;
+
+  // Status of an HTTP check.
+  optional Http http = 3;
+
+  // Status of a TCP check.
+  optional Tcp tcp = 4;
+
+  // TODO(alexr): Consider introducing a "last changed at" timestamp, since
+  // task status update's timestamp may not correspond to the last check's
+  // state, e.g., for reconciliation.
+
+  // TODO(alexr): Consider introducing a `reason` enum here to explicitly
+  // distinguish between completed, delayed, and timed out checks.
+}
+
+
+/**
+ * Describes the current status of a task.
+ */
+message TaskStatus {
+  // Describes the source of the task status update.
+  enum Source {
+    SOURCE_MASTER = 0;
+    SOURCE_AGENT = 1;
+    SOURCE_EXECUTOR = 2;
+  }
+
+  // Detailed reason for the task status update.
+  //
+  // TODO(bmahler): Differentiate between agent removal reasons
+  // (e.g. unhealthy vs. unregistered for maintenance).
+  enum Reason {
+    // TODO(jieyu): The default value when a caller doesn't check for
+    // presence is 0 and so ideally the 0 reason is not a valid one.
+    // Since this is not used anywhere, consider removing this reason.
+    REASON_COMMAND_EXECUTOR_FAILED = 0;
+
+    REASON_CONTAINER_LAUNCH_FAILED = 21;
+    REASON_CONTAINER_LIMITATION = 19;
+    REASON_CONTAINER_LIMITATION_DISK = 20;
+    REASON_CONTAINER_LIMITATION_MEMORY = 8;
+    REASON_CONTAINER_PREEMPTED = 17;
+    REASON_CONTAINER_UPDATE_FAILED = 22;
+    REASON_EXECUTOR_REGISTRATION_TIMEOUT = 23;
+    REASON_EXECUTOR_REREGISTRATION_TIMEOUT = 24;
+    REASON_EXECUTOR_TERMINATED = 1;
+    REASON_EXECUTOR_UNREGISTERED = 2; // No longer used.
+    REASON_FRAMEWORK_REMOVED = 3;
+    REASON_GC_ERROR = 4;
+    REASON_INVALID_FRAMEWORKID = 5;
+    REASON_INVALID_OFFERS = 6;
+    REASON_IO_SWITCHBOARD_EXITED = 27;
+    REASON_MASTER_DISCONNECTED = 7;
+    REASON_RECONCILIATION = 9;
+    REASON_RESOURCES_UNKNOWN = 18;
+    REASON_AGENT_DISCONNECTED = 10;
+    REASON_AGENT_REMOVED = 11;
+    REASON_AGENT_RESTARTED = 12;
+    REASON_AGENT_UNKNOWN = 13;
+    REASON_TASK_KILLED_DURING_LAUNCH = 30;
+    REASON_TASK_CHECK_STATUS_UPDATED = 28;
+    REASON_TASK_HEALTH_CHECK_STATUS_UPDATED = 29;
+    REASON_TASK_GROUP_INVALID = 25;
+    REASON_TASK_GROUP_UNAUTHORIZED = 26;
+    REASON_TASK_INVALID = 14;
+    REASON_TASK_UNAUTHORIZED = 15;
+    REASON_TASK_UNKNOWN = 16;
+  }
+
+  required TaskID task_id = 1;
+  required TaskState state = 2;
+  optional string message = 4; // Possible message explaining state.
+  optional Source source = 9;
+  optional Reason reason = 10;
+  optional bytes data = 3;
+  optional AgentID agent_id = 5;
+  optional ExecutorID executor_id = 7; // TODO(benh): Use in master/agent.
+  optional double timestamp = 6;
+
+  // Statuses that are delivered reliably to the scheduler will
+  // include a 'uuid'. The status is considered delivered once
+  // it is acknowledged by the scheduler. Schedulers can choose
+  // to either explicitly acknowledge statuses or let the scheduler
+  // driver implicitly acknowledge (default).
+  //
+  // TODO(bmahler): This is currently overwritten in the scheduler
+  // driver and executor driver, but executors will need to set this
+  // to a valid RFC-4122 UUID if using the HTTP API.
+  optional bytes uuid = 11;
+
+  // Describes whether the task has been determined to be healthy (true) or
+  // unhealthy (false) according to the `health_check` field in `TaskInfo`.
+  optional bool healthy = 8;
+
+  // Contains check status for the check specified in the corresponding
+  // `TaskInfo`. If no check has been specified, this field must be
+  // absent, otherwise it must be present even if the check status is
+  // not available yet. If the status update is triggered for a different
+  // reason than `REASON_TASK_CHECK_STATUS_UPDATED`, this field will contain
+  // the last known value.
+  //
+  // NOTE: A check-related task status update is triggered if and only if
+  // the value or presence of any field in `CheckStatusInfo` changes.
+  //
+  // NOTE: Check support in built-in executors is experimental.
+  optional CheckStatusInfo check_status = 15;
+
+  // Labels are free-form key value pairs which are exposed through
+  // master and agent endpoints. Labels will not be interpreted or
+  // acted upon by Mesos itself. As opposed to the data field, labels
+  // will be kept in memory on master and agent processes. Therefore,
+  // labels should be used to tag TaskStatus message with light-weight
+  // meta-data.  Labels should not contain duplicate key-value pairs.
+  optional Labels labels = 12;
+
+  // Container related information that is resolved dynamically such as
+  // network address.
+  optional ContainerStatus container_status = 13;
+
+  // The time (according to the master's clock) when the agent where
+  // this task was running became unreachable. This is only set on
+  // status updates for tasks running on agents that are unreachable
+  // (e.g., partitioned away from the master).
+  optional TimeInfo unreachable_time = 14;
+}
+
+
+/**
+ * Describes possible filters that can be applied to unused resources
+ * (see SchedulerDriver::launchTasks) to influence the allocator.
+ */
+message Filters {
+  // Time to consider unused resources refused. Note that all unused
+  // resources will be considered refused and use the default value
+  // (below) regardless of whether Filters was passed to
+  // SchedulerDriver::launchTasks. You MUST pass Filters with this
+  // field set to change this behavior (i.e., get another offer which
+  // includes unused resources sooner or later than the default).
+  optional double refuse_seconds = 1 [default = 5.0];
+}
+
+
+/**
+* Describes a collection of environment variables. This is used with
+* CommandInfo in order to set environment variables before running a
+* command. The contents of each variable may be specified as a string
+* or a Secret; only one of `value` and `secret` must be set.
+*/
+message Environment {
+  message Variable {
+    required string name = 1;
+
+    enum Type {
+      UNKNOWN = 0;
+      VALUE = 1;
+      SECRET = 2;
+    }
+
+    // In Mesos 1.2, the `Environment.variables.value` message was made
+    // optional. The default type for `Environment.variables.type` is now VALUE,
+    // which requires `value` to be set, maintaining backward compatibility.
+    //
+    // TODO(greggomann): The default can be removed in Mesos 2.1 (MESOS-7134).
+    optional Type type = 3 [default = VALUE];
+
+    // Only one of `value` and `secret` must be set.
+    optional string value = 2;
+    optional Secret secret = 4;
+  }
+
+  repeated Variable variables = 1;
+}
+
+
+/**
+ * A generic (key, value) pair used in various places for parameters.
+ */
+message Parameter {
+  required string key = 1;
+  required string value = 2;
+}
+
+
+/**
+ * Collection of Parameter.
+ */
+message Parameters {
+  repeated Parameter parameter = 1;
+}
+
+
+/**
+ * Credential used in various places for authentication and
+ * authorization.
+ *
+ * NOTE: A 'principal' is different from 'FrameworkInfo.user'. The
+ * former is used for authentication and authorization while the
+ * latter is used to determine the default user under which the
+ * framework's executors/tasks are run.
+ */
+message Credential {
+  required string principal = 1;
+  optional string secret = 2;
+}
+
+
+/**
+ * Credentials used for framework authentication, HTTP authentication
+ * (where the common 'username' and 'password' are captured as
+ * 'principal' and 'secret' respectively), etc.
+ */
+message Credentials {
+  repeated Credential credentials = 1;
+}
+
+
+/**
+ * Secret used to pass privileged information. It is designed to provide
+ * pass-by-value or pass-by-reference semantics, where the REFERENCE type can be
+ * used by custom modules which interact with a secure back-end.
+ */
+message Secret
+{
+  enum Type {
+    UNKNOWN = 0;
+    REFERENCE = 1;
+    VALUE = 2;
+  }
+
+  // Can be used by modules to refer to a secret stored in a secure back-end.
+  // The `key` field is provided to permit reference to a single value within a
+  // secret containing arbitrary key-value pairs.
+  //
+  // For example, given a back-end secret store with a secret named
+  // "my-secret" containing the following key-value pairs:
+  //
+  //   {
+  //     "username": "my-user",
+  //     "password": "my-password
+  //   }
+  //
+  // the username could be referred to in a `Secret` by specifying
+  // "my-secret" for the `name` and "username" for the `key`.
+  message Reference
+  {
+    required string name = 1;
+    optional string key = 2;
+  }
+
+  // Used to pass the value of a secret.
+  message Value
+  {
+    required bytes data = 1;
+  }
+
+  optional Type type = 1;
+
+  // Only one of `reference` and `value` must be set.
+  optional Reference reference = 2;
+  optional Value value = 3;
+}
+
+
+/**
+ * Rate (queries per second, QPS) limit for messages from a framework to master.
+ * Strictly speaking they are the combined rate from all frameworks of the same
+ * principal.
+ */
+message RateLimit {
+  // Leaving QPS unset gives it unlimited rate (i.e., not throttled),
+  // which also implies unlimited capacity.
+  optional double qps = 1;
+
+  // Principal of framework(s) to be throttled. Should match
+  // FrameworkInfo.principal and Credential.principal (if using authentication).
+  required string principal = 2;
+
+  // Max number of outstanding messages from frameworks of this principal
+  // allowed by master before the next message is dropped and an error is sent
+  // back to the sender. Messages received before the capacity is reached are
+  // still going to be processed after the error is sent.
+  // If unspecified, this principal is assigned unlimited capacity.
+  // NOTE: This value is ignored if 'qps' is not set.
+  optional uint64 capacity = 3;
+}
+
+
+/**
+ * Collection of RateLimit.
+ * Frameworks without rate limits defined here are not throttled unless
+ * 'aggregate_default_qps' is specified.
+ */
+message RateLimits {
+  // Items should have unique principals.
+  repeated RateLimit limits = 1;
+
+  // All the frameworks not specified in 'limits' get this default rate.
+  // This rate is an aggregate rate for all of them, i.e., their combined
+  // traffic is throttled together at this rate.
+  optional double aggregate_default_qps = 2;
+
+  // All the frameworks not specified in 'limits' get this default capacity.
+  // This is an aggregate value similar to 'aggregate_default_qps'.
+  optional uint64 aggregate_default_capacity = 3;
+}
+
+
+/**
+ * Describe an image used by tasks or executors. Note that it's only
+ * for tasks or executors launched by MesosContainerizer currently.
+ */
+message Image {
+  enum Type {
+    APPC = 1;
+    DOCKER = 2;
+  }
+
+  // Protobuf for specifying an Appc container image. See:
+  // https://github.com/appc/spec/blob/master/spec/aci.md
+  message Appc {
+    // The name of the image.
+    required string name = 1;
+
+    // An image ID is a string of the format "hash-value", where
+    // "hash" is the hash algorithm used and "value" is the hex
+    // encoded string of the digest. Currently the only permitted
+    // hash algorithm is sha512.
+    optional string id = 2;
+
+    // Optional labels. Suggested labels: "version", "os", and "arch".
+    optional Labels labels = 3;
+  }
+
+  message Docker {
+    // The name of the image. Expected format:
+    //   [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG|@TYPE:DIGEST]
+    //
+    // See: https://docs.docker.com/reference/commandline/pull/
+    required string name = 1;
+
+    // Credential to authenticate with docker registry.
+    // NOTE: This is not encrypted, therefore framework and operators
+    // should enable SSL when passing this information.
+    //
+    // This field has never been used in Mesos before and is
+    // deprecated since Mesos 1.3. Please use `config` below
+    // (see MESOS-7088 for details).
+    optional Credential credential = 2 [deprecated = true]; // Since 1.3.
+
+    // Docker config containing credentails to authenticate with
+    // docker registry. The secret is expected to be a docker
+    // config file in JSON format with UTF-8 character encoding.
+    optional Secret config = 3;
+  }
+
+  required Type type = 1;
+
+  // Only one of the following image messages should be set to match
+  // the type.
+  optional Appc appc = 2;
+  optional Docker docker = 3;
+
+  // With this flag set to false, the mesos containerizer will pull
+  // the docker/appc image from the registry even if the image is
+  // already downloaded on the agent.
+  optional bool cached = 4 [default = true];
+}
+
+
+/**
+ * Describes a volume mapping either from host to container or vice
+ * versa. Both paths can either refer to a directory or a file.
+ */
+message Volume {
+  enum Mode {
+    RW = 1; // read-write.
+    RO = 2; // read-only.
+  }
+
+  // TODO(gyliu513): Make this as `optional` after deprecation cycle of 1.0.
+  required Mode mode = 3;
+
+  // Path pointing to a directory or file in the container. If the
+  // path is a relative path, it is relative to the container work
+  // directory. If the path is an absolute path, that path must
+  // already exist.
+  required string container_path = 1;
+
+  // The following specifies the source of this volume. At most one of
+  // the following should be set.
+
+  // Absolute path pointing to a directory or file on the host or a
+  // path relative to the container work directory.
+  optional string host_path = 2;
+
+  // The source of the volume is an Image which describes a root
+  // filesystem which will be provisioned by Mesos.
+  optional Image image = 4;
+
+  // Describes where a volume originates from.
+  message Source {
+    enum Type {
+      // This must be the first enum value in this list, to
+      // ensure that if 'type' is not set, the default value
+      // is UNKNOWN. This enables enum values to be added
+      // in a backwards-compatible way. See: MESOS-4997.
+      UNKNOWN = 0;
+
+      // TODO(gyliu513): Add HOST_PATH and IMAGE as volume source type.
+      DOCKER_VOLUME = 1;
+      SANDBOX_PATH = 2;
+      SECRET = 3;
+    }
+
+    message DockerVolume {
+      // Driver of the volume, it can be flocker, convoy, raxrey etc.
+      optional string driver = 1;
+
+      // Name of the volume.
+      required string name = 2;
+
+      // Volume driver specific options.
+      optional Parameters driver_options = 3;
+    }
+
+    // Describe a path from a container's sandbox. The container can
+    // be the current container (SELF), or its parent container
+    // (PARENT). PARENT allows all child containers to share a volume
+    // from their parent container's sandbox. It'll be an error if
+    // the current container is a top level container.
+    message SandboxPath {
+      enum Type {
+        UNKNOWN = 0;
+        SELF = 1;
+        PARENT = 2;
+      }
+
+      optional Type type = 1;
+
+      // A path relative to the corresponding container's sandbox.
+      // Note that upwards traversal (i.e. ../../abc) is not allowed.
+      required string path = 2;
+    }
+
+    // Enum fields should be optional, see: MESOS-4997.
+    optional Type type = 1;
+
+    // The following specifies the source of this volume. At most one of
+    // the following should be set.
+
+    // The source of the volume created by docker volume driver.
+    optional DockerVolume docker_volume = 2;
+
+    optional SandboxPath sandbox_path = 3;
+
+    // The volume/secret isolator uses the secret-fetcher module (third-party or
+    // internal) downloads the secret and makes it available at container_path.
+    optional Secret secret = 4;
+  }
+
+  optional Source source = 5;
+}
+
+
+/**
+ * Describes a network request from a framework as well as network resolution
+ * provided by Mesos.
+ *
+ * A framework may request the network isolator on the Agent to isolate the
+ * container in a network namespace and create a virtual network interface.
+ * The `NetworkInfo` message describes the properties of that virtual
+ * interface, including the IP addresses and network isolation policy
+ * (network group membership).
+ *
+ * The NetworkInfo message is not interpreted by the Master or Agent and is
+ * intended to be used by Agent and Master modules implementing network
+ * isolation. If the modules are missing, the message is simply ignored. In
+ * future, the task launch will fail if there is no module providing the
+ * network isolation capabilities (MESOS-3390).
+ *
+ * An executor, Agent, or an Agent module may append NetworkInfos inside
+ * TaskStatus::container_status to provide information such as the container IP
+ * address and isolation groups.
+ */
+message NetworkInfo {
+  enum Protocol {
+    IPv4 = 1;
+    IPv6 = 2;
+  }
+
+  // Specifies a request for an IP address, or reports the assigned container
+  // IP address.
+  //
+  // Users can request an automatically assigned IP (for example, via an
+  // IPAM service) or a specific IP by adding a NetworkInfo to the
+  // ContainerInfo for a task.  On a request, specifying neither `protocol`
+  // nor `ip_address` means that any available address may be assigned.
+  message IPAddress {
+    // Specify IP address requirement. Set protocol to the desired value to
+    // request the network isolator on the Agent to assign an IP address to the
+    // container being launched. If a specific IP address is specified in
+    // ip_address, this field should not be set.
+    optional Protocol protocol = 1 [default = IPv4];
+
+    // Statically assigned IP provided by the Framework. This IP will be
+    // assigned to the container by the network isolator module on the Agent.
+    // This field should not be used with the protocol field above.
+    //
+    // If an explicit address is requested but is unavailable, the network
+    // isolator should fail the task.
+    optional string ip_address = 2;
+  }
+
+  // When included in a ContainerInfo, each of these represent a
+  // request for an IP address. Each request can specify an explicit address
+  // or the IP protocol to use.
+  //
+  // When included in a TaskStatus message, these inform the framework
+  // scheduler about the IP addresses that are bound to the container
+  // interface. When there are no custom network isolator modules installed,
+  // this field is filled in automatically with the Agent IP address.
+  repeated IPAddress ip_addresses = 5;
+
+  // Name of the network which will be used by network isolator to determine
+  // the network that the container joins. It's up to the network isolator
+  // to decide how to interpret this field.
+  optional string name = 6;
+
+  // A group is the name given to a set of logically-related interfaces that
+  // are allowed to communicate among themselves. Network traffic is allowed
+  // between two container interfaces that share at least one network group.
+  // For example, one might want to create separate groups for isolating dev,
+  // testing, qa and prod deployment environments.
+  repeated string groups = 3;
+
+  // To tag certain metadata to be used by Isolator/IPAM, e.g., rack, etc.
+  optional Labels labels = 4;
+
+  // Specifies a port mapping request for the task on this network.
+  message PortMapping {
+    required uint32 host_port = 1;
+    required uint32 container_port = 2;
+    // Protocol to expose as (ie: tcp, udp).
+    optional string protocol = 3;
+  }
+
+  repeated PortMapping port_mappings = 7;
+};
+
+
+/**
+ * Encapsulation of `Capabilities` supported by Linux.
+ * Reference: http://linux.die.net/man/7/capabilities.
+ */
+message CapabilityInfo {
+  // We start the actual values at an offset(1000) because Protobuf 2
+  // uses the first value as the default one. Separating the default
+  // value from the real first value helps to disambiguate them. This
+  // is especially valuable for backward compatibility.
+  // See: MESOS-4997.
+  enum Capability {
+    UNKNOWN = 0;
+    CHOWN = 1000;
+    DAC_OVERRIDE = 1001;
+    DAC_READ_SEARCH = 1002;
+    FOWNER = 1003;
+    FSETID = 1004;
+    KILL = 1005;
+    SETGID = 1006;
+    SETUID = 1007;
+    SETPCAP = 1008;
+    LINUX_IMMUTABLE = 1009;
+    NET_BIND_SERVICE = 1010;
+    NET_BROADCAST = 1011;
+    NET_ADMIN = 1012;
+    NET_RAW = 1013;
+    IPC_LOCK = 1014;
+    IPC_OWNER = 1015;
+    SYS_MODULE = 1016;
+    SYS_RAWIO = 1017;
+    SYS_CHROOT = 1018;
+    SYS_PTRACE = 1019;
+    SYS_PACCT = 1020;
+    SYS_ADMIN = 1021;
+    SYS_BOOT = 1022;
+    SYS_NICE = 1023;
+    SYS_RESOURCE = 1024;
+    SYS_TIME = 1025;
+    SYS_TTY_CONFIG = 1026;
+    MKNOD = 1027;
+    LEASE = 1028;
+    AUDIT_WRITE = 1029;
+    AUDIT_CONTROL = 1030;
+    SETFCAP = 1031;
+    MAC_OVERRIDE = 1032;
+    MAC_ADMIN = 1033;
+    SYSLOG = 1034;
+    WAKE_ALARM = 1035;
+    BLOCK_SUSPEND = 1036;
+    AUDIT_READ = 1037;
+  }
+
+  repeated Capability capabilities = 1;
+}
+
+
+/**
+ * Encapsulation for Linux specific configuration.
+ * E.g, capabilities, limits etc.
+ */
+message LinuxInfo {
+  // Since 1.4.0, deprecated in favor of `effective_capabilities`.
+  optional CapabilityInfo capability_info = 1 [deprecated = true];
+
+  // The set of capabilities that are allowed but not initially
+  // granted to tasks.
+  optional CapabilityInfo bounding_capabilities = 2;
+
+  // Represents the set of capabilities that the task will
+  // be executed with.
+  optional CapabilityInfo effective_capabilities = 3;
+
+  // If set as 'true', the container shares the pid namespace with
+  // its parent. If the container is a top level container, it will
+  // share the pid namespace with the agent. If the container is a
+  // nested container, it will share the pid namespace with its
+  // parent container. This field will be ignored if 'namespaces/pid'
+  // isolator is not enabled.
+  optional bool share_pid_namespace = 4;
+}
+
+
+/**
+* Encapsulation for POSIX rlimits, see
+* http://pubs.opengroup.org/onlinepubs/009695399/functions/getrlimit.html.
+* Note that some types might only be defined for Linux.
+* We use a custom prefix to avoid conflict with existing system macros
+* (e.g., `RLIMIT_CPU` or `NOFILE`).
+*/
+message RLimitInfo {
+  message RLimit {
+    enum Type {
+      UNKNOWN = 0;
+      RLMT_AS = 1;
+      RLMT_CORE = 2;
+      RLMT_CPU = 3;
+      RLMT_DATA = 4;
+      RLMT_FSIZE = 5;
+      RLMT_LOCKS = 6;
+      RLMT_MEMLOCK = 7;
+      RLMT_MSGQUEUE = 8;
+      RLMT_NICE = 9;
+      RLMT_NOFILE = 10;
+      RLMT_NPROC = 11;
+      RLMT_RSS = 12;
+      RLMT_RTPRIO = 13;
+      RLMT_RTTIME = 14;
+      RLMT_SIGPENDING = 15;
+      RLMT_STACK = 16;
+    }
+    optional Type type = 1;
+
+    // Either both are set or both are not set.
+    // If both are not set, it represents unlimited.
+    // If both are set, we require `soft` <= `hard`.
+    optional uint64 hard = 2;
+    optional uint64 soft = 3;
+  }
+
+  repeated RLimit rlimits = 1;
+}
+
+
+/**
+ * Describes the information about (pseudo) TTY that can
+ * be attached to a process running in a container.
+ */
+message TTYInfo {
+  message WindowSize {
+    required uint32 rows = 1;
+    required uint32 columns = 2;
+  }
+
+  optional WindowSize window_size = 1;
+}
+
+
+/**
+ * Describes a container configuration and allows extensible
+ * configurations for different container implementations.
+ *
+ * NOTE: `ContainerInfo` may be specified, e.g., by a task, even if no
+ * container image is provided. In this case neither `MesosInfo` nor
+ * `DockerInfo` is set, the required `type` must be `MESOS`. This is to
+ * address a case when a task without an image, e.g., a shell script
+ * with URIs, wants to use features originally designed for containers,
+ * for example custom network isolation via `NetworkInfo`.
+ */
+message ContainerInfo {
+  // All container implementation types.
+  enum Type {
+    DOCKER = 1;
+    MESOS = 2;
+  }
+
+  message DockerInfo {
+    // The docker image that is going to be passed to the registry.
+    required string image = 1;
+
+    // Network options.
+    enum Network {
+      HOST = 1;
+      BRIDGE = 2;
+      NONE = 3;
+      USER = 4;
+    }
+
+    optional Network network = 2 [default = HOST];
+
+    message PortMapping {
+      required uint32 host_port = 1;
+      required uint32 container_port = 2;
+      // Protocol to expose as (ie: tcp, udp).
+      optional string protocol = 3;
+    }
+
+    repeated PortMapping port_mappings = 3;
+
+    optional bool privileged = 4 [default = false];
+
+    // Allowing arbitrary parameters to be passed to docker CLI.
+    // Note that anything passed to this field is not guaranteed
+    // to be supported moving forward, as we might move away from
+    // the docker CLI.
+    repeated Parameter parameters = 5;
+
+    // With this flag set to true, the docker containerizer will
+    // pull the docker image from the registry even if the image
+    // is already downloaded on the agent.
+    optional bool force_pull_image = 6;
+
+    // The name of volume driver plugin.
+    optional string volume_driver = 7 [deprecated = true]; // Since 1.0
+  }
+
+  message MesosInfo {
+    optional Image image = 1;
+  }
+
+  required Type type = 1;
+  repeated Volume volumes = 2;
+  optional string hostname = 4;
+
+  // Only one of the following *Info messages should be set to match
+  // the type.
+  optional DockerInfo docker = 3;
+  optional MesosInfo mesos = 5;
+
+  // A list of network requests. A framework can request multiple IP addresses
+  // for the container.
+  repeated NetworkInfo network_infos = 7;
+
+  // Linux specific information for the container.
+  optional LinuxInfo linux_info = 8;
+
+  // (POSIX only) rlimits of the container.
+  optional RLimitInfo rlimit_info = 9;
+
+  // If specified a tty will be attached to the container entrypoint.
+  optional TTYInfo tty_info = 10;
+}
+
+
+/**
+ * Container related information that is resolved during container
+ * setup. The information is sent back to the framework as part of the
+ * TaskStatus message.
+ */
+message ContainerStatus {
+  optional ContainerID container_id = 4;
+
+  // This field can be reliably used to identify the container IP address.
+  repeated NetworkInfo network_infos = 1;
+
+  // Information about Linux control group (cgroup).
+  optional CgroupInfo cgroup_info = 2;
+
+  // Information about Executor PID.
+  optional uint32 executor_pid = 3;
+}
+
+
+/**
+ * Linux control group (cgroup) information.
+ */
+message CgroupInfo {
+  // Configuration of a blkio cgroup subsystem.
+  message Blkio {
+    enum Operation {
+      UNKNOWN = 0;
+      TOTAL = 1;
+      READ = 2;
+      WRITE = 3;
+      SYNC = 4;
+      ASYNC = 5;
+    }
+
+    // Describes a stat value without the device descriptor part.
+    message Value {
+      optional Operation op = 1; // Required.
+      optional uint64 value = 2; // Required.
+    }
+
+    message CFQ {
+      message Statistics {
+        // Stats are grouped by block devices. If `device` is not
+        // set, it represents `Total`.
+        optional Device.Number device = 1;
+        // blkio.sectors
+        optional uint64 sectors = 2;
+        // blkio.time
+        optional uint64 time = 3;
+        // blkio.io_serviced
+        repeated Value io_serviced = 4;
+        // blkio.io_service_bytes
+        repeated Value io_service_bytes = 5;
+        // blkio.io_service_time
+        repeated Value io_service_time = 6;
+        // blkio.io_wait_time
+        repeated Value io_wait_time = 7;
+        // blkio.io_merged
+        repeated Value io_merged = 8;
+        // blkio.io_queued
+        repeated Value io_queued = 9;
+      }
+
+      // TODO(jasonlai): Add fields for blkio weight and weight
+      // device.
+    }
+
+    message Throttling {
+      message Statistics {
+        // Stats are grouped by block devices. If `device` is not
+        // set, it represents `Total`.
+        optional Device.Number device = 1;
+        // blkio.throttle.io_serviced
+        repeated Value io_serviced = 2;
+        // blkio.throttle.io_service_bytes
+        repeated Value io_service_bytes = 3;
+      }
+
+      // TODO(jasonlai): Add fields for blkio.throttle.*_device.
+    }
+
+    message Statistics {
+      repeated CFQ.Statistics cfq = 1;
+      repeated CFQ.Statistics cfq_recursive = 2;
+      repeated Throttling.Statistics throttling = 3;
+    }
+  }
+
+  // Configuration of a net_cls cgroup subsystem.
+  message NetCls {
+    // The 32-bit classid consists of two parts, a 16 bit major handle
+    // and a 16-bit minor handle. The major and minor handle are
+    // represented using the format 0xAAAABBBB, where 0xAAAA is the
+    // 16-bit major handle and 0xBBBB is the 16-bit minor handle.
+    optional uint32 classid = 1;
+  }
+
+  optional NetCls net_cls = 1;
+}
+
+
+/**
+ * Collection of labels. Labels should not contain duplicate key-value
+ * pairs.
+ */
+message Labels {
+  repeated Label labels = 1;
+}
+
+
+/**
+ * Key, value pair used to store free form user-data.
+ */
+message Label {
+  required string key = 1;
+  optional string value = 2;
+}
+
+
+/**
+ * Named port used for service discovery.
+ */
+message Port {
+  // Port number on which the framework exposes a service.
+  required uint32 number = 1;
+
+  // Name of the service hosted on this port.
+  optional string name = 2;
+
+  // Layer 4-7 protocol on which the framework exposes its services.
+  optional string protocol = 3;
+
+  // This field restricts discovery within a framework (FRAMEWORK),
+  // within a Mesos cluster (CLUSTER), or places no restrictions (EXTERNAL).
+  // The visibility setting for a Port overrides the general visibility setting
+  // in the DiscoveryInfo.
+  optional DiscoveryInfo.Visibility visibility = 4;
+
+  // This can be used to decorate the message with metadata to be
+  // interpreted by external applications such as firewalls.
+  optional Labels labels = 5;
+}
+
+
+/**
+ * Collection of ports.
+ */
+message Ports {
+  repeated Port ports = 1;
+}
+
+
+/**
+* Service discovery information.
+* The visibility field restricts discovery within a framework (FRAMEWORK),
+* within a Mesos cluster (CLUSTER), or places no restrictions (EXTERNAL).
+* Each port in the ports field also has an optional visibility field.
+* If visibility is specified for a port, it overrides the default service-wide
+* DiscoveryInfo.visibility for that port.
+* The environment, location, and version fields provide first class support for
+* common attributes used to differentiate between similar services. The
+* environment may receive values such as PROD/QA/DEV, the location field may
+* receive values like EAST-US/WEST-US/EUROPE/AMEA, and the version field may
+* receive values like v2.0/v0.9. The exact use of these fields is up to each
+* service discovery system.
+*/
+message DiscoveryInfo {
+  enum Visibility {
+    FRAMEWORK = 0;
+    CLUSTER = 1;
+    EXTERNAL = 2;
+  }
+
+  required Visibility visibility = 1;
+  optional string name = 2;
+  optional string environment = 3;
+  optional string location = 4;
+  optional string version = 5;
+  optional Ports ports = 6;
+  optional Labels labels = 7;
+}
+
+
+/**
+ * Named WeightInfo to indicate resource allocation
+ * priority between the different roles.
+ */
+message WeightInfo {
+  required double weight = 1;
+
+  // Related role name.
+  optional string role = 2;
+}
+
+
+/**
+ * Version information of a component.
+ */
+message VersionInfo {
+  required string version = 1;
+  optional string build_date = 2;
+  optional double build_time = 3;
+  optional string build_user = 4;
+  optional string git_sha = 5;
+  optional string git_branch = 6;
+  optional string git_tag = 7;
+}
+
+
+/**
+ * Flag consists of a name and optionally its value.
+ */
+message Flag {
+  required string name = 1;
+  optional string value = 2;
+}
+
+
+/**
+ * Describes a Role. Roles can be used to specify that certain resources are
+ * reserved for the use of one or more frameworks.
+ */
+message Role {
+  required string name = 1;
+  required double weight = 2;
+  repeated FrameworkID frameworks = 3;
+  repeated Resource resources = 4;
+}
+
+
+/**
+ * Metric consists of a name and optionally its value.
+ */
+message Metric {
+  required string name = 1;
+  optional double value = 2;
+}
+
+
+/**
+ * Describes a File.
+ */
+message FileInfo {
+  // Absolute path to the file.
+  required string path = 1;
+
+  // Number of hard links.
+  optional int32 nlink = 2;
+
+  // Total size in bytes.
+  optional uint64 size = 3;
+
+  // Last modification time.
+  optional TimeInfo mtime = 4;
+
+  // Represents a file's mode and permission bits. The bits have the same
+  // definition on all systems and is portable.
+  optional uint32 mode = 5;
+
+  // User ID of owner.
+  optional string uid = 6;
+
+  // Group ID of owner.
+  optional string gid = 7;
+}
+
+
+/**
+ * Describes information abount a device.
+ */
+message Device {
+  message Number {
+    required uint64 major_number = 1;
+    required uint64 minor_number = 2;
+  }
+
+  optional string path = 1;
+  optional Number number = 2;
+}
+
+
+/**
+ * Describes a device whitelist entry that expose from host to container.
+ */
+message DeviceAccess {
+  message Access {
+    optional bool read = 1;
+    optional bool write = 2;
+    optional bool mknod = 3;
+  }
+  required Device device = 1;
+  required Access access = 2;
+}
+
+
+message DeviceWhitelist {
+   repeated DeviceAccess allowed_devices = 1;
+}
diff --git a/myriad-commons/proto/mesos/v1/scheduler.proto b/myriad-commons/proto/mesos/v1/scheduler.proto
new file mode 100644
index 0000000..1fb0254
--- /dev/null
+++ b/myriad-commons/proto/mesos/v1/scheduler.proto
@@ -0,0 +1,420 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto2";
+
+import "mesos/v1/mesos.proto";
+
+package mesos.v1.scheduler;
+
+option java_package = "org.apache.mesos.v1.scheduler";
+option java_outer_classname = "Protos";
+
+
+/**
+ * Scheduler event API.
+ *
+ * An event is described using the standard protocol buffer "union"
+ * trick, see:
+ * https://developers.google.com/protocol-buffers/docs/techniques#union.
+ */
+message Event {
+  // Possible event types, followed by message definitions if
+  // applicable.
+  enum Type {
+    // This must be the first enum value in this list, to
+    // ensure that if 'type' is not set, the default value
+    // is UNKNOWN. This enables enum values to be added
+    // in a backwards-compatible way. See: MESOS-4997.
+    UNKNOWN = 0;
+
+    SUBSCRIBED = 1;             // See 'Subscribed' below.
+    OFFERS = 2;                 // See 'Offers' below.
+    INVERSE_OFFERS = 9;         // See 'InverseOffers' below.
+    RESCIND = 3;                // See 'Rescind' below.
+    RESCIND_INVERSE_OFFER = 10; // See 'RescindInverseOffer' below.
+    UPDATE = 4;                 // See 'Update' below.
+    MESSAGE = 5;                // See 'Message' below.
+    FAILURE = 6;                // See 'Failure' below.
+    ERROR = 7;                  // See 'Error' below.
+
+    // Periodic message sent by the Mesos master according to
+    // 'Subscribed.heartbeat_interval_seconds'. If the scheduler does
+    // not receive any events (including heartbeats) for an extended
+    // period of time (e.g., 5 x heartbeat_interval_seconds), there is
+    // likely a network partition. In such a case the scheduler should
+    // close the existing subscription connection and resubscribe
+    // using a backoff strategy.
+    HEARTBEAT = 8;
+  }
+
+  // First event received when the scheduler subscribes.
+  message Subscribed {
+    required FrameworkID framework_id = 1;
+
+    // This value will be set if the master is sending heartbeats. See
+    // the comment above on 'HEARTBEAT' for more details.
+    optional double heartbeat_interval_seconds = 2;
+
+    // Since Mesos 1.1.
+    optional MasterInfo master_info = 3;
+  }
+
+  // Received whenever there are new resources that are offered to the
+  // scheduler. Each offer corresponds to a set of resources on an
+  // agent. Until the scheduler accepts or declines an offer the
+  // resources are considered allocated to the scheduler.
+  message Offers {
+    repeated Offer offers = 1;
+  }
+
+  // Received whenever there are resources requested back from the
+  // scheduler. Each inverse offer specifies the agent, and
+  // optionally specific resources. Accepting or Declining an inverse
+  // offer informs the allocator of the scheduler's ability to release
+  // the specified resources without violating an SLA. If no resources
+  // are specified then all resources on the agent are requested to be
+  // released.
+  message InverseOffers {
+    repeated InverseOffer inverse_offers = 1;
+  }
+
+  // Received when a particular offer is no longer valid (e.g., the
+  // agent corresponding to the offer has been removed) and hence
+  // needs to be rescinded. Any future calls ('Accept' / 'Decline') made
+  // by the scheduler regarding this offer will be invalid.
+  message Rescind {
+    required OfferID offer_id = 1;
+  }
+
+  // Received when a particular inverse offer is no longer valid
+  // (e.g., the agent corresponding to the offer has been removed)
+  // and hence needs to be rescinded. Any future calls ('Accept' /
+  // 'Decline') made by the scheduler regarding this inverse offer
+  // will be invalid.
+  message RescindInverseOffer {
+    required OfferID inverse_offer_id = 1;
+  }
+
+  // Received whenever there is a status update that is generated by
+  // the executor or agent or master. Status updates should be used by
+  // executors to reliably communicate the status of the tasks that
+  // they manage. It is crucial that a terminal update (see TaskState
+  // in v1/mesos.proto) is sent by the executor as soon as the task
+  // terminates, in order for Mesos to release the resources allocated
+  // to the task. It is also the responsibility of the scheduler to
+  // explicitly acknowledge the receipt of a status update. See
+  // 'Acknowledge' in the 'Call' section below for the semantics.
+  //
+  // A task status update may be used for guaranteed delivery of some
+  // task-related information, e.g., task's health update. Such
+  // information may be shadowed by subsequent task status updates, that
+  // do not preserve fields of the previously sent message.
+  message Update {
+    required TaskStatus status = 1;
+  }
+
+  // Received when a custom message generated by the executor is
+  // forwarded by the master. Note that this message is not
+  // interpreted by Mesos and is only forwarded (without reliability
+  // guarantees) to the scheduler. It is up to the executor to retry
+  // if the message is dropped for any reason.
+  message Message {
+    required AgentID agent_id = 1;
+    required ExecutorID executor_id = 2;
+    required bytes data = 3;
+  }
+
+  // Received when an agent is removed from the cluster (e.g., failed
+  // health checks) or when an executor is terminated. Note that, this
+  // event coincides with receipt of terminal UPDATE events for any
+  // active tasks belonging to the agent or executor and receipt of
+  // 'Rescind' events for any outstanding offers belonging to the
+  // agent. Note that there is no guaranteed order between the
+  // 'Failure', 'Update' and 'Rescind' events when an agent or executor
+  // is removed.
+  // TODO(vinod): Consider splitting the lost agent and terminated
+  // executor into separate events and ensure it's reliably generated.
+  message Failure {
+    optional AgentID agent_id = 1;
+
+    // If this was just a failure of an executor on an agent then
+    // 'executor_id' will be set and possibly 'status' (if we were
+    // able to determine the exit status).
+    optional ExecutorID executor_id = 2;
+
+    // On Posix, `status` corresponds to termination information in the
+    // `stat_loc` area returned from a `waitpid` call. On Windows, `status`
+    // is obtained via calling the `GetExitCodeProcess()` function. For
+    // messages coming from Posix agents, schedulers need to apply
+    // `WEXITSTATUS` family macros or equivalent transformations to obtain
+    // exit codes.
+    //
+    // TODO(alexr): Consider unifying Windows and Posix behavior by returning
+    // exit code here, see MESOS-7241.
+    optional int32 status = 3;
+  }
+
+  // Received when there is an unrecoverable error in the scheduler (e.g.,
+  // scheduler failed over, rate limiting, authorization errors etc.). The
+  // scheduler should abort on receiving this event.
+  message Error {
+    required string message = 1;
+  }
+
+  // Type of the event, indicates which optional field below should be
+  // present if that type has a nested message definition.
+  // Enum fields should be optional, see: MESOS-4997.
+  optional Type type = 1;
+
+  optional Subscribed subscribed = 2;
+  optional Offers offers = 3;
+  optional InverseOffers inverse_offers = 9;
+  optional Rescind rescind = 4;
+  optional RescindInverseOffer rescind_inverse_offer = 10;
+  optional Update update = 5;
+  optional Message message = 6;
+  optional Failure failure = 7;
+  optional Error error = 8;
+}
+
+
+/**
+ * Scheduler call API.
+ *
+ * Like Event, a Call is described using the standard protocol buffer
+ * "union" trick (see above).
+ */
+message Call {
+  // Possible call types, followed by message definitions if
+  // applicable.
+  enum Type {
+    // See comments above on `Event::Type` for more details on this enum value.
+    UNKNOWN = 0;
+
+    SUBSCRIBE = 1;   // See 'Subscribe' below.
+    TEARDOWN = 2;    // Shuts down all tasks/executors and removes framework.
+    ACCEPT = 3;      // See 'Accept' below.
+    DECLINE = 4;     // See 'Decline' below.
+    ACCEPT_INVERSE_OFFERS = 13;  // See 'AcceptInverseOffers' below.
+    DECLINE_INVERSE_OFFERS = 14; // See 'DeclineInverseOffers' below.
+    REVIVE = 5;      // Removes any previous filters set via ACCEPT or DECLINE.
+    KILL = 6;        // See 'Kill' below.
+    SHUTDOWN = 7;    // See 'Shutdown' below.
+    ACKNOWLEDGE = 8; // See 'Acknowledge' below.
+    RECONCILE = 9;   // See 'Reconcile' below.
+    MESSAGE = 10;    // See 'Message' below.
+    REQUEST = 11;    // See 'Request' below.
+    SUPPRESS = 12;   // Inform master to stop sending offers to the framework.
+
+    // TODO(benh): Consider adding an 'ACTIVATE' and 'DEACTIVATE' for
+    // already subscribed frameworks as a way of stopping offers from
+    // being generated and other events from being sent by the master.
+    // Note that this functionality existed originally to support
+    // SchedulerDriver::abort which was only necessary to handle
+    // exceptions getting thrown from within Scheduler callbacks,
+    // something that is not an issue with the Event/Call API.
+  }
+
+  // Subscribes the scheduler with the master to receive events. A
+  // scheduler must send other calls only after it has received the
+  // SUBCRIBED event.
+  message Subscribe {
+    // See the comments below on 'framework_id' on the semantics for
+    // 'framework_info.id'.
+    required FrameworkInfo framework_info = 1;
+
+    // List of suppressed roles for which the framework does not wish to be
+    // offered resources. The framework can decide to suppress all or a subset
+    // of roles the framework (re)registers as.
+    repeated string suppressed_roles = 2;
+  }
+
+  // Accepts an offer, performing the specified operations
+  // in a sequential manner.
+  //
+  // E.g. Launch a task with a newly reserved persistent volume:
+  //
+  //   Accept {
+  //     offer_ids: [ ... ]
+  //     operations: [
+  //       { type: RESERVE,
+  //         reserve: { resources: [ disk(role):2 ] } }
+  //       { type: CREATE,
+  //         create: { volumes: [ disk(role):1+persistence ] } }
+  //       { type: LAUNCH,
+  //         launch: { task_infos ... disk(role):1;disk(role):1+persistence } }
+  //     ]
+  //   }
+  //
+  // Note that any of the offer’s resources not used in the 'Accept'
+  // call (e.g., to launch a task) are considered unused and might be
+  // reoffered to other frameworks. In other words, the same OfferID
+  // cannot be used in more than one 'Accept' call.
+  message Accept {
+    repeated OfferID offer_ids = 1;
+    repeated Offer.Operation operations = 2;
+    optional Filters filters = 3;
+  }
+
+  // Declines an offer, signaling the master to potentially reoffer
+  // the resources to a different framework. Note that this is same
+  // as sending an Accept call with no operations. See comments on
+  // top of 'Accept' for semantics.
+  message Decline {
+    repeated OfferID offer_ids = 1;
+    optional Filters filters = 2;
+  }
+
+  // Accepts an inverse offer. Inverse offers should only be accepted
+  // if the resources in the offer can be safely evacuated before the
+  // provided unavailability.
+  message AcceptInverseOffers {
+    repeated OfferID inverse_offer_ids = 1;
+    optional Filters filters = 2;
+  }
+
+  // Declines an inverse offer. Inverse offers should be declined if
+  // the resources in the offer might not be safely evacuated before
+  // the provided unavailability.
+  message DeclineInverseOffers {
+    repeated OfferID inverse_offer_ids = 1;
+    optional Filters filters = 2;
+  }
+
+  // Revive offers for the specified roles. If `roles` is empty,
+  // the `REVIVE` call will revive offers for all of the roles
+  // the framework is currently subscribed to.
+  message Revive {
+    repeated string roles = 1;
+  }
+
+  // Kills a specific task. If the scheduler has a custom executor,
+  // the kill is forwarded to the executor and it is up to the
+  // executor to kill the task and send a TASK_KILLED (or TASK_FAILED)
+  // update. Note that Mesos releases the resources for a task once it
+  // receives a terminal update (See TaskState in v1/mesos.proto) for
+  // it. If the task is unknown to the master, a TASK_LOST update is
+  // generated.
+  //
+  // If a task within a task group is killed before the group is
+  // delivered to the executor, all tasks in the task group are
+  // killed. When a task group has been delivered to the executor,
+  // it is up to the executor to decide how to deal with the kill.
+  // Note The default Mesos executor will currently kill all the
+  // tasks in the task group if it gets a kill for any task.
+  message Kill {
+    required TaskID task_id = 1;
+    optional AgentID agent_id = 2;
+
+    // If set, overrides any previously specified kill policy for this task.
+    // This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+    // Can be used to forcefully kill a task which is already being killed.
+    optional KillPolicy kill_policy = 3;
+  }
+
+  // Shuts down a custom executor. When the executor gets a shutdown
+  // event, it is expected to kill all its tasks (and send TASK_KILLED
+  // updates) and terminate. If the executor doesn’t terminate within
+  // a certain timeout (configurable via
+  // '--executor_shutdown_grace_period' agent flag), the agent will
+  // forcefully destroy the container (executor and its tasks) and
+  // transition its active tasks to TASK_LOST.
+  message Shutdown {
+    required ExecutorID executor_id = 1;
+    required AgentID agent_id = 2;
+  }
+
+  // Acknowledges the receipt of status update. Schedulers are
+  // responsible for explicitly acknowledging the receipt of status
+  // updates that have 'Update.status().uuid()' field set. Such status
+  // updates are retried by the agent until they are acknowledged by
+  // the scheduler.
+  message Acknowledge {
+    required AgentID agent_id = 1;
+    required TaskID task_id = 2;
+    required bytes uuid = 3;
+  }
+
+  // Allows the scheduler to query the status for non-terminal tasks.
+  // This causes the master to send back the latest task status for
+  // each task in 'tasks', if possible. Tasks that are no longer known
+  // will result in a TASK_LOST, TASK_UNKNOWN, or TASK_UNREACHABLE update.
+  // If 'tasks' is empty, then the master will send the latest status
+  // for each task currently known.
+  message Reconcile {
+    // TODO(vinod): Support arbitrary queries than just state of tasks.
+    message Task {
+      required TaskID task_id = 1;
+      optional AgentID agent_id = 2;
+    }
+
+    repeated Task tasks = 1;
+  }
+
+  // Sends arbitrary binary data to the executor. Note that Mesos
+  // neither interprets this data nor makes any guarantees about the
+  // delivery of this message to the executor.
+  message Message {
+    required AgentID agent_id = 1;
+    required ExecutorID executor_id = 2;
+    required bytes data = 3;
+  }
+
+  // Requests a specific set of resources from Mesos's allocator. If
+  // the allocator has support for this, corresponding offers will be
+  // sent asynchronously via the OFFERS event(s).
+  //
+  // NOTE: The built-in hierarchical allocator doesn't have support
+  // for this call and hence simply ignores it.
+  message Request {
+    repeated mesos.v1.Request requests = 1;
+  }
+
+  // Suppress offers for the specified roles. If `roles` is empty,
+  // the `SUPPRESS` call will suppress offers for all of the roles
+  // the framework is currently subscribed to.
+  message Suppress {
+    repeated string roles = 1;
+  }
+
+  // Identifies who generated this call. Master assigns a framework id
+  // when a new scheduler subscribes for the first time. Once assigned,
+  // the scheduler must set the 'framework_id' here and within its
+  // FrameworkInfo (in any further 'Subscribe' calls). This allows the
+  // master to identify a scheduler correctly across disconnections,
+  // failovers, etc.
+  optional FrameworkID framework_id = 1;
+
+  // Type of the call, indicates which optional field below should be
+  // present if that type has a nested message definition.
+  // See comments on `Event::Type` above on the reasoning behind this field being optional.
+  optional Type type = 2;
+
+  optional Subscribe subscribe = 3;
+  optional Accept accept = 4;
+  optional Decline decline = 5;
+  optional AcceptInverseOffers accept_inverse_offers = 13;
+  optional DeclineInverseOffers decline_inverse_offers = 14;
+  optional Revive revive = 15;
+  optional Kill kill = 6;
+  optional Shutdown shutdown = 7;
+  optional Acknowledge acknowledge = 8;
+  optional Reconcile reconcile = 9;
+  optional Message message = 10;
+  optional Request request = 11;
+  optional Suppress suppress = 16;
+}
diff --git a/myriad-commons/src/main/java/org/apache/mesos/Executor.java b/myriad-commons/src/main/java/org/apache/mesos/Executor.java
new file mode 100644
index 0000000..095ca65
--- /dev/null
+++ b/myriad-commons/src/main/java/org/apache/mesos/Executor.java
@@ -0,0 +1,149 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.mesos;
+
+import org.apache.mesos.Protos.*;
+
+/**
+ * Callback interface to be implemented by frameworks' executors.
+ * Note that only one callback will be invoked at a time, so it is not
+ * recommended that you block within a callback because it may cause a
+ * deadlock.
+ * <p>
+ * Each callback includes a reference to the executor driver that was
+ * used to run this executor. The reference will not change for the
+ * duration of an executor (i.e., from the point you do
+ * {@link ExecutorDriver#start} to the point that
+ * {@link ExecutorDriver#join}  returns).
+ * This is intended for convenience so that an executor
+ * doesn't need to store a reference to the driver itself.
+ */
+public interface Executor {
+
+    /**
+     * Invoked once the executor driver has been able to successfully
+     * connect with Mesos. In particular, a scheduler can pass some
+     * data to its executors through the {@link ExecutorInfo#getData()}
+     * field.
+     *
+     * @param driver        The executor driver that was registered and connected
+     *                      to the Mesos cluster.
+     * @param executorInfo  Describes information about the executor that was
+     *                      registered.
+     * @param frameworkInfo Describes the framework that was registered.
+     * @param slaveInfo     Describes the slave that will be used to launch
+     *                      the tasks for this executor.
+     *
+     * @see ExecutorDriver
+     * @see MesosSchedulerDriver
+     */
+    // TODO(vinod): Add a new reregistered callback for when the executor
+    //              re-connects with a restarted slave.
+    void registered(ExecutorDriver driver,
+                    ExecutorInfo executorInfo,
+                    FrameworkInfo frameworkInfo,
+                    SlaveInfo slaveInfo);
+
+    /**
+     * Invoked when the executor re-registers with a restarted slave.
+     *
+     * @param driver      The executor driver that was re-registered with the
+     *                    Mesos master.
+     * @param slaveInfo   Describes the slave that will be used to launch
+     *                    the tasks for this executor.
+     *
+     * @see ExecutorDriver
+     */
+    void reregistered(ExecutorDriver driver, SlaveInfo slaveInfo);
+
+    /**
+     * Invoked when the executor becomes "disconnected" from the slave
+     * (e.g., the slave is being restarted due to an upgrade).
+     *
+     * @param driver  The executor driver that was disconnected.
+     */
+    void disconnected(ExecutorDriver driver);
+
+    /**
+     * Invoked when a task has been launched on this executor (initiated
+     * via {@link SchedulerDriver#launchTasks}. Note that this task can be
+     * realized with a thread, a process, or some simple computation,
+     * however, no other callbacks will be invoked on this executor
+     * until this callback has returned.
+     *
+     * @param driver  The executor driver that launched the task.
+     * @param task    Describes the task that was launched.
+     *
+     * @see ExecutorDriver
+     * @see TaskInfo
+     */
+    void launchTask(ExecutorDriver driver, TaskInfo task);
+
+    /**
+     * Invoked when a task running within this executor has been killed
+     * (via {@link org.apache.mesos.SchedulerDriver#killTask}). Note that no
+     * status update will be sent on behalf of the executor, the executor is
+     * responsible for creating a new TaskStatus (i.e., with TASK_KILLED)
+     * and invoking {@link ExecutorDriver#sendStatusUpdate}.
+     *
+     * @param driver The executor driver that owned the task that was killed.
+     * @param taskId The ID of the task that was killed.
+     *
+     * @see ExecutorDriver
+     * @see TaskID
+     */
+    void killTask(ExecutorDriver driver, TaskID taskId);
+
+    /**
+     * Invoked when a framework message has arrived for this
+     * executor. These messages are best effort; do not expect a
+     * framework message to be retransmitted in any reliable fashion.
+     *
+     * @param driver  The executor driver that received the message.
+     * @param data    The message payload.
+     *
+     * @see ExecutorDriver
+     */
+    void frameworkMessage(ExecutorDriver driver, byte[] data);
+
+    /**
+     * Invoked when the executor should terminate all of its currently
+     * running tasks. Note that after Mesos has determined that an
+     * executor has terminated any tasks that the executor did not send
+     * terminal status updates for (e.g. TASK_KILLED, TASK_FINISHED,
+     * TASK_FAILED, etc) a TASK_LOST status update will be created.
+     *
+     * @param driver  The executor driver that should terminate.
+     *
+     * @see ExecutorDriver
+     */
+    void shutdown(ExecutorDriver driver);
+
+    /**
+     * Invoked when a fatal error has occurred with the executor and/or
+     * executor driver. The driver will be aborted BEFORE invoking this
+     * callback.
+     *
+     * @param driver  The executor driver that was aborted due this error.
+     * @param message The error message.
+     *
+     * @see ExecutorDriver
+     */
+    void error(ExecutorDriver driver, String message);
+}
diff --git a/myriad-commons/src/main/java/org/apache/mesos/ExecutorDriver.java b/myriad-commons/src/main/java/org/apache/mesos/ExecutorDriver.java
new file mode 100644
index 0000000..68d3ea9
--- /dev/null
+++ b/myriad-commons/src/main/java/org/apache/mesos/ExecutorDriver.java
@@ -0,0 +1,112 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.mesos;
+
+import org.apache.mesos.Protos.*;
+
+/**
+ * Abstract interface for connecting an executor to Mesos. This
+ * interface is used both to manage the executor's lifecycle (start
+ * it, stop it, or wait for it to finish) and to interact with Mesos
+ * (e.g., send status updates, send framework messages, etc.).
+ */
+public interface ExecutorDriver {
+    /**
+     * Starts the executor driver. This needs to be called before any
+     * other driver calls are made.
+     *
+     * @return    The state of the driver after the call.
+     *
+     * @see Status
+     */
+    public Status start();
+
+    /**
+     * Stops the executor driver.
+     *
+     * @return    The state of the driver after the call.
+     *
+     * @see Status
+     */
+    public Status stop();
+
+    /**
+     * Aborts the driver so that no more callbacks can be made to the
+     * executor. The semantics of abort and stop have deliberately been
+     * separated so that code can detect an aborted driver (i.e., via
+     * the return status of {@link ExecutorDriver#join}, see below),
+     * and instantiate and start another driver if desired (from within
+     * the same process ... although this functionality is currently not
+     * supported for executors).
+     *
+     * @return    The state of the driver after the call.
+     *
+     * @see Status
+     */
+    public Status abort();
+
+    /**
+     * Waits for the driver to be stopped or aborted, possibly
+     * _blocking_ the current thread indefinitely. The return status of
+     * this function can be used to determine if the driver was aborted
+     * (see mesos.proto for a description of Status).
+     *
+     * @return    The state of the driver after the call.
+     *
+     * @see Status
+     */
+    public Status join();
+
+    /**
+     * Starts and immediately joins (i.e., blocks on) the driver.
+     *
+     * @return    The state of the driver after the call.
+     *
+     * @see Status
+     */
+    public Status run();
+
+    /**
+     * Sends a status update to the framework scheduler, retrying as
+     * necessary until an acknowledgement has been received or the
+     * executor is terminated (in which case, a TASK_LOST status update
+     * will be sent). See {@link Scheduler#statusUpdate} for more
+     * information about status update acknowledgements.
+     *
+     * @param status  The status update to send.
+     *
+     * @return        The state of the driver after the call.
+     *
+     * @see Status
+     */
+    public Status sendStatusUpdate(TaskStatus status);
+
+    /**
+     * Sends a message to the framework scheduler. These messages are
+     * best effort; do not expect a framework message to be
+     * retransmitted in any reliable fashion.
+     *
+     * @param data    The message payload.
+     *
+     * @return        The state of the driver after the call.
+     *
+     * @see Status
+     */
+    public Status sendFrameworkMessage(byte[] data);
+}
diff --git a/myriad-commons/src/main/java/org/apache/mesos/Log.java b/myriad-commons/src/main/java/org/apache/mesos/Log.java
new file mode 100644
index 0000000..6603263
--- /dev/null
+++ b/myriad-commons/src/main/java/org/apache/mesos/Log.java
@@ -0,0 +1,468 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.mesos;
+
+import java.io.Closeable;
+import java.io.IOException;
+
+import java.util.List;
+import java.util.Set;
+
+import java.util.concurrent.TimeoutException;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Provides access to a distributed append only log. The log can be
+ * read from using a {@link Log.Reader} and written to using a
+ * {@link Log.Writer}.
+ *
+ * <p>Both the <i>Reader</i> and <i>Writer</i> will require a <i>quorum</i>
+ * which defines the <i>ratio of active Mesos Masters</i> that need to be
+ * available for a successful read or write. The <i>quorum</i> will be satisfied
+ * when the number of <i>active Masters</i> is greater than the given
+ * <i>number</i>:
+ * <pre>{@code
+ *  Quorum > (Number of Masters)/2
+ * }</pre>
+ *
+ * <p>If a <i>read</i> or <i>write</i> is executed the operation will wait
+ * until their is <i>quorum</i> to succeed.
+ */
+public class Log {
+    static {
+        MesosNativeLibrary.load();
+    }
+
+    /**
+     * An opaque identifier of a log entry's position within the
+     * log. Can be used to inidicate {@link Log.Reader#read read} ranges and
+     * {@link Log.Writer#truncate truncation} locations.
+     */
+    public static class Position implements Comparable<Position> {
+        @Override
+        public int compareTo(Position that) {
+            return Long.signum(value - that.value);
+        }
+
+        @Override
+        public boolean equals(Object that) {
+            return that instanceof Position && value == ((Position) that).value;
+        }
+
+        @Override
+        public String toString() {
+            return "Position " + value;
+        }
+
+        /**
+         * Returns an "identity" of this position, useful for serializing
+         * to logs or across communication mediums.
+         *
+         * @return The identity in bytes.
+         */
+        public byte[] identity() {
+            byte[] bytes = new byte[8];
+            bytes[0] = (byte) (0xff & (value >> 56));
+            bytes[1] = (byte) (0xff & (value >> 48));
+            bytes[2] = (byte) (0xff & (value >> 40));
+            bytes[3] = (byte) (0xff & (value >> 32));
+            bytes[4] = (byte) (0xff & (value >> 24));
+            bytes[5] = (byte) (0xff & (value >> 16));
+            bytes[6] = (byte) (0xff & (value >> 8));
+            bytes[7] = (byte) (0xff & value);
+            return bytes;
+        }
+
+        /**
+         * Creates a position identified by an integral {@code value}.
+         * <p>
+         * Positions are typically only created by the log implementation. Log
+         * users should only ever need to call this constructor in unit tests.
+         *
+         * @param value The marker for this position in the log.
+         */
+        public Position(long value) {
+            this.value = value;
+        }
+
+        private final long value;
+    }
+
+    /**
+     * Represents an opaque data entry in the {@link Log} with a
+     * {@link Log.Position}.
+     */
+    public static class Entry {
+        /**
+         * The position of this entry.
+         * @see Position
+         */
+        public final Position position;
+        /** The data at the given position.*/
+        public final byte[] data;
+
+        /**
+         * Creates a log entry.
+         * <p>
+         * Entries are typically only created by the log implementation. Log
+         * users should only ever need to call this constructor in unit tests.
+         *
+         * @param position  The unique position of this entry within the log.
+         * @param data      The content stored in this entry.
+         */
+        public Entry(Position position, byte[] data) {
+            this.position = position;
+            this.data = data;
+        }
+    }
+
+    /**
+     * An exception that gets thrown when an error occurs while
+     * performing a read or write operation.
+     */
+    public static class OperationFailedException extends Exception {
+        /**
+         * @param message   The message for this exception.
+         */
+        public OperationFailedException(String message) {
+            super(message);
+        }
+
+        /**
+         * @param message   The message for this exception.
+         * @param cause     The underlying reason this exception was generated.
+         */
+        public OperationFailedException(String message, Throwable cause) {
+            super(message, cause);
+        }
+    }
+
+    /**
+     * An exception that gets thrown when a writer no longer has the
+     * ability to perform operations (e.g., because it was superseded by
+     * another writer).
+     */
+    public static class WriterFailedException extends Exception {
+        /**
+         * @param message   The message for this exception.
+         */
+        public WriterFailedException(String message) {
+            super(message);
+        }
+
+        /**
+         * @param message   The message for this exception.
+         * @param cause     The underlying reason this exception was generated.
+         */
+        public WriterFailedException(String message, Throwable cause) {
+            super(message, cause);
+        }
+    }
+
+    /**
+     * Provides read access to the {@link Log}. This class is safe for
+     * use from multiple threads and for the life of the log regardless
+     * of any exceptions thrown from its methods.
+     */
+    public static class Reader {
+        /**
+         * Returns an instance of a reader that will access the given instance of
+         * the Log.
+         * @param log The log that this reader will access.
+         */
+        public Reader(Log log) {
+            this.log = log;
+            initialize(log);
+        }
+
+        /**
+         * Attempts to read from the log between the specified positions
+         * (inclusive). If either of the positions are invalid, an
+         * {@link OperationFailedException} will get thrown. Unfortunately, this
+         * will also get thrown in other circumstances (e.g., disk
+         * failure) and therefore it is currently impossible to tell these
+         * two cases apart.
+         *
+         * @param from    Where to start reading.
+         * @param to      Where to finish reading.
+         * @param timeout Max number of time units to wait before a
+         *                {@link TimeoutException}.
+         * @param unit    Type of units used for the timeout, e.g. seconds,
+         *                minutes, etc.
+         *
+         * @return        The list of entries fetched from the Log.
+         *
+         * @throws TimeoutException         If the read doesn't happen before the
+         *                                  timeout.
+         * @throws OperationFailedException If the read fails due that the read no
+         *                                  longer has the ability to perform its
+         *                                  operations.
+         * @see Position
+         * @see TimeUnit
+         */
+        public native List<Entry> read(Position from,
+                                       Position to,
+                                       long timeout,
+                                       TimeUnit unit)
+                throws TimeoutException, OperationFailedException;
+
+        /**
+         * Returns the beginning position of the log (might be out of date
+         * with respect to another replica).
+         *
+         * @return The beginning position of the log.
+         */
+        public native Position beginning();
+
+        /**
+         * Returns the ending position of the log (might be out of date
+         * with respect to another replica).
+         *
+         * @return The ending position of the log
+         */
+        public native Position ending();
+
+        /**
+         * Attempts to catch-up positions from the log for reading.
+         *
+         * @param timeout Max number of time units to wait before a
+         *                {@link TimeoutException}.
+         * @param unit    Type of time units used for the timeout, e.g. seconds,
+         *                minutes, etc.
+         *
+         * @return The ending position of the caught-up range.
+         *
+         * @throws TimeoutException         If the catch-up doesn't happen before
+         *                                  the timeout.
+         * @throws OperationFailedException If the catch-up fails.
+         */
+        public native Position catchup(long timeout, TimeUnit unit)
+                throws TimeoutException, OperationFailedException;
+
+        protected native void initialize(Log log);
+
+        protected native void finalize();
+
+        private Log log; // Keeps the log from getting garbage collected.
+        private long __log;
+        private long __reader;
+    }
+
+    /**
+     * Provides write access to the {@link Log}. This class is not safe
+     * for use from multiple threads and instances should be thrown out
+     * after any {@link WriterFailedException} is thrown.
+     */
+    public static class Writer {
+        /**
+         * Constructs a writer linked the given {@link Log}.
+         *
+         * @param log     The log that this writer will access.
+         * @param timeout Max number of time units to wait before a
+         *                {@link TimeoutException}.
+         * @param unit    Type of time units used for the timeout, e.g. seconds,
+         *                minutes, etc.
+         * @param retries Number of retries
+         *
+         * @see TimeUnit
+         */
+        public Writer(Log log, long timeout, TimeUnit unit, int retries) {
+            this.log = log;
+            initialize(log, timeout, unit, retries);
+        }
+
+        /**
+         * Attempts to append to the log with the specified data returning
+         * the new end position of the log if successful.
+         *
+         * @param data    Data to append to the log.
+         * @param timeout Max number of time units to wait before a
+         *                {@link TimeoutException}.
+         * @param unit    Type of time units used for the timeout, e.g. seconds,
+         *                minutes, etc.
+         *
+         * @return        The new end-position.
+         *
+         * @throws TimeoutException       If the append doesn't happen before the
+         *                                timeout.
+         * @throws WriterFailedException  If the append fails due that the writer
+         *                                no longer has the ability to perform its
+         *                                operations (e.g., because it was
+         *                                superseded by another writer).
+         * @see TimeUnit
+         * @see WriterFailedException
+         */
+        public native Position append(byte[] data, long timeout, TimeUnit unit)
+                throws TimeoutException, WriterFailedException;
+
+        /**
+         * Attempts to truncate the log (from the beginning to the
+         * specified position exclusive) If the position is invalid, an
+         * {@link WriterFailedException} will get thrown. Unfortunately, this will
+         * also get thrown in other circumstances (e.g., disk failure) and
+         * therefore it is currently impossible to tell these two cases
+         * apart.
+         *
+
+         * @param to      The log will be truncated up to this point.
+         * @param timeout Max number of time units to wait before a
+         *                {@link TimeoutException}.
+         * @param unit    Type of time units used for the timeout, e.g. seconds,
+         *                minutes, etc.
+         *
+         * @return        The position after the truncation.
+         *
+         * @throws TimeoutException       If the truncation doesn't happen before
+         *                                the timeout.
+         * @throws WriterFailedException  If the truncation fails due an invalid
+         *                                position or if the writer no longer has
+         *                                the ability to perform its operations
+         *                                (e.g., because it was superseded by
+         *                                another writer).
+         */
+        // TODO(benh):  Throw both OperationFailedException and WriterFailedException
+        //              to differentiate the need for a new writer from a bad
+        //              position, or a bad disk, etc.
+        public native Position truncate(Position to, long timeout, TimeUnit unit)
+                throws TimeoutException, WriterFailedException;
+
+        protected native void initialize(Log log,
+                                         long timeout,
+                                         TimeUnit unit,
+                                         int retries);
+
+        protected native void finalize();
+
+        private Log log; // Keeps the log from getting garbage collected.
+        private long __log;
+        private long __writer;
+    }
+
+    /**
+     * Creates a new replicated log that assumes the specified quorum
+     * size, is backed by a file at the specified path, and coordiantes
+     * with other replicas via the set of process PIDs.
+     *
+     * @param quorum  The quorum size.
+     * @param path    Path to the file backing this log.
+     * @param pids    PIDs of the replicas to coordinate with.
+     */
+    public Log(int quorum,
+               String path,
+               Set<String> pids) {
+        initialize(quorum, path, pids);
+    }
+
+    /**
+     * Creates a new replicated log that assumes the specified quorum
+     * size, is backed by a file at the specified path, and coordiantes
+     * with other replicas associated with the specified ZooKeeper
+     * servers, timeout, and znode (or Zookeeper name space).
+     *
+     * @param quorum  The quorum size.
+     * @param path    Path to the file backing this log.
+     * @param servers List of ZooKeeper servers (e.g., 'ip1:port1,ip2:port2').
+     * @param timeout Max number of time units to wait before a
+     *                {@link TimeoutException}.
+     * @param unit    Type of time units used for the timeout, e.g. seconds,
+     *                minutes, etc.
+     * @param znode   Path to znode where "state" should be rooted.
+     */
+    public Log(int quorum,
+               String path,
+               String servers,
+               long timeout,
+               TimeUnit unit,
+               String znode) {
+        initialize(quorum, path, servers, timeout, unit, znode);
+    }
+
+    /**
+     * Creates a new replicated log that assumes the specified quorum
+     * size, is backed by a file at the specified path, and coordiantes
+     * with other replicas associated with the specified ZooKeeper
+     * servers, timeout, and znode (or Zookeeper name space).
+     *
+     * @param quorum      The quorum size.
+     * @param path        Path to the file backing this log.
+     * @param servers     Zookeper servers/connection string.
+     * @param timeout     Max number of time units to wait before a
+     *                    {@link TimeoutException}.
+     * @param unit        Type of time units used for the timeout, e.g. seconds,
+     *                    minutes, etc.
+     * @param znode       The Zookeeper name space.
+     * @param scheme      Authentication scheme (e.g., "digest").
+     * @param credentials Authentication credentials (e.g., "user:pass").
+     */
+    public Log(int quorum,
+               String path,
+               String servers,
+               long timeout,
+               TimeUnit unit,
+               String znode,
+               String scheme,
+               byte[] credentials) {
+        initialize(quorum, path, servers, timeout, unit, znode, scheme, credentials);
+    }
+
+    /**
+     * Returns a position based off of the bytes recovered from
+     * Position.identity().
+     *
+     * @param identity    Identity, in bytes, of the position.
+     *
+     * @return            The position.
+     */
+    public Position position(byte[] identity) {
+        long value =
+                ((long) (identity[0] & 0xff) << 56) |
+                        ((long) (identity[1] & 0xff) << 48) |
+                        ((long) (identity[2] & 0xff) << 40) |
+                        ((long) (identity[3] & 0xff) << 32) |
+                        ((long) (identity[4] & 0xff) << 24) |
+                        ((long) (identity[5] & 0xff) << 16) |
+                        ((long) (identity[6] & 0xff) << 8) |
+                        ((long) (identity[7] & 0xff));
+        return new Position(value);
+    }
+
+    protected native void initialize(int quorum,
+                                     String path,
+                                     Set<String> pids);
+
+    protected native void initialize(int quorum,
+                                     String path,
+                                     String servers,
+                                     long timeout,
+                                     TimeUnit unit,
+                                     String znode);
+
+    protected native void initialize(int quorum,
+                                     String path,
+                                     String servers,
+                                     long timeout,
+                                     TimeUnit unit,
+                                     String znode,
+                                     String scheme,
+                                     byte[] credentials);
+
+    protected native void finalize();
+
+    private long __log;
+}
diff --git a/myriad-commons/src/main/java/org/apache/mesos/MesosExecutorDriver.java b/myriad-commons/src/main/java/org/apache/mesos/MesosExecutorDriver.java
new file mode 100644
index 0000000..b52a81b
--- /dev/null
+++ b/myriad-commons/src/main/java/org/apache/mesos/MesosExecutorDriver.java
@@ -0,0 +1,97 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.mesos;
+
+import org.apache.mesos.Protos.*;
+
+/**
+ * Concrete implementation of an ExecutorDriver that connects an
+ * Executor with a Mesos slave. The MesosExecutorDriver is
+ * thread-safe.
+ * <p>
+ * The driver is responsible for invoking the Executor callbacks as it
+ * communicates with the Mesos slave.
+ * </p>
+ * <p>
+ * Note that blocking on the MesosExecutorDriver (e.g., via {@link
+ * #join}) doesn't affect the executor callbacks in anyway because
+ * they are handled by a different thread.
+ * </p>
+ * <p>
+ * Note that the driver uses GLOG to do its own logging. GLOG flags can
+ * be set via environment variables, prefixing the flag name with
+ * "GLOG_", e.g., "GLOG_v=1". For Mesos specific logging flags see
+ * src/logging/flags.hpp. Mesos flags can also be set via environment
+ * variables, prefixing the flag name with "MESOS_", e.g.,
+ * "MESOS_QUIET=1".
+ * </p>
+ * <p>
+ * See src/examples/java/TestExecutor.java for an example of using the
+ * MesosExecutorDriver.
+ * </p>
+ */
+public class MesosExecutorDriver implements ExecutorDriver {
+    static {
+        MesosNativeLibrary.load();
+    }
+
+    /**
+     * Creates a new driver that uses the specified Executor.
+     *
+     * @param executor    The instance of the executor that will be used
+     *                    to connect to the slave.
+     *
+     * @see Executor
+     */
+    public MesosExecutorDriver(Executor executor) {
+        if (executor == null) {
+            throw new NullPointerException("Not expecting a null Executor");
+        }
+
+        this.executor = executor;
+
+        initialize();
+    }
+
+    /**
+     * See ExecutorDriver for descriptions of these.
+     *
+     * @see ExecutorDriver
+     */
+    public native Status start();
+    public native Status stop();
+    public native Status abort();
+    public native Status join();
+
+    public Status run() {
+        Status status = start();
+        return status != Status.DRIVER_RUNNING ? status : join();
+    }
+
+    public native Status sendStatusUpdate(TaskStatus status);
+    public native Status sendFrameworkMessage(byte[] data);
+
+    protected native void initialize();
+    protected native void finalize();
+
+    private final Executor executor;
+
+    private long __executor;
+    private long __driver;
+}
diff --git a/myriad-commons/src/main/java/org/apache/mesos/MesosNativeLibrary.java b/myriad-commons/src/main/java/org/apache/mesos/MesosNativeLibrary.java
new file mode 100644
index 0000000..4ce325c
--- /dev/null
+++ b/myriad-commons/src/main/java/org/apache/mesos/MesosNativeLibrary.java
@@ -0,0 +1,245 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.mesos;
+
+public class MesosNativeLibrary {
+    /**
+     * Represent a 'libmesos' version with Major, Minor, and Patch versions. We
+     * use a class here to make it easier to do version compatibility checking.
+     * For example:
+     * <pre>
+     * {@code
+     * static Version BugFixVersion = new Version(0, 22, 1);
+     * public static void myFunction() {
+     *   if (version().compareTo(BugFixVersion) >= 0) {
+     *     // New behavior with bug fix.
+     *   } else {
+     *     // Old behavior for backwards compatibility.
+     *   }
+     * }
+     * }
+     * </pre>
+     */
+    public static class Version implements Comparable<Version> {
+        public Version(long major, long minor, long patch) {
+            if (major < 0) {
+                throw new IllegalArgumentException(
+                        "Major version must not be negative");
+            }
+
+            if (minor < 0) {
+                throw new IllegalArgumentException(
+                        "Minor version must not be negative");
+            }
+
+            if (patch < 0) {
+                throw new IllegalArgumentException(
+                        "Patch version must not be negative");
+            }
+
+            this.major = major;
+            this.minor = minor;
+            this.patch = patch;
+        }
+
+        public Version(long major, long minor) {
+            this(major, minor, 0);
+        }
+
+        public Version(long major) {
+            this(major, 0, 0);
+        }
+
+        public boolean equals(Version other) {
+            return other != null &&
+                    major == other.major &&
+                    minor == other.minor &&
+                    patch == other.patch;
+        }
+
+        /**
+         * Compare this version to an 'other' one. The comparison is done
+         * lexicographically. This returns -1 if this version is 'lesser' than the
+         * other, 0 if they are equivalent, and 1 if this version is 'greater'.
+         */
+        @Override
+        public int compareTo(Version other) {
+            if (other == null) {
+                throw new IllegalArgumentException("other Version must not be null");
+            }
+
+            if (major < other.major) {
+                return -1;
+            } else if (major > other.major) {
+                return 1;
+            }
+
+            if (minor < other.minor) {
+                return -1;
+            } else if (minor > other.minor) {
+                return 1;
+            }
+
+            if (patch < other.patch) {
+                return -1;
+            } else if (patch > other.patch) {
+                return 1;
+            }
+
+            return 0;
+        }
+
+        /**
+         * A helper that is easier to use than 'compareTo', this returns
+         * true if 'this' version is strictly 'less than', not 'less than
+         * or equal to' the 'other' version.
+         */
+        public boolean before(Version other) {
+            return this.compareTo(other) < 0;
+        }
+
+        /**
+         * A helper that is easier to use than 'compareTo', this returns
+         * true if 'this' version is strictly 'greater than', not 'greater
+         * than or equal to' the 'other' version.
+         */
+        public boolean after(Version other) {
+            return this.compareTo(other) > 0;
+        }
+
+        public final long major;
+        public final long minor;
+        public final long patch;
+    }
+
+    /**
+     * Attempts to load the native library (if it was not previously loaded)
+     * from the given path. If the path is null 'java.library.path' is used to
+     * load the library.
+     */
+    public static synchronized void load(String path) {
+        // Our JNI library will actually set 'loaded' to true once it is
+        // loaded, that way the library can get loaded by a user via
+        // 'System.load' in the event that they want to specify an
+        // absolute path and we won't try and reload the library ourselves
+        // (which would probably fail because 'java.library.path' might
+        // not be set).
+        if (loaded) {
+            return;
+        }
+
+        // In some circumstances, such as when sandboxed class loaders are used,
+        // the current thread's context class loader will not be able to see
+        // MesosNativeLibrary (even when executing this code!).
+        // We therefore, temporarily swap the thread's context class loader with
+        // the class loader that loaded this class, for the duration of the native
+        // library load.
+        ClassLoader contextClassLoader =
+                Thread.currentThread().getContextClassLoader();
+        Thread.currentThread().setContextClassLoader(
+                MesosNativeLibrary.class.getClassLoader());
+        try {
+            if (path != null) {
+                System.load(path);
+            } else {
+                // TODO(tillt): Change the default fallback to JNI specific library
+                // once libmesos has been split.
+                System.loadLibrary("mesos");
+            }
+        } catch (UnsatisfiedLinkError error) {
+            System.err.println("Failed to load native Mesos library from " +
+                    (path != null ? path : System.getProperty("java.library.path")));
+            throw error;
+        } finally {
+            Thread.currentThread().setContextClassLoader(contextClassLoader);
+        }
+    }
+
+    public static void load() {
+        // Try to get the JNI specific library path from the environment.
+        String path = System.getenv("MESOS_NATIVE_JAVA_LIBRARY");
+
+        // As a fallback, use deprecated environment variable to extract that path.
+        if (path == null) {
+            path = System.getenv("MESOS_NATIVE_LIBRARY");
+            if (path != null) {
+                System.out.println("Warning: MESOS_NATIVE_LIBRARY is deprecated, " +
+                        "use MESOS_NATIVE_JAVA_LIBRARY instead. Future releases will " +
+                        "not support JNI bindings via MESOS_NATIVE_LIBRARY.");
+            }
+        }
+
+        load(path);
+    }
+
+    /**
+     * Returns the version of the native loaded library, or throws a
+     * runtime exception if the library is not loaded. This was
+     * introduced in MESOS 0.22.1. Any version prior to that will be
+     * 0.0.0. This means you should not make version specific decision
+     * before the 0.22.1 version boundary. For example, if you found a
+     * bug that was fixed in 0.19.0, you will *not* be able to perform
+     * the following check correctly:
+     *
+     *   if (version().before(new Version(0, 19, 0))) {
+     *     ...
+     *   }
+     *
+     * This predicate will return true for all versions up until 0.22.1.
+     */
+    public static synchronized Version version() {
+        // Since we allow 'load' to be called with a parameter, we can not load on
+        // behalf of the user here. Instead, we throw an exception if the library
+        // has not been loaded.
+        if (!loaded) {
+            throw new RuntimeException("'libmesos' not loaded");
+        }
+
+        if (version == null) {
+            // Try to load the libmesos version identifier. If we get an
+            // 'UnsatisfiedLinkError' then this means we are loading a 'libmesos' with
+            // a version prior to 0.22.1, which is when the 'MAJOR', 'MINOR', and
+            // 'PATCH' version identifiers were introduced.
+            try {
+                version = _version();
+            } catch (UnsatisfiedLinkError error) {
+                System.err.println(
+                        "WARNING: using an old version of 'libmesos'" +
+                                " without proper version information: " + error.getMessage());
+
+                // If we're using a version of 'libmesos' less than 0.22.1, then we set
+                // the version to 0.0.0.
+                version = new Version(0, 0, 0);
+            }
+        }
+
+        return version;
+    }
+
+    public static final String VERSION = "1.5.0";
+
+    private static Version version = null;
+
+    private static boolean loaded = false;
+
+    /**
+     * Native implementation of 'libmesos' version identifier function.
+     */
+    private static native Version _version();
+}
diff --git a/myriad-commons/src/main/java/org/apache/mesos/MesosSchedulerDriver.java b/myriad-commons/src/main/java/org/apache/mesos/MesosSchedulerDriver.java
new file mode 100644
index 0000000..4f61da2
--- /dev/null
+++ b/myriad-commons/src/main/java/org/apache/mesos/MesosSchedulerDriver.java
@@ -0,0 +1,307 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.mesos;
+
+import java.util.Collection;
+
+import org.apache.mesos.Protos.*;
+
+/**
+ * Concrete implementation of a SchedulerDriver that connects a
+ * Scheduler with a Mesos master. The MesosSchedulerDriver is
+ * thread-safe.
+ * <p>
+ * Note that scheduler failover is supported in Mesos. After a
+ * scheduler is registered with Mesos it may failover (to a new
+ * process on the same machine or across multiple machines) by
+ * creating a new driver with the ID given to it in {@link
+ * Scheduler#registered}.
+ * <p>
+ * The driver is responsible for invoking the Scheduler callbacks as
+ * it communicates with the Mesos master.
+ * <p>
+ * Note that blocking on the MesosSchedulerDriver (e.g., via {@link
+ * #join}) doesn't affect the scheduler callbacks in anyway because
+ * they are handled by a different thread.
+ * <p>
+ * <p>
+ * Note that the driver uses GLOG to do its own logging. GLOG flags can
+ * be set via environment variables, prefixing the flag name with
+ * "GLOG_", e.g., "GLOG_v=1". For Mesos specific logging flags see
+ * src/logging/flags.hpp. Mesos flags can also be set via environment
+ * variables, prefixing the flag name with "MESOS_", e.g.,
+ * "MESOS_QUIET=1".
+ * <p>
+ * See src/examples/java/TestFramework.java for an example of using
+ * the MesosSchedulerDriver.
+ */
+public class MesosSchedulerDriver implements SchedulerDriver {
+    static {
+        MesosNativeLibrary.load();
+    }
+
+    /**
+     * Creates a new driver for the specified scheduler. The master
+     * should be one of:
+     * <pre>
+     * {@code
+     *     host:port
+     *     zk://host1:port1,host2:port2,.../path
+     *     zk://username:password@host1:port1,host2:port2,.../path
+     *     file:///path/to/file (where file contains one of the above)
+     * }
+     * </pre>
+     * <p>
+     * The driver will attempt to "failover" if the specified
+     * FrameworkInfo includes a valid FrameworkID.
+     * <p>
+     * Any Mesos configuration options are read from environment
+     * variables, as well as any configuration files found through the
+     * environment variables.
+     * <p>
+     *
+     * @param scheduler The scheduler implementation which callbacks are invoked
+     *                  upon scheduler events.
+     * @param framework The frameworkInfo describing the current framework.
+     * @param master    The address to the currently active Mesos master.
+     */
+    // TODO(vinod): Deprecate this in favor the constructor that takes
+    //              'credential' as parameter.
+    public MesosSchedulerDriver(Scheduler scheduler,
+                                FrameworkInfo framework,
+                                String master) {
+        if (scheduler == null) {
+            throw new NullPointerException("Not expecting a null Scheduler");
+        }
+
+        if (framework == null) {
+            throw new NullPointerException("Not expecting a null FrameworkInfo");
+        }
+
+        if (master == null) {
+            throw new NullPointerException("Not expecting a null master");
+        }
+
+        this.scheduler = scheduler;
+        this.framework = framework;
+        this.master = master;
+        this.implicitAcknowledgements = true;
+        this.credential = null;
+
+        initialize();
+    }
+
+    /**
+     * Same as the other constructors, except that it accepts the newly
+     * introduced 'credential' parameter.
+     *
+     * @param scheduler   The scheduler implementation which callbacks are invoked
+     *                    upon scheduler events.
+     * @param framework   The frameworkInfo describing the current framework.
+     * @param master      The address to the currently active Mesos master.
+     * @param credential  The credentials that will be used used to authenticate
+     *                    calls from this scheduler.
+     */
+    public MesosSchedulerDriver(Scheduler scheduler,
+                                FrameworkInfo framework,
+                                String master,
+                                Credential credential) {
+
+        if (scheduler == null) {
+            throw new NullPointerException("Not expecting a null Scheduler");
+        }
+
+        if (framework == null) {
+            throw new NullPointerException("Not expecting a null FrameworkInfo");
+        }
+
+        if (master == null) {
+            throw new NullPointerException("Not expecting a null master");
+        }
+
+        if (credential == null) {
+            throw new NullPointerException("Not expecting a null credential");
+        }
+
+        this.scheduler = scheduler;
+        this.framework = framework;
+        this.master = master;
+        this.implicitAcknowledgements = true;
+        this.credential = credential;
+
+        initialize();
+    }
+
+    /**
+     * Same as the other constructors, except that it accepts the newly
+     * introduced 'implicitAcknowledgements' parameter.
+     *
+     * @param scheduler   The scheduler implementation which callbacks are invoked
+     *                    upon scheduler events.
+     * @param framework   The frameworkInfo describing the current framework.
+     * @param master      The address to the currently active Mesos master.
+     * @param implicitAcknowledgements  Whether the driver should send
+     *            acknowledgements on behalf of the scheduler. Setting this to
+     *            false allows schedulers to perform their own acknowledgements,
+     *            which enables asynchronous / batch processing of status updates.
+     */
+    public MesosSchedulerDriver(Scheduler scheduler,
+                                FrameworkInfo framework,
+                                String master,
+                                boolean implicitAcknowledgements) {
+
+        if (scheduler == null) {
+            throw new NullPointerException("Not expecting a null Scheduler");
+        }
+
+        if (framework == null) {
+            throw new NullPointerException("Not expecting a null FrameworkInfo");
+        }
+
+        if (master == null) {
+            throw new NullPointerException("Not expecting a null master");
+        }
+
+        this.scheduler = scheduler;
+        this.framework = framework;
+        this.master = master;
+        this.implicitAcknowledgements = implicitAcknowledgements;
+        this.credential = null;
+
+        initialize();
+    }
+
+    /**
+     * Same as the other constructors, except that it accepts the newly
+     * introduced 'implicitAcknowledgements' and 'credentials' parameters.
+     *
+     * @param scheduler   The scheduler implementation which callbacks are invoked
+     *                    upon scheduler events.
+     * @param framework   The frameworkInfo describing the current framework.
+     * @param master      The address to the currently active Mesos master.
+     * @param implicitAcknowledgements  Whether the driver should send
+     *            acknowledgements on behalf of the scheduler. Setting this to
+     *            false allows schedulers to perform their own acknowledgements,
+     *            which enables asynchronous / batch processing of status updates.
+     * @param credential  The credentials that will be used used to authenticate
+     *                    calls from this scheduler.
+     */
+    public MesosSchedulerDriver(Scheduler scheduler,
+                                FrameworkInfo framework,
+                                String master,
+                                boolean implicitAcknowledgements,
+                                Credential credential) {
+
+        if (scheduler == null) {
+            throw new NullPointerException("Not expecting a null Scheduler");
+        }
+
+        if (framework == null) {
+            throw new NullPointerException("Not expecting a null FrameworkInfo");
+        }
+
+        if (master == null) {
+            throw new NullPointerException("Not expecting a null master");
+        }
+
+        if (credential == null) {
+            throw new NullPointerException("Not expecting a null credential");
+        }
+
+        this.scheduler = scheduler;
+        this.framework = framework;
+        this.master = master;
+        this.implicitAcknowledgements = implicitAcknowledgements;
+        this.credential = credential;
+
+        initialize();
+    }
+
+    public native Status start();
+
+    public native Status stop(boolean failover);
+
+    public Status stop() {
+        return stop(false);
+    }
+
+    public native Status abort();
+
+    public native Status join();
+
+    public Status run() {
+        Status status = start();
+        return status != Status.DRIVER_RUNNING ? status : join();
+    }
+
+    public native Status requestResources(Collection<Request> requests);
+
+    public Status launchTasks(OfferID offerId,
+                              Collection<TaskInfo> tasks) {
+        return launchTasks(offerId, tasks, Filters.newBuilder().build());
+    }
+
+    public native Status launchTasks(OfferID offerId,
+                                     Collection<TaskInfo> tasks,
+                                     Filters filters);
+    public Status launchTasks(Collection<OfferID> offerIds,
+                              Collection<TaskInfo> tasks) {
+        return launchTasks(offerIds, tasks, Filters.newBuilder().build());
+    }
+
+    public native Status launchTasks(Collection<OfferID> offerIds,
+                                     Collection<TaskInfo> tasks,
+                                     Filters filters);
+
+    public native Status killTask(TaskID taskId);
+
+    public native Status acceptOffers(Collection<OfferID> offerIds,
+                                      Collection<Offer.Operation> operations,
+                                      Filters filters);
+
+    public Status declineOffer(OfferID offerId) {
+        return declineOffer(offerId, Filters.newBuilder().build());
+    }
+
+    public native Status declineOffer(OfferID offerId, Filters filters);
+
+    public native Status reviveOffers();
+
+    public native Status suppressOffers();
+
+    public native Status acknowledgeStatusUpdate(TaskStatus status);
+
+    public native Status sendFrameworkMessage(ExecutorID executorId,
+                                              SlaveID slaveId,
+                                              byte[] data);
+
+    public native Status reconcileTasks(Collection<TaskStatus> statuses);
+
+    protected native void initialize();
+    protected native void finalize();
+
+    private final Scheduler scheduler;
+    private final FrameworkInfo framework;
+    private final String master;
+    private final boolean implicitAcknowledgements;
+    private final Credential credential;
+
+    private long __scheduler;
+    private long __driver;
+}
diff --git a/myriad-commons/src/main/java/org/apache/mesos/Protos.java b/myriad-commons/src/main/java/org/apache/mesos/Protos.java
new file mode 100644
index 0000000..6a97384
--- /dev/null
+++ b/myriad-commons/src/main/java/org/apache/mesos/Protos.java
@@ -0,0 +1,162923 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: mesos/mesos.proto
+
+package org.apache.mesos;
+
+public final class Protos {
+  private Protos() {}
+  public static void registerAllExtensions(
+      com.google.protobuf.ExtensionRegistry registry) {
+  }
+  /**
+   * Protobuf enum {@code mesos.Status}
+   *
+   * <pre>
+   **
+   * Status is used to indicate the state of the scheduler and executor
+   * driver after function calls.
+   * </pre>
+   */
+  public enum Status
+      implements com.google.protobuf.ProtocolMessageEnum {
+    /**
+     * <code>DRIVER_NOT_STARTED = 1;</code>
+     */
+    DRIVER_NOT_STARTED(0, 1),
+    /**
+     * <code>DRIVER_RUNNING = 2;</code>
+     */
+    DRIVER_RUNNING(1, 2),
+    /**
+     * <code>DRIVER_ABORTED = 3;</code>
+     */
+    DRIVER_ABORTED(2, 3),
+    /**
+     * <code>DRIVER_STOPPED = 4;</code>
+     */
+    DRIVER_STOPPED(3, 4),
+    ;
+
+    /**
+     * <code>DRIVER_NOT_STARTED = 1;</code>
+     */
+    public static final int DRIVER_NOT_STARTED_VALUE = 1;
+    /**
+     * <code>DRIVER_RUNNING = 2;</code>
+     */
+    public static final int DRIVER_RUNNING_VALUE = 2;
+    /**
+     * <code>DRIVER_ABORTED = 3;</code>
+     */
+    public static final int DRIVER_ABORTED_VALUE = 3;
+    /**
+     * <code>DRIVER_STOPPED = 4;</code>
+     */
+    public static final int DRIVER_STOPPED_VALUE = 4;
+
+
+    public final int getNumber() { return value; }
+
+    public static Status valueOf(int value) {
+      switch (value) {
+        case 1: return DRIVER_NOT_STARTED;
+        case 2: return DRIVER_RUNNING;
+        case 3: return DRIVER_ABORTED;
+        case 4: return DRIVER_STOPPED;
+        default: return null;
+      }
+    }
+
+    public static com.google.protobuf.Internal.EnumLiteMap<Status>
+        internalGetValueMap() {
+      return internalValueMap;
+    }
+    private static com.google.protobuf.Internal.EnumLiteMap<Status>
+        internalValueMap =
+          new com.google.protobuf.Internal.EnumLiteMap<Status>() {
+            public Status findValueByNumber(int number) {
+              return Status.valueOf(number);
+            }
+          };
+
+    public final com.google.protobuf.Descriptors.EnumValueDescriptor
+        getValueDescriptor() {
+      return getDescriptor().getValues().get(index);
+    }
+    public final com.google.protobuf.Descriptors.EnumDescriptor
+        getDescriptorForType() {
+      return getDescriptor();
+    }
+    public static final com.google.protobuf.Descriptors.EnumDescriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.getDescriptor().getEnumTypes().get(0);
+    }
+
+    private static final Status[] VALUES = values();
+
+    public static Status valueOf(
+        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+      if (desc.getType() != getDescriptor()) {
+        throw new java.lang.IllegalArgumentException(
+          "EnumValueDescriptor is not for this type.");
+      }
+      return VALUES[desc.getIndex()];
+    }
+
+    private final int index;
+    private final int value;
+
+    private Status(int index, int value) {
+      this.index = index;
+      this.value = value;
+    }
+
+    // @@protoc_insertion_point(enum_scope:mesos.Status)
+  }
+
+  /**
+   * Protobuf enum {@code mesos.TaskState}
+   *
+   * <pre>
+   **
+   * Describes possible task states. IMPORTANT: Mesos assumes tasks that
+   * enter terminal states (see below) imply the task is no longer
+   * running and thus clean up any thing associated with the task
+   * (ultimately offering any resources being consumed by that task to
+   * another task).
+   * </pre>
+   */
+  public enum TaskState
+      implements com.google.protobuf.ProtocolMessageEnum {
+    /**
+     * <code>TASK_STAGING = 6;</code>
+     *
+     * <pre>
+     * Initial state. Framework status updates should not use.
+     * </pre>
+     */
+    TASK_STAGING(0, 6),
+    /**
+     * <code>TASK_STARTING = 0;</code>
+     *
+     * <pre>
+     * The task is being launched by the executor.
+     * </pre>
+     */
+    TASK_STARTING(1, 0),
+    /**
+     * <code>TASK_RUNNING = 1;</code>
+     */
+    TASK_RUNNING(2, 1),
+    /**
+     * <code>TASK_KILLING = 8;</code>
+     *
+     * <pre>
+     * NOTE: This should only be sent when the framework has
+     * the TASK_KILLING_STATE capability.
+     * </pre>
+     */
+    TASK_KILLING(3, 8),
+    /**
+     * <code>TASK_FINISHED = 2;</code>
+     *
+     * <pre>
+     * TERMINAL: The task finished successfully.
+     * </pre>
+     */
+    TASK_FINISHED(4, 2),
+    /**
+     * <code>TASK_FAILED = 3;</code>
+     *
+     * <pre>
+     * TERMINAL: The task failed to finish successfully.
+     * </pre>
+     */
+    TASK_FAILED(5, 3),
+    /**
+     * <code>TASK_KILLED = 4;</code>
+     *
+     * <pre>
+     * TERMINAL: The task was killed by the executor.
+     * </pre>
+     */
+    TASK_KILLED(6, 4),
+    /**
+     * <code>TASK_ERROR = 7;</code>
+     *
+     * <pre>
+     * TERMINAL: The task description contains an error.
+     * </pre>
+     */
+    TASK_ERROR(7, 7),
+    /**
+     * <code>TASK_LOST = 5;</code>
+     *
+     * <pre>
+     * In Mesos 1.3, this will only be sent when the framework does NOT
+     * opt-in to the PARTITION_AWARE capability.
+     *
+     * NOTE: This state is not always terminal. For example, tasks might
+     * transition from TASK_LOST to TASK_RUNNING or other states when a
+     * partitioned agent re-registers.
+     * </pre>
+     */
+    TASK_LOST(8, 5),
+    /**
+     * <code>TASK_DROPPED = 9;</code>
+     *
+     * <pre>
+     * The task failed to launch because of a transient error. The
+     * task's executor never started running. Unlike TASK_ERROR, the
+     * task description is valid -- attempting to launch the task again
+     * may be successful.
+     * </pre>
+     */
+    TASK_DROPPED(9, 9),
+    /**
+     * <code>TASK_UNREACHABLE = 10;</code>
+     *
+     * <pre>
+     * The task was running on an agent that has lost contact with the
+     * master, typically due to a network failure or partition. The task
+     * may or may not still be running.
+     * </pre>
+     */
+    TASK_UNREACHABLE(10, 10),
+    /**
+     * <code>TASK_GONE = 11;</code>
+     *
+     * <pre>
+     * The task is no longer running. This can occur if the agent has
+     * been terminated along with all of its tasks (e.g., the host that
+     * was running the agent was rebooted). It might also occur if the
+     * task was terminated due to an agent or containerizer error, or if
+     * the task was preempted by the QoS controller in an
+     * oversubscription scenario.
+     * </pre>
+     */
+    TASK_GONE(11, 11),
+    /**
+     * <code>TASK_GONE_BY_OPERATOR = 12;</code>
+     *
+     * <pre>
+     * The task was running on an agent that the master cannot contact;
+     * the operator has asserted that the agent has been shutdown, but
+     * this has not been directly confirmed by the master. If the
+     * operator is correct, the task is not running and this is a
+     * terminal state; if the operator is mistaken, the task may still
+     * be running and might return to RUNNING in the future.
+     * </pre>
+     */
+    TASK_GONE_BY_OPERATOR(12, 12),
+    /**
+     * <code>TASK_UNKNOWN = 13;</code>
+     *
+     * <pre>
+     * The master has no knowledge of the task. This is typically
+     * because either (a) the master never had knowledge of the task, or
+     * (b) the master forgot about the task because it garbage collected
+     * its metadata about the task. The task may or may not still be
+     * running.
+     * </pre>
+     */
+    TASK_UNKNOWN(13, 13),
+    ;
+
+    /**
+     * <code>TASK_STAGING = 6;</code>
+     *
+     * <pre>
+     * Initial state. Framework status updates should not use.
+     * </pre>
+     */
+    public static final int TASK_STAGING_VALUE = 6;
+    /**
+     * <code>TASK_STARTING = 0;</code>
+     *
+     * <pre>
+     * The task is being launched by the executor.
+     * </pre>
+     */
+    public static final int TASK_STARTING_VALUE = 0;
+    /**
+     * <code>TASK_RUNNING = 1;</code>
+     */
+    public static final int TASK_RUNNING_VALUE = 1;
+    /**
+     * <code>TASK_KILLING = 8;</code>
+     *
+     * <pre>
+     * NOTE: This should only be sent when the framework has
+     * the TASK_KILLING_STATE capability.
+     * </pre>
+     */
+    public static final int TASK_KILLING_VALUE = 8;
+    /**
+     * <code>TASK_FINISHED = 2;</code>
+     *
+     * <pre>
+     * TERMINAL: The task finished successfully.
+     * </pre>
+     */
+    public static final int TASK_FINISHED_VALUE = 2;
+    /**
+     * <code>TASK_FAILED = 3;</code>
+     *
+     * <pre>
+     * TERMINAL: The task failed to finish successfully.
+     * </pre>
+     */
+    public static final int TASK_FAILED_VALUE = 3;
+    /**
+     * <code>TASK_KILLED = 4;</code>
+     *
+     * <pre>
+     * TERMINAL: The task was killed by the executor.
+     * </pre>
+     */
+    public static final int TASK_KILLED_VALUE = 4;
+    /**
+     * <code>TASK_ERROR = 7;</code>
+     *
+     * <pre>
+     * TERMINAL: The task description contains an error.
+     * </pre>
+     */
+    public static final int TASK_ERROR_VALUE = 7;
+    /**
+     * <code>TASK_LOST = 5;</code>
+     *
+     * <pre>
+     * In Mesos 1.3, this will only be sent when the framework does NOT
+     * opt-in to the PARTITION_AWARE capability.
+     *
+     * NOTE: This state is not always terminal. For example, tasks might
+     * transition from TASK_LOST to TASK_RUNNING or other states when a
+     * partitioned agent re-registers.
+     * </pre>
+     */
+    public static final int TASK_LOST_VALUE = 5;
+    /**
+     * <code>TASK_DROPPED = 9;</code>
+     *
+     * <pre>
+     * The task failed to launch because of a transient error. The
+     * task's executor never started running. Unlike TASK_ERROR, the
+     * task description is valid -- attempting to launch the task again
+     * may be successful.
+     * </pre>
+     */
+    public static final int TASK_DROPPED_VALUE = 9;
+    /**
+     * <code>TASK_UNREACHABLE = 10;</code>
+     *
+     * <pre>
+     * The task was running on an agent that has lost contact with the
+     * master, typically due to a network failure or partition. The task
+     * may or may not still be running.
+     * </pre>
+     */
+    public static final int TASK_UNREACHABLE_VALUE = 10;
+    /**
+     * <code>TASK_GONE = 11;</code>
+     *
+     * <pre>
+     * The task is no longer running. This can occur if the agent has
+     * been terminated along with all of its tasks (e.g., the host that
+     * was running the agent was rebooted). It might also occur if the
+     * task was terminated due to an agent or containerizer error, or if
+     * the task was preempted by the QoS controller in an
+     * oversubscription scenario.
+     * </pre>
+     */
+    public static final int TASK_GONE_VALUE = 11;
+    /**
+     * <code>TASK_GONE_BY_OPERATOR = 12;</code>
+     *
+     * <pre>
+     * The task was running on an agent that the master cannot contact;
+     * the operator has asserted that the agent has been shutdown, but
+     * this has not been directly confirmed by the master. If the
+     * operator is correct, the task is not running and this is a
+     * terminal state; if the operator is mistaken, the task may still
+     * be running and might return to RUNNING in the future.
+     * </pre>
+     */
+    public static final int TASK_GONE_BY_OPERATOR_VALUE = 12;
+    /**
+     * <code>TASK_UNKNOWN = 13;</code>
+     *
+     * <pre>
+     * The master has no knowledge of the task. This is typically
+     * because either (a) the master never had knowledge of the task, or
+     * (b) the master forgot about the task because it garbage collected
+     * its metadata about the task. The task may or may not still be
+     * running.
+     * </pre>
+     */
+    public static final int TASK_UNKNOWN_VALUE = 13;
+
+
+    public final int getNumber() { return value; }
+
+    public static TaskState valueOf(int value) {
+      switch (value) {
+        case 6: return TASK_STAGING;
+        case 0: return TASK_STARTING;
+        case 1: return TASK_RUNNING;
+        case 8: return TASK_KILLING;
+        case 2: return TASK_FINISHED;
+        case 3: return TASK_FAILED;
+        case 4: return TASK_KILLED;
+        case 7: return TASK_ERROR;
+        case 5: return TASK_LOST;
+        case 9: return TASK_DROPPED;
+        case 10: return TASK_UNREACHABLE;
+        case 11: return TASK_GONE;
+        case 12: return TASK_GONE_BY_OPERATOR;
+        case 13: return TASK_UNKNOWN;
+        default: return null;
+      }
+    }
+
+    public static com.google.protobuf.Internal.EnumLiteMap<TaskState>
+        internalGetValueMap() {
+      return internalValueMap;
+    }
+    private static com.google.protobuf.Internal.EnumLiteMap<TaskState>
+        internalValueMap =
+          new com.google.protobuf.Internal.EnumLiteMap<TaskState>() {
+            public TaskState findValueByNumber(int number) {
+              return TaskState.valueOf(number);
+            }
+          };
+
+    public final com.google.protobuf.Descriptors.EnumValueDescriptor
+        getValueDescriptor() {
+      return getDescriptor().getValues().get(index);
+    }
+    public final com.google.protobuf.Descriptors.EnumDescriptor
+        getDescriptorForType() {
+      return getDescriptor();
+    }
+    public static final com.google.protobuf.Descriptors.EnumDescriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.getDescriptor().getEnumTypes().get(1);
+    }
+
+    private static final TaskState[] VALUES = values();
+
+    public static TaskState valueOf(
+        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+      if (desc.getType() != getDescriptor()) {
+        throw new java.lang.IllegalArgumentException(
+          "EnumValueDescriptor is not for this type.");
+      }
+      return VALUES[desc.getIndex()];
+    }
+
+    private final int index;
+    private final int value;
+
+    private TaskState(int index, int value) {
+      this.index = index;
+      this.value = value;
+    }
+
+    // @@protoc_insertion_point(enum_scope:mesos.TaskState)
+  }
+
+  public interface FrameworkIDOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string value = 1;
+    /**
+     * <code>required string value = 1;</code>
+     */
+    boolean hasValue();
+    /**
+     * <code>required string value = 1;</code>
+     */
+    java.lang.String getValue();
+    /**
+     * <code>required string value = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getValueBytes();
+  }
+  /**
+   * Protobuf type {@code mesos.FrameworkID}
+   *
+   * <pre>
+   **
+   * A unique ID assigned to a framework. A framework can reuse this ID
+   * in order to do failover (see MesosSchedulerDriver).
+   * </pre>
+   */
+  public static final class FrameworkID extends
+      com.google.protobuf.GeneratedMessage
+      implements FrameworkIDOrBuilder {
+    // Use FrameworkID.newBuilder() to construct.
+    private FrameworkID(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private FrameworkID(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final FrameworkID defaultInstance;
+    public static FrameworkID getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public FrameworkID getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private FrameworkID(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              value_ = input.readBytes();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_FrameworkID_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_FrameworkID_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.FrameworkID.class, org.apache.mesos.Protos.FrameworkID.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<FrameworkID> PARSER =
+        new com.google.protobuf.AbstractParser<FrameworkID>() {
+      public FrameworkID parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new FrameworkID(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<FrameworkID> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string value = 1;
+    public static final int VALUE_FIELD_NUMBER = 1;
+    private java.lang.Object value_;
+    /**
+     * <code>required string value = 1;</code>
+     */
+    public boolean hasValue() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string value = 1;</code>
+     */
+    public java.lang.String getValue() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          value_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string value = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getValueBytes() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        value_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      value_ = "";
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasValue()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getValueBytes());
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getValueBytes());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.FrameworkID parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.FrameworkID parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.FrameworkID parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.FrameworkID parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.FrameworkID parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.FrameworkID parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.FrameworkID parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.FrameworkID parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.FrameworkID parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.FrameworkID parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.FrameworkID prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.FrameworkID}
+     *
+     * <pre>
+     **
+     * A unique ID assigned to a framework. A framework can reuse this ID
+     * in order to do failover (see MesosSchedulerDriver).
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.FrameworkIDOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_FrameworkID_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_FrameworkID_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.FrameworkID.class, org.apache.mesos.Protos.FrameworkID.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.FrameworkID.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        value_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_FrameworkID_descriptor;
+      }
+
+      public org.apache.mesos.Protos.FrameworkID getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.FrameworkID.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.FrameworkID build() {
+        org.apache.mesos.Protos.FrameworkID result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.FrameworkID buildPartial() {
+        org.apache.mesos.Protos.FrameworkID result = new org.apache.mesos.Protos.FrameworkID(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.value_ = value_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.FrameworkID) {
+          return mergeFrom((org.apache.mesos.Protos.FrameworkID)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.FrameworkID other) {
+        if (other == org.apache.mesos.Protos.FrameworkID.getDefaultInstance()) return this;
+        if (other.hasValue()) {
+          bitField0_ |= 0x00000001;
+          value_ = other.value_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasValue()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.FrameworkID parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.FrameworkID) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string value = 1;
+      private java.lang.Object value_ = "";
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public boolean hasValue() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public java.lang.String getValue() {
+        java.lang.Object ref = value_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          value_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getValueBytes() {
+        java.lang.Object ref = value_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          value_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public Builder setValue(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public Builder clearValue() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        value_ = getDefaultInstance().getValue();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public Builder setValueBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.FrameworkID)
+    }
+
+    static {
+      defaultInstance = new FrameworkID(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.FrameworkID)
+  }
+
+  public interface OfferIDOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string value = 1;
+    /**
+     * <code>required string value = 1;</code>
+     */
+    boolean hasValue();
+    /**
+     * <code>required string value = 1;</code>
+     */
+    java.lang.String getValue();
+    /**
+     * <code>required string value = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getValueBytes();
+  }
+  /**
+   * Protobuf type {@code mesos.OfferID}
+   *
+   * <pre>
+   **
+   * A unique ID assigned to an offer.
+   * </pre>
+   */
+  public static final class OfferID extends
+      com.google.protobuf.GeneratedMessage
+      implements OfferIDOrBuilder {
+    // Use OfferID.newBuilder() to construct.
+    private OfferID(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private OfferID(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final OfferID defaultInstance;
+    public static OfferID getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public OfferID getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private OfferID(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              value_ = input.readBytes();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_OfferID_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_OfferID_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.OfferID.class, org.apache.mesos.Protos.OfferID.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<OfferID> PARSER =
+        new com.google.protobuf.AbstractParser<OfferID>() {
+      public OfferID parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new OfferID(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<OfferID> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string value = 1;
+    public static final int VALUE_FIELD_NUMBER = 1;
+    private java.lang.Object value_;
+    /**
+     * <code>required string value = 1;</code>
+     */
+    public boolean hasValue() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string value = 1;</code>
+     */
+    public java.lang.String getValue() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          value_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string value = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getValueBytes() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        value_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      value_ = "";
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasValue()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getValueBytes());
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getValueBytes());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.OfferID parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.OfferID parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.OfferID parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.OfferID parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.OfferID parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.OfferID parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.OfferID parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.OfferID parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.OfferID parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.OfferID parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.OfferID prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.OfferID}
+     *
+     * <pre>
+     **
+     * A unique ID assigned to an offer.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.OfferIDOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_OfferID_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_OfferID_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.OfferID.class, org.apache.mesos.Protos.OfferID.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.OfferID.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        value_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_OfferID_descriptor;
+      }
+
+      public org.apache.mesos.Protos.OfferID getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.OfferID.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.OfferID build() {
+        org.apache.mesos.Protos.OfferID result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.OfferID buildPartial() {
+        org.apache.mesos.Protos.OfferID result = new org.apache.mesos.Protos.OfferID(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.value_ = value_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.OfferID) {
+          return mergeFrom((org.apache.mesos.Protos.OfferID)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.OfferID other) {
+        if (other == org.apache.mesos.Protos.OfferID.getDefaultInstance()) return this;
+        if (other.hasValue()) {
+          bitField0_ |= 0x00000001;
+          value_ = other.value_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasValue()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.OfferID parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.OfferID) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string value = 1;
+      private java.lang.Object value_ = "";
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public boolean hasValue() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public java.lang.String getValue() {
+        java.lang.Object ref = value_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          value_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getValueBytes() {
+        java.lang.Object ref = value_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          value_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public Builder setValue(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public Builder clearValue() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        value_ = getDefaultInstance().getValue();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public Builder setValueBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.OfferID)
+    }
+
+    static {
+      defaultInstance = new OfferID(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.OfferID)
+  }
+
+  public interface SlaveIDOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string value = 1;
+    /**
+     * <code>required string value = 1;</code>
+     */
+    boolean hasValue();
+    /**
+     * <code>required string value = 1;</code>
+     */
+    java.lang.String getValue();
+    /**
+     * <code>required string value = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getValueBytes();
+  }
+  /**
+   * Protobuf type {@code mesos.SlaveID}
+   *
+   * <pre>
+   **
+   * A unique ID assigned to a slave. Currently, a slave gets a new ID
+   * whenever it (re)registers with Mesos. Framework writers shouldn't
+   * assume any binding between a slave ID and and a hostname.
+   * </pre>
+   */
+  public static final class SlaveID extends
+      com.google.protobuf.GeneratedMessage
+      implements SlaveIDOrBuilder {
+    // Use SlaveID.newBuilder() to construct.
+    private SlaveID(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private SlaveID(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final SlaveID defaultInstance;
+    public static SlaveID getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public SlaveID getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private SlaveID(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              value_ = input.readBytes();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_SlaveID_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_SlaveID_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.SlaveID.class, org.apache.mesos.Protos.SlaveID.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<SlaveID> PARSER =
+        new com.google.protobuf.AbstractParser<SlaveID>() {
+      public SlaveID parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new SlaveID(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<SlaveID> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string value = 1;
+    public static final int VALUE_FIELD_NUMBER = 1;
+    private java.lang.Object value_;
+    /**
+     * <code>required string value = 1;</code>
+     */
+    public boolean hasValue() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string value = 1;</code>
+     */
+    public java.lang.String getValue() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          value_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string value = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getValueBytes() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        value_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      value_ = "";
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasValue()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getValueBytes());
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getValueBytes());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.SlaveID parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.SlaveID parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.SlaveID parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.SlaveID parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.SlaveID parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.SlaveID parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.SlaveID parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.SlaveID parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.SlaveID parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.SlaveID parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.SlaveID prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.SlaveID}
+     *
+     * <pre>
+     **
+     * A unique ID assigned to a slave. Currently, a slave gets a new ID
+     * whenever it (re)registers with Mesos. Framework writers shouldn't
+     * assume any binding between a slave ID and and a hostname.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.SlaveIDOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_SlaveID_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_SlaveID_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.SlaveID.class, org.apache.mesos.Protos.SlaveID.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.SlaveID.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        value_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_SlaveID_descriptor;
+      }
+
+      public org.apache.mesos.Protos.SlaveID getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.SlaveID build() {
+        org.apache.mesos.Protos.SlaveID result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.SlaveID buildPartial() {
+        org.apache.mesos.Protos.SlaveID result = new org.apache.mesos.Protos.SlaveID(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.value_ = value_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.SlaveID) {
+          return mergeFrom((org.apache.mesos.Protos.SlaveID)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.SlaveID other) {
+        if (other == org.apache.mesos.Protos.SlaveID.getDefaultInstance()) return this;
+        if (other.hasValue()) {
+          bitField0_ |= 0x00000001;
+          value_ = other.value_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasValue()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.SlaveID parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.SlaveID) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string value = 1;
+      private java.lang.Object value_ = "";
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public boolean hasValue() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public java.lang.String getValue() {
+        java.lang.Object ref = value_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          value_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getValueBytes() {
+        java.lang.Object ref = value_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          value_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public Builder setValue(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public Builder clearValue() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        value_ = getDefaultInstance().getValue();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public Builder setValueBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.SlaveID)
+    }
+
+    static {
+      defaultInstance = new SlaveID(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.SlaveID)
+  }
+
+  public interface TaskIDOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string value = 1;
+    /**
+     * <code>required string value = 1;</code>
+     */
+    boolean hasValue();
+    /**
+     * <code>required string value = 1;</code>
+     */
+    java.lang.String getValue();
+    /**
+     * <code>required string value = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getValueBytes();
+  }
+  /**
+   * Protobuf type {@code mesos.TaskID}
+   *
+   * <pre>
+   **
+   * A framework-generated ID to distinguish a task. The ID must remain
+   * unique while the task is active. A framework can reuse an ID _only_
+   * if the previous task with the same ID has reached a terminal state
+   * (e.g., TASK_FINISHED, TASK_KILLED, etc.). However, reusing task IDs
+   * is strongly discouraged (MESOS-2198).
+   * </pre>
+   */
+  public static final class TaskID extends
+      com.google.protobuf.GeneratedMessage
+      implements TaskIDOrBuilder {
+    // Use TaskID.newBuilder() to construct.
+    private TaskID(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private TaskID(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final TaskID defaultInstance;
+    public static TaskID getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public TaskID getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private TaskID(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              value_ = input.readBytes();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_TaskID_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_TaskID_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.TaskID.class, org.apache.mesos.Protos.TaskID.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<TaskID> PARSER =
+        new com.google.protobuf.AbstractParser<TaskID>() {
+      public TaskID parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new TaskID(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<TaskID> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string value = 1;
+    public static final int VALUE_FIELD_NUMBER = 1;
+    private java.lang.Object value_;
+    /**
+     * <code>required string value = 1;</code>
+     */
+    public boolean hasValue() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string value = 1;</code>
+     */
+    public java.lang.String getValue() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          value_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string value = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getValueBytes() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        value_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      value_ = "";
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasValue()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getValueBytes());
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getValueBytes());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.TaskID parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.TaskID parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.TaskID parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.TaskID parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.TaskID parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.TaskID parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.TaskID parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.TaskID parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.TaskID parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.TaskID parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.TaskID prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.TaskID}
+     *
+     * <pre>
+     **
+     * A framework-generated ID to distinguish a task. The ID must remain
+     * unique while the task is active. A framework can reuse an ID _only_
+     * if the previous task with the same ID has reached a terminal state
+     * (e.g., TASK_FINISHED, TASK_KILLED, etc.). However, reusing task IDs
+     * is strongly discouraged (MESOS-2198).
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.TaskIDOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_TaskID_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_TaskID_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.TaskID.class, org.apache.mesos.Protos.TaskID.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.TaskID.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        value_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_TaskID_descriptor;
+      }
+
+      public org.apache.mesos.Protos.TaskID getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.TaskID.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.TaskID build() {
+        org.apache.mesos.Protos.TaskID result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.TaskID buildPartial() {
+        org.apache.mesos.Protos.TaskID result = new org.apache.mesos.Protos.TaskID(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.value_ = value_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.TaskID) {
+          return mergeFrom((org.apache.mesos.Protos.TaskID)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.TaskID other) {
+        if (other == org.apache.mesos.Protos.TaskID.getDefaultInstance()) return this;
+        if (other.hasValue()) {
+          bitField0_ |= 0x00000001;
+          value_ = other.value_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasValue()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.TaskID parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.TaskID) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string value = 1;
+      private java.lang.Object value_ = "";
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public boolean hasValue() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public java.lang.String getValue() {
+        java.lang.Object ref = value_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          value_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getValueBytes() {
+        java.lang.Object ref = value_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          value_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public Builder setValue(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public Builder clearValue() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        value_ = getDefaultInstance().getValue();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public Builder setValueBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.TaskID)
+    }
+
+    static {
+      defaultInstance = new TaskID(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.TaskID)
+  }
+
+  public interface ExecutorIDOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string value = 1;
+    /**
+     * <code>required string value = 1;</code>
+     */
+    boolean hasValue();
+    /**
+     * <code>required string value = 1;</code>
+     */
+    java.lang.String getValue();
+    /**
+     * <code>required string value = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getValueBytes();
+  }
+  /**
+   * Protobuf type {@code mesos.ExecutorID}
+   *
+   * <pre>
+   **
+   * A framework-generated ID to distinguish an executor. Only one
+   * executor with the same ID can be active on the same slave at a
+   * time. However, reusing executor IDs is discouraged.
+   * </pre>
+   */
+  public static final class ExecutorID extends
+      com.google.protobuf.GeneratedMessage
+      implements ExecutorIDOrBuilder {
+    // Use ExecutorID.newBuilder() to construct.
+    private ExecutorID(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private ExecutorID(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final ExecutorID defaultInstance;
+    public static ExecutorID getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public ExecutorID getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private ExecutorID(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              value_ = input.readBytes();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_ExecutorID_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_ExecutorID_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.ExecutorID.class, org.apache.mesos.Protos.ExecutorID.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<ExecutorID> PARSER =
+        new com.google.protobuf.AbstractParser<ExecutorID>() {
+      public ExecutorID parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new ExecutorID(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<ExecutorID> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string value = 1;
+    public static final int VALUE_FIELD_NUMBER = 1;
+    private java.lang.Object value_;
+    /**
+     * <code>required string value = 1;</code>
+     */
+    public boolean hasValue() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string value = 1;</code>
+     */
+    public java.lang.String getValue() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          value_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string value = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getValueBytes() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        value_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      value_ = "";
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasValue()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getValueBytes());
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getValueBytes());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.ExecutorID parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.ExecutorID parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.ExecutorID parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.ExecutorID parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.ExecutorID parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.ExecutorID parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.ExecutorID parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.ExecutorID parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.ExecutorID parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.ExecutorID parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.ExecutorID prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.ExecutorID}
+     *
+     * <pre>
+     **
+     * A framework-generated ID to distinguish an executor. Only one
+     * executor with the same ID can be active on the same slave at a
+     * time. However, reusing executor IDs is discouraged.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.ExecutorIDOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_ExecutorID_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_ExecutorID_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.ExecutorID.class, org.apache.mesos.Protos.ExecutorID.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.ExecutorID.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        value_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_ExecutorID_descriptor;
+      }
+
+      public org.apache.mesos.Protos.ExecutorID getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.ExecutorID.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.ExecutorID build() {
+        org.apache.mesos.Protos.ExecutorID result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.ExecutorID buildPartial() {
+        org.apache.mesos.Protos.ExecutorID result = new org.apache.mesos.Protos.ExecutorID(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.value_ = value_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.ExecutorID) {
+          return mergeFrom((org.apache.mesos.Protos.ExecutorID)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.ExecutorID other) {
+        if (other == org.apache.mesos.Protos.ExecutorID.getDefaultInstance()) return this;
+        if (other.hasValue()) {
+          bitField0_ |= 0x00000001;
+          value_ = other.value_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasValue()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.ExecutorID parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.ExecutorID) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string value = 1;
+      private java.lang.Object value_ = "";
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public boolean hasValue() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public java.lang.String getValue() {
+        java.lang.Object ref = value_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          value_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getValueBytes() {
+        java.lang.Object ref = value_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          value_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public Builder setValue(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public Builder clearValue() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        value_ = getDefaultInstance().getValue();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public Builder setValueBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.ExecutorID)
+    }
+
+    static {
+      defaultInstance = new ExecutorID(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.ExecutorID)
+  }
+
+  public interface ContainerIDOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string value = 1;
+    /**
+     * <code>required string value = 1;</code>
+     */
+    boolean hasValue();
+    /**
+     * <code>required string value = 1;</code>
+     */
+    java.lang.String getValue();
+    /**
+     * <code>required string value = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getValueBytes();
+
+    // optional .mesos.ContainerID parent = 2;
+    /**
+     * <code>optional .mesos.ContainerID parent = 2;</code>
+     */
+    boolean hasParent();
+    /**
+     * <code>optional .mesos.ContainerID parent = 2;</code>
+     */
+    org.apache.mesos.Protos.ContainerID getParent();
+    /**
+     * <code>optional .mesos.ContainerID parent = 2;</code>
+     */
+    org.apache.mesos.Protos.ContainerIDOrBuilder getParentOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.ContainerID}
+   *
+   * <pre>
+   **
+   * ID used to uniquely identify a container. If the `parent` is not
+   * specified, the ID is a UUID generated by the agent to uniquely
+   * identify the container of an executor run. If the `parent` field is
+   * specified, it represents a nested container.
+   * </pre>
+   */
+  public static final class ContainerID extends
+      com.google.protobuf.GeneratedMessage
+      implements ContainerIDOrBuilder {
+    // Use ContainerID.newBuilder() to construct.
+    private ContainerID(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private ContainerID(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final ContainerID defaultInstance;
+    public static ContainerID getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public ContainerID getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private ContainerID(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              value_ = input.readBytes();
+              break;
+            }
+            case 18: {
+              org.apache.mesos.Protos.ContainerID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = parent_.toBuilder();
+              }
+              parent_ = input.readMessage(org.apache.mesos.Protos.ContainerID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(parent_);
+                parent_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_ContainerID_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_ContainerID_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.ContainerID.class, org.apache.mesos.Protos.ContainerID.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<ContainerID> PARSER =
+        new com.google.protobuf.AbstractParser<ContainerID>() {
+      public ContainerID parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new ContainerID(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<ContainerID> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string value = 1;
+    public static final int VALUE_FIELD_NUMBER = 1;
+    private java.lang.Object value_;
+    /**
+     * <code>required string value = 1;</code>
+     */
+    public boolean hasValue() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string value = 1;</code>
+     */
+    public java.lang.String getValue() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          value_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string value = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getValueBytes() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        value_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional .mesos.ContainerID parent = 2;
+    public static final int PARENT_FIELD_NUMBER = 2;
+    private org.apache.mesos.Protos.ContainerID parent_;
+    /**
+     * <code>optional .mesos.ContainerID parent = 2;</code>
+     */
+    public boolean hasParent() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional .mesos.ContainerID parent = 2;</code>
+     */
+    public org.apache.mesos.Protos.ContainerID getParent() {
+      return parent_;
+    }
+    /**
+     * <code>optional .mesos.ContainerID parent = 2;</code>
+     */
+    public org.apache.mesos.Protos.ContainerIDOrBuilder getParentOrBuilder() {
+      return parent_;
+    }
+
+    private void initFields() {
+      value_ = "";
+      parent_ = org.apache.mesos.Protos.ContainerID.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasValue()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (hasParent()) {
+        if (!getParent().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getValueBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(2, parent_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getValueBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, parent_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.ContainerID parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.ContainerID parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.ContainerID parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.ContainerID parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.ContainerID parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.ContainerID parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.ContainerID parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.ContainerID parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.ContainerID parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.ContainerID parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.ContainerID prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.ContainerID}
+     *
+     * <pre>
+     **
+     * ID used to uniquely identify a container. If the `parent` is not
+     * specified, the ID is a UUID generated by the agent to uniquely
+     * identify the container of an executor run. If the `parent` field is
+     * specified, it represents a nested container.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.ContainerIDOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_ContainerID_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_ContainerID_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.ContainerID.class, org.apache.mesos.Protos.ContainerID.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.ContainerID.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getParentFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        value_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (parentBuilder_ == null) {
+          parent_ = org.apache.mesos.Protos.ContainerID.getDefaultInstance();
+        } else {
+          parentBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_ContainerID_descriptor;
+      }
+
+      public org.apache.mesos.Protos.ContainerID getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.ContainerID.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.ContainerID build() {
+        org.apache.mesos.Protos.ContainerID result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.ContainerID buildPartial() {
+        org.apache.mesos.Protos.ContainerID result = new org.apache.mesos.Protos.ContainerID(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.value_ = value_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (parentBuilder_ == null) {
+          result.parent_ = parent_;
+        } else {
+          result.parent_ = parentBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.ContainerID) {
+          return mergeFrom((org.apache.mesos.Protos.ContainerID)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.ContainerID other) {
+        if (other == org.apache.mesos.Protos.ContainerID.getDefaultInstance()) return this;
+        if (other.hasValue()) {
+          bitField0_ |= 0x00000001;
+          value_ = other.value_;
+          onChanged();
+        }
+        if (other.hasParent()) {
+          mergeParent(other.getParent());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasValue()) {
+          
+          return false;
+        }
+        if (hasParent()) {
+          if (!getParent().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.ContainerID parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.ContainerID) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string value = 1;
+      private java.lang.Object value_ = "";
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public boolean hasValue() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public java.lang.String getValue() {
+        java.lang.Object ref = value_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          value_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getValueBytes() {
+        java.lang.Object ref = value_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          value_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public Builder setValue(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public Builder clearValue() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        value_ = getDefaultInstance().getValue();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public Builder setValueBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.ContainerID parent = 2;
+      private org.apache.mesos.Protos.ContainerID parent_ = org.apache.mesos.Protos.ContainerID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.ContainerID, org.apache.mesos.Protos.ContainerID.Builder, org.apache.mesos.Protos.ContainerIDOrBuilder> parentBuilder_;
+      /**
+       * <code>optional .mesos.ContainerID parent = 2;</code>
+       */
+      public boolean hasParent() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.ContainerID parent = 2;</code>
+       */
+      public org.apache.mesos.Protos.ContainerID getParent() {
+        if (parentBuilder_ == null) {
+          return parent_;
+        } else {
+          return parentBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.ContainerID parent = 2;</code>
+       */
+      public Builder setParent(org.apache.mesos.Protos.ContainerID value) {
+        if (parentBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          parent_ = value;
+          onChanged();
+        } else {
+          parentBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ContainerID parent = 2;</code>
+       */
+      public Builder setParent(
+          org.apache.mesos.Protos.ContainerID.Builder builderForValue) {
+        if (parentBuilder_ == null) {
+          parent_ = builderForValue.build();
+          onChanged();
+        } else {
+          parentBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ContainerID parent = 2;</code>
+       */
+      public Builder mergeParent(org.apache.mesos.Protos.ContainerID value) {
+        if (parentBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              parent_ != org.apache.mesos.Protos.ContainerID.getDefaultInstance()) {
+            parent_ =
+              org.apache.mesos.Protos.ContainerID.newBuilder(parent_).mergeFrom(value).buildPartial();
+          } else {
+            parent_ = value;
+          }
+          onChanged();
+        } else {
+          parentBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ContainerID parent = 2;</code>
+       */
+      public Builder clearParent() {
+        if (parentBuilder_ == null) {
+          parent_ = org.apache.mesos.Protos.ContainerID.getDefaultInstance();
+          onChanged();
+        } else {
+          parentBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ContainerID parent = 2;</code>
+       */
+      public org.apache.mesos.Protos.ContainerID.Builder getParentBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getParentFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.ContainerID parent = 2;</code>
+       */
+      public org.apache.mesos.Protos.ContainerIDOrBuilder getParentOrBuilder() {
+        if (parentBuilder_ != null) {
+          return parentBuilder_.getMessageOrBuilder();
+        } else {
+          return parent_;
+        }
+      }
+      /**
+       * <code>optional .mesos.ContainerID parent = 2;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.ContainerID, org.apache.mesos.Protos.ContainerID.Builder, org.apache.mesos.Protos.ContainerIDOrBuilder> 
+          getParentFieldBuilder() {
+        if (parentBuilder_ == null) {
+          parentBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.ContainerID, org.apache.mesos.Protos.ContainerID.Builder, org.apache.mesos.Protos.ContainerIDOrBuilder>(
+                  parent_,
+                  getParentForChildren(),
+                  isClean());
+          parent_ = null;
+        }
+        return parentBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.ContainerID)
+    }
+
+    static {
+      defaultInstance = new ContainerID(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.ContainerID)
+  }
+
+  public interface ResourceProviderIDOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string value = 1;
+    /**
+     * <code>required string value = 1;</code>
+     */
+    boolean hasValue();
+    /**
+     * <code>required string value = 1;</code>
+     */
+    java.lang.String getValue();
+    /**
+     * <code>required string value = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getValueBytes();
+  }
+  /**
+   * Protobuf type {@code mesos.ResourceProviderID}
+   *
+   * <pre>
+   **
+   * A unique ID assigned to a resource provider. Currently, a resource
+   * provider gets a new ID whenever it (re)registers with Mesos.
+   * </pre>
+   */
+  public static final class ResourceProviderID extends
+      com.google.protobuf.GeneratedMessage
+      implements ResourceProviderIDOrBuilder {
+    // Use ResourceProviderID.newBuilder() to construct.
+    private ResourceProviderID(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private ResourceProviderID(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final ResourceProviderID defaultInstance;
+    public static ResourceProviderID getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public ResourceProviderID getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private ResourceProviderID(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              value_ = input.readBytes();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_ResourceProviderID_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_ResourceProviderID_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.ResourceProviderID.class, org.apache.mesos.Protos.ResourceProviderID.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<ResourceProviderID> PARSER =
+        new com.google.protobuf.AbstractParser<ResourceProviderID>() {
+      public ResourceProviderID parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new ResourceProviderID(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<ResourceProviderID> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string value = 1;
+    public static final int VALUE_FIELD_NUMBER = 1;
+    private java.lang.Object value_;
+    /**
+     * <code>required string value = 1;</code>
+     */
+    public boolean hasValue() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string value = 1;</code>
+     */
+    public java.lang.String getValue() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          value_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string value = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getValueBytes() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        value_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      value_ = "";
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasValue()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getValueBytes());
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getValueBytes());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.ResourceProviderID parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.ResourceProviderID parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.ResourceProviderID parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.ResourceProviderID parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.ResourceProviderID parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.ResourceProviderID parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.ResourceProviderID parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.ResourceProviderID parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.ResourceProviderID parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.ResourceProviderID parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.ResourceProviderID prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.ResourceProviderID}
+     *
+     * <pre>
+     **
+     * A unique ID assigned to a resource provider. Currently, a resource
+     * provider gets a new ID whenever it (re)registers with Mesos.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.ResourceProviderIDOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_ResourceProviderID_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_ResourceProviderID_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.ResourceProviderID.class, org.apache.mesos.Protos.ResourceProviderID.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.ResourceProviderID.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        value_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_ResourceProviderID_descriptor;
+      }
+
+      public org.apache.mesos.Protos.ResourceProviderID getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.ResourceProviderID.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.ResourceProviderID build() {
+        org.apache.mesos.Protos.ResourceProviderID result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.ResourceProviderID buildPartial() {
+        org.apache.mesos.Protos.ResourceProviderID result = new org.apache.mesos.Protos.ResourceProviderID(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.value_ = value_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.ResourceProviderID) {
+          return mergeFrom((org.apache.mesos.Protos.ResourceProviderID)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.ResourceProviderID other) {
+        if (other == org.apache.mesos.Protos.ResourceProviderID.getDefaultInstance()) return this;
+        if (other.hasValue()) {
+          bitField0_ |= 0x00000001;
+          value_ = other.value_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasValue()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.ResourceProviderID parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.ResourceProviderID) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string value = 1;
+      private java.lang.Object value_ = "";
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public boolean hasValue() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public java.lang.String getValue() {
+        java.lang.Object ref = value_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          value_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getValueBytes() {
+        java.lang.Object ref = value_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          value_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public Builder setValue(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public Builder clearValue() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        value_ = getDefaultInstance().getValue();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public Builder setValueBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.ResourceProviderID)
+    }
+
+    static {
+      defaultInstance = new ResourceProviderID(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.ResourceProviderID)
+  }
+
+  public interface TimeInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required int64 nanoseconds = 1;
+    /**
+     * <code>required int64 nanoseconds = 1;</code>
+     */
+    boolean hasNanoseconds();
+    /**
+     * <code>required int64 nanoseconds = 1;</code>
+     */
+    long getNanoseconds();
+  }
+  /**
+   * Protobuf type {@code mesos.TimeInfo}
+   *
+   * <pre>
+   **
+   * Represents time since the epoch, in nanoseconds.
+   * </pre>
+   */
+  public static final class TimeInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements TimeInfoOrBuilder {
+    // Use TimeInfo.newBuilder() to construct.
+    private TimeInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private TimeInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final TimeInfo defaultInstance;
+    public static TimeInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public TimeInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private TimeInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 8: {
+              bitField0_ |= 0x00000001;
+              nanoseconds_ = input.readInt64();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_TimeInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_TimeInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.TimeInfo.class, org.apache.mesos.Protos.TimeInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<TimeInfo> PARSER =
+        new com.google.protobuf.AbstractParser<TimeInfo>() {
+      public TimeInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new TimeInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<TimeInfo> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required int64 nanoseconds = 1;
+    public static final int NANOSECONDS_FIELD_NUMBER = 1;
+    private long nanoseconds_;
+    /**
+     * <code>required int64 nanoseconds = 1;</code>
+     */
+    public boolean hasNanoseconds() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required int64 nanoseconds = 1;</code>
+     */
+    public long getNanoseconds() {
+      return nanoseconds_;
+    }
+
+    private void initFields() {
+      nanoseconds_ = 0L;
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasNanoseconds()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeInt64(1, nanoseconds_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(1, nanoseconds_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.TimeInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.TimeInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.TimeInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.TimeInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.TimeInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.TimeInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.TimeInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.TimeInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.TimeInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.TimeInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.TimeInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.TimeInfo}
+     *
+     * <pre>
+     **
+     * Represents time since the epoch, in nanoseconds.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.TimeInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_TimeInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_TimeInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.TimeInfo.class, org.apache.mesos.Protos.TimeInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.TimeInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        nanoseconds_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_TimeInfo_descriptor;
+      }
+
+      public org.apache.mesos.Protos.TimeInfo getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.TimeInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.TimeInfo build() {
+        org.apache.mesos.Protos.TimeInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.TimeInfo buildPartial() {
+        org.apache.mesos.Protos.TimeInfo result = new org.apache.mesos.Protos.TimeInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.nanoseconds_ = nanoseconds_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.TimeInfo) {
+          return mergeFrom((org.apache.mesos.Protos.TimeInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.TimeInfo other) {
+        if (other == org.apache.mesos.Protos.TimeInfo.getDefaultInstance()) return this;
+        if (other.hasNanoseconds()) {
+          setNanoseconds(other.getNanoseconds());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasNanoseconds()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.TimeInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.TimeInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required int64 nanoseconds = 1;
+      private long nanoseconds_ ;
+      /**
+       * <code>required int64 nanoseconds = 1;</code>
+       */
+      public boolean hasNanoseconds() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required int64 nanoseconds = 1;</code>
+       */
+      public long getNanoseconds() {
+        return nanoseconds_;
+      }
+      /**
+       * <code>required int64 nanoseconds = 1;</code>
+       */
+      public Builder setNanoseconds(long value) {
+        bitField0_ |= 0x00000001;
+        nanoseconds_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required int64 nanoseconds = 1;</code>
+       */
+      public Builder clearNanoseconds() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        nanoseconds_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.TimeInfo)
+    }
+
+    static {
+      defaultInstance = new TimeInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.TimeInfo)
+  }
+
+  public interface DurationInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required int64 nanoseconds = 1;
+    /**
+     * <code>required int64 nanoseconds = 1;</code>
+     */
+    boolean hasNanoseconds();
+    /**
+     * <code>required int64 nanoseconds = 1;</code>
+     */
+    long getNanoseconds();
+  }
+  /**
+   * Protobuf type {@code mesos.DurationInfo}
+   *
+   * <pre>
+   **
+   * Represents duration in nanoseconds.
+   * </pre>
+   */
+  public static final class DurationInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements DurationInfoOrBuilder {
+    // Use DurationInfo.newBuilder() to construct.
+    private DurationInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private DurationInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final DurationInfo defaultInstance;
+    public static DurationInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public DurationInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private DurationInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 8: {
+              bitField0_ |= 0x00000001;
+              nanoseconds_ = input.readInt64();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_DurationInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_DurationInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.DurationInfo.class, org.apache.mesos.Protos.DurationInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<DurationInfo> PARSER =
+        new com.google.protobuf.AbstractParser<DurationInfo>() {
+      public DurationInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new DurationInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<DurationInfo> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required int64 nanoseconds = 1;
+    public static final int NANOSECONDS_FIELD_NUMBER = 1;
+    private long nanoseconds_;
+    /**
+     * <code>required int64 nanoseconds = 1;</code>
+     */
+    public boolean hasNanoseconds() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required int64 nanoseconds = 1;</code>
+     */
+    public long getNanoseconds() {
+      return nanoseconds_;
+    }
+
+    private void initFields() {
+      nanoseconds_ = 0L;
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasNanoseconds()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeInt64(1, nanoseconds_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(1, nanoseconds_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.DurationInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.DurationInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.DurationInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.DurationInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.DurationInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.DurationInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.DurationInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.DurationInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.DurationInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.DurationInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.DurationInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.DurationInfo}
+     *
+     * <pre>
+     **
+     * Represents duration in nanoseconds.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.DurationInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_DurationInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_DurationInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.DurationInfo.class, org.apache.mesos.Protos.DurationInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.DurationInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        nanoseconds_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_DurationInfo_descriptor;
+      }
+
+      public org.apache.mesos.Protos.DurationInfo getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.DurationInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.DurationInfo build() {
+        org.apache.mesos.Protos.DurationInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.DurationInfo buildPartial() {
+        org.apache.mesos.Protos.DurationInfo result = new org.apache.mesos.Protos.DurationInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.nanoseconds_ = nanoseconds_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.DurationInfo) {
+          return mergeFrom((org.apache.mesos.Protos.DurationInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.DurationInfo other) {
+        if (other == org.apache.mesos.Protos.DurationInfo.getDefaultInstance()) return this;
+        if (other.hasNanoseconds()) {
+          setNanoseconds(other.getNanoseconds());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasNanoseconds()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.DurationInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.DurationInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required int64 nanoseconds = 1;
+      private long nanoseconds_ ;
+      /**
+       * <code>required int64 nanoseconds = 1;</code>
+       */
+      public boolean hasNanoseconds() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required int64 nanoseconds = 1;</code>
+       */
+      public long getNanoseconds() {
+        return nanoseconds_;
+      }
+      /**
+       * <code>required int64 nanoseconds = 1;</code>
+       */
+      public Builder setNanoseconds(long value) {
+        bitField0_ |= 0x00000001;
+        nanoseconds_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required int64 nanoseconds = 1;</code>
+       */
+      public Builder clearNanoseconds() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        nanoseconds_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.DurationInfo)
+    }
+
+    static {
+      defaultInstance = new DurationInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.DurationInfo)
+  }
+
+  public interface AddressOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional string hostname = 1;
+    /**
+     * <code>optional string hostname = 1;</code>
+     *
+     * <pre>
+     * May contain a hostname, IP address, or both.
+     * </pre>
+     */
+    boolean hasHostname();
+    /**
+     * <code>optional string hostname = 1;</code>
+     *
+     * <pre>
+     * May contain a hostname, IP address, or both.
+     * </pre>
+     */
+    java.lang.String getHostname();
+    /**
+     * <code>optional string hostname = 1;</code>
+     *
+     * <pre>
+     * May contain a hostname, IP address, or both.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getHostnameBytes();
+
+    // optional string ip = 2;
+    /**
+     * <code>optional string ip = 2;</code>
+     */
+    boolean hasIp();
+    /**
+     * <code>optional string ip = 2;</code>
+     */
+    java.lang.String getIp();
+    /**
+     * <code>optional string ip = 2;</code>
+     */
+    com.google.protobuf.ByteString
+        getIpBytes();
+
+    // required int32 port = 3;
+    /**
+     * <code>required int32 port = 3;</code>
+     */
+    boolean hasPort();
+    /**
+     * <code>required int32 port = 3;</code>
+     */
+    int getPort();
+  }
+  /**
+   * Protobuf type {@code mesos.Address}
+   *
+   * <pre>
+   **
+   * A network address.
+   *
+   * TODO(bmahler): Use this more widely.
+   * </pre>
+   */
+  public static final class Address extends
+      com.google.protobuf.GeneratedMessage
+      implements AddressOrBuilder {
+    // Use Address.newBuilder() to construct.
+    private Address(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Address(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Address defaultInstance;
+    public static Address getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Address getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Address(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              hostname_ = input.readBytes();
+              break;
+            }
+            case 18: {
+              bitField0_ |= 0x00000002;
+              ip_ = input.readBytes();
+              break;
+            }
+            case 24: {
+              bitField0_ |= 0x00000004;
+              port_ = input.readInt32();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_Address_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_Address_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.Address.class, org.apache.mesos.Protos.Address.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Address> PARSER =
+        new com.google.protobuf.AbstractParser<Address>() {
+      public Address parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Address(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Address> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // optional string hostname = 1;
+    public static final int HOSTNAME_FIELD_NUMBER = 1;
+    private java.lang.Object hostname_;
+    /**
+     * <code>optional string hostname = 1;</code>
+     *
+     * <pre>
+     * May contain a hostname, IP address, or both.
+     * </pre>
+     */
+    public boolean hasHostname() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional string hostname = 1;</code>
+     *
+     * <pre>
+     * May contain a hostname, IP address, or both.
+     * </pre>
+     */
+    public java.lang.String getHostname() {
+      java.lang.Object ref = hostname_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          hostname_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string hostname = 1;</code>
+     *
+     * <pre>
+     * May contain a hostname, IP address, or both.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getHostnameBytes() {
+      java.lang.Object ref = hostname_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        hostname_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional string ip = 2;
+    public static final int IP_FIELD_NUMBER = 2;
+    private java.lang.Object ip_;
+    /**
+     * <code>optional string ip = 2;</code>
+     */
+    public boolean hasIp() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional string ip = 2;</code>
+     */
+    public java.lang.String getIp() {
+      java.lang.Object ref = ip_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          ip_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string ip = 2;</code>
+     */
+    public com.google.protobuf.ByteString
+        getIpBytes() {
+      java.lang.Object ref = ip_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        ip_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // required int32 port = 3;
+    public static final int PORT_FIELD_NUMBER = 3;
+    private int port_;
+    /**
+     * <code>required int32 port = 3;</code>
+     */
+    public boolean hasPort() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>required int32 port = 3;</code>
+     */
+    public int getPort() {
+      return port_;
+    }
+
+    private void initFields() {
+      hostname_ = "";
+      ip_ = "";
+      port_ = 0;
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasPort()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getHostnameBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(2, getIpBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeInt32(3, port_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getHostnameBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(2, getIpBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt32Size(3, port_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.Address parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Address parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Address parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Address parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Address parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Address parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Address parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.Address parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Address parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Address parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.Address prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.Address}
+     *
+     * <pre>
+     **
+     * A network address.
+     *
+     * TODO(bmahler): Use this more widely.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.AddressOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_Address_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_Address_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.Address.class, org.apache.mesos.Protos.Address.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.Address.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        hostname_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        ip_ = "";
+        bitField0_ = (bitField0_ & ~0x00000002);
+        port_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_Address_descriptor;
+      }
+
+      public org.apache.mesos.Protos.Address getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.Address.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.Address build() {
+        org.apache.mesos.Protos.Address result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.Address buildPartial() {
+        org.apache.mesos.Protos.Address result = new org.apache.mesos.Protos.Address(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.hostname_ = hostname_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.ip_ = ip_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.port_ = port_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.Address) {
+          return mergeFrom((org.apache.mesos.Protos.Address)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.Address other) {
+        if (other == org.apache.mesos.Protos.Address.getDefaultInstance()) return this;
+        if (other.hasHostname()) {
+          bitField0_ |= 0x00000001;
+          hostname_ = other.hostname_;
+          onChanged();
+        }
+        if (other.hasIp()) {
+          bitField0_ |= 0x00000002;
+          ip_ = other.ip_;
+          onChanged();
+        }
+        if (other.hasPort()) {
+          setPort(other.getPort());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasPort()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.Address parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.Address) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional string hostname = 1;
+      private java.lang.Object hostname_ = "";
+      /**
+       * <code>optional string hostname = 1;</code>
+       *
+       * <pre>
+       * May contain a hostname, IP address, or both.
+       * </pre>
+       */
+      public boolean hasHostname() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional string hostname = 1;</code>
+       *
+       * <pre>
+       * May contain a hostname, IP address, or both.
+       * </pre>
+       */
+      public java.lang.String getHostname() {
+        java.lang.Object ref = hostname_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          hostname_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string hostname = 1;</code>
+       *
+       * <pre>
+       * May contain a hostname, IP address, or both.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getHostnameBytes() {
+        java.lang.Object ref = hostname_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          hostname_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string hostname = 1;</code>
+       *
+       * <pre>
+       * May contain a hostname, IP address, or both.
+       * </pre>
+       */
+      public Builder setHostname(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        hostname_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string hostname = 1;</code>
+       *
+       * <pre>
+       * May contain a hostname, IP address, or both.
+       * </pre>
+       */
+      public Builder clearHostname() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        hostname_ = getDefaultInstance().getHostname();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string hostname = 1;</code>
+       *
+       * <pre>
+       * May contain a hostname, IP address, or both.
+       * </pre>
+       */
+      public Builder setHostnameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        hostname_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional string ip = 2;
+      private java.lang.Object ip_ = "";
+      /**
+       * <code>optional string ip = 2;</code>
+       */
+      public boolean hasIp() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional string ip = 2;</code>
+       */
+      public java.lang.String getIp() {
+        java.lang.Object ref = ip_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          ip_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string ip = 2;</code>
+       */
+      public com.google.protobuf.ByteString
+          getIpBytes() {
+        java.lang.Object ref = ip_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          ip_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string ip = 2;</code>
+       */
+      public Builder setIp(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        ip_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string ip = 2;</code>
+       */
+      public Builder clearIp() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        ip_ = getDefaultInstance().getIp();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string ip = 2;</code>
+       */
+      public Builder setIpBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        ip_ = value;
+        onChanged();
+        return this;
+      }
+
+      // required int32 port = 3;
+      private int port_ ;
+      /**
+       * <code>required int32 port = 3;</code>
+       */
+      public boolean hasPort() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>required int32 port = 3;</code>
+       */
+      public int getPort() {
+        return port_;
+      }
+      /**
+       * <code>required int32 port = 3;</code>
+       */
+      public Builder setPort(int value) {
+        bitField0_ |= 0x00000004;
+        port_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required int32 port = 3;</code>
+       */
+      public Builder clearPort() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        port_ = 0;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.Address)
+    }
+
+    static {
+      defaultInstance = new Address(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.Address)
+  }
+
+  public interface URLOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string scheme = 1;
+    /**
+     * <code>required string scheme = 1;</code>
+     */
+    boolean hasScheme();
+    /**
+     * <code>required string scheme = 1;</code>
+     */
+    java.lang.String getScheme();
+    /**
+     * <code>required string scheme = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getSchemeBytes();
+
+    // required .mesos.Address address = 2;
+    /**
+     * <code>required .mesos.Address address = 2;</code>
+     */
+    boolean hasAddress();
+    /**
+     * <code>required .mesos.Address address = 2;</code>
+     */
+    org.apache.mesos.Protos.Address getAddress();
+    /**
+     * <code>required .mesos.Address address = 2;</code>
+     */
+    org.apache.mesos.Protos.AddressOrBuilder getAddressOrBuilder();
+
+    // optional string path = 3;
+    /**
+     * <code>optional string path = 3;</code>
+     */
+    boolean hasPath();
+    /**
+     * <code>optional string path = 3;</code>
+     */
+    java.lang.String getPath();
+    /**
+     * <code>optional string path = 3;</code>
+     */
+    com.google.protobuf.ByteString
+        getPathBytes();
+
+    // repeated .mesos.Parameter query = 4;
+    /**
+     * <code>repeated .mesos.Parameter query = 4;</code>
+     */
+    java.util.List<org.apache.mesos.Protos.Parameter> 
+        getQueryList();
+    /**
+     * <code>repeated .mesos.Parameter query = 4;</code>
+     */
+    org.apache.mesos.Protos.Parameter getQuery(int index);
+    /**
+     * <code>repeated .mesos.Parameter query = 4;</code>
+     */
+    int getQueryCount();
+    /**
+     * <code>repeated .mesos.Parameter query = 4;</code>
+     */
+    java.util.List<? extends org.apache.mesos.Protos.ParameterOrBuilder> 
+        getQueryOrBuilderList();
+    /**
+     * <code>repeated .mesos.Parameter query = 4;</code>
+     */
+    org.apache.mesos.Protos.ParameterOrBuilder getQueryOrBuilder(
+        int index);
+
+    // optional string fragment = 5;
+    /**
+     * <code>optional string fragment = 5;</code>
+     */
+    boolean hasFragment();
+    /**
+     * <code>optional string fragment = 5;</code>
+     */
+    java.lang.String getFragment();
+    /**
+     * <code>optional string fragment = 5;</code>
+     */
+    com.google.protobuf.ByteString
+        getFragmentBytes();
+  }
+  /**
+   * Protobuf type {@code mesos.URL}
+   *
+   * <pre>
+   **
+   * Represents a URL.
+   * </pre>
+   */
+  public static final class URL extends
+      com.google.protobuf.GeneratedMessage
+      implements URLOrBuilder {
+    // Use URL.newBuilder() to construct.
+    private URL(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private URL(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final URL defaultInstance;
+    public static URL getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public URL getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private URL(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              scheme_ = input.readBytes();
+              break;
+            }
+            case 18: {
+              org.apache.mesos.Protos.Address.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = address_.toBuilder();
+              }
+              address_ = input.readMessage(org.apache.mesos.Protos.Address.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(address_);
+                address_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+            case 26: {
+              bitField0_ |= 0x00000004;
+              path_ = input.readBytes();
+              break;
+            }
+            case 34: {
+              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
+                query_ = new java.util.ArrayList<org.apache.mesos.Protos.Parameter>();
+                mutable_bitField0_ |= 0x00000008;
+              }
+              query_.add(input.readMessage(org.apache.mesos.Protos.Parameter.PARSER, extensionRegistry));
+              break;
+            }
+            case 42: {
+              bitField0_ |= 0x00000008;
+              fragment_ = input.readBytes();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
+          query_ = java.util.Collections.unmodifiableList(query_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_URL_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_URL_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.URL.class, org.apache.mesos.Protos.URL.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<URL> PARSER =
+        new com.google.protobuf.AbstractParser<URL>() {
+      public URL parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new URL(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<URL> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string scheme = 1;
+    public static final int SCHEME_FIELD_NUMBER = 1;
+    private java.lang.Object scheme_;
+    /**
+     * <code>required string scheme = 1;</code>
+     */
+    public boolean hasScheme() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string scheme = 1;</code>
+     */
+    public java.lang.String getScheme() {
+      java.lang.Object ref = scheme_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          scheme_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string scheme = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getSchemeBytes() {
+      java.lang.Object ref = scheme_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        scheme_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // required .mesos.Address address = 2;
+    public static final int ADDRESS_FIELD_NUMBER = 2;
+    private org.apache.mesos.Protos.Address address_;
+    /**
+     * <code>required .mesos.Address address = 2;</code>
+     */
+    public boolean hasAddress() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>required .mesos.Address address = 2;</code>
+     */
+    public org.apache.mesos.Protos.Address getAddress() {
+      return address_;
+    }
+    /**
+     * <code>required .mesos.Address address = 2;</code>
+     */
+    public org.apache.mesos.Protos.AddressOrBuilder getAddressOrBuilder() {
+      return address_;
+    }
+
+    // optional string path = 3;
+    public static final int PATH_FIELD_NUMBER = 3;
+    private java.lang.Object path_;
+    /**
+     * <code>optional string path = 3;</code>
+     */
+    public boolean hasPath() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional string path = 3;</code>
+     */
+    public java.lang.String getPath() {
+      java.lang.Object ref = path_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          path_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string path = 3;</code>
+     */
+    public com.google.protobuf.ByteString
+        getPathBytes() {
+      java.lang.Object ref = path_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        path_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // repeated .mesos.Parameter query = 4;
+    public static final int QUERY_FIELD_NUMBER = 4;
+    private java.util.List<org.apache.mesos.Protos.Parameter> query_;
+    /**
+     * <code>repeated .mesos.Parameter query = 4;</code>
+     */
+    public java.util.List<org.apache.mesos.Protos.Parameter> getQueryList() {
+      return query_;
+    }
+    /**
+     * <code>repeated .mesos.Parameter query = 4;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.Protos.ParameterOrBuilder> 
+        getQueryOrBuilderList() {
+      return query_;
+    }
+    /**
+     * <code>repeated .mesos.Parameter query = 4;</code>
+     */
+    public int getQueryCount() {
+      return query_.size();
+    }
+    /**
+     * <code>repeated .mesos.Parameter query = 4;</code>
+     */
+    public org.apache.mesos.Protos.Parameter getQuery(int index) {
+      return query_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.Parameter query = 4;</code>
+     */
+    public org.apache.mesos.Protos.ParameterOrBuilder getQueryOrBuilder(
+        int index) {
+      return query_.get(index);
+    }
+
+    // optional string fragment = 5;
+    public static final int FRAGMENT_FIELD_NUMBER = 5;
+    private java.lang.Object fragment_;
+    /**
+     * <code>optional string fragment = 5;</code>
+     */
+    public boolean hasFragment() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional string fragment = 5;</code>
+     */
+    public java.lang.String getFragment() {
+      java.lang.Object ref = fragment_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          fragment_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string fragment = 5;</code>
+     */
+    public com.google.protobuf.ByteString
+        getFragmentBytes() {
+      java.lang.Object ref = fragment_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        fragment_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      scheme_ = "";
+      address_ = org.apache.mesos.Protos.Address.getDefaultInstance();
+      path_ = "";
+      query_ = java.util.Collections.emptyList();
+      fragment_ = "";
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasScheme()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasAddress()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!getAddress().isInitialized()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      for (int i = 0; i < getQueryCount(); i++) {
+        if (!getQuery(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getSchemeBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(2, address_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeBytes(3, getPathBytes());
+      }
+      for (int i = 0; i < query_.size(); i++) {
+        output.writeMessage(4, query_.get(i));
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeBytes(5, getFragmentBytes());
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getSchemeBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, address_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(3, getPathBytes());
+      }
+      for (int i = 0; i < query_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, query_.get(i));
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(5, getFragmentBytes());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.URL parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.URL parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.URL parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.URL parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.URL parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.URL parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.URL parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.URL parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.URL parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.URL parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.URL prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.URL}
+     *
+     * <pre>
+     **
+     * Represents a URL.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.URLOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_URL_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_URL_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.URL.class, org.apache.mesos.Protos.URL.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.URL.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getAddressFieldBuilder();
+          getQueryFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        scheme_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (addressBuilder_ == null) {
+          address_ = org.apache.mesos.Protos.Address.getDefaultInstance();
+        } else {
+          addressBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        path_ = "";
+        bitField0_ = (bitField0_ & ~0x00000004);
+        if (queryBuilder_ == null) {
+          query_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000008);
+        } else {
+          queryBuilder_.clear();
+        }
+        fragment_ = "";
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_URL_descriptor;
+      }
+
+      public org.apache.mesos.Protos.URL getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.URL.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.URL build() {
+        org.apache.mesos.Protos.URL result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.URL buildPartial() {
+        org.apache.mesos.Protos.URL result = new org.apache.mesos.Protos.URL(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.scheme_ = scheme_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (addressBuilder_ == null) {
+          result.address_ = address_;
+        } else {
+          result.address_ = addressBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.path_ = path_;
+        if (queryBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008)) {
+            query_ = java.util.Collections.unmodifiableList(query_);
+            bitField0_ = (bitField0_ & ~0x00000008);
+          }
+          result.query_ = query_;
+        } else {
+          result.query_ = queryBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.fragment_ = fragment_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.URL) {
+          return mergeFrom((org.apache.mesos.Protos.URL)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.URL other) {
+        if (other == org.apache.mesos.Protos.URL.getDefaultInstance()) return this;
+        if (other.hasScheme()) {
+          bitField0_ |= 0x00000001;
+          scheme_ = other.scheme_;
+          onChanged();
+        }
+        if (other.hasAddress()) {
+          mergeAddress(other.getAddress());
+        }
+        if (other.hasPath()) {
+          bitField0_ |= 0x00000004;
+          path_ = other.path_;
+          onChanged();
+        }
+        if (queryBuilder_ == null) {
+          if (!other.query_.isEmpty()) {
+            if (query_.isEmpty()) {
+              query_ = other.query_;
+              bitField0_ = (bitField0_ & ~0x00000008);
+            } else {
+              ensureQueryIsMutable();
+              query_.addAll(other.query_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.query_.isEmpty()) {
+            if (queryBuilder_.isEmpty()) {
+              queryBuilder_.dispose();
+              queryBuilder_ = null;
+              query_ = other.query_;
+              bitField0_ = (bitField0_ & ~0x00000008);
+              queryBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getQueryFieldBuilder() : null;
+            } else {
+              queryBuilder_.addAllMessages(other.query_);
+            }
+          }
+        }
+        if (other.hasFragment()) {
+          bitField0_ |= 0x00000010;
+          fragment_ = other.fragment_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasScheme()) {
+          
+          return false;
+        }
+        if (!hasAddress()) {
+          
+          return false;
+        }
+        if (!getAddress().isInitialized()) {
+          
+          return false;
+        }
+        for (int i = 0; i < getQueryCount(); i++) {
+          if (!getQuery(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.URL parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.URL) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string scheme = 1;
+      private java.lang.Object scheme_ = "";
+      /**
+       * <code>required string scheme = 1;</code>
+       */
+      public boolean hasScheme() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string scheme = 1;</code>
+       */
+      public java.lang.String getScheme() {
+        java.lang.Object ref = scheme_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          scheme_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string scheme = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getSchemeBytes() {
+        java.lang.Object ref = scheme_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          scheme_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string scheme = 1;</code>
+       */
+      public Builder setScheme(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        scheme_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string scheme = 1;</code>
+       */
+      public Builder clearScheme() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        scheme_ = getDefaultInstance().getScheme();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string scheme = 1;</code>
+       */
+      public Builder setSchemeBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        scheme_ = value;
+        onChanged();
+        return this;
+      }
+
+      // required .mesos.Address address = 2;
+      private org.apache.mesos.Protos.Address address_ = org.apache.mesos.Protos.Address.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Address, org.apache.mesos.Protos.Address.Builder, org.apache.mesos.Protos.AddressOrBuilder> addressBuilder_;
+      /**
+       * <code>required .mesos.Address address = 2;</code>
+       */
+      public boolean hasAddress() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required .mesos.Address address = 2;</code>
+       */
+      public org.apache.mesos.Protos.Address getAddress() {
+        if (addressBuilder_ == null) {
+          return address_;
+        } else {
+          return addressBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>required .mesos.Address address = 2;</code>
+       */
+      public Builder setAddress(org.apache.mesos.Protos.Address value) {
+        if (addressBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          address_ = value;
+          onChanged();
+        } else {
+          addressBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.Address address = 2;</code>
+       */
+      public Builder setAddress(
+          org.apache.mesos.Protos.Address.Builder builderForValue) {
+        if (addressBuilder_ == null) {
+          address_ = builderForValue.build();
+          onChanged();
+        } else {
+          addressBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.Address address = 2;</code>
+       */
+      public Builder mergeAddress(org.apache.mesos.Protos.Address value) {
+        if (addressBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              address_ != org.apache.mesos.Protos.Address.getDefaultInstance()) {
+            address_ =
+              org.apache.mesos.Protos.Address.newBuilder(address_).mergeFrom(value).buildPartial();
+          } else {
+            address_ = value;
+          }
+          onChanged();
+        } else {
+          addressBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.Address address = 2;</code>
+       */
+      public Builder clearAddress() {
+        if (addressBuilder_ == null) {
+          address_ = org.apache.mesos.Protos.Address.getDefaultInstance();
+          onChanged();
+        } else {
+          addressBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>required .mesos.Address address = 2;</code>
+       */
+      public org.apache.mesos.Protos.Address.Builder getAddressBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getAddressFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>required .mesos.Address address = 2;</code>
+       */
+      public org.apache.mesos.Protos.AddressOrBuilder getAddressOrBuilder() {
+        if (addressBuilder_ != null) {
+          return addressBuilder_.getMessageOrBuilder();
+        } else {
+          return address_;
+        }
+      }
+      /**
+       * <code>required .mesos.Address address = 2;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Address, org.apache.mesos.Protos.Address.Builder, org.apache.mesos.Protos.AddressOrBuilder> 
+          getAddressFieldBuilder() {
+        if (addressBuilder_ == null) {
+          addressBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Address, org.apache.mesos.Protos.Address.Builder, org.apache.mesos.Protos.AddressOrBuilder>(
+                  address_,
+                  getParentForChildren(),
+                  isClean());
+          address_ = null;
+        }
+        return addressBuilder_;
+      }
+
+      // optional string path = 3;
+      private java.lang.Object path_ = "";
+      /**
+       * <code>optional string path = 3;</code>
+       */
+      public boolean hasPath() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional string path = 3;</code>
+       */
+      public java.lang.String getPath() {
+        java.lang.Object ref = path_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          path_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string path = 3;</code>
+       */
+      public com.google.protobuf.ByteString
+          getPathBytes() {
+        java.lang.Object ref = path_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          path_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string path = 3;</code>
+       */
+      public Builder setPath(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        path_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string path = 3;</code>
+       */
+      public Builder clearPath() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        path_ = getDefaultInstance().getPath();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string path = 3;</code>
+       */
+      public Builder setPathBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        path_ = value;
+        onChanged();
+        return this;
+      }
+
+      // repeated .mesos.Parameter query = 4;
+      private java.util.List<org.apache.mesos.Protos.Parameter> query_ =
+        java.util.Collections.emptyList();
+      private void ensureQueryIsMutable() {
+        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
+          query_ = new java.util.ArrayList<org.apache.mesos.Protos.Parameter>(query_);
+          bitField0_ |= 0x00000008;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.Parameter, org.apache.mesos.Protos.Parameter.Builder, org.apache.mesos.Protos.ParameterOrBuilder> queryBuilder_;
+
+      /**
+       * <code>repeated .mesos.Parameter query = 4;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.Parameter> getQueryList() {
+        if (queryBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(query_);
+        } else {
+          return queryBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.Parameter query = 4;</code>
+       */
+      public int getQueryCount() {
+        if (queryBuilder_ == null) {
+          return query_.size();
+        } else {
+          return queryBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.Parameter query = 4;</code>
+       */
+      public org.apache.mesos.Protos.Parameter getQuery(int index) {
+        if (queryBuilder_ == null) {
+          return query_.get(index);
+        } else {
+          return queryBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Parameter query = 4;</code>
+       */
+      public Builder setQuery(
+          int index, org.apache.mesos.Protos.Parameter value) {
+        if (queryBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureQueryIsMutable();
+          query_.set(index, value);
+          onChanged();
+        } else {
+          queryBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Parameter query = 4;</code>
+       */
+      public Builder setQuery(
+          int index, org.apache.mesos.Protos.Parameter.Builder builderForValue) {
+        if (queryBuilder_ == null) {
+          ensureQueryIsMutable();
+          query_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          queryBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Parameter query = 4;</code>
+       */
+      public Builder addQuery(org.apache.mesos.Protos.Parameter value) {
+        if (queryBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureQueryIsMutable();
+          query_.add(value);
+          onChanged();
+        } else {
+          queryBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Parameter query = 4;</code>
+       */
+      public Builder addQuery(
+          int index, org.apache.mesos.Protos.Parameter value) {
+        if (queryBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureQueryIsMutable();
+          query_.add(index, value);
+          onChanged();
+        } else {
+          queryBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Parameter query = 4;</code>
+       */
+      public Builder addQuery(
+          org.apache.mesos.Protos.Parameter.Builder builderForValue) {
+        if (queryBuilder_ == null) {
+          ensureQueryIsMutable();
+          query_.add(builderForValue.build());
+          onChanged();
+        } else {
+          queryBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Parameter query = 4;</code>
+       */
+      public Builder addQuery(
+          int index, org.apache.mesos.Protos.Parameter.Builder builderForValue) {
+        if (queryBuilder_ == null) {
+          ensureQueryIsMutable();
+          query_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          queryBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Parameter query = 4;</code>
+       */
+      public Builder addAllQuery(
+          java.lang.Iterable<? extends org.apache.mesos.Protos.Parameter> values) {
+        if (queryBuilder_ == null) {
+          ensureQueryIsMutable();
+          super.addAll(values, query_);
+          onChanged();
+        } else {
+          queryBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Parameter query = 4;</code>
+       */
+      public Builder clearQuery() {
+        if (queryBuilder_ == null) {
+          query_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000008);
+          onChanged();
+        } else {
+          queryBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Parameter query = 4;</code>
+       */
+      public Builder removeQuery(int index) {
+        if (queryBuilder_ == null) {
+          ensureQueryIsMutable();
+          query_.remove(index);
+          onChanged();
+        } else {
+          queryBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Parameter query = 4;</code>
+       */
+      public org.apache.mesos.Protos.Parameter.Builder getQueryBuilder(
+          int index) {
+        return getQueryFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.Parameter query = 4;</code>
+       */
+      public org.apache.mesos.Protos.ParameterOrBuilder getQueryOrBuilder(
+          int index) {
+        if (queryBuilder_ == null) {
+          return query_.get(index);  } else {
+          return queryBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Parameter query = 4;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.ParameterOrBuilder> 
+           getQueryOrBuilderList() {
+        if (queryBuilder_ != null) {
+          return queryBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(query_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Parameter query = 4;</code>
+       */
+      public org.apache.mesos.Protos.Parameter.Builder addQueryBuilder() {
+        return getQueryFieldBuilder().addBuilder(
+            org.apache.mesos.Protos.Parameter.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.Parameter query = 4;</code>
+       */
+      public org.apache.mesos.Protos.Parameter.Builder addQueryBuilder(
+          int index) {
+        return getQueryFieldBuilder().addBuilder(
+            index, org.apache.mesos.Protos.Parameter.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.Parameter query = 4;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.Parameter.Builder> 
+           getQueryBuilderList() {
+        return getQueryFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.Parameter, org.apache.mesos.Protos.Parameter.Builder, org.apache.mesos.Protos.ParameterOrBuilder> 
+          getQueryFieldBuilder() {
+        if (queryBuilder_ == null) {
+          queryBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.Parameter, org.apache.mesos.Protos.Parameter.Builder, org.apache.mesos.Protos.ParameterOrBuilder>(
+                  query_,
+                  ((bitField0_ & 0x00000008) == 0x00000008),
+                  getParentForChildren(),
+                  isClean());
+          query_ = null;
+        }
+        return queryBuilder_;
+      }
+
+      // optional string fragment = 5;
+      private java.lang.Object fragment_ = "";
+      /**
+       * <code>optional string fragment = 5;</code>
+       */
+      public boolean hasFragment() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional string fragment = 5;</code>
+       */
+      public java.lang.String getFragment() {
+        java.lang.Object ref = fragment_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          fragment_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string fragment = 5;</code>
+       */
+      public com.google.protobuf.ByteString
+          getFragmentBytes() {
+        java.lang.Object ref = fragment_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          fragment_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string fragment = 5;</code>
+       */
+      public Builder setFragment(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000010;
+        fragment_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string fragment = 5;</code>
+       */
+      public Builder clearFragment() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        fragment_ = getDefaultInstance().getFragment();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string fragment = 5;</code>
+       */
+      public Builder setFragmentBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000010;
+        fragment_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.URL)
+    }
+
+    static {
+      defaultInstance = new URL(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.URL)
+  }
+
+  public interface UnavailabilityOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required .mesos.TimeInfo start = 1;
+    /**
+     * <code>required .mesos.TimeInfo start = 1;</code>
+     */
+    boolean hasStart();
+    /**
+     * <code>required .mesos.TimeInfo start = 1;</code>
+     */
+    org.apache.mesos.Protos.TimeInfo getStart();
+    /**
+     * <code>required .mesos.TimeInfo start = 1;</code>
+     */
+    org.apache.mesos.Protos.TimeInfoOrBuilder getStartOrBuilder();
+
+    // optional .mesos.DurationInfo duration = 2;
+    /**
+     * <code>optional .mesos.DurationInfo duration = 2;</code>
+     *
+     * <pre>
+     * When added to `start`, this represents the end of the interval.
+     * If unspecified, the duration is assumed to be infinite.
+     * </pre>
+     */
+    boolean hasDuration();
+    /**
+     * <code>optional .mesos.DurationInfo duration = 2;</code>
+     *
+     * <pre>
+     * When added to `start`, this represents the end of the interval.
+     * If unspecified, the duration is assumed to be infinite.
+     * </pre>
+     */
+    org.apache.mesos.Protos.DurationInfo getDuration();
+    /**
+     * <code>optional .mesos.DurationInfo duration = 2;</code>
+     *
+     * <pre>
+     * When added to `start`, this represents the end of the interval.
+     * If unspecified, the duration is assumed to be infinite.
+     * </pre>
+     */
+    org.apache.mesos.Protos.DurationInfoOrBuilder getDurationOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.Unavailability}
+   *
+   * <pre>
+   **
+   * Represents an interval, from a given start time over a given duration.
+   * This interval pertains to an unavailability event, such as maintenance,
+   * and is not a generic interval.
+   * </pre>
+   */
+  public static final class Unavailability extends
+      com.google.protobuf.GeneratedMessage
+      implements UnavailabilityOrBuilder {
+    // Use Unavailability.newBuilder() to construct.
+    private Unavailability(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Unavailability(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Unavailability defaultInstance;
+    public static Unavailability getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Unavailability getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Unavailability(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              org.apache.mesos.Protos.TimeInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                subBuilder = start_.toBuilder();
+              }
+              start_ = input.readMessage(org.apache.mesos.Protos.TimeInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(start_);
+                start_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+            case 18: {
+              org.apache.mesos.Protos.DurationInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = duration_.toBuilder();
+              }
+              duration_ = input.readMessage(org.apache.mesos.Protos.DurationInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(duration_);
+                duration_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_Unavailability_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_Unavailability_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.Unavailability.class, org.apache.mesos.Protos.Unavailability.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Unavailability> PARSER =
+        new com.google.protobuf.AbstractParser<Unavailability>() {
+      public Unavailability parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Unavailability(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Unavailability> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required .mesos.TimeInfo start = 1;
+    public static final int START_FIELD_NUMBER = 1;
+    private org.apache.mesos.Protos.TimeInfo start_;
+    /**
+     * <code>required .mesos.TimeInfo start = 1;</code>
+     */
+    public boolean hasStart() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required .mesos.TimeInfo start = 1;</code>
+     */
+    public org.apache.mesos.Protos.TimeInfo getStart() {
+      return start_;
+    }
+    /**
+     * <code>required .mesos.TimeInfo start = 1;</code>
+     */
+    public org.apache.mesos.Protos.TimeInfoOrBuilder getStartOrBuilder() {
+      return start_;
+    }
+
+    // optional .mesos.DurationInfo duration = 2;
+    public static final int DURATION_FIELD_NUMBER = 2;
+    private org.apache.mesos.Protos.DurationInfo duration_;
+    /**
+     * <code>optional .mesos.DurationInfo duration = 2;</code>
+     *
+     * <pre>
+     * When added to `start`, this represents the end of the interval.
+     * If unspecified, the duration is assumed to be infinite.
+     * </pre>
+     */
+    public boolean hasDuration() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional .mesos.DurationInfo duration = 2;</code>
+     *
+     * <pre>
+     * When added to `start`, this represents the end of the interval.
+     * If unspecified, the duration is assumed to be infinite.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.DurationInfo getDuration() {
+      return duration_;
+    }
+    /**
+     * <code>optional .mesos.DurationInfo duration = 2;</code>
+     *
+     * <pre>
+     * When added to `start`, this represents the end of the interval.
+     * If unspecified, the duration is assumed to be infinite.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.DurationInfoOrBuilder getDurationOrBuilder() {
+      return duration_;
+    }
+
+    private void initFields() {
+      start_ = org.apache.mesos.Protos.TimeInfo.getDefaultInstance();
+      duration_ = org.apache.mesos.Protos.DurationInfo.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasStart()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!getStart().isInitialized()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (hasDuration()) {
+        if (!getDuration().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeMessage(1, start_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(2, duration_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, start_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, duration_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.Unavailability parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Unavailability parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Unavailability parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Unavailability parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Unavailability parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Unavailability parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Unavailability parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.Unavailability parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Unavailability parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Unavailability parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.Unavailability prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.Unavailability}
+     *
+     * <pre>
+     **
+     * Represents an interval, from a given start time over a given duration.
+     * This interval pertains to an unavailability event, such as maintenance,
+     * and is not a generic interval.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.UnavailabilityOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_Unavailability_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_Unavailability_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.Unavailability.class, org.apache.mesos.Protos.Unavailability.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.Unavailability.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getStartFieldBuilder();
+          getDurationFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (startBuilder_ == null) {
+          start_ = org.apache.mesos.Protos.TimeInfo.getDefaultInstance();
+        } else {
+          startBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (durationBuilder_ == null) {
+          duration_ = org.apache.mesos.Protos.DurationInfo.getDefaultInstance();
+        } else {
+          durationBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_Unavailability_descriptor;
+      }
+
+      public org.apache.mesos.Protos.Unavailability getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.Unavailability.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.Unavailability build() {
+        org.apache.mesos.Protos.Unavailability result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.Unavailability buildPartial() {
+        org.apache.mesos.Protos.Unavailability result = new org.apache.mesos.Protos.Unavailability(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        if (startBuilder_ == null) {
+          result.start_ = start_;
+        } else {
+          result.start_ = startBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (durationBuilder_ == null) {
+          result.duration_ = duration_;
+        } else {
+          result.duration_ = durationBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.Unavailability) {
+          return mergeFrom((org.apache.mesos.Protos.Unavailability)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.Unavailability other) {
+        if (other == org.apache.mesos.Protos.Unavailability.getDefaultInstance()) return this;
+        if (other.hasStart()) {
+          mergeStart(other.getStart());
+        }
+        if (other.hasDuration()) {
+          mergeDuration(other.getDuration());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasStart()) {
+          
+          return false;
+        }
+        if (!getStart().isInitialized()) {
+          
+          return false;
+        }
+        if (hasDuration()) {
+          if (!getDuration().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.Unavailability parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.Unavailability) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required .mesos.TimeInfo start = 1;
+      private org.apache.mesos.Protos.TimeInfo start_ = org.apache.mesos.Protos.TimeInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.TimeInfo, org.apache.mesos.Protos.TimeInfo.Builder, org.apache.mesos.Protos.TimeInfoOrBuilder> startBuilder_;
+      /**
+       * <code>required .mesos.TimeInfo start = 1;</code>
+       */
+      public boolean hasStart() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.TimeInfo start = 1;</code>
+       */
+      public org.apache.mesos.Protos.TimeInfo getStart() {
+        if (startBuilder_ == null) {
+          return start_;
+        } else {
+          return startBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>required .mesos.TimeInfo start = 1;</code>
+       */
+      public Builder setStart(org.apache.mesos.Protos.TimeInfo value) {
+        if (startBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          start_ = value;
+          onChanged();
+        } else {
+          startBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .mesos.TimeInfo start = 1;</code>
+       */
+      public Builder setStart(
+          org.apache.mesos.Protos.TimeInfo.Builder builderForValue) {
+        if (startBuilder_ == null) {
+          start_ = builderForValue.build();
+          onChanged();
+        } else {
+          startBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .mesos.TimeInfo start = 1;</code>
+       */
+      public Builder mergeStart(org.apache.mesos.Protos.TimeInfo value) {
+        if (startBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001) &&
+              start_ != org.apache.mesos.Protos.TimeInfo.getDefaultInstance()) {
+            start_ =
+              org.apache.mesos.Protos.TimeInfo.newBuilder(start_).mergeFrom(value).buildPartial();
+          } else {
+            start_ = value;
+          }
+          onChanged();
+        } else {
+          startBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .mesos.TimeInfo start = 1;</code>
+       */
+      public Builder clearStart() {
+        if (startBuilder_ == null) {
+          start_ = org.apache.mesos.Protos.TimeInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          startBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+      /**
+       * <code>required .mesos.TimeInfo start = 1;</code>
+       */
+      public org.apache.mesos.Protos.TimeInfo.Builder getStartBuilder() {
+        bitField0_ |= 0x00000001;
+        onChanged();
+        return getStartFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>required .mesos.TimeInfo start = 1;</code>
+       */
+      public org.apache.mesos.Protos.TimeInfoOrBuilder getStartOrBuilder() {
+        if (startBuilder_ != null) {
+          return startBuilder_.getMessageOrBuilder();
+        } else {
+          return start_;
+        }
+      }
+      /**
+       * <code>required .mesos.TimeInfo start = 1;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.TimeInfo, org.apache.mesos.Protos.TimeInfo.Builder, org.apache.mesos.Protos.TimeInfoOrBuilder> 
+          getStartFieldBuilder() {
+        if (startBuilder_ == null) {
+          startBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.TimeInfo, org.apache.mesos.Protos.TimeInfo.Builder, org.apache.mesos.Protos.TimeInfoOrBuilder>(
+                  start_,
+                  getParentForChildren(),
+                  isClean());
+          start_ = null;
+        }
+        return startBuilder_;
+      }
+
+      // optional .mesos.DurationInfo duration = 2;
+      private org.apache.mesos.Protos.DurationInfo duration_ = org.apache.mesos.Protos.DurationInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.DurationInfo, org.apache.mesos.Protos.DurationInfo.Builder, org.apache.mesos.Protos.DurationInfoOrBuilder> durationBuilder_;
+      /**
+       * <code>optional .mesos.DurationInfo duration = 2;</code>
+       *
+       * <pre>
+       * When added to `start`, this represents the end of the interval.
+       * If unspecified, the duration is assumed to be infinite.
+       * </pre>
+       */
+      public boolean hasDuration() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.DurationInfo duration = 2;</code>
+       *
+       * <pre>
+       * When added to `start`, this represents the end of the interval.
+       * If unspecified, the duration is assumed to be infinite.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.DurationInfo getDuration() {
+        if (durationBuilder_ == null) {
+          return duration_;
+        } else {
+          return durationBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.DurationInfo duration = 2;</code>
+       *
+       * <pre>
+       * When added to `start`, this represents the end of the interval.
+       * If unspecified, the duration is assumed to be infinite.
+       * </pre>
+       */
+      public Builder setDuration(org.apache.mesos.Protos.DurationInfo value) {
+        if (durationBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          duration_ = value;
+          onChanged();
+        } else {
+          durationBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.DurationInfo duration = 2;</code>
+       *
+       * <pre>
+       * When added to `start`, this represents the end of the interval.
+       * If unspecified, the duration is assumed to be infinite.
+       * </pre>
+       */
+      public Builder setDuration(
+          org.apache.mesos.Protos.DurationInfo.Builder builderForValue) {
+        if (durationBuilder_ == null) {
+          duration_ = builderForValue.build();
+          onChanged();
+        } else {
+          durationBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.DurationInfo duration = 2;</code>
+       *
+       * <pre>
+       * When added to `start`, this represents the end of the interval.
+       * If unspecified, the duration is assumed to be infinite.
+       * </pre>
+       */
+      public Builder mergeDuration(org.apache.mesos.Protos.DurationInfo value) {
+        if (durationBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              duration_ != org.apache.mesos.Protos.DurationInfo.getDefaultInstance()) {
+            duration_ =
+              org.apache.mesos.Protos.DurationInfo.newBuilder(duration_).mergeFrom(value).buildPartial();
+          } else {
+            duration_ = value;
+          }
+          onChanged();
+        } else {
+          durationBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.DurationInfo duration = 2;</code>
+       *
+       * <pre>
+       * When added to `start`, this represents the end of the interval.
+       * If unspecified, the duration is assumed to be infinite.
+       * </pre>
+       */
+      public Builder clearDuration() {
+        if (durationBuilder_ == null) {
+          duration_ = org.apache.mesos.Protos.DurationInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          durationBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.DurationInfo duration = 2;</code>
+       *
+       * <pre>
+       * When added to `start`, this represents the end of the interval.
+       * If unspecified, the duration is assumed to be infinite.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.DurationInfo.Builder getDurationBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getDurationFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.DurationInfo duration = 2;</code>
+       *
+       * <pre>
+       * When added to `start`, this represents the end of the interval.
+       * If unspecified, the duration is assumed to be infinite.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.DurationInfoOrBuilder getDurationOrBuilder() {
+        if (durationBuilder_ != null) {
+          return durationBuilder_.getMessageOrBuilder();
+        } else {
+          return duration_;
+        }
+      }
+      /**
+       * <code>optional .mesos.DurationInfo duration = 2;</code>
+       *
+       * <pre>
+       * When added to `start`, this represents the end of the interval.
+       * If unspecified, the duration is assumed to be infinite.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.DurationInfo, org.apache.mesos.Protos.DurationInfo.Builder, org.apache.mesos.Protos.DurationInfoOrBuilder> 
+          getDurationFieldBuilder() {
+        if (durationBuilder_ == null) {
+          durationBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.DurationInfo, org.apache.mesos.Protos.DurationInfo.Builder, org.apache.mesos.Protos.DurationInfoOrBuilder>(
+                  duration_,
+                  getParentForChildren(),
+                  isClean());
+          duration_ = null;
+        }
+        return durationBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.Unavailability)
+    }
+
+    static {
+      defaultInstance = new Unavailability(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.Unavailability)
+  }
+
+  public interface MachineIDOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional string hostname = 1;
+    /**
+     * <code>optional string hostname = 1;</code>
+     */
+    boolean hasHostname();
+    /**
+     * <code>optional string hostname = 1;</code>
+     */
+    java.lang.String getHostname();
+    /**
+     * <code>optional string hostname = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getHostnameBytes();
+
+    // optional string ip = 2;
+    /**
+     * <code>optional string ip = 2;</code>
+     */
+    boolean hasIp();
+    /**
+     * <code>optional string ip = 2;</code>
+     */
+    java.lang.String getIp();
+    /**
+     * <code>optional string ip = 2;</code>
+     */
+    com.google.protobuf.ByteString
+        getIpBytes();
+  }
+  /**
+   * Protobuf type {@code mesos.MachineID}
+   *
+   * <pre>
+   **
+   * Represents a single machine, which may hold one or more slaves.
+   *
+   * NOTE: In order to match a slave to a machine, both the `hostname` and
+   * `ip` must match the values advertised by the slave to the master.
+   * Hostname is not case-sensitive.
+   * </pre>
+   */
+  public static final class MachineID extends
+      com.google.protobuf.GeneratedMessage
+      implements MachineIDOrBuilder {
+    // Use MachineID.newBuilder() to construct.
+    private MachineID(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private MachineID(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final MachineID defaultInstance;
+    public static MachineID getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public MachineID getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private MachineID(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              hostname_ = input.readBytes();
+              break;
+            }
+            case 18: {
+              bitField0_ |= 0x00000002;
+              ip_ = input.readBytes();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_MachineID_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_MachineID_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.MachineID.class, org.apache.mesos.Protos.MachineID.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<MachineID> PARSER =
+        new com.google.protobuf.AbstractParser<MachineID>() {
+      public MachineID parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new MachineID(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<MachineID> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // optional string hostname = 1;
+    public static final int HOSTNAME_FIELD_NUMBER = 1;
+    private java.lang.Object hostname_;
+    /**
+     * <code>optional string hostname = 1;</code>
+     */
+    public boolean hasHostname() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional string hostname = 1;</code>
+     */
+    public java.lang.String getHostname() {
+      java.lang.Object ref = hostname_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          hostname_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string hostname = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getHostnameBytes() {
+      java.lang.Object ref = hostname_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        hostname_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional string ip = 2;
+    public static final int IP_FIELD_NUMBER = 2;
+    private java.lang.Object ip_;
+    /**
+     * <code>optional string ip = 2;</code>
+     */
+    public boolean hasIp() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional string ip = 2;</code>
+     */
+    public java.lang.String getIp() {
+      java.lang.Object ref = ip_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          ip_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string ip = 2;</code>
+     */
+    public com.google.protobuf.ByteString
+        getIpBytes() {
+      java.lang.Object ref = ip_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        ip_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      hostname_ = "";
+      ip_ = "";
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getHostnameBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(2, getIpBytes());
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getHostnameBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(2, getIpBytes());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.MachineID parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.MachineID parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.MachineID parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.MachineID parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.MachineID parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.MachineID parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.MachineID parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.MachineID parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.MachineID parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.MachineID parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.MachineID prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.MachineID}
+     *
+     * <pre>
+     **
+     * Represents a single machine, which may hold one or more slaves.
+     *
+     * NOTE: In order to match a slave to a machine, both the `hostname` and
+     * `ip` must match the values advertised by the slave to the master.
+     * Hostname is not case-sensitive.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.MachineIDOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_MachineID_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_MachineID_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.MachineID.class, org.apache.mesos.Protos.MachineID.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.MachineID.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        hostname_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        ip_ = "";
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_MachineID_descriptor;
+      }
+
+      public org.apache.mesos.Protos.MachineID getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.MachineID.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.MachineID build() {
+        org.apache.mesos.Protos.MachineID result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.MachineID buildPartial() {
+        org.apache.mesos.Protos.MachineID result = new org.apache.mesos.Protos.MachineID(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.hostname_ = hostname_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.ip_ = ip_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.MachineID) {
+          return mergeFrom((org.apache.mesos.Protos.MachineID)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.MachineID other) {
+        if (other == org.apache.mesos.Protos.MachineID.getDefaultInstance()) return this;
+        if (other.hasHostname()) {
+          bitField0_ |= 0x00000001;
+          hostname_ = other.hostname_;
+          onChanged();
+        }
+        if (other.hasIp()) {
+          bitField0_ |= 0x00000002;
+          ip_ = other.ip_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.MachineID parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.MachineID) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional string hostname = 1;
+      private java.lang.Object hostname_ = "";
+      /**
+       * <code>optional string hostname = 1;</code>
+       */
+      public boolean hasHostname() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional string hostname = 1;</code>
+       */
+      public java.lang.String getHostname() {
+        java.lang.Object ref = hostname_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          hostname_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string hostname = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getHostnameBytes() {
+        java.lang.Object ref = hostname_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          hostname_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string hostname = 1;</code>
+       */
+      public Builder setHostname(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        hostname_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string hostname = 1;</code>
+       */
+      public Builder clearHostname() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        hostname_ = getDefaultInstance().getHostname();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string hostname = 1;</code>
+       */
+      public Builder setHostnameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        hostname_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional string ip = 2;
+      private java.lang.Object ip_ = "";
+      /**
+       * <code>optional string ip = 2;</code>
+       */
+      public boolean hasIp() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional string ip = 2;</code>
+       */
+      public java.lang.String getIp() {
+        java.lang.Object ref = ip_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          ip_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string ip = 2;</code>
+       */
+      public com.google.protobuf.ByteString
+          getIpBytes() {
+        java.lang.Object ref = ip_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          ip_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string ip = 2;</code>
+       */
+      public Builder setIp(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        ip_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string ip = 2;</code>
+       */
+      public Builder clearIp() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        ip_ = getDefaultInstance().getIp();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string ip = 2;</code>
+       */
+      public Builder setIpBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        ip_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.MachineID)
+    }
+
+    static {
+      defaultInstance = new MachineID(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.MachineID)
+  }
+
+  public interface MachineInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required .mesos.MachineID id = 1;
+    /**
+     * <code>required .mesos.MachineID id = 1;</code>
+     */
+    boolean hasId();
+    /**
+     * <code>required .mesos.MachineID id = 1;</code>
+     */
+    org.apache.mesos.Protos.MachineID getId();
+    /**
+     * <code>required .mesos.MachineID id = 1;</code>
+     */
+    org.apache.mesos.Protos.MachineIDOrBuilder getIdOrBuilder();
+
+    // optional .mesos.MachineInfo.Mode mode = 2;
+    /**
+     * <code>optional .mesos.MachineInfo.Mode mode = 2;</code>
+     */
+    boolean hasMode();
+    /**
+     * <code>optional .mesos.MachineInfo.Mode mode = 2;</code>
+     */
+    org.apache.mesos.Protos.MachineInfo.Mode getMode();
+
+    // optional .mesos.Unavailability unavailability = 3;
+    /**
+     * <code>optional .mesos.Unavailability unavailability = 3;</code>
+     *
+     * <pre>
+     * Signifies that the machine may be unavailable during the given interval.
+     * See comments in `Unavailability` and for the `unavailability` fields
+     * in `Offer` and `InverseOffer` for more information.
+     * </pre>
+     */
+    boolean hasUnavailability();
+    /**
+     * <code>optional .mesos.Unavailability unavailability = 3;</code>
+     *
+     * <pre>
+     * Signifies that the machine may be unavailable during the given interval.
+     * See comments in `Unavailability` and for the `unavailability` fields
+     * in `Offer` and `InverseOffer` for more information.
+     * </pre>
+     */
+    org.apache.mesos.Protos.Unavailability getUnavailability();
+    /**
+     * <code>optional .mesos.Unavailability unavailability = 3;</code>
+     *
+     * <pre>
+     * Signifies that the machine may be unavailable during the given interval.
+     * See comments in `Unavailability` and for the `unavailability` fields
+     * in `Offer` and `InverseOffer` for more information.
+     * </pre>
+     */
+    org.apache.mesos.Protos.UnavailabilityOrBuilder getUnavailabilityOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.MachineInfo}
+   *
+   * <pre>
+   **
+   * Holds information about a single machine, its `mode`, and any other
+   * relevant information which may affect the behavior of the machine.
+   * </pre>
+   */
+  public static final class MachineInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements MachineInfoOrBuilder {
+    // Use MachineInfo.newBuilder() to construct.
+    private MachineInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private MachineInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final MachineInfo defaultInstance;
+    public static MachineInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public MachineInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private MachineInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              org.apache.mesos.Protos.MachineID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                subBuilder = id_.toBuilder();
+              }
+              id_ = input.readMessage(org.apache.mesos.Protos.MachineID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(id_);
+                id_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+            case 16: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.Protos.MachineInfo.Mode value = org.apache.mesos.Protos.MachineInfo.Mode.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(2, rawValue);
+              } else {
+                bitField0_ |= 0x00000002;
+                mode_ = value;
+              }
+              break;
+            }
+            case 26: {
+              org.apache.mesos.Protos.Unavailability.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                subBuilder = unavailability_.toBuilder();
+              }
+              unavailability_ = input.readMessage(org.apache.mesos.Protos.Unavailability.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(unavailability_);
+                unavailability_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000004;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_MachineInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_MachineInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.MachineInfo.class, org.apache.mesos.Protos.MachineInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<MachineInfo> PARSER =
+        new com.google.protobuf.AbstractParser<MachineInfo>() {
+      public MachineInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new MachineInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<MachineInfo> getParserForType() {
+      return PARSER;
+    }
+
+    /**
+     * Protobuf enum {@code mesos.MachineInfo.Mode}
+     *
+     * <pre>
+     * Describes the several states that a machine can be in.  A `Mode`
+     * applies to a machine and to all associated slaves on the machine.
+     * </pre>
+     */
+    public enum Mode
+        implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>UP = 1;</code>
+       *
+       * <pre>
+       * In this mode, a machine is behaving normally;
+       * offering resources, executing tasks, etc.
+       * </pre>
+       */
+      UP(0, 1),
+      /**
+       * <code>DRAINING = 2;</code>
+       *
+       * <pre>
+       * In this mode, all slaves on the machine are expected to cooperate with
+       * frameworks to drain resources.  In general, draining is done ahead of
+       * a pending `unavailability`.  The resources should be drained so as to
+       * maximize utilization prior to the maintenance but without knowingly
+       * violating the frameworks' requirements.
+       * </pre>
+       */
+      DRAINING(1, 2),
+      /**
+       * <code>DOWN = 3;</code>
+       *
+       * <pre>
+       * In this mode, a machine is not running any tasks and will not offer
+       * any of its resources.  Slaves on the machine will not be allowed to
+       * register with the master.
+       * </pre>
+       */
+      DOWN(2, 3),
+      ;
+
+      /**
+       * <code>UP = 1;</code>
+       *
+       * <pre>
+       * In this mode, a machine is behaving normally;
+       * offering resources, executing tasks, etc.
+       * </pre>
+       */
+      public static final int UP_VALUE = 1;
+      /**
+       * <code>DRAINING = 2;</code>
+       *
+       * <pre>
+       * In this mode, all slaves on the machine are expected to cooperate with
+       * frameworks to drain resources.  In general, draining is done ahead of
+       * a pending `unavailability`.  The resources should be drained so as to
+       * maximize utilization prior to the maintenance but without knowingly
+       * violating the frameworks' requirements.
+       * </pre>
+       */
+      public static final int DRAINING_VALUE = 2;
+      /**
+       * <code>DOWN = 3;</code>
+       *
+       * <pre>
+       * In this mode, a machine is not running any tasks and will not offer
+       * any of its resources.  Slaves on the machine will not be allowed to
+       * register with the master.
+       * </pre>
+       */
+      public static final int DOWN_VALUE = 3;
+
+
+      public final int getNumber() { return value; }
+
+      public static Mode valueOf(int value) {
+        switch (value) {
+          case 1: return UP;
+          case 2: return DRAINING;
+          case 3: return DOWN;
+          default: return null;
+        }
+      }
+
+      public static com.google.protobuf.Internal.EnumLiteMap<Mode>
+          internalGetValueMap() {
+        return internalValueMap;
+      }
+      private static com.google.protobuf.Internal.EnumLiteMap<Mode>
+          internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap<Mode>() {
+              public Mode findValueByNumber(int number) {
+                return Mode.valueOf(number);
+              }
+            };
+
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
+          getValueDescriptor() {
+        return getDescriptor().getValues().get(index);
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptorForType() {
+        return getDescriptor();
+      }
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.MachineInfo.getDescriptor().getEnumTypes().get(0);
+      }
+
+      private static final Mode[] VALUES = values();
+
+      public static Mode valueOf(
+          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+        if (desc.getType() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "EnumValueDescriptor is not for this type.");
+        }
+        return VALUES[desc.getIndex()];
+      }
+
+      private final int index;
+      private final int value;
+
+      private Mode(int index, int value) {
+        this.index = index;
+        this.value = value;
+      }
+
+      // @@protoc_insertion_point(enum_scope:mesos.MachineInfo.Mode)
+    }
+
+    private int bitField0_;
+    // required .mesos.MachineID id = 1;
+    public static final int ID_FIELD_NUMBER = 1;
+    private org.apache.mesos.Protos.MachineID id_;
+    /**
+     * <code>required .mesos.MachineID id = 1;</code>
+     */
+    public boolean hasId() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required .mesos.MachineID id = 1;</code>
+     */
+    public org.apache.mesos.Protos.MachineID getId() {
+      return id_;
+    }
+    /**
+     * <code>required .mesos.MachineID id = 1;</code>
+     */
+    public org.apache.mesos.Protos.MachineIDOrBuilder getIdOrBuilder() {
+      return id_;
+    }
+
+    // optional .mesos.MachineInfo.Mode mode = 2;
+    public static final int MODE_FIELD_NUMBER = 2;
+    private org.apache.mesos.Protos.MachineInfo.Mode mode_;
+    /**
+     * <code>optional .mesos.MachineInfo.Mode mode = 2;</code>
+     */
+    public boolean hasMode() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional .mesos.MachineInfo.Mode mode = 2;</code>
+     */
+    public org.apache.mesos.Protos.MachineInfo.Mode getMode() {
+      return mode_;
+    }
+
+    // optional .mesos.Unavailability unavailability = 3;
+    public static final int UNAVAILABILITY_FIELD_NUMBER = 3;
+    private org.apache.mesos.Protos.Unavailability unavailability_;
+    /**
+     * <code>optional .mesos.Unavailability unavailability = 3;</code>
+     *
+     * <pre>
+     * Signifies that the machine may be unavailable during the given interval.
+     * See comments in `Unavailability` and for the `unavailability` fields
+     * in `Offer` and `InverseOffer` for more information.
+     * </pre>
+     */
+    public boolean hasUnavailability() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional .mesos.Unavailability unavailability = 3;</code>
+     *
+     * <pre>
+     * Signifies that the machine may be unavailable during the given interval.
+     * See comments in `Unavailability` and for the `unavailability` fields
+     * in `Offer` and `InverseOffer` for more information.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.Unavailability getUnavailability() {
+      return unavailability_;
+    }
+    /**
+     * <code>optional .mesos.Unavailability unavailability = 3;</code>
+     *
+     * <pre>
+     * Signifies that the machine may be unavailable during the given interval.
+     * See comments in `Unavailability` and for the `unavailability` fields
+     * in `Offer` and `InverseOffer` for more information.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.UnavailabilityOrBuilder getUnavailabilityOrBuilder() {
+      return unavailability_;
+    }
+
+    private void initFields() {
+      id_ = org.apache.mesos.Protos.MachineID.getDefaultInstance();
+      mode_ = org.apache.mesos.Protos.MachineInfo.Mode.UP;
+      unavailability_ = org.apache.mesos.Protos.Unavailability.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasId()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (hasUnavailability()) {
+        if (!getUnavailability().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeMessage(1, id_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeEnum(2, mode_.getNumber());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeMessage(3, unavailability_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, id_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(2, mode_.getNumber());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, unavailability_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.MachineInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.MachineInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.MachineInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.MachineInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.MachineInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.MachineInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.MachineInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.MachineInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.MachineInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.MachineInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.MachineInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.MachineInfo}
+     *
+     * <pre>
+     **
+     * Holds information about a single machine, its `mode`, and any other
+     * relevant information which may affect the behavior of the machine.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.MachineInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_MachineInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_MachineInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.MachineInfo.class, org.apache.mesos.Protos.MachineInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.MachineInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getIdFieldBuilder();
+          getUnavailabilityFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (idBuilder_ == null) {
+          id_ = org.apache.mesos.Protos.MachineID.getDefaultInstance();
+        } else {
+          idBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        mode_ = org.apache.mesos.Protos.MachineInfo.Mode.UP;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        if (unavailabilityBuilder_ == null) {
+          unavailability_ = org.apache.mesos.Protos.Unavailability.getDefaultInstance();
+        } else {
+          unavailabilityBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_MachineInfo_descriptor;
+      }
+
+      public org.apache.mesos.Protos.MachineInfo getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.MachineInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.MachineInfo build() {
+        org.apache.mesos.Protos.MachineInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.MachineInfo buildPartial() {
+        org.apache.mesos.Protos.MachineInfo result = new org.apache.mesos.Protos.MachineInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        if (idBuilder_ == null) {
+          result.id_ = id_;
+        } else {
+          result.id_ = idBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.mode_ = mode_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        if (unavailabilityBuilder_ == null) {
+          result.unavailability_ = unavailability_;
+        } else {
+          result.unavailability_ = unavailabilityBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.MachineInfo) {
+          return mergeFrom((org.apache.mesos.Protos.MachineInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.MachineInfo other) {
+        if (other == org.apache.mesos.Protos.MachineInfo.getDefaultInstance()) return this;
+        if (other.hasId()) {
+          mergeId(other.getId());
+        }
+        if (other.hasMode()) {
+          setMode(other.getMode());
+        }
+        if (other.hasUnavailability()) {
+          mergeUnavailability(other.getUnavailability());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasId()) {
+          
+          return false;
+        }
+        if (hasUnavailability()) {
+          if (!getUnavailability().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.MachineInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.MachineInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required .mesos.MachineID id = 1;
+      private org.apache.mesos.Protos.MachineID id_ = org.apache.mesos.Protos.MachineID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.MachineID, org.apache.mesos.Protos.MachineID.Builder, org.apache.mesos.Protos.MachineIDOrBuilder> idBuilder_;
+      /**
+       * <code>required .mesos.MachineID id = 1;</code>
+       */
+      public boolean hasId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.MachineID id = 1;</code>
+       */
+      public org.apache.mesos.Protos.MachineID getId() {
+        if (idBuilder_ == null) {
+          return id_;
+        } else {
+          return idBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>required .mesos.MachineID id = 1;</code>
+       */
+      public Builder setId(org.apache.mesos.Protos.MachineID value) {
+        if (idBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          id_ = value;
+          onChanged();
+        } else {
+          idBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .mesos.MachineID id = 1;</code>
+       */
+      public Builder setId(
+          org.apache.mesos.Protos.MachineID.Builder builderForValue) {
+        if (idBuilder_ == null) {
+          id_ = builderForValue.build();
+          onChanged();
+        } else {
+          idBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .mesos.MachineID id = 1;</code>
+       */
+      public Builder mergeId(org.apache.mesos.Protos.MachineID value) {
+        if (idBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001) &&
+              id_ != org.apache.mesos.Protos.MachineID.getDefaultInstance()) {
+            id_ =
+              org.apache.mesos.Protos.MachineID.newBuilder(id_).mergeFrom(value).buildPartial();
+          } else {
+            id_ = value;
+          }
+          onChanged();
+        } else {
+          idBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .mesos.MachineID id = 1;</code>
+       */
+      public Builder clearId() {
+        if (idBuilder_ == null) {
+          id_ = org.apache.mesos.Protos.MachineID.getDefaultInstance();
+          onChanged();
+        } else {
+          idBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+      /**
+       * <code>required .mesos.MachineID id = 1;</code>
+       */
+      public org.apache.mesos.Protos.MachineID.Builder getIdBuilder() {
+        bitField0_ |= 0x00000001;
+        onChanged();
+        return getIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>required .mesos.MachineID id = 1;</code>
+       */
+      public org.apache.mesos.Protos.MachineIDOrBuilder getIdOrBuilder() {
+        if (idBuilder_ != null) {
+          return idBuilder_.getMessageOrBuilder();
+        } else {
+          return id_;
+        }
+      }
+      /**
+       * <code>required .mesos.MachineID id = 1;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.MachineID, org.apache.mesos.Protos.MachineID.Builder, org.apache.mesos.Protos.MachineIDOrBuilder> 
+          getIdFieldBuilder() {
+        if (idBuilder_ == null) {
+          idBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.MachineID, org.apache.mesos.Protos.MachineID.Builder, org.apache.mesos.Protos.MachineIDOrBuilder>(
+                  id_,
+                  getParentForChildren(),
+                  isClean());
+          id_ = null;
+        }
+        return idBuilder_;
+      }
+
+      // optional .mesos.MachineInfo.Mode mode = 2;
+      private org.apache.mesos.Protos.MachineInfo.Mode mode_ = org.apache.mesos.Protos.MachineInfo.Mode.UP;
+      /**
+       * <code>optional .mesos.MachineInfo.Mode mode = 2;</code>
+       */
+      public boolean hasMode() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.MachineInfo.Mode mode = 2;</code>
+       */
+      public org.apache.mesos.Protos.MachineInfo.Mode getMode() {
+        return mode_;
+      }
+      /**
+       * <code>optional .mesos.MachineInfo.Mode mode = 2;</code>
+       */
+      public Builder setMode(org.apache.mesos.Protos.MachineInfo.Mode value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000002;
+        mode_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional .mesos.MachineInfo.Mode mode = 2;</code>
+       */
+      public Builder clearMode() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        mode_ = org.apache.mesos.Protos.MachineInfo.Mode.UP;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.Unavailability unavailability = 3;
+      private org.apache.mesos.Protos.Unavailability unavailability_ = org.apache.mesos.Protos.Unavailability.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Unavailability, org.apache.mesos.Protos.Unavailability.Builder, org.apache.mesos.Protos.UnavailabilityOrBuilder> unavailabilityBuilder_;
+      /**
+       * <code>optional .mesos.Unavailability unavailability = 3;</code>
+       *
+       * <pre>
+       * Signifies that the machine may be unavailable during the given interval.
+       * See comments in `Unavailability` and for the `unavailability` fields
+       * in `Offer` and `InverseOffer` for more information.
+       * </pre>
+       */
+      public boolean hasUnavailability() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.Unavailability unavailability = 3;</code>
+       *
+       * <pre>
+       * Signifies that the machine may be unavailable during the given interval.
+       * See comments in `Unavailability` and for the `unavailability` fields
+       * in `Offer` and `InverseOffer` for more information.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Unavailability getUnavailability() {
+        if (unavailabilityBuilder_ == null) {
+          return unavailability_;
+        } else {
+          return unavailabilityBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.Unavailability unavailability = 3;</code>
+       *
+       * <pre>
+       * Signifies that the machine may be unavailable during the given interval.
+       * See comments in `Unavailability` and for the `unavailability` fields
+       * in `Offer` and `InverseOffer` for more information.
+       * </pre>
+       */
+      public Builder setUnavailability(org.apache.mesos.Protos.Unavailability value) {
+        if (unavailabilityBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          unavailability_ = value;
+          onChanged();
+        } else {
+          unavailabilityBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Unavailability unavailability = 3;</code>
+       *
+       * <pre>
+       * Signifies that the machine may be unavailable during the given interval.
+       * See comments in `Unavailability` and for the `unavailability` fields
+       * in `Offer` and `InverseOffer` for more information.
+       * </pre>
+       */
+      public Builder setUnavailability(
+          org.apache.mesos.Protos.Unavailability.Builder builderForValue) {
+        if (unavailabilityBuilder_ == null) {
+          unavailability_ = builderForValue.build();
+          onChanged();
+        } else {
+          unavailabilityBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Unavailability unavailability = 3;</code>
+       *
+       * <pre>
+       * Signifies that the machine may be unavailable during the given interval.
+       * See comments in `Unavailability` and for the `unavailability` fields
+       * in `Offer` and `InverseOffer` for more information.
+       * </pre>
+       */
+      public Builder mergeUnavailability(org.apache.mesos.Protos.Unavailability value) {
+        if (unavailabilityBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) == 0x00000004) &&
+              unavailability_ != org.apache.mesos.Protos.Unavailability.getDefaultInstance()) {
+            unavailability_ =
+              org.apache.mesos.Protos.Unavailability.newBuilder(unavailability_).mergeFrom(value).buildPartial();
+          } else {
+            unavailability_ = value;
+          }
+          onChanged();
+        } else {
+          unavailabilityBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Unavailability unavailability = 3;</code>
+       *
+       * <pre>
+       * Signifies that the machine may be unavailable during the given interval.
+       * See comments in `Unavailability` and for the `unavailability` fields
+       * in `Offer` and `InverseOffer` for more information.
+       * </pre>
+       */
+      public Builder clearUnavailability() {
+        if (unavailabilityBuilder_ == null) {
+          unavailability_ = org.apache.mesos.Protos.Unavailability.getDefaultInstance();
+          onChanged();
+        } else {
+          unavailabilityBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Unavailability unavailability = 3;</code>
+       *
+       * <pre>
+       * Signifies that the machine may be unavailable during the given interval.
+       * See comments in `Unavailability` and for the `unavailability` fields
+       * in `Offer` and `InverseOffer` for more information.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Unavailability.Builder getUnavailabilityBuilder() {
+        bitField0_ |= 0x00000004;
+        onChanged();
+        return getUnavailabilityFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.Unavailability unavailability = 3;</code>
+       *
+       * <pre>
+       * Signifies that the machine may be unavailable during the given interval.
+       * See comments in `Unavailability` and for the `unavailability` fields
+       * in `Offer` and `InverseOffer` for more information.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.UnavailabilityOrBuilder getUnavailabilityOrBuilder() {
+        if (unavailabilityBuilder_ != null) {
+          return unavailabilityBuilder_.getMessageOrBuilder();
+        } else {
+          return unavailability_;
+        }
+      }
+      /**
+       * <code>optional .mesos.Unavailability unavailability = 3;</code>
+       *
+       * <pre>
+       * Signifies that the machine may be unavailable during the given interval.
+       * See comments in `Unavailability` and for the `unavailability` fields
+       * in `Offer` and `InverseOffer` for more information.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Unavailability, org.apache.mesos.Protos.Unavailability.Builder, org.apache.mesos.Protos.UnavailabilityOrBuilder> 
+          getUnavailabilityFieldBuilder() {
+        if (unavailabilityBuilder_ == null) {
+          unavailabilityBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Unavailability, org.apache.mesos.Protos.Unavailability.Builder, org.apache.mesos.Protos.UnavailabilityOrBuilder>(
+                  unavailability_,
+                  getParentForChildren(),
+                  isClean());
+          unavailability_ = null;
+        }
+        return unavailabilityBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.MachineInfo)
+    }
+
+    static {
+      defaultInstance = new MachineInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.MachineInfo)
+  }
+
+  public interface FrameworkInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string user = 1;
+    /**
+     * <code>required string user = 1;</code>
+     *
+     * <pre>
+     * Used to determine the Unix user that an executor or task should be
+     * launched as.
+     *
+     * When using the MesosSchedulerDriver, if the field is set to an
+     * empty string, it will automagically set it to the current user.
+     *
+     * When using the HTTP Scheduler API, the user has to be set
+     * explicitly.
+     * </pre>
+     */
+    boolean hasUser();
+    /**
+     * <code>required string user = 1;</code>
+     *
+     * <pre>
+     * Used to determine the Unix user that an executor or task should be
+     * launched as.
+     *
+     * When using the MesosSchedulerDriver, if the field is set to an
+     * empty string, it will automagically set it to the current user.
+     *
+     * When using the HTTP Scheduler API, the user has to be set
+     * explicitly.
+     * </pre>
+     */
+    java.lang.String getUser();
+    /**
+     * <code>required string user = 1;</code>
+     *
+     * <pre>
+     * Used to determine the Unix user that an executor or task should be
+     * launched as.
+     *
+     * When using the MesosSchedulerDriver, if the field is set to an
+     * empty string, it will automagically set it to the current user.
+     *
+     * When using the HTTP Scheduler API, the user has to be set
+     * explicitly.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getUserBytes();
+
+    // required string name = 2;
+    /**
+     * <code>required string name = 2;</code>
+     *
+     * <pre>
+     * Name of the framework that shows up in the Mesos Web UI.
+     * </pre>
+     */
+    boolean hasName();
+    /**
+     * <code>required string name = 2;</code>
+     *
+     * <pre>
+     * Name of the framework that shows up in the Mesos Web UI.
+     * </pre>
+     */
+    java.lang.String getName();
+    /**
+     * <code>required string name = 2;</code>
+     *
+     * <pre>
+     * Name of the framework that shows up in the Mesos Web UI.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getNameBytes();
+
+    // optional .mesos.FrameworkID id = 3;
+    /**
+     * <code>optional .mesos.FrameworkID id = 3;</code>
+     *
+     * <pre>
+     * Note that 'id' is only available after a framework has
+     * registered, however, it is included here in order to facilitate
+     * scheduler failover (i.e., if it is set then the
+     * MesosSchedulerDriver expects the scheduler is performing
+     * failover).
+     * </pre>
+     */
+    boolean hasId();
+    /**
+     * <code>optional .mesos.FrameworkID id = 3;</code>
+     *
+     * <pre>
+     * Note that 'id' is only available after a framework has
+     * registered, however, it is included here in order to facilitate
+     * scheduler failover (i.e., if it is set then the
+     * MesosSchedulerDriver expects the scheduler is performing
+     * failover).
+     * </pre>
+     */
+    org.apache.mesos.Protos.FrameworkID getId();
+    /**
+     * <code>optional .mesos.FrameworkID id = 3;</code>
+     *
+     * <pre>
+     * Note that 'id' is only available after a framework has
+     * registered, however, it is included here in order to facilitate
+     * scheduler failover (i.e., if it is set then the
+     * MesosSchedulerDriver expects the scheduler is performing
+     * failover).
+     * </pre>
+     */
+    org.apache.mesos.Protos.FrameworkIDOrBuilder getIdOrBuilder();
+
+    // optional double failover_timeout = 4 [default = 0];
+    /**
+     * <code>optional double failover_timeout = 4 [default = 0];</code>
+     *
+     * <pre>
+     * The amount of time (in seconds) that the master will wait for the
+     * scheduler to failover before it tears down the framework by
+     * killing all its tasks/executors. This should be non-zero if a
+     * framework expects to reconnect after a failure and not lose its
+     * tasks/executors.
+     *
+     * NOTE: To avoid accidental destruction of tasks, production
+     * frameworks typically set this to a large value (e.g., 1 week).
+     * </pre>
+     */
+    boolean hasFailoverTimeout();
+    /**
+     * <code>optional double failover_timeout = 4 [default = 0];</code>
+     *
+     * <pre>
+     * The amount of time (in seconds) that the master will wait for the
+     * scheduler to failover before it tears down the framework by
+     * killing all its tasks/executors. This should be non-zero if a
+     * framework expects to reconnect after a failure and not lose its
+     * tasks/executors.
+     *
+     * NOTE: To avoid accidental destruction of tasks, production
+     * frameworks typically set this to a large value (e.g., 1 week).
+     * </pre>
+     */
+    double getFailoverTimeout();
+
+    // optional bool checkpoint = 5 [default = false];
+    /**
+     * <code>optional bool checkpoint = 5 [default = false];</code>
+     *
+     * <pre>
+     * If set, agents running tasks started by this framework will write
+     * the framework pid, executor pids and status updates to disk. If
+     * the agent exits (e.g., due to a crash or as part of upgrading
+     * Mesos), this checkpointed data allows the restarted agent to
+     * reconnect to executors that were started by the old instance of
+     * the agent. Enabling checkpointing improves fault tolerance, at
+     * the cost of a (usually small) increase in disk I/O.
+     * </pre>
+     */
+    boolean hasCheckpoint();
+    /**
+     * <code>optional bool checkpoint = 5 [default = false];</code>
+     *
+     * <pre>
+     * If set, agents running tasks started by this framework will write
+     * the framework pid, executor pids and status updates to disk. If
+     * the agent exits (e.g., due to a crash or as part of upgrading
+     * Mesos), this checkpointed data allows the restarted agent to
+     * reconnect to executors that were started by the old instance of
+     * the agent. Enabling checkpointing improves fault tolerance, at
+     * the cost of a (usually small) increase in disk I/O.
+     * </pre>
+     */
+    boolean getCheckpoint();
+
+    // optional string role = 6 [default = "*", deprecated = true];
+    /**
+     * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+     *
+     * <pre>
+     * Roles are the entities to which allocations are made.
+     * The framework must have at least one role in order to
+     * be offered resources. Note that `role` is deprecated
+     * in favor of `roles` and only one of these fields must
+     * be used. Since we cannot distinguish between empty
+     * `roles` and the default unset `role`, we require that
+     * frameworks set the `MULTI_ROLE` capability if
+     * setting the `roles` field.
+     * </pre>
+     */
+    @java.lang.Deprecated boolean hasRole();
+    /**
+     * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+     *
+     * <pre>
+     * Roles are the entities to which allocations are made.
+     * The framework must have at least one role in order to
+     * be offered resources. Note that `role` is deprecated
+     * in favor of `roles` and only one of these fields must
+     * be used. Since we cannot distinguish between empty
+     * `roles` and the default unset `role`, we require that
+     * frameworks set the `MULTI_ROLE` capability if
+     * setting the `roles` field.
+     * </pre>
+     */
+    @java.lang.Deprecated java.lang.String getRole();
+    /**
+     * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+     *
+     * <pre>
+     * Roles are the entities to which allocations are made.
+     * The framework must have at least one role in order to
+     * be offered resources. Note that `role` is deprecated
+     * in favor of `roles` and only one of these fields must
+     * be used. Since we cannot distinguish between empty
+     * `roles` and the default unset `role`, we require that
+     * frameworks set the `MULTI_ROLE` capability if
+     * setting the `roles` field.
+     * </pre>
+     */
+    @java.lang.Deprecated com.google.protobuf.ByteString
+        getRoleBytes();
+
+    // repeated string roles = 12;
+    /**
+     * <code>repeated string roles = 12;</code>
+     */
+    java.util.List<java.lang.String>
+    getRolesList();
+    /**
+     * <code>repeated string roles = 12;</code>
+     */
+    int getRolesCount();
+    /**
+     * <code>repeated string roles = 12;</code>
+     */
+    java.lang.String getRoles(int index);
+    /**
+     * <code>repeated string roles = 12;</code>
+     */
+    com.google.protobuf.ByteString
+        getRolesBytes(int index);
+
+    // optional string hostname = 7;
+    /**
+     * <code>optional string hostname = 7;</code>
+     *
+     * <pre>
+     * Used to indicate the current host from which the scheduler is
+     * registered in the Mesos Web UI. If set to an empty string Mesos
+     * will automagically set it to the current hostname if one is
+     * available.
+     * </pre>
+     */
+    boolean hasHostname();
+    /**
+     * <code>optional string hostname = 7;</code>
+     *
+     * <pre>
+     * Used to indicate the current host from which the scheduler is
+     * registered in the Mesos Web UI. If set to an empty string Mesos
+     * will automagically set it to the current hostname if one is
+     * available.
+     * </pre>
+     */
+    java.lang.String getHostname();
+    /**
+     * <code>optional string hostname = 7;</code>
+     *
+     * <pre>
+     * Used to indicate the current host from which the scheduler is
+     * registered in the Mesos Web UI. If set to an empty string Mesos
+     * will automagically set it to the current hostname if one is
+     * available.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getHostnameBytes();
+
+    // optional string principal = 8;
+    /**
+     * <code>optional string principal = 8;</code>
+     *
+     * <pre>
+     * This field should match the credential's principal the framework
+     * uses for authentication. This field is used for framework API
+     * rate limiting and dynamic reservations. It should be set even
+     * if authentication is not enabled if these features are desired.
+     * </pre>
+     */
+    boolean hasPrincipal();
+    /**
+     * <code>optional string principal = 8;</code>
+     *
+     * <pre>
+     * This field should match the credential's principal the framework
+     * uses for authentication. This field is used for framework API
+     * rate limiting and dynamic reservations. It should be set even
+     * if authentication is not enabled if these features are desired.
+     * </pre>
+     */
+    java.lang.String getPrincipal();
+    /**
+     * <code>optional string principal = 8;</code>
+     *
+     * <pre>
+     * This field should match the credential's principal the framework
+     * uses for authentication. This field is used for framework API
+     * rate limiting and dynamic reservations. It should be set even
+     * if authentication is not enabled if these features are desired.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getPrincipalBytes();
+
+    // optional string webui_url = 9;
+    /**
+     * <code>optional string webui_url = 9;</code>
+     *
+     * <pre>
+     * This field allows a framework to advertise its web UI, so that
+     * the Mesos web UI can link to it. It is expected to be a full URL,
+     * for example http://my-scheduler.example.com:8080/.
+     * </pre>
+     */
+    boolean hasWebuiUrl();
+    /**
+     * <code>optional string webui_url = 9;</code>
+     *
+     * <pre>
+     * This field allows a framework to advertise its web UI, so that
+     * the Mesos web UI can link to it. It is expected to be a full URL,
+     * for example http://my-scheduler.example.com:8080/.
+     * </pre>
+     */
+    java.lang.String getWebuiUrl();
+    /**
+     * <code>optional string webui_url = 9;</code>
+     *
+     * <pre>
+     * This field allows a framework to advertise its web UI, so that
+     * the Mesos web UI can link to it. It is expected to be a full URL,
+     * for example http://my-scheduler.example.com:8080/.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getWebuiUrlBytes();
+
+    // repeated .mesos.FrameworkInfo.Capability capabilities = 10;
+    /**
+     * <code>repeated .mesos.FrameworkInfo.Capability capabilities = 10;</code>
+     *
+     * <pre>
+     * This field allows a framework to advertise its set of
+     * capabilities (e.g., ability to receive offers for revocable
+     * resources).
+     * </pre>
+     */
+    java.util.List<org.apache.mesos.Protos.FrameworkInfo.Capability> 
+        getCapabilitiesList();
+    /**
+     * <code>repeated .mesos.FrameworkInfo.Capability capabilities = 10;</code>
+     *
+     * <pre>
+     * This field allows a framework to advertise its set of
+     * capabilities (e.g., ability to receive offers for revocable
+     * resources).
+     * </pre>
+     */
+    org.apache.mesos.Protos.FrameworkInfo.Capability getCapabilities(int index);
+    /**
+     * <code>repeated .mesos.FrameworkInfo.Capability capabilities = 10;</code>
+     *
+     * <pre>
+     * This field allows a framework to advertise its set of
+     * capabilities (e.g., ability to receive offers for revocable
+     * resources).
+     * </pre>
+     */
+    int getCapabilitiesCount();
+    /**
+     * <code>repeated .mesos.FrameworkInfo.Capability capabilities = 10;</code>
+     *
+     * <pre>
+     * This field allows a framework to advertise its set of
+     * capabilities (e.g., ability to receive offers for revocable
+     * resources).
+     * </pre>
+     */
+    java.util.List<? extends org.apache.mesos.Protos.FrameworkInfo.CapabilityOrBuilder> 
+        getCapabilitiesOrBuilderList();
+    /**
+     * <code>repeated .mesos.FrameworkInfo.Capability capabilities = 10;</code>
+     *
+     * <pre>
+     * This field allows a framework to advertise its set of
+     * capabilities (e.g., ability to receive offers for revocable
+     * resources).
+     * </pre>
+     */
+    org.apache.mesos.Protos.FrameworkInfo.CapabilityOrBuilder getCapabilitiesOrBuilder(
+        int index);
+
+    // optional .mesos.Labels labels = 11;
+    /**
+     * <code>optional .mesos.Labels labels = 11;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs supplied by the framework
+     * scheduler (e.g., to describe additional functionality offered by
+     * the framework). These labels are not interpreted by Mesos itself.
+     * Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    boolean hasLabels();
+    /**
+     * <code>optional .mesos.Labels labels = 11;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs supplied by the framework
+     * scheduler (e.g., to describe additional functionality offered by
+     * the framework). These labels are not interpreted by Mesos itself.
+     * Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    org.apache.mesos.Protos.Labels getLabels();
+    /**
+     * <code>optional .mesos.Labels labels = 11;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs supplied by the framework
+     * scheduler (e.g., to describe additional functionality offered by
+     * the framework). These labels are not interpreted by Mesos itself.
+     * Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    org.apache.mesos.Protos.LabelsOrBuilder getLabelsOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.FrameworkInfo}
+   *
+   * <pre>
+   **
+   * Describes a framework.
+   * </pre>
+   */
+  public static final class FrameworkInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements FrameworkInfoOrBuilder {
+    // Use FrameworkInfo.newBuilder() to construct.
+    private FrameworkInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private FrameworkInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final FrameworkInfo defaultInstance;
+    public static FrameworkInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public FrameworkInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private FrameworkInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              user_ = input.readBytes();
+              break;
+            }
+            case 18: {
+              bitField0_ |= 0x00000002;
+              name_ = input.readBytes();
+              break;
+            }
+            case 26: {
+              org.apache.mesos.Protos.FrameworkID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                subBuilder = id_.toBuilder();
+              }
+              id_ = input.readMessage(org.apache.mesos.Protos.FrameworkID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(id_);
+                id_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000004;
+              break;
+            }
+            case 33: {
+              bitField0_ |= 0x00000008;
+              failoverTimeout_ = input.readDouble();
+              break;
+            }
+            case 40: {
+              bitField0_ |= 0x00000010;
+              checkpoint_ = input.readBool();
+              break;
+            }
+            case 50: {
+              bitField0_ |= 0x00000020;
+              role_ = input.readBytes();
+              break;
+            }
+            case 58: {
+              bitField0_ |= 0x00000040;
+              hostname_ = input.readBytes();
+              break;
+            }
+            case 66: {
+              bitField0_ |= 0x00000080;
+              principal_ = input.readBytes();
+              break;
+            }
+            case 74: {
+              bitField0_ |= 0x00000100;
+              webuiUrl_ = input.readBytes();
+              break;
+            }
+            case 82: {
+              if (!((mutable_bitField0_ & 0x00000400) == 0x00000400)) {
+                capabilities_ = new java.util.ArrayList<org.apache.mesos.Protos.FrameworkInfo.Capability>();
+                mutable_bitField0_ |= 0x00000400;
+              }
+              capabilities_.add(input.readMessage(org.apache.mesos.Protos.FrameworkInfo.Capability.PARSER, extensionRegistry));
+              break;
+            }
+            case 90: {
+              org.apache.mesos.Protos.Labels.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000200) == 0x00000200)) {
+                subBuilder = labels_.toBuilder();
+              }
+              labels_ = input.readMessage(org.apache.mesos.Protos.Labels.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(labels_);
+                labels_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000200;
+              break;
+            }
+            case 98: {
+              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
+                roles_ = new com.google.protobuf.LazyStringArrayList();
+                mutable_bitField0_ |= 0x00000040;
+              }
+              roles_.add(input.readBytes());
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000400) == 0x00000400)) {
+          capabilities_ = java.util.Collections.unmodifiableList(capabilities_);
+        }
+        if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
+          roles_ = new com.google.protobuf.UnmodifiableLazyStringList(roles_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_FrameworkInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_FrameworkInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.FrameworkInfo.class, org.apache.mesos.Protos.FrameworkInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<FrameworkInfo> PARSER =
+        new com.google.protobuf.AbstractParser<FrameworkInfo>() {
+      public FrameworkInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new FrameworkInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<FrameworkInfo> getParserForType() {
+      return PARSER;
+    }
+
+    public interface CapabilityOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // optional .mesos.FrameworkInfo.Capability.Type type = 1;
+      /**
+       * <code>optional .mesos.FrameworkInfo.Capability.Type type = 1;</code>
+       *
+       * <pre>
+       * Enum fields should be optional, see: MESOS-4997.
+       * </pre>
+       */
+      boolean hasType();
+      /**
+       * <code>optional .mesos.FrameworkInfo.Capability.Type type = 1;</code>
+       *
+       * <pre>
+       * Enum fields should be optional, see: MESOS-4997.
+       * </pre>
+       */
+      org.apache.mesos.Protos.FrameworkInfo.Capability.Type getType();
+    }
+    /**
+     * Protobuf type {@code mesos.FrameworkInfo.Capability}
+     */
+    public static final class Capability extends
+        com.google.protobuf.GeneratedMessage
+        implements CapabilityOrBuilder {
+      // Use Capability.newBuilder() to construct.
+      private Capability(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Capability(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Capability defaultInstance;
+      public static Capability getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Capability getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Capability(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 8: {
+                int rawValue = input.readEnum();
+                org.apache.mesos.Protos.FrameworkInfo.Capability.Type value = org.apache.mesos.Protos.FrameworkInfo.Capability.Type.valueOf(rawValue);
+                if (value == null) {
+                  unknownFields.mergeVarintField(1, rawValue);
+                } else {
+                  bitField0_ |= 0x00000001;
+                  type_ = value;
+                }
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_FrameworkInfo_Capability_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_FrameworkInfo_Capability_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.FrameworkInfo.Capability.class, org.apache.mesos.Protos.FrameworkInfo.Capability.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Capability> PARSER =
+          new com.google.protobuf.AbstractParser<Capability>() {
+        public Capability parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Capability(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Capability> getParserForType() {
+        return PARSER;
+      }
+
+      /**
+       * Protobuf enum {@code mesos.FrameworkInfo.Capability.Type}
+       */
+      public enum Type
+          implements com.google.protobuf.ProtocolMessageEnum {
+        /**
+         * <code>UNKNOWN = 0;</code>
+         *
+         * <pre>
+         * This must be the first enum value in this list, to
+         * ensure that if 'type' is not set, the default value
+         * is UNKNOWN. This enables enum values to be added
+         * in a backwards-compatible way. See: MESOS-4997.
+         * </pre>
+         */
+        UNKNOWN(0, 0),
+        /**
+         * <code>REVOCABLE_RESOURCES = 1;</code>
+         *
+         * <pre>
+         * Receive offers with revocable resources. See 'Resource'
+         * message for details.
+         * </pre>
+         */
+        REVOCABLE_RESOURCES(1, 1),
+        /**
+         * <code>TASK_KILLING_STATE = 2;</code>
+         *
+         * <pre>
+         * Receive the TASK_KILLING TaskState when a task is being
+         * killed by an executor. The executor will examine this
+         * capability to determine whether it can send TASK_KILLING.
+         * </pre>
+         */
+        TASK_KILLING_STATE(2, 2),
+        /**
+         * <code>GPU_RESOURCES = 3;</code>
+         *
+         * <pre>
+         * Indicates whether the framework is aware of GPU resources.
+         * Frameworks that are aware of GPU resources are expected to
+         * avoid placing non-GPU workloads on GPU agents, in order
+         * to avoid occupying a GPU agent and preventing GPU workloads
+         * from running! Currently, if a framework is unaware of GPU
+         * resources, it will not be offered *any* of the resources on
+         * an agent with GPUs. This restriction is in place because we
+         * do not have a revocation mechanism that ensures GPU workloads
+         * can evict GPU agent occupants if necessary.
+         *
+         * TODO(bmahler): As we add revocation we can relax the
+         * restriction here. See MESOS-5634 for more information.
+         * </pre>
+         */
+        GPU_RESOURCES(3, 3),
+        /**
+         * <code>SHARED_RESOURCES = 4;</code>
+         *
+         * <pre>
+         * Receive offers with resources that are shared.
+         * </pre>
+         */
+        SHARED_RESOURCES(4, 4),
+        /**
+         * <code>PARTITION_AWARE = 5;</code>
+         *
+         * <pre>
+         * Indicates that (1) the framework is prepared to handle the
+         * following TaskStates: TASK_UNREACHABLE, TASK_DROPPED,
+         * TASK_GONE, TASK_GONE_BY_OPERATOR, and TASK_UNKNOWN, and (2)
+         * the framework will assume responsibility for managing
+         * partitioned tasks that reregister with the master.
+         *
+         * Frameworks that enable this capability can define how they
+         * would like to handle partitioned tasks. Frameworks will
+         * receive TASK_UNREACHABLE for tasks on agents that are
+         * partitioned from the master. If/when a partitioned agent
+         * reregisters, tasks on the agent that were started by
+         * PARTITION_AWARE frameworks will not killed.
+         *
+         * Without this capability, frameworks will receive TASK_LOST
+         * for tasks on partitioned agents; such tasks will be killed by
+         * Mesos when the agent reregisters (unless the master has
+         * failed over).
+         * </pre>
+         */
+        PARTITION_AWARE(5, 5),
+        /**
+         * <code>MULTI_ROLE = 6;</code>
+         *
+         * <pre>
+         * This expresses the ability for the framework to be
+         * "multi-tenant" via using the newly introduced `roles`
+         * field, and examining `Offer.allocation_info` to determine
+         * which role the offers are being made to. We also
+         * expect that "single-tenant" schedulers eventually
+         * provide this and move away from the deprecated
+         * `role` field.
+         * </pre>
+         */
+        MULTI_ROLE(6, 6),
+        /**
+         * <code>RESERVATION_REFINEMENT = 7;</code>
+         *
+         * <pre>
+         * This capability has two effects for a framework.
+         *
+         * (1) The framework is offered resources in a new format.
+         *
+         *     The offered resources have the `Resource.reservations` field set
+         *     rather than `Resource.role` and `Resource.reservation`. In short,
+         *     an empty `reservations` field denotes unreserved resources, and
+         *     each `ReservationInfo` in the `reservations` field denotes a
+         *     reservation that refines the previous one.
+         *
+         *     See the 'Resource Format' section for more details.
+         *
+         * (2) The framework can create refined reservations.
+         *
+         *     A framework can refine an existing reservation via the
+         *     `Resource.reservations` field. For example, a reservation for role
+         *     `eng` can be refined to `eng/front_end`.
+         *
+         *     See `ReservationInfo.reservations` for more details.
+         *
+         * NOTE: Without this capability, a framework is not offered resources
+         * that have refined reservations. A resource is said to have refined
+         * reservations if it uses the `Resource.reservations` field, and
+         * `Resource.reservations_size() &gt; 1`.
+         * </pre>
+         */
+        RESERVATION_REFINEMENT(7, 7),
+        /**
+         * <code>REGION_AWARE = 8;</code>
+         *
+         * <pre>
+         * Indicates that the framework is prepared to receive offers
+         * for agents whose region is different from the master's
+         * region. Network links between hosts in different regions
+         * typically have higher latency and lower bandwidth than
+         * network links within a region, so frameworks should be
+         * careful to only place suitable workloads in remote regions.
+         * Frameworks that are not region-aware will never receive
+         * offers for remote agents; region-aware frameworks are assumed
+         * to implement their own logic to decide which workloads (if
+         * any) are suitable for placement on remote agents.
+         * </pre>
+         */
+        REGION_AWARE(8, 8),
+        ;
+
+        /**
+         * <code>UNKNOWN = 0;</code>
+         *
+         * <pre>
+         * This must be the first enum value in this list, to
+         * ensure that if 'type' is not set, the default value
+         * is UNKNOWN. This enables enum values to be added
+         * in a backwards-compatible way. See: MESOS-4997.
+         * </pre>
+         */
+        public static final int UNKNOWN_VALUE = 0;
+        /**
+         * <code>REVOCABLE_RESOURCES = 1;</code>
+         *
+         * <pre>
+         * Receive offers with revocable resources. See 'Resource'
+         * message for details.
+         * </pre>
+         */
+        public static final int REVOCABLE_RESOURCES_VALUE = 1;
+        /**
+         * <code>TASK_KILLING_STATE = 2;</code>
+         *
+         * <pre>
+         * Receive the TASK_KILLING TaskState when a task is being
+         * killed by an executor. The executor will examine this
+         * capability to determine whether it can send TASK_KILLING.
+         * </pre>
+         */
+        public static final int TASK_KILLING_STATE_VALUE = 2;
+        /**
+         * <code>GPU_RESOURCES = 3;</code>
+         *
+         * <pre>
+         * Indicates whether the framework is aware of GPU resources.
+         * Frameworks that are aware of GPU resources are expected to
+         * avoid placing non-GPU workloads on GPU agents, in order
+         * to avoid occupying a GPU agent and preventing GPU workloads
+         * from running! Currently, if a framework is unaware of GPU
+         * resources, it will not be offered *any* of the resources on
+         * an agent with GPUs. This restriction is in place because we
+         * do not have a revocation mechanism that ensures GPU workloads
+         * can evict GPU agent occupants if necessary.
+         *
+         * TODO(bmahler): As we add revocation we can relax the
+         * restriction here. See MESOS-5634 for more information.
+         * </pre>
+         */
+        public static final int GPU_RESOURCES_VALUE = 3;
+        /**
+         * <code>SHARED_RESOURCES = 4;</code>
+         *
+         * <pre>
+         * Receive offers with resources that are shared.
+         * </pre>
+         */
+        public static final int SHARED_RESOURCES_VALUE = 4;
+        /**
+         * <code>PARTITION_AWARE = 5;</code>
+         *
+         * <pre>
+         * Indicates that (1) the framework is prepared to handle the
+         * following TaskStates: TASK_UNREACHABLE, TASK_DROPPED,
+         * TASK_GONE, TASK_GONE_BY_OPERATOR, and TASK_UNKNOWN, and (2)
+         * the framework will assume responsibility for managing
+         * partitioned tasks that reregister with the master.
+         *
+         * Frameworks that enable this capability can define how they
+         * would like to handle partitioned tasks. Frameworks will
+         * receive TASK_UNREACHABLE for tasks on agents that are
+         * partitioned from the master. If/when a partitioned agent
+         * reregisters, tasks on the agent that were started by
+         * PARTITION_AWARE frameworks will not killed.
+         *
+         * Without this capability, frameworks will receive TASK_LOST
+         * for tasks on partitioned agents; such tasks will be killed by
+         * Mesos when the agent reregisters (unless the master has
+         * failed over).
+         * </pre>
+         */
+        public static final int PARTITION_AWARE_VALUE = 5;
+        /**
+         * <code>MULTI_ROLE = 6;</code>
+         *
+         * <pre>
+         * This expresses the ability for the framework to be
+         * "multi-tenant" via using the newly introduced `roles`
+         * field, and examining `Offer.allocation_info` to determine
+         * which role the offers are being made to. We also
+         * expect that "single-tenant" schedulers eventually
+         * provide this and move away from the deprecated
+         * `role` field.
+         * </pre>
+         */
+        public static final int MULTI_ROLE_VALUE = 6;
+        /**
+         * <code>RESERVATION_REFINEMENT = 7;</code>
+         *
+         * <pre>
+         * This capability has two effects for a framework.
+         *
+         * (1) The framework is offered resources in a new format.
+         *
+         *     The offered resources have the `Resource.reservations` field set
+         *     rather than `Resource.role` and `Resource.reservation`. In short,
+         *     an empty `reservations` field denotes unreserved resources, and
+         *     each `ReservationInfo` in the `reservations` field denotes a
+         *     reservation that refines the previous one.
+         *
+         *     See the 'Resource Format' section for more details.
+         *
+         * (2) The framework can create refined reservations.
+         *
+         *     A framework can refine an existing reservation via the
+         *     `Resource.reservations` field. For example, a reservation for role
+         *     `eng` can be refined to `eng/front_end`.
+         *
+         *     See `ReservationInfo.reservations` for more details.
+         *
+         * NOTE: Without this capability, a framework is not offered resources
+         * that have refined reservations. A resource is said to have refined
+         * reservations if it uses the `Resource.reservations` field, and
+         * `Resource.reservations_size() &gt; 1`.
+         * </pre>
+         */
+        public static final int RESERVATION_REFINEMENT_VALUE = 7;
+        /**
+         * <code>REGION_AWARE = 8;</code>
+         *
+         * <pre>
+         * Indicates that the framework is prepared to receive offers
+         * for agents whose region is different from the master's
+         * region. Network links between hosts in different regions
+         * typically have higher latency and lower bandwidth than
+         * network links within a region, so frameworks should be
+         * careful to only place suitable workloads in remote regions.
+         * Frameworks that are not region-aware will never receive
+         * offers for remote agents; region-aware frameworks are assumed
+         * to implement their own logic to decide which workloads (if
+         * any) are suitable for placement on remote agents.
+         * </pre>
+         */
+        public static final int REGION_AWARE_VALUE = 8;
+
+
+        public final int getNumber() { return value; }
+
+        public static Type valueOf(int value) {
+          switch (value) {
+            case 0: return UNKNOWN;
+            case 1: return REVOCABLE_RESOURCES;
+            case 2: return TASK_KILLING_STATE;
+            case 3: return GPU_RESOURCES;
+            case 4: return SHARED_RESOURCES;
+            case 5: return PARTITION_AWARE;
+            case 6: return MULTI_ROLE;
+            case 7: return RESERVATION_REFINEMENT;
+            case 8: return REGION_AWARE;
+            default: return null;
+          }
+        }
+
+        public static com.google.protobuf.Internal.EnumLiteMap<Type>
+            internalGetValueMap() {
+          return internalValueMap;
+        }
+        private static com.google.protobuf.Internal.EnumLiteMap<Type>
+            internalValueMap =
+              new com.google.protobuf.Internal.EnumLiteMap<Type>() {
+                public Type findValueByNumber(int number) {
+                  return Type.valueOf(number);
+                }
+              };
+
+        public final com.google.protobuf.Descriptors.EnumValueDescriptor
+            getValueDescriptor() {
+          return getDescriptor().getValues().get(index);
+        }
+        public final com.google.protobuf.Descriptors.EnumDescriptor
+            getDescriptorForType() {
+          return getDescriptor();
+        }
+        public static final com.google.protobuf.Descriptors.EnumDescriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.FrameworkInfo.Capability.getDescriptor().getEnumTypes().get(0);
+        }
+
+        private static final Type[] VALUES = values();
+
+        public static Type valueOf(
+            com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+          if (desc.getType() != getDescriptor()) {
+            throw new java.lang.IllegalArgumentException(
+              "EnumValueDescriptor is not for this type.");
+          }
+          return VALUES[desc.getIndex()];
+        }
+
+        private final int index;
+        private final int value;
+
+        private Type(int index, int value) {
+          this.index = index;
+          this.value = value;
+        }
+
+        // @@protoc_insertion_point(enum_scope:mesos.FrameworkInfo.Capability.Type)
+      }
+
+      private int bitField0_;
+      // optional .mesos.FrameworkInfo.Capability.Type type = 1;
+      public static final int TYPE_FIELD_NUMBER = 1;
+      private org.apache.mesos.Protos.FrameworkInfo.Capability.Type type_;
+      /**
+       * <code>optional .mesos.FrameworkInfo.Capability.Type type = 1;</code>
+       *
+       * <pre>
+       * Enum fields should be optional, see: MESOS-4997.
+       * </pre>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.FrameworkInfo.Capability.Type type = 1;</code>
+       *
+       * <pre>
+       * Enum fields should be optional, see: MESOS-4997.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.FrameworkInfo.Capability.Type getType() {
+        return type_;
+      }
+
+      private void initFields() {
+        type_ = org.apache.mesos.Protos.FrameworkInfo.Capability.Type.UNKNOWN;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeEnum(1, type_.getNumber());
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeEnumSize(1, type_.getNumber());
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.Protos.FrameworkInfo.Capability parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.FrameworkInfo.Capability parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.FrameworkInfo.Capability parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.FrameworkInfo.Capability parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.FrameworkInfo.Capability parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.FrameworkInfo.Capability parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.FrameworkInfo.Capability parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.Protos.FrameworkInfo.Capability parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.FrameworkInfo.Capability parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.FrameworkInfo.Capability parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.Protos.FrameworkInfo.Capability prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.FrameworkInfo.Capability}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.Protos.FrameworkInfo.CapabilityOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_FrameworkInfo_Capability_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_FrameworkInfo_Capability_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.FrameworkInfo.Capability.class, org.apache.mesos.Protos.FrameworkInfo.Capability.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.Protos.FrameworkInfo.Capability.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          type_ = org.apache.mesos.Protos.FrameworkInfo.Capability.Type.UNKNOWN;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.Protos.internal_static_mesos_FrameworkInfo_Capability_descriptor;
+        }
+
+        public org.apache.mesos.Protos.FrameworkInfo.Capability getDefaultInstanceForType() {
+          return org.apache.mesos.Protos.FrameworkInfo.Capability.getDefaultInstance();
+        }
+
+        public org.apache.mesos.Protos.FrameworkInfo.Capability build() {
+          org.apache.mesos.Protos.FrameworkInfo.Capability result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.Protos.FrameworkInfo.Capability buildPartial() {
+          org.apache.mesos.Protos.FrameworkInfo.Capability result = new org.apache.mesos.Protos.FrameworkInfo.Capability(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.type_ = type_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.Protos.FrameworkInfo.Capability) {
+            return mergeFrom((org.apache.mesos.Protos.FrameworkInfo.Capability)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.Protos.FrameworkInfo.Capability other) {
+          if (other == org.apache.mesos.Protos.FrameworkInfo.Capability.getDefaultInstance()) return this;
+          if (other.hasType()) {
+            setType(other.getType());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.Protos.FrameworkInfo.Capability parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.Protos.FrameworkInfo.Capability) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // optional .mesos.FrameworkInfo.Capability.Type type = 1;
+        private org.apache.mesos.Protos.FrameworkInfo.Capability.Type type_ = org.apache.mesos.Protos.FrameworkInfo.Capability.Type.UNKNOWN;
+        /**
+         * <code>optional .mesos.FrameworkInfo.Capability.Type type = 1;</code>
+         *
+         * <pre>
+         * Enum fields should be optional, see: MESOS-4997.
+         * </pre>
+         */
+        public boolean hasType() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional .mesos.FrameworkInfo.Capability.Type type = 1;</code>
+         *
+         * <pre>
+         * Enum fields should be optional, see: MESOS-4997.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.FrameworkInfo.Capability.Type getType() {
+          return type_;
+        }
+        /**
+         * <code>optional .mesos.FrameworkInfo.Capability.Type type = 1;</code>
+         *
+         * <pre>
+         * Enum fields should be optional, see: MESOS-4997.
+         * </pre>
+         */
+        public Builder setType(org.apache.mesos.Protos.FrameworkInfo.Capability.Type value) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          bitField0_ |= 0x00000001;
+          type_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional .mesos.FrameworkInfo.Capability.Type type = 1;</code>
+         *
+         * <pre>
+         * Enum fields should be optional, see: MESOS-4997.
+         * </pre>
+         */
+        public Builder clearType() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          type_ = org.apache.mesos.Protos.FrameworkInfo.Capability.Type.UNKNOWN;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.FrameworkInfo.Capability)
+      }
+
+      static {
+        defaultInstance = new Capability(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.FrameworkInfo.Capability)
+    }
+
+    private int bitField0_;
+    // required string user = 1;
+    public static final int USER_FIELD_NUMBER = 1;
+    private java.lang.Object user_;
+    /**
+     * <code>required string user = 1;</code>
+     *
+     * <pre>
+     * Used to determine the Unix user that an executor or task should be
+     * launched as.
+     *
+     * When using the MesosSchedulerDriver, if the field is set to an
+     * empty string, it will automagically set it to the current user.
+     *
+     * When using the HTTP Scheduler API, the user has to be set
+     * explicitly.
+     * </pre>
+     */
+    public boolean hasUser() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string user = 1;</code>
+     *
+     * <pre>
+     * Used to determine the Unix user that an executor or task should be
+     * launched as.
+     *
+     * When using the MesosSchedulerDriver, if the field is set to an
+     * empty string, it will automagically set it to the current user.
+     *
+     * When using the HTTP Scheduler API, the user has to be set
+     * explicitly.
+     * </pre>
+     */
+    public java.lang.String getUser() {
+      java.lang.Object ref = user_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          user_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string user = 1;</code>
+     *
+     * <pre>
+     * Used to determine the Unix user that an executor or task should be
+     * launched as.
+     *
+     * When using the MesosSchedulerDriver, if the field is set to an
+     * empty string, it will automagically set it to the current user.
+     *
+     * When using the HTTP Scheduler API, the user has to be set
+     * explicitly.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getUserBytes() {
+      java.lang.Object ref = user_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        user_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // required string name = 2;
+    public static final int NAME_FIELD_NUMBER = 2;
+    private java.lang.Object name_;
+    /**
+     * <code>required string name = 2;</code>
+     *
+     * <pre>
+     * Name of the framework that shows up in the Mesos Web UI.
+     * </pre>
+     */
+    public boolean hasName() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>required string name = 2;</code>
+     *
+     * <pre>
+     * Name of the framework that shows up in the Mesos Web UI.
+     * </pre>
+     */
+    public java.lang.String getName() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          name_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string name = 2;</code>
+     *
+     * <pre>
+     * Name of the framework that shows up in the Mesos Web UI.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getNameBytes() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        name_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional .mesos.FrameworkID id = 3;
+    public static final int ID_FIELD_NUMBER = 3;
+    private org.apache.mesos.Protos.FrameworkID id_;
+    /**
+     * <code>optional .mesos.FrameworkID id = 3;</code>
+     *
+     * <pre>
+     * Note that 'id' is only available after a framework has
+     * registered, however, it is included here in order to facilitate
+     * scheduler failover (i.e., if it is set then the
+     * MesosSchedulerDriver expects the scheduler is performing
+     * failover).
+     * </pre>
+     */
+    public boolean hasId() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional .mesos.FrameworkID id = 3;</code>
+     *
+     * <pre>
+     * Note that 'id' is only available after a framework has
+     * registered, however, it is included here in order to facilitate
+     * scheduler failover (i.e., if it is set then the
+     * MesosSchedulerDriver expects the scheduler is performing
+     * failover).
+     * </pre>
+     */
+    public org.apache.mesos.Protos.FrameworkID getId() {
+      return id_;
+    }
+    /**
+     * <code>optional .mesos.FrameworkID id = 3;</code>
+     *
+     * <pre>
+     * Note that 'id' is only available after a framework has
+     * registered, however, it is included here in order to facilitate
+     * scheduler failover (i.e., if it is set then the
+     * MesosSchedulerDriver expects the scheduler is performing
+     * failover).
+     * </pre>
+     */
+    public org.apache.mesos.Protos.FrameworkIDOrBuilder getIdOrBuilder() {
+      return id_;
+    }
+
+    // optional double failover_timeout = 4 [default = 0];
+    public static final int FAILOVER_TIMEOUT_FIELD_NUMBER = 4;
+    private double failoverTimeout_;
+    /**
+     * <code>optional double failover_timeout = 4 [default = 0];</code>
+     *
+     * <pre>
+     * The amount of time (in seconds) that the master will wait for the
+     * scheduler to failover before it tears down the framework by
+     * killing all its tasks/executors. This should be non-zero if a
+     * framework expects to reconnect after a failure and not lose its
+     * tasks/executors.
+     *
+     * NOTE: To avoid accidental destruction of tasks, production
+     * frameworks typically set this to a large value (e.g., 1 week).
+     * </pre>
+     */
+    public boolean hasFailoverTimeout() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional double failover_timeout = 4 [default = 0];</code>
+     *
+     * <pre>
+     * The amount of time (in seconds) that the master will wait for the
+     * scheduler to failover before it tears down the framework by
+     * killing all its tasks/executors. This should be non-zero if a
+     * framework expects to reconnect after a failure and not lose its
+     * tasks/executors.
+     *
+     * NOTE: To avoid accidental destruction of tasks, production
+     * frameworks typically set this to a large value (e.g., 1 week).
+     * </pre>
+     */
+    public double getFailoverTimeout() {
+      return failoverTimeout_;
+    }
+
+    // optional bool checkpoint = 5 [default = false];
+    public static final int CHECKPOINT_FIELD_NUMBER = 5;
+    private boolean checkpoint_;
+    /**
+     * <code>optional bool checkpoint = 5 [default = false];</code>
+     *
+     * <pre>
+     * If set, agents running tasks started by this framework will write
+     * the framework pid, executor pids and status updates to disk. If
+     * the agent exits (e.g., due to a crash or as part of upgrading
+     * Mesos), this checkpointed data allows the restarted agent to
+     * reconnect to executors that were started by the old instance of
+     * the agent. Enabling checkpointing improves fault tolerance, at
+     * the cost of a (usually small) increase in disk I/O.
+     * </pre>
+     */
+    public boolean hasCheckpoint() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional bool checkpoint = 5 [default = false];</code>
+     *
+     * <pre>
+     * If set, agents running tasks started by this framework will write
+     * the framework pid, executor pids and status updates to disk. If
+     * the agent exits (e.g., due to a crash or as part of upgrading
+     * Mesos), this checkpointed data allows the restarted agent to
+     * reconnect to executors that were started by the old instance of
+     * the agent. Enabling checkpointing improves fault tolerance, at
+     * the cost of a (usually small) increase in disk I/O.
+     * </pre>
+     */
+    public boolean getCheckpoint() {
+      return checkpoint_;
+    }
+
+    // optional string role = 6 [default = "*", deprecated = true];
+    public static final int ROLE_FIELD_NUMBER = 6;
+    private java.lang.Object role_;
+    /**
+     * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+     *
+     * <pre>
+     * Roles are the entities to which allocations are made.
+     * The framework must have at least one role in order to
+     * be offered resources. Note that `role` is deprecated
+     * in favor of `roles` and only one of these fields must
+     * be used. Since we cannot distinguish between empty
+     * `roles` and the default unset `role`, we require that
+     * frameworks set the `MULTI_ROLE` capability if
+     * setting the `roles` field.
+     * </pre>
+     */
+    @java.lang.Deprecated public boolean hasRole() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+     *
+     * <pre>
+     * Roles are the entities to which allocations are made.
+     * The framework must have at least one role in order to
+     * be offered resources. Note that `role` is deprecated
+     * in favor of `roles` and only one of these fields must
+     * be used. Since we cannot distinguish between empty
+     * `roles` and the default unset `role`, we require that
+     * frameworks set the `MULTI_ROLE` capability if
+     * setting the `roles` field.
+     * </pre>
+     */
+    @java.lang.Deprecated public java.lang.String getRole() {
+      java.lang.Object ref = role_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          role_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+     *
+     * <pre>
+     * Roles are the entities to which allocations are made.
+     * The framework must have at least one role in order to
+     * be offered resources. Note that `role` is deprecated
+     * in favor of `roles` and only one of these fields must
+     * be used. Since we cannot distinguish between empty
+     * `roles` and the default unset `role`, we require that
+     * frameworks set the `MULTI_ROLE` capability if
+     * setting the `roles` field.
+     * </pre>
+     */
+    @java.lang.Deprecated public com.google.protobuf.ByteString
+        getRoleBytes() {
+      java.lang.Object ref = role_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        role_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // repeated string roles = 12;
+    public static final int ROLES_FIELD_NUMBER = 12;
+    private com.google.protobuf.LazyStringList roles_;
+    /**
+     * <code>repeated string roles = 12;</code>
+     */
+    public java.util.List<java.lang.String>
+        getRolesList() {
+      return roles_;
+    }
+    /**
+     * <code>repeated string roles = 12;</code>
+     */
+    public int getRolesCount() {
+      return roles_.size();
+    }
+    /**
+     * <code>repeated string roles = 12;</code>
+     */
+    public java.lang.String getRoles(int index) {
+      return roles_.get(index);
+    }
+    /**
+     * <code>repeated string roles = 12;</code>
+     */
+    public com.google.protobuf.ByteString
+        getRolesBytes(int index) {
+      return roles_.getByteString(index);
+    }
+
+    // optional string hostname = 7;
+    public static final int HOSTNAME_FIELD_NUMBER = 7;
+    private java.lang.Object hostname_;
+    /**
+     * <code>optional string hostname = 7;</code>
+     *
+     * <pre>
+     * Used to indicate the current host from which the scheduler is
+     * registered in the Mesos Web UI. If set to an empty string Mesos
+     * will automagically set it to the current hostname if one is
+     * available.
+     * </pre>
+     */
+    public boolean hasHostname() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional string hostname = 7;</code>
+     *
+     * <pre>
+     * Used to indicate the current host from which the scheduler is
+     * registered in the Mesos Web UI. If set to an empty string Mesos
+     * will automagically set it to the current hostname if one is
+     * available.
+     * </pre>
+     */
+    public java.lang.String getHostname() {
+      java.lang.Object ref = hostname_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          hostname_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string hostname = 7;</code>
+     *
+     * <pre>
+     * Used to indicate the current host from which the scheduler is
+     * registered in the Mesos Web UI. If set to an empty string Mesos
+     * will automagically set it to the current hostname if one is
+     * available.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getHostnameBytes() {
+      java.lang.Object ref = hostname_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        hostname_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional string principal = 8;
+    public static final int PRINCIPAL_FIELD_NUMBER = 8;
+    private java.lang.Object principal_;
+    /**
+     * <code>optional string principal = 8;</code>
+     *
+     * <pre>
+     * This field should match the credential's principal the framework
+     * uses for authentication. This field is used for framework API
+     * rate limiting and dynamic reservations. It should be set even
+     * if authentication is not enabled if these features are desired.
+     * </pre>
+     */
+    public boolean hasPrincipal() {
+      return ((bitField0_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional string principal = 8;</code>
+     *
+     * <pre>
+     * This field should match the credential's principal the framework
+     * uses for authentication. This field is used for framework API
+     * rate limiting and dynamic reservations. It should be set even
+     * if authentication is not enabled if these features are desired.
+     * </pre>
+     */
+    public java.lang.String getPrincipal() {
+      java.lang.Object ref = principal_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          principal_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string principal = 8;</code>
+     *
+     * <pre>
+     * This field should match the credential's principal the framework
+     * uses for authentication. This field is used for framework API
+     * rate limiting and dynamic reservations. It should be set even
+     * if authentication is not enabled if these features are desired.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getPrincipalBytes() {
+      java.lang.Object ref = principal_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        principal_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional string webui_url = 9;
+    public static final int WEBUI_URL_FIELD_NUMBER = 9;
+    private java.lang.Object webuiUrl_;
+    /**
+     * <code>optional string webui_url = 9;</code>
+     *
+     * <pre>
+     * This field allows a framework to advertise its web UI, so that
+     * the Mesos web UI can link to it. It is expected to be a full URL,
+     * for example http://my-scheduler.example.com:8080/.
+     * </pre>
+     */
+    public boolean hasWebuiUrl() {
+      return ((bitField0_ & 0x00000100) == 0x00000100);
+    }
+    /**
+     * <code>optional string webui_url = 9;</code>
+     *
+     * <pre>
+     * This field allows a framework to advertise its web UI, so that
+     * the Mesos web UI can link to it. It is expected to be a full URL,
+     * for example http://my-scheduler.example.com:8080/.
+     * </pre>
+     */
+    public java.lang.String getWebuiUrl() {
+      java.lang.Object ref = webuiUrl_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          webuiUrl_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string webui_url = 9;</code>
+     *
+     * <pre>
+     * This field allows a framework to advertise its web UI, so that
+     * the Mesos web UI can link to it. It is expected to be a full URL,
+     * for example http://my-scheduler.example.com:8080/.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getWebuiUrlBytes() {
+      java.lang.Object ref = webuiUrl_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        webuiUrl_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // repeated .mesos.FrameworkInfo.Capability capabilities = 10;
+    public static final int CAPABILITIES_FIELD_NUMBER = 10;
+    private java.util.List<org.apache.mesos.Protos.FrameworkInfo.Capability> capabilities_;
+    /**
+     * <code>repeated .mesos.FrameworkInfo.Capability capabilities = 10;</code>
+     *
+     * <pre>
+     * This field allows a framework to advertise its set of
+     * capabilities (e.g., ability to receive offers for revocable
+     * resources).
+     * </pre>
+     */
+    public java.util.List<org.apache.mesos.Protos.FrameworkInfo.Capability> getCapabilitiesList() {
+      return capabilities_;
+    }
+    /**
+     * <code>repeated .mesos.FrameworkInfo.Capability capabilities = 10;</code>
+     *
+     * <pre>
+     * This field allows a framework to advertise its set of
+     * capabilities (e.g., ability to receive offers for revocable
+     * resources).
+     * </pre>
+     */
+    public java.util.List<? extends org.apache.mesos.Protos.FrameworkInfo.CapabilityOrBuilder> 
+        getCapabilitiesOrBuilderList() {
+      return capabilities_;
+    }
+    /**
+     * <code>repeated .mesos.FrameworkInfo.Capability capabilities = 10;</code>
+     *
+     * <pre>
+     * This field allows a framework to advertise its set of
+     * capabilities (e.g., ability to receive offers for revocable
+     * resources).
+     * </pre>
+     */
+    public int getCapabilitiesCount() {
+      return capabilities_.size();
+    }
+    /**
+     * <code>repeated .mesos.FrameworkInfo.Capability capabilities = 10;</code>
+     *
+     * <pre>
+     * This field allows a framework to advertise its set of
+     * capabilities (e.g., ability to receive offers for revocable
+     * resources).
+     * </pre>
+     */
+    public org.apache.mesos.Protos.FrameworkInfo.Capability getCapabilities(int index) {
+      return capabilities_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.FrameworkInfo.Capability capabilities = 10;</code>
+     *
+     * <pre>
+     * This field allows a framework to advertise its set of
+     * capabilities (e.g., ability to receive offers for revocable
+     * resources).
+     * </pre>
+     */
+    public org.apache.mesos.Protos.FrameworkInfo.CapabilityOrBuilder getCapabilitiesOrBuilder(
+        int index) {
+      return capabilities_.get(index);
+    }
+
+    // optional .mesos.Labels labels = 11;
+    public static final int LABELS_FIELD_NUMBER = 11;
+    private org.apache.mesos.Protos.Labels labels_;
+    /**
+     * <code>optional .mesos.Labels labels = 11;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs supplied by the framework
+     * scheduler (e.g., to describe additional functionality offered by
+     * the framework). These labels are not interpreted by Mesos itself.
+     * Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    public boolean hasLabels() {
+      return ((bitField0_ & 0x00000200) == 0x00000200);
+    }
+    /**
+     * <code>optional .mesos.Labels labels = 11;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs supplied by the framework
+     * scheduler (e.g., to describe additional functionality offered by
+     * the framework). These labels are not interpreted by Mesos itself.
+     * Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.Labels getLabels() {
+      return labels_;
+    }
+    /**
+     * <code>optional .mesos.Labels labels = 11;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs supplied by the framework
+     * scheduler (e.g., to describe additional functionality offered by
+     * the framework). These labels are not interpreted by Mesos itself.
+     * Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+      return labels_;
+    }
+
+    private void initFields() {
+      user_ = "";
+      name_ = "";
+      id_ = org.apache.mesos.Protos.FrameworkID.getDefaultInstance();
+      failoverTimeout_ = 0D;
+      checkpoint_ = false;
+      role_ = "*";
+      roles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+      hostname_ = "";
+      principal_ = "";
+      webuiUrl_ = "";
+      capabilities_ = java.util.Collections.emptyList();
+      labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasUser()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasName()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (hasId()) {
+        if (!getId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasLabels()) {
+        if (!getLabels().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getUserBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(2, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeMessage(3, id_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeDouble(4, failoverTimeout_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeBool(5, checkpoint_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeBytes(6, getRoleBytes());
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeBytes(7, getHostnameBytes());
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        output.writeBytes(8, getPrincipalBytes());
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        output.writeBytes(9, getWebuiUrlBytes());
+      }
+      for (int i = 0; i < capabilities_.size(); i++) {
+        output.writeMessage(10, capabilities_.get(i));
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        output.writeMessage(11, labels_);
+      }
+      for (int i = 0; i < roles_.size(); i++) {
+        output.writeBytes(12, roles_.getByteString(i));
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getUserBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(2, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, id_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(4, failoverTimeout_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(5, checkpoint_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(6, getRoleBytes());
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(7, getHostnameBytes());
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(8, getPrincipalBytes());
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(9, getWebuiUrlBytes());
+      }
+      for (int i = 0; i < capabilities_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(10, capabilities_.get(i));
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(11, labels_);
+      }
+      {
+        int dataSize = 0;
+        for (int i = 0; i < roles_.size(); i++) {
+          dataSize += com.google.protobuf.CodedOutputStream
+            .computeBytesSizeNoTag(roles_.getByteString(i));
+        }
+        size += dataSize;
+        size += 1 * getRolesList().size();
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.FrameworkInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.FrameworkInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.FrameworkInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.FrameworkInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.FrameworkInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.FrameworkInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.FrameworkInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.FrameworkInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.FrameworkInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.FrameworkInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.FrameworkInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.FrameworkInfo}
+     *
+     * <pre>
+     **
+     * Describes a framework.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.FrameworkInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_FrameworkInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_FrameworkInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.FrameworkInfo.class, org.apache.mesos.Protos.FrameworkInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.FrameworkInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getIdFieldBuilder();
+          getCapabilitiesFieldBuilder();
+          getLabelsFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        user_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        name_ = "";
+        bitField0_ = (bitField0_ & ~0x00000002);
+        if (idBuilder_ == null) {
+          id_ = org.apache.mesos.Protos.FrameworkID.getDefaultInstance();
+        } else {
+          idBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        failoverTimeout_ = 0D;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        checkpoint_ = false;
+        bitField0_ = (bitField0_ & ~0x00000010);
+        role_ = "*";
+        bitField0_ = (bitField0_ & ~0x00000020);
+        roles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+        bitField0_ = (bitField0_ & ~0x00000040);
+        hostname_ = "";
+        bitField0_ = (bitField0_ & ~0x00000080);
+        principal_ = "";
+        bitField0_ = (bitField0_ & ~0x00000100);
+        webuiUrl_ = "";
+        bitField0_ = (bitField0_ & ~0x00000200);
+        if (capabilitiesBuilder_ == null) {
+          capabilities_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000400);
+        } else {
+          capabilitiesBuilder_.clear();
+        }
+        if (labelsBuilder_ == null) {
+          labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+        } else {
+          labelsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000800);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_FrameworkInfo_descriptor;
+      }
+
+      public org.apache.mesos.Protos.FrameworkInfo getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.FrameworkInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.FrameworkInfo build() {
+        org.apache.mesos.Protos.FrameworkInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.FrameworkInfo buildPartial() {
+        org.apache.mesos.Protos.FrameworkInfo result = new org.apache.mesos.Protos.FrameworkInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.user_ = user_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.name_ = name_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        if (idBuilder_ == null) {
+          result.id_ = id_;
+        } else {
+          result.id_ = idBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.failoverTimeout_ = failoverTimeout_;
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.checkpoint_ = checkpoint_;
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        result.role_ = role_;
+        if (((bitField0_ & 0x00000040) == 0x00000040)) {
+          roles_ = new com.google.protobuf.UnmodifiableLazyStringList(
+              roles_);
+          bitField0_ = (bitField0_ & ~0x00000040);
+        }
+        result.roles_ = roles_;
+        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        result.hostname_ = hostname_;
+        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
+          to_bitField0_ |= 0x00000080;
+        }
+        result.principal_ = principal_;
+        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
+          to_bitField0_ |= 0x00000100;
+        }
+        result.webuiUrl_ = webuiUrl_;
+        if (capabilitiesBuilder_ == null) {
+          if (((bitField0_ & 0x00000400) == 0x00000400)) {
+            capabilities_ = java.util.Collections.unmodifiableList(capabilities_);
+            bitField0_ = (bitField0_ & ~0x00000400);
+          }
+          result.capabilities_ = capabilities_;
+        } else {
+          result.capabilities_ = capabilitiesBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
+          to_bitField0_ |= 0x00000200;
+        }
+        if (labelsBuilder_ == null) {
+          result.labels_ = labels_;
+        } else {
+          result.labels_ = labelsBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.FrameworkInfo) {
+          return mergeFrom((org.apache.mesos.Protos.FrameworkInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.FrameworkInfo other) {
+        if (other == org.apache.mesos.Protos.FrameworkInfo.getDefaultInstance()) return this;
+        if (other.hasUser()) {
+          bitField0_ |= 0x00000001;
+          user_ = other.user_;
+          onChanged();
+        }
+        if (other.hasName()) {
+          bitField0_ |= 0x00000002;
+          name_ = other.name_;
+          onChanged();
+        }
+        if (other.hasId()) {
+          mergeId(other.getId());
+        }
+        if (other.hasFailoverTimeout()) {
+          setFailoverTimeout(other.getFailoverTimeout());
+        }
+        if (other.hasCheckpoint()) {
+          setCheckpoint(other.getCheckpoint());
+        }
+        if (other.hasRole()) {
+          bitField0_ |= 0x00000020;
+          role_ = other.role_;
+          onChanged();
+        }
+        if (!other.roles_.isEmpty()) {
+          if (roles_.isEmpty()) {
+            roles_ = other.roles_;
+            bitField0_ = (bitField0_ & ~0x00000040);
+          } else {
+            ensureRolesIsMutable();
+            roles_.addAll(other.roles_);
+          }
+          onChanged();
+        }
+        if (other.hasHostname()) {
+          bitField0_ |= 0x00000080;
+          hostname_ = other.hostname_;
+          onChanged();
+        }
+        if (other.hasPrincipal()) {
+          bitField0_ |= 0x00000100;
+          principal_ = other.principal_;
+          onChanged();
+        }
+        if (other.hasWebuiUrl()) {
+          bitField0_ |= 0x00000200;
+          webuiUrl_ = other.webuiUrl_;
+          onChanged();
+        }
+        if (capabilitiesBuilder_ == null) {
+          if (!other.capabilities_.isEmpty()) {
+            if (capabilities_.isEmpty()) {
+              capabilities_ = other.capabilities_;
+              bitField0_ = (bitField0_ & ~0x00000400);
+            } else {
+              ensureCapabilitiesIsMutable();
+              capabilities_.addAll(other.capabilities_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.capabilities_.isEmpty()) {
+            if (capabilitiesBuilder_.isEmpty()) {
+              capabilitiesBuilder_.dispose();
+              capabilitiesBuilder_ = null;
+              capabilities_ = other.capabilities_;
+              bitField0_ = (bitField0_ & ~0x00000400);
+              capabilitiesBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getCapabilitiesFieldBuilder() : null;
+            } else {
+              capabilitiesBuilder_.addAllMessages(other.capabilities_);
+            }
+          }
+        }
+        if (other.hasLabels()) {
+          mergeLabels(other.getLabels());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasUser()) {
+          
+          return false;
+        }
+        if (!hasName()) {
+          
+          return false;
+        }
+        if (hasId()) {
+          if (!getId().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasLabels()) {
+          if (!getLabels().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.FrameworkInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.FrameworkInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string user = 1;
+      private java.lang.Object user_ = "";
+      /**
+       * <code>required string user = 1;</code>
+       *
+       * <pre>
+       * Used to determine the Unix user that an executor or task should be
+       * launched as.
+       *
+       * When using the MesosSchedulerDriver, if the field is set to an
+       * empty string, it will automagically set it to the current user.
+       *
+       * When using the HTTP Scheduler API, the user has to be set
+       * explicitly.
+       * </pre>
+       */
+      public boolean hasUser() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string user = 1;</code>
+       *
+       * <pre>
+       * Used to determine the Unix user that an executor or task should be
+       * launched as.
+       *
+       * When using the MesosSchedulerDriver, if the field is set to an
+       * empty string, it will automagically set it to the current user.
+       *
+       * When using the HTTP Scheduler API, the user has to be set
+       * explicitly.
+       * </pre>
+       */
+      public java.lang.String getUser() {
+        java.lang.Object ref = user_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          user_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string user = 1;</code>
+       *
+       * <pre>
+       * Used to determine the Unix user that an executor or task should be
+       * launched as.
+       *
+       * When using the MesosSchedulerDriver, if the field is set to an
+       * empty string, it will automagically set it to the current user.
+       *
+       * When using the HTTP Scheduler API, the user has to be set
+       * explicitly.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getUserBytes() {
+        java.lang.Object ref = user_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          user_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string user = 1;</code>
+       *
+       * <pre>
+       * Used to determine the Unix user that an executor or task should be
+       * launched as.
+       *
+       * When using the MesosSchedulerDriver, if the field is set to an
+       * empty string, it will automagically set it to the current user.
+       *
+       * When using the HTTP Scheduler API, the user has to be set
+       * explicitly.
+       * </pre>
+       */
+      public Builder setUser(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        user_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string user = 1;</code>
+       *
+       * <pre>
+       * Used to determine the Unix user that an executor or task should be
+       * launched as.
+       *
+       * When using the MesosSchedulerDriver, if the field is set to an
+       * empty string, it will automagically set it to the current user.
+       *
+       * When using the HTTP Scheduler API, the user has to be set
+       * explicitly.
+       * </pre>
+       */
+      public Builder clearUser() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        user_ = getDefaultInstance().getUser();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string user = 1;</code>
+       *
+       * <pre>
+       * Used to determine the Unix user that an executor or task should be
+       * launched as.
+       *
+       * When using the MesosSchedulerDriver, if the field is set to an
+       * empty string, it will automagically set it to the current user.
+       *
+       * When using the HTTP Scheduler API, the user has to be set
+       * explicitly.
+       * </pre>
+       */
+      public Builder setUserBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        user_ = value;
+        onChanged();
+        return this;
+      }
+
+      // required string name = 2;
+      private java.lang.Object name_ = "";
+      /**
+       * <code>required string name = 2;</code>
+       *
+       * <pre>
+       * Name of the framework that shows up in the Mesos Web UI.
+       * </pre>
+       */
+      public boolean hasName() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required string name = 2;</code>
+       *
+       * <pre>
+       * Name of the framework that shows up in the Mesos Web UI.
+       * </pre>
+       */
+      public java.lang.String getName() {
+        java.lang.Object ref = name_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          name_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string name = 2;</code>
+       *
+       * <pre>
+       * Name of the framework that shows up in the Mesos Web UI.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        java.lang.Object ref = name_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          name_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string name = 2;</code>
+       *
+       * <pre>
+       * Name of the framework that shows up in the Mesos Web UI.
+       * </pre>
+       */
+      public Builder setName(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string name = 2;</code>
+       *
+       * <pre>
+       * Name of the framework that shows up in the Mesos Web UI.
+       * </pre>
+       */
+      public Builder clearName() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        name_ = getDefaultInstance().getName();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string name = 2;</code>
+       *
+       * <pre>
+       * Name of the framework that shows up in the Mesos Web UI.
+       * </pre>
+       */
+      public Builder setNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.FrameworkID id = 3;
+      private org.apache.mesos.Protos.FrameworkID id_ = org.apache.mesos.Protos.FrameworkID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.FrameworkID, org.apache.mesos.Protos.FrameworkID.Builder, org.apache.mesos.Protos.FrameworkIDOrBuilder> idBuilder_;
+      /**
+       * <code>optional .mesos.FrameworkID id = 3;</code>
+       *
+       * <pre>
+       * Note that 'id' is only available after a framework has
+       * registered, however, it is included here in order to facilitate
+       * scheduler failover (i.e., if it is set then the
+       * MesosSchedulerDriver expects the scheduler is performing
+       * failover).
+       * </pre>
+       */
+      public boolean hasId() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.FrameworkID id = 3;</code>
+       *
+       * <pre>
+       * Note that 'id' is only available after a framework has
+       * registered, however, it is included here in order to facilitate
+       * scheduler failover (i.e., if it is set then the
+       * MesosSchedulerDriver expects the scheduler is performing
+       * failover).
+       * </pre>
+       */
+      public org.apache.mesos.Protos.FrameworkID getId() {
+        if (idBuilder_ == null) {
+          return id_;
+        } else {
+          return idBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.FrameworkID id = 3;</code>
+       *
+       * <pre>
+       * Note that 'id' is only available after a framework has
+       * registered, however, it is included here in order to facilitate
+       * scheduler failover (i.e., if it is set then the
+       * MesosSchedulerDriver expects the scheduler is performing
+       * failover).
+       * </pre>
+       */
+      public Builder setId(org.apache.mesos.Protos.FrameworkID value) {
+        if (idBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          id_ = value;
+          onChanged();
+        } else {
+          idBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.FrameworkID id = 3;</code>
+       *
+       * <pre>
+       * Note that 'id' is only available after a framework has
+       * registered, however, it is included here in order to facilitate
+       * scheduler failover (i.e., if it is set then the
+       * MesosSchedulerDriver expects the scheduler is performing
+       * failover).
+       * </pre>
+       */
+      public Builder setId(
+          org.apache.mesos.Protos.FrameworkID.Builder builderForValue) {
+        if (idBuilder_ == null) {
+          id_ = builderForValue.build();
+          onChanged();
+        } else {
+          idBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.FrameworkID id = 3;</code>
+       *
+       * <pre>
+       * Note that 'id' is only available after a framework has
+       * registered, however, it is included here in order to facilitate
+       * scheduler failover (i.e., if it is set then the
+       * MesosSchedulerDriver expects the scheduler is performing
+       * failover).
+       * </pre>
+       */
+      public Builder mergeId(org.apache.mesos.Protos.FrameworkID value) {
+        if (idBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) == 0x00000004) &&
+              id_ != org.apache.mesos.Protos.FrameworkID.getDefaultInstance()) {
+            id_ =
+              org.apache.mesos.Protos.FrameworkID.newBuilder(id_).mergeFrom(value).buildPartial();
+          } else {
+            id_ = value;
+          }
+          onChanged();
+        } else {
+          idBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.FrameworkID id = 3;</code>
+       *
+       * <pre>
+       * Note that 'id' is only available after a framework has
+       * registered, however, it is included here in order to facilitate
+       * scheduler failover (i.e., if it is set then the
+       * MesosSchedulerDriver expects the scheduler is performing
+       * failover).
+       * </pre>
+       */
+      public Builder clearId() {
+        if (idBuilder_ == null) {
+          id_ = org.apache.mesos.Protos.FrameworkID.getDefaultInstance();
+          onChanged();
+        } else {
+          idBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.FrameworkID id = 3;</code>
+       *
+       * <pre>
+       * Note that 'id' is only available after a framework has
+       * registered, however, it is included here in order to facilitate
+       * scheduler failover (i.e., if it is set then the
+       * MesosSchedulerDriver expects the scheduler is performing
+       * failover).
+       * </pre>
+       */
+      public org.apache.mesos.Protos.FrameworkID.Builder getIdBuilder() {
+        bitField0_ |= 0x00000004;
+        onChanged();
+        return getIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.FrameworkID id = 3;</code>
+       *
+       * <pre>
+       * Note that 'id' is only available after a framework has
+       * registered, however, it is included here in order to facilitate
+       * scheduler failover (i.e., if it is set then the
+       * MesosSchedulerDriver expects the scheduler is performing
+       * failover).
+       * </pre>
+       */
+      public org.apache.mesos.Protos.FrameworkIDOrBuilder getIdOrBuilder() {
+        if (idBuilder_ != null) {
+          return idBuilder_.getMessageOrBuilder();
+        } else {
+          return id_;
+        }
+      }
+      /**
+       * <code>optional .mesos.FrameworkID id = 3;</code>
+       *
+       * <pre>
+       * Note that 'id' is only available after a framework has
+       * registered, however, it is included here in order to facilitate
+       * scheduler failover (i.e., if it is set then the
+       * MesosSchedulerDriver expects the scheduler is performing
+       * failover).
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.FrameworkID, org.apache.mesos.Protos.FrameworkID.Builder, org.apache.mesos.Protos.FrameworkIDOrBuilder> 
+          getIdFieldBuilder() {
+        if (idBuilder_ == null) {
+          idBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.FrameworkID, org.apache.mesos.Protos.FrameworkID.Builder, org.apache.mesos.Protos.FrameworkIDOrBuilder>(
+                  id_,
+                  getParentForChildren(),
+                  isClean());
+          id_ = null;
+        }
+        return idBuilder_;
+      }
+
+      // optional double failover_timeout = 4 [default = 0];
+      private double failoverTimeout_ ;
+      /**
+       * <code>optional double failover_timeout = 4 [default = 0];</code>
+       *
+       * <pre>
+       * The amount of time (in seconds) that the master will wait for the
+       * scheduler to failover before it tears down the framework by
+       * killing all its tasks/executors. This should be non-zero if a
+       * framework expects to reconnect after a failure and not lose its
+       * tasks/executors.
+       *
+       * NOTE: To avoid accidental destruction of tasks, production
+       * frameworks typically set this to a large value (e.g., 1 week).
+       * </pre>
+       */
+      public boolean hasFailoverTimeout() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional double failover_timeout = 4 [default = 0];</code>
+       *
+       * <pre>
+       * The amount of time (in seconds) that the master will wait for the
+       * scheduler to failover before it tears down the framework by
+       * killing all its tasks/executors. This should be non-zero if a
+       * framework expects to reconnect after a failure and not lose its
+       * tasks/executors.
+       *
+       * NOTE: To avoid accidental destruction of tasks, production
+       * frameworks typically set this to a large value (e.g., 1 week).
+       * </pre>
+       */
+      public double getFailoverTimeout() {
+        return failoverTimeout_;
+      }
+      /**
+       * <code>optional double failover_timeout = 4 [default = 0];</code>
+       *
+       * <pre>
+       * The amount of time (in seconds) that the master will wait for the
+       * scheduler to failover before it tears down the framework by
+       * killing all its tasks/executors. This should be non-zero if a
+       * framework expects to reconnect after a failure and not lose its
+       * tasks/executors.
+       *
+       * NOTE: To avoid accidental destruction of tasks, production
+       * frameworks typically set this to a large value (e.g., 1 week).
+       * </pre>
+       */
+      public Builder setFailoverTimeout(double value) {
+        bitField0_ |= 0x00000008;
+        failoverTimeout_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double failover_timeout = 4 [default = 0];</code>
+       *
+       * <pre>
+       * The amount of time (in seconds) that the master will wait for the
+       * scheduler to failover before it tears down the framework by
+       * killing all its tasks/executors. This should be non-zero if a
+       * framework expects to reconnect after a failure and not lose its
+       * tasks/executors.
+       *
+       * NOTE: To avoid accidental destruction of tasks, production
+       * frameworks typically set this to a large value (e.g., 1 week).
+       * </pre>
+       */
+      public Builder clearFailoverTimeout() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        failoverTimeout_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // optional bool checkpoint = 5 [default = false];
+      private boolean checkpoint_ ;
+      /**
+       * <code>optional bool checkpoint = 5 [default = false];</code>
+       *
+       * <pre>
+       * If set, agents running tasks started by this framework will write
+       * the framework pid, executor pids and status updates to disk. If
+       * the agent exits (e.g., due to a crash or as part of upgrading
+       * Mesos), this checkpointed data allows the restarted agent to
+       * reconnect to executors that were started by the old instance of
+       * the agent. Enabling checkpointing improves fault tolerance, at
+       * the cost of a (usually small) increase in disk I/O.
+       * </pre>
+       */
+      public boolean hasCheckpoint() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional bool checkpoint = 5 [default = false];</code>
+       *
+       * <pre>
+       * If set, agents running tasks started by this framework will write
+       * the framework pid, executor pids and status updates to disk. If
+       * the agent exits (e.g., due to a crash or as part of upgrading
+       * Mesos), this checkpointed data allows the restarted agent to
+       * reconnect to executors that were started by the old instance of
+       * the agent. Enabling checkpointing improves fault tolerance, at
+       * the cost of a (usually small) increase in disk I/O.
+       * </pre>
+       */
+      public boolean getCheckpoint() {
+        return checkpoint_;
+      }
+      /**
+       * <code>optional bool checkpoint = 5 [default = false];</code>
+       *
+       * <pre>
+       * If set, agents running tasks started by this framework will write
+       * the framework pid, executor pids and status updates to disk. If
+       * the agent exits (e.g., due to a crash or as part of upgrading
+       * Mesos), this checkpointed data allows the restarted agent to
+       * reconnect to executors that were started by the old instance of
+       * the agent. Enabling checkpointing improves fault tolerance, at
+       * the cost of a (usually small) increase in disk I/O.
+       * </pre>
+       */
+      public Builder setCheckpoint(boolean value) {
+        bitField0_ |= 0x00000010;
+        checkpoint_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional bool checkpoint = 5 [default = false];</code>
+       *
+       * <pre>
+       * If set, agents running tasks started by this framework will write
+       * the framework pid, executor pids and status updates to disk. If
+       * the agent exits (e.g., due to a crash or as part of upgrading
+       * Mesos), this checkpointed data allows the restarted agent to
+       * reconnect to executors that were started by the old instance of
+       * the agent. Enabling checkpointing improves fault tolerance, at
+       * the cost of a (usually small) increase in disk I/O.
+       * </pre>
+       */
+      public Builder clearCheckpoint() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        checkpoint_ = false;
+        onChanged();
+        return this;
+      }
+
+      // optional string role = 6 [default = "*", deprecated = true];
+      private java.lang.Object role_ = "*";
+      /**
+       * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+       *
+       * <pre>
+       * Roles are the entities to which allocations are made.
+       * The framework must have at least one role in order to
+       * be offered resources. Note that `role` is deprecated
+       * in favor of `roles` and only one of these fields must
+       * be used. Since we cannot distinguish between empty
+       * `roles` and the default unset `role`, we require that
+       * frameworks set the `MULTI_ROLE` capability if
+       * setting the `roles` field.
+       * </pre>
+       */
+      @java.lang.Deprecated public boolean hasRole() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+       *
+       * <pre>
+       * Roles are the entities to which allocations are made.
+       * The framework must have at least one role in order to
+       * be offered resources. Note that `role` is deprecated
+       * in favor of `roles` and only one of these fields must
+       * be used. Since we cannot distinguish between empty
+       * `roles` and the default unset `role`, we require that
+       * frameworks set the `MULTI_ROLE` capability if
+       * setting the `roles` field.
+       * </pre>
+       */
+      @java.lang.Deprecated public java.lang.String getRole() {
+        java.lang.Object ref = role_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          role_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+       *
+       * <pre>
+       * Roles are the entities to which allocations are made.
+       * The framework must have at least one role in order to
+       * be offered resources. Note that `role` is deprecated
+       * in favor of `roles` and only one of these fields must
+       * be used. Since we cannot distinguish between empty
+       * `roles` and the default unset `role`, we require that
+       * frameworks set the `MULTI_ROLE` capability if
+       * setting the `roles` field.
+       * </pre>
+       */
+      @java.lang.Deprecated public com.google.protobuf.ByteString
+          getRoleBytes() {
+        java.lang.Object ref = role_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          role_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+       *
+       * <pre>
+       * Roles are the entities to which allocations are made.
+       * The framework must have at least one role in order to
+       * be offered resources. Note that `role` is deprecated
+       * in favor of `roles` and only one of these fields must
+       * be used. Since we cannot distinguish between empty
+       * `roles` and the default unset `role`, we require that
+       * frameworks set the `MULTI_ROLE` capability if
+       * setting the `roles` field.
+       * </pre>
+       */
+      @java.lang.Deprecated public Builder setRole(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000020;
+        role_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+       *
+       * <pre>
+       * Roles are the entities to which allocations are made.
+       * The framework must have at least one role in order to
+       * be offered resources. Note that `role` is deprecated
+       * in favor of `roles` and only one of these fields must
+       * be used. Since we cannot distinguish between empty
+       * `roles` and the default unset `role`, we require that
+       * frameworks set the `MULTI_ROLE` capability if
+       * setting the `roles` field.
+       * </pre>
+       */
+      @java.lang.Deprecated public Builder clearRole() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        role_ = getDefaultInstance().getRole();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+       *
+       * <pre>
+       * Roles are the entities to which allocations are made.
+       * The framework must have at least one role in order to
+       * be offered resources. Note that `role` is deprecated
+       * in favor of `roles` and only one of these fields must
+       * be used. Since we cannot distinguish between empty
+       * `roles` and the default unset `role`, we require that
+       * frameworks set the `MULTI_ROLE` capability if
+       * setting the `roles` field.
+       * </pre>
+       */
+      @java.lang.Deprecated public Builder setRoleBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000020;
+        role_ = value;
+        onChanged();
+        return this;
+      }
+
+      // repeated string roles = 12;
+      private com.google.protobuf.LazyStringList roles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+      private void ensureRolesIsMutable() {
+        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
+          roles_ = new com.google.protobuf.LazyStringArrayList(roles_);
+          bitField0_ |= 0x00000040;
+         }
+      }
+      /**
+       * <code>repeated string roles = 12;</code>
+       */
+      public java.util.List<java.lang.String>
+          getRolesList() {
+        return java.util.Collections.unmodifiableList(roles_);
+      }
+      /**
+       * <code>repeated string roles = 12;</code>
+       */
+      public int getRolesCount() {
+        return roles_.size();
+      }
+      /**
+       * <code>repeated string roles = 12;</code>
+       */
+      public java.lang.String getRoles(int index) {
+        return roles_.get(index);
+      }
+      /**
+       * <code>repeated string roles = 12;</code>
+       */
+      public com.google.protobuf.ByteString
+          getRolesBytes(int index) {
+        return roles_.getByteString(index);
+      }
+      /**
+       * <code>repeated string roles = 12;</code>
+       */
+      public Builder setRoles(
+          int index, java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureRolesIsMutable();
+        roles_.set(index, value);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated string roles = 12;</code>
+       */
+      public Builder addRoles(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureRolesIsMutable();
+        roles_.add(value);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated string roles = 12;</code>
+       */
+      public Builder addAllRoles(
+          java.lang.Iterable<java.lang.String> values) {
+        ensureRolesIsMutable();
+        super.addAll(values, roles_);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated string roles = 12;</code>
+       */
+      public Builder clearRoles() {
+        roles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+        bitField0_ = (bitField0_ & ~0x00000040);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated string roles = 12;</code>
+       */
+      public Builder addRolesBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureRolesIsMutable();
+        roles_.add(value);
+        onChanged();
+        return this;
+      }
+
+      // optional string hostname = 7;
+      private java.lang.Object hostname_ = "";
+      /**
+       * <code>optional string hostname = 7;</code>
+       *
+       * <pre>
+       * Used to indicate the current host from which the scheduler is
+       * registered in the Mesos Web UI. If set to an empty string Mesos
+       * will automagically set it to the current hostname if one is
+       * available.
+       * </pre>
+       */
+      public boolean hasHostname() {
+        return ((bitField0_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional string hostname = 7;</code>
+       *
+       * <pre>
+       * Used to indicate the current host from which the scheduler is
+       * registered in the Mesos Web UI. If set to an empty string Mesos
+       * will automagically set it to the current hostname if one is
+       * available.
+       * </pre>
+       */
+      public java.lang.String getHostname() {
+        java.lang.Object ref = hostname_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          hostname_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string hostname = 7;</code>
+       *
+       * <pre>
+       * Used to indicate the current host from which the scheduler is
+       * registered in the Mesos Web UI. If set to an empty string Mesos
+       * will automagically set it to the current hostname if one is
+       * available.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getHostnameBytes() {
+        java.lang.Object ref = hostname_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          hostname_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string hostname = 7;</code>
+       *
+       * <pre>
+       * Used to indicate the current host from which the scheduler is
+       * registered in the Mesos Web UI. If set to an empty string Mesos
+       * will automagically set it to the current hostname if one is
+       * available.
+       * </pre>
+       */
+      public Builder setHostname(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000080;
+        hostname_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string hostname = 7;</code>
+       *
+       * <pre>
+       * Used to indicate the current host from which the scheduler is
+       * registered in the Mesos Web UI. If set to an empty string Mesos
+       * will automagically set it to the current hostname if one is
+       * available.
+       * </pre>
+       */
+      public Builder clearHostname() {
+        bitField0_ = (bitField0_ & ~0x00000080);
+        hostname_ = getDefaultInstance().getHostname();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string hostname = 7;</code>
+       *
+       * <pre>
+       * Used to indicate the current host from which the scheduler is
+       * registered in the Mesos Web UI. If set to an empty string Mesos
+       * will automagically set it to the current hostname if one is
+       * available.
+       * </pre>
+       */
+      public Builder setHostnameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000080;
+        hostname_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional string principal = 8;
+      private java.lang.Object principal_ = "";
+      /**
+       * <code>optional string principal = 8;</code>
+       *
+       * <pre>
+       * This field should match the credential's principal the framework
+       * uses for authentication. This field is used for framework API
+       * rate limiting and dynamic reservations. It should be set even
+       * if authentication is not enabled if these features are desired.
+       * </pre>
+       */
+      public boolean hasPrincipal() {
+        return ((bitField0_ & 0x00000100) == 0x00000100);
+      }
+      /**
+       * <code>optional string principal = 8;</code>
+       *
+       * <pre>
+       * This field should match the credential's principal the framework
+       * uses for authentication. This field is used for framework API
+       * rate limiting and dynamic reservations. It should be set even
+       * if authentication is not enabled if these features are desired.
+       * </pre>
+       */
+      public java.lang.String getPrincipal() {
+        java.lang.Object ref = principal_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          principal_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string principal = 8;</code>
+       *
+       * <pre>
+       * This field should match the credential's principal the framework
+       * uses for authentication. This field is used for framework API
+       * rate limiting and dynamic reservations. It should be set even
+       * if authentication is not enabled if these features are desired.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getPrincipalBytes() {
+        java.lang.Object ref = principal_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          principal_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string principal = 8;</code>
+       *
+       * <pre>
+       * This field should match the credential's principal the framework
+       * uses for authentication. This field is used for framework API
+       * rate limiting and dynamic reservations. It should be set even
+       * if authentication is not enabled if these features are desired.
+       * </pre>
+       */
+      public Builder setPrincipal(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000100;
+        principal_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string principal = 8;</code>
+       *
+       * <pre>
+       * This field should match the credential's principal the framework
+       * uses for authentication. This field is used for framework API
+       * rate limiting and dynamic reservations. It should be set even
+       * if authentication is not enabled if these features are desired.
+       * </pre>
+       */
+      public Builder clearPrincipal() {
+        bitField0_ = (bitField0_ & ~0x00000100);
+        principal_ = getDefaultInstance().getPrincipal();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string principal = 8;</code>
+       *
+       * <pre>
+       * This field should match the credential's principal the framework
+       * uses for authentication. This field is used for framework API
+       * rate limiting and dynamic reservations. It should be set even
+       * if authentication is not enabled if these features are desired.
+       * </pre>
+       */
+      public Builder setPrincipalBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000100;
+        principal_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional string webui_url = 9;
+      private java.lang.Object webuiUrl_ = "";
+      /**
+       * <code>optional string webui_url = 9;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its web UI, so that
+       * the Mesos web UI can link to it. It is expected to be a full URL,
+       * for example http://my-scheduler.example.com:8080/.
+       * </pre>
+       */
+      public boolean hasWebuiUrl() {
+        return ((bitField0_ & 0x00000200) == 0x00000200);
+      }
+      /**
+       * <code>optional string webui_url = 9;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its web UI, so that
+       * the Mesos web UI can link to it. It is expected to be a full URL,
+       * for example http://my-scheduler.example.com:8080/.
+       * </pre>
+       */
+      public java.lang.String getWebuiUrl() {
+        java.lang.Object ref = webuiUrl_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          webuiUrl_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string webui_url = 9;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its web UI, so that
+       * the Mesos web UI can link to it. It is expected to be a full URL,
+       * for example http://my-scheduler.example.com:8080/.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getWebuiUrlBytes() {
+        java.lang.Object ref = webuiUrl_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          webuiUrl_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string webui_url = 9;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its web UI, so that
+       * the Mesos web UI can link to it. It is expected to be a full URL,
+       * for example http://my-scheduler.example.com:8080/.
+       * </pre>
+       */
+      public Builder setWebuiUrl(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000200;
+        webuiUrl_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string webui_url = 9;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its web UI, so that
+       * the Mesos web UI can link to it. It is expected to be a full URL,
+       * for example http://my-scheduler.example.com:8080/.
+       * </pre>
+       */
+      public Builder clearWebuiUrl() {
+        bitField0_ = (bitField0_ & ~0x00000200);
+        webuiUrl_ = getDefaultInstance().getWebuiUrl();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string webui_url = 9;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its web UI, so that
+       * the Mesos web UI can link to it. It is expected to be a full URL,
+       * for example http://my-scheduler.example.com:8080/.
+       * </pre>
+       */
+      public Builder setWebuiUrlBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000200;
+        webuiUrl_ = value;
+        onChanged();
+        return this;
+      }
+
+      // repeated .mesos.FrameworkInfo.Capability capabilities = 10;
+      private java.util.List<org.apache.mesos.Protos.FrameworkInfo.Capability> capabilities_ =
+        java.util.Collections.emptyList();
+      private void ensureCapabilitiesIsMutable() {
+        if (!((bitField0_ & 0x00000400) == 0x00000400)) {
+          capabilities_ = new java.util.ArrayList<org.apache.mesos.Protos.FrameworkInfo.Capability>(capabilities_);
+          bitField0_ |= 0x00000400;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.FrameworkInfo.Capability, org.apache.mesos.Protos.FrameworkInfo.Capability.Builder, org.apache.mesos.Protos.FrameworkInfo.CapabilityOrBuilder> capabilitiesBuilder_;
+
+      /**
+       * <code>repeated .mesos.FrameworkInfo.Capability capabilities = 10;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its set of
+       * capabilities (e.g., ability to receive offers for revocable
+       * resources).
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.Protos.FrameworkInfo.Capability> getCapabilitiesList() {
+        if (capabilitiesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(capabilities_);
+        } else {
+          return capabilitiesBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.FrameworkInfo.Capability capabilities = 10;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its set of
+       * capabilities (e.g., ability to receive offers for revocable
+       * resources).
+       * </pre>
+       */
+      public int getCapabilitiesCount() {
+        if (capabilitiesBuilder_ == null) {
+          return capabilities_.size();
+        } else {
+          return capabilitiesBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.FrameworkInfo.Capability capabilities = 10;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its set of
+       * capabilities (e.g., ability to receive offers for revocable
+       * resources).
+       * </pre>
+       */
+      public org.apache.mesos.Protos.FrameworkInfo.Capability getCapabilities(int index) {
+        if (capabilitiesBuilder_ == null) {
+          return capabilities_.get(index);
+        } else {
+          return capabilitiesBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.FrameworkInfo.Capability capabilities = 10;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its set of
+       * capabilities (e.g., ability to receive offers for revocable
+       * resources).
+       * </pre>
+       */
+      public Builder setCapabilities(
+          int index, org.apache.mesos.Protos.FrameworkInfo.Capability value) {
+        if (capabilitiesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureCapabilitiesIsMutable();
+          capabilities_.set(index, value);
+          onChanged();
+        } else {
+          capabilitiesBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.FrameworkInfo.Capability capabilities = 10;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its set of
+       * capabilities (e.g., ability to receive offers for revocable
+       * resources).
+       * </pre>
+       */
+      public Builder setCapabilities(
+          int index, org.apache.mesos.Protos.FrameworkInfo.Capability.Builder builderForValue) {
+        if (capabilitiesBuilder_ == null) {
+          ensureCapabilitiesIsMutable();
+          capabilities_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          capabilitiesBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.FrameworkInfo.Capability capabilities = 10;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its set of
+       * capabilities (e.g., ability to receive offers for revocable
+       * resources).
+       * </pre>
+       */
+      public Builder addCapabilities(org.apache.mesos.Protos.FrameworkInfo.Capability value) {
+        if (capabilitiesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureCapabilitiesIsMutable();
+          capabilities_.add(value);
+          onChanged();
+        } else {
+          capabilitiesBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.FrameworkInfo.Capability capabilities = 10;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its set of
+       * capabilities (e.g., ability to receive offers for revocable
+       * resources).
+       * </pre>
+       */
+      public Builder addCapabilities(
+          int index, org.apache.mesos.Protos.FrameworkInfo.Capability value) {
+        if (capabilitiesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureCapabilitiesIsMutable();
+          capabilities_.add(index, value);
+          onChanged();
+        } else {
+          capabilitiesBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.FrameworkInfo.Capability capabilities = 10;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its set of
+       * capabilities (e.g., ability to receive offers for revocable
+       * resources).
+       * </pre>
+       */
+      public Builder addCapabilities(
+          org.apache.mesos.Protos.FrameworkInfo.Capability.Builder builderForValue) {
+        if (capabilitiesBuilder_ == null) {
+          ensureCapabilitiesIsMutable();
+          capabilities_.add(builderForValue.build());
+          onChanged();
+        } else {
+          capabilitiesBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.FrameworkInfo.Capability capabilities = 10;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its set of
+       * capabilities (e.g., ability to receive offers for revocable
+       * resources).
+       * </pre>
+       */
+      public Builder addCapabilities(
+          int index, org.apache.mesos.Protos.FrameworkInfo.Capability.Builder builderForValue) {
+        if (capabilitiesBuilder_ == null) {
+          ensureCapabilitiesIsMutable();
+          capabilities_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          capabilitiesBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.FrameworkInfo.Capability capabilities = 10;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its set of
+       * capabilities (e.g., ability to receive offers for revocable
+       * resources).
+       * </pre>
+       */
+      public Builder addAllCapabilities(
+          java.lang.Iterable<? extends org.apache.mesos.Protos.FrameworkInfo.Capability> values) {
+        if (capabilitiesBuilder_ == null) {
+          ensureCapabilitiesIsMutable();
+          super.addAll(values, capabilities_);
+          onChanged();
+        } else {
+          capabilitiesBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.FrameworkInfo.Capability capabilities = 10;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its set of
+       * capabilities (e.g., ability to receive offers for revocable
+       * resources).
+       * </pre>
+       */
+      public Builder clearCapabilities() {
+        if (capabilitiesBuilder_ == null) {
+          capabilities_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000400);
+          onChanged();
+        } else {
+          capabilitiesBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.FrameworkInfo.Capability capabilities = 10;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its set of
+       * capabilities (e.g., ability to receive offers for revocable
+       * resources).
+       * </pre>
+       */
+      public Builder removeCapabilities(int index) {
+        if (capabilitiesBuilder_ == null) {
+          ensureCapabilitiesIsMutable();
+          capabilities_.remove(index);
+          onChanged();
+        } else {
+          capabilitiesBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.FrameworkInfo.Capability capabilities = 10;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its set of
+       * capabilities (e.g., ability to receive offers for revocable
+       * resources).
+       * </pre>
+       */
+      public org.apache.mesos.Protos.FrameworkInfo.Capability.Builder getCapabilitiesBuilder(
+          int index) {
+        return getCapabilitiesFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.FrameworkInfo.Capability capabilities = 10;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its set of
+       * capabilities (e.g., ability to receive offers for revocable
+       * resources).
+       * </pre>
+       */
+      public org.apache.mesos.Protos.FrameworkInfo.CapabilityOrBuilder getCapabilitiesOrBuilder(
+          int index) {
+        if (capabilitiesBuilder_ == null) {
+          return capabilities_.get(index);  } else {
+          return capabilitiesBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.FrameworkInfo.Capability capabilities = 10;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its set of
+       * capabilities (e.g., ability to receive offers for revocable
+       * resources).
+       * </pre>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.FrameworkInfo.CapabilityOrBuilder> 
+           getCapabilitiesOrBuilderList() {
+        if (capabilitiesBuilder_ != null) {
+          return capabilitiesBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(capabilities_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.FrameworkInfo.Capability capabilities = 10;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its set of
+       * capabilities (e.g., ability to receive offers for revocable
+       * resources).
+       * </pre>
+       */
+      public org.apache.mesos.Protos.FrameworkInfo.Capability.Builder addCapabilitiesBuilder() {
+        return getCapabilitiesFieldBuilder().addBuilder(
+            org.apache.mesos.Protos.FrameworkInfo.Capability.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.FrameworkInfo.Capability capabilities = 10;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its set of
+       * capabilities (e.g., ability to receive offers for revocable
+       * resources).
+       * </pre>
+       */
+      public org.apache.mesos.Protos.FrameworkInfo.Capability.Builder addCapabilitiesBuilder(
+          int index) {
+        return getCapabilitiesFieldBuilder().addBuilder(
+            index, org.apache.mesos.Protos.FrameworkInfo.Capability.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.FrameworkInfo.Capability capabilities = 10;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its set of
+       * capabilities (e.g., ability to receive offers for revocable
+       * resources).
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.Protos.FrameworkInfo.Capability.Builder> 
+           getCapabilitiesBuilderList() {
+        return getCapabilitiesFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.FrameworkInfo.Capability, org.apache.mesos.Protos.FrameworkInfo.Capability.Builder, org.apache.mesos.Protos.FrameworkInfo.CapabilityOrBuilder> 
+          getCapabilitiesFieldBuilder() {
+        if (capabilitiesBuilder_ == null) {
+          capabilitiesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.FrameworkInfo.Capability, org.apache.mesos.Protos.FrameworkInfo.Capability.Builder, org.apache.mesos.Protos.FrameworkInfo.CapabilityOrBuilder>(
+                  capabilities_,
+                  ((bitField0_ & 0x00000400) == 0x00000400),
+                  getParentForChildren(),
+                  isClean());
+          capabilities_ = null;
+        }
+        return capabilitiesBuilder_;
+      }
+
+      // optional .mesos.Labels labels = 11;
+      private org.apache.mesos.Protos.Labels labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Labels, org.apache.mesos.Protos.Labels.Builder, org.apache.mesos.Protos.LabelsOrBuilder> labelsBuilder_;
+      /**
+       * <code>optional .mesos.Labels labels = 11;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs supplied by the framework
+       * scheduler (e.g., to describe additional functionality offered by
+       * the framework). These labels are not interpreted by Mesos itself.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public boolean hasLabels() {
+        return ((bitField0_ & 0x00000800) == 0x00000800);
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 11;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs supplied by the framework
+       * scheduler (e.g., to describe additional functionality offered by
+       * the framework). These labels are not interpreted by Mesos itself.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Labels getLabels() {
+        if (labelsBuilder_ == null) {
+          return labels_;
+        } else {
+          return labelsBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 11;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs supplied by the framework
+       * scheduler (e.g., to describe additional functionality offered by
+       * the framework). These labels are not interpreted by Mesos itself.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public Builder setLabels(org.apache.mesos.Protos.Labels value) {
+        if (labelsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          labels_ = value;
+          onChanged();
+        } else {
+          labelsBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 11;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs supplied by the framework
+       * scheduler (e.g., to describe additional functionality offered by
+       * the framework). These labels are not interpreted by Mesos itself.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public Builder setLabels(
+          org.apache.mesos.Protos.Labels.Builder builderForValue) {
+        if (labelsBuilder_ == null) {
+          labels_ = builderForValue.build();
+          onChanged();
+        } else {
+          labelsBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 11;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs supplied by the framework
+       * scheduler (e.g., to describe additional functionality offered by
+       * the framework). These labels are not interpreted by Mesos itself.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public Builder mergeLabels(org.apache.mesos.Protos.Labels value) {
+        if (labelsBuilder_ == null) {
+          if (((bitField0_ & 0x00000800) == 0x00000800) &&
+              labels_ != org.apache.mesos.Protos.Labels.getDefaultInstance()) {
+            labels_ =
+              org.apache.mesos.Protos.Labels.newBuilder(labels_).mergeFrom(value).buildPartial();
+          } else {
+            labels_ = value;
+          }
+          onChanged();
+        } else {
+          labelsBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 11;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs supplied by the framework
+       * scheduler (e.g., to describe additional functionality offered by
+       * the framework). These labels are not interpreted by Mesos itself.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public Builder clearLabels() {
+        if (labelsBuilder_ == null) {
+          labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+          onChanged();
+        } else {
+          labelsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000800);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 11;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs supplied by the framework
+       * scheduler (e.g., to describe additional functionality offered by
+       * the framework). These labels are not interpreted by Mesos itself.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Labels.Builder getLabelsBuilder() {
+        bitField0_ |= 0x00000800;
+        onChanged();
+        return getLabelsFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 11;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs supplied by the framework
+       * scheduler (e.g., to describe additional functionality offered by
+       * the framework). These labels are not interpreted by Mesos itself.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+        if (labelsBuilder_ != null) {
+          return labelsBuilder_.getMessageOrBuilder();
+        } else {
+          return labels_;
+        }
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 11;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs supplied by the framework
+       * scheduler (e.g., to describe additional functionality offered by
+       * the framework). These labels are not interpreted by Mesos itself.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Labels, org.apache.mesos.Protos.Labels.Builder, org.apache.mesos.Protos.LabelsOrBuilder> 
+          getLabelsFieldBuilder() {
+        if (labelsBuilder_ == null) {
+          labelsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Labels, org.apache.mesos.Protos.Labels.Builder, org.apache.mesos.Protos.LabelsOrBuilder>(
+                  labels_,
+                  getParentForChildren(),
+                  isClean());
+          labels_ = null;
+        }
+        return labelsBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.FrameworkInfo)
+    }
+
+    static {
+      defaultInstance = new FrameworkInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.FrameworkInfo)
+  }
+
+  public interface CheckInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional .mesos.CheckInfo.Type type = 1;
+    /**
+     * <code>optional .mesos.CheckInfo.Type type = 1;</code>
+     *
+     * <pre>
+     * The type of the check.
+     * </pre>
+     */
+    boolean hasType();
+    /**
+     * <code>optional .mesos.CheckInfo.Type type = 1;</code>
+     *
+     * <pre>
+     * The type of the check.
+     * </pre>
+     */
+    org.apache.mesos.Protos.CheckInfo.Type getType();
+
+    // optional .mesos.CheckInfo.Command command = 2;
+    /**
+     * <code>optional .mesos.CheckInfo.Command command = 2;</code>
+     *
+     * <pre>
+     * Command check.
+     * </pre>
+     */
+    boolean hasCommand();
+    /**
+     * <code>optional .mesos.CheckInfo.Command command = 2;</code>
+     *
+     * <pre>
+     * Command check.
+     * </pre>
+     */
+    org.apache.mesos.Protos.CheckInfo.Command getCommand();
+    /**
+     * <code>optional .mesos.CheckInfo.Command command = 2;</code>
+     *
+     * <pre>
+     * Command check.
+     * </pre>
+     */
+    org.apache.mesos.Protos.CheckInfo.CommandOrBuilder getCommandOrBuilder();
+
+    // optional .mesos.CheckInfo.Http http = 3;
+    /**
+     * <code>optional .mesos.CheckInfo.Http http = 3;</code>
+     *
+     * <pre>
+     * HTTP check.
+     * </pre>
+     */
+    boolean hasHttp();
+    /**
+     * <code>optional .mesos.CheckInfo.Http http = 3;</code>
+     *
+     * <pre>
+     * HTTP check.
+     * </pre>
+     */
+    org.apache.mesos.Protos.CheckInfo.Http getHttp();
+    /**
+     * <code>optional .mesos.CheckInfo.Http http = 3;</code>
+     *
+     * <pre>
+     * HTTP check.
+     * </pre>
+     */
+    org.apache.mesos.Protos.CheckInfo.HttpOrBuilder getHttpOrBuilder();
+
+    // optional .mesos.CheckInfo.Tcp tcp = 7;
+    /**
+     * <code>optional .mesos.CheckInfo.Tcp tcp = 7;</code>
+     *
+     * <pre>
+     * TCP check.
+     * </pre>
+     */
+    boolean hasTcp();
+    /**
+     * <code>optional .mesos.CheckInfo.Tcp tcp = 7;</code>
+     *
+     * <pre>
+     * TCP check.
+     * </pre>
+     */
+    org.apache.mesos.Protos.CheckInfo.Tcp getTcp();
+    /**
+     * <code>optional .mesos.CheckInfo.Tcp tcp = 7;</code>
+     *
+     * <pre>
+     * TCP check.
+     * </pre>
+     */
+    org.apache.mesos.Protos.CheckInfo.TcpOrBuilder getTcpOrBuilder();
+
+    // optional double delay_seconds = 4 [default = 15];
+    /**
+     * <code>optional double delay_seconds = 4 [default = 15];</code>
+     *
+     * <pre>
+     * Amount of time to wait to start checking the task after it
+     * transitions to `TASK_RUNNING` or `TASK_STARTING` if the latter
+     * is used by the executor.
+     * </pre>
+     */
+    boolean hasDelaySeconds();
+    /**
+     * <code>optional double delay_seconds = 4 [default = 15];</code>
+     *
+     * <pre>
+     * Amount of time to wait to start checking the task after it
+     * transitions to `TASK_RUNNING` or `TASK_STARTING` if the latter
+     * is used by the executor.
+     * </pre>
+     */
+    double getDelaySeconds();
+
+    // optional double interval_seconds = 5 [default = 10];
+    /**
+     * <code>optional double interval_seconds = 5 [default = 10];</code>
+     *
+     * <pre>
+     * Interval between check attempts, i.e., amount of time to wait after
+     * the previous check finished or timed out to start the next check.
+     * </pre>
+     */
+    boolean hasIntervalSeconds();
+    /**
+     * <code>optional double interval_seconds = 5 [default = 10];</code>
+     *
+     * <pre>
+     * Interval between check attempts, i.e., amount of time to wait after
+     * the previous check finished or timed out to start the next check.
+     * </pre>
+     */
+    double getIntervalSeconds();
+
+    // optional double timeout_seconds = 6 [default = 20];
+    /**
+     * <code>optional double timeout_seconds = 6 [default = 20];</code>
+     *
+     * <pre>
+     * Amount of time to wait for the check to complete. Zero means infinite
+     * timeout.
+     *
+     * After this timeout, the check attempt is aborted and no result is
+     * reported. Note that this may be considered a state change and hence
+     * may trigger a check status change delivery to the corresponding
+     * scheduler. See `CheckStatusInfo` for more details.
+     * </pre>
+     */
+    boolean hasTimeoutSeconds();
+    /**
+     * <code>optional double timeout_seconds = 6 [default = 20];</code>
+     *
+     * <pre>
+     * Amount of time to wait for the check to complete. Zero means infinite
+     * timeout.
+     *
+     * After this timeout, the check attempt is aborted and no result is
+     * reported. Note that this may be considered a state change and hence
+     * may trigger a check status change delivery to the corresponding
+     * scheduler. See `CheckStatusInfo` for more details.
+     * </pre>
+     */
+    double getTimeoutSeconds();
+  }
+  /**
+   * Protobuf type {@code mesos.CheckInfo}
+   *
+   * <pre>
+   **
+   * Describes a general non-interpreting non-killing check for a task or
+   * executor (or any arbitrary process/command). A type is picked by
+   * specifying one of the optional fields. Specifying more than one type
+   * is an error.
+   *
+   * NOTE: This API is unstable and the related feature is experimental.
+   * </pre>
+   */
+  public static final class CheckInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements CheckInfoOrBuilder {
+    // Use CheckInfo.newBuilder() to construct.
+    private CheckInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private CheckInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final CheckInfo defaultInstance;
+    public static CheckInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public CheckInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private CheckInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 8: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.Protos.CheckInfo.Type value = org.apache.mesos.Protos.CheckInfo.Type.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(1, rawValue);
+              } else {
+                bitField0_ |= 0x00000001;
+                type_ = value;
+              }
+              break;
+            }
+            case 18: {
+              org.apache.mesos.Protos.CheckInfo.Command.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = command_.toBuilder();
+              }
+              command_ = input.readMessage(org.apache.mesos.Protos.CheckInfo.Command.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(command_);
+                command_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+            case 26: {
+              org.apache.mesos.Protos.CheckInfo.Http.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                subBuilder = http_.toBuilder();
+              }
+              http_ = input.readMessage(org.apache.mesos.Protos.CheckInfo.Http.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(http_);
+                http_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000004;
+              break;
+            }
+            case 33: {
+              bitField0_ |= 0x00000010;
+              delaySeconds_ = input.readDouble();
+              break;
+            }
+            case 41: {
+              bitField0_ |= 0x00000020;
+              intervalSeconds_ = input.readDouble();
+              break;
+            }
+            case 49: {
+              bitField0_ |= 0x00000040;
+              timeoutSeconds_ = input.readDouble();
+              break;
+            }
+            case 58: {
+              org.apache.mesos.Protos.CheckInfo.Tcp.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                subBuilder = tcp_.toBuilder();
+              }
+              tcp_ = input.readMessage(org.apache.mesos.Protos.CheckInfo.Tcp.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(tcp_);
+                tcp_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000008;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_CheckInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_CheckInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.CheckInfo.class, org.apache.mesos.Protos.CheckInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<CheckInfo> PARSER =
+        new com.google.protobuf.AbstractParser<CheckInfo>() {
+      public CheckInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new CheckInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<CheckInfo> getParserForType() {
+      return PARSER;
+    }
+
+    /**
+     * Protobuf enum {@code mesos.CheckInfo.Type}
+     */
+    public enum Type
+        implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>UNKNOWN = 0;</code>
+       */
+      UNKNOWN(0, 0),
+      /**
+       * <code>COMMAND = 1;</code>
+       */
+      COMMAND(1, 1),
+      /**
+       * <code>HTTP = 2;</code>
+       */
+      HTTP(2, 2),
+      /**
+       * <code>TCP = 3;</code>
+       */
+      TCP(3, 3),
+      ;
+
+      /**
+       * <code>UNKNOWN = 0;</code>
+       */
+      public static final int UNKNOWN_VALUE = 0;
+      /**
+       * <code>COMMAND = 1;</code>
+       */
+      public static final int COMMAND_VALUE = 1;
+      /**
+       * <code>HTTP = 2;</code>
+       */
+      public static final int HTTP_VALUE = 2;
+      /**
+       * <code>TCP = 3;</code>
+       */
+      public static final int TCP_VALUE = 3;
+
+
+      public final int getNumber() { return value; }
+
+      public static Type valueOf(int value) {
+        switch (value) {
+          case 0: return UNKNOWN;
+          case 1: return COMMAND;
+          case 2: return HTTP;
+          case 3: return TCP;
+          default: return null;
+        }
+      }
+
+      public static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalGetValueMap() {
+        return internalValueMap;
+      }
+      private static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap<Type>() {
+              public Type findValueByNumber(int number) {
+                return Type.valueOf(number);
+              }
+            };
+
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
+          getValueDescriptor() {
+        return getDescriptor().getValues().get(index);
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptorForType() {
+        return getDescriptor();
+      }
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.CheckInfo.getDescriptor().getEnumTypes().get(0);
+      }
+
+      private static final Type[] VALUES = values();
+
+      public static Type valueOf(
+          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+        if (desc.getType() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "EnumValueDescriptor is not for this type.");
+        }
+        return VALUES[desc.getIndex()];
+      }
+
+      private final int index;
+      private final int value;
+
+      private Type(int index, int value) {
+        this.index = index;
+        this.value = value;
+      }
+
+      // @@protoc_insertion_point(enum_scope:mesos.CheckInfo.Type)
+    }
+
+    public interface CommandOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required .mesos.CommandInfo command = 1;
+      /**
+       * <code>required .mesos.CommandInfo command = 1;</code>
+       */
+      boolean hasCommand();
+      /**
+       * <code>required .mesos.CommandInfo command = 1;</code>
+       */
+      org.apache.mesos.Protos.CommandInfo getCommand();
+      /**
+       * <code>required .mesos.CommandInfo command = 1;</code>
+       */
+      org.apache.mesos.Protos.CommandInfoOrBuilder getCommandOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.CheckInfo.Command}
+     *
+     * <pre>
+     * Describes a command check. If applicable, enters mount and/or network
+     * namespaces of the task.
+     * </pre>
+     */
+    public static final class Command extends
+        com.google.protobuf.GeneratedMessage
+        implements CommandOrBuilder {
+      // Use Command.newBuilder() to construct.
+      private Command(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Command(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Command defaultInstance;
+      public static Command getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Command getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Command(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.Protos.CommandInfo.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = command_.toBuilder();
+                }
+                command_ = input.readMessage(org.apache.mesos.Protos.CommandInfo.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(command_);
+                  command_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_CheckInfo_Command_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_CheckInfo_Command_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.CheckInfo.Command.class, org.apache.mesos.Protos.CheckInfo.Command.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Command> PARSER =
+          new com.google.protobuf.AbstractParser<Command>() {
+        public Command parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Command(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Command> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required .mesos.CommandInfo command = 1;
+      public static final int COMMAND_FIELD_NUMBER = 1;
+      private org.apache.mesos.Protos.CommandInfo command_;
+      /**
+       * <code>required .mesos.CommandInfo command = 1;</code>
+       */
+      public boolean hasCommand() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.CommandInfo command = 1;</code>
+       */
+      public org.apache.mesos.Protos.CommandInfo getCommand() {
+        return command_;
+      }
+      /**
+       * <code>required .mesos.CommandInfo command = 1;</code>
+       */
+      public org.apache.mesos.Protos.CommandInfoOrBuilder getCommandOrBuilder() {
+        return command_;
+      }
+
+      private void initFields() {
+        command_ = org.apache.mesos.Protos.CommandInfo.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasCommand()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getCommand().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, command_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, command_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.Protos.CheckInfo.Command parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.CheckInfo.Command parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.CheckInfo.Command parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.CheckInfo.Command parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.CheckInfo.Command parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.CheckInfo.Command parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.CheckInfo.Command parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.Protos.CheckInfo.Command parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.CheckInfo.Command parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.CheckInfo.Command parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.Protos.CheckInfo.Command prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.CheckInfo.Command}
+       *
+       * <pre>
+       * Describes a command check. If applicable, enters mount and/or network
+       * namespaces of the task.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.Protos.CheckInfo.CommandOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_CheckInfo_Command_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_CheckInfo_Command_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.CheckInfo.Command.class, org.apache.mesos.Protos.CheckInfo.Command.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.Protos.CheckInfo.Command.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getCommandFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (commandBuilder_ == null) {
+            command_ = org.apache.mesos.Protos.CommandInfo.getDefaultInstance();
+          } else {
+            commandBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.Protos.internal_static_mesos_CheckInfo_Command_descriptor;
+        }
+
+        public org.apache.mesos.Protos.CheckInfo.Command getDefaultInstanceForType() {
+          return org.apache.mesos.Protos.CheckInfo.Command.getDefaultInstance();
+        }
+
+        public org.apache.mesos.Protos.CheckInfo.Command build() {
+          org.apache.mesos.Protos.CheckInfo.Command result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.Protos.CheckInfo.Command buildPartial() {
+          org.apache.mesos.Protos.CheckInfo.Command result = new org.apache.mesos.Protos.CheckInfo.Command(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (commandBuilder_ == null) {
+            result.command_ = command_;
+          } else {
+            result.command_ = commandBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.Protos.CheckInfo.Command) {
+            return mergeFrom((org.apache.mesos.Protos.CheckInfo.Command)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.Protos.CheckInfo.Command other) {
+          if (other == org.apache.mesos.Protos.CheckInfo.Command.getDefaultInstance()) return this;
+          if (other.hasCommand()) {
+            mergeCommand(other.getCommand());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasCommand()) {
+            
+            return false;
+          }
+          if (!getCommand().isInitialized()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.Protos.CheckInfo.Command parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.Protos.CheckInfo.Command) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required .mesos.CommandInfo command = 1;
+        private org.apache.mesos.Protos.CommandInfo command_ = org.apache.mesos.Protos.CommandInfo.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.CommandInfo, org.apache.mesos.Protos.CommandInfo.Builder, org.apache.mesos.Protos.CommandInfoOrBuilder> commandBuilder_;
+        /**
+         * <code>required .mesos.CommandInfo command = 1;</code>
+         */
+        public boolean hasCommand() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.CommandInfo command = 1;</code>
+         */
+        public org.apache.mesos.Protos.CommandInfo getCommand() {
+          if (commandBuilder_ == null) {
+            return command_;
+          } else {
+            return commandBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.CommandInfo command = 1;</code>
+         */
+        public Builder setCommand(org.apache.mesos.Protos.CommandInfo value) {
+          if (commandBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            command_ = value;
+            onChanged();
+          } else {
+            commandBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.CommandInfo command = 1;</code>
+         */
+        public Builder setCommand(
+            org.apache.mesos.Protos.CommandInfo.Builder builderForValue) {
+          if (commandBuilder_ == null) {
+            command_ = builderForValue.build();
+            onChanged();
+          } else {
+            commandBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.CommandInfo command = 1;</code>
+         */
+        public Builder mergeCommand(org.apache.mesos.Protos.CommandInfo value) {
+          if (commandBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                command_ != org.apache.mesos.Protos.CommandInfo.getDefaultInstance()) {
+              command_ =
+                org.apache.mesos.Protos.CommandInfo.newBuilder(command_).mergeFrom(value).buildPartial();
+            } else {
+              command_ = value;
+            }
+            onChanged();
+          } else {
+            commandBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.CommandInfo command = 1;</code>
+         */
+        public Builder clearCommand() {
+          if (commandBuilder_ == null) {
+            command_ = org.apache.mesos.Protos.CommandInfo.getDefaultInstance();
+            onChanged();
+          } else {
+            commandBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>required .mesos.CommandInfo command = 1;</code>
+         */
+        public org.apache.mesos.Protos.CommandInfo.Builder getCommandBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getCommandFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.CommandInfo command = 1;</code>
+         */
+        public org.apache.mesos.Protos.CommandInfoOrBuilder getCommandOrBuilder() {
+          if (commandBuilder_ != null) {
+            return commandBuilder_.getMessageOrBuilder();
+          } else {
+            return command_;
+          }
+        }
+        /**
+         * <code>required .mesos.CommandInfo command = 1;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.CommandInfo, org.apache.mesos.Protos.CommandInfo.Builder, org.apache.mesos.Protos.CommandInfoOrBuilder> 
+            getCommandFieldBuilder() {
+          if (commandBuilder_ == null) {
+            commandBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.CommandInfo, org.apache.mesos.Protos.CommandInfo.Builder, org.apache.mesos.Protos.CommandInfoOrBuilder>(
+                    command_,
+                    getParentForChildren(),
+                    isClean());
+            command_ = null;
+          }
+          return commandBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.CheckInfo.Command)
+      }
+
+      static {
+        defaultInstance = new Command(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.CheckInfo.Command)
+    }
+
+    public interface HttpOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required uint32 port = 1;
+      /**
+       * <code>required uint32 port = 1;</code>
+       *
+       * <pre>
+       * Port to send the HTTP request.
+       * </pre>
+       */
+      boolean hasPort();
+      /**
+       * <code>required uint32 port = 1;</code>
+       *
+       * <pre>
+       * Port to send the HTTP request.
+       * </pre>
+       */
+      int getPort();
+
+      // optional string path = 2;
+      /**
+       * <code>optional string path = 2;</code>
+       *
+       * <pre>
+       * HTTP request path.
+       * </pre>
+       */
+      boolean hasPath();
+      /**
+       * <code>optional string path = 2;</code>
+       *
+       * <pre>
+       * HTTP request path.
+       * </pre>
+       */
+      java.lang.String getPath();
+      /**
+       * <code>optional string path = 2;</code>
+       *
+       * <pre>
+       * HTTP request path.
+       * </pre>
+       */
+      com.google.protobuf.ByteString
+          getPathBytes();
+    }
+    /**
+     * Protobuf type {@code mesos.CheckInfo.Http}
+     *
+     * <pre>
+     * Describes an HTTP check. Sends a GET request to
+     * http://&lt;host&gt;:port/path. Note that &lt;host&gt; is not configurable and is
+     * resolved automatically to 127.0.0.1.
+     * </pre>
+     */
+    public static final class Http extends
+        com.google.protobuf.GeneratedMessage
+        implements HttpOrBuilder {
+      // Use Http.newBuilder() to construct.
+      private Http(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Http(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Http defaultInstance;
+      public static Http getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Http getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Http(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 8: {
+                bitField0_ |= 0x00000001;
+                port_ = input.readUInt32();
+                break;
+              }
+              case 18: {
+                bitField0_ |= 0x00000002;
+                path_ = input.readBytes();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_CheckInfo_Http_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_CheckInfo_Http_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.CheckInfo.Http.class, org.apache.mesos.Protos.CheckInfo.Http.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Http> PARSER =
+          new com.google.protobuf.AbstractParser<Http>() {
+        public Http parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Http(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Http> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required uint32 port = 1;
+      public static final int PORT_FIELD_NUMBER = 1;
+      private int port_;
+      /**
+       * <code>required uint32 port = 1;</code>
+       *
+       * <pre>
+       * Port to send the HTTP request.
+       * </pre>
+       */
+      public boolean hasPort() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required uint32 port = 1;</code>
+       *
+       * <pre>
+       * Port to send the HTTP request.
+       * </pre>
+       */
+      public int getPort() {
+        return port_;
+      }
+
+      // optional string path = 2;
+      public static final int PATH_FIELD_NUMBER = 2;
+      private java.lang.Object path_;
+      /**
+       * <code>optional string path = 2;</code>
+       *
+       * <pre>
+       * HTTP request path.
+       * </pre>
+       */
+      public boolean hasPath() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional string path = 2;</code>
+       *
+       * <pre>
+       * HTTP request path.
+       * </pre>
+       */
+      public java.lang.String getPath() {
+        java.lang.Object ref = path_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            path_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>optional string path = 2;</code>
+       *
+       * <pre>
+       * HTTP request path.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getPathBytes() {
+        java.lang.Object ref = path_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          path_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      private void initFields() {
+        port_ = 0;
+        path_ = "";
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasPort()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeUInt32(1, port_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeBytes(2, getPathBytes());
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeUInt32Size(1, port_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(2, getPathBytes());
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.Protos.CheckInfo.Http parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.CheckInfo.Http parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.CheckInfo.Http parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.CheckInfo.Http parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.CheckInfo.Http parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.CheckInfo.Http parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.CheckInfo.Http parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.Protos.CheckInfo.Http parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.CheckInfo.Http parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.CheckInfo.Http parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.Protos.CheckInfo.Http prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.CheckInfo.Http}
+       *
+       * <pre>
+       * Describes an HTTP check. Sends a GET request to
+       * http://&lt;host&gt;:port/path. Note that &lt;host&gt; is not configurable and is
+       * resolved automatically to 127.0.0.1.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.Protos.CheckInfo.HttpOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_CheckInfo_Http_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_CheckInfo_Http_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.CheckInfo.Http.class, org.apache.mesos.Protos.CheckInfo.Http.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.Protos.CheckInfo.Http.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          port_ = 0;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          path_ = "";
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.Protos.internal_static_mesos_CheckInfo_Http_descriptor;
+        }
+
+        public org.apache.mesos.Protos.CheckInfo.Http getDefaultInstanceForType() {
+          return org.apache.mesos.Protos.CheckInfo.Http.getDefaultInstance();
+        }
+
+        public org.apache.mesos.Protos.CheckInfo.Http build() {
+          org.apache.mesos.Protos.CheckInfo.Http result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.Protos.CheckInfo.Http buildPartial() {
+          org.apache.mesos.Protos.CheckInfo.Http result = new org.apache.mesos.Protos.CheckInfo.Http(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.port_ = port_;
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          result.path_ = path_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.Protos.CheckInfo.Http) {
+            return mergeFrom((org.apache.mesos.Protos.CheckInfo.Http)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.Protos.CheckInfo.Http other) {
+          if (other == org.apache.mesos.Protos.CheckInfo.Http.getDefaultInstance()) return this;
+          if (other.hasPort()) {
+            setPort(other.getPort());
+          }
+          if (other.hasPath()) {
+            bitField0_ |= 0x00000002;
+            path_ = other.path_;
+            onChanged();
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasPort()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.Protos.CheckInfo.Http parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.Protos.CheckInfo.Http) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required uint32 port = 1;
+        private int port_ ;
+        /**
+         * <code>required uint32 port = 1;</code>
+         *
+         * <pre>
+         * Port to send the HTTP request.
+         * </pre>
+         */
+        public boolean hasPort() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required uint32 port = 1;</code>
+         *
+         * <pre>
+         * Port to send the HTTP request.
+         * </pre>
+         */
+        public int getPort() {
+          return port_;
+        }
+        /**
+         * <code>required uint32 port = 1;</code>
+         *
+         * <pre>
+         * Port to send the HTTP request.
+         * </pre>
+         */
+        public Builder setPort(int value) {
+          bitField0_ |= 0x00000001;
+          port_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required uint32 port = 1;</code>
+         *
+         * <pre>
+         * Port to send the HTTP request.
+         * </pre>
+         */
+        public Builder clearPort() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          port_ = 0;
+          onChanged();
+          return this;
+        }
+
+        // optional string path = 2;
+        private java.lang.Object path_ = "";
+        /**
+         * <code>optional string path = 2;</code>
+         *
+         * <pre>
+         * HTTP request path.
+         * </pre>
+         */
+        public boolean hasPath() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional string path = 2;</code>
+         *
+         * <pre>
+         * HTTP request path.
+         * </pre>
+         */
+        public java.lang.String getPath() {
+          java.lang.Object ref = path_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            path_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>optional string path = 2;</code>
+         *
+         * <pre>
+         * HTTP request path.
+         * </pre>
+         */
+        public com.google.protobuf.ByteString
+            getPathBytes() {
+          java.lang.Object ref = path_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            path_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>optional string path = 2;</code>
+         *
+         * <pre>
+         * HTTP request path.
+         * </pre>
+         */
+        public Builder setPath(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+          path_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string path = 2;</code>
+         *
+         * <pre>
+         * HTTP request path.
+         * </pre>
+         */
+        public Builder clearPath() {
+          bitField0_ = (bitField0_ & ~0x00000002);
+          path_ = getDefaultInstance().getPath();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string path = 2;</code>
+         *
+         * <pre>
+         * HTTP request path.
+         * </pre>
+         */
+        public Builder setPathBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+          path_ = value;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.CheckInfo.Http)
+      }
+
+      static {
+        defaultInstance = new Http(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.CheckInfo.Http)
+    }
+
+    public interface TcpOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required uint32 port = 1;
+      /**
+       * <code>required uint32 port = 1;</code>
+       */
+      boolean hasPort();
+      /**
+       * <code>required uint32 port = 1;</code>
+       */
+      int getPort();
+    }
+    /**
+     * Protobuf type {@code mesos.CheckInfo.Tcp}
+     *
+     * <pre>
+     * Describes a TCP check, i.e. based on establishing a TCP connection to
+     * the specified port. Note that &lt;host&gt; is not configurable and is resolved
+     * automatically to 127.0.0.1.
+     * </pre>
+     */
+    public static final class Tcp extends
+        com.google.protobuf.GeneratedMessage
+        implements TcpOrBuilder {
+      // Use Tcp.newBuilder() to construct.
+      private Tcp(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Tcp(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Tcp defaultInstance;
+      public static Tcp getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Tcp getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Tcp(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 8: {
+                bitField0_ |= 0x00000001;
+                port_ = input.readUInt32();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_CheckInfo_Tcp_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_CheckInfo_Tcp_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.CheckInfo.Tcp.class, org.apache.mesos.Protos.CheckInfo.Tcp.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Tcp> PARSER =
+          new com.google.protobuf.AbstractParser<Tcp>() {
+        public Tcp parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Tcp(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Tcp> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required uint32 port = 1;
+      public static final int PORT_FIELD_NUMBER = 1;
+      private int port_;
+      /**
+       * <code>required uint32 port = 1;</code>
+       */
+      public boolean hasPort() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required uint32 port = 1;</code>
+       */
+      public int getPort() {
+        return port_;
+      }
+
+      private void initFields() {
+        port_ = 0;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasPort()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeUInt32(1, port_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeUInt32Size(1, port_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.Protos.CheckInfo.Tcp parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.CheckInfo.Tcp parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.CheckInfo.Tcp parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.CheckInfo.Tcp parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.CheckInfo.Tcp parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.CheckInfo.Tcp parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.CheckInfo.Tcp parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.Protos.CheckInfo.Tcp parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.CheckInfo.Tcp parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.CheckInfo.Tcp parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.Protos.CheckInfo.Tcp prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.CheckInfo.Tcp}
+       *
+       * <pre>
+       * Describes a TCP check, i.e. based on establishing a TCP connection to
+       * the specified port. Note that &lt;host&gt; is not configurable and is resolved
+       * automatically to 127.0.0.1.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.Protos.CheckInfo.TcpOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_CheckInfo_Tcp_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_CheckInfo_Tcp_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.CheckInfo.Tcp.class, org.apache.mesos.Protos.CheckInfo.Tcp.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.Protos.CheckInfo.Tcp.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          port_ = 0;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.Protos.internal_static_mesos_CheckInfo_Tcp_descriptor;
+        }
+
+        public org.apache.mesos.Protos.CheckInfo.Tcp getDefaultInstanceForType() {
+          return org.apache.mesos.Protos.CheckInfo.Tcp.getDefaultInstance();
+        }
+
+        public org.apache.mesos.Protos.CheckInfo.Tcp build() {
+          org.apache.mesos.Protos.CheckInfo.Tcp result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.Protos.CheckInfo.Tcp buildPartial() {
+          org.apache.mesos.Protos.CheckInfo.Tcp result = new org.apache.mesos.Protos.CheckInfo.Tcp(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.port_ = port_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.Protos.CheckInfo.Tcp) {
+            return mergeFrom((org.apache.mesos.Protos.CheckInfo.Tcp)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.Protos.CheckInfo.Tcp other) {
+          if (other == org.apache.mesos.Protos.CheckInfo.Tcp.getDefaultInstance()) return this;
+          if (other.hasPort()) {
+            setPort(other.getPort());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasPort()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.Protos.CheckInfo.Tcp parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.Protos.CheckInfo.Tcp) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required uint32 port = 1;
+        private int port_ ;
+        /**
+         * <code>required uint32 port = 1;</code>
+         */
+        public boolean hasPort() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required uint32 port = 1;</code>
+         */
+        public int getPort() {
+          return port_;
+        }
+        /**
+         * <code>required uint32 port = 1;</code>
+         */
+        public Builder setPort(int value) {
+          bitField0_ |= 0x00000001;
+          port_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required uint32 port = 1;</code>
+         */
+        public Builder clearPort() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          port_ = 0;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.CheckInfo.Tcp)
+      }
+
+      static {
+        defaultInstance = new Tcp(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.CheckInfo.Tcp)
+    }
+
+    private int bitField0_;
+    // optional .mesos.CheckInfo.Type type = 1;
+    public static final int TYPE_FIELD_NUMBER = 1;
+    private org.apache.mesos.Protos.CheckInfo.Type type_;
+    /**
+     * <code>optional .mesos.CheckInfo.Type type = 1;</code>
+     *
+     * <pre>
+     * The type of the check.
+     * </pre>
+     */
+    public boolean hasType() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional .mesos.CheckInfo.Type type = 1;</code>
+     *
+     * <pre>
+     * The type of the check.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.CheckInfo.Type getType() {
+      return type_;
+    }
+
+    // optional .mesos.CheckInfo.Command command = 2;
+    public static final int COMMAND_FIELD_NUMBER = 2;
+    private org.apache.mesos.Protos.CheckInfo.Command command_;
+    /**
+     * <code>optional .mesos.CheckInfo.Command command = 2;</code>
+     *
+     * <pre>
+     * Command check.
+     * </pre>
+     */
+    public boolean hasCommand() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional .mesos.CheckInfo.Command command = 2;</code>
+     *
+     * <pre>
+     * Command check.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.CheckInfo.Command getCommand() {
+      return command_;
+    }
+    /**
+     * <code>optional .mesos.CheckInfo.Command command = 2;</code>
+     *
+     * <pre>
+     * Command check.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.CheckInfo.CommandOrBuilder getCommandOrBuilder() {
+      return command_;
+    }
+
+    // optional .mesos.CheckInfo.Http http = 3;
+    public static final int HTTP_FIELD_NUMBER = 3;
+    private org.apache.mesos.Protos.CheckInfo.Http http_;
+    /**
+     * <code>optional .mesos.CheckInfo.Http http = 3;</code>
+     *
+     * <pre>
+     * HTTP check.
+     * </pre>
+     */
+    public boolean hasHttp() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional .mesos.CheckInfo.Http http = 3;</code>
+     *
+     * <pre>
+     * HTTP check.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.CheckInfo.Http getHttp() {
+      return http_;
+    }
+    /**
+     * <code>optional .mesos.CheckInfo.Http http = 3;</code>
+     *
+     * <pre>
+     * HTTP check.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.CheckInfo.HttpOrBuilder getHttpOrBuilder() {
+      return http_;
+    }
+
+    // optional .mesos.CheckInfo.Tcp tcp = 7;
+    public static final int TCP_FIELD_NUMBER = 7;
+    private org.apache.mesos.Protos.CheckInfo.Tcp tcp_;
+    /**
+     * <code>optional .mesos.CheckInfo.Tcp tcp = 7;</code>
+     *
+     * <pre>
+     * TCP check.
+     * </pre>
+     */
+    public boolean hasTcp() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional .mesos.CheckInfo.Tcp tcp = 7;</code>
+     *
+     * <pre>
+     * TCP check.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.CheckInfo.Tcp getTcp() {
+      return tcp_;
+    }
+    /**
+     * <code>optional .mesos.CheckInfo.Tcp tcp = 7;</code>
+     *
+     * <pre>
+     * TCP check.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.CheckInfo.TcpOrBuilder getTcpOrBuilder() {
+      return tcp_;
+    }
+
+    // optional double delay_seconds = 4 [default = 15];
+    public static final int DELAY_SECONDS_FIELD_NUMBER = 4;
+    private double delaySeconds_;
+    /**
+     * <code>optional double delay_seconds = 4 [default = 15];</code>
+     *
+     * <pre>
+     * Amount of time to wait to start checking the task after it
+     * transitions to `TASK_RUNNING` or `TASK_STARTING` if the latter
+     * is used by the executor.
+     * </pre>
+     */
+    public boolean hasDelaySeconds() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional double delay_seconds = 4 [default = 15];</code>
+     *
+     * <pre>
+     * Amount of time to wait to start checking the task after it
+     * transitions to `TASK_RUNNING` or `TASK_STARTING` if the latter
+     * is used by the executor.
+     * </pre>
+     */
+    public double getDelaySeconds() {
+      return delaySeconds_;
+    }
+
+    // optional double interval_seconds = 5 [default = 10];
+    public static final int INTERVAL_SECONDS_FIELD_NUMBER = 5;
+    private double intervalSeconds_;
+    /**
+     * <code>optional double interval_seconds = 5 [default = 10];</code>
+     *
+     * <pre>
+     * Interval between check attempts, i.e., amount of time to wait after
+     * the previous check finished or timed out to start the next check.
+     * </pre>
+     */
+    public boolean hasIntervalSeconds() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional double interval_seconds = 5 [default = 10];</code>
+     *
+     * <pre>
+     * Interval between check attempts, i.e., amount of time to wait after
+     * the previous check finished or timed out to start the next check.
+     * </pre>
+     */
+    public double getIntervalSeconds() {
+      return intervalSeconds_;
+    }
+
+    // optional double timeout_seconds = 6 [default = 20];
+    public static final int TIMEOUT_SECONDS_FIELD_NUMBER = 6;
+    private double timeoutSeconds_;
+    /**
+     * <code>optional double timeout_seconds = 6 [default = 20];</code>
+     *
+     * <pre>
+     * Amount of time to wait for the check to complete. Zero means infinite
+     * timeout.
+     *
+     * After this timeout, the check attempt is aborted and no result is
+     * reported. Note that this may be considered a state change and hence
+     * may trigger a check status change delivery to the corresponding
+     * scheduler. See `CheckStatusInfo` for more details.
+     * </pre>
+     */
+    public boolean hasTimeoutSeconds() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional double timeout_seconds = 6 [default = 20];</code>
+     *
+     * <pre>
+     * Amount of time to wait for the check to complete. Zero means infinite
+     * timeout.
+     *
+     * After this timeout, the check attempt is aborted and no result is
+     * reported. Note that this may be considered a state change and hence
+     * may trigger a check status change delivery to the corresponding
+     * scheduler. See `CheckStatusInfo` for more details.
+     * </pre>
+     */
+    public double getTimeoutSeconds() {
+      return timeoutSeconds_;
+    }
+
+    private void initFields() {
+      type_ = org.apache.mesos.Protos.CheckInfo.Type.UNKNOWN;
+      command_ = org.apache.mesos.Protos.CheckInfo.Command.getDefaultInstance();
+      http_ = org.apache.mesos.Protos.CheckInfo.Http.getDefaultInstance();
+      tcp_ = org.apache.mesos.Protos.CheckInfo.Tcp.getDefaultInstance();
+      delaySeconds_ = 15D;
+      intervalSeconds_ = 10D;
+      timeoutSeconds_ = 20D;
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (hasCommand()) {
+        if (!getCommand().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasHttp()) {
+        if (!getHttp().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasTcp()) {
+        if (!getTcp().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeEnum(1, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(2, command_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeMessage(3, http_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeDouble(4, delaySeconds_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeDouble(5, intervalSeconds_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeDouble(6, timeoutSeconds_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeMessage(7, tcp_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(1, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, command_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, http_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(4, delaySeconds_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(5, intervalSeconds_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(6, timeoutSeconds_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(7, tcp_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.CheckInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.CheckInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.CheckInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.CheckInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.CheckInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.CheckInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.CheckInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.CheckInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.CheckInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.CheckInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.CheckInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.CheckInfo}
+     *
+     * <pre>
+     **
+     * Describes a general non-interpreting non-killing check for a task or
+     * executor (or any arbitrary process/command). A type is picked by
+     * specifying one of the optional fields. Specifying more than one type
+     * is an error.
+     *
+     * NOTE: This API is unstable and the related feature is experimental.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.CheckInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_CheckInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_CheckInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.CheckInfo.class, org.apache.mesos.Protos.CheckInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.CheckInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getCommandFieldBuilder();
+          getHttpFieldBuilder();
+          getTcpFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        type_ = org.apache.mesos.Protos.CheckInfo.Type.UNKNOWN;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (commandBuilder_ == null) {
+          command_ = org.apache.mesos.Protos.CheckInfo.Command.getDefaultInstance();
+        } else {
+          commandBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        if (httpBuilder_ == null) {
+          http_ = org.apache.mesos.Protos.CheckInfo.Http.getDefaultInstance();
+        } else {
+          httpBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        if (tcpBuilder_ == null) {
+          tcp_ = org.apache.mesos.Protos.CheckInfo.Tcp.getDefaultInstance();
+        } else {
+          tcpBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        delaySeconds_ = 15D;
+        bitField0_ = (bitField0_ & ~0x00000010);
+        intervalSeconds_ = 10D;
+        bitField0_ = (bitField0_ & ~0x00000020);
+        timeoutSeconds_ = 20D;
+        bitField0_ = (bitField0_ & ~0x00000040);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_CheckInfo_descriptor;
+      }
+
+      public org.apache.mesos.Protos.CheckInfo getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.CheckInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.CheckInfo build() {
+        org.apache.mesos.Protos.CheckInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.CheckInfo buildPartial() {
+        org.apache.mesos.Protos.CheckInfo result = new org.apache.mesos.Protos.CheckInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.type_ = type_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (commandBuilder_ == null) {
+          result.command_ = command_;
+        } else {
+          result.command_ = commandBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        if (httpBuilder_ == null) {
+          result.http_ = http_;
+        } else {
+          result.http_ = httpBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        if (tcpBuilder_ == null) {
+          result.tcp_ = tcp_;
+        } else {
+          result.tcp_ = tcpBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.delaySeconds_ = delaySeconds_;
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        result.intervalSeconds_ = intervalSeconds_;
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        result.timeoutSeconds_ = timeoutSeconds_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.CheckInfo) {
+          return mergeFrom((org.apache.mesos.Protos.CheckInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.CheckInfo other) {
+        if (other == org.apache.mesos.Protos.CheckInfo.getDefaultInstance()) return this;
+        if (other.hasType()) {
+          setType(other.getType());
+        }
+        if (other.hasCommand()) {
+          mergeCommand(other.getCommand());
+        }
+        if (other.hasHttp()) {
+          mergeHttp(other.getHttp());
+        }
+        if (other.hasTcp()) {
+          mergeTcp(other.getTcp());
+        }
+        if (other.hasDelaySeconds()) {
+          setDelaySeconds(other.getDelaySeconds());
+        }
+        if (other.hasIntervalSeconds()) {
+          setIntervalSeconds(other.getIntervalSeconds());
+        }
+        if (other.hasTimeoutSeconds()) {
+          setTimeoutSeconds(other.getTimeoutSeconds());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (hasCommand()) {
+          if (!getCommand().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasHttp()) {
+          if (!getHttp().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasTcp()) {
+          if (!getTcp().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.CheckInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.CheckInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional .mesos.CheckInfo.Type type = 1;
+      private org.apache.mesos.Protos.CheckInfo.Type type_ = org.apache.mesos.Protos.CheckInfo.Type.UNKNOWN;
+      /**
+       * <code>optional .mesos.CheckInfo.Type type = 1;</code>
+       *
+       * <pre>
+       * The type of the check.
+       * </pre>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.CheckInfo.Type type = 1;</code>
+       *
+       * <pre>
+       * The type of the check.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.CheckInfo.Type getType() {
+        return type_;
+      }
+      /**
+       * <code>optional .mesos.CheckInfo.Type type = 1;</code>
+       *
+       * <pre>
+       * The type of the check.
+       * </pre>
+       */
+      public Builder setType(org.apache.mesos.Protos.CheckInfo.Type value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000001;
+        type_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CheckInfo.Type type = 1;</code>
+       *
+       * <pre>
+       * The type of the check.
+       * </pre>
+       */
+      public Builder clearType() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        type_ = org.apache.mesos.Protos.CheckInfo.Type.UNKNOWN;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.CheckInfo.Command command = 2;
+      private org.apache.mesos.Protos.CheckInfo.Command command_ = org.apache.mesos.Protos.CheckInfo.Command.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.CheckInfo.Command, org.apache.mesos.Protos.CheckInfo.Command.Builder, org.apache.mesos.Protos.CheckInfo.CommandOrBuilder> commandBuilder_;
+      /**
+       * <code>optional .mesos.CheckInfo.Command command = 2;</code>
+       *
+       * <pre>
+       * Command check.
+       * </pre>
+       */
+      public boolean hasCommand() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.CheckInfo.Command command = 2;</code>
+       *
+       * <pre>
+       * Command check.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.CheckInfo.Command getCommand() {
+        if (commandBuilder_ == null) {
+          return command_;
+        } else {
+          return commandBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.CheckInfo.Command command = 2;</code>
+       *
+       * <pre>
+       * Command check.
+       * </pre>
+       */
+      public Builder setCommand(org.apache.mesos.Protos.CheckInfo.Command value) {
+        if (commandBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          command_ = value;
+          onChanged();
+        } else {
+          commandBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CheckInfo.Command command = 2;</code>
+       *
+       * <pre>
+       * Command check.
+       * </pre>
+       */
+      public Builder setCommand(
+          org.apache.mesos.Protos.CheckInfo.Command.Builder builderForValue) {
+        if (commandBuilder_ == null) {
+          command_ = builderForValue.build();
+          onChanged();
+        } else {
+          commandBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CheckInfo.Command command = 2;</code>
+       *
+       * <pre>
+       * Command check.
+       * </pre>
+       */
+      public Builder mergeCommand(org.apache.mesos.Protos.CheckInfo.Command value) {
+        if (commandBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              command_ != org.apache.mesos.Protos.CheckInfo.Command.getDefaultInstance()) {
+            command_ =
+              org.apache.mesos.Protos.CheckInfo.Command.newBuilder(command_).mergeFrom(value).buildPartial();
+          } else {
+            command_ = value;
+          }
+          onChanged();
+        } else {
+          commandBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CheckInfo.Command command = 2;</code>
+       *
+       * <pre>
+       * Command check.
+       * </pre>
+       */
+      public Builder clearCommand() {
+        if (commandBuilder_ == null) {
+          command_ = org.apache.mesos.Protos.CheckInfo.Command.getDefaultInstance();
+          onChanged();
+        } else {
+          commandBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CheckInfo.Command command = 2;</code>
+       *
+       * <pre>
+       * Command check.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.CheckInfo.Command.Builder getCommandBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getCommandFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.CheckInfo.Command command = 2;</code>
+       *
+       * <pre>
+       * Command check.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.CheckInfo.CommandOrBuilder getCommandOrBuilder() {
+        if (commandBuilder_ != null) {
+          return commandBuilder_.getMessageOrBuilder();
+        } else {
+          return command_;
+        }
+      }
+      /**
+       * <code>optional .mesos.CheckInfo.Command command = 2;</code>
+       *
+       * <pre>
+       * Command check.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.CheckInfo.Command, org.apache.mesos.Protos.CheckInfo.Command.Builder, org.apache.mesos.Protos.CheckInfo.CommandOrBuilder> 
+          getCommandFieldBuilder() {
+        if (commandBuilder_ == null) {
+          commandBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.CheckInfo.Command, org.apache.mesos.Protos.CheckInfo.Command.Builder, org.apache.mesos.Protos.CheckInfo.CommandOrBuilder>(
+                  command_,
+                  getParentForChildren(),
+                  isClean());
+          command_ = null;
+        }
+        return commandBuilder_;
+      }
+
+      // optional .mesos.CheckInfo.Http http = 3;
+      private org.apache.mesos.Protos.CheckInfo.Http http_ = org.apache.mesos.Protos.CheckInfo.Http.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.CheckInfo.Http, org.apache.mesos.Protos.CheckInfo.Http.Builder, org.apache.mesos.Protos.CheckInfo.HttpOrBuilder> httpBuilder_;
+      /**
+       * <code>optional .mesos.CheckInfo.Http http = 3;</code>
+       *
+       * <pre>
+       * HTTP check.
+       * </pre>
+       */
+      public boolean hasHttp() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.CheckInfo.Http http = 3;</code>
+       *
+       * <pre>
+       * HTTP check.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.CheckInfo.Http getHttp() {
+        if (httpBuilder_ == null) {
+          return http_;
+        } else {
+          return httpBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.CheckInfo.Http http = 3;</code>
+       *
+       * <pre>
+       * HTTP check.
+       * </pre>
+       */
+      public Builder setHttp(org.apache.mesos.Protos.CheckInfo.Http value) {
+        if (httpBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          http_ = value;
+          onChanged();
+        } else {
+          httpBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CheckInfo.Http http = 3;</code>
+       *
+       * <pre>
+       * HTTP check.
+       * </pre>
+       */
+      public Builder setHttp(
+          org.apache.mesos.Protos.CheckInfo.Http.Builder builderForValue) {
+        if (httpBuilder_ == null) {
+          http_ = builderForValue.build();
+          onChanged();
+        } else {
+          httpBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CheckInfo.Http http = 3;</code>
+       *
+       * <pre>
+       * HTTP check.
+       * </pre>
+       */
+      public Builder mergeHttp(org.apache.mesos.Protos.CheckInfo.Http value) {
+        if (httpBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) == 0x00000004) &&
+              http_ != org.apache.mesos.Protos.CheckInfo.Http.getDefaultInstance()) {
+            http_ =
+              org.apache.mesos.Protos.CheckInfo.Http.newBuilder(http_).mergeFrom(value).buildPartial();
+          } else {
+            http_ = value;
+          }
+          onChanged();
+        } else {
+          httpBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CheckInfo.Http http = 3;</code>
+       *
+       * <pre>
+       * HTTP check.
+       * </pre>
+       */
+      public Builder clearHttp() {
+        if (httpBuilder_ == null) {
+          http_ = org.apache.mesos.Protos.CheckInfo.Http.getDefaultInstance();
+          onChanged();
+        } else {
+          httpBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CheckInfo.Http http = 3;</code>
+       *
+       * <pre>
+       * HTTP check.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.CheckInfo.Http.Builder getHttpBuilder() {
+        bitField0_ |= 0x00000004;
+        onChanged();
+        return getHttpFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.CheckInfo.Http http = 3;</code>
+       *
+       * <pre>
+       * HTTP check.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.CheckInfo.HttpOrBuilder getHttpOrBuilder() {
+        if (httpBuilder_ != null) {
+          return httpBuilder_.getMessageOrBuilder();
+        } else {
+          return http_;
+        }
+      }
+      /**
+       * <code>optional .mesos.CheckInfo.Http http = 3;</code>
+       *
+       * <pre>
+       * HTTP check.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.CheckInfo.Http, org.apache.mesos.Protos.CheckInfo.Http.Builder, org.apache.mesos.Protos.CheckInfo.HttpOrBuilder> 
+          getHttpFieldBuilder() {
+        if (httpBuilder_ == null) {
+          httpBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.CheckInfo.Http, org.apache.mesos.Protos.CheckInfo.Http.Builder, org.apache.mesos.Protos.CheckInfo.HttpOrBuilder>(
+                  http_,
+                  getParentForChildren(),
+                  isClean());
+          http_ = null;
+        }
+        return httpBuilder_;
+      }
+
+      // optional .mesos.CheckInfo.Tcp tcp = 7;
+      private org.apache.mesos.Protos.CheckInfo.Tcp tcp_ = org.apache.mesos.Protos.CheckInfo.Tcp.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.CheckInfo.Tcp, org.apache.mesos.Protos.CheckInfo.Tcp.Builder, org.apache.mesos.Protos.CheckInfo.TcpOrBuilder> tcpBuilder_;
+      /**
+       * <code>optional .mesos.CheckInfo.Tcp tcp = 7;</code>
+       *
+       * <pre>
+       * TCP check.
+       * </pre>
+       */
+      public boolean hasTcp() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.CheckInfo.Tcp tcp = 7;</code>
+       *
+       * <pre>
+       * TCP check.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.CheckInfo.Tcp getTcp() {
+        if (tcpBuilder_ == null) {
+          return tcp_;
+        } else {
+          return tcpBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.CheckInfo.Tcp tcp = 7;</code>
+       *
+       * <pre>
+       * TCP check.
+       * </pre>
+       */
+      public Builder setTcp(org.apache.mesos.Protos.CheckInfo.Tcp value) {
+        if (tcpBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          tcp_ = value;
+          onChanged();
+        } else {
+          tcpBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CheckInfo.Tcp tcp = 7;</code>
+       *
+       * <pre>
+       * TCP check.
+       * </pre>
+       */
+      public Builder setTcp(
+          org.apache.mesos.Protos.CheckInfo.Tcp.Builder builderForValue) {
+        if (tcpBuilder_ == null) {
+          tcp_ = builderForValue.build();
+          onChanged();
+        } else {
+          tcpBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CheckInfo.Tcp tcp = 7;</code>
+       *
+       * <pre>
+       * TCP check.
+       * </pre>
+       */
+      public Builder mergeTcp(org.apache.mesos.Protos.CheckInfo.Tcp value) {
+        if (tcpBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008) &&
+              tcp_ != org.apache.mesos.Protos.CheckInfo.Tcp.getDefaultInstance()) {
+            tcp_ =
+              org.apache.mesos.Protos.CheckInfo.Tcp.newBuilder(tcp_).mergeFrom(value).buildPartial();
+          } else {
+            tcp_ = value;
+          }
+          onChanged();
+        } else {
+          tcpBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CheckInfo.Tcp tcp = 7;</code>
+       *
+       * <pre>
+       * TCP check.
+       * </pre>
+       */
+      public Builder clearTcp() {
+        if (tcpBuilder_ == null) {
+          tcp_ = org.apache.mesos.Protos.CheckInfo.Tcp.getDefaultInstance();
+          onChanged();
+        } else {
+          tcpBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CheckInfo.Tcp tcp = 7;</code>
+       *
+       * <pre>
+       * TCP check.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.CheckInfo.Tcp.Builder getTcpBuilder() {
+        bitField0_ |= 0x00000008;
+        onChanged();
+        return getTcpFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.CheckInfo.Tcp tcp = 7;</code>
+       *
+       * <pre>
+       * TCP check.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.CheckInfo.TcpOrBuilder getTcpOrBuilder() {
+        if (tcpBuilder_ != null) {
+          return tcpBuilder_.getMessageOrBuilder();
+        } else {
+          return tcp_;
+        }
+      }
+      /**
+       * <code>optional .mesos.CheckInfo.Tcp tcp = 7;</code>
+       *
+       * <pre>
+       * TCP check.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.CheckInfo.Tcp, org.apache.mesos.Protos.CheckInfo.Tcp.Builder, org.apache.mesos.Protos.CheckInfo.TcpOrBuilder> 
+          getTcpFieldBuilder() {
+        if (tcpBuilder_ == null) {
+          tcpBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.CheckInfo.Tcp, org.apache.mesos.Protos.CheckInfo.Tcp.Builder, org.apache.mesos.Protos.CheckInfo.TcpOrBuilder>(
+                  tcp_,
+                  getParentForChildren(),
+                  isClean());
+          tcp_ = null;
+        }
+        return tcpBuilder_;
+      }
+
+      // optional double delay_seconds = 4 [default = 15];
+      private double delaySeconds_ = 15D;
+      /**
+       * <code>optional double delay_seconds = 4 [default = 15];</code>
+       *
+       * <pre>
+       * Amount of time to wait to start checking the task after it
+       * transitions to `TASK_RUNNING` or `TASK_STARTING` if the latter
+       * is used by the executor.
+       * </pre>
+       */
+      public boolean hasDelaySeconds() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional double delay_seconds = 4 [default = 15];</code>
+       *
+       * <pre>
+       * Amount of time to wait to start checking the task after it
+       * transitions to `TASK_RUNNING` or `TASK_STARTING` if the latter
+       * is used by the executor.
+       * </pre>
+       */
+      public double getDelaySeconds() {
+        return delaySeconds_;
+      }
+      /**
+       * <code>optional double delay_seconds = 4 [default = 15];</code>
+       *
+       * <pre>
+       * Amount of time to wait to start checking the task after it
+       * transitions to `TASK_RUNNING` or `TASK_STARTING` if the latter
+       * is used by the executor.
+       * </pre>
+       */
+      public Builder setDelaySeconds(double value) {
+        bitField0_ |= 0x00000010;
+        delaySeconds_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double delay_seconds = 4 [default = 15];</code>
+       *
+       * <pre>
+       * Amount of time to wait to start checking the task after it
+       * transitions to `TASK_RUNNING` or `TASK_STARTING` if the latter
+       * is used by the executor.
+       * </pre>
+       */
+      public Builder clearDelaySeconds() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        delaySeconds_ = 15D;
+        onChanged();
+        return this;
+      }
+
+      // optional double interval_seconds = 5 [default = 10];
+      private double intervalSeconds_ = 10D;
+      /**
+       * <code>optional double interval_seconds = 5 [default = 10];</code>
+       *
+       * <pre>
+       * Interval between check attempts, i.e., amount of time to wait after
+       * the previous check finished or timed out to start the next check.
+       * </pre>
+       */
+      public boolean hasIntervalSeconds() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional double interval_seconds = 5 [default = 10];</code>
+       *
+       * <pre>
+       * Interval between check attempts, i.e., amount of time to wait after
+       * the previous check finished or timed out to start the next check.
+       * </pre>
+       */
+      public double getIntervalSeconds() {
+        return intervalSeconds_;
+      }
+      /**
+       * <code>optional double interval_seconds = 5 [default = 10];</code>
+       *
+       * <pre>
+       * Interval between check attempts, i.e., amount of time to wait after
+       * the previous check finished or timed out to start the next check.
+       * </pre>
+       */
+      public Builder setIntervalSeconds(double value) {
+        bitField0_ |= 0x00000020;
+        intervalSeconds_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double interval_seconds = 5 [default = 10];</code>
+       *
+       * <pre>
+       * Interval between check attempts, i.e., amount of time to wait after
+       * the previous check finished or timed out to start the next check.
+       * </pre>
+       */
+      public Builder clearIntervalSeconds() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        intervalSeconds_ = 10D;
+        onChanged();
+        return this;
+      }
+
+      // optional double timeout_seconds = 6 [default = 20];
+      private double timeoutSeconds_ = 20D;
+      /**
+       * <code>optional double timeout_seconds = 6 [default = 20];</code>
+       *
+       * <pre>
+       * Amount of time to wait for the check to complete. Zero means infinite
+       * timeout.
+       *
+       * After this timeout, the check attempt is aborted and no result is
+       * reported. Note that this may be considered a state change and hence
+       * may trigger a check status change delivery to the corresponding
+       * scheduler. See `CheckStatusInfo` for more details.
+       * </pre>
+       */
+      public boolean hasTimeoutSeconds() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional double timeout_seconds = 6 [default = 20];</code>
+       *
+       * <pre>
+       * Amount of time to wait for the check to complete. Zero means infinite
+       * timeout.
+       *
+       * After this timeout, the check attempt is aborted and no result is
+       * reported. Note that this may be considered a state change and hence
+       * may trigger a check status change delivery to the corresponding
+       * scheduler. See `CheckStatusInfo` for more details.
+       * </pre>
+       */
+      public double getTimeoutSeconds() {
+        return timeoutSeconds_;
+      }
+      /**
+       * <code>optional double timeout_seconds = 6 [default = 20];</code>
+       *
+       * <pre>
+       * Amount of time to wait for the check to complete. Zero means infinite
+       * timeout.
+       *
+       * After this timeout, the check attempt is aborted and no result is
+       * reported. Note that this may be considered a state change and hence
+       * may trigger a check status change delivery to the corresponding
+       * scheduler. See `CheckStatusInfo` for more details.
+       * </pre>
+       */
+      public Builder setTimeoutSeconds(double value) {
+        bitField0_ |= 0x00000040;
+        timeoutSeconds_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double timeout_seconds = 6 [default = 20];</code>
+       *
+       * <pre>
+       * Amount of time to wait for the check to complete. Zero means infinite
+       * timeout.
+       *
+       * After this timeout, the check attempt is aborted and no result is
+       * reported. Note that this may be considered a state change and hence
+       * may trigger a check status change delivery to the corresponding
+       * scheduler. See `CheckStatusInfo` for more details.
+       * </pre>
+       */
+      public Builder clearTimeoutSeconds() {
+        bitField0_ = (bitField0_ & ~0x00000040);
+        timeoutSeconds_ = 20D;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.CheckInfo)
+    }
+
+    static {
+      defaultInstance = new CheckInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.CheckInfo)
+  }
+
+  public interface HealthCheckOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional double delay_seconds = 2 [default = 15];
+    /**
+     * <code>optional double delay_seconds = 2 [default = 15];</code>
+     *
+     * <pre>
+     * Amount of time to wait to start health checking the task after it
+     * transitions to `TASK_RUNNING` or `TASK_STATING` if the latter is
+     * used by the executor.
+     * </pre>
+     */
+    boolean hasDelaySeconds();
+    /**
+     * <code>optional double delay_seconds = 2 [default = 15];</code>
+     *
+     * <pre>
+     * Amount of time to wait to start health checking the task after it
+     * transitions to `TASK_RUNNING` or `TASK_STATING` if the latter is
+     * used by the executor.
+     * </pre>
+     */
+    double getDelaySeconds();
+
+    // optional double interval_seconds = 3 [default = 10];
+    /**
+     * <code>optional double interval_seconds = 3 [default = 10];</code>
+     *
+     * <pre>
+     * Interval between health checks, i.e., amount of time to wait after
+     * the previous health check finished or timed out to start the next
+     * health check.
+     * </pre>
+     */
+    boolean hasIntervalSeconds();
+    /**
+     * <code>optional double interval_seconds = 3 [default = 10];</code>
+     *
+     * <pre>
+     * Interval between health checks, i.e., amount of time to wait after
+     * the previous health check finished or timed out to start the next
+     * health check.
+     * </pre>
+     */
+    double getIntervalSeconds();
+
+    // optional double timeout_seconds = 4 [default = 20];
+    /**
+     * <code>optional double timeout_seconds = 4 [default = 20];</code>
+     *
+     * <pre>
+     * Amount of time to wait for the health check to complete. After this
+     * timeout, the health check is aborted and treated as a failure. Zero
+     * means infinite timeout.
+     * </pre>
+     */
+    boolean hasTimeoutSeconds();
+    /**
+     * <code>optional double timeout_seconds = 4 [default = 20];</code>
+     *
+     * <pre>
+     * Amount of time to wait for the health check to complete. After this
+     * timeout, the health check is aborted and treated as a failure. Zero
+     * means infinite timeout.
+     * </pre>
+     */
+    double getTimeoutSeconds();
+
+    // optional uint32 consecutive_failures = 5 [default = 3];
+    /**
+     * <code>optional uint32 consecutive_failures = 5 [default = 3];</code>
+     *
+     * <pre>
+     * Number of consecutive failures until the task is killed by the executor.
+     * </pre>
+     */
+    boolean hasConsecutiveFailures();
+    /**
+     * <code>optional uint32 consecutive_failures = 5 [default = 3];</code>
+     *
+     * <pre>
+     * Number of consecutive failures until the task is killed by the executor.
+     * </pre>
+     */
+    int getConsecutiveFailures();
+
+    // optional double grace_period_seconds = 6 [default = 10];
+    /**
+     * <code>optional double grace_period_seconds = 6 [default = 10];</code>
+     *
+     * <pre>
+     * Amount of time after the task is launched during which health check
+     * failures are ignored. Once a check succeeds for the first time,
+     * the grace period does not apply anymore. Note that it includes
+     * `delay_seconds`, i.e., setting `grace_period_seconds` &lt; `delay_seconds`
+     * has no effect.
+     * </pre>
+     */
+    boolean hasGracePeriodSeconds();
+    /**
+     * <code>optional double grace_period_seconds = 6 [default = 10];</code>
+     *
+     * <pre>
+     * Amount of time after the task is launched during which health check
+     * failures are ignored. Once a check succeeds for the first time,
+     * the grace period does not apply anymore. Note that it includes
+     * `delay_seconds`, i.e., setting `grace_period_seconds` &lt; `delay_seconds`
+     * has no effect.
+     * </pre>
+     */
+    double getGracePeriodSeconds();
+
+    // optional .mesos.HealthCheck.Type type = 8;
+    /**
+     * <code>optional .mesos.HealthCheck.Type type = 8;</code>
+     *
+     * <pre>
+     * The type of health check.
+     * </pre>
+     */
+    boolean hasType();
+    /**
+     * <code>optional .mesos.HealthCheck.Type type = 8;</code>
+     *
+     * <pre>
+     * The type of health check.
+     * </pre>
+     */
+    org.apache.mesos.Protos.HealthCheck.Type getType();
+
+    // optional .mesos.CommandInfo command = 7;
+    /**
+     * <code>optional .mesos.CommandInfo command = 7;</code>
+     *
+     * <pre>
+     * Command health check.
+     * </pre>
+     */
+    boolean hasCommand();
+    /**
+     * <code>optional .mesos.CommandInfo command = 7;</code>
+     *
+     * <pre>
+     * Command health check.
+     * </pre>
+     */
+    org.apache.mesos.Protos.CommandInfo getCommand();
+    /**
+     * <code>optional .mesos.CommandInfo command = 7;</code>
+     *
+     * <pre>
+     * Command health check.
+     * </pre>
+     */
+    org.apache.mesos.Protos.CommandInfoOrBuilder getCommandOrBuilder();
+
+    // optional .mesos.HealthCheck.HTTPCheckInfo http = 1;
+    /**
+     * <code>optional .mesos.HealthCheck.HTTPCheckInfo http = 1;</code>
+     *
+     * <pre>
+     * HTTP health check.
+     * </pre>
+     */
+    boolean hasHttp();
+    /**
+     * <code>optional .mesos.HealthCheck.HTTPCheckInfo http = 1;</code>
+     *
+     * <pre>
+     * HTTP health check.
+     * </pre>
+     */
+    org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo getHttp();
+    /**
+     * <code>optional .mesos.HealthCheck.HTTPCheckInfo http = 1;</code>
+     *
+     * <pre>
+     * HTTP health check.
+     * </pre>
+     */
+    org.apache.mesos.Protos.HealthCheck.HTTPCheckInfoOrBuilder getHttpOrBuilder();
+
+    // optional .mesos.HealthCheck.TCPCheckInfo tcp = 9;
+    /**
+     * <code>optional .mesos.HealthCheck.TCPCheckInfo tcp = 9;</code>
+     *
+     * <pre>
+     * TCP health check.
+     * </pre>
+     */
+    boolean hasTcp();
+    /**
+     * <code>optional .mesos.HealthCheck.TCPCheckInfo tcp = 9;</code>
+     *
+     * <pre>
+     * TCP health check.
+     * </pre>
+     */
+    org.apache.mesos.Protos.HealthCheck.TCPCheckInfo getTcp();
+    /**
+     * <code>optional .mesos.HealthCheck.TCPCheckInfo tcp = 9;</code>
+     *
+     * <pre>
+     * TCP health check.
+     * </pre>
+     */
+    org.apache.mesos.Protos.HealthCheck.TCPCheckInfoOrBuilder getTcpOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.HealthCheck}
+   *
+   * <pre>
+   **
+   * Describes a health check for a task or executor (or any arbitrary
+   * process/command). A type is picked by specifying one of the
+   * optional fields. Specifying more than one type is an error.
+   * </pre>
+   */
+  public static final class HealthCheck extends
+      com.google.protobuf.GeneratedMessage
+      implements HealthCheckOrBuilder {
+    // Use HealthCheck.newBuilder() to construct.
+    private HealthCheck(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private HealthCheck(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final HealthCheck defaultInstance;
+    public static HealthCheck getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public HealthCheck getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private HealthCheck(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000080) == 0x00000080)) {
+                subBuilder = http_.toBuilder();
+              }
+              http_ = input.readMessage(org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(http_);
+                http_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000080;
+              break;
+            }
+            case 17: {
+              bitField0_ |= 0x00000001;
+              delaySeconds_ = input.readDouble();
+              break;
+            }
+            case 25: {
+              bitField0_ |= 0x00000002;
+              intervalSeconds_ = input.readDouble();
+              break;
+            }
+            case 33: {
+              bitField0_ |= 0x00000004;
+              timeoutSeconds_ = input.readDouble();
+              break;
+            }
+            case 40: {
+              bitField0_ |= 0x00000008;
+              consecutiveFailures_ = input.readUInt32();
+              break;
+            }
+            case 49: {
+              bitField0_ |= 0x00000010;
+              gracePeriodSeconds_ = input.readDouble();
+              break;
+            }
+            case 58: {
+              org.apache.mesos.Protos.CommandInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000040) == 0x00000040)) {
+                subBuilder = command_.toBuilder();
+              }
+              command_ = input.readMessage(org.apache.mesos.Protos.CommandInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(command_);
+                command_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000040;
+              break;
+            }
+            case 64: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.Protos.HealthCheck.Type value = org.apache.mesos.Protos.HealthCheck.Type.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(8, rawValue);
+              } else {
+                bitField0_ |= 0x00000020;
+                type_ = value;
+              }
+              break;
+            }
+            case 74: {
+              org.apache.mesos.Protos.HealthCheck.TCPCheckInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000100) == 0x00000100)) {
+                subBuilder = tcp_.toBuilder();
+              }
+              tcp_ = input.readMessage(org.apache.mesos.Protos.HealthCheck.TCPCheckInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(tcp_);
+                tcp_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000100;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_HealthCheck_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_HealthCheck_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.HealthCheck.class, org.apache.mesos.Protos.HealthCheck.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<HealthCheck> PARSER =
+        new com.google.protobuf.AbstractParser<HealthCheck>() {
+      public HealthCheck parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new HealthCheck(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<HealthCheck> getParserForType() {
+      return PARSER;
+    }
+
+    /**
+     * Protobuf enum {@code mesos.HealthCheck.Type}
+     */
+    public enum Type
+        implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>UNKNOWN = 0;</code>
+       */
+      UNKNOWN(0, 0),
+      /**
+       * <code>COMMAND = 1;</code>
+       */
+      COMMAND(1, 1),
+      /**
+       * <code>HTTP = 2;</code>
+       */
+      HTTP(2, 2),
+      /**
+       * <code>TCP = 3;</code>
+       */
+      TCP(3, 3),
+      ;
+
+      /**
+       * <code>UNKNOWN = 0;</code>
+       */
+      public static final int UNKNOWN_VALUE = 0;
+      /**
+       * <code>COMMAND = 1;</code>
+       */
+      public static final int COMMAND_VALUE = 1;
+      /**
+       * <code>HTTP = 2;</code>
+       */
+      public static final int HTTP_VALUE = 2;
+      /**
+       * <code>TCP = 3;</code>
+       */
+      public static final int TCP_VALUE = 3;
+
+
+      public final int getNumber() { return value; }
+
+      public static Type valueOf(int value) {
+        switch (value) {
+          case 0: return UNKNOWN;
+          case 1: return COMMAND;
+          case 2: return HTTP;
+          case 3: return TCP;
+          default: return null;
+        }
+      }
+
+      public static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalGetValueMap() {
+        return internalValueMap;
+      }
+      private static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap<Type>() {
+              public Type findValueByNumber(int number) {
+                return Type.valueOf(number);
+              }
+            };
+
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
+          getValueDescriptor() {
+        return getDescriptor().getValues().get(index);
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptorForType() {
+        return getDescriptor();
+      }
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.HealthCheck.getDescriptor().getEnumTypes().get(0);
+      }
+
+      private static final Type[] VALUES = values();
+
+      public static Type valueOf(
+          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+        if (desc.getType() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "EnumValueDescriptor is not for this type.");
+        }
+        return VALUES[desc.getIndex()];
+      }
+
+      private final int index;
+      private final int value;
+
+      private Type(int index, int value) {
+        this.index = index;
+        this.value = value;
+      }
+
+      // @@protoc_insertion_point(enum_scope:mesos.HealthCheck.Type)
+    }
+
+    public interface HTTPCheckInfoOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // optional string scheme = 3;
+      /**
+       * <code>optional string scheme = 3;</code>
+       *
+       * <pre>
+       * Currently "http" and "https" are supported.
+       * </pre>
+       */
+      boolean hasScheme();
+      /**
+       * <code>optional string scheme = 3;</code>
+       *
+       * <pre>
+       * Currently "http" and "https" are supported.
+       * </pre>
+       */
+      java.lang.String getScheme();
+      /**
+       * <code>optional string scheme = 3;</code>
+       *
+       * <pre>
+       * Currently "http" and "https" are supported.
+       * </pre>
+       */
+      com.google.protobuf.ByteString
+          getSchemeBytes();
+
+      // required uint32 port = 1;
+      /**
+       * <code>required uint32 port = 1;</code>
+       *
+       * <pre>
+       * Port to send the HTTP request.
+       * </pre>
+       */
+      boolean hasPort();
+      /**
+       * <code>required uint32 port = 1;</code>
+       *
+       * <pre>
+       * Port to send the HTTP request.
+       * </pre>
+       */
+      int getPort();
+
+      // optional string path = 2;
+      /**
+       * <code>optional string path = 2;</code>
+       *
+       * <pre>
+       * HTTP request path.
+       * </pre>
+       */
+      boolean hasPath();
+      /**
+       * <code>optional string path = 2;</code>
+       *
+       * <pre>
+       * HTTP request path.
+       * </pre>
+       */
+      java.lang.String getPath();
+      /**
+       * <code>optional string path = 2;</code>
+       *
+       * <pre>
+       * HTTP request path.
+       * </pre>
+       */
+      com.google.protobuf.ByteString
+          getPathBytes();
+
+      // repeated uint32 statuses = 4;
+      /**
+       * <code>repeated uint32 statuses = 4;</code>
+       *
+       * <pre>
+       * NOTE: It is up to the custom executor to interpret and act on this
+       * field. Setting this field has no effect on the default executors.
+       *
+       * TODO(haosdent): Deprecate this field when we add better support for
+       * success and possibly failure statuses, e.g. ranges of success and
+       * failure statuses.
+       * </pre>
+       */
+      java.util.List<java.lang.Integer> getStatusesList();
+      /**
+       * <code>repeated uint32 statuses = 4;</code>
+       *
+       * <pre>
+       * NOTE: It is up to the custom executor to interpret and act on this
+       * field. Setting this field has no effect on the default executors.
+       *
+       * TODO(haosdent): Deprecate this field when we add better support for
+       * success and possibly failure statuses, e.g. ranges of success and
+       * failure statuses.
+       * </pre>
+       */
+      int getStatusesCount();
+      /**
+       * <code>repeated uint32 statuses = 4;</code>
+       *
+       * <pre>
+       * NOTE: It is up to the custom executor to interpret and act on this
+       * field. Setting this field has no effect on the default executors.
+       *
+       * TODO(haosdent): Deprecate this field when we add better support for
+       * success and possibly failure statuses, e.g. ranges of success and
+       * failure statuses.
+       * </pre>
+       */
+      int getStatuses(int index);
+    }
+    /**
+     * Protobuf type {@code mesos.HealthCheck.HTTPCheckInfo}
+     *
+     * <pre>
+     * Describes an HTTP health check. Sends a GET request to
+     * scheme://&lt;host&gt;:port/path. Note that &lt;host&gt; is not configurable and is
+     * resolved automatically, in most cases to 127.0.0.1. Default executors
+     * treat return codes between 200 and 399 as success; custom executors
+     * may employ a different strategy, e.g. leveraging the `statuses` field.
+     * </pre>
+     */
+    public static final class HTTPCheckInfo extends
+        com.google.protobuf.GeneratedMessage
+        implements HTTPCheckInfoOrBuilder {
+      // Use HTTPCheckInfo.newBuilder() to construct.
+      private HTTPCheckInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private HTTPCheckInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final HTTPCheckInfo defaultInstance;
+      public static HTTPCheckInfo getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public HTTPCheckInfo getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private HTTPCheckInfo(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 8: {
+                bitField0_ |= 0x00000002;
+                port_ = input.readUInt32();
+                break;
+              }
+              case 18: {
+                bitField0_ |= 0x00000004;
+                path_ = input.readBytes();
+                break;
+              }
+              case 26: {
+                bitField0_ |= 0x00000001;
+                scheme_ = input.readBytes();
+                break;
+              }
+              case 32: {
+                if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
+                  statuses_ = new java.util.ArrayList<java.lang.Integer>();
+                  mutable_bitField0_ |= 0x00000008;
+                }
+                statuses_.add(input.readUInt32());
+                break;
+              }
+              case 34: {
+                int length = input.readRawVarint32();
+                int limit = input.pushLimit(length);
+                if (!((mutable_bitField0_ & 0x00000008) == 0x00000008) && input.getBytesUntilLimit() > 0) {
+                  statuses_ = new java.util.ArrayList<java.lang.Integer>();
+                  mutable_bitField0_ |= 0x00000008;
+                }
+                while (input.getBytesUntilLimit() > 0) {
+                  statuses_.add(input.readUInt32());
+                }
+                input.popLimit(limit);
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
+            statuses_ = java.util.Collections.unmodifiableList(statuses_);
+          }
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_HealthCheck_HTTPCheckInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_HealthCheck_HTTPCheckInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo.class, org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<HTTPCheckInfo> PARSER =
+          new com.google.protobuf.AbstractParser<HTTPCheckInfo>() {
+        public HTTPCheckInfo parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new HTTPCheckInfo(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<HTTPCheckInfo> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // optional string scheme = 3;
+      public static final int SCHEME_FIELD_NUMBER = 3;
+      private java.lang.Object scheme_;
+      /**
+       * <code>optional string scheme = 3;</code>
+       *
+       * <pre>
+       * Currently "http" and "https" are supported.
+       * </pre>
+       */
+      public boolean hasScheme() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional string scheme = 3;</code>
+       *
+       * <pre>
+       * Currently "http" and "https" are supported.
+       * </pre>
+       */
+      public java.lang.String getScheme() {
+        java.lang.Object ref = scheme_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            scheme_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>optional string scheme = 3;</code>
+       *
+       * <pre>
+       * Currently "http" and "https" are supported.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getSchemeBytes() {
+        java.lang.Object ref = scheme_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          scheme_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      // required uint32 port = 1;
+      public static final int PORT_FIELD_NUMBER = 1;
+      private int port_;
+      /**
+       * <code>required uint32 port = 1;</code>
+       *
+       * <pre>
+       * Port to send the HTTP request.
+       * </pre>
+       */
+      public boolean hasPort() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required uint32 port = 1;</code>
+       *
+       * <pre>
+       * Port to send the HTTP request.
+       * </pre>
+       */
+      public int getPort() {
+        return port_;
+      }
+
+      // optional string path = 2;
+      public static final int PATH_FIELD_NUMBER = 2;
+      private java.lang.Object path_;
+      /**
+       * <code>optional string path = 2;</code>
+       *
+       * <pre>
+       * HTTP request path.
+       * </pre>
+       */
+      public boolean hasPath() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional string path = 2;</code>
+       *
+       * <pre>
+       * HTTP request path.
+       * </pre>
+       */
+      public java.lang.String getPath() {
+        java.lang.Object ref = path_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            path_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>optional string path = 2;</code>
+       *
+       * <pre>
+       * HTTP request path.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getPathBytes() {
+        java.lang.Object ref = path_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          path_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      // repeated uint32 statuses = 4;
+      public static final int STATUSES_FIELD_NUMBER = 4;
+      private java.util.List<java.lang.Integer> statuses_;
+      /**
+       * <code>repeated uint32 statuses = 4;</code>
+       *
+       * <pre>
+       * NOTE: It is up to the custom executor to interpret and act on this
+       * field. Setting this field has no effect on the default executors.
+       *
+       * TODO(haosdent): Deprecate this field when we add better support for
+       * success and possibly failure statuses, e.g. ranges of success and
+       * failure statuses.
+       * </pre>
+       */
+      public java.util.List<java.lang.Integer>
+          getStatusesList() {
+        return statuses_;
+      }
+      /**
+       * <code>repeated uint32 statuses = 4;</code>
+       *
+       * <pre>
+       * NOTE: It is up to the custom executor to interpret and act on this
+       * field. Setting this field has no effect on the default executors.
+       *
+       * TODO(haosdent): Deprecate this field when we add better support for
+       * success and possibly failure statuses, e.g. ranges of success and
+       * failure statuses.
+       * </pre>
+       */
+      public int getStatusesCount() {
+        return statuses_.size();
+      }
+      /**
+       * <code>repeated uint32 statuses = 4;</code>
+       *
+       * <pre>
+       * NOTE: It is up to the custom executor to interpret and act on this
+       * field. Setting this field has no effect on the default executors.
+       *
+       * TODO(haosdent): Deprecate this field when we add better support for
+       * success and possibly failure statuses, e.g. ranges of success and
+       * failure statuses.
+       * </pre>
+       */
+      public int getStatuses(int index) {
+        return statuses_.get(index);
+      }
+
+      private void initFields() {
+        scheme_ = "";
+        port_ = 0;
+        path_ = "";
+        statuses_ = java.util.Collections.emptyList();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasPort()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeUInt32(1, port_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeBytes(2, getPathBytes());
+        }
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeBytes(3, getSchemeBytes());
+        }
+        for (int i = 0; i < statuses_.size(); i++) {
+          output.writeUInt32(4, statuses_.get(i));
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeUInt32Size(1, port_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(2, getPathBytes());
+        }
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(3, getSchemeBytes());
+        }
+        {
+          int dataSize = 0;
+          for (int i = 0; i < statuses_.size(); i++) {
+            dataSize += com.google.protobuf.CodedOutputStream
+              .computeUInt32SizeNoTag(statuses_.get(i));
+          }
+          size += dataSize;
+          size += 1 * getStatusesList().size();
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.HealthCheck.HTTPCheckInfo}
+       *
+       * <pre>
+       * Describes an HTTP health check. Sends a GET request to
+       * scheme://&lt;host&gt;:port/path. Note that &lt;host&gt; is not configurable and is
+       * resolved automatically, in most cases to 127.0.0.1. Default executors
+       * treat return codes between 200 and 399 as success; custom executors
+       * may employ a different strategy, e.g. leveraging the `statuses` field.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.Protos.HealthCheck.HTTPCheckInfoOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_HealthCheck_HTTPCheckInfo_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_HealthCheck_HTTPCheckInfo_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo.class, org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          scheme_ = "";
+          bitField0_ = (bitField0_ & ~0x00000001);
+          port_ = 0;
+          bitField0_ = (bitField0_ & ~0x00000002);
+          path_ = "";
+          bitField0_ = (bitField0_ & ~0x00000004);
+          statuses_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000008);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.Protos.internal_static_mesos_HealthCheck_HTTPCheckInfo_descriptor;
+        }
+
+        public org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo getDefaultInstanceForType() {
+          return org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo.getDefaultInstance();
+        }
+
+        public org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo build() {
+          org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo buildPartial() {
+          org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo result = new org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.scheme_ = scheme_;
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          result.port_ = port_;
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          result.path_ = path_;
+          if (((bitField0_ & 0x00000008) == 0x00000008)) {
+            statuses_ = java.util.Collections.unmodifiableList(statuses_);
+            bitField0_ = (bitField0_ & ~0x00000008);
+          }
+          result.statuses_ = statuses_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo) {
+            return mergeFrom((org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo other) {
+          if (other == org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo.getDefaultInstance()) return this;
+          if (other.hasScheme()) {
+            bitField0_ |= 0x00000001;
+            scheme_ = other.scheme_;
+            onChanged();
+          }
+          if (other.hasPort()) {
+            setPort(other.getPort());
+          }
+          if (other.hasPath()) {
+            bitField0_ |= 0x00000004;
+            path_ = other.path_;
+            onChanged();
+          }
+          if (!other.statuses_.isEmpty()) {
+            if (statuses_.isEmpty()) {
+              statuses_ = other.statuses_;
+              bitField0_ = (bitField0_ & ~0x00000008);
+            } else {
+              ensureStatusesIsMutable();
+              statuses_.addAll(other.statuses_);
+            }
+            onChanged();
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasPort()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // optional string scheme = 3;
+        private java.lang.Object scheme_ = "";
+        /**
+         * <code>optional string scheme = 3;</code>
+         *
+         * <pre>
+         * Currently "http" and "https" are supported.
+         * </pre>
+         */
+        public boolean hasScheme() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional string scheme = 3;</code>
+         *
+         * <pre>
+         * Currently "http" and "https" are supported.
+         * </pre>
+         */
+        public java.lang.String getScheme() {
+          java.lang.Object ref = scheme_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            scheme_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>optional string scheme = 3;</code>
+         *
+         * <pre>
+         * Currently "http" and "https" are supported.
+         * </pre>
+         */
+        public com.google.protobuf.ByteString
+            getSchemeBytes() {
+          java.lang.Object ref = scheme_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            scheme_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>optional string scheme = 3;</code>
+         *
+         * <pre>
+         * Currently "http" and "https" are supported.
+         * </pre>
+         */
+        public Builder setScheme(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          scheme_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string scheme = 3;</code>
+         *
+         * <pre>
+         * Currently "http" and "https" are supported.
+         * </pre>
+         */
+        public Builder clearScheme() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          scheme_ = getDefaultInstance().getScheme();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string scheme = 3;</code>
+         *
+         * <pre>
+         * Currently "http" and "https" are supported.
+         * </pre>
+         */
+        public Builder setSchemeBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          scheme_ = value;
+          onChanged();
+          return this;
+        }
+
+        // required uint32 port = 1;
+        private int port_ ;
+        /**
+         * <code>required uint32 port = 1;</code>
+         *
+         * <pre>
+         * Port to send the HTTP request.
+         * </pre>
+         */
+        public boolean hasPort() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>required uint32 port = 1;</code>
+         *
+         * <pre>
+         * Port to send the HTTP request.
+         * </pre>
+         */
+        public int getPort() {
+          return port_;
+        }
+        /**
+         * <code>required uint32 port = 1;</code>
+         *
+         * <pre>
+         * Port to send the HTTP request.
+         * </pre>
+         */
+        public Builder setPort(int value) {
+          bitField0_ |= 0x00000002;
+          port_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required uint32 port = 1;</code>
+         *
+         * <pre>
+         * Port to send the HTTP request.
+         * </pre>
+         */
+        public Builder clearPort() {
+          bitField0_ = (bitField0_ & ~0x00000002);
+          port_ = 0;
+          onChanged();
+          return this;
+        }
+
+        // optional string path = 2;
+        private java.lang.Object path_ = "";
+        /**
+         * <code>optional string path = 2;</code>
+         *
+         * <pre>
+         * HTTP request path.
+         * </pre>
+         */
+        public boolean hasPath() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional string path = 2;</code>
+         *
+         * <pre>
+         * HTTP request path.
+         * </pre>
+         */
+        public java.lang.String getPath() {
+          java.lang.Object ref = path_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            path_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>optional string path = 2;</code>
+         *
+         * <pre>
+         * HTTP request path.
+         * </pre>
+         */
+        public com.google.protobuf.ByteString
+            getPathBytes() {
+          java.lang.Object ref = path_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            path_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>optional string path = 2;</code>
+         *
+         * <pre>
+         * HTTP request path.
+         * </pre>
+         */
+        public Builder setPath(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+          path_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string path = 2;</code>
+         *
+         * <pre>
+         * HTTP request path.
+         * </pre>
+         */
+        public Builder clearPath() {
+          bitField0_ = (bitField0_ & ~0x00000004);
+          path_ = getDefaultInstance().getPath();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string path = 2;</code>
+         *
+         * <pre>
+         * HTTP request path.
+         * </pre>
+         */
+        public Builder setPathBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+          path_ = value;
+          onChanged();
+          return this;
+        }
+
+        // repeated uint32 statuses = 4;
+        private java.util.List<java.lang.Integer> statuses_ = java.util.Collections.emptyList();
+        private void ensureStatusesIsMutable() {
+          if (!((bitField0_ & 0x00000008) == 0x00000008)) {
+            statuses_ = new java.util.ArrayList<java.lang.Integer>(statuses_);
+            bitField0_ |= 0x00000008;
+           }
+        }
+        /**
+         * <code>repeated uint32 statuses = 4;</code>
+         *
+         * <pre>
+         * NOTE: It is up to the custom executor to interpret and act on this
+         * field. Setting this field has no effect on the default executors.
+         *
+         * TODO(haosdent): Deprecate this field when we add better support for
+         * success and possibly failure statuses, e.g. ranges of success and
+         * failure statuses.
+         * </pre>
+         */
+        public java.util.List<java.lang.Integer>
+            getStatusesList() {
+          return java.util.Collections.unmodifiableList(statuses_);
+        }
+        /**
+         * <code>repeated uint32 statuses = 4;</code>
+         *
+         * <pre>
+         * NOTE: It is up to the custom executor to interpret and act on this
+         * field. Setting this field has no effect on the default executors.
+         *
+         * TODO(haosdent): Deprecate this field when we add better support for
+         * success and possibly failure statuses, e.g. ranges of success and
+         * failure statuses.
+         * </pre>
+         */
+        public int getStatusesCount() {
+          return statuses_.size();
+        }
+        /**
+         * <code>repeated uint32 statuses = 4;</code>
+         *
+         * <pre>
+         * NOTE: It is up to the custom executor to interpret and act on this
+         * field. Setting this field has no effect on the default executors.
+         *
+         * TODO(haosdent): Deprecate this field when we add better support for
+         * success and possibly failure statuses, e.g. ranges of success and
+         * failure statuses.
+         * </pre>
+         */
+        public int getStatuses(int index) {
+          return statuses_.get(index);
+        }
+        /**
+         * <code>repeated uint32 statuses = 4;</code>
+         *
+         * <pre>
+         * NOTE: It is up to the custom executor to interpret and act on this
+         * field. Setting this field has no effect on the default executors.
+         *
+         * TODO(haosdent): Deprecate this field when we add better support for
+         * success and possibly failure statuses, e.g. ranges of success and
+         * failure statuses.
+         * </pre>
+         */
+        public Builder setStatuses(
+            int index, int value) {
+          ensureStatusesIsMutable();
+          statuses_.set(index, value);
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>repeated uint32 statuses = 4;</code>
+         *
+         * <pre>
+         * NOTE: It is up to the custom executor to interpret and act on this
+         * field. Setting this field has no effect on the default executors.
+         *
+         * TODO(haosdent): Deprecate this field when we add better support for
+         * success and possibly failure statuses, e.g. ranges of success and
+         * failure statuses.
+         * </pre>
+         */
+        public Builder addStatuses(int value) {
+          ensureStatusesIsMutable();
+          statuses_.add(value);
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>repeated uint32 statuses = 4;</code>
+         *
+         * <pre>
+         * NOTE: It is up to the custom executor to interpret and act on this
+         * field. Setting this field has no effect on the default executors.
+         *
+         * TODO(haosdent): Deprecate this field when we add better support for
+         * success and possibly failure statuses, e.g. ranges of success and
+         * failure statuses.
+         * </pre>
+         */
+        public Builder addAllStatuses(
+            java.lang.Iterable<? extends java.lang.Integer> values) {
+          ensureStatusesIsMutable();
+          super.addAll(values, statuses_);
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>repeated uint32 statuses = 4;</code>
+         *
+         * <pre>
+         * NOTE: It is up to the custom executor to interpret and act on this
+         * field. Setting this field has no effect on the default executors.
+         *
+         * TODO(haosdent): Deprecate this field when we add better support for
+         * success and possibly failure statuses, e.g. ranges of success and
+         * failure statuses.
+         * </pre>
+         */
+        public Builder clearStatuses() {
+          statuses_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000008);
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.HealthCheck.HTTPCheckInfo)
+      }
+
+      static {
+        defaultInstance = new HTTPCheckInfo(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.HealthCheck.HTTPCheckInfo)
+    }
+
+    public interface TCPCheckInfoOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required uint32 port = 1;
+      /**
+       * <code>required uint32 port = 1;</code>
+       *
+       * <pre>
+       * Port expected to be open.
+       * </pre>
+       */
+      boolean hasPort();
+      /**
+       * <code>required uint32 port = 1;</code>
+       *
+       * <pre>
+       * Port expected to be open.
+       * </pre>
+       */
+      int getPort();
+    }
+    /**
+     * Protobuf type {@code mesos.HealthCheck.TCPCheckInfo}
+     *
+     * <pre>
+     * Describes a TCP health check, i.e. based on establishing
+     * a TCP connection to the specified port.
+     * </pre>
+     */
+    public static final class TCPCheckInfo extends
+        com.google.protobuf.GeneratedMessage
+        implements TCPCheckInfoOrBuilder {
+      // Use TCPCheckInfo.newBuilder() to construct.
+      private TCPCheckInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private TCPCheckInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final TCPCheckInfo defaultInstance;
+      public static TCPCheckInfo getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public TCPCheckInfo getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private TCPCheckInfo(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 8: {
+                bitField0_ |= 0x00000001;
+                port_ = input.readUInt32();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_HealthCheck_TCPCheckInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_HealthCheck_TCPCheckInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.HealthCheck.TCPCheckInfo.class, org.apache.mesos.Protos.HealthCheck.TCPCheckInfo.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<TCPCheckInfo> PARSER =
+          new com.google.protobuf.AbstractParser<TCPCheckInfo>() {
+        public TCPCheckInfo parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new TCPCheckInfo(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<TCPCheckInfo> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required uint32 port = 1;
+      public static final int PORT_FIELD_NUMBER = 1;
+      private int port_;
+      /**
+       * <code>required uint32 port = 1;</code>
+       *
+       * <pre>
+       * Port expected to be open.
+       * </pre>
+       */
+      public boolean hasPort() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required uint32 port = 1;</code>
+       *
+       * <pre>
+       * Port expected to be open.
+       * </pre>
+       */
+      public int getPort() {
+        return port_;
+      }
+
+      private void initFields() {
+        port_ = 0;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasPort()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeUInt32(1, port_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeUInt32Size(1, port_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.Protos.HealthCheck.TCPCheckInfo parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.HealthCheck.TCPCheckInfo parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.HealthCheck.TCPCheckInfo parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.HealthCheck.TCPCheckInfo parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.HealthCheck.TCPCheckInfo parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.HealthCheck.TCPCheckInfo parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.HealthCheck.TCPCheckInfo parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.Protos.HealthCheck.TCPCheckInfo parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.HealthCheck.TCPCheckInfo parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.HealthCheck.TCPCheckInfo parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.Protos.HealthCheck.TCPCheckInfo prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.HealthCheck.TCPCheckInfo}
+       *
+       * <pre>
+       * Describes a TCP health check, i.e. based on establishing
+       * a TCP connection to the specified port.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.Protos.HealthCheck.TCPCheckInfoOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_HealthCheck_TCPCheckInfo_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_HealthCheck_TCPCheckInfo_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.HealthCheck.TCPCheckInfo.class, org.apache.mesos.Protos.HealthCheck.TCPCheckInfo.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.Protos.HealthCheck.TCPCheckInfo.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          port_ = 0;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.Protos.internal_static_mesos_HealthCheck_TCPCheckInfo_descriptor;
+        }
+
+        public org.apache.mesos.Protos.HealthCheck.TCPCheckInfo getDefaultInstanceForType() {
+          return org.apache.mesos.Protos.HealthCheck.TCPCheckInfo.getDefaultInstance();
+        }
+
+        public org.apache.mesos.Protos.HealthCheck.TCPCheckInfo build() {
+          org.apache.mesos.Protos.HealthCheck.TCPCheckInfo result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.Protos.HealthCheck.TCPCheckInfo buildPartial() {
+          org.apache.mesos.Protos.HealthCheck.TCPCheckInfo result = new org.apache.mesos.Protos.HealthCheck.TCPCheckInfo(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.port_ = port_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.Protos.HealthCheck.TCPCheckInfo) {
+            return mergeFrom((org.apache.mesos.Protos.HealthCheck.TCPCheckInfo)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.Protos.HealthCheck.TCPCheckInfo other) {
+          if (other == org.apache.mesos.Protos.HealthCheck.TCPCheckInfo.getDefaultInstance()) return this;
+          if (other.hasPort()) {
+            setPort(other.getPort());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasPort()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.Protos.HealthCheck.TCPCheckInfo parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.Protos.HealthCheck.TCPCheckInfo) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required uint32 port = 1;
+        private int port_ ;
+        /**
+         * <code>required uint32 port = 1;</code>
+         *
+         * <pre>
+         * Port expected to be open.
+         * </pre>
+         */
+        public boolean hasPort() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required uint32 port = 1;</code>
+         *
+         * <pre>
+         * Port expected to be open.
+         * </pre>
+         */
+        public int getPort() {
+          return port_;
+        }
+        /**
+         * <code>required uint32 port = 1;</code>
+         *
+         * <pre>
+         * Port expected to be open.
+         * </pre>
+         */
+        public Builder setPort(int value) {
+          bitField0_ |= 0x00000001;
+          port_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required uint32 port = 1;</code>
+         *
+         * <pre>
+         * Port expected to be open.
+         * </pre>
+         */
+        public Builder clearPort() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          port_ = 0;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.HealthCheck.TCPCheckInfo)
+      }
+
+      static {
+        defaultInstance = new TCPCheckInfo(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.HealthCheck.TCPCheckInfo)
+    }
+
+    private int bitField0_;
+    // optional double delay_seconds = 2 [default = 15];
+    public static final int DELAY_SECONDS_FIELD_NUMBER = 2;
+    private double delaySeconds_;
+    /**
+     * <code>optional double delay_seconds = 2 [default = 15];</code>
+     *
+     * <pre>
+     * Amount of time to wait to start health checking the task after it
+     * transitions to `TASK_RUNNING` or `TASK_STATING` if the latter is
+     * used by the executor.
+     * </pre>
+     */
+    public boolean hasDelaySeconds() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional double delay_seconds = 2 [default = 15];</code>
+     *
+     * <pre>
+     * Amount of time to wait to start health checking the task after it
+     * transitions to `TASK_RUNNING` or `TASK_STATING` if the latter is
+     * used by the executor.
+     * </pre>
+     */
+    public double getDelaySeconds() {
+      return delaySeconds_;
+    }
+
+    // optional double interval_seconds = 3 [default = 10];
+    public static final int INTERVAL_SECONDS_FIELD_NUMBER = 3;
+    private double intervalSeconds_;
+    /**
+     * <code>optional double interval_seconds = 3 [default = 10];</code>
+     *
+     * <pre>
+     * Interval between health checks, i.e., amount of time to wait after
+     * the previous health check finished or timed out to start the next
+     * health check.
+     * </pre>
+     */
+    public boolean hasIntervalSeconds() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional double interval_seconds = 3 [default = 10];</code>
+     *
+     * <pre>
+     * Interval between health checks, i.e., amount of time to wait after
+     * the previous health check finished or timed out to start the next
+     * health check.
+     * </pre>
+     */
+    public double getIntervalSeconds() {
+      return intervalSeconds_;
+    }
+
+    // optional double timeout_seconds = 4 [default = 20];
+    public static final int TIMEOUT_SECONDS_FIELD_NUMBER = 4;
+    private double timeoutSeconds_;
+    /**
+     * <code>optional double timeout_seconds = 4 [default = 20];</code>
+     *
+     * <pre>
+     * Amount of time to wait for the health check to complete. After this
+     * timeout, the health check is aborted and treated as a failure. Zero
+     * means infinite timeout.
+     * </pre>
+     */
+    public boolean hasTimeoutSeconds() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional double timeout_seconds = 4 [default = 20];</code>
+     *
+     * <pre>
+     * Amount of time to wait for the health check to complete. After this
+     * timeout, the health check is aborted and treated as a failure. Zero
+     * means infinite timeout.
+     * </pre>
+     */
+    public double getTimeoutSeconds() {
+      return timeoutSeconds_;
+    }
+
+    // optional uint32 consecutive_failures = 5 [default = 3];
+    public static final int CONSECUTIVE_FAILURES_FIELD_NUMBER = 5;
+    private int consecutiveFailures_;
+    /**
+     * <code>optional uint32 consecutive_failures = 5 [default = 3];</code>
+     *
+     * <pre>
+     * Number of consecutive failures until the task is killed by the executor.
+     * </pre>
+     */
+    public boolean hasConsecutiveFailures() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional uint32 consecutive_failures = 5 [default = 3];</code>
+     *
+     * <pre>
+     * Number of consecutive failures until the task is killed by the executor.
+     * </pre>
+     */
+    public int getConsecutiveFailures() {
+      return consecutiveFailures_;
+    }
+
+    // optional double grace_period_seconds = 6 [default = 10];
+    public static final int GRACE_PERIOD_SECONDS_FIELD_NUMBER = 6;
+    private double gracePeriodSeconds_;
+    /**
+     * <code>optional double grace_period_seconds = 6 [default = 10];</code>
+     *
+     * <pre>
+     * Amount of time after the task is launched during which health check
+     * failures are ignored. Once a check succeeds for the first time,
+     * the grace period does not apply anymore. Note that it includes
+     * `delay_seconds`, i.e., setting `grace_period_seconds` &lt; `delay_seconds`
+     * has no effect.
+     * </pre>
+     */
+    public boolean hasGracePeriodSeconds() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional double grace_period_seconds = 6 [default = 10];</code>
+     *
+     * <pre>
+     * Amount of time after the task is launched during which health check
+     * failures are ignored. Once a check succeeds for the first time,
+     * the grace period does not apply anymore. Note that it includes
+     * `delay_seconds`, i.e., setting `grace_period_seconds` &lt; `delay_seconds`
+     * has no effect.
+     * </pre>
+     */
+    public double getGracePeriodSeconds() {
+      return gracePeriodSeconds_;
+    }
+
+    // optional .mesos.HealthCheck.Type type = 8;
+    public static final int TYPE_FIELD_NUMBER = 8;
+    private org.apache.mesos.Protos.HealthCheck.Type type_;
+    /**
+     * <code>optional .mesos.HealthCheck.Type type = 8;</code>
+     *
+     * <pre>
+     * The type of health check.
+     * </pre>
+     */
+    public boolean hasType() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional .mesos.HealthCheck.Type type = 8;</code>
+     *
+     * <pre>
+     * The type of health check.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.HealthCheck.Type getType() {
+      return type_;
+    }
+
+    // optional .mesos.CommandInfo command = 7;
+    public static final int COMMAND_FIELD_NUMBER = 7;
+    private org.apache.mesos.Protos.CommandInfo command_;
+    /**
+     * <code>optional .mesos.CommandInfo command = 7;</code>
+     *
+     * <pre>
+     * Command health check.
+     * </pre>
+     */
+    public boolean hasCommand() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional .mesos.CommandInfo command = 7;</code>
+     *
+     * <pre>
+     * Command health check.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.CommandInfo getCommand() {
+      return command_;
+    }
+    /**
+     * <code>optional .mesos.CommandInfo command = 7;</code>
+     *
+     * <pre>
+     * Command health check.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.CommandInfoOrBuilder getCommandOrBuilder() {
+      return command_;
+    }
+
+    // optional .mesos.HealthCheck.HTTPCheckInfo http = 1;
+    public static final int HTTP_FIELD_NUMBER = 1;
+    private org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo http_;
+    /**
+     * <code>optional .mesos.HealthCheck.HTTPCheckInfo http = 1;</code>
+     *
+     * <pre>
+     * HTTP health check.
+     * </pre>
+     */
+    public boolean hasHttp() {
+      return ((bitField0_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional .mesos.HealthCheck.HTTPCheckInfo http = 1;</code>
+     *
+     * <pre>
+     * HTTP health check.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo getHttp() {
+      return http_;
+    }
+    /**
+     * <code>optional .mesos.HealthCheck.HTTPCheckInfo http = 1;</code>
+     *
+     * <pre>
+     * HTTP health check.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.HealthCheck.HTTPCheckInfoOrBuilder getHttpOrBuilder() {
+      return http_;
+    }
+
+    // optional .mesos.HealthCheck.TCPCheckInfo tcp = 9;
+    public static final int TCP_FIELD_NUMBER = 9;
+    private org.apache.mesos.Protos.HealthCheck.TCPCheckInfo tcp_;
+    /**
+     * <code>optional .mesos.HealthCheck.TCPCheckInfo tcp = 9;</code>
+     *
+     * <pre>
+     * TCP health check.
+     * </pre>
+     */
+    public boolean hasTcp() {
+      return ((bitField0_ & 0x00000100) == 0x00000100);
+    }
+    /**
+     * <code>optional .mesos.HealthCheck.TCPCheckInfo tcp = 9;</code>
+     *
+     * <pre>
+     * TCP health check.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.HealthCheck.TCPCheckInfo getTcp() {
+      return tcp_;
+    }
+    /**
+     * <code>optional .mesos.HealthCheck.TCPCheckInfo tcp = 9;</code>
+     *
+     * <pre>
+     * TCP health check.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.HealthCheck.TCPCheckInfoOrBuilder getTcpOrBuilder() {
+      return tcp_;
+    }
+
+    private void initFields() {
+      delaySeconds_ = 15D;
+      intervalSeconds_ = 10D;
+      timeoutSeconds_ = 20D;
+      consecutiveFailures_ = 3;
+      gracePeriodSeconds_ = 10D;
+      type_ = org.apache.mesos.Protos.HealthCheck.Type.UNKNOWN;
+      command_ = org.apache.mesos.Protos.CommandInfo.getDefaultInstance();
+      http_ = org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo.getDefaultInstance();
+      tcp_ = org.apache.mesos.Protos.HealthCheck.TCPCheckInfo.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (hasCommand()) {
+        if (!getCommand().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasHttp()) {
+        if (!getHttp().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasTcp()) {
+        if (!getTcp().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        output.writeMessage(1, http_);
+      }
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeDouble(2, delaySeconds_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeDouble(3, intervalSeconds_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeDouble(4, timeoutSeconds_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeUInt32(5, consecutiveFailures_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeDouble(6, gracePeriodSeconds_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeMessage(7, command_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeEnum(8, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        output.writeMessage(9, tcp_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, http_);
+      }
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(2, delaySeconds_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(3, intervalSeconds_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(4, timeoutSeconds_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(5, consecutiveFailures_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(6, gracePeriodSeconds_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(7, command_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(8, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(9, tcp_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.HealthCheck parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.HealthCheck parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.HealthCheck parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.HealthCheck parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.HealthCheck parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.HealthCheck parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.HealthCheck parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.HealthCheck parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.HealthCheck parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.HealthCheck parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.HealthCheck prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.HealthCheck}
+     *
+     * <pre>
+     **
+     * Describes a health check for a task or executor (or any arbitrary
+     * process/command). A type is picked by specifying one of the
+     * optional fields. Specifying more than one type is an error.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.HealthCheckOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_HealthCheck_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_HealthCheck_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.HealthCheck.class, org.apache.mesos.Protos.HealthCheck.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.HealthCheck.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getCommandFieldBuilder();
+          getHttpFieldBuilder();
+          getTcpFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        delaySeconds_ = 15D;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        intervalSeconds_ = 10D;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        timeoutSeconds_ = 20D;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        consecutiveFailures_ = 3;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        gracePeriodSeconds_ = 10D;
+        bitField0_ = (bitField0_ & ~0x00000010);
+        type_ = org.apache.mesos.Protos.HealthCheck.Type.UNKNOWN;
+        bitField0_ = (bitField0_ & ~0x00000020);
+        if (commandBuilder_ == null) {
+          command_ = org.apache.mesos.Protos.CommandInfo.getDefaultInstance();
+        } else {
+          commandBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000040);
+        if (httpBuilder_ == null) {
+          http_ = org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo.getDefaultInstance();
+        } else {
+          httpBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000080);
+        if (tcpBuilder_ == null) {
+          tcp_ = org.apache.mesos.Protos.HealthCheck.TCPCheckInfo.getDefaultInstance();
+        } else {
+          tcpBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000100);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_HealthCheck_descriptor;
+      }
+
+      public org.apache.mesos.Protos.HealthCheck getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.HealthCheck.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.HealthCheck build() {
+        org.apache.mesos.Protos.HealthCheck result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.HealthCheck buildPartial() {
+        org.apache.mesos.Protos.HealthCheck result = new org.apache.mesos.Protos.HealthCheck(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.delaySeconds_ = delaySeconds_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.intervalSeconds_ = intervalSeconds_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.timeoutSeconds_ = timeoutSeconds_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.consecutiveFailures_ = consecutiveFailures_;
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.gracePeriodSeconds_ = gracePeriodSeconds_;
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        result.type_ = type_;
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        if (commandBuilder_ == null) {
+          result.command_ = command_;
+        } else {
+          result.command_ = commandBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+          to_bitField0_ |= 0x00000080;
+        }
+        if (httpBuilder_ == null) {
+          result.http_ = http_;
+        } else {
+          result.http_ = httpBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
+          to_bitField0_ |= 0x00000100;
+        }
+        if (tcpBuilder_ == null) {
+          result.tcp_ = tcp_;
+        } else {
+          result.tcp_ = tcpBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.HealthCheck) {
+          return mergeFrom((org.apache.mesos.Protos.HealthCheck)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.HealthCheck other) {
+        if (other == org.apache.mesos.Protos.HealthCheck.getDefaultInstance()) return this;
+        if (other.hasDelaySeconds()) {
+          setDelaySeconds(other.getDelaySeconds());
+        }
+        if (other.hasIntervalSeconds()) {
+          setIntervalSeconds(other.getIntervalSeconds());
+        }
+        if (other.hasTimeoutSeconds()) {
+          setTimeoutSeconds(other.getTimeoutSeconds());
+        }
+        if (other.hasConsecutiveFailures()) {
+          setConsecutiveFailures(other.getConsecutiveFailures());
+        }
+        if (other.hasGracePeriodSeconds()) {
+          setGracePeriodSeconds(other.getGracePeriodSeconds());
+        }
+        if (other.hasType()) {
+          setType(other.getType());
+        }
+        if (other.hasCommand()) {
+          mergeCommand(other.getCommand());
+        }
+        if (other.hasHttp()) {
+          mergeHttp(other.getHttp());
+        }
+        if (other.hasTcp()) {
+          mergeTcp(other.getTcp());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (hasCommand()) {
+          if (!getCommand().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasHttp()) {
+          if (!getHttp().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasTcp()) {
+          if (!getTcp().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.HealthCheck parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.HealthCheck) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional double delay_seconds = 2 [default = 15];
+      private double delaySeconds_ = 15D;
+      /**
+       * <code>optional double delay_seconds = 2 [default = 15];</code>
+       *
+       * <pre>
+       * Amount of time to wait to start health checking the task after it
+       * transitions to `TASK_RUNNING` or `TASK_STATING` if the latter is
+       * used by the executor.
+       * </pre>
+       */
+      public boolean hasDelaySeconds() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional double delay_seconds = 2 [default = 15];</code>
+       *
+       * <pre>
+       * Amount of time to wait to start health checking the task after it
+       * transitions to `TASK_RUNNING` or `TASK_STATING` if the latter is
+       * used by the executor.
+       * </pre>
+       */
+      public double getDelaySeconds() {
+        return delaySeconds_;
+      }
+      /**
+       * <code>optional double delay_seconds = 2 [default = 15];</code>
+       *
+       * <pre>
+       * Amount of time to wait to start health checking the task after it
+       * transitions to `TASK_RUNNING` or `TASK_STATING` if the latter is
+       * used by the executor.
+       * </pre>
+       */
+      public Builder setDelaySeconds(double value) {
+        bitField0_ |= 0x00000001;
+        delaySeconds_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double delay_seconds = 2 [default = 15];</code>
+       *
+       * <pre>
+       * Amount of time to wait to start health checking the task after it
+       * transitions to `TASK_RUNNING` or `TASK_STATING` if the latter is
+       * used by the executor.
+       * </pre>
+       */
+      public Builder clearDelaySeconds() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        delaySeconds_ = 15D;
+        onChanged();
+        return this;
+      }
+
+      // optional double interval_seconds = 3 [default = 10];
+      private double intervalSeconds_ = 10D;
+      /**
+       * <code>optional double interval_seconds = 3 [default = 10];</code>
+       *
+       * <pre>
+       * Interval between health checks, i.e., amount of time to wait after
+       * the previous health check finished or timed out to start the next
+       * health check.
+       * </pre>
+       */
+      public boolean hasIntervalSeconds() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional double interval_seconds = 3 [default = 10];</code>
+       *
+       * <pre>
+       * Interval between health checks, i.e., amount of time to wait after
+       * the previous health check finished or timed out to start the next
+       * health check.
+       * </pre>
+       */
+      public double getIntervalSeconds() {
+        return intervalSeconds_;
+      }
+      /**
+       * <code>optional double interval_seconds = 3 [default = 10];</code>
+       *
+       * <pre>
+       * Interval between health checks, i.e., amount of time to wait after
+       * the previous health check finished or timed out to start the next
+       * health check.
+       * </pre>
+       */
+      public Builder setIntervalSeconds(double value) {
+        bitField0_ |= 0x00000002;
+        intervalSeconds_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double interval_seconds = 3 [default = 10];</code>
+       *
+       * <pre>
+       * Interval between health checks, i.e., amount of time to wait after
+       * the previous health check finished or timed out to start the next
+       * health check.
+       * </pre>
+       */
+      public Builder clearIntervalSeconds() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        intervalSeconds_ = 10D;
+        onChanged();
+        return this;
+      }
+
+      // optional double timeout_seconds = 4 [default = 20];
+      private double timeoutSeconds_ = 20D;
+      /**
+       * <code>optional double timeout_seconds = 4 [default = 20];</code>
+       *
+       * <pre>
+       * Amount of time to wait for the health check to complete. After this
+       * timeout, the health check is aborted and treated as a failure. Zero
+       * means infinite timeout.
+       * </pre>
+       */
+      public boolean hasTimeoutSeconds() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional double timeout_seconds = 4 [default = 20];</code>
+       *
+       * <pre>
+       * Amount of time to wait for the health check to complete. After this
+       * timeout, the health check is aborted and treated as a failure. Zero
+       * means infinite timeout.
+       * </pre>
+       */
+      public double getTimeoutSeconds() {
+        return timeoutSeconds_;
+      }
+      /**
+       * <code>optional double timeout_seconds = 4 [default = 20];</code>
+       *
+       * <pre>
+       * Amount of time to wait for the health check to complete. After this
+       * timeout, the health check is aborted and treated as a failure. Zero
+       * means infinite timeout.
+       * </pre>
+       */
+      public Builder setTimeoutSeconds(double value) {
+        bitField0_ |= 0x00000004;
+        timeoutSeconds_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double timeout_seconds = 4 [default = 20];</code>
+       *
+       * <pre>
+       * Amount of time to wait for the health check to complete. After this
+       * timeout, the health check is aborted and treated as a failure. Zero
+       * means infinite timeout.
+       * </pre>
+       */
+      public Builder clearTimeoutSeconds() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        timeoutSeconds_ = 20D;
+        onChanged();
+        return this;
+      }
+
+      // optional uint32 consecutive_failures = 5 [default = 3];
+      private int consecutiveFailures_ = 3;
+      /**
+       * <code>optional uint32 consecutive_failures = 5 [default = 3];</code>
+       *
+       * <pre>
+       * Number of consecutive failures until the task is killed by the executor.
+       * </pre>
+       */
+      public boolean hasConsecutiveFailures() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional uint32 consecutive_failures = 5 [default = 3];</code>
+       *
+       * <pre>
+       * Number of consecutive failures until the task is killed by the executor.
+       * </pre>
+       */
+      public int getConsecutiveFailures() {
+        return consecutiveFailures_;
+      }
+      /**
+       * <code>optional uint32 consecutive_failures = 5 [default = 3];</code>
+       *
+       * <pre>
+       * Number of consecutive failures until the task is killed by the executor.
+       * </pre>
+       */
+      public Builder setConsecutiveFailures(int value) {
+        bitField0_ |= 0x00000008;
+        consecutiveFailures_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint32 consecutive_failures = 5 [default = 3];</code>
+       *
+       * <pre>
+       * Number of consecutive failures until the task is killed by the executor.
+       * </pre>
+       */
+      public Builder clearConsecutiveFailures() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        consecutiveFailures_ = 3;
+        onChanged();
+        return this;
+      }
+
+      // optional double grace_period_seconds = 6 [default = 10];
+      private double gracePeriodSeconds_ = 10D;
+      /**
+       * <code>optional double grace_period_seconds = 6 [default = 10];</code>
+       *
+       * <pre>
+       * Amount of time after the task is launched during which health check
+       * failures are ignored. Once a check succeeds for the first time,
+       * the grace period does not apply anymore. Note that it includes
+       * `delay_seconds`, i.e., setting `grace_period_seconds` &lt; `delay_seconds`
+       * has no effect.
+       * </pre>
+       */
+      public boolean hasGracePeriodSeconds() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional double grace_period_seconds = 6 [default = 10];</code>
+       *
+       * <pre>
+       * Amount of time after the task is launched during which health check
+       * failures are ignored. Once a check succeeds for the first time,
+       * the grace period does not apply anymore. Note that it includes
+       * `delay_seconds`, i.e., setting `grace_period_seconds` &lt; `delay_seconds`
+       * has no effect.
+       * </pre>
+       */
+      public double getGracePeriodSeconds() {
+        return gracePeriodSeconds_;
+      }
+      /**
+       * <code>optional double grace_period_seconds = 6 [default = 10];</code>
+       *
+       * <pre>
+       * Amount of time after the task is launched during which health check
+       * failures are ignored. Once a check succeeds for the first time,
+       * the grace period does not apply anymore. Note that it includes
+       * `delay_seconds`, i.e., setting `grace_period_seconds` &lt; `delay_seconds`
+       * has no effect.
+       * </pre>
+       */
+      public Builder setGracePeriodSeconds(double value) {
+        bitField0_ |= 0x00000010;
+        gracePeriodSeconds_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double grace_period_seconds = 6 [default = 10];</code>
+       *
+       * <pre>
+       * Amount of time after the task is launched during which health check
+       * failures are ignored. Once a check succeeds for the first time,
+       * the grace period does not apply anymore. Note that it includes
+       * `delay_seconds`, i.e., setting `grace_period_seconds` &lt; `delay_seconds`
+       * has no effect.
+       * </pre>
+       */
+      public Builder clearGracePeriodSeconds() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        gracePeriodSeconds_ = 10D;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.HealthCheck.Type type = 8;
+      private org.apache.mesos.Protos.HealthCheck.Type type_ = org.apache.mesos.Protos.HealthCheck.Type.UNKNOWN;
+      /**
+       * <code>optional .mesos.HealthCheck.Type type = 8;</code>
+       *
+       * <pre>
+       * The type of health check.
+       * </pre>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional .mesos.HealthCheck.Type type = 8;</code>
+       *
+       * <pre>
+       * The type of health check.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.HealthCheck.Type getType() {
+        return type_;
+      }
+      /**
+       * <code>optional .mesos.HealthCheck.Type type = 8;</code>
+       *
+       * <pre>
+       * The type of health check.
+       * </pre>
+       */
+      public Builder setType(org.apache.mesos.Protos.HealthCheck.Type value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000020;
+        type_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional .mesos.HealthCheck.Type type = 8;</code>
+       *
+       * <pre>
+       * The type of health check.
+       * </pre>
+       */
+      public Builder clearType() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        type_ = org.apache.mesos.Protos.HealthCheck.Type.UNKNOWN;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.CommandInfo command = 7;
+      private org.apache.mesos.Protos.CommandInfo command_ = org.apache.mesos.Protos.CommandInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.CommandInfo, org.apache.mesos.Protos.CommandInfo.Builder, org.apache.mesos.Protos.CommandInfoOrBuilder> commandBuilder_;
+      /**
+       * <code>optional .mesos.CommandInfo command = 7;</code>
+       *
+       * <pre>
+       * Command health check.
+       * </pre>
+       */
+      public boolean hasCommand() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional .mesos.CommandInfo command = 7;</code>
+       *
+       * <pre>
+       * Command health check.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.CommandInfo getCommand() {
+        if (commandBuilder_ == null) {
+          return command_;
+        } else {
+          return commandBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.CommandInfo command = 7;</code>
+       *
+       * <pre>
+       * Command health check.
+       * </pre>
+       */
+      public Builder setCommand(org.apache.mesos.Protos.CommandInfo value) {
+        if (commandBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          command_ = value;
+          onChanged();
+        } else {
+          commandBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CommandInfo command = 7;</code>
+       *
+       * <pre>
+       * Command health check.
+       * </pre>
+       */
+      public Builder setCommand(
+          org.apache.mesos.Protos.CommandInfo.Builder builderForValue) {
+        if (commandBuilder_ == null) {
+          command_ = builderForValue.build();
+          onChanged();
+        } else {
+          commandBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CommandInfo command = 7;</code>
+       *
+       * <pre>
+       * Command health check.
+       * </pre>
+       */
+      public Builder mergeCommand(org.apache.mesos.Protos.CommandInfo value) {
+        if (commandBuilder_ == null) {
+          if (((bitField0_ & 0x00000040) == 0x00000040) &&
+              command_ != org.apache.mesos.Protos.CommandInfo.getDefaultInstance()) {
+            command_ =
+              org.apache.mesos.Protos.CommandInfo.newBuilder(command_).mergeFrom(value).buildPartial();
+          } else {
+            command_ = value;
+          }
+          onChanged();
+        } else {
+          commandBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CommandInfo command = 7;</code>
+       *
+       * <pre>
+       * Command health check.
+       * </pre>
+       */
+      public Builder clearCommand() {
+        if (commandBuilder_ == null) {
+          command_ = org.apache.mesos.Protos.CommandInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          commandBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000040);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CommandInfo command = 7;</code>
+       *
+       * <pre>
+       * Command health check.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.CommandInfo.Builder getCommandBuilder() {
+        bitField0_ |= 0x00000040;
+        onChanged();
+        return getCommandFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.CommandInfo command = 7;</code>
+       *
+       * <pre>
+       * Command health check.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.CommandInfoOrBuilder getCommandOrBuilder() {
+        if (commandBuilder_ != null) {
+          return commandBuilder_.getMessageOrBuilder();
+        } else {
+          return command_;
+        }
+      }
+      /**
+       * <code>optional .mesos.CommandInfo command = 7;</code>
+       *
+       * <pre>
+       * Command health check.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.CommandInfo, org.apache.mesos.Protos.CommandInfo.Builder, org.apache.mesos.Protos.CommandInfoOrBuilder> 
+          getCommandFieldBuilder() {
+        if (commandBuilder_ == null) {
+          commandBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.CommandInfo, org.apache.mesos.Protos.CommandInfo.Builder, org.apache.mesos.Protos.CommandInfoOrBuilder>(
+                  command_,
+                  getParentForChildren(),
+                  isClean());
+          command_ = null;
+        }
+        return commandBuilder_;
+      }
+
+      // optional .mesos.HealthCheck.HTTPCheckInfo http = 1;
+      private org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo http_ = org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo, org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo.Builder, org.apache.mesos.Protos.HealthCheck.HTTPCheckInfoOrBuilder> httpBuilder_;
+      /**
+       * <code>optional .mesos.HealthCheck.HTTPCheckInfo http = 1;</code>
+       *
+       * <pre>
+       * HTTP health check.
+       * </pre>
+       */
+      public boolean hasHttp() {
+        return ((bitField0_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional .mesos.HealthCheck.HTTPCheckInfo http = 1;</code>
+       *
+       * <pre>
+       * HTTP health check.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo getHttp() {
+        if (httpBuilder_ == null) {
+          return http_;
+        } else {
+          return httpBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.HealthCheck.HTTPCheckInfo http = 1;</code>
+       *
+       * <pre>
+       * HTTP health check.
+       * </pre>
+       */
+      public Builder setHttp(org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo value) {
+        if (httpBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          http_ = value;
+          onChanged();
+        } else {
+          httpBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.HealthCheck.HTTPCheckInfo http = 1;</code>
+       *
+       * <pre>
+       * HTTP health check.
+       * </pre>
+       */
+      public Builder setHttp(
+          org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo.Builder builderForValue) {
+        if (httpBuilder_ == null) {
+          http_ = builderForValue.build();
+          onChanged();
+        } else {
+          httpBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.HealthCheck.HTTPCheckInfo http = 1;</code>
+       *
+       * <pre>
+       * HTTP health check.
+       * </pre>
+       */
+      public Builder mergeHttp(org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo value) {
+        if (httpBuilder_ == null) {
+          if (((bitField0_ & 0x00000080) == 0x00000080) &&
+              http_ != org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo.getDefaultInstance()) {
+            http_ =
+              org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo.newBuilder(http_).mergeFrom(value).buildPartial();
+          } else {
+            http_ = value;
+          }
+          onChanged();
+        } else {
+          httpBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.HealthCheck.HTTPCheckInfo http = 1;</code>
+       *
+       * <pre>
+       * HTTP health check.
+       * </pre>
+       */
+      public Builder clearHttp() {
+        if (httpBuilder_ == null) {
+          http_ = org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          httpBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000080);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.HealthCheck.HTTPCheckInfo http = 1;</code>
+       *
+       * <pre>
+       * HTTP health check.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo.Builder getHttpBuilder() {
+        bitField0_ |= 0x00000080;
+        onChanged();
+        return getHttpFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.HealthCheck.HTTPCheckInfo http = 1;</code>
+       *
+       * <pre>
+       * HTTP health check.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.HealthCheck.HTTPCheckInfoOrBuilder getHttpOrBuilder() {
+        if (httpBuilder_ != null) {
+          return httpBuilder_.getMessageOrBuilder();
+        } else {
+          return http_;
+        }
+      }
+      /**
+       * <code>optional .mesos.HealthCheck.HTTPCheckInfo http = 1;</code>
+       *
+       * <pre>
+       * HTTP health check.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo, org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo.Builder, org.apache.mesos.Protos.HealthCheck.HTTPCheckInfoOrBuilder> 
+          getHttpFieldBuilder() {
+        if (httpBuilder_ == null) {
+          httpBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo, org.apache.mesos.Protos.HealthCheck.HTTPCheckInfo.Builder, org.apache.mesos.Protos.HealthCheck.HTTPCheckInfoOrBuilder>(
+                  http_,
+                  getParentForChildren(),
+                  isClean());
+          http_ = null;
+        }
+        return httpBuilder_;
+      }
+
+      // optional .mesos.HealthCheck.TCPCheckInfo tcp = 9;
+      private org.apache.mesos.Protos.HealthCheck.TCPCheckInfo tcp_ = org.apache.mesos.Protos.HealthCheck.TCPCheckInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.HealthCheck.TCPCheckInfo, org.apache.mesos.Protos.HealthCheck.TCPCheckInfo.Builder, org.apache.mesos.Protos.HealthCheck.TCPCheckInfoOrBuilder> tcpBuilder_;
+      /**
+       * <code>optional .mesos.HealthCheck.TCPCheckInfo tcp = 9;</code>
+       *
+       * <pre>
+       * TCP health check.
+       * </pre>
+       */
+      public boolean hasTcp() {
+        return ((bitField0_ & 0x00000100) == 0x00000100);
+      }
+      /**
+       * <code>optional .mesos.HealthCheck.TCPCheckInfo tcp = 9;</code>
+       *
+       * <pre>
+       * TCP health check.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.HealthCheck.TCPCheckInfo getTcp() {
+        if (tcpBuilder_ == null) {
+          return tcp_;
+        } else {
+          return tcpBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.HealthCheck.TCPCheckInfo tcp = 9;</code>
+       *
+       * <pre>
+       * TCP health check.
+       * </pre>
+       */
+      public Builder setTcp(org.apache.mesos.Protos.HealthCheck.TCPCheckInfo value) {
+        if (tcpBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          tcp_ = value;
+          onChanged();
+        } else {
+          tcpBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000100;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.HealthCheck.TCPCheckInfo tcp = 9;</code>
+       *
+       * <pre>
+       * TCP health check.
+       * </pre>
+       */
+      public Builder setTcp(
+          org.apache.mesos.Protos.HealthCheck.TCPCheckInfo.Builder builderForValue) {
+        if (tcpBuilder_ == null) {
+          tcp_ = builderForValue.build();
+          onChanged();
+        } else {
+          tcpBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000100;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.HealthCheck.TCPCheckInfo tcp = 9;</code>
+       *
+       * <pre>
+       * TCP health check.
+       * </pre>
+       */
+      public Builder mergeTcp(org.apache.mesos.Protos.HealthCheck.TCPCheckInfo value) {
+        if (tcpBuilder_ == null) {
+          if (((bitField0_ & 0x00000100) == 0x00000100) &&
+              tcp_ != org.apache.mesos.Protos.HealthCheck.TCPCheckInfo.getDefaultInstance()) {
+            tcp_ =
+              org.apache.mesos.Protos.HealthCheck.TCPCheckInfo.newBuilder(tcp_).mergeFrom(value).buildPartial();
+          } else {
+            tcp_ = value;
+          }
+          onChanged();
+        } else {
+          tcpBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000100;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.HealthCheck.TCPCheckInfo tcp = 9;</code>
+       *
+       * <pre>
+       * TCP health check.
+       * </pre>
+       */
+      public Builder clearTcp() {
+        if (tcpBuilder_ == null) {
+          tcp_ = org.apache.mesos.Protos.HealthCheck.TCPCheckInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          tcpBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000100);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.HealthCheck.TCPCheckInfo tcp = 9;</code>
+       *
+       * <pre>
+       * TCP health check.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.HealthCheck.TCPCheckInfo.Builder getTcpBuilder() {
+        bitField0_ |= 0x00000100;
+        onChanged();
+        return getTcpFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.HealthCheck.TCPCheckInfo tcp = 9;</code>
+       *
+       * <pre>
+       * TCP health check.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.HealthCheck.TCPCheckInfoOrBuilder getTcpOrBuilder() {
+        if (tcpBuilder_ != null) {
+          return tcpBuilder_.getMessageOrBuilder();
+        } else {
+          return tcp_;
+        }
+      }
+      /**
+       * <code>optional .mesos.HealthCheck.TCPCheckInfo tcp = 9;</code>
+       *
+       * <pre>
+       * TCP health check.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.HealthCheck.TCPCheckInfo, org.apache.mesos.Protos.HealthCheck.TCPCheckInfo.Builder, org.apache.mesos.Protos.HealthCheck.TCPCheckInfoOrBuilder> 
+          getTcpFieldBuilder() {
+        if (tcpBuilder_ == null) {
+          tcpBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.HealthCheck.TCPCheckInfo, org.apache.mesos.Protos.HealthCheck.TCPCheckInfo.Builder, org.apache.mesos.Protos.HealthCheck.TCPCheckInfoOrBuilder>(
+                  tcp_,
+                  getParentForChildren(),
+                  isClean());
+          tcp_ = null;
+        }
+        return tcpBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.HealthCheck)
+    }
+
+    static {
+      defaultInstance = new HealthCheck(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.HealthCheck)
+  }
+
+  public interface KillPolicyOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional .mesos.DurationInfo grace_period = 1;
+    /**
+     * <code>optional .mesos.DurationInfo grace_period = 1;</code>
+     *
+     * <pre>
+     * The grace period specifies how long to wait before forcibly
+     * killing the task. It is recommended to attempt to gracefully
+     * kill the task (and send TASK_KILLING) to indicate that the
+     * graceful kill is in progress. Once the grace period elapses,
+     * if the task has not terminated, a forcible kill should occur.
+     * The task should not assume that it will always be allotted
+     * the full grace period. For example, the executor may be
+     * shutdown more quickly by the agent, or failures / forcible
+     * terminations may occur.
+     * </pre>
+     */
+    boolean hasGracePeriod();
+    /**
+     * <code>optional .mesos.DurationInfo grace_period = 1;</code>
+     *
+     * <pre>
+     * The grace period specifies how long to wait before forcibly
+     * killing the task. It is recommended to attempt to gracefully
+     * kill the task (and send TASK_KILLING) to indicate that the
+     * graceful kill is in progress. Once the grace period elapses,
+     * if the task has not terminated, a forcible kill should occur.
+     * The task should not assume that it will always be allotted
+     * the full grace period. For example, the executor may be
+     * shutdown more quickly by the agent, or failures / forcible
+     * terminations may occur.
+     * </pre>
+     */
+    org.apache.mesos.Protos.DurationInfo getGracePeriod();
+    /**
+     * <code>optional .mesos.DurationInfo grace_period = 1;</code>
+     *
+     * <pre>
+     * The grace period specifies how long to wait before forcibly
+     * killing the task. It is recommended to attempt to gracefully
+     * kill the task (and send TASK_KILLING) to indicate that the
+     * graceful kill is in progress. Once the grace period elapses,
+     * if the task has not terminated, a forcible kill should occur.
+     * The task should not assume that it will always be allotted
+     * the full grace period. For example, the executor may be
+     * shutdown more quickly by the agent, or failures / forcible
+     * terminations may occur.
+     * </pre>
+     */
+    org.apache.mesos.Protos.DurationInfoOrBuilder getGracePeriodOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.KillPolicy}
+   *
+   * <pre>
+   **
+   * Describes a kill policy for a task. Currently does not express
+   * different policies (e.g. hitting HTTP endpoints), only controls
+   * how long to wait between graceful and forcible task kill:
+   *
+   *     graceful kill --------------&gt; forcible kill
+   *                    grace_period
+   *
+   * Kill policies are best-effort, because machine failures / forcible
+   * terminations may occur.
+   *
+   * NOTE: For executor-less command-based tasks, the kill is performed
+   * via sending a signal to the task process: SIGTERM for the graceful
+   * kill and SIGKILL for the forcible kill. For the docker executor-less
+   * tasks the grace period is passed to 'docker stop --time'.
+   * </pre>
+   */
+  public static final class KillPolicy extends
+      com.google.protobuf.GeneratedMessage
+      implements KillPolicyOrBuilder {
+    // Use KillPolicy.newBuilder() to construct.
+    private KillPolicy(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private KillPolicy(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final KillPolicy defaultInstance;
+    public static KillPolicy getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public KillPolicy getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private KillPolicy(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              org.apache.mesos.Protos.DurationInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                subBuilder = gracePeriod_.toBuilder();
+              }
+              gracePeriod_ = input.readMessage(org.apache.mesos.Protos.DurationInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(gracePeriod_);
+                gracePeriod_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_KillPolicy_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_KillPolicy_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.KillPolicy.class, org.apache.mesos.Protos.KillPolicy.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<KillPolicy> PARSER =
+        new com.google.protobuf.AbstractParser<KillPolicy>() {
+      public KillPolicy parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new KillPolicy(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<KillPolicy> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // optional .mesos.DurationInfo grace_period = 1;
+    public static final int GRACE_PERIOD_FIELD_NUMBER = 1;
+    private org.apache.mesos.Protos.DurationInfo gracePeriod_;
+    /**
+     * <code>optional .mesos.DurationInfo grace_period = 1;</code>
+     *
+     * <pre>
+     * The grace period specifies how long to wait before forcibly
+     * killing the task. It is recommended to attempt to gracefully
+     * kill the task (and send TASK_KILLING) to indicate that the
+     * graceful kill is in progress. Once the grace period elapses,
+     * if the task has not terminated, a forcible kill should occur.
+     * The task should not assume that it will always be allotted
+     * the full grace period. For example, the executor may be
+     * shutdown more quickly by the agent, or failures / forcible
+     * terminations may occur.
+     * </pre>
+     */
+    public boolean hasGracePeriod() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional .mesos.DurationInfo grace_period = 1;</code>
+     *
+     * <pre>
+     * The grace period specifies how long to wait before forcibly
+     * killing the task. It is recommended to attempt to gracefully
+     * kill the task (and send TASK_KILLING) to indicate that the
+     * graceful kill is in progress. Once the grace period elapses,
+     * if the task has not terminated, a forcible kill should occur.
+     * The task should not assume that it will always be allotted
+     * the full grace period. For example, the executor may be
+     * shutdown more quickly by the agent, or failures / forcible
+     * terminations may occur.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.DurationInfo getGracePeriod() {
+      return gracePeriod_;
+    }
+    /**
+     * <code>optional .mesos.DurationInfo grace_period = 1;</code>
+     *
+     * <pre>
+     * The grace period specifies how long to wait before forcibly
+     * killing the task. It is recommended to attempt to gracefully
+     * kill the task (and send TASK_KILLING) to indicate that the
+     * graceful kill is in progress. Once the grace period elapses,
+     * if the task has not terminated, a forcible kill should occur.
+     * The task should not assume that it will always be allotted
+     * the full grace period. For example, the executor may be
+     * shutdown more quickly by the agent, or failures / forcible
+     * terminations may occur.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.DurationInfoOrBuilder getGracePeriodOrBuilder() {
+      return gracePeriod_;
+    }
+
+    private void initFields() {
+      gracePeriod_ = org.apache.mesos.Protos.DurationInfo.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (hasGracePeriod()) {
+        if (!getGracePeriod().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeMessage(1, gracePeriod_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, gracePeriod_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.KillPolicy parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.KillPolicy parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.KillPolicy parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.KillPolicy parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.KillPolicy parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.KillPolicy parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.KillPolicy parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.KillPolicy parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.KillPolicy parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.KillPolicy parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.KillPolicy prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.KillPolicy}
+     *
+     * <pre>
+     **
+     * Describes a kill policy for a task. Currently does not express
+     * different policies (e.g. hitting HTTP endpoints), only controls
+     * how long to wait between graceful and forcible task kill:
+     *
+     *     graceful kill --------------&gt; forcible kill
+     *                    grace_period
+     *
+     * Kill policies are best-effort, because machine failures / forcible
+     * terminations may occur.
+     *
+     * NOTE: For executor-less command-based tasks, the kill is performed
+     * via sending a signal to the task process: SIGTERM for the graceful
+     * kill and SIGKILL for the forcible kill. For the docker executor-less
+     * tasks the grace period is passed to 'docker stop --time'.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.KillPolicyOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_KillPolicy_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_KillPolicy_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.KillPolicy.class, org.apache.mesos.Protos.KillPolicy.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.KillPolicy.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getGracePeriodFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (gracePeriodBuilder_ == null) {
+          gracePeriod_ = org.apache.mesos.Protos.DurationInfo.getDefaultInstance();
+        } else {
+          gracePeriodBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_KillPolicy_descriptor;
+      }
+
+      public org.apache.mesos.Protos.KillPolicy getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.KillPolicy.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.KillPolicy build() {
+        org.apache.mesos.Protos.KillPolicy result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.KillPolicy buildPartial() {
+        org.apache.mesos.Protos.KillPolicy result = new org.apache.mesos.Protos.KillPolicy(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        if (gracePeriodBuilder_ == null) {
+          result.gracePeriod_ = gracePeriod_;
+        } else {
+          result.gracePeriod_ = gracePeriodBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.KillPolicy) {
+          return mergeFrom((org.apache.mesos.Protos.KillPolicy)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.KillPolicy other) {
+        if (other == org.apache.mesos.Protos.KillPolicy.getDefaultInstance()) return this;
+        if (other.hasGracePeriod()) {
+          mergeGracePeriod(other.getGracePeriod());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (hasGracePeriod()) {
+          if (!getGracePeriod().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.KillPolicy parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.KillPolicy) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional .mesos.DurationInfo grace_period = 1;
+      private org.apache.mesos.Protos.DurationInfo gracePeriod_ = org.apache.mesos.Protos.DurationInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.DurationInfo, org.apache.mesos.Protos.DurationInfo.Builder, org.apache.mesos.Protos.DurationInfoOrBuilder> gracePeriodBuilder_;
+      /**
+       * <code>optional .mesos.DurationInfo grace_period = 1;</code>
+       *
+       * <pre>
+       * The grace period specifies how long to wait before forcibly
+       * killing the task. It is recommended to attempt to gracefully
+       * kill the task (and send TASK_KILLING) to indicate that the
+       * graceful kill is in progress. Once the grace period elapses,
+       * if the task has not terminated, a forcible kill should occur.
+       * The task should not assume that it will always be allotted
+       * the full grace period. For example, the executor may be
+       * shutdown more quickly by the agent, or failures / forcible
+       * terminations may occur.
+       * </pre>
+       */
+      public boolean hasGracePeriod() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.DurationInfo grace_period = 1;</code>
+       *
+       * <pre>
+       * The grace period specifies how long to wait before forcibly
+       * killing the task. It is recommended to attempt to gracefully
+       * kill the task (and send TASK_KILLING) to indicate that the
+       * graceful kill is in progress. Once the grace period elapses,
+       * if the task has not terminated, a forcible kill should occur.
+       * The task should not assume that it will always be allotted
+       * the full grace period. For example, the executor may be
+       * shutdown more quickly by the agent, or failures / forcible
+       * terminations may occur.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.DurationInfo getGracePeriod() {
+        if (gracePeriodBuilder_ == null) {
+          return gracePeriod_;
+        } else {
+          return gracePeriodBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.DurationInfo grace_period = 1;</code>
+       *
+       * <pre>
+       * The grace period specifies how long to wait before forcibly
+       * killing the task. It is recommended to attempt to gracefully
+       * kill the task (and send TASK_KILLING) to indicate that the
+       * graceful kill is in progress. Once the grace period elapses,
+       * if the task has not terminated, a forcible kill should occur.
+       * The task should not assume that it will always be allotted
+       * the full grace period. For example, the executor may be
+       * shutdown more quickly by the agent, or failures / forcible
+       * terminations may occur.
+       * </pre>
+       */
+      public Builder setGracePeriod(org.apache.mesos.Protos.DurationInfo value) {
+        if (gracePeriodBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          gracePeriod_ = value;
+          onChanged();
+        } else {
+          gracePeriodBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.DurationInfo grace_period = 1;</code>
+       *
+       * <pre>
+       * The grace period specifies how long to wait before forcibly
+       * killing the task. It is recommended to attempt to gracefully
+       * kill the task (and send TASK_KILLING) to indicate that the
+       * graceful kill is in progress. Once the grace period elapses,
+       * if the task has not terminated, a forcible kill should occur.
+       * The task should not assume that it will always be allotted
+       * the full grace period. For example, the executor may be
+       * shutdown more quickly by the agent, or failures / forcible
+       * terminations may occur.
+       * </pre>
+       */
+      public Builder setGracePeriod(
+          org.apache.mesos.Protos.DurationInfo.Builder builderForValue) {
+        if (gracePeriodBuilder_ == null) {
+          gracePeriod_ = builderForValue.build();
+          onChanged();
+        } else {
+          gracePeriodBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.DurationInfo grace_period = 1;</code>
+       *
+       * <pre>
+       * The grace period specifies how long to wait before forcibly
+       * killing the task. It is recommended to attempt to gracefully
+       * kill the task (and send TASK_KILLING) to indicate that the
+       * graceful kill is in progress. Once the grace period elapses,
+       * if the task has not terminated, a forcible kill should occur.
+       * The task should not assume that it will always be allotted
+       * the full grace period. For example, the executor may be
+       * shutdown more quickly by the agent, or failures / forcible
+       * terminations may occur.
+       * </pre>
+       */
+      public Builder mergeGracePeriod(org.apache.mesos.Protos.DurationInfo value) {
+        if (gracePeriodBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001) &&
+              gracePeriod_ != org.apache.mesos.Protos.DurationInfo.getDefaultInstance()) {
+            gracePeriod_ =
+              org.apache.mesos.Protos.DurationInfo.newBuilder(gracePeriod_).mergeFrom(value).buildPartial();
+          } else {
+            gracePeriod_ = value;
+          }
+          onChanged();
+        } else {
+          gracePeriodBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.DurationInfo grace_period = 1;</code>
+       *
+       * <pre>
+       * The grace period specifies how long to wait before forcibly
+       * killing the task. It is recommended to attempt to gracefully
+       * kill the task (and send TASK_KILLING) to indicate that the
+       * graceful kill is in progress. Once the grace period elapses,
+       * if the task has not terminated, a forcible kill should occur.
+       * The task should not assume that it will always be allotted
+       * the full grace period. For example, the executor may be
+       * shutdown more quickly by the agent, or failures / forcible
+       * terminations may occur.
+       * </pre>
+       */
+      public Builder clearGracePeriod() {
+        if (gracePeriodBuilder_ == null) {
+          gracePeriod_ = org.apache.mesos.Protos.DurationInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          gracePeriodBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.DurationInfo grace_period = 1;</code>
+       *
+       * <pre>
+       * The grace period specifies how long to wait before forcibly
+       * killing the task. It is recommended to attempt to gracefully
+       * kill the task (and send TASK_KILLING) to indicate that the
+       * graceful kill is in progress. Once the grace period elapses,
+       * if the task has not terminated, a forcible kill should occur.
+       * The task should not assume that it will always be allotted
+       * the full grace period. For example, the executor may be
+       * shutdown more quickly by the agent, or failures / forcible
+       * terminations may occur.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.DurationInfo.Builder getGracePeriodBuilder() {
+        bitField0_ |= 0x00000001;
+        onChanged();
+        return getGracePeriodFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.DurationInfo grace_period = 1;</code>
+       *
+       * <pre>
+       * The grace period specifies how long to wait before forcibly
+       * killing the task. It is recommended to attempt to gracefully
+       * kill the task (and send TASK_KILLING) to indicate that the
+       * graceful kill is in progress. Once the grace period elapses,
+       * if the task has not terminated, a forcible kill should occur.
+       * The task should not assume that it will always be allotted
+       * the full grace period. For example, the executor may be
+       * shutdown more quickly by the agent, or failures / forcible
+       * terminations may occur.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.DurationInfoOrBuilder getGracePeriodOrBuilder() {
+        if (gracePeriodBuilder_ != null) {
+          return gracePeriodBuilder_.getMessageOrBuilder();
+        } else {
+          return gracePeriod_;
+        }
+      }
+      /**
+       * <code>optional .mesos.DurationInfo grace_period = 1;</code>
+       *
+       * <pre>
+       * The grace period specifies how long to wait before forcibly
+       * killing the task. It is recommended to attempt to gracefully
+       * kill the task (and send TASK_KILLING) to indicate that the
+       * graceful kill is in progress. Once the grace period elapses,
+       * if the task has not terminated, a forcible kill should occur.
+       * The task should not assume that it will always be allotted
+       * the full grace period. For example, the executor may be
+       * shutdown more quickly by the agent, or failures / forcible
+       * terminations may occur.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.DurationInfo, org.apache.mesos.Protos.DurationInfo.Builder, org.apache.mesos.Protos.DurationInfoOrBuilder> 
+          getGracePeriodFieldBuilder() {
+        if (gracePeriodBuilder_ == null) {
+          gracePeriodBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.DurationInfo, org.apache.mesos.Protos.DurationInfo.Builder, org.apache.mesos.Protos.DurationInfoOrBuilder>(
+                  gracePeriod_,
+                  getParentForChildren(),
+                  isClean());
+          gracePeriod_ = null;
+        }
+        return gracePeriodBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.KillPolicy)
+    }
+
+    static {
+      defaultInstance = new KillPolicy(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.KillPolicy)
+  }
+
+  public interface CommandInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // repeated .mesos.CommandInfo.URI uris = 1;
+    /**
+     * <code>repeated .mesos.CommandInfo.URI uris = 1;</code>
+     */
+    java.util.List<org.apache.mesos.Protos.CommandInfo.URI> 
+        getUrisList();
+    /**
+     * <code>repeated .mesos.CommandInfo.URI uris = 1;</code>
+     */
+    org.apache.mesos.Protos.CommandInfo.URI getUris(int index);
+    /**
+     * <code>repeated .mesos.CommandInfo.URI uris = 1;</code>
+     */
+    int getUrisCount();
+    /**
+     * <code>repeated .mesos.CommandInfo.URI uris = 1;</code>
+     */
+    java.util.List<? extends org.apache.mesos.Protos.CommandInfo.URIOrBuilder> 
+        getUrisOrBuilderList();
+    /**
+     * <code>repeated .mesos.CommandInfo.URI uris = 1;</code>
+     */
+    org.apache.mesos.Protos.CommandInfo.URIOrBuilder getUrisOrBuilder(
+        int index);
+
+    // optional .mesos.Environment environment = 2;
+    /**
+     * <code>optional .mesos.Environment environment = 2;</code>
+     */
+    boolean hasEnvironment();
+    /**
+     * <code>optional .mesos.Environment environment = 2;</code>
+     */
+    org.apache.mesos.Protos.Environment getEnvironment();
+    /**
+     * <code>optional .mesos.Environment environment = 2;</code>
+     */
+    org.apache.mesos.Protos.EnvironmentOrBuilder getEnvironmentOrBuilder();
+
+    // optional bool shell = 6 [default = true];
+    /**
+     * <code>optional bool shell = 6 [default = true];</code>
+     *
+     * <pre>
+     * There are two ways to specify the command:
+     * 1) If 'shell == true', the command will be launched via shell
+     *		(i.e., /bin/sh -c 'value'). The 'value' specified will be
+     *		treated as the shell command. The 'arguments' will be ignored.
+     * 2) If 'shell == false', the command will be launched by passing
+     *		arguments to an executable. The 'value' specified will be
+     *		treated as the filename of the executable. The 'arguments'
+     *		will be treated as the arguments to the executable. This is
+     *		similar to how POSIX exec families launch processes (i.e.,
+     *		execlp(value, arguments(0), arguments(1), ...)).
+     * NOTE: The field 'value' is changed from 'required' to 'optional'
+     * in 0.20.0. It will only cause issues if a new framework is
+     * connecting to an old master.
+     * </pre>
+     */
+    boolean hasShell();
+    /**
+     * <code>optional bool shell = 6 [default = true];</code>
+     *
+     * <pre>
+     * There are two ways to specify the command:
+     * 1) If 'shell == true', the command will be launched via shell
+     *		(i.e., /bin/sh -c 'value'). The 'value' specified will be
+     *		treated as the shell command. The 'arguments' will be ignored.
+     * 2) If 'shell == false', the command will be launched by passing
+     *		arguments to an executable. The 'value' specified will be
+     *		treated as the filename of the executable. The 'arguments'
+     *		will be treated as the arguments to the executable. This is
+     *		similar to how POSIX exec families launch processes (i.e.,
+     *		execlp(value, arguments(0), arguments(1), ...)).
+     * NOTE: The field 'value' is changed from 'required' to 'optional'
+     * in 0.20.0. It will only cause issues if a new framework is
+     * connecting to an old master.
+     * </pre>
+     */
+    boolean getShell();
+
+    // optional string value = 3;
+    /**
+     * <code>optional string value = 3;</code>
+     */
+    boolean hasValue();
+    /**
+     * <code>optional string value = 3;</code>
+     */
+    java.lang.String getValue();
+    /**
+     * <code>optional string value = 3;</code>
+     */
+    com.google.protobuf.ByteString
+        getValueBytes();
+
+    // repeated string arguments = 7;
+    /**
+     * <code>repeated string arguments = 7;</code>
+     */
+    java.util.List<java.lang.String>
+    getArgumentsList();
+    /**
+     * <code>repeated string arguments = 7;</code>
+     */
+    int getArgumentsCount();
+    /**
+     * <code>repeated string arguments = 7;</code>
+     */
+    java.lang.String getArguments(int index);
+    /**
+     * <code>repeated string arguments = 7;</code>
+     */
+    com.google.protobuf.ByteString
+        getArgumentsBytes(int index);
+
+    // optional string user = 5;
+    /**
+     * <code>optional string user = 5;</code>
+     *
+     * <pre>
+     * Enables executor and tasks to run as a specific user. If the user
+     * field is present both in FrameworkInfo and here, the CommandInfo
+     * user value takes precedence.
+     * </pre>
+     */
+    boolean hasUser();
+    /**
+     * <code>optional string user = 5;</code>
+     *
+     * <pre>
+     * Enables executor and tasks to run as a specific user. If the user
+     * field is present both in FrameworkInfo and here, the CommandInfo
+     * user value takes precedence.
+     * </pre>
+     */
+    java.lang.String getUser();
+    /**
+     * <code>optional string user = 5;</code>
+     *
+     * <pre>
+     * Enables executor and tasks to run as a specific user. If the user
+     * field is present both in FrameworkInfo and here, the CommandInfo
+     * user value takes precedence.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getUserBytes();
+  }
+  /**
+   * Protobuf type {@code mesos.CommandInfo}
+   *
+   * <pre>
+   **
+   * Describes a command, executed via: '/bin/sh -c value'. Any URIs specified
+   * are fetched before executing the command.  If the executable field for an
+   * uri is set, executable file permission is set on the downloaded file.
+   * Otherwise, if the downloaded file has a recognized archive extension
+   * (currently [compressed] tar and zip) it is extracted into the executor's
+   * working directory. This extraction can be disabled by setting `extract` to
+   * false. In addition, any environment variables are set before executing
+   * the command (so they can be used to "parameterize" your command).
+   * </pre>
+   */
+  public static final class CommandInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements CommandInfoOrBuilder {
+    // Use CommandInfo.newBuilder() to construct.
+    private CommandInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private CommandInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final CommandInfo defaultInstance;
+    public static CommandInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public CommandInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private CommandInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                uris_ = new java.util.ArrayList<org.apache.mesos.Protos.CommandInfo.URI>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              uris_.add(input.readMessage(org.apache.mesos.Protos.CommandInfo.URI.PARSER, extensionRegistry));
+              break;
+            }
+            case 18: {
+              org.apache.mesos.Protos.Environment.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                subBuilder = environment_.toBuilder();
+              }
+              environment_ = input.readMessage(org.apache.mesos.Protos.Environment.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(environment_);
+                environment_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+            case 26: {
+              bitField0_ |= 0x00000004;
+              value_ = input.readBytes();
+              break;
+            }
+            case 42: {
+              bitField0_ |= 0x00000008;
+              user_ = input.readBytes();
+              break;
+            }
+            case 48: {
+              bitField0_ |= 0x00000002;
+              shell_ = input.readBool();
+              break;
+            }
+            case 58: {
+              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
+                arguments_ = new com.google.protobuf.LazyStringArrayList();
+                mutable_bitField0_ |= 0x00000010;
+              }
+              arguments_.add(input.readBytes());
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+          uris_ = java.util.Collections.unmodifiableList(uris_);
+        }
+        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
+          arguments_ = new com.google.protobuf.UnmodifiableLazyStringList(arguments_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_CommandInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_CommandInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.CommandInfo.class, org.apache.mesos.Protos.CommandInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<CommandInfo> PARSER =
+        new com.google.protobuf.AbstractParser<CommandInfo>() {
+      public CommandInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new CommandInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<CommandInfo> getParserForType() {
+      return PARSER;
+    }
+
+    public interface URIOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required string value = 1;
+      /**
+       * <code>required string value = 1;</code>
+       */
+      boolean hasValue();
+      /**
+       * <code>required string value = 1;</code>
+       */
+      java.lang.String getValue();
+      /**
+       * <code>required string value = 1;</code>
+       */
+      com.google.protobuf.ByteString
+          getValueBytes();
+
+      // optional bool executable = 2;
+      /**
+       * <code>optional bool executable = 2;</code>
+       */
+      boolean hasExecutable();
+      /**
+       * <code>optional bool executable = 2;</code>
+       */
+      boolean getExecutable();
+
+      // optional bool extract = 3 [default = true];
+      /**
+       * <code>optional bool extract = 3 [default = true];</code>
+       *
+       * <pre>
+       * In case the fetched file is recognized as an archive, extract
+       * its contents into the sandbox. Note that a cached archive is
+       * not copied from the cache to the sandbox in case extraction
+       * originates from an archive in the cache.
+       * </pre>
+       */
+      boolean hasExtract();
+      /**
+       * <code>optional bool extract = 3 [default = true];</code>
+       *
+       * <pre>
+       * In case the fetched file is recognized as an archive, extract
+       * its contents into the sandbox. Note that a cached archive is
+       * not copied from the cache to the sandbox in case extraction
+       * originates from an archive in the cache.
+       * </pre>
+       */
+      boolean getExtract();
+
+      // optional bool cache = 4;
+      /**
+       * <code>optional bool cache = 4;</code>
+       *
+       * <pre>
+       * If this field is "true", the fetcher cache will be used. If not,
+       * fetching bypasses the cache and downloads directly into the
+       * sandbox directory, no matter whether a suitable cache file is
+       * available or not. The former directs the fetcher to download to
+       * the file cache, then copy from there to the sandbox. Subsequent
+       * fetch attempts with the same URI will omit downloading and copy
+       * from the cache as long as the file is resident there. Cache files
+       * may get evicted at any time, which then leads to renewed
+       * downloading. See also "docs/fetcher.md" and
+       * "docs/fetcher-cache-internals.md".
+       * </pre>
+       */
+      boolean hasCache();
+      /**
+       * <code>optional bool cache = 4;</code>
+       *
+       * <pre>
+       * If this field is "true", the fetcher cache will be used. If not,
+       * fetching bypasses the cache and downloads directly into the
+       * sandbox directory, no matter whether a suitable cache file is
+       * available or not. The former directs the fetcher to download to
+       * the file cache, then copy from there to the sandbox. Subsequent
+       * fetch attempts with the same URI will omit downloading and copy
+       * from the cache as long as the file is resident there. Cache files
+       * may get evicted at any time, which then leads to renewed
+       * downloading. See also "docs/fetcher.md" and
+       * "docs/fetcher-cache-internals.md".
+       * </pre>
+       */
+      boolean getCache();
+
+      // optional string output_file = 5;
+      /**
+       * <code>optional string output_file = 5;</code>
+       *
+       * <pre>
+       * The fetcher's default behavior is to use the URI string's basename to
+       * name the local copy. If this field is provided, the local copy will be
+       * named with its value instead. If there is a directory component (which
+       * must be a relative path), the local copy will be stored in that
+       * subdirectory inside the sandbox.
+       * </pre>
+       */
+      boolean hasOutputFile();
+      /**
+       * <code>optional string output_file = 5;</code>
+       *
+       * <pre>
+       * The fetcher's default behavior is to use the URI string's basename to
+       * name the local copy. If this field is provided, the local copy will be
+       * named with its value instead. If there is a directory component (which
+       * must be a relative path), the local copy will be stored in that
+       * subdirectory inside the sandbox.
+       * </pre>
+       */
+      java.lang.String getOutputFile();
+      /**
+       * <code>optional string output_file = 5;</code>
+       *
+       * <pre>
+       * The fetcher's default behavior is to use the URI string's basename to
+       * name the local copy. If this field is provided, the local copy will be
+       * named with its value instead. If there is a directory component (which
+       * must be a relative path), the local copy will be stored in that
+       * subdirectory inside the sandbox.
+       * </pre>
+       */
+      com.google.protobuf.ByteString
+          getOutputFileBytes();
+    }
+    /**
+     * Protobuf type {@code mesos.CommandInfo.URI}
+     */
+    public static final class URI extends
+        com.google.protobuf.GeneratedMessage
+        implements URIOrBuilder {
+      // Use URI.newBuilder() to construct.
+      private URI(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private URI(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final URI defaultInstance;
+      public static URI getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public URI getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private URI(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                bitField0_ |= 0x00000001;
+                value_ = input.readBytes();
+                break;
+              }
+              case 16: {
+                bitField0_ |= 0x00000002;
+                executable_ = input.readBool();
+                break;
+              }
+              case 24: {
+                bitField0_ |= 0x00000004;
+                extract_ = input.readBool();
+                break;
+              }
+              case 32: {
+                bitField0_ |= 0x00000008;
+                cache_ = input.readBool();
+                break;
+              }
+              case 42: {
+                bitField0_ |= 0x00000010;
+                outputFile_ = input.readBytes();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_CommandInfo_URI_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_CommandInfo_URI_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.CommandInfo.URI.class, org.apache.mesos.Protos.CommandInfo.URI.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<URI> PARSER =
+          new com.google.protobuf.AbstractParser<URI>() {
+        public URI parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new URI(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<URI> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required string value = 1;
+      public static final int VALUE_FIELD_NUMBER = 1;
+      private java.lang.Object value_;
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public boolean hasValue() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public java.lang.String getValue() {
+        java.lang.Object ref = value_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            value_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getValueBytes() {
+        java.lang.Object ref = value_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          value_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      // optional bool executable = 2;
+      public static final int EXECUTABLE_FIELD_NUMBER = 2;
+      private boolean executable_;
+      /**
+       * <code>optional bool executable = 2;</code>
+       */
+      public boolean hasExecutable() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional bool executable = 2;</code>
+       */
+      public boolean getExecutable() {
+        return executable_;
+      }
+
+      // optional bool extract = 3 [default = true];
+      public static final int EXTRACT_FIELD_NUMBER = 3;
+      private boolean extract_;
+      /**
+       * <code>optional bool extract = 3 [default = true];</code>
+       *
+       * <pre>
+       * In case the fetched file is recognized as an archive, extract
+       * its contents into the sandbox. Note that a cached archive is
+       * not copied from the cache to the sandbox in case extraction
+       * originates from an archive in the cache.
+       * </pre>
+       */
+      public boolean hasExtract() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional bool extract = 3 [default = true];</code>
+       *
+       * <pre>
+       * In case the fetched file is recognized as an archive, extract
+       * its contents into the sandbox. Note that a cached archive is
+       * not copied from the cache to the sandbox in case extraction
+       * originates from an archive in the cache.
+       * </pre>
+       */
+      public boolean getExtract() {
+        return extract_;
+      }
+
+      // optional bool cache = 4;
+      public static final int CACHE_FIELD_NUMBER = 4;
+      private boolean cache_;
+      /**
+       * <code>optional bool cache = 4;</code>
+       *
+       * <pre>
+       * If this field is "true", the fetcher cache will be used. If not,
+       * fetching bypasses the cache and downloads directly into the
+       * sandbox directory, no matter whether a suitable cache file is
+       * available or not. The former directs the fetcher to download to
+       * the file cache, then copy from there to the sandbox. Subsequent
+       * fetch attempts with the same URI will omit downloading and copy
+       * from the cache as long as the file is resident there. Cache files
+       * may get evicted at any time, which then leads to renewed
+       * downloading. See also "docs/fetcher.md" and
+       * "docs/fetcher-cache-internals.md".
+       * </pre>
+       */
+      public boolean hasCache() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional bool cache = 4;</code>
+       *
+       * <pre>
+       * If this field is "true", the fetcher cache will be used. If not,
+       * fetching bypasses the cache and downloads directly into the
+       * sandbox directory, no matter whether a suitable cache file is
+       * available or not. The former directs the fetcher to download to
+       * the file cache, then copy from there to the sandbox. Subsequent
+       * fetch attempts with the same URI will omit downloading and copy
+       * from the cache as long as the file is resident there. Cache files
+       * may get evicted at any time, which then leads to renewed
+       * downloading. See also "docs/fetcher.md" and
+       * "docs/fetcher-cache-internals.md".
+       * </pre>
+       */
+      public boolean getCache() {
+        return cache_;
+      }
+
+      // optional string output_file = 5;
+      public static final int OUTPUT_FILE_FIELD_NUMBER = 5;
+      private java.lang.Object outputFile_;
+      /**
+       * <code>optional string output_file = 5;</code>
+       *
+       * <pre>
+       * The fetcher's default behavior is to use the URI string's basename to
+       * name the local copy. If this field is provided, the local copy will be
+       * named with its value instead. If there is a directory component (which
+       * must be a relative path), the local copy will be stored in that
+       * subdirectory inside the sandbox.
+       * </pre>
+       */
+      public boolean hasOutputFile() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional string output_file = 5;</code>
+       *
+       * <pre>
+       * The fetcher's default behavior is to use the URI string's basename to
+       * name the local copy. If this field is provided, the local copy will be
+       * named with its value instead. If there is a directory component (which
+       * must be a relative path), the local copy will be stored in that
+       * subdirectory inside the sandbox.
+       * </pre>
+       */
+      public java.lang.String getOutputFile() {
+        java.lang.Object ref = outputFile_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            outputFile_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>optional string output_file = 5;</code>
+       *
+       * <pre>
+       * The fetcher's default behavior is to use the URI string's basename to
+       * name the local copy. If this field is provided, the local copy will be
+       * named with its value instead. If there is a directory component (which
+       * must be a relative path), the local copy will be stored in that
+       * subdirectory inside the sandbox.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getOutputFileBytes() {
+        java.lang.Object ref = outputFile_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          outputFile_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      private void initFields() {
+        value_ = "";
+        executable_ = false;
+        extract_ = true;
+        cache_ = false;
+        outputFile_ = "";
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasValue()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeBytes(1, getValueBytes());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeBool(2, executable_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeBool(3, extract_);
+        }
+        if (((bitField0_ & 0x00000008) == 0x00000008)) {
+          output.writeBool(4, cache_);
+        }
+        if (((bitField0_ & 0x00000010) == 0x00000010)) {
+          output.writeBytes(5, getOutputFileBytes());
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(1, getValueBytes());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBoolSize(2, executable_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBoolSize(3, extract_);
+        }
+        if (((bitField0_ & 0x00000008) == 0x00000008)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBoolSize(4, cache_);
+        }
+        if (((bitField0_ & 0x00000010) == 0x00000010)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(5, getOutputFileBytes());
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.Protos.CommandInfo.URI parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.CommandInfo.URI parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.CommandInfo.URI parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.CommandInfo.URI parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.CommandInfo.URI parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.CommandInfo.URI parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.CommandInfo.URI parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.Protos.CommandInfo.URI parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.CommandInfo.URI parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.CommandInfo.URI parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.Protos.CommandInfo.URI prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.CommandInfo.URI}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.Protos.CommandInfo.URIOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_CommandInfo_URI_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_CommandInfo_URI_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.CommandInfo.URI.class, org.apache.mesos.Protos.CommandInfo.URI.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.Protos.CommandInfo.URI.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          value_ = "";
+          bitField0_ = (bitField0_ & ~0x00000001);
+          executable_ = false;
+          bitField0_ = (bitField0_ & ~0x00000002);
+          extract_ = true;
+          bitField0_ = (bitField0_ & ~0x00000004);
+          cache_ = false;
+          bitField0_ = (bitField0_ & ~0x00000008);
+          outputFile_ = "";
+          bitField0_ = (bitField0_ & ~0x00000010);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.Protos.internal_static_mesos_CommandInfo_URI_descriptor;
+        }
+
+        public org.apache.mesos.Protos.CommandInfo.URI getDefaultInstanceForType() {
+          return org.apache.mesos.Protos.CommandInfo.URI.getDefaultInstance();
+        }
+
+        public org.apache.mesos.Protos.CommandInfo.URI build() {
+          org.apache.mesos.Protos.CommandInfo.URI result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.Protos.CommandInfo.URI buildPartial() {
+          org.apache.mesos.Protos.CommandInfo.URI result = new org.apache.mesos.Protos.CommandInfo.URI(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.value_ = value_;
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          result.executable_ = executable_;
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          result.extract_ = extract_;
+          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+            to_bitField0_ |= 0x00000008;
+          }
+          result.cache_ = cache_;
+          if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+            to_bitField0_ |= 0x00000010;
+          }
+          result.outputFile_ = outputFile_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.Protos.CommandInfo.URI) {
+            return mergeFrom((org.apache.mesos.Protos.CommandInfo.URI)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.Protos.CommandInfo.URI other) {
+          if (other == org.apache.mesos.Protos.CommandInfo.URI.getDefaultInstance()) return this;
+          if (other.hasValue()) {
+            bitField0_ |= 0x00000001;
+            value_ = other.value_;
+            onChanged();
+          }
+          if (other.hasExecutable()) {
+            setExecutable(other.getExecutable());
+          }
+          if (other.hasExtract()) {
+            setExtract(other.getExtract());
+          }
+          if (other.hasCache()) {
+            setCache(other.getCache());
+          }
+          if (other.hasOutputFile()) {
+            bitField0_ |= 0x00000010;
+            outputFile_ = other.outputFile_;
+            onChanged();
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasValue()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.Protos.CommandInfo.URI parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.Protos.CommandInfo.URI) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required string value = 1;
+        private java.lang.Object value_ = "";
+        /**
+         * <code>required string value = 1;</code>
+         */
+        public boolean hasValue() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required string value = 1;</code>
+         */
+        public java.lang.String getValue() {
+          java.lang.Object ref = value_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            value_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>required string value = 1;</code>
+         */
+        public com.google.protobuf.ByteString
+            getValueBytes() {
+          java.lang.Object ref = value_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            value_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>required string value = 1;</code>
+         */
+        public Builder setValue(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          value_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required string value = 1;</code>
+         */
+        public Builder clearValue() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          value_ = getDefaultInstance().getValue();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required string value = 1;</code>
+         */
+        public Builder setValueBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          value_ = value;
+          onChanged();
+          return this;
+        }
+
+        // optional bool executable = 2;
+        private boolean executable_ ;
+        /**
+         * <code>optional bool executable = 2;</code>
+         */
+        public boolean hasExecutable() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional bool executable = 2;</code>
+         */
+        public boolean getExecutable() {
+          return executable_;
+        }
+        /**
+         * <code>optional bool executable = 2;</code>
+         */
+        public Builder setExecutable(boolean value) {
+          bitField0_ |= 0x00000002;
+          executable_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional bool executable = 2;</code>
+         */
+        public Builder clearExecutable() {
+          bitField0_ = (bitField0_ & ~0x00000002);
+          executable_ = false;
+          onChanged();
+          return this;
+        }
+
+        // optional bool extract = 3 [default = true];
+        private boolean extract_ = true;
+        /**
+         * <code>optional bool extract = 3 [default = true];</code>
+         *
+         * <pre>
+         * In case the fetched file is recognized as an archive, extract
+         * its contents into the sandbox. Note that a cached archive is
+         * not copied from the cache to the sandbox in case extraction
+         * originates from an archive in the cache.
+         * </pre>
+         */
+        public boolean hasExtract() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional bool extract = 3 [default = true];</code>
+         *
+         * <pre>
+         * In case the fetched file is recognized as an archive, extract
+         * its contents into the sandbox. Note that a cached archive is
+         * not copied from the cache to the sandbox in case extraction
+         * originates from an archive in the cache.
+         * </pre>
+         */
+        public boolean getExtract() {
+          return extract_;
+        }
+        /**
+         * <code>optional bool extract = 3 [default = true];</code>
+         *
+         * <pre>
+         * In case the fetched file is recognized as an archive, extract
+         * its contents into the sandbox. Note that a cached archive is
+         * not copied from the cache to the sandbox in case extraction
+         * originates from an archive in the cache.
+         * </pre>
+         */
+        public Builder setExtract(boolean value) {
+          bitField0_ |= 0x00000004;
+          extract_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional bool extract = 3 [default = true];</code>
+         *
+         * <pre>
+         * In case the fetched file is recognized as an archive, extract
+         * its contents into the sandbox. Note that a cached archive is
+         * not copied from the cache to the sandbox in case extraction
+         * originates from an archive in the cache.
+         * </pre>
+         */
+        public Builder clearExtract() {
+          bitField0_ = (bitField0_ & ~0x00000004);
+          extract_ = true;
+          onChanged();
+          return this;
+        }
+
+        // optional bool cache = 4;
+        private boolean cache_ ;
+        /**
+         * <code>optional bool cache = 4;</code>
+         *
+         * <pre>
+         * If this field is "true", the fetcher cache will be used. If not,
+         * fetching bypasses the cache and downloads directly into the
+         * sandbox directory, no matter whether a suitable cache file is
+         * available or not. The former directs the fetcher to download to
+         * the file cache, then copy from there to the sandbox. Subsequent
+         * fetch attempts with the same URI will omit downloading and copy
+         * from the cache as long as the file is resident there. Cache files
+         * may get evicted at any time, which then leads to renewed
+         * downloading. See also "docs/fetcher.md" and
+         * "docs/fetcher-cache-internals.md".
+         * </pre>
+         */
+        public boolean hasCache() {
+          return ((bitField0_ & 0x00000008) == 0x00000008);
+        }
+        /**
+         * <code>optional bool cache = 4;</code>
+         *
+         * <pre>
+         * If this field is "true", the fetcher cache will be used. If not,
+         * fetching bypasses the cache and downloads directly into the
+         * sandbox directory, no matter whether a suitable cache file is
+         * available or not. The former directs the fetcher to download to
+         * the file cache, then copy from there to the sandbox. Subsequent
+         * fetch attempts with the same URI will omit downloading and copy
+         * from the cache as long as the file is resident there. Cache files
+         * may get evicted at any time, which then leads to renewed
+         * downloading. See also "docs/fetcher.md" and
+         * "docs/fetcher-cache-internals.md".
+         * </pre>
+         */
+        public boolean getCache() {
+          return cache_;
+        }
+        /**
+         * <code>optional bool cache = 4;</code>
+         *
+         * <pre>
+         * If this field is "true", the fetcher cache will be used. If not,
+         * fetching bypasses the cache and downloads directly into the
+         * sandbox directory, no matter whether a suitable cache file is
+         * available or not. The former directs the fetcher to download to
+         * the file cache, then copy from there to the sandbox. Subsequent
+         * fetch attempts with the same URI will omit downloading and copy
+         * from the cache as long as the file is resident there. Cache files
+         * may get evicted at any time, which then leads to renewed
+         * downloading. See also "docs/fetcher.md" and
+         * "docs/fetcher-cache-internals.md".
+         * </pre>
+         */
+        public Builder setCache(boolean value) {
+          bitField0_ |= 0x00000008;
+          cache_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional bool cache = 4;</code>
+         *
+         * <pre>
+         * If this field is "true", the fetcher cache will be used. If not,
+         * fetching bypasses the cache and downloads directly into the
+         * sandbox directory, no matter whether a suitable cache file is
+         * available or not. The former directs the fetcher to download to
+         * the file cache, then copy from there to the sandbox. Subsequent
+         * fetch attempts with the same URI will omit downloading and copy
+         * from the cache as long as the file is resident there. Cache files
+         * may get evicted at any time, which then leads to renewed
+         * downloading. See also "docs/fetcher.md" and
+         * "docs/fetcher-cache-internals.md".
+         * </pre>
+         */
+        public Builder clearCache() {
+          bitField0_ = (bitField0_ & ~0x00000008);
+          cache_ = false;
+          onChanged();
+          return this;
+        }
+
+        // optional string output_file = 5;
+        private java.lang.Object outputFile_ = "";
+        /**
+         * <code>optional string output_file = 5;</code>
+         *
+         * <pre>
+         * The fetcher's default behavior is to use the URI string's basename to
+         * name the local copy. If this field is provided, the local copy will be
+         * named with its value instead. If there is a directory component (which
+         * must be a relative path), the local copy will be stored in that
+         * subdirectory inside the sandbox.
+         * </pre>
+         */
+        public boolean hasOutputFile() {
+          return ((bitField0_ & 0x00000010) == 0x00000010);
+        }
+        /**
+         * <code>optional string output_file = 5;</code>
+         *
+         * <pre>
+         * The fetcher's default behavior is to use the URI string's basename to
+         * name the local copy. If this field is provided, the local copy will be
+         * named with its value instead. If there is a directory component (which
+         * must be a relative path), the local copy will be stored in that
+         * subdirectory inside the sandbox.
+         * </pre>
+         */
+        public java.lang.String getOutputFile() {
+          java.lang.Object ref = outputFile_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            outputFile_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>optional string output_file = 5;</code>
+         *
+         * <pre>
+         * The fetcher's default behavior is to use the URI string's basename to
+         * name the local copy. If this field is provided, the local copy will be
+         * named with its value instead. If there is a directory component (which
+         * must be a relative path), the local copy will be stored in that
+         * subdirectory inside the sandbox.
+         * </pre>
+         */
+        public com.google.protobuf.ByteString
+            getOutputFileBytes() {
+          java.lang.Object ref = outputFile_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            outputFile_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>optional string output_file = 5;</code>
+         *
+         * <pre>
+         * The fetcher's default behavior is to use the URI string's basename to
+         * name the local copy. If this field is provided, the local copy will be
+         * named with its value instead. If there is a directory component (which
+         * must be a relative path), the local copy will be stored in that
+         * subdirectory inside the sandbox.
+         * </pre>
+         */
+        public Builder setOutputFile(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000010;
+          outputFile_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string output_file = 5;</code>
+         *
+         * <pre>
+         * The fetcher's default behavior is to use the URI string's basename to
+         * name the local copy. If this field is provided, the local copy will be
+         * named with its value instead. If there is a directory component (which
+         * must be a relative path), the local copy will be stored in that
+         * subdirectory inside the sandbox.
+         * </pre>
+         */
+        public Builder clearOutputFile() {
+          bitField0_ = (bitField0_ & ~0x00000010);
+          outputFile_ = getDefaultInstance().getOutputFile();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string output_file = 5;</code>
+         *
+         * <pre>
+         * The fetcher's default behavior is to use the URI string's basename to
+         * name the local copy. If this field is provided, the local copy will be
+         * named with its value instead. If there is a directory component (which
+         * must be a relative path), the local copy will be stored in that
+         * subdirectory inside the sandbox.
+         * </pre>
+         */
+        public Builder setOutputFileBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000010;
+          outputFile_ = value;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.CommandInfo.URI)
+      }
+
+      static {
+        defaultInstance = new URI(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.CommandInfo.URI)
+    }
+
+    private int bitField0_;
+    // repeated .mesos.CommandInfo.URI uris = 1;
+    public static final int URIS_FIELD_NUMBER = 1;
+    private java.util.List<org.apache.mesos.Protos.CommandInfo.URI> uris_;
+    /**
+     * <code>repeated .mesos.CommandInfo.URI uris = 1;</code>
+     */
+    public java.util.List<org.apache.mesos.Protos.CommandInfo.URI> getUrisList() {
+      return uris_;
+    }
+    /**
+     * <code>repeated .mesos.CommandInfo.URI uris = 1;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.Protos.CommandInfo.URIOrBuilder> 
+        getUrisOrBuilderList() {
+      return uris_;
+    }
+    /**
+     * <code>repeated .mesos.CommandInfo.URI uris = 1;</code>
+     */
+    public int getUrisCount() {
+      return uris_.size();
+    }
+    /**
+     * <code>repeated .mesos.CommandInfo.URI uris = 1;</code>
+     */
+    public org.apache.mesos.Protos.CommandInfo.URI getUris(int index) {
+      return uris_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.CommandInfo.URI uris = 1;</code>
+     */
+    public org.apache.mesos.Protos.CommandInfo.URIOrBuilder getUrisOrBuilder(
+        int index) {
+      return uris_.get(index);
+    }
+
+    // optional .mesos.Environment environment = 2;
+    public static final int ENVIRONMENT_FIELD_NUMBER = 2;
+    private org.apache.mesos.Protos.Environment environment_;
+    /**
+     * <code>optional .mesos.Environment environment = 2;</code>
+     */
+    public boolean hasEnvironment() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional .mesos.Environment environment = 2;</code>
+     */
+    public org.apache.mesos.Protos.Environment getEnvironment() {
+      return environment_;
+    }
+    /**
+     * <code>optional .mesos.Environment environment = 2;</code>
+     */
+    public org.apache.mesos.Protos.EnvironmentOrBuilder getEnvironmentOrBuilder() {
+      return environment_;
+    }
+
+    // optional bool shell = 6 [default = true];
+    public static final int SHELL_FIELD_NUMBER = 6;
+    private boolean shell_;
+    /**
+     * <code>optional bool shell = 6 [default = true];</code>
+     *
+     * <pre>
+     * There are two ways to specify the command:
+     * 1) If 'shell == true', the command will be launched via shell
+     *		(i.e., /bin/sh -c 'value'). The 'value' specified will be
+     *		treated as the shell command. The 'arguments' will be ignored.
+     * 2) If 'shell == false', the command will be launched by passing
+     *		arguments to an executable. The 'value' specified will be
+     *		treated as the filename of the executable. The 'arguments'
+     *		will be treated as the arguments to the executable. This is
+     *		similar to how POSIX exec families launch processes (i.e.,
+     *		execlp(value, arguments(0), arguments(1), ...)).
+     * NOTE: The field 'value' is changed from 'required' to 'optional'
+     * in 0.20.0. It will only cause issues if a new framework is
+     * connecting to an old master.
+     * </pre>
+     */
+    public boolean hasShell() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional bool shell = 6 [default = true];</code>
+     *
+     * <pre>
+     * There are two ways to specify the command:
+     * 1) If 'shell == true', the command will be launched via shell
+     *		(i.e., /bin/sh -c 'value'). The 'value' specified will be
+     *		treated as the shell command. The 'arguments' will be ignored.
+     * 2) If 'shell == false', the command will be launched by passing
+     *		arguments to an executable. The 'value' specified will be
+     *		treated as the filename of the executable. The 'arguments'
+     *		will be treated as the arguments to the executable. This is
+     *		similar to how POSIX exec families launch processes (i.e.,
+     *		execlp(value, arguments(0), arguments(1), ...)).
+     * NOTE: The field 'value' is changed from 'required' to 'optional'
+     * in 0.20.0. It will only cause issues if a new framework is
+     * connecting to an old master.
+     * </pre>
+     */
+    public boolean getShell() {
+      return shell_;
+    }
+
+    // optional string value = 3;
+    public static final int VALUE_FIELD_NUMBER = 3;
+    private java.lang.Object value_;
+    /**
+     * <code>optional string value = 3;</code>
+     */
+    public boolean hasValue() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional string value = 3;</code>
+     */
+    public java.lang.String getValue() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          value_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string value = 3;</code>
+     */
+    public com.google.protobuf.ByteString
+        getValueBytes() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        value_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // repeated string arguments = 7;
+    public static final int ARGUMENTS_FIELD_NUMBER = 7;
+    private com.google.protobuf.LazyStringList arguments_;
+    /**
+     * <code>repeated string arguments = 7;</code>
+     */
+    public java.util.List<java.lang.String>
+        getArgumentsList() {
+      return arguments_;
+    }
+    /**
+     * <code>repeated string arguments = 7;</code>
+     */
+    public int getArgumentsCount() {
+      return arguments_.size();
+    }
+    /**
+     * <code>repeated string arguments = 7;</code>
+     */
+    public java.lang.String getArguments(int index) {
+      return arguments_.get(index);
+    }
+    /**
+     * <code>repeated string arguments = 7;</code>
+     */
+    public com.google.protobuf.ByteString
+        getArgumentsBytes(int index) {
+      return arguments_.getByteString(index);
+    }
+
+    // optional string user = 5;
+    public static final int USER_FIELD_NUMBER = 5;
+    private java.lang.Object user_;
+    /**
+     * <code>optional string user = 5;</code>
+     *
+     * <pre>
+     * Enables executor and tasks to run as a specific user. If the user
+     * field is present both in FrameworkInfo and here, the CommandInfo
+     * user value takes precedence.
+     * </pre>
+     */
+    public boolean hasUser() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional string user = 5;</code>
+     *
+     * <pre>
+     * Enables executor and tasks to run as a specific user. If the user
+     * field is present both in FrameworkInfo and here, the CommandInfo
+     * user value takes precedence.
+     * </pre>
+     */
+    public java.lang.String getUser() {
+      java.lang.Object ref = user_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          user_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string user = 5;</code>
+     *
+     * <pre>
+     * Enables executor and tasks to run as a specific user. If the user
+     * field is present both in FrameworkInfo and here, the CommandInfo
+     * user value takes precedence.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getUserBytes() {
+      java.lang.Object ref = user_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        user_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      uris_ = java.util.Collections.emptyList();
+      environment_ = org.apache.mesos.Protos.Environment.getDefaultInstance();
+      shell_ = true;
+      value_ = "";
+      arguments_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+      user_ = "";
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      for (int i = 0; i < getUrisCount(); i++) {
+        if (!getUris(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasEnvironment()) {
+        if (!getEnvironment().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      for (int i = 0; i < uris_.size(); i++) {
+        output.writeMessage(1, uris_.get(i));
+      }
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeMessage(2, environment_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeBytes(3, getValueBytes());
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeBytes(5, getUserBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBool(6, shell_);
+      }
+      for (int i = 0; i < arguments_.size(); i++) {
+        output.writeBytes(7, arguments_.getByteString(i));
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      for (int i = 0; i < uris_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, uris_.get(i));
+      }
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, environment_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(3, getValueBytes());
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(5, getUserBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(6, shell_);
+      }
+      {
+        int dataSize = 0;
+        for (int i = 0; i < arguments_.size(); i++) {
+          dataSize += com.google.protobuf.CodedOutputStream
+            .computeBytesSizeNoTag(arguments_.getByteString(i));
+        }
+        size += dataSize;
+        size += 1 * getArgumentsList().size();
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.CommandInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.CommandInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.CommandInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.CommandInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.CommandInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.CommandInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.CommandInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.CommandInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.CommandInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.CommandInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.CommandInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.CommandInfo}
+     *
+     * <pre>
+     **
+     * Describes a command, executed via: '/bin/sh -c value'. Any URIs specified
+     * are fetched before executing the command.  If the executable field for an
+     * uri is set, executable file permission is set on the downloaded file.
+     * Otherwise, if the downloaded file has a recognized archive extension
+     * (currently [compressed] tar and zip) it is extracted into the executor's
+     * working directory. This extraction can be disabled by setting `extract` to
+     * false. In addition, any environment variables are set before executing
+     * the command (so they can be used to "parameterize" your command).
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.CommandInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_CommandInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_CommandInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.CommandInfo.class, org.apache.mesos.Protos.CommandInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.CommandInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getUrisFieldBuilder();
+          getEnvironmentFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (urisBuilder_ == null) {
+          uris_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+        } else {
+          urisBuilder_.clear();
+        }
+        if (environmentBuilder_ == null) {
+          environment_ = org.apache.mesos.Protos.Environment.getDefaultInstance();
+        } else {
+          environmentBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        shell_ = true;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        value_ = "";
+        bitField0_ = (bitField0_ & ~0x00000008);
+        arguments_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+        bitField0_ = (bitField0_ & ~0x00000010);
+        user_ = "";
+        bitField0_ = (bitField0_ & ~0x00000020);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_CommandInfo_descriptor;
+      }
+
+      public org.apache.mesos.Protos.CommandInfo getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.CommandInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.CommandInfo build() {
+        org.apache.mesos.Protos.CommandInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.CommandInfo buildPartial() {
+        org.apache.mesos.Protos.CommandInfo result = new org.apache.mesos.Protos.CommandInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (urisBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            uris_ = java.util.Collections.unmodifiableList(uris_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.uris_ = uris_;
+        } else {
+          result.uris_ = urisBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        if (environmentBuilder_ == null) {
+          result.environment_ = environment_;
+        } else {
+          result.environment_ = environmentBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.shell_ = shell_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.value_ = value_;
+        if (((bitField0_ & 0x00000010) == 0x00000010)) {
+          arguments_ = new com.google.protobuf.UnmodifiableLazyStringList(
+              arguments_);
+          bitField0_ = (bitField0_ & ~0x00000010);
+        }
+        result.arguments_ = arguments_;
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.user_ = user_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.CommandInfo) {
+          return mergeFrom((org.apache.mesos.Protos.CommandInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.CommandInfo other) {
+        if (other == org.apache.mesos.Protos.CommandInfo.getDefaultInstance()) return this;
+        if (urisBuilder_ == null) {
+          if (!other.uris_.isEmpty()) {
+            if (uris_.isEmpty()) {
+              uris_ = other.uris_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureUrisIsMutable();
+              uris_.addAll(other.uris_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.uris_.isEmpty()) {
+            if (urisBuilder_.isEmpty()) {
+              urisBuilder_.dispose();
+              urisBuilder_ = null;
+              uris_ = other.uris_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              urisBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getUrisFieldBuilder() : null;
+            } else {
+              urisBuilder_.addAllMessages(other.uris_);
+            }
+          }
+        }
+        if (other.hasEnvironment()) {
+          mergeEnvironment(other.getEnvironment());
+        }
+        if (other.hasShell()) {
+          setShell(other.getShell());
+        }
+        if (other.hasValue()) {
+          bitField0_ |= 0x00000008;
+          value_ = other.value_;
+          onChanged();
+        }
+        if (!other.arguments_.isEmpty()) {
+          if (arguments_.isEmpty()) {
+            arguments_ = other.arguments_;
+            bitField0_ = (bitField0_ & ~0x00000010);
+          } else {
+            ensureArgumentsIsMutable();
+            arguments_.addAll(other.arguments_);
+          }
+          onChanged();
+        }
+        if (other.hasUser()) {
+          bitField0_ |= 0x00000020;
+          user_ = other.user_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        for (int i = 0; i < getUrisCount(); i++) {
+          if (!getUris(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasEnvironment()) {
+          if (!getEnvironment().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.CommandInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.CommandInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // repeated .mesos.CommandInfo.URI uris = 1;
+      private java.util.List<org.apache.mesos.Protos.CommandInfo.URI> uris_ =
+        java.util.Collections.emptyList();
+      private void ensureUrisIsMutable() {
+        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+          uris_ = new java.util.ArrayList<org.apache.mesos.Protos.CommandInfo.URI>(uris_);
+          bitField0_ |= 0x00000001;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.CommandInfo.URI, org.apache.mesos.Protos.CommandInfo.URI.Builder, org.apache.mesos.Protos.CommandInfo.URIOrBuilder> urisBuilder_;
+
+      /**
+       * <code>repeated .mesos.CommandInfo.URI uris = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.CommandInfo.URI> getUrisList() {
+        if (urisBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(uris_);
+        } else {
+          return urisBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.CommandInfo.URI uris = 1;</code>
+       */
+      public int getUrisCount() {
+        if (urisBuilder_ == null) {
+          return uris_.size();
+        } else {
+          return urisBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.CommandInfo.URI uris = 1;</code>
+       */
+      public org.apache.mesos.Protos.CommandInfo.URI getUris(int index) {
+        if (urisBuilder_ == null) {
+          return uris_.get(index);
+        } else {
+          return urisBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.CommandInfo.URI uris = 1;</code>
+       */
+      public Builder setUris(
+          int index, org.apache.mesos.Protos.CommandInfo.URI value) {
+        if (urisBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureUrisIsMutable();
+          uris_.set(index, value);
+          onChanged();
+        } else {
+          urisBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.CommandInfo.URI uris = 1;</code>
+       */
+      public Builder setUris(
+          int index, org.apache.mesos.Protos.CommandInfo.URI.Builder builderForValue) {
+        if (urisBuilder_ == null) {
+          ensureUrisIsMutable();
+          uris_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          urisBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.CommandInfo.URI uris = 1;</code>
+       */
+      public Builder addUris(org.apache.mesos.Protos.CommandInfo.URI value) {
+        if (urisBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureUrisIsMutable();
+          uris_.add(value);
+          onChanged();
+        } else {
+          urisBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.CommandInfo.URI uris = 1;</code>
+       */
+      public Builder addUris(
+          int index, org.apache.mesos.Protos.CommandInfo.URI value) {
+        if (urisBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureUrisIsMutable();
+          uris_.add(index, value);
+          onChanged();
+        } else {
+          urisBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.CommandInfo.URI uris = 1;</code>
+       */
+      public Builder addUris(
+          org.apache.mesos.Protos.CommandInfo.URI.Builder builderForValue) {
+        if (urisBuilder_ == null) {
+          ensureUrisIsMutable();
+          uris_.add(builderForValue.build());
+          onChanged();
+        } else {
+          urisBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.CommandInfo.URI uris = 1;</code>
+       */
+      public Builder addUris(
+          int index, org.apache.mesos.Protos.CommandInfo.URI.Builder builderForValue) {
+        if (urisBuilder_ == null) {
+          ensureUrisIsMutable();
+          uris_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          urisBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.CommandInfo.URI uris = 1;</code>
+       */
+      public Builder addAllUris(
+          java.lang.Iterable<? extends org.apache.mesos.Protos.CommandInfo.URI> values) {
+        if (urisBuilder_ == null) {
+          ensureUrisIsMutable();
+          super.addAll(values, uris_);
+          onChanged();
+        } else {
+          urisBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.CommandInfo.URI uris = 1;</code>
+       */
+      public Builder clearUris() {
+        if (urisBuilder_ == null) {
+          uris_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+        } else {
+          urisBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.CommandInfo.URI uris = 1;</code>
+       */
+      public Builder removeUris(int index) {
+        if (urisBuilder_ == null) {
+          ensureUrisIsMutable();
+          uris_.remove(index);
+          onChanged();
+        } else {
+          urisBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.CommandInfo.URI uris = 1;</code>
+       */
+      public org.apache.mesos.Protos.CommandInfo.URI.Builder getUrisBuilder(
+          int index) {
+        return getUrisFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.CommandInfo.URI uris = 1;</code>
+       */
+      public org.apache.mesos.Protos.CommandInfo.URIOrBuilder getUrisOrBuilder(
+          int index) {
+        if (urisBuilder_ == null) {
+          return uris_.get(index);  } else {
+          return urisBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.CommandInfo.URI uris = 1;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.CommandInfo.URIOrBuilder> 
+           getUrisOrBuilderList() {
+        if (urisBuilder_ != null) {
+          return urisBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(uris_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.CommandInfo.URI uris = 1;</code>
+       */
+      public org.apache.mesos.Protos.CommandInfo.URI.Builder addUrisBuilder() {
+        return getUrisFieldBuilder().addBuilder(
+            org.apache.mesos.Protos.CommandInfo.URI.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.CommandInfo.URI uris = 1;</code>
+       */
+      public org.apache.mesos.Protos.CommandInfo.URI.Builder addUrisBuilder(
+          int index) {
+        return getUrisFieldBuilder().addBuilder(
+            index, org.apache.mesos.Protos.CommandInfo.URI.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.CommandInfo.URI uris = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.CommandInfo.URI.Builder> 
+           getUrisBuilderList() {
+        return getUrisFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.CommandInfo.URI, org.apache.mesos.Protos.CommandInfo.URI.Builder, org.apache.mesos.Protos.CommandInfo.URIOrBuilder> 
+          getUrisFieldBuilder() {
+        if (urisBuilder_ == null) {
+          urisBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.CommandInfo.URI, org.apache.mesos.Protos.CommandInfo.URI.Builder, org.apache.mesos.Protos.CommandInfo.URIOrBuilder>(
+                  uris_,
+                  ((bitField0_ & 0x00000001) == 0x00000001),
+                  getParentForChildren(),
+                  isClean());
+          uris_ = null;
+        }
+        return urisBuilder_;
+      }
+
+      // optional .mesos.Environment environment = 2;
+      private org.apache.mesos.Protos.Environment environment_ = org.apache.mesos.Protos.Environment.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Environment, org.apache.mesos.Protos.Environment.Builder, org.apache.mesos.Protos.EnvironmentOrBuilder> environmentBuilder_;
+      /**
+       * <code>optional .mesos.Environment environment = 2;</code>
+       */
+      public boolean hasEnvironment() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.Environment environment = 2;</code>
+       */
+      public org.apache.mesos.Protos.Environment getEnvironment() {
+        if (environmentBuilder_ == null) {
+          return environment_;
+        } else {
+          return environmentBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.Environment environment = 2;</code>
+       */
+      public Builder setEnvironment(org.apache.mesos.Protos.Environment value) {
+        if (environmentBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          environment_ = value;
+          onChanged();
+        } else {
+          environmentBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Environment environment = 2;</code>
+       */
+      public Builder setEnvironment(
+          org.apache.mesos.Protos.Environment.Builder builderForValue) {
+        if (environmentBuilder_ == null) {
+          environment_ = builderForValue.build();
+          onChanged();
+        } else {
+          environmentBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Environment environment = 2;</code>
+       */
+      public Builder mergeEnvironment(org.apache.mesos.Protos.Environment value) {
+        if (environmentBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              environment_ != org.apache.mesos.Protos.Environment.getDefaultInstance()) {
+            environment_ =
+              org.apache.mesos.Protos.Environment.newBuilder(environment_).mergeFrom(value).buildPartial();
+          } else {
+            environment_ = value;
+          }
+          onChanged();
+        } else {
+          environmentBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Environment environment = 2;</code>
+       */
+      public Builder clearEnvironment() {
+        if (environmentBuilder_ == null) {
+          environment_ = org.apache.mesos.Protos.Environment.getDefaultInstance();
+          onChanged();
+        } else {
+          environmentBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Environment environment = 2;</code>
+       */
+      public org.apache.mesos.Protos.Environment.Builder getEnvironmentBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getEnvironmentFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.Environment environment = 2;</code>
+       */
+      public org.apache.mesos.Protos.EnvironmentOrBuilder getEnvironmentOrBuilder() {
+        if (environmentBuilder_ != null) {
+          return environmentBuilder_.getMessageOrBuilder();
+        } else {
+          return environment_;
+        }
+      }
+      /**
+       * <code>optional .mesos.Environment environment = 2;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Environment, org.apache.mesos.Protos.Environment.Builder, org.apache.mesos.Protos.EnvironmentOrBuilder> 
+          getEnvironmentFieldBuilder() {
+        if (environmentBuilder_ == null) {
+          environmentBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Environment, org.apache.mesos.Protos.Environment.Builder, org.apache.mesos.Protos.EnvironmentOrBuilder>(
+                  environment_,
+                  getParentForChildren(),
+                  isClean());
+          environment_ = null;
+        }
+        return environmentBuilder_;
+      }
+
+      // optional bool shell = 6 [default = true];
+      private boolean shell_ = true;
+      /**
+       * <code>optional bool shell = 6 [default = true];</code>
+       *
+       * <pre>
+       * There are two ways to specify the command:
+       * 1) If 'shell == true', the command will be launched via shell
+       *		(i.e., /bin/sh -c 'value'). The 'value' specified will be
+       *		treated as the shell command. The 'arguments' will be ignored.
+       * 2) If 'shell == false', the command will be launched by passing
+       *		arguments to an executable. The 'value' specified will be
+       *		treated as the filename of the executable. The 'arguments'
+       *		will be treated as the arguments to the executable. This is
+       *		similar to how POSIX exec families launch processes (i.e.,
+       *		execlp(value, arguments(0), arguments(1), ...)).
+       * NOTE: The field 'value' is changed from 'required' to 'optional'
+       * in 0.20.0. It will only cause issues if a new framework is
+       * connecting to an old master.
+       * </pre>
+       */
+      public boolean hasShell() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional bool shell = 6 [default = true];</code>
+       *
+       * <pre>
+       * There are two ways to specify the command:
+       * 1) If 'shell == true', the command will be launched via shell
+       *		(i.e., /bin/sh -c 'value'). The 'value' specified will be
+       *		treated as the shell command. The 'arguments' will be ignored.
+       * 2) If 'shell == false', the command will be launched by passing
+       *		arguments to an executable. The 'value' specified will be
+       *		treated as the filename of the executable. The 'arguments'
+       *		will be treated as the arguments to the executable. This is
+       *		similar to how POSIX exec families launch processes (i.e.,
+       *		execlp(value, arguments(0), arguments(1), ...)).
+       * NOTE: The field 'value' is changed from 'required' to 'optional'
+       * in 0.20.0. It will only cause issues if a new framework is
+       * connecting to an old master.
+       * </pre>
+       */
+      public boolean getShell() {
+        return shell_;
+      }
+      /**
+       * <code>optional bool shell = 6 [default = true];</code>
+       *
+       * <pre>
+       * There are two ways to specify the command:
+       * 1) If 'shell == true', the command will be launched via shell
+       *		(i.e., /bin/sh -c 'value'). The 'value' specified will be
+       *		treated as the shell command. The 'arguments' will be ignored.
+       * 2) If 'shell == false', the command will be launched by passing
+       *		arguments to an executable. The 'value' specified will be
+       *		treated as the filename of the executable. The 'arguments'
+       *		will be treated as the arguments to the executable. This is
+       *		similar to how POSIX exec families launch processes (i.e.,
+       *		execlp(value, arguments(0), arguments(1), ...)).
+       * NOTE: The field 'value' is changed from 'required' to 'optional'
+       * in 0.20.0. It will only cause issues if a new framework is
+       * connecting to an old master.
+       * </pre>
+       */
+      public Builder setShell(boolean value) {
+        bitField0_ |= 0x00000004;
+        shell_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional bool shell = 6 [default = true];</code>
+       *
+       * <pre>
+       * There are two ways to specify the command:
+       * 1) If 'shell == true', the command will be launched via shell
+       *		(i.e., /bin/sh -c 'value'). The 'value' specified will be
+       *		treated as the shell command. The 'arguments' will be ignored.
+       * 2) If 'shell == false', the command will be launched by passing
+       *		arguments to an executable. The 'value' specified will be
+       *		treated as the filename of the executable. The 'arguments'
+       *		will be treated as the arguments to the executable. This is
+       *		similar to how POSIX exec families launch processes (i.e.,
+       *		execlp(value, arguments(0), arguments(1), ...)).
+       * NOTE: The field 'value' is changed from 'required' to 'optional'
+       * in 0.20.0. It will only cause issues if a new framework is
+       * connecting to an old master.
+       * </pre>
+       */
+      public Builder clearShell() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        shell_ = true;
+        onChanged();
+        return this;
+      }
+
+      // optional string value = 3;
+      private java.lang.Object value_ = "";
+      /**
+       * <code>optional string value = 3;</code>
+       */
+      public boolean hasValue() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional string value = 3;</code>
+       */
+      public java.lang.String getValue() {
+        java.lang.Object ref = value_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          value_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string value = 3;</code>
+       */
+      public com.google.protobuf.ByteString
+          getValueBytes() {
+        java.lang.Object ref = value_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          value_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string value = 3;</code>
+       */
+      public Builder setValue(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string value = 3;</code>
+       */
+      public Builder clearValue() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        value_ = getDefaultInstance().getValue();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string value = 3;</code>
+       */
+      public Builder setValueBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+
+      // repeated string arguments = 7;
+      private com.google.protobuf.LazyStringList arguments_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+      private void ensureArgumentsIsMutable() {
+        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
+          arguments_ = new com.google.protobuf.LazyStringArrayList(arguments_);
+          bitField0_ |= 0x00000010;
+         }
+      }
+      /**
+       * <code>repeated string arguments = 7;</code>
+       */
+      public java.util.List<java.lang.String>
+          getArgumentsList() {
+        return java.util.Collections.unmodifiableList(arguments_);
+      }
+      /**
+       * <code>repeated string arguments = 7;</code>
+       */
+      public int getArgumentsCount() {
+        return arguments_.size();
+      }
+      /**
+       * <code>repeated string arguments = 7;</code>
+       */
+      public java.lang.String getArguments(int index) {
+        return arguments_.get(index);
+      }
+      /**
+       * <code>repeated string arguments = 7;</code>
+       */
+      public com.google.protobuf.ByteString
+          getArgumentsBytes(int index) {
+        return arguments_.getByteString(index);
+      }
+      /**
+       * <code>repeated string arguments = 7;</code>
+       */
+      public Builder setArguments(
+          int index, java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureArgumentsIsMutable();
+        arguments_.set(index, value);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated string arguments = 7;</code>
+       */
+      public Builder addArguments(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureArgumentsIsMutable();
+        arguments_.add(value);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated string arguments = 7;</code>
+       */
+      public Builder addAllArguments(
+          java.lang.Iterable<java.lang.String> values) {
+        ensureArgumentsIsMutable();
+        super.addAll(values, arguments_);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated string arguments = 7;</code>
+       */
+      public Builder clearArguments() {
+        arguments_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+        bitField0_ = (bitField0_ & ~0x00000010);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated string arguments = 7;</code>
+       */
+      public Builder addArgumentsBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureArgumentsIsMutable();
+        arguments_.add(value);
+        onChanged();
+        return this;
+      }
+
+      // optional string user = 5;
+      private java.lang.Object user_ = "";
+      /**
+       * <code>optional string user = 5;</code>
+       *
+       * <pre>
+       * Enables executor and tasks to run as a specific user. If the user
+       * field is present both in FrameworkInfo and here, the CommandInfo
+       * user value takes precedence.
+       * </pre>
+       */
+      public boolean hasUser() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional string user = 5;</code>
+       *
+       * <pre>
+       * Enables executor and tasks to run as a specific user. If the user
+       * field is present both in FrameworkInfo and here, the CommandInfo
+       * user value takes precedence.
+       * </pre>
+       */
+      public java.lang.String getUser() {
+        java.lang.Object ref = user_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          user_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string user = 5;</code>
+       *
+       * <pre>
+       * Enables executor and tasks to run as a specific user. If the user
+       * field is present both in FrameworkInfo and here, the CommandInfo
+       * user value takes precedence.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getUserBytes() {
+        java.lang.Object ref = user_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          user_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string user = 5;</code>
+       *
+       * <pre>
+       * Enables executor and tasks to run as a specific user. If the user
+       * field is present both in FrameworkInfo and here, the CommandInfo
+       * user value takes precedence.
+       * </pre>
+       */
+      public Builder setUser(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000020;
+        user_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string user = 5;</code>
+       *
+       * <pre>
+       * Enables executor and tasks to run as a specific user. If the user
+       * field is present both in FrameworkInfo and here, the CommandInfo
+       * user value takes precedence.
+       * </pre>
+       */
+      public Builder clearUser() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        user_ = getDefaultInstance().getUser();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string user = 5;</code>
+       *
+       * <pre>
+       * Enables executor and tasks to run as a specific user. If the user
+       * field is present both in FrameworkInfo and here, the CommandInfo
+       * user value takes precedence.
+       * </pre>
+       */
+      public Builder setUserBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000020;
+        user_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.CommandInfo)
+    }
+
+    static {
+      defaultInstance = new CommandInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.CommandInfo)
+  }
+
+  public interface ExecutorInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional .mesos.ExecutorInfo.Type type = 15;
+    /**
+     * <code>optional .mesos.ExecutorInfo.Type type = 15;</code>
+     *
+     * <pre>
+     * For backwards compatibility, if this field is not set when using `LAUNCH`
+     * offer operation, Mesos will infer the type by checking if `command` is
+     * set (`CUSTOM`) or unset (`DEFAULT`). `type` must be set when using
+     * `LAUNCH_GROUP` offer operation.
+     *
+     * TODO(vinod): Add support for explicitly setting `type` to `DEFAULT `
+     * in `LAUNCH` offer operation.
+     * </pre>
+     */
+    boolean hasType();
+    /**
+     * <code>optional .mesos.ExecutorInfo.Type type = 15;</code>
+     *
+     * <pre>
+     * For backwards compatibility, if this field is not set when using `LAUNCH`
+     * offer operation, Mesos will infer the type by checking if `command` is
+     * set (`CUSTOM`) or unset (`DEFAULT`). `type` must be set when using
+     * `LAUNCH_GROUP` offer operation.
+     *
+     * TODO(vinod): Add support for explicitly setting `type` to `DEFAULT `
+     * in `LAUNCH` offer operation.
+     * </pre>
+     */
+    org.apache.mesos.Protos.ExecutorInfo.Type getType();
+
+    // required .mesos.ExecutorID executor_id = 1;
+    /**
+     * <code>required .mesos.ExecutorID executor_id = 1;</code>
+     */
+    boolean hasExecutorId();
+    /**
+     * <code>required .mesos.ExecutorID executor_id = 1;</code>
+     */
+    org.apache.mesos.Protos.ExecutorID getExecutorId();
+    /**
+     * <code>required .mesos.ExecutorID executor_id = 1;</code>
+     */
+    org.apache.mesos.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder();
+
+    // optional .mesos.FrameworkID framework_id = 8;
+    /**
+     * <code>optional .mesos.FrameworkID framework_id = 8;</code>
+     *
+     * <pre>
+     * TODO(benh): Make this required.
+     * </pre>
+     */
+    boolean hasFrameworkId();
+    /**
+     * <code>optional .mesos.FrameworkID framework_id = 8;</code>
+     *
+     * <pre>
+     * TODO(benh): Make this required.
+     * </pre>
+     */
+    org.apache.mesos.Protos.FrameworkID getFrameworkId();
+    /**
+     * <code>optional .mesos.FrameworkID framework_id = 8;</code>
+     *
+     * <pre>
+     * TODO(benh): Make this required.
+     * </pre>
+     */
+    org.apache.mesos.Protos.FrameworkIDOrBuilder getFrameworkIdOrBuilder();
+
+    // optional .mesos.CommandInfo command = 7;
+    /**
+     * <code>optional .mesos.CommandInfo command = 7;</code>
+     */
+    boolean hasCommand();
+    /**
+     * <code>optional .mesos.CommandInfo command = 7;</code>
+     */
+    org.apache.mesos.Protos.CommandInfo getCommand();
+    /**
+     * <code>optional .mesos.CommandInfo command = 7;</code>
+     */
+    org.apache.mesos.Protos.CommandInfoOrBuilder getCommandOrBuilder();
+
+    // optional .mesos.ContainerInfo container = 11;
+    /**
+     * <code>optional .mesos.ContainerInfo container = 11;</code>
+     *
+     * <pre>
+     * Executor provided with a container will launch the container
+     * with the executor's CommandInfo and we expect the container to
+     * act as a Mesos executor.
+     * </pre>
+     */
+    boolean hasContainer();
+    /**
+     * <code>optional .mesos.ContainerInfo container = 11;</code>
+     *
+     * <pre>
+     * Executor provided with a container will launch the container
+     * with the executor's CommandInfo and we expect the container to
+     * act as a Mesos executor.
+     * </pre>
+     */
+    org.apache.mesos.Protos.ContainerInfo getContainer();
+    /**
+     * <code>optional .mesos.ContainerInfo container = 11;</code>
+     *
+     * <pre>
+     * Executor provided with a container will launch the container
+     * with the executor's CommandInfo and we expect the container to
+     * act as a Mesos executor.
+     * </pre>
+     */
+    org.apache.mesos.Protos.ContainerInfoOrBuilder getContainerOrBuilder();
+
+    // repeated .mesos.Resource resources = 5;
+    /**
+     * <code>repeated .mesos.Resource resources = 5;</code>
+     */
+    java.util.List<org.apache.mesos.Protos.Resource> 
+        getResourcesList();
+    /**
+     * <code>repeated .mesos.Resource resources = 5;</code>
+     */
+    org.apache.mesos.Protos.Resource getResources(int index);
+    /**
+     * <code>repeated .mesos.Resource resources = 5;</code>
+     */
+    int getResourcesCount();
+    /**
+     * <code>repeated .mesos.Resource resources = 5;</code>
+     */
+    java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+        getResourcesOrBuilderList();
+    /**
+     * <code>repeated .mesos.Resource resources = 5;</code>
+     */
+    org.apache.mesos.Protos.ResourceOrBuilder getResourcesOrBuilder(
+        int index);
+
+    // optional string name = 9;
+    /**
+     * <code>optional string name = 9;</code>
+     */
+    boolean hasName();
+    /**
+     * <code>optional string name = 9;</code>
+     */
+    java.lang.String getName();
+    /**
+     * <code>optional string name = 9;</code>
+     */
+    com.google.protobuf.ByteString
+        getNameBytes();
+
+    // optional string source = 10 [deprecated = true];
+    /**
+     * <code>optional string source = 10 [deprecated = true];</code>
+     *
+     * <pre>
+     * 'source' is an identifier style string used by frameworks to
+     * track the source of an executor. This is useful when it's
+     * possible for different executor ids to be related semantically.
+     *
+     * NOTE: 'source' is exposed alongside the resource usage of the
+     * executor via JSON on the slave. This allows users to import usage
+     * information into a time series database for monitoring.
+     *
+     * This field is deprecated since 1.0. Please use labels for
+     * free-form metadata instead.
+     * </pre>
+     */
+    @java.lang.Deprecated boolean hasSource();
+    /**
+     * <code>optional string source = 10 [deprecated = true];</code>
+     *
+     * <pre>
+     * 'source' is an identifier style string used by frameworks to
+     * track the source of an executor. This is useful when it's
+     * possible for different executor ids to be related semantically.
+     *
+     * NOTE: 'source' is exposed alongside the resource usage of the
+     * executor via JSON on the slave. This allows users to import usage
+     * information into a time series database for monitoring.
+     *
+     * This field is deprecated since 1.0. Please use labels for
+     * free-form metadata instead.
+     * </pre>
+     */
+    @java.lang.Deprecated java.lang.String getSource();
+    /**
+     * <code>optional string source = 10 [deprecated = true];</code>
+     *
+     * <pre>
+     * 'source' is an identifier style string used by frameworks to
+     * track the source of an executor. This is useful when it's
+     * possible for different executor ids to be related semantically.
+     *
+     * NOTE: 'source' is exposed alongside the resource usage of the
+     * executor via JSON on the slave. This allows users to import usage
+     * information into a time series database for monitoring.
+     *
+     * This field is deprecated since 1.0. Please use labels for
+     * free-form metadata instead.
+     * </pre>
+     */
+    @java.lang.Deprecated com.google.protobuf.ByteString
+        getSourceBytes();
+
+    // optional bytes data = 4;
+    /**
+     * <code>optional bytes data = 4;</code>
+     *
+     * <pre>
+     * This field can be used to pass arbitrary bytes to an executor.
+     * </pre>
+     */
+    boolean hasData();
+    /**
+     * <code>optional bytes data = 4;</code>
+     *
+     * <pre>
+     * This field can be used to pass arbitrary bytes to an executor.
+     * </pre>
+     */
+    com.google.protobuf.ByteString getData();
+
+    // optional .mesos.DiscoveryInfo discovery = 12;
+    /**
+     * <code>optional .mesos.DiscoveryInfo discovery = 12;</code>
+     *
+     * <pre>
+     * Service discovery information for the executor. It is not
+     * interpreted or acted upon by Mesos. It is up to a service
+     * discovery system to use this information as needed and to handle
+     * executors without service discovery information.
+     * </pre>
+     */
+    boolean hasDiscovery();
+    /**
+     * <code>optional .mesos.DiscoveryInfo discovery = 12;</code>
+     *
+     * <pre>
+     * Service discovery information for the executor. It is not
+     * interpreted or acted upon by Mesos. It is up to a service
+     * discovery system to use this information as needed and to handle
+     * executors without service discovery information.
+     * </pre>
+     */
+    org.apache.mesos.Protos.DiscoveryInfo getDiscovery();
+    /**
+     * <code>optional .mesos.DiscoveryInfo discovery = 12;</code>
+     *
+     * <pre>
+     * Service discovery information for the executor. It is not
+     * interpreted or acted upon by Mesos. It is up to a service
+     * discovery system to use this information as needed and to handle
+     * executors without service discovery information.
+     * </pre>
+     */
+    org.apache.mesos.Protos.DiscoveryInfoOrBuilder getDiscoveryOrBuilder();
+
+    // optional .mesos.DurationInfo shutdown_grace_period = 13;
+    /**
+     * <code>optional .mesos.DurationInfo shutdown_grace_period = 13;</code>
+     *
+     * <pre>
+     * When shutting down an executor the agent will wait in a
+     * best-effort manner for the grace period specified here
+     * before forcibly destroying the container. The executor
+     * must not assume that it will always be allotted the full
+     * grace period, as the agent may decide to allot a shorter
+     * period and failures / forcible terminations may occur.
+     * </pre>
+     */
+    boolean hasShutdownGracePeriod();
+    /**
+     * <code>optional .mesos.DurationInfo shutdown_grace_period = 13;</code>
+     *
+     * <pre>
+     * When shutting down an executor the agent will wait in a
+     * best-effort manner for the grace period specified here
+     * before forcibly destroying the container. The executor
+     * must not assume that it will always be allotted the full
+     * grace period, as the agent may decide to allot a shorter
+     * period and failures / forcible terminations may occur.
+     * </pre>
+     */
+    org.apache.mesos.Protos.DurationInfo getShutdownGracePeriod();
+    /**
+     * <code>optional .mesos.DurationInfo shutdown_grace_period = 13;</code>
+     *
+     * <pre>
+     * When shutting down an executor the agent will wait in a
+     * best-effort manner for the grace period specified here
+     * before forcibly destroying the container. The executor
+     * must not assume that it will always be allotted the full
+     * grace period, as the agent may decide to allot a shorter
+     * period and failures / forcible terminations may occur.
+     * </pre>
+     */
+    org.apache.mesos.Protos.DurationInfoOrBuilder getShutdownGracePeriodOrBuilder();
+
+    // optional .mesos.Labels labels = 14;
+    /**
+     * <code>optional .mesos.Labels labels = 14;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs which are exposed through
+     * master and slave endpoints. Labels will not be interpreted or
+     * acted upon by Mesos itself. As opposed to the data field, labels
+     * will be kept in memory on master and slave processes. Therefore,
+     * labels should be used to tag executors with lightweight metadata.
+     * Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    boolean hasLabels();
+    /**
+     * <code>optional .mesos.Labels labels = 14;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs which are exposed through
+     * master and slave endpoints. Labels will not be interpreted or
+     * acted upon by Mesos itself. As opposed to the data field, labels
+     * will be kept in memory on master and slave processes. Therefore,
+     * labels should be used to tag executors with lightweight metadata.
+     * Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    org.apache.mesos.Protos.Labels getLabels();
+    /**
+     * <code>optional .mesos.Labels labels = 14;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs which are exposed through
+     * master and slave endpoints. Labels will not be interpreted or
+     * acted upon by Mesos itself. As opposed to the data field, labels
+     * will be kept in memory on master and slave processes. Therefore,
+     * labels should be used to tag executors with lightweight metadata.
+     * Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    org.apache.mesos.Protos.LabelsOrBuilder getLabelsOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.ExecutorInfo}
+   *
+   * <pre>
+   **
+   * Describes information about an executor.
+   * </pre>
+   */
+  public static final class ExecutorInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements ExecutorInfoOrBuilder {
+    // Use ExecutorInfo.newBuilder() to construct.
+    private ExecutorInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private ExecutorInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final ExecutorInfo defaultInstance;
+    public static ExecutorInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public ExecutorInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private ExecutorInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              org.apache.mesos.Protos.ExecutorID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = executorId_.toBuilder();
+              }
+              executorId_ = input.readMessage(org.apache.mesos.Protos.ExecutorID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(executorId_);
+                executorId_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+            case 34: {
+              bitField0_ |= 0x00000080;
+              data_ = input.readBytes();
+              break;
+            }
+            case 42: {
+              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
+                resources_ = new java.util.ArrayList<org.apache.mesos.Protos.Resource>();
+                mutable_bitField0_ |= 0x00000020;
+              }
+              resources_.add(input.readMessage(org.apache.mesos.Protos.Resource.PARSER, extensionRegistry));
+              break;
+            }
+            case 58: {
+              org.apache.mesos.Protos.CommandInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                subBuilder = command_.toBuilder();
+              }
+              command_ = input.readMessage(org.apache.mesos.Protos.CommandInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(command_);
+                command_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000008;
+              break;
+            }
+            case 66: {
+              org.apache.mesos.Protos.FrameworkID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                subBuilder = frameworkId_.toBuilder();
+              }
+              frameworkId_ = input.readMessage(org.apache.mesos.Protos.FrameworkID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(frameworkId_);
+                frameworkId_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000004;
+              break;
+            }
+            case 74: {
+              bitField0_ |= 0x00000020;
+              name_ = input.readBytes();
+              break;
+            }
+            case 82: {
+              bitField0_ |= 0x00000040;
+              source_ = input.readBytes();
+              break;
+            }
+            case 90: {
+              org.apache.mesos.Protos.ContainerInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000010) == 0x00000010)) {
+                subBuilder = container_.toBuilder();
+              }
+              container_ = input.readMessage(org.apache.mesos.Protos.ContainerInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(container_);
+                container_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000010;
+              break;
+            }
+            case 98: {
+              org.apache.mesos.Protos.DiscoveryInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000100) == 0x00000100)) {
+                subBuilder = discovery_.toBuilder();
+              }
+              discovery_ = input.readMessage(org.apache.mesos.Protos.DiscoveryInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(discovery_);
+                discovery_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000100;
+              break;
+            }
+            case 106: {
+              org.apache.mesos.Protos.DurationInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000200) == 0x00000200)) {
+                subBuilder = shutdownGracePeriod_.toBuilder();
+              }
+              shutdownGracePeriod_ = input.readMessage(org.apache.mesos.Protos.DurationInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(shutdownGracePeriod_);
+                shutdownGracePeriod_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000200;
+              break;
+            }
+            case 114: {
+              org.apache.mesos.Protos.Labels.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000400) == 0x00000400)) {
+                subBuilder = labels_.toBuilder();
+              }
+              labels_ = input.readMessage(org.apache.mesos.Protos.Labels.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(labels_);
+                labels_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000400;
+              break;
+            }
+            case 120: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.Protos.ExecutorInfo.Type value = org.apache.mesos.Protos.ExecutorInfo.Type.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(15, rawValue);
+              } else {
+                bitField0_ |= 0x00000001;
+                type_ = value;
+              }
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
+          resources_ = java.util.Collections.unmodifiableList(resources_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_ExecutorInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_ExecutorInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.ExecutorInfo.class, org.apache.mesos.Protos.ExecutorInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<ExecutorInfo> PARSER =
+        new com.google.protobuf.AbstractParser<ExecutorInfo>() {
+      public ExecutorInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new ExecutorInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<ExecutorInfo> getParserForType() {
+      return PARSER;
+    }
+
+    /**
+     * Protobuf enum {@code mesos.ExecutorInfo.Type}
+     */
+    public enum Type
+        implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>UNKNOWN = 0;</code>
+       */
+      UNKNOWN(0, 0),
+      /**
+       * <code>DEFAULT = 1;</code>
+       *
+       * <pre>
+       * Mesos provides a simple built-in default executor that frameworks can
+       * leverage to run shell commands and containers.
+       *
+       * NOTES:
+       *
+       * 1) `command` must not be set when using a default executor.
+       *
+       * 2) Default executor only accepts a *single* `LAUNCH` or `LAUNCH_GROUP`
+       *    offer operation.
+       *
+       * 3) If `container` is set, `container.type` must be `MESOS`
+       *    and `container.mesos.image` must not be set.
+       * </pre>
+       */
+      DEFAULT(1, 1),
+      /**
+       * <code>CUSTOM = 2;</code>
+       *
+       * <pre>
+       * For frameworks that need custom functionality to run tasks, a `CUSTOM`
+       * executor can be used. Note that `command` must be set when using a
+       * `CUSTOM` executor.
+       * </pre>
+       */
+      CUSTOM(2, 2),
+      ;
+
+      /**
+       * <code>UNKNOWN = 0;</code>
+       */
+      public static final int UNKNOWN_VALUE = 0;
+      /**
+       * <code>DEFAULT = 1;</code>
+       *
+       * <pre>
+       * Mesos provides a simple built-in default executor that frameworks can
+       * leverage to run shell commands and containers.
+       *
+       * NOTES:
+       *
+       * 1) `command` must not be set when using a default executor.
+       *
+       * 2) Default executor only accepts a *single* `LAUNCH` or `LAUNCH_GROUP`
+       *    offer operation.
+       *
+       * 3) If `container` is set, `container.type` must be `MESOS`
+       *    and `container.mesos.image` must not be set.
+       * </pre>
+       */
+      public static final int DEFAULT_VALUE = 1;
+      /**
+       * <code>CUSTOM = 2;</code>
+       *
+       * <pre>
+       * For frameworks that need custom functionality to run tasks, a `CUSTOM`
+       * executor can be used. Note that `command` must be set when using a
+       * `CUSTOM` executor.
+       * </pre>
+       */
+      public static final int CUSTOM_VALUE = 2;
+
+
+      public final int getNumber() { return value; }
+
+      public static Type valueOf(int value) {
+        switch (value) {
+          case 0: return UNKNOWN;
+          case 1: return DEFAULT;
+          case 2: return CUSTOM;
+          default: return null;
+        }
+      }
+
+      public static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalGetValueMap() {
+        return internalValueMap;
+      }
+      private static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap<Type>() {
+              public Type findValueByNumber(int number) {
+                return Type.valueOf(number);
+              }
+            };
+
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
+          getValueDescriptor() {
+        return getDescriptor().getValues().get(index);
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptorForType() {
+        return getDescriptor();
+      }
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.ExecutorInfo.getDescriptor().getEnumTypes().get(0);
+      }
+
+      private static final Type[] VALUES = values();
+
+      public static Type valueOf(
+          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+        if (desc.getType() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "EnumValueDescriptor is not for this type.");
+        }
+        return VALUES[desc.getIndex()];
+      }
+
+      private final int index;
+      private final int value;
+
+      private Type(int index, int value) {
+        this.index = index;
+        this.value = value;
+      }
+
+      // @@protoc_insertion_point(enum_scope:mesos.ExecutorInfo.Type)
+    }
+
+    private int bitField0_;
+    // optional .mesos.ExecutorInfo.Type type = 15;
+    public static final int TYPE_FIELD_NUMBER = 15;
+    private org.apache.mesos.Protos.ExecutorInfo.Type type_;
+    /**
+     * <code>optional .mesos.ExecutorInfo.Type type = 15;</code>
+     *
+     * <pre>
+     * For backwards compatibility, if this field is not set when using `LAUNCH`
+     * offer operation, Mesos will infer the type by checking if `command` is
+     * set (`CUSTOM`) or unset (`DEFAULT`). `type` must be set when using
+     * `LAUNCH_GROUP` offer operation.
+     *
+     * TODO(vinod): Add support for explicitly setting `type` to `DEFAULT `
+     * in `LAUNCH` offer operation.
+     * </pre>
+     */
+    public boolean hasType() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional .mesos.ExecutorInfo.Type type = 15;</code>
+     *
+     * <pre>
+     * For backwards compatibility, if this field is not set when using `LAUNCH`
+     * offer operation, Mesos will infer the type by checking if `command` is
+     * set (`CUSTOM`) or unset (`DEFAULT`). `type` must be set when using
+     * `LAUNCH_GROUP` offer operation.
+     *
+     * TODO(vinod): Add support for explicitly setting `type` to `DEFAULT `
+     * in `LAUNCH` offer operation.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.ExecutorInfo.Type getType() {
+      return type_;
+    }
+
+    // required .mesos.ExecutorID executor_id = 1;
+    public static final int EXECUTOR_ID_FIELD_NUMBER = 1;
+    private org.apache.mesos.Protos.ExecutorID executorId_;
+    /**
+     * <code>required .mesos.ExecutorID executor_id = 1;</code>
+     */
+    public boolean hasExecutorId() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>required .mesos.ExecutorID executor_id = 1;</code>
+     */
+    public org.apache.mesos.Protos.ExecutorID getExecutorId() {
+      return executorId_;
+    }
+    /**
+     * <code>required .mesos.ExecutorID executor_id = 1;</code>
+     */
+    public org.apache.mesos.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder() {
+      return executorId_;
+    }
+
+    // optional .mesos.FrameworkID framework_id = 8;
+    public static final int FRAMEWORK_ID_FIELD_NUMBER = 8;
+    private org.apache.mesos.Protos.FrameworkID frameworkId_;
+    /**
+     * <code>optional .mesos.FrameworkID framework_id = 8;</code>
+     *
+     * <pre>
+     * TODO(benh): Make this required.
+     * </pre>
+     */
+    public boolean hasFrameworkId() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional .mesos.FrameworkID framework_id = 8;</code>
+     *
+     * <pre>
+     * TODO(benh): Make this required.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.FrameworkID getFrameworkId() {
+      return frameworkId_;
+    }
+    /**
+     * <code>optional .mesos.FrameworkID framework_id = 8;</code>
+     *
+     * <pre>
+     * TODO(benh): Make this required.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.FrameworkIDOrBuilder getFrameworkIdOrBuilder() {
+      return frameworkId_;
+    }
+
+    // optional .mesos.CommandInfo command = 7;
+    public static final int COMMAND_FIELD_NUMBER = 7;
+    private org.apache.mesos.Protos.CommandInfo command_;
+    /**
+     * <code>optional .mesos.CommandInfo command = 7;</code>
+     */
+    public boolean hasCommand() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional .mesos.CommandInfo command = 7;</code>
+     */
+    public org.apache.mesos.Protos.CommandInfo getCommand() {
+      return command_;
+    }
+    /**
+     * <code>optional .mesos.CommandInfo command = 7;</code>
+     */
+    public org.apache.mesos.Protos.CommandInfoOrBuilder getCommandOrBuilder() {
+      return command_;
+    }
+
+    // optional .mesos.ContainerInfo container = 11;
+    public static final int CONTAINER_FIELD_NUMBER = 11;
+    private org.apache.mesos.Protos.ContainerInfo container_;
+    /**
+     * <code>optional .mesos.ContainerInfo container = 11;</code>
+     *
+     * <pre>
+     * Executor provided with a container will launch the container
+     * with the executor's CommandInfo and we expect the container to
+     * act as a Mesos executor.
+     * </pre>
+     */
+    public boolean hasContainer() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional .mesos.ContainerInfo container = 11;</code>
+     *
+     * <pre>
+     * Executor provided with a container will launch the container
+     * with the executor's CommandInfo and we expect the container to
+     * act as a Mesos executor.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.ContainerInfo getContainer() {
+      return container_;
+    }
+    /**
+     * <code>optional .mesos.ContainerInfo container = 11;</code>
+     *
+     * <pre>
+     * Executor provided with a container will launch the container
+     * with the executor's CommandInfo and we expect the container to
+     * act as a Mesos executor.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.ContainerInfoOrBuilder getContainerOrBuilder() {
+      return container_;
+    }
+
+    // repeated .mesos.Resource resources = 5;
+    public static final int RESOURCES_FIELD_NUMBER = 5;
+    private java.util.List<org.apache.mesos.Protos.Resource> resources_;
+    /**
+     * <code>repeated .mesos.Resource resources = 5;</code>
+     */
+    public java.util.List<org.apache.mesos.Protos.Resource> getResourcesList() {
+      return resources_;
+    }
+    /**
+     * <code>repeated .mesos.Resource resources = 5;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+        getResourcesOrBuilderList() {
+      return resources_;
+    }
+    /**
+     * <code>repeated .mesos.Resource resources = 5;</code>
+     */
+    public int getResourcesCount() {
+      return resources_.size();
+    }
+    /**
+     * <code>repeated .mesos.Resource resources = 5;</code>
+     */
+    public org.apache.mesos.Protos.Resource getResources(int index) {
+      return resources_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.Resource resources = 5;</code>
+     */
+    public org.apache.mesos.Protos.ResourceOrBuilder getResourcesOrBuilder(
+        int index) {
+      return resources_.get(index);
+    }
+
+    // optional string name = 9;
+    public static final int NAME_FIELD_NUMBER = 9;
+    private java.lang.Object name_;
+    /**
+     * <code>optional string name = 9;</code>
+     */
+    public boolean hasName() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional string name = 9;</code>
+     */
+    public java.lang.String getName() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          name_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string name = 9;</code>
+     */
+    public com.google.protobuf.ByteString
+        getNameBytes() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        name_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional string source = 10 [deprecated = true];
+    public static final int SOURCE_FIELD_NUMBER = 10;
+    private java.lang.Object source_;
+    /**
+     * <code>optional string source = 10 [deprecated = true];</code>
+     *
+     * <pre>
+     * 'source' is an identifier style string used by frameworks to
+     * track the source of an executor. This is useful when it's
+     * possible for different executor ids to be related semantically.
+     *
+     * NOTE: 'source' is exposed alongside the resource usage of the
+     * executor via JSON on the slave. This allows users to import usage
+     * information into a time series database for monitoring.
+     *
+     * This field is deprecated since 1.0. Please use labels for
+     * free-form metadata instead.
+     * </pre>
+     */
+    @java.lang.Deprecated public boolean hasSource() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional string source = 10 [deprecated = true];</code>
+     *
+     * <pre>
+     * 'source' is an identifier style string used by frameworks to
+     * track the source of an executor. This is useful when it's
+     * possible for different executor ids to be related semantically.
+     *
+     * NOTE: 'source' is exposed alongside the resource usage of the
+     * executor via JSON on the slave. This allows users to import usage
+     * information into a time series database for monitoring.
+     *
+     * This field is deprecated since 1.0. Please use labels for
+     * free-form metadata instead.
+     * </pre>
+     */
+    @java.lang.Deprecated public java.lang.String getSource() {
+      java.lang.Object ref = source_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          source_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string source = 10 [deprecated = true];</code>
+     *
+     * <pre>
+     * 'source' is an identifier style string used by frameworks to
+     * track the source of an executor. This is useful when it's
+     * possible for different executor ids to be related semantically.
+     *
+     * NOTE: 'source' is exposed alongside the resource usage of the
+     * executor via JSON on the slave. This allows users to import usage
+     * information into a time series database for monitoring.
+     *
+     * This field is deprecated since 1.0. Please use labels for
+     * free-form metadata instead.
+     * </pre>
+     */
+    @java.lang.Deprecated public com.google.protobuf.ByteString
+        getSourceBytes() {
+      java.lang.Object ref = source_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        source_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional bytes data = 4;
+    public static final int DATA_FIELD_NUMBER = 4;
+    private com.google.protobuf.ByteString data_;
+    /**
+     * <code>optional bytes data = 4;</code>
+     *
+     * <pre>
+     * This field can be used to pass arbitrary bytes to an executor.
+     * </pre>
+     */
+    public boolean hasData() {
+      return ((bitField0_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional bytes data = 4;</code>
+     *
+     * <pre>
+     * This field can be used to pass arbitrary bytes to an executor.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString getData() {
+      return data_;
+    }
+
+    // optional .mesos.DiscoveryInfo discovery = 12;
+    public static final int DISCOVERY_FIELD_NUMBER = 12;
+    private org.apache.mesos.Protos.DiscoveryInfo discovery_;
+    /**
+     * <code>optional .mesos.DiscoveryInfo discovery = 12;</code>
+     *
+     * <pre>
+     * Service discovery information for the executor. It is not
+     * interpreted or acted upon by Mesos. It is up to a service
+     * discovery system to use this information as needed and to handle
+     * executors without service discovery information.
+     * </pre>
+     */
+    public boolean hasDiscovery() {
+      return ((bitField0_ & 0x00000100) == 0x00000100);
+    }
+    /**
+     * <code>optional .mesos.DiscoveryInfo discovery = 12;</code>
+     *
+     * <pre>
+     * Service discovery information for the executor. It is not
+     * interpreted or acted upon by Mesos. It is up to a service
+     * discovery system to use this information as needed and to handle
+     * executors without service discovery information.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.DiscoveryInfo getDiscovery() {
+      return discovery_;
+    }
+    /**
+     * <code>optional .mesos.DiscoveryInfo discovery = 12;</code>
+     *
+     * <pre>
+     * Service discovery information for the executor. It is not
+     * interpreted or acted upon by Mesos. It is up to a service
+     * discovery system to use this information as needed and to handle
+     * executors without service discovery information.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.DiscoveryInfoOrBuilder getDiscoveryOrBuilder() {
+      return discovery_;
+    }
+
+    // optional .mesos.DurationInfo shutdown_grace_period = 13;
+    public static final int SHUTDOWN_GRACE_PERIOD_FIELD_NUMBER = 13;
+    private org.apache.mesos.Protos.DurationInfo shutdownGracePeriod_;
+    /**
+     * <code>optional .mesos.DurationInfo shutdown_grace_period = 13;</code>
+     *
+     * <pre>
+     * When shutting down an executor the agent will wait in a
+     * best-effort manner for the grace period specified here
+     * before forcibly destroying the container. The executor
+     * must not assume that it will always be allotted the full
+     * grace period, as the agent may decide to allot a shorter
+     * period and failures / forcible terminations may occur.
+     * </pre>
+     */
+    public boolean hasShutdownGracePeriod() {
+      return ((bitField0_ & 0x00000200) == 0x00000200);
+    }
+    /**
+     * <code>optional .mesos.DurationInfo shutdown_grace_period = 13;</code>
+     *
+     * <pre>
+     * When shutting down an executor the agent will wait in a
+     * best-effort manner for the grace period specified here
+     * before forcibly destroying the container. The executor
+     * must not assume that it will always be allotted the full
+     * grace period, as the agent may decide to allot a shorter
+     * period and failures / forcible terminations may occur.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.DurationInfo getShutdownGracePeriod() {
+      return shutdownGracePeriod_;
+    }
+    /**
+     * <code>optional .mesos.DurationInfo shutdown_grace_period = 13;</code>
+     *
+     * <pre>
+     * When shutting down an executor the agent will wait in a
+     * best-effort manner for the grace period specified here
+     * before forcibly destroying the container. The executor
+     * must not assume that it will always be allotted the full
+     * grace period, as the agent may decide to allot a shorter
+     * period and failures / forcible terminations may occur.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.DurationInfoOrBuilder getShutdownGracePeriodOrBuilder() {
+      return shutdownGracePeriod_;
+    }
+
+    // optional .mesos.Labels labels = 14;
+    public static final int LABELS_FIELD_NUMBER = 14;
+    private org.apache.mesos.Protos.Labels labels_;
+    /**
+     * <code>optional .mesos.Labels labels = 14;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs which are exposed through
+     * master and slave endpoints. Labels will not be interpreted or
+     * acted upon by Mesos itself. As opposed to the data field, labels
+     * will be kept in memory on master and slave processes. Therefore,
+     * labels should be used to tag executors with lightweight metadata.
+     * Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    public boolean hasLabels() {
+      return ((bitField0_ & 0x00000400) == 0x00000400);
+    }
+    /**
+     * <code>optional .mesos.Labels labels = 14;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs which are exposed through
+     * master and slave endpoints. Labels will not be interpreted or
+     * acted upon by Mesos itself. As opposed to the data field, labels
+     * will be kept in memory on master and slave processes. Therefore,
+     * labels should be used to tag executors with lightweight metadata.
+     * Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.Labels getLabels() {
+      return labels_;
+    }
+    /**
+     * <code>optional .mesos.Labels labels = 14;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs which are exposed through
+     * master and slave endpoints. Labels will not be interpreted or
+     * acted upon by Mesos itself. As opposed to the data field, labels
+     * will be kept in memory on master and slave processes. Therefore,
+     * labels should be used to tag executors with lightweight metadata.
+     * Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+      return labels_;
+    }
+
+    private void initFields() {
+      type_ = org.apache.mesos.Protos.ExecutorInfo.Type.UNKNOWN;
+      executorId_ = org.apache.mesos.Protos.ExecutorID.getDefaultInstance();
+      frameworkId_ = org.apache.mesos.Protos.FrameworkID.getDefaultInstance();
+      command_ = org.apache.mesos.Protos.CommandInfo.getDefaultInstance();
+      container_ = org.apache.mesos.Protos.ContainerInfo.getDefaultInstance();
+      resources_ = java.util.Collections.emptyList();
+      name_ = "";
+      source_ = "";
+      data_ = com.google.protobuf.ByteString.EMPTY;
+      discovery_ = org.apache.mesos.Protos.DiscoveryInfo.getDefaultInstance();
+      shutdownGracePeriod_ = org.apache.mesos.Protos.DurationInfo.getDefaultInstance();
+      labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasExecutorId()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!getExecutorId().isInitialized()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (hasFrameworkId()) {
+        if (!getFrameworkId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasCommand()) {
+        if (!getCommand().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasContainer()) {
+        if (!getContainer().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      for (int i = 0; i < getResourcesCount(); i++) {
+        if (!getResources(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasDiscovery()) {
+        if (!getDiscovery().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasShutdownGracePeriod()) {
+        if (!getShutdownGracePeriod().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasLabels()) {
+        if (!getLabels().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(1, executorId_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        output.writeBytes(4, data_);
+      }
+      for (int i = 0; i < resources_.size(); i++) {
+        output.writeMessage(5, resources_.get(i));
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeMessage(7, command_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeMessage(8, frameworkId_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeBytes(9, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeBytes(10, getSourceBytes());
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeMessage(11, container_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        output.writeMessage(12, discovery_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        output.writeMessage(13, shutdownGracePeriod_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        output.writeMessage(14, labels_);
+      }
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeEnum(15, type_.getNumber());
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, executorId_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(4, data_);
+      }
+      for (int i = 0; i < resources_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(5, resources_.get(i));
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(7, command_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(8, frameworkId_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(9, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(10, getSourceBytes());
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(11, container_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(12, discovery_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(13, shutdownGracePeriod_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(14, labels_);
+      }
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(15, type_.getNumber());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.ExecutorInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.ExecutorInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.ExecutorInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.ExecutorInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.ExecutorInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.ExecutorInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.ExecutorInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.ExecutorInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.ExecutorInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.ExecutorInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.ExecutorInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.ExecutorInfo}
+     *
+     * <pre>
+     **
+     * Describes information about an executor.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.ExecutorInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_ExecutorInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_ExecutorInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.ExecutorInfo.class, org.apache.mesos.Protos.ExecutorInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.ExecutorInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getExecutorIdFieldBuilder();
+          getFrameworkIdFieldBuilder();
+          getCommandFieldBuilder();
+          getContainerFieldBuilder();
+          getResourcesFieldBuilder();
+          getDiscoveryFieldBuilder();
+          getShutdownGracePeriodFieldBuilder();
+          getLabelsFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        type_ = org.apache.mesos.Protos.ExecutorInfo.Type.UNKNOWN;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (executorIdBuilder_ == null) {
+          executorId_ = org.apache.mesos.Protos.ExecutorID.getDefaultInstance();
+        } else {
+          executorIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        if (frameworkIdBuilder_ == null) {
+          frameworkId_ = org.apache.mesos.Protos.FrameworkID.getDefaultInstance();
+        } else {
+          frameworkIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        if (commandBuilder_ == null) {
+          command_ = org.apache.mesos.Protos.CommandInfo.getDefaultInstance();
+        } else {
+          commandBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        if (containerBuilder_ == null) {
+          container_ = org.apache.mesos.Protos.ContainerInfo.getDefaultInstance();
+        } else {
+          containerBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        if (resourcesBuilder_ == null) {
+          resources_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000020);
+        } else {
+          resourcesBuilder_.clear();
+        }
+        name_ = "";
+        bitField0_ = (bitField0_ & ~0x00000040);
+        source_ = "";
+        bitField0_ = (bitField0_ & ~0x00000080);
+        data_ = com.google.protobuf.ByteString.EMPTY;
+        bitField0_ = (bitField0_ & ~0x00000100);
+        if (discoveryBuilder_ == null) {
+          discovery_ = org.apache.mesos.Protos.DiscoveryInfo.getDefaultInstance();
+        } else {
+          discoveryBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000200);
+        if (shutdownGracePeriodBuilder_ == null) {
+          shutdownGracePeriod_ = org.apache.mesos.Protos.DurationInfo.getDefaultInstance();
+        } else {
+          shutdownGracePeriodBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000400);
+        if (labelsBuilder_ == null) {
+          labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+        } else {
+          labelsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000800);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_ExecutorInfo_descriptor;
+      }
+
+      public org.apache.mesos.Protos.ExecutorInfo getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.ExecutorInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.ExecutorInfo build() {
+        org.apache.mesos.Protos.ExecutorInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.ExecutorInfo buildPartial() {
+        org.apache.mesos.Protos.ExecutorInfo result = new org.apache.mesos.Protos.ExecutorInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.type_ = type_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (executorIdBuilder_ == null) {
+          result.executorId_ = executorId_;
+        } else {
+          result.executorId_ = executorIdBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        if (frameworkIdBuilder_ == null) {
+          result.frameworkId_ = frameworkId_;
+        } else {
+          result.frameworkId_ = frameworkIdBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        if (commandBuilder_ == null) {
+          result.command_ = command_;
+        } else {
+          result.command_ = commandBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        if (containerBuilder_ == null) {
+          result.container_ = container_;
+        } else {
+          result.container_ = containerBuilder_.build();
+        }
+        if (resourcesBuilder_ == null) {
+          if (((bitField0_ & 0x00000020) == 0x00000020)) {
+            resources_ = java.util.Collections.unmodifiableList(resources_);
+            bitField0_ = (bitField0_ & ~0x00000020);
+          }
+          result.resources_ = resources_;
+        } else {
+          result.resources_ = resourcesBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        result.name_ = name_;
+        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        result.source_ = source_;
+        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
+          to_bitField0_ |= 0x00000080;
+        }
+        result.data_ = data_;
+        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
+          to_bitField0_ |= 0x00000100;
+        }
+        if (discoveryBuilder_ == null) {
+          result.discovery_ = discovery_;
+        } else {
+          result.discovery_ = discoveryBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
+          to_bitField0_ |= 0x00000200;
+        }
+        if (shutdownGracePeriodBuilder_ == null) {
+          result.shutdownGracePeriod_ = shutdownGracePeriod_;
+        } else {
+          result.shutdownGracePeriod_ = shutdownGracePeriodBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
+          to_bitField0_ |= 0x00000400;
+        }
+        if (labelsBuilder_ == null) {
+          result.labels_ = labels_;
+        } else {
+          result.labels_ = labelsBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.ExecutorInfo) {
+          return mergeFrom((org.apache.mesos.Protos.ExecutorInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.ExecutorInfo other) {
+        if (other == org.apache.mesos.Protos.ExecutorInfo.getDefaultInstance()) return this;
+        if (other.hasType()) {
+          setType(other.getType());
+        }
+        if (other.hasExecutorId()) {
+          mergeExecutorId(other.getExecutorId());
+        }
+        if (other.hasFrameworkId()) {
+          mergeFrameworkId(other.getFrameworkId());
+        }
+        if (other.hasCommand()) {
+          mergeCommand(other.getCommand());
+        }
+        if (other.hasContainer()) {
+          mergeContainer(other.getContainer());
+        }
+        if (resourcesBuilder_ == null) {
+          if (!other.resources_.isEmpty()) {
+            if (resources_.isEmpty()) {
+              resources_ = other.resources_;
+              bitField0_ = (bitField0_ & ~0x00000020);
+            } else {
+              ensureResourcesIsMutable();
+              resources_.addAll(other.resources_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.resources_.isEmpty()) {
+            if (resourcesBuilder_.isEmpty()) {
+              resourcesBuilder_.dispose();
+              resourcesBuilder_ = null;
+              resources_ = other.resources_;
+              bitField0_ = (bitField0_ & ~0x00000020);
+              resourcesBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getResourcesFieldBuilder() : null;
+            } else {
+              resourcesBuilder_.addAllMessages(other.resources_);
+            }
+          }
+        }
+        if (other.hasName()) {
+          bitField0_ |= 0x00000040;
+          name_ = other.name_;
+          onChanged();
+        }
+        if (other.hasSource()) {
+          bitField0_ |= 0x00000080;
+          source_ = other.source_;
+          onChanged();
+        }
+        if (other.hasData()) {
+          setData(other.getData());
+        }
+        if (other.hasDiscovery()) {
+          mergeDiscovery(other.getDiscovery());
+        }
+        if (other.hasShutdownGracePeriod()) {
+          mergeShutdownGracePeriod(other.getShutdownGracePeriod());
+        }
+        if (other.hasLabels()) {
+          mergeLabels(other.getLabels());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasExecutorId()) {
+          
+          return false;
+        }
+        if (!getExecutorId().isInitialized()) {
+          
+          return false;
+        }
+        if (hasFrameworkId()) {
+          if (!getFrameworkId().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasCommand()) {
+          if (!getCommand().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasContainer()) {
+          if (!getContainer().isInitialized()) {
+            
+            return false;
+          }
+        }
+        for (int i = 0; i < getResourcesCount(); i++) {
+          if (!getResources(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasDiscovery()) {
+          if (!getDiscovery().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasShutdownGracePeriod()) {
+          if (!getShutdownGracePeriod().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasLabels()) {
+          if (!getLabels().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.ExecutorInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.ExecutorInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional .mesos.ExecutorInfo.Type type = 15;
+      private org.apache.mesos.Protos.ExecutorInfo.Type type_ = org.apache.mesos.Protos.ExecutorInfo.Type.UNKNOWN;
+      /**
+       * <code>optional .mesos.ExecutorInfo.Type type = 15;</code>
+       *
+       * <pre>
+       * For backwards compatibility, if this field is not set when using `LAUNCH`
+       * offer operation, Mesos will infer the type by checking if `command` is
+       * set (`CUSTOM`) or unset (`DEFAULT`). `type` must be set when using
+       * `LAUNCH_GROUP` offer operation.
+       *
+       * TODO(vinod): Add support for explicitly setting `type` to `DEFAULT `
+       * in `LAUNCH` offer operation.
+       * </pre>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.ExecutorInfo.Type type = 15;</code>
+       *
+       * <pre>
+       * For backwards compatibility, if this field is not set when using `LAUNCH`
+       * offer operation, Mesos will infer the type by checking if `command` is
+       * set (`CUSTOM`) or unset (`DEFAULT`). `type` must be set when using
+       * `LAUNCH_GROUP` offer operation.
+       *
+       * TODO(vinod): Add support for explicitly setting `type` to `DEFAULT `
+       * in `LAUNCH` offer operation.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.ExecutorInfo.Type getType() {
+        return type_;
+      }
+      /**
+       * <code>optional .mesos.ExecutorInfo.Type type = 15;</code>
+       *
+       * <pre>
+       * For backwards compatibility, if this field is not set when using `LAUNCH`
+       * offer operation, Mesos will infer the type by checking if `command` is
+       * set (`CUSTOM`) or unset (`DEFAULT`). `type` must be set when using
+       * `LAUNCH_GROUP` offer operation.
+       *
+       * TODO(vinod): Add support for explicitly setting `type` to `DEFAULT `
+       * in `LAUNCH` offer operation.
+       * </pre>
+       */
+      public Builder setType(org.apache.mesos.Protos.ExecutorInfo.Type value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000001;
+        type_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ExecutorInfo.Type type = 15;</code>
+       *
+       * <pre>
+       * For backwards compatibility, if this field is not set when using `LAUNCH`
+       * offer operation, Mesos will infer the type by checking if `command` is
+       * set (`CUSTOM`) or unset (`DEFAULT`). `type` must be set when using
+       * `LAUNCH_GROUP` offer operation.
+       *
+       * TODO(vinod): Add support for explicitly setting `type` to `DEFAULT `
+       * in `LAUNCH` offer operation.
+       * </pre>
+       */
+      public Builder clearType() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        type_ = org.apache.mesos.Protos.ExecutorInfo.Type.UNKNOWN;
+        onChanged();
+        return this;
+      }
+
+      // required .mesos.ExecutorID executor_id = 1;
+      private org.apache.mesos.Protos.ExecutorID executorId_ = org.apache.mesos.Protos.ExecutorID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.ExecutorID, org.apache.mesos.Protos.ExecutorID.Builder, org.apache.mesos.Protos.ExecutorIDOrBuilder> executorIdBuilder_;
+      /**
+       * <code>required .mesos.ExecutorID executor_id = 1;</code>
+       */
+      public boolean hasExecutorId() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required .mesos.ExecutorID executor_id = 1;</code>
+       */
+      public org.apache.mesos.Protos.ExecutorID getExecutorId() {
+        if (executorIdBuilder_ == null) {
+          return executorId_;
+        } else {
+          return executorIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>required .mesos.ExecutorID executor_id = 1;</code>
+       */
+      public Builder setExecutorId(org.apache.mesos.Protos.ExecutorID value) {
+        if (executorIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          executorId_ = value;
+          onChanged();
+        } else {
+          executorIdBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.ExecutorID executor_id = 1;</code>
+       */
+      public Builder setExecutorId(
+          org.apache.mesos.Protos.ExecutorID.Builder builderForValue) {
+        if (executorIdBuilder_ == null) {
+          executorId_ = builderForValue.build();
+          onChanged();
+        } else {
+          executorIdBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.ExecutorID executor_id = 1;</code>
+       */
+      public Builder mergeExecutorId(org.apache.mesos.Protos.ExecutorID value) {
+        if (executorIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              executorId_ != org.apache.mesos.Protos.ExecutorID.getDefaultInstance()) {
+            executorId_ =
+              org.apache.mesos.Protos.ExecutorID.newBuilder(executorId_).mergeFrom(value).buildPartial();
+          } else {
+            executorId_ = value;
+          }
+          onChanged();
+        } else {
+          executorIdBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.ExecutorID executor_id = 1;</code>
+       */
+      public Builder clearExecutorId() {
+        if (executorIdBuilder_ == null) {
+          executorId_ = org.apache.mesos.Protos.ExecutorID.getDefaultInstance();
+          onChanged();
+        } else {
+          executorIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>required .mesos.ExecutorID executor_id = 1;</code>
+       */
+      public org.apache.mesos.Protos.ExecutorID.Builder getExecutorIdBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getExecutorIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>required .mesos.ExecutorID executor_id = 1;</code>
+       */
+      public org.apache.mesos.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder() {
+        if (executorIdBuilder_ != null) {
+          return executorIdBuilder_.getMessageOrBuilder();
+        } else {
+          return executorId_;
+        }
+      }
+      /**
+       * <code>required .mesos.ExecutorID executor_id = 1;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.ExecutorID, org.apache.mesos.Protos.ExecutorID.Builder, org.apache.mesos.Protos.ExecutorIDOrBuilder> 
+          getExecutorIdFieldBuilder() {
+        if (executorIdBuilder_ == null) {
+          executorIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.ExecutorID, org.apache.mesos.Protos.ExecutorID.Builder, org.apache.mesos.Protos.ExecutorIDOrBuilder>(
+                  executorId_,
+                  getParentForChildren(),
+                  isClean());
+          executorId_ = null;
+        }
+        return executorIdBuilder_;
+      }
+
+      // optional .mesos.FrameworkID framework_id = 8;
+      private org.apache.mesos.Protos.FrameworkID frameworkId_ = org.apache.mesos.Protos.FrameworkID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.FrameworkID, org.apache.mesos.Protos.FrameworkID.Builder, org.apache.mesos.Protos.FrameworkIDOrBuilder> frameworkIdBuilder_;
+      /**
+       * <code>optional .mesos.FrameworkID framework_id = 8;</code>
+       *
+       * <pre>
+       * TODO(benh): Make this required.
+       * </pre>
+       */
+      public boolean hasFrameworkId() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.FrameworkID framework_id = 8;</code>
+       *
+       * <pre>
+       * TODO(benh): Make this required.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.FrameworkID getFrameworkId() {
+        if (frameworkIdBuilder_ == null) {
+          return frameworkId_;
+        } else {
+          return frameworkIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.FrameworkID framework_id = 8;</code>
+       *
+       * <pre>
+       * TODO(benh): Make this required.
+       * </pre>
+       */
+      public Builder setFrameworkId(org.apache.mesos.Protos.FrameworkID value) {
+        if (frameworkIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          frameworkId_ = value;
+          onChanged();
+        } else {
+          frameworkIdBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.FrameworkID framework_id = 8;</code>
+       *
+       * <pre>
+       * TODO(benh): Make this required.
+       * </pre>
+       */
+      public Builder setFrameworkId(
+          org.apache.mesos.Protos.FrameworkID.Builder builderForValue) {
+        if (frameworkIdBuilder_ == null) {
+          frameworkId_ = builderForValue.build();
+          onChanged();
+        } else {
+          frameworkIdBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.FrameworkID framework_id = 8;</code>
+       *
+       * <pre>
+       * TODO(benh): Make this required.
+       * </pre>
+       */
+      public Builder mergeFrameworkId(org.apache.mesos.Protos.FrameworkID value) {
+        if (frameworkIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) == 0x00000004) &&
+              frameworkId_ != org.apache.mesos.Protos.FrameworkID.getDefaultInstance()) {
+            frameworkId_ =
+              org.apache.mesos.Protos.FrameworkID.newBuilder(frameworkId_).mergeFrom(value).buildPartial();
+          } else {
+            frameworkId_ = value;
+          }
+          onChanged();
+        } else {
+          frameworkIdBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.FrameworkID framework_id = 8;</code>
+       *
+       * <pre>
+       * TODO(benh): Make this required.
+       * </pre>
+       */
+      public Builder clearFrameworkId() {
+        if (frameworkIdBuilder_ == null) {
+          frameworkId_ = org.apache.mesos.Protos.FrameworkID.getDefaultInstance();
+          onChanged();
+        } else {
+          frameworkIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.FrameworkID framework_id = 8;</code>
+       *
+       * <pre>
+       * TODO(benh): Make this required.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.FrameworkID.Builder getFrameworkIdBuilder() {
+        bitField0_ |= 0x00000004;
+        onChanged();
+        return getFrameworkIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.FrameworkID framework_id = 8;</code>
+       *
+       * <pre>
+       * TODO(benh): Make this required.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.FrameworkIDOrBuilder getFrameworkIdOrBuilder() {
+        if (frameworkIdBuilder_ != null) {
+          return frameworkIdBuilder_.getMessageOrBuilder();
+        } else {
+          return frameworkId_;
+        }
+      }
+      /**
+       * <code>optional .mesos.FrameworkID framework_id = 8;</code>
+       *
+       * <pre>
+       * TODO(benh): Make this required.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.FrameworkID, org.apache.mesos.Protos.FrameworkID.Builder, org.apache.mesos.Protos.FrameworkIDOrBuilder> 
+          getFrameworkIdFieldBuilder() {
+        if (frameworkIdBuilder_ == null) {
+          frameworkIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.FrameworkID, org.apache.mesos.Protos.FrameworkID.Builder, org.apache.mesos.Protos.FrameworkIDOrBuilder>(
+                  frameworkId_,
+                  getParentForChildren(),
+                  isClean());
+          frameworkId_ = null;
+        }
+        return frameworkIdBuilder_;
+      }
+
+      // optional .mesos.CommandInfo command = 7;
+      private org.apache.mesos.Protos.CommandInfo command_ = org.apache.mesos.Protos.CommandInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.CommandInfo, org.apache.mesos.Protos.CommandInfo.Builder, org.apache.mesos.Protos.CommandInfoOrBuilder> commandBuilder_;
+      /**
+       * <code>optional .mesos.CommandInfo command = 7;</code>
+       */
+      public boolean hasCommand() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.CommandInfo command = 7;</code>
+       */
+      public org.apache.mesos.Protos.CommandInfo getCommand() {
+        if (commandBuilder_ == null) {
+          return command_;
+        } else {
+          return commandBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.CommandInfo command = 7;</code>
+       */
+      public Builder setCommand(org.apache.mesos.Protos.CommandInfo value) {
+        if (commandBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          command_ = value;
+          onChanged();
+        } else {
+          commandBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CommandInfo command = 7;</code>
+       */
+      public Builder setCommand(
+          org.apache.mesos.Protos.CommandInfo.Builder builderForValue) {
+        if (commandBuilder_ == null) {
+          command_ = builderForValue.build();
+          onChanged();
+        } else {
+          commandBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CommandInfo command = 7;</code>
+       */
+      public Builder mergeCommand(org.apache.mesos.Protos.CommandInfo value) {
+        if (commandBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008) &&
+              command_ != org.apache.mesos.Protos.CommandInfo.getDefaultInstance()) {
+            command_ =
+              org.apache.mesos.Protos.CommandInfo.newBuilder(command_).mergeFrom(value).buildPartial();
+          } else {
+            command_ = value;
+          }
+          onChanged();
+        } else {
+          commandBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CommandInfo command = 7;</code>
+       */
+      public Builder clearCommand() {
+        if (commandBuilder_ == null) {
+          command_ = org.apache.mesos.Protos.CommandInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          commandBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CommandInfo command = 7;</code>
+       */
+      public org.apache.mesos.Protos.CommandInfo.Builder getCommandBuilder() {
+        bitField0_ |= 0x00000008;
+        onChanged();
+        return getCommandFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.CommandInfo command = 7;</code>
+       */
+      public org.apache.mesos.Protos.CommandInfoOrBuilder getCommandOrBuilder() {
+        if (commandBuilder_ != null) {
+          return commandBuilder_.getMessageOrBuilder();
+        } else {
+          return command_;
+        }
+      }
+      /**
+       * <code>optional .mesos.CommandInfo command = 7;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.CommandInfo, org.apache.mesos.Protos.CommandInfo.Builder, org.apache.mesos.Protos.CommandInfoOrBuilder> 
+          getCommandFieldBuilder() {
+        if (commandBuilder_ == null) {
+          commandBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.CommandInfo, org.apache.mesos.Protos.CommandInfo.Builder, org.apache.mesos.Protos.CommandInfoOrBuilder>(
+                  command_,
+                  getParentForChildren(),
+                  isClean());
+          command_ = null;
+        }
+        return commandBuilder_;
+      }
+
+      // optional .mesos.ContainerInfo container = 11;
+      private org.apache.mesos.Protos.ContainerInfo container_ = org.apache.mesos.Protos.ContainerInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.ContainerInfo, org.apache.mesos.Protos.ContainerInfo.Builder, org.apache.mesos.Protos.ContainerInfoOrBuilder> containerBuilder_;
+      /**
+       * <code>optional .mesos.ContainerInfo container = 11;</code>
+       *
+       * <pre>
+       * Executor provided with a container will launch the container
+       * with the executor's CommandInfo and we expect the container to
+       * act as a Mesos executor.
+       * </pre>
+       */
+      public boolean hasContainer() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional .mesos.ContainerInfo container = 11;</code>
+       *
+       * <pre>
+       * Executor provided with a container will launch the container
+       * with the executor's CommandInfo and we expect the container to
+       * act as a Mesos executor.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.ContainerInfo getContainer() {
+        if (containerBuilder_ == null) {
+          return container_;
+        } else {
+          return containerBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.ContainerInfo container = 11;</code>
+       *
+       * <pre>
+       * Executor provided with a container will launch the container
+       * with the executor's CommandInfo and we expect the container to
+       * act as a Mesos executor.
+       * </pre>
+       */
+      public Builder setContainer(org.apache.mesos.Protos.ContainerInfo value) {
+        if (containerBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          container_ = value;
+          onChanged();
+        } else {
+          containerBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ContainerInfo container = 11;</code>
+       *
+       * <pre>
+       * Executor provided with a container will launch the container
+       * with the executor's CommandInfo and we expect the container to
+       * act as a Mesos executor.
+       * </pre>
+       */
+      public Builder setContainer(
+          org.apache.mesos.Protos.ContainerInfo.Builder builderForValue) {
+        if (containerBuilder_ == null) {
+          container_ = builderForValue.build();
+          onChanged();
+        } else {
+          containerBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ContainerInfo container = 11;</code>
+       *
+       * <pre>
+       * Executor provided with a container will launch the container
+       * with the executor's CommandInfo and we expect the container to
+       * act as a Mesos executor.
+       * </pre>
+       */
+      public Builder mergeContainer(org.apache.mesos.Protos.ContainerInfo value) {
+        if (containerBuilder_ == null) {
+          if (((bitField0_ & 0x00000010) == 0x00000010) &&
+              container_ != org.apache.mesos.Protos.ContainerInfo.getDefaultInstance()) {
+            container_ =
+              org.apache.mesos.Protos.ContainerInfo.newBuilder(container_).mergeFrom(value).buildPartial();
+          } else {
+            container_ = value;
+          }
+          onChanged();
+        } else {
+          containerBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ContainerInfo container = 11;</code>
+       *
+       * <pre>
+       * Executor provided with a container will launch the container
+       * with the executor's CommandInfo and we expect the container to
+       * act as a Mesos executor.
+       * </pre>
+       */
+      public Builder clearContainer() {
+        if (containerBuilder_ == null) {
+          container_ = org.apache.mesos.Protos.ContainerInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          containerBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ContainerInfo container = 11;</code>
+       *
+       * <pre>
+       * Executor provided with a container will launch the container
+       * with the executor's CommandInfo and we expect the container to
+       * act as a Mesos executor.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.ContainerInfo.Builder getContainerBuilder() {
+        bitField0_ |= 0x00000010;
+        onChanged();
+        return getContainerFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.ContainerInfo container = 11;</code>
+       *
+       * <pre>
+       * Executor provided with a container will launch the container
+       * with the executor's CommandInfo and we expect the container to
+       * act as a Mesos executor.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.ContainerInfoOrBuilder getContainerOrBuilder() {
+        if (containerBuilder_ != null) {
+          return containerBuilder_.getMessageOrBuilder();
+        } else {
+          return container_;
+        }
+      }
+      /**
+       * <code>optional .mesos.ContainerInfo container = 11;</code>
+       *
+       * <pre>
+       * Executor provided with a container will launch the container
+       * with the executor's CommandInfo and we expect the container to
+       * act as a Mesos executor.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.ContainerInfo, org.apache.mesos.Protos.ContainerInfo.Builder, org.apache.mesos.Protos.ContainerInfoOrBuilder> 
+          getContainerFieldBuilder() {
+        if (containerBuilder_ == null) {
+          containerBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.ContainerInfo, org.apache.mesos.Protos.ContainerInfo.Builder, org.apache.mesos.Protos.ContainerInfoOrBuilder>(
+                  container_,
+                  getParentForChildren(),
+                  isClean());
+          container_ = null;
+        }
+        return containerBuilder_;
+      }
+
+      // repeated .mesos.Resource resources = 5;
+      private java.util.List<org.apache.mesos.Protos.Resource> resources_ =
+        java.util.Collections.emptyList();
+      private void ensureResourcesIsMutable() {
+        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
+          resources_ = new java.util.ArrayList<org.apache.mesos.Protos.Resource>(resources_);
+          bitField0_ |= 0x00000020;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder> resourcesBuilder_;
+
+      /**
+       * <code>repeated .mesos.Resource resources = 5;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.Resource> getResourcesList() {
+        if (resourcesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(resources_);
+        } else {
+          return resourcesBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 5;</code>
+       */
+      public int getResourcesCount() {
+        if (resourcesBuilder_ == null) {
+          return resources_.size();
+        } else {
+          return resourcesBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 5;</code>
+       */
+      public org.apache.mesos.Protos.Resource getResources(int index) {
+        if (resourcesBuilder_ == null) {
+          return resources_.get(index);
+        } else {
+          return resourcesBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 5;</code>
+       */
+      public Builder setResources(
+          int index, org.apache.mesos.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.set(index, value);
+          onChanged();
+        } else {
+          resourcesBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 5;</code>
+       */
+      public Builder setResources(
+          int index, org.apache.mesos.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 5;</code>
+       */
+      public Builder addResources(org.apache.mesos.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.add(value);
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 5;</code>
+       */
+      public Builder addResources(
+          int index, org.apache.mesos.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.add(index, value);
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 5;</code>
+       */
+      public Builder addResources(
+          org.apache.mesos.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.add(builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 5;</code>
+       */
+      public Builder addResources(
+          int index, org.apache.mesos.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 5;</code>
+       */
+      public Builder addAllResources(
+          java.lang.Iterable<? extends org.apache.mesos.Protos.Resource> values) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          super.addAll(values, resources_);
+          onChanged();
+        } else {
+          resourcesBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 5;</code>
+       */
+      public Builder clearResources() {
+        if (resourcesBuilder_ == null) {
+          resources_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000020);
+          onChanged();
+        } else {
+          resourcesBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 5;</code>
+       */
+      public Builder removeResources(int index) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.remove(index);
+          onChanged();
+        } else {
+          resourcesBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 5;</code>
+       */
+      public org.apache.mesos.Protos.Resource.Builder getResourcesBuilder(
+          int index) {
+        return getResourcesFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 5;</code>
+       */
+      public org.apache.mesos.Protos.ResourceOrBuilder getResourcesOrBuilder(
+          int index) {
+        if (resourcesBuilder_ == null) {
+          return resources_.get(index);  } else {
+          return resourcesBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 5;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+           getResourcesOrBuilderList() {
+        if (resourcesBuilder_ != null) {
+          return resourcesBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(resources_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 5;</code>
+       */
+      public org.apache.mesos.Protos.Resource.Builder addResourcesBuilder() {
+        return getResourcesFieldBuilder().addBuilder(
+            org.apache.mesos.Protos.Resource.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 5;</code>
+       */
+      public org.apache.mesos.Protos.Resource.Builder addResourcesBuilder(
+          int index) {
+        return getResourcesFieldBuilder().addBuilder(
+            index, org.apache.mesos.Protos.Resource.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 5;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.Resource.Builder> 
+           getResourcesBuilderList() {
+        return getResourcesFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder> 
+          getResourcesFieldBuilder() {
+        if (resourcesBuilder_ == null) {
+          resourcesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder>(
+                  resources_,
+                  ((bitField0_ & 0x00000020) == 0x00000020),
+                  getParentForChildren(),
+                  isClean());
+          resources_ = null;
+        }
+        return resourcesBuilder_;
+      }
+
+      // optional string name = 9;
+      private java.lang.Object name_ = "";
+      /**
+       * <code>optional string name = 9;</code>
+       */
+      public boolean hasName() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional string name = 9;</code>
+       */
+      public java.lang.String getName() {
+        java.lang.Object ref = name_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          name_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string name = 9;</code>
+       */
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        java.lang.Object ref = name_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          name_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string name = 9;</code>
+       */
+      public Builder setName(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000040;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string name = 9;</code>
+       */
+      public Builder clearName() {
+        bitField0_ = (bitField0_ & ~0x00000040);
+        name_ = getDefaultInstance().getName();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string name = 9;</code>
+       */
+      public Builder setNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000040;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional string source = 10 [deprecated = true];
+      private java.lang.Object source_ = "";
+      /**
+       * <code>optional string source = 10 [deprecated = true];</code>
+       *
+       * <pre>
+       * 'source' is an identifier style string used by frameworks to
+       * track the source of an executor. This is useful when it's
+       * possible for different executor ids to be related semantically.
+       *
+       * NOTE: 'source' is exposed alongside the resource usage of the
+       * executor via JSON on the slave. This allows users to import usage
+       * information into a time series database for monitoring.
+       *
+       * This field is deprecated since 1.0. Please use labels for
+       * free-form metadata instead.
+       * </pre>
+       */
+      @java.lang.Deprecated public boolean hasSource() {
+        return ((bitField0_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional string source = 10 [deprecated = true];</code>
+       *
+       * <pre>
+       * 'source' is an identifier style string used by frameworks to
+       * track the source of an executor. This is useful when it's
+       * possible for different executor ids to be related semantically.
+       *
+       * NOTE: 'source' is exposed alongside the resource usage of the
+       * executor via JSON on the slave. This allows users to import usage
+       * information into a time series database for monitoring.
+       *
+       * This field is deprecated since 1.0. Please use labels for
+       * free-form metadata instead.
+       * </pre>
+       */
+      @java.lang.Deprecated public java.lang.String getSource() {
+        java.lang.Object ref = source_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          source_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string source = 10 [deprecated = true];</code>
+       *
+       * <pre>
+       * 'source' is an identifier style string used by frameworks to
+       * track the source of an executor. This is useful when it's
+       * possible for different executor ids to be related semantically.
+       *
+       * NOTE: 'source' is exposed alongside the resource usage of the
+       * executor via JSON on the slave. This allows users to import usage
+       * information into a time series database for monitoring.
+       *
+       * This field is deprecated since 1.0. Please use labels for
+       * free-form metadata instead.
+       * </pre>
+       */
+      @java.lang.Deprecated public com.google.protobuf.ByteString
+          getSourceBytes() {
+        java.lang.Object ref = source_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          source_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string source = 10 [deprecated = true];</code>
+       *
+       * <pre>
+       * 'source' is an identifier style string used by frameworks to
+       * track the source of an executor. This is useful when it's
+       * possible for different executor ids to be related semantically.
+       *
+       * NOTE: 'source' is exposed alongside the resource usage of the
+       * executor via JSON on the slave. This allows users to import usage
+       * information into a time series database for monitoring.
+       *
+       * This field is deprecated since 1.0. Please use labels for
+       * free-form metadata instead.
+       * </pre>
+       */
+      @java.lang.Deprecated public Builder setSource(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000080;
+        source_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string source = 10 [deprecated = true];</code>
+       *
+       * <pre>
+       * 'source' is an identifier style string used by frameworks to
+       * track the source of an executor. This is useful when it's
+       * possible for different executor ids to be related semantically.
+       *
+       * NOTE: 'source' is exposed alongside the resource usage of the
+       * executor via JSON on the slave. This allows users to import usage
+       * information into a time series database for monitoring.
+       *
+       * This field is deprecated since 1.0. Please use labels for
+       * free-form metadata instead.
+       * </pre>
+       */
+      @java.lang.Deprecated public Builder clearSource() {
+        bitField0_ = (bitField0_ & ~0x00000080);
+        source_ = getDefaultInstance().getSource();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string source = 10 [deprecated = true];</code>
+       *
+       * <pre>
+       * 'source' is an identifier style string used by frameworks to
+       * track the source of an executor. This is useful when it's
+       * possible for different executor ids to be related semantically.
+       *
+       * NOTE: 'source' is exposed alongside the resource usage of the
+       * executor via JSON on the slave. This allows users to import usage
+       * information into a time series database for monitoring.
+       *
+       * This field is deprecated since 1.0. Please use labels for
+       * free-form metadata instead.
+       * </pre>
+       */
+      @java.lang.Deprecated public Builder setSourceBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000080;
+        source_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional bytes data = 4;
+      private com.google.protobuf.ByteString data_ = com.google.protobuf.ByteString.EMPTY;
+      /**
+       * <code>optional bytes data = 4;</code>
+       *
+       * <pre>
+       * This field can be used to pass arbitrary bytes to an executor.
+       * </pre>
+       */
+      public boolean hasData() {
+        return ((bitField0_ & 0x00000100) == 0x00000100);
+      }
+      /**
+       * <code>optional bytes data = 4;</code>
+       *
+       * <pre>
+       * This field can be used to pass arbitrary bytes to an executor.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString getData() {
+        return data_;
+      }
+      /**
+       * <code>optional bytes data = 4;</code>
+       *
+       * <pre>
+       * This field can be used to pass arbitrary bytes to an executor.
+       * </pre>
+       */
+      public Builder setData(com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000100;
+        data_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional bytes data = 4;</code>
+       *
+       * <pre>
+       * This field can be used to pass arbitrary bytes to an executor.
+       * </pre>
+       */
+      public Builder clearData() {
+        bitField0_ = (bitField0_ & ~0x00000100);
+        data_ = getDefaultInstance().getData();
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.DiscoveryInfo discovery = 12;
+      private org.apache.mesos.Protos.DiscoveryInfo discovery_ = org.apache.mesos.Protos.DiscoveryInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.DiscoveryInfo, org.apache.mesos.Protos.DiscoveryInfo.Builder, org.apache.mesos.Protos.DiscoveryInfoOrBuilder> discoveryBuilder_;
+      /**
+       * <code>optional .mesos.DiscoveryInfo discovery = 12;</code>
+       *
+       * <pre>
+       * Service discovery information for the executor. It is not
+       * interpreted or acted upon by Mesos. It is up to a service
+       * discovery system to use this information as needed and to handle
+       * executors without service discovery information.
+       * </pre>
+       */
+      public boolean hasDiscovery() {
+        return ((bitField0_ & 0x00000200) == 0x00000200);
+      }
+      /**
+       * <code>optional .mesos.DiscoveryInfo discovery = 12;</code>
+       *
+       * <pre>
+       * Service discovery information for the executor. It is not
+       * interpreted or acted upon by Mesos. It is up to a service
+       * discovery system to use this information as needed and to handle
+       * executors without service discovery information.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.DiscoveryInfo getDiscovery() {
+        if (discoveryBuilder_ == null) {
+          return discovery_;
+        } else {
+          return discoveryBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.DiscoveryInfo discovery = 12;</code>
+       *
+       * <pre>
+       * Service discovery information for the executor. It is not
+       * interpreted or acted upon by Mesos. It is up to a service
+       * discovery system to use this information as needed and to handle
+       * executors without service discovery information.
+       * </pre>
+       */
+      public Builder setDiscovery(org.apache.mesos.Protos.DiscoveryInfo value) {
+        if (discoveryBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          discovery_ = value;
+          onChanged();
+        } else {
+          discoveryBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000200;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.DiscoveryInfo discovery = 12;</code>
+       *
+       * <pre>
+       * Service discovery information for the executor. It is not
+       * interpreted or acted upon by Mesos. It is up to a service
+       * discovery system to use this information as needed and to handle
+       * executors without service discovery information.
+       * </pre>
+       */
+      public Builder setDiscovery(
+          org.apache.mesos.Protos.DiscoveryInfo.Builder builderForValue) {
+        if (discoveryBuilder_ == null) {
+          discovery_ = builderForValue.build();
+          onChanged();
+        } else {
+          discoveryBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000200;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.DiscoveryInfo discovery = 12;</code>
+       *
+       * <pre>
+       * Service discovery information for the executor. It is not
+       * interpreted or acted upon by Mesos. It is up to a service
+       * discovery system to use this information as needed and to handle
+       * executors without service discovery information.
+       * </pre>
+       */
+      public Builder mergeDiscovery(org.apache.mesos.Protos.DiscoveryInfo value) {
+        if (discoveryBuilder_ == null) {
+          if (((bitField0_ & 0x00000200) == 0x00000200) &&
+              discovery_ != org.apache.mesos.Protos.DiscoveryInfo.getDefaultInstance()) {
+            discovery_ =
+              org.apache.mesos.Protos.DiscoveryInfo.newBuilder(discovery_).mergeFrom(value).buildPartial();
+          } else {
+            discovery_ = value;
+          }
+          onChanged();
+        } else {
+          discoveryBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000200;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.DiscoveryInfo discovery = 12;</code>
+       *
+       * <pre>
+       * Service discovery information for the executor. It is not
+       * interpreted or acted upon by Mesos. It is up to a service
+       * discovery system to use this information as needed and to handle
+       * executors without service discovery information.
+       * </pre>
+       */
+      public Builder clearDiscovery() {
+        if (discoveryBuilder_ == null) {
+          discovery_ = org.apache.mesos.Protos.DiscoveryInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          discoveryBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000200);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.DiscoveryInfo discovery = 12;</code>
+       *
+       * <pre>
+       * Service discovery information for the executor. It is not
+       * interpreted or acted upon by Mesos. It is up to a service
+       * discovery system to use this information as needed and to handle
+       * executors without service discovery information.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.DiscoveryInfo.Builder getDiscoveryBuilder() {
+        bitField0_ |= 0x00000200;
+        onChanged();
+        return getDiscoveryFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.DiscoveryInfo discovery = 12;</code>
+       *
+       * <pre>
+       * Service discovery information for the executor. It is not
+       * interpreted or acted upon by Mesos. It is up to a service
+       * discovery system to use this information as needed and to handle
+       * executors without service discovery information.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.DiscoveryInfoOrBuilder getDiscoveryOrBuilder() {
+        if (discoveryBuilder_ != null) {
+          return discoveryBuilder_.getMessageOrBuilder();
+        } else {
+          return discovery_;
+        }
+      }
+      /**
+       * <code>optional .mesos.DiscoveryInfo discovery = 12;</code>
+       *
+       * <pre>
+       * Service discovery information for the executor. It is not
+       * interpreted or acted upon by Mesos. It is up to a service
+       * discovery system to use this information as needed and to handle
+       * executors without service discovery information.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.DiscoveryInfo, org.apache.mesos.Protos.DiscoveryInfo.Builder, org.apache.mesos.Protos.DiscoveryInfoOrBuilder> 
+          getDiscoveryFieldBuilder() {
+        if (discoveryBuilder_ == null) {
+          discoveryBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.DiscoveryInfo, org.apache.mesos.Protos.DiscoveryInfo.Builder, org.apache.mesos.Protos.DiscoveryInfoOrBuilder>(
+                  discovery_,
+                  getParentForChildren(),
+                  isClean());
+          discovery_ = null;
+        }
+        return discoveryBuilder_;
+      }
+
+      // optional .mesos.DurationInfo shutdown_grace_period = 13;
+      private org.apache.mesos.Protos.DurationInfo shutdownGracePeriod_ = org.apache.mesos.Protos.DurationInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.DurationInfo, org.apache.mesos.Protos.DurationInfo.Builder, org.apache.mesos.Protos.DurationInfoOrBuilder> shutdownGracePeriodBuilder_;
+      /**
+       * <code>optional .mesos.DurationInfo shutdown_grace_period = 13;</code>
+       *
+       * <pre>
+       * When shutting down an executor the agent will wait in a
+       * best-effort manner for the grace period specified here
+       * before forcibly destroying the container. The executor
+       * must not assume that it will always be allotted the full
+       * grace period, as the agent may decide to allot a shorter
+       * period and failures / forcible terminations may occur.
+       * </pre>
+       */
+      public boolean hasShutdownGracePeriod() {
+        return ((bitField0_ & 0x00000400) == 0x00000400);
+      }
+      /**
+       * <code>optional .mesos.DurationInfo shutdown_grace_period = 13;</code>
+       *
+       * <pre>
+       * When shutting down an executor the agent will wait in a
+       * best-effort manner for the grace period specified here
+       * before forcibly destroying the container. The executor
+       * must not assume that it will always be allotted the full
+       * grace period, as the agent may decide to allot a shorter
+       * period and failures / forcible terminations may occur.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.DurationInfo getShutdownGracePeriod() {
+        if (shutdownGracePeriodBuilder_ == null) {
+          return shutdownGracePeriod_;
+        } else {
+          return shutdownGracePeriodBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.DurationInfo shutdown_grace_period = 13;</code>
+       *
+       * <pre>
+       * When shutting down an executor the agent will wait in a
+       * best-effort manner for the grace period specified here
+       * before forcibly destroying the container. The executor
+       * must not assume that it will always be allotted the full
+       * grace period, as the agent may decide to allot a shorter
+       * period and failures / forcible terminations may occur.
+       * </pre>
+       */
+      public Builder setShutdownGracePeriod(org.apache.mesos.Protos.DurationInfo value) {
+        if (shutdownGracePeriodBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          shutdownGracePeriod_ = value;
+          onChanged();
+        } else {
+          shutdownGracePeriodBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000400;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.DurationInfo shutdown_grace_period = 13;</code>
+       *
+       * <pre>
+       * When shutting down an executor the agent will wait in a
+       * best-effort manner for the grace period specified here
+       * before forcibly destroying the container. The executor
+       * must not assume that it will always be allotted the full
+       * grace period, as the agent may decide to allot a shorter
+       * period and failures / forcible terminations may occur.
+       * </pre>
+       */
+      public Builder setShutdownGracePeriod(
+          org.apache.mesos.Protos.DurationInfo.Builder builderForValue) {
+        if (shutdownGracePeriodBuilder_ == null) {
+          shutdownGracePeriod_ = builderForValue.build();
+          onChanged();
+        } else {
+          shutdownGracePeriodBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000400;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.DurationInfo shutdown_grace_period = 13;</code>
+       *
+       * <pre>
+       * When shutting down an executor the agent will wait in a
+       * best-effort manner for the grace period specified here
+       * before forcibly destroying the container. The executor
+       * must not assume that it will always be allotted the full
+       * grace period, as the agent may decide to allot a shorter
+       * period and failures / forcible terminations may occur.
+       * </pre>
+       */
+      public Builder mergeShutdownGracePeriod(org.apache.mesos.Protos.DurationInfo value) {
+        if (shutdownGracePeriodBuilder_ == null) {
+          if (((bitField0_ & 0x00000400) == 0x00000400) &&
+              shutdownGracePeriod_ != org.apache.mesos.Protos.DurationInfo.getDefaultInstance()) {
+            shutdownGracePeriod_ =
+              org.apache.mesos.Protos.DurationInfo.newBuilder(shutdownGracePeriod_).mergeFrom(value).buildPartial();
+          } else {
+            shutdownGracePeriod_ = value;
+          }
+          onChanged();
+        } else {
+          shutdownGracePeriodBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000400;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.DurationInfo shutdown_grace_period = 13;</code>
+       *
+       * <pre>
+       * When shutting down an executor the agent will wait in a
+       * best-effort manner for the grace period specified here
+       * before forcibly destroying the container. The executor
+       * must not assume that it will always be allotted the full
+       * grace period, as the agent may decide to allot a shorter
+       * period and failures / forcible terminations may occur.
+       * </pre>
+       */
+      public Builder clearShutdownGracePeriod() {
+        if (shutdownGracePeriodBuilder_ == null) {
+          shutdownGracePeriod_ = org.apache.mesos.Protos.DurationInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          shutdownGracePeriodBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000400);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.DurationInfo shutdown_grace_period = 13;</code>
+       *
+       * <pre>
+       * When shutting down an executor the agent will wait in a
+       * best-effort manner for the grace period specified here
+       * before forcibly destroying the container. The executor
+       * must not assume that it will always be allotted the full
+       * grace period, as the agent may decide to allot a shorter
+       * period and failures / forcible terminations may occur.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.DurationInfo.Builder getShutdownGracePeriodBuilder() {
+        bitField0_ |= 0x00000400;
+        onChanged();
+        return getShutdownGracePeriodFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.DurationInfo shutdown_grace_period = 13;</code>
+       *
+       * <pre>
+       * When shutting down an executor the agent will wait in a
+       * best-effort manner for the grace period specified here
+       * before forcibly destroying the container. The executor
+       * must not assume that it will always be allotted the full
+       * grace period, as the agent may decide to allot a shorter
+       * period and failures / forcible terminations may occur.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.DurationInfoOrBuilder getShutdownGracePeriodOrBuilder() {
+        if (shutdownGracePeriodBuilder_ != null) {
+          return shutdownGracePeriodBuilder_.getMessageOrBuilder();
+        } else {
+          return shutdownGracePeriod_;
+        }
+      }
+      /**
+       * <code>optional .mesos.DurationInfo shutdown_grace_period = 13;</code>
+       *
+       * <pre>
+       * When shutting down an executor the agent will wait in a
+       * best-effort manner for the grace period specified here
+       * before forcibly destroying the container. The executor
+       * must not assume that it will always be allotted the full
+       * grace period, as the agent may decide to allot a shorter
+       * period and failures / forcible terminations may occur.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.DurationInfo, org.apache.mesos.Protos.DurationInfo.Builder, org.apache.mesos.Protos.DurationInfoOrBuilder> 
+          getShutdownGracePeriodFieldBuilder() {
+        if (shutdownGracePeriodBuilder_ == null) {
+          shutdownGracePeriodBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.DurationInfo, org.apache.mesos.Protos.DurationInfo.Builder, org.apache.mesos.Protos.DurationInfoOrBuilder>(
+                  shutdownGracePeriod_,
+                  getParentForChildren(),
+                  isClean());
+          shutdownGracePeriod_ = null;
+        }
+        return shutdownGracePeriodBuilder_;
+      }
+
+      // optional .mesos.Labels labels = 14;
+      private org.apache.mesos.Protos.Labels labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Labels, org.apache.mesos.Protos.Labels.Builder, org.apache.mesos.Protos.LabelsOrBuilder> labelsBuilder_;
+      /**
+       * <code>optional .mesos.Labels labels = 14;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and slave endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and slave processes. Therefore,
+       * labels should be used to tag executors with lightweight metadata.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public boolean hasLabels() {
+        return ((bitField0_ & 0x00000800) == 0x00000800);
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 14;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and slave endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and slave processes. Therefore,
+       * labels should be used to tag executors with lightweight metadata.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Labels getLabels() {
+        if (labelsBuilder_ == null) {
+          return labels_;
+        } else {
+          return labelsBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 14;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and slave endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and slave processes. Therefore,
+       * labels should be used to tag executors with lightweight metadata.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public Builder setLabels(org.apache.mesos.Protos.Labels value) {
+        if (labelsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          labels_ = value;
+          onChanged();
+        } else {
+          labelsBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 14;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and slave endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and slave processes. Therefore,
+       * labels should be used to tag executors with lightweight metadata.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public Builder setLabels(
+          org.apache.mesos.Protos.Labels.Builder builderForValue) {
+        if (labelsBuilder_ == null) {
+          labels_ = builderForValue.build();
+          onChanged();
+        } else {
+          labelsBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 14;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and slave endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and slave processes. Therefore,
+       * labels should be used to tag executors with lightweight metadata.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public Builder mergeLabels(org.apache.mesos.Protos.Labels value) {
+        if (labelsBuilder_ == null) {
+          if (((bitField0_ & 0x00000800) == 0x00000800) &&
+              labels_ != org.apache.mesos.Protos.Labels.getDefaultInstance()) {
+            labels_ =
+              org.apache.mesos.Protos.Labels.newBuilder(labels_).mergeFrom(value).buildPartial();
+          } else {
+            labels_ = value;
+          }
+          onChanged();
+        } else {
+          labelsBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 14;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and slave endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and slave processes. Therefore,
+       * labels should be used to tag executors with lightweight metadata.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public Builder clearLabels() {
+        if (labelsBuilder_ == null) {
+          labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+          onChanged();
+        } else {
+          labelsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000800);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 14;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and slave endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and slave processes. Therefore,
+       * labels should be used to tag executors with lightweight metadata.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Labels.Builder getLabelsBuilder() {
+        bitField0_ |= 0x00000800;
+        onChanged();
+        return getLabelsFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 14;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and slave endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and slave processes. Therefore,
+       * labels should be used to tag executors with lightweight metadata.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+        if (labelsBuilder_ != null) {
+          return labelsBuilder_.getMessageOrBuilder();
+        } else {
+          return labels_;
+        }
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 14;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and slave endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and slave processes. Therefore,
+       * labels should be used to tag executors with lightweight metadata.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Labels, org.apache.mesos.Protos.Labels.Builder, org.apache.mesos.Protos.LabelsOrBuilder> 
+          getLabelsFieldBuilder() {
+        if (labelsBuilder_ == null) {
+          labelsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Labels, org.apache.mesos.Protos.Labels.Builder, org.apache.mesos.Protos.LabelsOrBuilder>(
+                  labels_,
+                  getParentForChildren(),
+                  isClean());
+          labels_ = null;
+        }
+        return labelsBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.ExecutorInfo)
+    }
+
+    static {
+      defaultInstance = new ExecutorInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.ExecutorInfo)
+  }
+
+  public interface DomainInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional .mesos.DomainInfo.FaultDomain fault_domain = 1;
+    /**
+     * <code>optional .mesos.DomainInfo.FaultDomain fault_domain = 1;</code>
+     */
+    boolean hasFaultDomain();
+    /**
+     * <code>optional .mesos.DomainInfo.FaultDomain fault_domain = 1;</code>
+     */
+    org.apache.mesos.Protos.DomainInfo.FaultDomain getFaultDomain();
+    /**
+     * <code>optional .mesos.DomainInfo.FaultDomain fault_domain = 1;</code>
+     */
+    org.apache.mesos.Protos.DomainInfo.FaultDomainOrBuilder getFaultDomainOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.DomainInfo}
+   *
+   * <pre>
+   **
+   * Describes a domain. A domain is a collection of hosts that have
+   * similar characteristics. Mesos currently only supports "fault
+   * domains", which identify groups of hosts with similar failure
+   * characteristics.
+   *
+   * Frameworks can generally assume that network links between hosts in
+   * the same fault domain have lower latency, higher bandwidth, and better
+   * availability than network links between hosts in different domains.
+   * Schedulers may prefer to place network-intensive workloads in the
+   * same domain, as this may improve performance. Conversely, a single
+   * failure that affects a host in a domain may be more likely to
+   * affect other hosts in the same domain; hence, schedulers may prefer
+   * to place workloads that require high availability in multiple
+   * domains. (For example, all the hosts in a single rack might lose
+   * power or network connectivity simultaneously.)
+   *
+   * There are two kinds of fault domains: regions and zones. Regions
+   * offer the highest degree of fault isolation, but network latency
+   * between regions is typically high (typically &gt;50 ms). Zones offer a
+   * modest degree of fault isolation along with reasonably low network
+   * latency (typically &lt;10 ms).
+   *
+   * The mapping from fault domains to physical infrastructure is up to
+   * the operator to configure. In cloud environments, regions and zones
+   * can be mapped to the "region" and "availability zone" concepts
+   * exposed by most cloud providers, respectively. In on-premise
+   * deployments, regions and zones can be mapped to data centers and
+   * racks, respectively.
+   *
+   * Both masters and agents can be configured with domains. Frameworks
+   * can compare the domains of two hosts to determine if the hosts are
+   * in the same zone, in different zones in the same region, or in
+   * different regions. Note that all masters in a given Mesos cluster
+   * must be in the same region.
+   * </pre>
+   */
+  public static final class DomainInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements DomainInfoOrBuilder {
+    // Use DomainInfo.newBuilder() to construct.
+    private DomainInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private DomainInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final DomainInfo defaultInstance;
+    public static DomainInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public DomainInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private DomainInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              org.apache.mesos.Protos.DomainInfo.FaultDomain.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                subBuilder = faultDomain_.toBuilder();
+              }
+              faultDomain_ = input.readMessage(org.apache.mesos.Protos.DomainInfo.FaultDomain.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(faultDomain_);
+                faultDomain_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_DomainInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_DomainInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.DomainInfo.class, org.apache.mesos.Protos.DomainInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<DomainInfo> PARSER =
+        new com.google.protobuf.AbstractParser<DomainInfo>() {
+      public DomainInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new DomainInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<DomainInfo> getParserForType() {
+      return PARSER;
+    }
+
+    public interface FaultDomainOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required .mesos.DomainInfo.FaultDomain.RegionInfo region = 1;
+      /**
+       * <code>required .mesos.DomainInfo.FaultDomain.RegionInfo region = 1;</code>
+       */
+      boolean hasRegion();
+      /**
+       * <code>required .mesos.DomainInfo.FaultDomain.RegionInfo region = 1;</code>
+       */
+      org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo getRegion();
+      /**
+       * <code>required .mesos.DomainInfo.FaultDomain.RegionInfo region = 1;</code>
+       */
+      org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfoOrBuilder getRegionOrBuilder();
+
+      // required .mesos.DomainInfo.FaultDomain.ZoneInfo zone = 2;
+      /**
+       * <code>required .mesos.DomainInfo.FaultDomain.ZoneInfo zone = 2;</code>
+       */
+      boolean hasZone();
+      /**
+       * <code>required .mesos.DomainInfo.FaultDomain.ZoneInfo zone = 2;</code>
+       */
+      org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo getZone();
+      /**
+       * <code>required .mesos.DomainInfo.FaultDomain.ZoneInfo zone = 2;</code>
+       */
+      org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfoOrBuilder getZoneOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.DomainInfo.FaultDomain}
+     */
+    public static final class FaultDomain extends
+        com.google.protobuf.GeneratedMessage
+        implements FaultDomainOrBuilder {
+      // Use FaultDomain.newBuilder() to construct.
+      private FaultDomain(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private FaultDomain(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final FaultDomain defaultInstance;
+      public static FaultDomain getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public FaultDomain getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private FaultDomain(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = region_.toBuilder();
+                }
+                region_ = input.readMessage(org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(region_);
+                  region_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+              case 18: {
+                org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                  subBuilder = zone_.toBuilder();
+                }
+                zone_ = input.readMessage(org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(zone_);
+                  zone_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000002;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_DomainInfo_FaultDomain_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_DomainInfo_FaultDomain_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.DomainInfo.FaultDomain.class, org.apache.mesos.Protos.DomainInfo.FaultDomain.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<FaultDomain> PARSER =
+          new com.google.protobuf.AbstractParser<FaultDomain>() {
+        public FaultDomain parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new FaultDomain(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<FaultDomain> getParserForType() {
+        return PARSER;
+      }
+
+      public interface RegionInfoOrBuilder
+          extends com.google.protobuf.MessageOrBuilder {
+
+        // required string name = 1;
+        /**
+         * <code>required string name = 1;</code>
+         */
+        boolean hasName();
+        /**
+         * <code>required string name = 1;</code>
+         */
+        java.lang.String getName();
+        /**
+         * <code>required string name = 1;</code>
+         */
+        com.google.protobuf.ByteString
+            getNameBytes();
+      }
+      /**
+       * Protobuf type {@code mesos.DomainInfo.FaultDomain.RegionInfo}
+       */
+      public static final class RegionInfo extends
+          com.google.protobuf.GeneratedMessage
+          implements RegionInfoOrBuilder {
+        // Use RegionInfo.newBuilder() to construct.
+        private RegionInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+          super(builder);
+          this.unknownFields = builder.getUnknownFields();
+        }
+        private RegionInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+        private static final RegionInfo defaultInstance;
+        public static RegionInfo getDefaultInstance() {
+          return defaultInstance;
+        }
+
+        public RegionInfo getDefaultInstanceForType() {
+          return defaultInstance;
+        }
+
+        private final com.google.protobuf.UnknownFieldSet unknownFields;
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet
+            getUnknownFields() {
+          return this.unknownFields;
+        }
+        private RegionInfo(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          initFields();
+          int mutable_bitField0_ = 0;
+          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+              com.google.protobuf.UnknownFieldSet.newBuilder();
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(input, unknownFields,
+                                         extensionRegistry, tag)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 10: {
+                  bitField0_ |= 0x00000001;
+                  name_ = input.readBytes();
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw e.setUnfinishedMessage(this);
+          } catch (java.io.IOException e) {
+            throw new com.google.protobuf.InvalidProtocolBufferException(
+                e.getMessage()).setUnfinishedMessage(this);
+          } finally {
+            this.unknownFields = unknownFields.build();
+            makeExtensionsImmutable();
+          }
+        }
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_DomainInfo_FaultDomain_RegionInfo_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_DomainInfo_FaultDomain_RegionInfo_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo.class, org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo.Builder.class);
+        }
+
+        public static com.google.protobuf.Parser<RegionInfo> PARSER =
+            new com.google.protobuf.AbstractParser<RegionInfo>() {
+          public RegionInfo parsePartialFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return new RegionInfo(input, extensionRegistry);
+          }
+        };
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<RegionInfo> getParserForType() {
+          return PARSER;
+        }
+
+        private int bitField0_;
+        // required string name = 1;
+        public static final int NAME_FIELD_NUMBER = 1;
+        private java.lang.Object name_;
+        /**
+         * <code>required string name = 1;</code>
+         */
+        public boolean hasName() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required string name = 1;</code>
+         */
+        public java.lang.String getName() {
+          java.lang.Object ref = name_;
+          if (ref instanceof java.lang.String) {
+            return (java.lang.String) ref;
+          } else {
+            com.google.protobuf.ByteString bs = 
+                (com.google.protobuf.ByteString) ref;
+            java.lang.String s = bs.toStringUtf8();
+            if (bs.isValidUtf8()) {
+              name_ = s;
+            }
+            return s;
+          }
+        }
+        /**
+         * <code>required string name = 1;</code>
+         */
+        public com.google.protobuf.ByteString
+            getNameBytes() {
+          java.lang.Object ref = name_;
+          if (ref instanceof java.lang.String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            name_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+
+        private void initFields() {
+          name_ = "";
+        }
+        private byte memoizedIsInitialized = -1;
+        public final boolean isInitialized() {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized != -1) return isInitialized == 1;
+
+          if (!hasName()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+          memoizedIsInitialized = 1;
+          return true;
+        }
+
+        public void writeTo(com.google.protobuf.CodedOutputStream output)
+                            throws java.io.IOException {
+          getSerializedSize();
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            output.writeBytes(1, getNameBytes());
+          }
+          getUnknownFields().writeTo(output);
+        }
+
+        private int memoizedSerializedSize = -1;
+        public int getSerializedSize() {
+          int size = memoizedSerializedSize;
+          if (size != -1) return size;
+
+          size = 0;
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeBytesSize(1, getNameBytes());
+          }
+          size += getUnknownFields().getSerializedSize();
+          memoizedSerializedSize = size;
+          return size;
+        }
+
+        private static final long serialVersionUID = 0L;
+        @java.lang.Override
+        protected java.lang.Object writeReplace()
+            throws java.io.ObjectStreamException {
+          return super.writeReplace();
+        }
+
+        public static org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo parseFrom(
+            com.google.protobuf.ByteString data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo parseFrom(
+            com.google.protobuf.ByteString data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo parseFrom(byte[] data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo parseFrom(
+            byte[] data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo parseFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo parseFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo parseDelimitedFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input);
+        }
+        public static org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo parseDelimitedFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo parseFrom(
+            com.google.protobuf.CodedInputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo parseFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+
+        public static Builder newBuilder() { return Builder.create(); }
+        public Builder newBuilderForType() { return newBuilder(); }
+        public static Builder newBuilder(org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo prototype) {
+          return newBuilder().mergeFrom(prototype);
+        }
+        public Builder toBuilder() { return newBuilder(this); }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          Builder builder = new Builder(parent);
+          return builder;
+        }
+        /**
+         * Protobuf type {@code mesos.DomainInfo.FaultDomain.RegionInfo}
+         */
+        public static final class Builder extends
+            com.google.protobuf.GeneratedMessage.Builder<Builder>
+           implements org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfoOrBuilder {
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.Protos.internal_static_mesos_DomainInfo_FaultDomain_RegionInfo_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.Protos.internal_static_mesos_DomainInfo_FaultDomain_RegionInfo_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo.class, org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo.Builder.class);
+          }
+
+          // Construct using org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo.newBuilder()
+          private Builder() {
+            maybeForceBuilderInitialization();
+          }
+
+          private Builder(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            super(parent);
+            maybeForceBuilderInitialization();
+          }
+          private void maybeForceBuilderInitialization() {
+            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            }
+          }
+          private static Builder create() {
+            return new Builder();
+          }
+
+          public Builder clear() {
+            super.clear();
+            name_ = "";
+            bitField0_ = (bitField0_ & ~0x00000001);
+            return this;
+          }
+
+          public Builder clone() {
+            return create().mergeFrom(buildPartial());
+          }
+
+          public com.google.protobuf.Descriptors.Descriptor
+              getDescriptorForType() {
+            return org.apache.mesos.Protos.internal_static_mesos_DomainInfo_FaultDomain_RegionInfo_descriptor;
+          }
+
+          public org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo getDefaultInstanceForType() {
+            return org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo.getDefaultInstance();
+          }
+
+          public org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo build() {
+            org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo result = buildPartial();
+            if (!result.isInitialized()) {
+              throw newUninitializedMessageException(result);
+            }
+            return result;
+          }
+
+          public org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo buildPartial() {
+            org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo result = new org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo(this);
+            int from_bitField0_ = bitField0_;
+            int to_bitField0_ = 0;
+            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+              to_bitField0_ |= 0x00000001;
+            }
+            result.name_ = name_;
+            result.bitField0_ = to_bitField0_;
+            onBuilt();
+            return result;
+          }
+
+          public Builder mergeFrom(com.google.protobuf.Message other) {
+            if (other instanceof org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo) {
+              return mergeFrom((org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo)other);
+            } else {
+              super.mergeFrom(other);
+              return this;
+            }
+          }
+
+          public Builder mergeFrom(org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo other) {
+            if (other == org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo.getDefaultInstance()) return this;
+            if (other.hasName()) {
+              bitField0_ |= 0x00000001;
+              name_ = other.name_;
+              onChanged();
+            }
+            this.mergeUnknownFields(other.getUnknownFields());
+            return this;
+          }
+
+          public final boolean isInitialized() {
+            if (!hasName()) {
+              
+              return false;
+            }
+            return true;
+          }
+
+          public Builder mergeFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo parsedMessage = null;
+            try {
+              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              parsedMessage = (org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo) e.getUnfinishedMessage();
+              throw e;
+            } finally {
+              if (parsedMessage != null) {
+                mergeFrom(parsedMessage);
+              }
+            }
+            return this;
+          }
+          private int bitField0_;
+
+          // required string name = 1;
+          private java.lang.Object name_ = "";
+          /**
+           * <code>required string name = 1;</code>
+           */
+          public boolean hasName() {
+            return ((bitField0_ & 0x00000001) == 0x00000001);
+          }
+          /**
+           * <code>required string name = 1;</code>
+           */
+          public java.lang.String getName() {
+            java.lang.Object ref = name_;
+            if (!(ref instanceof java.lang.String)) {
+              java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                  .toStringUtf8();
+              name_ = s;
+              return s;
+            } else {
+              return (java.lang.String) ref;
+            }
+          }
+          /**
+           * <code>required string name = 1;</code>
+           */
+          public com.google.protobuf.ByteString
+              getNameBytes() {
+            java.lang.Object ref = name_;
+            if (ref instanceof String) {
+              com.google.protobuf.ByteString b = 
+                  com.google.protobuf.ByteString.copyFromUtf8(
+                      (java.lang.String) ref);
+              name_ = b;
+              return b;
+            } else {
+              return (com.google.protobuf.ByteString) ref;
+            }
+          }
+          /**
+           * <code>required string name = 1;</code>
+           */
+          public Builder setName(
+              java.lang.String value) {
+            if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+            name_ = value;
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>required string name = 1;</code>
+           */
+          public Builder clearName() {
+            bitField0_ = (bitField0_ & ~0x00000001);
+            name_ = getDefaultInstance().getName();
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>required string name = 1;</code>
+           */
+          public Builder setNameBytes(
+              com.google.protobuf.ByteString value) {
+            if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+            name_ = value;
+            onChanged();
+            return this;
+          }
+
+          // @@protoc_insertion_point(builder_scope:mesos.DomainInfo.FaultDomain.RegionInfo)
+        }
+
+        static {
+          defaultInstance = new RegionInfo(true);
+          defaultInstance.initFields();
+        }
+
+        // @@protoc_insertion_point(class_scope:mesos.DomainInfo.FaultDomain.RegionInfo)
+      }
+
+      public interface ZoneInfoOrBuilder
+          extends com.google.protobuf.MessageOrBuilder {
+
+        // required string name = 1;
+        /**
+         * <code>required string name = 1;</code>
+         */
+        boolean hasName();
+        /**
+         * <code>required string name = 1;</code>
+         */
+        java.lang.String getName();
+        /**
+         * <code>required string name = 1;</code>
+         */
+        com.google.protobuf.ByteString
+            getNameBytes();
+      }
+      /**
+       * Protobuf type {@code mesos.DomainInfo.FaultDomain.ZoneInfo}
+       */
+      public static final class ZoneInfo extends
+          com.google.protobuf.GeneratedMessage
+          implements ZoneInfoOrBuilder {
+        // Use ZoneInfo.newBuilder() to construct.
+        private ZoneInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+          super(builder);
+          this.unknownFields = builder.getUnknownFields();
+        }
+        private ZoneInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+        private static final ZoneInfo defaultInstance;
+        public static ZoneInfo getDefaultInstance() {
+          return defaultInstance;
+        }
+
+        public ZoneInfo getDefaultInstanceForType() {
+          return defaultInstance;
+        }
+
+        private final com.google.protobuf.UnknownFieldSet unknownFields;
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet
+            getUnknownFields() {
+          return this.unknownFields;
+        }
+        private ZoneInfo(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          initFields();
+          int mutable_bitField0_ = 0;
+          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+              com.google.protobuf.UnknownFieldSet.newBuilder();
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(input, unknownFields,
+                                         extensionRegistry, tag)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 10: {
+                  bitField0_ |= 0x00000001;
+                  name_ = input.readBytes();
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw e.setUnfinishedMessage(this);
+          } catch (java.io.IOException e) {
+            throw new com.google.protobuf.InvalidProtocolBufferException(
+                e.getMessage()).setUnfinishedMessage(this);
+          } finally {
+            this.unknownFields = unknownFields.build();
+            makeExtensionsImmutable();
+          }
+        }
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_DomainInfo_FaultDomain_ZoneInfo_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_DomainInfo_FaultDomain_ZoneInfo_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo.class, org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo.Builder.class);
+        }
+
+        public static com.google.protobuf.Parser<ZoneInfo> PARSER =
+            new com.google.protobuf.AbstractParser<ZoneInfo>() {
+          public ZoneInfo parsePartialFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return new ZoneInfo(input, extensionRegistry);
+          }
+        };
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<ZoneInfo> getParserForType() {
+          return PARSER;
+        }
+
+        private int bitField0_;
+        // required string name = 1;
+        public static final int NAME_FIELD_NUMBER = 1;
+        private java.lang.Object name_;
+        /**
+         * <code>required string name = 1;</code>
+         */
+        public boolean hasName() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required string name = 1;</code>
+         */
+        public java.lang.String getName() {
+          java.lang.Object ref = name_;
+          if (ref instanceof java.lang.String) {
+            return (java.lang.String) ref;
+          } else {
+            com.google.protobuf.ByteString bs = 
+                (com.google.protobuf.ByteString) ref;
+            java.lang.String s = bs.toStringUtf8();
+            if (bs.isValidUtf8()) {
+              name_ = s;
+            }
+            return s;
+          }
+        }
+        /**
+         * <code>required string name = 1;</code>
+         */
+        public com.google.protobuf.ByteString
+            getNameBytes() {
+          java.lang.Object ref = name_;
+          if (ref instanceof java.lang.String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            name_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+
+        private void initFields() {
+          name_ = "";
+        }
+        private byte memoizedIsInitialized = -1;
+        public final boolean isInitialized() {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized != -1) return isInitialized == 1;
+
+          if (!hasName()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+          memoizedIsInitialized = 1;
+          return true;
+        }
+
+        public void writeTo(com.google.protobuf.CodedOutputStream output)
+                            throws java.io.IOException {
+          getSerializedSize();
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            output.writeBytes(1, getNameBytes());
+          }
+          getUnknownFields().writeTo(output);
+        }
+
+        private int memoizedSerializedSize = -1;
+        public int getSerializedSize() {
+          int size = memoizedSerializedSize;
+          if (size != -1) return size;
+
+          size = 0;
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeBytesSize(1, getNameBytes());
+          }
+          size += getUnknownFields().getSerializedSize();
+          memoizedSerializedSize = size;
+          return size;
+        }
+
+        private static final long serialVersionUID = 0L;
+        @java.lang.Override
+        protected java.lang.Object writeReplace()
+            throws java.io.ObjectStreamException {
+          return super.writeReplace();
+        }
+
+        public static org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo parseFrom(
+            com.google.protobuf.ByteString data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo parseFrom(
+            com.google.protobuf.ByteString data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo parseFrom(byte[] data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo parseFrom(
+            byte[] data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo parseFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo parseFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo parseDelimitedFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input);
+        }
+        public static org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo parseDelimitedFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo parseFrom(
+            com.google.protobuf.CodedInputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo parseFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+
+        public static Builder newBuilder() { return Builder.create(); }
+        public Builder newBuilderForType() { return newBuilder(); }
+        public static Builder newBuilder(org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo prototype) {
+          return newBuilder().mergeFrom(prototype);
+        }
+        public Builder toBuilder() { return newBuilder(this); }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          Builder builder = new Builder(parent);
+          return builder;
+        }
+        /**
+         * Protobuf type {@code mesos.DomainInfo.FaultDomain.ZoneInfo}
+         */
+        public static final class Builder extends
+            com.google.protobuf.GeneratedMessage.Builder<Builder>
+           implements org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfoOrBuilder {
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.Protos.internal_static_mesos_DomainInfo_FaultDomain_ZoneInfo_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.Protos.internal_static_mesos_DomainInfo_FaultDomain_ZoneInfo_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo.class, org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo.Builder.class);
+          }
+
+          // Construct using org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo.newBuilder()
+          private Builder() {
+            maybeForceBuilderInitialization();
+          }
+
+          private Builder(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            super(parent);
+            maybeForceBuilderInitialization();
+          }
+          private void maybeForceBuilderInitialization() {
+            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            }
+          }
+          private static Builder create() {
+            return new Builder();
+          }
+
+          public Builder clear() {
+            super.clear();
+            name_ = "";
+            bitField0_ = (bitField0_ & ~0x00000001);
+            return this;
+          }
+
+          public Builder clone() {
+            return create().mergeFrom(buildPartial());
+          }
+
+          public com.google.protobuf.Descriptors.Descriptor
+              getDescriptorForType() {
+            return org.apache.mesos.Protos.internal_static_mesos_DomainInfo_FaultDomain_ZoneInfo_descriptor;
+          }
+
+          public org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo getDefaultInstanceForType() {
+            return org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo.getDefaultInstance();
+          }
+
+          public org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo build() {
+            org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo result = buildPartial();
+            if (!result.isInitialized()) {
+              throw newUninitializedMessageException(result);
+            }
+            return result;
+          }
+
+          public org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo buildPartial() {
+            org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo result = new org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo(this);
+            int from_bitField0_ = bitField0_;
+            int to_bitField0_ = 0;
+            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+              to_bitField0_ |= 0x00000001;
+            }
+            result.name_ = name_;
+            result.bitField0_ = to_bitField0_;
+            onBuilt();
+            return result;
+          }
+
+          public Builder mergeFrom(com.google.protobuf.Message other) {
+            if (other instanceof org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo) {
+              return mergeFrom((org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo)other);
+            } else {
+              super.mergeFrom(other);
+              return this;
+            }
+          }
+
+          public Builder mergeFrom(org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo other) {
+            if (other == org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo.getDefaultInstance()) return this;
+            if (other.hasName()) {
+              bitField0_ |= 0x00000001;
+              name_ = other.name_;
+              onChanged();
+            }
+            this.mergeUnknownFields(other.getUnknownFields());
+            return this;
+          }
+
+          public final boolean isInitialized() {
+            if (!hasName()) {
+              
+              return false;
+            }
+            return true;
+          }
+
+          public Builder mergeFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo parsedMessage = null;
+            try {
+              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              parsedMessage = (org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo) e.getUnfinishedMessage();
+              throw e;
+            } finally {
+              if (parsedMessage != null) {
+                mergeFrom(parsedMessage);
+              }
+            }
+            return this;
+          }
+          private int bitField0_;
+
+          // required string name = 1;
+          private java.lang.Object name_ = "";
+          /**
+           * <code>required string name = 1;</code>
+           */
+          public boolean hasName() {
+            return ((bitField0_ & 0x00000001) == 0x00000001);
+          }
+          /**
+           * <code>required string name = 1;</code>
+           */
+          public java.lang.String getName() {
+            java.lang.Object ref = name_;
+            if (!(ref instanceof java.lang.String)) {
+              java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                  .toStringUtf8();
+              name_ = s;
+              return s;
+            } else {
+              return (java.lang.String) ref;
+            }
+          }
+          /**
+           * <code>required string name = 1;</code>
+           */
+          public com.google.protobuf.ByteString
+              getNameBytes() {
+            java.lang.Object ref = name_;
+            if (ref instanceof String) {
+              com.google.protobuf.ByteString b = 
+                  com.google.protobuf.ByteString.copyFromUtf8(
+                      (java.lang.String) ref);
+              name_ = b;
+              return b;
+            } else {
+              return (com.google.protobuf.ByteString) ref;
+            }
+          }
+          /**
+           * <code>required string name = 1;</code>
+           */
+          public Builder setName(
+              java.lang.String value) {
+            if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+            name_ = value;
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>required string name = 1;</code>
+           */
+          public Builder clearName() {
+            bitField0_ = (bitField0_ & ~0x00000001);
+            name_ = getDefaultInstance().getName();
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>required string name = 1;</code>
+           */
+          public Builder setNameBytes(
+              com.google.protobuf.ByteString value) {
+            if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+            name_ = value;
+            onChanged();
+            return this;
+          }
+
+          // @@protoc_insertion_point(builder_scope:mesos.DomainInfo.FaultDomain.ZoneInfo)
+        }
+
+        static {
+          defaultInstance = new ZoneInfo(true);
+          defaultInstance.initFields();
+        }
+
+        // @@protoc_insertion_point(class_scope:mesos.DomainInfo.FaultDomain.ZoneInfo)
+      }
+
+      private int bitField0_;
+      // required .mesos.DomainInfo.FaultDomain.RegionInfo region = 1;
+      public static final int REGION_FIELD_NUMBER = 1;
+      private org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo region_;
+      /**
+       * <code>required .mesos.DomainInfo.FaultDomain.RegionInfo region = 1;</code>
+       */
+      public boolean hasRegion() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.DomainInfo.FaultDomain.RegionInfo region = 1;</code>
+       */
+      public org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo getRegion() {
+        return region_;
+      }
+      /**
+       * <code>required .mesos.DomainInfo.FaultDomain.RegionInfo region = 1;</code>
+       */
+      public org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfoOrBuilder getRegionOrBuilder() {
+        return region_;
+      }
+
+      // required .mesos.DomainInfo.FaultDomain.ZoneInfo zone = 2;
+      public static final int ZONE_FIELD_NUMBER = 2;
+      private org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo zone_;
+      /**
+       * <code>required .mesos.DomainInfo.FaultDomain.ZoneInfo zone = 2;</code>
+       */
+      public boolean hasZone() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required .mesos.DomainInfo.FaultDomain.ZoneInfo zone = 2;</code>
+       */
+      public org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo getZone() {
+        return zone_;
+      }
+      /**
+       * <code>required .mesos.DomainInfo.FaultDomain.ZoneInfo zone = 2;</code>
+       */
+      public org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfoOrBuilder getZoneOrBuilder() {
+        return zone_;
+      }
+
+      private void initFields() {
+        region_ = org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo.getDefaultInstance();
+        zone_ = org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasRegion()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!hasZone()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getRegion().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getZone().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, region_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeMessage(2, zone_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, region_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(2, zone_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.Protos.DomainInfo.FaultDomain parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.DomainInfo.FaultDomain parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.DomainInfo.FaultDomain parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.DomainInfo.FaultDomain parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.DomainInfo.FaultDomain parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.DomainInfo.FaultDomain parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.DomainInfo.FaultDomain parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.Protos.DomainInfo.FaultDomain parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.DomainInfo.FaultDomain parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.DomainInfo.FaultDomain parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.Protos.DomainInfo.FaultDomain prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.DomainInfo.FaultDomain}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.Protos.DomainInfo.FaultDomainOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_DomainInfo_FaultDomain_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_DomainInfo_FaultDomain_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.DomainInfo.FaultDomain.class, org.apache.mesos.Protos.DomainInfo.FaultDomain.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.Protos.DomainInfo.FaultDomain.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getRegionFieldBuilder();
+            getZoneFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (regionBuilder_ == null) {
+            region_ = org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo.getDefaultInstance();
+          } else {
+            regionBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          if (zoneBuilder_ == null) {
+            zone_ = org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo.getDefaultInstance();
+          } else {
+            zoneBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.Protos.internal_static_mesos_DomainInfo_FaultDomain_descriptor;
+        }
+
+        public org.apache.mesos.Protos.DomainInfo.FaultDomain getDefaultInstanceForType() {
+          return org.apache.mesos.Protos.DomainInfo.FaultDomain.getDefaultInstance();
+        }
+
+        public org.apache.mesos.Protos.DomainInfo.FaultDomain build() {
+          org.apache.mesos.Protos.DomainInfo.FaultDomain result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.Protos.DomainInfo.FaultDomain buildPartial() {
+          org.apache.mesos.Protos.DomainInfo.FaultDomain result = new org.apache.mesos.Protos.DomainInfo.FaultDomain(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (regionBuilder_ == null) {
+            result.region_ = region_;
+          } else {
+            result.region_ = regionBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          if (zoneBuilder_ == null) {
+            result.zone_ = zone_;
+          } else {
+            result.zone_ = zoneBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.Protos.DomainInfo.FaultDomain) {
+            return mergeFrom((org.apache.mesos.Protos.DomainInfo.FaultDomain)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.Protos.DomainInfo.FaultDomain other) {
+          if (other == org.apache.mesos.Protos.DomainInfo.FaultDomain.getDefaultInstance()) return this;
+          if (other.hasRegion()) {
+            mergeRegion(other.getRegion());
+          }
+          if (other.hasZone()) {
+            mergeZone(other.getZone());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasRegion()) {
+            
+            return false;
+          }
+          if (!hasZone()) {
+            
+            return false;
+          }
+          if (!getRegion().isInitialized()) {
+            
+            return false;
+          }
+          if (!getZone().isInitialized()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.Protos.DomainInfo.FaultDomain parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.Protos.DomainInfo.FaultDomain) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required .mesos.DomainInfo.FaultDomain.RegionInfo region = 1;
+        private org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo region_ = org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo, org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo.Builder, org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfoOrBuilder> regionBuilder_;
+        /**
+         * <code>required .mesos.DomainInfo.FaultDomain.RegionInfo region = 1;</code>
+         */
+        public boolean hasRegion() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.DomainInfo.FaultDomain.RegionInfo region = 1;</code>
+         */
+        public org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo getRegion() {
+          if (regionBuilder_ == null) {
+            return region_;
+          } else {
+            return regionBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.DomainInfo.FaultDomain.RegionInfo region = 1;</code>
+         */
+        public Builder setRegion(org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo value) {
+          if (regionBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            region_ = value;
+            onChanged();
+          } else {
+            regionBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.DomainInfo.FaultDomain.RegionInfo region = 1;</code>
+         */
+        public Builder setRegion(
+            org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo.Builder builderForValue) {
+          if (regionBuilder_ == null) {
+            region_ = builderForValue.build();
+            onChanged();
+          } else {
+            regionBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.DomainInfo.FaultDomain.RegionInfo region = 1;</code>
+         */
+        public Builder mergeRegion(org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo value) {
+          if (regionBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                region_ != org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo.getDefaultInstance()) {
+              region_ =
+                org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo.newBuilder(region_).mergeFrom(value).buildPartial();
+            } else {
+              region_ = value;
+            }
+            onChanged();
+          } else {
+            regionBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.DomainInfo.FaultDomain.RegionInfo region = 1;</code>
+         */
+        public Builder clearRegion() {
+          if (regionBuilder_ == null) {
+            region_ = org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo.getDefaultInstance();
+            onChanged();
+          } else {
+            regionBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>required .mesos.DomainInfo.FaultDomain.RegionInfo region = 1;</code>
+         */
+        public org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo.Builder getRegionBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getRegionFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.DomainInfo.FaultDomain.RegionInfo region = 1;</code>
+         */
+        public org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfoOrBuilder getRegionOrBuilder() {
+          if (regionBuilder_ != null) {
+            return regionBuilder_.getMessageOrBuilder();
+          } else {
+            return region_;
+          }
+        }
+        /**
+         * <code>required .mesos.DomainInfo.FaultDomain.RegionInfo region = 1;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo, org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo.Builder, org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfoOrBuilder> 
+            getRegionFieldBuilder() {
+          if (regionBuilder_ == null) {
+            regionBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo, org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfo.Builder, org.apache.mesos.Protos.DomainInfo.FaultDomain.RegionInfoOrBuilder>(
+                    region_,
+                    getParentForChildren(),
+                    isClean());
+            region_ = null;
+          }
+          return regionBuilder_;
+        }
+
+        // required .mesos.DomainInfo.FaultDomain.ZoneInfo zone = 2;
+        private org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo zone_ = org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo, org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo.Builder, org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfoOrBuilder> zoneBuilder_;
+        /**
+         * <code>required .mesos.DomainInfo.FaultDomain.ZoneInfo zone = 2;</code>
+         */
+        public boolean hasZone() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>required .mesos.DomainInfo.FaultDomain.ZoneInfo zone = 2;</code>
+         */
+        public org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo getZone() {
+          if (zoneBuilder_ == null) {
+            return zone_;
+          } else {
+            return zoneBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.DomainInfo.FaultDomain.ZoneInfo zone = 2;</code>
+         */
+        public Builder setZone(org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo value) {
+          if (zoneBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            zone_ = value;
+            onChanged();
+          } else {
+            zoneBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>required .mesos.DomainInfo.FaultDomain.ZoneInfo zone = 2;</code>
+         */
+        public Builder setZone(
+            org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo.Builder builderForValue) {
+          if (zoneBuilder_ == null) {
+            zone_ = builderForValue.build();
+            onChanged();
+          } else {
+            zoneBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>required .mesos.DomainInfo.FaultDomain.ZoneInfo zone = 2;</code>
+         */
+        public Builder mergeZone(org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo value) {
+          if (zoneBuilder_ == null) {
+            if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                zone_ != org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo.getDefaultInstance()) {
+              zone_ =
+                org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo.newBuilder(zone_).mergeFrom(value).buildPartial();
+            } else {
+              zone_ = value;
+            }
+            onChanged();
+          } else {
+            zoneBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>required .mesos.DomainInfo.FaultDomain.ZoneInfo zone = 2;</code>
+         */
+        public Builder clearZone() {
+          if (zoneBuilder_ == null) {
+            zone_ = org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo.getDefaultInstance();
+            onChanged();
+          } else {
+            zoneBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+        /**
+         * <code>required .mesos.DomainInfo.FaultDomain.ZoneInfo zone = 2;</code>
+         */
+        public org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo.Builder getZoneBuilder() {
+          bitField0_ |= 0x00000002;
+          onChanged();
+          return getZoneFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.DomainInfo.FaultDomain.ZoneInfo zone = 2;</code>
+         */
+        public org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfoOrBuilder getZoneOrBuilder() {
+          if (zoneBuilder_ != null) {
+            return zoneBuilder_.getMessageOrBuilder();
+          } else {
+            return zone_;
+          }
+        }
+        /**
+         * <code>required .mesos.DomainInfo.FaultDomain.ZoneInfo zone = 2;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo, org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo.Builder, org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfoOrBuilder> 
+            getZoneFieldBuilder() {
+          if (zoneBuilder_ == null) {
+            zoneBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo, org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfo.Builder, org.apache.mesos.Protos.DomainInfo.FaultDomain.ZoneInfoOrBuilder>(
+                    zone_,
+                    getParentForChildren(),
+                    isClean());
+            zone_ = null;
+          }
+          return zoneBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.DomainInfo.FaultDomain)
+      }
+
+      static {
+        defaultInstance = new FaultDomain(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.DomainInfo.FaultDomain)
+    }
+
+    private int bitField0_;
+    // optional .mesos.DomainInfo.FaultDomain fault_domain = 1;
+    public static final int FAULT_DOMAIN_FIELD_NUMBER = 1;
+    private org.apache.mesos.Protos.DomainInfo.FaultDomain faultDomain_;
+    /**
+     * <code>optional .mesos.DomainInfo.FaultDomain fault_domain = 1;</code>
+     */
+    public boolean hasFaultDomain() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional .mesos.DomainInfo.FaultDomain fault_domain = 1;</code>
+     */
+    public org.apache.mesos.Protos.DomainInfo.FaultDomain getFaultDomain() {
+      return faultDomain_;
+    }
+    /**
+     * <code>optional .mesos.DomainInfo.FaultDomain fault_domain = 1;</code>
+     */
+    public org.apache.mesos.Protos.DomainInfo.FaultDomainOrBuilder getFaultDomainOrBuilder() {
+      return faultDomain_;
+    }
+
+    private void initFields() {
+      faultDomain_ = org.apache.mesos.Protos.DomainInfo.FaultDomain.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (hasFaultDomain()) {
+        if (!getFaultDomain().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeMessage(1, faultDomain_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, faultDomain_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.DomainInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.DomainInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.DomainInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.DomainInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.DomainInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.DomainInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.DomainInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.DomainInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.DomainInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.DomainInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.DomainInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.DomainInfo}
+     *
+     * <pre>
+     **
+     * Describes a domain. A domain is a collection of hosts that have
+     * similar characteristics. Mesos currently only supports "fault
+     * domains", which identify groups of hosts with similar failure
+     * characteristics.
+     *
+     * Frameworks can generally assume that network links between hosts in
+     * the same fault domain have lower latency, higher bandwidth, and better
+     * availability than network links between hosts in different domains.
+     * Schedulers may prefer to place network-intensive workloads in the
+     * same domain, as this may improve performance. Conversely, a single
+     * failure that affects a host in a domain may be more likely to
+     * affect other hosts in the same domain; hence, schedulers may prefer
+     * to place workloads that require high availability in multiple
+     * domains. (For example, all the hosts in a single rack might lose
+     * power or network connectivity simultaneously.)
+     *
+     * There are two kinds of fault domains: regions and zones. Regions
+     * offer the highest degree of fault isolation, but network latency
+     * between regions is typically high (typically &gt;50 ms). Zones offer a
+     * modest degree of fault isolation along with reasonably low network
+     * latency (typically &lt;10 ms).
+     *
+     * The mapping from fault domains to physical infrastructure is up to
+     * the operator to configure. In cloud environments, regions and zones
+     * can be mapped to the "region" and "availability zone" concepts
+     * exposed by most cloud providers, respectively. In on-premise
+     * deployments, regions and zones can be mapped to data centers and
+     * racks, respectively.
+     *
+     * Both masters and agents can be configured with domains. Frameworks
+     * can compare the domains of two hosts to determine if the hosts are
+     * in the same zone, in different zones in the same region, or in
+     * different regions. Note that all masters in a given Mesos cluster
+     * must be in the same region.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.DomainInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_DomainInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_DomainInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.DomainInfo.class, org.apache.mesos.Protos.DomainInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.DomainInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getFaultDomainFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (faultDomainBuilder_ == null) {
+          faultDomain_ = org.apache.mesos.Protos.DomainInfo.FaultDomain.getDefaultInstance();
+        } else {
+          faultDomainBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_DomainInfo_descriptor;
+      }
+
+      public org.apache.mesos.Protos.DomainInfo getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.DomainInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.DomainInfo build() {
+        org.apache.mesos.Protos.DomainInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.DomainInfo buildPartial() {
+        org.apache.mesos.Protos.DomainInfo result = new org.apache.mesos.Protos.DomainInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        if (faultDomainBuilder_ == null) {
+          result.faultDomain_ = faultDomain_;
+        } else {
+          result.faultDomain_ = faultDomainBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.DomainInfo) {
+          return mergeFrom((org.apache.mesos.Protos.DomainInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.DomainInfo other) {
+        if (other == org.apache.mesos.Protos.DomainInfo.getDefaultInstance()) return this;
+        if (other.hasFaultDomain()) {
+          mergeFaultDomain(other.getFaultDomain());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (hasFaultDomain()) {
+          if (!getFaultDomain().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.DomainInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.DomainInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional .mesos.DomainInfo.FaultDomain fault_domain = 1;
+      private org.apache.mesos.Protos.DomainInfo.FaultDomain faultDomain_ = org.apache.mesos.Protos.DomainInfo.FaultDomain.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.DomainInfo.FaultDomain, org.apache.mesos.Protos.DomainInfo.FaultDomain.Builder, org.apache.mesos.Protos.DomainInfo.FaultDomainOrBuilder> faultDomainBuilder_;
+      /**
+       * <code>optional .mesos.DomainInfo.FaultDomain fault_domain = 1;</code>
+       */
+      public boolean hasFaultDomain() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.DomainInfo.FaultDomain fault_domain = 1;</code>
+       */
+      public org.apache.mesos.Protos.DomainInfo.FaultDomain getFaultDomain() {
+        if (faultDomainBuilder_ == null) {
+          return faultDomain_;
+        } else {
+          return faultDomainBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.DomainInfo.FaultDomain fault_domain = 1;</code>
+       */
+      public Builder setFaultDomain(org.apache.mesos.Protos.DomainInfo.FaultDomain value) {
+        if (faultDomainBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          faultDomain_ = value;
+          onChanged();
+        } else {
+          faultDomainBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.DomainInfo.FaultDomain fault_domain = 1;</code>
+       */
+      public Builder setFaultDomain(
+          org.apache.mesos.Protos.DomainInfo.FaultDomain.Builder builderForValue) {
+        if (faultDomainBuilder_ == null) {
+          faultDomain_ = builderForValue.build();
+          onChanged();
+        } else {
+          faultDomainBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.DomainInfo.FaultDomain fault_domain = 1;</code>
+       */
+      public Builder mergeFaultDomain(org.apache.mesos.Protos.DomainInfo.FaultDomain value) {
+        if (faultDomainBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001) &&
+              faultDomain_ != org.apache.mesos.Protos.DomainInfo.FaultDomain.getDefaultInstance()) {
+            faultDomain_ =
+              org.apache.mesos.Protos.DomainInfo.FaultDomain.newBuilder(faultDomain_).mergeFrom(value).buildPartial();
+          } else {
+            faultDomain_ = value;
+          }
+          onChanged();
+        } else {
+          faultDomainBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.DomainInfo.FaultDomain fault_domain = 1;</code>
+       */
+      public Builder clearFaultDomain() {
+        if (faultDomainBuilder_ == null) {
+          faultDomain_ = org.apache.mesos.Protos.DomainInfo.FaultDomain.getDefaultInstance();
+          onChanged();
+        } else {
+          faultDomainBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.DomainInfo.FaultDomain fault_domain = 1;</code>
+       */
+      public org.apache.mesos.Protos.DomainInfo.FaultDomain.Builder getFaultDomainBuilder() {
+        bitField0_ |= 0x00000001;
+        onChanged();
+        return getFaultDomainFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.DomainInfo.FaultDomain fault_domain = 1;</code>
+       */
+      public org.apache.mesos.Protos.DomainInfo.FaultDomainOrBuilder getFaultDomainOrBuilder() {
+        if (faultDomainBuilder_ != null) {
+          return faultDomainBuilder_.getMessageOrBuilder();
+        } else {
+          return faultDomain_;
+        }
+      }
+      /**
+       * <code>optional .mesos.DomainInfo.FaultDomain fault_domain = 1;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.DomainInfo.FaultDomain, org.apache.mesos.Protos.DomainInfo.FaultDomain.Builder, org.apache.mesos.Protos.DomainInfo.FaultDomainOrBuilder> 
+          getFaultDomainFieldBuilder() {
+        if (faultDomainBuilder_ == null) {
+          faultDomainBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.DomainInfo.FaultDomain, org.apache.mesos.Protos.DomainInfo.FaultDomain.Builder, org.apache.mesos.Protos.DomainInfo.FaultDomainOrBuilder>(
+                  faultDomain_,
+                  getParentForChildren(),
+                  isClean());
+          faultDomain_ = null;
+        }
+        return faultDomainBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.DomainInfo)
+    }
+
+    static {
+      defaultInstance = new DomainInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.DomainInfo)
+  }
+
+  public interface MasterInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string id = 1;
+    /**
+     * <code>required string id = 1;</code>
+     */
+    boolean hasId();
+    /**
+     * <code>required string id = 1;</code>
+     */
+    java.lang.String getId();
+    /**
+     * <code>required string id = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getIdBytes();
+
+    // required uint32 ip = 2;
+    /**
+     * <code>required uint32 ip = 2;</code>
+     *
+     * <pre>
+     * The IP address (only IPv4) as a packed 4-bytes integer,
+     * stored in network order.  Deprecated, use `address.ip` instead.
+     * </pre>
+     */
+    boolean hasIp();
+    /**
+     * <code>required uint32 ip = 2;</code>
+     *
+     * <pre>
+     * The IP address (only IPv4) as a packed 4-bytes integer,
+     * stored in network order.  Deprecated, use `address.ip` instead.
+     * </pre>
+     */
+    int getIp();
+
+    // required uint32 port = 3 [default = 5050];
+    /**
+     * <code>required uint32 port = 3 [default = 5050];</code>
+     *
+     * <pre>
+     * The TCP port the Master is listening on for incoming
+     * HTTP requests; deprecated, use `address.port` instead.
+     * </pre>
+     */
+    boolean hasPort();
+    /**
+     * <code>required uint32 port = 3 [default = 5050];</code>
+     *
+     * <pre>
+     * The TCP port the Master is listening on for incoming
+     * HTTP requests; deprecated, use `address.port` instead.
+     * </pre>
+     */
+    int getPort();
+
+    // optional string pid = 4;
+    /**
+     * <code>optional string pid = 4;</code>
+     *
+     * <pre>
+     * In the default implementation, this will contain information
+     * about both the IP address, port and Master name; it should really
+     * not be relied upon by external tooling/frameworks and be
+     * considered an "internal" implementation field.
+     * </pre>
+     */
+    boolean hasPid();
+    /**
+     * <code>optional string pid = 4;</code>
+     *
+     * <pre>
+     * In the default implementation, this will contain information
+     * about both the IP address, port and Master name; it should really
+     * not be relied upon by external tooling/frameworks and be
+     * considered an "internal" implementation field.
+     * </pre>
+     */
+    java.lang.String getPid();
+    /**
+     * <code>optional string pid = 4;</code>
+     *
+     * <pre>
+     * In the default implementation, this will contain information
+     * about both the IP address, port and Master name; it should really
+     * not be relied upon by external tooling/frameworks and be
+     * considered an "internal" implementation field.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getPidBytes();
+
+    // optional string hostname = 5;
+    /**
+     * <code>optional string hostname = 5;</code>
+     *
+     * <pre>
+     * The server's hostname, if available; it may be unreliable
+     * in environments where the DNS configuration does not resolve
+     * internal hostnames (eg, some public cloud providers).
+     * Deprecated, use `address.hostname` instead.
+     * </pre>
+     */
+    boolean hasHostname();
+    /**
+     * <code>optional string hostname = 5;</code>
+     *
+     * <pre>
+     * The server's hostname, if available; it may be unreliable
+     * in environments where the DNS configuration does not resolve
+     * internal hostnames (eg, some public cloud providers).
+     * Deprecated, use `address.hostname` instead.
+     * </pre>
+     */
+    java.lang.String getHostname();
+    /**
+     * <code>optional string hostname = 5;</code>
+     *
+     * <pre>
+     * The server's hostname, if available; it may be unreliable
+     * in environments where the DNS configuration does not resolve
+     * internal hostnames (eg, some public cloud providers).
+     * Deprecated, use `address.hostname` instead.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getHostnameBytes();
+
+    // optional string version = 6;
+    /**
+     * <code>optional string version = 6;</code>
+     *
+     * <pre>
+     * The running Master version, as a string; taken from the
+     * generated "master/version.hpp".
+     * </pre>
+     */
+    boolean hasVersion();
+    /**
+     * <code>optional string version = 6;</code>
+     *
+     * <pre>
+     * The running Master version, as a string; taken from the
+     * generated "master/version.hpp".
+     * </pre>
+     */
+    java.lang.String getVersion();
+    /**
+     * <code>optional string version = 6;</code>
+     *
+     * <pre>
+     * The running Master version, as a string; taken from the
+     * generated "master/version.hpp".
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getVersionBytes();
+
+    // optional .mesos.Address address = 7;
+    /**
+     * <code>optional .mesos.Address address = 7;</code>
+     *
+     * <pre>
+     * The full IP address (supports both IPv4 and IPv6 formats)
+     * and supersedes the use of `ip`, `port` and `hostname`.
+     * Since Mesos 0.24.
+     * </pre>
+     */
+    boolean hasAddress();
+    /**
+     * <code>optional .mesos.Address address = 7;</code>
+     *
+     * <pre>
+     * The full IP address (supports both IPv4 and IPv6 formats)
+     * and supersedes the use of `ip`, `port` and `hostname`.
+     * Since Mesos 0.24.
+     * </pre>
+     */
+    org.apache.mesos.Protos.Address getAddress();
+    /**
+     * <code>optional .mesos.Address address = 7;</code>
+     *
+     * <pre>
+     * The full IP address (supports both IPv4 and IPv6 formats)
+     * and supersedes the use of `ip`, `port` and `hostname`.
+     * Since Mesos 0.24.
+     * </pre>
+     */
+    org.apache.mesos.Protos.AddressOrBuilder getAddressOrBuilder();
+
+    // optional .mesos.DomainInfo domain = 8;
+    /**
+     * <code>optional .mesos.DomainInfo domain = 8;</code>
+     *
+     * <pre>
+     * The domain that this master belongs to. All masters in a Mesos
+     * cluster should belong to the same region.
+     * </pre>
+     */
+    boolean hasDomain();
+    /**
+     * <code>optional .mesos.DomainInfo domain = 8;</code>
+     *
+     * <pre>
+     * The domain that this master belongs to. All masters in a Mesos
+     * cluster should belong to the same region.
+     * </pre>
+     */
+    org.apache.mesos.Protos.DomainInfo getDomain();
+    /**
+     * <code>optional .mesos.DomainInfo domain = 8;</code>
+     *
+     * <pre>
+     * The domain that this master belongs to. All masters in a Mesos
+     * cluster should belong to the same region.
+     * </pre>
+     */
+    org.apache.mesos.Protos.DomainInfoOrBuilder getDomainOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.MasterInfo}
+   *
+   * <pre>
+   **
+   * Describes a master. This will probably have more fields in the
+   * future which might be used, for example, to link a framework webui
+   * to a master webui.
+   * </pre>
+   */
+  public static final class MasterInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements MasterInfoOrBuilder {
+    // Use MasterInfo.newBuilder() to construct.
+    private MasterInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private MasterInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final MasterInfo defaultInstance;
+    public static MasterInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public MasterInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private MasterInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              id_ = input.readBytes();
+              break;
+            }
+            case 16: {
+              bitField0_ |= 0x00000002;
+              ip_ = input.readUInt32();
+              break;
+            }
+            case 24: {
+              bitField0_ |= 0x00000004;
+              port_ = input.readUInt32();
+              break;
+            }
+            case 34: {
+              bitField0_ |= 0x00000008;
+              pid_ = input.readBytes();
+              break;
+            }
+            case 42: {
+              bitField0_ |= 0x00000010;
+              hostname_ = input.readBytes();
+              break;
+            }
+            case 50: {
+              bitField0_ |= 0x00000020;
+              version_ = input.readBytes();
+              break;
+            }
+            case 58: {
+              org.apache.mesos.Protos.Address.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000040) == 0x00000040)) {
+                subBuilder = address_.toBuilder();
+              }
+              address_ = input.readMessage(org.apache.mesos.Protos.Address.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(address_);
+                address_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000040;
+              break;
+            }
+            case 66: {
+              org.apache.mesos.Protos.DomainInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000080) == 0x00000080)) {
+                subBuilder = domain_.toBuilder();
+              }
+              domain_ = input.readMessage(org.apache.mesos.Protos.DomainInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(domain_);
+                domain_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000080;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_MasterInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_MasterInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.MasterInfo.class, org.apache.mesos.Protos.MasterInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<MasterInfo> PARSER =
+        new com.google.protobuf.AbstractParser<MasterInfo>() {
+      public MasterInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new MasterInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<MasterInfo> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string id = 1;
+    public static final int ID_FIELD_NUMBER = 1;
+    private java.lang.Object id_;
+    /**
+     * <code>required string id = 1;</code>
+     */
+    public boolean hasId() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string id = 1;</code>
+     */
+    public java.lang.String getId() {
+      java.lang.Object ref = id_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          id_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string id = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getIdBytes() {
+      java.lang.Object ref = id_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        id_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // required uint32 ip = 2;
+    public static final int IP_FIELD_NUMBER = 2;
+    private int ip_;
+    /**
+     * <code>required uint32 ip = 2;</code>
+     *
+     * <pre>
+     * The IP address (only IPv4) as a packed 4-bytes integer,
+     * stored in network order.  Deprecated, use `address.ip` instead.
+     * </pre>
+     */
+    public boolean hasIp() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>required uint32 ip = 2;</code>
+     *
+     * <pre>
+     * The IP address (only IPv4) as a packed 4-bytes integer,
+     * stored in network order.  Deprecated, use `address.ip` instead.
+     * </pre>
+     */
+    public int getIp() {
+      return ip_;
+    }
+
+    // required uint32 port = 3 [default = 5050];
+    public static final int PORT_FIELD_NUMBER = 3;
+    private int port_;
+    /**
+     * <code>required uint32 port = 3 [default = 5050];</code>
+     *
+     * <pre>
+     * The TCP port the Master is listening on for incoming
+     * HTTP requests; deprecated, use `address.port` instead.
+     * </pre>
+     */
+    public boolean hasPort() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>required uint32 port = 3 [default = 5050];</code>
+     *
+     * <pre>
+     * The TCP port the Master is listening on for incoming
+     * HTTP requests; deprecated, use `address.port` instead.
+     * </pre>
+     */
+    public int getPort() {
+      return port_;
+    }
+
+    // optional string pid = 4;
+    public static final int PID_FIELD_NUMBER = 4;
+    private java.lang.Object pid_;
+    /**
+     * <code>optional string pid = 4;</code>
+     *
+     * <pre>
+     * In the default implementation, this will contain information
+     * about both the IP address, port and Master name; it should really
+     * not be relied upon by external tooling/frameworks and be
+     * considered an "internal" implementation field.
+     * </pre>
+     */
+    public boolean hasPid() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional string pid = 4;</code>
+     *
+     * <pre>
+     * In the default implementation, this will contain information
+     * about both the IP address, port and Master name; it should really
+     * not be relied upon by external tooling/frameworks and be
+     * considered an "internal" implementation field.
+     * </pre>
+     */
+    public java.lang.String getPid() {
+      java.lang.Object ref = pid_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          pid_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string pid = 4;</code>
+     *
+     * <pre>
+     * In the default implementation, this will contain information
+     * about both the IP address, port and Master name; it should really
+     * not be relied upon by external tooling/frameworks and be
+     * considered an "internal" implementation field.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getPidBytes() {
+      java.lang.Object ref = pid_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        pid_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional string hostname = 5;
+    public static final int HOSTNAME_FIELD_NUMBER = 5;
+    private java.lang.Object hostname_;
+    /**
+     * <code>optional string hostname = 5;</code>
+     *
+     * <pre>
+     * The server's hostname, if available; it may be unreliable
+     * in environments where the DNS configuration does not resolve
+     * internal hostnames (eg, some public cloud providers).
+     * Deprecated, use `address.hostname` instead.
+     * </pre>
+     */
+    public boolean hasHostname() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional string hostname = 5;</code>
+     *
+     * <pre>
+     * The server's hostname, if available; it may be unreliable
+     * in environments where the DNS configuration does not resolve
+     * internal hostnames (eg, some public cloud providers).
+     * Deprecated, use `address.hostname` instead.
+     * </pre>
+     */
+    public java.lang.String getHostname() {
+      java.lang.Object ref = hostname_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          hostname_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string hostname = 5;</code>
+     *
+     * <pre>
+     * The server's hostname, if available; it may be unreliable
+     * in environments where the DNS configuration does not resolve
+     * internal hostnames (eg, some public cloud providers).
+     * Deprecated, use `address.hostname` instead.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getHostnameBytes() {
+      java.lang.Object ref = hostname_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        hostname_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional string version = 6;
+    public static final int VERSION_FIELD_NUMBER = 6;
+    private java.lang.Object version_;
+    /**
+     * <code>optional string version = 6;</code>
+     *
+     * <pre>
+     * The running Master version, as a string; taken from the
+     * generated "master/version.hpp".
+     * </pre>
+     */
+    public boolean hasVersion() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional string version = 6;</code>
+     *
+     * <pre>
+     * The running Master version, as a string; taken from the
+     * generated "master/version.hpp".
+     * </pre>
+     */
+    public java.lang.String getVersion() {
+      java.lang.Object ref = version_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          version_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string version = 6;</code>
+     *
+     * <pre>
+     * The running Master version, as a string; taken from the
+     * generated "master/version.hpp".
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getVersionBytes() {
+      java.lang.Object ref = version_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        version_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional .mesos.Address address = 7;
+    public static final int ADDRESS_FIELD_NUMBER = 7;
+    private org.apache.mesos.Protos.Address address_;
+    /**
+     * <code>optional .mesos.Address address = 7;</code>
+     *
+     * <pre>
+     * The full IP address (supports both IPv4 and IPv6 formats)
+     * and supersedes the use of `ip`, `port` and `hostname`.
+     * Since Mesos 0.24.
+     * </pre>
+     */
+    public boolean hasAddress() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional .mesos.Address address = 7;</code>
+     *
+     * <pre>
+     * The full IP address (supports both IPv4 and IPv6 formats)
+     * and supersedes the use of `ip`, `port` and `hostname`.
+     * Since Mesos 0.24.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.Address getAddress() {
+      return address_;
+    }
+    /**
+     * <code>optional .mesos.Address address = 7;</code>
+     *
+     * <pre>
+     * The full IP address (supports both IPv4 and IPv6 formats)
+     * and supersedes the use of `ip`, `port` and `hostname`.
+     * Since Mesos 0.24.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.AddressOrBuilder getAddressOrBuilder() {
+      return address_;
+    }
+
+    // optional .mesos.DomainInfo domain = 8;
+    public static final int DOMAIN_FIELD_NUMBER = 8;
+    private org.apache.mesos.Protos.DomainInfo domain_;
+    /**
+     * <code>optional .mesos.DomainInfo domain = 8;</code>
+     *
+     * <pre>
+     * The domain that this master belongs to. All masters in a Mesos
+     * cluster should belong to the same region.
+     * </pre>
+     */
+    public boolean hasDomain() {
+      return ((bitField0_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional .mesos.DomainInfo domain = 8;</code>
+     *
+     * <pre>
+     * The domain that this master belongs to. All masters in a Mesos
+     * cluster should belong to the same region.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.DomainInfo getDomain() {
+      return domain_;
+    }
+    /**
+     * <code>optional .mesos.DomainInfo domain = 8;</code>
+     *
+     * <pre>
+     * The domain that this master belongs to. All masters in a Mesos
+     * cluster should belong to the same region.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.DomainInfoOrBuilder getDomainOrBuilder() {
+      return domain_;
+    }
+
+    private void initFields() {
+      id_ = "";
+      ip_ = 0;
+      port_ = 5050;
+      pid_ = "";
+      hostname_ = "";
+      version_ = "";
+      address_ = org.apache.mesos.Protos.Address.getDefaultInstance();
+      domain_ = org.apache.mesos.Protos.DomainInfo.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasId()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasIp()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasPort()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (hasAddress()) {
+        if (!getAddress().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasDomain()) {
+        if (!getDomain().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getIdBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeUInt32(2, ip_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeUInt32(3, port_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeBytes(4, getPidBytes());
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeBytes(5, getHostnameBytes());
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeBytes(6, getVersionBytes());
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeMessage(7, address_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        output.writeMessage(8, domain_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getIdBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(2, ip_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(3, port_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(4, getPidBytes());
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(5, getHostnameBytes());
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(6, getVersionBytes());
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(7, address_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(8, domain_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.MasterInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.MasterInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.MasterInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.MasterInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.MasterInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.MasterInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.MasterInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.MasterInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.MasterInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.MasterInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.MasterInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.MasterInfo}
+     *
+     * <pre>
+     **
+     * Describes a master. This will probably have more fields in the
+     * future which might be used, for example, to link a framework webui
+     * to a master webui.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.MasterInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_MasterInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_MasterInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.MasterInfo.class, org.apache.mesos.Protos.MasterInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.MasterInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getAddressFieldBuilder();
+          getDomainFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        id_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        ip_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        port_ = 5050;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        pid_ = "";
+        bitField0_ = (bitField0_ & ~0x00000008);
+        hostname_ = "";
+        bitField0_ = (bitField0_ & ~0x00000010);
+        version_ = "";
+        bitField0_ = (bitField0_ & ~0x00000020);
+        if (addressBuilder_ == null) {
+          address_ = org.apache.mesos.Protos.Address.getDefaultInstance();
+        } else {
+          addressBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000040);
+        if (domainBuilder_ == null) {
+          domain_ = org.apache.mesos.Protos.DomainInfo.getDefaultInstance();
+        } else {
+          domainBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000080);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_MasterInfo_descriptor;
+      }
+
+      public org.apache.mesos.Protos.MasterInfo getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.MasterInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.MasterInfo build() {
+        org.apache.mesos.Protos.MasterInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.MasterInfo buildPartial() {
+        org.apache.mesos.Protos.MasterInfo result = new org.apache.mesos.Protos.MasterInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.id_ = id_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.ip_ = ip_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.port_ = port_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.pid_ = pid_;
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.hostname_ = hostname_;
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        result.version_ = version_;
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        if (addressBuilder_ == null) {
+          result.address_ = address_;
+        } else {
+          result.address_ = addressBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+          to_bitField0_ |= 0x00000080;
+        }
+        if (domainBuilder_ == null) {
+          result.domain_ = domain_;
+        } else {
+          result.domain_ = domainBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.MasterInfo) {
+          return mergeFrom((org.apache.mesos.Protos.MasterInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.MasterInfo other) {
+        if (other == org.apache.mesos.Protos.MasterInfo.getDefaultInstance()) return this;
+        if (other.hasId()) {
+          bitField0_ |= 0x00000001;
+          id_ = other.id_;
+          onChanged();
+        }
+        if (other.hasIp()) {
+          setIp(other.getIp());
+        }
+        if (other.hasPort()) {
+          setPort(other.getPort());
+        }
+        if (other.hasPid()) {
+          bitField0_ |= 0x00000008;
+          pid_ = other.pid_;
+          onChanged();
+        }
+        if (other.hasHostname()) {
+          bitField0_ |= 0x00000010;
+          hostname_ = other.hostname_;
+          onChanged();
+        }
+        if (other.hasVersion()) {
+          bitField0_ |= 0x00000020;
+          version_ = other.version_;
+          onChanged();
+        }
+        if (other.hasAddress()) {
+          mergeAddress(other.getAddress());
+        }
+        if (other.hasDomain()) {
+          mergeDomain(other.getDomain());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasId()) {
+          
+          return false;
+        }
+        if (!hasIp()) {
+          
+          return false;
+        }
+        if (!hasPort()) {
+          
+          return false;
+        }
+        if (hasAddress()) {
+          if (!getAddress().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasDomain()) {
+          if (!getDomain().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.MasterInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.MasterInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string id = 1;
+      private java.lang.Object id_ = "";
+      /**
+       * <code>required string id = 1;</code>
+       */
+      public boolean hasId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string id = 1;</code>
+       */
+      public java.lang.String getId() {
+        java.lang.Object ref = id_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          id_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string id = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getIdBytes() {
+        java.lang.Object ref = id_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          id_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string id = 1;</code>
+       */
+      public Builder setId(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        id_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string id = 1;</code>
+       */
+      public Builder clearId() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        id_ = getDefaultInstance().getId();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string id = 1;</code>
+       */
+      public Builder setIdBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        id_ = value;
+        onChanged();
+        return this;
+      }
+
+      // required uint32 ip = 2;
+      private int ip_ ;
+      /**
+       * <code>required uint32 ip = 2;</code>
+       *
+       * <pre>
+       * The IP address (only IPv4) as a packed 4-bytes integer,
+       * stored in network order.  Deprecated, use `address.ip` instead.
+       * </pre>
+       */
+      public boolean hasIp() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required uint32 ip = 2;</code>
+       *
+       * <pre>
+       * The IP address (only IPv4) as a packed 4-bytes integer,
+       * stored in network order.  Deprecated, use `address.ip` instead.
+       * </pre>
+       */
+      public int getIp() {
+        return ip_;
+      }
+      /**
+       * <code>required uint32 ip = 2;</code>
+       *
+       * <pre>
+       * The IP address (only IPv4) as a packed 4-bytes integer,
+       * stored in network order.  Deprecated, use `address.ip` instead.
+       * </pre>
+       */
+      public Builder setIp(int value) {
+        bitField0_ |= 0x00000002;
+        ip_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required uint32 ip = 2;</code>
+       *
+       * <pre>
+       * The IP address (only IPv4) as a packed 4-bytes integer,
+       * stored in network order.  Deprecated, use `address.ip` instead.
+       * </pre>
+       */
+      public Builder clearIp() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        ip_ = 0;
+        onChanged();
+        return this;
+      }
+
+      // required uint32 port = 3 [default = 5050];
+      private int port_ = 5050;
+      /**
+       * <code>required uint32 port = 3 [default = 5050];</code>
+       *
+       * <pre>
+       * The TCP port the Master is listening on for incoming
+       * HTTP requests; deprecated, use `address.port` instead.
+       * </pre>
+       */
+      public boolean hasPort() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>required uint32 port = 3 [default = 5050];</code>
+       *
+       * <pre>
+       * The TCP port the Master is listening on for incoming
+       * HTTP requests; deprecated, use `address.port` instead.
+       * </pre>
+       */
+      public int getPort() {
+        return port_;
+      }
+      /**
+       * <code>required uint32 port = 3 [default = 5050];</code>
+       *
+       * <pre>
+       * The TCP port the Master is listening on for incoming
+       * HTTP requests; deprecated, use `address.port` instead.
+       * </pre>
+       */
+      public Builder setPort(int value) {
+        bitField0_ |= 0x00000004;
+        port_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required uint32 port = 3 [default = 5050];</code>
+       *
+       * <pre>
+       * The TCP port the Master is listening on for incoming
+       * HTTP requests; deprecated, use `address.port` instead.
+       * </pre>
+       */
+      public Builder clearPort() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        port_ = 5050;
+        onChanged();
+        return this;
+      }
+
+      // optional string pid = 4;
+      private java.lang.Object pid_ = "";
+      /**
+       * <code>optional string pid = 4;</code>
+       *
+       * <pre>
+       * In the default implementation, this will contain information
+       * about both the IP address, port and Master name; it should really
+       * not be relied upon by external tooling/frameworks and be
+       * considered an "internal" implementation field.
+       * </pre>
+       */
+      public boolean hasPid() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional string pid = 4;</code>
+       *
+       * <pre>
+       * In the default implementation, this will contain information
+       * about both the IP address, port and Master name; it should really
+       * not be relied upon by external tooling/frameworks and be
+       * considered an "internal" implementation field.
+       * </pre>
+       */
+      public java.lang.String getPid() {
+        java.lang.Object ref = pid_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          pid_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string pid = 4;</code>
+       *
+       * <pre>
+       * In the default implementation, this will contain information
+       * about both the IP address, port and Master name; it should really
+       * not be relied upon by external tooling/frameworks and be
+       * considered an "internal" implementation field.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getPidBytes() {
+        java.lang.Object ref = pid_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          pid_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string pid = 4;</code>
+       *
+       * <pre>
+       * In the default implementation, this will contain information
+       * about both the IP address, port and Master name; it should really
+       * not be relied upon by external tooling/frameworks and be
+       * considered an "internal" implementation field.
+       * </pre>
+       */
+      public Builder setPid(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+        pid_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string pid = 4;</code>
+       *
+       * <pre>
+       * In the default implementation, this will contain information
+       * about both the IP address, port and Master name; it should really
+       * not be relied upon by external tooling/frameworks and be
+       * considered an "internal" implementation field.
+       * </pre>
+       */
+      public Builder clearPid() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        pid_ = getDefaultInstance().getPid();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string pid = 4;</code>
+       *
+       * <pre>
+       * In the default implementation, this will contain information
+       * about both the IP address, port and Master name; it should really
+       * not be relied upon by external tooling/frameworks and be
+       * considered an "internal" implementation field.
+       * </pre>
+       */
+      public Builder setPidBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+        pid_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional string hostname = 5;
+      private java.lang.Object hostname_ = "";
+      /**
+       * <code>optional string hostname = 5;</code>
+       *
+       * <pre>
+       * The server's hostname, if available; it may be unreliable
+       * in environments where the DNS configuration does not resolve
+       * internal hostnames (eg, some public cloud providers).
+       * Deprecated, use `address.hostname` instead.
+       * </pre>
+       */
+      public boolean hasHostname() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional string hostname = 5;</code>
+       *
+       * <pre>
+       * The server's hostname, if available; it may be unreliable
+       * in environments where the DNS configuration does not resolve
+       * internal hostnames (eg, some public cloud providers).
+       * Deprecated, use `address.hostname` instead.
+       * </pre>
+       */
+      public java.lang.String getHostname() {
+        java.lang.Object ref = hostname_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          hostname_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string hostname = 5;</code>
+       *
+       * <pre>
+       * The server's hostname, if available; it may be unreliable
+       * in environments where the DNS configuration does not resolve
+       * internal hostnames (eg, some public cloud providers).
+       * Deprecated, use `address.hostname` instead.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getHostnameBytes() {
+        java.lang.Object ref = hostname_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          hostname_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string hostname = 5;</code>
+       *
+       * <pre>
+       * The server's hostname, if available; it may be unreliable
+       * in environments where the DNS configuration does not resolve
+       * internal hostnames (eg, some public cloud providers).
+       * Deprecated, use `address.hostname` instead.
+       * </pre>
+       */
+      public Builder setHostname(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000010;
+        hostname_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string hostname = 5;</code>
+       *
+       * <pre>
+       * The server's hostname, if available; it may be unreliable
+       * in environments where the DNS configuration does not resolve
+       * internal hostnames (eg, some public cloud providers).
+       * Deprecated, use `address.hostname` instead.
+       * </pre>
+       */
+      public Builder clearHostname() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        hostname_ = getDefaultInstance().getHostname();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string hostname = 5;</code>
+       *
+       * <pre>
+       * The server's hostname, if available; it may be unreliable
+       * in environments where the DNS configuration does not resolve
+       * internal hostnames (eg, some public cloud providers).
+       * Deprecated, use `address.hostname` instead.
+       * </pre>
+       */
+      public Builder setHostnameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000010;
+        hostname_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional string version = 6;
+      private java.lang.Object version_ = "";
+      /**
+       * <code>optional string version = 6;</code>
+       *
+       * <pre>
+       * The running Master version, as a string; taken from the
+       * generated "master/version.hpp".
+       * </pre>
+       */
+      public boolean hasVersion() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional string version = 6;</code>
+       *
+       * <pre>
+       * The running Master version, as a string; taken from the
+       * generated "master/version.hpp".
+       * </pre>
+       */
+      public java.lang.String getVersion() {
+        java.lang.Object ref = version_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          version_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string version = 6;</code>
+       *
+       * <pre>
+       * The running Master version, as a string; taken from the
+       * generated "master/version.hpp".
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getVersionBytes() {
+        java.lang.Object ref = version_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          version_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string version = 6;</code>
+       *
+       * <pre>
+       * The running Master version, as a string; taken from the
+       * generated "master/version.hpp".
+       * </pre>
+       */
+      public Builder setVersion(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000020;
+        version_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string version = 6;</code>
+       *
+       * <pre>
+       * The running Master version, as a string; taken from the
+       * generated "master/version.hpp".
+       * </pre>
+       */
+      public Builder clearVersion() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        version_ = getDefaultInstance().getVersion();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string version = 6;</code>
+       *
+       * <pre>
+       * The running Master version, as a string; taken from the
+       * generated "master/version.hpp".
+       * </pre>
+       */
+      public Builder setVersionBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000020;
+        version_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.Address address = 7;
+      private org.apache.mesos.Protos.Address address_ = org.apache.mesos.Protos.Address.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Address, org.apache.mesos.Protos.Address.Builder, org.apache.mesos.Protos.AddressOrBuilder> addressBuilder_;
+      /**
+       * <code>optional .mesos.Address address = 7;</code>
+       *
+       * <pre>
+       * The full IP address (supports both IPv4 and IPv6 formats)
+       * and supersedes the use of `ip`, `port` and `hostname`.
+       * Since Mesos 0.24.
+       * </pre>
+       */
+      public boolean hasAddress() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional .mesos.Address address = 7;</code>
+       *
+       * <pre>
+       * The full IP address (supports both IPv4 and IPv6 formats)
+       * and supersedes the use of `ip`, `port` and `hostname`.
+       * Since Mesos 0.24.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Address getAddress() {
+        if (addressBuilder_ == null) {
+          return address_;
+        } else {
+          return addressBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.Address address = 7;</code>
+       *
+       * <pre>
+       * The full IP address (supports both IPv4 and IPv6 formats)
+       * and supersedes the use of `ip`, `port` and `hostname`.
+       * Since Mesos 0.24.
+       * </pre>
+       */
+      public Builder setAddress(org.apache.mesos.Protos.Address value) {
+        if (addressBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          address_ = value;
+          onChanged();
+        } else {
+          addressBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Address address = 7;</code>
+       *
+       * <pre>
+       * The full IP address (supports both IPv4 and IPv6 formats)
+       * and supersedes the use of `ip`, `port` and `hostname`.
+       * Since Mesos 0.24.
+       * </pre>
+       */
+      public Builder setAddress(
+          org.apache.mesos.Protos.Address.Builder builderForValue) {
+        if (addressBuilder_ == null) {
+          address_ = builderForValue.build();
+          onChanged();
+        } else {
+          addressBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Address address = 7;</code>
+       *
+       * <pre>
+       * The full IP address (supports both IPv4 and IPv6 formats)
+       * and supersedes the use of `ip`, `port` and `hostname`.
+       * Since Mesos 0.24.
+       * </pre>
+       */
+      public Builder mergeAddress(org.apache.mesos.Protos.Address value) {
+        if (addressBuilder_ == null) {
+          if (((bitField0_ & 0x00000040) == 0x00000040) &&
+              address_ != org.apache.mesos.Protos.Address.getDefaultInstance()) {
+            address_ =
+              org.apache.mesos.Protos.Address.newBuilder(address_).mergeFrom(value).buildPartial();
+          } else {
+            address_ = value;
+          }
+          onChanged();
+        } else {
+          addressBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Address address = 7;</code>
+       *
+       * <pre>
+       * The full IP address (supports both IPv4 and IPv6 formats)
+       * and supersedes the use of `ip`, `port` and `hostname`.
+       * Since Mesos 0.24.
+       * </pre>
+       */
+      public Builder clearAddress() {
+        if (addressBuilder_ == null) {
+          address_ = org.apache.mesos.Protos.Address.getDefaultInstance();
+          onChanged();
+        } else {
+          addressBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000040);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Address address = 7;</code>
+       *
+       * <pre>
+       * The full IP address (supports both IPv4 and IPv6 formats)
+       * and supersedes the use of `ip`, `port` and `hostname`.
+       * Since Mesos 0.24.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Address.Builder getAddressBuilder() {
+        bitField0_ |= 0x00000040;
+        onChanged();
+        return getAddressFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.Address address = 7;</code>
+       *
+       * <pre>
+       * The full IP address (supports both IPv4 and IPv6 formats)
+       * and supersedes the use of `ip`, `port` and `hostname`.
+       * Since Mesos 0.24.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.AddressOrBuilder getAddressOrBuilder() {
+        if (addressBuilder_ != null) {
+          return addressBuilder_.getMessageOrBuilder();
+        } else {
+          return address_;
+        }
+      }
+      /**
+       * <code>optional .mesos.Address address = 7;</code>
+       *
+       * <pre>
+       * The full IP address (supports both IPv4 and IPv6 formats)
+       * and supersedes the use of `ip`, `port` and `hostname`.
+       * Since Mesos 0.24.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Address, org.apache.mesos.Protos.Address.Builder, org.apache.mesos.Protos.AddressOrBuilder> 
+          getAddressFieldBuilder() {
+        if (addressBuilder_ == null) {
+          addressBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Address, org.apache.mesos.Protos.Address.Builder, org.apache.mesos.Protos.AddressOrBuilder>(
+                  address_,
+                  getParentForChildren(),
+                  isClean());
+          address_ = null;
+        }
+        return addressBuilder_;
+      }
+
+      // optional .mesos.DomainInfo domain = 8;
+      private org.apache.mesos.Protos.DomainInfo domain_ = org.apache.mesos.Protos.DomainInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.DomainInfo, org.apache.mesos.Protos.DomainInfo.Builder, org.apache.mesos.Protos.DomainInfoOrBuilder> domainBuilder_;
+      /**
+       * <code>optional .mesos.DomainInfo domain = 8;</code>
+       *
+       * <pre>
+       * The domain that this master belongs to. All masters in a Mesos
+       * cluster should belong to the same region.
+       * </pre>
+       */
+      public boolean hasDomain() {
+        return ((bitField0_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional .mesos.DomainInfo domain = 8;</code>
+       *
+       * <pre>
+       * The domain that this master belongs to. All masters in a Mesos
+       * cluster should belong to the same region.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.DomainInfo getDomain() {
+        if (domainBuilder_ == null) {
+          return domain_;
+        } else {
+          return domainBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.DomainInfo domain = 8;</code>
+       *
+       * <pre>
+       * The domain that this master belongs to. All masters in a Mesos
+       * cluster should belong to the same region.
+       * </pre>
+       */
+      public Builder setDomain(org.apache.mesos.Protos.DomainInfo value) {
+        if (domainBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          domain_ = value;
+          onChanged();
+        } else {
+          domainBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.DomainInfo domain = 8;</code>
+       *
+       * <pre>
+       * The domain that this master belongs to. All masters in a Mesos
+       * cluster should belong to the same region.
+       * </pre>
+       */
+      public Builder setDomain(
+          org.apache.mesos.Protos.DomainInfo.Builder builderForValue) {
+        if (domainBuilder_ == null) {
+          domain_ = builderForValue.build();
+          onChanged();
+        } else {
+          domainBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.DomainInfo domain = 8;</code>
+       *
+       * <pre>
+       * The domain that this master belongs to. All masters in a Mesos
+       * cluster should belong to the same region.
+       * </pre>
+       */
+      public Builder mergeDomain(org.apache.mesos.Protos.DomainInfo value) {
+        if (domainBuilder_ == null) {
+          if (((bitField0_ & 0x00000080) == 0x00000080) &&
+              domain_ != org.apache.mesos.Protos.DomainInfo.getDefaultInstance()) {
+            domain_ =
+              org.apache.mesos.Protos.DomainInfo.newBuilder(domain_).mergeFrom(value).buildPartial();
+          } else {
+            domain_ = value;
+          }
+          onChanged();
+        } else {
+          domainBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.DomainInfo domain = 8;</code>
+       *
+       * <pre>
+       * The domain that this master belongs to. All masters in a Mesos
+       * cluster should belong to the same region.
+       * </pre>
+       */
+      public Builder clearDomain() {
+        if (domainBuilder_ == null) {
+          domain_ = org.apache.mesos.Protos.DomainInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          domainBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000080);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.DomainInfo domain = 8;</code>
+       *
+       * <pre>
+       * The domain that this master belongs to. All masters in a Mesos
+       * cluster should belong to the same region.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.DomainInfo.Builder getDomainBuilder() {
+        bitField0_ |= 0x00000080;
+        onChanged();
+        return getDomainFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.DomainInfo domain = 8;</code>
+       *
+       * <pre>
+       * The domain that this master belongs to. All masters in a Mesos
+       * cluster should belong to the same region.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.DomainInfoOrBuilder getDomainOrBuilder() {
+        if (domainBuilder_ != null) {
+          return domainBuilder_.getMessageOrBuilder();
+        } else {
+          return domain_;
+        }
+      }
+      /**
+       * <code>optional .mesos.DomainInfo domain = 8;</code>
+       *
+       * <pre>
+       * The domain that this master belongs to. All masters in a Mesos
+       * cluster should belong to the same region.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.DomainInfo, org.apache.mesos.Protos.DomainInfo.Builder, org.apache.mesos.Protos.DomainInfoOrBuilder> 
+          getDomainFieldBuilder() {
+        if (domainBuilder_ == null) {
+          domainBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.DomainInfo, org.apache.mesos.Protos.DomainInfo.Builder, org.apache.mesos.Protos.DomainInfoOrBuilder>(
+                  domain_,
+                  getParentForChildren(),
+                  isClean());
+          domain_ = null;
+        }
+        return domainBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.MasterInfo)
+    }
+
+    static {
+      defaultInstance = new MasterInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.MasterInfo)
+  }
+
+  public interface SlaveInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string hostname = 1;
+    /**
+     * <code>required string hostname = 1;</code>
+     */
+    boolean hasHostname();
+    /**
+     * <code>required string hostname = 1;</code>
+     */
+    java.lang.String getHostname();
+    /**
+     * <code>required string hostname = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getHostnameBytes();
+
+    // optional int32 port = 8 [default = 5051];
+    /**
+     * <code>optional int32 port = 8 [default = 5051];</code>
+     */
+    boolean hasPort();
+    /**
+     * <code>optional int32 port = 8 [default = 5051];</code>
+     */
+    int getPort();
+
+    // repeated .mesos.Resource resources = 3;
+    /**
+     * <code>repeated .mesos.Resource resources = 3;</code>
+     *
+     * <pre>
+     * The configured resources at the agent. This does not include any
+     * dynamic reservations or persistent volumes that may currently
+     * exist at the agent.
+     * </pre>
+     */
+    java.util.List<org.apache.mesos.Protos.Resource> 
+        getResourcesList();
+    /**
+     * <code>repeated .mesos.Resource resources = 3;</code>
+     *
+     * <pre>
+     * The configured resources at the agent. This does not include any
+     * dynamic reservations or persistent volumes that may currently
+     * exist at the agent.
+     * </pre>
+     */
+    org.apache.mesos.Protos.Resource getResources(int index);
+    /**
+     * <code>repeated .mesos.Resource resources = 3;</code>
+     *
+     * <pre>
+     * The configured resources at the agent. This does not include any
+     * dynamic reservations or persistent volumes that may currently
+     * exist at the agent.
+     * </pre>
+     */
+    int getResourcesCount();
+    /**
+     * <code>repeated .mesos.Resource resources = 3;</code>
+     *
+     * <pre>
+     * The configured resources at the agent. This does not include any
+     * dynamic reservations or persistent volumes that may currently
+     * exist at the agent.
+     * </pre>
+     */
+    java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+        getResourcesOrBuilderList();
+    /**
+     * <code>repeated .mesos.Resource resources = 3;</code>
+     *
+     * <pre>
+     * The configured resources at the agent. This does not include any
+     * dynamic reservations or persistent volumes that may currently
+     * exist at the agent.
+     * </pre>
+     */
+    org.apache.mesos.Protos.ResourceOrBuilder getResourcesOrBuilder(
+        int index);
+
+    // repeated .mesos.Attribute attributes = 5;
+    /**
+     * <code>repeated .mesos.Attribute attributes = 5;</code>
+     */
+    java.util.List<org.apache.mesos.Protos.Attribute> 
+        getAttributesList();
+    /**
+     * <code>repeated .mesos.Attribute attributes = 5;</code>
+     */
+    org.apache.mesos.Protos.Attribute getAttributes(int index);
+    /**
+     * <code>repeated .mesos.Attribute attributes = 5;</code>
+     */
+    int getAttributesCount();
+    /**
+     * <code>repeated .mesos.Attribute attributes = 5;</code>
+     */
+    java.util.List<? extends org.apache.mesos.Protos.AttributeOrBuilder> 
+        getAttributesOrBuilderList();
+    /**
+     * <code>repeated .mesos.Attribute attributes = 5;</code>
+     */
+    org.apache.mesos.Protos.AttributeOrBuilder getAttributesOrBuilder(
+        int index);
+
+    // optional .mesos.SlaveID id = 6;
+    /**
+     * <code>optional .mesos.SlaveID id = 6;</code>
+     */
+    boolean hasId();
+    /**
+     * <code>optional .mesos.SlaveID id = 6;</code>
+     */
+    org.apache.mesos.Protos.SlaveID getId();
+    /**
+     * <code>optional .mesos.SlaveID id = 6;</code>
+     */
+    org.apache.mesos.Protos.SlaveIDOrBuilder getIdOrBuilder();
+
+    // optional .mesos.DomainInfo domain = 10;
+    /**
+     * <code>optional .mesos.DomainInfo domain = 10;</code>
+     *
+     * <pre>
+     * The domain that this slave belongs to. If the slave's region
+     * differs from the master's region, it will not appear in resource
+     * offers to frameworks that have not enabled the REGION_AWARE
+     * capability.
+     * </pre>
+     */
+    boolean hasDomain();
+    /**
+     * <code>optional .mesos.DomainInfo domain = 10;</code>
+     *
+     * <pre>
+     * The domain that this slave belongs to. If the slave's region
+     * differs from the master's region, it will not appear in resource
+     * offers to frameworks that have not enabled the REGION_AWARE
+     * capability.
+     * </pre>
+     */
+    org.apache.mesos.Protos.DomainInfo getDomain();
+    /**
+     * <code>optional .mesos.DomainInfo domain = 10;</code>
+     *
+     * <pre>
+     * The domain that this slave belongs to. If the slave's region
+     * differs from the master's region, it will not appear in resource
+     * offers to frameworks that have not enabled the REGION_AWARE
+     * capability.
+     * </pre>
+     */
+    org.apache.mesos.Protos.DomainInfoOrBuilder getDomainOrBuilder();
+
+    // optional bool checkpoint = 7 [default = false];
+    /**
+     * <code>optional bool checkpoint = 7 [default = false];</code>
+     *
+     * <pre>
+     * Slave checkpointing is always enabled in recent Mesos versions;
+     * the value of this field is ignored.
+     * TODO(joerg84): Remove checkpoint field after deprecation cycle starting
+     * with 0.27 (MESOS-2317).
+     * </pre>
+     */
+    boolean hasCheckpoint();
+    /**
+     * <code>optional bool checkpoint = 7 [default = false];</code>
+     *
+     * <pre>
+     * Slave checkpointing is always enabled in recent Mesos versions;
+     * the value of this field is ignored.
+     * TODO(joerg84): Remove checkpoint field after deprecation cycle starting
+     * with 0.27 (MESOS-2317).
+     * </pre>
+     */
+    boolean getCheckpoint();
+  }
+  /**
+   * Protobuf type {@code mesos.SlaveInfo}
+   *
+   * <pre>
+   **
+   * Describes a slave. Note that the 'id' field is only available after
+   * a slave is registered with the master, and is made available here
+   * to facilitate re-registration.
+   * </pre>
+   */
+  public static final class SlaveInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements SlaveInfoOrBuilder {
+    // Use SlaveInfo.newBuilder() to construct.
+    private SlaveInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private SlaveInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final SlaveInfo defaultInstance;
+    public static SlaveInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public SlaveInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private SlaveInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              hostname_ = input.readBytes();
+              break;
+            }
+            case 26: {
+              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
+                resources_ = new java.util.ArrayList<org.apache.mesos.Protos.Resource>();
+                mutable_bitField0_ |= 0x00000004;
+              }
+              resources_.add(input.readMessage(org.apache.mesos.Protos.Resource.PARSER, extensionRegistry));
+              break;
+            }
+            case 42: {
+              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
+                attributes_ = new java.util.ArrayList<org.apache.mesos.Protos.Attribute>();
+                mutable_bitField0_ |= 0x00000008;
+              }
+              attributes_.add(input.readMessage(org.apache.mesos.Protos.Attribute.PARSER, extensionRegistry));
+              break;
+            }
+            case 50: {
+              org.apache.mesos.Protos.SlaveID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                subBuilder = id_.toBuilder();
+              }
+              id_ = input.readMessage(org.apache.mesos.Protos.SlaveID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(id_);
+                id_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000004;
+              break;
+            }
+            case 56: {
+              bitField0_ |= 0x00000010;
+              checkpoint_ = input.readBool();
+              break;
+            }
+            case 64: {
+              bitField0_ |= 0x00000002;
+              port_ = input.readInt32();
+              break;
+            }
+            case 82: {
+              org.apache.mesos.Protos.DomainInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                subBuilder = domain_.toBuilder();
+              }
+              domain_ = input.readMessage(org.apache.mesos.Protos.DomainInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(domain_);
+                domain_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000008;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
+          resources_ = java.util.Collections.unmodifiableList(resources_);
+        }
+        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
+          attributes_ = java.util.Collections.unmodifiableList(attributes_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_SlaveInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_SlaveInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.SlaveInfo.class, org.apache.mesos.Protos.SlaveInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<SlaveInfo> PARSER =
+        new com.google.protobuf.AbstractParser<SlaveInfo>() {
+      public SlaveInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new SlaveInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<SlaveInfo> getParserForType() {
+      return PARSER;
+    }
+
+    public interface CapabilityOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // optional .mesos.SlaveInfo.Capability.Type type = 1;
+      /**
+       * <code>optional .mesos.SlaveInfo.Capability.Type type = 1;</code>
+       *
+       * <pre>
+       * Enum fields should be optional, see: MESOS-4997.
+       * </pre>
+       */
+      boolean hasType();
+      /**
+       * <code>optional .mesos.SlaveInfo.Capability.Type type = 1;</code>
+       *
+       * <pre>
+       * Enum fields should be optional, see: MESOS-4997.
+       * </pre>
+       */
+      org.apache.mesos.Protos.SlaveInfo.Capability.Type getType();
+    }
+    /**
+     * Protobuf type {@code mesos.SlaveInfo.Capability}
+     */
+    public static final class Capability extends
+        com.google.protobuf.GeneratedMessage
+        implements CapabilityOrBuilder {
+      // Use Capability.newBuilder() to construct.
+      private Capability(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Capability(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Capability defaultInstance;
+      public static Capability getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Capability getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Capability(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 8: {
+                int rawValue = input.readEnum();
+                org.apache.mesos.Protos.SlaveInfo.Capability.Type value = org.apache.mesos.Protos.SlaveInfo.Capability.Type.valueOf(rawValue);
+                if (value == null) {
+                  unknownFields.mergeVarintField(1, rawValue);
+                } else {
+                  bitField0_ |= 0x00000001;
+                  type_ = value;
+                }
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_SlaveInfo_Capability_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_SlaveInfo_Capability_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.SlaveInfo.Capability.class, org.apache.mesos.Protos.SlaveInfo.Capability.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Capability> PARSER =
+          new com.google.protobuf.AbstractParser<Capability>() {
+        public Capability parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Capability(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Capability> getParserForType() {
+        return PARSER;
+      }
+
+      /**
+       * Protobuf enum {@code mesos.SlaveInfo.Capability.Type}
+       */
+      public enum Type
+          implements com.google.protobuf.ProtocolMessageEnum {
+        /**
+         * <code>UNKNOWN = 0;</code>
+         *
+         * <pre>
+         * This must be the first enum value in this list, to
+         * ensure that if 'type' is not set, the default value
+         * is UNKNOWN. This enables enum values to be added
+         * in a backwards-compatible way. See: MESOS-4997.
+         * </pre>
+         */
+        UNKNOWN(0, 0),
+        /**
+         * <code>MULTI_ROLE = 1;</code>
+         *
+         * <pre>
+         * This expresses the ability for the agent to be able
+         * to launch tasks of a 'multi-role' framework.
+         * </pre>
+         */
+        MULTI_ROLE(1, 1),
+        /**
+         * <code>HIERARCHICAL_ROLE = 2;</code>
+         *
+         * <pre>
+         * This expresses the ability for the agent to be able to launch
+         * tasks, reserve resources, and create volumes using resources
+         * allocated to a 'hierarchical-role'.
+         * NOTE: This capability is required specifically for creating
+         * volumes because a hierchical role includes '/' (slashes) in them.
+         * Agents with this capability know to transform the '/' (slashes)
+         * into ' ' (spaces).
+         * </pre>
+         */
+        HIERARCHICAL_ROLE(2, 2),
+        /**
+         * <code>RESERVATION_REFINEMENT = 3;</code>
+         *
+         * <pre>
+         * This capability has three effects for an agent.
+         *
+         * (1) The format of the checkpointed resources, and
+         *     the resources reported to master.
+         *
+         *     These resources are reported in the "pre-reservation-refinement"
+         *     format if none of the resources have refined reservations. If any
+         *     of the resources have refined reservations, they are reported in
+         *     the "post-reservation-refinement" format. The purpose is to allow
+         *     downgrading of an agent as well as communication with a pre-1.4.0
+         *     master until the reservation refinement feature is actually used.
+         *
+         *     See the 'Resource Format' section for more details.
+         *
+         * (2) The format of the resources reported by the HTTP endpoints.
+         *
+         *     For resources reported by agent endpoints, the
+         *     "pre-reservation-refinement" format is "injected" if possible.
+         *     That is, resources without refined reservations will have the
+         *     `Resource.role` and `Resource.reservation` set, whereas
+         *     resources with refined reservations will not.
+         *
+         *     See the 'Resource Format' section for more details.
+         *
+         * (3) The ability for the agent to launch tasks, reserve resources, and
+         *     create volumes using resources that have refined reservations.
+         *
+         *     See `ReservationInfo.reservations` section for more details.
+         *
+         * NOTE: Resources are said to have refined reservations if it uses the
+         * `Resource.reservations` field, and `Resource.reservations_size() &gt; 1`.
+         * </pre>
+         */
+        RESERVATION_REFINEMENT(3, 3),
+        ;
+
+        /**
+         * <code>UNKNOWN = 0;</code>
+         *
+         * <pre>
+         * This must be the first enum value in this list, to
+         * ensure that if 'type' is not set, the default value
+         * is UNKNOWN. This enables enum values to be added
+         * in a backwards-compatible way. See: MESOS-4997.
+         * </pre>
+         */
+        public static final int UNKNOWN_VALUE = 0;
+        /**
+         * <code>MULTI_ROLE = 1;</code>
+         *
+         * <pre>
+         * This expresses the ability for the agent to be able
+         * to launch tasks of a 'multi-role' framework.
+         * </pre>
+         */
+        public static final int MULTI_ROLE_VALUE = 1;
+        /**
+         * <code>HIERARCHICAL_ROLE = 2;</code>
+         *
+         * <pre>
+         * This expresses the ability for the agent to be able to launch
+         * tasks, reserve resources, and create volumes using resources
+         * allocated to a 'hierarchical-role'.
+         * NOTE: This capability is required specifically for creating
+         * volumes because a hierchical role includes '/' (slashes) in them.
+         * Agents with this capability know to transform the '/' (slashes)
+         * into ' ' (spaces).
+         * </pre>
+         */
+        public static final int HIERARCHICAL_ROLE_VALUE = 2;
+        /**
+         * <code>RESERVATION_REFINEMENT = 3;</code>
+         *
+         * <pre>
+         * This capability has three effects for an agent.
+         *
+         * (1) The format of the checkpointed resources, and
+         *     the resources reported to master.
+         *
+         *     These resources are reported in the "pre-reservation-refinement"
+         *     format if none of the resources have refined reservations. If any
+         *     of the resources have refined reservations, they are reported in
+         *     the "post-reservation-refinement" format. The purpose is to allow
+         *     downgrading of an agent as well as communication with a pre-1.4.0
+         *     master until the reservation refinement feature is actually used.
+         *
+         *     See the 'Resource Format' section for more details.
+         *
+         * (2) The format of the resources reported by the HTTP endpoints.
+         *
+         *     For resources reported by agent endpoints, the
+         *     "pre-reservation-refinement" format is "injected" if possible.
+         *     That is, resources without refined reservations will have the
+         *     `Resource.role` and `Resource.reservation` set, whereas
+         *     resources with refined reservations will not.
+         *
+         *     See the 'Resource Format' section for more details.
+         *
+         * (3) The ability for the agent to launch tasks, reserve resources, and
+         *     create volumes using resources that have refined reservations.
+         *
+         *     See `ReservationInfo.reservations` section for more details.
+         *
+         * NOTE: Resources are said to have refined reservations if it uses the
+         * `Resource.reservations` field, and `Resource.reservations_size() &gt; 1`.
+         * </pre>
+         */
+        public static final int RESERVATION_REFINEMENT_VALUE = 3;
+
+
+        public final int getNumber() { return value; }
+
+        public static Type valueOf(int value) {
+          switch (value) {
+            case 0: return UNKNOWN;
+            case 1: return MULTI_ROLE;
+            case 2: return HIERARCHICAL_ROLE;
+            case 3: return RESERVATION_REFINEMENT;
+            default: return null;
+          }
+        }
+
+        public static com.google.protobuf.Internal.EnumLiteMap<Type>
+            internalGetValueMap() {
+          return internalValueMap;
+        }
+        private static com.google.protobuf.Internal.EnumLiteMap<Type>
+            internalValueMap =
+              new com.google.protobuf.Internal.EnumLiteMap<Type>() {
+                public Type findValueByNumber(int number) {
+                  return Type.valueOf(number);
+                }
+              };
+
+        public final com.google.protobuf.Descriptors.EnumValueDescriptor
+            getValueDescriptor() {
+          return getDescriptor().getValues().get(index);
+        }
+        public final com.google.protobuf.Descriptors.EnumDescriptor
+            getDescriptorForType() {
+          return getDescriptor();
+        }
+        public static final com.google.protobuf.Descriptors.EnumDescriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.SlaveInfo.Capability.getDescriptor().getEnumTypes().get(0);
+        }
+
+        private static final Type[] VALUES = values();
+
+        public static Type valueOf(
+            com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+          if (desc.getType() != getDescriptor()) {
+            throw new java.lang.IllegalArgumentException(
+              "EnumValueDescriptor is not for this type.");
+          }
+          return VALUES[desc.getIndex()];
+        }
+
+        private final int index;
+        private final int value;
+
+        private Type(int index, int value) {
+          this.index = index;
+          this.value = value;
+        }
+
+        // @@protoc_insertion_point(enum_scope:mesos.SlaveInfo.Capability.Type)
+      }
+
+      private int bitField0_;
+      // optional .mesos.SlaveInfo.Capability.Type type = 1;
+      public static final int TYPE_FIELD_NUMBER = 1;
+      private org.apache.mesos.Protos.SlaveInfo.Capability.Type type_;
+      /**
+       * <code>optional .mesos.SlaveInfo.Capability.Type type = 1;</code>
+       *
+       * <pre>
+       * Enum fields should be optional, see: MESOS-4997.
+       * </pre>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.SlaveInfo.Capability.Type type = 1;</code>
+       *
+       * <pre>
+       * Enum fields should be optional, see: MESOS-4997.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.SlaveInfo.Capability.Type getType() {
+        return type_;
+      }
+
+      private void initFields() {
+        type_ = org.apache.mesos.Protos.SlaveInfo.Capability.Type.UNKNOWN;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeEnum(1, type_.getNumber());
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeEnumSize(1, type_.getNumber());
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.Protos.SlaveInfo.Capability parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.SlaveInfo.Capability parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.SlaveInfo.Capability parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.SlaveInfo.Capability parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.SlaveInfo.Capability parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.SlaveInfo.Capability parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.SlaveInfo.Capability parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.Protos.SlaveInfo.Capability parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.SlaveInfo.Capability parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.SlaveInfo.Capability parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.Protos.SlaveInfo.Capability prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.SlaveInfo.Capability}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.Protos.SlaveInfo.CapabilityOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_SlaveInfo_Capability_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_SlaveInfo_Capability_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.SlaveInfo.Capability.class, org.apache.mesos.Protos.SlaveInfo.Capability.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.Protos.SlaveInfo.Capability.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          type_ = org.apache.mesos.Protos.SlaveInfo.Capability.Type.UNKNOWN;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.Protos.internal_static_mesos_SlaveInfo_Capability_descriptor;
+        }
+
+        public org.apache.mesos.Protos.SlaveInfo.Capability getDefaultInstanceForType() {
+          return org.apache.mesos.Protos.SlaveInfo.Capability.getDefaultInstance();
+        }
+
+        public org.apache.mesos.Protos.SlaveInfo.Capability build() {
+          org.apache.mesos.Protos.SlaveInfo.Capability result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.Protos.SlaveInfo.Capability buildPartial() {
+          org.apache.mesos.Protos.SlaveInfo.Capability result = new org.apache.mesos.Protos.SlaveInfo.Capability(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.type_ = type_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.Protos.SlaveInfo.Capability) {
+            return mergeFrom((org.apache.mesos.Protos.SlaveInfo.Capability)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.Protos.SlaveInfo.Capability other) {
+          if (other == org.apache.mesos.Protos.SlaveInfo.Capability.getDefaultInstance()) return this;
+          if (other.hasType()) {
+            setType(other.getType());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.Protos.SlaveInfo.Capability parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.Protos.SlaveInfo.Capability) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // optional .mesos.SlaveInfo.Capability.Type type = 1;
+        private org.apache.mesos.Protos.SlaveInfo.Capability.Type type_ = org.apache.mesos.Protos.SlaveInfo.Capability.Type.UNKNOWN;
+        /**
+         * <code>optional .mesos.SlaveInfo.Capability.Type type = 1;</code>
+         *
+         * <pre>
+         * Enum fields should be optional, see: MESOS-4997.
+         * </pre>
+         */
+        public boolean hasType() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional .mesos.SlaveInfo.Capability.Type type = 1;</code>
+         *
+         * <pre>
+         * Enum fields should be optional, see: MESOS-4997.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.SlaveInfo.Capability.Type getType() {
+          return type_;
+        }
+        /**
+         * <code>optional .mesos.SlaveInfo.Capability.Type type = 1;</code>
+         *
+         * <pre>
+         * Enum fields should be optional, see: MESOS-4997.
+         * </pre>
+         */
+        public Builder setType(org.apache.mesos.Protos.SlaveInfo.Capability.Type value) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          bitField0_ |= 0x00000001;
+          type_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional .mesos.SlaveInfo.Capability.Type type = 1;</code>
+         *
+         * <pre>
+         * Enum fields should be optional, see: MESOS-4997.
+         * </pre>
+         */
+        public Builder clearType() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          type_ = org.apache.mesos.Protos.SlaveInfo.Capability.Type.UNKNOWN;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.SlaveInfo.Capability)
+      }
+
+      static {
+        defaultInstance = new Capability(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.SlaveInfo.Capability)
+    }
+
+    private int bitField0_;
+    // required string hostname = 1;
+    public static final int HOSTNAME_FIELD_NUMBER = 1;
+    private java.lang.Object hostname_;
+    /**
+     * <code>required string hostname = 1;</code>
+     */
+    public boolean hasHostname() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string hostname = 1;</code>
+     */
+    public java.lang.String getHostname() {
+      java.lang.Object ref = hostname_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          hostname_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string hostname = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getHostnameBytes() {
+      java.lang.Object ref = hostname_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        hostname_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional int32 port = 8 [default = 5051];
+    public static final int PORT_FIELD_NUMBER = 8;
+    private int port_;
+    /**
+     * <code>optional int32 port = 8 [default = 5051];</code>
+     */
+    public boolean hasPort() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional int32 port = 8 [default = 5051];</code>
+     */
+    public int getPort() {
+      return port_;
+    }
+
+    // repeated .mesos.Resource resources = 3;
+    public static final int RESOURCES_FIELD_NUMBER = 3;
+    private java.util.List<org.apache.mesos.Protos.Resource> resources_;
+    /**
+     * <code>repeated .mesos.Resource resources = 3;</code>
+     *
+     * <pre>
+     * The configured resources at the agent. This does not include any
+     * dynamic reservations or persistent volumes that may currently
+     * exist at the agent.
+     * </pre>
+     */
+    public java.util.List<org.apache.mesos.Protos.Resource> getResourcesList() {
+      return resources_;
+    }
+    /**
+     * <code>repeated .mesos.Resource resources = 3;</code>
+     *
+     * <pre>
+     * The configured resources at the agent. This does not include any
+     * dynamic reservations or persistent volumes that may currently
+     * exist at the agent.
+     * </pre>
+     */
+    public java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+        getResourcesOrBuilderList() {
+      return resources_;
+    }
+    /**
+     * <code>repeated .mesos.Resource resources = 3;</code>
+     *
+     * <pre>
+     * The configured resources at the agent. This does not include any
+     * dynamic reservations or persistent volumes that may currently
+     * exist at the agent.
+     * </pre>
+     */
+    public int getResourcesCount() {
+      return resources_.size();
+    }
+    /**
+     * <code>repeated .mesos.Resource resources = 3;</code>
+     *
+     * <pre>
+     * The configured resources at the agent. This does not include any
+     * dynamic reservations or persistent volumes that may currently
+     * exist at the agent.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.Resource getResources(int index) {
+      return resources_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.Resource resources = 3;</code>
+     *
+     * <pre>
+     * The configured resources at the agent. This does not include any
+     * dynamic reservations or persistent volumes that may currently
+     * exist at the agent.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.ResourceOrBuilder getResourcesOrBuilder(
+        int index) {
+      return resources_.get(index);
+    }
+
+    // repeated .mesos.Attribute attributes = 5;
+    public static final int ATTRIBUTES_FIELD_NUMBER = 5;
+    private java.util.List<org.apache.mesos.Protos.Attribute> attributes_;
+    /**
+     * <code>repeated .mesos.Attribute attributes = 5;</code>
+     */
+    public java.util.List<org.apache.mesos.Protos.Attribute> getAttributesList() {
+      return attributes_;
+    }
+    /**
+     * <code>repeated .mesos.Attribute attributes = 5;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.Protos.AttributeOrBuilder> 
+        getAttributesOrBuilderList() {
+      return attributes_;
+    }
+    /**
+     * <code>repeated .mesos.Attribute attributes = 5;</code>
+     */
+    public int getAttributesCount() {
+      return attributes_.size();
+    }
+    /**
+     * <code>repeated .mesos.Attribute attributes = 5;</code>
+     */
+    public org.apache.mesos.Protos.Attribute getAttributes(int index) {
+      return attributes_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.Attribute attributes = 5;</code>
+     */
+    public org.apache.mesos.Protos.AttributeOrBuilder getAttributesOrBuilder(
+        int index) {
+      return attributes_.get(index);
+    }
+
+    // optional .mesos.SlaveID id = 6;
+    public static final int ID_FIELD_NUMBER = 6;
+    private org.apache.mesos.Protos.SlaveID id_;
+    /**
+     * <code>optional .mesos.SlaveID id = 6;</code>
+     */
+    public boolean hasId() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional .mesos.SlaveID id = 6;</code>
+     */
+    public org.apache.mesos.Protos.SlaveID getId() {
+      return id_;
+    }
+    /**
+     * <code>optional .mesos.SlaveID id = 6;</code>
+     */
+    public org.apache.mesos.Protos.SlaveIDOrBuilder getIdOrBuilder() {
+      return id_;
+    }
+
+    // optional .mesos.DomainInfo domain = 10;
+    public static final int DOMAIN_FIELD_NUMBER = 10;
+    private org.apache.mesos.Protos.DomainInfo domain_;
+    /**
+     * <code>optional .mesos.DomainInfo domain = 10;</code>
+     *
+     * <pre>
+     * The domain that this slave belongs to. If the slave's region
+     * differs from the master's region, it will not appear in resource
+     * offers to frameworks that have not enabled the REGION_AWARE
+     * capability.
+     * </pre>
+     */
+    public boolean hasDomain() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional .mesos.DomainInfo domain = 10;</code>
+     *
+     * <pre>
+     * The domain that this slave belongs to. If the slave's region
+     * differs from the master's region, it will not appear in resource
+     * offers to frameworks that have not enabled the REGION_AWARE
+     * capability.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.DomainInfo getDomain() {
+      return domain_;
+    }
+    /**
+     * <code>optional .mesos.DomainInfo domain = 10;</code>
+     *
+     * <pre>
+     * The domain that this slave belongs to. If the slave's region
+     * differs from the master's region, it will not appear in resource
+     * offers to frameworks that have not enabled the REGION_AWARE
+     * capability.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.DomainInfoOrBuilder getDomainOrBuilder() {
+      return domain_;
+    }
+
+    // optional bool checkpoint = 7 [default = false];
+    public static final int CHECKPOINT_FIELD_NUMBER = 7;
+    private boolean checkpoint_;
+    /**
+     * <code>optional bool checkpoint = 7 [default = false];</code>
+     *
+     * <pre>
+     * Slave checkpointing is always enabled in recent Mesos versions;
+     * the value of this field is ignored.
+     * TODO(joerg84): Remove checkpoint field after deprecation cycle starting
+     * with 0.27 (MESOS-2317).
+     * </pre>
+     */
+    public boolean hasCheckpoint() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional bool checkpoint = 7 [default = false];</code>
+     *
+     * <pre>
+     * Slave checkpointing is always enabled in recent Mesos versions;
+     * the value of this field is ignored.
+     * TODO(joerg84): Remove checkpoint field after deprecation cycle starting
+     * with 0.27 (MESOS-2317).
+     * </pre>
+     */
+    public boolean getCheckpoint() {
+      return checkpoint_;
+    }
+
+    private void initFields() {
+      hostname_ = "";
+      port_ = 5051;
+      resources_ = java.util.Collections.emptyList();
+      attributes_ = java.util.Collections.emptyList();
+      id_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+      domain_ = org.apache.mesos.Protos.DomainInfo.getDefaultInstance();
+      checkpoint_ = false;
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasHostname()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      for (int i = 0; i < getResourcesCount(); i++) {
+        if (!getResources(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      for (int i = 0; i < getAttributesCount(); i++) {
+        if (!getAttributes(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasId()) {
+        if (!getId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasDomain()) {
+        if (!getDomain().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getHostnameBytes());
+      }
+      for (int i = 0; i < resources_.size(); i++) {
+        output.writeMessage(3, resources_.get(i));
+      }
+      for (int i = 0; i < attributes_.size(); i++) {
+        output.writeMessage(5, attributes_.get(i));
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeMessage(6, id_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeBool(7, checkpoint_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeInt32(8, port_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeMessage(10, domain_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getHostnameBytes());
+      }
+      for (int i = 0; i < resources_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, resources_.get(i));
+      }
+      for (int i = 0; i < attributes_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(5, attributes_.get(i));
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(6, id_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(7, checkpoint_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt32Size(8, port_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(10, domain_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.SlaveInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.SlaveInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.SlaveInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.SlaveInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.SlaveInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.SlaveInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.SlaveInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.SlaveInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.SlaveInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.SlaveInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.SlaveInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.SlaveInfo}
+     *
+     * <pre>
+     **
+     * Describes a slave. Note that the 'id' field is only available after
+     * a slave is registered with the master, and is made available here
+     * to facilitate re-registration.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.SlaveInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_SlaveInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_SlaveInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.SlaveInfo.class, org.apache.mesos.Protos.SlaveInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.SlaveInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getResourcesFieldBuilder();
+          getAttributesFieldBuilder();
+          getIdFieldBuilder();
+          getDomainFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        hostname_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        port_ = 5051;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        if (resourcesBuilder_ == null) {
+          resources_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000004);
+        } else {
+          resourcesBuilder_.clear();
+        }
+        if (attributesBuilder_ == null) {
+          attributes_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000008);
+        } else {
+          attributesBuilder_.clear();
+        }
+        if (idBuilder_ == null) {
+          id_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+        } else {
+          idBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        if (domainBuilder_ == null) {
+          domain_ = org.apache.mesos.Protos.DomainInfo.getDefaultInstance();
+        } else {
+          domainBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
+        checkpoint_ = false;
+        bitField0_ = (bitField0_ & ~0x00000040);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_SlaveInfo_descriptor;
+      }
+
+      public org.apache.mesos.Protos.SlaveInfo getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.SlaveInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.SlaveInfo build() {
+        org.apache.mesos.Protos.SlaveInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.SlaveInfo buildPartial() {
+        org.apache.mesos.Protos.SlaveInfo result = new org.apache.mesos.Protos.SlaveInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.hostname_ = hostname_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.port_ = port_;
+        if (resourcesBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) == 0x00000004)) {
+            resources_ = java.util.Collections.unmodifiableList(resources_);
+            bitField0_ = (bitField0_ & ~0x00000004);
+          }
+          result.resources_ = resources_;
+        } else {
+          result.resources_ = resourcesBuilder_.build();
+        }
+        if (attributesBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008)) {
+            attributes_ = java.util.Collections.unmodifiableList(attributes_);
+            bitField0_ = (bitField0_ & ~0x00000008);
+          }
+          result.attributes_ = attributes_;
+        } else {
+          result.attributes_ = attributesBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        if (idBuilder_ == null) {
+          result.id_ = id_;
+        } else {
+          result.id_ = idBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        if (domainBuilder_ == null) {
+          result.domain_ = domain_;
+        } else {
+          result.domain_ = domainBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.checkpoint_ = checkpoint_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.SlaveInfo) {
+          return mergeFrom((org.apache.mesos.Protos.SlaveInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.SlaveInfo other) {
+        if (other == org.apache.mesos.Protos.SlaveInfo.getDefaultInstance()) return this;
+        if (other.hasHostname()) {
+          bitField0_ |= 0x00000001;
+          hostname_ = other.hostname_;
+          onChanged();
+        }
+        if (other.hasPort()) {
+          setPort(other.getPort());
+        }
+        if (resourcesBuilder_ == null) {
+          if (!other.resources_.isEmpty()) {
+            if (resources_.isEmpty()) {
+              resources_ = other.resources_;
+              bitField0_ = (bitField0_ & ~0x00000004);
+            } else {
+              ensureResourcesIsMutable();
+              resources_.addAll(other.resources_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.resources_.isEmpty()) {
+            if (resourcesBuilder_.isEmpty()) {
+              resourcesBuilder_.dispose();
+              resourcesBuilder_ = null;
+              resources_ = other.resources_;
+              bitField0_ = (bitField0_ & ~0x00000004);
+              resourcesBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getResourcesFieldBuilder() : null;
+            } else {
+              resourcesBuilder_.addAllMessages(other.resources_);
+            }
+          }
+        }
+        if (attributesBuilder_ == null) {
+          if (!other.attributes_.isEmpty()) {
+            if (attributes_.isEmpty()) {
+              attributes_ = other.attributes_;
+              bitField0_ = (bitField0_ & ~0x00000008);
+            } else {
+              ensureAttributesIsMutable();
+              attributes_.addAll(other.attributes_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.attributes_.isEmpty()) {
+            if (attributesBuilder_.isEmpty()) {
+              attributesBuilder_.dispose();
+              attributesBuilder_ = null;
+              attributes_ = other.attributes_;
+              bitField0_ = (bitField0_ & ~0x00000008);
+              attributesBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getAttributesFieldBuilder() : null;
+            } else {
+              attributesBuilder_.addAllMessages(other.attributes_);
+            }
+          }
+        }
+        if (other.hasId()) {
+          mergeId(other.getId());
+        }
+        if (other.hasDomain()) {
+          mergeDomain(other.getDomain());
+        }
+        if (other.hasCheckpoint()) {
+          setCheckpoint(other.getCheckpoint());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasHostname()) {
+          
+          return false;
+        }
+        for (int i = 0; i < getResourcesCount(); i++) {
+          if (!getResources(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        for (int i = 0; i < getAttributesCount(); i++) {
+          if (!getAttributes(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasId()) {
+          if (!getId().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasDomain()) {
+          if (!getDomain().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.SlaveInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.SlaveInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string hostname = 1;
+      private java.lang.Object hostname_ = "";
+      /**
+       * <code>required string hostname = 1;</code>
+       */
+      public boolean hasHostname() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string hostname = 1;</code>
+       */
+      public java.lang.String getHostname() {
+        java.lang.Object ref = hostname_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          hostname_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string hostname = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getHostnameBytes() {
+        java.lang.Object ref = hostname_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          hostname_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string hostname = 1;</code>
+       */
+      public Builder setHostname(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        hostname_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string hostname = 1;</code>
+       */
+      public Builder clearHostname() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        hostname_ = getDefaultInstance().getHostname();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string hostname = 1;</code>
+       */
+      public Builder setHostnameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        hostname_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional int32 port = 8 [default = 5051];
+      private int port_ = 5051;
+      /**
+       * <code>optional int32 port = 8 [default = 5051];</code>
+       */
+      public boolean hasPort() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional int32 port = 8 [default = 5051];</code>
+       */
+      public int getPort() {
+        return port_;
+      }
+      /**
+       * <code>optional int32 port = 8 [default = 5051];</code>
+       */
+      public Builder setPort(int value) {
+        bitField0_ |= 0x00000002;
+        port_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int32 port = 8 [default = 5051];</code>
+       */
+      public Builder clearPort() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        port_ = 5051;
+        onChanged();
+        return this;
+      }
+
+      // repeated .mesos.Resource resources = 3;
+      private java.util.List<org.apache.mesos.Protos.Resource> resources_ =
+        java.util.Collections.emptyList();
+      private void ensureResourcesIsMutable() {
+        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
+          resources_ = new java.util.ArrayList<org.apache.mesos.Protos.Resource>(resources_);
+          bitField0_ |= 0x00000004;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder> resourcesBuilder_;
+
+      /**
+       * <code>repeated .mesos.Resource resources = 3;</code>
+       *
+       * <pre>
+       * The configured resources at the agent. This does not include any
+       * dynamic reservations or persistent volumes that may currently
+       * exist at the agent.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.Protos.Resource> getResourcesList() {
+        if (resourcesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(resources_);
+        } else {
+          return resourcesBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 3;</code>
+       *
+       * <pre>
+       * The configured resources at the agent. This does not include any
+       * dynamic reservations or persistent volumes that may currently
+       * exist at the agent.
+       * </pre>
+       */
+      public int getResourcesCount() {
+        if (resourcesBuilder_ == null) {
+          return resources_.size();
+        } else {
+          return resourcesBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 3;</code>
+       *
+       * <pre>
+       * The configured resources at the agent. This does not include any
+       * dynamic reservations or persistent volumes that may currently
+       * exist at the agent.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Resource getResources(int index) {
+        if (resourcesBuilder_ == null) {
+          return resources_.get(index);
+        } else {
+          return resourcesBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 3;</code>
+       *
+       * <pre>
+       * The configured resources at the agent. This does not include any
+       * dynamic reservations or persistent volumes that may currently
+       * exist at the agent.
+       * </pre>
+       */
+      public Builder setResources(
+          int index, org.apache.mesos.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.set(index, value);
+          onChanged();
+        } else {
+          resourcesBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 3;</code>
+       *
+       * <pre>
+       * The configured resources at the agent. This does not include any
+       * dynamic reservations or persistent volumes that may currently
+       * exist at the agent.
+       * </pre>
+       */
+      public Builder setResources(
+          int index, org.apache.mesos.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 3;</code>
+       *
+       * <pre>
+       * The configured resources at the agent. This does not include any
+       * dynamic reservations or persistent volumes that may currently
+       * exist at the agent.
+       * </pre>
+       */
+      public Builder addResources(org.apache.mesos.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.add(value);
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 3;</code>
+       *
+       * <pre>
+       * The configured resources at the agent. This does not include any
+       * dynamic reservations or persistent volumes that may currently
+       * exist at the agent.
+       * </pre>
+       */
+      public Builder addResources(
+          int index, org.apache.mesos.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.add(index, value);
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 3;</code>
+       *
+       * <pre>
+       * The configured resources at the agent. This does not include any
+       * dynamic reservations or persistent volumes that may currently
+       * exist at the agent.
+       * </pre>
+       */
+      public Builder addResources(
+          org.apache.mesos.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.add(builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 3;</code>
+       *
+       * <pre>
+       * The configured resources at the agent. This does not include any
+       * dynamic reservations or persistent volumes that may currently
+       * exist at the agent.
+       * </pre>
+       */
+      public Builder addResources(
+          int index, org.apache.mesos.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 3;</code>
+       *
+       * <pre>
+       * The configured resources at the agent. This does not include any
+       * dynamic reservations or persistent volumes that may currently
+       * exist at the agent.
+       * </pre>
+       */
+      public Builder addAllResources(
+          java.lang.Iterable<? extends org.apache.mesos.Protos.Resource> values) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          super.addAll(values, resources_);
+          onChanged();
+        } else {
+          resourcesBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 3;</code>
+       *
+       * <pre>
+       * The configured resources at the agent. This does not include any
+       * dynamic reservations or persistent volumes that may currently
+       * exist at the agent.
+       * </pre>
+       */
+      public Builder clearResources() {
+        if (resourcesBuilder_ == null) {
+          resources_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000004);
+          onChanged();
+        } else {
+          resourcesBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 3;</code>
+       *
+       * <pre>
+       * The configured resources at the agent. This does not include any
+       * dynamic reservations or persistent volumes that may currently
+       * exist at the agent.
+       * </pre>
+       */
+      public Builder removeResources(int index) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.remove(index);
+          onChanged();
+        } else {
+          resourcesBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 3;</code>
+       *
+       * <pre>
+       * The configured resources at the agent. This does not include any
+       * dynamic reservations or persistent volumes that may currently
+       * exist at the agent.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Resource.Builder getResourcesBuilder(
+          int index) {
+        return getResourcesFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 3;</code>
+       *
+       * <pre>
+       * The configured resources at the agent. This does not include any
+       * dynamic reservations or persistent volumes that may currently
+       * exist at the agent.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.ResourceOrBuilder getResourcesOrBuilder(
+          int index) {
+        if (resourcesBuilder_ == null) {
+          return resources_.get(index);  } else {
+          return resourcesBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 3;</code>
+       *
+       * <pre>
+       * The configured resources at the agent. This does not include any
+       * dynamic reservations or persistent volumes that may currently
+       * exist at the agent.
+       * </pre>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+           getResourcesOrBuilderList() {
+        if (resourcesBuilder_ != null) {
+          return resourcesBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(resources_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 3;</code>
+       *
+       * <pre>
+       * The configured resources at the agent. This does not include any
+       * dynamic reservations or persistent volumes that may currently
+       * exist at the agent.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Resource.Builder addResourcesBuilder() {
+        return getResourcesFieldBuilder().addBuilder(
+            org.apache.mesos.Protos.Resource.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 3;</code>
+       *
+       * <pre>
+       * The configured resources at the agent. This does not include any
+       * dynamic reservations or persistent volumes that may currently
+       * exist at the agent.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Resource.Builder addResourcesBuilder(
+          int index) {
+        return getResourcesFieldBuilder().addBuilder(
+            index, org.apache.mesos.Protos.Resource.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 3;</code>
+       *
+       * <pre>
+       * The configured resources at the agent. This does not include any
+       * dynamic reservations or persistent volumes that may currently
+       * exist at the agent.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.Protos.Resource.Builder> 
+           getResourcesBuilderList() {
+        return getResourcesFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder> 
+          getResourcesFieldBuilder() {
+        if (resourcesBuilder_ == null) {
+          resourcesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder>(
+                  resources_,
+                  ((bitField0_ & 0x00000004) == 0x00000004),
+                  getParentForChildren(),
+                  isClean());
+          resources_ = null;
+        }
+        return resourcesBuilder_;
+      }
+
+      // repeated .mesos.Attribute attributes = 5;
+      private java.util.List<org.apache.mesos.Protos.Attribute> attributes_ =
+        java.util.Collections.emptyList();
+      private void ensureAttributesIsMutable() {
+        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
+          attributes_ = new java.util.ArrayList<org.apache.mesos.Protos.Attribute>(attributes_);
+          bitField0_ |= 0x00000008;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.Attribute, org.apache.mesos.Protos.Attribute.Builder, org.apache.mesos.Protos.AttributeOrBuilder> attributesBuilder_;
+
+      /**
+       * <code>repeated .mesos.Attribute attributes = 5;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.Attribute> getAttributesList() {
+        if (attributesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(attributes_);
+        } else {
+          return attributesBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 5;</code>
+       */
+      public int getAttributesCount() {
+        if (attributesBuilder_ == null) {
+          return attributes_.size();
+        } else {
+          return attributesBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 5;</code>
+       */
+      public org.apache.mesos.Protos.Attribute getAttributes(int index) {
+        if (attributesBuilder_ == null) {
+          return attributes_.get(index);
+        } else {
+          return attributesBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 5;</code>
+       */
+      public Builder setAttributes(
+          int index, org.apache.mesos.Protos.Attribute value) {
+        if (attributesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureAttributesIsMutable();
+          attributes_.set(index, value);
+          onChanged();
+        } else {
+          attributesBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 5;</code>
+       */
+      public Builder setAttributes(
+          int index, org.apache.mesos.Protos.Attribute.Builder builderForValue) {
+        if (attributesBuilder_ == null) {
+          ensureAttributesIsMutable();
+          attributes_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          attributesBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 5;</code>
+       */
+      public Builder addAttributes(org.apache.mesos.Protos.Attribute value) {
+        if (attributesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureAttributesIsMutable();
+          attributes_.add(value);
+          onChanged();
+        } else {
+          attributesBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 5;</code>
+       */
+      public Builder addAttributes(
+          int index, org.apache.mesos.Protos.Attribute value) {
+        if (attributesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureAttributesIsMutable();
+          attributes_.add(index, value);
+          onChanged();
+        } else {
+          attributesBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 5;</code>
+       */
+      public Builder addAttributes(
+          org.apache.mesos.Protos.Attribute.Builder builderForValue) {
+        if (attributesBuilder_ == null) {
+          ensureAttributesIsMutable();
+          attributes_.add(builderForValue.build());
+          onChanged();
+        } else {
+          attributesBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 5;</code>
+       */
+      public Builder addAttributes(
+          int index, org.apache.mesos.Protos.Attribute.Builder builderForValue) {
+        if (attributesBuilder_ == null) {
+          ensureAttributesIsMutable();
+          attributes_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          attributesBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 5;</code>
+       */
+      public Builder addAllAttributes(
+          java.lang.Iterable<? extends org.apache.mesos.Protos.Attribute> values) {
+        if (attributesBuilder_ == null) {
+          ensureAttributesIsMutable();
+          super.addAll(values, attributes_);
+          onChanged();
+        } else {
+          attributesBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 5;</code>
+       */
+      public Builder clearAttributes() {
+        if (attributesBuilder_ == null) {
+          attributes_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000008);
+          onChanged();
+        } else {
+          attributesBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 5;</code>
+       */
+      public Builder removeAttributes(int index) {
+        if (attributesBuilder_ == null) {
+          ensureAttributesIsMutable();
+          attributes_.remove(index);
+          onChanged();
+        } else {
+          attributesBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 5;</code>
+       */
+      public org.apache.mesos.Protos.Attribute.Builder getAttributesBuilder(
+          int index) {
+        return getAttributesFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 5;</code>
+       */
+      public org.apache.mesos.Protos.AttributeOrBuilder getAttributesOrBuilder(
+          int index) {
+        if (attributesBuilder_ == null) {
+          return attributes_.get(index);  } else {
+          return attributesBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 5;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.AttributeOrBuilder> 
+           getAttributesOrBuilderList() {
+        if (attributesBuilder_ != null) {
+          return attributesBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(attributes_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 5;</code>
+       */
+      public org.apache.mesos.Protos.Attribute.Builder addAttributesBuilder() {
+        return getAttributesFieldBuilder().addBuilder(
+            org.apache.mesos.Protos.Attribute.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 5;</code>
+       */
+      public org.apache.mesos.Protos.Attribute.Builder addAttributesBuilder(
+          int index) {
+        return getAttributesFieldBuilder().addBuilder(
+            index, org.apache.mesos.Protos.Attribute.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 5;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.Attribute.Builder> 
+           getAttributesBuilderList() {
+        return getAttributesFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.Attribute, org.apache.mesos.Protos.Attribute.Builder, org.apache.mesos.Protos.AttributeOrBuilder> 
+          getAttributesFieldBuilder() {
+        if (attributesBuilder_ == null) {
+          attributesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.Attribute, org.apache.mesos.Protos.Attribute.Builder, org.apache.mesos.Protos.AttributeOrBuilder>(
+                  attributes_,
+                  ((bitField0_ & 0x00000008) == 0x00000008),
+                  getParentForChildren(),
+                  isClean());
+          attributes_ = null;
+        }
+        return attributesBuilder_;
+      }
+
+      // optional .mesos.SlaveID id = 6;
+      private org.apache.mesos.Protos.SlaveID id_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.SlaveID, org.apache.mesos.Protos.SlaveID.Builder, org.apache.mesos.Protos.SlaveIDOrBuilder> idBuilder_;
+      /**
+       * <code>optional .mesos.SlaveID id = 6;</code>
+       */
+      public boolean hasId() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional .mesos.SlaveID id = 6;</code>
+       */
+      public org.apache.mesos.Protos.SlaveID getId() {
+        if (idBuilder_ == null) {
+          return id_;
+        } else {
+          return idBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.SlaveID id = 6;</code>
+       */
+      public Builder setId(org.apache.mesos.Protos.SlaveID value) {
+        if (idBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          id_ = value;
+          onChanged();
+        } else {
+          idBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.SlaveID id = 6;</code>
+       */
+      public Builder setId(
+          org.apache.mesos.Protos.SlaveID.Builder builderForValue) {
+        if (idBuilder_ == null) {
+          id_ = builderForValue.build();
+          onChanged();
+        } else {
+          idBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.SlaveID id = 6;</code>
+       */
+      public Builder mergeId(org.apache.mesos.Protos.SlaveID value) {
+        if (idBuilder_ == null) {
+          if (((bitField0_ & 0x00000010) == 0x00000010) &&
+              id_ != org.apache.mesos.Protos.SlaveID.getDefaultInstance()) {
+            id_ =
+              org.apache.mesos.Protos.SlaveID.newBuilder(id_).mergeFrom(value).buildPartial();
+          } else {
+            id_ = value;
+          }
+          onChanged();
+        } else {
+          idBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.SlaveID id = 6;</code>
+       */
+      public Builder clearId() {
+        if (idBuilder_ == null) {
+          id_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+          onChanged();
+        } else {
+          idBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.SlaveID id = 6;</code>
+       */
+      public org.apache.mesos.Protos.SlaveID.Builder getIdBuilder() {
+        bitField0_ |= 0x00000010;
+        onChanged();
+        return getIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.SlaveID id = 6;</code>
+       */
+      public org.apache.mesos.Protos.SlaveIDOrBuilder getIdOrBuilder() {
+        if (idBuilder_ != null) {
+          return idBuilder_.getMessageOrBuilder();
+        } else {
+          return id_;
+        }
+      }
+      /**
+       * <code>optional .mesos.SlaveID id = 6;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.SlaveID, org.apache.mesos.Protos.SlaveID.Builder, org.apache.mesos.Protos.SlaveIDOrBuilder> 
+          getIdFieldBuilder() {
+        if (idBuilder_ == null) {
+          idBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.SlaveID, org.apache.mesos.Protos.SlaveID.Builder, org.apache.mesos.Protos.SlaveIDOrBuilder>(
+                  id_,
+                  getParentForChildren(),
+                  isClean());
+          id_ = null;
+        }
+        return idBuilder_;
+      }
+
+      // optional .mesos.DomainInfo domain = 10;
+      private org.apache.mesos.Protos.DomainInfo domain_ = org.apache.mesos.Protos.DomainInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.DomainInfo, org.apache.mesos.Protos.DomainInfo.Builder, org.apache.mesos.Protos.DomainInfoOrBuilder> domainBuilder_;
+      /**
+       * <code>optional .mesos.DomainInfo domain = 10;</code>
+       *
+       * <pre>
+       * The domain that this slave belongs to. If the slave's region
+       * differs from the master's region, it will not appear in resource
+       * offers to frameworks that have not enabled the REGION_AWARE
+       * capability.
+       * </pre>
+       */
+      public boolean hasDomain() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional .mesos.DomainInfo domain = 10;</code>
+       *
+       * <pre>
+       * The domain that this slave belongs to. If the slave's region
+       * differs from the master's region, it will not appear in resource
+       * offers to frameworks that have not enabled the REGION_AWARE
+       * capability.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.DomainInfo getDomain() {
+        if (domainBuilder_ == null) {
+          return domain_;
+        } else {
+          return domainBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.DomainInfo domain = 10;</code>
+       *
+       * <pre>
+       * The domain that this slave belongs to. If the slave's region
+       * differs from the master's region, it will not appear in resource
+       * offers to frameworks that have not enabled the REGION_AWARE
+       * capability.
+       * </pre>
+       */
+      public Builder setDomain(org.apache.mesos.Protos.DomainInfo value) {
+        if (domainBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          domain_ = value;
+          onChanged();
+        } else {
+          domainBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.DomainInfo domain = 10;</code>
+       *
+       * <pre>
+       * The domain that this slave belongs to. If the slave's region
+       * differs from the master's region, it will not appear in resource
+       * offers to frameworks that have not enabled the REGION_AWARE
+       * capability.
+       * </pre>
+       */
+      public Builder setDomain(
+          org.apache.mesos.Protos.DomainInfo.Builder builderForValue) {
+        if (domainBuilder_ == null) {
+          domain_ = builderForValue.build();
+          onChanged();
+        } else {
+          domainBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.DomainInfo domain = 10;</code>
+       *
+       * <pre>
+       * The domain that this slave belongs to. If the slave's region
+       * differs from the master's region, it will not appear in resource
+       * offers to frameworks that have not enabled the REGION_AWARE
+       * capability.
+       * </pre>
+       */
+      public Builder mergeDomain(org.apache.mesos.Protos.DomainInfo value) {
+        if (domainBuilder_ == null) {
+          if (((bitField0_ & 0x00000020) == 0x00000020) &&
+              domain_ != org.apache.mesos.Protos.DomainInfo.getDefaultInstance()) {
+            domain_ =
+              org.apache.mesos.Protos.DomainInfo.newBuilder(domain_).mergeFrom(value).buildPartial();
+          } else {
+            domain_ = value;
+          }
+          onChanged();
+        } else {
+          domainBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.DomainInfo domain = 10;</code>
+       *
+       * <pre>
+       * The domain that this slave belongs to. If the slave's region
+       * differs from the master's region, it will not appear in resource
+       * offers to frameworks that have not enabled the REGION_AWARE
+       * capability.
+       * </pre>
+       */
+      public Builder clearDomain() {
+        if (domainBuilder_ == null) {
+          domain_ = org.apache.mesos.Protos.DomainInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          domainBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.DomainInfo domain = 10;</code>
+       *
+       * <pre>
+       * The domain that this slave belongs to. If the slave's region
+       * differs from the master's region, it will not appear in resource
+       * offers to frameworks that have not enabled the REGION_AWARE
+       * capability.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.DomainInfo.Builder getDomainBuilder() {
+        bitField0_ |= 0x00000020;
+        onChanged();
+        return getDomainFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.DomainInfo domain = 10;</code>
+       *
+       * <pre>
+       * The domain that this slave belongs to. If the slave's region
+       * differs from the master's region, it will not appear in resource
+       * offers to frameworks that have not enabled the REGION_AWARE
+       * capability.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.DomainInfoOrBuilder getDomainOrBuilder() {
+        if (domainBuilder_ != null) {
+          return domainBuilder_.getMessageOrBuilder();
+        } else {
+          return domain_;
+        }
+      }
+      /**
+       * <code>optional .mesos.DomainInfo domain = 10;</code>
+       *
+       * <pre>
+       * The domain that this slave belongs to. If the slave's region
+       * differs from the master's region, it will not appear in resource
+       * offers to frameworks that have not enabled the REGION_AWARE
+       * capability.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.DomainInfo, org.apache.mesos.Protos.DomainInfo.Builder, org.apache.mesos.Protos.DomainInfoOrBuilder> 
+          getDomainFieldBuilder() {
+        if (domainBuilder_ == null) {
+          domainBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.DomainInfo, org.apache.mesos.Protos.DomainInfo.Builder, org.apache.mesos.Protos.DomainInfoOrBuilder>(
+                  domain_,
+                  getParentForChildren(),
+                  isClean());
+          domain_ = null;
+        }
+        return domainBuilder_;
+      }
+
+      // optional bool checkpoint = 7 [default = false];
+      private boolean checkpoint_ ;
+      /**
+       * <code>optional bool checkpoint = 7 [default = false];</code>
+       *
+       * <pre>
+       * Slave checkpointing is always enabled in recent Mesos versions;
+       * the value of this field is ignored.
+       * TODO(joerg84): Remove checkpoint field after deprecation cycle starting
+       * with 0.27 (MESOS-2317).
+       * </pre>
+       */
+      public boolean hasCheckpoint() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional bool checkpoint = 7 [default = false];</code>
+       *
+       * <pre>
+       * Slave checkpointing is always enabled in recent Mesos versions;
+       * the value of this field is ignored.
+       * TODO(joerg84): Remove checkpoint field after deprecation cycle starting
+       * with 0.27 (MESOS-2317).
+       * </pre>
+       */
+      public boolean getCheckpoint() {
+        return checkpoint_;
+      }
+      /**
+       * <code>optional bool checkpoint = 7 [default = false];</code>
+       *
+       * <pre>
+       * Slave checkpointing is always enabled in recent Mesos versions;
+       * the value of this field is ignored.
+       * TODO(joerg84): Remove checkpoint field after deprecation cycle starting
+       * with 0.27 (MESOS-2317).
+       * </pre>
+       */
+      public Builder setCheckpoint(boolean value) {
+        bitField0_ |= 0x00000040;
+        checkpoint_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional bool checkpoint = 7 [default = false];</code>
+       *
+       * <pre>
+       * Slave checkpointing is always enabled in recent Mesos versions;
+       * the value of this field is ignored.
+       * TODO(joerg84): Remove checkpoint field after deprecation cycle starting
+       * with 0.27 (MESOS-2317).
+       * </pre>
+       */
+      public Builder clearCheckpoint() {
+        bitField0_ = (bitField0_ & ~0x00000040);
+        checkpoint_ = false;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.SlaveInfo)
+    }
+
+    static {
+      defaultInstance = new SlaveInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.SlaveInfo)
+  }
+
+  public interface ResourceProviderInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional .mesos.ResourceProviderID id = 1;
+    /**
+     * <code>optional .mesos.ResourceProviderID id = 1;</code>
+     */
+    boolean hasId();
+    /**
+     * <code>optional .mesos.ResourceProviderID id = 1;</code>
+     */
+    org.apache.mesos.Protos.ResourceProviderID getId();
+    /**
+     * <code>optional .mesos.ResourceProviderID id = 1;</code>
+     */
+    org.apache.mesos.Protos.ResourceProviderIDOrBuilder getIdOrBuilder();
+
+    // repeated .mesos.Attribute attributes = 2;
+    /**
+     * <code>repeated .mesos.Attribute attributes = 2;</code>
+     */
+    java.util.List<org.apache.mesos.Protos.Attribute> 
+        getAttributesList();
+    /**
+     * <code>repeated .mesos.Attribute attributes = 2;</code>
+     */
+    org.apache.mesos.Protos.Attribute getAttributes(int index);
+    /**
+     * <code>repeated .mesos.Attribute attributes = 2;</code>
+     */
+    int getAttributesCount();
+    /**
+     * <code>repeated .mesos.Attribute attributes = 2;</code>
+     */
+    java.util.List<? extends org.apache.mesos.Protos.AttributeOrBuilder> 
+        getAttributesOrBuilderList();
+    /**
+     * <code>repeated .mesos.Attribute attributes = 2;</code>
+     */
+    org.apache.mesos.Protos.AttributeOrBuilder getAttributesOrBuilder(
+        int index);
+
+    // required string type = 3;
+    /**
+     * <code>required string type = 3;</code>
+     *
+     * <pre>
+     * The type of the resource provider. This uniquely identifies a
+     * resource provider implementation. For instance:
+     *     org.apache.mesos.rp.local.storage
+     *
+     * Please follow to Java package naming convention
+     * (https://en.wikipedia.org/wiki/Java_package#Package_naming_conventions)
+     * to avoid conflicts on type names.
+     * </pre>
+     */
+    boolean hasType();
+    /**
+     * <code>required string type = 3;</code>
+     *
+     * <pre>
+     * The type of the resource provider. This uniquely identifies a
+     * resource provider implementation. For instance:
+     *     org.apache.mesos.rp.local.storage
+     *
+     * Please follow to Java package naming convention
+     * (https://en.wikipedia.org/wiki/Java_package#Package_naming_conventions)
+     * to avoid conflicts on type names.
+     * </pre>
+     */
+    java.lang.String getType();
+    /**
+     * <code>required string type = 3;</code>
+     *
+     * <pre>
+     * The type of the resource provider. This uniquely identifies a
+     * resource provider implementation. For instance:
+     *     org.apache.mesos.rp.local.storage
+     *
+     * Please follow to Java package naming convention
+     * (https://en.wikipedia.org/wiki/Java_package#Package_naming_conventions)
+     * to avoid conflicts on type names.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getTypeBytes();
+
+    // required string name = 4;
+    /**
+     * <code>required string name = 4;</code>
+     *
+     * <pre>
+     * The name of the resource provider. There could be multiple
+     * instances of a type of resource provider. The name field is used
+     * to distinguish these instances.
+     * </pre>
+     */
+    boolean hasName();
+    /**
+     * <code>required string name = 4;</code>
+     *
+     * <pre>
+     * The name of the resource provider. There could be multiple
+     * instances of a type of resource provider. The name field is used
+     * to distinguish these instances.
+     * </pre>
+     */
+    java.lang.String getName();
+    /**
+     * <code>required string name = 4;</code>
+     *
+     * <pre>
+     * The name of the resource provider. There could be multiple
+     * instances of a type of resource provider. The name field is used
+     * to distinguish these instances.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getNameBytes();
+  }
+  /**
+   * Protobuf type {@code mesos.ResourceProviderInfo}
+   *
+   * <pre>
+   **
+   * Describes a resource provider. Note that the 'id' field is only available
+   * after a resource provider is registered with the master, and is made
+   * available here to facilitate re-registration.
+   * </pre>
+   */
+  public static final class ResourceProviderInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements ResourceProviderInfoOrBuilder {
+    // Use ResourceProviderInfo.newBuilder() to construct.
+    private ResourceProviderInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private ResourceProviderInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final ResourceProviderInfo defaultInstance;
+    public static ResourceProviderInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public ResourceProviderInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private ResourceProviderInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              org.apache.mesos.Protos.ResourceProviderID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                subBuilder = id_.toBuilder();
+              }
+              id_ = input.readMessage(org.apache.mesos.Protos.ResourceProviderID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(id_);
+                id_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+            case 18: {
+              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+                attributes_ = new java.util.ArrayList<org.apache.mesos.Protos.Attribute>();
+                mutable_bitField0_ |= 0x00000002;
+              }
+              attributes_.add(input.readMessage(org.apache.mesos.Protos.Attribute.PARSER, extensionRegistry));
+              break;
+            }
+            case 26: {
+              bitField0_ |= 0x00000002;
+              type_ = input.readBytes();
+              break;
+            }
+            case 34: {
+              bitField0_ |= 0x00000004;
+              name_ = input.readBytes();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+          attributes_ = java.util.Collections.unmodifiableList(attributes_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_ResourceProviderInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_ResourceProviderInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.ResourceProviderInfo.class, org.apache.mesos.Protos.ResourceProviderInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<ResourceProviderInfo> PARSER =
+        new com.google.protobuf.AbstractParser<ResourceProviderInfo>() {
+      public ResourceProviderInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new ResourceProviderInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<ResourceProviderInfo> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // optional .mesos.ResourceProviderID id = 1;
+    public static final int ID_FIELD_NUMBER = 1;
+    private org.apache.mesos.Protos.ResourceProviderID id_;
+    /**
+     * <code>optional .mesos.ResourceProviderID id = 1;</code>
+     */
+    public boolean hasId() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional .mesos.ResourceProviderID id = 1;</code>
+     */
+    public org.apache.mesos.Protos.ResourceProviderID getId() {
+      return id_;
+    }
+    /**
+     * <code>optional .mesos.ResourceProviderID id = 1;</code>
+     */
+    public org.apache.mesos.Protos.ResourceProviderIDOrBuilder getIdOrBuilder() {
+      return id_;
+    }
+
+    // repeated .mesos.Attribute attributes = 2;
+    public static final int ATTRIBUTES_FIELD_NUMBER = 2;
+    private java.util.List<org.apache.mesos.Protos.Attribute> attributes_;
+    /**
+     * <code>repeated .mesos.Attribute attributes = 2;</code>
+     */
+    public java.util.List<org.apache.mesos.Protos.Attribute> getAttributesList() {
+      return attributes_;
+    }
+    /**
+     * <code>repeated .mesos.Attribute attributes = 2;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.Protos.AttributeOrBuilder> 
+        getAttributesOrBuilderList() {
+      return attributes_;
+    }
+    /**
+     * <code>repeated .mesos.Attribute attributes = 2;</code>
+     */
+    public int getAttributesCount() {
+      return attributes_.size();
+    }
+    /**
+     * <code>repeated .mesos.Attribute attributes = 2;</code>
+     */
+    public org.apache.mesos.Protos.Attribute getAttributes(int index) {
+      return attributes_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.Attribute attributes = 2;</code>
+     */
+    public org.apache.mesos.Protos.AttributeOrBuilder getAttributesOrBuilder(
+        int index) {
+      return attributes_.get(index);
+    }
+
+    // required string type = 3;
+    public static final int TYPE_FIELD_NUMBER = 3;
+    private java.lang.Object type_;
+    /**
+     * <code>required string type = 3;</code>
+     *
+     * <pre>
+     * The type of the resource provider. This uniquely identifies a
+     * resource provider implementation. For instance:
+     *     org.apache.mesos.rp.local.storage
+     *
+     * Please follow to Java package naming convention
+     * (https://en.wikipedia.org/wiki/Java_package#Package_naming_conventions)
+     * to avoid conflicts on type names.
+     * </pre>
+     */
+    public boolean hasType() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>required string type = 3;</code>
+     *
+     * <pre>
+     * The type of the resource provider. This uniquely identifies a
+     * resource provider implementation. For instance:
+     *     org.apache.mesos.rp.local.storage
+     *
+     * Please follow to Java package naming convention
+     * (https://en.wikipedia.org/wiki/Java_package#Package_naming_conventions)
+     * to avoid conflicts on type names.
+     * </pre>
+     */
+    public java.lang.String getType() {
+      java.lang.Object ref = type_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          type_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string type = 3;</code>
+     *
+     * <pre>
+     * The type of the resource provider. This uniquely identifies a
+     * resource provider implementation. For instance:
+     *     org.apache.mesos.rp.local.storage
+     *
+     * Please follow to Java package naming convention
+     * (https://en.wikipedia.org/wiki/Java_package#Package_naming_conventions)
+     * to avoid conflicts on type names.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getTypeBytes() {
+      java.lang.Object ref = type_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        type_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // required string name = 4;
+    public static final int NAME_FIELD_NUMBER = 4;
+    private java.lang.Object name_;
+    /**
+     * <code>required string name = 4;</code>
+     *
+     * <pre>
+     * The name of the resource provider. There could be multiple
+     * instances of a type of resource provider. The name field is used
+     * to distinguish these instances.
+     * </pre>
+     */
+    public boolean hasName() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>required string name = 4;</code>
+     *
+     * <pre>
+     * The name of the resource provider. There could be multiple
+     * instances of a type of resource provider. The name field is used
+     * to distinguish these instances.
+     * </pre>
+     */
+    public java.lang.String getName() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          name_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string name = 4;</code>
+     *
+     * <pre>
+     * The name of the resource provider. There could be multiple
+     * instances of a type of resource provider. The name field is used
+     * to distinguish these instances.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getNameBytes() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        name_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      id_ = org.apache.mesos.Protos.ResourceProviderID.getDefaultInstance();
+      attributes_ = java.util.Collections.emptyList();
+      type_ = "";
+      name_ = "";
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasType()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasName()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (hasId()) {
+        if (!getId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      for (int i = 0; i < getAttributesCount(); i++) {
+        if (!getAttributes(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeMessage(1, id_);
+      }
+      for (int i = 0; i < attributes_.size(); i++) {
+        output.writeMessage(2, attributes_.get(i));
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(3, getTypeBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeBytes(4, getNameBytes());
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, id_);
+      }
+      for (int i = 0; i < attributes_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, attributes_.get(i));
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(3, getTypeBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(4, getNameBytes());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.ResourceProviderInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.ResourceProviderInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.ResourceProviderInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.ResourceProviderInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.ResourceProviderInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.ResourceProviderInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.ResourceProviderInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.ResourceProviderInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.ResourceProviderInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.ResourceProviderInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.ResourceProviderInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.ResourceProviderInfo}
+     *
+     * <pre>
+     **
+     * Describes a resource provider. Note that the 'id' field is only available
+     * after a resource provider is registered with the master, and is made
+     * available here to facilitate re-registration.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.ResourceProviderInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_ResourceProviderInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_ResourceProviderInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.ResourceProviderInfo.class, org.apache.mesos.Protos.ResourceProviderInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.ResourceProviderInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getIdFieldBuilder();
+          getAttributesFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (idBuilder_ == null) {
+          id_ = org.apache.mesos.Protos.ResourceProviderID.getDefaultInstance();
+        } else {
+          idBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (attributesBuilder_ == null) {
+          attributes_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000002);
+        } else {
+          attributesBuilder_.clear();
+        }
+        type_ = "";
+        bitField0_ = (bitField0_ & ~0x00000004);
+        name_ = "";
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_ResourceProviderInfo_descriptor;
+      }
+
+      public org.apache.mesos.Protos.ResourceProviderInfo getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.ResourceProviderInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.ResourceProviderInfo build() {
+        org.apache.mesos.Protos.ResourceProviderInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.ResourceProviderInfo buildPartial() {
+        org.apache.mesos.Protos.ResourceProviderInfo result = new org.apache.mesos.Protos.ResourceProviderInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        if (idBuilder_ == null) {
+          result.id_ = id_;
+        } else {
+          result.id_ = idBuilder_.build();
+        }
+        if (attributesBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            attributes_ = java.util.Collections.unmodifiableList(attributes_);
+            bitField0_ = (bitField0_ & ~0x00000002);
+          }
+          result.attributes_ = attributes_;
+        } else {
+          result.attributes_ = attributesBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.type_ = type_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.name_ = name_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.ResourceProviderInfo) {
+          return mergeFrom((org.apache.mesos.Protos.ResourceProviderInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.ResourceProviderInfo other) {
+        if (other == org.apache.mesos.Protos.ResourceProviderInfo.getDefaultInstance()) return this;
+        if (other.hasId()) {
+          mergeId(other.getId());
+        }
+        if (attributesBuilder_ == null) {
+          if (!other.attributes_.isEmpty()) {
+            if (attributes_.isEmpty()) {
+              attributes_ = other.attributes_;
+              bitField0_ = (bitField0_ & ~0x00000002);
+            } else {
+              ensureAttributesIsMutable();
+              attributes_.addAll(other.attributes_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.attributes_.isEmpty()) {
+            if (attributesBuilder_.isEmpty()) {
+              attributesBuilder_.dispose();
+              attributesBuilder_ = null;
+              attributes_ = other.attributes_;
+              bitField0_ = (bitField0_ & ~0x00000002);
+              attributesBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getAttributesFieldBuilder() : null;
+            } else {
+              attributesBuilder_.addAllMessages(other.attributes_);
+            }
+          }
+        }
+        if (other.hasType()) {
+          bitField0_ |= 0x00000004;
+          type_ = other.type_;
+          onChanged();
+        }
+        if (other.hasName()) {
+          bitField0_ |= 0x00000008;
+          name_ = other.name_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasType()) {
+          
+          return false;
+        }
+        if (!hasName()) {
+          
+          return false;
+        }
+        if (hasId()) {
+          if (!getId().isInitialized()) {
+            
+            return false;
+          }
+        }
+        for (int i = 0; i < getAttributesCount(); i++) {
+          if (!getAttributes(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.ResourceProviderInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.ResourceProviderInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional .mesos.ResourceProviderID id = 1;
+      private org.apache.mesos.Protos.ResourceProviderID id_ = org.apache.mesos.Protos.ResourceProviderID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.ResourceProviderID, org.apache.mesos.Protos.ResourceProviderID.Builder, org.apache.mesos.Protos.ResourceProviderIDOrBuilder> idBuilder_;
+      /**
+       * <code>optional .mesos.ResourceProviderID id = 1;</code>
+       */
+      public boolean hasId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.ResourceProviderID id = 1;</code>
+       */
+      public org.apache.mesos.Protos.ResourceProviderID getId() {
+        if (idBuilder_ == null) {
+          return id_;
+        } else {
+          return idBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.ResourceProviderID id = 1;</code>
+       */
+      public Builder setId(org.apache.mesos.Protos.ResourceProviderID value) {
+        if (idBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          id_ = value;
+          onChanged();
+        } else {
+          idBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ResourceProviderID id = 1;</code>
+       */
+      public Builder setId(
+          org.apache.mesos.Protos.ResourceProviderID.Builder builderForValue) {
+        if (idBuilder_ == null) {
+          id_ = builderForValue.build();
+          onChanged();
+        } else {
+          idBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ResourceProviderID id = 1;</code>
+       */
+      public Builder mergeId(org.apache.mesos.Protos.ResourceProviderID value) {
+        if (idBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001) &&
+              id_ != org.apache.mesos.Protos.ResourceProviderID.getDefaultInstance()) {
+            id_ =
+              org.apache.mesos.Protos.ResourceProviderID.newBuilder(id_).mergeFrom(value).buildPartial();
+          } else {
+            id_ = value;
+          }
+          onChanged();
+        } else {
+          idBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ResourceProviderID id = 1;</code>
+       */
+      public Builder clearId() {
+        if (idBuilder_ == null) {
+          id_ = org.apache.mesos.Protos.ResourceProviderID.getDefaultInstance();
+          onChanged();
+        } else {
+          idBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ResourceProviderID id = 1;</code>
+       */
+      public org.apache.mesos.Protos.ResourceProviderID.Builder getIdBuilder() {
+        bitField0_ |= 0x00000001;
+        onChanged();
+        return getIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.ResourceProviderID id = 1;</code>
+       */
+      public org.apache.mesos.Protos.ResourceProviderIDOrBuilder getIdOrBuilder() {
+        if (idBuilder_ != null) {
+          return idBuilder_.getMessageOrBuilder();
+        } else {
+          return id_;
+        }
+      }
+      /**
+       * <code>optional .mesos.ResourceProviderID id = 1;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.ResourceProviderID, org.apache.mesos.Protos.ResourceProviderID.Builder, org.apache.mesos.Protos.ResourceProviderIDOrBuilder> 
+          getIdFieldBuilder() {
+        if (idBuilder_ == null) {
+          idBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.ResourceProviderID, org.apache.mesos.Protos.ResourceProviderID.Builder, org.apache.mesos.Protos.ResourceProviderIDOrBuilder>(
+                  id_,
+                  getParentForChildren(),
+                  isClean());
+          id_ = null;
+        }
+        return idBuilder_;
+      }
+
+      // repeated .mesos.Attribute attributes = 2;
+      private java.util.List<org.apache.mesos.Protos.Attribute> attributes_ =
+        java.util.Collections.emptyList();
+      private void ensureAttributesIsMutable() {
+        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
+          attributes_ = new java.util.ArrayList<org.apache.mesos.Protos.Attribute>(attributes_);
+          bitField0_ |= 0x00000002;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.Attribute, org.apache.mesos.Protos.Attribute.Builder, org.apache.mesos.Protos.AttributeOrBuilder> attributesBuilder_;
+
+      /**
+       * <code>repeated .mesos.Attribute attributes = 2;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.Attribute> getAttributesList() {
+        if (attributesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(attributes_);
+        } else {
+          return attributesBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 2;</code>
+       */
+      public int getAttributesCount() {
+        if (attributesBuilder_ == null) {
+          return attributes_.size();
+        } else {
+          return attributesBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 2;</code>
+       */
+      public org.apache.mesos.Protos.Attribute getAttributes(int index) {
+        if (attributesBuilder_ == null) {
+          return attributes_.get(index);
+        } else {
+          return attributesBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 2;</code>
+       */
+      public Builder setAttributes(
+          int index, org.apache.mesos.Protos.Attribute value) {
+        if (attributesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureAttributesIsMutable();
+          attributes_.set(index, value);
+          onChanged();
+        } else {
+          attributesBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 2;</code>
+       */
+      public Builder setAttributes(
+          int index, org.apache.mesos.Protos.Attribute.Builder builderForValue) {
+        if (attributesBuilder_ == null) {
+          ensureAttributesIsMutable();
+          attributes_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          attributesBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 2;</code>
+       */
+      public Builder addAttributes(org.apache.mesos.Protos.Attribute value) {
+        if (attributesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureAttributesIsMutable();
+          attributes_.add(value);
+          onChanged();
+        } else {
+          attributesBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 2;</code>
+       */
+      public Builder addAttributes(
+          int index, org.apache.mesos.Protos.Attribute value) {
+        if (attributesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureAttributesIsMutable();
+          attributes_.add(index, value);
+          onChanged();
+        } else {
+          attributesBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 2;</code>
+       */
+      public Builder addAttributes(
+          org.apache.mesos.Protos.Attribute.Builder builderForValue) {
+        if (attributesBuilder_ == null) {
+          ensureAttributesIsMutable();
+          attributes_.add(builderForValue.build());
+          onChanged();
+        } else {
+          attributesBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 2;</code>
+       */
+      public Builder addAttributes(
+          int index, org.apache.mesos.Protos.Attribute.Builder builderForValue) {
+        if (attributesBuilder_ == null) {
+          ensureAttributesIsMutable();
+          attributes_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          attributesBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 2;</code>
+       */
+      public Builder addAllAttributes(
+          java.lang.Iterable<? extends org.apache.mesos.Protos.Attribute> values) {
+        if (attributesBuilder_ == null) {
+          ensureAttributesIsMutable();
+          super.addAll(values, attributes_);
+          onChanged();
+        } else {
+          attributesBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 2;</code>
+       */
+      public Builder clearAttributes() {
+        if (attributesBuilder_ == null) {
+          attributes_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000002);
+          onChanged();
+        } else {
+          attributesBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 2;</code>
+       */
+      public Builder removeAttributes(int index) {
+        if (attributesBuilder_ == null) {
+          ensureAttributesIsMutable();
+          attributes_.remove(index);
+          onChanged();
+        } else {
+          attributesBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 2;</code>
+       */
+      public org.apache.mesos.Protos.Attribute.Builder getAttributesBuilder(
+          int index) {
+        return getAttributesFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 2;</code>
+       */
+      public org.apache.mesos.Protos.AttributeOrBuilder getAttributesOrBuilder(
+          int index) {
+        if (attributesBuilder_ == null) {
+          return attributes_.get(index);  } else {
+          return attributesBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 2;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.AttributeOrBuilder> 
+           getAttributesOrBuilderList() {
+        if (attributesBuilder_ != null) {
+          return attributesBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(attributes_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 2;</code>
+       */
+      public org.apache.mesos.Protos.Attribute.Builder addAttributesBuilder() {
+        return getAttributesFieldBuilder().addBuilder(
+            org.apache.mesos.Protos.Attribute.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 2;</code>
+       */
+      public org.apache.mesos.Protos.Attribute.Builder addAttributesBuilder(
+          int index) {
+        return getAttributesFieldBuilder().addBuilder(
+            index, org.apache.mesos.Protos.Attribute.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 2;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.Attribute.Builder> 
+           getAttributesBuilderList() {
+        return getAttributesFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.Attribute, org.apache.mesos.Protos.Attribute.Builder, org.apache.mesos.Protos.AttributeOrBuilder> 
+          getAttributesFieldBuilder() {
+        if (attributesBuilder_ == null) {
+          attributesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.Attribute, org.apache.mesos.Protos.Attribute.Builder, org.apache.mesos.Protos.AttributeOrBuilder>(
+                  attributes_,
+                  ((bitField0_ & 0x00000002) == 0x00000002),
+                  getParentForChildren(),
+                  isClean());
+          attributes_ = null;
+        }
+        return attributesBuilder_;
+      }
+
+      // required string type = 3;
+      private java.lang.Object type_ = "";
+      /**
+       * <code>required string type = 3;</code>
+       *
+       * <pre>
+       * The type of the resource provider. This uniquely identifies a
+       * resource provider implementation. For instance:
+       *     org.apache.mesos.rp.local.storage
+       *
+       * Please follow to Java package naming convention
+       * (https://en.wikipedia.org/wiki/Java_package#Package_naming_conventions)
+       * to avoid conflicts on type names.
+       * </pre>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>required string type = 3;</code>
+       *
+       * <pre>
+       * The type of the resource provider. This uniquely identifies a
+       * resource provider implementation. For instance:
+       *     org.apache.mesos.rp.local.storage
+       *
+       * Please follow to Java package naming convention
+       * (https://en.wikipedia.org/wiki/Java_package#Package_naming_conventions)
+       * to avoid conflicts on type names.
+       * </pre>
+       */
+      public java.lang.String getType() {
+        java.lang.Object ref = type_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          type_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string type = 3;</code>
+       *
+       * <pre>
+       * The type of the resource provider. This uniquely identifies a
+       * resource provider implementation. For instance:
+       *     org.apache.mesos.rp.local.storage
+       *
+       * Please follow to Java package naming convention
+       * (https://en.wikipedia.org/wiki/Java_package#Package_naming_conventions)
+       * to avoid conflicts on type names.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getTypeBytes() {
+        java.lang.Object ref = type_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          type_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string type = 3;</code>
+       *
+       * <pre>
+       * The type of the resource provider. This uniquely identifies a
+       * resource provider implementation. For instance:
+       *     org.apache.mesos.rp.local.storage
+       *
+       * Please follow to Java package naming convention
+       * (https://en.wikipedia.org/wiki/Java_package#Package_naming_conventions)
+       * to avoid conflicts on type names.
+       * </pre>
+       */
+      public Builder setType(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        type_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string type = 3;</code>
+       *
+       * <pre>
+       * The type of the resource provider. This uniquely identifies a
+       * resource provider implementation. For instance:
+       *     org.apache.mesos.rp.local.storage
+       *
+       * Please follow to Java package naming convention
+       * (https://en.wikipedia.org/wiki/Java_package#Package_naming_conventions)
+       * to avoid conflicts on type names.
+       * </pre>
+       */
+      public Builder clearType() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        type_ = getDefaultInstance().getType();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string type = 3;</code>
+       *
+       * <pre>
+       * The type of the resource provider. This uniquely identifies a
+       * resource provider implementation. For instance:
+       *     org.apache.mesos.rp.local.storage
+       *
+       * Please follow to Java package naming convention
+       * (https://en.wikipedia.org/wiki/Java_package#Package_naming_conventions)
+       * to avoid conflicts on type names.
+       * </pre>
+       */
+      public Builder setTypeBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        type_ = value;
+        onChanged();
+        return this;
+      }
+
+      // required string name = 4;
+      private java.lang.Object name_ = "";
+      /**
+       * <code>required string name = 4;</code>
+       *
+       * <pre>
+       * The name of the resource provider. There could be multiple
+       * instances of a type of resource provider. The name field is used
+       * to distinguish these instances.
+       * </pre>
+       */
+      public boolean hasName() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>required string name = 4;</code>
+       *
+       * <pre>
+       * The name of the resource provider. There could be multiple
+       * instances of a type of resource provider. The name field is used
+       * to distinguish these instances.
+       * </pre>
+       */
+      public java.lang.String getName() {
+        java.lang.Object ref = name_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          name_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string name = 4;</code>
+       *
+       * <pre>
+       * The name of the resource provider. There could be multiple
+       * instances of a type of resource provider. The name field is used
+       * to distinguish these instances.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        java.lang.Object ref = name_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          name_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string name = 4;</code>
+       *
+       * <pre>
+       * The name of the resource provider. There could be multiple
+       * instances of a type of resource provider. The name field is used
+       * to distinguish these instances.
+       * </pre>
+       */
+      public Builder setName(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string name = 4;</code>
+       *
+       * <pre>
+       * The name of the resource provider. There could be multiple
+       * instances of a type of resource provider. The name field is used
+       * to distinguish these instances.
+       * </pre>
+       */
+      public Builder clearName() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        name_ = getDefaultInstance().getName();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string name = 4;</code>
+       *
+       * <pre>
+       * The name of the resource provider. There could be multiple
+       * instances of a type of resource provider. The name field is used
+       * to distinguish these instances.
+       * </pre>
+       */
+      public Builder setNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.ResourceProviderInfo)
+    }
+
+    static {
+      defaultInstance = new ResourceProviderInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.ResourceProviderInfo)
+  }
+
+  public interface ValueOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required .mesos.Value.Type type = 1;
+    /**
+     * <code>required .mesos.Value.Type type = 1;</code>
+     */
+    boolean hasType();
+    /**
+     * <code>required .mesos.Value.Type type = 1;</code>
+     */
+    org.apache.mesos.Protos.Value.Type getType();
+
+    // optional .mesos.Value.Scalar scalar = 2;
+    /**
+     * <code>optional .mesos.Value.Scalar scalar = 2;</code>
+     */
+    boolean hasScalar();
+    /**
+     * <code>optional .mesos.Value.Scalar scalar = 2;</code>
+     */
+    org.apache.mesos.Protos.Value.Scalar getScalar();
+    /**
+     * <code>optional .mesos.Value.Scalar scalar = 2;</code>
+     */
+    org.apache.mesos.Protos.Value.ScalarOrBuilder getScalarOrBuilder();
+
+    // optional .mesos.Value.Ranges ranges = 3;
+    /**
+     * <code>optional .mesos.Value.Ranges ranges = 3;</code>
+     */
+    boolean hasRanges();
+    /**
+     * <code>optional .mesos.Value.Ranges ranges = 3;</code>
+     */
+    org.apache.mesos.Protos.Value.Ranges getRanges();
+    /**
+     * <code>optional .mesos.Value.Ranges ranges = 3;</code>
+     */
+    org.apache.mesos.Protos.Value.RangesOrBuilder getRangesOrBuilder();
+
+    // optional .mesos.Value.Set set = 4;
+    /**
+     * <code>optional .mesos.Value.Set set = 4;</code>
+     */
+    boolean hasSet();
+    /**
+     * <code>optional .mesos.Value.Set set = 4;</code>
+     */
+    org.apache.mesos.Protos.Value.Set getSet();
+    /**
+     * <code>optional .mesos.Value.Set set = 4;</code>
+     */
+    org.apache.mesos.Protos.Value.SetOrBuilder getSetOrBuilder();
+
+    // optional .mesos.Value.Text text = 5;
+    /**
+     * <code>optional .mesos.Value.Text text = 5;</code>
+     */
+    boolean hasText();
+    /**
+     * <code>optional .mesos.Value.Text text = 5;</code>
+     */
+    org.apache.mesos.Protos.Value.Text getText();
+    /**
+     * <code>optional .mesos.Value.Text text = 5;</code>
+     */
+    org.apache.mesos.Protos.Value.TextOrBuilder getTextOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.Value}
+   *
+   * <pre>
+   **
+   * Describes an Attribute or Resource "value". A value is described
+   * using the standard protocol buffer "union" trick.
+   * </pre>
+   */
+  public static final class Value extends
+      com.google.protobuf.GeneratedMessage
+      implements ValueOrBuilder {
+    // Use Value.newBuilder() to construct.
+    private Value(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Value(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Value defaultInstance;
+    public static Value getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Value getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Value(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 8: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.Protos.Value.Type value = org.apache.mesos.Protos.Value.Type.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(1, rawValue);
+              } else {
+                bitField0_ |= 0x00000001;
+                type_ = value;
+              }
+              break;
+            }
+            case 18: {
+              org.apache.mesos.Protos.Value.Scalar.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = scalar_.toBuilder();
+              }
+              scalar_ = input.readMessage(org.apache.mesos.Protos.Value.Scalar.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(scalar_);
+                scalar_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+            case 26: {
+              org.apache.mesos.Protos.Value.Ranges.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                subBuilder = ranges_.toBuilder();
+              }
+              ranges_ = input.readMessage(org.apache.mesos.Protos.Value.Ranges.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(ranges_);
+                ranges_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000004;
+              break;
+            }
+            case 34: {
+              org.apache.mesos.Protos.Value.Set.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                subBuilder = set_.toBuilder();
+              }
+              set_ = input.readMessage(org.apache.mesos.Protos.Value.Set.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(set_);
+                set_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000008;
+              break;
+            }
+            case 42: {
+              org.apache.mesos.Protos.Value.Text.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000010) == 0x00000010)) {
+                subBuilder = text_.toBuilder();
+              }
+              text_ = input.readMessage(org.apache.mesos.Protos.Value.Text.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(text_);
+                text_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000010;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_Value_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_Value_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.Value.class, org.apache.mesos.Protos.Value.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Value> PARSER =
+        new com.google.protobuf.AbstractParser<Value>() {
+      public Value parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Value(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Value> getParserForType() {
+      return PARSER;
+    }
+
+    /**
+     * Protobuf enum {@code mesos.Value.Type}
+     */
+    public enum Type
+        implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>SCALAR = 0;</code>
+       */
+      SCALAR(0, 0),
+      /**
+       * <code>RANGES = 1;</code>
+       */
+      RANGES(1, 1),
+      /**
+       * <code>SET = 2;</code>
+       */
+      SET(2, 2),
+      /**
+       * <code>TEXT = 3;</code>
+       */
+      TEXT(3, 3),
+      ;
+
+      /**
+       * <code>SCALAR = 0;</code>
+       */
+      public static final int SCALAR_VALUE = 0;
+      /**
+       * <code>RANGES = 1;</code>
+       */
+      public static final int RANGES_VALUE = 1;
+      /**
+       * <code>SET = 2;</code>
+       */
+      public static final int SET_VALUE = 2;
+      /**
+       * <code>TEXT = 3;</code>
+       */
+      public static final int TEXT_VALUE = 3;
+
+
+      public final int getNumber() { return value; }
+
+      public static Type valueOf(int value) {
+        switch (value) {
+          case 0: return SCALAR;
+          case 1: return RANGES;
+          case 2: return SET;
+          case 3: return TEXT;
+          default: return null;
+        }
+      }
+
+      public static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalGetValueMap() {
+        return internalValueMap;
+      }
+      private static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap<Type>() {
+              public Type findValueByNumber(int number) {
+                return Type.valueOf(number);
+              }
+            };
+
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
+          getValueDescriptor() {
+        return getDescriptor().getValues().get(index);
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptorForType() {
+        return getDescriptor();
+      }
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.Value.getDescriptor().getEnumTypes().get(0);
+      }
+
+      private static final Type[] VALUES = values();
+
+      public static Type valueOf(
+          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+        if (desc.getType() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "EnumValueDescriptor is not for this type.");
+        }
+        return VALUES[desc.getIndex()];
+      }
+
+      private final int index;
+      private final int value;
+
+      private Type(int index, int value) {
+        this.index = index;
+        this.value = value;
+      }
+
+      // @@protoc_insertion_point(enum_scope:mesos.Value.Type)
+    }
+
+    public interface ScalarOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required double value = 1;
+      /**
+       * <code>required double value = 1;</code>
+       *
+       * <pre>
+       * Scalar values are represented using floating point. To reduce
+       * the chance of unpredictable floating point behavior due to
+       * roundoff error, Mesos only supports three decimal digits of
+       * precision for scalar resource values. That is, floating point
+       * values are converted to a fixed point format that supports
+       * three decimal digits of precision, and then converted back to
+       * floating point on output. Any additional precision in scalar
+       * resource values is discarded (via rounding).
+       * </pre>
+       */
+      boolean hasValue();
+      /**
+       * <code>required double value = 1;</code>
+       *
+       * <pre>
+       * Scalar values are represented using floating point. To reduce
+       * the chance of unpredictable floating point behavior due to
+       * roundoff error, Mesos only supports three decimal digits of
+       * precision for scalar resource values. That is, floating point
+       * values are converted to a fixed point format that supports
+       * three decimal digits of precision, and then converted back to
+       * floating point on output. Any additional precision in scalar
+       * resource values is discarded (via rounding).
+       * </pre>
+       */
+      double getValue();
+    }
+    /**
+     * Protobuf type {@code mesos.Value.Scalar}
+     */
+    public static final class Scalar extends
+        com.google.protobuf.GeneratedMessage
+        implements ScalarOrBuilder {
+      // Use Scalar.newBuilder() to construct.
+      private Scalar(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Scalar(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Scalar defaultInstance;
+      public static Scalar getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Scalar getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Scalar(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 9: {
+                bitField0_ |= 0x00000001;
+                value_ = input.readDouble();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_Value_Scalar_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_Value_Scalar_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.Value.Scalar.class, org.apache.mesos.Protos.Value.Scalar.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Scalar> PARSER =
+          new com.google.protobuf.AbstractParser<Scalar>() {
+        public Scalar parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Scalar(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Scalar> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required double value = 1;
+      public static final int VALUE_FIELD_NUMBER = 1;
+      private double value_;
+      /**
+       * <code>required double value = 1;</code>
+       *
+       * <pre>
+       * Scalar values are represented using floating point. To reduce
+       * the chance of unpredictable floating point behavior due to
+       * roundoff error, Mesos only supports three decimal digits of
+       * precision for scalar resource values. That is, floating point
+       * values are converted to a fixed point format that supports
+       * three decimal digits of precision, and then converted back to
+       * floating point on output. Any additional precision in scalar
+       * resource values is discarded (via rounding).
+       * </pre>
+       */
+      public boolean hasValue() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required double value = 1;</code>
+       *
+       * <pre>
+       * Scalar values are represented using floating point. To reduce
+       * the chance of unpredictable floating point behavior due to
+       * roundoff error, Mesos only supports three decimal digits of
+       * precision for scalar resource values. That is, floating point
+       * values are converted to a fixed point format that supports
+       * three decimal digits of precision, and then converted back to
+       * floating point on output. Any additional precision in scalar
+       * resource values is discarded (via rounding).
+       * </pre>
+       */
+      public double getValue() {
+        return value_;
+      }
+
+      private void initFields() {
+        value_ = 0D;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasValue()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeDouble(1, value_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeDoubleSize(1, value_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.Protos.Value.Scalar parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.Value.Scalar parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Value.Scalar parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.Value.Scalar parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Value.Scalar parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.Value.Scalar parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Value.Scalar parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.Protos.Value.Scalar parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Value.Scalar parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.Value.Scalar parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.Protos.Value.Scalar prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.Value.Scalar}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.Protos.Value.ScalarOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_Value_Scalar_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_Value_Scalar_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.Value.Scalar.class, org.apache.mesos.Protos.Value.Scalar.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.Protos.Value.Scalar.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          value_ = 0D;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.Protos.internal_static_mesos_Value_Scalar_descriptor;
+        }
+
+        public org.apache.mesos.Protos.Value.Scalar getDefaultInstanceForType() {
+          return org.apache.mesos.Protos.Value.Scalar.getDefaultInstance();
+        }
+
+        public org.apache.mesos.Protos.Value.Scalar build() {
+          org.apache.mesos.Protos.Value.Scalar result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.Protos.Value.Scalar buildPartial() {
+          org.apache.mesos.Protos.Value.Scalar result = new org.apache.mesos.Protos.Value.Scalar(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.value_ = value_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.Protos.Value.Scalar) {
+            return mergeFrom((org.apache.mesos.Protos.Value.Scalar)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.Protos.Value.Scalar other) {
+          if (other == org.apache.mesos.Protos.Value.Scalar.getDefaultInstance()) return this;
+          if (other.hasValue()) {
+            setValue(other.getValue());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasValue()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.Protos.Value.Scalar parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.Protos.Value.Scalar) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required double value = 1;
+        private double value_ ;
+        /**
+         * <code>required double value = 1;</code>
+         *
+         * <pre>
+         * Scalar values are represented using floating point. To reduce
+         * the chance of unpredictable floating point behavior due to
+         * roundoff error, Mesos only supports three decimal digits of
+         * precision for scalar resource values. That is, floating point
+         * values are converted to a fixed point format that supports
+         * three decimal digits of precision, and then converted back to
+         * floating point on output. Any additional precision in scalar
+         * resource values is discarded (via rounding).
+         * </pre>
+         */
+        public boolean hasValue() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required double value = 1;</code>
+         *
+         * <pre>
+         * Scalar values are represented using floating point. To reduce
+         * the chance of unpredictable floating point behavior due to
+         * roundoff error, Mesos only supports three decimal digits of
+         * precision for scalar resource values. That is, floating point
+         * values are converted to a fixed point format that supports
+         * three decimal digits of precision, and then converted back to
+         * floating point on output. Any additional precision in scalar
+         * resource values is discarded (via rounding).
+         * </pre>
+         */
+        public double getValue() {
+          return value_;
+        }
+        /**
+         * <code>required double value = 1;</code>
+         *
+         * <pre>
+         * Scalar values are represented using floating point. To reduce
+         * the chance of unpredictable floating point behavior due to
+         * roundoff error, Mesos only supports three decimal digits of
+         * precision for scalar resource values. That is, floating point
+         * values are converted to a fixed point format that supports
+         * three decimal digits of precision, and then converted back to
+         * floating point on output. Any additional precision in scalar
+         * resource values is discarded (via rounding).
+         * </pre>
+         */
+        public Builder setValue(double value) {
+          bitField0_ |= 0x00000001;
+          value_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required double value = 1;</code>
+         *
+         * <pre>
+         * Scalar values are represented using floating point. To reduce
+         * the chance of unpredictable floating point behavior due to
+         * roundoff error, Mesos only supports three decimal digits of
+         * precision for scalar resource values. That is, floating point
+         * values are converted to a fixed point format that supports
+         * three decimal digits of precision, and then converted back to
+         * floating point on output. Any additional precision in scalar
+         * resource values is discarded (via rounding).
+         * </pre>
+         */
+        public Builder clearValue() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          value_ = 0D;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.Value.Scalar)
+      }
+
+      static {
+        defaultInstance = new Scalar(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.Value.Scalar)
+    }
+
+    public interface RangeOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required uint64 begin = 1;
+      /**
+       * <code>required uint64 begin = 1;</code>
+       */
+      boolean hasBegin();
+      /**
+       * <code>required uint64 begin = 1;</code>
+       */
+      long getBegin();
+
+      // required uint64 end = 2;
+      /**
+       * <code>required uint64 end = 2;</code>
+       */
+      boolean hasEnd();
+      /**
+       * <code>required uint64 end = 2;</code>
+       */
+      long getEnd();
+    }
+    /**
+     * Protobuf type {@code mesos.Value.Range}
+     */
+    public static final class Range extends
+        com.google.protobuf.GeneratedMessage
+        implements RangeOrBuilder {
+      // Use Range.newBuilder() to construct.
+      private Range(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Range(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Range defaultInstance;
+      public static Range getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Range getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Range(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 8: {
+                bitField0_ |= 0x00000001;
+                begin_ = input.readUInt64();
+                break;
+              }
+              case 16: {
+                bitField0_ |= 0x00000002;
+                end_ = input.readUInt64();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_Value_Range_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_Value_Range_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.Value.Range.class, org.apache.mesos.Protos.Value.Range.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Range> PARSER =
+          new com.google.protobuf.AbstractParser<Range>() {
+        public Range parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Range(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Range> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required uint64 begin = 1;
+      public static final int BEGIN_FIELD_NUMBER = 1;
+      private long begin_;
+      /**
+       * <code>required uint64 begin = 1;</code>
+       */
+      public boolean hasBegin() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required uint64 begin = 1;</code>
+       */
+      public long getBegin() {
+        return begin_;
+      }
+
+      // required uint64 end = 2;
+      public static final int END_FIELD_NUMBER = 2;
+      private long end_;
+      /**
+       * <code>required uint64 end = 2;</code>
+       */
+      public boolean hasEnd() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required uint64 end = 2;</code>
+       */
+      public long getEnd() {
+        return end_;
+      }
+
+      private void initFields() {
+        begin_ = 0L;
+        end_ = 0L;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasBegin()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!hasEnd()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeUInt64(1, begin_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeUInt64(2, end_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeUInt64Size(1, begin_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeUInt64Size(2, end_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.Protos.Value.Range parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.Value.Range parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Value.Range parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.Value.Range parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Value.Range parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.Value.Range parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Value.Range parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.Protos.Value.Range parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Value.Range parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.Value.Range parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.Protos.Value.Range prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.Value.Range}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.Protos.Value.RangeOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_Value_Range_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_Value_Range_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.Value.Range.class, org.apache.mesos.Protos.Value.Range.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.Protos.Value.Range.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          begin_ = 0L;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          end_ = 0L;
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.Protos.internal_static_mesos_Value_Range_descriptor;
+        }
+
+        public org.apache.mesos.Protos.Value.Range getDefaultInstanceForType() {
+          return org.apache.mesos.Protos.Value.Range.getDefaultInstance();
+        }
+
+        public org.apache.mesos.Protos.Value.Range build() {
+          org.apache.mesos.Protos.Value.Range result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.Protos.Value.Range buildPartial() {
+          org.apache.mesos.Protos.Value.Range result = new org.apache.mesos.Protos.Value.Range(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.begin_ = begin_;
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          result.end_ = end_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.Protos.Value.Range) {
+            return mergeFrom((org.apache.mesos.Protos.Value.Range)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.Protos.Value.Range other) {
+          if (other == org.apache.mesos.Protos.Value.Range.getDefaultInstance()) return this;
+          if (other.hasBegin()) {
+            setBegin(other.getBegin());
+          }
+          if (other.hasEnd()) {
+            setEnd(other.getEnd());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasBegin()) {
+            
+            return false;
+          }
+          if (!hasEnd()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.Protos.Value.Range parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.Protos.Value.Range) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required uint64 begin = 1;
+        private long begin_ ;
+        /**
+         * <code>required uint64 begin = 1;</code>
+         */
+        public boolean hasBegin() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required uint64 begin = 1;</code>
+         */
+        public long getBegin() {
+          return begin_;
+        }
+        /**
+         * <code>required uint64 begin = 1;</code>
+         */
+        public Builder setBegin(long value) {
+          bitField0_ |= 0x00000001;
+          begin_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required uint64 begin = 1;</code>
+         */
+        public Builder clearBegin() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          begin_ = 0L;
+          onChanged();
+          return this;
+        }
+
+        // required uint64 end = 2;
+        private long end_ ;
+        /**
+         * <code>required uint64 end = 2;</code>
+         */
+        public boolean hasEnd() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>required uint64 end = 2;</code>
+         */
+        public long getEnd() {
+          return end_;
+        }
+        /**
+         * <code>required uint64 end = 2;</code>
+         */
+        public Builder setEnd(long value) {
+          bitField0_ |= 0x00000002;
+          end_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required uint64 end = 2;</code>
+         */
+        public Builder clearEnd() {
+          bitField0_ = (bitField0_ & ~0x00000002);
+          end_ = 0L;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.Value.Range)
+      }
+
+      static {
+        defaultInstance = new Range(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.Value.Range)
+    }
+
+    public interface RangesOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // repeated .mesos.Value.Range range = 1;
+      /**
+       * <code>repeated .mesos.Value.Range range = 1;</code>
+       */
+      java.util.List<org.apache.mesos.Protos.Value.Range> 
+          getRangeList();
+      /**
+       * <code>repeated .mesos.Value.Range range = 1;</code>
+       */
+      org.apache.mesos.Protos.Value.Range getRange(int index);
+      /**
+       * <code>repeated .mesos.Value.Range range = 1;</code>
+       */
+      int getRangeCount();
+      /**
+       * <code>repeated .mesos.Value.Range range = 1;</code>
+       */
+      java.util.List<? extends org.apache.mesos.Protos.Value.RangeOrBuilder> 
+          getRangeOrBuilderList();
+      /**
+       * <code>repeated .mesos.Value.Range range = 1;</code>
+       */
+      org.apache.mesos.Protos.Value.RangeOrBuilder getRangeOrBuilder(
+          int index);
+    }
+    /**
+     * Protobuf type {@code mesos.Value.Ranges}
+     */
+    public static final class Ranges extends
+        com.google.protobuf.GeneratedMessage
+        implements RangesOrBuilder {
+      // Use Ranges.newBuilder() to construct.
+      private Ranges(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Ranges(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Ranges defaultInstance;
+      public static Ranges getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Ranges getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Ranges(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                  range_ = new java.util.ArrayList<org.apache.mesos.Protos.Value.Range>();
+                  mutable_bitField0_ |= 0x00000001;
+                }
+                range_.add(input.readMessage(org.apache.mesos.Protos.Value.Range.PARSER, extensionRegistry));
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+            range_ = java.util.Collections.unmodifiableList(range_);
+          }
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_Value_Ranges_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_Value_Ranges_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.Value.Ranges.class, org.apache.mesos.Protos.Value.Ranges.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Ranges> PARSER =
+          new com.google.protobuf.AbstractParser<Ranges>() {
+        public Ranges parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Ranges(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Ranges> getParserForType() {
+        return PARSER;
+      }
+
+      // repeated .mesos.Value.Range range = 1;
+      public static final int RANGE_FIELD_NUMBER = 1;
+      private java.util.List<org.apache.mesos.Protos.Value.Range> range_;
+      /**
+       * <code>repeated .mesos.Value.Range range = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.Value.Range> getRangeList() {
+        return range_;
+      }
+      /**
+       * <code>repeated .mesos.Value.Range range = 1;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.Value.RangeOrBuilder> 
+          getRangeOrBuilderList() {
+        return range_;
+      }
+      /**
+       * <code>repeated .mesos.Value.Range range = 1;</code>
+       */
+      public int getRangeCount() {
+        return range_.size();
+      }
+      /**
+       * <code>repeated .mesos.Value.Range range = 1;</code>
+       */
+      public org.apache.mesos.Protos.Value.Range getRange(int index) {
+        return range_.get(index);
+      }
+      /**
+       * <code>repeated .mesos.Value.Range range = 1;</code>
+       */
+      public org.apache.mesos.Protos.Value.RangeOrBuilder getRangeOrBuilder(
+          int index) {
+        return range_.get(index);
+      }
+
+      private void initFields() {
+        range_ = java.util.Collections.emptyList();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        for (int i = 0; i < getRangeCount(); i++) {
+          if (!getRange(i).isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        for (int i = 0; i < range_.size(); i++) {
+          output.writeMessage(1, range_.get(i));
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        for (int i = 0; i < range_.size(); i++) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, range_.get(i));
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.Protos.Value.Ranges parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.Value.Ranges parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Value.Ranges parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.Value.Ranges parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Value.Ranges parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.Value.Ranges parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Value.Ranges parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.Protos.Value.Ranges parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Value.Ranges parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.Value.Ranges parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.Protos.Value.Ranges prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.Value.Ranges}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.Protos.Value.RangesOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_Value_Ranges_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_Value_Ranges_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.Value.Ranges.class, org.apache.mesos.Protos.Value.Ranges.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.Protos.Value.Ranges.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getRangeFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (rangeBuilder_ == null) {
+            range_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000001);
+          } else {
+            rangeBuilder_.clear();
+          }
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.Protos.internal_static_mesos_Value_Ranges_descriptor;
+        }
+
+        public org.apache.mesos.Protos.Value.Ranges getDefaultInstanceForType() {
+          return org.apache.mesos.Protos.Value.Ranges.getDefaultInstance();
+        }
+
+        public org.apache.mesos.Protos.Value.Ranges build() {
+          org.apache.mesos.Protos.Value.Ranges result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.Protos.Value.Ranges buildPartial() {
+          org.apache.mesos.Protos.Value.Ranges result = new org.apache.mesos.Protos.Value.Ranges(this);
+          int from_bitField0_ = bitField0_;
+          if (rangeBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              range_ = java.util.Collections.unmodifiableList(range_);
+              bitField0_ = (bitField0_ & ~0x00000001);
+            }
+            result.range_ = range_;
+          } else {
+            result.range_ = rangeBuilder_.build();
+          }
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.Protos.Value.Ranges) {
+            return mergeFrom((org.apache.mesos.Protos.Value.Ranges)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.Protos.Value.Ranges other) {
+          if (other == org.apache.mesos.Protos.Value.Ranges.getDefaultInstance()) return this;
+          if (rangeBuilder_ == null) {
+            if (!other.range_.isEmpty()) {
+              if (range_.isEmpty()) {
+                range_ = other.range_;
+                bitField0_ = (bitField0_ & ~0x00000001);
+              } else {
+                ensureRangeIsMutable();
+                range_.addAll(other.range_);
+              }
+              onChanged();
+            }
+          } else {
+            if (!other.range_.isEmpty()) {
+              if (rangeBuilder_.isEmpty()) {
+                rangeBuilder_.dispose();
+                rangeBuilder_ = null;
+                range_ = other.range_;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                rangeBuilder_ = 
+                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                     getRangeFieldBuilder() : null;
+              } else {
+                rangeBuilder_.addAllMessages(other.range_);
+              }
+            }
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          for (int i = 0; i < getRangeCount(); i++) {
+            if (!getRange(i).isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.Protos.Value.Ranges parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.Protos.Value.Ranges) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // repeated .mesos.Value.Range range = 1;
+        private java.util.List<org.apache.mesos.Protos.Value.Range> range_ =
+          java.util.Collections.emptyList();
+        private void ensureRangeIsMutable() {
+          if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+            range_ = new java.util.ArrayList<org.apache.mesos.Protos.Value.Range>(range_);
+            bitField0_ |= 0x00000001;
+           }
+        }
+
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.Protos.Value.Range, org.apache.mesos.Protos.Value.Range.Builder, org.apache.mesos.Protos.Value.RangeOrBuilder> rangeBuilder_;
+
+        /**
+         * <code>repeated .mesos.Value.Range range = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.Protos.Value.Range> getRangeList() {
+          if (rangeBuilder_ == null) {
+            return java.util.Collections.unmodifiableList(range_);
+          } else {
+            return rangeBuilder_.getMessageList();
+          }
+        }
+        /**
+         * <code>repeated .mesos.Value.Range range = 1;</code>
+         */
+        public int getRangeCount() {
+          if (rangeBuilder_ == null) {
+            return range_.size();
+          } else {
+            return rangeBuilder_.getCount();
+          }
+        }
+        /**
+         * <code>repeated .mesos.Value.Range range = 1;</code>
+         */
+        public org.apache.mesos.Protos.Value.Range getRange(int index) {
+          if (rangeBuilder_ == null) {
+            return range_.get(index);
+          } else {
+            return rangeBuilder_.getMessage(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.Value.Range range = 1;</code>
+         */
+        public Builder setRange(
+            int index, org.apache.mesos.Protos.Value.Range value) {
+          if (rangeBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureRangeIsMutable();
+            range_.set(index, value);
+            onChanged();
+          } else {
+            rangeBuilder_.setMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Value.Range range = 1;</code>
+         */
+        public Builder setRange(
+            int index, org.apache.mesos.Protos.Value.Range.Builder builderForValue) {
+          if (rangeBuilder_ == null) {
+            ensureRangeIsMutable();
+            range_.set(index, builderForValue.build());
+            onChanged();
+          } else {
+            rangeBuilder_.setMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Value.Range range = 1;</code>
+         */
+        public Builder addRange(org.apache.mesos.Protos.Value.Range value) {
+          if (rangeBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureRangeIsMutable();
+            range_.add(value);
+            onChanged();
+          } else {
+            rangeBuilder_.addMessage(value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Value.Range range = 1;</code>
+         */
+        public Builder addRange(
+            int index, org.apache.mesos.Protos.Value.Range value) {
+          if (rangeBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureRangeIsMutable();
+            range_.add(index, value);
+            onChanged();
+          } else {
+            rangeBuilder_.addMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Value.Range range = 1;</code>
+         */
+        public Builder addRange(
+            org.apache.mesos.Protos.Value.Range.Builder builderForValue) {
+          if (rangeBuilder_ == null) {
+            ensureRangeIsMutable();
+            range_.add(builderForValue.build());
+            onChanged();
+          } else {
+            rangeBuilder_.addMessage(builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Value.Range range = 1;</code>
+         */
+        public Builder addRange(
+            int index, org.apache.mesos.Protos.Value.Range.Builder builderForValue) {
+          if (rangeBuilder_ == null) {
+            ensureRangeIsMutable();
+            range_.add(index, builderForValue.build());
+            onChanged();
+          } else {
+            rangeBuilder_.addMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Value.Range range = 1;</code>
+         */
+        public Builder addAllRange(
+            java.lang.Iterable<? extends org.apache.mesos.Protos.Value.Range> values) {
+          if (rangeBuilder_ == null) {
+            ensureRangeIsMutable();
+            super.addAll(values, range_);
+            onChanged();
+          } else {
+            rangeBuilder_.addAllMessages(values);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Value.Range range = 1;</code>
+         */
+        public Builder clearRange() {
+          if (rangeBuilder_ == null) {
+            range_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000001);
+            onChanged();
+          } else {
+            rangeBuilder_.clear();
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Value.Range range = 1;</code>
+         */
+        public Builder removeRange(int index) {
+          if (rangeBuilder_ == null) {
+            ensureRangeIsMutable();
+            range_.remove(index);
+            onChanged();
+          } else {
+            rangeBuilder_.remove(index);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Value.Range range = 1;</code>
+         */
+        public org.apache.mesos.Protos.Value.Range.Builder getRangeBuilder(
+            int index) {
+          return getRangeFieldBuilder().getBuilder(index);
+        }
+        /**
+         * <code>repeated .mesos.Value.Range range = 1;</code>
+         */
+        public org.apache.mesos.Protos.Value.RangeOrBuilder getRangeOrBuilder(
+            int index) {
+          if (rangeBuilder_ == null) {
+            return range_.get(index);  } else {
+            return rangeBuilder_.getMessageOrBuilder(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.Value.Range range = 1;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.Protos.Value.RangeOrBuilder> 
+             getRangeOrBuilderList() {
+          if (rangeBuilder_ != null) {
+            return rangeBuilder_.getMessageOrBuilderList();
+          } else {
+            return java.util.Collections.unmodifiableList(range_);
+          }
+        }
+        /**
+         * <code>repeated .mesos.Value.Range range = 1;</code>
+         */
+        public org.apache.mesos.Protos.Value.Range.Builder addRangeBuilder() {
+          return getRangeFieldBuilder().addBuilder(
+              org.apache.mesos.Protos.Value.Range.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.Value.Range range = 1;</code>
+         */
+        public org.apache.mesos.Protos.Value.Range.Builder addRangeBuilder(
+            int index) {
+          return getRangeFieldBuilder().addBuilder(
+              index, org.apache.mesos.Protos.Value.Range.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.Value.Range range = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.Protos.Value.Range.Builder> 
+             getRangeBuilderList() {
+          return getRangeFieldBuilder().getBuilderList();
+        }
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.Protos.Value.Range, org.apache.mesos.Protos.Value.Range.Builder, org.apache.mesos.Protos.Value.RangeOrBuilder> 
+            getRangeFieldBuilder() {
+          if (rangeBuilder_ == null) {
+            rangeBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.Protos.Value.Range, org.apache.mesos.Protos.Value.Range.Builder, org.apache.mesos.Protos.Value.RangeOrBuilder>(
+                    range_,
+                    ((bitField0_ & 0x00000001) == 0x00000001),
+                    getParentForChildren(),
+                    isClean());
+            range_ = null;
+          }
+          return rangeBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.Value.Ranges)
+      }
+
+      static {
+        defaultInstance = new Ranges(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.Value.Ranges)
+    }
+
+    public interface SetOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // repeated string item = 1;
+      /**
+       * <code>repeated string item = 1;</code>
+       */
+      java.util.List<java.lang.String>
+      getItemList();
+      /**
+       * <code>repeated string item = 1;</code>
+       */
+      int getItemCount();
+      /**
+       * <code>repeated string item = 1;</code>
+       */
+      java.lang.String getItem(int index);
+      /**
+       * <code>repeated string item = 1;</code>
+       */
+      com.google.protobuf.ByteString
+          getItemBytes(int index);
+    }
+    /**
+     * Protobuf type {@code mesos.Value.Set}
+     */
+    public static final class Set extends
+        com.google.protobuf.GeneratedMessage
+        implements SetOrBuilder {
+      // Use Set.newBuilder() to construct.
+      private Set(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Set(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Set defaultInstance;
+      public static Set getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Set getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Set(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                  item_ = new com.google.protobuf.LazyStringArrayList();
+                  mutable_bitField0_ |= 0x00000001;
+                }
+                item_.add(input.readBytes());
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+            item_ = new com.google.protobuf.UnmodifiableLazyStringList(item_);
+          }
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_Value_Set_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_Value_Set_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.Value.Set.class, org.apache.mesos.Protos.Value.Set.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Set> PARSER =
+          new com.google.protobuf.AbstractParser<Set>() {
+        public Set parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Set(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Set> getParserForType() {
+        return PARSER;
+      }
+
+      // repeated string item = 1;
+      public static final int ITEM_FIELD_NUMBER = 1;
+      private com.google.protobuf.LazyStringList item_;
+      /**
+       * <code>repeated string item = 1;</code>
+       */
+      public java.util.List<java.lang.String>
+          getItemList() {
+        return item_;
+      }
+      /**
+       * <code>repeated string item = 1;</code>
+       */
+      public int getItemCount() {
+        return item_.size();
+      }
+      /**
+       * <code>repeated string item = 1;</code>
+       */
+      public java.lang.String getItem(int index) {
+        return item_.get(index);
+      }
+      /**
+       * <code>repeated string item = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getItemBytes(int index) {
+        return item_.getByteString(index);
+      }
+
+      private void initFields() {
+        item_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        for (int i = 0; i < item_.size(); i++) {
+          output.writeBytes(1, item_.getByteString(i));
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        {
+          int dataSize = 0;
+          for (int i = 0; i < item_.size(); i++) {
+            dataSize += com.google.protobuf.CodedOutputStream
+              .computeBytesSizeNoTag(item_.getByteString(i));
+          }
+          size += dataSize;
+          size += 1 * getItemList().size();
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.Protos.Value.Set parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.Value.Set parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Value.Set parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.Value.Set parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Value.Set parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.Value.Set parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Value.Set parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.Protos.Value.Set parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Value.Set parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.Value.Set parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.Protos.Value.Set prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.Value.Set}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.Protos.Value.SetOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_Value_Set_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_Value_Set_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.Value.Set.class, org.apache.mesos.Protos.Value.Set.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.Protos.Value.Set.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          item_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.Protos.internal_static_mesos_Value_Set_descriptor;
+        }
+
+        public org.apache.mesos.Protos.Value.Set getDefaultInstanceForType() {
+          return org.apache.mesos.Protos.Value.Set.getDefaultInstance();
+        }
+
+        public org.apache.mesos.Protos.Value.Set build() {
+          org.apache.mesos.Protos.Value.Set result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.Protos.Value.Set buildPartial() {
+          org.apache.mesos.Protos.Value.Set result = new org.apache.mesos.Protos.Value.Set(this);
+          int from_bitField0_ = bitField0_;
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            item_ = new com.google.protobuf.UnmodifiableLazyStringList(
+                item_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.item_ = item_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.Protos.Value.Set) {
+            return mergeFrom((org.apache.mesos.Protos.Value.Set)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.Protos.Value.Set other) {
+          if (other == org.apache.mesos.Protos.Value.Set.getDefaultInstance()) return this;
+          if (!other.item_.isEmpty()) {
+            if (item_.isEmpty()) {
+              item_ = other.item_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureItemIsMutable();
+              item_.addAll(other.item_);
+            }
+            onChanged();
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.Protos.Value.Set parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.Protos.Value.Set) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // repeated string item = 1;
+        private com.google.protobuf.LazyStringList item_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+        private void ensureItemIsMutable() {
+          if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+            item_ = new com.google.protobuf.LazyStringArrayList(item_);
+            bitField0_ |= 0x00000001;
+           }
+        }
+        /**
+         * <code>repeated string item = 1;</code>
+         */
+        public java.util.List<java.lang.String>
+            getItemList() {
+          return java.util.Collections.unmodifiableList(item_);
+        }
+        /**
+         * <code>repeated string item = 1;</code>
+         */
+        public int getItemCount() {
+          return item_.size();
+        }
+        /**
+         * <code>repeated string item = 1;</code>
+         */
+        public java.lang.String getItem(int index) {
+          return item_.get(index);
+        }
+        /**
+         * <code>repeated string item = 1;</code>
+         */
+        public com.google.protobuf.ByteString
+            getItemBytes(int index) {
+          return item_.getByteString(index);
+        }
+        /**
+         * <code>repeated string item = 1;</code>
+         */
+        public Builder setItem(
+            int index, java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureItemIsMutable();
+          item_.set(index, value);
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>repeated string item = 1;</code>
+         */
+        public Builder addItem(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureItemIsMutable();
+          item_.add(value);
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>repeated string item = 1;</code>
+         */
+        public Builder addAllItem(
+            java.lang.Iterable<java.lang.String> values) {
+          ensureItemIsMutable();
+          super.addAll(values, item_);
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>repeated string item = 1;</code>
+         */
+        public Builder clearItem() {
+          item_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>repeated string item = 1;</code>
+         */
+        public Builder addItemBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureItemIsMutable();
+          item_.add(value);
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.Value.Set)
+      }
+
+      static {
+        defaultInstance = new Set(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.Value.Set)
+    }
+
+    public interface TextOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required string value = 1;
+      /**
+       * <code>required string value = 1;</code>
+       */
+      boolean hasValue();
+      /**
+       * <code>required string value = 1;</code>
+       */
+      java.lang.String getValue();
+      /**
+       * <code>required string value = 1;</code>
+       */
+      com.google.protobuf.ByteString
+          getValueBytes();
+    }
+    /**
+     * Protobuf type {@code mesos.Value.Text}
+     */
+    public static final class Text extends
+        com.google.protobuf.GeneratedMessage
+        implements TextOrBuilder {
+      // Use Text.newBuilder() to construct.
+      private Text(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Text(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Text defaultInstance;
+      public static Text getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Text getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Text(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                bitField0_ |= 0x00000001;
+                value_ = input.readBytes();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_Value_Text_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_Value_Text_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.Value.Text.class, org.apache.mesos.Protos.Value.Text.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Text> PARSER =
+          new com.google.protobuf.AbstractParser<Text>() {
+        public Text parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Text(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Text> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required string value = 1;
+      public static final int VALUE_FIELD_NUMBER = 1;
+      private java.lang.Object value_;
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public boolean hasValue() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public java.lang.String getValue() {
+        java.lang.Object ref = value_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            value_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getValueBytes() {
+        java.lang.Object ref = value_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          value_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      private void initFields() {
+        value_ = "";
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasValue()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeBytes(1, getValueBytes());
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(1, getValueBytes());
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.Protos.Value.Text parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.Value.Text parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Value.Text parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.Value.Text parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Value.Text parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.Value.Text parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Value.Text parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.Protos.Value.Text parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Value.Text parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.Value.Text parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.Protos.Value.Text prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.Value.Text}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.Protos.Value.TextOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_Value_Text_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_Value_Text_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.Value.Text.class, org.apache.mesos.Protos.Value.Text.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.Protos.Value.Text.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          value_ = "";
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.Protos.internal_static_mesos_Value_Text_descriptor;
+        }
+
+        public org.apache.mesos.Protos.Value.Text getDefaultInstanceForType() {
+          return org.apache.mesos.Protos.Value.Text.getDefaultInstance();
+        }
+
+        public org.apache.mesos.Protos.Value.Text build() {
+          org.apache.mesos.Protos.Value.Text result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.Protos.Value.Text buildPartial() {
+          org.apache.mesos.Protos.Value.Text result = new org.apache.mesos.Protos.Value.Text(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.value_ = value_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.Protos.Value.Text) {
+            return mergeFrom((org.apache.mesos.Protos.Value.Text)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.Protos.Value.Text other) {
+          if (other == org.apache.mesos.Protos.Value.Text.getDefaultInstance()) return this;
+          if (other.hasValue()) {
+            bitField0_ |= 0x00000001;
+            value_ = other.value_;
+            onChanged();
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasValue()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.Protos.Value.Text parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.Protos.Value.Text) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required string value = 1;
+        private java.lang.Object value_ = "";
+        /**
+         * <code>required string value = 1;</code>
+         */
+        public boolean hasValue() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required string value = 1;</code>
+         */
+        public java.lang.String getValue() {
+          java.lang.Object ref = value_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            value_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>required string value = 1;</code>
+         */
+        public com.google.protobuf.ByteString
+            getValueBytes() {
+          java.lang.Object ref = value_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            value_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>required string value = 1;</code>
+         */
+        public Builder setValue(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          value_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required string value = 1;</code>
+         */
+        public Builder clearValue() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          value_ = getDefaultInstance().getValue();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required string value = 1;</code>
+         */
+        public Builder setValueBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          value_ = value;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.Value.Text)
+      }
+
+      static {
+        defaultInstance = new Text(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.Value.Text)
+    }
+
+    private int bitField0_;
+    // required .mesos.Value.Type type = 1;
+    public static final int TYPE_FIELD_NUMBER = 1;
+    private org.apache.mesos.Protos.Value.Type type_;
+    /**
+     * <code>required .mesos.Value.Type type = 1;</code>
+     */
+    public boolean hasType() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required .mesos.Value.Type type = 1;</code>
+     */
+    public org.apache.mesos.Protos.Value.Type getType() {
+      return type_;
+    }
+
+    // optional .mesos.Value.Scalar scalar = 2;
+    public static final int SCALAR_FIELD_NUMBER = 2;
+    private org.apache.mesos.Protos.Value.Scalar scalar_;
+    /**
+     * <code>optional .mesos.Value.Scalar scalar = 2;</code>
+     */
+    public boolean hasScalar() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional .mesos.Value.Scalar scalar = 2;</code>
+     */
+    public org.apache.mesos.Protos.Value.Scalar getScalar() {
+      return scalar_;
+    }
+    /**
+     * <code>optional .mesos.Value.Scalar scalar = 2;</code>
+     */
+    public org.apache.mesos.Protos.Value.ScalarOrBuilder getScalarOrBuilder() {
+      return scalar_;
+    }
+
+    // optional .mesos.Value.Ranges ranges = 3;
+    public static final int RANGES_FIELD_NUMBER = 3;
+    private org.apache.mesos.Protos.Value.Ranges ranges_;
+    /**
+     * <code>optional .mesos.Value.Ranges ranges = 3;</code>
+     */
+    public boolean hasRanges() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional .mesos.Value.Ranges ranges = 3;</code>
+     */
+    public org.apache.mesos.Protos.Value.Ranges getRanges() {
+      return ranges_;
+    }
+    /**
+     * <code>optional .mesos.Value.Ranges ranges = 3;</code>
+     */
+    public org.apache.mesos.Protos.Value.RangesOrBuilder getRangesOrBuilder() {
+      return ranges_;
+    }
+
+    // optional .mesos.Value.Set set = 4;
+    public static final int SET_FIELD_NUMBER = 4;
+    private org.apache.mesos.Protos.Value.Set set_;
+    /**
+     * <code>optional .mesos.Value.Set set = 4;</code>
+     */
+    public boolean hasSet() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional .mesos.Value.Set set = 4;</code>
+     */
+    public org.apache.mesos.Protos.Value.Set getSet() {
+      return set_;
+    }
+    /**
+     * <code>optional .mesos.Value.Set set = 4;</code>
+     */
+    public org.apache.mesos.Protos.Value.SetOrBuilder getSetOrBuilder() {
+      return set_;
+    }
+
+    // optional .mesos.Value.Text text = 5;
+    public static final int TEXT_FIELD_NUMBER = 5;
+    private org.apache.mesos.Protos.Value.Text text_;
+    /**
+     * <code>optional .mesos.Value.Text text = 5;</code>
+     */
+    public boolean hasText() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional .mesos.Value.Text text = 5;</code>
+     */
+    public org.apache.mesos.Protos.Value.Text getText() {
+      return text_;
+    }
+    /**
+     * <code>optional .mesos.Value.Text text = 5;</code>
+     */
+    public org.apache.mesos.Protos.Value.TextOrBuilder getTextOrBuilder() {
+      return text_;
+    }
+
+    private void initFields() {
+      type_ = org.apache.mesos.Protos.Value.Type.SCALAR;
+      scalar_ = org.apache.mesos.Protos.Value.Scalar.getDefaultInstance();
+      ranges_ = org.apache.mesos.Protos.Value.Ranges.getDefaultInstance();
+      set_ = org.apache.mesos.Protos.Value.Set.getDefaultInstance();
+      text_ = org.apache.mesos.Protos.Value.Text.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasType()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (hasScalar()) {
+        if (!getScalar().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasRanges()) {
+        if (!getRanges().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasText()) {
+        if (!getText().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeEnum(1, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(2, scalar_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeMessage(3, ranges_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeMessage(4, set_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeMessage(5, text_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(1, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, scalar_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, ranges_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, set_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(5, text_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.Value parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Value parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Value parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Value parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Value parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Value parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Value parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.Value parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Value parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Value parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.Value prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.Value}
+     *
+     * <pre>
+     **
+     * Describes an Attribute or Resource "value". A value is described
+     * using the standard protocol buffer "union" trick.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.ValueOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_Value_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_Value_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.Value.class, org.apache.mesos.Protos.Value.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.Value.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getScalarFieldBuilder();
+          getRangesFieldBuilder();
+          getSetFieldBuilder();
+          getTextFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        type_ = org.apache.mesos.Protos.Value.Type.SCALAR;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (scalarBuilder_ == null) {
+          scalar_ = org.apache.mesos.Protos.Value.Scalar.getDefaultInstance();
+        } else {
+          scalarBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        if (rangesBuilder_ == null) {
+          ranges_ = org.apache.mesos.Protos.Value.Ranges.getDefaultInstance();
+        } else {
+          rangesBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        if (setBuilder_ == null) {
+          set_ = org.apache.mesos.Protos.Value.Set.getDefaultInstance();
+        } else {
+          setBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        if (textBuilder_ == null) {
+          text_ = org.apache.mesos.Protos.Value.Text.getDefaultInstance();
+        } else {
+          textBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_Value_descriptor;
+      }
+
+      public org.apache.mesos.Protos.Value getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.Value.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.Value build() {
+        org.apache.mesos.Protos.Value result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.Value buildPartial() {
+        org.apache.mesos.Protos.Value result = new org.apache.mesos.Protos.Value(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.type_ = type_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (scalarBuilder_ == null) {
+          result.scalar_ = scalar_;
+        } else {
+          result.scalar_ = scalarBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        if (rangesBuilder_ == null) {
+          result.ranges_ = ranges_;
+        } else {
+          result.ranges_ = rangesBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        if (setBuilder_ == null) {
+          result.set_ = set_;
+        } else {
+          result.set_ = setBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        if (textBuilder_ == null) {
+          result.text_ = text_;
+        } else {
+          result.text_ = textBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.Value) {
+          return mergeFrom((org.apache.mesos.Protos.Value)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.Value other) {
+        if (other == org.apache.mesos.Protos.Value.getDefaultInstance()) return this;
+        if (other.hasType()) {
+          setType(other.getType());
+        }
+        if (other.hasScalar()) {
+          mergeScalar(other.getScalar());
+        }
+        if (other.hasRanges()) {
+          mergeRanges(other.getRanges());
+        }
+        if (other.hasSet()) {
+          mergeSet(other.getSet());
+        }
+        if (other.hasText()) {
+          mergeText(other.getText());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasType()) {
+          
+          return false;
+        }
+        if (hasScalar()) {
+          if (!getScalar().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasRanges()) {
+          if (!getRanges().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasText()) {
+          if (!getText().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.Value parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.Value) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required .mesos.Value.Type type = 1;
+      private org.apache.mesos.Protos.Value.Type type_ = org.apache.mesos.Protos.Value.Type.SCALAR;
+      /**
+       * <code>required .mesos.Value.Type type = 1;</code>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.Value.Type type = 1;</code>
+       */
+      public org.apache.mesos.Protos.Value.Type getType() {
+        return type_;
+      }
+      /**
+       * <code>required .mesos.Value.Type type = 1;</code>
+       */
+      public Builder setType(org.apache.mesos.Protos.Value.Type value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000001;
+        type_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required .mesos.Value.Type type = 1;</code>
+       */
+      public Builder clearType() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        type_ = org.apache.mesos.Protos.Value.Type.SCALAR;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.Value.Scalar scalar = 2;
+      private org.apache.mesos.Protos.Value.Scalar scalar_ = org.apache.mesos.Protos.Value.Scalar.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Value.Scalar, org.apache.mesos.Protos.Value.Scalar.Builder, org.apache.mesos.Protos.Value.ScalarOrBuilder> scalarBuilder_;
+      /**
+       * <code>optional .mesos.Value.Scalar scalar = 2;</code>
+       */
+      public boolean hasScalar() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.Value.Scalar scalar = 2;</code>
+       */
+      public org.apache.mesos.Protos.Value.Scalar getScalar() {
+        if (scalarBuilder_ == null) {
+          return scalar_;
+        } else {
+          return scalarBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.Value.Scalar scalar = 2;</code>
+       */
+      public Builder setScalar(org.apache.mesos.Protos.Value.Scalar value) {
+        if (scalarBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          scalar_ = value;
+          onChanged();
+        } else {
+          scalarBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Scalar scalar = 2;</code>
+       */
+      public Builder setScalar(
+          org.apache.mesos.Protos.Value.Scalar.Builder builderForValue) {
+        if (scalarBuilder_ == null) {
+          scalar_ = builderForValue.build();
+          onChanged();
+        } else {
+          scalarBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Scalar scalar = 2;</code>
+       */
+      public Builder mergeScalar(org.apache.mesos.Protos.Value.Scalar value) {
+        if (scalarBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              scalar_ != org.apache.mesos.Protos.Value.Scalar.getDefaultInstance()) {
+            scalar_ =
+              org.apache.mesos.Protos.Value.Scalar.newBuilder(scalar_).mergeFrom(value).buildPartial();
+          } else {
+            scalar_ = value;
+          }
+          onChanged();
+        } else {
+          scalarBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Scalar scalar = 2;</code>
+       */
+      public Builder clearScalar() {
+        if (scalarBuilder_ == null) {
+          scalar_ = org.apache.mesos.Protos.Value.Scalar.getDefaultInstance();
+          onChanged();
+        } else {
+          scalarBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Scalar scalar = 2;</code>
+       */
+      public org.apache.mesos.Protos.Value.Scalar.Builder getScalarBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getScalarFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.Value.Scalar scalar = 2;</code>
+       */
+      public org.apache.mesos.Protos.Value.ScalarOrBuilder getScalarOrBuilder() {
+        if (scalarBuilder_ != null) {
+          return scalarBuilder_.getMessageOrBuilder();
+        } else {
+          return scalar_;
+        }
+      }
+      /**
+       * <code>optional .mesos.Value.Scalar scalar = 2;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Value.Scalar, org.apache.mesos.Protos.Value.Scalar.Builder, org.apache.mesos.Protos.Value.ScalarOrBuilder> 
+          getScalarFieldBuilder() {
+        if (scalarBuilder_ == null) {
+          scalarBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Value.Scalar, org.apache.mesos.Protos.Value.Scalar.Builder, org.apache.mesos.Protos.Value.ScalarOrBuilder>(
+                  scalar_,
+                  getParentForChildren(),
+                  isClean());
+          scalar_ = null;
+        }
+        return scalarBuilder_;
+      }
+
+      // optional .mesos.Value.Ranges ranges = 3;
+      private org.apache.mesos.Protos.Value.Ranges ranges_ = org.apache.mesos.Protos.Value.Ranges.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Value.Ranges, org.apache.mesos.Protos.Value.Ranges.Builder, org.apache.mesos.Protos.Value.RangesOrBuilder> rangesBuilder_;
+      /**
+       * <code>optional .mesos.Value.Ranges ranges = 3;</code>
+       */
+      public boolean hasRanges() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.Value.Ranges ranges = 3;</code>
+       */
+      public org.apache.mesos.Protos.Value.Ranges getRanges() {
+        if (rangesBuilder_ == null) {
+          return ranges_;
+        } else {
+          return rangesBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.Value.Ranges ranges = 3;</code>
+       */
+      public Builder setRanges(org.apache.mesos.Protos.Value.Ranges value) {
+        if (rangesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ranges_ = value;
+          onChanged();
+        } else {
+          rangesBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Ranges ranges = 3;</code>
+       */
+      public Builder setRanges(
+          org.apache.mesos.Protos.Value.Ranges.Builder builderForValue) {
+        if (rangesBuilder_ == null) {
+          ranges_ = builderForValue.build();
+          onChanged();
+        } else {
+          rangesBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Ranges ranges = 3;</code>
+       */
+      public Builder mergeRanges(org.apache.mesos.Protos.Value.Ranges value) {
+        if (rangesBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) == 0x00000004) &&
+              ranges_ != org.apache.mesos.Protos.Value.Ranges.getDefaultInstance()) {
+            ranges_ =
+              org.apache.mesos.Protos.Value.Ranges.newBuilder(ranges_).mergeFrom(value).buildPartial();
+          } else {
+            ranges_ = value;
+          }
+          onChanged();
+        } else {
+          rangesBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Ranges ranges = 3;</code>
+       */
+      public Builder clearRanges() {
+        if (rangesBuilder_ == null) {
+          ranges_ = org.apache.mesos.Protos.Value.Ranges.getDefaultInstance();
+          onChanged();
+        } else {
+          rangesBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Ranges ranges = 3;</code>
+       */
+      public org.apache.mesos.Protos.Value.Ranges.Builder getRangesBuilder() {
+        bitField0_ |= 0x00000004;
+        onChanged();
+        return getRangesFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.Value.Ranges ranges = 3;</code>
+       */
+      public org.apache.mesos.Protos.Value.RangesOrBuilder getRangesOrBuilder() {
+        if (rangesBuilder_ != null) {
+          return rangesBuilder_.getMessageOrBuilder();
+        } else {
+          return ranges_;
+        }
+      }
+      /**
+       * <code>optional .mesos.Value.Ranges ranges = 3;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Value.Ranges, org.apache.mesos.Protos.Value.Ranges.Builder, org.apache.mesos.Protos.Value.RangesOrBuilder> 
+          getRangesFieldBuilder() {
+        if (rangesBuilder_ == null) {
+          rangesBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Value.Ranges, org.apache.mesos.Protos.Value.Ranges.Builder, org.apache.mesos.Protos.Value.RangesOrBuilder>(
+                  ranges_,
+                  getParentForChildren(),
+                  isClean());
+          ranges_ = null;
+        }
+        return rangesBuilder_;
+      }
+
+      // optional .mesos.Value.Set set = 4;
+      private org.apache.mesos.Protos.Value.Set set_ = org.apache.mesos.Protos.Value.Set.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Value.Set, org.apache.mesos.Protos.Value.Set.Builder, org.apache.mesos.Protos.Value.SetOrBuilder> setBuilder_;
+      /**
+       * <code>optional .mesos.Value.Set set = 4;</code>
+       */
+      public boolean hasSet() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.Value.Set set = 4;</code>
+       */
+      public org.apache.mesos.Protos.Value.Set getSet() {
+        if (setBuilder_ == null) {
+          return set_;
+        } else {
+          return setBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.Value.Set set = 4;</code>
+       */
+      public Builder setSet(org.apache.mesos.Protos.Value.Set value) {
+        if (setBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          set_ = value;
+          onChanged();
+        } else {
+          setBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Set set = 4;</code>
+       */
+      public Builder setSet(
+          org.apache.mesos.Protos.Value.Set.Builder builderForValue) {
+        if (setBuilder_ == null) {
+          set_ = builderForValue.build();
+          onChanged();
+        } else {
+          setBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Set set = 4;</code>
+       */
+      public Builder mergeSet(org.apache.mesos.Protos.Value.Set value) {
+        if (setBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008) &&
+              set_ != org.apache.mesos.Protos.Value.Set.getDefaultInstance()) {
+            set_ =
+              org.apache.mesos.Protos.Value.Set.newBuilder(set_).mergeFrom(value).buildPartial();
+          } else {
+            set_ = value;
+          }
+          onChanged();
+        } else {
+          setBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Set set = 4;</code>
+       */
+      public Builder clearSet() {
+        if (setBuilder_ == null) {
+          set_ = org.apache.mesos.Protos.Value.Set.getDefaultInstance();
+          onChanged();
+        } else {
+          setBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Set set = 4;</code>
+       */
+      public org.apache.mesos.Protos.Value.Set.Builder getSetBuilder() {
+        bitField0_ |= 0x00000008;
+        onChanged();
+        return getSetFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.Value.Set set = 4;</code>
+       */
+      public org.apache.mesos.Protos.Value.SetOrBuilder getSetOrBuilder() {
+        if (setBuilder_ != null) {
+          return setBuilder_.getMessageOrBuilder();
+        } else {
+          return set_;
+        }
+      }
+      /**
+       * <code>optional .mesos.Value.Set set = 4;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Value.Set, org.apache.mesos.Protos.Value.Set.Builder, org.apache.mesos.Protos.Value.SetOrBuilder> 
+          getSetFieldBuilder() {
+        if (setBuilder_ == null) {
+          setBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Value.Set, org.apache.mesos.Protos.Value.Set.Builder, org.apache.mesos.Protos.Value.SetOrBuilder>(
+                  set_,
+                  getParentForChildren(),
+                  isClean());
+          set_ = null;
+        }
+        return setBuilder_;
+      }
+
+      // optional .mesos.Value.Text text = 5;
+      private org.apache.mesos.Protos.Value.Text text_ = org.apache.mesos.Protos.Value.Text.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Value.Text, org.apache.mesos.Protos.Value.Text.Builder, org.apache.mesos.Protos.Value.TextOrBuilder> textBuilder_;
+      /**
+       * <code>optional .mesos.Value.Text text = 5;</code>
+       */
+      public boolean hasText() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional .mesos.Value.Text text = 5;</code>
+       */
+      public org.apache.mesos.Protos.Value.Text getText() {
+        if (textBuilder_ == null) {
+          return text_;
+        } else {
+          return textBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.Value.Text text = 5;</code>
+       */
+      public Builder setText(org.apache.mesos.Protos.Value.Text value) {
+        if (textBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          text_ = value;
+          onChanged();
+        } else {
+          textBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Text text = 5;</code>
+       */
+      public Builder setText(
+          org.apache.mesos.Protos.Value.Text.Builder builderForValue) {
+        if (textBuilder_ == null) {
+          text_ = builderForValue.build();
+          onChanged();
+        } else {
+          textBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Text text = 5;</code>
+       */
+      public Builder mergeText(org.apache.mesos.Protos.Value.Text value) {
+        if (textBuilder_ == null) {
+          if (((bitField0_ & 0x00000010) == 0x00000010) &&
+              text_ != org.apache.mesos.Protos.Value.Text.getDefaultInstance()) {
+            text_ =
+              org.apache.mesos.Protos.Value.Text.newBuilder(text_).mergeFrom(value).buildPartial();
+          } else {
+            text_ = value;
+          }
+          onChanged();
+        } else {
+          textBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Text text = 5;</code>
+       */
+      public Builder clearText() {
+        if (textBuilder_ == null) {
+          text_ = org.apache.mesos.Protos.Value.Text.getDefaultInstance();
+          onChanged();
+        } else {
+          textBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Text text = 5;</code>
+       */
+      public org.apache.mesos.Protos.Value.Text.Builder getTextBuilder() {
+        bitField0_ |= 0x00000010;
+        onChanged();
+        return getTextFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.Value.Text text = 5;</code>
+       */
+      public org.apache.mesos.Protos.Value.TextOrBuilder getTextOrBuilder() {
+        if (textBuilder_ != null) {
+          return textBuilder_.getMessageOrBuilder();
+        } else {
+          return text_;
+        }
+      }
+      /**
+       * <code>optional .mesos.Value.Text text = 5;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Value.Text, org.apache.mesos.Protos.Value.Text.Builder, org.apache.mesos.Protos.Value.TextOrBuilder> 
+          getTextFieldBuilder() {
+        if (textBuilder_ == null) {
+          textBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Value.Text, org.apache.mesos.Protos.Value.Text.Builder, org.apache.mesos.Protos.Value.TextOrBuilder>(
+                  text_,
+                  getParentForChildren(),
+                  isClean());
+          text_ = null;
+        }
+        return textBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.Value)
+    }
+
+    static {
+      defaultInstance = new Value(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.Value)
+  }
+
+  public interface AttributeOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string name = 1;
+    /**
+     * <code>required string name = 1;</code>
+     */
+    boolean hasName();
+    /**
+     * <code>required string name = 1;</code>
+     */
+    java.lang.String getName();
+    /**
+     * <code>required string name = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getNameBytes();
+
+    // required .mesos.Value.Type type = 2;
+    /**
+     * <code>required .mesos.Value.Type type = 2;</code>
+     */
+    boolean hasType();
+    /**
+     * <code>required .mesos.Value.Type type = 2;</code>
+     */
+    org.apache.mesos.Protos.Value.Type getType();
+
+    // optional .mesos.Value.Scalar scalar = 3;
+    /**
+     * <code>optional .mesos.Value.Scalar scalar = 3;</code>
+     */
+    boolean hasScalar();
+    /**
+     * <code>optional .mesos.Value.Scalar scalar = 3;</code>
+     */
+    org.apache.mesos.Protos.Value.Scalar getScalar();
+    /**
+     * <code>optional .mesos.Value.Scalar scalar = 3;</code>
+     */
+    org.apache.mesos.Protos.Value.ScalarOrBuilder getScalarOrBuilder();
+
+    // optional .mesos.Value.Ranges ranges = 4;
+    /**
+     * <code>optional .mesos.Value.Ranges ranges = 4;</code>
+     */
+    boolean hasRanges();
+    /**
+     * <code>optional .mesos.Value.Ranges ranges = 4;</code>
+     */
+    org.apache.mesos.Protos.Value.Ranges getRanges();
+    /**
+     * <code>optional .mesos.Value.Ranges ranges = 4;</code>
+     */
+    org.apache.mesos.Protos.Value.RangesOrBuilder getRangesOrBuilder();
+
+    // optional .mesos.Value.Set set = 6;
+    /**
+     * <code>optional .mesos.Value.Set set = 6;</code>
+     */
+    boolean hasSet();
+    /**
+     * <code>optional .mesos.Value.Set set = 6;</code>
+     */
+    org.apache.mesos.Protos.Value.Set getSet();
+    /**
+     * <code>optional .mesos.Value.Set set = 6;</code>
+     */
+    org.apache.mesos.Protos.Value.SetOrBuilder getSetOrBuilder();
+
+    // optional .mesos.Value.Text text = 5;
+    /**
+     * <code>optional .mesos.Value.Text text = 5;</code>
+     */
+    boolean hasText();
+    /**
+     * <code>optional .mesos.Value.Text text = 5;</code>
+     */
+    org.apache.mesos.Protos.Value.Text getText();
+    /**
+     * <code>optional .mesos.Value.Text text = 5;</code>
+     */
+    org.apache.mesos.Protos.Value.TextOrBuilder getTextOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.Attribute}
+   *
+   * <pre>
+   **
+   * Describes an attribute that can be set on a machine. For now,
+   * attributes and resources share the same "value" type, but this may
+   * change in the future and attributes may only be string based.
+   * </pre>
+   */
+  public static final class Attribute extends
+      com.google.protobuf.GeneratedMessage
+      implements AttributeOrBuilder {
+    // Use Attribute.newBuilder() to construct.
+    private Attribute(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Attribute(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Attribute defaultInstance;
+    public static Attribute getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Attribute getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Attribute(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              name_ = input.readBytes();
+              break;
+            }
+            case 16: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.Protos.Value.Type value = org.apache.mesos.Protos.Value.Type.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(2, rawValue);
+              } else {
+                bitField0_ |= 0x00000002;
+                type_ = value;
+              }
+              break;
+            }
+            case 26: {
+              org.apache.mesos.Protos.Value.Scalar.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                subBuilder = scalar_.toBuilder();
+              }
+              scalar_ = input.readMessage(org.apache.mesos.Protos.Value.Scalar.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(scalar_);
+                scalar_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000004;
+              break;
+            }
+            case 34: {
+              org.apache.mesos.Protos.Value.Ranges.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                subBuilder = ranges_.toBuilder();
+              }
+              ranges_ = input.readMessage(org.apache.mesos.Protos.Value.Ranges.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(ranges_);
+                ranges_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000008;
+              break;
+            }
+            case 42: {
+              org.apache.mesos.Protos.Value.Text.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000020) == 0x00000020)) {
+                subBuilder = text_.toBuilder();
+              }
+              text_ = input.readMessage(org.apache.mesos.Protos.Value.Text.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(text_);
+                text_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000020;
+              break;
+            }
+            case 50: {
+              org.apache.mesos.Protos.Value.Set.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000010) == 0x00000010)) {
+                subBuilder = set_.toBuilder();
+              }
+              set_ = input.readMessage(org.apache.mesos.Protos.Value.Set.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(set_);
+                set_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000010;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_Attribute_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_Attribute_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.Attribute.class, org.apache.mesos.Protos.Attribute.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Attribute> PARSER =
+        new com.google.protobuf.AbstractParser<Attribute>() {
+      public Attribute parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Attribute(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Attribute> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string name = 1;
+    public static final int NAME_FIELD_NUMBER = 1;
+    private java.lang.Object name_;
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public boolean hasName() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public java.lang.String getName() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          name_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getNameBytes() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        name_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // required .mesos.Value.Type type = 2;
+    public static final int TYPE_FIELD_NUMBER = 2;
+    private org.apache.mesos.Protos.Value.Type type_;
+    /**
+     * <code>required .mesos.Value.Type type = 2;</code>
+     */
+    public boolean hasType() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>required .mesos.Value.Type type = 2;</code>
+     */
+    public org.apache.mesos.Protos.Value.Type getType() {
+      return type_;
+    }
+
+    // optional .mesos.Value.Scalar scalar = 3;
+    public static final int SCALAR_FIELD_NUMBER = 3;
+    private org.apache.mesos.Protos.Value.Scalar scalar_;
+    /**
+     * <code>optional .mesos.Value.Scalar scalar = 3;</code>
+     */
+    public boolean hasScalar() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional .mesos.Value.Scalar scalar = 3;</code>
+     */
+    public org.apache.mesos.Protos.Value.Scalar getScalar() {
+      return scalar_;
+    }
+    /**
+     * <code>optional .mesos.Value.Scalar scalar = 3;</code>
+     */
+    public org.apache.mesos.Protos.Value.ScalarOrBuilder getScalarOrBuilder() {
+      return scalar_;
+    }
+
+    // optional .mesos.Value.Ranges ranges = 4;
+    public static final int RANGES_FIELD_NUMBER = 4;
+    private org.apache.mesos.Protos.Value.Ranges ranges_;
+    /**
+     * <code>optional .mesos.Value.Ranges ranges = 4;</code>
+     */
+    public boolean hasRanges() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional .mesos.Value.Ranges ranges = 4;</code>
+     */
+    public org.apache.mesos.Protos.Value.Ranges getRanges() {
+      return ranges_;
+    }
+    /**
+     * <code>optional .mesos.Value.Ranges ranges = 4;</code>
+     */
+    public org.apache.mesos.Protos.Value.RangesOrBuilder getRangesOrBuilder() {
+      return ranges_;
+    }
+
+    // optional .mesos.Value.Set set = 6;
+    public static final int SET_FIELD_NUMBER = 6;
+    private org.apache.mesos.Protos.Value.Set set_;
+    /**
+     * <code>optional .mesos.Value.Set set = 6;</code>
+     */
+    public boolean hasSet() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional .mesos.Value.Set set = 6;</code>
+     */
+    public org.apache.mesos.Protos.Value.Set getSet() {
+      return set_;
+    }
+    /**
+     * <code>optional .mesos.Value.Set set = 6;</code>
+     */
+    public org.apache.mesos.Protos.Value.SetOrBuilder getSetOrBuilder() {
+      return set_;
+    }
+
+    // optional .mesos.Value.Text text = 5;
+    public static final int TEXT_FIELD_NUMBER = 5;
+    private org.apache.mesos.Protos.Value.Text text_;
+    /**
+     * <code>optional .mesos.Value.Text text = 5;</code>
+     */
+    public boolean hasText() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional .mesos.Value.Text text = 5;</code>
+     */
+    public org.apache.mesos.Protos.Value.Text getText() {
+      return text_;
+    }
+    /**
+     * <code>optional .mesos.Value.Text text = 5;</code>
+     */
+    public org.apache.mesos.Protos.Value.TextOrBuilder getTextOrBuilder() {
+      return text_;
+    }
+
+    private void initFields() {
+      name_ = "";
+      type_ = org.apache.mesos.Protos.Value.Type.SCALAR;
+      scalar_ = org.apache.mesos.Protos.Value.Scalar.getDefaultInstance();
+      ranges_ = org.apache.mesos.Protos.Value.Ranges.getDefaultInstance();
+      set_ = org.apache.mesos.Protos.Value.Set.getDefaultInstance();
+      text_ = org.apache.mesos.Protos.Value.Text.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasName()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasType()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (hasScalar()) {
+        if (!getScalar().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasRanges()) {
+        if (!getRanges().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasText()) {
+        if (!getText().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeEnum(2, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeMessage(3, scalar_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeMessage(4, ranges_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeMessage(5, text_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeMessage(6, set_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(2, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, scalar_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, ranges_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(5, text_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(6, set_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.Attribute parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Attribute parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Attribute parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Attribute parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Attribute parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Attribute parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Attribute parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.Attribute parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Attribute parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Attribute parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.Attribute prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.Attribute}
+     *
+     * <pre>
+     **
+     * Describes an attribute that can be set on a machine. For now,
+     * attributes and resources share the same "value" type, but this may
+     * change in the future and attributes may only be string based.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.AttributeOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_Attribute_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_Attribute_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.Attribute.class, org.apache.mesos.Protos.Attribute.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.Attribute.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getScalarFieldBuilder();
+          getRangesFieldBuilder();
+          getSetFieldBuilder();
+          getTextFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        name_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        type_ = org.apache.mesos.Protos.Value.Type.SCALAR;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        if (scalarBuilder_ == null) {
+          scalar_ = org.apache.mesos.Protos.Value.Scalar.getDefaultInstance();
+        } else {
+          scalarBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        if (rangesBuilder_ == null) {
+          ranges_ = org.apache.mesos.Protos.Value.Ranges.getDefaultInstance();
+        } else {
+          rangesBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        if (setBuilder_ == null) {
+          set_ = org.apache.mesos.Protos.Value.Set.getDefaultInstance();
+        } else {
+          setBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        if (textBuilder_ == null) {
+          text_ = org.apache.mesos.Protos.Value.Text.getDefaultInstance();
+        } else {
+          textBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_Attribute_descriptor;
+      }
+
+      public org.apache.mesos.Protos.Attribute getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.Attribute.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.Attribute build() {
+        org.apache.mesos.Protos.Attribute result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.Attribute buildPartial() {
+        org.apache.mesos.Protos.Attribute result = new org.apache.mesos.Protos.Attribute(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.name_ = name_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.type_ = type_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        if (scalarBuilder_ == null) {
+          result.scalar_ = scalar_;
+        } else {
+          result.scalar_ = scalarBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        if (rangesBuilder_ == null) {
+          result.ranges_ = ranges_;
+        } else {
+          result.ranges_ = rangesBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        if (setBuilder_ == null) {
+          result.set_ = set_;
+        } else {
+          result.set_ = setBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        if (textBuilder_ == null) {
+          result.text_ = text_;
+        } else {
+          result.text_ = textBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.Attribute) {
+          return mergeFrom((org.apache.mesos.Protos.Attribute)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.Attribute other) {
+        if (other == org.apache.mesos.Protos.Attribute.getDefaultInstance()) return this;
+        if (other.hasName()) {
+          bitField0_ |= 0x00000001;
+          name_ = other.name_;
+          onChanged();
+        }
+        if (other.hasType()) {
+          setType(other.getType());
+        }
+        if (other.hasScalar()) {
+          mergeScalar(other.getScalar());
+        }
+        if (other.hasRanges()) {
+          mergeRanges(other.getRanges());
+        }
+        if (other.hasSet()) {
+          mergeSet(other.getSet());
+        }
+        if (other.hasText()) {
+          mergeText(other.getText());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasName()) {
+          
+          return false;
+        }
+        if (!hasType()) {
+          
+          return false;
+        }
+        if (hasScalar()) {
+          if (!getScalar().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasRanges()) {
+          if (!getRanges().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasText()) {
+          if (!getText().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.Attribute parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.Attribute) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string name = 1;
+      private java.lang.Object name_ = "";
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public boolean hasName() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public java.lang.String getName() {
+        java.lang.Object ref = name_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          name_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        java.lang.Object ref = name_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          name_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder setName(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder clearName() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        name_ = getDefaultInstance().getName();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder setNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+
+      // required .mesos.Value.Type type = 2;
+      private org.apache.mesos.Protos.Value.Type type_ = org.apache.mesos.Protos.Value.Type.SCALAR;
+      /**
+       * <code>required .mesos.Value.Type type = 2;</code>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required .mesos.Value.Type type = 2;</code>
+       */
+      public org.apache.mesos.Protos.Value.Type getType() {
+        return type_;
+      }
+      /**
+       * <code>required .mesos.Value.Type type = 2;</code>
+       */
+      public Builder setType(org.apache.mesos.Protos.Value.Type value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000002;
+        type_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required .mesos.Value.Type type = 2;</code>
+       */
+      public Builder clearType() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        type_ = org.apache.mesos.Protos.Value.Type.SCALAR;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.Value.Scalar scalar = 3;
+      private org.apache.mesos.Protos.Value.Scalar scalar_ = org.apache.mesos.Protos.Value.Scalar.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Value.Scalar, org.apache.mesos.Protos.Value.Scalar.Builder, org.apache.mesos.Protos.Value.ScalarOrBuilder> scalarBuilder_;
+      /**
+       * <code>optional .mesos.Value.Scalar scalar = 3;</code>
+       */
+      public boolean hasScalar() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.Value.Scalar scalar = 3;</code>
+       */
+      public org.apache.mesos.Protos.Value.Scalar getScalar() {
+        if (scalarBuilder_ == null) {
+          return scalar_;
+        } else {
+          return scalarBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.Value.Scalar scalar = 3;</code>
+       */
+      public Builder setScalar(org.apache.mesos.Protos.Value.Scalar value) {
+        if (scalarBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          scalar_ = value;
+          onChanged();
+        } else {
+          scalarBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Scalar scalar = 3;</code>
+       */
+      public Builder setScalar(
+          org.apache.mesos.Protos.Value.Scalar.Builder builderForValue) {
+        if (scalarBuilder_ == null) {
+          scalar_ = builderForValue.build();
+          onChanged();
+        } else {
+          scalarBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Scalar scalar = 3;</code>
+       */
+      public Builder mergeScalar(org.apache.mesos.Protos.Value.Scalar value) {
+        if (scalarBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) == 0x00000004) &&
+              scalar_ != org.apache.mesos.Protos.Value.Scalar.getDefaultInstance()) {
+            scalar_ =
+              org.apache.mesos.Protos.Value.Scalar.newBuilder(scalar_).mergeFrom(value).buildPartial();
+          } else {
+            scalar_ = value;
+          }
+          onChanged();
+        } else {
+          scalarBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Scalar scalar = 3;</code>
+       */
+      public Builder clearScalar() {
+        if (scalarBuilder_ == null) {
+          scalar_ = org.apache.mesos.Protos.Value.Scalar.getDefaultInstance();
+          onChanged();
+        } else {
+          scalarBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Scalar scalar = 3;</code>
+       */
+      public org.apache.mesos.Protos.Value.Scalar.Builder getScalarBuilder() {
+        bitField0_ |= 0x00000004;
+        onChanged();
+        return getScalarFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.Value.Scalar scalar = 3;</code>
+       */
+      public org.apache.mesos.Protos.Value.ScalarOrBuilder getScalarOrBuilder() {
+        if (scalarBuilder_ != null) {
+          return scalarBuilder_.getMessageOrBuilder();
+        } else {
+          return scalar_;
+        }
+      }
+      /**
+       * <code>optional .mesos.Value.Scalar scalar = 3;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Value.Scalar, org.apache.mesos.Protos.Value.Scalar.Builder, org.apache.mesos.Protos.Value.ScalarOrBuilder> 
+          getScalarFieldBuilder() {
+        if (scalarBuilder_ == null) {
+          scalarBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Value.Scalar, org.apache.mesos.Protos.Value.Scalar.Builder, org.apache.mesos.Protos.Value.ScalarOrBuilder>(
+                  scalar_,
+                  getParentForChildren(),
+                  isClean());
+          scalar_ = null;
+        }
+        return scalarBuilder_;
+      }
+
+      // optional .mesos.Value.Ranges ranges = 4;
+      private org.apache.mesos.Protos.Value.Ranges ranges_ = org.apache.mesos.Protos.Value.Ranges.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Value.Ranges, org.apache.mesos.Protos.Value.Ranges.Builder, org.apache.mesos.Protos.Value.RangesOrBuilder> rangesBuilder_;
+      /**
+       * <code>optional .mesos.Value.Ranges ranges = 4;</code>
+       */
+      public boolean hasRanges() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.Value.Ranges ranges = 4;</code>
+       */
+      public org.apache.mesos.Protos.Value.Ranges getRanges() {
+        if (rangesBuilder_ == null) {
+          return ranges_;
+        } else {
+          return rangesBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.Value.Ranges ranges = 4;</code>
+       */
+      public Builder setRanges(org.apache.mesos.Protos.Value.Ranges value) {
+        if (rangesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ranges_ = value;
+          onChanged();
+        } else {
+          rangesBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Ranges ranges = 4;</code>
+       */
+      public Builder setRanges(
+          org.apache.mesos.Protos.Value.Ranges.Builder builderForValue) {
+        if (rangesBuilder_ == null) {
+          ranges_ = builderForValue.build();
+          onChanged();
+        } else {
+          rangesBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Ranges ranges = 4;</code>
+       */
+      public Builder mergeRanges(org.apache.mesos.Protos.Value.Ranges value) {
+        if (rangesBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008) &&
+              ranges_ != org.apache.mesos.Protos.Value.Ranges.getDefaultInstance()) {
+            ranges_ =
+              org.apache.mesos.Protos.Value.Ranges.newBuilder(ranges_).mergeFrom(value).buildPartial();
+          } else {
+            ranges_ = value;
+          }
+          onChanged();
+        } else {
+          rangesBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Ranges ranges = 4;</code>
+       */
+      public Builder clearRanges() {
+        if (rangesBuilder_ == null) {
+          ranges_ = org.apache.mesos.Protos.Value.Ranges.getDefaultInstance();
+          onChanged();
+        } else {
+          rangesBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Ranges ranges = 4;</code>
+       */
+      public org.apache.mesos.Protos.Value.Ranges.Builder getRangesBuilder() {
+        bitField0_ |= 0x00000008;
+        onChanged();
+        return getRangesFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.Value.Ranges ranges = 4;</code>
+       */
+      public org.apache.mesos.Protos.Value.RangesOrBuilder getRangesOrBuilder() {
+        if (rangesBuilder_ != null) {
+          return rangesBuilder_.getMessageOrBuilder();
+        } else {
+          return ranges_;
+        }
+      }
+      /**
+       * <code>optional .mesos.Value.Ranges ranges = 4;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Value.Ranges, org.apache.mesos.Protos.Value.Ranges.Builder, org.apache.mesos.Protos.Value.RangesOrBuilder> 
+          getRangesFieldBuilder() {
+        if (rangesBuilder_ == null) {
+          rangesBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Value.Ranges, org.apache.mesos.Protos.Value.Ranges.Builder, org.apache.mesos.Protos.Value.RangesOrBuilder>(
+                  ranges_,
+                  getParentForChildren(),
+                  isClean());
+          ranges_ = null;
+        }
+        return rangesBuilder_;
+      }
+
+      // optional .mesos.Value.Set set = 6;
+      private org.apache.mesos.Protos.Value.Set set_ = org.apache.mesos.Protos.Value.Set.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Value.Set, org.apache.mesos.Protos.Value.Set.Builder, org.apache.mesos.Protos.Value.SetOrBuilder> setBuilder_;
+      /**
+       * <code>optional .mesos.Value.Set set = 6;</code>
+       */
+      public boolean hasSet() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional .mesos.Value.Set set = 6;</code>
+       */
+      public org.apache.mesos.Protos.Value.Set getSet() {
+        if (setBuilder_ == null) {
+          return set_;
+        } else {
+          return setBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.Value.Set set = 6;</code>
+       */
+      public Builder setSet(org.apache.mesos.Protos.Value.Set value) {
+        if (setBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          set_ = value;
+          onChanged();
+        } else {
+          setBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Set set = 6;</code>
+       */
+      public Builder setSet(
+          org.apache.mesos.Protos.Value.Set.Builder builderForValue) {
+        if (setBuilder_ == null) {
+          set_ = builderForValue.build();
+          onChanged();
+        } else {
+          setBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Set set = 6;</code>
+       */
+      public Builder mergeSet(org.apache.mesos.Protos.Value.Set value) {
+        if (setBuilder_ == null) {
+          if (((bitField0_ & 0x00000010) == 0x00000010) &&
+              set_ != org.apache.mesos.Protos.Value.Set.getDefaultInstance()) {
+            set_ =
+              org.apache.mesos.Protos.Value.Set.newBuilder(set_).mergeFrom(value).buildPartial();
+          } else {
+            set_ = value;
+          }
+          onChanged();
+        } else {
+          setBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Set set = 6;</code>
+       */
+      public Builder clearSet() {
+        if (setBuilder_ == null) {
+          set_ = org.apache.mesos.Protos.Value.Set.getDefaultInstance();
+          onChanged();
+        } else {
+          setBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Set set = 6;</code>
+       */
+      public org.apache.mesos.Protos.Value.Set.Builder getSetBuilder() {
+        bitField0_ |= 0x00000010;
+        onChanged();
+        return getSetFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.Value.Set set = 6;</code>
+       */
+      public org.apache.mesos.Protos.Value.SetOrBuilder getSetOrBuilder() {
+        if (setBuilder_ != null) {
+          return setBuilder_.getMessageOrBuilder();
+        } else {
+          return set_;
+        }
+      }
+      /**
+       * <code>optional .mesos.Value.Set set = 6;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Value.Set, org.apache.mesos.Protos.Value.Set.Builder, org.apache.mesos.Protos.Value.SetOrBuilder> 
+          getSetFieldBuilder() {
+        if (setBuilder_ == null) {
+          setBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Value.Set, org.apache.mesos.Protos.Value.Set.Builder, org.apache.mesos.Protos.Value.SetOrBuilder>(
+                  set_,
+                  getParentForChildren(),
+                  isClean());
+          set_ = null;
+        }
+        return setBuilder_;
+      }
+
+      // optional .mesos.Value.Text text = 5;
+      private org.apache.mesos.Protos.Value.Text text_ = org.apache.mesos.Protos.Value.Text.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Value.Text, org.apache.mesos.Protos.Value.Text.Builder, org.apache.mesos.Protos.Value.TextOrBuilder> textBuilder_;
+      /**
+       * <code>optional .mesos.Value.Text text = 5;</code>
+       */
+      public boolean hasText() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional .mesos.Value.Text text = 5;</code>
+       */
+      public org.apache.mesos.Protos.Value.Text getText() {
+        if (textBuilder_ == null) {
+          return text_;
+        } else {
+          return textBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.Value.Text text = 5;</code>
+       */
+      public Builder setText(org.apache.mesos.Protos.Value.Text value) {
+        if (textBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          text_ = value;
+          onChanged();
+        } else {
+          textBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Text text = 5;</code>
+       */
+      public Builder setText(
+          org.apache.mesos.Protos.Value.Text.Builder builderForValue) {
+        if (textBuilder_ == null) {
+          text_ = builderForValue.build();
+          onChanged();
+        } else {
+          textBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Text text = 5;</code>
+       */
+      public Builder mergeText(org.apache.mesos.Protos.Value.Text value) {
+        if (textBuilder_ == null) {
+          if (((bitField0_ & 0x00000020) == 0x00000020) &&
+              text_ != org.apache.mesos.Protos.Value.Text.getDefaultInstance()) {
+            text_ =
+              org.apache.mesos.Protos.Value.Text.newBuilder(text_).mergeFrom(value).buildPartial();
+          } else {
+            text_ = value;
+          }
+          onChanged();
+        } else {
+          textBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Text text = 5;</code>
+       */
+      public Builder clearText() {
+        if (textBuilder_ == null) {
+          text_ = org.apache.mesos.Protos.Value.Text.getDefaultInstance();
+          onChanged();
+        } else {
+          textBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Text text = 5;</code>
+       */
+      public org.apache.mesos.Protos.Value.Text.Builder getTextBuilder() {
+        bitField0_ |= 0x00000020;
+        onChanged();
+        return getTextFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.Value.Text text = 5;</code>
+       */
+      public org.apache.mesos.Protos.Value.TextOrBuilder getTextOrBuilder() {
+        if (textBuilder_ != null) {
+          return textBuilder_.getMessageOrBuilder();
+        } else {
+          return text_;
+        }
+      }
+      /**
+       * <code>optional .mesos.Value.Text text = 5;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Value.Text, org.apache.mesos.Protos.Value.Text.Builder, org.apache.mesos.Protos.Value.TextOrBuilder> 
+          getTextFieldBuilder() {
+        if (textBuilder_ == null) {
+          textBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Value.Text, org.apache.mesos.Protos.Value.Text.Builder, org.apache.mesos.Protos.Value.TextOrBuilder>(
+                  text_,
+                  getParentForChildren(),
+                  isClean());
+          text_ = null;
+        }
+        return textBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.Attribute)
+    }
+
+    static {
+      defaultInstance = new Attribute(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.Attribute)
+  }
+
+  public interface ResourceOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional .mesos.ResourceProviderID provider_id = 12;
+    /**
+     * <code>optional .mesos.ResourceProviderID provider_id = 12;</code>
+     */
+    boolean hasProviderId();
+    /**
+     * <code>optional .mesos.ResourceProviderID provider_id = 12;</code>
+     */
+    org.apache.mesos.Protos.ResourceProviderID getProviderId();
+    /**
+     * <code>optional .mesos.ResourceProviderID provider_id = 12;</code>
+     */
+    org.apache.mesos.Protos.ResourceProviderIDOrBuilder getProviderIdOrBuilder();
+
+    // required string name = 1;
+    /**
+     * <code>required string name = 1;</code>
+     */
+    boolean hasName();
+    /**
+     * <code>required string name = 1;</code>
+     */
+    java.lang.String getName();
+    /**
+     * <code>required string name = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getNameBytes();
+
+    // required .mesos.Value.Type type = 2;
+    /**
+     * <code>required .mesos.Value.Type type = 2;</code>
+     */
+    boolean hasType();
+    /**
+     * <code>required .mesos.Value.Type type = 2;</code>
+     */
+    org.apache.mesos.Protos.Value.Type getType();
+
+    // optional .mesos.Value.Scalar scalar = 3;
+    /**
+     * <code>optional .mesos.Value.Scalar scalar = 3;</code>
+     */
+    boolean hasScalar();
+    /**
+     * <code>optional .mesos.Value.Scalar scalar = 3;</code>
+     */
+    org.apache.mesos.Protos.Value.Scalar getScalar();
+    /**
+     * <code>optional .mesos.Value.Scalar scalar = 3;</code>
+     */
+    org.apache.mesos.Protos.Value.ScalarOrBuilder getScalarOrBuilder();
+
+    // optional .mesos.Value.Ranges ranges = 4;
+    /**
+     * <code>optional .mesos.Value.Ranges ranges = 4;</code>
+     */
+    boolean hasRanges();
+    /**
+     * <code>optional .mesos.Value.Ranges ranges = 4;</code>
+     */
+    org.apache.mesos.Protos.Value.Ranges getRanges();
+    /**
+     * <code>optional .mesos.Value.Ranges ranges = 4;</code>
+     */
+    org.apache.mesos.Protos.Value.RangesOrBuilder getRangesOrBuilder();
+
+    // optional .mesos.Value.Set set = 5;
+    /**
+     * <code>optional .mesos.Value.Set set = 5;</code>
+     */
+    boolean hasSet();
+    /**
+     * <code>optional .mesos.Value.Set set = 5;</code>
+     */
+    org.apache.mesos.Protos.Value.Set getSet();
+    /**
+     * <code>optional .mesos.Value.Set set = 5;</code>
+     */
+    org.apache.mesos.Protos.Value.SetOrBuilder getSetOrBuilder();
+
+    // optional string role = 6 [default = "*", deprecated = true];
+    /**
+     * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+     *
+     * <pre>
+     * The role that this resource is reserved for. If "*", this indicates
+     * that the resource is unreserved. Otherwise, the resource will only
+     * be offered to frameworks that belong to this role.
+     *
+     * NOTE: Frameworks must not set this field if `reservations` is set.
+     *       See the 'Resource Format' section for more details.
+     *
+     * TODO(mpark): Deprecate once `reservations` is no longer experimental.
+     * </pre>
+     */
+    @java.lang.Deprecated boolean hasRole();
+    /**
+     * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+     *
+     * <pre>
+     * The role that this resource is reserved for. If "*", this indicates
+     * that the resource is unreserved. Otherwise, the resource will only
+     * be offered to frameworks that belong to this role.
+     *
+     * NOTE: Frameworks must not set this field if `reservations` is set.
+     *       See the 'Resource Format' section for more details.
+     *
+     * TODO(mpark): Deprecate once `reservations` is no longer experimental.
+     * </pre>
+     */
+    @java.lang.Deprecated java.lang.String getRole();
+    /**
+     * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+     *
+     * <pre>
+     * The role that this resource is reserved for. If "*", this indicates
+     * that the resource is unreserved. Otherwise, the resource will only
+     * be offered to frameworks that belong to this role.
+     *
+     * NOTE: Frameworks must not set this field if `reservations` is set.
+     *       See the 'Resource Format' section for more details.
+     *
+     * TODO(mpark): Deprecate once `reservations` is no longer experimental.
+     * </pre>
+     */
+    @java.lang.Deprecated com.google.protobuf.ByteString
+        getRoleBytes();
+
+    // optional .mesos.Resource.AllocationInfo allocation_info = 11;
+    /**
+     * <code>optional .mesos.Resource.AllocationInfo allocation_info = 11;</code>
+     */
+    boolean hasAllocationInfo();
+    /**
+     * <code>optional .mesos.Resource.AllocationInfo allocation_info = 11;</code>
+     */
+    org.apache.mesos.Protos.Resource.AllocationInfo getAllocationInfo();
+    /**
+     * <code>optional .mesos.Resource.AllocationInfo allocation_info = 11;</code>
+     */
+    org.apache.mesos.Protos.Resource.AllocationInfoOrBuilder getAllocationInfoOrBuilder();
+
+    // optional .mesos.Resource.ReservationInfo reservation = 8;
+    /**
+     * <code>optional .mesos.Resource.ReservationInfo reservation = 8;</code>
+     *
+     * <pre>
+     * If this is set, this resource was dynamically reserved by an
+     * operator or a framework. Otherwise, this resource is either unreserved
+     * or statically reserved by an operator via the --resources flag.
+     *
+     * NOTE: Frameworks must not set this field if `reservations` is set.
+     *       See the 'Resource Format' section for more details.
+     *
+     * TODO(mpark): Deprecate once `reservations` is no longer experimental.
+     * </pre>
+     */
+    boolean hasReservation();
+    /**
+     * <code>optional .mesos.Resource.ReservationInfo reservation = 8;</code>
+     *
+     * <pre>
+     * If this is set, this resource was dynamically reserved by an
+     * operator or a framework. Otherwise, this resource is either unreserved
+     * or statically reserved by an operator via the --resources flag.
+     *
+     * NOTE: Frameworks must not set this field if `reservations` is set.
+     *       See the 'Resource Format' section for more details.
+     *
+     * TODO(mpark): Deprecate once `reservations` is no longer experimental.
+     * </pre>
+     */
+    org.apache.mesos.Protos.Resource.ReservationInfo getReservation();
+    /**
+     * <code>optional .mesos.Resource.ReservationInfo reservation = 8;</code>
+     *
+     * <pre>
+     * If this is set, this resource was dynamically reserved by an
+     * operator or a framework. Otherwise, this resource is either unreserved
+     * or statically reserved by an operator via the --resources flag.
+     *
+     * NOTE: Frameworks must not set this field if `reservations` is set.
+     *       See the 'Resource Format' section for more details.
+     *
+     * TODO(mpark): Deprecate once `reservations` is no longer experimental.
+     * </pre>
+     */
+    org.apache.mesos.Protos.Resource.ReservationInfoOrBuilder getReservationOrBuilder();
+
+    // repeated .mesos.Resource.ReservationInfo reservations = 13;
+    /**
+     * <code>repeated .mesos.Resource.ReservationInfo reservations = 13;</code>
+     *
+     * <pre>
+     * The stack of reservations. If this field is empty, it indicates that this
+     * resource is unreserved. Otherwise, the resource is reserved. The first
+     * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+     * have `DYNAMIC`. One can create a new reservation on top of an existing
+     * one by pushing a new `ReservationInfo` to the back. The last
+     * `ReservationInfo` in this stack is the "current" reservation. The new
+     * reservation's role must be a child of the current reservation's role.
+     *
+     * NOTE: Frameworks must not set this field if `reservation` is set.
+     *       See the 'Resource Format' section for more details.
+     *
+     * TODO(mpark): Deprecate `role` and `reservation` once this is stable.
+     * </pre>
+     */
+    java.util.List<org.apache.mesos.Protos.Resource.ReservationInfo> 
+        getReservationsList();
+    /**
+     * <code>repeated .mesos.Resource.ReservationInfo reservations = 13;</code>
+     *
+     * <pre>
+     * The stack of reservations. If this field is empty, it indicates that this
+     * resource is unreserved. Otherwise, the resource is reserved. The first
+     * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+     * have `DYNAMIC`. One can create a new reservation on top of an existing
+     * one by pushing a new `ReservationInfo` to the back. The last
+     * `ReservationInfo` in this stack is the "current" reservation. The new
+     * reservation's role must be a child of the current reservation's role.
+     *
+     * NOTE: Frameworks must not set this field if `reservation` is set.
+     *       See the 'Resource Format' section for more details.
+     *
+     * TODO(mpark): Deprecate `role` and `reservation` once this is stable.
+     * </pre>
+     */
+    org.apache.mesos.Protos.Resource.ReservationInfo getReservations(int index);
+    /**
+     * <code>repeated .mesos.Resource.ReservationInfo reservations = 13;</code>
+     *
+     * <pre>
+     * The stack of reservations. If this field is empty, it indicates that this
+     * resource is unreserved. Otherwise, the resource is reserved. The first
+     * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+     * have `DYNAMIC`. One can create a new reservation on top of an existing
+     * one by pushing a new `ReservationInfo` to the back. The last
+     * `ReservationInfo` in this stack is the "current" reservation. The new
+     * reservation's role must be a child of the current reservation's role.
+     *
+     * NOTE: Frameworks must not set this field if `reservation` is set.
+     *       See the 'Resource Format' section for more details.
+     *
+     * TODO(mpark): Deprecate `role` and `reservation` once this is stable.
+     * </pre>
+     */
+    int getReservationsCount();
+    /**
+     * <code>repeated .mesos.Resource.ReservationInfo reservations = 13;</code>
+     *
+     * <pre>
+     * The stack of reservations. If this field is empty, it indicates that this
+     * resource is unreserved. Otherwise, the resource is reserved. The first
+     * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+     * have `DYNAMIC`. One can create a new reservation on top of an existing
+     * one by pushing a new `ReservationInfo` to the back. The last
+     * `ReservationInfo` in this stack is the "current" reservation. The new
+     * reservation's role must be a child of the current reservation's role.
+     *
+     * NOTE: Frameworks must not set this field if `reservation` is set.
+     *       See the 'Resource Format' section for more details.
+     *
+     * TODO(mpark): Deprecate `role` and `reservation` once this is stable.
+     * </pre>
+     */
+    java.util.List<? extends org.apache.mesos.Protos.Resource.ReservationInfoOrBuilder> 
+        getReservationsOrBuilderList();
+    /**
+     * <code>repeated .mesos.Resource.ReservationInfo reservations = 13;</code>
+     *
+     * <pre>
+     * The stack of reservations. If this field is empty, it indicates that this
+     * resource is unreserved. Otherwise, the resource is reserved. The first
+     * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+     * have `DYNAMIC`. One can create a new reservation on top of an existing
+     * one by pushing a new `ReservationInfo` to the back. The last
+     * `ReservationInfo` in this stack is the "current" reservation. The new
+     * reservation's role must be a child of the current reservation's role.
+     *
+     * NOTE: Frameworks must not set this field if `reservation` is set.
+     *       See the 'Resource Format' section for more details.
+     *
+     * TODO(mpark): Deprecate `role` and `reservation` once this is stable.
+     * </pre>
+     */
+    org.apache.mesos.Protos.Resource.ReservationInfoOrBuilder getReservationsOrBuilder(
+        int index);
+
+    // optional .mesos.Resource.DiskInfo disk = 7;
+    /**
+     * <code>optional .mesos.Resource.DiskInfo disk = 7;</code>
+     */
+    boolean hasDisk();
+    /**
+     * <code>optional .mesos.Resource.DiskInfo disk = 7;</code>
+     */
+    org.apache.mesos.Protos.Resource.DiskInfo getDisk();
+    /**
+     * <code>optional .mesos.Resource.DiskInfo disk = 7;</code>
+     */
+    org.apache.mesos.Protos.Resource.DiskInfoOrBuilder getDiskOrBuilder();
+
+    // optional .mesos.Resource.RevocableInfo revocable = 9;
+    /**
+     * <code>optional .mesos.Resource.RevocableInfo revocable = 9;</code>
+     *
+     * <pre>
+     * If this is set, the resources are revocable, i.e., any tasks or
+     * executors launched using these resources could get preempted or
+     * throttled at any time. This could be used by frameworks to run
+     * best effort tasks that do not need strict uptime or performance
+     * guarantees. Note that if this is set, 'disk' or 'reservation'
+     * cannot be set.
+     * </pre>
+     */
+    boolean hasRevocable();
+    /**
+     * <code>optional .mesos.Resource.RevocableInfo revocable = 9;</code>
+     *
+     * <pre>
+     * If this is set, the resources are revocable, i.e., any tasks or
+     * executors launched using these resources could get preempted or
+     * throttled at any time. This could be used by frameworks to run
+     * best effort tasks that do not need strict uptime or performance
+     * guarantees. Note that if this is set, 'disk' or 'reservation'
+     * cannot be set.
+     * </pre>
+     */
+    org.apache.mesos.Protos.Resource.RevocableInfo getRevocable();
+    /**
+     * <code>optional .mesos.Resource.RevocableInfo revocable = 9;</code>
+     *
+     * <pre>
+     * If this is set, the resources are revocable, i.e., any tasks or
+     * executors launched using these resources could get preempted or
+     * throttled at any time. This could be used by frameworks to run
+     * best effort tasks that do not need strict uptime or performance
+     * guarantees. Note that if this is set, 'disk' or 'reservation'
+     * cannot be set.
+     * </pre>
+     */
+    org.apache.mesos.Protos.Resource.RevocableInfoOrBuilder getRevocableOrBuilder();
+
+    // optional .mesos.Resource.SharedInfo shared = 10;
+    /**
+     * <code>optional .mesos.Resource.SharedInfo shared = 10;</code>
+     *
+     * <pre>
+     * If this is set, the resources are shared, i.e. multiple tasks
+     * can be launched using this resource and all of them shall refer
+     * to the same physical resource on the cluster. Note that only
+     * persistent volumes can be shared currently.
+     * </pre>
+     */
+    boolean hasShared();
+    /**
+     * <code>optional .mesos.Resource.SharedInfo shared = 10;</code>
+     *
+     * <pre>
+     * If this is set, the resources are shared, i.e. multiple tasks
+     * can be launched using this resource and all of them shall refer
+     * to the same physical resource on the cluster. Note that only
+     * persistent volumes can be shared currently.
+     * </pre>
+     */
+    org.apache.mesos.Protos.Resource.SharedInfo getShared();
+    /**
+     * <code>optional .mesos.Resource.SharedInfo shared = 10;</code>
+     *
+     * <pre>
+     * If this is set, the resources are shared, i.e. multiple tasks
+     * can be launched using this resource and all of them shall refer
+     * to the same physical resource on the cluster. Note that only
+     * persistent volumes can be shared currently.
+     * </pre>
+     */
+    org.apache.mesos.Protos.Resource.SharedInfoOrBuilder getSharedOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.Resource}
+   *
+   * <pre>
+   **
+   * Describes a resource from a resource provider. The `name` field is
+   * a string like "cpus" or "mem" that indicates which kind of resource
+   * this is; the rest of the fields describe the properties of the
+   * resource. A resource can take on one of three types: scalar
+   * (double), a list of finite and discrete ranges (e.g., [1-10,
+   * 20-30]), or a set of items. A resource is described using the
+   * standard protocol buffer "union" trick.
+   *
+   * Note that "disk" and "mem" resources are scalar values expressed in
+   * megabytes. Fractional "cpus" values are allowed (e.g., "0.5"),
+   * which correspond to partial shares of a CPU.
+   * </pre>
+   */
+  public static final class Resource extends
+      com.google.protobuf.GeneratedMessage
+      implements ResourceOrBuilder {
+    // Use Resource.newBuilder() to construct.
+    private Resource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Resource(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Resource defaultInstance;
+    public static Resource getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Resource getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Resource(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000002;
+              name_ = input.readBytes();
+              break;
+            }
+            case 16: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.Protos.Value.Type value = org.apache.mesos.Protos.Value.Type.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(2, rawValue);
+              } else {
+                bitField0_ |= 0x00000004;
+                type_ = value;
+              }
+              break;
+            }
+            case 26: {
+              org.apache.mesos.Protos.Value.Scalar.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                subBuilder = scalar_.toBuilder();
+              }
+              scalar_ = input.readMessage(org.apache.mesos.Protos.Value.Scalar.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(scalar_);
+                scalar_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000008;
+              break;
+            }
+            case 34: {
+              org.apache.mesos.Protos.Value.Ranges.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000010) == 0x00000010)) {
+                subBuilder = ranges_.toBuilder();
+              }
+              ranges_ = input.readMessage(org.apache.mesos.Protos.Value.Ranges.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(ranges_);
+                ranges_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000010;
+              break;
+            }
+            case 42: {
+              org.apache.mesos.Protos.Value.Set.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000020) == 0x00000020)) {
+                subBuilder = set_.toBuilder();
+              }
+              set_ = input.readMessage(org.apache.mesos.Protos.Value.Set.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(set_);
+                set_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000020;
+              break;
+            }
+            case 50: {
+              bitField0_ |= 0x00000040;
+              role_ = input.readBytes();
+              break;
+            }
+            case 58: {
+              org.apache.mesos.Protos.Resource.DiskInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000200) == 0x00000200)) {
+                subBuilder = disk_.toBuilder();
+              }
+              disk_ = input.readMessage(org.apache.mesos.Protos.Resource.DiskInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(disk_);
+                disk_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000200;
+              break;
+            }
+            case 66: {
+              org.apache.mesos.Protos.Resource.ReservationInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000100) == 0x00000100)) {
+                subBuilder = reservation_.toBuilder();
+              }
+              reservation_ = input.readMessage(org.apache.mesos.Protos.Resource.ReservationInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(reservation_);
+                reservation_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000100;
+              break;
+            }
+            case 74: {
+              org.apache.mesos.Protos.Resource.RevocableInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000400) == 0x00000400)) {
+                subBuilder = revocable_.toBuilder();
+              }
+              revocable_ = input.readMessage(org.apache.mesos.Protos.Resource.RevocableInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(revocable_);
+                revocable_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000400;
+              break;
+            }
+            case 82: {
+              org.apache.mesos.Protos.Resource.SharedInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000800) == 0x00000800)) {
+                subBuilder = shared_.toBuilder();
+              }
+              shared_ = input.readMessage(org.apache.mesos.Protos.Resource.SharedInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(shared_);
+                shared_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000800;
+              break;
+            }
+            case 90: {
+              org.apache.mesos.Protos.Resource.AllocationInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000080) == 0x00000080)) {
+                subBuilder = allocationInfo_.toBuilder();
+              }
+              allocationInfo_ = input.readMessage(org.apache.mesos.Protos.Resource.AllocationInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(allocationInfo_);
+                allocationInfo_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000080;
+              break;
+            }
+            case 98: {
+              org.apache.mesos.Protos.ResourceProviderID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                subBuilder = providerId_.toBuilder();
+              }
+              providerId_ = input.readMessage(org.apache.mesos.Protos.ResourceProviderID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(providerId_);
+                providerId_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+            case 106: {
+              if (!((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
+                reservations_ = new java.util.ArrayList<org.apache.mesos.Protos.Resource.ReservationInfo>();
+                mutable_bitField0_ |= 0x00000200;
+              }
+              reservations_.add(input.readMessage(org.apache.mesos.Protos.Resource.ReservationInfo.PARSER, extensionRegistry));
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
+          reservations_ = java.util.Collections.unmodifiableList(reservations_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_Resource_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_Resource_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.Resource.class, org.apache.mesos.Protos.Resource.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Resource> PARSER =
+        new com.google.protobuf.AbstractParser<Resource>() {
+      public Resource parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Resource(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Resource> getParserForType() {
+      return PARSER;
+    }
+
+    public interface AllocationInfoOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // optional string role = 1;
+      /**
+       * <code>optional string role = 1;</code>
+       *
+       * <pre>
+       * If set, this resource is allocated to a role. Note that in the
+       * future, this may be unset and the scheduler may be responsible
+       * for allocating to one of its roles.
+       * </pre>
+       */
+      boolean hasRole();
+      /**
+       * <code>optional string role = 1;</code>
+       *
+       * <pre>
+       * If set, this resource is allocated to a role. Note that in the
+       * future, this may be unset and the scheduler may be responsible
+       * for allocating to one of its roles.
+       * </pre>
+       */
+      java.lang.String getRole();
+      /**
+       * <code>optional string role = 1;</code>
+       *
+       * <pre>
+       * If set, this resource is allocated to a role. Note that in the
+       * future, this may be unset and the scheduler may be responsible
+       * for allocating to one of its roles.
+       * </pre>
+       */
+      com.google.protobuf.ByteString
+          getRoleBytes();
+    }
+    /**
+     * Protobuf type {@code mesos.Resource.AllocationInfo}
+     *
+     * <pre>
+     * This was initially introduced to support MULTI_ROLE capable
+     * frameworks. Frameworks that are not MULTI_ROLE capable can
+     * continue to assume that the offered resources are allocated
+     * to their role.
+     * </pre>
+     */
+    public static final class AllocationInfo extends
+        com.google.protobuf.GeneratedMessage
+        implements AllocationInfoOrBuilder {
+      // Use AllocationInfo.newBuilder() to construct.
+      private AllocationInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private AllocationInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final AllocationInfo defaultInstance;
+      public static AllocationInfo getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public AllocationInfo getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private AllocationInfo(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                bitField0_ |= 0x00000001;
+                role_ = input.readBytes();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_Resource_AllocationInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_Resource_AllocationInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.Resource.AllocationInfo.class, org.apache.mesos.Protos.Resource.AllocationInfo.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<AllocationInfo> PARSER =
+          new com.google.protobuf.AbstractParser<AllocationInfo>() {
+        public AllocationInfo parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new AllocationInfo(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<AllocationInfo> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // optional string role = 1;
+      public static final int ROLE_FIELD_NUMBER = 1;
+      private java.lang.Object role_;
+      /**
+       * <code>optional string role = 1;</code>
+       *
+       * <pre>
+       * If set, this resource is allocated to a role. Note that in the
+       * future, this may be unset and the scheduler may be responsible
+       * for allocating to one of its roles.
+       * </pre>
+       */
+      public boolean hasRole() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional string role = 1;</code>
+       *
+       * <pre>
+       * If set, this resource is allocated to a role. Note that in the
+       * future, this may be unset and the scheduler may be responsible
+       * for allocating to one of its roles.
+       * </pre>
+       */
+      public java.lang.String getRole() {
+        java.lang.Object ref = role_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            role_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>optional string role = 1;</code>
+       *
+       * <pre>
+       * If set, this resource is allocated to a role. Note that in the
+       * future, this may be unset and the scheduler may be responsible
+       * for allocating to one of its roles.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getRoleBytes() {
+        java.lang.Object ref = role_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          role_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      private void initFields() {
+        role_ = "";
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeBytes(1, getRoleBytes());
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(1, getRoleBytes());
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.Protos.Resource.AllocationInfo parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.Resource.AllocationInfo parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Resource.AllocationInfo parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.Resource.AllocationInfo parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Resource.AllocationInfo parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.Resource.AllocationInfo parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Resource.AllocationInfo parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.Protos.Resource.AllocationInfo parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Resource.AllocationInfo parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.Resource.AllocationInfo parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.Protos.Resource.AllocationInfo prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.Resource.AllocationInfo}
+       *
+       * <pre>
+       * This was initially introduced to support MULTI_ROLE capable
+       * frameworks. Frameworks that are not MULTI_ROLE capable can
+       * continue to assume that the offered resources are allocated
+       * to their role.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.Protos.Resource.AllocationInfoOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_Resource_AllocationInfo_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_Resource_AllocationInfo_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.Resource.AllocationInfo.class, org.apache.mesos.Protos.Resource.AllocationInfo.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.Protos.Resource.AllocationInfo.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          role_ = "";
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.Protos.internal_static_mesos_Resource_AllocationInfo_descriptor;
+        }
+
+        public org.apache.mesos.Protos.Resource.AllocationInfo getDefaultInstanceForType() {
+          return org.apache.mesos.Protos.Resource.AllocationInfo.getDefaultInstance();
+        }
+
+        public org.apache.mesos.Protos.Resource.AllocationInfo build() {
+          org.apache.mesos.Protos.Resource.AllocationInfo result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.Protos.Resource.AllocationInfo buildPartial() {
+          org.apache.mesos.Protos.Resource.AllocationInfo result = new org.apache.mesos.Protos.Resource.AllocationInfo(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.role_ = role_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.Protos.Resource.AllocationInfo) {
+            return mergeFrom((org.apache.mesos.Protos.Resource.AllocationInfo)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.Protos.Resource.AllocationInfo other) {
+          if (other == org.apache.mesos.Protos.Resource.AllocationInfo.getDefaultInstance()) return this;
+          if (other.hasRole()) {
+            bitField0_ |= 0x00000001;
+            role_ = other.role_;
+            onChanged();
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.Protos.Resource.AllocationInfo parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.Protos.Resource.AllocationInfo) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // optional string role = 1;
+        private java.lang.Object role_ = "";
+        /**
+         * <code>optional string role = 1;</code>
+         *
+         * <pre>
+         * If set, this resource is allocated to a role. Note that in the
+         * future, this may be unset and the scheduler may be responsible
+         * for allocating to one of its roles.
+         * </pre>
+         */
+        public boolean hasRole() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional string role = 1;</code>
+         *
+         * <pre>
+         * If set, this resource is allocated to a role. Note that in the
+         * future, this may be unset and the scheduler may be responsible
+         * for allocating to one of its roles.
+         * </pre>
+         */
+        public java.lang.String getRole() {
+          java.lang.Object ref = role_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            role_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>optional string role = 1;</code>
+         *
+         * <pre>
+         * If set, this resource is allocated to a role. Note that in the
+         * future, this may be unset and the scheduler may be responsible
+         * for allocating to one of its roles.
+         * </pre>
+         */
+        public com.google.protobuf.ByteString
+            getRoleBytes() {
+          java.lang.Object ref = role_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            role_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>optional string role = 1;</code>
+         *
+         * <pre>
+         * If set, this resource is allocated to a role. Note that in the
+         * future, this may be unset and the scheduler may be responsible
+         * for allocating to one of its roles.
+         * </pre>
+         */
+        public Builder setRole(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          role_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string role = 1;</code>
+         *
+         * <pre>
+         * If set, this resource is allocated to a role. Note that in the
+         * future, this may be unset and the scheduler may be responsible
+         * for allocating to one of its roles.
+         * </pre>
+         */
+        public Builder clearRole() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          role_ = getDefaultInstance().getRole();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string role = 1;</code>
+         *
+         * <pre>
+         * If set, this resource is allocated to a role. Note that in the
+         * future, this may be unset and the scheduler may be responsible
+         * for allocating to one of its roles.
+         * </pre>
+         */
+        public Builder setRoleBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          role_ = value;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.Resource.AllocationInfo)
+      }
+
+      static {
+        defaultInstance = new AllocationInfo(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.Resource.AllocationInfo)
+    }
+
+    public interface ReservationInfoOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // optional .mesos.Resource.ReservationInfo.Type type = 4;
+      /**
+       * <code>optional .mesos.Resource.ReservationInfo.Type type = 4;</code>
+       *
+       * <pre>
+       * The type of this reservation.
+       *
+       * NOTE: This field must not be set for `Resource.reservation`.
+       *       See the 'Resource Format' section for more details.
+       * </pre>
+       */
+      boolean hasType();
+      /**
+       * <code>optional .mesos.Resource.ReservationInfo.Type type = 4;</code>
+       *
+       * <pre>
+       * The type of this reservation.
+       *
+       * NOTE: This field must not be set for `Resource.reservation`.
+       *       See the 'Resource Format' section for more details.
+       * </pre>
+       */
+      org.apache.mesos.Protos.Resource.ReservationInfo.Type getType();
+
+      // optional string role = 3;
+      /**
+       * <code>optional string role = 3;</code>
+       *
+       * <pre>
+       * The role to which this reservation is made for.
+       *
+       * NOTE: This field must not be set for `Resource.reservation`.
+       *       See the 'Resource Format' section for more details.
+       * </pre>
+       */
+      boolean hasRole();
+      /**
+       * <code>optional string role = 3;</code>
+       *
+       * <pre>
+       * The role to which this reservation is made for.
+       *
+       * NOTE: This field must not be set for `Resource.reservation`.
+       *       See the 'Resource Format' section for more details.
+       * </pre>
+       */
+      java.lang.String getRole();
+      /**
+       * <code>optional string role = 3;</code>
+       *
+       * <pre>
+       * The role to which this reservation is made for.
+       *
+       * NOTE: This field must not be set for `Resource.reservation`.
+       *       See the 'Resource Format' section for more details.
+       * </pre>
+       */
+      com.google.protobuf.ByteString
+          getRoleBytes();
+
+      // optional string principal = 1;
+      /**
+       * <code>optional string principal = 1;</code>
+       *
+       * <pre>
+       * Indicates the principal, if any, of the framework or operator
+       * that reserved this resource. If reserved by a framework, the
+       * field should match the `FrameworkInfo.principal`. It is used in
+       * conjunction with the `UnreserveResources` ACL to determine
+       * whether the entity attempting to unreserve this resource is
+       * permitted to do so.
+       * </pre>
+       */
+      boolean hasPrincipal();
+      /**
+       * <code>optional string principal = 1;</code>
+       *
+       * <pre>
+       * Indicates the principal, if any, of the framework or operator
+       * that reserved this resource. If reserved by a framework, the
+       * field should match the `FrameworkInfo.principal`. It is used in
+       * conjunction with the `UnreserveResources` ACL to determine
+       * whether the entity attempting to unreserve this resource is
+       * permitted to do so.
+       * </pre>
+       */
+      java.lang.String getPrincipal();
+      /**
+       * <code>optional string principal = 1;</code>
+       *
+       * <pre>
+       * Indicates the principal, if any, of the framework or operator
+       * that reserved this resource. If reserved by a framework, the
+       * field should match the `FrameworkInfo.principal`. It is used in
+       * conjunction with the `UnreserveResources` ACL to determine
+       * whether the entity attempting to unreserve this resource is
+       * permitted to do so.
+       * </pre>
+       */
+      com.google.protobuf.ByteString
+          getPrincipalBytes();
+
+      // optional .mesos.Labels labels = 2;
+      /**
+       * <code>optional .mesos.Labels labels = 2;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs that can be used to
+       * associate arbitrary metadata with a reserved resource.  For
+       * example, frameworks can use labels to identify the intended
+       * purpose for a portion of the resources the framework has
+       * reserved at a given slave. Labels should not contain duplicate
+       * key-value pairs.
+       * </pre>
+       */
+      boolean hasLabels();
+      /**
+       * <code>optional .mesos.Labels labels = 2;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs that can be used to
+       * associate arbitrary metadata with a reserved resource.  For
+       * example, frameworks can use labels to identify the intended
+       * purpose for a portion of the resources the framework has
+       * reserved at a given slave. Labels should not contain duplicate
+       * key-value pairs.
+       * </pre>
+       */
+      org.apache.mesos.Protos.Labels getLabels();
+      /**
+       * <code>optional .mesos.Labels labels = 2;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs that can be used to
+       * associate arbitrary metadata with a reserved resource.  For
+       * example, frameworks can use labels to identify the intended
+       * purpose for a portion of the resources the framework has
+       * reserved at a given slave. Labels should not contain duplicate
+       * key-value pairs.
+       * </pre>
+       */
+      org.apache.mesos.Protos.LabelsOrBuilder getLabelsOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.Resource.ReservationInfo}
+     *
+     * <pre>
+     * Describes a reservation. A static reservation is set by the operator on
+     * the command-line and they are immutable without agent restart. A dynamic
+     * reservation is made by an operator via the '/reserve' HTTP endpoint
+     * or by a framework via the offer cycle by sending back an
+     * 'Offer::Operation::Reserve' message.
+     *
+     * NOTE: We currently do not allow frameworks with role "*" to make dynamic
+     * reservations.
+     * </pre>
+     */
+    public static final class ReservationInfo extends
+        com.google.protobuf.GeneratedMessage
+        implements ReservationInfoOrBuilder {
+      // Use ReservationInfo.newBuilder() to construct.
+      private ReservationInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private ReservationInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final ReservationInfo defaultInstance;
+      public static ReservationInfo getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public ReservationInfo getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private ReservationInfo(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                bitField0_ |= 0x00000004;
+                principal_ = input.readBytes();
+                break;
+              }
+              case 18: {
+                org.apache.mesos.Protos.Labels.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                  subBuilder = labels_.toBuilder();
+                }
+                labels_ = input.readMessage(org.apache.mesos.Protos.Labels.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(labels_);
+                  labels_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000008;
+                break;
+              }
+              case 26: {
+                bitField0_ |= 0x00000002;
+                role_ = input.readBytes();
+                break;
+              }
+              case 32: {
+                int rawValue = input.readEnum();
+                org.apache.mesos.Protos.Resource.ReservationInfo.Type value = org.apache.mesos.Protos.Resource.ReservationInfo.Type.valueOf(rawValue);
+                if (value == null) {
+                  unknownFields.mergeVarintField(4, rawValue);
+                } else {
+                  bitField0_ |= 0x00000001;
+                  type_ = value;
+                }
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_Resource_ReservationInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_Resource_ReservationInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.Resource.ReservationInfo.class, org.apache.mesos.Protos.Resource.ReservationInfo.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<ReservationInfo> PARSER =
+          new com.google.protobuf.AbstractParser<ReservationInfo>() {
+        public ReservationInfo parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new ReservationInfo(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<ReservationInfo> getParserForType() {
+        return PARSER;
+      }
+
+      /**
+       * Protobuf enum {@code mesos.Resource.ReservationInfo.Type}
+       */
+      public enum Type
+          implements com.google.protobuf.ProtocolMessageEnum {
+        /**
+         * <code>UNKNOWN = 0;</code>
+         */
+        UNKNOWN(0, 0),
+        /**
+         * <code>STATIC = 1;</code>
+         */
+        STATIC(1, 1),
+        /**
+         * <code>DYNAMIC = 2;</code>
+         */
+        DYNAMIC(2, 2),
+        ;
+
+        /**
+         * <code>UNKNOWN = 0;</code>
+         */
+        public static final int UNKNOWN_VALUE = 0;
+        /**
+         * <code>STATIC = 1;</code>
+         */
+        public static final int STATIC_VALUE = 1;
+        /**
+         * <code>DYNAMIC = 2;</code>
+         */
+        public static final int DYNAMIC_VALUE = 2;
+
+
+        public final int getNumber() { return value; }
+
+        public static Type valueOf(int value) {
+          switch (value) {
+            case 0: return UNKNOWN;
+            case 1: return STATIC;
+            case 2: return DYNAMIC;
+            default: return null;
+          }
+        }
+
+        public static com.google.protobuf.Internal.EnumLiteMap<Type>
+            internalGetValueMap() {
+          return internalValueMap;
+        }
+        private static com.google.protobuf.Internal.EnumLiteMap<Type>
+            internalValueMap =
+              new com.google.protobuf.Internal.EnumLiteMap<Type>() {
+                public Type findValueByNumber(int number) {
+                  return Type.valueOf(number);
+                }
+              };
+
+        public final com.google.protobuf.Descriptors.EnumValueDescriptor
+            getValueDescriptor() {
+          return getDescriptor().getValues().get(index);
+        }
+        public final com.google.protobuf.Descriptors.EnumDescriptor
+            getDescriptorForType() {
+          return getDescriptor();
+        }
+        public static final com.google.protobuf.Descriptors.EnumDescriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.Resource.ReservationInfo.getDescriptor().getEnumTypes().get(0);
+        }
+
+        private static final Type[] VALUES = values();
+
+        public static Type valueOf(
+            com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+          if (desc.getType() != getDescriptor()) {
+            throw new java.lang.IllegalArgumentException(
+              "EnumValueDescriptor is not for this type.");
+          }
+          return VALUES[desc.getIndex()];
+        }
+
+        private final int index;
+        private final int value;
+
+        private Type(int index, int value) {
+          this.index = index;
+          this.value = value;
+        }
+
+        // @@protoc_insertion_point(enum_scope:mesos.Resource.ReservationInfo.Type)
+      }
+
+      private int bitField0_;
+      // optional .mesos.Resource.ReservationInfo.Type type = 4;
+      public static final int TYPE_FIELD_NUMBER = 4;
+      private org.apache.mesos.Protos.Resource.ReservationInfo.Type type_;
+      /**
+       * <code>optional .mesos.Resource.ReservationInfo.Type type = 4;</code>
+       *
+       * <pre>
+       * The type of this reservation.
+       *
+       * NOTE: This field must not be set for `Resource.reservation`.
+       *       See the 'Resource Format' section for more details.
+       * </pre>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.Resource.ReservationInfo.Type type = 4;</code>
+       *
+       * <pre>
+       * The type of this reservation.
+       *
+       * NOTE: This field must not be set for `Resource.reservation`.
+       *       See the 'Resource Format' section for more details.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Resource.ReservationInfo.Type getType() {
+        return type_;
+      }
+
+      // optional string role = 3;
+      public static final int ROLE_FIELD_NUMBER = 3;
+      private java.lang.Object role_;
+      /**
+       * <code>optional string role = 3;</code>
+       *
+       * <pre>
+       * The role to which this reservation is made for.
+       *
+       * NOTE: This field must not be set for `Resource.reservation`.
+       *       See the 'Resource Format' section for more details.
+       * </pre>
+       */
+      public boolean hasRole() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional string role = 3;</code>
+       *
+       * <pre>
+       * The role to which this reservation is made for.
+       *
+       * NOTE: This field must not be set for `Resource.reservation`.
+       *       See the 'Resource Format' section for more details.
+       * </pre>
+       */
+      public java.lang.String getRole() {
+        java.lang.Object ref = role_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            role_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>optional string role = 3;</code>
+       *
+       * <pre>
+       * The role to which this reservation is made for.
+       *
+       * NOTE: This field must not be set for `Resource.reservation`.
+       *       See the 'Resource Format' section for more details.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getRoleBytes() {
+        java.lang.Object ref = role_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          role_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      // optional string principal = 1;
+      public static final int PRINCIPAL_FIELD_NUMBER = 1;
+      private java.lang.Object principal_;
+      /**
+       * <code>optional string principal = 1;</code>
+       *
+       * <pre>
+       * Indicates the principal, if any, of the framework or operator
+       * that reserved this resource. If reserved by a framework, the
+       * field should match the `FrameworkInfo.principal`. It is used in
+       * conjunction with the `UnreserveResources` ACL to determine
+       * whether the entity attempting to unreserve this resource is
+       * permitted to do so.
+       * </pre>
+       */
+      public boolean hasPrincipal() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional string principal = 1;</code>
+       *
+       * <pre>
+       * Indicates the principal, if any, of the framework or operator
+       * that reserved this resource. If reserved by a framework, the
+       * field should match the `FrameworkInfo.principal`. It is used in
+       * conjunction with the `UnreserveResources` ACL to determine
+       * whether the entity attempting to unreserve this resource is
+       * permitted to do so.
+       * </pre>
+       */
+      public java.lang.String getPrincipal() {
+        java.lang.Object ref = principal_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            principal_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>optional string principal = 1;</code>
+       *
+       * <pre>
+       * Indicates the principal, if any, of the framework or operator
+       * that reserved this resource. If reserved by a framework, the
+       * field should match the `FrameworkInfo.principal`. It is used in
+       * conjunction with the `UnreserveResources` ACL to determine
+       * whether the entity attempting to unreserve this resource is
+       * permitted to do so.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getPrincipalBytes() {
+        java.lang.Object ref = principal_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          principal_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      // optional .mesos.Labels labels = 2;
+      public static final int LABELS_FIELD_NUMBER = 2;
+      private org.apache.mesos.Protos.Labels labels_;
+      /**
+       * <code>optional .mesos.Labels labels = 2;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs that can be used to
+       * associate arbitrary metadata with a reserved resource.  For
+       * example, frameworks can use labels to identify the intended
+       * purpose for a portion of the resources the framework has
+       * reserved at a given slave. Labels should not contain duplicate
+       * key-value pairs.
+       * </pre>
+       */
+      public boolean hasLabels() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 2;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs that can be used to
+       * associate arbitrary metadata with a reserved resource.  For
+       * example, frameworks can use labels to identify the intended
+       * purpose for a portion of the resources the framework has
+       * reserved at a given slave. Labels should not contain duplicate
+       * key-value pairs.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Labels getLabels() {
+        return labels_;
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 2;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs that can be used to
+       * associate arbitrary metadata with a reserved resource.  For
+       * example, frameworks can use labels to identify the intended
+       * purpose for a portion of the resources the framework has
+       * reserved at a given slave. Labels should not contain duplicate
+       * key-value pairs.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+        return labels_;
+      }
+
+      private void initFields() {
+        type_ = org.apache.mesos.Protos.Resource.ReservationInfo.Type.UNKNOWN;
+        role_ = "";
+        principal_ = "";
+        labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (hasLabels()) {
+          if (!getLabels().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeBytes(1, getPrincipalBytes());
+        }
+        if (((bitField0_ & 0x00000008) == 0x00000008)) {
+          output.writeMessage(2, labels_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeBytes(3, getRoleBytes());
+        }
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeEnum(4, type_.getNumber());
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(1, getPrincipalBytes());
+        }
+        if (((bitField0_ & 0x00000008) == 0x00000008)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(2, labels_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(3, getRoleBytes());
+        }
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeEnumSize(4, type_.getNumber());
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.Protos.Resource.ReservationInfo parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.Resource.ReservationInfo parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Resource.ReservationInfo parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.Resource.ReservationInfo parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Resource.ReservationInfo parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.Resource.ReservationInfo parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Resource.ReservationInfo parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.Protos.Resource.ReservationInfo parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Resource.ReservationInfo parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.Resource.ReservationInfo parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.Protos.Resource.ReservationInfo prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.Resource.ReservationInfo}
+       *
+       * <pre>
+       * Describes a reservation. A static reservation is set by the operator on
+       * the command-line and they are immutable without agent restart. A dynamic
+       * reservation is made by an operator via the '/reserve' HTTP endpoint
+       * or by a framework via the offer cycle by sending back an
+       * 'Offer::Operation::Reserve' message.
+       *
+       * NOTE: We currently do not allow frameworks with role "*" to make dynamic
+       * reservations.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.Protos.Resource.ReservationInfoOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_Resource_ReservationInfo_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_Resource_ReservationInfo_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.Resource.ReservationInfo.class, org.apache.mesos.Protos.Resource.ReservationInfo.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.Protos.Resource.ReservationInfo.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getLabelsFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          type_ = org.apache.mesos.Protos.Resource.ReservationInfo.Type.UNKNOWN;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          role_ = "";
+          bitField0_ = (bitField0_ & ~0x00000002);
+          principal_ = "";
+          bitField0_ = (bitField0_ & ~0x00000004);
+          if (labelsBuilder_ == null) {
+            labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+          } else {
+            labelsBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000008);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.Protos.internal_static_mesos_Resource_ReservationInfo_descriptor;
+        }
+
+        public org.apache.mesos.Protos.Resource.ReservationInfo getDefaultInstanceForType() {
+          return org.apache.mesos.Protos.Resource.ReservationInfo.getDefaultInstance();
+        }
+
+        public org.apache.mesos.Protos.Resource.ReservationInfo build() {
+          org.apache.mesos.Protos.Resource.ReservationInfo result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.Protos.Resource.ReservationInfo buildPartial() {
+          org.apache.mesos.Protos.Resource.ReservationInfo result = new org.apache.mesos.Protos.Resource.ReservationInfo(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.type_ = type_;
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          result.role_ = role_;
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          result.principal_ = principal_;
+          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+            to_bitField0_ |= 0x00000008;
+          }
+          if (labelsBuilder_ == null) {
+            result.labels_ = labels_;
+          } else {
+            result.labels_ = labelsBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.Protos.Resource.ReservationInfo) {
+            return mergeFrom((org.apache.mesos.Protos.Resource.ReservationInfo)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.Protos.Resource.ReservationInfo other) {
+          if (other == org.apache.mesos.Protos.Resource.ReservationInfo.getDefaultInstance()) return this;
+          if (other.hasType()) {
+            setType(other.getType());
+          }
+          if (other.hasRole()) {
+            bitField0_ |= 0x00000002;
+            role_ = other.role_;
+            onChanged();
+          }
+          if (other.hasPrincipal()) {
+            bitField0_ |= 0x00000004;
+            principal_ = other.principal_;
+            onChanged();
+          }
+          if (other.hasLabels()) {
+            mergeLabels(other.getLabels());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (hasLabels()) {
+            if (!getLabels().isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.Protos.Resource.ReservationInfo parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.Protos.Resource.ReservationInfo) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // optional .mesos.Resource.ReservationInfo.Type type = 4;
+        private org.apache.mesos.Protos.Resource.ReservationInfo.Type type_ = org.apache.mesos.Protos.Resource.ReservationInfo.Type.UNKNOWN;
+        /**
+         * <code>optional .mesos.Resource.ReservationInfo.Type type = 4;</code>
+         *
+         * <pre>
+         * The type of this reservation.
+         *
+         * NOTE: This field must not be set for `Resource.reservation`.
+         *       See the 'Resource Format' section for more details.
+         * </pre>
+         */
+        public boolean hasType() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional .mesos.Resource.ReservationInfo.Type type = 4;</code>
+         *
+         * <pre>
+         * The type of this reservation.
+         *
+         * NOTE: This field must not be set for `Resource.reservation`.
+         *       See the 'Resource Format' section for more details.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.Resource.ReservationInfo.Type getType() {
+          return type_;
+        }
+        /**
+         * <code>optional .mesos.Resource.ReservationInfo.Type type = 4;</code>
+         *
+         * <pre>
+         * The type of this reservation.
+         *
+         * NOTE: This field must not be set for `Resource.reservation`.
+         *       See the 'Resource Format' section for more details.
+         * </pre>
+         */
+        public Builder setType(org.apache.mesos.Protos.Resource.ReservationInfo.Type value) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          bitField0_ |= 0x00000001;
+          type_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Resource.ReservationInfo.Type type = 4;</code>
+         *
+         * <pre>
+         * The type of this reservation.
+         *
+         * NOTE: This field must not be set for `Resource.reservation`.
+         *       See the 'Resource Format' section for more details.
+         * </pre>
+         */
+        public Builder clearType() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          type_ = org.apache.mesos.Protos.Resource.ReservationInfo.Type.UNKNOWN;
+          onChanged();
+          return this;
+        }
+
+        // optional string role = 3;
+        private java.lang.Object role_ = "";
+        /**
+         * <code>optional string role = 3;</code>
+         *
+         * <pre>
+         * The role to which this reservation is made for.
+         *
+         * NOTE: This field must not be set for `Resource.reservation`.
+         *       See the 'Resource Format' section for more details.
+         * </pre>
+         */
+        public boolean hasRole() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional string role = 3;</code>
+         *
+         * <pre>
+         * The role to which this reservation is made for.
+         *
+         * NOTE: This field must not be set for `Resource.reservation`.
+         *       See the 'Resource Format' section for more details.
+         * </pre>
+         */
+        public java.lang.String getRole() {
+          java.lang.Object ref = role_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            role_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>optional string role = 3;</code>
+         *
+         * <pre>
+         * The role to which this reservation is made for.
+         *
+         * NOTE: This field must not be set for `Resource.reservation`.
+         *       See the 'Resource Format' section for more details.
+         * </pre>
+         */
+        public com.google.protobuf.ByteString
+            getRoleBytes() {
+          java.lang.Object ref = role_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            role_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>optional string role = 3;</code>
+         *
+         * <pre>
+         * The role to which this reservation is made for.
+         *
+         * NOTE: This field must not be set for `Resource.reservation`.
+         *       See the 'Resource Format' section for more details.
+         * </pre>
+         */
+        public Builder setRole(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+          role_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string role = 3;</code>
+         *
+         * <pre>
+         * The role to which this reservation is made for.
+         *
+         * NOTE: This field must not be set for `Resource.reservation`.
+         *       See the 'Resource Format' section for more details.
+         * </pre>
+         */
+        public Builder clearRole() {
+          bitField0_ = (bitField0_ & ~0x00000002);
+          role_ = getDefaultInstance().getRole();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string role = 3;</code>
+         *
+         * <pre>
+         * The role to which this reservation is made for.
+         *
+         * NOTE: This field must not be set for `Resource.reservation`.
+         *       See the 'Resource Format' section for more details.
+         * </pre>
+         */
+        public Builder setRoleBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+          role_ = value;
+          onChanged();
+          return this;
+        }
+
+        // optional string principal = 1;
+        private java.lang.Object principal_ = "";
+        /**
+         * <code>optional string principal = 1;</code>
+         *
+         * <pre>
+         * Indicates the principal, if any, of the framework or operator
+         * that reserved this resource. If reserved by a framework, the
+         * field should match the `FrameworkInfo.principal`. It is used in
+         * conjunction with the `UnreserveResources` ACL to determine
+         * whether the entity attempting to unreserve this resource is
+         * permitted to do so.
+         * </pre>
+         */
+        public boolean hasPrincipal() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional string principal = 1;</code>
+         *
+         * <pre>
+         * Indicates the principal, if any, of the framework or operator
+         * that reserved this resource. If reserved by a framework, the
+         * field should match the `FrameworkInfo.principal`. It is used in
+         * conjunction with the `UnreserveResources` ACL to determine
+         * whether the entity attempting to unreserve this resource is
+         * permitted to do so.
+         * </pre>
+         */
+        public java.lang.String getPrincipal() {
+          java.lang.Object ref = principal_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            principal_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>optional string principal = 1;</code>
+         *
+         * <pre>
+         * Indicates the principal, if any, of the framework or operator
+         * that reserved this resource. If reserved by a framework, the
+         * field should match the `FrameworkInfo.principal`. It is used in
+         * conjunction with the `UnreserveResources` ACL to determine
+         * whether the entity attempting to unreserve this resource is
+         * permitted to do so.
+         * </pre>
+         */
+        public com.google.protobuf.ByteString
+            getPrincipalBytes() {
+          java.lang.Object ref = principal_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            principal_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>optional string principal = 1;</code>
+         *
+         * <pre>
+         * Indicates the principal, if any, of the framework or operator
+         * that reserved this resource. If reserved by a framework, the
+         * field should match the `FrameworkInfo.principal`. It is used in
+         * conjunction with the `UnreserveResources` ACL to determine
+         * whether the entity attempting to unreserve this resource is
+         * permitted to do so.
+         * </pre>
+         */
+        public Builder setPrincipal(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+          principal_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string principal = 1;</code>
+         *
+         * <pre>
+         * Indicates the principal, if any, of the framework or operator
+         * that reserved this resource. If reserved by a framework, the
+         * field should match the `FrameworkInfo.principal`. It is used in
+         * conjunction with the `UnreserveResources` ACL to determine
+         * whether the entity attempting to unreserve this resource is
+         * permitted to do so.
+         * </pre>
+         */
+        public Builder clearPrincipal() {
+          bitField0_ = (bitField0_ & ~0x00000004);
+          principal_ = getDefaultInstance().getPrincipal();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string principal = 1;</code>
+         *
+         * <pre>
+         * Indicates the principal, if any, of the framework or operator
+         * that reserved this resource. If reserved by a framework, the
+         * field should match the `FrameworkInfo.principal`. It is used in
+         * conjunction with the `UnreserveResources` ACL to determine
+         * whether the entity attempting to unreserve this resource is
+         * permitted to do so.
+         * </pre>
+         */
+        public Builder setPrincipalBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+          principal_ = value;
+          onChanged();
+          return this;
+        }
+
+        // optional .mesos.Labels labels = 2;
+        private org.apache.mesos.Protos.Labels labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Labels, org.apache.mesos.Protos.Labels.Builder, org.apache.mesos.Protos.LabelsOrBuilder> labelsBuilder_;
+        /**
+         * <code>optional .mesos.Labels labels = 2;</code>
+         *
+         * <pre>
+         * Labels are free-form key value pairs that can be used to
+         * associate arbitrary metadata with a reserved resource.  For
+         * example, frameworks can use labels to identify the intended
+         * purpose for a portion of the resources the framework has
+         * reserved at a given slave. Labels should not contain duplicate
+         * key-value pairs.
+         * </pre>
+         */
+        public boolean hasLabels() {
+          return ((bitField0_ & 0x00000008) == 0x00000008);
+        }
+        /**
+         * <code>optional .mesos.Labels labels = 2;</code>
+         *
+         * <pre>
+         * Labels are free-form key value pairs that can be used to
+         * associate arbitrary metadata with a reserved resource.  For
+         * example, frameworks can use labels to identify the intended
+         * purpose for a portion of the resources the framework has
+         * reserved at a given slave. Labels should not contain duplicate
+         * key-value pairs.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.Labels getLabels() {
+          if (labelsBuilder_ == null) {
+            return labels_;
+          } else {
+            return labelsBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.Labels labels = 2;</code>
+         *
+         * <pre>
+         * Labels are free-form key value pairs that can be used to
+         * associate arbitrary metadata with a reserved resource.  For
+         * example, frameworks can use labels to identify the intended
+         * purpose for a portion of the resources the framework has
+         * reserved at a given slave. Labels should not contain duplicate
+         * key-value pairs.
+         * </pre>
+         */
+        public Builder setLabels(org.apache.mesos.Protos.Labels value) {
+          if (labelsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            labels_ = value;
+            onChanged();
+          } else {
+            labelsBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000008;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Labels labels = 2;</code>
+         *
+         * <pre>
+         * Labels are free-form key value pairs that can be used to
+         * associate arbitrary metadata with a reserved resource.  For
+         * example, frameworks can use labels to identify the intended
+         * purpose for a portion of the resources the framework has
+         * reserved at a given slave. Labels should not contain duplicate
+         * key-value pairs.
+         * </pre>
+         */
+        public Builder setLabels(
+            org.apache.mesos.Protos.Labels.Builder builderForValue) {
+          if (labelsBuilder_ == null) {
+            labels_ = builderForValue.build();
+            onChanged();
+          } else {
+            labelsBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000008;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Labels labels = 2;</code>
+         *
+         * <pre>
+         * Labels are free-form key value pairs that can be used to
+         * associate arbitrary metadata with a reserved resource.  For
+         * example, frameworks can use labels to identify the intended
+         * purpose for a portion of the resources the framework has
+         * reserved at a given slave. Labels should not contain duplicate
+         * key-value pairs.
+         * </pre>
+         */
+        public Builder mergeLabels(org.apache.mesos.Protos.Labels value) {
+          if (labelsBuilder_ == null) {
+            if (((bitField0_ & 0x00000008) == 0x00000008) &&
+                labels_ != org.apache.mesos.Protos.Labels.getDefaultInstance()) {
+              labels_ =
+                org.apache.mesos.Protos.Labels.newBuilder(labels_).mergeFrom(value).buildPartial();
+            } else {
+              labels_ = value;
+            }
+            onChanged();
+          } else {
+            labelsBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000008;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Labels labels = 2;</code>
+         *
+         * <pre>
+         * Labels are free-form key value pairs that can be used to
+         * associate arbitrary metadata with a reserved resource.  For
+         * example, frameworks can use labels to identify the intended
+         * purpose for a portion of the resources the framework has
+         * reserved at a given slave. Labels should not contain duplicate
+         * key-value pairs.
+         * </pre>
+         */
+        public Builder clearLabels() {
+          if (labelsBuilder_ == null) {
+            labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+            onChanged();
+          } else {
+            labelsBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000008);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Labels labels = 2;</code>
+         *
+         * <pre>
+         * Labels are free-form key value pairs that can be used to
+         * associate arbitrary metadata with a reserved resource.  For
+         * example, frameworks can use labels to identify the intended
+         * purpose for a portion of the resources the framework has
+         * reserved at a given slave. Labels should not contain duplicate
+         * key-value pairs.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.Labels.Builder getLabelsBuilder() {
+          bitField0_ |= 0x00000008;
+          onChanged();
+          return getLabelsFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.Labels labels = 2;</code>
+         *
+         * <pre>
+         * Labels are free-form key value pairs that can be used to
+         * associate arbitrary metadata with a reserved resource.  For
+         * example, frameworks can use labels to identify the intended
+         * purpose for a portion of the resources the framework has
+         * reserved at a given slave. Labels should not contain duplicate
+         * key-value pairs.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+          if (labelsBuilder_ != null) {
+            return labelsBuilder_.getMessageOrBuilder();
+          } else {
+            return labels_;
+          }
+        }
+        /**
+         * <code>optional .mesos.Labels labels = 2;</code>
+         *
+         * <pre>
+         * Labels are free-form key value pairs that can be used to
+         * associate arbitrary metadata with a reserved resource.  For
+         * example, frameworks can use labels to identify the intended
+         * purpose for a portion of the resources the framework has
+         * reserved at a given slave. Labels should not contain duplicate
+         * key-value pairs.
+         * </pre>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Labels, org.apache.mesos.Protos.Labels.Builder, org.apache.mesos.Protos.LabelsOrBuilder> 
+            getLabelsFieldBuilder() {
+          if (labelsBuilder_ == null) {
+            labelsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.Labels, org.apache.mesos.Protos.Labels.Builder, org.apache.mesos.Protos.LabelsOrBuilder>(
+                    labels_,
+                    getParentForChildren(),
+                    isClean());
+            labels_ = null;
+          }
+          return labelsBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.Resource.ReservationInfo)
+      }
+
+      static {
+        defaultInstance = new ReservationInfo(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.Resource.ReservationInfo)
+    }
+
+    public interface DiskInfoOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // optional .mesos.Resource.DiskInfo.Persistence persistence = 1;
+      /**
+       * <code>optional .mesos.Resource.DiskInfo.Persistence persistence = 1;</code>
+       */
+      boolean hasPersistence();
+      /**
+       * <code>optional .mesos.Resource.DiskInfo.Persistence persistence = 1;</code>
+       */
+      org.apache.mesos.Protos.Resource.DiskInfo.Persistence getPersistence();
+      /**
+       * <code>optional .mesos.Resource.DiskInfo.Persistence persistence = 1;</code>
+       */
+      org.apache.mesos.Protos.Resource.DiskInfo.PersistenceOrBuilder getPersistenceOrBuilder();
+
+      // optional .mesos.Volume volume = 2;
+      /**
+       * <code>optional .mesos.Volume volume = 2;</code>
+       *
+       * <pre>
+       * Describes how this disk resource will be mounted in the
+       * container. If not set, the disk resource will be used as the
+       * sandbox. Otherwise, it will be mounted according to the
+       * 'container_path' inside 'volume'. The 'host_path' inside
+       * 'volume' is ignored.
+       * NOTE: If 'volume' is set but 'persistence' is not set, the
+       * volume will be automatically garbage collected after
+       * task/executor terminates. Currently, if 'persistence' is set,
+       * 'volume' must be set.
+       * </pre>
+       */
+      boolean hasVolume();
+      /**
+       * <code>optional .mesos.Volume volume = 2;</code>
+       *
+       * <pre>
+       * Describes how this disk resource will be mounted in the
+       * container. If not set, the disk resource will be used as the
+       * sandbox. Otherwise, it will be mounted according to the
+       * 'container_path' inside 'volume'. The 'host_path' inside
+       * 'volume' is ignored.
+       * NOTE: If 'volume' is set but 'persistence' is not set, the
+       * volume will be automatically garbage collected after
+       * task/executor terminates. Currently, if 'persistence' is set,
+       * 'volume' must be set.
+       * </pre>
+       */
+      org.apache.mesos.Protos.Volume getVolume();
+      /**
+       * <code>optional .mesos.Volume volume = 2;</code>
+       *
+       * <pre>
+       * Describes how this disk resource will be mounted in the
+       * container. If not set, the disk resource will be used as the
+       * sandbox. Otherwise, it will be mounted according to the
+       * 'container_path' inside 'volume'. The 'host_path' inside
+       * 'volume' is ignored.
+       * NOTE: If 'volume' is set but 'persistence' is not set, the
+       * volume will be automatically garbage collected after
+       * task/executor terminates. Currently, if 'persistence' is set,
+       * 'volume' must be set.
+       * </pre>
+       */
+      org.apache.mesos.Protos.VolumeOrBuilder getVolumeOrBuilder();
+
+      // optional .mesos.Resource.DiskInfo.Source source = 3;
+      /**
+       * <code>optional .mesos.Resource.DiskInfo.Source source = 3;</code>
+       */
+      boolean hasSource();
+      /**
+       * <code>optional .mesos.Resource.DiskInfo.Source source = 3;</code>
+       */
+      org.apache.mesos.Protos.Resource.DiskInfo.Source getSource();
+      /**
+       * <code>optional .mesos.Resource.DiskInfo.Source source = 3;</code>
+       */
+      org.apache.mesos.Protos.Resource.DiskInfo.SourceOrBuilder getSourceOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.Resource.DiskInfo}
+     */
+    public static final class DiskInfo extends
+        com.google.protobuf.GeneratedMessage
+        implements DiskInfoOrBuilder {
+      // Use DiskInfo.newBuilder() to construct.
+      private DiskInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private DiskInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final DiskInfo defaultInstance;
+      public static DiskInfo getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public DiskInfo getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private DiskInfo(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.Protos.Resource.DiskInfo.Persistence.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = persistence_.toBuilder();
+                }
+                persistence_ = input.readMessage(org.apache.mesos.Protos.Resource.DiskInfo.Persistence.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(persistence_);
+                  persistence_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+              case 18: {
+                org.apache.mesos.Protos.Volume.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                  subBuilder = volume_.toBuilder();
+                }
+                volume_ = input.readMessage(org.apache.mesos.Protos.Volume.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(volume_);
+                  volume_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000002;
+                break;
+              }
+              case 26: {
+                org.apache.mesos.Protos.Resource.DiskInfo.Source.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                  subBuilder = source_.toBuilder();
+                }
+                source_ = input.readMessage(org.apache.mesos.Protos.Resource.DiskInfo.Source.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(source_);
+                  source_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000004;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_Resource_DiskInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_Resource_DiskInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.Resource.DiskInfo.class, org.apache.mesos.Protos.Resource.DiskInfo.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<DiskInfo> PARSER =
+          new com.google.protobuf.AbstractParser<DiskInfo>() {
+        public DiskInfo parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new DiskInfo(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<DiskInfo> getParserForType() {
+        return PARSER;
+      }
+
+      public interface PersistenceOrBuilder
+          extends com.google.protobuf.MessageOrBuilder {
+
+        // required string id = 1;
+        /**
+         * <code>required string id = 1;</code>
+         *
+         * <pre>
+         * A unique ID for the persistent disk volume. This ID must be
+         * unique per role on each slave. Although it is possible to use
+         * the same ID on different slaves in the cluster and to reuse
+         * IDs after a volume with that ID has been destroyed, both
+         * practices are discouraged.
+         * </pre>
+         */
+        boolean hasId();
+        /**
+         * <code>required string id = 1;</code>
+         *
+         * <pre>
+         * A unique ID for the persistent disk volume. This ID must be
+         * unique per role on each slave. Although it is possible to use
+         * the same ID on different slaves in the cluster and to reuse
+         * IDs after a volume with that ID has been destroyed, both
+         * practices are discouraged.
+         * </pre>
+         */
+        java.lang.String getId();
+        /**
+         * <code>required string id = 1;</code>
+         *
+         * <pre>
+         * A unique ID for the persistent disk volume. This ID must be
+         * unique per role on each slave. Although it is possible to use
+         * the same ID on different slaves in the cluster and to reuse
+         * IDs after a volume with that ID has been destroyed, both
+         * practices are discouraged.
+         * </pre>
+         */
+        com.google.protobuf.ByteString
+            getIdBytes();
+
+        // optional string principal = 2;
+        /**
+         * <code>optional string principal = 2;</code>
+         *
+         * <pre>
+         * This field indicates the principal of the operator or
+         * framework that created this volume. It is used in conjunction
+         * with the "destroy" ACL to determine whether an entity
+         * attempting to destroy the volume is permitted to do so.
+         *
+         * NOTE: This field should match the FrameworkInfo.principal of
+         * the framework that created the volume.
+         * </pre>
+         */
+        boolean hasPrincipal();
+        /**
+         * <code>optional string principal = 2;</code>
+         *
+         * <pre>
+         * This field indicates the principal of the operator or
+         * framework that created this volume. It is used in conjunction
+         * with the "destroy" ACL to determine whether an entity
+         * attempting to destroy the volume is permitted to do so.
+         *
+         * NOTE: This field should match the FrameworkInfo.principal of
+         * the framework that created the volume.
+         * </pre>
+         */
+        java.lang.String getPrincipal();
+        /**
+         * <code>optional string principal = 2;</code>
+         *
+         * <pre>
+         * This field indicates the principal of the operator or
+         * framework that created this volume. It is used in conjunction
+         * with the "destroy" ACL to determine whether an entity
+         * attempting to destroy the volume is permitted to do so.
+         *
+         * NOTE: This field should match the FrameworkInfo.principal of
+         * the framework that created the volume.
+         * </pre>
+         */
+        com.google.protobuf.ByteString
+            getPrincipalBytes();
+      }
+      /**
+       * Protobuf type {@code mesos.Resource.DiskInfo.Persistence}
+       *
+       * <pre>
+       * Describes a persistent disk volume.
+       *
+       * A persistent disk volume will not be automatically garbage
+       * collected if the task/executor/slave terminates, but will be
+       * re-offered to the framework(s) belonging to the 'role'.
+       *
+       * NOTE: Currently, we do not allow persistent disk volumes
+       * without a reservation (i.e., 'role' cannot be '*').
+       * </pre>
+       */
+      public static final class Persistence extends
+          com.google.protobuf.GeneratedMessage
+          implements PersistenceOrBuilder {
+        // Use Persistence.newBuilder() to construct.
+        private Persistence(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+          super(builder);
+          this.unknownFields = builder.getUnknownFields();
+        }
+        private Persistence(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+        private static final Persistence defaultInstance;
+        public static Persistence getDefaultInstance() {
+          return defaultInstance;
+        }
+
+        public Persistence getDefaultInstanceForType() {
+          return defaultInstance;
+        }
+
+        private final com.google.protobuf.UnknownFieldSet unknownFields;
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet
+            getUnknownFields() {
+          return this.unknownFields;
+        }
+        private Persistence(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          initFields();
+          int mutable_bitField0_ = 0;
+          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+              com.google.protobuf.UnknownFieldSet.newBuilder();
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(input, unknownFields,
+                                         extensionRegistry, tag)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 10: {
+                  bitField0_ |= 0x00000001;
+                  id_ = input.readBytes();
+                  break;
+                }
+                case 18: {
+                  bitField0_ |= 0x00000002;
+                  principal_ = input.readBytes();
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw e.setUnfinishedMessage(this);
+          } catch (java.io.IOException e) {
+            throw new com.google.protobuf.InvalidProtocolBufferException(
+                e.getMessage()).setUnfinishedMessage(this);
+          } finally {
+            this.unknownFields = unknownFields.build();
+            makeExtensionsImmutable();
+          }
+        }
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_Resource_DiskInfo_Persistence_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_Resource_DiskInfo_Persistence_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.Resource.DiskInfo.Persistence.class, org.apache.mesos.Protos.Resource.DiskInfo.Persistence.Builder.class);
+        }
+
+        public static com.google.protobuf.Parser<Persistence> PARSER =
+            new com.google.protobuf.AbstractParser<Persistence>() {
+          public Persistence parsePartialFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return new Persistence(input, extensionRegistry);
+          }
+        };
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<Persistence> getParserForType() {
+          return PARSER;
+        }
+
+        private int bitField0_;
+        // required string id = 1;
+        public static final int ID_FIELD_NUMBER = 1;
+        private java.lang.Object id_;
+        /**
+         * <code>required string id = 1;</code>
+         *
+         * <pre>
+         * A unique ID for the persistent disk volume. This ID must be
+         * unique per role on each slave. Although it is possible to use
+         * the same ID on different slaves in the cluster and to reuse
+         * IDs after a volume with that ID has been destroyed, both
+         * practices are discouraged.
+         * </pre>
+         */
+        public boolean hasId() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required string id = 1;</code>
+         *
+         * <pre>
+         * A unique ID for the persistent disk volume. This ID must be
+         * unique per role on each slave. Although it is possible to use
+         * the same ID on different slaves in the cluster and to reuse
+         * IDs after a volume with that ID has been destroyed, both
+         * practices are discouraged.
+         * </pre>
+         */
+        public java.lang.String getId() {
+          java.lang.Object ref = id_;
+          if (ref instanceof java.lang.String) {
+            return (java.lang.String) ref;
+          } else {
+            com.google.protobuf.ByteString bs = 
+                (com.google.protobuf.ByteString) ref;
+            java.lang.String s = bs.toStringUtf8();
+            if (bs.isValidUtf8()) {
+              id_ = s;
+            }
+            return s;
+          }
+        }
+        /**
+         * <code>required string id = 1;</code>
+         *
+         * <pre>
+         * A unique ID for the persistent disk volume. This ID must be
+         * unique per role on each slave. Although it is possible to use
+         * the same ID on different slaves in the cluster and to reuse
+         * IDs after a volume with that ID has been destroyed, both
+         * practices are discouraged.
+         * </pre>
+         */
+        public com.google.protobuf.ByteString
+            getIdBytes() {
+          java.lang.Object ref = id_;
+          if (ref instanceof java.lang.String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            id_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+
+        // optional string principal = 2;
+        public static final int PRINCIPAL_FIELD_NUMBER = 2;
+        private java.lang.Object principal_;
+        /**
+         * <code>optional string principal = 2;</code>
+         *
+         * <pre>
+         * This field indicates the principal of the operator or
+         * framework that created this volume. It is used in conjunction
+         * with the "destroy" ACL to determine whether an entity
+         * attempting to destroy the volume is permitted to do so.
+         *
+         * NOTE: This field should match the FrameworkInfo.principal of
+         * the framework that created the volume.
+         * </pre>
+         */
+        public boolean hasPrincipal() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional string principal = 2;</code>
+         *
+         * <pre>
+         * This field indicates the principal of the operator or
+         * framework that created this volume. It is used in conjunction
+         * with the "destroy" ACL to determine whether an entity
+         * attempting to destroy the volume is permitted to do so.
+         *
+         * NOTE: This field should match the FrameworkInfo.principal of
+         * the framework that created the volume.
+         * </pre>
+         */
+        public java.lang.String getPrincipal() {
+          java.lang.Object ref = principal_;
+          if (ref instanceof java.lang.String) {
+            return (java.lang.String) ref;
+          } else {
+            com.google.protobuf.ByteString bs = 
+                (com.google.protobuf.ByteString) ref;
+            java.lang.String s = bs.toStringUtf8();
+            if (bs.isValidUtf8()) {
+              principal_ = s;
+            }
+            return s;
+          }
+        }
+        /**
+         * <code>optional string principal = 2;</code>
+         *
+         * <pre>
+         * This field indicates the principal of the operator or
+         * framework that created this volume. It is used in conjunction
+         * with the "destroy" ACL to determine whether an entity
+         * attempting to destroy the volume is permitted to do so.
+         *
+         * NOTE: This field should match the FrameworkInfo.principal of
+         * the framework that created the volume.
+         * </pre>
+         */
+        public com.google.protobuf.ByteString
+            getPrincipalBytes() {
+          java.lang.Object ref = principal_;
+          if (ref instanceof java.lang.String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            principal_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+
+        private void initFields() {
+          id_ = "";
+          principal_ = "";
+        }
+        private byte memoizedIsInitialized = -1;
+        public final boolean isInitialized() {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized != -1) return isInitialized == 1;
+
+          if (!hasId()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+          memoizedIsInitialized = 1;
+          return true;
+        }
+
+        public void writeTo(com.google.protobuf.CodedOutputStream output)
+                            throws java.io.IOException {
+          getSerializedSize();
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            output.writeBytes(1, getIdBytes());
+          }
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            output.writeBytes(2, getPrincipalBytes());
+          }
+          getUnknownFields().writeTo(output);
+        }
+
+        private int memoizedSerializedSize = -1;
+        public int getSerializedSize() {
+          int size = memoizedSerializedSize;
+          if (size != -1) return size;
+
+          size = 0;
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeBytesSize(1, getIdBytes());
+          }
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeBytesSize(2, getPrincipalBytes());
+          }
+          size += getUnknownFields().getSerializedSize();
+          memoizedSerializedSize = size;
+          return size;
+        }
+
+        private static final long serialVersionUID = 0L;
+        @java.lang.Override
+        protected java.lang.Object writeReplace()
+            throws java.io.ObjectStreamException {
+          return super.writeReplace();
+        }
+
+        public static org.apache.mesos.Protos.Resource.DiskInfo.Persistence parseFrom(
+            com.google.protobuf.ByteString data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.Protos.Resource.DiskInfo.Persistence parseFrom(
+            com.google.protobuf.ByteString data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.Resource.DiskInfo.Persistence parseFrom(byte[] data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.Protos.Resource.DiskInfo.Persistence parseFrom(
+            byte[] data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.Resource.DiskInfo.Persistence parseFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.Protos.Resource.DiskInfo.Persistence parseFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.Resource.DiskInfo.Persistence parseDelimitedFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input);
+        }
+        public static org.apache.mesos.Protos.Resource.DiskInfo.Persistence parseDelimitedFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.Resource.DiskInfo.Persistence parseFrom(
+            com.google.protobuf.CodedInputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.Protos.Resource.DiskInfo.Persistence parseFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+
+        public static Builder newBuilder() { return Builder.create(); }
+        public Builder newBuilderForType() { return newBuilder(); }
+        public static Builder newBuilder(org.apache.mesos.Protos.Resource.DiskInfo.Persistence prototype) {
+          return newBuilder().mergeFrom(prototype);
+        }
+        public Builder toBuilder() { return newBuilder(this); }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          Builder builder = new Builder(parent);
+          return builder;
+        }
+        /**
+         * Protobuf type {@code mesos.Resource.DiskInfo.Persistence}
+         *
+         * <pre>
+         * Describes a persistent disk volume.
+         *
+         * A persistent disk volume will not be automatically garbage
+         * collected if the task/executor/slave terminates, but will be
+         * re-offered to the framework(s) belonging to the 'role'.
+         *
+         * NOTE: Currently, we do not allow persistent disk volumes
+         * without a reservation (i.e., 'role' cannot be '*').
+         * </pre>
+         */
+        public static final class Builder extends
+            com.google.protobuf.GeneratedMessage.Builder<Builder>
+           implements org.apache.mesos.Protos.Resource.DiskInfo.PersistenceOrBuilder {
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.Protos.internal_static_mesos_Resource_DiskInfo_Persistence_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.Protos.internal_static_mesos_Resource_DiskInfo_Persistence_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.Protos.Resource.DiskInfo.Persistence.class, org.apache.mesos.Protos.Resource.DiskInfo.Persistence.Builder.class);
+          }
+
+          // Construct using org.apache.mesos.Protos.Resource.DiskInfo.Persistence.newBuilder()
+          private Builder() {
+            maybeForceBuilderInitialization();
+          }
+
+          private Builder(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            super(parent);
+            maybeForceBuilderInitialization();
+          }
+          private void maybeForceBuilderInitialization() {
+            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            }
+          }
+          private static Builder create() {
+            return new Builder();
+          }
+
+          public Builder clear() {
+            super.clear();
+            id_ = "";
+            bitField0_ = (bitField0_ & ~0x00000001);
+            principal_ = "";
+            bitField0_ = (bitField0_ & ~0x00000002);
+            return this;
+          }
+
+          public Builder clone() {
+            return create().mergeFrom(buildPartial());
+          }
+
+          public com.google.protobuf.Descriptors.Descriptor
+              getDescriptorForType() {
+            return org.apache.mesos.Protos.internal_static_mesos_Resource_DiskInfo_Persistence_descriptor;
+          }
+
+          public org.apache.mesos.Protos.Resource.DiskInfo.Persistence getDefaultInstanceForType() {
+            return org.apache.mesos.Protos.Resource.DiskInfo.Persistence.getDefaultInstance();
+          }
+
+          public org.apache.mesos.Protos.Resource.DiskInfo.Persistence build() {
+            org.apache.mesos.Protos.Resource.DiskInfo.Persistence result = buildPartial();
+            if (!result.isInitialized()) {
+              throw newUninitializedMessageException(result);
+            }
+            return result;
+          }
+
+          public org.apache.mesos.Protos.Resource.DiskInfo.Persistence buildPartial() {
+            org.apache.mesos.Protos.Resource.DiskInfo.Persistence result = new org.apache.mesos.Protos.Resource.DiskInfo.Persistence(this);
+            int from_bitField0_ = bitField0_;
+            int to_bitField0_ = 0;
+            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+              to_bitField0_ |= 0x00000001;
+            }
+            result.id_ = id_;
+            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+              to_bitField0_ |= 0x00000002;
+            }
+            result.principal_ = principal_;
+            result.bitField0_ = to_bitField0_;
+            onBuilt();
+            return result;
+          }
+
+          public Builder mergeFrom(com.google.protobuf.Message other) {
+            if (other instanceof org.apache.mesos.Protos.Resource.DiskInfo.Persistence) {
+              return mergeFrom((org.apache.mesos.Protos.Resource.DiskInfo.Persistence)other);
+            } else {
+              super.mergeFrom(other);
+              return this;
+            }
+          }
+
+          public Builder mergeFrom(org.apache.mesos.Protos.Resource.DiskInfo.Persistence other) {
+            if (other == org.apache.mesos.Protos.Resource.DiskInfo.Persistence.getDefaultInstance()) return this;
+            if (other.hasId()) {
+              bitField0_ |= 0x00000001;
+              id_ = other.id_;
+              onChanged();
+            }
+            if (other.hasPrincipal()) {
+              bitField0_ |= 0x00000002;
+              principal_ = other.principal_;
+              onChanged();
+            }
+            this.mergeUnknownFields(other.getUnknownFields());
+            return this;
+          }
+
+          public final boolean isInitialized() {
+            if (!hasId()) {
+              
+              return false;
+            }
+            return true;
+          }
+
+          public Builder mergeFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            org.apache.mesos.Protos.Resource.DiskInfo.Persistence parsedMessage = null;
+            try {
+              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              parsedMessage = (org.apache.mesos.Protos.Resource.DiskInfo.Persistence) e.getUnfinishedMessage();
+              throw e;
+            } finally {
+              if (parsedMessage != null) {
+                mergeFrom(parsedMessage);
+              }
+            }
+            return this;
+          }
+          private int bitField0_;
+
+          // required string id = 1;
+          private java.lang.Object id_ = "";
+          /**
+           * <code>required string id = 1;</code>
+           *
+           * <pre>
+           * A unique ID for the persistent disk volume. This ID must be
+           * unique per role on each slave. Although it is possible to use
+           * the same ID on different slaves in the cluster and to reuse
+           * IDs after a volume with that ID has been destroyed, both
+           * practices are discouraged.
+           * </pre>
+           */
+          public boolean hasId() {
+            return ((bitField0_ & 0x00000001) == 0x00000001);
+          }
+          /**
+           * <code>required string id = 1;</code>
+           *
+           * <pre>
+           * A unique ID for the persistent disk volume. This ID must be
+           * unique per role on each slave. Although it is possible to use
+           * the same ID on different slaves in the cluster and to reuse
+           * IDs after a volume with that ID has been destroyed, both
+           * practices are discouraged.
+           * </pre>
+           */
+          public java.lang.String getId() {
+            java.lang.Object ref = id_;
+            if (!(ref instanceof java.lang.String)) {
+              java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                  .toStringUtf8();
+              id_ = s;
+              return s;
+            } else {
+              return (java.lang.String) ref;
+            }
+          }
+          /**
+           * <code>required string id = 1;</code>
+           *
+           * <pre>
+           * A unique ID for the persistent disk volume. This ID must be
+           * unique per role on each slave. Although it is possible to use
+           * the same ID on different slaves in the cluster and to reuse
+           * IDs after a volume with that ID has been destroyed, both
+           * practices are discouraged.
+           * </pre>
+           */
+          public com.google.protobuf.ByteString
+              getIdBytes() {
+            java.lang.Object ref = id_;
+            if (ref instanceof String) {
+              com.google.protobuf.ByteString b = 
+                  com.google.protobuf.ByteString.copyFromUtf8(
+                      (java.lang.String) ref);
+              id_ = b;
+              return b;
+            } else {
+              return (com.google.protobuf.ByteString) ref;
+            }
+          }
+          /**
+           * <code>required string id = 1;</code>
+           *
+           * <pre>
+           * A unique ID for the persistent disk volume. This ID must be
+           * unique per role on each slave. Although it is possible to use
+           * the same ID on different slaves in the cluster and to reuse
+           * IDs after a volume with that ID has been destroyed, both
+           * practices are discouraged.
+           * </pre>
+           */
+          public Builder setId(
+              java.lang.String value) {
+            if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+            id_ = value;
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>required string id = 1;</code>
+           *
+           * <pre>
+           * A unique ID for the persistent disk volume. This ID must be
+           * unique per role on each slave. Although it is possible to use
+           * the same ID on different slaves in the cluster and to reuse
+           * IDs after a volume with that ID has been destroyed, both
+           * practices are discouraged.
+           * </pre>
+           */
+          public Builder clearId() {
+            bitField0_ = (bitField0_ & ~0x00000001);
+            id_ = getDefaultInstance().getId();
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>required string id = 1;</code>
+           *
+           * <pre>
+           * A unique ID for the persistent disk volume. This ID must be
+           * unique per role on each slave. Although it is possible to use
+           * the same ID on different slaves in the cluster and to reuse
+           * IDs after a volume with that ID has been destroyed, both
+           * practices are discouraged.
+           * </pre>
+           */
+          public Builder setIdBytes(
+              com.google.protobuf.ByteString value) {
+            if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+            id_ = value;
+            onChanged();
+            return this;
+          }
+
+          // optional string principal = 2;
+          private java.lang.Object principal_ = "";
+          /**
+           * <code>optional string principal = 2;</code>
+           *
+           * <pre>
+           * This field indicates the principal of the operator or
+           * framework that created this volume. It is used in conjunction
+           * with the "destroy" ACL to determine whether an entity
+           * attempting to destroy the volume is permitted to do so.
+           *
+           * NOTE: This field should match the FrameworkInfo.principal of
+           * the framework that created the volume.
+           * </pre>
+           */
+          public boolean hasPrincipal() {
+            return ((bitField0_ & 0x00000002) == 0x00000002);
+          }
+          /**
+           * <code>optional string principal = 2;</code>
+           *
+           * <pre>
+           * This field indicates the principal of the operator or
+           * framework that created this volume. It is used in conjunction
+           * with the "destroy" ACL to determine whether an entity
+           * attempting to destroy the volume is permitted to do so.
+           *
+           * NOTE: This field should match the FrameworkInfo.principal of
+           * the framework that created the volume.
+           * </pre>
+           */
+          public java.lang.String getPrincipal() {
+            java.lang.Object ref = principal_;
+            if (!(ref instanceof java.lang.String)) {
+              java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                  .toStringUtf8();
+              principal_ = s;
+              return s;
+            } else {
+              return (java.lang.String) ref;
+            }
+          }
+          /**
+           * <code>optional string principal = 2;</code>
+           *
+           * <pre>
+           * This field indicates the principal of the operator or
+           * framework that created this volume. It is used in conjunction
+           * with the "destroy" ACL to determine whether an entity
+           * attempting to destroy the volume is permitted to do so.
+           *
+           * NOTE: This field should match the FrameworkInfo.principal of
+           * the framework that created the volume.
+           * </pre>
+           */
+          public com.google.protobuf.ByteString
+              getPrincipalBytes() {
+            java.lang.Object ref = principal_;
+            if (ref instanceof String) {
+              com.google.protobuf.ByteString b = 
+                  com.google.protobuf.ByteString.copyFromUtf8(
+                      (java.lang.String) ref);
+              principal_ = b;
+              return b;
+            } else {
+              return (com.google.protobuf.ByteString) ref;
+            }
+          }
+          /**
+           * <code>optional string principal = 2;</code>
+           *
+           * <pre>
+           * This field indicates the principal of the operator or
+           * framework that created this volume. It is used in conjunction
+           * with the "destroy" ACL to determine whether an entity
+           * attempting to destroy the volume is permitted to do so.
+           *
+           * NOTE: This field should match the FrameworkInfo.principal of
+           * the framework that created the volume.
+           * </pre>
+           */
+          public Builder setPrincipal(
+              java.lang.String value) {
+            if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+            principal_ = value;
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>optional string principal = 2;</code>
+           *
+           * <pre>
+           * This field indicates the principal of the operator or
+           * framework that created this volume. It is used in conjunction
+           * with the "destroy" ACL to determine whether an entity
+           * attempting to destroy the volume is permitted to do so.
+           *
+           * NOTE: This field should match the FrameworkInfo.principal of
+           * the framework that created the volume.
+           * </pre>
+           */
+          public Builder clearPrincipal() {
+            bitField0_ = (bitField0_ & ~0x00000002);
+            principal_ = getDefaultInstance().getPrincipal();
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>optional string principal = 2;</code>
+           *
+           * <pre>
+           * This field indicates the principal of the operator or
+           * framework that created this volume. It is used in conjunction
+           * with the "destroy" ACL to determine whether an entity
+           * attempting to destroy the volume is permitted to do so.
+           *
+           * NOTE: This field should match the FrameworkInfo.principal of
+           * the framework that created the volume.
+           * </pre>
+           */
+          public Builder setPrincipalBytes(
+              com.google.protobuf.ByteString value) {
+            if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+            principal_ = value;
+            onChanged();
+            return this;
+          }
+
+          // @@protoc_insertion_point(builder_scope:mesos.Resource.DiskInfo.Persistence)
+        }
+
+        static {
+          defaultInstance = new Persistence(true);
+          defaultInstance.initFields();
+        }
+
+        // @@protoc_insertion_point(class_scope:mesos.Resource.DiskInfo.Persistence)
+      }
+
+      public interface SourceOrBuilder
+          extends com.google.protobuf.MessageOrBuilder {
+
+        // required .mesos.Resource.DiskInfo.Source.Type type = 1;
+        /**
+         * <code>required .mesos.Resource.DiskInfo.Source.Type type = 1;</code>
+         */
+        boolean hasType();
+        /**
+         * <code>required .mesos.Resource.DiskInfo.Source.Type type = 1;</code>
+         */
+        org.apache.mesos.Protos.Resource.DiskInfo.Source.Type getType();
+
+        // optional .mesos.Resource.DiskInfo.Source.Path path = 2;
+        /**
+         * <code>optional .mesos.Resource.DiskInfo.Source.Path path = 2;</code>
+         */
+        boolean hasPath();
+        /**
+         * <code>optional .mesos.Resource.DiskInfo.Source.Path path = 2;</code>
+         */
+        org.apache.mesos.Protos.Resource.DiskInfo.Source.Path getPath();
+        /**
+         * <code>optional .mesos.Resource.DiskInfo.Source.Path path = 2;</code>
+         */
+        org.apache.mesos.Protos.Resource.DiskInfo.Source.PathOrBuilder getPathOrBuilder();
+
+        // optional .mesos.Resource.DiskInfo.Source.Mount mount = 3;
+        /**
+         * <code>optional .mesos.Resource.DiskInfo.Source.Mount mount = 3;</code>
+         */
+        boolean hasMount();
+        /**
+         * <code>optional .mesos.Resource.DiskInfo.Source.Mount mount = 3;</code>
+         */
+        org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount getMount();
+        /**
+         * <code>optional .mesos.Resource.DiskInfo.Source.Mount mount = 3;</code>
+         */
+        org.apache.mesos.Protos.Resource.DiskInfo.Source.MountOrBuilder getMountOrBuilder();
+      }
+      /**
+       * Protobuf type {@code mesos.Resource.DiskInfo.Source}
+       *
+       * <pre>
+       * Describes where a disk originates from.
+       * TODO(jmlvanre): Add support for BLOCK devices.
+       * </pre>
+       */
+      public static final class Source extends
+          com.google.protobuf.GeneratedMessage
+          implements SourceOrBuilder {
+        // Use Source.newBuilder() to construct.
+        private Source(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+          super(builder);
+          this.unknownFields = builder.getUnknownFields();
+        }
+        private Source(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+        private static final Source defaultInstance;
+        public static Source getDefaultInstance() {
+          return defaultInstance;
+        }
+
+        public Source getDefaultInstanceForType() {
+          return defaultInstance;
+        }
+
+        private final com.google.protobuf.UnknownFieldSet unknownFields;
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet
+            getUnknownFields() {
+          return this.unknownFields;
+        }
+        private Source(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          initFields();
+          int mutable_bitField0_ = 0;
+          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+              com.google.protobuf.UnknownFieldSet.newBuilder();
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(input, unknownFields,
+                                         extensionRegistry, tag)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 8: {
+                  int rawValue = input.readEnum();
+                  org.apache.mesos.Protos.Resource.DiskInfo.Source.Type value = org.apache.mesos.Protos.Resource.DiskInfo.Source.Type.valueOf(rawValue);
+                  if (value == null) {
+                    unknownFields.mergeVarintField(1, rawValue);
+                  } else {
+                    bitField0_ |= 0x00000001;
+                    type_ = value;
+                  }
+                  break;
+                }
+                case 18: {
+                  org.apache.mesos.Protos.Resource.DiskInfo.Source.Path.Builder subBuilder = null;
+                  if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                    subBuilder = path_.toBuilder();
+                  }
+                  path_ = input.readMessage(org.apache.mesos.Protos.Resource.DiskInfo.Source.Path.PARSER, extensionRegistry);
+                  if (subBuilder != null) {
+                    subBuilder.mergeFrom(path_);
+                    path_ = subBuilder.buildPartial();
+                  }
+                  bitField0_ |= 0x00000002;
+                  break;
+                }
+                case 26: {
+                  org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount.Builder subBuilder = null;
+                  if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                    subBuilder = mount_.toBuilder();
+                  }
+                  mount_ = input.readMessage(org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount.PARSER, extensionRegistry);
+                  if (subBuilder != null) {
+                    subBuilder.mergeFrom(mount_);
+                    mount_ = subBuilder.buildPartial();
+                  }
+                  bitField0_ |= 0x00000004;
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw e.setUnfinishedMessage(this);
+          } catch (java.io.IOException e) {
+            throw new com.google.protobuf.InvalidProtocolBufferException(
+                e.getMessage()).setUnfinishedMessage(this);
+          } finally {
+            this.unknownFields = unknownFields.build();
+            makeExtensionsImmutable();
+          }
+        }
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_Resource_DiskInfo_Source_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_Resource_DiskInfo_Source_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.Resource.DiskInfo.Source.class, org.apache.mesos.Protos.Resource.DiskInfo.Source.Builder.class);
+        }
+
+        public static com.google.protobuf.Parser<Source> PARSER =
+            new com.google.protobuf.AbstractParser<Source>() {
+          public Source parsePartialFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return new Source(input, extensionRegistry);
+          }
+        };
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<Source> getParserForType() {
+          return PARSER;
+        }
+
+        /**
+         * Protobuf enum {@code mesos.Resource.DiskInfo.Source.Type}
+         */
+        public enum Type
+            implements com.google.protobuf.ProtocolMessageEnum {
+          /**
+           * <code>UNKNOWN = 0;</code>
+           */
+          UNKNOWN(0, 0),
+          /**
+           * <code>PATH = 1;</code>
+           */
+          PATH(1, 1),
+          /**
+           * <code>MOUNT = 2;</code>
+           */
+          MOUNT(2, 2),
+          ;
+
+          /**
+           * <code>UNKNOWN = 0;</code>
+           */
+          public static final int UNKNOWN_VALUE = 0;
+          /**
+           * <code>PATH = 1;</code>
+           */
+          public static final int PATH_VALUE = 1;
+          /**
+           * <code>MOUNT = 2;</code>
+           */
+          public static final int MOUNT_VALUE = 2;
+
+
+          public final int getNumber() { return value; }
+
+          public static Type valueOf(int value) {
+            switch (value) {
+              case 0: return UNKNOWN;
+              case 1: return PATH;
+              case 2: return MOUNT;
+              default: return null;
+            }
+          }
+
+          public static com.google.protobuf.Internal.EnumLiteMap<Type>
+              internalGetValueMap() {
+            return internalValueMap;
+          }
+          private static com.google.protobuf.Internal.EnumLiteMap<Type>
+              internalValueMap =
+                new com.google.protobuf.Internal.EnumLiteMap<Type>() {
+                  public Type findValueByNumber(int number) {
+                    return Type.valueOf(number);
+                  }
+                };
+
+          public final com.google.protobuf.Descriptors.EnumValueDescriptor
+              getValueDescriptor() {
+            return getDescriptor().getValues().get(index);
+          }
+          public final com.google.protobuf.Descriptors.EnumDescriptor
+              getDescriptorForType() {
+            return getDescriptor();
+          }
+          public static final com.google.protobuf.Descriptors.EnumDescriptor
+              getDescriptor() {
+            return org.apache.mesos.Protos.Resource.DiskInfo.Source.getDescriptor().getEnumTypes().get(0);
+          }
+
+          private static final Type[] VALUES = values();
+
+          public static Type valueOf(
+              com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+            if (desc.getType() != getDescriptor()) {
+              throw new java.lang.IllegalArgumentException(
+                "EnumValueDescriptor is not for this type.");
+            }
+            return VALUES[desc.getIndex()];
+          }
+
+          private final int index;
+          private final int value;
+
+          private Type(int index, int value) {
+            this.index = index;
+            this.value = value;
+          }
+
+          // @@protoc_insertion_point(enum_scope:mesos.Resource.DiskInfo.Source.Type)
+        }
+
+        public interface PathOrBuilder
+            extends com.google.protobuf.MessageOrBuilder {
+
+          // optional string root = 1;
+          /**
+           * <code>optional string root = 1;</code>
+           *
+           * <pre>
+           * Path to the folder (e.g., /mnt/raid/disk0).
+           * </pre>
+           */
+          boolean hasRoot();
+          /**
+           * <code>optional string root = 1;</code>
+           *
+           * <pre>
+           * Path to the folder (e.g., /mnt/raid/disk0).
+           * </pre>
+           */
+          java.lang.String getRoot();
+          /**
+           * <code>optional string root = 1;</code>
+           *
+           * <pre>
+           * Path to the folder (e.g., /mnt/raid/disk0).
+           * </pre>
+           */
+          com.google.protobuf.ByteString
+              getRootBytes();
+        }
+        /**
+         * Protobuf type {@code mesos.Resource.DiskInfo.Source.Path}
+         *
+         * <pre>
+         * A folder that can be located on a separate disk device. This
+         * can be shared and carved up as necessary between frameworks.
+         * </pre>
+         */
+        public static final class Path extends
+            com.google.protobuf.GeneratedMessage
+            implements PathOrBuilder {
+          // Use Path.newBuilder() to construct.
+          private Path(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+            super(builder);
+            this.unknownFields = builder.getUnknownFields();
+          }
+          private Path(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+          private static final Path defaultInstance;
+          public static Path getDefaultInstance() {
+            return defaultInstance;
+          }
+
+          public Path getDefaultInstanceForType() {
+            return defaultInstance;
+          }
+
+          private final com.google.protobuf.UnknownFieldSet unknownFields;
+          @java.lang.Override
+          public final com.google.protobuf.UnknownFieldSet
+              getUnknownFields() {
+            return this.unknownFields;
+          }
+          private Path(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            initFields();
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+                com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+              boolean done = false;
+              while (!done) {
+                int tag = input.readTag();
+                switch (tag) {
+                  case 0:
+                    done = true;
+                    break;
+                  default: {
+                    if (!parseUnknownField(input, unknownFields,
+                                           extensionRegistry, tag)) {
+                      done = true;
+                    }
+                    break;
+                  }
+                  case 10: {
+                    bitField0_ |= 0x00000001;
+                    root_ = input.readBytes();
+                    break;
+                  }
+                }
+              }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+              throw new com.google.protobuf.InvalidProtocolBufferException(
+                  e.getMessage()).setUnfinishedMessage(this);
+            } finally {
+              this.unknownFields = unknownFields.build();
+              makeExtensionsImmutable();
+            }
+          }
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.Protos.internal_static_mesos_Resource_DiskInfo_Source_Path_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.Protos.internal_static_mesos_Resource_DiskInfo_Source_Path_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.Protos.Resource.DiskInfo.Source.Path.class, org.apache.mesos.Protos.Resource.DiskInfo.Source.Path.Builder.class);
+          }
+
+          public static com.google.protobuf.Parser<Path> PARSER =
+              new com.google.protobuf.AbstractParser<Path>() {
+            public Path parsePartialFrom(
+                com.google.protobuf.CodedInputStream input,
+                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+                throws com.google.protobuf.InvalidProtocolBufferException {
+              return new Path(input, extensionRegistry);
+            }
+          };
+
+          @java.lang.Override
+          public com.google.protobuf.Parser<Path> getParserForType() {
+            return PARSER;
+          }
+
+          private int bitField0_;
+          // optional string root = 1;
+          public static final int ROOT_FIELD_NUMBER = 1;
+          private java.lang.Object root_;
+          /**
+           * <code>optional string root = 1;</code>
+           *
+           * <pre>
+           * Path to the folder (e.g., /mnt/raid/disk0).
+           * </pre>
+           */
+          public boolean hasRoot() {
+            return ((bitField0_ & 0x00000001) == 0x00000001);
+          }
+          /**
+           * <code>optional string root = 1;</code>
+           *
+           * <pre>
+           * Path to the folder (e.g., /mnt/raid/disk0).
+           * </pre>
+           */
+          public java.lang.String getRoot() {
+            java.lang.Object ref = root_;
+            if (ref instanceof java.lang.String) {
+              return (java.lang.String) ref;
+            } else {
+              com.google.protobuf.ByteString bs = 
+                  (com.google.protobuf.ByteString) ref;
+              java.lang.String s = bs.toStringUtf8();
+              if (bs.isValidUtf8()) {
+                root_ = s;
+              }
+              return s;
+            }
+          }
+          /**
+           * <code>optional string root = 1;</code>
+           *
+           * <pre>
+           * Path to the folder (e.g., /mnt/raid/disk0).
+           * </pre>
+           */
+          public com.google.protobuf.ByteString
+              getRootBytes() {
+            java.lang.Object ref = root_;
+            if (ref instanceof java.lang.String) {
+              com.google.protobuf.ByteString b = 
+                  com.google.protobuf.ByteString.copyFromUtf8(
+                      (java.lang.String) ref);
+              root_ = b;
+              return b;
+            } else {
+              return (com.google.protobuf.ByteString) ref;
+            }
+          }
+
+          private void initFields() {
+            root_ = "";
+          }
+          private byte memoizedIsInitialized = -1;
+          public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized != -1) return isInitialized == 1;
+
+            memoizedIsInitialized = 1;
+            return true;
+          }
+
+          public void writeTo(com.google.protobuf.CodedOutputStream output)
+                              throws java.io.IOException {
+            getSerializedSize();
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              output.writeBytes(1, getRootBytes());
+            }
+            getUnknownFields().writeTo(output);
+          }
+
+          private int memoizedSerializedSize = -1;
+          public int getSerializedSize() {
+            int size = memoizedSerializedSize;
+            if (size != -1) return size;
+
+            size = 0;
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              size += com.google.protobuf.CodedOutputStream
+                .computeBytesSize(1, getRootBytes());
+            }
+            size += getUnknownFields().getSerializedSize();
+            memoizedSerializedSize = size;
+            return size;
+          }
+
+          private static final long serialVersionUID = 0L;
+          @java.lang.Override
+          protected java.lang.Object writeReplace()
+              throws java.io.ObjectStreamException {
+            return super.writeReplace();
+          }
+
+          public static org.apache.mesos.Protos.Resource.DiskInfo.Source.Path parseFrom(
+              com.google.protobuf.ByteString data)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+          }
+          public static org.apache.mesos.Protos.Resource.DiskInfo.Source.Path parseFrom(
+              com.google.protobuf.ByteString data,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+          }
+          public static org.apache.mesos.Protos.Resource.DiskInfo.Source.Path parseFrom(byte[] data)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+          }
+          public static org.apache.mesos.Protos.Resource.DiskInfo.Source.Path parseFrom(
+              byte[] data,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+          }
+          public static org.apache.mesos.Protos.Resource.DiskInfo.Source.Path parseFrom(java.io.InputStream input)
+              throws java.io.IOException {
+            return PARSER.parseFrom(input);
+          }
+          public static org.apache.mesos.Protos.Resource.DiskInfo.Source.Path parseFrom(
+              java.io.InputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            return PARSER.parseFrom(input, extensionRegistry);
+          }
+          public static org.apache.mesos.Protos.Resource.DiskInfo.Source.Path parseDelimitedFrom(java.io.InputStream input)
+              throws java.io.IOException {
+            return PARSER.parseDelimitedFrom(input);
+          }
+          public static org.apache.mesos.Protos.Resource.DiskInfo.Source.Path parseDelimitedFrom(
+              java.io.InputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            return PARSER.parseDelimitedFrom(input, extensionRegistry);
+          }
+          public static org.apache.mesos.Protos.Resource.DiskInfo.Source.Path parseFrom(
+              com.google.protobuf.CodedInputStream input)
+              throws java.io.IOException {
+            return PARSER.parseFrom(input);
+          }
+          public static org.apache.mesos.Protos.Resource.DiskInfo.Source.Path parseFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            return PARSER.parseFrom(input, extensionRegistry);
+          }
+
+          public static Builder newBuilder() { return Builder.create(); }
+          public Builder newBuilderForType() { return newBuilder(); }
+          public static Builder newBuilder(org.apache.mesos.Protos.Resource.DiskInfo.Source.Path prototype) {
+            return newBuilder().mergeFrom(prototype);
+          }
+          public Builder toBuilder() { return newBuilder(this); }
+
+          @java.lang.Override
+          protected Builder newBuilderForType(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+          }
+          /**
+           * Protobuf type {@code mesos.Resource.DiskInfo.Source.Path}
+           *
+           * <pre>
+           * A folder that can be located on a separate disk device. This
+           * can be shared and carved up as necessary between frameworks.
+           * </pre>
+           */
+          public static final class Builder extends
+              com.google.protobuf.GeneratedMessage.Builder<Builder>
+             implements org.apache.mesos.Protos.Resource.DiskInfo.Source.PathOrBuilder {
+            public static final com.google.protobuf.Descriptors.Descriptor
+                getDescriptor() {
+              return org.apache.mesos.Protos.internal_static_mesos_Resource_DiskInfo_Source_Path_descriptor;
+            }
+
+            protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+                internalGetFieldAccessorTable() {
+              return org.apache.mesos.Protos.internal_static_mesos_Resource_DiskInfo_Source_Path_fieldAccessorTable
+                  .ensureFieldAccessorsInitialized(
+                      org.apache.mesos.Protos.Resource.DiskInfo.Source.Path.class, org.apache.mesos.Protos.Resource.DiskInfo.Source.Path.Builder.class);
+            }
+
+            // Construct using org.apache.mesos.Protos.Resource.DiskInfo.Source.Path.newBuilder()
+            private Builder() {
+              maybeForceBuilderInitialization();
+            }
+
+            private Builder(
+                com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+              super(parent);
+              maybeForceBuilderInitialization();
+            }
+            private void maybeForceBuilderInitialization() {
+              if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+              }
+            }
+            private static Builder create() {
+              return new Builder();
+            }
+
+            public Builder clear() {
+              super.clear();
+              root_ = "";
+              bitField0_ = (bitField0_ & ~0x00000001);
+              return this;
+            }
+
+            public Builder clone() {
+              return create().mergeFrom(buildPartial());
+            }
+
+            public com.google.protobuf.Descriptors.Descriptor
+                getDescriptorForType() {
+              return org.apache.mesos.Protos.internal_static_mesos_Resource_DiskInfo_Source_Path_descriptor;
+            }
+
+            public org.apache.mesos.Protos.Resource.DiskInfo.Source.Path getDefaultInstanceForType() {
+              return org.apache.mesos.Protos.Resource.DiskInfo.Source.Path.getDefaultInstance();
+            }
+
+            public org.apache.mesos.Protos.Resource.DiskInfo.Source.Path build() {
+              org.apache.mesos.Protos.Resource.DiskInfo.Source.Path result = buildPartial();
+              if (!result.isInitialized()) {
+                throw newUninitializedMessageException(result);
+              }
+              return result;
+            }
+
+            public org.apache.mesos.Protos.Resource.DiskInfo.Source.Path buildPartial() {
+              org.apache.mesos.Protos.Resource.DiskInfo.Source.Path result = new org.apache.mesos.Protos.Resource.DiskInfo.Source.Path(this);
+              int from_bitField0_ = bitField0_;
+              int to_bitField0_ = 0;
+              if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+                to_bitField0_ |= 0x00000001;
+              }
+              result.root_ = root_;
+              result.bitField0_ = to_bitField0_;
+              onBuilt();
+              return result;
+            }
+
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+              if (other instanceof org.apache.mesos.Protos.Resource.DiskInfo.Source.Path) {
+                return mergeFrom((org.apache.mesos.Protos.Resource.DiskInfo.Source.Path)other);
+              } else {
+                super.mergeFrom(other);
+                return this;
+              }
+            }
+
+            public Builder mergeFrom(org.apache.mesos.Protos.Resource.DiskInfo.Source.Path other) {
+              if (other == org.apache.mesos.Protos.Resource.DiskInfo.Source.Path.getDefaultInstance()) return this;
+              if (other.hasRoot()) {
+                bitField0_ |= 0x00000001;
+                root_ = other.root_;
+                onChanged();
+              }
+              this.mergeUnknownFields(other.getUnknownFields());
+              return this;
+            }
+
+            public final boolean isInitialized() {
+              return true;
+            }
+
+            public Builder mergeFrom(
+                com.google.protobuf.CodedInputStream input,
+                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+                throws java.io.IOException {
+              org.apache.mesos.Protos.Resource.DiskInfo.Source.Path parsedMessage = null;
+              try {
+                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+              } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                parsedMessage = (org.apache.mesos.Protos.Resource.DiskInfo.Source.Path) e.getUnfinishedMessage();
+                throw e;
+              } finally {
+                if (parsedMessage != null) {
+                  mergeFrom(parsedMessage);
+                }
+              }
+              return this;
+            }
+            private int bitField0_;
+
+            // optional string root = 1;
+            private java.lang.Object root_ = "";
+            /**
+             * <code>optional string root = 1;</code>
+             *
+             * <pre>
+             * Path to the folder (e.g., /mnt/raid/disk0).
+             * </pre>
+             */
+            public boolean hasRoot() {
+              return ((bitField0_ & 0x00000001) == 0x00000001);
+            }
+            /**
+             * <code>optional string root = 1;</code>
+             *
+             * <pre>
+             * Path to the folder (e.g., /mnt/raid/disk0).
+             * </pre>
+             */
+            public java.lang.String getRoot() {
+              java.lang.Object ref = root_;
+              if (!(ref instanceof java.lang.String)) {
+                java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                    .toStringUtf8();
+                root_ = s;
+                return s;
+              } else {
+                return (java.lang.String) ref;
+              }
+            }
+            /**
+             * <code>optional string root = 1;</code>
+             *
+             * <pre>
+             * Path to the folder (e.g., /mnt/raid/disk0).
+             * </pre>
+             */
+            public com.google.protobuf.ByteString
+                getRootBytes() {
+              java.lang.Object ref = root_;
+              if (ref instanceof String) {
+                com.google.protobuf.ByteString b = 
+                    com.google.protobuf.ByteString.copyFromUtf8(
+                        (java.lang.String) ref);
+                root_ = b;
+                return b;
+              } else {
+                return (com.google.protobuf.ByteString) ref;
+              }
+            }
+            /**
+             * <code>optional string root = 1;</code>
+             *
+             * <pre>
+             * Path to the folder (e.g., /mnt/raid/disk0).
+             * </pre>
+             */
+            public Builder setRoot(
+                java.lang.String value) {
+              if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+              root_ = value;
+              onChanged();
+              return this;
+            }
+            /**
+             * <code>optional string root = 1;</code>
+             *
+             * <pre>
+             * Path to the folder (e.g., /mnt/raid/disk0).
+             * </pre>
+             */
+            public Builder clearRoot() {
+              bitField0_ = (bitField0_ & ~0x00000001);
+              root_ = getDefaultInstance().getRoot();
+              onChanged();
+              return this;
+            }
+            /**
+             * <code>optional string root = 1;</code>
+             *
+             * <pre>
+             * Path to the folder (e.g., /mnt/raid/disk0).
+             * </pre>
+             */
+            public Builder setRootBytes(
+                com.google.protobuf.ByteString value) {
+              if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+              root_ = value;
+              onChanged();
+              return this;
+            }
+
+            // @@protoc_insertion_point(builder_scope:mesos.Resource.DiskInfo.Source.Path)
+          }
+
+          static {
+            defaultInstance = new Path(true);
+            defaultInstance.initFields();
+          }
+
+          // @@protoc_insertion_point(class_scope:mesos.Resource.DiskInfo.Source.Path)
+        }
+
+        public interface MountOrBuilder
+            extends com.google.protobuf.MessageOrBuilder {
+
+          // optional string root = 1;
+          /**
+           * <code>optional string root = 1;</code>
+           *
+           * <pre>
+           * Path to mount point (e.g., /mnt/raid/disk0).
+           * </pre>
+           */
+          boolean hasRoot();
+          /**
+           * <code>optional string root = 1;</code>
+           *
+           * <pre>
+           * Path to mount point (e.g., /mnt/raid/disk0).
+           * </pre>
+           */
+          java.lang.String getRoot();
+          /**
+           * <code>optional string root = 1;</code>
+           *
+           * <pre>
+           * Path to mount point (e.g., /mnt/raid/disk0).
+           * </pre>
+           */
+          com.google.protobuf.ByteString
+              getRootBytes();
+        }
+        /**
+         * Protobuf type {@code mesos.Resource.DiskInfo.Source.Mount}
+         *
+         * <pre>
+         * A mounted file-system set up by the Agent administrator. This
+         * can only be used exclusively: a framework cannot accept a
+         * partial amount of this disk.
+         * </pre>
+         */
+        public static final class Mount extends
+            com.google.protobuf.GeneratedMessage
+            implements MountOrBuilder {
+          // Use Mount.newBuilder() to construct.
+          private Mount(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+            super(builder);
+            this.unknownFields = builder.getUnknownFields();
+          }
+          private Mount(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+          private static final Mount defaultInstance;
+          public static Mount getDefaultInstance() {
+            return defaultInstance;
+          }
+
+          public Mount getDefaultInstanceForType() {
+            return defaultInstance;
+          }
+
+          private final com.google.protobuf.UnknownFieldSet unknownFields;
+          @java.lang.Override
+          public final com.google.protobuf.UnknownFieldSet
+              getUnknownFields() {
+            return this.unknownFields;
+          }
+          private Mount(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            initFields();
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+                com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+              boolean done = false;
+              while (!done) {
+                int tag = input.readTag();
+                switch (tag) {
+                  case 0:
+                    done = true;
+                    break;
+                  default: {
+                    if (!parseUnknownField(input, unknownFields,
+                                           extensionRegistry, tag)) {
+                      done = true;
+                    }
+                    break;
+                  }
+                  case 10: {
+                    bitField0_ |= 0x00000001;
+                    root_ = input.readBytes();
+                    break;
+                  }
+                }
+              }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+              throw new com.google.protobuf.InvalidProtocolBufferException(
+                  e.getMessage()).setUnfinishedMessage(this);
+            } finally {
+              this.unknownFields = unknownFields.build();
+              makeExtensionsImmutable();
+            }
+          }
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.Protos.internal_static_mesos_Resource_DiskInfo_Source_Mount_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.Protos.internal_static_mesos_Resource_DiskInfo_Source_Mount_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount.class, org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount.Builder.class);
+          }
+
+          public static com.google.protobuf.Parser<Mount> PARSER =
+              new com.google.protobuf.AbstractParser<Mount>() {
+            public Mount parsePartialFrom(
+                com.google.protobuf.CodedInputStream input,
+                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+                throws com.google.protobuf.InvalidProtocolBufferException {
+              return new Mount(input, extensionRegistry);
+            }
+          };
+
+          @java.lang.Override
+          public com.google.protobuf.Parser<Mount> getParserForType() {
+            return PARSER;
+          }
+
+          private int bitField0_;
+          // optional string root = 1;
+          public static final int ROOT_FIELD_NUMBER = 1;
+          private java.lang.Object root_;
+          /**
+           * <code>optional string root = 1;</code>
+           *
+           * <pre>
+           * Path to mount point (e.g., /mnt/raid/disk0).
+           * </pre>
+           */
+          public boolean hasRoot() {
+            return ((bitField0_ & 0x00000001) == 0x00000001);
+          }
+          /**
+           * <code>optional string root = 1;</code>
+           *
+           * <pre>
+           * Path to mount point (e.g., /mnt/raid/disk0).
+           * </pre>
+           */
+          public java.lang.String getRoot() {
+            java.lang.Object ref = root_;
+            if (ref instanceof java.lang.String) {
+              return (java.lang.String) ref;
+            } else {
+              com.google.protobuf.ByteString bs = 
+                  (com.google.protobuf.ByteString) ref;
+              java.lang.String s = bs.toStringUtf8();
+              if (bs.isValidUtf8()) {
+                root_ = s;
+              }
+              return s;
+            }
+          }
+          /**
+           * <code>optional string root = 1;</code>
+           *
+           * <pre>
+           * Path to mount point (e.g., /mnt/raid/disk0).
+           * </pre>
+           */
+          public com.google.protobuf.ByteString
+              getRootBytes() {
+            java.lang.Object ref = root_;
+            if (ref instanceof java.lang.String) {
+              com.google.protobuf.ByteString b = 
+                  com.google.protobuf.ByteString.copyFromUtf8(
+                      (java.lang.String) ref);
+              root_ = b;
+              return b;
+            } else {
+              return (com.google.protobuf.ByteString) ref;
+            }
+          }
+
+          private void initFields() {
+            root_ = "";
+          }
+          private byte memoizedIsInitialized = -1;
+          public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized != -1) return isInitialized == 1;
+
+            memoizedIsInitialized = 1;
+            return true;
+          }
+
+          public void writeTo(com.google.protobuf.CodedOutputStream output)
+                              throws java.io.IOException {
+            getSerializedSize();
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              output.writeBytes(1, getRootBytes());
+            }
+            getUnknownFields().writeTo(output);
+          }
+
+          private int memoizedSerializedSize = -1;
+          public int getSerializedSize() {
+            int size = memoizedSerializedSize;
+            if (size != -1) return size;
+
+            size = 0;
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              size += com.google.protobuf.CodedOutputStream
+                .computeBytesSize(1, getRootBytes());
+            }
+            size += getUnknownFields().getSerializedSize();
+            memoizedSerializedSize = size;
+            return size;
+          }
+
+          private static final long serialVersionUID = 0L;
+          @java.lang.Override
+          protected java.lang.Object writeReplace()
+              throws java.io.ObjectStreamException {
+            return super.writeReplace();
+          }
+
+          public static org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount parseFrom(
+              com.google.protobuf.ByteString data)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+          }
+          public static org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount parseFrom(
+              com.google.protobuf.ByteString data,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+          }
+          public static org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount parseFrom(byte[] data)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+          }
+          public static org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount parseFrom(
+              byte[] data,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+          }
+          public static org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount parseFrom(java.io.InputStream input)
+              throws java.io.IOException {
+            return PARSER.parseFrom(input);
+          }
+          public static org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount parseFrom(
+              java.io.InputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            return PARSER.parseFrom(input, extensionRegistry);
+          }
+          public static org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount parseDelimitedFrom(java.io.InputStream input)
+              throws java.io.IOException {
+            return PARSER.parseDelimitedFrom(input);
+          }
+          public static org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount parseDelimitedFrom(
+              java.io.InputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            return PARSER.parseDelimitedFrom(input, extensionRegistry);
+          }
+          public static org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount parseFrom(
+              com.google.protobuf.CodedInputStream input)
+              throws java.io.IOException {
+            return PARSER.parseFrom(input);
+          }
+          public static org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount parseFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            return PARSER.parseFrom(input, extensionRegistry);
+          }
+
+          public static Builder newBuilder() { return Builder.create(); }
+          public Builder newBuilderForType() { return newBuilder(); }
+          public static Builder newBuilder(org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount prototype) {
+            return newBuilder().mergeFrom(prototype);
+          }
+          public Builder toBuilder() { return newBuilder(this); }
+
+          @java.lang.Override
+          protected Builder newBuilderForType(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+          }
+          /**
+           * Protobuf type {@code mesos.Resource.DiskInfo.Source.Mount}
+           *
+           * <pre>
+           * A mounted file-system set up by the Agent administrator. This
+           * can only be used exclusively: a framework cannot accept a
+           * partial amount of this disk.
+           * </pre>
+           */
+          public static final class Builder extends
+              com.google.protobuf.GeneratedMessage.Builder<Builder>
+             implements org.apache.mesos.Protos.Resource.DiskInfo.Source.MountOrBuilder {
+            public static final com.google.protobuf.Descriptors.Descriptor
+                getDescriptor() {
+              return org.apache.mesos.Protos.internal_static_mesos_Resource_DiskInfo_Source_Mount_descriptor;
+            }
+
+            protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+                internalGetFieldAccessorTable() {
+              return org.apache.mesos.Protos.internal_static_mesos_Resource_DiskInfo_Source_Mount_fieldAccessorTable
+                  .ensureFieldAccessorsInitialized(
+                      org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount.class, org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount.Builder.class);
+            }
+
+            // Construct using org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount.newBuilder()
+            private Builder() {
+              maybeForceBuilderInitialization();
+            }
+
+            private Builder(
+                com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+              super(parent);
+              maybeForceBuilderInitialization();
+            }
+            private void maybeForceBuilderInitialization() {
+              if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+              }
+            }
+            private static Builder create() {
+              return new Builder();
+            }
+
+            public Builder clear() {
+              super.clear();
+              root_ = "";
+              bitField0_ = (bitField0_ & ~0x00000001);
+              return this;
+            }
+
+            public Builder clone() {
+              return create().mergeFrom(buildPartial());
+            }
+
+            public com.google.protobuf.Descriptors.Descriptor
+                getDescriptorForType() {
+              return org.apache.mesos.Protos.internal_static_mesos_Resource_DiskInfo_Source_Mount_descriptor;
+            }
+
+            public org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount getDefaultInstanceForType() {
+              return org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount.getDefaultInstance();
+            }
+
+            public org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount build() {
+              org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount result = buildPartial();
+              if (!result.isInitialized()) {
+                throw newUninitializedMessageException(result);
+              }
+              return result;
+            }
+
+            public org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount buildPartial() {
+              org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount result = new org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount(this);
+              int from_bitField0_ = bitField0_;
+              int to_bitField0_ = 0;
+              if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+                to_bitField0_ |= 0x00000001;
+              }
+              result.root_ = root_;
+              result.bitField0_ = to_bitField0_;
+              onBuilt();
+              return result;
+            }
+
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+              if (other instanceof org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount) {
+                return mergeFrom((org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount)other);
+              } else {
+                super.mergeFrom(other);
+                return this;
+              }
+            }
+
+            public Builder mergeFrom(org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount other) {
+              if (other == org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount.getDefaultInstance()) return this;
+              if (other.hasRoot()) {
+                bitField0_ |= 0x00000001;
+                root_ = other.root_;
+                onChanged();
+              }
+              this.mergeUnknownFields(other.getUnknownFields());
+              return this;
+            }
+
+            public final boolean isInitialized() {
+              return true;
+            }
+
+            public Builder mergeFrom(
+                com.google.protobuf.CodedInputStream input,
+                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+                throws java.io.IOException {
+              org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount parsedMessage = null;
+              try {
+                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+              } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                parsedMessage = (org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount) e.getUnfinishedMessage();
+                throw e;
+              } finally {
+                if (parsedMessage != null) {
+                  mergeFrom(parsedMessage);
+                }
+              }
+              return this;
+            }
+            private int bitField0_;
+
+            // optional string root = 1;
+            private java.lang.Object root_ = "";
+            /**
+             * <code>optional string root = 1;</code>
+             *
+             * <pre>
+             * Path to mount point (e.g., /mnt/raid/disk0).
+             * </pre>
+             */
+            public boolean hasRoot() {
+              return ((bitField0_ & 0x00000001) == 0x00000001);
+            }
+            /**
+             * <code>optional string root = 1;</code>
+             *
+             * <pre>
+             * Path to mount point (e.g., /mnt/raid/disk0).
+             * </pre>
+             */
+            public java.lang.String getRoot() {
+              java.lang.Object ref = root_;
+              if (!(ref instanceof java.lang.String)) {
+                java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                    .toStringUtf8();
+                root_ = s;
+                return s;
+              } else {
+                return (java.lang.String) ref;
+              }
+            }
+            /**
+             * <code>optional string root = 1;</code>
+             *
+             * <pre>
+             * Path to mount point (e.g., /mnt/raid/disk0).
+             * </pre>
+             */
+            public com.google.protobuf.ByteString
+                getRootBytes() {
+              java.lang.Object ref = root_;
+              if (ref instanceof String) {
+                com.google.protobuf.ByteString b = 
+                    com.google.protobuf.ByteString.copyFromUtf8(
+                        (java.lang.String) ref);
+                root_ = b;
+                return b;
+              } else {
+                return (com.google.protobuf.ByteString) ref;
+              }
+            }
+            /**
+             * <code>optional string root = 1;</code>
+             *
+             * <pre>
+             * Path to mount point (e.g., /mnt/raid/disk0).
+             * </pre>
+             */
+            public Builder setRoot(
+                java.lang.String value) {
+              if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+              root_ = value;
+              onChanged();
+              return this;
+            }
+            /**
+             * <code>optional string root = 1;</code>
+             *
+             * <pre>
+             * Path to mount point (e.g., /mnt/raid/disk0).
+             * </pre>
+             */
+            public Builder clearRoot() {
+              bitField0_ = (bitField0_ & ~0x00000001);
+              root_ = getDefaultInstance().getRoot();
+              onChanged();
+              return this;
+            }
+            /**
+             * <code>optional string root = 1;</code>
+             *
+             * <pre>
+             * Path to mount point (e.g., /mnt/raid/disk0).
+             * </pre>
+             */
+            public Builder setRootBytes(
+                com.google.protobuf.ByteString value) {
+              if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+              root_ = value;
+              onChanged();
+              return this;
+            }
+
+            // @@protoc_insertion_point(builder_scope:mesos.Resource.DiskInfo.Source.Mount)
+          }
+
+          static {
+            defaultInstance = new Mount(true);
+            defaultInstance.initFields();
+          }
+
+          // @@protoc_insertion_point(class_scope:mesos.Resource.DiskInfo.Source.Mount)
+        }
+
+        private int bitField0_;
+        // required .mesos.Resource.DiskInfo.Source.Type type = 1;
+        public static final int TYPE_FIELD_NUMBER = 1;
+        private org.apache.mesos.Protos.Resource.DiskInfo.Source.Type type_;
+        /**
+         * <code>required .mesos.Resource.DiskInfo.Source.Type type = 1;</code>
+         */
+        public boolean hasType() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.Resource.DiskInfo.Source.Type type = 1;</code>
+         */
+        public org.apache.mesos.Protos.Resource.DiskInfo.Source.Type getType() {
+          return type_;
+        }
+
+        // optional .mesos.Resource.DiskInfo.Source.Path path = 2;
+        public static final int PATH_FIELD_NUMBER = 2;
+        private org.apache.mesos.Protos.Resource.DiskInfo.Source.Path path_;
+        /**
+         * <code>optional .mesos.Resource.DiskInfo.Source.Path path = 2;</code>
+         */
+        public boolean hasPath() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional .mesos.Resource.DiskInfo.Source.Path path = 2;</code>
+         */
+        public org.apache.mesos.Protos.Resource.DiskInfo.Source.Path getPath() {
+          return path_;
+        }
+        /**
+         * <code>optional .mesos.Resource.DiskInfo.Source.Path path = 2;</code>
+         */
+        public org.apache.mesos.Protos.Resource.DiskInfo.Source.PathOrBuilder getPathOrBuilder() {
+          return path_;
+        }
+
+        // optional .mesos.Resource.DiskInfo.Source.Mount mount = 3;
+        public static final int MOUNT_FIELD_NUMBER = 3;
+        private org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount mount_;
+        /**
+         * <code>optional .mesos.Resource.DiskInfo.Source.Mount mount = 3;</code>
+         */
+        public boolean hasMount() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional .mesos.Resource.DiskInfo.Source.Mount mount = 3;</code>
+         */
+        public org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount getMount() {
+          return mount_;
+        }
+        /**
+         * <code>optional .mesos.Resource.DiskInfo.Source.Mount mount = 3;</code>
+         */
+        public org.apache.mesos.Protos.Resource.DiskInfo.Source.MountOrBuilder getMountOrBuilder() {
+          return mount_;
+        }
+
+        private void initFields() {
+          type_ = org.apache.mesos.Protos.Resource.DiskInfo.Source.Type.UNKNOWN;
+          path_ = org.apache.mesos.Protos.Resource.DiskInfo.Source.Path.getDefaultInstance();
+          mount_ = org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount.getDefaultInstance();
+        }
+        private byte memoizedIsInitialized = -1;
+        public final boolean isInitialized() {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized != -1) return isInitialized == 1;
+
+          if (!hasType()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+          memoizedIsInitialized = 1;
+          return true;
+        }
+
+        public void writeTo(com.google.protobuf.CodedOutputStream output)
+                            throws java.io.IOException {
+          getSerializedSize();
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            output.writeEnum(1, type_.getNumber());
+          }
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            output.writeMessage(2, path_);
+          }
+          if (((bitField0_ & 0x00000004) == 0x00000004)) {
+            output.writeMessage(3, mount_);
+          }
+          getUnknownFields().writeTo(output);
+        }
+
+        private int memoizedSerializedSize = -1;
+        public int getSerializedSize() {
+          int size = memoizedSerializedSize;
+          if (size != -1) return size;
+
+          size = 0;
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeEnumSize(1, type_.getNumber());
+          }
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeMessageSize(2, path_);
+          }
+          if (((bitField0_ & 0x00000004) == 0x00000004)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeMessageSize(3, mount_);
+          }
+          size += getUnknownFields().getSerializedSize();
+          memoizedSerializedSize = size;
+          return size;
+        }
+
+        private static final long serialVersionUID = 0L;
+        @java.lang.Override
+        protected java.lang.Object writeReplace()
+            throws java.io.ObjectStreamException {
+          return super.writeReplace();
+        }
+
+        public static org.apache.mesos.Protos.Resource.DiskInfo.Source parseFrom(
+            com.google.protobuf.ByteString data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.Protos.Resource.DiskInfo.Source parseFrom(
+            com.google.protobuf.ByteString data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.Resource.DiskInfo.Source parseFrom(byte[] data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.Protos.Resource.DiskInfo.Source parseFrom(
+            byte[] data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.Resource.DiskInfo.Source parseFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.Protos.Resource.DiskInfo.Source parseFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.Resource.DiskInfo.Source parseDelimitedFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input);
+        }
+        public static org.apache.mesos.Protos.Resource.DiskInfo.Source parseDelimitedFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.Resource.DiskInfo.Source parseFrom(
+            com.google.protobuf.CodedInputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.Protos.Resource.DiskInfo.Source parseFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+
+        public static Builder newBuilder() { return Builder.create(); }
+        public Builder newBuilderForType() { return newBuilder(); }
+        public static Builder newBuilder(org.apache.mesos.Protos.Resource.DiskInfo.Source prototype) {
+          return newBuilder().mergeFrom(prototype);
+        }
+        public Builder toBuilder() { return newBuilder(this); }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          Builder builder = new Builder(parent);
+          return builder;
+        }
+        /**
+         * Protobuf type {@code mesos.Resource.DiskInfo.Source}
+         *
+         * <pre>
+         * Describes where a disk originates from.
+         * TODO(jmlvanre): Add support for BLOCK devices.
+         * </pre>
+         */
+        public static final class Builder extends
+            com.google.protobuf.GeneratedMessage.Builder<Builder>
+           implements org.apache.mesos.Protos.Resource.DiskInfo.SourceOrBuilder {
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.Protos.internal_static_mesos_Resource_DiskInfo_Source_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.Protos.internal_static_mesos_Resource_DiskInfo_Source_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.Protos.Resource.DiskInfo.Source.class, org.apache.mesos.Protos.Resource.DiskInfo.Source.Builder.class);
+          }
+
+          // Construct using org.apache.mesos.Protos.Resource.DiskInfo.Source.newBuilder()
+          private Builder() {
+            maybeForceBuilderInitialization();
+          }
+
+          private Builder(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            super(parent);
+            maybeForceBuilderInitialization();
+          }
+          private void maybeForceBuilderInitialization() {
+            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+              getPathFieldBuilder();
+              getMountFieldBuilder();
+            }
+          }
+          private static Builder create() {
+            return new Builder();
+          }
+
+          public Builder clear() {
+            super.clear();
+            type_ = org.apache.mesos.Protos.Resource.DiskInfo.Source.Type.UNKNOWN;
+            bitField0_ = (bitField0_ & ~0x00000001);
+            if (pathBuilder_ == null) {
+              path_ = org.apache.mesos.Protos.Resource.DiskInfo.Source.Path.getDefaultInstance();
+            } else {
+              pathBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000002);
+            if (mountBuilder_ == null) {
+              mount_ = org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount.getDefaultInstance();
+            } else {
+              mountBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000004);
+            return this;
+          }
+
+          public Builder clone() {
+            return create().mergeFrom(buildPartial());
+          }
+
+          public com.google.protobuf.Descriptors.Descriptor
+              getDescriptorForType() {
+            return org.apache.mesos.Protos.internal_static_mesos_Resource_DiskInfo_Source_descriptor;
+          }
+
+          public org.apache.mesos.Protos.Resource.DiskInfo.Source getDefaultInstanceForType() {
+            return org.apache.mesos.Protos.Resource.DiskInfo.Source.getDefaultInstance();
+          }
+
+          public org.apache.mesos.Protos.Resource.DiskInfo.Source build() {
+            org.apache.mesos.Protos.Resource.DiskInfo.Source result = buildPartial();
+            if (!result.isInitialized()) {
+              throw newUninitializedMessageException(result);
+            }
+            return result;
+          }
+
+          public org.apache.mesos.Protos.Resource.DiskInfo.Source buildPartial() {
+            org.apache.mesos.Protos.Resource.DiskInfo.Source result = new org.apache.mesos.Protos.Resource.DiskInfo.Source(this);
+            int from_bitField0_ = bitField0_;
+            int to_bitField0_ = 0;
+            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+              to_bitField0_ |= 0x00000001;
+            }
+            result.type_ = type_;
+            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+              to_bitField0_ |= 0x00000002;
+            }
+            if (pathBuilder_ == null) {
+              result.path_ = path_;
+            } else {
+              result.path_ = pathBuilder_.build();
+            }
+            if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+              to_bitField0_ |= 0x00000004;
+            }
+            if (mountBuilder_ == null) {
+              result.mount_ = mount_;
+            } else {
+              result.mount_ = mountBuilder_.build();
+            }
+            result.bitField0_ = to_bitField0_;
+            onBuilt();
+            return result;
+          }
+
+          public Builder mergeFrom(com.google.protobuf.Message other) {
+            if (other instanceof org.apache.mesos.Protos.Resource.DiskInfo.Source) {
+              return mergeFrom((org.apache.mesos.Protos.Resource.DiskInfo.Source)other);
+            } else {
+              super.mergeFrom(other);
+              return this;
+            }
+          }
+
+          public Builder mergeFrom(org.apache.mesos.Protos.Resource.DiskInfo.Source other) {
+            if (other == org.apache.mesos.Protos.Resource.DiskInfo.Source.getDefaultInstance()) return this;
+            if (other.hasType()) {
+              setType(other.getType());
+            }
+            if (other.hasPath()) {
+              mergePath(other.getPath());
+            }
+            if (other.hasMount()) {
+              mergeMount(other.getMount());
+            }
+            this.mergeUnknownFields(other.getUnknownFields());
+            return this;
+          }
+
+          public final boolean isInitialized() {
+            if (!hasType()) {
+              
+              return false;
+            }
+            return true;
+          }
+
+          public Builder mergeFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            org.apache.mesos.Protos.Resource.DiskInfo.Source parsedMessage = null;
+            try {
+              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              parsedMessage = (org.apache.mesos.Protos.Resource.DiskInfo.Source) e.getUnfinishedMessage();
+              throw e;
+            } finally {
+              if (parsedMessage != null) {
+                mergeFrom(parsedMessage);
+              }
+            }
+            return this;
+          }
+          private int bitField0_;
+
+          // required .mesos.Resource.DiskInfo.Source.Type type = 1;
+          private org.apache.mesos.Protos.Resource.DiskInfo.Source.Type type_ = org.apache.mesos.Protos.Resource.DiskInfo.Source.Type.UNKNOWN;
+          /**
+           * <code>required .mesos.Resource.DiskInfo.Source.Type type = 1;</code>
+           */
+          public boolean hasType() {
+            return ((bitField0_ & 0x00000001) == 0x00000001);
+          }
+          /**
+           * <code>required .mesos.Resource.DiskInfo.Source.Type type = 1;</code>
+           */
+          public org.apache.mesos.Protos.Resource.DiskInfo.Source.Type getType() {
+            return type_;
+          }
+          /**
+           * <code>required .mesos.Resource.DiskInfo.Source.Type type = 1;</code>
+           */
+          public Builder setType(org.apache.mesos.Protos.Resource.DiskInfo.Source.Type value) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            bitField0_ |= 0x00000001;
+            type_ = value;
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>required .mesos.Resource.DiskInfo.Source.Type type = 1;</code>
+           */
+          public Builder clearType() {
+            bitField0_ = (bitField0_ & ~0x00000001);
+            type_ = org.apache.mesos.Protos.Resource.DiskInfo.Source.Type.UNKNOWN;
+            onChanged();
+            return this;
+          }
+
+          // optional .mesos.Resource.DiskInfo.Source.Path path = 2;
+          private org.apache.mesos.Protos.Resource.DiskInfo.Source.Path path_ = org.apache.mesos.Protos.Resource.DiskInfo.Source.Path.getDefaultInstance();
+          private com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Resource.DiskInfo.Source.Path, org.apache.mesos.Protos.Resource.DiskInfo.Source.Path.Builder, org.apache.mesos.Protos.Resource.DiskInfo.Source.PathOrBuilder> pathBuilder_;
+          /**
+           * <code>optional .mesos.Resource.DiskInfo.Source.Path path = 2;</code>
+           */
+          public boolean hasPath() {
+            return ((bitField0_ & 0x00000002) == 0x00000002);
+          }
+          /**
+           * <code>optional .mesos.Resource.DiskInfo.Source.Path path = 2;</code>
+           */
+          public org.apache.mesos.Protos.Resource.DiskInfo.Source.Path getPath() {
+            if (pathBuilder_ == null) {
+              return path_;
+            } else {
+              return pathBuilder_.getMessage();
+            }
+          }
+          /**
+           * <code>optional .mesos.Resource.DiskInfo.Source.Path path = 2;</code>
+           */
+          public Builder setPath(org.apache.mesos.Protos.Resource.DiskInfo.Source.Path value) {
+            if (pathBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              path_ = value;
+              onChanged();
+            } else {
+              pathBuilder_.setMessage(value);
+            }
+            bitField0_ |= 0x00000002;
+            return this;
+          }
+          /**
+           * <code>optional .mesos.Resource.DiskInfo.Source.Path path = 2;</code>
+           */
+          public Builder setPath(
+              org.apache.mesos.Protos.Resource.DiskInfo.Source.Path.Builder builderForValue) {
+            if (pathBuilder_ == null) {
+              path_ = builderForValue.build();
+              onChanged();
+            } else {
+              pathBuilder_.setMessage(builderForValue.build());
+            }
+            bitField0_ |= 0x00000002;
+            return this;
+          }
+          /**
+           * <code>optional .mesos.Resource.DiskInfo.Source.Path path = 2;</code>
+           */
+          public Builder mergePath(org.apache.mesos.Protos.Resource.DiskInfo.Source.Path value) {
+            if (pathBuilder_ == null) {
+              if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                  path_ != org.apache.mesos.Protos.Resource.DiskInfo.Source.Path.getDefaultInstance()) {
+                path_ =
+                  org.apache.mesos.Protos.Resource.DiskInfo.Source.Path.newBuilder(path_).mergeFrom(value).buildPartial();
+              } else {
+                path_ = value;
+              }
+              onChanged();
+            } else {
+              pathBuilder_.mergeFrom(value);
+            }
+            bitField0_ |= 0x00000002;
+            return this;
+          }
+          /**
+           * <code>optional .mesos.Resource.DiskInfo.Source.Path path = 2;</code>
+           */
+          public Builder clearPath() {
+            if (pathBuilder_ == null) {
+              path_ = org.apache.mesos.Protos.Resource.DiskInfo.Source.Path.getDefaultInstance();
+              onChanged();
+            } else {
+              pathBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000002);
+            return this;
+          }
+          /**
+           * <code>optional .mesos.Resource.DiskInfo.Source.Path path = 2;</code>
+           */
+          public org.apache.mesos.Protos.Resource.DiskInfo.Source.Path.Builder getPathBuilder() {
+            bitField0_ |= 0x00000002;
+            onChanged();
+            return getPathFieldBuilder().getBuilder();
+          }
+          /**
+           * <code>optional .mesos.Resource.DiskInfo.Source.Path path = 2;</code>
+           */
+          public org.apache.mesos.Protos.Resource.DiskInfo.Source.PathOrBuilder getPathOrBuilder() {
+            if (pathBuilder_ != null) {
+              return pathBuilder_.getMessageOrBuilder();
+            } else {
+              return path_;
+            }
+          }
+          /**
+           * <code>optional .mesos.Resource.DiskInfo.Source.Path path = 2;</code>
+           */
+          private com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Resource.DiskInfo.Source.Path, org.apache.mesos.Protos.Resource.DiskInfo.Source.Path.Builder, org.apache.mesos.Protos.Resource.DiskInfo.Source.PathOrBuilder> 
+              getPathFieldBuilder() {
+            if (pathBuilder_ == null) {
+              pathBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                  org.apache.mesos.Protos.Resource.DiskInfo.Source.Path, org.apache.mesos.Protos.Resource.DiskInfo.Source.Path.Builder, org.apache.mesos.Protos.Resource.DiskInfo.Source.PathOrBuilder>(
+                      path_,
+                      getParentForChildren(),
+                      isClean());
+              path_ = null;
+            }
+            return pathBuilder_;
+          }
+
+          // optional .mesos.Resource.DiskInfo.Source.Mount mount = 3;
+          private org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount mount_ = org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount.getDefaultInstance();
+          private com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount, org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount.Builder, org.apache.mesos.Protos.Resource.DiskInfo.Source.MountOrBuilder> mountBuilder_;
+          /**
+           * <code>optional .mesos.Resource.DiskInfo.Source.Mount mount = 3;</code>
+           */
+          public boolean hasMount() {
+            return ((bitField0_ & 0x00000004) == 0x00000004);
+          }
+          /**
+           * <code>optional .mesos.Resource.DiskInfo.Source.Mount mount = 3;</code>
+           */
+          public org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount getMount() {
+            if (mountBuilder_ == null) {
+              return mount_;
+            } else {
+              return mountBuilder_.getMessage();
+            }
+          }
+          /**
+           * <code>optional .mesos.Resource.DiskInfo.Source.Mount mount = 3;</code>
+           */
+          public Builder setMount(org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount value) {
+            if (mountBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              mount_ = value;
+              onChanged();
+            } else {
+              mountBuilder_.setMessage(value);
+            }
+            bitField0_ |= 0x00000004;
+            return this;
+          }
+          /**
+           * <code>optional .mesos.Resource.DiskInfo.Source.Mount mount = 3;</code>
+           */
+          public Builder setMount(
+              org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount.Builder builderForValue) {
+            if (mountBuilder_ == null) {
+              mount_ = builderForValue.build();
+              onChanged();
+            } else {
+              mountBuilder_.setMessage(builderForValue.build());
+            }
+            bitField0_ |= 0x00000004;
+            return this;
+          }
+          /**
+           * <code>optional .mesos.Resource.DiskInfo.Source.Mount mount = 3;</code>
+           */
+          public Builder mergeMount(org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount value) {
+            if (mountBuilder_ == null) {
+              if (((bitField0_ & 0x00000004) == 0x00000004) &&
+                  mount_ != org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount.getDefaultInstance()) {
+                mount_ =
+                  org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount.newBuilder(mount_).mergeFrom(value).buildPartial();
+              } else {
+                mount_ = value;
+              }
+              onChanged();
+            } else {
+              mountBuilder_.mergeFrom(value);
+            }
+            bitField0_ |= 0x00000004;
+            return this;
+          }
+          /**
+           * <code>optional .mesos.Resource.DiskInfo.Source.Mount mount = 3;</code>
+           */
+          public Builder clearMount() {
+            if (mountBuilder_ == null) {
+              mount_ = org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount.getDefaultInstance();
+              onChanged();
+            } else {
+              mountBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000004);
+            return this;
+          }
+          /**
+           * <code>optional .mesos.Resource.DiskInfo.Source.Mount mount = 3;</code>
+           */
+          public org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount.Builder getMountBuilder() {
+            bitField0_ |= 0x00000004;
+            onChanged();
+            return getMountFieldBuilder().getBuilder();
+          }
+          /**
+           * <code>optional .mesos.Resource.DiskInfo.Source.Mount mount = 3;</code>
+           */
+          public org.apache.mesos.Protos.Resource.DiskInfo.Source.MountOrBuilder getMountOrBuilder() {
+            if (mountBuilder_ != null) {
+              return mountBuilder_.getMessageOrBuilder();
+            } else {
+              return mount_;
+            }
+          }
+          /**
+           * <code>optional .mesos.Resource.DiskInfo.Source.Mount mount = 3;</code>
+           */
+          private com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount, org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount.Builder, org.apache.mesos.Protos.Resource.DiskInfo.Source.MountOrBuilder> 
+              getMountFieldBuilder() {
+            if (mountBuilder_ == null) {
+              mountBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                  org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount, org.apache.mesos.Protos.Resource.DiskInfo.Source.Mount.Builder, org.apache.mesos.Protos.Resource.DiskInfo.Source.MountOrBuilder>(
+                      mount_,
+                      getParentForChildren(),
+                      isClean());
+              mount_ = null;
+            }
+            return mountBuilder_;
+          }
+
+          // @@protoc_insertion_point(builder_scope:mesos.Resource.DiskInfo.Source)
+        }
+
+        static {
+          defaultInstance = new Source(true);
+          defaultInstance.initFields();
+        }
+
+        // @@protoc_insertion_point(class_scope:mesos.Resource.DiskInfo.Source)
+      }
+
+      private int bitField0_;
+      // optional .mesos.Resource.DiskInfo.Persistence persistence = 1;
+      public static final int PERSISTENCE_FIELD_NUMBER = 1;
+      private org.apache.mesos.Protos.Resource.DiskInfo.Persistence persistence_;
+      /**
+       * <code>optional .mesos.Resource.DiskInfo.Persistence persistence = 1;</code>
+       */
+      public boolean hasPersistence() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.Resource.DiskInfo.Persistence persistence = 1;</code>
+       */
+      public org.apache.mesos.Protos.Resource.DiskInfo.Persistence getPersistence() {
+        return persistence_;
+      }
+      /**
+       * <code>optional .mesos.Resource.DiskInfo.Persistence persistence = 1;</code>
+       */
+      public org.apache.mesos.Protos.Resource.DiskInfo.PersistenceOrBuilder getPersistenceOrBuilder() {
+        return persistence_;
+      }
+
+      // optional .mesos.Volume volume = 2;
+      public static final int VOLUME_FIELD_NUMBER = 2;
+      private org.apache.mesos.Protos.Volume volume_;
+      /**
+       * <code>optional .mesos.Volume volume = 2;</code>
+       *
+       * <pre>
+       * Describes how this disk resource will be mounted in the
+       * container. If not set, the disk resource will be used as the
+       * sandbox. Otherwise, it will be mounted according to the
+       * 'container_path' inside 'volume'. The 'host_path' inside
+       * 'volume' is ignored.
+       * NOTE: If 'volume' is set but 'persistence' is not set, the
+       * volume will be automatically garbage collected after
+       * task/executor terminates. Currently, if 'persistence' is set,
+       * 'volume' must be set.
+       * </pre>
+       */
+      public boolean hasVolume() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.Volume volume = 2;</code>
+       *
+       * <pre>
+       * Describes how this disk resource will be mounted in the
+       * container. If not set, the disk resource will be used as the
+       * sandbox. Otherwise, it will be mounted according to the
+       * 'container_path' inside 'volume'. The 'host_path' inside
+       * 'volume' is ignored.
+       * NOTE: If 'volume' is set but 'persistence' is not set, the
+       * volume will be automatically garbage collected after
+       * task/executor terminates. Currently, if 'persistence' is set,
+       * 'volume' must be set.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Volume getVolume() {
+        return volume_;
+      }
+      /**
+       * <code>optional .mesos.Volume volume = 2;</code>
+       *
+       * <pre>
+       * Describes how this disk resource will be mounted in the
+       * container. If not set, the disk resource will be used as the
+       * sandbox. Otherwise, it will be mounted according to the
+       * 'container_path' inside 'volume'. The 'host_path' inside
+       * 'volume' is ignored.
+       * NOTE: If 'volume' is set but 'persistence' is not set, the
+       * volume will be automatically garbage collected after
+       * task/executor terminates. Currently, if 'persistence' is set,
+       * 'volume' must be set.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.VolumeOrBuilder getVolumeOrBuilder() {
+        return volume_;
+      }
+
+      // optional .mesos.Resource.DiskInfo.Source source = 3;
+      public static final int SOURCE_FIELD_NUMBER = 3;
+      private org.apache.mesos.Protos.Resource.DiskInfo.Source source_;
+      /**
+       * <code>optional .mesos.Resource.DiskInfo.Source source = 3;</code>
+       */
+      public boolean hasSource() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.Resource.DiskInfo.Source source = 3;</code>
+       */
+      public org.apache.mesos.Protos.Resource.DiskInfo.Source getSource() {
+        return source_;
+      }
+      /**
+       * <code>optional .mesos.Resource.DiskInfo.Source source = 3;</code>
+       */
+      public org.apache.mesos.Protos.Resource.DiskInfo.SourceOrBuilder getSourceOrBuilder() {
+        return source_;
+      }
+
+      private void initFields() {
+        persistence_ = org.apache.mesos.Protos.Resource.DiskInfo.Persistence.getDefaultInstance();
+        volume_ = org.apache.mesos.Protos.Volume.getDefaultInstance();
+        source_ = org.apache.mesos.Protos.Resource.DiskInfo.Source.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (hasPersistence()) {
+          if (!getPersistence().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        if (hasVolume()) {
+          if (!getVolume().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        if (hasSource()) {
+          if (!getSource().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, persistence_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeMessage(2, volume_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeMessage(3, source_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, persistence_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(2, volume_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(3, source_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.Protos.Resource.DiskInfo parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.Resource.DiskInfo parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Resource.DiskInfo parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.Resource.DiskInfo parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Resource.DiskInfo parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.Resource.DiskInfo parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Resource.DiskInfo parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.Protos.Resource.DiskInfo parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Resource.DiskInfo parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.Resource.DiskInfo parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.Protos.Resource.DiskInfo prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.Resource.DiskInfo}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.Protos.Resource.DiskInfoOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_Resource_DiskInfo_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_Resource_DiskInfo_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.Resource.DiskInfo.class, org.apache.mesos.Protos.Resource.DiskInfo.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.Protos.Resource.DiskInfo.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getPersistenceFieldBuilder();
+            getVolumeFieldBuilder();
+            getSourceFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (persistenceBuilder_ == null) {
+            persistence_ = org.apache.mesos.Protos.Resource.DiskInfo.Persistence.getDefaultInstance();
+          } else {
+            persistenceBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          if (volumeBuilder_ == null) {
+            volume_ = org.apache.mesos.Protos.Volume.getDefaultInstance();
+          } else {
+            volumeBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          if (sourceBuilder_ == null) {
+            source_ = org.apache.mesos.Protos.Resource.DiskInfo.Source.getDefaultInstance();
+          } else {
+            sourceBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.Protos.internal_static_mesos_Resource_DiskInfo_descriptor;
+        }
+
+        public org.apache.mesos.Protos.Resource.DiskInfo getDefaultInstanceForType() {
+          return org.apache.mesos.Protos.Resource.DiskInfo.getDefaultInstance();
+        }
+
+        public org.apache.mesos.Protos.Resource.DiskInfo build() {
+          org.apache.mesos.Protos.Resource.DiskInfo result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.Protos.Resource.DiskInfo buildPartial() {
+          org.apache.mesos.Protos.Resource.DiskInfo result = new org.apache.mesos.Protos.Resource.DiskInfo(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (persistenceBuilder_ == null) {
+            result.persistence_ = persistence_;
+          } else {
+            result.persistence_ = persistenceBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          if (volumeBuilder_ == null) {
+            result.volume_ = volume_;
+          } else {
+            result.volume_ = volumeBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          if (sourceBuilder_ == null) {
+            result.source_ = source_;
+          } else {
+            result.source_ = sourceBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.Protos.Resource.DiskInfo) {
+            return mergeFrom((org.apache.mesos.Protos.Resource.DiskInfo)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.Protos.Resource.DiskInfo other) {
+          if (other == org.apache.mesos.Protos.Resource.DiskInfo.getDefaultInstance()) return this;
+          if (other.hasPersistence()) {
+            mergePersistence(other.getPersistence());
+          }
+          if (other.hasVolume()) {
+            mergeVolume(other.getVolume());
+          }
+          if (other.hasSource()) {
+            mergeSource(other.getSource());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (hasPersistence()) {
+            if (!getPersistence().isInitialized()) {
+              
+              return false;
+            }
+          }
+          if (hasVolume()) {
+            if (!getVolume().isInitialized()) {
+              
+              return false;
+            }
+          }
+          if (hasSource()) {
+            if (!getSource().isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.Protos.Resource.DiskInfo parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.Protos.Resource.DiskInfo) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // optional .mesos.Resource.DiskInfo.Persistence persistence = 1;
+        private org.apache.mesos.Protos.Resource.DiskInfo.Persistence persistence_ = org.apache.mesos.Protos.Resource.DiskInfo.Persistence.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Resource.DiskInfo.Persistence, org.apache.mesos.Protos.Resource.DiskInfo.Persistence.Builder, org.apache.mesos.Protos.Resource.DiskInfo.PersistenceOrBuilder> persistenceBuilder_;
+        /**
+         * <code>optional .mesos.Resource.DiskInfo.Persistence persistence = 1;</code>
+         */
+        public boolean hasPersistence() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional .mesos.Resource.DiskInfo.Persistence persistence = 1;</code>
+         */
+        public org.apache.mesos.Protos.Resource.DiskInfo.Persistence getPersistence() {
+          if (persistenceBuilder_ == null) {
+            return persistence_;
+          } else {
+            return persistenceBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.Resource.DiskInfo.Persistence persistence = 1;</code>
+         */
+        public Builder setPersistence(org.apache.mesos.Protos.Resource.DiskInfo.Persistence value) {
+          if (persistenceBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            persistence_ = value;
+            onChanged();
+          } else {
+            persistenceBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Resource.DiskInfo.Persistence persistence = 1;</code>
+         */
+        public Builder setPersistence(
+            org.apache.mesos.Protos.Resource.DiskInfo.Persistence.Builder builderForValue) {
+          if (persistenceBuilder_ == null) {
+            persistence_ = builderForValue.build();
+            onChanged();
+          } else {
+            persistenceBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Resource.DiskInfo.Persistence persistence = 1;</code>
+         */
+        public Builder mergePersistence(org.apache.mesos.Protos.Resource.DiskInfo.Persistence value) {
+          if (persistenceBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                persistence_ != org.apache.mesos.Protos.Resource.DiskInfo.Persistence.getDefaultInstance()) {
+              persistence_ =
+                org.apache.mesos.Protos.Resource.DiskInfo.Persistence.newBuilder(persistence_).mergeFrom(value).buildPartial();
+            } else {
+              persistence_ = value;
+            }
+            onChanged();
+          } else {
+            persistenceBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Resource.DiskInfo.Persistence persistence = 1;</code>
+         */
+        public Builder clearPersistence() {
+          if (persistenceBuilder_ == null) {
+            persistence_ = org.apache.mesos.Protos.Resource.DiskInfo.Persistence.getDefaultInstance();
+            onChanged();
+          } else {
+            persistenceBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Resource.DiskInfo.Persistence persistence = 1;</code>
+         */
+        public org.apache.mesos.Protos.Resource.DiskInfo.Persistence.Builder getPersistenceBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getPersistenceFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.Resource.DiskInfo.Persistence persistence = 1;</code>
+         */
+        public org.apache.mesos.Protos.Resource.DiskInfo.PersistenceOrBuilder getPersistenceOrBuilder() {
+          if (persistenceBuilder_ != null) {
+            return persistenceBuilder_.getMessageOrBuilder();
+          } else {
+            return persistence_;
+          }
+        }
+        /**
+         * <code>optional .mesos.Resource.DiskInfo.Persistence persistence = 1;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Resource.DiskInfo.Persistence, org.apache.mesos.Protos.Resource.DiskInfo.Persistence.Builder, org.apache.mesos.Protos.Resource.DiskInfo.PersistenceOrBuilder> 
+            getPersistenceFieldBuilder() {
+          if (persistenceBuilder_ == null) {
+            persistenceBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.Resource.DiskInfo.Persistence, org.apache.mesos.Protos.Resource.DiskInfo.Persistence.Builder, org.apache.mesos.Protos.Resource.DiskInfo.PersistenceOrBuilder>(
+                    persistence_,
+                    getParentForChildren(),
+                    isClean());
+            persistence_ = null;
+          }
+          return persistenceBuilder_;
+        }
+
+        // optional .mesos.Volume volume = 2;
+        private org.apache.mesos.Protos.Volume volume_ = org.apache.mesos.Protos.Volume.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Volume, org.apache.mesos.Protos.Volume.Builder, org.apache.mesos.Protos.VolumeOrBuilder> volumeBuilder_;
+        /**
+         * <code>optional .mesos.Volume volume = 2;</code>
+         *
+         * <pre>
+         * Describes how this disk resource will be mounted in the
+         * container. If not set, the disk resource will be used as the
+         * sandbox. Otherwise, it will be mounted according to the
+         * 'container_path' inside 'volume'. The 'host_path' inside
+         * 'volume' is ignored.
+         * NOTE: If 'volume' is set but 'persistence' is not set, the
+         * volume will be automatically garbage collected after
+         * task/executor terminates. Currently, if 'persistence' is set,
+         * 'volume' must be set.
+         * </pre>
+         */
+        public boolean hasVolume() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional .mesos.Volume volume = 2;</code>
+         *
+         * <pre>
+         * Describes how this disk resource will be mounted in the
+         * container. If not set, the disk resource will be used as the
+         * sandbox. Otherwise, it will be mounted according to the
+         * 'container_path' inside 'volume'. The 'host_path' inside
+         * 'volume' is ignored.
+         * NOTE: If 'volume' is set but 'persistence' is not set, the
+         * volume will be automatically garbage collected after
+         * task/executor terminates. Currently, if 'persistence' is set,
+         * 'volume' must be set.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.Volume getVolume() {
+          if (volumeBuilder_ == null) {
+            return volume_;
+          } else {
+            return volumeBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.Volume volume = 2;</code>
+         *
+         * <pre>
+         * Describes how this disk resource will be mounted in the
+         * container. If not set, the disk resource will be used as the
+         * sandbox. Otherwise, it will be mounted according to the
+         * 'container_path' inside 'volume'. The 'host_path' inside
+         * 'volume' is ignored.
+         * NOTE: If 'volume' is set but 'persistence' is not set, the
+         * volume will be automatically garbage collected after
+         * task/executor terminates. Currently, if 'persistence' is set,
+         * 'volume' must be set.
+         * </pre>
+         */
+        public Builder setVolume(org.apache.mesos.Protos.Volume value) {
+          if (volumeBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            volume_ = value;
+            onChanged();
+          } else {
+            volumeBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Volume volume = 2;</code>
+         *
+         * <pre>
+         * Describes how this disk resource will be mounted in the
+         * container. If not set, the disk resource will be used as the
+         * sandbox. Otherwise, it will be mounted according to the
+         * 'container_path' inside 'volume'. The 'host_path' inside
+         * 'volume' is ignored.
+         * NOTE: If 'volume' is set but 'persistence' is not set, the
+         * volume will be automatically garbage collected after
+         * task/executor terminates. Currently, if 'persistence' is set,
+         * 'volume' must be set.
+         * </pre>
+         */
+        public Builder setVolume(
+            org.apache.mesos.Protos.Volume.Builder builderForValue) {
+          if (volumeBuilder_ == null) {
+            volume_ = builderForValue.build();
+            onChanged();
+          } else {
+            volumeBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Volume volume = 2;</code>
+         *
+         * <pre>
+         * Describes how this disk resource will be mounted in the
+         * container. If not set, the disk resource will be used as the
+         * sandbox. Otherwise, it will be mounted according to the
+         * 'container_path' inside 'volume'. The 'host_path' inside
+         * 'volume' is ignored.
+         * NOTE: If 'volume' is set but 'persistence' is not set, the
+         * volume will be automatically garbage collected after
+         * task/executor terminates. Currently, if 'persistence' is set,
+         * 'volume' must be set.
+         * </pre>
+         */
+        public Builder mergeVolume(org.apache.mesos.Protos.Volume value) {
+          if (volumeBuilder_ == null) {
+            if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                volume_ != org.apache.mesos.Protos.Volume.getDefaultInstance()) {
+              volume_ =
+                org.apache.mesos.Protos.Volume.newBuilder(volume_).mergeFrom(value).buildPartial();
+            } else {
+              volume_ = value;
+            }
+            onChanged();
+          } else {
+            volumeBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Volume volume = 2;</code>
+         *
+         * <pre>
+         * Describes how this disk resource will be mounted in the
+         * container. If not set, the disk resource will be used as the
+         * sandbox. Otherwise, it will be mounted according to the
+         * 'container_path' inside 'volume'. The 'host_path' inside
+         * 'volume' is ignored.
+         * NOTE: If 'volume' is set but 'persistence' is not set, the
+         * volume will be automatically garbage collected after
+         * task/executor terminates. Currently, if 'persistence' is set,
+         * 'volume' must be set.
+         * </pre>
+         */
+        public Builder clearVolume() {
+          if (volumeBuilder_ == null) {
+            volume_ = org.apache.mesos.Protos.Volume.getDefaultInstance();
+            onChanged();
+          } else {
+            volumeBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Volume volume = 2;</code>
+         *
+         * <pre>
+         * Describes how this disk resource will be mounted in the
+         * container. If not set, the disk resource will be used as the
+         * sandbox. Otherwise, it will be mounted according to the
+         * 'container_path' inside 'volume'. The 'host_path' inside
+         * 'volume' is ignored.
+         * NOTE: If 'volume' is set but 'persistence' is not set, the
+         * volume will be automatically garbage collected after
+         * task/executor terminates. Currently, if 'persistence' is set,
+         * 'volume' must be set.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.Volume.Builder getVolumeBuilder() {
+          bitField0_ |= 0x00000002;
+          onChanged();
+          return getVolumeFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.Volume volume = 2;</code>
+         *
+         * <pre>
+         * Describes how this disk resource will be mounted in the
+         * container. If not set, the disk resource will be used as the
+         * sandbox. Otherwise, it will be mounted according to the
+         * 'container_path' inside 'volume'. The 'host_path' inside
+         * 'volume' is ignored.
+         * NOTE: If 'volume' is set but 'persistence' is not set, the
+         * volume will be automatically garbage collected after
+         * task/executor terminates. Currently, if 'persistence' is set,
+         * 'volume' must be set.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.VolumeOrBuilder getVolumeOrBuilder() {
+          if (volumeBuilder_ != null) {
+            return volumeBuilder_.getMessageOrBuilder();
+          } else {
+            return volume_;
+          }
+        }
+        /**
+         * <code>optional .mesos.Volume volume = 2;</code>
+         *
+         * <pre>
+         * Describes how this disk resource will be mounted in the
+         * container. If not set, the disk resource will be used as the
+         * sandbox. Otherwise, it will be mounted according to the
+         * 'container_path' inside 'volume'. The 'host_path' inside
+         * 'volume' is ignored.
+         * NOTE: If 'volume' is set but 'persistence' is not set, the
+         * volume will be automatically garbage collected after
+         * task/executor terminates. Currently, if 'persistence' is set,
+         * 'volume' must be set.
+         * </pre>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Volume, org.apache.mesos.Protos.Volume.Builder, org.apache.mesos.Protos.VolumeOrBuilder> 
+            getVolumeFieldBuilder() {
+          if (volumeBuilder_ == null) {
+            volumeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.Volume, org.apache.mesos.Protos.Volume.Builder, org.apache.mesos.Protos.VolumeOrBuilder>(
+                    volume_,
+                    getParentForChildren(),
+                    isClean());
+            volume_ = null;
+          }
+          return volumeBuilder_;
+        }
+
+        // optional .mesos.Resource.DiskInfo.Source source = 3;
+        private org.apache.mesos.Protos.Resource.DiskInfo.Source source_ = org.apache.mesos.Protos.Resource.DiskInfo.Source.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Resource.DiskInfo.Source, org.apache.mesos.Protos.Resource.DiskInfo.Source.Builder, org.apache.mesos.Protos.Resource.DiskInfo.SourceOrBuilder> sourceBuilder_;
+        /**
+         * <code>optional .mesos.Resource.DiskInfo.Source source = 3;</code>
+         */
+        public boolean hasSource() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional .mesos.Resource.DiskInfo.Source source = 3;</code>
+         */
+        public org.apache.mesos.Protos.Resource.DiskInfo.Source getSource() {
+          if (sourceBuilder_ == null) {
+            return source_;
+          } else {
+            return sourceBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.Resource.DiskInfo.Source source = 3;</code>
+         */
+        public Builder setSource(org.apache.mesos.Protos.Resource.DiskInfo.Source value) {
+          if (sourceBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            source_ = value;
+            onChanged();
+          } else {
+            sourceBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Resource.DiskInfo.Source source = 3;</code>
+         */
+        public Builder setSource(
+            org.apache.mesos.Protos.Resource.DiskInfo.Source.Builder builderForValue) {
+          if (sourceBuilder_ == null) {
+            source_ = builderForValue.build();
+            onChanged();
+          } else {
+            sourceBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Resource.DiskInfo.Source source = 3;</code>
+         */
+        public Builder mergeSource(org.apache.mesos.Protos.Resource.DiskInfo.Source value) {
+          if (sourceBuilder_ == null) {
+            if (((bitField0_ & 0x00000004) == 0x00000004) &&
+                source_ != org.apache.mesos.Protos.Resource.DiskInfo.Source.getDefaultInstance()) {
+              source_ =
+                org.apache.mesos.Protos.Resource.DiskInfo.Source.newBuilder(source_).mergeFrom(value).buildPartial();
+            } else {
+              source_ = value;
+            }
+            onChanged();
+          } else {
+            sourceBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Resource.DiskInfo.Source source = 3;</code>
+         */
+        public Builder clearSource() {
+          if (sourceBuilder_ == null) {
+            source_ = org.apache.mesos.Protos.Resource.DiskInfo.Source.getDefaultInstance();
+            onChanged();
+          } else {
+            sourceBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Resource.DiskInfo.Source source = 3;</code>
+         */
+        public org.apache.mesos.Protos.Resource.DiskInfo.Source.Builder getSourceBuilder() {
+          bitField0_ |= 0x00000004;
+          onChanged();
+          return getSourceFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.Resource.DiskInfo.Source source = 3;</code>
+         */
+        public org.apache.mesos.Protos.Resource.DiskInfo.SourceOrBuilder getSourceOrBuilder() {
+          if (sourceBuilder_ != null) {
+            return sourceBuilder_.getMessageOrBuilder();
+          } else {
+            return source_;
+          }
+        }
+        /**
+         * <code>optional .mesos.Resource.DiskInfo.Source source = 3;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Resource.DiskInfo.Source, org.apache.mesos.Protos.Resource.DiskInfo.Source.Builder, org.apache.mesos.Protos.Resource.DiskInfo.SourceOrBuilder> 
+            getSourceFieldBuilder() {
+          if (sourceBuilder_ == null) {
+            sourceBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.Resource.DiskInfo.Source, org.apache.mesos.Protos.Resource.DiskInfo.Source.Builder, org.apache.mesos.Protos.Resource.DiskInfo.SourceOrBuilder>(
+                    source_,
+                    getParentForChildren(),
+                    isClean());
+            source_ = null;
+          }
+          return sourceBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.Resource.DiskInfo)
+      }
+
+      static {
+        defaultInstance = new DiskInfo(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.Resource.DiskInfo)
+    }
+
+    public interface RevocableInfoOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+    }
+    /**
+     * Protobuf type {@code mesos.Resource.RevocableInfo}
+     */
+    public static final class RevocableInfo extends
+        com.google.protobuf.GeneratedMessage
+        implements RevocableInfoOrBuilder {
+      // Use RevocableInfo.newBuilder() to construct.
+      private RevocableInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private RevocableInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final RevocableInfo defaultInstance;
+      public static RevocableInfo getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public RevocableInfo getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private RevocableInfo(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_Resource_RevocableInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_Resource_RevocableInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.Resource.RevocableInfo.class, org.apache.mesos.Protos.Resource.RevocableInfo.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<RevocableInfo> PARSER =
+          new com.google.protobuf.AbstractParser<RevocableInfo>() {
+        public RevocableInfo parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new RevocableInfo(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<RevocableInfo> getParserForType() {
+        return PARSER;
+      }
+
+      private void initFields() {
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.Protos.Resource.RevocableInfo parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.Resource.RevocableInfo parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Resource.RevocableInfo parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.Resource.RevocableInfo parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Resource.RevocableInfo parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.Resource.RevocableInfo parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Resource.RevocableInfo parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.Protos.Resource.RevocableInfo parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Resource.RevocableInfo parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.Resource.RevocableInfo parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.Protos.Resource.RevocableInfo prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.Resource.RevocableInfo}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.Protos.Resource.RevocableInfoOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_Resource_RevocableInfo_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_Resource_RevocableInfo_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.Resource.RevocableInfo.class, org.apache.mesos.Protos.Resource.RevocableInfo.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.Protos.Resource.RevocableInfo.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.Protos.internal_static_mesos_Resource_RevocableInfo_descriptor;
+        }
+
+        public org.apache.mesos.Protos.Resource.RevocableInfo getDefaultInstanceForType() {
+          return org.apache.mesos.Protos.Resource.RevocableInfo.getDefaultInstance();
+        }
+
+        public org.apache.mesos.Protos.Resource.RevocableInfo build() {
+          org.apache.mesos.Protos.Resource.RevocableInfo result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.Protos.Resource.RevocableInfo buildPartial() {
+          org.apache.mesos.Protos.Resource.RevocableInfo result = new org.apache.mesos.Protos.Resource.RevocableInfo(this);
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.Protos.Resource.RevocableInfo) {
+            return mergeFrom((org.apache.mesos.Protos.Resource.RevocableInfo)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.Protos.Resource.RevocableInfo other) {
+          if (other == org.apache.mesos.Protos.Resource.RevocableInfo.getDefaultInstance()) return this;
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.Protos.Resource.RevocableInfo parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.Protos.Resource.RevocableInfo) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.Resource.RevocableInfo)
+      }
+
+      static {
+        defaultInstance = new RevocableInfo(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.Resource.RevocableInfo)
+    }
+
+    public interface SharedInfoOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+    }
+    /**
+     * Protobuf type {@code mesos.Resource.SharedInfo}
+     *
+     * <pre>
+     * Allow the resource to be shared across tasks.
+     * </pre>
+     */
+    public static final class SharedInfo extends
+        com.google.protobuf.GeneratedMessage
+        implements SharedInfoOrBuilder {
+      // Use SharedInfo.newBuilder() to construct.
+      private SharedInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private SharedInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final SharedInfo defaultInstance;
+      public static SharedInfo getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public SharedInfo getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private SharedInfo(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_Resource_SharedInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_Resource_SharedInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.Resource.SharedInfo.class, org.apache.mesos.Protos.Resource.SharedInfo.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<SharedInfo> PARSER =
+          new com.google.protobuf.AbstractParser<SharedInfo>() {
+        public SharedInfo parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new SharedInfo(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<SharedInfo> getParserForType() {
+        return PARSER;
+      }
+
+      private void initFields() {
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.Protos.Resource.SharedInfo parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.Resource.SharedInfo parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Resource.SharedInfo parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.Resource.SharedInfo parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Resource.SharedInfo parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.Resource.SharedInfo parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Resource.SharedInfo parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.Protos.Resource.SharedInfo parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Resource.SharedInfo parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.Resource.SharedInfo parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.Protos.Resource.SharedInfo prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.Resource.SharedInfo}
+       *
+       * <pre>
+       * Allow the resource to be shared across tasks.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.Protos.Resource.SharedInfoOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_Resource_SharedInfo_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_Resource_SharedInfo_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.Resource.SharedInfo.class, org.apache.mesos.Protos.Resource.SharedInfo.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.Protos.Resource.SharedInfo.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.Protos.internal_static_mesos_Resource_SharedInfo_descriptor;
+        }
+
+        public org.apache.mesos.Protos.Resource.SharedInfo getDefaultInstanceForType() {
+          return org.apache.mesos.Protos.Resource.SharedInfo.getDefaultInstance();
+        }
+
+        public org.apache.mesos.Protos.Resource.SharedInfo build() {
+          org.apache.mesos.Protos.Resource.SharedInfo result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.Protos.Resource.SharedInfo buildPartial() {
+          org.apache.mesos.Protos.Resource.SharedInfo result = new org.apache.mesos.Protos.Resource.SharedInfo(this);
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.Protos.Resource.SharedInfo) {
+            return mergeFrom((org.apache.mesos.Protos.Resource.SharedInfo)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.Protos.Resource.SharedInfo other) {
+          if (other == org.apache.mesos.Protos.Resource.SharedInfo.getDefaultInstance()) return this;
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.Protos.Resource.SharedInfo parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.Protos.Resource.SharedInfo) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.Resource.SharedInfo)
+      }
+
+      static {
+        defaultInstance = new SharedInfo(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.Resource.SharedInfo)
+    }
+
+    private int bitField0_;
+    // optional .mesos.ResourceProviderID provider_id = 12;
+    public static final int PROVIDER_ID_FIELD_NUMBER = 12;
+    private org.apache.mesos.Protos.ResourceProviderID providerId_;
+    /**
+     * <code>optional .mesos.ResourceProviderID provider_id = 12;</code>
+     */
+    public boolean hasProviderId() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional .mesos.ResourceProviderID provider_id = 12;</code>
+     */
+    public org.apache.mesos.Protos.ResourceProviderID getProviderId() {
+      return providerId_;
+    }
+    /**
+     * <code>optional .mesos.ResourceProviderID provider_id = 12;</code>
+     */
+    public org.apache.mesos.Protos.ResourceProviderIDOrBuilder getProviderIdOrBuilder() {
+      return providerId_;
+    }
+
+    // required string name = 1;
+    public static final int NAME_FIELD_NUMBER = 1;
+    private java.lang.Object name_;
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public boolean hasName() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public java.lang.String getName() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          name_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getNameBytes() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        name_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // required .mesos.Value.Type type = 2;
+    public static final int TYPE_FIELD_NUMBER = 2;
+    private org.apache.mesos.Protos.Value.Type type_;
+    /**
+     * <code>required .mesos.Value.Type type = 2;</code>
+     */
+    public boolean hasType() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>required .mesos.Value.Type type = 2;</code>
+     */
+    public org.apache.mesos.Protos.Value.Type getType() {
+      return type_;
+    }
+
+    // optional .mesos.Value.Scalar scalar = 3;
+    public static final int SCALAR_FIELD_NUMBER = 3;
+    private org.apache.mesos.Protos.Value.Scalar scalar_;
+    /**
+     * <code>optional .mesos.Value.Scalar scalar = 3;</code>
+     */
+    public boolean hasScalar() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional .mesos.Value.Scalar scalar = 3;</code>
+     */
+    public org.apache.mesos.Protos.Value.Scalar getScalar() {
+      return scalar_;
+    }
+    /**
+     * <code>optional .mesos.Value.Scalar scalar = 3;</code>
+     */
+    public org.apache.mesos.Protos.Value.ScalarOrBuilder getScalarOrBuilder() {
+      return scalar_;
+    }
+
+    // optional .mesos.Value.Ranges ranges = 4;
+    public static final int RANGES_FIELD_NUMBER = 4;
+    private org.apache.mesos.Protos.Value.Ranges ranges_;
+    /**
+     * <code>optional .mesos.Value.Ranges ranges = 4;</code>
+     */
+    public boolean hasRanges() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional .mesos.Value.Ranges ranges = 4;</code>
+     */
+    public org.apache.mesos.Protos.Value.Ranges getRanges() {
+      return ranges_;
+    }
+    /**
+     * <code>optional .mesos.Value.Ranges ranges = 4;</code>
+     */
+    public org.apache.mesos.Protos.Value.RangesOrBuilder getRangesOrBuilder() {
+      return ranges_;
+    }
+
+    // optional .mesos.Value.Set set = 5;
+    public static final int SET_FIELD_NUMBER = 5;
+    private org.apache.mesos.Protos.Value.Set set_;
+    /**
+     * <code>optional .mesos.Value.Set set = 5;</code>
+     */
+    public boolean hasSet() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional .mesos.Value.Set set = 5;</code>
+     */
+    public org.apache.mesos.Protos.Value.Set getSet() {
+      return set_;
+    }
+    /**
+     * <code>optional .mesos.Value.Set set = 5;</code>
+     */
+    public org.apache.mesos.Protos.Value.SetOrBuilder getSetOrBuilder() {
+      return set_;
+    }
+
+    // optional string role = 6 [default = "*", deprecated = true];
+    public static final int ROLE_FIELD_NUMBER = 6;
+    private java.lang.Object role_;
+    /**
+     * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+     *
+     * <pre>
+     * The role that this resource is reserved for. If "*", this indicates
+     * that the resource is unreserved. Otherwise, the resource will only
+     * be offered to frameworks that belong to this role.
+     *
+     * NOTE: Frameworks must not set this field if `reservations` is set.
+     *       See the 'Resource Format' section for more details.
+     *
+     * TODO(mpark): Deprecate once `reservations` is no longer experimental.
+     * </pre>
+     */
+    @java.lang.Deprecated public boolean hasRole() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+     *
+     * <pre>
+     * The role that this resource is reserved for. If "*", this indicates
+     * that the resource is unreserved. Otherwise, the resource will only
+     * be offered to frameworks that belong to this role.
+     *
+     * NOTE: Frameworks must not set this field if `reservations` is set.
+     *       See the 'Resource Format' section for more details.
+     *
+     * TODO(mpark): Deprecate once `reservations` is no longer experimental.
+     * </pre>
+     */
+    @java.lang.Deprecated public java.lang.String getRole() {
+      java.lang.Object ref = role_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          role_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+     *
+     * <pre>
+     * The role that this resource is reserved for. If "*", this indicates
+     * that the resource is unreserved. Otherwise, the resource will only
+     * be offered to frameworks that belong to this role.
+     *
+     * NOTE: Frameworks must not set this field if `reservations` is set.
+     *       See the 'Resource Format' section for more details.
+     *
+     * TODO(mpark): Deprecate once `reservations` is no longer experimental.
+     * </pre>
+     */
+    @java.lang.Deprecated public com.google.protobuf.ByteString
+        getRoleBytes() {
+      java.lang.Object ref = role_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        role_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional .mesos.Resource.AllocationInfo allocation_info = 11;
+    public static final int ALLOCATION_INFO_FIELD_NUMBER = 11;
+    private org.apache.mesos.Protos.Resource.AllocationInfo allocationInfo_;
+    /**
+     * <code>optional .mesos.Resource.AllocationInfo allocation_info = 11;</code>
+     */
+    public boolean hasAllocationInfo() {
+      return ((bitField0_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional .mesos.Resource.AllocationInfo allocation_info = 11;</code>
+     */
+    public org.apache.mesos.Protos.Resource.AllocationInfo getAllocationInfo() {
+      return allocationInfo_;
+    }
+    /**
+     * <code>optional .mesos.Resource.AllocationInfo allocation_info = 11;</code>
+     */
+    public org.apache.mesos.Protos.Resource.AllocationInfoOrBuilder getAllocationInfoOrBuilder() {
+      return allocationInfo_;
+    }
+
+    // optional .mesos.Resource.ReservationInfo reservation = 8;
+    public static final int RESERVATION_FIELD_NUMBER = 8;
+    private org.apache.mesos.Protos.Resource.ReservationInfo reservation_;
+    /**
+     * <code>optional .mesos.Resource.ReservationInfo reservation = 8;</code>
+     *
+     * <pre>
+     * If this is set, this resource was dynamically reserved by an
+     * operator or a framework. Otherwise, this resource is either unreserved
+     * or statically reserved by an operator via the --resources flag.
+     *
+     * NOTE: Frameworks must not set this field if `reservations` is set.
+     *       See the 'Resource Format' section for more details.
+     *
+     * TODO(mpark): Deprecate once `reservations` is no longer experimental.
+     * </pre>
+     */
+    public boolean hasReservation() {
+      return ((bitField0_ & 0x00000100) == 0x00000100);
+    }
+    /**
+     * <code>optional .mesos.Resource.ReservationInfo reservation = 8;</code>
+     *
+     * <pre>
+     * If this is set, this resource was dynamically reserved by an
+     * operator or a framework. Otherwise, this resource is either unreserved
+     * or statically reserved by an operator via the --resources flag.
+     *
+     * NOTE: Frameworks must not set this field if `reservations` is set.
+     *       See the 'Resource Format' section for more details.
+     *
+     * TODO(mpark): Deprecate once `reservations` is no longer experimental.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.Resource.ReservationInfo getReservation() {
+      return reservation_;
+    }
+    /**
+     * <code>optional .mesos.Resource.ReservationInfo reservation = 8;</code>
+     *
+     * <pre>
+     * If this is set, this resource was dynamically reserved by an
+     * operator or a framework. Otherwise, this resource is either unreserved
+     * or statically reserved by an operator via the --resources flag.
+     *
+     * NOTE: Frameworks must not set this field if `reservations` is set.
+     *       See the 'Resource Format' section for more details.
+     *
+     * TODO(mpark): Deprecate once `reservations` is no longer experimental.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.Resource.ReservationInfoOrBuilder getReservationOrBuilder() {
+      return reservation_;
+    }
+
+    // repeated .mesos.Resource.ReservationInfo reservations = 13;
+    public static final int RESERVATIONS_FIELD_NUMBER = 13;
+    private java.util.List<org.apache.mesos.Protos.Resource.ReservationInfo> reservations_;
+    /**
+     * <code>repeated .mesos.Resource.ReservationInfo reservations = 13;</code>
+     *
+     * <pre>
+     * The stack of reservations. If this field is empty, it indicates that this
+     * resource is unreserved. Otherwise, the resource is reserved. The first
+     * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+     * have `DYNAMIC`. One can create a new reservation on top of an existing
+     * one by pushing a new `ReservationInfo` to the back. The last
+     * `ReservationInfo` in this stack is the "current" reservation. The new
+     * reservation's role must be a child of the current reservation's role.
+     *
+     * NOTE: Frameworks must not set this field if `reservation` is set.
+     *       See the 'Resource Format' section for more details.
+     *
+     * TODO(mpark): Deprecate `role` and `reservation` once this is stable.
+     * </pre>
+     */
+    public java.util.List<org.apache.mesos.Protos.Resource.ReservationInfo> getReservationsList() {
+      return reservations_;
+    }
+    /**
+     * <code>repeated .mesos.Resource.ReservationInfo reservations = 13;</code>
+     *
+     * <pre>
+     * The stack of reservations. If this field is empty, it indicates that this
+     * resource is unreserved. Otherwise, the resource is reserved. The first
+     * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+     * have `DYNAMIC`. One can create a new reservation on top of an existing
+     * one by pushing a new `ReservationInfo` to the back. The last
+     * `ReservationInfo` in this stack is the "current" reservation. The new
+     * reservation's role must be a child of the current reservation's role.
+     *
+     * NOTE: Frameworks must not set this field if `reservation` is set.
+     *       See the 'Resource Format' section for more details.
+     *
+     * TODO(mpark): Deprecate `role` and `reservation` once this is stable.
+     * </pre>
+     */
+    public java.util.List<? extends org.apache.mesos.Protos.Resource.ReservationInfoOrBuilder> 
+        getReservationsOrBuilderList() {
+      return reservations_;
+    }
+    /**
+     * <code>repeated .mesos.Resource.ReservationInfo reservations = 13;</code>
+     *
+     * <pre>
+     * The stack of reservations. If this field is empty, it indicates that this
+     * resource is unreserved. Otherwise, the resource is reserved. The first
+     * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+     * have `DYNAMIC`. One can create a new reservation on top of an existing
+     * one by pushing a new `ReservationInfo` to the back. The last
+     * `ReservationInfo` in this stack is the "current" reservation. The new
+     * reservation's role must be a child of the current reservation's role.
+     *
+     * NOTE: Frameworks must not set this field if `reservation` is set.
+     *       See the 'Resource Format' section for more details.
+     *
+     * TODO(mpark): Deprecate `role` and `reservation` once this is stable.
+     * </pre>
+     */
+    public int getReservationsCount() {
+      return reservations_.size();
+    }
+    /**
+     * <code>repeated .mesos.Resource.ReservationInfo reservations = 13;</code>
+     *
+     * <pre>
+     * The stack of reservations. If this field is empty, it indicates that this
+     * resource is unreserved. Otherwise, the resource is reserved. The first
+     * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+     * have `DYNAMIC`. One can create a new reservation on top of an existing
+     * one by pushing a new `ReservationInfo` to the back. The last
+     * `ReservationInfo` in this stack is the "current" reservation. The new
+     * reservation's role must be a child of the current reservation's role.
+     *
+     * NOTE: Frameworks must not set this field if `reservation` is set.
+     *       See the 'Resource Format' section for more details.
+     *
+     * TODO(mpark): Deprecate `role` and `reservation` once this is stable.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.Resource.ReservationInfo getReservations(int index) {
+      return reservations_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.Resource.ReservationInfo reservations = 13;</code>
+     *
+     * <pre>
+     * The stack of reservations. If this field is empty, it indicates that this
+     * resource is unreserved. Otherwise, the resource is reserved. The first
+     * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+     * have `DYNAMIC`. One can create a new reservation on top of an existing
+     * one by pushing a new `ReservationInfo` to the back. The last
+     * `ReservationInfo` in this stack is the "current" reservation. The new
+     * reservation's role must be a child of the current reservation's role.
+     *
+     * NOTE: Frameworks must not set this field if `reservation` is set.
+     *       See the 'Resource Format' section for more details.
+     *
+     * TODO(mpark): Deprecate `role` and `reservation` once this is stable.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.Resource.ReservationInfoOrBuilder getReservationsOrBuilder(
+        int index) {
+      return reservations_.get(index);
+    }
+
+    // optional .mesos.Resource.DiskInfo disk = 7;
+    public static final int DISK_FIELD_NUMBER = 7;
+    private org.apache.mesos.Protos.Resource.DiskInfo disk_;
+    /**
+     * <code>optional .mesos.Resource.DiskInfo disk = 7;</code>
+     */
+    public boolean hasDisk() {
+      return ((bitField0_ & 0x00000200) == 0x00000200);
+    }
+    /**
+     * <code>optional .mesos.Resource.DiskInfo disk = 7;</code>
+     */
+    public org.apache.mesos.Protos.Resource.DiskInfo getDisk() {
+      return disk_;
+    }
+    /**
+     * <code>optional .mesos.Resource.DiskInfo disk = 7;</code>
+     */
+    public org.apache.mesos.Protos.Resource.DiskInfoOrBuilder getDiskOrBuilder() {
+      return disk_;
+    }
+
+    // optional .mesos.Resource.RevocableInfo revocable = 9;
+    public static final int REVOCABLE_FIELD_NUMBER = 9;
+    private org.apache.mesos.Protos.Resource.RevocableInfo revocable_;
+    /**
+     * <code>optional .mesos.Resource.RevocableInfo revocable = 9;</code>
+     *
+     * <pre>
+     * If this is set, the resources are revocable, i.e., any tasks or
+     * executors launched using these resources could get preempted or
+     * throttled at any time. This could be used by frameworks to run
+     * best effort tasks that do not need strict uptime or performance
+     * guarantees. Note that if this is set, 'disk' or 'reservation'
+     * cannot be set.
+     * </pre>
+     */
+    public boolean hasRevocable() {
+      return ((bitField0_ & 0x00000400) == 0x00000400);
+    }
+    /**
+     * <code>optional .mesos.Resource.RevocableInfo revocable = 9;</code>
+     *
+     * <pre>
+     * If this is set, the resources are revocable, i.e., any tasks or
+     * executors launched using these resources could get preempted or
+     * throttled at any time. This could be used by frameworks to run
+     * best effort tasks that do not need strict uptime or performance
+     * guarantees. Note that if this is set, 'disk' or 'reservation'
+     * cannot be set.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.Resource.RevocableInfo getRevocable() {
+      return revocable_;
+    }
+    /**
+     * <code>optional .mesos.Resource.RevocableInfo revocable = 9;</code>
+     *
+     * <pre>
+     * If this is set, the resources are revocable, i.e., any tasks or
+     * executors launched using these resources could get preempted or
+     * throttled at any time. This could be used by frameworks to run
+     * best effort tasks that do not need strict uptime or performance
+     * guarantees. Note that if this is set, 'disk' or 'reservation'
+     * cannot be set.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.Resource.RevocableInfoOrBuilder getRevocableOrBuilder() {
+      return revocable_;
+    }
+
+    // optional .mesos.Resource.SharedInfo shared = 10;
+    public static final int SHARED_FIELD_NUMBER = 10;
+    private org.apache.mesos.Protos.Resource.SharedInfo shared_;
+    /**
+     * <code>optional .mesos.Resource.SharedInfo shared = 10;</code>
+     *
+     * <pre>
+     * If this is set, the resources are shared, i.e. multiple tasks
+     * can be launched using this resource and all of them shall refer
+     * to the same physical resource on the cluster. Note that only
+     * persistent volumes can be shared currently.
+     * </pre>
+     */
+    public boolean hasShared() {
+      return ((bitField0_ & 0x00000800) == 0x00000800);
+    }
+    /**
+     * <code>optional .mesos.Resource.SharedInfo shared = 10;</code>
+     *
+     * <pre>
+     * If this is set, the resources are shared, i.e. multiple tasks
+     * can be launched using this resource and all of them shall refer
+     * to the same physical resource on the cluster. Note that only
+     * persistent volumes can be shared currently.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.Resource.SharedInfo getShared() {
+      return shared_;
+    }
+    /**
+     * <code>optional .mesos.Resource.SharedInfo shared = 10;</code>
+     *
+     * <pre>
+     * If this is set, the resources are shared, i.e. multiple tasks
+     * can be launched using this resource and all of them shall refer
+     * to the same physical resource on the cluster. Note that only
+     * persistent volumes can be shared currently.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.Resource.SharedInfoOrBuilder getSharedOrBuilder() {
+      return shared_;
+    }
+
+    private void initFields() {
+      providerId_ = org.apache.mesos.Protos.ResourceProviderID.getDefaultInstance();
+      name_ = "";
+      type_ = org.apache.mesos.Protos.Value.Type.SCALAR;
+      scalar_ = org.apache.mesos.Protos.Value.Scalar.getDefaultInstance();
+      ranges_ = org.apache.mesos.Protos.Value.Ranges.getDefaultInstance();
+      set_ = org.apache.mesos.Protos.Value.Set.getDefaultInstance();
+      role_ = "*";
+      allocationInfo_ = org.apache.mesos.Protos.Resource.AllocationInfo.getDefaultInstance();
+      reservation_ = org.apache.mesos.Protos.Resource.ReservationInfo.getDefaultInstance();
+      reservations_ = java.util.Collections.emptyList();
+      disk_ = org.apache.mesos.Protos.Resource.DiskInfo.getDefaultInstance();
+      revocable_ = org.apache.mesos.Protos.Resource.RevocableInfo.getDefaultInstance();
+      shared_ = org.apache.mesos.Protos.Resource.SharedInfo.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasName()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasType()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (hasProviderId()) {
+        if (!getProviderId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasScalar()) {
+        if (!getScalar().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasRanges()) {
+        if (!getRanges().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasReservation()) {
+        if (!getReservation().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      for (int i = 0; i < getReservationsCount(); i++) {
+        if (!getReservations(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasDisk()) {
+        if (!getDisk().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(1, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeEnum(2, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeMessage(3, scalar_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeMessage(4, ranges_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeMessage(5, set_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeBytes(6, getRoleBytes());
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        output.writeMessage(7, disk_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        output.writeMessage(8, reservation_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        output.writeMessage(9, revocable_);
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        output.writeMessage(10, shared_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        output.writeMessage(11, allocationInfo_);
+      }
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeMessage(12, providerId_);
+      }
+      for (int i = 0; i < reservations_.size(); i++) {
+        output.writeMessage(13, reservations_.get(i));
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(2, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, scalar_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, ranges_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(5, set_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(6, getRoleBytes());
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(7, disk_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(8, reservation_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(9, revocable_);
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(10, shared_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(11, allocationInfo_);
+      }
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(12, providerId_);
+      }
+      for (int i = 0; i < reservations_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(13, reservations_.get(i));
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.Resource parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Resource parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Resource parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Resource parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Resource parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Resource parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Resource parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.Resource parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Resource parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Resource parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.Resource prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.Resource}
+     *
+     * <pre>
+     **
+     * Describes a resource from a resource provider. The `name` field is
+     * a string like "cpus" or "mem" that indicates which kind of resource
+     * this is; the rest of the fields describe the properties of the
+     * resource. A resource can take on one of three types: scalar
+     * (double), a list of finite and discrete ranges (e.g., [1-10,
+     * 20-30]), or a set of items. A resource is described using the
+     * standard protocol buffer "union" trick.
+     *
+     * Note that "disk" and "mem" resources are scalar values expressed in
+     * megabytes. Fractional "cpus" values are allowed (e.g., "0.5"),
+     * which correspond to partial shares of a CPU.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.ResourceOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_Resource_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_Resource_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.Resource.class, org.apache.mesos.Protos.Resource.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.Resource.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getProviderIdFieldBuilder();
+          getScalarFieldBuilder();
+          getRangesFieldBuilder();
+          getSetFieldBuilder();
+          getAllocationInfoFieldBuilder();
+          getReservationFieldBuilder();
+          getReservationsFieldBuilder();
+          getDiskFieldBuilder();
+          getRevocableFieldBuilder();
+          getSharedFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (providerIdBuilder_ == null) {
+          providerId_ = org.apache.mesos.Protos.ResourceProviderID.getDefaultInstance();
+        } else {
+          providerIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        name_ = "";
+        bitField0_ = (bitField0_ & ~0x00000002);
+        type_ = org.apache.mesos.Protos.Value.Type.SCALAR;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        if (scalarBuilder_ == null) {
+          scalar_ = org.apache.mesos.Protos.Value.Scalar.getDefaultInstance();
+        } else {
+          scalarBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        if (rangesBuilder_ == null) {
+          ranges_ = org.apache.mesos.Protos.Value.Ranges.getDefaultInstance();
+        } else {
+          rangesBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        if (setBuilder_ == null) {
+          set_ = org.apache.mesos.Protos.Value.Set.getDefaultInstance();
+        } else {
+          setBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
+        role_ = "*";
+        bitField0_ = (bitField0_ & ~0x00000040);
+        if (allocationInfoBuilder_ == null) {
+          allocationInfo_ = org.apache.mesos.Protos.Resource.AllocationInfo.getDefaultInstance();
+        } else {
+          allocationInfoBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000080);
+        if (reservationBuilder_ == null) {
+          reservation_ = org.apache.mesos.Protos.Resource.ReservationInfo.getDefaultInstance();
+        } else {
+          reservationBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000100);
+        if (reservationsBuilder_ == null) {
+          reservations_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000200);
+        } else {
+          reservationsBuilder_.clear();
+        }
+        if (diskBuilder_ == null) {
+          disk_ = org.apache.mesos.Protos.Resource.DiskInfo.getDefaultInstance();
+        } else {
+          diskBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000400);
+        if (revocableBuilder_ == null) {
+          revocable_ = org.apache.mesos.Protos.Resource.RevocableInfo.getDefaultInstance();
+        } else {
+          revocableBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000800);
+        if (sharedBuilder_ == null) {
+          shared_ = org.apache.mesos.Protos.Resource.SharedInfo.getDefaultInstance();
+        } else {
+          sharedBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00001000);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_Resource_descriptor;
+      }
+
+      public org.apache.mesos.Protos.Resource getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.Resource.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.Resource build() {
+        org.apache.mesos.Protos.Resource result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.Resource buildPartial() {
+        org.apache.mesos.Protos.Resource result = new org.apache.mesos.Protos.Resource(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        if (providerIdBuilder_ == null) {
+          result.providerId_ = providerId_;
+        } else {
+          result.providerId_ = providerIdBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.name_ = name_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.type_ = type_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        if (scalarBuilder_ == null) {
+          result.scalar_ = scalar_;
+        } else {
+          result.scalar_ = scalarBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        if (rangesBuilder_ == null) {
+          result.ranges_ = ranges_;
+        } else {
+          result.ranges_ = rangesBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        if (setBuilder_ == null) {
+          result.set_ = set_;
+        } else {
+          result.set_ = setBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        result.role_ = role_;
+        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+          to_bitField0_ |= 0x00000080;
+        }
+        if (allocationInfoBuilder_ == null) {
+          result.allocationInfo_ = allocationInfo_;
+        } else {
+          result.allocationInfo_ = allocationInfoBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
+          to_bitField0_ |= 0x00000100;
+        }
+        if (reservationBuilder_ == null) {
+          result.reservation_ = reservation_;
+        } else {
+          result.reservation_ = reservationBuilder_.build();
+        }
+        if (reservationsBuilder_ == null) {
+          if (((bitField0_ & 0x00000200) == 0x00000200)) {
+            reservations_ = java.util.Collections.unmodifiableList(reservations_);
+            bitField0_ = (bitField0_ & ~0x00000200);
+          }
+          result.reservations_ = reservations_;
+        } else {
+          result.reservations_ = reservationsBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
+          to_bitField0_ |= 0x00000200;
+        }
+        if (diskBuilder_ == null) {
+          result.disk_ = disk_;
+        } else {
+          result.disk_ = diskBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
+          to_bitField0_ |= 0x00000400;
+        }
+        if (revocableBuilder_ == null) {
+          result.revocable_ = revocable_;
+        } else {
+          result.revocable_ = revocableBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
+          to_bitField0_ |= 0x00000800;
+        }
+        if (sharedBuilder_ == null) {
+          result.shared_ = shared_;
+        } else {
+          result.shared_ = sharedBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.Resource) {
+          return mergeFrom((org.apache.mesos.Protos.Resource)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.Resource other) {
+        if (other == org.apache.mesos.Protos.Resource.getDefaultInstance()) return this;
+        if (other.hasProviderId()) {
+          mergeProviderId(other.getProviderId());
+        }
+        if (other.hasName()) {
+          bitField0_ |= 0x00000002;
+          name_ = other.name_;
+          onChanged();
+        }
+        if (other.hasType()) {
+          setType(other.getType());
+        }
+        if (other.hasScalar()) {
+          mergeScalar(other.getScalar());
+        }
+        if (other.hasRanges()) {
+          mergeRanges(other.getRanges());
+        }
+        if (other.hasSet()) {
+          mergeSet(other.getSet());
+        }
+        if (other.hasRole()) {
+          bitField0_ |= 0x00000040;
+          role_ = other.role_;
+          onChanged();
+        }
+        if (other.hasAllocationInfo()) {
+          mergeAllocationInfo(other.getAllocationInfo());
+        }
+        if (other.hasReservation()) {
+          mergeReservation(other.getReservation());
+        }
+        if (reservationsBuilder_ == null) {
+          if (!other.reservations_.isEmpty()) {
+            if (reservations_.isEmpty()) {
+              reservations_ = other.reservations_;
+              bitField0_ = (bitField0_ & ~0x00000200);
+            } else {
+              ensureReservationsIsMutable();
+              reservations_.addAll(other.reservations_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.reservations_.isEmpty()) {
+            if (reservationsBuilder_.isEmpty()) {
+              reservationsBuilder_.dispose();
+              reservationsBuilder_ = null;
+              reservations_ = other.reservations_;
+              bitField0_ = (bitField0_ & ~0x00000200);
+              reservationsBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getReservationsFieldBuilder() : null;
+            } else {
+              reservationsBuilder_.addAllMessages(other.reservations_);
+            }
+          }
+        }
+        if (other.hasDisk()) {
+          mergeDisk(other.getDisk());
+        }
+        if (other.hasRevocable()) {
+          mergeRevocable(other.getRevocable());
+        }
+        if (other.hasShared()) {
+          mergeShared(other.getShared());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasName()) {
+          
+          return false;
+        }
+        if (!hasType()) {
+          
+          return false;
+        }
+        if (hasProviderId()) {
+          if (!getProviderId().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasScalar()) {
+          if (!getScalar().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasRanges()) {
+          if (!getRanges().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasReservation()) {
+          if (!getReservation().isInitialized()) {
+            
+            return false;
+          }
+        }
+        for (int i = 0; i < getReservationsCount(); i++) {
+          if (!getReservations(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasDisk()) {
+          if (!getDisk().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.Resource parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.Resource) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional .mesos.ResourceProviderID provider_id = 12;
+      private org.apache.mesos.Protos.ResourceProviderID providerId_ = org.apache.mesos.Protos.ResourceProviderID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.ResourceProviderID, org.apache.mesos.Protos.ResourceProviderID.Builder, org.apache.mesos.Protos.ResourceProviderIDOrBuilder> providerIdBuilder_;
+      /**
+       * <code>optional .mesos.ResourceProviderID provider_id = 12;</code>
+       */
+      public boolean hasProviderId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.ResourceProviderID provider_id = 12;</code>
+       */
+      public org.apache.mesos.Protos.ResourceProviderID getProviderId() {
+        if (providerIdBuilder_ == null) {
+          return providerId_;
+        } else {
+          return providerIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.ResourceProviderID provider_id = 12;</code>
+       */
+      public Builder setProviderId(org.apache.mesos.Protos.ResourceProviderID value) {
+        if (providerIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          providerId_ = value;
+          onChanged();
+        } else {
+          providerIdBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ResourceProviderID provider_id = 12;</code>
+       */
+      public Builder setProviderId(
+          org.apache.mesos.Protos.ResourceProviderID.Builder builderForValue) {
+        if (providerIdBuilder_ == null) {
+          providerId_ = builderForValue.build();
+          onChanged();
+        } else {
+          providerIdBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ResourceProviderID provider_id = 12;</code>
+       */
+      public Builder mergeProviderId(org.apache.mesos.Protos.ResourceProviderID value) {
+        if (providerIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001) &&
+              providerId_ != org.apache.mesos.Protos.ResourceProviderID.getDefaultInstance()) {
+            providerId_ =
+              org.apache.mesos.Protos.ResourceProviderID.newBuilder(providerId_).mergeFrom(value).buildPartial();
+          } else {
+            providerId_ = value;
+          }
+          onChanged();
+        } else {
+          providerIdBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ResourceProviderID provider_id = 12;</code>
+       */
+      public Builder clearProviderId() {
+        if (providerIdBuilder_ == null) {
+          providerId_ = org.apache.mesos.Protos.ResourceProviderID.getDefaultInstance();
+          onChanged();
+        } else {
+          providerIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ResourceProviderID provider_id = 12;</code>
+       */
+      public org.apache.mesos.Protos.ResourceProviderID.Builder getProviderIdBuilder() {
+        bitField0_ |= 0x00000001;
+        onChanged();
+        return getProviderIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.ResourceProviderID provider_id = 12;</code>
+       */
+      public org.apache.mesos.Protos.ResourceProviderIDOrBuilder getProviderIdOrBuilder() {
+        if (providerIdBuilder_ != null) {
+          return providerIdBuilder_.getMessageOrBuilder();
+        } else {
+          return providerId_;
+        }
+      }
+      /**
+       * <code>optional .mesos.ResourceProviderID provider_id = 12;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.ResourceProviderID, org.apache.mesos.Protos.ResourceProviderID.Builder, org.apache.mesos.Protos.ResourceProviderIDOrBuilder> 
+          getProviderIdFieldBuilder() {
+        if (providerIdBuilder_ == null) {
+          providerIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.ResourceProviderID, org.apache.mesos.Protos.ResourceProviderID.Builder, org.apache.mesos.Protos.ResourceProviderIDOrBuilder>(
+                  providerId_,
+                  getParentForChildren(),
+                  isClean());
+          providerId_ = null;
+        }
+        return providerIdBuilder_;
+      }
+
+      // required string name = 1;
+      private java.lang.Object name_ = "";
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public boolean hasName() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public java.lang.String getName() {
+        java.lang.Object ref = name_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          name_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        java.lang.Object ref = name_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          name_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder setName(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder clearName() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        name_ = getDefaultInstance().getName();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder setNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+
+      // required .mesos.Value.Type type = 2;
+      private org.apache.mesos.Protos.Value.Type type_ = org.apache.mesos.Protos.Value.Type.SCALAR;
+      /**
+       * <code>required .mesos.Value.Type type = 2;</code>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>required .mesos.Value.Type type = 2;</code>
+       */
+      public org.apache.mesos.Protos.Value.Type getType() {
+        return type_;
+      }
+      /**
+       * <code>required .mesos.Value.Type type = 2;</code>
+       */
+      public Builder setType(org.apache.mesos.Protos.Value.Type value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000004;
+        type_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required .mesos.Value.Type type = 2;</code>
+       */
+      public Builder clearType() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        type_ = org.apache.mesos.Protos.Value.Type.SCALAR;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.Value.Scalar scalar = 3;
+      private org.apache.mesos.Protos.Value.Scalar scalar_ = org.apache.mesos.Protos.Value.Scalar.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Value.Scalar, org.apache.mesos.Protos.Value.Scalar.Builder, org.apache.mesos.Protos.Value.ScalarOrBuilder> scalarBuilder_;
+      /**
+       * <code>optional .mesos.Value.Scalar scalar = 3;</code>
+       */
+      public boolean hasScalar() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.Value.Scalar scalar = 3;</code>
+       */
+      public org.apache.mesos.Protos.Value.Scalar getScalar() {
+        if (scalarBuilder_ == null) {
+          return scalar_;
+        } else {
+          return scalarBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.Value.Scalar scalar = 3;</code>
+       */
+      public Builder setScalar(org.apache.mesos.Protos.Value.Scalar value) {
+        if (scalarBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          scalar_ = value;
+          onChanged();
+        } else {
+          scalarBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Scalar scalar = 3;</code>
+       */
+      public Builder setScalar(
+          org.apache.mesos.Protos.Value.Scalar.Builder builderForValue) {
+        if (scalarBuilder_ == null) {
+          scalar_ = builderForValue.build();
+          onChanged();
+        } else {
+          scalarBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Scalar scalar = 3;</code>
+       */
+      public Builder mergeScalar(org.apache.mesos.Protos.Value.Scalar value) {
+        if (scalarBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008) &&
+              scalar_ != org.apache.mesos.Protos.Value.Scalar.getDefaultInstance()) {
+            scalar_ =
+              org.apache.mesos.Protos.Value.Scalar.newBuilder(scalar_).mergeFrom(value).buildPartial();
+          } else {
+            scalar_ = value;
+          }
+          onChanged();
+        } else {
+          scalarBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Scalar scalar = 3;</code>
+       */
+      public Builder clearScalar() {
+        if (scalarBuilder_ == null) {
+          scalar_ = org.apache.mesos.Protos.Value.Scalar.getDefaultInstance();
+          onChanged();
+        } else {
+          scalarBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Scalar scalar = 3;</code>
+       */
+      public org.apache.mesos.Protos.Value.Scalar.Builder getScalarBuilder() {
+        bitField0_ |= 0x00000008;
+        onChanged();
+        return getScalarFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.Value.Scalar scalar = 3;</code>
+       */
+      public org.apache.mesos.Protos.Value.ScalarOrBuilder getScalarOrBuilder() {
+        if (scalarBuilder_ != null) {
+          return scalarBuilder_.getMessageOrBuilder();
+        } else {
+          return scalar_;
+        }
+      }
+      /**
+       * <code>optional .mesos.Value.Scalar scalar = 3;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Value.Scalar, org.apache.mesos.Protos.Value.Scalar.Builder, org.apache.mesos.Protos.Value.ScalarOrBuilder> 
+          getScalarFieldBuilder() {
+        if (scalarBuilder_ == null) {
+          scalarBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Value.Scalar, org.apache.mesos.Protos.Value.Scalar.Builder, org.apache.mesos.Protos.Value.ScalarOrBuilder>(
+                  scalar_,
+                  getParentForChildren(),
+                  isClean());
+          scalar_ = null;
+        }
+        return scalarBuilder_;
+      }
+
+      // optional .mesos.Value.Ranges ranges = 4;
+      private org.apache.mesos.Protos.Value.Ranges ranges_ = org.apache.mesos.Protos.Value.Ranges.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Value.Ranges, org.apache.mesos.Protos.Value.Ranges.Builder, org.apache.mesos.Protos.Value.RangesOrBuilder> rangesBuilder_;
+      /**
+       * <code>optional .mesos.Value.Ranges ranges = 4;</code>
+       */
+      public boolean hasRanges() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional .mesos.Value.Ranges ranges = 4;</code>
+       */
+      public org.apache.mesos.Protos.Value.Ranges getRanges() {
+        if (rangesBuilder_ == null) {
+          return ranges_;
+        } else {
+          return rangesBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.Value.Ranges ranges = 4;</code>
+       */
+      public Builder setRanges(org.apache.mesos.Protos.Value.Ranges value) {
+        if (rangesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ranges_ = value;
+          onChanged();
+        } else {
+          rangesBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Ranges ranges = 4;</code>
+       */
+      public Builder setRanges(
+          org.apache.mesos.Protos.Value.Ranges.Builder builderForValue) {
+        if (rangesBuilder_ == null) {
+          ranges_ = builderForValue.build();
+          onChanged();
+        } else {
+          rangesBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Ranges ranges = 4;</code>
+       */
+      public Builder mergeRanges(org.apache.mesos.Protos.Value.Ranges value) {
+        if (rangesBuilder_ == null) {
+          if (((bitField0_ & 0x00000010) == 0x00000010) &&
+              ranges_ != org.apache.mesos.Protos.Value.Ranges.getDefaultInstance()) {
+            ranges_ =
+              org.apache.mesos.Protos.Value.Ranges.newBuilder(ranges_).mergeFrom(value).buildPartial();
+          } else {
+            ranges_ = value;
+          }
+          onChanged();
+        } else {
+          rangesBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Ranges ranges = 4;</code>
+       */
+      public Builder clearRanges() {
+        if (rangesBuilder_ == null) {
+          ranges_ = org.apache.mesos.Protos.Value.Ranges.getDefaultInstance();
+          onChanged();
+        } else {
+          rangesBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Ranges ranges = 4;</code>
+       */
+      public org.apache.mesos.Protos.Value.Ranges.Builder getRangesBuilder() {
+        bitField0_ |= 0x00000010;
+        onChanged();
+        return getRangesFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.Value.Ranges ranges = 4;</code>
+       */
+      public org.apache.mesos.Protos.Value.RangesOrBuilder getRangesOrBuilder() {
+        if (rangesBuilder_ != null) {
+          return rangesBuilder_.getMessageOrBuilder();
+        } else {
+          return ranges_;
+        }
+      }
+      /**
+       * <code>optional .mesos.Value.Ranges ranges = 4;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Value.Ranges, org.apache.mesos.Protos.Value.Ranges.Builder, org.apache.mesos.Protos.Value.RangesOrBuilder> 
+          getRangesFieldBuilder() {
+        if (rangesBuilder_ == null) {
+          rangesBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Value.Ranges, org.apache.mesos.Protos.Value.Ranges.Builder, org.apache.mesos.Protos.Value.RangesOrBuilder>(
+                  ranges_,
+                  getParentForChildren(),
+                  isClean());
+          ranges_ = null;
+        }
+        return rangesBuilder_;
+      }
+
+      // optional .mesos.Value.Set set = 5;
+      private org.apache.mesos.Protos.Value.Set set_ = org.apache.mesos.Protos.Value.Set.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Value.Set, org.apache.mesos.Protos.Value.Set.Builder, org.apache.mesos.Protos.Value.SetOrBuilder> setBuilder_;
+      /**
+       * <code>optional .mesos.Value.Set set = 5;</code>
+       */
+      public boolean hasSet() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional .mesos.Value.Set set = 5;</code>
+       */
+      public org.apache.mesos.Protos.Value.Set getSet() {
+        if (setBuilder_ == null) {
+          return set_;
+        } else {
+          return setBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.Value.Set set = 5;</code>
+       */
+      public Builder setSet(org.apache.mesos.Protos.Value.Set value) {
+        if (setBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          set_ = value;
+          onChanged();
+        } else {
+          setBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Set set = 5;</code>
+       */
+      public Builder setSet(
+          org.apache.mesos.Protos.Value.Set.Builder builderForValue) {
+        if (setBuilder_ == null) {
+          set_ = builderForValue.build();
+          onChanged();
+        } else {
+          setBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Set set = 5;</code>
+       */
+      public Builder mergeSet(org.apache.mesos.Protos.Value.Set value) {
+        if (setBuilder_ == null) {
+          if (((bitField0_ & 0x00000020) == 0x00000020) &&
+              set_ != org.apache.mesos.Protos.Value.Set.getDefaultInstance()) {
+            set_ =
+              org.apache.mesos.Protos.Value.Set.newBuilder(set_).mergeFrom(value).buildPartial();
+          } else {
+            set_ = value;
+          }
+          onChanged();
+        } else {
+          setBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Set set = 5;</code>
+       */
+      public Builder clearSet() {
+        if (setBuilder_ == null) {
+          set_ = org.apache.mesos.Protos.Value.Set.getDefaultInstance();
+          onChanged();
+        } else {
+          setBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Value.Set set = 5;</code>
+       */
+      public org.apache.mesos.Protos.Value.Set.Builder getSetBuilder() {
+        bitField0_ |= 0x00000020;
+        onChanged();
+        return getSetFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.Value.Set set = 5;</code>
+       */
+      public org.apache.mesos.Protos.Value.SetOrBuilder getSetOrBuilder() {
+        if (setBuilder_ != null) {
+          return setBuilder_.getMessageOrBuilder();
+        } else {
+          return set_;
+        }
+      }
+      /**
+       * <code>optional .mesos.Value.Set set = 5;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Value.Set, org.apache.mesos.Protos.Value.Set.Builder, org.apache.mesos.Protos.Value.SetOrBuilder> 
+          getSetFieldBuilder() {
+        if (setBuilder_ == null) {
+          setBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Value.Set, org.apache.mesos.Protos.Value.Set.Builder, org.apache.mesos.Protos.Value.SetOrBuilder>(
+                  set_,
+                  getParentForChildren(),
+                  isClean());
+          set_ = null;
+        }
+        return setBuilder_;
+      }
+
+      // optional string role = 6 [default = "*", deprecated = true];
+      private java.lang.Object role_ = "*";
+      /**
+       * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+       *
+       * <pre>
+       * The role that this resource is reserved for. If "*", this indicates
+       * that the resource is unreserved. Otherwise, the resource will only
+       * be offered to frameworks that belong to this role.
+       *
+       * NOTE: Frameworks must not set this field if `reservations` is set.
+       *       See the 'Resource Format' section for more details.
+       *
+       * TODO(mpark): Deprecate once `reservations` is no longer experimental.
+       * </pre>
+       */
+      @java.lang.Deprecated public boolean hasRole() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+       *
+       * <pre>
+       * The role that this resource is reserved for. If "*", this indicates
+       * that the resource is unreserved. Otherwise, the resource will only
+       * be offered to frameworks that belong to this role.
+       *
+       * NOTE: Frameworks must not set this field if `reservations` is set.
+       *       See the 'Resource Format' section for more details.
+       *
+       * TODO(mpark): Deprecate once `reservations` is no longer experimental.
+       * </pre>
+       */
+      @java.lang.Deprecated public java.lang.String getRole() {
+        java.lang.Object ref = role_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          role_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+       *
+       * <pre>
+       * The role that this resource is reserved for. If "*", this indicates
+       * that the resource is unreserved. Otherwise, the resource will only
+       * be offered to frameworks that belong to this role.
+       *
+       * NOTE: Frameworks must not set this field if `reservations` is set.
+       *       See the 'Resource Format' section for more details.
+       *
+       * TODO(mpark): Deprecate once `reservations` is no longer experimental.
+       * </pre>
+       */
+      @java.lang.Deprecated public com.google.protobuf.ByteString
+          getRoleBytes() {
+        java.lang.Object ref = role_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          role_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+       *
+       * <pre>
+       * The role that this resource is reserved for. If "*", this indicates
+       * that the resource is unreserved. Otherwise, the resource will only
+       * be offered to frameworks that belong to this role.
+       *
+       * NOTE: Frameworks must not set this field if `reservations` is set.
+       *       See the 'Resource Format' section for more details.
+       *
+       * TODO(mpark): Deprecate once `reservations` is no longer experimental.
+       * </pre>
+       */
+      @java.lang.Deprecated public Builder setRole(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000040;
+        role_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+       *
+       * <pre>
+       * The role that this resource is reserved for. If "*", this indicates
+       * that the resource is unreserved. Otherwise, the resource will only
+       * be offered to frameworks that belong to this role.
+       *
+       * NOTE: Frameworks must not set this field if `reservations` is set.
+       *       See the 'Resource Format' section for more details.
+       *
+       * TODO(mpark): Deprecate once `reservations` is no longer experimental.
+       * </pre>
+       */
+      @java.lang.Deprecated public Builder clearRole() {
+        bitField0_ = (bitField0_ & ~0x00000040);
+        role_ = getDefaultInstance().getRole();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+       *
+       * <pre>
+       * The role that this resource is reserved for. If "*", this indicates
+       * that the resource is unreserved. Otherwise, the resource will only
+       * be offered to frameworks that belong to this role.
+       *
+       * NOTE: Frameworks must not set this field if `reservations` is set.
+       *       See the 'Resource Format' section for more details.
+       *
+       * TODO(mpark): Deprecate once `reservations` is no longer experimental.
+       * </pre>
+       */
+      @java.lang.Deprecated public Builder setRoleBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000040;
+        role_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.Resource.AllocationInfo allocation_info = 11;
+      private org.apache.mesos.Protos.Resource.AllocationInfo allocationInfo_ = org.apache.mesos.Protos.Resource.AllocationInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Resource.AllocationInfo, org.apache.mesos.Protos.Resource.AllocationInfo.Builder, org.apache.mesos.Protos.Resource.AllocationInfoOrBuilder> allocationInfoBuilder_;
+      /**
+       * <code>optional .mesos.Resource.AllocationInfo allocation_info = 11;</code>
+       */
+      public boolean hasAllocationInfo() {
+        return ((bitField0_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional .mesos.Resource.AllocationInfo allocation_info = 11;</code>
+       */
+      public org.apache.mesos.Protos.Resource.AllocationInfo getAllocationInfo() {
+        if (allocationInfoBuilder_ == null) {
+          return allocationInfo_;
+        } else {
+          return allocationInfoBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.Resource.AllocationInfo allocation_info = 11;</code>
+       */
+      public Builder setAllocationInfo(org.apache.mesos.Protos.Resource.AllocationInfo value) {
+        if (allocationInfoBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          allocationInfo_ = value;
+          onChanged();
+        } else {
+          allocationInfoBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Resource.AllocationInfo allocation_info = 11;</code>
+       */
+      public Builder setAllocationInfo(
+          org.apache.mesos.Protos.Resource.AllocationInfo.Builder builderForValue) {
+        if (allocationInfoBuilder_ == null) {
+          allocationInfo_ = builderForValue.build();
+          onChanged();
+        } else {
+          allocationInfoBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Resource.AllocationInfo allocation_info = 11;</code>
+       */
+      public Builder mergeAllocationInfo(org.apache.mesos.Protos.Resource.AllocationInfo value) {
+        if (allocationInfoBuilder_ == null) {
+          if (((bitField0_ & 0x00000080) == 0x00000080) &&
+              allocationInfo_ != org.apache.mesos.Protos.Resource.AllocationInfo.getDefaultInstance()) {
+            allocationInfo_ =
+              org.apache.mesos.Protos.Resource.AllocationInfo.newBuilder(allocationInfo_).mergeFrom(value).buildPartial();
+          } else {
+            allocationInfo_ = value;
+          }
+          onChanged();
+        } else {
+          allocationInfoBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Resource.AllocationInfo allocation_info = 11;</code>
+       */
+      public Builder clearAllocationInfo() {
+        if (allocationInfoBuilder_ == null) {
+          allocationInfo_ = org.apache.mesos.Protos.Resource.AllocationInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          allocationInfoBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000080);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Resource.AllocationInfo allocation_info = 11;</code>
+       */
+      public org.apache.mesos.Protos.Resource.AllocationInfo.Builder getAllocationInfoBuilder() {
+        bitField0_ |= 0x00000080;
+        onChanged();
+        return getAllocationInfoFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.Resource.AllocationInfo allocation_info = 11;</code>
+       */
+      public org.apache.mesos.Protos.Resource.AllocationInfoOrBuilder getAllocationInfoOrBuilder() {
+        if (allocationInfoBuilder_ != null) {
+          return allocationInfoBuilder_.getMessageOrBuilder();
+        } else {
+          return allocationInfo_;
+        }
+      }
+      /**
+       * <code>optional .mesos.Resource.AllocationInfo allocation_info = 11;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Resource.AllocationInfo, org.apache.mesos.Protos.Resource.AllocationInfo.Builder, org.apache.mesos.Protos.Resource.AllocationInfoOrBuilder> 
+          getAllocationInfoFieldBuilder() {
+        if (allocationInfoBuilder_ == null) {
+          allocationInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Resource.AllocationInfo, org.apache.mesos.Protos.Resource.AllocationInfo.Builder, org.apache.mesos.Protos.Resource.AllocationInfoOrBuilder>(
+                  allocationInfo_,
+                  getParentForChildren(),
+                  isClean());
+          allocationInfo_ = null;
+        }
+        return allocationInfoBuilder_;
+      }
+
+      // optional .mesos.Resource.ReservationInfo reservation = 8;
+      private org.apache.mesos.Protos.Resource.ReservationInfo reservation_ = org.apache.mesos.Protos.Resource.ReservationInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Resource.ReservationInfo, org.apache.mesos.Protos.Resource.ReservationInfo.Builder, org.apache.mesos.Protos.Resource.ReservationInfoOrBuilder> reservationBuilder_;
+      /**
+       * <code>optional .mesos.Resource.ReservationInfo reservation = 8;</code>
+       *
+       * <pre>
+       * If this is set, this resource was dynamically reserved by an
+       * operator or a framework. Otherwise, this resource is either unreserved
+       * or statically reserved by an operator via the --resources flag.
+       *
+       * NOTE: Frameworks must not set this field if `reservations` is set.
+       *       See the 'Resource Format' section for more details.
+       *
+       * TODO(mpark): Deprecate once `reservations` is no longer experimental.
+       * </pre>
+       */
+      public boolean hasReservation() {
+        return ((bitField0_ & 0x00000100) == 0x00000100);
+      }
+      /**
+       * <code>optional .mesos.Resource.ReservationInfo reservation = 8;</code>
+       *
+       * <pre>
+       * If this is set, this resource was dynamically reserved by an
+       * operator or a framework. Otherwise, this resource is either unreserved
+       * or statically reserved by an operator via the --resources flag.
+       *
+       * NOTE: Frameworks must not set this field if `reservations` is set.
+       *       See the 'Resource Format' section for more details.
+       *
+       * TODO(mpark): Deprecate once `reservations` is no longer experimental.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Resource.ReservationInfo getReservation() {
+        if (reservationBuilder_ == null) {
+          return reservation_;
+        } else {
+          return reservationBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.Resource.ReservationInfo reservation = 8;</code>
+       *
+       * <pre>
+       * If this is set, this resource was dynamically reserved by an
+       * operator or a framework. Otherwise, this resource is either unreserved
+       * or statically reserved by an operator via the --resources flag.
+       *
+       * NOTE: Frameworks must not set this field if `reservations` is set.
+       *       See the 'Resource Format' section for more details.
+       *
+       * TODO(mpark): Deprecate once `reservations` is no longer experimental.
+       * </pre>
+       */
+      public Builder setReservation(org.apache.mesos.Protos.Resource.ReservationInfo value) {
+        if (reservationBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          reservation_ = value;
+          onChanged();
+        } else {
+          reservationBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000100;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Resource.ReservationInfo reservation = 8;</code>
+       *
+       * <pre>
+       * If this is set, this resource was dynamically reserved by an
+       * operator or a framework. Otherwise, this resource is either unreserved
+       * or statically reserved by an operator via the --resources flag.
+       *
+       * NOTE: Frameworks must not set this field if `reservations` is set.
+       *       See the 'Resource Format' section for more details.
+       *
+       * TODO(mpark): Deprecate once `reservations` is no longer experimental.
+       * </pre>
+       */
+      public Builder setReservation(
+          org.apache.mesos.Protos.Resource.ReservationInfo.Builder builderForValue) {
+        if (reservationBuilder_ == null) {
+          reservation_ = builderForValue.build();
+          onChanged();
+        } else {
+          reservationBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000100;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Resource.ReservationInfo reservation = 8;</code>
+       *
+       * <pre>
+       * If this is set, this resource was dynamically reserved by an
+       * operator or a framework. Otherwise, this resource is either unreserved
+       * or statically reserved by an operator via the --resources flag.
+       *
+       * NOTE: Frameworks must not set this field if `reservations` is set.
+       *       See the 'Resource Format' section for more details.
+       *
+       * TODO(mpark): Deprecate once `reservations` is no longer experimental.
+       * </pre>
+       */
+      public Builder mergeReservation(org.apache.mesos.Protos.Resource.ReservationInfo value) {
+        if (reservationBuilder_ == null) {
+          if (((bitField0_ & 0x00000100) == 0x00000100) &&
+              reservation_ != org.apache.mesos.Protos.Resource.ReservationInfo.getDefaultInstance()) {
+            reservation_ =
+              org.apache.mesos.Protos.Resource.ReservationInfo.newBuilder(reservation_).mergeFrom(value).buildPartial();
+          } else {
+            reservation_ = value;
+          }
+          onChanged();
+        } else {
+          reservationBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000100;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Resource.ReservationInfo reservation = 8;</code>
+       *
+       * <pre>
+       * If this is set, this resource was dynamically reserved by an
+       * operator or a framework. Otherwise, this resource is either unreserved
+       * or statically reserved by an operator via the --resources flag.
+       *
+       * NOTE: Frameworks must not set this field if `reservations` is set.
+       *       See the 'Resource Format' section for more details.
+       *
+       * TODO(mpark): Deprecate once `reservations` is no longer experimental.
+       * </pre>
+       */
+      public Builder clearReservation() {
+        if (reservationBuilder_ == null) {
+          reservation_ = org.apache.mesos.Protos.Resource.ReservationInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          reservationBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000100);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Resource.ReservationInfo reservation = 8;</code>
+       *
+       * <pre>
+       * If this is set, this resource was dynamically reserved by an
+       * operator or a framework. Otherwise, this resource is either unreserved
+       * or statically reserved by an operator via the --resources flag.
+       *
+       * NOTE: Frameworks must not set this field if `reservations` is set.
+       *       See the 'Resource Format' section for more details.
+       *
+       * TODO(mpark): Deprecate once `reservations` is no longer experimental.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Resource.ReservationInfo.Builder getReservationBuilder() {
+        bitField0_ |= 0x00000100;
+        onChanged();
+        return getReservationFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.Resource.ReservationInfo reservation = 8;</code>
+       *
+       * <pre>
+       * If this is set, this resource was dynamically reserved by an
+       * operator or a framework. Otherwise, this resource is either unreserved
+       * or statically reserved by an operator via the --resources flag.
+       *
+       * NOTE: Frameworks must not set this field if `reservations` is set.
+       *       See the 'Resource Format' section for more details.
+       *
+       * TODO(mpark): Deprecate once `reservations` is no longer experimental.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Resource.ReservationInfoOrBuilder getReservationOrBuilder() {
+        if (reservationBuilder_ != null) {
+          return reservationBuilder_.getMessageOrBuilder();
+        } else {
+          return reservation_;
+        }
+      }
+      /**
+       * <code>optional .mesos.Resource.ReservationInfo reservation = 8;</code>
+       *
+       * <pre>
+       * If this is set, this resource was dynamically reserved by an
+       * operator or a framework. Otherwise, this resource is either unreserved
+       * or statically reserved by an operator via the --resources flag.
+       *
+       * NOTE: Frameworks must not set this field if `reservations` is set.
+       *       See the 'Resource Format' section for more details.
+       *
+       * TODO(mpark): Deprecate once `reservations` is no longer experimental.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Resource.ReservationInfo, org.apache.mesos.Protos.Resource.ReservationInfo.Builder, org.apache.mesos.Protos.Resource.ReservationInfoOrBuilder> 
+          getReservationFieldBuilder() {
+        if (reservationBuilder_ == null) {
+          reservationBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Resource.ReservationInfo, org.apache.mesos.Protos.Resource.ReservationInfo.Builder, org.apache.mesos.Protos.Resource.ReservationInfoOrBuilder>(
+                  reservation_,
+                  getParentForChildren(),
+                  isClean());
+          reservation_ = null;
+        }
+        return reservationBuilder_;
+      }
+
+      // repeated .mesos.Resource.ReservationInfo reservations = 13;
+      private java.util.List<org.apache.mesos.Protos.Resource.ReservationInfo> reservations_ =
+        java.util.Collections.emptyList();
+      private void ensureReservationsIsMutable() {
+        if (!((bitField0_ & 0x00000200) == 0x00000200)) {
+          reservations_ = new java.util.ArrayList<org.apache.mesos.Protos.Resource.ReservationInfo>(reservations_);
+          bitField0_ |= 0x00000200;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.Resource.ReservationInfo, org.apache.mesos.Protos.Resource.ReservationInfo.Builder, org.apache.mesos.Protos.Resource.ReservationInfoOrBuilder> reservationsBuilder_;
+
+      /**
+       * <code>repeated .mesos.Resource.ReservationInfo reservations = 13;</code>
+       *
+       * <pre>
+       * The stack of reservations. If this field is empty, it indicates that this
+       * resource is unreserved. Otherwise, the resource is reserved. The first
+       * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+       * have `DYNAMIC`. One can create a new reservation on top of an existing
+       * one by pushing a new `ReservationInfo` to the back. The last
+       * `ReservationInfo` in this stack is the "current" reservation. The new
+       * reservation's role must be a child of the current reservation's role.
+       *
+       * NOTE: Frameworks must not set this field if `reservation` is set.
+       *       See the 'Resource Format' section for more details.
+       *
+       * TODO(mpark): Deprecate `role` and `reservation` once this is stable.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.Protos.Resource.ReservationInfo> getReservationsList() {
+        if (reservationsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(reservations_);
+        } else {
+          return reservationsBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource.ReservationInfo reservations = 13;</code>
+       *
+       * <pre>
+       * The stack of reservations. If this field is empty, it indicates that this
+       * resource is unreserved. Otherwise, the resource is reserved. The first
+       * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+       * have `DYNAMIC`. One can create a new reservation on top of an existing
+       * one by pushing a new `ReservationInfo` to the back. The last
+       * `ReservationInfo` in this stack is the "current" reservation. The new
+       * reservation's role must be a child of the current reservation's role.
+       *
+       * NOTE: Frameworks must not set this field if `reservation` is set.
+       *       See the 'Resource Format' section for more details.
+       *
+       * TODO(mpark): Deprecate `role` and `reservation` once this is stable.
+       * </pre>
+       */
+      public int getReservationsCount() {
+        if (reservationsBuilder_ == null) {
+          return reservations_.size();
+        } else {
+          return reservationsBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource.ReservationInfo reservations = 13;</code>
+       *
+       * <pre>
+       * The stack of reservations. If this field is empty, it indicates that this
+       * resource is unreserved. Otherwise, the resource is reserved. The first
+       * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+       * have `DYNAMIC`. One can create a new reservation on top of an existing
+       * one by pushing a new `ReservationInfo` to the back. The last
+       * `ReservationInfo` in this stack is the "current" reservation. The new
+       * reservation's role must be a child of the current reservation's role.
+       *
+       * NOTE: Frameworks must not set this field if `reservation` is set.
+       *       See the 'Resource Format' section for more details.
+       *
+       * TODO(mpark): Deprecate `role` and `reservation` once this is stable.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Resource.ReservationInfo getReservations(int index) {
+        if (reservationsBuilder_ == null) {
+          return reservations_.get(index);
+        } else {
+          return reservationsBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource.ReservationInfo reservations = 13;</code>
+       *
+       * <pre>
+       * The stack of reservations. If this field is empty, it indicates that this
+       * resource is unreserved. Otherwise, the resource is reserved. The first
+       * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+       * have `DYNAMIC`. One can create a new reservation on top of an existing
+       * one by pushing a new `ReservationInfo` to the back. The last
+       * `ReservationInfo` in this stack is the "current" reservation. The new
+       * reservation's role must be a child of the current reservation's role.
+       *
+       * NOTE: Frameworks must not set this field if `reservation` is set.
+       *       See the 'Resource Format' section for more details.
+       *
+       * TODO(mpark): Deprecate `role` and `reservation` once this is stable.
+       * </pre>
+       */
+      public Builder setReservations(
+          int index, org.apache.mesos.Protos.Resource.ReservationInfo value) {
+        if (reservationsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureReservationsIsMutable();
+          reservations_.set(index, value);
+          onChanged();
+        } else {
+          reservationsBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource.ReservationInfo reservations = 13;</code>
+       *
+       * <pre>
+       * The stack of reservations. If this field is empty, it indicates that this
+       * resource is unreserved. Otherwise, the resource is reserved. The first
+       * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+       * have `DYNAMIC`. One can create a new reservation on top of an existing
+       * one by pushing a new `ReservationInfo` to the back. The last
+       * `ReservationInfo` in this stack is the "current" reservation. The new
+       * reservation's role must be a child of the current reservation's role.
+       *
+       * NOTE: Frameworks must not set this field if `reservation` is set.
+       *       See the 'Resource Format' section for more details.
+       *
+       * TODO(mpark): Deprecate `role` and `reservation` once this is stable.
+       * </pre>
+       */
+      public Builder setReservations(
+          int index, org.apache.mesos.Protos.Resource.ReservationInfo.Builder builderForValue) {
+        if (reservationsBuilder_ == null) {
+          ensureReservationsIsMutable();
+          reservations_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          reservationsBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource.ReservationInfo reservations = 13;</code>
+       *
+       * <pre>
+       * The stack of reservations. If this field is empty, it indicates that this
+       * resource is unreserved. Otherwise, the resource is reserved. The first
+       * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+       * have `DYNAMIC`. One can create a new reservation on top of an existing
+       * one by pushing a new `ReservationInfo` to the back. The last
+       * `ReservationInfo` in this stack is the "current" reservation. The new
+       * reservation's role must be a child of the current reservation's role.
+       *
+       * NOTE: Frameworks must not set this field if `reservation` is set.
+       *       See the 'Resource Format' section for more details.
+       *
+       * TODO(mpark): Deprecate `role` and `reservation` once this is stable.
+       * </pre>
+       */
+      public Builder addReservations(org.apache.mesos.Protos.Resource.ReservationInfo value) {
+        if (reservationsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureReservationsIsMutable();
+          reservations_.add(value);
+          onChanged();
+        } else {
+          reservationsBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource.ReservationInfo reservations = 13;</code>
+       *
+       * <pre>
+       * The stack of reservations. If this field is empty, it indicates that this
+       * resource is unreserved. Otherwise, the resource is reserved. The first
+       * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+       * have `DYNAMIC`. One can create a new reservation on top of an existing
+       * one by pushing a new `ReservationInfo` to the back. The last
+       * `ReservationInfo` in this stack is the "current" reservation. The new
+       * reservation's role must be a child of the current reservation's role.
+       *
+       * NOTE: Frameworks must not set this field if `reservation` is set.
+       *       See the 'Resource Format' section for more details.
+       *
+       * TODO(mpark): Deprecate `role` and `reservation` once this is stable.
+       * </pre>
+       */
+      public Builder addReservations(
+          int index, org.apache.mesos.Protos.Resource.ReservationInfo value) {
+        if (reservationsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureReservationsIsMutable();
+          reservations_.add(index, value);
+          onChanged();
+        } else {
+          reservationsBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource.ReservationInfo reservations = 13;</code>
+       *
+       * <pre>
+       * The stack of reservations. If this field is empty, it indicates that this
+       * resource is unreserved. Otherwise, the resource is reserved. The first
+       * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+       * have `DYNAMIC`. One can create a new reservation on top of an existing
+       * one by pushing a new `ReservationInfo` to the back. The last
+       * `ReservationInfo` in this stack is the "current" reservation. The new
+       * reservation's role must be a child of the current reservation's role.
+       *
+       * NOTE: Frameworks must not set this field if `reservation` is set.
+       *       See the 'Resource Format' section for more details.
+       *
+       * TODO(mpark): Deprecate `role` and `reservation` once this is stable.
+       * </pre>
+       */
+      public Builder addReservations(
+          org.apache.mesos.Protos.Resource.ReservationInfo.Builder builderForValue) {
+        if (reservationsBuilder_ == null) {
+          ensureReservationsIsMutable();
+          reservations_.add(builderForValue.build());
+          onChanged();
+        } else {
+          reservationsBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource.ReservationInfo reservations = 13;</code>
+       *
+       * <pre>
+       * The stack of reservations. If this field is empty, it indicates that this
+       * resource is unreserved. Otherwise, the resource is reserved. The first
+       * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+       * have `DYNAMIC`. One can create a new reservation on top of an existing
+       * one by pushing a new `ReservationInfo` to the back. The last
+       * `ReservationInfo` in this stack is the "current" reservation. The new
+       * reservation's role must be a child of the current reservation's role.
+       *
+       * NOTE: Frameworks must not set this field if `reservation` is set.
+       *       See the 'Resource Format' section for more details.
+       *
+       * TODO(mpark): Deprecate `role` and `reservation` once this is stable.
+       * </pre>
+       */
+      public Builder addReservations(
+          int index, org.apache.mesos.Protos.Resource.ReservationInfo.Builder builderForValue) {
+        if (reservationsBuilder_ == null) {
+          ensureReservationsIsMutable();
+          reservations_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          reservationsBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource.ReservationInfo reservations = 13;</code>
+       *
+       * <pre>
+       * The stack of reservations. If this field is empty, it indicates that this
+       * resource is unreserved. Otherwise, the resource is reserved. The first
+       * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+       * have `DYNAMIC`. One can create a new reservation on top of an existing
+       * one by pushing a new `ReservationInfo` to the back. The last
+       * `ReservationInfo` in this stack is the "current" reservation. The new
+       * reservation's role must be a child of the current reservation's role.
+       *
+       * NOTE: Frameworks must not set this field if `reservation` is set.
+       *       See the 'Resource Format' section for more details.
+       *
+       * TODO(mpark): Deprecate `role` and `reservation` once this is stable.
+       * </pre>
+       */
+      public Builder addAllReservations(
+          java.lang.Iterable<? extends org.apache.mesos.Protos.Resource.ReservationInfo> values) {
+        if (reservationsBuilder_ == null) {
+          ensureReservationsIsMutable();
+          super.addAll(values, reservations_);
+          onChanged();
+        } else {
+          reservationsBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource.ReservationInfo reservations = 13;</code>
+       *
+       * <pre>
+       * The stack of reservations. If this field is empty, it indicates that this
+       * resource is unreserved. Otherwise, the resource is reserved. The first
+       * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+       * have `DYNAMIC`. One can create a new reservation on top of an existing
+       * one by pushing a new `ReservationInfo` to the back. The last
+       * `ReservationInfo` in this stack is the "current" reservation. The new
+       * reservation's role must be a child of the current reservation's role.
+       *
+       * NOTE: Frameworks must not set this field if `reservation` is set.
+       *       See the 'Resource Format' section for more details.
+       *
+       * TODO(mpark): Deprecate `role` and `reservation` once this is stable.
+       * </pre>
+       */
+      public Builder clearReservations() {
+        if (reservationsBuilder_ == null) {
+          reservations_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000200);
+          onChanged();
+        } else {
+          reservationsBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource.ReservationInfo reservations = 13;</code>
+       *
+       * <pre>
+       * The stack of reservations. If this field is empty, it indicates that this
+       * resource is unreserved. Otherwise, the resource is reserved. The first
+       * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+       * have `DYNAMIC`. One can create a new reservation on top of an existing
+       * one by pushing a new `ReservationInfo` to the back. The last
+       * `ReservationInfo` in this stack is the "current" reservation. The new
+       * reservation's role must be a child of the current reservation's role.
+       *
+       * NOTE: Frameworks must not set this field if `reservation` is set.
+       *       See the 'Resource Format' section for more details.
+       *
+       * TODO(mpark): Deprecate `role` and `reservation` once this is stable.
+       * </pre>
+       */
+      public Builder removeReservations(int index) {
+        if (reservationsBuilder_ == null) {
+          ensureReservationsIsMutable();
+          reservations_.remove(index);
+          onChanged();
+        } else {
+          reservationsBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource.ReservationInfo reservations = 13;</code>
+       *
+       * <pre>
+       * The stack of reservations. If this field is empty, it indicates that this
+       * resource is unreserved. Otherwise, the resource is reserved. The first
+       * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+       * have `DYNAMIC`. One can create a new reservation on top of an existing
+       * one by pushing a new `ReservationInfo` to the back. The last
+       * `ReservationInfo` in this stack is the "current" reservation. The new
+       * reservation's role must be a child of the current reservation's role.
+       *
+       * NOTE: Frameworks must not set this field if `reservation` is set.
+       *       See the 'Resource Format' section for more details.
+       *
+       * TODO(mpark): Deprecate `role` and `reservation` once this is stable.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Resource.ReservationInfo.Builder getReservationsBuilder(
+          int index) {
+        return getReservationsFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.Resource.ReservationInfo reservations = 13;</code>
+       *
+       * <pre>
+       * The stack of reservations. If this field is empty, it indicates that this
+       * resource is unreserved. Otherwise, the resource is reserved. The first
+       * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+       * have `DYNAMIC`. One can create a new reservation on top of an existing
+       * one by pushing a new `ReservationInfo` to the back. The last
+       * `ReservationInfo` in this stack is the "current" reservation. The new
+       * reservation's role must be a child of the current reservation's role.
+       *
+       * NOTE: Frameworks must not set this field if `reservation` is set.
+       *       See the 'Resource Format' section for more details.
+       *
+       * TODO(mpark): Deprecate `role` and `reservation` once this is stable.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Resource.ReservationInfoOrBuilder getReservationsOrBuilder(
+          int index) {
+        if (reservationsBuilder_ == null) {
+          return reservations_.get(index);  } else {
+          return reservationsBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource.ReservationInfo reservations = 13;</code>
+       *
+       * <pre>
+       * The stack of reservations. If this field is empty, it indicates that this
+       * resource is unreserved. Otherwise, the resource is reserved. The first
+       * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+       * have `DYNAMIC`. One can create a new reservation on top of an existing
+       * one by pushing a new `ReservationInfo` to the back. The last
+       * `ReservationInfo` in this stack is the "current" reservation. The new
+       * reservation's role must be a child of the current reservation's role.
+       *
+       * NOTE: Frameworks must not set this field if `reservation` is set.
+       *       See the 'Resource Format' section for more details.
+       *
+       * TODO(mpark): Deprecate `role` and `reservation` once this is stable.
+       * </pre>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.Resource.ReservationInfoOrBuilder> 
+           getReservationsOrBuilderList() {
+        if (reservationsBuilder_ != null) {
+          return reservationsBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(reservations_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource.ReservationInfo reservations = 13;</code>
+       *
+       * <pre>
+       * The stack of reservations. If this field is empty, it indicates that this
+       * resource is unreserved. Otherwise, the resource is reserved. The first
+       * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+       * have `DYNAMIC`. One can create a new reservation on top of an existing
+       * one by pushing a new `ReservationInfo` to the back. The last
+       * `ReservationInfo` in this stack is the "current" reservation. The new
+       * reservation's role must be a child of the current reservation's role.
+       *
+       * NOTE: Frameworks must not set this field if `reservation` is set.
+       *       See the 'Resource Format' section for more details.
+       *
+       * TODO(mpark): Deprecate `role` and `reservation` once this is stable.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Resource.ReservationInfo.Builder addReservationsBuilder() {
+        return getReservationsFieldBuilder().addBuilder(
+            org.apache.mesos.Protos.Resource.ReservationInfo.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.Resource.ReservationInfo reservations = 13;</code>
+       *
+       * <pre>
+       * The stack of reservations. If this field is empty, it indicates that this
+       * resource is unreserved. Otherwise, the resource is reserved. The first
+       * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+       * have `DYNAMIC`. One can create a new reservation on top of an existing
+       * one by pushing a new `ReservationInfo` to the back. The last
+       * `ReservationInfo` in this stack is the "current" reservation. The new
+       * reservation's role must be a child of the current reservation's role.
+       *
+       * NOTE: Frameworks must not set this field if `reservation` is set.
+       *       See the 'Resource Format' section for more details.
+       *
+       * TODO(mpark): Deprecate `role` and `reservation` once this is stable.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Resource.ReservationInfo.Builder addReservationsBuilder(
+          int index) {
+        return getReservationsFieldBuilder().addBuilder(
+            index, org.apache.mesos.Protos.Resource.ReservationInfo.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.Resource.ReservationInfo reservations = 13;</code>
+       *
+       * <pre>
+       * The stack of reservations. If this field is empty, it indicates that this
+       * resource is unreserved. Otherwise, the resource is reserved. The first
+       * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+       * have `DYNAMIC`. One can create a new reservation on top of an existing
+       * one by pushing a new `ReservationInfo` to the back. The last
+       * `ReservationInfo` in this stack is the "current" reservation. The new
+       * reservation's role must be a child of the current reservation's role.
+       *
+       * NOTE: Frameworks must not set this field if `reservation` is set.
+       *       See the 'Resource Format' section for more details.
+       *
+       * TODO(mpark): Deprecate `role` and `reservation` once this is stable.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.Protos.Resource.ReservationInfo.Builder> 
+           getReservationsBuilderList() {
+        return getReservationsFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.Resource.ReservationInfo, org.apache.mesos.Protos.Resource.ReservationInfo.Builder, org.apache.mesos.Protos.Resource.ReservationInfoOrBuilder> 
+          getReservationsFieldBuilder() {
+        if (reservationsBuilder_ == null) {
+          reservationsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.Resource.ReservationInfo, org.apache.mesos.Protos.Resource.ReservationInfo.Builder, org.apache.mesos.Protos.Resource.ReservationInfoOrBuilder>(
+                  reservations_,
+                  ((bitField0_ & 0x00000200) == 0x00000200),
+                  getParentForChildren(),
+                  isClean());
+          reservations_ = null;
+        }
+        return reservationsBuilder_;
+      }
+
+      // optional .mesos.Resource.DiskInfo disk = 7;
+      private org.apache.mesos.Protos.Resource.DiskInfo disk_ = org.apache.mesos.Protos.Resource.DiskInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Resource.DiskInfo, org.apache.mesos.Protos.Resource.DiskInfo.Builder, org.apache.mesos.Protos.Resource.DiskInfoOrBuilder> diskBuilder_;
+      /**
+       * <code>optional .mesos.Resource.DiskInfo disk = 7;</code>
+       */
+      public boolean hasDisk() {
+        return ((bitField0_ & 0x00000400) == 0x00000400);
+      }
+      /**
+       * <code>optional .mesos.Resource.DiskInfo disk = 7;</code>
+       */
+      public org.apache.mesos.Protos.Resource.DiskInfo getDisk() {
+        if (diskBuilder_ == null) {
+          return disk_;
+        } else {
+          return diskBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.Resource.DiskInfo disk = 7;</code>
+       */
+      public Builder setDisk(org.apache.mesos.Protos.Resource.DiskInfo value) {
+        if (diskBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          disk_ = value;
+          onChanged();
+        } else {
+          diskBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000400;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Resource.DiskInfo disk = 7;</code>
+       */
+      public Builder setDisk(
+          org.apache.mesos.Protos.Resource.DiskInfo.Builder builderForValue) {
+        if (diskBuilder_ == null) {
+          disk_ = builderForValue.build();
+          onChanged();
+        } else {
+          diskBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000400;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Resource.DiskInfo disk = 7;</code>
+       */
+      public Builder mergeDisk(org.apache.mesos.Protos.Resource.DiskInfo value) {
+        if (diskBuilder_ == null) {
+          if (((bitField0_ & 0x00000400) == 0x00000400) &&
+              disk_ != org.apache.mesos.Protos.Resource.DiskInfo.getDefaultInstance()) {
+            disk_ =
+              org.apache.mesos.Protos.Resource.DiskInfo.newBuilder(disk_).mergeFrom(value).buildPartial();
+          } else {
+            disk_ = value;
+          }
+          onChanged();
+        } else {
+          diskBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000400;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Resource.DiskInfo disk = 7;</code>
+       */
+      public Builder clearDisk() {
+        if (diskBuilder_ == null) {
+          disk_ = org.apache.mesos.Protos.Resource.DiskInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          diskBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000400);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Resource.DiskInfo disk = 7;</code>
+       */
+      public org.apache.mesos.Protos.Resource.DiskInfo.Builder getDiskBuilder() {
+        bitField0_ |= 0x00000400;
+        onChanged();
+        return getDiskFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.Resource.DiskInfo disk = 7;</code>
+       */
+      public org.apache.mesos.Protos.Resource.DiskInfoOrBuilder getDiskOrBuilder() {
+        if (diskBuilder_ != null) {
+          return diskBuilder_.getMessageOrBuilder();
+        } else {
+          return disk_;
+        }
+      }
+      /**
+       * <code>optional .mesos.Resource.DiskInfo disk = 7;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Resource.DiskInfo, org.apache.mesos.Protos.Resource.DiskInfo.Builder, org.apache.mesos.Protos.Resource.DiskInfoOrBuilder> 
+          getDiskFieldBuilder() {
+        if (diskBuilder_ == null) {
+          diskBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Resource.DiskInfo, org.apache.mesos.Protos.Resource.DiskInfo.Builder, org.apache.mesos.Protos.Resource.DiskInfoOrBuilder>(
+                  disk_,
+                  getParentForChildren(),
+                  isClean());
+          disk_ = null;
+        }
+        return diskBuilder_;
+      }
+
+      // optional .mesos.Resource.RevocableInfo revocable = 9;
+      private org.apache.mesos.Protos.Resource.RevocableInfo revocable_ = org.apache.mesos.Protos.Resource.RevocableInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Resource.RevocableInfo, org.apache.mesos.Protos.Resource.RevocableInfo.Builder, org.apache.mesos.Protos.Resource.RevocableInfoOrBuilder> revocableBuilder_;
+      /**
+       * <code>optional .mesos.Resource.RevocableInfo revocable = 9;</code>
+       *
+       * <pre>
+       * If this is set, the resources are revocable, i.e., any tasks or
+       * executors launched using these resources could get preempted or
+       * throttled at any time. This could be used by frameworks to run
+       * best effort tasks that do not need strict uptime or performance
+       * guarantees. Note that if this is set, 'disk' or 'reservation'
+       * cannot be set.
+       * </pre>
+       */
+      public boolean hasRevocable() {
+        return ((bitField0_ & 0x00000800) == 0x00000800);
+      }
+      /**
+       * <code>optional .mesos.Resource.RevocableInfo revocable = 9;</code>
+       *
+       * <pre>
+       * If this is set, the resources are revocable, i.e., any tasks or
+       * executors launched using these resources could get preempted or
+       * throttled at any time. This could be used by frameworks to run
+       * best effort tasks that do not need strict uptime or performance
+       * guarantees. Note that if this is set, 'disk' or 'reservation'
+       * cannot be set.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Resource.RevocableInfo getRevocable() {
+        if (revocableBuilder_ == null) {
+          return revocable_;
+        } else {
+          return revocableBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.Resource.RevocableInfo revocable = 9;</code>
+       *
+       * <pre>
+       * If this is set, the resources are revocable, i.e., any tasks or
+       * executors launched using these resources could get preempted or
+       * throttled at any time. This could be used by frameworks to run
+       * best effort tasks that do not need strict uptime or performance
+       * guarantees. Note that if this is set, 'disk' or 'reservation'
+       * cannot be set.
+       * </pre>
+       */
+      public Builder setRevocable(org.apache.mesos.Protos.Resource.RevocableInfo value) {
+        if (revocableBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          revocable_ = value;
+          onChanged();
+        } else {
+          revocableBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Resource.RevocableInfo revocable = 9;</code>
+       *
+       * <pre>
+       * If this is set, the resources are revocable, i.e., any tasks or
+       * executors launched using these resources could get preempted or
+       * throttled at any time. This could be used by frameworks to run
+       * best effort tasks that do not need strict uptime or performance
+       * guarantees. Note that if this is set, 'disk' or 'reservation'
+       * cannot be set.
+       * </pre>
+       */
+      public Builder setRevocable(
+          org.apache.mesos.Protos.Resource.RevocableInfo.Builder builderForValue) {
+        if (revocableBuilder_ == null) {
+          revocable_ = builderForValue.build();
+          onChanged();
+        } else {
+          revocableBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Resource.RevocableInfo revocable = 9;</code>
+       *
+       * <pre>
+       * If this is set, the resources are revocable, i.e., any tasks or
+       * executors launched using these resources could get preempted or
+       * throttled at any time. This could be used by frameworks to run
+       * best effort tasks that do not need strict uptime or performance
+       * guarantees. Note that if this is set, 'disk' or 'reservation'
+       * cannot be set.
+       * </pre>
+       */
+      public Builder mergeRevocable(org.apache.mesos.Protos.Resource.RevocableInfo value) {
+        if (revocableBuilder_ == null) {
+          if (((bitField0_ & 0x00000800) == 0x00000800) &&
+              revocable_ != org.apache.mesos.Protos.Resource.RevocableInfo.getDefaultInstance()) {
+            revocable_ =
+              org.apache.mesos.Protos.Resource.RevocableInfo.newBuilder(revocable_).mergeFrom(value).buildPartial();
+          } else {
+            revocable_ = value;
+          }
+          onChanged();
+        } else {
+          revocableBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Resource.RevocableInfo revocable = 9;</code>
+       *
+       * <pre>
+       * If this is set, the resources are revocable, i.e., any tasks or
+       * executors launched using these resources could get preempted or
+       * throttled at any time. This could be used by frameworks to run
+       * best effort tasks that do not need strict uptime or performance
+       * guarantees. Note that if this is set, 'disk' or 'reservation'
+       * cannot be set.
+       * </pre>
+       */
+      public Builder clearRevocable() {
+        if (revocableBuilder_ == null) {
+          revocable_ = org.apache.mesos.Protos.Resource.RevocableInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          revocableBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000800);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Resource.RevocableInfo revocable = 9;</code>
+       *
+       * <pre>
+       * If this is set, the resources are revocable, i.e., any tasks or
+       * executors launched using these resources could get preempted or
+       * throttled at any time. This could be used by frameworks to run
+       * best effort tasks that do not need strict uptime or performance
+       * guarantees. Note that if this is set, 'disk' or 'reservation'
+       * cannot be set.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Resource.RevocableInfo.Builder getRevocableBuilder() {
+        bitField0_ |= 0x00000800;
+        onChanged();
+        return getRevocableFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.Resource.RevocableInfo revocable = 9;</code>
+       *
+       * <pre>
+       * If this is set, the resources are revocable, i.e., any tasks or
+       * executors launched using these resources could get preempted or
+       * throttled at any time. This could be used by frameworks to run
+       * best effort tasks that do not need strict uptime or performance
+       * guarantees. Note that if this is set, 'disk' or 'reservation'
+       * cannot be set.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Resource.RevocableInfoOrBuilder getRevocableOrBuilder() {
+        if (revocableBuilder_ != null) {
+          return revocableBuilder_.getMessageOrBuilder();
+        } else {
+          return revocable_;
+        }
+      }
+      /**
+       * <code>optional .mesos.Resource.RevocableInfo revocable = 9;</code>
+       *
+       * <pre>
+       * If this is set, the resources are revocable, i.e., any tasks or
+       * executors launched using these resources could get preempted or
+       * throttled at any time. This could be used by frameworks to run
+       * best effort tasks that do not need strict uptime or performance
+       * guarantees. Note that if this is set, 'disk' or 'reservation'
+       * cannot be set.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Resource.RevocableInfo, org.apache.mesos.Protos.Resource.RevocableInfo.Builder, org.apache.mesos.Protos.Resource.RevocableInfoOrBuilder> 
+          getRevocableFieldBuilder() {
+        if (revocableBuilder_ == null) {
+          revocableBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Resource.RevocableInfo, org.apache.mesos.Protos.Resource.RevocableInfo.Builder, org.apache.mesos.Protos.Resource.RevocableInfoOrBuilder>(
+                  revocable_,
+                  getParentForChildren(),
+                  isClean());
+          revocable_ = null;
+        }
+        return revocableBuilder_;
+      }
+
+      // optional .mesos.Resource.SharedInfo shared = 10;
+      private org.apache.mesos.Protos.Resource.SharedInfo shared_ = org.apache.mesos.Protos.Resource.SharedInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Resource.SharedInfo, org.apache.mesos.Protos.Resource.SharedInfo.Builder, org.apache.mesos.Protos.Resource.SharedInfoOrBuilder> sharedBuilder_;
+      /**
+       * <code>optional .mesos.Resource.SharedInfo shared = 10;</code>
+       *
+       * <pre>
+       * If this is set, the resources are shared, i.e. multiple tasks
+       * can be launched using this resource and all of them shall refer
+       * to the same physical resource on the cluster. Note that only
+       * persistent volumes can be shared currently.
+       * </pre>
+       */
+      public boolean hasShared() {
+        return ((bitField0_ & 0x00001000) == 0x00001000);
+      }
+      /**
+       * <code>optional .mesos.Resource.SharedInfo shared = 10;</code>
+       *
+       * <pre>
+       * If this is set, the resources are shared, i.e. multiple tasks
+       * can be launched using this resource and all of them shall refer
+       * to the same physical resource on the cluster. Note that only
+       * persistent volumes can be shared currently.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Resource.SharedInfo getShared() {
+        if (sharedBuilder_ == null) {
+          return shared_;
+        } else {
+          return sharedBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.Resource.SharedInfo shared = 10;</code>
+       *
+       * <pre>
+       * If this is set, the resources are shared, i.e. multiple tasks
+       * can be launched using this resource and all of them shall refer
+       * to the same physical resource on the cluster. Note that only
+       * persistent volumes can be shared currently.
+       * </pre>
+       */
+      public Builder setShared(org.apache.mesos.Protos.Resource.SharedInfo value) {
+        if (sharedBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          shared_ = value;
+          onChanged();
+        } else {
+          sharedBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00001000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Resource.SharedInfo shared = 10;</code>
+       *
+       * <pre>
+       * If this is set, the resources are shared, i.e. multiple tasks
+       * can be launched using this resource and all of them shall refer
+       * to the same physical resource on the cluster. Note that only
+       * persistent volumes can be shared currently.
+       * </pre>
+       */
+      public Builder setShared(
+          org.apache.mesos.Protos.Resource.SharedInfo.Builder builderForValue) {
+        if (sharedBuilder_ == null) {
+          shared_ = builderForValue.build();
+          onChanged();
+        } else {
+          sharedBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00001000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Resource.SharedInfo shared = 10;</code>
+       *
+       * <pre>
+       * If this is set, the resources are shared, i.e. multiple tasks
+       * can be launched using this resource and all of them shall refer
+       * to the same physical resource on the cluster. Note that only
+       * persistent volumes can be shared currently.
+       * </pre>
+       */
+      public Builder mergeShared(org.apache.mesos.Protos.Resource.SharedInfo value) {
+        if (sharedBuilder_ == null) {
+          if (((bitField0_ & 0x00001000) == 0x00001000) &&
+              shared_ != org.apache.mesos.Protos.Resource.SharedInfo.getDefaultInstance()) {
+            shared_ =
+              org.apache.mesos.Protos.Resource.SharedInfo.newBuilder(shared_).mergeFrom(value).buildPartial();
+          } else {
+            shared_ = value;
+          }
+          onChanged();
+        } else {
+          sharedBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00001000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Resource.SharedInfo shared = 10;</code>
+       *
+       * <pre>
+       * If this is set, the resources are shared, i.e. multiple tasks
+       * can be launched using this resource and all of them shall refer
+       * to the same physical resource on the cluster. Note that only
+       * persistent volumes can be shared currently.
+       * </pre>
+       */
+      public Builder clearShared() {
+        if (sharedBuilder_ == null) {
+          shared_ = org.apache.mesos.Protos.Resource.SharedInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          sharedBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00001000);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Resource.SharedInfo shared = 10;</code>
+       *
+       * <pre>
+       * If this is set, the resources are shared, i.e. multiple tasks
+       * can be launched using this resource and all of them shall refer
+       * to the same physical resource on the cluster. Note that only
+       * persistent volumes can be shared currently.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Resource.SharedInfo.Builder getSharedBuilder() {
+        bitField0_ |= 0x00001000;
+        onChanged();
+        return getSharedFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.Resource.SharedInfo shared = 10;</code>
+       *
+       * <pre>
+       * If this is set, the resources are shared, i.e. multiple tasks
+       * can be launched using this resource and all of them shall refer
+       * to the same physical resource on the cluster. Note that only
+       * persistent volumes can be shared currently.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Resource.SharedInfoOrBuilder getSharedOrBuilder() {
+        if (sharedBuilder_ != null) {
+          return sharedBuilder_.getMessageOrBuilder();
+        } else {
+          return shared_;
+        }
+      }
+      /**
+       * <code>optional .mesos.Resource.SharedInfo shared = 10;</code>
+       *
+       * <pre>
+       * If this is set, the resources are shared, i.e. multiple tasks
+       * can be launched using this resource and all of them shall refer
+       * to the same physical resource on the cluster. Note that only
+       * persistent volumes can be shared currently.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Resource.SharedInfo, org.apache.mesos.Protos.Resource.SharedInfo.Builder, org.apache.mesos.Protos.Resource.SharedInfoOrBuilder> 
+          getSharedFieldBuilder() {
+        if (sharedBuilder_ == null) {
+          sharedBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Resource.SharedInfo, org.apache.mesos.Protos.Resource.SharedInfo.Builder, org.apache.mesos.Protos.Resource.SharedInfoOrBuilder>(
+                  shared_,
+                  getParentForChildren(),
+                  isClean());
+          shared_ = null;
+        }
+        return sharedBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.Resource)
+    }
+
+    static {
+      defaultInstance = new Resource(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.Resource)
+  }
+
+  public interface TrafficControlStatisticsOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string id = 1;
+    /**
+     * <code>required string id = 1;</code>
+     */
+    boolean hasId();
+    /**
+     * <code>required string id = 1;</code>
+     */
+    java.lang.String getId();
+    /**
+     * <code>required string id = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getIdBytes();
+
+    // optional uint64 backlog = 2;
+    /**
+     * <code>optional uint64 backlog = 2;</code>
+     */
+    boolean hasBacklog();
+    /**
+     * <code>optional uint64 backlog = 2;</code>
+     */
+    long getBacklog();
+
+    // optional uint64 bytes = 3;
+    /**
+     * <code>optional uint64 bytes = 3;</code>
+     */
+    boolean hasBytes();
+    /**
+     * <code>optional uint64 bytes = 3;</code>
+     */
+    long getBytes();
+
+    // optional uint64 drops = 4;
+    /**
+     * <code>optional uint64 drops = 4;</code>
+     */
+    boolean hasDrops();
+    /**
+     * <code>optional uint64 drops = 4;</code>
+     */
+    long getDrops();
+
+    // optional uint64 overlimits = 5;
+    /**
+     * <code>optional uint64 overlimits = 5;</code>
+     */
+    boolean hasOverlimits();
+    /**
+     * <code>optional uint64 overlimits = 5;</code>
+     */
+    long getOverlimits();
+
+    // optional uint64 packets = 6;
+    /**
+     * <code>optional uint64 packets = 6;</code>
+     */
+    boolean hasPackets();
+    /**
+     * <code>optional uint64 packets = 6;</code>
+     */
+    long getPackets();
+
+    // optional uint64 qlen = 7;
+    /**
+     * <code>optional uint64 qlen = 7;</code>
+     */
+    boolean hasQlen();
+    /**
+     * <code>optional uint64 qlen = 7;</code>
+     */
+    long getQlen();
+
+    // optional uint64 ratebps = 8;
+    /**
+     * <code>optional uint64 ratebps = 8;</code>
+     */
+    boolean hasRatebps();
+    /**
+     * <code>optional uint64 ratebps = 8;</code>
+     */
+    long getRatebps();
+
+    // optional uint64 ratepps = 9;
+    /**
+     * <code>optional uint64 ratepps = 9;</code>
+     */
+    boolean hasRatepps();
+    /**
+     * <code>optional uint64 ratepps = 9;</code>
+     */
+    long getRatepps();
+
+    // optional uint64 requeues = 10;
+    /**
+     * <code>optional uint64 requeues = 10;</code>
+     */
+    boolean hasRequeues();
+    /**
+     * <code>optional uint64 requeues = 10;</code>
+     */
+    long getRequeues();
+  }
+  /**
+   * Protobuf type {@code mesos.TrafficControlStatistics}
+   *
+   * <pre>
+   **
+   * When the network bandwidth caps are enabled and the container
+   * is over its limit, outbound packets may be either delayed or
+   * dropped completely either because it exceeds the maximum bandwidth
+   * allocation for a single container (the cap) or because the combined
+   * network traffic of multiple containers on the host exceeds the
+   * transmit capacity of the host (the share). We can report the
+   * following statistics for each of these conditions exported directly
+   * from the Linux Traffic Control Queueing Discipline.
+   *
+   * id         : name of the limiter, e.g. 'tx_bw_cap'
+   * backlog    : number of packets currently delayed
+   * bytes      : total bytes seen
+   * drops      : number of packets dropped in total
+   * overlimits : number of packets which exceeded allocation
+   * packets    : total packets seen
+   * qlen       : number of packets currently queued
+   * rate_bps   : throughput in bytes/sec
+   * rate_pps   : throughput in packets/sec
+   * requeues   : number of times a packet has been delayed due to
+   *              locking or device contention issues
+   *
+   * More information on the operation of Linux Traffic Control can be
+   * found at http://www.lartc.org/lartc.html.
+   * </pre>
+   */
+  public static final class TrafficControlStatistics extends
+      com.google.protobuf.GeneratedMessage
+      implements TrafficControlStatisticsOrBuilder {
+    // Use TrafficControlStatistics.newBuilder() to construct.
+    private TrafficControlStatistics(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private TrafficControlStatistics(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final TrafficControlStatistics defaultInstance;
+    public static TrafficControlStatistics getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public TrafficControlStatistics getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private TrafficControlStatistics(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              id_ = input.readBytes();
+              break;
+            }
+            case 16: {
+              bitField0_ |= 0x00000002;
+              backlog_ = input.readUInt64();
+              break;
+            }
+            case 24: {
+              bitField0_ |= 0x00000004;
+              bytes_ = input.readUInt64();
+              break;
+            }
+            case 32: {
+              bitField0_ |= 0x00000008;
+              drops_ = input.readUInt64();
+              break;
+            }
+            case 40: {
+              bitField0_ |= 0x00000010;
+              overlimits_ = input.readUInt64();
+              break;
+            }
+            case 48: {
+              bitField0_ |= 0x00000020;
+              packets_ = input.readUInt64();
+              break;
+            }
+            case 56: {
+              bitField0_ |= 0x00000040;
+              qlen_ = input.readUInt64();
+              break;
+            }
+            case 64: {
+              bitField0_ |= 0x00000080;
+              ratebps_ = input.readUInt64();
+              break;
+            }
+            case 72: {
+              bitField0_ |= 0x00000100;
+              ratepps_ = input.readUInt64();
+              break;
+            }
+            case 80: {
+              bitField0_ |= 0x00000200;
+              requeues_ = input.readUInt64();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_TrafficControlStatistics_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_TrafficControlStatistics_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.TrafficControlStatistics.class, org.apache.mesos.Protos.TrafficControlStatistics.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<TrafficControlStatistics> PARSER =
+        new com.google.protobuf.AbstractParser<TrafficControlStatistics>() {
+      public TrafficControlStatistics parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new TrafficControlStatistics(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<TrafficControlStatistics> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string id = 1;
+    public static final int ID_FIELD_NUMBER = 1;
+    private java.lang.Object id_;
+    /**
+     * <code>required string id = 1;</code>
+     */
+    public boolean hasId() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string id = 1;</code>
+     */
+    public java.lang.String getId() {
+      java.lang.Object ref = id_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          id_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string id = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getIdBytes() {
+      java.lang.Object ref = id_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        id_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional uint64 backlog = 2;
+    public static final int BACKLOG_FIELD_NUMBER = 2;
+    private long backlog_;
+    /**
+     * <code>optional uint64 backlog = 2;</code>
+     */
+    public boolean hasBacklog() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional uint64 backlog = 2;</code>
+     */
+    public long getBacklog() {
+      return backlog_;
+    }
+
+    // optional uint64 bytes = 3;
+    public static final int BYTES_FIELD_NUMBER = 3;
+    private long bytes_;
+    /**
+     * <code>optional uint64 bytes = 3;</code>
+     */
+    public boolean hasBytes() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional uint64 bytes = 3;</code>
+     */
+    public long getBytes() {
+      return bytes_;
+    }
+
+    // optional uint64 drops = 4;
+    public static final int DROPS_FIELD_NUMBER = 4;
+    private long drops_;
+    /**
+     * <code>optional uint64 drops = 4;</code>
+     */
+    public boolean hasDrops() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional uint64 drops = 4;</code>
+     */
+    public long getDrops() {
+      return drops_;
+    }
+
+    // optional uint64 overlimits = 5;
+    public static final int OVERLIMITS_FIELD_NUMBER = 5;
+    private long overlimits_;
+    /**
+     * <code>optional uint64 overlimits = 5;</code>
+     */
+    public boolean hasOverlimits() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional uint64 overlimits = 5;</code>
+     */
+    public long getOverlimits() {
+      return overlimits_;
+    }
+
+    // optional uint64 packets = 6;
+    public static final int PACKETS_FIELD_NUMBER = 6;
+    private long packets_;
+    /**
+     * <code>optional uint64 packets = 6;</code>
+     */
+    public boolean hasPackets() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional uint64 packets = 6;</code>
+     */
+    public long getPackets() {
+      return packets_;
+    }
+
+    // optional uint64 qlen = 7;
+    public static final int QLEN_FIELD_NUMBER = 7;
+    private long qlen_;
+    /**
+     * <code>optional uint64 qlen = 7;</code>
+     */
+    public boolean hasQlen() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional uint64 qlen = 7;</code>
+     */
+    public long getQlen() {
+      return qlen_;
+    }
+
+    // optional uint64 ratebps = 8;
+    public static final int RATEBPS_FIELD_NUMBER = 8;
+    private long ratebps_;
+    /**
+     * <code>optional uint64 ratebps = 8;</code>
+     */
+    public boolean hasRatebps() {
+      return ((bitField0_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional uint64 ratebps = 8;</code>
+     */
+    public long getRatebps() {
+      return ratebps_;
+    }
+
+    // optional uint64 ratepps = 9;
+    public static final int RATEPPS_FIELD_NUMBER = 9;
+    private long ratepps_;
+    /**
+     * <code>optional uint64 ratepps = 9;</code>
+     */
+    public boolean hasRatepps() {
+      return ((bitField0_ & 0x00000100) == 0x00000100);
+    }
+    /**
+     * <code>optional uint64 ratepps = 9;</code>
+     */
+    public long getRatepps() {
+      return ratepps_;
+    }
+
+    // optional uint64 requeues = 10;
+    public static final int REQUEUES_FIELD_NUMBER = 10;
+    private long requeues_;
+    /**
+     * <code>optional uint64 requeues = 10;</code>
+     */
+    public boolean hasRequeues() {
+      return ((bitField0_ & 0x00000200) == 0x00000200);
+    }
+    /**
+     * <code>optional uint64 requeues = 10;</code>
+     */
+    public long getRequeues() {
+      return requeues_;
+    }
+
+    private void initFields() {
+      id_ = "";
+      backlog_ = 0L;
+      bytes_ = 0L;
+      drops_ = 0L;
+      overlimits_ = 0L;
+      packets_ = 0L;
+      qlen_ = 0L;
+      ratebps_ = 0L;
+      ratepps_ = 0L;
+      requeues_ = 0L;
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasId()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getIdBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeUInt64(2, backlog_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeUInt64(3, bytes_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeUInt64(4, drops_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeUInt64(5, overlimits_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeUInt64(6, packets_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeUInt64(7, qlen_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        output.writeUInt64(8, ratebps_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        output.writeUInt64(9, ratepps_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        output.writeUInt64(10, requeues_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getIdBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(2, backlog_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(3, bytes_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(4, drops_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(5, overlimits_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(6, packets_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(7, qlen_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(8, ratebps_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(9, ratepps_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(10, requeues_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.TrafficControlStatistics parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.TrafficControlStatistics parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.TrafficControlStatistics parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.TrafficControlStatistics parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.TrafficControlStatistics parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.TrafficControlStatistics parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.TrafficControlStatistics parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.TrafficControlStatistics parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.TrafficControlStatistics parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.TrafficControlStatistics parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.TrafficControlStatistics prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.TrafficControlStatistics}
+     *
+     * <pre>
+     **
+     * When the network bandwidth caps are enabled and the container
+     * is over its limit, outbound packets may be either delayed or
+     * dropped completely either because it exceeds the maximum bandwidth
+     * allocation for a single container (the cap) or because the combined
+     * network traffic of multiple containers on the host exceeds the
+     * transmit capacity of the host (the share). We can report the
+     * following statistics for each of these conditions exported directly
+     * from the Linux Traffic Control Queueing Discipline.
+     *
+     * id         : name of the limiter, e.g. 'tx_bw_cap'
+     * backlog    : number of packets currently delayed
+     * bytes      : total bytes seen
+     * drops      : number of packets dropped in total
+     * overlimits : number of packets which exceeded allocation
+     * packets    : total packets seen
+     * qlen       : number of packets currently queued
+     * rate_bps   : throughput in bytes/sec
+     * rate_pps   : throughput in packets/sec
+     * requeues   : number of times a packet has been delayed due to
+     *              locking or device contention issues
+     *
+     * More information on the operation of Linux Traffic Control can be
+     * found at http://www.lartc.org/lartc.html.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.TrafficControlStatisticsOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_TrafficControlStatistics_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_TrafficControlStatistics_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.TrafficControlStatistics.class, org.apache.mesos.Protos.TrafficControlStatistics.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.TrafficControlStatistics.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        id_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        backlog_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        bytes_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        drops_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        overlimits_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000010);
+        packets_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000020);
+        qlen_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000040);
+        ratebps_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000080);
+        ratepps_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000100);
+        requeues_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000200);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_TrafficControlStatistics_descriptor;
+      }
+
+      public org.apache.mesos.Protos.TrafficControlStatistics getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.TrafficControlStatistics.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.TrafficControlStatistics build() {
+        org.apache.mesos.Protos.TrafficControlStatistics result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.TrafficControlStatistics buildPartial() {
+        org.apache.mesos.Protos.TrafficControlStatistics result = new org.apache.mesos.Protos.TrafficControlStatistics(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.id_ = id_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.backlog_ = backlog_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.bytes_ = bytes_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.drops_ = drops_;
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.overlimits_ = overlimits_;
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        result.packets_ = packets_;
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        result.qlen_ = qlen_;
+        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+          to_bitField0_ |= 0x00000080;
+        }
+        result.ratebps_ = ratebps_;
+        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
+          to_bitField0_ |= 0x00000100;
+        }
+        result.ratepps_ = ratepps_;
+        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
+          to_bitField0_ |= 0x00000200;
+        }
+        result.requeues_ = requeues_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.TrafficControlStatistics) {
+          return mergeFrom((org.apache.mesos.Protos.TrafficControlStatistics)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.TrafficControlStatistics other) {
+        if (other == org.apache.mesos.Protos.TrafficControlStatistics.getDefaultInstance()) return this;
+        if (other.hasId()) {
+          bitField0_ |= 0x00000001;
+          id_ = other.id_;
+          onChanged();
+        }
+        if (other.hasBacklog()) {
+          setBacklog(other.getBacklog());
+        }
+        if (other.hasBytes()) {
+          setBytes(other.getBytes());
+        }
+        if (other.hasDrops()) {
+          setDrops(other.getDrops());
+        }
+        if (other.hasOverlimits()) {
+          setOverlimits(other.getOverlimits());
+        }
+        if (other.hasPackets()) {
+          setPackets(other.getPackets());
+        }
+        if (other.hasQlen()) {
+          setQlen(other.getQlen());
+        }
+        if (other.hasRatebps()) {
+          setRatebps(other.getRatebps());
+        }
+        if (other.hasRatepps()) {
+          setRatepps(other.getRatepps());
+        }
+        if (other.hasRequeues()) {
+          setRequeues(other.getRequeues());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasId()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.TrafficControlStatistics parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.TrafficControlStatistics) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string id = 1;
+      private java.lang.Object id_ = "";
+      /**
+       * <code>required string id = 1;</code>
+       */
+      public boolean hasId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string id = 1;</code>
+       */
+      public java.lang.String getId() {
+        java.lang.Object ref = id_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          id_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string id = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getIdBytes() {
+        java.lang.Object ref = id_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          id_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string id = 1;</code>
+       */
+      public Builder setId(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        id_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string id = 1;</code>
+       */
+      public Builder clearId() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        id_ = getDefaultInstance().getId();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string id = 1;</code>
+       */
+      public Builder setIdBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        id_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 backlog = 2;
+      private long backlog_ ;
+      /**
+       * <code>optional uint64 backlog = 2;</code>
+       */
+      public boolean hasBacklog() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional uint64 backlog = 2;</code>
+       */
+      public long getBacklog() {
+        return backlog_;
+      }
+      /**
+       * <code>optional uint64 backlog = 2;</code>
+       */
+      public Builder setBacklog(long value) {
+        bitField0_ |= 0x00000002;
+        backlog_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 backlog = 2;</code>
+       */
+      public Builder clearBacklog() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        backlog_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 bytes = 3;
+      private long bytes_ ;
+      /**
+       * <code>optional uint64 bytes = 3;</code>
+       */
+      public boolean hasBytes() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional uint64 bytes = 3;</code>
+       */
+      public long getBytes() {
+        return bytes_;
+      }
+      /**
+       * <code>optional uint64 bytes = 3;</code>
+       */
+      public Builder setBytes(long value) {
+        bitField0_ |= 0x00000004;
+        bytes_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 bytes = 3;</code>
+       */
+      public Builder clearBytes() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        bytes_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 drops = 4;
+      private long drops_ ;
+      /**
+       * <code>optional uint64 drops = 4;</code>
+       */
+      public boolean hasDrops() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional uint64 drops = 4;</code>
+       */
+      public long getDrops() {
+        return drops_;
+      }
+      /**
+       * <code>optional uint64 drops = 4;</code>
+       */
+      public Builder setDrops(long value) {
+        bitField0_ |= 0x00000008;
+        drops_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 drops = 4;</code>
+       */
+      public Builder clearDrops() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        drops_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 overlimits = 5;
+      private long overlimits_ ;
+      /**
+       * <code>optional uint64 overlimits = 5;</code>
+       */
+      public boolean hasOverlimits() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional uint64 overlimits = 5;</code>
+       */
+      public long getOverlimits() {
+        return overlimits_;
+      }
+      /**
+       * <code>optional uint64 overlimits = 5;</code>
+       */
+      public Builder setOverlimits(long value) {
+        bitField0_ |= 0x00000010;
+        overlimits_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 overlimits = 5;</code>
+       */
+      public Builder clearOverlimits() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        overlimits_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 packets = 6;
+      private long packets_ ;
+      /**
+       * <code>optional uint64 packets = 6;</code>
+       */
+      public boolean hasPackets() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional uint64 packets = 6;</code>
+       */
+      public long getPackets() {
+        return packets_;
+      }
+      /**
+       * <code>optional uint64 packets = 6;</code>
+       */
+      public Builder setPackets(long value) {
+        bitField0_ |= 0x00000020;
+        packets_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 packets = 6;</code>
+       */
+      public Builder clearPackets() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        packets_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 qlen = 7;
+      private long qlen_ ;
+      /**
+       * <code>optional uint64 qlen = 7;</code>
+       */
+      public boolean hasQlen() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional uint64 qlen = 7;</code>
+       */
+      public long getQlen() {
+        return qlen_;
+      }
+      /**
+       * <code>optional uint64 qlen = 7;</code>
+       */
+      public Builder setQlen(long value) {
+        bitField0_ |= 0x00000040;
+        qlen_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 qlen = 7;</code>
+       */
+      public Builder clearQlen() {
+        bitField0_ = (bitField0_ & ~0x00000040);
+        qlen_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 ratebps = 8;
+      private long ratebps_ ;
+      /**
+       * <code>optional uint64 ratebps = 8;</code>
+       */
+      public boolean hasRatebps() {
+        return ((bitField0_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional uint64 ratebps = 8;</code>
+       */
+      public long getRatebps() {
+        return ratebps_;
+      }
+      /**
+       * <code>optional uint64 ratebps = 8;</code>
+       */
+      public Builder setRatebps(long value) {
+        bitField0_ |= 0x00000080;
+        ratebps_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 ratebps = 8;</code>
+       */
+      public Builder clearRatebps() {
+        bitField0_ = (bitField0_ & ~0x00000080);
+        ratebps_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 ratepps = 9;
+      private long ratepps_ ;
+      /**
+       * <code>optional uint64 ratepps = 9;</code>
+       */
+      public boolean hasRatepps() {
+        return ((bitField0_ & 0x00000100) == 0x00000100);
+      }
+      /**
+       * <code>optional uint64 ratepps = 9;</code>
+       */
+      public long getRatepps() {
+        return ratepps_;
+      }
+      /**
+       * <code>optional uint64 ratepps = 9;</code>
+       */
+      public Builder setRatepps(long value) {
+        bitField0_ |= 0x00000100;
+        ratepps_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 ratepps = 9;</code>
+       */
+      public Builder clearRatepps() {
+        bitField0_ = (bitField0_ & ~0x00000100);
+        ratepps_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 requeues = 10;
+      private long requeues_ ;
+      /**
+       * <code>optional uint64 requeues = 10;</code>
+       */
+      public boolean hasRequeues() {
+        return ((bitField0_ & 0x00000200) == 0x00000200);
+      }
+      /**
+       * <code>optional uint64 requeues = 10;</code>
+       */
+      public long getRequeues() {
+        return requeues_;
+      }
+      /**
+       * <code>optional uint64 requeues = 10;</code>
+       */
+      public Builder setRequeues(long value) {
+        bitField0_ |= 0x00000200;
+        requeues_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 requeues = 10;</code>
+       */
+      public Builder clearRequeues() {
+        bitField0_ = (bitField0_ & ~0x00000200);
+        requeues_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.TrafficControlStatistics)
+    }
+
+    static {
+      defaultInstance = new TrafficControlStatistics(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.TrafficControlStatistics)
+  }
+
+  public interface IpStatisticsOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional int64 Forwarding = 1;
+    /**
+     * <code>optional int64 Forwarding = 1;</code>
+     */
+    boolean hasForwarding();
+    /**
+     * <code>optional int64 Forwarding = 1;</code>
+     */
+    long getForwarding();
+
+    // optional int64 DefaultTTL = 2;
+    /**
+     * <code>optional int64 DefaultTTL = 2;</code>
+     */
+    boolean hasDefaultTTL();
+    /**
+     * <code>optional int64 DefaultTTL = 2;</code>
+     */
+    long getDefaultTTL();
+
+    // optional int64 InReceives = 3;
+    /**
+     * <code>optional int64 InReceives = 3;</code>
+     */
+    boolean hasInReceives();
+    /**
+     * <code>optional int64 InReceives = 3;</code>
+     */
+    long getInReceives();
+
+    // optional int64 InHdrErrors = 4;
+    /**
+     * <code>optional int64 InHdrErrors = 4;</code>
+     */
+    boolean hasInHdrErrors();
+    /**
+     * <code>optional int64 InHdrErrors = 4;</code>
+     */
+    long getInHdrErrors();
+
+    // optional int64 InAddrErrors = 5;
+    /**
+     * <code>optional int64 InAddrErrors = 5;</code>
+     */
+    boolean hasInAddrErrors();
+    /**
+     * <code>optional int64 InAddrErrors = 5;</code>
+     */
+    long getInAddrErrors();
+
+    // optional int64 ForwDatagrams = 6;
+    /**
+     * <code>optional int64 ForwDatagrams = 6;</code>
+     */
+    boolean hasForwDatagrams();
+    /**
+     * <code>optional int64 ForwDatagrams = 6;</code>
+     */
+    long getForwDatagrams();
+
+    // optional int64 InUnknownProtos = 7;
+    /**
+     * <code>optional int64 InUnknownProtos = 7;</code>
+     */
+    boolean hasInUnknownProtos();
+    /**
+     * <code>optional int64 InUnknownProtos = 7;</code>
+     */
+    long getInUnknownProtos();
+
+    // optional int64 InDiscards = 8;
+    /**
+     * <code>optional int64 InDiscards = 8;</code>
+     */
+    boolean hasInDiscards();
+    /**
+     * <code>optional int64 InDiscards = 8;</code>
+     */
+    long getInDiscards();
+
+    // optional int64 InDelivers = 9;
+    /**
+     * <code>optional int64 InDelivers = 9;</code>
+     */
+    boolean hasInDelivers();
+    /**
+     * <code>optional int64 InDelivers = 9;</code>
+     */
+    long getInDelivers();
+
+    // optional int64 OutRequests = 10;
+    /**
+     * <code>optional int64 OutRequests = 10;</code>
+     */
+    boolean hasOutRequests();
+    /**
+     * <code>optional int64 OutRequests = 10;</code>
+     */
+    long getOutRequests();
+
+    // optional int64 OutDiscards = 11;
+    /**
+     * <code>optional int64 OutDiscards = 11;</code>
+     */
+    boolean hasOutDiscards();
+    /**
+     * <code>optional int64 OutDiscards = 11;</code>
+     */
+    long getOutDiscards();
+
+    // optional int64 OutNoRoutes = 12;
+    /**
+     * <code>optional int64 OutNoRoutes = 12;</code>
+     */
+    boolean hasOutNoRoutes();
+    /**
+     * <code>optional int64 OutNoRoutes = 12;</code>
+     */
+    long getOutNoRoutes();
+
+    // optional int64 ReasmTimeout = 13;
+    /**
+     * <code>optional int64 ReasmTimeout = 13;</code>
+     */
+    boolean hasReasmTimeout();
+    /**
+     * <code>optional int64 ReasmTimeout = 13;</code>
+     */
+    long getReasmTimeout();
+
+    // optional int64 ReasmReqds = 14;
+    /**
+     * <code>optional int64 ReasmReqds = 14;</code>
+     */
+    boolean hasReasmReqds();
+    /**
+     * <code>optional int64 ReasmReqds = 14;</code>
+     */
+    long getReasmReqds();
+
+    // optional int64 ReasmOKs = 15;
+    /**
+     * <code>optional int64 ReasmOKs = 15;</code>
+     */
+    boolean hasReasmOKs();
+    /**
+     * <code>optional int64 ReasmOKs = 15;</code>
+     */
+    long getReasmOKs();
+
+    // optional int64 ReasmFails = 16;
+    /**
+     * <code>optional int64 ReasmFails = 16;</code>
+     */
+    boolean hasReasmFails();
+    /**
+     * <code>optional int64 ReasmFails = 16;</code>
+     */
+    long getReasmFails();
+
+    // optional int64 FragOKs = 17;
+    /**
+     * <code>optional int64 FragOKs = 17;</code>
+     */
+    boolean hasFragOKs();
+    /**
+     * <code>optional int64 FragOKs = 17;</code>
+     */
+    long getFragOKs();
+
+    // optional int64 FragFails = 18;
+    /**
+     * <code>optional int64 FragFails = 18;</code>
+     */
+    boolean hasFragFails();
+    /**
+     * <code>optional int64 FragFails = 18;</code>
+     */
+    long getFragFails();
+
+    // optional int64 FragCreates = 19;
+    /**
+     * <code>optional int64 FragCreates = 19;</code>
+     */
+    boolean hasFragCreates();
+    /**
+     * <code>optional int64 FragCreates = 19;</code>
+     */
+    long getFragCreates();
+  }
+  /**
+   * Protobuf type {@code mesos.IpStatistics}
+   */
+  public static final class IpStatistics extends
+      com.google.protobuf.GeneratedMessage
+      implements IpStatisticsOrBuilder {
+    // Use IpStatistics.newBuilder() to construct.
+    private IpStatistics(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private IpStatistics(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final IpStatistics defaultInstance;
+    public static IpStatistics getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public IpStatistics getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private IpStatistics(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 8: {
+              bitField0_ |= 0x00000001;
+              forwarding_ = input.readInt64();
+              break;
+            }
+            case 16: {
+              bitField0_ |= 0x00000002;
+              defaultTTL_ = input.readInt64();
+              break;
+            }
+            case 24: {
+              bitField0_ |= 0x00000004;
+              inReceives_ = input.readInt64();
+              break;
+            }
+            case 32: {
+              bitField0_ |= 0x00000008;
+              inHdrErrors_ = input.readInt64();
+              break;
+            }
+            case 40: {
+              bitField0_ |= 0x00000010;
+              inAddrErrors_ = input.readInt64();
+              break;
+            }
+            case 48: {
+              bitField0_ |= 0x00000020;
+              forwDatagrams_ = input.readInt64();
+              break;
+            }
+            case 56: {
+              bitField0_ |= 0x00000040;
+              inUnknownProtos_ = input.readInt64();
+              break;
+            }
+            case 64: {
+              bitField0_ |= 0x00000080;
+              inDiscards_ = input.readInt64();
+              break;
+            }
+            case 72: {
+              bitField0_ |= 0x00000100;
+              inDelivers_ = input.readInt64();
+              break;
+            }
+            case 80: {
+              bitField0_ |= 0x00000200;
+              outRequests_ = input.readInt64();
+              break;
+            }
+            case 88: {
+              bitField0_ |= 0x00000400;
+              outDiscards_ = input.readInt64();
+              break;
+            }
+            case 96: {
+              bitField0_ |= 0x00000800;
+              outNoRoutes_ = input.readInt64();
+              break;
+            }
+            case 104: {
+              bitField0_ |= 0x00001000;
+              reasmTimeout_ = input.readInt64();
+              break;
+            }
+            case 112: {
+              bitField0_ |= 0x00002000;
+              reasmReqds_ = input.readInt64();
+              break;
+            }
+            case 120: {
+              bitField0_ |= 0x00004000;
+              reasmOKs_ = input.readInt64();
+              break;
+            }
+            case 128: {
+              bitField0_ |= 0x00008000;
+              reasmFails_ = input.readInt64();
+              break;
+            }
+            case 136: {
+              bitField0_ |= 0x00010000;
+              fragOKs_ = input.readInt64();
+              break;
+            }
+            case 144: {
+              bitField0_ |= 0x00020000;
+              fragFails_ = input.readInt64();
+              break;
+            }
+            case 152: {
+              bitField0_ |= 0x00040000;
+              fragCreates_ = input.readInt64();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_IpStatistics_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_IpStatistics_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.IpStatistics.class, org.apache.mesos.Protos.IpStatistics.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<IpStatistics> PARSER =
+        new com.google.protobuf.AbstractParser<IpStatistics>() {
+      public IpStatistics parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new IpStatistics(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<IpStatistics> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // optional int64 Forwarding = 1;
+    public static final int FORWARDING_FIELD_NUMBER = 1;
+    private long forwarding_;
+    /**
+     * <code>optional int64 Forwarding = 1;</code>
+     */
+    public boolean hasForwarding() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional int64 Forwarding = 1;</code>
+     */
+    public long getForwarding() {
+      return forwarding_;
+    }
+
+    // optional int64 DefaultTTL = 2;
+    public static final int DEFAULTTTL_FIELD_NUMBER = 2;
+    private long defaultTTL_;
+    /**
+     * <code>optional int64 DefaultTTL = 2;</code>
+     */
+    public boolean hasDefaultTTL() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional int64 DefaultTTL = 2;</code>
+     */
+    public long getDefaultTTL() {
+      return defaultTTL_;
+    }
+
+    // optional int64 InReceives = 3;
+    public static final int INRECEIVES_FIELD_NUMBER = 3;
+    private long inReceives_;
+    /**
+     * <code>optional int64 InReceives = 3;</code>
+     */
+    public boolean hasInReceives() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional int64 InReceives = 3;</code>
+     */
+    public long getInReceives() {
+      return inReceives_;
+    }
+
+    // optional int64 InHdrErrors = 4;
+    public static final int INHDRERRORS_FIELD_NUMBER = 4;
+    private long inHdrErrors_;
+    /**
+     * <code>optional int64 InHdrErrors = 4;</code>
+     */
+    public boolean hasInHdrErrors() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional int64 InHdrErrors = 4;</code>
+     */
+    public long getInHdrErrors() {
+      return inHdrErrors_;
+    }
+
+    // optional int64 InAddrErrors = 5;
+    public static final int INADDRERRORS_FIELD_NUMBER = 5;
+    private long inAddrErrors_;
+    /**
+     * <code>optional int64 InAddrErrors = 5;</code>
+     */
+    public boolean hasInAddrErrors() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional int64 InAddrErrors = 5;</code>
+     */
+    public long getInAddrErrors() {
+      return inAddrErrors_;
+    }
+
+    // optional int64 ForwDatagrams = 6;
+    public static final int FORWDATAGRAMS_FIELD_NUMBER = 6;
+    private long forwDatagrams_;
+    /**
+     * <code>optional int64 ForwDatagrams = 6;</code>
+     */
+    public boolean hasForwDatagrams() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional int64 ForwDatagrams = 6;</code>
+     */
+    public long getForwDatagrams() {
+      return forwDatagrams_;
+    }
+
+    // optional int64 InUnknownProtos = 7;
+    public static final int INUNKNOWNPROTOS_FIELD_NUMBER = 7;
+    private long inUnknownProtos_;
+    /**
+     * <code>optional int64 InUnknownProtos = 7;</code>
+     */
+    public boolean hasInUnknownProtos() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional int64 InUnknownProtos = 7;</code>
+     */
+    public long getInUnknownProtos() {
+      return inUnknownProtos_;
+    }
+
+    // optional int64 InDiscards = 8;
+    public static final int INDISCARDS_FIELD_NUMBER = 8;
+    private long inDiscards_;
+    /**
+     * <code>optional int64 InDiscards = 8;</code>
+     */
+    public boolean hasInDiscards() {
+      return ((bitField0_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional int64 InDiscards = 8;</code>
+     */
+    public long getInDiscards() {
+      return inDiscards_;
+    }
+
+    // optional int64 InDelivers = 9;
+    public static final int INDELIVERS_FIELD_NUMBER = 9;
+    private long inDelivers_;
+    /**
+     * <code>optional int64 InDelivers = 9;</code>
+     */
+    public boolean hasInDelivers() {
+      return ((bitField0_ & 0x00000100) == 0x00000100);
+    }
+    /**
+     * <code>optional int64 InDelivers = 9;</code>
+     */
+    public long getInDelivers() {
+      return inDelivers_;
+    }
+
+    // optional int64 OutRequests = 10;
+    public static final int OUTREQUESTS_FIELD_NUMBER = 10;
+    private long outRequests_;
+    /**
+     * <code>optional int64 OutRequests = 10;</code>
+     */
+    public boolean hasOutRequests() {
+      return ((bitField0_ & 0x00000200) == 0x00000200);
+    }
+    /**
+     * <code>optional int64 OutRequests = 10;</code>
+     */
+    public long getOutRequests() {
+      return outRequests_;
+    }
+
+    // optional int64 OutDiscards = 11;
+    public static final int OUTDISCARDS_FIELD_NUMBER = 11;
+    private long outDiscards_;
+    /**
+     * <code>optional int64 OutDiscards = 11;</code>
+     */
+    public boolean hasOutDiscards() {
+      return ((bitField0_ & 0x00000400) == 0x00000400);
+    }
+    /**
+     * <code>optional int64 OutDiscards = 11;</code>
+     */
+    public long getOutDiscards() {
+      return outDiscards_;
+    }
+
+    // optional int64 OutNoRoutes = 12;
+    public static final int OUTNOROUTES_FIELD_NUMBER = 12;
+    private long outNoRoutes_;
+    /**
+     * <code>optional int64 OutNoRoutes = 12;</code>
+     */
+    public boolean hasOutNoRoutes() {
+      return ((bitField0_ & 0x00000800) == 0x00000800);
+    }
+    /**
+     * <code>optional int64 OutNoRoutes = 12;</code>
+     */
+    public long getOutNoRoutes() {
+      return outNoRoutes_;
+    }
+
+    // optional int64 ReasmTimeout = 13;
+    public static final int REASMTIMEOUT_FIELD_NUMBER = 13;
+    private long reasmTimeout_;
+    /**
+     * <code>optional int64 ReasmTimeout = 13;</code>
+     */
+    public boolean hasReasmTimeout() {
+      return ((bitField0_ & 0x00001000) == 0x00001000);
+    }
+    /**
+     * <code>optional int64 ReasmTimeout = 13;</code>
+     */
+    public long getReasmTimeout() {
+      return reasmTimeout_;
+    }
+
+    // optional int64 ReasmReqds = 14;
+    public static final int REASMREQDS_FIELD_NUMBER = 14;
+    private long reasmReqds_;
+    /**
+     * <code>optional int64 ReasmReqds = 14;</code>
+     */
+    public boolean hasReasmReqds() {
+      return ((bitField0_ & 0x00002000) == 0x00002000);
+    }
+    /**
+     * <code>optional int64 ReasmReqds = 14;</code>
+     */
+    public long getReasmReqds() {
+      return reasmReqds_;
+    }
+
+    // optional int64 ReasmOKs = 15;
+    public static final int REASMOKS_FIELD_NUMBER = 15;
+    private long reasmOKs_;
+    /**
+     * <code>optional int64 ReasmOKs = 15;</code>
+     */
+    public boolean hasReasmOKs() {
+      return ((bitField0_ & 0x00004000) == 0x00004000);
+    }
+    /**
+     * <code>optional int64 ReasmOKs = 15;</code>
+     */
+    public long getReasmOKs() {
+      return reasmOKs_;
+    }
+
+    // optional int64 ReasmFails = 16;
+    public static final int REASMFAILS_FIELD_NUMBER = 16;
+    private long reasmFails_;
+    /**
+     * <code>optional int64 ReasmFails = 16;</code>
+     */
+    public boolean hasReasmFails() {
+      return ((bitField0_ & 0x00008000) == 0x00008000);
+    }
+    /**
+     * <code>optional int64 ReasmFails = 16;</code>
+     */
+    public long getReasmFails() {
+      return reasmFails_;
+    }
+
+    // optional int64 FragOKs = 17;
+    public static final int FRAGOKS_FIELD_NUMBER = 17;
+    private long fragOKs_;
+    /**
+     * <code>optional int64 FragOKs = 17;</code>
+     */
+    public boolean hasFragOKs() {
+      return ((bitField0_ & 0x00010000) == 0x00010000);
+    }
+    /**
+     * <code>optional int64 FragOKs = 17;</code>
+     */
+    public long getFragOKs() {
+      return fragOKs_;
+    }
+
+    // optional int64 FragFails = 18;
+    public static final int FRAGFAILS_FIELD_NUMBER = 18;
+    private long fragFails_;
+    /**
+     * <code>optional int64 FragFails = 18;</code>
+     */
+    public boolean hasFragFails() {
+      return ((bitField0_ & 0x00020000) == 0x00020000);
+    }
+    /**
+     * <code>optional int64 FragFails = 18;</code>
+     */
+    public long getFragFails() {
+      return fragFails_;
+    }
+
+    // optional int64 FragCreates = 19;
+    public static final int FRAGCREATES_FIELD_NUMBER = 19;
+    private long fragCreates_;
+    /**
+     * <code>optional int64 FragCreates = 19;</code>
+     */
+    public boolean hasFragCreates() {
+      return ((bitField0_ & 0x00040000) == 0x00040000);
+    }
+    /**
+     * <code>optional int64 FragCreates = 19;</code>
+     */
+    public long getFragCreates() {
+      return fragCreates_;
+    }
+
+    private void initFields() {
+      forwarding_ = 0L;
+      defaultTTL_ = 0L;
+      inReceives_ = 0L;
+      inHdrErrors_ = 0L;
+      inAddrErrors_ = 0L;
+      forwDatagrams_ = 0L;
+      inUnknownProtos_ = 0L;
+      inDiscards_ = 0L;
+      inDelivers_ = 0L;
+      outRequests_ = 0L;
+      outDiscards_ = 0L;
+      outNoRoutes_ = 0L;
+      reasmTimeout_ = 0L;
+      reasmReqds_ = 0L;
+      reasmOKs_ = 0L;
+      reasmFails_ = 0L;
+      fragOKs_ = 0L;
+      fragFails_ = 0L;
+      fragCreates_ = 0L;
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeInt64(1, forwarding_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeInt64(2, defaultTTL_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeInt64(3, inReceives_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeInt64(4, inHdrErrors_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeInt64(5, inAddrErrors_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeInt64(6, forwDatagrams_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeInt64(7, inUnknownProtos_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        output.writeInt64(8, inDiscards_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        output.writeInt64(9, inDelivers_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        output.writeInt64(10, outRequests_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        output.writeInt64(11, outDiscards_);
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        output.writeInt64(12, outNoRoutes_);
+      }
+      if (((bitField0_ & 0x00001000) == 0x00001000)) {
+        output.writeInt64(13, reasmTimeout_);
+      }
+      if (((bitField0_ & 0x00002000) == 0x00002000)) {
+        output.writeInt64(14, reasmReqds_);
+      }
+      if (((bitField0_ & 0x00004000) == 0x00004000)) {
+        output.writeInt64(15, reasmOKs_);
+      }
+      if (((bitField0_ & 0x00008000) == 0x00008000)) {
+        output.writeInt64(16, reasmFails_);
+      }
+      if (((bitField0_ & 0x00010000) == 0x00010000)) {
+        output.writeInt64(17, fragOKs_);
+      }
+      if (((bitField0_ & 0x00020000) == 0x00020000)) {
+        output.writeInt64(18, fragFails_);
+      }
+      if (((bitField0_ & 0x00040000) == 0x00040000)) {
+        output.writeInt64(19, fragCreates_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(1, forwarding_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(2, defaultTTL_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(3, inReceives_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(4, inHdrErrors_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(5, inAddrErrors_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(6, forwDatagrams_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(7, inUnknownProtos_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(8, inDiscards_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(9, inDelivers_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(10, outRequests_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(11, outDiscards_);
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(12, outNoRoutes_);
+      }
+      if (((bitField0_ & 0x00001000) == 0x00001000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(13, reasmTimeout_);
+      }
+      if (((bitField0_ & 0x00002000) == 0x00002000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(14, reasmReqds_);
+      }
+      if (((bitField0_ & 0x00004000) == 0x00004000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(15, reasmOKs_);
+      }
+      if (((bitField0_ & 0x00008000) == 0x00008000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(16, reasmFails_);
+      }
+      if (((bitField0_ & 0x00010000) == 0x00010000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(17, fragOKs_);
+      }
+      if (((bitField0_ & 0x00020000) == 0x00020000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(18, fragFails_);
+      }
+      if (((bitField0_ & 0x00040000) == 0x00040000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(19, fragCreates_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.IpStatistics parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.IpStatistics parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.IpStatistics parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.IpStatistics parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.IpStatistics parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.IpStatistics parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.IpStatistics parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.IpStatistics parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.IpStatistics parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.IpStatistics parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.IpStatistics prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.IpStatistics}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.IpStatisticsOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_IpStatistics_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_IpStatistics_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.IpStatistics.class, org.apache.mesos.Protos.IpStatistics.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.IpStatistics.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        forwarding_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        defaultTTL_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        inReceives_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        inHdrErrors_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        inAddrErrors_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000010);
+        forwDatagrams_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000020);
+        inUnknownProtos_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000040);
+        inDiscards_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000080);
+        inDelivers_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000100);
+        outRequests_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000200);
+        outDiscards_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000400);
+        outNoRoutes_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000800);
+        reasmTimeout_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00001000);
+        reasmReqds_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00002000);
+        reasmOKs_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00004000);
+        reasmFails_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00008000);
+        fragOKs_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00010000);
+        fragFails_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00020000);
+        fragCreates_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00040000);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_IpStatistics_descriptor;
+      }
+
+      public org.apache.mesos.Protos.IpStatistics getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.IpStatistics.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.IpStatistics build() {
+        org.apache.mesos.Protos.IpStatistics result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.IpStatistics buildPartial() {
+        org.apache.mesos.Protos.IpStatistics result = new org.apache.mesos.Protos.IpStatistics(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.forwarding_ = forwarding_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.defaultTTL_ = defaultTTL_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.inReceives_ = inReceives_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.inHdrErrors_ = inHdrErrors_;
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.inAddrErrors_ = inAddrErrors_;
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        result.forwDatagrams_ = forwDatagrams_;
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        result.inUnknownProtos_ = inUnknownProtos_;
+        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+          to_bitField0_ |= 0x00000080;
+        }
+        result.inDiscards_ = inDiscards_;
+        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
+          to_bitField0_ |= 0x00000100;
+        }
+        result.inDelivers_ = inDelivers_;
+        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
+          to_bitField0_ |= 0x00000200;
+        }
+        result.outRequests_ = outRequests_;
+        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
+          to_bitField0_ |= 0x00000400;
+        }
+        result.outDiscards_ = outDiscards_;
+        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
+          to_bitField0_ |= 0x00000800;
+        }
+        result.outNoRoutes_ = outNoRoutes_;
+        if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
+          to_bitField0_ |= 0x00001000;
+        }
+        result.reasmTimeout_ = reasmTimeout_;
+        if (((from_bitField0_ & 0x00002000) == 0x00002000)) {
+          to_bitField0_ |= 0x00002000;
+        }
+        result.reasmReqds_ = reasmReqds_;
+        if (((from_bitField0_ & 0x00004000) == 0x00004000)) {
+          to_bitField0_ |= 0x00004000;
+        }
+        result.reasmOKs_ = reasmOKs_;
+        if (((from_bitField0_ & 0x00008000) == 0x00008000)) {
+          to_bitField0_ |= 0x00008000;
+        }
+        result.reasmFails_ = reasmFails_;
+        if (((from_bitField0_ & 0x00010000) == 0x00010000)) {
+          to_bitField0_ |= 0x00010000;
+        }
+        result.fragOKs_ = fragOKs_;
+        if (((from_bitField0_ & 0x00020000) == 0x00020000)) {
+          to_bitField0_ |= 0x00020000;
+        }
+        result.fragFails_ = fragFails_;
+        if (((from_bitField0_ & 0x00040000) == 0x00040000)) {
+          to_bitField0_ |= 0x00040000;
+        }
+        result.fragCreates_ = fragCreates_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.IpStatistics) {
+          return mergeFrom((org.apache.mesos.Protos.IpStatistics)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.IpStatistics other) {
+        if (other == org.apache.mesos.Protos.IpStatistics.getDefaultInstance()) return this;
+        if (other.hasForwarding()) {
+          setForwarding(other.getForwarding());
+        }
+        if (other.hasDefaultTTL()) {
+          setDefaultTTL(other.getDefaultTTL());
+        }
+        if (other.hasInReceives()) {
+          setInReceives(other.getInReceives());
+        }
+        if (other.hasInHdrErrors()) {
+          setInHdrErrors(other.getInHdrErrors());
+        }
+        if (other.hasInAddrErrors()) {
+          setInAddrErrors(other.getInAddrErrors());
+        }
+        if (other.hasForwDatagrams()) {
+          setForwDatagrams(other.getForwDatagrams());
+        }
+        if (other.hasInUnknownProtos()) {
+          setInUnknownProtos(other.getInUnknownProtos());
+        }
+        if (other.hasInDiscards()) {
+          setInDiscards(other.getInDiscards());
+        }
+        if (other.hasInDelivers()) {
+          setInDelivers(other.getInDelivers());
+        }
+        if (other.hasOutRequests()) {
+          setOutRequests(other.getOutRequests());
+        }
+        if (other.hasOutDiscards()) {
+          setOutDiscards(other.getOutDiscards());
+        }
+        if (other.hasOutNoRoutes()) {
+          setOutNoRoutes(other.getOutNoRoutes());
+        }
+        if (other.hasReasmTimeout()) {
+          setReasmTimeout(other.getReasmTimeout());
+        }
+        if (other.hasReasmReqds()) {
+          setReasmReqds(other.getReasmReqds());
+        }
+        if (other.hasReasmOKs()) {
+          setReasmOKs(other.getReasmOKs());
+        }
+        if (other.hasReasmFails()) {
+          setReasmFails(other.getReasmFails());
+        }
+        if (other.hasFragOKs()) {
+          setFragOKs(other.getFragOKs());
+        }
+        if (other.hasFragFails()) {
+          setFragFails(other.getFragFails());
+        }
+        if (other.hasFragCreates()) {
+          setFragCreates(other.getFragCreates());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.IpStatistics parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.IpStatistics) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional int64 Forwarding = 1;
+      private long forwarding_ ;
+      /**
+       * <code>optional int64 Forwarding = 1;</code>
+       */
+      public boolean hasForwarding() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional int64 Forwarding = 1;</code>
+       */
+      public long getForwarding() {
+        return forwarding_;
+      }
+      /**
+       * <code>optional int64 Forwarding = 1;</code>
+       */
+      public Builder setForwarding(long value) {
+        bitField0_ |= 0x00000001;
+        forwarding_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 Forwarding = 1;</code>
+       */
+      public Builder clearForwarding() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        forwarding_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 DefaultTTL = 2;
+      private long defaultTTL_ ;
+      /**
+       * <code>optional int64 DefaultTTL = 2;</code>
+       */
+      public boolean hasDefaultTTL() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional int64 DefaultTTL = 2;</code>
+       */
+      public long getDefaultTTL() {
+        return defaultTTL_;
+      }
+      /**
+       * <code>optional int64 DefaultTTL = 2;</code>
+       */
+      public Builder setDefaultTTL(long value) {
+        bitField0_ |= 0x00000002;
+        defaultTTL_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 DefaultTTL = 2;</code>
+       */
+      public Builder clearDefaultTTL() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        defaultTTL_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InReceives = 3;
+      private long inReceives_ ;
+      /**
+       * <code>optional int64 InReceives = 3;</code>
+       */
+      public boolean hasInReceives() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional int64 InReceives = 3;</code>
+       */
+      public long getInReceives() {
+        return inReceives_;
+      }
+      /**
+       * <code>optional int64 InReceives = 3;</code>
+       */
+      public Builder setInReceives(long value) {
+        bitField0_ |= 0x00000004;
+        inReceives_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InReceives = 3;</code>
+       */
+      public Builder clearInReceives() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        inReceives_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InHdrErrors = 4;
+      private long inHdrErrors_ ;
+      /**
+       * <code>optional int64 InHdrErrors = 4;</code>
+       */
+      public boolean hasInHdrErrors() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional int64 InHdrErrors = 4;</code>
+       */
+      public long getInHdrErrors() {
+        return inHdrErrors_;
+      }
+      /**
+       * <code>optional int64 InHdrErrors = 4;</code>
+       */
+      public Builder setInHdrErrors(long value) {
+        bitField0_ |= 0x00000008;
+        inHdrErrors_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InHdrErrors = 4;</code>
+       */
+      public Builder clearInHdrErrors() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        inHdrErrors_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InAddrErrors = 5;
+      private long inAddrErrors_ ;
+      /**
+       * <code>optional int64 InAddrErrors = 5;</code>
+       */
+      public boolean hasInAddrErrors() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional int64 InAddrErrors = 5;</code>
+       */
+      public long getInAddrErrors() {
+        return inAddrErrors_;
+      }
+      /**
+       * <code>optional int64 InAddrErrors = 5;</code>
+       */
+      public Builder setInAddrErrors(long value) {
+        bitField0_ |= 0x00000010;
+        inAddrErrors_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InAddrErrors = 5;</code>
+       */
+      public Builder clearInAddrErrors() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        inAddrErrors_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 ForwDatagrams = 6;
+      private long forwDatagrams_ ;
+      /**
+       * <code>optional int64 ForwDatagrams = 6;</code>
+       */
+      public boolean hasForwDatagrams() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional int64 ForwDatagrams = 6;</code>
+       */
+      public long getForwDatagrams() {
+        return forwDatagrams_;
+      }
+      /**
+       * <code>optional int64 ForwDatagrams = 6;</code>
+       */
+      public Builder setForwDatagrams(long value) {
+        bitField0_ |= 0x00000020;
+        forwDatagrams_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 ForwDatagrams = 6;</code>
+       */
+      public Builder clearForwDatagrams() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        forwDatagrams_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InUnknownProtos = 7;
+      private long inUnknownProtos_ ;
+      /**
+       * <code>optional int64 InUnknownProtos = 7;</code>
+       */
+      public boolean hasInUnknownProtos() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional int64 InUnknownProtos = 7;</code>
+       */
+      public long getInUnknownProtos() {
+        return inUnknownProtos_;
+      }
+      /**
+       * <code>optional int64 InUnknownProtos = 7;</code>
+       */
+      public Builder setInUnknownProtos(long value) {
+        bitField0_ |= 0x00000040;
+        inUnknownProtos_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InUnknownProtos = 7;</code>
+       */
+      public Builder clearInUnknownProtos() {
+        bitField0_ = (bitField0_ & ~0x00000040);
+        inUnknownProtos_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InDiscards = 8;
+      private long inDiscards_ ;
+      /**
+       * <code>optional int64 InDiscards = 8;</code>
+       */
+      public boolean hasInDiscards() {
+        return ((bitField0_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional int64 InDiscards = 8;</code>
+       */
+      public long getInDiscards() {
+        return inDiscards_;
+      }
+      /**
+       * <code>optional int64 InDiscards = 8;</code>
+       */
+      public Builder setInDiscards(long value) {
+        bitField0_ |= 0x00000080;
+        inDiscards_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InDiscards = 8;</code>
+       */
+      public Builder clearInDiscards() {
+        bitField0_ = (bitField0_ & ~0x00000080);
+        inDiscards_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InDelivers = 9;
+      private long inDelivers_ ;
+      /**
+       * <code>optional int64 InDelivers = 9;</code>
+       */
+      public boolean hasInDelivers() {
+        return ((bitField0_ & 0x00000100) == 0x00000100);
+      }
+      /**
+       * <code>optional int64 InDelivers = 9;</code>
+       */
+      public long getInDelivers() {
+        return inDelivers_;
+      }
+      /**
+       * <code>optional int64 InDelivers = 9;</code>
+       */
+      public Builder setInDelivers(long value) {
+        bitField0_ |= 0x00000100;
+        inDelivers_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InDelivers = 9;</code>
+       */
+      public Builder clearInDelivers() {
+        bitField0_ = (bitField0_ & ~0x00000100);
+        inDelivers_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 OutRequests = 10;
+      private long outRequests_ ;
+      /**
+       * <code>optional int64 OutRequests = 10;</code>
+       */
+      public boolean hasOutRequests() {
+        return ((bitField0_ & 0x00000200) == 0x00000200);
+      }
+      /**
+       * <code>optional int64 OutRequests = 10;</code>
+       */
+      public long getOutRequests() {
+        return outRequests_;
+      }
+      /**
+       * <code>optional int64 OutRequests = 10;</code>
+       */
+      public Builder setOutRequests(long value) {
+        bitField0_ |= 0x00000200;
+        outRequests_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 OutRequests = 10;</code>
+       */
+      public Builder clearOutRequests() {
+        bitField0_ = (bitField0_ & ~0x00000200);
+        outRequests_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 OutDiscards = 11;
+      private long outDiscards_ ;
+      /**
+       * <code>optional int64 OutDiscards = 11;</code>
+       */
+      public boolean hasOutDiscards() {
+        return ((bitField0_ & 0x00000400) == 0x00000400);
+      }
+      /**
+       * <code>optional int64 OutDiscards = 11;</code>
+       */
+      public long getOutDiscards() {
+        return outDiscards_;
+      }
+      /**
+       * <code>optional int64 OutDiscards = 11;</code>
+       */
+      public Builder setOutDiscards(long value) {
+        bitField0_ |= 0x00000400;
+        outDiscards_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 OutDiscards = 11;</code>
+       */
+      public Builder clearOutDiscards() {
+        bitField0_ = (bitField0_ & ~0x00000400);
+        outDiscards_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 OutNoRoutes = 12;
+      private long outNoRoutes_ ;
+      /**
+       * <code>optional int64 OutNoRoutes = 12;</code>
+       */
+      public boolean hasOutNoRoutes() {
+        return ((bitField0_ & 0x00000800) == 0x00000800);
+      }
+      /**
+       * <code>optional int64 OutNoRoutes = 12;</code>
+       */
+      public long getOutNoRoutes() {
+        return outNoRoutes_;
+      }
+      /**
+       * <code>optional int64 OutNoRoutes = 12;</code>
+       */
+      public Builder setOutNoRoutes(long value) {
+        bitField0_ |= 0x00000800;
+        outNoRoutes_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 OutNoRoutes = 12;</code>
+       */
+      public Builder clearOutNoRoutes() {
+        bitField0_ = (bitField0_ & ~0x00000800);
+        outNoRoutes_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 ReasmTimeout = 13;
+      private long reasmTimeout_ ;
+      /**
+       * <code>optional int64 ReasmTimeout = 13;</code>
+       */
+      public boolean hasReasmTimeout() {
+        return ((bitField0_ & 0x00001000) == 0x00001000);
+      }
+      /**
+       * <code>optional int64 ReasmTimeout = 13;</code>
+       */
+      public long getReasmTimeout() {
+        return reasmTimeout_;
+      }
+      /**
+       * <code>optional int64 ReasmTimeout = 13;</code>
+       */
+      public Builder setReasmTimeout(long value) {
+        bitField0_ |= 0x00001000;
+        reasmTimeout_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 ReasmTimeout = 13;</code>
+       */
+      public Builder clearReasmTimeout() {
+        bitField0_ = (bitField0_ & ~0x00001000);
+        reasmTimeout_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 ReasmReqds = 14;
+      private long reasmReqds_ ;
+      /**
+       * <code>optional int64 ReasmReqds = 14;</code>
+       */
+      public boolean hasReasmReqds() {
+        return ((bitField0_ & 0x00002000) == 0x00002000);
+      }
+      /**
+       * <code>optional int64 ReasmReqds = 14;</code>
+       */
+      public long getReasmReqds() {
+        return reasmReqds_;
+      }
+      /**
+       * <code>optional int64 ReasmReqds = 14;</code>
+       */
+      public Builder setReasmReqds(long value) {
+        bitField0_ |= 0x00002000;
+        reasmReqds_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 ReasmReqds = 14;</code>
+       */
+      public Builder clearReasmReqds() {
+        bitField0_ = (bitField0_ & ~0x00002000);
+        reasmReqds_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 ReasmOKs = 15;
+      private long reasmOKs_ ;
+      /**
+       * <code>optional int64 ReasmOKs = 15;</code>
+       */
+      public boolean hasReasmOKs() {
+        return ((bitField0_ & 0x00004000) == 0x00004000);
+      }
+      /**
+       * <code>optional int64 ReasmOKs = 15;</code>
+       */
+      public long getReasmOKs() {
+        return reasmOKs_;
+      }
+      /**
+       * <code>optional int64 ReasmOKs = 15;</code>
+       */
+      public Builder setReasmOKs(long value) {
+        bitField0_ |= 0x00004000;
+        reasmOKs_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 ReasmOKs = 15;</code>
+       */
+      public Builder clearReasmOKs() {
+        bitField0_ = (bitField0_ & ~0x00004000);
+        reasmOKs_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 ReasmFails = 16;
+      private long reasmFails_ ;
+      /**
+       * <code>optional int64 ReasmFails = 16;</code>
+       */
+      public boolean hasReasmFails() {
+        return ((bitField0_ & 0x00008000) == 0x00008000);
+      }
+      /**
+       * <code>optional int64 ReasmFails = 16;</code>
+       */
+      public long getReasmFails() {
+        return reasmFails_;
+      }
+      /**
+       * <code>optional int64 ReasmFails = 16;</code>
+       */
+      public Builder setReasmFails(long value) {
+        bitField0_ |= 0x00008000;
+        reasmFails_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 ReasmFails = 16;</code>
+       */
+      public Builder clearReasmFails() {
+        bitField0_ = (bitField0_ & ~0x00008000);
+        reasmFails_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 FragOKs = 17;
+      private long fragOKs_ ;
+      /**
+       * <code>optional int64 FragOKs = 17;</code>
+       */
+      public boolean hasFragOKs() {
+        return ((bitField0_ & 0x00010000) == 0x00010000);
+      }
+      /**
+       * <code>optional int64 FragOKs = 17;</code>
+       */
+      public long getFragOKs() {
+        return fragOKs_;
+      }
+      /**
+       * <code>optional int64 FragOKs = 17;</code>
+       */
+      public Builder setFragOKs(long value) {
+        bitField0_ |= 0x00010000;
+        fragOKs_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 FragOKs = 17;</code>
+       */
+      public Builder clearFragOKs() {
+        bitField0_ = (bitField0_ & ~0x00010000);
+        fragOKs_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 FragFails = 18;
+      private long fragFails_ ;
+      /**
+       * <code>optional int64 FragFails = 18;</code>
+       */
+      public boolean hasFragFails() {
+        return ((bitField0_ & 0x00020000) == 0x00020000);
+      }
+      /**
+       * <code>optional int64 FragFails = 18;</code>
+       */
+      public long getFragFails() {
+        return fragFails_;
+      }
+      /**
+       * <code>optional int64 FragFails = 18;</code>
+       */
+      public Builder setFragFails(long value) {
+        bitField0_ |= 0x00020000;
+        fragFails_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 FragFails = 18;</code>
+       */
+      public Builder clearFragFails() {
+        bitField0_ = (bitField0_ & ~0x00020000);
+        fragFails_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 FragCreates = 19;
+      private long fragCreates_ ;
+      /**
+       * <code>optional int64 FragCreates = 19;</code>
+       */
+      public boolean hasFragCreates() {
+        return ((bitField0_ & 0x00040000) == 0x00040000);
+      }
+      /**
+       * <code>optional int64 FragCreates = 19;</code>
+       */
+      public long getFragCreates() {
+        return fragCreates_;
+      }
+      /**
+       * <code>optional int64 FragCreates = 19;</code>
+       */
+      public Builder setFragCreates(long value) {
+        bitField0_ |= 0x00040000;
+        fragCreates_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 FragCreates = 19;</code>
+       */
+      public Builder clearFragCreates() {
+        bitField0_ = (bitField0_ & ~0x00040000);
+        fragCreates_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.IpStatistics)
+    }
+
+    static {
+      defaultInstance = new IpStatistics(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.IpStatistics)
+  }
+
+  public interface IcmpStatisticsOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional int64 InMsgs = 1;
+    /**
+     * <code>optional int64 InMsgs = 1;</code>
+     */
+    boolean hasInMsgs();
+    /**
+     * <code>optional int64 InMsgs = 1;</code>
+     */
+    long getInMsgs();
+
+    // optional int64 InErrors = 2;
+    /**
+     * <code>optional int64 InErrors = 2;</code>
+     */
+    boolean hasInErrors();
+    /**
+     * <code>optional int64 InErrors = 2;</code>
+     */
+    long getInErrors();
+
+    // optional int64 InCsumErrors = 3;
+    /**
+     * <code>optional int64 InCsumErrors = 3;</code>
+     */
+    boolean hasInCsumErrors();
+    /**
+     * <code>optional int64 InCsumErrors = 3;</code>
+     */
+    long getInCsumErrors();
+
+    // optional int64 InDestUnreachs = 4;
+    /**
+     * <code>optional int64 InDestUnreachs = 4;</code>
+     */
+    boolean hasInDestUnreachs();
+    /**
+     * <code>optional int64 InDestUnreachs = 4;</code>
+     */
+    long getInDestUnreachs();
+
+    // optional int64 InTimeExcds = 5;
+    /**
+     * <code>optional int64 InTimeExcds = 5;</code>
+     */
+    boolean hasInTimeExcds();
+    /**
+     * <code>optional int64 InTimeExcds = 5;</code>
+     */
+    long getInTimeExcds();
+
+    // optional int64 InParmProbs = 6;
+    /**
+     * <code>optional int64 InParmProbs = 6;</code>
+     */
+    boolean hasInParmProbs();
+    /**
+     * <code>optional int64 InParmProbs = 6;</code>
+     */
+    long getInParmProbs();
+
+    // optional int64 InSrcQuenchs = 7;
+    /**
+     * <code>optional int64 InSrcQuenchs = 7;</code>
+     */
+    boolean hasInSrcQuenchs();
+    /**
+     * <code>optional int64 InSrcQuenchs = 7;</code>
+     */
+    long getInSrcQuenchs();
+
+    // optional int64 InRedirects = 8;
+    /**
+     * <code>optional int64 InRedirects = 8;</code>
+     */
+    boolean hasInRedirects();
+    /**
+     * <code>optional int64 InRedirects = 8;</code>
+     */
+    long getInRedirects();
+
+    // optional int64 InEchos = 9;
+    /**
+     * <code>optional int64 InEchos = 9;</code>
+     */
+    boolean hasInEchos();
+    /**
+     * <code>optional int64 InEchos = 9;</code>
+     */
+    long getInEchos();
+
+    // optional int64 InEchoReps = 10;
+    /**
+     * <code>optional int64 InEchoReps = 10;</code>
+     */
+    boolean hasInEchoReps();
+    /**
+     * <code>optional int64 InEchoReps = 10;</code>
+     */
+    long getInEchoReps();
+
+    // optional int64 InTimestamps = 11;
+    /**
+     * <code>optional int64 InTimestamps = 11;</code>
+     */
+    boolean hasInTimestamps();
+    /**
+     * <code>optional int64 InTimestamps = 11;</code>
+     */
+    long getInTimestamps();
+
+    // optional int64 InTimestampReps = 12;
+    /**
+     * <code>optional int64 InTimestampReps = 12;</code>
+     */
+    boolean hasInTimestampReps();
+    /**
+     * <code>optional int64 InTimestampReps = 12;</code>
+     */
+    long getInTimestampReps();
+
+    // optional int64 InAddrMasks = 13;
+    /**
+     * <code>optional int64 InAddrMasks = 13;</code>
+     */
+    boolean hasInAddrMasks();
+    /**
+     * <code>optional int64 InAddrMasks = 13;</code>
+     */
+    long getInAddrMasks();
+
+    // optional int64 InAddrMaskReps = 14;
+    /**
+     * <code>optional int64 InAddrMaskReps = 14;</code>
+     */
+    boolean hasInAddrMaskReps();
+    /**
+     * <code>optional int64 InAddrMaskReps = 14;</code>
+     */
+    long getInAddrMaskReps();
+
+    // optional int64 OutMsgs = 15;
+    /**
+     * <code>optional int64 OutMsgs = 15;</code>
+     */
+    boolean hasOutMsgs();
+    /**
+     * <code>optional int64 OutMsgs = 15;</code>
+     */
+    long getOutMsgs();
+
+    // optional int64 OutErrors = 16;
+    /**
+     * <code>optional int64 OutErrors = 16;</code>
+     */
+    boolean hasOutErrors();
+    /**
+     * <code>optional int64 OutErrors = 16;</code>
+     */
+    long getOutErrors();
+
+    // optional int64 OutDestUnreachs = 17;
+    /**
+     * <code>optional int64 OutDestUnreachs = 17;</code>
+     */
+    boolean hasOutDestUnreachs();
+    /**
+     * <code>optional int64 OutDestUnreachs = 17;</code>
+     */
+    long getOutDestUnreachs();
+
+    // optional int64 OutTimeExcds = 18;
+    /**
+     * <code>optional int64 OutTimeExcds = 18;</code>
+     */
+    boolean hasOutTimeExcds();
+    /**
+     * <code>optional int64 OutTimeExcds = 18;</code>
+     */
+    long getOutTimeExcds();
+
+    // optional int64 OutParmProbs = 19;
+    /**
+     * <code>optional int64 OutParmProbs = 19;</code>
+     */
+    boolean hasOutParmProbs();
+    /**
+     * <code>optional int64 OutParmProbs = 19;</code>
+     */
+    long getOutParmProbs();
+
+    // optional int64 OutSrcQuenchs = 20;
+    /**
+     * <code>optional int64 OutSrcQuenchs = 20;</code>
+     */
+    boolean hasOutSrcQuenchs();
+    /**
+     * <code>optional int64 OutSrcQuenchs = 20;</code>
+     */
+    long getOutSrcQuenchs();
+
+    // optional int64 OutRedirects = 21;
+    /**
+     * <code>optional int64 OutRedirects = 21;</code>
+     */
+    boolean hasOutRedirects();
+    /**
+     * <code>optional int64 OutRedirects = 21;</code>
+     */
+    long getOutRedirects();
+
+    // optional int64 OutEchos = 22;
+    /**
+     * <code>optional int64 OutEchos = 22;</code>
+     */
+    boolean hasOutEchos();
+    /**
+     * <code>optional int64 OutEchos = 22;</code>
+     */
+    long getOutEchos();
+
+    // optional int64 OutEchoReps = 23;
+    /**
+     * <code>optional int64 OutEchoReps = 23;</code>
+     */
+    boolean hasOutEchoReps();
+    /**
+     * <code>optional int64 OutEchoReps = 23;</code>
+     */
+    long getOutEchoReps();
+
+    // optional int64 OutTimestamps = 24;
+    /**
+     * <code>optional int64 OutTimestamps = 24;</code>
+     */
+    boolean hasOutTimestamps();
+    /**
+     * <code>optional int64 OutTimestamps = 24;</code>
+     */
+    long getOutTimestamps();
+
+    // optional int64 OutTimestampReps = 25;
+    /**
+     * <code>optional int64 OutTimestampReps = 25;</code>
+     */
+    boolean hasOutTimestampReps();
+    /**
+     * <code>optional int64 OutTimestampReps = 25;</code>
+     */
+    long getOutTimestampReps();
+
+    // optional int64 OutAddrMasks = 26;
+    /**
+     * <code>optional int64 OutAddrMasks = 26;</code>
+     */
+    boolean hasOutAddrMasks();
+    /**
+     * <code>optional int64 OutAddrMasks = 26;</code>
+     */
+    long getOutAddrMasks();
+
+    // optional int64 OutAddrMaskReps = 27;
+    /**
+     * <code>optional int64 OutAddrMaskReps = 27;</code>
+     */
+    boolean hasOutAddrMaskReps();
+    /**
+     * <code>optional int64 OutAddrMaskReps = 27;</code>
+     */
+    long getOutAddrMaskReps();
+  }
+  /**
+   * Protobuf type {@code mesos.IcmpStatistics}
+   */
+  public static final class IcmpStatistics extends
+      com.google.protobuf.GeneratedMessage
+      implements IcmpStatisticsOrBuilder {
+    // Use IcmpStatistics.newBuilder() to construct.
+    private IcmpStatistics(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private IcmpStatistics(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final IcmpStatistics defaultInstance;
+    public static IcmpStatistics getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public IcmpStatistics getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private IcmpStatistics(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 8: {
+              bitField0_ |= 0x00000001;
+              inMsgs_ = input.readInt64();
+              break;
+            }
+            case 16: {
+              bitField0_ |= 0x00000002;
+              inErrors_ = input.readInt64();
+              break;
+            }
+            case 24: {
+              bitField0_ |= 0x00000004;
+              inCsumErrors_ = input.readInt64();
+              break;
+            }
+            case 32: {
+              bitField0_ |= 0x00000008;
+              inDestUnreachs_ = input.readInt64();
+              break;
+            }
+            case 40: {
+              bitField0_ |= 0x00000010;
+              inTimeExcds_ = input.readInt64();
+              break;
+            }
+            case 48: {
+              bitField0_ |= 0x00000020;
+              inParmProbs_ = input.readInt64();
+              break;
+            }
+            case 56: {
+              bitField0_ |= 0x00000040;
+              inSrcQuenchs_ = input.readInt64();
+              break;
+            }
+            case 64: {
+              bitField0_ |= 0x00000080;
+              inRedirects_ = input.readInt64();
+              break;
+            }
+            case 72: {
+              bitField0_ |= 0x00000100;
+              inEchos_ = input.readInt64();
+              break;
+            }
+            case 80: {
+              bitField0_ |= 0x00000200;
+              inEchoReps_ = input.readInt64();
+              break;
+            }
+            case 88: {
+              bitField0_ |= 0x00000400;
+              inTimestamps_ = input.readInt64();
+              break;
+            }
+            case 96: {
+              bitField0_ |= 0x00000800;
+              inTimestampReps_ = input.readInt64();
+              break;
+            }
+            case 104: {
+              bitField0_ |= 0x00001000;
+              inAddrMasks_ = input.readInt64();
+              break;
+            }
+            case 112: {
+              bitField0_ |= 0x00002000;
+              inAddrMaskReps_ = input.readInt64();
+              break;
+            }
+            case 120: {
+              bitField0_ |= 0x00004000;
+              outMsgs_ = input.readInt64();
+              break;
+            }
+            case 128: {
+              bitField0_ |= 0x00008000;
+              outErrors_ = input.readInt64();
+              break;
+            }
+            case 136: {
+              bitField0_ |= 0x00010000;
+              outDestUnreachs_ = input.readInt64();
+              break;
+            }
+            case 144: {
+              bitField0_ |= 0x00020000;
+              outTimeExcds_ = input.readInt64();
+              break;
+            }
+            case 152: {
+              bitField0_ |= 0x00040000;
+              outParmProbs_ = input.readInt64();
+              break;
+            }
+            case 160: {
+              bitField0_ |= 0x00080000;
+              outSrcQuenchs_ = input.readInt64();
+              break;
+            }
+            case 168: {
+              bitField0_ |= 0x00100000;
+              outRedirects_ = input.readInt64();
+              break;
+            }
+            case 176: {
+              bitField0_ |= 0x00200000;
+              outEchos_ = input.readInt64();
+              break;
+            }
+            case 184: {
+              bitField0_ |= 0x00400000;
+              outEchoReps_ = input.readInt64();
+              break;
+            }
+            case 192: {
+              bitField0_ |= 0x00800000;
+              outTimestamps_ = input.readInt64();
+              break;
+            }
+            case 200: {
+              bitField0_ |= 0x01000000;
+              outTimestampReps_ = input.readInt64();
+              break;
+            }
+            case 208: {
+              bitField0_ |= 0x02000000;
+              outAddrMasks_ = input.readInt64();
+              break;
+            }
+            case 216: {
+              bitField0_ |= 0x04000000;
+              outAddrMaskReps_ = input.readInt64();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_IcmpStatistics_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_IcmpStatistics_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.IcmpStatistics.class, org.apache.mesos.Protos.IcmpStatistics.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<IcmpStatistics> PARSER =
+        new com.google.protobuf.AbstractParser<IcmpStatistics>() {
+      public IcmpStatistics parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new IcmpStatistics(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<IcmpStatistics> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // optional int64 InMsgs = 1;
+    public static final int INMSGS_FIELD_NUMBER = 1;
+    private long inMsgs_;
+    /**
+     * <code>optional int64 InMsgs = 1;</code>
+     */
+    public boolean hasInMsgs() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional int64 InMsgs = 1;</code>
+     */
+    public long getInMsgs() {
+      return inMsgs_;
+    }
+
+    // optional int64 InErrors = 2;
+    public static final int INERRORS_FIELD_NUMBER = 2;
+    private long inErrors_;
+    /**
+     * <code>optional int64 InErrors = 2;</code>
+     */
+    public boolean hasInErrors() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional int64 InErrors = 2;</code>
+     */
+    public long getInErrors() {
+      return inErrors_;
+    }
+
+    // optional int64 InCsumErrors = 3;
+    public static final int INCSUMERRORS_FIELD_NUMBER = 3;
+    private long inCsumErrors_;
+    /**
+     * <code>optional int64 InCsumErrors = 3;</code>
+     */
+    public boolean hasInCsumErrors() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional int64 InCsumErrors = 3;</code>
+     */
+    public long getInCsumErrors() {
+      return inCsumErrors_;
+    }
+
+    // optional int64 InDestUnreachs = 4;
+    public static final int INDESTUNREACHS_FIELD_NUMBER = 4;
+    private long inDestUnreachs_;
+    /**
+     * <code>optional int64 InDestUnreachs = 4;</code>
+     */
+    public boolean hasInDestUnreachs() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional int64 InDestUnreachs = 4;</code>
+     */
+    public long getInDestUnreachs() {
+      return inDestUnreachs_;
+    }
+
+    // optional int64 InTimeExcds = 5;
+    public static final int INTIMEEXCDS_FIELD_NUMBER = 5;
+    private long inTimeExcds_;
+    /**
+     * <code>optional int64 InTimeExcds = 5;</code>
+     */
+    public boolean hasInTimeExcds() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional int64 InTimeExcds = 5;</code>
+     */
+    public long getInTimeExcds() {
+      return inTimeExcds_;
+    }
+
+    // optional int64 InParmProbs = 6;
+    public static final int INPARMPROBS_FIELD_NUMBER = 6;
+    private long inParmProbs_;
+    /**
+     * <code>optional int64 InParmProbs = 6;</code>
+     */
+    public boolean hasInParmProbs() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional int64 InParmProbs = 6;</code>
+     */
+    public long getInParmProbs() {
+      return inParmProbs_;
+    }
+
+    // optional int64 InSrcQuenchs = 7;
+    public static final int INSRCQUENCHS_FIELD_NUMBER = 7;
+    private long inSrcQuenchs_;
+    /**
+     * <code>optional int64 InSrcQuenchs = 7;</code>
+     */
+    public boolean hasInSrcQuenchs() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional int64 InSrcQuenchs = 7;</code>
+     */
+    public long getInSrcQuenchs() {
+      return inSrcQuenchs_;
+    }
+
+    // optional int64 InRedirects = 8;
+    public static final int INREDIRECTS_FIELD_NUMBER = 8;
+    private long inRedirects_;
+    /**
+     * <code>optional int64 InRedirects = 8;</code>
+     */
+    public boolean hasInRedirects() {
+      return ((bitField0_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional int64 InRedirects = 8;</code>
+     */
+    public long getInRedirects() {
+      return inRedirects_;
+    }
+
+    // optional int64 InEchos = 9;
+    public static final int INECHOS_FIELD_NUMBER = 9;
+    private long inEchos_;
+    /**
+     * <code>optional int64 InEchos = 9;</code>
+     */
+    public boolean hasInEchos() {
+      return ((bitField0_ & 0x00000100) == 0x00000100);
+    }
+    /**
+     * <code>optional int64 InEchos = 9;</code>
+     */
+    public long getInEchos() {
+      return inEchos_;
+    }
+
+    // optional int64 InEchoReps = 10;
+    public static final int INECHOREPS_FIELD_NUMBER = 10;
+    private long inEchoReps_;
+    /**
+     * <code>optional int64 InEchoReps = 10;</code>
+     */
+    public boolean hasInEchoReps() {
+      return ((bitField0_ & 0x00000200) == 0x00000200);
+    }
+    /**
+     * <code>optional int64 InEchoReps = 10;</code>
+     */
+    public long getInEchoReps() {
+      return inEchoReps_;
+    }
+
+    // optional int64 InTimestamps = 11;
+    public static final int INTIMESTAMPS_FIELD_NUMBER = 11;
+    private long inTimestamps_;
+    /**
+     * <code>optional int64 InTimestamps = 11;</code>
+     */
+    public boolean hasInTimestamps() {
+      return ((bitField0_ & 0x00000400) == 0x00000400);
+    }
+    /**
+     * <code>optional int64 InTimestamps = 11;</code>
+     */
+    public long getInTimestamps() {
+      return inTimestamps_;
+    }
+
+    // optional int64 InTimestampReps = 12;
+    public static final int INTIMESTAMPREPS_FIELD_NUMBER = 12;
+    private long inTimestampReps_;
+    /**
+     * <code>optional int64 InTimestampReps = 12;</code>
+     */
+    public boolean hasInTimestampReps() {
+      return ((bitField0_ & 0x00000800) == 0x00000800);
+    }
+    /**
+     * <code>optional int64 InTimestampReps = 12;</code>
+     */
+    public long getInTimestampReps() {
+      return inTimestampReps_;
+    }
+
+    // optional int64 InAddrMasks = 13;
+    public static final int INADDRMASKS_FIELD_NUMBER = 13;
+    private long inAddrMasks_;
+    /**
+     * <code>optional int64 InAddrMasks = 13;</code>
+     */
+    public boolean hasInAddrMasks() {
+      return ((bitField0_ & 0x00001000) == 0x00001000);
+    }
+    /**
+     * <code>optional int64 InAddrMasks = 13;</code>
+     */
+    public long getInAddrMasks() {
+      return inAddrMasks_;
+    }
+
+    // optional int64 InAddrMaskReps = 14;
+    public static final int INADDRMASKREPS_FIELD_NUMBER = 14;
+    private long inAddrMaskReps_;
+    /**
+     * <code>optional int64 InAddrMaskReps = 14;</code>
+     */
+    public boolean hasInAddrMaskReps() {
+      return ((bitField0_ & 0x00002000) == 0x00002000);
+    }
+    /**
+     * <code>optional int64 InAddrMaskReps = 14;</code>
+     */
+    public long getInAddrMaskReps() {
+      return inAddrMaskReps_;
+    }
+
+    // optional int64 OutMsgs = 15;
+    public static final int OUTMSGS_FIELD_NUMBER = 15;
+    private long outMsgs_;
+    /**
+     * <code>optional int64 OutMsgs = 15;</code>
+     */
+    public boolean hasOutMsgs() {
+      return ((bitField0_ & 0x00004000) == 0x00004000);
+    }
+    /**
+     * <code>optional int64 OutMsgs = 15;</code>
+     */
+    public long getOutMsgs() {
+      return outMsgs_;
+    }
+
+    // optional int64 OutErrors = 16;
+    public static final int OUTERRORS_FIELD_NUMBER = 16;
+    private long outErrors_;
+    /**
+     * <code>optional int64 OutErrors = 16;</code>
+     */
+    public boolean hasOutErrors() {
+      return ((bitField0_ & 0x00008000) == 0x00008000);
+    }
+    /**
+     * <code>optional int64 OutErrors = 16;</code>
+     */
+    public long getOutErrors() {
+      return outErrors_;
+    }
+
+    // optional int64 OutDestUnreachs = 17;
+    public static final int OUTDESTUNREACHS_FIELD_NUMBER = 17;
+    private long outDestUnreachs_;
+    /**
+     * <code>optional int64 OutDestUnreachs = 17;</code>
+     */
+    public boolean hasOutDestUnreachs() {
+      return ((bitField0_ & 0x00010000) == 0x00010000);
+    }
+    /**
+     * <code>optional int64 OutDestUnreachs = 17;</code>
+     */
+    public long getOutDestUnreachs() {
+      return outDestUnreachs_;
+    }
+
+    // optional int64 OutTimeExcds = 18;
+    public static final int OUTTIMEEXCDS_FIELD_NUMBER = 18;
+    private long outTimeExcds_;
+    /**
+     * <code>optional int64 OutTimeExcds = 18;</code>
+     */
+    public boolean hasOutTimeExcds() {
+      return ((bitField0_ & 0x00020000) == 0x00020000);
+    }
+    /**
+     * <code>optional int64 OutTimeExcds = 18;</code>
+     */
+    public long getOutTimeExcds() {
+      return outTimeExcds_;
+    }
+
+    // optional int64 OutParmProbs = 19;
+    public static final int OUTPARMPROBS_FIELD_NUMBER = 19;
+    private long outParmProbs_;
+    /**
+     * <code>optional int64 OutParmProbs = 19;</code>
+     */
+    public boolean hasOutParmProbs() {
+      return ((bitField0_ & 0x00040000) == 0x00040000);
+    }
+    /**
+     * <code>optional int64 OutParmProbs = 19;</code>
+     */
+    public long getOutParmProbs() {
+      return outParmProbs_;
+    }
+
+    // optional int64 OutSrcQuenchs = 20;
+    public static final int OUTSRCQUENCHS_FIELD_NUMBER = 20;
+    private long outSrcQuenchs_;
+    /**
+     * <code>optional int64 OutSrcQuenchs = 20;</code>
+     */
+    public boolean hasOutSrcQuenchs() {
+      return ((bitField0_ & 0x00080000) == 0x00080000);
+    }
+    /**
+     * <code>optional int64 OutSrcQuenchs = 20;</code>
+     */
+    public long getOutSrcQuenchs() {
+      return outSrcQuenchs_;
+    }
+
+    // optional int64 OutRedirects = 21;
+    public static final int OUTREDIRECTS_FIELD_NUMBER = 21;
+    private long outRedirects_;
+    /**
+     * <code>optional int64 OutRedirects = 21;</code>
+     */
+    public boolean hasOutRedirects() {
+      return ((bitField0_ & 0x00100000) == 0x00100000);
+    }
+    /**
+     * <code>optional int64 OutRedirects = 21;</code>
+     */
+    public long getOutRedirects() {
+      return outRedirects_;
+    }
+
+    // optional int64 OutEchos = 22;
+    public static final int OUTECHOS_FIELD_NUMBER = 22;
+    private long outEchos_;
+    /**
+     * <code>optional int64 OutEchos = 22;</code>
+     */
+    public boolean hasOutEchos() {
+      return ((bitField0_ & 0x00200000) == 0x00200000);
+    }
+    /**
+     * <code>optional int64 OutEchos = 22;</code>
+     */
+    public long getOutEchos() {
+      return outEchos_;
+    }
+
+    // optional int64 OutEchoReps = 23;
+    public static final int OUTECHOREPS_FIELD_NUMBER = 23;
+    private long outEchoReps_;
+    /**
+     * <code>optional int64 OutEchoReps = 23;</code>
+     */
+    public boolean hasOutEchoReps() {
+      return ((bitField0_ & 0x00400000) == 0x00400000);
+    }
+    /**
+     * <code>optional int64 OutEchoReps = 23;</code>
+     */
+    public long getOutEchoReps() {
+      return outEchoReps_;
+    }
+
+    // optional int64 OutTimestamps = 24;
+    public static final int OUTTIMESTAMPS_FIELD_NUMBER = 24;
+    private long outTimestamps_;
+    /**
+     * <code>optional int64 OutTimestamps = 24;</code>
+     */
+    public boolean hasOutTimestamps() {
+      return ((bitField0_ & 0x00800000) == 0x00800000);
+    }
+    /**
+     * <code>optional int64 OutTimestamps = 24;</code>
+     */
+    public long getOutTimestamps() {
+      return outTimestamps_;
+    }
+
+    // optional int64 OutTimestampReps = 25;
+    public static final int OUTTIMESTAMPREPS_FIELD_NUMBER = 25;
+    private long outTimestampReps_;
+    /**
+     * <code>optional int64 OutTimestampReps = 25;</code>
+     */
+    public boolean hasOutTimestampReps() {
+      return ((bitField0_ & 0x01000000) == 0x01000000);
+    }
+    /**
+     * <code>optional int64 OutTimestampReps = 25;</code>
+     */
+    public long getOutTimestampReps() {
+      return outTimestampReps_;
+    }
+
+    // optional int64 OutAddrMasks = 26;
+    public static final int OUTADDRMASKS_FIELD_NUMBER = 26;
+    private long outAddrMasks_;
+    /**
+     * <code>optional int64 OutAddrMasks = 26;</code>
+     */
+    public boolean hasOutAddrMasks() {
+      return ((bitField0_ & 0x02000000) == 0x02000000);
+    }
+    /**
+     * <code>optional int64 OutAddrMasks = 26;</code>
+     */
+    public long getOutAddrMasks() {
+      return outAddrMasks_;
+    }
+
+    // optional int64 OutAddrMaskReps = 27;
+    public static final int OUTADDRMASKREPS_FIELD_NUMBER = 27;
+    private long outAddrMaskReps_;
+    /**
+     * <code>optional int64 OutAddrMaskReps = 27;</code>
+     */
+    public boolean hasOutAddrMaskReps() {
+      return ((bitField0_ & 0x04000000) == 0x04000000);
+    }
+    /**
+     * <code>optional int64 OutAddrMaskReps = 27;</code>
+     */
+    public long getOutAddrMaskReps() {
+      return outAddrMaskReps_;
+    }
+
+    private void initFields() {
+      inMsgs_ = 0L;
+      inErrors_ = 0L;
+      inCsumErrors_ = 0L;
+      inDestUnreachs_ = 0L;
+      inTimeExcds_ = 0L;
+      inParmProbs_ = 0L;
+      inSrcQuenchs_ = 0L;
+      inRedirects_ = 0L;
+      inEchos_ = 0L;
+      inEchoReps_ = 0L;
+      inTimestamps_ = 0L;
+      inTimestampReps_ = 0L;
+      inAddrMasks_ = 0L;
+      inAddrMaskReps_ = 0L;
+      outMsgs_ = 0L;
+      outErrors_ = 0L;
+      outDestUnreachs_ = 0L;
+      outTimeExcds_ = 0L;
+      outParmProbs_ = 0L;
+      outSrcQuenchs_ = 0L;
+      outRedirects_ = 0L;
+      outEchos_ = 0L;
+      outEchoReps_ = 0L;
+      outTimestamps_ = 0L;
+      outTimestampReps_ = 0L;
+      outAddrMasks_ = 0L;
+      outAddrMaskReps_ = 0L;
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeInt64(1, inMsgs_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeInt64(2, inErrors_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeInt64(3, inCsumErrors_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeInt64(4, inDestUnreachs_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeInt64(5, inTimeExcds_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeInt64(6, inParmProbs_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeInt64(7, inSrcQuenchs_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        output.writeInt64(8, inRedirects_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        output.writeInt64(9, inEchos_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        output.writeInt64(10, inEchoReps_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        output.writeInt64(11, inTimestamps_);
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        output.writeInt64(12, inTimestampReps_);
+      }
+      if (((bitField0_ & 0x00001000) == 0x00001000)) {
+        output.writeInt64(13, inAddrMasks_);
+      }
+      if (((bitField0_ & 0x00002000) == 0x00002000)) {
+        output.writeInt64(14, inAddrMaskReps_);
+      }
+      if (((bitField0_ & 0x00004000) == 0x00004000)) {
+        output.writeInt64(15, outMsgs_);
+      }
+      if (((bitField0_ & 0x00008000) == 0x00008000)) {
+        output.writeInt64(16, outErrors_);
+      }
+      if (((bitField0_ & 0x00010000) == 0x00010000)) {
+        output.writeInt64(17, outDestUnreachs_);
+      }
+      if (((bitField0_ & 0x00020000) == 0x00020000)) {
+        output.writeInt64(18, outTimeExcds_);
+      }
+      if (((bitField0_ & 0x00040000) == 0x00040000)) {
+        output.writeInt64(19, outParmProbs_);
+      }
+      if (((bitField0_ & 0x00080000) == 0x00080000)) {
+        output.writeInt64(20, outSrcQuenchs_);
+      }
+      if (((bitField0_ & 0x00100000) == 0x00100000)) {
+        output.writeInt64(21, outRedirects_);
+      }
+      if (((bitField0_ & 0x00200000) == 0x00200000)) {
+        output.writeInt64(22, outEchos_);
+      }
+      if (((bitField0_ & 0x00400000) == 0x00400000)) {
+        output.writeInt64(23, outEchoReps_);
+      }
+      if (((bitField0_ & 0x00800000) == 0x00800000)) {
+        output.writeInt64(24, outTimestamps_);
+      }
+      if (((bitField0_ & 0x01000000) == 0x01000000)) {
+        output.writeInt64(25, outTimestampReps_);
+      }
+      if (((bitField0_ & 0x02000000) == 0x02000000)) {
+        output.writeInt64(26, outAddrMasks_);
+      }
+      if (((bitField0_ & 0x04000000) == 0x04000000)) {
+        output.writeInt64(27, outAddrMaskReps_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(1, inMsgs_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(2, inErrors_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(3, inCsumErrors_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(4, inDestUnreachs_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(5, inTimeExcds_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(6, inParmProbs_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(7, inSrcQuenchs_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(8, inRedirects_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(9, inEchos_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(10, inEchoReps_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(11, inTimestamps_);
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(12, inTimestampReps_);
+      }
+      if (((bitField0_ & 0x00001000) == 0x00001000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(13, inAddrMasks_);
+      }
+      if (((bitField0_ & 0x00002000) == 0x00002000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(14, inAddrMaskReps_);
+      }
+      if (((bitField0_ & 0x00004000) == 0x00004000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(15, outMsgs_);
+      }
+      if (((bitField0_ & 0x00008000) == 0x00008000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(16, outErrors_);
+      }
+      if (((bitField0_ & 0x00010000) == 0x00010000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(17, outDestUnreachs_);
+      }
+      if (((bitField0_ & 0x00020000) == 0x00020000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(18, outTimeExcds_);
+      }
+      if (((bitField0_ & 0x00040000) == 0x00040000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(19, outParmProbs_);
+      }
+      if (((bitField0_ & 0x00080000) == 0x00080000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(20, outSrcQuenchs_);
+      }
+      if (((bitField0_ & 0x00100000) == 0x00100000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(21, outRedirects_);
+      }
+      if (((bitField0_ & 0x00200000) == 0x00200000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(22, outEchos_);
+      }
+      if (((bitField0_ & 0x00400000) == 0x00400000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(23, outEchoReps_);
+      }
+      if (((bitField0_ & 0x00800000) == 0x00800000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(24, outTimestamps_);
+      }
+      if (((bitField0_ & 0x01000000) == 0x01000000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(25, outTimestampReps_);
+      }
+      if (((bitField0_ & 0x02000000) == 0x02000000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(26, outAddrMasks_);
+      }
+      if (((bitField0_ & 0x04000000) == 0x04000000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(27, outAddrMaskReps_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.IcmpStatistics parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.IcmpStatistics parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.IcmpStatistics parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.IcmpStatistics parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.IcmpStatistics parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.IcmpStatistics parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.IcmpStatistics parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.IcmpStatistics parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.IcmpStatistics parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.IcmpStatistics parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.IcmpStatistics prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.IcmpStatistics}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.IcmpStatisticsOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_IcmpStatistics_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_IcmpStatistics_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.IcmpStatistics.class, org.apache.mesos.Protos.IcmpStatistics.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.IcmpStatistics.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        inMsgs_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        inErrors_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        inCsumErrors_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        inDestUnreachs_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        inTimeExcds_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000010);
+        inParmProbs_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000020);
+        inSrcQuenchs_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000040);
+        inRedirects_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000080);
+        inEchos_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000100);
+        inEchoReps_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000200);
+        inTimestamps_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000400);
+        inTimestampReps_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000800);
+        inAddrMasks_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00001000);
+        inAddrMaskReps_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00002000);
+        outMsgs_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00004000);
+        outErrors_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00008000);
+        outDestUnreachs_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00010000);
+        outTimeExcds_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00020000);
+        outParmProbs_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00040000);
+        outSrcQuenchs_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00080000);
+        outRedirects_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00100000);
+        outEchos_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00200000);
+        outEchoReps_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00400000);
+        outTimestamps_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00800000);
+        outTimestampReps_ = 0L;
+        bitField0_ = (bitField0_ & ~0x01000000);
+        outAddrMasks_ = 0L;
+        bitField0_ = (bitField0_ & ~0x02000000);
+        outAddrMaskReps_ = 0L;
+        bitField0_ = (bitField0_ & ~0x04000000);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_IcmpStatistics_descriptor;
+      }
+
+      public org.apache.mesos.Protos.IcmpStatistics getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.IcmpStatistics.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.IcmpStatistics build() {
+        org.apache.mesos.Protos.IcmpStatistics result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.IcmpStatistics buildPartial() {
+        org.apache.mesos.Protos.IcmpStatistics result = new org.apache.mesos.Protos.IcmpStatistics(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.inMsgs_ = inMsgs_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.inErrors_ = inErrors_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.inCsumErrors_ = inCsumErrors_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.inDestUnreachs_ = inDestUnreachs_;
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.inTimeExcds_ = inTimeExcds_;
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        result.inParmProbs_ = inParmProbs_;
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        result.inSrcQuenchs_ = inSrcQuenchs_;
+        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+          to_bitField0_ |= 0x00000080;
+        }
+        result.inRedirects_ = inRedirects_;
+        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
+          to_bitField0_ |= 0x00000100;
+        }
+        result.inEchos_ = inEchos_;
+        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
+          to_bitField0_ |= 0x00000200;
+        }
+        result.inEchoReps_ = inEchoReps_;
+        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
+          to_bitField0_ |= 0x00000400;
+        }
+        result.inTimestamps_ = inTimestamps_;
+        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
+          to_bitField0_ |= 0x00000800;
+        }
+        result.inTimestampReps_ = inTimestampReps_;
+        if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
+          to_bitField0_ |= 0x00001000;
+        }
+        result.inAddrMasks_ = inAddrMasks_;
+        if (((from_bitField0_ & 0x00002000) == 0x00002000)) {
+          to_bitField0_ |= 0x00002000;
+        }
+        result.inAddrMaskReps_ = inAddrMaskReps_;
+        if (((from_bitField0_ & 0x00004000) == 0x00004000)) {
+          to_bitField0_ |= 0x00004000;
+        }
+        result.outMsgs_ = outMsgs_;
+        if (((from_bitField0_ & 0x00008000) == 0x00008000)) {
+          to_bitField0_ |= 0x00008000;
+        }
+        result.outErrors_ = outErrors_;
+        if (((from_bitField0_ & 0x00010000) == 0x00010000)) {
+          to_bitField0_ |= 0x00010000;
+        }
+        result.outDestUnreachs_ = outDestUnreachs_;
+        if (((from_bitField0_ & 0x00020000) == 0x00020000)) {
+          to_bitField0_ |= 0x00020000;
+        }
+        result.outTimeExcds_ = outTimeExcds_;
+        if (((from_bitField0_ & 0x00040000) == 0x00040000)) {
+          to_bitField0_ |= 0x00040000;
+        }
+        result.outParmProbs_ = outParmProbs_;
+        if (((from_bitField0_ & 0x00080000) == 0x00080000)) {
+          to_bitField0_ |= 0x00080000;
+        }
+        result.outSrcQuenchs_ = outSrcQuenchs_;
+        if (((from_bitField0_ & 0x00100000) == 0x00100000)) {
+          to_bitField0_ |= 0x00100000;
+        }
+        result.outRedirects_ = outRedirects_;
+        if (((from_bitField0_ & 0x00200000) == 0x00200000)) {
+          to_bitField0_ |= 0x00200000;
+        }
+        result.outEchos_ = outEchos_;
+        if (((from_bitField0_ & 0x00400000) == 0x00400000)) {
+          to_bitField0_ |= 0x00400000;
+        }
+        result.outEchoReps_ = outEchoReps_;
+        if (((from_bitField0_ & 0x00800000) == 0x00800000)) {
+          to_bitField0_ |= 0x00800000;
+        }
+        result.outTimestamps_ = outTimestamps_;
+        if (((from_bitField0_ & 0x01000000) == 0x01000000)) {
+          to_bitField0_ |= 0x01000000;
+        }
+        result.outTimestampReps_ = outTimestampReps_;
+        if (((from_bitField0_ & 0x02000000) == 0x02000000)) {
+          to_bitField0_ |= 0x02000000;
+        }
+        result.outAddrMasks_ = outAddrMasks_;
+        if (((from_bitField0_ & 0x04000000) == 0x04000000)) {
+          to_bitField0_ |= 0x04000000;
+        }
+        result.outAddrMaskReps_ = outAddrMaskReps_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.IcmpStatistics) {
+          return mergeFrom((org.apache.mesos.Protos.IcmpStatistics)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.IcmpStatistics other) {
+        if (other == org.apache.mesos.Protos.IcmpStatistics.getDefaultInstance()) return this;
+        if (other.hasInMsgs()) {
+          setInMsgs(other.getInMsgs());
+        }
+        if (other.hasInErrors()) {
+          setInErrors(other.getInErrors());
+        }
+        if (other.hasInCsumErrors()) {
+          setInCsumErrors(other.getInCsumErrors());
+        }
+        if (other.hasInDestUnreachs()) {
+          setInDestUnreachs(other.getInDestUnreachs());
+        }
+        if (other.hasInTimeExcds()) {
+          setInTimeExcds(other.getInTimeExcds());
+        }
+        if (other.hasInParmProbs()) {
+          setInParmProbs(other.getInParmProbs());
+        }
+        if (other.hasInSrcQuenchs()) {
+          setInSrcQuenchs(other.getInSrcQuenchs());
+        }
+        if (other.hasInRedirects()) {
+          setInRedirects(other.getInRedirects());
+        }
+        if (other.hasInEchos()) {
+          setInEchos(other.getInEchos());
+        }
+        if (other.hasInEchoReps()) {
+          setInEchoReps(other.getInEchoReps());
+        }
+        if (other.hasInTimestamps()) {
+          setInTimestamps(other.getInTimestamps());
+        }
+        if (other.hasInTimestampReps()) {
+          setInTimestampReps(other.getInTimestampReps());
+        }
+        if (other.hasInAddrMasks()) {
+          setInAddrMasks(other.getInAddrMasks());
+        }
+        if (other.hasInAddrMaskReps()) {
+          setInAddrMaskReps(other.getInAddrMaskReps());
+        }
+        if (other.hasOutMsgs()) {
+          setOutMsgs(other.getOutMsgs());
+        }
+        if (other.hasOutErrors()) {
+          setOutErrors(other.getOutErrors());
+        }
+        if (other.hasOutDestUnreachs()) {
+          setOutDestUnreachs(other.getOutDestUnreachs());
+        }
+        if (other.hasOutTimeExcds()) {
+          setOutTimeExcds(other.getOutTimeExcds());
+        }
+        if (other.hasOutParmProbs()) {
+          setOutParmProbs(other.getOutParmProbs());
+        }
+        if (other.hasOutSrcQuenchs()) {
+          setOutSrcQuenchs(other.getOutSrcQuenchs());
+        }
+        if (other.hasOutRedirects()) {
+          setOutRedirects(other.getOutRedirects());
+        }
+        if (other.hasOutEchos()) {
+          setOutEchos(other.getOutEchos());
+        }
+        if (other.hasOutEchoReps()) {
+          setOutEchoReps(other.getOutEchoReps());
+        }
+        if (other.hasOutTimestamps()) {
+          setOutTimestamps(other.getOutTimestamps());
+        }
+        if (other.hasOutTimestampReps()) {
+          setOutTimestampReps(other.getOutTimestampReps());
+        }
+        if (other.hasOutAddrMasks()) {
+          setOutAddrMasks(other.getOutAddrMasks());
+        }
+        if (other.hasOutAddrMaskReps()) {
+          setOutAddrMaskReps(other.getOutAddrMaskReps());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.IcmpStatistics parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.IcmpStatistics) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional int64 InMsgs = 1;
+      private long inMsgs_ ;
+      /**
+       * <code>optional int64 InMsgs = 1;</code>
+       */
+      public boolean hasInMsgs() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional int64 InMsgs = 1;</code>
+       */
+      public long getInMsgs() {
+        return inMsgs_;
+      }
+      /**
+       * <code>optional int64 InMsgs = 1;</code>
+       */
+      public Builder setInMsgs(long value) {
+        bitField0_ |= 0x00000001;
+        inMsgs_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InMsgs = 1;</code>
+       */
+      public Builder clearInMsgs() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        inMsgs_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InErrors = 2;
+      private long inErrors_ ;
+      /**
+       * <code>optional int64 InErrors = 2;</code>
+       */
+      public boolean hasInErrors() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional int64 InErrors = 2;</code>
+       */
+      public long getInErrors() {
+        return inErrors_;
+      }
+      /**
+       * <code>optional int64 InErrors = 2;</code>
+       */
+      public Builder setInErrors(long value) {
+        bitField0_ |= 0x00000002;
+        inErrors_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InErrors = 2;</code>
+       */
+      public Builder clearInErrors() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        inErrors_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InCsumErrors = 3;
+      private long inCsumErrors_ ;
+      /**
+       * <code>optional int64 InCsumErrors = 3;</code>
+       */
+      public boolean hasInCsumErrors() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional int64 InCsumErrors = 3;</code>
+       */
+      public long getInCsumErrors() {
+        return inCsumErrors_;
+      }
+      /**
+       * <code>optional int64 InCsumErrors = 3;</code>
+       */
+      public Builder setInCsumErrors(long value) {
+        bitField0_ |= 0x00000004;
+        inCsumErrors_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InCsumErrors = 3;</code>
+       */
+      public Builder clearInCsumErrors() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        inCsumErrors_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InDestUnreachs = 4;
+      private long inDestUnreachs_ ;
+      /**
+       * <code>optional int64 InDestUnreachs = 4;</code>
+       */
+      public boolean hasInDestUnreachs() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional int64 InDestUnreachs = 4;</code>
+       */
+      public long getInDestUnreachs() {
+        return inDestUnreachs_;
+      }
+      /**
+       * <code>optional int64 InDestUnreachs = 4;</code>
+       */
+      public Builder setInDestUnreachs(long value) {
+        bitField0_ |= 0x00000008;
+        inDestUnreachs_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InDestUnreachs = 4;</code>
+       */
+      public Builder clearInDestUnreachs() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        inDestUnreachs_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InTimeExcds = 5;
+      private long inTimeExcds_ ;
+      /**
+       * <code>optional int64 InTimeExcds = 5;</code>
+       */
+      public boolean hasInTimeExcds() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional int64 InTimeExcds = 5;</code>
+       */
+      public long getInTimeExcds() {
+        return inTimeExcds_;
+      }
+      /**
+       * <code>optional int64 InTimeExcds = 5;</code>
+       */
+      public Builder setInTimeExcds(long value) {
+        bitField0_ |= 0x00000010;
+        inTimeExcds_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InTimeExcds = 5;</code>
+       */
+      public Builder clearInTimeExcds() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        inTimeExcds_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InParmProbs = 6;
+      private long inParmProbs_ ;
+      /**
+       * <code>optional int64 InParmProbs = 6;</code>
+       */
+      public boolean hasInParmProbs() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional int64 InParmProbs = 6;</code>
+       */
+      public long getInParmProbs() {
+        return inParmProbs_;
+      }
+      /**
+       * <code>optional int64 InParmProbs = 6;</code>
+       */
+      public Builder setInParmProbs(long value) {
+        bitField0_ |= 0x00000020;
+        inParmProbs_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InParmProbs = 6;</code>
+       */
+      public Builder clearInParmProbs() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        inParmProbs_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InSrcQuenchs = 7;
+      private long inSrcQuenchs_ ;
+      /**
+       * <code>optional int64 InSrcQuenchs = 7;</code>
+       */
+      public boolean hasInSrcQuenchs() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional int64 InSrcQuenchs = 7;</code>
+       */
+      public long getInSrcQuenchs() {
+        return inSrcQuenchs_;
+      }
+      /**
+       * <code>optional int64 InSrcQuenchs = 7;</code>
+       */
+      public Builder setInSrcQuenchs(long value) {
+        bitField0_ |= 0x00000040;
+        inSrcQuenchs_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InSrcQuenchs = 7;</code>
+       */
+      public Builder clearInSrcQuenchs() {
+        bitField0_ = (bitField0_ & ~0x00000040);
+        inSrcQuenchs_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InRedirects = 8;
+      private long inRedirects_ ;
+      /**
+       * <code>optional int64 InRedirects = 8;</code>
+       */
+      public boolean hasInRedirects() {
+        return ((bitField0_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional int64 InRedirects = 8;</code>
+       */
+      public long getInRedirects() {
+        return inRedirects_;
+      }
+      /**
+       * <code>optional int64 InRedirects = 8;</code>
+       */
+      public Builder setInRedirects(long value) {
+        bitField0_ |= 0x00000080;
+        inRedirects_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InRedirects = 8;</code>
+       */
+      public Builder clearInRedirects() {
+        bitField0_ = (bitField0_ & ~0x00000080);
+        inRedirects_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InEchos = 9;
+      private long inEchos_ ;
+      /**
+       * <code>optional int64 InEchos = 9;</code>
+       */
+      public boolean hasInEchos() {
+        return ((bitField0_ & 0x00000100) == 0x00000100);
+      }
+      /**
+       * <code>optional int64 InEchos = 9;</code>
+       */
+      public long getInEchos() {
+        return inEchos_;
+      }
+      /**
+       * <code>optional int64 InEchos = 9;</code>
+       */
+      public Builder setInEchos(long value) {
+        bitField0_ |= 0x00000100;
+        inEchos_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InEchos = 9;</code>
+       */
+      public Builder clearInEchos() {
+        bitField0_ = (bitField0_ & ~0x00000100);
+        inEchos_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InEchoReps = 10;
+      private long inEchoReps_ ;
+      /**
+       * <code>optional int64 InEchoReps = 10;</code>
+       */
+      public boolean hasInEchoReps() {
+        return ((bitField0_ & 0x00000200) == 0x00000200);
+      }
+      /**
+       * <code>optional int64 InEchoReps = 10;</code>
+       */
+      public long getInEchoReps() {
+        return inEchoReps_;
+      }
+      /**
+       * <code>optional int64 InEchoReps = 10;</code>
+       */
+      public Builder setInEchoReps(long value) {
+        bitField0_ |= 0x00000200;
+        inEchoReps_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InEchoReps = 10;</code>
+       */
+      public Builder clearInEchoReps() {
+        bitField0_ = (bitField0_ & ~0x00000200);
+        inEchoReps_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InTimestamps = 11;
+      private long inTimestamps_ ;
+      /**
+       * <code>optional int64 InTimestamps = 11;</code>
+       */
+      public boolean hasInTimestamps() {
+        return ((bitField0_ & 0x00000400) == 0x00000400);
+      }
+      /**
+       * <code>optional int64 InTimestamps = 11;</code>
+       */
+      public long getInTimestamps() {
+        return inTimestamps_;
+      }
+      /**
+       * <code>optional int64 InTimestamps = 11;</code>
+       */
+      public Builder setInTimestamps(long value) {
+        bitField0_ |= 0x00000400;
+        inTimestamps_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InTimestamps = 11;</code>
+       */
+      public Builder clearInTimestamps() {
+        bitField0_ = (bitField0_ & ~0x00000400);
+        inTimestamps_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InTimestampReps = 12;
+      private long inTimestampReps_ ;
+      /**
+       * <code>optional int64 InTimestampReps = 12;</code>
+       */
+      public boolean hasInTimestampReps() {
+        return ((bitField0_ & 0x00000800) == 0x00000800);
+      }
+      /**
+       * <code>optional int64 InTimestampReps = 12;</code>
+       */
+      public long getInTimestampReps() {
+        return inTimestampReps_;
+      }
+      /**
+       * <code>optional int64 InTimestampReps = 12;</code>
+       */
+      public Builder setInTimestampReps(long value) {
+        bitField0_ |= 0x00000800;
+        inTimestampReps_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InTimestampReps = 12;</code>
+       */
+      public Builder clearInTimestampReps() {
+        bitField0_ = (bitField0_ & ~0x00000800);
+        inTimestampReps_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InAddrMasks = 13;
+      private long inAddrMasks_ ;
+      /**
+       * <code>optional int64 InAddrMasks = 13;</code>
+       */
+      public boolean hasInAddrMasks() {
+        return ((bitField0_ & 0x00001000) == 0x00001000);
+      }
+      /**
+       * <code>optional int64 InAddrMasks = 13;</code>
+       */
+      public long getInAddrMasks() {
+        return inAddrMasks_;
+      }
+      /**
+       * <code>optional int64 InAddrMasks = 13;</code>
+       */
+      public Builder setInAddrMasks(long value) {
+        bitField0_ |= 0x00001000;
+        inAddrMasks_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InAddrMasks = 13;</code>
+       */
+      public Builder clearInAddrMasks() {
+        bitField0_ = (bitField0_ & ~0x00001000);
+        inAddrMasks_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InAddrMaskReps = 14;
+      private long inAddrMaskReps_ ;
+      /**
+       * <code>optional int64 InAddrMaskReps = 14;</code>
+       */
+      public boolean hasInAddrMaskReps() {
+        return ((bitField0_ & 0x00002000) == 0x00002000);
+      }
+      /**
+       * <code>optional int64 InAddrMaskReps = 14;</code>
+       */
+      public long getInAddrMaskReps() {
+        return inAddrMaskReps_;
+      }
+      /**
+       * <code>optional int64 InAddrMaskReps = 14;</code>
+       */
+      public Builder setInAddrMaskReps(long value) {
+        bitField0_ |= 0x00002000;
+        inAddrMaskReps_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InAddrMaskReps = 14;</code>
+       */
+      public Builder clearInAddrMaskReps() {
+        bitField0_ = (bitField0_ & ~0x00002000);
+        inAddrMaskReps_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 OutMsgs = 15;
+      private long outMsgs_ ;
+      /**
+       * <code>optional int64 OutMsgs = 15;</code>
+       */
+      public boolean hasOutMsgs() {
+        return ((bitField0_ & 0x00004000) == 0x00004000);
+      }
+      /**
+       * <code>optional int64 OutMsgs = 15;</code>
+       */
+      public long getOutMsgs() {
+        return outMsgs_;
+      }
+      /**
+       * <code>optional int64 OutMsgs = 15;</code>
+       */
+      public Builder setOutMsgs(long value) {
+        bitField0_ |= 0x00004000;
+        outMsgs_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 OutMsgs = 15;</code>
+       */
+      public Builder clearOutMsgs() {
+        bitField0_ = (bitField0_ & ~0x00004000);
+        outMsgs_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 OutErrors = 16;
+      private long outErrors_ ;
+      /**
+       * <code>optional int64 OutErrors = 16;</code>
+       */
+      public boolean hasOutErrors() {
+        return ((bitField0_ & 0x00008000) == 0x00008000);
+      }
+      /**
+       * <code>optional int64 OutErrors = 16;</code>
+       */
+      public long getOutErrors() {
+        return outErrors_;
+      }
+      /**
+       * <code>optional int64 OutErrors = 16;</code>
+       */
+      public Builder setOutErrors(long value) {
+        bitField0_ |= 0x00008000;
+        outErrors_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 OutErrors = 16;</code>
+       */
+      public Builder clearOutErrors() {
+        bitField0_ = (bitField0_ & ~0x00008000);
+        outErrors_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 OutDestUnreachs = 17;
+      private long outDestUnreachs_ ;
+      /**
+       * <code>optional int64 OutDestUnreachs = 17;</code>
+       */
+      public boolean hasOutDestUnreachs() {
+        return ((bitField0_ & 0x00010000) == 0x00010000);
+      }
+      /**
+       * <code>optional int64 OutDestUnreachs = 17;</code>
+       */
+      public long getOutDestUnreachs() {
+        return outDestUnreachs_;
+      }
+      /**
+       * <code>optional int64 OutDestUnreachs = 17;</code>
+       */
+      public Builder setOutDestUnreachs(long value) {
+        bitField0_ |= 0x00010000;
+        outDestUnreachs_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 OutDestUnreachs = 17;</code>
+       */
+      public Builder clearOutDestUnreachs() {
+        bitField0_ = (bitField0_ & ~0x00010000);
+        outDestUnreachs_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 OutTimeExcds = 18;
+      private long outTimeExcds_ ;
+      /**
+       * <code>optional int64 OutTimeExcds = 18;</code>
+       */
+      public boolean hasOutTimeExcds() {
+        return ((bitField0_ & 0x00020000) == 0x00020000);
+      }
+      /**
+       * <code>optional int64 OutTimeExcds = 18;</code>
+       */
+      public long getOutTimeExcds() {
+        return outTimeExcds_;
+      }
+      /**
+       * <code>optional int64 OutTimeExcds = 18;</code>
+       */
+      public Builder setOutTimeExcds(long value) {
+        bitField0_ |= 0x00020000;
+        outTimeExcds_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 OutTimeExcds = 18;</code>
+       */
+      public Builder clearOutTimeExcds() {
+        bitField0_ = (bitField0_ & ~0x00020000);
+        outTimeExcds_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 OutParmProbs = 19;
+      private long outParmProbs_ ;
+      /**
+       * <code>optional int64 OutParmProbs = 19;</code>
+       */
+      public boolean hasOutParmProbs() {
+        return ((bitField0_ & 0x00040000) == 0x00040000);
+      }
+      /**
+       * <code>optional int64 OutParmProbs = 19;</code>
+       */
+      public long getOutParmProbs() {
+        return outParmProbs_;
+      }
+      /**
+       * <code>optional int64 OutParmProbs = 19;</code>
+       */
+      public Builder setOutParmProbs(long value) {
+        bitField0_ |= 0x00040000;
+        outParmProbs_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 OutParmProbs = 19;</code>
+       */
+      public Builder clearOutParmProbs() {
+        bitField0_ = (bitField0_ & ~0x00040000);
+        outParmProbs_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 OutSrcQuenchs = 20;
+      private long outSrcQuenchs_ ;
+      /**
+       * <code>optional int64 OutSrcQuenchs = 20;</code>
+       */
+      public boolean hasOutSrcQuenchs() {
+        return ((bitField0_ & 0x00080000) == 0x00080000);
+      }
+      /**
+       * <code>optional int64 OutSrcQuenchs = 20;</code>
+       */
+      public long getOutSrcQuenchs() {
+        return outSrcQuenchs_;
+      }
+      /**
+       * <code>optional int64 OutSrcQuenchs = 20;</code>
+       */
+      public Builder setOutSrcQuenchs(long value) {
+        bitField0_ |= 0x00080000;
+        outSrcQuenchs_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 OutSrcQuenchs = 20;</code>
+       */
+      public Builder clearOutSrcQuenchs() {
+        bitField0_ = (bitField0_ & ~0x00080000);
+        outSrcQuenchs_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 OutRedirects = 21;
+      private long outRedirects_ ;
+      /**
+       * <code>optional int64 OutRedirects = 21;</code>
+       */
+      public boolean hasOutRedirects() {
+        return ((bitField0_ & 0x00100000) == 0x00100000);
+      }
+      /**
+       * <code>optional int64 OutRedirects = 21;</code>
+       */
+      public long getOutRedirects() {
+        return outRedirects_;
+      }
+      /**
+       * <code>optional int64 OutRedirects = 21;</code>
+       */
+      public Builder setOutRedirects(long value) {
+        bitField0_ |= 0x00100000;
+        outRedirects_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 OutRedirects = 21;</code>
+       */
+      public Builder clearOutRedirects() {
+        bitField0_ = (bitField0_ & ~0x00100000);
+        outRedirects_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 OutEchos = 22;
+      private long outEchos_ ;
+      /**
+       * <code>optional int64 OutEchos = 22;</code>
+       */
+      public boolean hasOutEchos() {
+        return ((bitField0_ & 0x00200000) == 0x00200000);
+      }
+      /**
+       * <code>optional int64 OutEchos = 22;</code>
+       */
+      public long getOutEchos() {
+        return outEchos_;
+      }
+      /**
+       * <code>optional int64 OutEchos = 22;</code>
+       */
+      public Builder setOutEchos(long value) {
+        bitField0_ |= 0x00200000;
+        outEchos_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 OutEchos = 22;</code>
+       */
+      public Builder clearOutEchos() {
+        bitField0_ = (bitField0_ & ~0x00200000);
+        outEchos_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 OutEchoReps = 23;
+      private long outEchoReps_ ;
+      /**
+       * <code>optional int64 OutEchoReps = 23;</code>
+       */
+      public boolean hasOutEchoReps() {
+        return ((bitField0_ & 0x00400000) == 0x00400000);
+      }
+      /**
+       * <code>optional int64 OutEchoReps = 23;</code>
+       */
+      public long getOutEchoReps() {
+        return outEchoReps_;
+      }
+      /**
+       * <code>optional int64 OutEchoReps = 23;</code>
+       */
+      public Builder setOutEchoReps(long value) {
+        bitField0_ |= 0x00400000;
+        outEchoReps_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 OutEchoReps = 23;</code>
+       */
+      public Builder clearOutEchoReps() {
+        bitField0_ = (bitField0_ & ~0x00400000);
+        outEchoReps_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 OutTimestamps = 24;
+      private long outTimestamps_ ;
+      /**
+       * <code>optional int64 OutTimestamps = 24;</code>
+       */
+      public boolean hasOutTimestamps() {
+        return ((bitField0_ & 0x00800000) == 0x00800000);
+      }
+      /**
+       * <code>optional int64 OutTimestamps = 24;</code>
+       */
+      public long getOutTimestamps() {
+        return outTimestamps_;
+      }
+      /**
+       * <code>optional int64 OutTimestamps = 24;</code>
+       */
+      public Builder setOutTimestamps(long value) {
+        bitField0_ |= 0x00800000;
+        outTimestamps_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 OutTimestamps = 24;</code>
+       */
+      public Builder clearOutTimestamps() {
+        bitField0_ = (bitField0_ & ~0x00800000);
+        outTimestamps_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 OutTimestampReps = 25;
+      private long outTimestampReps_ ;
+      /**
+       * <code>optional int64 OutTimestampReps = 25;</code>
+       */
+      public boolean hasOutTimestampReps() {
+        return ((bitField0_ & 0x01000000) == 0x01000000);
+      }
+      /**
+       * <code>optional int64 OutTimestampReps = 25;</code>
+       */
+      public long getOutTimestampReps() {
+        return outTimestampReps_;
+      }
+      /**
+       * <code>optional int64 OutTimestampReps = 25;</code>
+       */
+      public Builder setOutTimestampReps(long value) {
+        bitField0_ |= 0x01000000;
+        outTimestampReps_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 OutTimestampReps = 25;</code>
+       */
+      public Builder clearOutTimestampReps() {
+        bitField0_ = (bitField0_ & ~0x01000000);
+        outTimestampReps_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 OutAddrMasks = 26;
+      private long outAddrMasks_ ;
+      /**
+       * <code>optional int64 OutAddrMasks = 26;</code>
+       */
+      public boolean hasOutAddrMasks() {
+        return ((bitField0_ & 0x02000000) == 0x02000000);
+      }
+      /**
+       * <code>optional int64 OutAddrMasks = 26;</code>
+       */
+      public long getOutAddrMasks() {
+        return outAddrMasks_;
+      }
+      /**
+       * <code>optional int64 OutAddrMasks = 26;</code>
+       */
+      public Builder setOutAddrMasks(long value) {
+        bitField0_ |= 0x02000000;
+        outAddrMasks_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 OutAddrMasks = 26;</code>
+       */
+      public Builder clearOutAddrMasks() {
+        bitField0_ = (bitField0_ & ~0x02000000);
+        outAddrMasks_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 OutAddrMaskReps = 27;
+      private long outAddrMaskReps_ ;
+      /**
+       * <code>optional int64 OutAddrMaskReps = 27;</code>
+       */
+      public boolean hasOutAddrMaskReps() {
+        return ((bitField0_ & 0x04000000) == 0x04000000);
+      }
+      /**
+       * <code>optional int64 OutAddrMaskReps = 27;</code>
+       */
+      public long getOutAddrMaskReps() {
+        return outAddrMaskReps_;
+      }
+      /**
+       * <code>optional int64 OutAddrMaskReps = 27;</code>
+       */
+      public Builder setOutAddrMaskReps(long value) {
+        bitField0_ |= 0x04000000;
+        outAddrMaskReps_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 OutAddrMaskReps = 27;</code>
+       */
+      public Builder clearOutAddrMaskReps() {
+        bitField0_ = (bitField0_ & ~0x04000000);
+        outAddrMaskReps_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.IcmpStatistics)
+    }
+
+    static {
+      defaultInstance = new IcmpStatistics(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.IcmpStatistics)
+  }
+
+  public interface TcpStatisticsOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional int64 RtoAlgorithm = 1;
+    /**
+     * <code>optional int64 RtoAlgorithm = 1;</code>
+     */
+    boolean hasRtoAlgorithm();
+    /**
+     * <code>optional int64 RtoAlgorithm = 1;</code>
+     */
+    long getRtoAlgorithm();
+
+    // optional int64 RtoMin = 2;
+    /**
+     * <code>optional int64 RtoMin = 2;</code>
+     */
+    boolean hasRtoMin();
+    /**
+     * <code>optional int64 RtoMin = 2;</code>
+     */
+    long getRtoMin();
+
+    // optional int64 RtoMax = 3;
+    /**
+     * <code>optional int64 RtoMax = 3;</code>
+     */
+    boolean hasRtoMax();
+    /**
+     * <code>optional int64 RtoMax = 3;</code>
+     */
+    long getRtoMax();
+
+    // optional int64 MaxConn = 4;
+    /**
+     * <code>optional int64 MaxConn = 4;</code>
+     */
+    boolean hasMaxConn();
+    /**
+     * <code>optional int64 MaxConn = 4;</code>
+     */
+    long getMaxConn();
+
+    // optional int64 ActiveOpens = 5;
+    /**
+     * <code>optional int64 ActiveOpens = 5;</code>
+     */
+    boolean hasActiveOpens();
+    /**
+     * <code>optional int64 ActiveOpens = 5;</code>
+     */
+    long getActiveOpens();
+
+    // optional int64 PassiveOpens = 6;
+    /**
+     * <code>optional int64 PassiveOpens = 6;</code>
+     */
+    boolean hasPassiveOpens();
+    /**
+     * <code>optional int64 PassiveOpens = 6;</code>
+     */
+    long getPassiveOpens();
+
+    // optional int64 AttemptFails = 7;
+    /**
+     * <code>optional int64 AttemptFails = 7;</code>
+     */
+    boolean hasAttemptFails();
+    /**
+     * <code>optional int64 AttemptFails = 7;</code>
+     */
+    long getAttemptFails();
+
+    // optional int64 EstabResets = 8;
+    /**
+     * <code>optional int64 EstabResets = 8;</code>
+     */
+    boolean hasEstabResets();
+    /**
+     * <code>optional int64 EstabResets = 8;</code>
+     */
+    long getEstabResets();
+
+    // optional int64 CurrEstab = 9;
+    /**
+     * <code>optional int64 CurrEstab = 9;</code>
+     */
+    boolean hasCurrEstab();
+    /**
+     * <code>optional int64 CurrEstab = 9;</code>
+     */
+    long getCurrEstab();
+
+    // optional int64 InSegs = 10;
+    /**
+     * <code>optional int64 InSegs = 10;</code>
+     */
+    boolean hasInSegs();
+    /**
+     * <code>optional int64 InSegs = 10;</code>
+     */
+    long getInSegs();
+
+    // optional int64 OutSegs = 11;
+    /**
+     * <code>optional int64 OutSegs = 11;</code>
+     */
+    boolean hasOutSegs();
+    /**
+     * <code>optional int64 OutSegs = 11;</code>
+     */
+    long getOutSegs();
+
+    // optional int64 RetransSegs = 12;
+    /**
+     * <code>optional int64 RetransSegs = 12;</code>
+     */
+    boolean hasRetransSegs();
+    /**
+     * <code>optional int64 RetransSegs = 12;</code>
+     */
+    long getRetransSegs();
+
+    // optional int64 InErrs = 13;
+    /**
+     * <code>optional int64 InErrs = 13;</code>
+     */
+    boolean hasInErrs();
+    /**
+     * <code>optional int64 InErrs = 13;</code>
+     */
+    long getInErrs();
+
+    // optional int64 OutRsts = 14;
+    /**
+     * <code>optional int64 OutRsts = 14;</code>
+     */
+    boolean hasOutRsts();
+    /**
+     * <code>optional int64 OutRsts = 14;</code>
+     */
+    long getOutRsts();
+
+    // optional int64 InCsumErrors = 15;
+    /**
+     * <code>optional int64 InCsumErrors = 15;</code>
+     */
+    boolean hasInCsumErrors();
+    /**
+     * <code>optional int64 InCsumErrors = 15;</code>
+     */
+    long getInCsumErrors();
+  }
+  /**
+   * Protobuf type {@code mesos.TcpStatistics}
+   */
+  public static final class TcpStatistics extends
+      com.google.protobuf.GeneratedMessage
+      implements TcpStatisticsOrBuilder {
+    // Use TcpStatistics.newBuilder() to construct.
+    private TcpStatistics(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private TcpStatistics(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final TcpStatistics defaultInstance;
+    public static TcpStatistics getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public TcpStatistics getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private TcpStatistics(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 8: {
+              bitField0_ |= 0x00000001;
+              rtoAlgorithm_ = input.readInt64();
+              break;
+            }
+            case 16: {
+              bitField0_ |= 0x00000002;
+              rtoMin_ = input.readInt64();
+              break;
+            }
+            case 24: {
+              bitField0_ |= 0x00000004;
+              rtoMax_ = input.readInt64();
+              break;
+            }
+            case 32: {
+              bitField0_ |= 0x00000008;
+              maxConn_ = input.readInt64();
+              break;
+            }
+            case 40: {
+              bitField0_ |= 0x00000010;
+              activeOpens_ = input.readInt64();
+              break;
+            }
+            case 48: {
+              bitField0_ |= 0x00000020;
+              passiveOpens_ = input.readInt64();
+              break;
+            }
+            case 56: {
+              bitField0_ |= 0x00000040;
+              attemptFails_ = input.readInt64();
+              break;
+            }
+            case 64: {
+              bitField0_ |= 0x00000080;
+              estabResets_ = input.readInt64();
+              break;
+            }
+            case 72: {
+              bitField0_ |= 0x00000100;
+              currEstab_ = input.readInt64();
+              break;
+            }
+            case 80: {
+              bitField0_ |= 0x00000200;
+              inSegs_ = input.readInt64();
+              break;
+            }
+            case 88: {
+              bitField0_ |= 0x00000400;
+              outSegs_ = input.readInt64();
+              break;
+            }
+            case 96: {
+              bitField0_ |= 0x00000800;
+              retransSegs_ = input.readInt64();
+              break;
+            }
+            case 104: {
+              bitField0_ |= 0x00001000;
+              inErrs_ = input.readInt64();
+              break;
+            }
+            case 112: {
+              bitField0_ |= 0x00002000;
+              outRsts_ = input.readInt64();
+              break;
+            }
+            case 120: {
+              bitField0_ |= 0x00004000;
+              inCsumErrors_ = input.readInt64();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_TcpStatistics_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_TcpStatistics_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.TcpStatistics.class, org.apache.mesos.Protos.TcpStatistics.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<TcpStatistics> PARSER =
+        new com.google.protobuf.AbstractParser<TcpStatistics>() {
+      public TcpStatistics parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new TcpStatistics(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<TcpStatistics> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // optional int64 RtoAlgorithm = 1;
+    public static final int RTOALGORITHM_FIELD_NUMBER = 1;
+    private long rtoAlgorithm_;
+    /**
+     * <code>optional int64 RtoAlgorithm = 1;</code>
+     */
+    public boolean hasRtoAlgorithm() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional int64 RtoAlgorithm = 1;</code>
+     */
+    public long getRtoAlgorithm() {
+      return rtoAlgorithm_;
+    }
+
+    // optional int64 RtoMin = 2;
+    public static final int RTOMIN_FIELD_NUMBER = 2;
+    private long rtoMin_;
+    /**
+     * <code>optional int64 RtoMin = 2;</code>
+     */
+    public boolean hasRtoMin() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional int64 RtoMin = 2;</code>
+     */
+    public long getRtoMin() {
+      return rtoMin_;
+    }
+
+    // optional int64 RtoMax = 3;
+    public static final int RTOMAX_FIELD_NUMBER = 3;
+    private long rtoMax_;
+    /**
+     * <code>optional int64 RtoMax = 3;</code>
+     */
+    public boolean hasRtoMax() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional int64 RtoMax = 3;</code>
+     */
+    public long getRtoMax() {
+      return rtoMax_;
+    }
+
+    // optional int64 MaxConn = 4;
+    public static final int MAXCONN_FIELD_NUMBER = 4;
+    private long maxConn_;
+    /**
+     * <code>optional int64 MaxConn = 4;</code>
+     */
+    public boolean hasMaxConn() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional int64 MaxConn = 4;</code>
+     */
+    public long getMaxConn() {
+      return maxConn_;
+    }
+
+    // optional int64 ActiveOpens = 5;
+    public static final int ACTIVEOPENS_FIELD_NUMBER = 5;
+    private long activeOpens_;
+    /**
+     * <code>optional int64 ActiveOpens = 5;</code>
+     */
+    public boolean hasActiveOpens() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional int64 ActiveOpens = 5;</code>
+     */
+    public long getActiveOpens() {
+      return activeOpens_;
+    }
+
+    // optional int64 PassiveOpens = 6;
+    public static final int PASSIVEOPENS_FIELD_NUMBER = 6;
+    private long passiveOpens_;
+    /**
+     * <code>optional int64 PassiveOpens = 6;</code>
+     */
+    public boolean hasPassiveOpens() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional int64 PassiveOpens = 6;</code>
+     */
+    public long getPassiveOpens() {
+      return passiveOpens_;
+    }
+
+    // optional int64 AttemptFails = 7;
+    public static final int ATTEMPTFAILS_FIELD_NUMBER = 7;
+    private long attemptFails_;
+    /**
+     * <code>optional int64 AttemptFails = 7;</code>
+     */
+    public boolean hasAttemptFails() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional int64 AttemptFails = 7;</code>
+     */
+    public long getAttemptFails() {
+      return attemptFails_;
+    }
+
+    // optional int64 EstabResets = 8;
+    public static final int ESTABRESETS_FIELD_NUMBER = 8;
+    private long estabResets_;
+    /**
+     * <code>optional int64 EstabResets = 8;</code>
+     */
+    public boolean hasEstabResets() {
+      return ((bitField0_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional int64 EstabResets = 8;</code>
+     */
+    public long getEstabResets() {
+      return estabResets_;
+    }
+
+    // optional int64 CurrEstab = 9;
+    public static final int CURRESTAB_FIELD_NUMBER = 9;
+    private long currEstab_;
+    /**
+     * <code>optional int64 CurrEstab = 9;</code>
+     */
+    public boolean hasCurrEstab() {
+      return ((bitField0_ & 0x00000100) == 0x00000100);
+    }
+    /**
+     * <code>optional int64 CurrEstab = 9;</code>
+     */
+    public long getCurrEstab() {
+      return currEstab_;
+    }
+
+    // optional int64 InSegs = 10;
+    public static final int INSEGS_FIELD_NUMBER = 10;
+    private long inSegs_;
+    /**
+     * <code>optional int64 InSegs = 10;</code>
+     */
+    public boolean hasInSegs() {
+      return ((bitField0_ & 0x00000200) == 0x00000200);
+    }
+    /**
+     * <code>optional int64 InSegs = 10;</code>
+     */
+    public long getInSegs() {
+      return inSegs_;
+    }
+
+    // optional int64 OutSegs = 11;
+    public static final int OUTSEGS_FIELD_NUMBER = 11;
+    private long outSegs_;
+    /**
+     * <code>optional int64 OutSegs = 11;</code>
+     */
+    public boolean hasOutSegs() {
+      return ((bitField0_ & 0x00000400) == 0x00000400);
+    }
+    /**
+     * <code>optional int64 OutSegs = 11;</code>
+     */
+    public long getOutSegs() {
+      return outSegs_;
+    }
+
+    // optional int64 RetransSegs = 12;
+    public static final int RETRANSSEGS_FIELD_NUMBER = 12;
+    private long retransSegs_;
+    /**
+     * <code>optional int64 RetransSegs = 12;</code>
+     */
+    public boolean hasRetransSegs() {
+      return ((bitField0_ & 0x00000800) == 0x00000800);
+    }
+    /**
+     * <code>optional int64 RetransSegs = 12;</code>
+     */
+    public long getRetransSegs() {
+      return retransSegs_;
+    }
+
+    // optional int64 InErrs = 13;
+    public static final int INERRS_FIELD_NUMBER = 13;
+    private long inErrs_;
+    /**
+     * <code>optional int64 InErrs = 13;</code>
+     */
+    public boolean hasInErrs() {
+      return ((bitField0_ & 0x00001000) == 0x00001000);
+    }
+    /**
+     * <code>optional int64 InErrs = 13;</code>
+     */
+    public long getInErrs() {
+      return inErrs_;
+    }
+
+    // optional int64 OutRsts = 14;
+    public static final int OUTRSTS_FIELD_NUMBER = 14;
+    private long outRsts_;
+    /**
+     * <code>optional int64 OutRsts = 14;</code>
+     */
+    public boolean hasOutRsts() {
+      return ((bitField0_ & 0x00002000) == 0x00002000);
+    }
+    /**
+     * <code>optional int64 OutRsts = 14;</code>
+     */
+    public long getOutRsts() {
+      return outRsts_;
+    }
+
+    // optional int64 InCsumErrors = 15;
+    public static final int INCSUMERRORS_FIELD_NUMBER = 15;
+    private long inCsumErrors_;
+    /**
+     * <code>optional int64 InCsumErrors = 15;</code>
+     */
+    public boolean hasInCsumErrors() {
+      return ((bitField0_ & 0x00004000) == 0x00004000);
+    }
+    /**
+     * <code>optional int64 InCsumErrors = 15;</code>
+     */
+    public long getInCsumErrors() {
+      return inCsumErrors_;
+    }
+
+    private void initFields() {
+      rtoAlgorithm_ = 0L;
+      rtoMin_ = 0L;
+      rtoMax_ = 0L;
+      maxConn_ = 0L;
+      activeOpens_ = 0L;
+      passiveOpens_ = 0L;
+      attemptFails_ = 0L;
+      estabResets_ = 0L;
+      currEstab_ = 0L;
+      inSegs_ = 0L;
+      outSegs_ = 0L;
+      retransSegs_ = 0L;
+      inErrs_ = 0L;
+      outRsts_ = 0L;
+      inCsumErrors_ = 0L;
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeInt64(1, rtoAlgorithm_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeInt64(2, rtoMin_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeInt64(3, rtoMax_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeInt64(4, maxConn_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeInt64(5, activeOpens_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeInt64(6, passiveOpens_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeInt64(7, attemptFails_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        output.writeInt64(8, estabResets_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        output.writeInt64(9, currEstab_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        output.writeInt64(10, inSegs_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        output.writeInt64(11, outSegs_);
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        output.writeInt64(12, retransSegs_);
+      }
+      if (((bitField0_ & 0x00001000) == 0x00001000)) {
+        output.writeInt64(13, inErrs_);
+      }
+      if (((bitField0_ & 0x00002000) == 0x00002000)) {
+        output.writeInt64(14, outRsts_);
+      }
+      if (((bitField0_ & 0x00004000) == 0x00004000)) {
+        output.writeInt64(15, inCsumErrors_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(1, rtoAlgorithm_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(2, rtoMin_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(3, rtoMax_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(4, maxConn_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(5, activeOpens_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(6, passiveOpens_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(7, attemptFails_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(8, estabResets_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(9, currEstab_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(10, inSegs_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(11, outSegs_);
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(12, retransSegs_);
+      }
+      if (((bitField0_ & 0x00001000) == 0x00001000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(13, inErrs_);
+      }
+      if (((bitField0_ & 0x00002000) == 0x00002000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(14, outRsts_);
+      }
+      if (((bitField0_ & 0x00004000) == 0x00004000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(15, inCsumErrors_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.TcpStatistics parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.TcpStatistics parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.TcpStatistics parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.TcpStatistics parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.TcpStatistics parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.TcpStatistics parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.TcpStatistics parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.TcpStatistics parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.TcpStatistics parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.TcpStatistics parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.TcpStatistics prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.TcpStatistics}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.TcpStatisticsOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_TcpStatistics_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_TcpStatistics_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.TcpStatistics.class, org.apache.mesos.Protos.TcpStatistics.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.TcpStatistics.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        rtoAlgorithm_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        rtoMin_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        rtoMax_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        maxConn_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        activeOpens_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000010);
+        passiveOpens_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000020);
+        attemptFails_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000040);
+        estabResets_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000080);
+        currEstab_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000100);
+        inSegs_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000200);
+        outSegs_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000400);
+        retransSegs_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000800);
+        inErrs_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00001000);
+        outRsts_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00002000);
+        inCsumErrors_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00004000);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_TcpStatistics_descriptor;
+      }
+
+      public org.apache.mesos.Protos.TcpStatistics getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.TcpStatistics.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.TcpStatistics build() {
+        org.apache.mesos.Protos.TcpStatistics result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.TcpStatistics buildPartial() {
+        org.apache.mesos.Protos.TcpStatistics result = new org.apache.mesos.Protos.TcpStatistics(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.rtoAlgorithm_ = rtoAlgorithm_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.rtoMin_ = rtoMin_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.rtoMax_ = rtoMax_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.maxConn_ = maxConn_;
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.activeOpens_ = activeOpens_;
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        result.passiveOpens_ = passiveOpens_;
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        result.attemptFails_ = attemptFails_;
+        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+          to_bitField0_ |= 0x00000080;
+        }
+        result.estabResets_ = estabResets_;
+        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
+          to_bitField0_ |= 0x00000100;
+        }
+        result.currEstab_ = currEstab_;
+        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
+          to_bitField0_ |= 0x00000200;
+        }
+        result.inSegs_ = inSegs_;
+        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
+          to_bitField0_ |= 0x00000400;
+        }
+        result.outSegs_ = outSegs_;
+        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
+          to_bitField0_ |= 0x00000800;
+        }
+        result.retransSegs_ = retransSegs_;
+        if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
+          to_bitField0_ |= 0x00001000;
+        }
+        result.inErrs_ = inErrs_;
+        if (((from_bitField0_ & 0x00002000) == 0x00002000)) {
+          to_bitField0_ |= 0x00002000;
+        }
+        result.outRsts_ = outRsts_;
+        if (((from_bitField0_ & 0x00004000) == 0x00004000)) {
+          to_bitField0_ |= 0x00004000;
+        }
+        result.inCsumErrors_ = inCsumErrors_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.TcpStatistics) {
+          return mergeFrom((org.apache.mesos.Protos.TcpStatistics)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.TcpStatistics other) {
+        if (other == org.apache.mesos.Protos.TcpStatistics.getDefaultInstance()) return this;
+        if (other.hasRtoAlgorithm()) {
+          setRtoAlgorithm(other.getRtoAlgorithm());
+        }
+        if (other.hasRtoMin()) {
+          setRtoMin(other.getRtoMin());
+        }
+        if (other.hasRtoMax()) {
+          setRtoMax(other.getRtoMax());
+        }
+        if (other.hasMaxConn()) {
+          setMaxConn(other.getMaxConn());
+        }
+        if (other.hasActiveOpens()) {
+          setActiveOpens(other.getActiveOpens());
+        }
+        if (other.hasPassiveOpens()) {
+          setPassiveOpens(other.getPassiveOpens());
+        }
+        if (other.hasAttemptFails()) {
+          setAttemptFails(other.getAttemptFails());
+        }
+        if (other.hasEstabResets()) {
+          setEstabResets(other.getEstabResets());
+        }
+        if (other.hasCurrEstab()) {
+          setCurrEstab(other.getCurrEstab());
+        }
+        if (other.hasInSegs()) {
+          setInSegs(other.getInSegs());
+        }
+        if (other.hasOutSegs()) {
+          setOutSegs(other.getOutSegs());
+        }
+        if (other.hasRetransSegs()) {
+          setRetransSegs(other.getRetransSegs());
+        }
+        if (other.hasInErrs()) {
+          setInErrs(other.getInErrs());
+        }
+        if (other.hasOutRsts()) {
+          setOutRsts(other.getOutRsts());
+        }
+        if (other.hasInCsumErrors()) {
+          setInCsumErrors(other.getInCsumErrors());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.TcpStatistics parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.TcpStatistics) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional int64 RtoAlgorithm = 1;
+      private long rtoAlgorithm_ ;
+      /**
+       * <code>optional int64 RtoAlgorithm = 1;</code>
+       */
+      public boolean hasRtoAlgorithm() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional int64 RtoAlgorithm = 1;</code>
+       */
+      public long getRtoAlgorithm() {
+        return rtoAlgorithm_;
+      }
+      /**
+       * <code>optional int64 RtoAlgorithm = 1;</code>
+       */
+      public Builder setRtoAlgorithm(long value) {
+        bitField0_ |= 0x00000001;
+        rtoAlgorithm_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 RtoAlgorithm = 1;</code>
+       */
+      public Builder clearRtoAlgorithm() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        rtoAlgorithm_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 RtoMin = 2;
+      private long rtoMin_ ;
+      /**
+       * <code>optional int64 RtoMin = 2;</code>
+       */
+      public boolean hasRtoMin() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional int64 RtoMin = 2;</code>
+       */
+      public long getRtoMin() {
+        return rtoMin_;
+      }
+      /**
+       * <code>optional int64 RtoMin = 2;</code>
+       */
+      public Builder setRtoMin(long value) {
+        bitField0_ |= 0x00000002;
+        rtoMin_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 RtoMin = 2;</code>
+       */
+      public Builder clearRtoMin() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        rtoMin_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 RtoMax = 3;
+      private long rtoMax_ ;
+      /**
+       * <code>optional int64 RtoMax = 3;</code>
+       */
+      public boolean hasRtoMax() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional int64 RtoMax = 3;</code>
+       */
+      public long getRtoMax() {
+        return rtoMax_;
+      }
+      /**
+       * <code>optional int64 RtoMax = 3;</code>
+       */
+      public Builder setRtoMax(long value) {
+        bitField0_ |= 0x00000004;
+        rtoMax_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 RtoMax = 3;</code>
+       */
+      public Builder clearRtoMax() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        rtoMax_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 MaxConn = 4;
+      private long maxConn_ ;
+      /**
+       * <code>optional int64 MaxConn = 4;</code>
+       */
+      public boolean hasMaxConn() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional int64 MaxConn = 4;</code>
+       */
+      public long getMaxConn() {
+        return maxConn_;
+      }
+      /**
+       * <code>optional int64 MaxConn = 4;</code>
+       */
+      public Builder setMaxConn(long value) {
+        bitField0_ |= 0x00000008;
+        maxConn_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 MaxConn = 4;</code>
+       */
+      public Builder clearMaxConn() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        maxConn_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 ActiveOpens = 5;
+      private long activeOpens_ ;
+      /**
+       * <code>optional int64 ActiveOpens = 5;</code>
+       */
+      public boolean hasActiveOpens() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional int64 ActiveOpens = 5;</code>
+       */
+      public long getActiveOpens() {
+        return activeOpens_;
+      }
+      /**
+       * <code>optional int64 ActiveOpens = 5;</code>
+       */
+      public Builder setActiveOpens(long value) {
+        bitField0_ |= 0x00000010;
+        activeOpens_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 ActiveOpens = 5;</code>
+       */
+      public Builder clearActiveOpens() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        activeOpens_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 PassiveOpens = 6;
+      private long passiveOpens_ ;
+      /**
+       * <code>optional int64 PassiveOpens = 6;</code>
+       */
+      public boolean hasPassiveOpens() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional int64 PassiveOpens = 6;</code>
+       */
+      public long getPassiveOpens() {
+        return passiveOpens_;
+      }
+      /**
+       * <code>optional int64 PassiveOpens = 6;</code>
+       */
+      public Builder setPassiveOpens(long value) {
+        bitField0_ |= 0x00000020;
+        passiveOpens_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 PassiveOpens = 6;</code>
+       */
+      public Builder clearPassiveOpens() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        passiveOpens_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 AttemptFails = 7;
+      private long attemptFails_ ;
+      /**
+       * <code>optional int64 AttemptFails = 7;</code>
+       */
+      public boolean hasAttemptFails() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional int64 AttemptFails = 7;</code>
+       */
+      public long getAttemptFails() {
+        return attemptFails_;
+      }
+      /**
+       * <code>optional int64 AttemptFails = 7;</code>
+       */
+      public Builder setAttemptFails(long value) {
+        bitField0_ |= 0x00000040;
+        attemptFails_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 AttemptFails = 7;</code>
+       */
+      public Builder clearAttemptFails() {
+        bitField0_ = (bitField0_ & ~0x00000040);
+        attemptFails_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 EstabResets = 8;
+      private long estabResets_ ;
+      /**
+       * <code>optional int64 EstabResets = 8;</code>
+       */
+      public boolean hasEstabResets() {
+        return ((bitField0_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional int64 EstabResets = 8;</code>
+       */
+      public long getEstabResets() {
+        return estabResets_;
+      }
+      /**
+       * <code>optional int64 EstabResets = 8;</code>
+       */
+      public Builder setEstabResets(long value) {
+        bitField0_ |= 0x00000080;
+        estabResets_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 EstabResets = 8;</code>
+       */
+      public Builder clearEstabResets() {
+        bitField0_ = (bitField0_ & ~0x00000080);
+        estabResets_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 CurrEstab = 9;
+      private long currEstab_ ;
+      /**
+       * <code>optional int64 CurrEstab = 9;</code>
+       */
+      public boolean hasCurrEstab() {
+        return ((bitField0_ & 0x00000100) == 0x00000100);
+      }
+      /**
+       * <code>optional int64 CurrEstab = 9;</code>
+       */
+      public long getCurrEstab() {
+        return currEstab_;
+      }
+      /**
+       * <code>optional int64 CurrEstab = 9;</code>
+       */
+      public Builder setCurrEstab(long value) {
+        bitField0_ |= 0x00000100;
+        currEstab_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 CurrEstab = 9;</code>
+       */
+      public Builder clearCurrEstab() {
+        bitField0_ = (bitField0_ & ~0x00000100);
+        currEstab_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InSegs = 10;
+      private long inSegs_ ;
+      /**
+       * <code>optional int64 InSegs = 10;</code>
+       */
+      public boolean hasInSegs() {
+        return ((bitField0_ & 0x00000200) == 0x00000200);
+      }
+      /**
+       * <code>optional int64 InSegs = 10;</code>
+       */
+      public long getInSegs() {
+        return inSegs_;
+      }
+      /**
+       * <code>optional int64 InSegs = 10;</code>
+       */
+      public Builder setInSegs(long value) {
+        bitField0_ |= 0x00000200;
+        inSegs_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InSegs = 10;</code>
+       */
+      public Builder clearInSegs() {
+        bitField0_ = (bitField0_ & ~0x00000200);
+        inSegs_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 OutSegs = 11;
+      private long outSegs_ ;
+      /**
+       * <code>optional int64 OutSegs = 11;</code>
+       */
+      public boolean hasOutSegs() {
+        return ((bitField0_ & 0x00000400) == 0x00000400);
+      }
+      /**
+       * <code>optional int64 OutSegs = 11;</code>
+       */
+      public long getOutSegs() {
+        return outSegs_;
+      }
+      /**
+       * <code>optional int64 OutSegs = 11;</code>
+       */
+      public Builder setOutSegs(long value) {
+        bitField0_ |= 0x00000400;
+        outSegs_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 OutSegs = 11;</code>
+       */
+      public Builder clearOutSegs() {
+        bitField0_ = (bitField0_ & ~0x00000400);
+        outSegs_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 RetransSegs = 12;
+      private long retransSegs_ ;
+      /**
+       * <code>optional int64 RetransSegs = 12;</code>
+       */
+      public boolean hasRetransSegs() {
+        return ((bitField0_ & 0x00000800) == 0x00000800);
+      }
+      /**
+       * <code>optional int64 RetransSegs = 12;</code>
+       */
+      public long getRetransSegs() {
+        return retransSegs_;
+      }
+      /**
+       * <code>optional int64 RetransSegs = 12;</code>
+       */
+      public Builder setRetransSegs(long value) {
+        bitField0_ |= 0x00000800;
+        retransSegs_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 RetransSegs = 12;</code>
+       */
+      public Builder clearRetransSegs() {
+        bitField0_ = (bitField0_ & ~0x00000800);
+        retransSegs_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InErrs = 13;
+      private long inErrs_ ;
+      /**
+       * <code>optional int64 InErrs = 13;</code>
+       */
+      public boolean hasInErrs() {
+        return ((bitField0_ & 0x00001000) == 0x00001000);
+      }
+      /**
+       * <code>optional int64 InErrs = 13;</code>
+       */
+      public long getInErrs() {
+        return inErrs_;
+      }
+      /**
+       * <code>optional int64 InErrs = 13;</code>
+       */
+      public Builder setInErrs(long value) {
+        bitField0_ |= 0x00001000;
+        inErrs_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InErrs = 13;</code>
+       */
+      public Builder clearInErrs() {
+        bitField0_ = (bitField0_ & ~0x00001000);
+        inErrs_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 OutRsts = 14;
+      private long outRsts_ ;
+      /**
+       * <code>optional int64 OutRsts = 14;</code>
+       */
+      public boolean hasOutRsts() {
+        return ((bitField0_ & 0x00002000) == 0x00002000);
+      }
+      /**
+       * <code>optional int64 OutRsts = 14;</code>
+       */
+      public long getOutRsts() {
+        return outRsts_;
+      }
+      /**
+       * <code>optional int64 OutRsts = 14;</code>
+       */
+      public Builder setOutRsts(long value) {
+        bitField0_ |= 0x00002000;
+        outRsts_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 OutRsts = 14;</code>
+       */
+      public Builder clearOutRsts() {
+        bitField0_ = (bitField0_ & ~0x00002000);
+        outRsts_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InCsumErrors = 15;
+      private long inCsumErrors_ ;
+      /**
+       * <code>optional int64 InCsumErrors = 15;</code>
+       */
+      public boolean hasInCsumErrors() {
+        return ((bitField0_ & 0x00004000) == 0x00004000);
+      }
+      /**
+       * <code>optional int64 InCsumErrors = 15;</code>
+       */
+      public long getInCsumErrors() {
+        return inCsumErrors_;
+      }
+      /**
+       * <code>optional int64 InCsumErrors = 15;</code>
+       */
+      public Builder setInCsumErrors(long value) {
+        bitField0_ |= 0x00004000;
+        inCsumErrors_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InCsumErrors = 15;</code>
+       */
+      public Builder clearInCsumErrors() {
+        bitField0_ = (bitField0_ & ~0x00004000);
+        inCsumErrors_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.TcpStatistics)
+    }
+
+    static {
+      defaultInstance = new TcpStatistics(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.TcpStatistics)
+  }
+
+  public interface UdpStatisticsOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional int64 InDatagrams = 1;
+    /**
+     * <code>optional int64 InDatagrams = 1;</code>
+     */
+    boolean hasInDatagrams();
+    /**
+     * <code>optional int64 InDatagrams = 1;</code>
+     */
+    long getInDatagrams();
+
+    // optional int64 NoPorts = 2;
+    /**
+     * <code>optional int64 NoPorts = 2;</code>
+     */
+    boolean hasNoPorts();
+    /**
+     * <code>optional int64 NoPorts = 2;</code>
+     */
+    long getNoPorts();
+
+    // optional int64 InErrors = 3;
+    /**
+     * <code>optional int64 InErrors = 3;</code>
+     */
+    boolean hasInErrors();
+    /**
+     * <code>optional int64 InErrors = 3;</code>
+     */
+    long getInErrors();
+
+    // optional int64 OutDatagrams = 4;
+    /**
+     * <code>optional int64 OutDatagrams = 4;</code>
+     */
+    boolean hasOutDatagrams();
+    /**
+     * <code>optional int64 OutDatagrams = 4;</code>
+     */
+    long getOutDatagrams();
+
+    // optional int64 RcvbufErrors = 5;
+    /**
+     * <code>optional int64 RcvbufErrors = 5;</code>
+     */
+    boolean hasRcvbufErrors();
+    /**
+     * <code>optional int64 RcvbufErrors = 5;</code>
+     */
+    long getRcvbufErrors();
+
+    // optional int64 SndbufErrors = 6;
+    /**
+     * <code>optional int64 SndbufErrors = 6;</code>
+     */
+    boolean hasSndbufErrors();
+    /**
+     * <code>optional int64 SndbufErrors = 6;</code>
+     */
+    long getSndbufErrors();
+
+    // optional int64 InCsumErrors = 7;
+    /**
+     * <code>optional int64 InCsumErrors = 7;</code>
+     */
+    boolean hasInCsumErrors();
+    /**
+     * <code>optional int64 InCsumErrors = 7;</code>
+     */
+    long getInCsumErrors();
+
+    // optional int64 IgnoredMulti = 8;
+    /**
+     * <code>optional int64 IgnoredMulti = 8;</code>
+     */
+    boolean hasIgnoredMulti();
+    /**
+     * <code>optional int64 IgnoredMulti = 8;</code>
+     */
+    long getIgnoredMulti();
+  }
+  /**
+   * Protobuf type {@code mesos.UdpStatistics}
+   */
+  public static final class UdpStatistics extends
+      com.google.protobuf.GeneratedMessage
+      implements UdpStatisticsOrBuilder {
+    // Use UdpStatistics.newBuilder() to construct.
+    private UdpStatistics(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private UdpStatistics(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final UdpStatistics defaultInstance;
+    public static UdpStatistics getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public UdpStatistics getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private UdpStatistics(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 8: {
+              bitField0_ |= 0x00000001;
+              inDatagrams_ = input.readInt64();
+              break;
+            }
+            case 16: {
+              bitField0_ |= 0x00000002;
+              noPorts_ = input.readInt64();
+              break;
+            }
+            case 24: {
+              bitField0_ |= 0x00000004;
+              inErrors_ = input.readInt64();
+              break;
+            }
+            case 32: {
+              bitField0_ |= 0x00000008;
+              outDatagrams_ = input.readInt64();
+              break;
+            }
+            case 40: {
+              bitField0_ |= 0x00000010;
+              rcvbufErrors_ = input.readInt64();
+              break;
+            }
+            case 48: {
+              bitField0_ |= 0x00000020;
+              sndbufErrors_ = input.readInt64();
+              break;
+            }
+            case 56: {
+              bitField0_ |= 0x00000040;
+              inCsumErrors_ = input.readInt64();
+              break;
+            }
+            case 64: {
+              bitField0_ |= 0x00000080;
+              ignoredMulti_ = input.readInt64();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_UdpStatistics_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_UdpStatistics_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.UdpStatistics.class, org.apache.mesos.Protos.UdpStatistics.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<UdpStatistics> PARSER =
+        new com.google.protobuf.AbstractParser<UdpStatistics>() {
+      public UdpStatistics parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new UdpStatistics(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<UdpStatistics> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // optional int64 InDatagrams = 1;
+    public static final int INDATAGRAMS_FIELD_NUMBER = 1;
+    private long inDatagrams_;
+    /**
+     * <code>optional int64 InDatagrams = 1;</code>
+     */
+    public boolean hasInDatagrams() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional int64 InDatagrams = 1;</code>
+     */
+    public long getInDatagrams() {
+      return inDatagrams_;
+    }
+
+    // optional int64 NoPorts = 2;
+    public static final int NOPORTS_FIELD_NUMBER = 2;
+    private long noPorts_;
+    /**
+     * <code>optional int64 NoPorts = 2;</code>
+     */
+    public boolean hasNoPorts() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional int64 NoPorts = 2;</code>
+     */
+    public long getNoPorts() {
+      return noPorts_;
+    }
+
+    // optional int64 InErrors = 3;
+    public static final int INERRORS_FIELD_NUMBER = 3;
+    private long inErrors_;
+    /**
+     * <code>optional int64 InErrors = 3;</code>
+     */
+    public boolean hasInErrors() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional int64 InErrors = 3;</code>
+     */
+    public long getInErrors() {
+      return inErrors_;
+    }
+
+    // optional int64 OutDatagrams = 4;
+    public static final int OUTDATAGRAMS_FIELD_NUMBER = 4;
+    private long outDatagrams_;
+    /**
+     * <code>optional int64 OutDatagrams = 4;</code>
+     */
+    public boolean hasOutDatagrams() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional int64 OutDatagrams = 4;</code>
+     */
+    public long getOutDatagrams() {
+      return outDatagrams_;
+    }
+
+    // optional int64 RcvbufErrors = 5;
+    public static final int RCVBUFERRORS_FIELD_NUMBER = 5;
+    private long rcvbufErrors_;
+    /**
+     * <code>optional int64 RcvbufErrors = 5;</code>
+     */
+    public boolean hasRcvbufErrors() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional int64 RcvbufErrors = 5;</code>
+     */
+    public long getRcvbufErrors() {
+      return rcvbufErrors_;
+    }
+
+    // optional int64 SndbufErrors = 6;
+    public static final int SNDBUFERRORS_FIELD_NUMBER = 6;
+    private long sndbufErrors_;
+    /**
+     * <code>optional int64 SndbufErrors = 6;</code>
+     */
+    public boolean hasSndbufErrors() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional int64 SndbufErrors = 6;</code>
+     */
+    public long getSndbufErrors() {
+      return sndbufErrors_;
+    }
+
+    // optional int64 InCsumErrors = 7;
+    public static final int INCSUMERRORS_FIELD_NUMBER = 7;
+    private long inCsumErrors_;
+    /**
+     * <code>optional int64 InCsumErrors = 7;</code>
+     */
+    public boolean hasInCsumErrors() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional int64 InCsumErrors = 7;</code>
+     */
+    public long getInCsumErrors() {
+      return inCsumErrors_;
+    }
+
+    // optional int64 IgnoredMulti = 8;
+    public static final int IGNOREDMULTI_FIELD_NUMBER = 8;
+    private long ignoredMulti_;
+    /**
+     * <code>optional int64 IgnoredMulti = 8;</code>
+     */
+    public boolean hasIgnoredMulti() {
+      return ((bitField0_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional int64 IgnoredMulti = 8;</code>
+     */
+    public long getIgnoredMulti() {
+      return ignoredMulti_;
+    }
+
+    private void initFields() {
+      inDatagrams_ = 0L;
+      noPorts_ = 0L;
+      inErrors_ = 0L;
+      outDatagrams_ = 0L;
+      rcvbufErrors_ = 0L;
+      sndbufErrors_ = 0L;
+      inCsumErrors_ = 0L;
+      ignoredMulti_ = 0L;
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeInt64(1, inDatagrams_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeInt64(2, noPorts_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeInt64(3, inErrors_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeInt64(4, outDatagrams_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeInt64(5, rcvbufErrors_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeInt64(6, sndbufErrors_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeInt64(7, inCsumErrors_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        output.writeInt64(8, ignoredMulti_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(1, inDatagrams_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(2, noPorts_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(3, inErrors_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(4, outDatagrams_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(5, rcvbufErrors_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(6, sndbufErrors_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(7, inCsumErrors_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(8, ignoredMulti_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.UdpStatistics parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.UdpStatistics parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.UdpStatistics parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.UdpStatistics parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.UdpStatistics parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.UdpStatistics parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.UdpStatistics parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.UdpStatistics parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.UdpStatistics parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.UdpStatistics parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.UdpStatistics prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.UdpStatistics}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.UdpStatisticsOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_UdpStatistics_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_UdpStatistics_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.UdpStatistics.class, org.apache.mesos.Protos.UdpStatistics.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.UdpStatistics.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        inDatagrams_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        noPorts_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        inErrors_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        outDatagrams_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        rcvbufErrors_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000010);
+        sndbufErrors_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000020);
+        inCsumErrors_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000040);
+        ignoredMulti_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000080);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_UdpStatistics_descriptor;
+      }
+
+      public org.apache.mesos.Protos.UdpStatistics getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.UdpStatistics.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.UdpStatistics build() {
+        org.apache.mesos.Protos.UdpStatistics result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.UdpStatistics buildPartial() {
+        org.apache.mesos.Protos.UdpStatistics result = new org.apache.mesos.Protos.UdpStatistics(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.inDatagrams_ = inDatagrams_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.noPorts_ = noPorts_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.inErrors_ = inErrors_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.outDatagrams_ = outDatagrams_;
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.rcvbufErrors_ = rcvbufErrors_;
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        result.sndbufErrors_ = sndbufErrors_;
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        result.inCsumErrors_ = inCsumErrors_;
+        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+          to_bitField0_ |= 0x00000080;
+        }
+        result.ignoredMulti_ = ignoredMulti_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.UdpStatistics) {
+          return mergeFrom((org.apache.mesos.Protos.UdpStatistics)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.UdpStatistics other) {
+        if (other == org.apache.mesos.Protos.UdpStatistics.getDefaultInstance()) return this;
+        if (other.hasInDatagrams()) {
+          setInDatagrams(other.getInDatagrams());
+        }
+        if (other.hasNoPorts()) {
+          setNoPorts(other.getNoPorts());
+        }
+        if (other.hasInErrors()) {
+          setInErrors(other.getInErrors());
+        }
+        if (other.hasOutDatagrams()) {
+          setOutDatagrams(other.getOutDatagrams());
+        }
+        if (other.hasRcvbufErrors()) {
+          setRcvbufErrors(other.getRcvbufErrors());
+        }
+        if (other.hasSndbufErrors()) {
+          setSndbufErrors(other.getSndbufErrors());
+        }
+        if (other.hasInCsumErrors()) {
+          setInCsumErrors(other.getInCsumErrors());
+        }
+        if (other.hasIgnoredMulti()) {
+          setIgnoredMulti(other.getIgnoredMulti());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.UdpStatistics parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.UdpStatistics) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional int64 InDatagrams = 1;
+      private long inDatagrams_ ;
+      /**
+       * <code>optional int64 InDatagrams = 1;</code>
+       */
+      public boolean hasInDatagrams() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional int64 InDatagrams = 1;</code>
+       */
+      public long getInDatagrams() {
+        return inDatagrams_;
+      }
+      /**
+       * <code>optional int64 InDatagrams = 1;</code>
+       */
+      public Builder setInDatagrams(long value) {
+        bitField0_ |= 0x00000001;
+        inDatagrams_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InDatagrams = 1;</code>
+       */
+      public Builder clearInDatagrams() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        inDatagrams_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 NoPorts = 2;
+      private long noPorts_ ;
+      /**
+       * <code>optional int64 NoPorts = 2;</code>
+       */
+      public boolean hasNoPorts() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional int64 NoPorts = 2;</code>
+       */
+      public long getNoPorts() {
+        return noPorts_;
+      }
+      /**
+       * <code>optional int64 NoPorts = 2;</code>
+       */
+      public Builder setNoPorts(long value) {
+        bitField0_ |= 0x00000002;
+        noPorts_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 NoPorts = 2;</code>
+       */
+      public Builder clearNoPorts() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        noPorts_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InErrors = 3;
+      private long inErrors_ ;
+      /**
+       * <code>optional int64 InErrors = 3;</code>
+       */
+      public boolean hasInErrors() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional int64 InErrors = 3;</code>
+       */
+      public long getInErrors() {
+        return inErrors_;
+      }
+      /**
+       * <code>optional int64 InErrors = 3;</code>
+       */
+      public Builder setInErrors(long value) {
+        bitField0_ |= 0x00000004;
+        inErrors_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InErrors = 3;</code>
+       */
+      public Builder clearInErrors() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        inErrors_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 OutDatagrams = 4;
+      private long outDatagrams_ ;
+      /**
+       * <code>optional int64 OutDatagrams = 4;</code>
+       */
+      public boolean hasOutDatagrams() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional int64 OutDatagrams = 4;</code>
+       */
+      public long getOutDatagrams() {
+        return outDatagrams_;
+      }
+      /**
+       * <code>optional int64 OutDatagrams = 4;</code>
+       */
+      public Builder setOutDatagrams(long value) {
+        bitField0_ |= 0x00000008;
+        outDatagrams_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 OutDatagrams = 4;</code>
+       */
+      public Builder clearOutDatagrams() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        outDatagrams_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 RcvbufErrors = 5;
+      private long rcvbufErrors_ ;
+      /**
+       * <code>optional int64 RcvbufErrors = 5;</code>
+       */
+      public boolean hasRcvbufErrors() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional int64 RcvbufErrors = 5;</code>
+       */
+      public long getRcvbufErrors() {
+        return rcvbufErrors_;
+      }
+      /**
+       * <code>optional int64 RcvbufErrors = 5;</code>
+       */
+      public Builder setRcvbufErrors(long value) {
+        bitField0_ |= 0x00000010;
+        rcvbufErrors_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 RcvbufErrors = 5;</code>
+       */
+      public Builder clearRcvbufErrors() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        rcvbufErrors_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 SndbufErrors = 6;
+      private long sndbufErrors_ ;
+      /**
+       * <code>optional int64 SndbufErrors = 6;</code>
+       */
+      public boolean hasSndbufErrors() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional int64 SndbufErrors = 6;</code>
+       */
+      public long getSndbufErrors() {
+        return sndbufErrors_;
+      }
+      /**
+       * <code>optional int64 SndbufErrors = 6;</code>
+       */
+      public Builder setSndbufErrors(long value) {
+        bitField0_ |= 0x00000020;
+        sndbufErrors_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 SndbufErrors = 6;</code>
+       */
+      public Builder clearSndbufErrors() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        sndbufErrors_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InCsumErrors = 7;
+      private long inCsumErrors_ ;
+      /**
+       * <code>optional int64 InCsumErrors = 7;</code>
+       */
+      public boolean hasInCsumErrors() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional int64 InCsumErrors = 7;</code>
+       */
+      public long getInCsumErrors() {
+        return inCsumErrors_;
+      }
+      /**
+       * <code>optional int64 InCsumErrors = 7;</code>
+       */
+      public Builder setInCsumErrors(long value) {
+        bitField0_ |= 0x00000040;
+        inCsumErrors_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InCsumErrors = 7;</code>
+       */
+      public Builder clearInCsumErrors() {
+        bitField0_ = (bitField0_ & ~0x00000040);
+        inCsumErrors_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 IgnoredMulti = 8;
+      private long ignoredMulti_ ;
+      /**
+       * <code>optional int64 IgnoredMulti = 8;</code>
+       */
+      public boolean hasIgnoredMulti() {
+        return ((bitField0_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional int64 IgnoredMulti = 8;</code>
+       */
+      public long getIgnoredMulti() {
+        return ignoredMulti_;
+      }
+      /**
+       * <code>optional int64 IgnoredMulti = 8;</code>
+       */
+      public Builder setIgnoredMulti(long value) {
+        bitField0_ |= 0x00000080;
+        ignoredMulti_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 IgnoredMulti = 8;</code>
+       */
+      public Builder clearIgnoredMulti() {
+        bitField0_ = (bitField0_ & ~0x00000080);
+        ignoredMulti_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.UdpStatistics)
+    }
+
+    static {
+      defaultInstance = new UdpStatistics(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.UdpStatistics)
+  }
+
+  public interface SNMPStatisticsOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional .mesos.IpStatistics ip_stats = 1;
+    /**
+     * <code>optional .mesos.IpStatistics ip_stats = 1;</code>
+     */
+    boolean hasIpStats();
+    /**
+     * <code>optional .mesos.IpStatistics ip_stats = 1;</code>
+     */
+    org.apache.mesos.Protos.IpStatistics getIpStats();
+    /**
+     * <code>optional .mesos.IpStatistics ip_stats = 1;</code>
+     */
+    org.apache.mesos.Protos.IpStatisticsOrBuilder getIpStatsOrBuilder();
+
+    // optional .mesos.IcmpStatistics icmp_stats = 2;
+    /**
+     * <code>optional .mesos.IcmpStatistics icmp_stats = 2;</code>
+     */
+    boolean hasIcmpStats();
+    /**
+     * <code>optional .mesos.IcmpStatistics icmp_stats = 2;</code>
+     */
+    org.apache.mesos.Protos.IcmpStatistics getIcmpStats();
+    /**
+     * <code>optional .mesos.IcmpStatistics icmp_stats = 2;</code>
+     */
+    org.apache.mesos.Protos.IcmpStatisticsOrBuilder getIcmpStatsOrBuilder();
+
+    // optional .mesos.TcpStatistics tcp_stats = 3;
+    /**
+     * <code>optional .mesos.TcpStatistics tcp_stats = 3;</code>
+     */
+    boolean hasTcpStats();
+    /**
+     * <code>optional .mesos.TcpStatistics tcp_stats = 3;</code>
+     */
+    org.apache.mesos.Protos.TcpStatistics getTcpStats();
+    /**
+     * <code>optional .mesos.TcpStatistics tcp_stats = 3;</code>
+     */
+    org.apache.mesos.Protos.TcpStatisticsOrBuilder getTcpStatsOrBuilder();
+
+    // optional .mesos.UdpStatistics udp_stats = 4;
+    /**
+     * <code>optional .mesos.UdpStatistics udp_stats = 4;</code>
+     */
+    boolean hasUdpStats();
+    /**
+     * <code>optional .mesos.UdpStatistics udp_stats = 4;</code>
+     */
+    org.apache.mesos.Protos.UdpStatistics getUdpStats();
+    /**
+     * <code>optional .mesos.UdpStatistics udp_stats = 4;</code>
+     */
+    org.apache.mesos.Protos.UdpStatisticsOrBuilder getUdpStatsOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.SNMPStatistics}
+   */
+  public static final class SNMPStatistics extends
+      com.google.protobuf.GeneratedMessage
+      implements SNMPStatisticsOrBuilder {
+    // Use SNMPStatistics.newBuilder() to construct.
+    private SNMPStatistics(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private SNMPStatistics(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final SNMPStatistics defaultInstance;
+    public static SNMPStatistics getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public SNMPStatistics getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private SNMPStatistics(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              org.apache.mesos.Protos.IpStatistics.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                subBuilder = ipStats_.toBuilder();
+              }
+              ipStats_ = input.readMessage(org.apache.mesos.Protos.IpStatistics.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(ipStats_);
+                ipStats_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+            case 18: {
+              org.apache.mesos.Protos.IcmpStatistics.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = icmpStats_.toBuilder();
+              }
+              icmpStats_ = input.readMessage(org.apache.mesos.Protos.IcmpStatistics.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(icmpStats_);
+                icmpStats_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+            case 26: {
+              org.apache.mesos.Protos.TcpStatistics.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                subBuilder = tcpStats_.toBuilder();
+              }
+              tcpStats_ = input.readMessage(org.apache.mesos.Protos.TcpStatistics.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(tcpStats_);
+                tcpStats_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000004;
+              break;
+            }
+            case 34: {
+              org.apache.mesos.Protos.UdpStatistics.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                subBuilder = udpStats_.toBuilder();
+              }
+              udpStats_ = input.readMessage(org.apache.mesos.Protos.UdpStatistics.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(udpStats_);
+                udpStats_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000008;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_SNMPStatistics_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_SNMPStatistics_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.SNMPStatistics.class, org.apache.mesos.Protos.SNMPStatistics.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<SNMPStatistics> PARSER =
+        new com.google.protobuf.AbstractParser<SNMPStatistics>() {
+      public SNMPStatistics parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new SNMPStatistics(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<SNMPStatistics> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // optional .mesos.IpStatistics ip_stats = 1;
+    public static final int IP_STATS_FIELD_NUMBER = 1;
+    private org.apache.mesos.Protos.IpStatistics ipStats_;
+    /**
+     * <code>optional .mesos.IpStatistics ip_stats = 1;</code>
+     */
+    public boolean hasIpStats() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional .mesos.IpStatistics ip_stats = 1;</code>
+     */
+    public org.apache.mesos.Protos.IpStatistics getIpStats() {
+      return ipStats_;
+    }
+    /**
+     * <code>optional .mesos.IpStatistics ip_stats = 1;</code>
+     */
+    public org.apache.mesos.Protos.IpStatisticsOrBuilder getIpStatsOrBuilder() {
+      return ipStats_;
+    }
+
+    // optional .mesos.IcmpStatistics icmp_stats = 2;
+    public static final int ICMP_STATS_FIELD_NUMBER = 2;
+    private org.apache.mesos.Protos.IcmpStatistics icmpStats_;
+    /**
+     * <code>optional .mesos.IcmpStatistics icmp_stats = 2;</code>
+     */
+    public boolean hasIcmpStats() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional .mesos.IcmpStatistics icmp_stats = 2;</code>
+     */
+    public org.apache.mesos.Protos.IcmpStatistics getIcmpStats() {
+      return icmpStats_;
+    }
+    /**
+     * <code>optional .mesos.IcmpStatistics icmp_stats = 2;</code>
+     */
+    public org.apache.mesos.Protos.IcmpStatisticsOrBuilder getIcmpStatsOrBuilder() {
+      return icmpStats_;
+    }
+
+    // optional .mesos.TcpStatistics tcp_stats = 3;
+    public static final int TCP_STATS_FIELD_NUMBER = 3;
+    private org.apache.mesos.Protos.TcpStatistics tcpStats_;
+    /**
+     * <code>optional .mesos.TcpStatistics tcp_stats = 3;</code>
+     */
+    public boolean hasTcpStats() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional .mesos.TcpStatistics tcp_stats = 3;</code>
+     */
+    public org.apache.mesos.Protos.TcpStatistics getTcpStats() {
+      return tcpStats_;
+    }
+    /**
+     * <code>optional .mesos.TcpStatistics tcp_stats = 3;</code>
+     */
+    public org.apache.mesos.Protos.TcpStatisticsOrBuilder getTcpStatsOrBuilder() {
+      return tcpStats_;
+    }
+
+    // optional .mesos.UdpStatistics udp_stats = 4;
+    public static final int UDP_STATS_FIELD_NUMBER = 4;
+    private org.apache.mesos.Protos.UdpStatistics udpStats_;
+    /**
+     * <code>optional .mesos.UdpStatistics udp_stats = 4;</code>
+     */
+    public boolean hasUdpStats() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional .mesos.UdpStatistics udp_stats = 4;</code>
+     */
+    public org.apache.mesos.Protos.UdpStatistics getUdpStats() {
+      return udpStats_;
+    }
+    /**
+     * <code>optional .mesos.UdpStatistics udp_stats = 4;</code>
+     */
+    public org.apache.mesos.Protos.UdpStatisticsOrBuilder getUdpStatsOrBuilder() {
+      return udpStats_;
+    }
+
+    private void initFields() {
+      ipStats_ = org.apache.mesos.Protos.IpStatistics.getDefaultInstance();
+      icmpStats_ = org.apache.mesos.Protos.IcmpStatistics.getDefaultInstance();
+      tcpStats_ = org.apache.mesos.Protos.TcpStatistics.getDefaultInstance();
+      udpStats_ = org.apache.mesos.Protos.UdpStatistics.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeMessage(1, ipStats_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(2, icmpStats_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeMessage(3, tcpStats_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeMessage(4, udpStats_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, ipStats_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, icmpStats_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, tcpStats_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, udpStats_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.SNMPStatistics parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.SNMPStatistics parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.SNMPStatistics parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.SNMPStatistics parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.SNMPStatistics parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.SNMPStatistics parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.SNMPStatistics parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.SNMPStatistics parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.SNMPStatistics parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.SNMPStatistics parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.SNMPStatistics prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.SNMPStatistics}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.SNMPStatisticsOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_SNMPStatistics_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_SNMPStatistics_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.SNMPStatistics.class, org.apache.mesos.Protos.SNMPStatistics.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.SNMPStatistics.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getIpStatsFieldBuilder();
+          getIcmpStatsFieldBuilder();
+          getTcpStatsFieldBuilder();
+          getUdpStatsFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (ipStatsBuilder_ == null) {
+          ipStats_ = org.apache.mesos.Protos.IpStatistics.getDefaultInstance();
+        } else {
+          ipStatsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (icmpStatsBuilder_ == null) {
+          icmpStats_ = org.apache.mesos.Protos.IcmpStatistics.getDefaultInstance();
+        } else {
+          icmpStatsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        if (tcpStatsBuilder_ == null) {
+          tcpStats_ = org.apache.mesos.Protos.TcpStatistics.getDefaultInstance();
+        } else {
+          tcpStatsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        if (udpStatsBuilder_ == null) {
+          udpStats_ = org.apache.mesos.Protos.UdpStatistics.getDefaultInstance();
+        } else {
+          udpStatsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_SNMPStatistics_descriptor;
+      }
+
+      public org.apache.mesos.Protos.SNMPStatistics getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.SNMPStatistics.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.SNMPStatistics build() {
+        org.apache.mesos.Protos.SNMPStatistics result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.SNMPStatistics buildPartial() {
+        org.apache.mesos.Protos.SNMPStatistics result = new org.apache.mesos.Protos.SNMPStatistics(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        if (ipStatsBuilder_ == null) {
+          result.ipStats_ = ipStats_;
+        } else {
+          result.ipStats_ = ipStatsBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (icmpStatsBuilder_ == null) {
+          result.icmpStats_ = icmpStats_;
+        } else {
+          result.icmpStats_ = icmpStatsBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        if (tcpStatsBuilder_ == null) {
+          result.tcpStats_ = tcpStats_;
+        } else {
+          result.tcpStats_ = tcpStatsBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        if (udpStatsBuilder_ == null) {
+          result.udpStats_ = udpStats_;
+        } else {
+          result.udpStats_ = udpStatsBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.SNMPStatistics) {
+          return mergeFrom((org.apache.mesos.Protos.SNMPStatistics)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.SNMPStatistics other) {
+        if (other == org.apache.mesos.Protos.SNMPStatistics.getDefaultInstance()) return this;
+        if (other.hasIpStats()) {
+          mergeIpStats(other.getIpStats());
+        }
+        if (other.hasIcmpStats()) {
+          mergeIcmpStats(other.getIcmpStats());
+        }
+        if (other.hasTcpStats()) {
+          mergeTcpStats(other.getTcpStats());
+        }
+        if (other.hasUdpStats()) {
+          mergeUdpStats(other.getUdpStats());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.SNMPStatistics parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.SNMPStatistics) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional .mesos.IpStatistics ip_stats = 1;
+      private org.apache.mesos.Protos.IpStatistics ipStats_ = org.apache.mesos.Protos.IpStatistics.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.IpStatistics, org.apache.mesos.Protos.IpStatistics.Builder, org.apache.mesos.Protos.IpStatisticsOrBuilder> ipStatsBuilder_;
+      /**
+       * <code>optional .mesos.IpStatistics ip_stats = 1;</code>
+       */
+      public boolean hasIpStats() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.IpStatistics ip_stats = 1;</code>
+       */
+      public org.apache.mesos.Protos.IpStatistics getIpStats() {
+        if (ipStatsBuilder_ == null) {
+          return ipStats_;
+        } else {
+          return ipStatsBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.IpStatistics ip_stats = 1;</code>
+       */
+      public Builder setIpStats(org.apache.mesos.Protos.IpStatistics value) {
+        if (ipStatsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ipStats_ = value;
+          onChanged();
+        } else {
+          ipStatsBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.IpStatistics ip_stats = 1;</code>
+       */
+      public Builder setIpStats(
+          org.apache.mesos.Protos.IpStatistics.Builder builderForValue) {
+        if (ipStatsBuilder_ == null) {
+          ipStats_ = builderForValue.build();
+          onChanged();
+        } else {
+          ipStatsBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.IpStatistics ip_stats = 1;</code>
+       */
+      public Builder mergeIpStats(org.apache.mesos.Protos.IpStatistics value) {
+        if (ipStatsBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001) &&
+              ipStats_ != org.apache.mesos.Protos.IpStatistics.getDefaultInstance()) {
+            ipStats_ =
+              org.apache.mesos.Protos.IpStatistics.newBuilder(ipStats_).mergeFrom(value).buildPartial();
+          } else {
+            ipStats_ = value;
+          }
+          onChanged();
+        } else {
+          ipStatsBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.IpStatistics ip_stats = 1;</code>
+       */
+      public Builder clearIpStats() {
+        if (ipStatsBuilder_ == null) {
+          ipStats_ = org.apache.mesos.Protos.IpStatistics.getDefaultInstance();
+          onChanged();
+        } else {
+          ipStatsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.IpStatistics ip_stats = 1;</code>
+       */
+      public org.apache.mesos.Protos.IpStatistics.Builder getIpStatsBuilder() {
+        bitField0_ |= 0x00000001;
+        onChanged();
+        return getIpStatsFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.IpStatistics ip_stats = 1;</code>
+       */
+      public org.apache.mesos.Protos.IpStatisticsOrBuilder getIpStatsOrBuilder() {
+        if (ipStatsBuilder_ != null) {
+          return ipStatsBuilder_.getMessageOrBuilder();
+        } else {
+          return ipStats_;
+        }
+      }
+      /**
+       * <code>optional .mesos.IpStatistics ip_stats = 1;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.IpStatistics, org.apache.mesos.Protos.IpStatistics.Builder, org.apache.mesos.Protos.IpStatisticsOrBuilder> 
+          getIpStatsFieldBuilder() {
+        if (ipStatsBuilder_ == null) {
+          ipStatsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.IpStatistics, org.apache.mesos.Protos.IpStatistics.Builder, org.apache.mesos.Protos.IpStatisticsOrBuilder>(
+                  ipStats_,
+                  getParentForChildren(),
+                  isClean());
+          ipStats_ = null;
+        }
+        return ipStatsBuilder_;
+      }
+
+      // optional .mesos.IcmpStatistics icmp_stats = 2;
+      private org.apache.mesos.Protos.IcmpStatistics icmpStats_ = org.apache.mesos.Protos.IcmpStatistics.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.IcmpStatistics, org.apache.mesos.Protos.IcmpStatistics.Builder, org.apache.mesos.Protos.IcmpStatisticsOrBuilder> icmpStatsBuilder_;
+      /**
+       * <code>optional .mesos.IcmpStatistics icmp_stats = 2;</code>
+       */
+      public boolean hasIcmpStats() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.IcmpStatistics icmp_stats = 2;</code>
+       */
+      public org.apache.mesos.Protos.IcmpStatistics getIcmpStats() {
+        if (icmpStatsBuilder_ == null) {
+          return icmpStats_;
+        } else {
+          return icmpStatsBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.IcmpStatistics icmp_stats = 2;</code>
+       */
+      public Builder setIcmpStats(org.apache.mesos.Protos.IcmpStatistics value) {
+        if (icmpStatsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          icmpStats_ = value;
+          onChanged();
+        } else {
+          icmpStatsBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.IcmpStatistics icmp_stats = 2;</code>
+       */
+      public Builder setIcmpStats(
+          org.apache.mesos.Protos.IcmpStatistics.Builder builderForValue) {
+        if (icmpStatsBuilder_ == null) {
+          icmpStats_ = builderForValue.build();
+          onChanged();
+        } else {
+          icmpStatsBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.IcmpStatistics icmp_stats = 2;</code>
+       */
+      public Builder mergeIcmpStats(org.apache.mesos.Protos.IcmpStatistics value) {
+        if (icmpStatsBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              icmpStats_ != org.apache.mesos.Protos.IcmpStatistics.getDefaultInstance()) {
+            icmpStats_ =
+              org.apache.mesos.Protos.IcmpStatistics.newBuilder(icmpStats_).mergeFrom(value).buildPartial();
+          } else {
+            icmpStats_ = value;
+          }
+          onChanged();
+        } else {
+          icmpStatsBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.IcmpStatistics icmp_stats = 2;</code>
+       */
+      public Builder clearIcmpStats() {
+        if (icmpStatsBuilder_ == null) {
+          icmpStats_ = org.apache.mesos.Protos.IcmpStatistics.getDefaultInstance();
+          onChanged();
+        } else {
+          icmpStatsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.IcmpStatistics icmp_stats = 2;</code>
+       */
+      public org.apache.mesos.Protos.IcmpStatistics.Builder getIcmpStatsBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getIcmpStatsFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.IcmpStatistics icmp_stats = 2;</code>
+       */
+      public org.apache.mesos.Protos.IcmpStatisticsOrBuilder getIcmpStatsOrBuilder() {
+        if (icmpStatsBuilder_ != null) {
+          return icmpStatsBuilder_.getMessageOrBuilder();
+        } else {
+          return icmpStats_;
+        }
+      }
+      /**
+       * <code>optional .mesos.IcmpStatistics icmp_stats = 2;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.IcmpStatistics, org.apache.mesos.Protos.IcmpStatistics.Builder, org.apache.mesos.Protos.IcmpStatisticsOrBuilder> 
+          getIcmpStatsFieldBuilder() {
+        if (icmpStatsBuilder_ == null) {
+          icmpStatsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.IcmpStatistics, org.apache.mesos.Protos.IcmpStatistics.Builder, org.apache.mesos.Protos.IcmpStatisticsOrBuilder>(
+                  icmpStats_,
+                  getParentForChildren(),
+                  isClean());
+          icmpStats_ = null;
+        }
+        return icmpStatsBuilder_;
+      }
+
+      // optional .mesos.TcpStatistics tcp_stats = 3;
+      private org.apache.mesos.Protos.TcpStatistics tcpStats_ = org.apache.mesos.Protos.TcpStatistics.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.TcpStatistics, org.apache.mesos.Protos.TcpStatistics.Builder, org.apache.mesos.Protos.TcpStatisticsOrBuilder> tcpStatsBuilder_;
+      /**
+       * <code>optional .mesos.TcpStatistics tcp_stats = 3;</code>
+       */
+      public boolean hasTcpStats() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.TcpStatistics tcp_stats = 3;</code>
+       */
+      public org.apache.mesos.Protos.TcpStatistics getTcpStats() {
+        if (tcpStatsBuilder_ == null) {
+          return tcpStats_;
+        } else {
+          return tcpStatsBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.TcpStatistics tcp_stats = 3;</code>
+       */
+      public Builder setTcpStats(org.apache.mesos.Protos.TcpStatistics value) {
+        if (tcpStatsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          tcpStats_ = value;
+          onChanged();
+        } else {
+          tcpStatsBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.TcpStatistics tcp_stats = 3;</code>
+       */
+      public Builder setTcpStats(
+          org.apache.mesos.Protos.TcpStatistics.Builder builderForValue) {
+        if (tcpStatsBuilder_ == null) {
+          tcpStats_ = builderForValue.build();
+          onChanged();
+        } else {
+          tcpStatsBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.TcpStatistics tcp_stats = 3;</code>
+       */
+      public Builder mergeTcpStats(org.apache.mesos.Protos.TcpStatistics value) {
+        if (tcpStatsBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) == 0x00000004) &&
+              tcpStats_ != org.apache.mesos.Protos.TcpStatistics.getDefaultInstance()) {
+            tcpStats_ =
+              org.apache.mesos.Protos.TcpStatistics.newBuilder(tcpStats_).mergeFrom(value).buildPartial();
+          } else {
+            tcpStats_ = value;
+          }
+          onChanged();
+        } else {
+          tcpStatsBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.TcpStatistics tcp_stats = 3;</code>
+       */
+      public Builder clearTcpStats() {
+        if (tcpStatsBuilder_ == null) {
+          tcpStats_ = org.apache.mesos.Protos.TcpStatistics.getDefaultInstance();
+          onChanged();
+        } else {
+          tcpStatsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.TcpStatistics tcp_stats = 3;</code>
+       */
+      public org.apache.mesos.Protos.TcpStatistics.Builder getTcpStatsBuilder() {
+        bitField0_ |= 0x00000004;
+        onChanged();
+        return getTcpStatsFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.TcpStatistics tcp_stats = 3;</code>
+       */
+      public org.apache.mesos.Protos.TcpStatisticsOrBuilder getTcpStatsOrBuilder() {
+        if (tcpStatsBuilder_ != null) {
+          return tcpStatsBuilder_.getMessageOrBuilder();
+        } else {
+          return tcpStats_;
+        }
+      }
+      /**
+       * <code>optional .mesos.TcpStatistics tcp_stats = 3;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.TcpStatistics, org.apache.mesos.Protos.TcpStatistics.Builder, org.apache.mesos.Protos.TcpStatisticsOrBuilder> 
+          getTcpStatsFieldBuilder() {
+        if (tcpStatsBuilder_ == null) {
+          tcpStatsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.TcpStatistics, org.apache.mesos.Protos.TcpStatistics.Builder, org.apache.mesos.Protos.TcpStatisticsOrBuilder>(
+                  tcpStats_,
+                  getParentForChildren(),
+                  isClean());
+          tcpStats_ = null;
+        }
+        return tcpStatsBuilder_;
+      }
+
+      // optional .mesos.UdpStatistics udp_stats = 4;
+      private org.apache.mesos.Protos.UdpStatistics udpStats_ = org.apache.mesos.Protos.UdpStatistics.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.UdpStatistics, org.apache.mesos.Protos.UdpStatistics.Builder, org.apache.mesos.Protos.UdpStatisticsOrBuilder> udpStatsBuilder_;
+      /**
+       * <code>optional .mesos.UdpStatistics udp_stats = 4;</code>
+       */
+      public boolean hasUdpStats() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.UdpStatistics udp_stats = 4;</code>
+       */
+      public org.apache.mesos.Protos.UdpStatistics getUdpStats() {
+        if (udpStatsBuilder_ == null) {
+          return udpStats_;
+        } else {
+          return udpStatsBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.UdpStatistics udp_stats = 4;</code>
+       */
+      public Builder setUdpStats(org.apache.mesos.Protos.UdpStatistics value) {
+        if (udpStatsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          udpStats_ = value;
+          onChanged();
+        } else {
+          udpStatsBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.UdpStatistics udp_stats = 4;</code>
+       */
+      public Builder setUdpStats(
+          org.apache.mesos.Protos.UdpStatistics.Builder builderForValue) {
+        if (udpStatsBuilder_ == null) {
+          udpStats_ = builderForValue.build();
+          onChanged();
+        } else {
+          udpStatsBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.UdpStatistics udp_stats = 4;</code>
+       */
+      public Builder mergeUdpStats(org.apache.mesos.Protos.UdpStatistics value) {
+        if (udpStatsBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008) &&
+              udpStats_ != org.apache.mesos.Protos.UdpStatistics.getDefaultInstance()) {
+            udpStats_ =
+              org.apache.mesos.Protos.UdpStatistics.newBuilder(udpStats_).mergeFrom(value).buildPartial();
+          } else {
+            udpStats_ = value;
+          }
+          onChanged();
+        } else {
+          udpStatsBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.UdpStatistics udp_stats = 4;</code>
+       */
+      public Builder clearUdpStats() {
+        if (udpStatsBuilder_ == null) {
+          udpStats_ = org.apache.mesos.Protos.UdpStatistics.getDefaultInstance();
+          onChanged();
+        } else {
+          udpStatsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.UdpStatistics udp_stats = 4;</code>
+       */
+      public org.apache.mesos.Protos.UdpStatistics.Builder getUdpStatsBuilder() {
+        bitField0_ |= 0x00000008;
+        onChanged();
+        return getUdpStatsFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.UdpStatistics udp_stats = 4;</code>
+       */
+      public org.apache.mesos.Protos.UdpStatisticsOrBuilder getUdpStatsOrBuilder() {
+        if (udpStatsBuilder_ != null) {
+          return udpStatsBuilder_.getMessageOrBuilder();
+        } else {
+          return udpStats_;
+        }
+      }
+      /**
+       * <code>optional .mesos.UdpStatistics udp_stats = 4;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.UdpStatistics, org.apache.mesos.Protos.UdpStatistics.Builder, org.apache.mesos.Protos.UdpStatisticsOrBuilder> 
+          getUdpStatsFieldBuilder() {
+        if (udpStatsBuilder_ == null) {
+          udpStatsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.UdpStatistics, org.apache.mesos.Protos.UdpStatistics.Builder, org.apache.mesos.Protos.UdpStatisticsOrBuilder>(
+                  udpStats_,
+                  getParentForChildren(),
+                  isClean());
+          udpStats_ = null;
+        }
+        return udpStatsBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.SNMPStatistics)
+    }
+
+    static {
+      defaultInstance = new SNMPStatistics(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.SNMPStatistics)
+  }
+
+  public interface DiskStatisticsOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional .mesos.Resource.DiskInfo.Source source = 1;
+    /**
+     * <code>optional .mesos.Resource.DiskInfo.Source source = 1;</code>
+     */
+    boolean hasSource();
+    /**
+     * <code>optional .mesos.Resource.DiskInfo.Source source = 1;</code>
+     */
+    org.apache.mesos.Protos.Resource.DiskInfo.Source getSource();
+    /**
+     * <code>optional .mesos.Resource.DiskInfo.Source source = 1;</code>
+     */
+    org.apache.mesos.Protos.Resource.DiskInfo.SourceOrBuilder getSourceOrBuilder();
+
+    // optional .mesos.Resource.DiskInfo.Persistence persistence = 2;
+    /**
+     * <code>optional .mesos.Resource.DiskInfo.Persistence persistence = 2;</code>
+     */
+    boolean hasPersistence();
+    /**
+     * <code>optional .mesos.Resource.DiskInfo.Persistence persistence = 2;</code>
+     */
+    org.apache.mesos.Protos.Resource.DiskInfo.Persistence getPersistence();
+    /**
+     * <code>optional .mesos.Resource.DiskInfo.Persistence persistence = 2;</code>
+     */
+    org.apache.mesos.Protos.Resource.DiskInfo.PersistenceOrBuilder getPersistenceOrBuilder();
+
+    // optional uint64 limit_bytes = 3;
+    /**
+     * <code>optional uint64 limit_bytes = 3;</code>
+     */
+    boolean hasLimitBytes();
+    /**
+     * <code>optional uint64 limit_bytes = 3;</code>
+     */
+    long getLimitBytes();
+
+    // optional uint64 used_bytes = 4;
+    /**
+     * <code>optional uint64 used_bytes = 4;</code>
+     */
+    boolean hasUsedBytes();
+    /**
+     * <code>optional uint64 used_bytes = 4;</code>
+     */
+    long getUsedBytes();
+  }
+  /**
+   * Protobuf type {@code mesos.DiskStatistics}
+   */
+  public static final class DiskStatistics extends
+      com.google.protobuf.GeneratedMessage
+      implements DiskStatisticsOrBuilder {
+    // Use DiskStatistics.newBuilder() to construct.
+    private DiskStatistics(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private DiskStatistics(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final DiskStatistics defaultInstance;
+    public static DiskStatistics getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public DiskStatistics getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private DiskStatistics(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              org.apache.mesos.Protos.Resource.DiskInfo.Source.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                subBuilder = source_.toBuilder();
+              }
+              source_ = input.readMessage(org.apache.mesos.Protos.Resource.DiskInfo.Source.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(source_);
+                source_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+            case 18: {
+              org.apache.mesos.Protos.Resource.DiskInfo.Persistence.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = persistence_.toBuilder();
+              }
+              persistence_ = input.readMessage(org.apache.mesos.Protos.Resource.DiskInfo.Persistence.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(persistence_);
+                persistence_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+            case 24: {
+              bitField0_ |= 0x00000004;
+              limitBytes_ = input.readUInt64();
+              break;
+            }
+            case 32: {
+              bitField0_ |= 0x00000008;
+              usedBytes_ = input.readUInt64();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_DiskStatistics_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_DiskStatistics_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.DiskStatistics.class, org.apache.mesos.Protos.DiskStatistics.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<DiskStatistics> PARSER =
+        new com.google.protobuf.AbstractParser<DiskStatistics>() {
+      public DiskStatistics parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new DiskStatistics(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<DiskStatistics> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // optional .mesos.Resource.DiskInfo.Source source = 1;
+    public static final int SOURCE_FIELD_NUMBER = 1;
+    private org.apache.mesos.Protos.Resource.DiskInfo.Source source_;
+    /**
+     * <code>optional .mesos.Resource.DiskInfo.Source source = 1;</code>
+     */
+    public boolean hasSource() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional .mesos.Resource.DiskInfo.Source source = 1;</code>
+     */
+    public org.apache.mesos.Protos.Resource.DiskInfo.Source getSource() {
+      return source_;
+    }
+    /**
+     * <code>optional .mesos.Resource.DiskInfo.Source source = 1;</code>
+     */
+    public org.apache.mesos.Protos.Resource.DiskInfo.SourceOrBuilder getSourceOrBuilder() {
+      return source_;
+    }
+
+    // optional .mesos.Resource.DiskInfo.Persistence persistence = 2;
+    public static final int PERSISTENCE_FIELD_NUMBER = 2;
+    private org.apache.mesos.Protos.Resource.DiskInfo.Persistence persistence_;
+    /**
+     * <code>optional .mesos.Resource.DiskInfo.Persistence persistence = 2;</code>
+     */
+    public boolean hasPersistence() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional .mesos.Resource.DiskInfo.Persistence persistence = 2;</code>
+     */
+    public org.apache.mesos.Protos.Resource.DiskInfo.Persistence getPersistence() {
+      return persistence_;
+    }
+    /**
+     * <code>optional .mesos.Resource.DiskInfo.Persistence persistence = 2;</code>
+     */
+    public org.apache.mesos.Protos.Resource.DiskInfo.PersistenceOrBuilder getPersistenceOrBuilder() {
+      return persistence_;
+    }
+
+    // optional uint64 limit_bytes = 3;
+    public static final int LIMIT_BYTES_FIELD_NUMBER = 3;
+    private long limitBytes_;
+    /**
+     * <code>optional uint64 limit_bytes = 3;</code>
+     */
+    public boolean hasLimitBytes() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional uint64 limit_bytes = 3;</code>
+     */
+    public long getLimitBytes() {
+      return limitBytes_;
+    }
+
+    // optional uint64 used_bytes = 4;
+    public static final int USED_BYTES_FIELD_NUMBER = 4;
+    private long usedBytes_;
+    /**
+     * <code>optional uint64 used_bytes = 4;</code>
+     */
+    public boolean hasUsedBytes() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional uint64 used_bytes = 4;</code>
+     */
+    public long getUsedBytes() {
+      return usedBytes_;
+    }
+
+    private void initFields() {
+      source_ = org.apache.mesos.Protos.Resource.DiskInfo.Source.getDefaultInstance();
+      persistence_ = org.apache.mesos.Protos.Resource.DiskInfo.Persistence.getDefaultInstance();
+      limitBytes_ = 0L;
+      usedBytes_ = 0L;
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (hasSource()) {
+        if (!getSource().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasPersistence()) {
+        if (!getPersistence().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeMessage(1, source_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(2, persistence_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeUInt64(3, limitBytes_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeUInt64(4, usedBytes_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, source_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, persistence_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(3, limitBytes_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(4, usedBytes_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.DiskStatistics parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.DiskStatistics parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.DiskStatistics parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.DiskStatistics parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.DiskStatistics parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.DiskStatistics parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.DiskStatistics parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.DiskStatistics parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.DiskStatistics parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.DiskStatistics parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.DiskStatistics prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.DiskStatistics}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.DiskStatisticsOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_DiskStatistics_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_DiskStatistics_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.DiskStatistics.class, org.apache.mesos.Protos.DiskStatistics.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.DiskStatistics.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getSourceFieldBuilder();
+          getPersistenceFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (sourceBuilder_ == null) {
+          source_ = org.apache.mesos.Protos.Resource.DiskInfo.Source.getDefaultInstance();
+        } else {
+          sourceBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (persistenceBuilder_ == null) {
+          persistence_ = org.apache.mesos.Protos.Resource.DiskInfo.Persistence.getDefaultInstance();
+        } else {
+          persistenceBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        limitBytes_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        usedBytes_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_DiskStatistics_descriptor;
+      }
+
+      public org.apache.mesos.Protos.DiskStatistics getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.DiskStatistics.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.DiskStatistics build() {
+        org.apache.mesos.Protos.DiskStatistics result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.DiskStatistics buildPartial() {
+        org.apache.mesos.Protos.DiskStatistics result = new org.apache.mesos.Protos.DiskStatistics(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        if (sourceBuilder_ == null) {
+          result.source_ = source_;
+        } else {
+          result.source_ = sourceBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (persistenceBuilder_ == null) {
+          result.persistence_ = persistence_;
+        } else {
+          result.persistence_ = persistenceBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.limitBytes_ = limitBytes_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.usedBytes_ = usedBytes_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.DiskStatistics) {
+          return mergeFrom((org.apache.mesos.Protos.DiskStatistics)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.DiskStatistics other) {
+        if (other == org.apache.mesos.Protos.DiskStatistics.getDefaultInstance()) return this;
+        if (other.hasSource()) {
+          mergeSource(other.getSource());
+        }
+        if (other.hasPersistence()) {
+          mergePersistence(other.getPersistence());
+        }
+        if (other.hasLimitBytes()) {
+          setLimitBytes(other.getLimitBytes());
+        }
+        if (other.hasUsedBytes()) {
+          setUsedBytes(other.getUsedBytes());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (hasSource()) {
+          if (!getSource().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasPersistence()) {
+          if (!getPersistence().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.DiskStatistics parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.DiskStatistics) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional .mesos.Resource.DiskInfo.Source source = 1;
+      private org.apache.mesos.Protos.Resource.DiskInfo.Source source_ = org.apache.mesos.Protos.Resource.DiskInfo.Source.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Resource.DiskInfo.Source, org.apache.mesos.Protos.Resource.DiskInfo.Source.Builder, org.apache.mesos.Protos.Resource.DiskInfo.SourceOrBuilder> sourceBuilder_;
+      /**
+       * <code>optional .mesos.Resource.DiskInfo.Source source = 1;</code>
+       */
+      public boolean hasSource() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.Resource.DiskInfo.Source source = 1;</code>
+       */
+      public org.apache.mesos.Protos.Resource.DiskInfo.Source getSource() {
+        if (sourceBuilder_ == null) {
+          return source_;
+        } else {
+          return sourceBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.Resource.DiskInfo.Source source = 1;</code>
+       */
+      public Builder setSource(org.apache.mesos.Protos.Resource.DiskInfo.Source value) {
+        if (sourceBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          source_ = value;
+          onChanged();
+        } else {
+          sourceBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Resource.DiskInfo.Source source = 1;</code>
+       */
+      public Builder setSource(
+          org.apache.mesos.Protos.Resource.DiskInfo.Source.Builder builderForValue) {
+        if (sourceBuilder_ == null) {
+          source_ = builderForValue.build();
+          onChanged();
+        } else {
+          sourceBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Resource.DiskInfo.Source source = 1;</code>
+       */
+      public Builder mergeSource(org.apache.mesos.Protos.Resource.DiskInfo.Source value) {
+        if (sourceBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001) &&
+              source_ != org.apache.mesos.Protos.Resource.DiskInfo.Source.getDefaultInstance()) {
+            source_ =
+              org.apache.mesos.Protos.Resource.DiskInfo.Source.newBuilder(source_).mergeFrom(value).buildPartial();
+          } else {
+            source_ = value;
+          }
+          onChanged();
+        } else {
+          sourceBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Resource.DiskInfo.Source source = 1;</code>
+       */
+      public Builder clearSource() {
+        if (sourceBuilder_ == null) {
+          source_ = org.apache.mesos.Protos.Resource.DiskInfo.Source.getDefaultInstance();
+          onChanged();
+        } else {
+          sourceBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Resource.DiskInfo.Source source = 1;</code>
+       */
+      public org.apache.mesos.Protos.Resource.DiskInfo.Source.Builder getSourceBuilder() {
+        bitField0_ |= 0x00000001;
+        onChanged();
+        return getSourceFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.Resource.DiskInfo.Source source = 1;</code>
+       */
+      public org.apache.mesos.Protos.Resource.DiskInfo.SourceOrBuilder getSourceOrBuilder() {
+        if (sourceBuilder_ != null) {
+          return sourceBuilder_.getMessageOrBuilder();
+        } else {
+          return source_;
+        }
+      }
+      /**
+       * <code>optional .mesos.Resource.DiskInfo.Source source = 1;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Resource.DiskInfo.Source, org.apache.mesos.Protos.Resource.DiskInfo.Source.Builder, org.apache.mesos.Protos.Resource.DiskInfo.SourceOrBuilder> 
+          getSourceFieldBuilder() {
+        if (sourceBuilder_ == null) {
+          sourceBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Resource.DiskInfo.Source, org.apache.mesos.Protos.Resource.DiskInfo.Source.Builder, org.apache.mesos.Protos.Resource.DiskInfo.SourceOrBuilder>(
+                  source_,
+                  getParentForChildren(),
+                  isClean());
+          source_ = null;
+        }
+        return sourceBuilder_;
+      }
+
+      // optional .mesos.Resource.DiskInfo.Persistence persistence = 2;
+      private org.apache.mesos.Protos.Resource.DiskInfo.Persistence persistence_ = org.apache.mesos.Protos.Resource.DiskInfo.Persistence.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Resource.DiskInfo.Persistence, org.apache.mesos.Protos.Resource.DiskInfo.Persistence.Builder, org.apache.mesos.Protos.Resource.DiskInfo.PersistenceOrBuilder> persistenceBuilder_;
+      /**
+       * <code>optional .mesos.Resource.DiskInfo.Persistence persistence = 2;</code>
+       */
+      public boolean hasPersistence() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.Resource.DiskInfo.Persistence persistence = 2;</code>
+       */
+      public org.apache.mesos.Protos.Resource.DiskInfo.Persistence getPersistence() {
+        if (persistenceBuilder_ == null) {
+          return persistence_;
+        } else {
+          return persistenceBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.Resource.DiskInfo.Persistence persistence = 2;</code>
+       */
+      public Builder setPersistence(org.apache.mesos.Protos.Resource.DiskInfo.Persistence value) {
+        if (persistenceBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          persistence_ = value;
+          onChanged();
+        } else {
+          persistenceBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Resource.DiskInfo.Persistence persistence = 2;</code>
+       */
+      public Builder setPersistence(
+          org.apache.mesos.Protos.Resource.DiskInfo.Persistence.Builder builderForValue) {
+        if (persistenceBuilder_ == null) {
+          persistence_ = builderForValue.build();
+          onChanged();
+        } else {
+          persistenceBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Resource.DiskInfo.Persistence persistence = 2;</code>
+       */
+      public Builder mergePersistence(org.apache.mesos.Protos.Resource.DiskInfo.Persistence value) {
+        if (persistenceBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              persistence_ != org.apache.mesos.Protos.Resource.DiskInfo.Persistence.getDefaultInstance()) {
+            persistence_ =
+              org.apache.mesos.Protos.Resource.DiskInfo.Persistence.newBuilder(persistence_).mergeFrom(value).buildPartial();
+          } else {
+            persistence_ = value;
+          }
+          onChanged();
+        } else {
+          persistenceBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Resource.DiskInfo.Persistence persistence = 2;</code>
+       */
+      public Builder clearPersistence() {
+        if (persistenceBuilder_ == null) {
+          persistence_ = org.apache.mesos.Protos.Resource.DiskInfo.Persistence.getDefaultInstance();
+          onChanged();
+        } else {
+          persistenceBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Resource.DiskInfo.Persistence persistence = 2;</code>
+       */
+      public org.apache.mesos.Protos.Resource.DiskInfo.Persistence.Builder getPersistenceBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getPersistenceFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.Resource.DiskInfo.Persistence persistence = 2;</code>
+       */
+      public org.apache.mesos.Protos.Resource.DiskInfo.PersistenceOrBuilder getPersistenceOrBuilder() {
+        if (persistenceBuilder_ != null) {
+          return persistenceBuilder_.getMessageOrBuilder();
+        } else {
+          return persistence_;
+        }
+      }
+      /**
+       * <code>optional .mesos.Resource.DiskInfo.Persistence persistence = 2;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Resource.DiskInfo.Persistence, org.apache.mesos.Protos.Resource.DiskInfo.Persistence.Builder, org.apache.mesos.Protos.Resource.DiskInfo.PersistenceOrBuilder> 
+          getPersistenceFieldBuilder() {
+        if (persistenceBuilder_ == null) {
+          persistenceBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Resource.DiskInfo.Persistence, org.apache.mesos.Protos.Resource.DiskInfo.Persistence.Builder, org.apache.mesos.Protos.Resource.DiskInfo.PersistenceOrBuilder>(
+                  persistence_,
+                  getParentForChildren(),
+                  isClean());
+          persistence_ = null;
+        }
+        return persistenceBuilder_;
+      }
+
+      // optional uint64 limit_bytes = 3;
+      private long limitBytes_ ;
+      /**
+       * <code>optional uint64 limit_bytes = 3;</code>
+       */
+      public boolean hasLimitBytes() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional uint64 limit_bytes = 3;</code>
+       */
+      public long getLimitBytes() {
+        return limitBytes_;
+      }
+      /**
+       * <code>optional uint64 limit_bytes = 3;</code>
+       */
+      public Builder setLimitBytes(long value) {
+        bitField0_ |= 0x00000004;
+        limitBytes_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 limit_bytes = 3;</code>
+       */
+      public Builder clearLimitBytes() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        limitBytes_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 used_bytes = 4;
+      private long usedBytes_ ;
+      /**
+       * <code>optional uint64 used_bytes = 4;</code>
+       */
+      public boolean hasUsedBytes() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional uint64 used_bytes = 4;</code>
+       */
+      public long getUsedBytes() {
+        return usedBytes_;
+      }
+      /**
+       * <code>optional uint64 used_bytes = 4;</code>
+       */
+      public Builder setUsedBytes(long value) {
+        bitField0_ |= 0x00000008;
+        usedBytes_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 used_bytes = 4;</code>
+       */
+      public Builder clearUsedBytes() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        usedBytes_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.DiskStatistics)
+    }
+
+    static {
+      defaultInstance = new DiskStatistics(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.DiskStatistics)
+  }
+
+  public interface ResourceStatisticsOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required double timestamp = 1;
+    /**
+     * <code>required double timestamp = 1;</code>
+     *
+     * <pre>
+     * Snapshot time, in seconds since the Epoch.
+     * </pre>
+     */
+    boolean hasTimestamp();
+    /**
+     * <code>required double timestamp = 1;</code>
+     *
+     * <pre>
+     * Snapshot time, in seconds since the Epoch.
+     * </pre>
+     */
+    double getTimestamp();
+
+    // optional uint32 processes = 30;
+    /**
+     * <code>optional uint32 processes = 30;</code>
+     */
+    boolean hasProcesses();
+    /**
+     * <code>optional uint32 processes = 30;</code>
+     */
+    int getProcesses();
+
+    // optional uint32 threads = 31;
+    /**
+     * <code>optional uint32 threads = 31;</code>
+     */
+    boolean hasThreads();
+    /**
+     * <code>optional uint32 threads = 31;</code>
+     */
+    int getThreads();
+
+    // optional double cpus_user_time_secs = 2;
+    /**
+     * <code>optional double cpus_user_time_secs = 2;</code>
+     *
+     * <pre>
+     * CPU Usage Information:
+     * Total CPU time spent in user mode, and kernel mode.
+     * </pre>
+     */
+    boolean hasCpusUserTimeSecs();
+    /**
+     * <code>optional double cpus_user_time_secs = 2;</code>
+     *
+     * <pre>
+     * CPU Usage Information:
+     * Total CPU time spent in user mode, and kernel mode.
+     * </pre>
+     */
+    double getCpusUserTimeSecs();
+
+    // optional double cpus_system_time_secs = 3;
+    /**
+     * <code>optional double cpus_system_time_secs = 3;</code>
+     */
+    boolean hasCpusSystemTimeSecs();
+    /**
+     * <code>optional double cpus_system_time_secs = 3;</code>
+     */
+    double getCpusSystemTimeSecs();
+
+    // optional double cpus_limit = 4;
+    /**
+     * <code>optional double cpus_limit = 4;</code>
+     *
+     * <pre>
+     * Number of CPUs allocated.
+     * </pre>
+     */
+    boolean hasCpusLimit();
+    /**
+     * <code>optional double cpus_limit = 4;</code>
+     *
+     * <pre>
+     * Number of CPUs allocated.
+     * </pre>
+     */
+    double getCpusLimit();
+
+    // optional uint32 cpus_nr_periods = 7;
+    /**
+     * <code>optional uint32 cpus_nr_periods = 7;</code>
+     *
+     * <pre>
+     * cpu.stat on process throttling (for contention issues).
+     * </pre>
+     */
+    boolean hasCpusNrPeriods();
+    /**
+     * <code>optional uint32 cpus_nr_periods = 7;</code>
+     *
+     * <pre>
+     * cpu.stat on process throttling (for contention issues).
+     * </pre>
+     */
+    int getCpusNrPeriods();
+
+    // optional uint32 cpus_nr_throttled = 8;
+    /**
+     * <code>optional uint32 cpus_nr_throttled = 8;</code>
+     */
+    boolean hasCpusNrThrottled();
+    /**
+     * <code>optional uint32 cpus_nr_throttled = 8;</code>
+     */
+    int getCpusNrThrottled();
+
+    // optional double cpus_throttled_time_secs = 9;
+    /**
+     * <code>optional double cpus_throttled_time_secs = 9;</code>
+     */
+    boolean hasCpusThrottledTimeSecs();
+    /**
+     * <code>optional double cpus_throttled_time_secs = 9;</code>
+     */
+    double getCpusThrottledTimeSecs();
+
+    // optional uint64 mem_total_bytes = 36;
+    /**
+     * <code>optional uint64 mem_total_bytes = 36;</code>
+     *
+     * <pre>
+     * mem_total_bytes was added in 0.23.0 to represent the total memory
+     * of a process in RAM (as opposed to in Swap). This was previously
+     * reported as mem_rss_bytes, which was also changed in 0.23.0 to
+     * represent only the anonymous memory usage, to keep in sync with
+     * Linux kernel's (arguably erroneous) use of terminology.
+     * </pre>
+     */
+    boolean hasMemTotalBytes();
+    /**
+     * <code>optional uint64 mem_total_bytes = 36;</code>
+     *
+     * <pre>
+     * mem_total_bytes was added in 0.23.0 to represent the total memory
+     * of a process in RAM (as opposed to in Swap). This was previously
+     * reported as mem_rss_bytes, which was also changed in 0.23.0 to
+     * represent only the anonymous memory usage, to keep in sync with
+     * Linux kernel's (arguably erroneous) use of terminology.
+     * </pre>
+     */
+    long getMemTotalBytes();
+
+    // optional uint64 mem_total_memsw_bytes = 37;
+    /**
+     * <code>optional uint64 mem_total_memsw_bytes = 37;</code>
+     *
+     * <pre>
+     * Total memory + swap usage. This is set if swap is enabled.
+     * </pre>
+     */
+    boolean hasMemTotalMemswBytes();
+    /**
+     * <code>optional uint64 mem_total_memsw_bytes = 37;</code>
+     *
+     * <pre>
+     * Total memory + swap usage. This is set if swap is enabled.
+     * </pre>
+     */
+    long getMemTotalMemswBytes();
+
+    // optional uint64 mem_limit_bytes = 6;
+    /**
+     * <code>optional uint64 mem_limit_bytes = 6;</code>
+     *
+     * <pre>
+     * Hard memory limit for a container.
+     * </pre>
+     */
+    boolean hasMemLimitBytes();
+    /**
+     * <code>optional uint64 mem_limit_bytes = 6;</code>
+     *
+     * <pre>
+     * Hard memory limit for a container.
+     * </pre>
+     */
+    long getMemLimitBytes();
+
+    // optional uint64 mem_soft_limit_bytes = 38;
+    /**
+     * <code>optional uint64 mem_soft_limit_bytes = 38;</code>
+     *
+     * <pre>
+     * Soft memory limit for a container.
+     * </pre>
+     */
+    boolean hasMemSoftLimitBytes();
+    /**
+     * <code>optional uint64 mem_soft_limit_bytes = 38;</code>
+     *
+     * <pre>
+     * Soft memory limit for a container.
+     * </pre>
+     */
+    long getMemSoftLimitBytes();
+
+    // optional uint64 mem_file_bytes = 10;
+    /**
+     * <code>optional uint64 mem_file_bytes = 10;</code>
+     *
+     * <pre>
+     * TODO(chzhcn) mem_file_bytes and mem_anon_bytes are deprecated in
+     * 0.23.0 and will be removed in 0.24.0.
+     * </pre>
+     */
+    boolean hasMemFileBytes();
+    /**
+     * <code>optional uint64 mem_file_bytes = 10;</code>
+     *
+     * <pre>
+     * TODO(chzhcn) mem_file_bytes and mem_anon_bytes are deprecated in
+     * 0.23.0 and will be removed in 0.24.0.
+     * </pre>
+     */
+    long getMemFileBytes();
+
+    // optional uint64 mem_anon_bytes = 11;
+    /**
+     * <code>optional uint64 mem_anon_bytes = 11;</code>
+     */
+    boolean hasMemAnonBytes();
+    /**
+     * <code>optional uint64 mem_anon_bytes = 11;</code>
+     */
+    long getMemAnonBytes();
+
+    // optional uint64 mem_cache_bytes = 39;
+    /**
+     * <code>optional uint64 mem_cache_bytes = 39;</code>
+     *
+     * <pre>
+     * mem_cache_bytes is added in 0.23.0 to represent page cache usage.
+     * </pre>
+     */
+    boolean hasMemCacheBytes();
+    /**
+     * <code>optional uint64 mem_cache_bytes = 39;</code>
+     *
+     * <pre>
+     * mem_cache_bytes is added in 0.23.0 to represent page cache usage.
+     * </pre>
+     */
+    long getMemCacheBytes();
+
+    // optional uint64 mem_rss_bytes = 5;
+    /**
+     * <code>optional uint64 mem_rss_bytes = 5;</code>
+     *
+     * <pre>
+     * Since 0.23.0, mem_rss_bytes is changed to represent only
+     * anonymous memory usage. Note that neither its requiredness, type,
+     * name nor numeric tag has been changed.
+     * </pre>
+     */
+    boolean hasMemRssBytes();
+    /**
+     * <code>optional uint64 mem_rss_bytes = 5;</code>
+     *
+     * <pre>
+     * Since 0.23.0, mem_rss_bytes is changed to represent only
+     * anonymous memory usage. Note that neither its requiredness, type,
+     * name nor numeric tag has been changed.
+     * </pre>
+     */
+    long getMemRssBytes();
+
+    // optional uint64 mem_mapped_file_bytes = 12;
+    /**
+     * <code>optional uint64 mem_mapped_file_bytes = 12;</code>
+     */
+    boolean hasMemMappedFileBytes();
+    /**
+     * <code>optional uint64 mem_mapped_file_bytes = 12;</code>
+     */
+    long getMemMappedFileBytes();
+
+    // optional uint64 mem_swap_bytes = 40;
+    /**
+     * <code>optional uint64 mem_swap_bytes = 40;</code>
+     *
+     * <pre>
+     * This is only set if swap is enabled.
+     * </pre>
+     */
+    boolean hasMemSwapBytes();
+    /**
+     * <code>optional uint64 mem_swap_bytes = 40;</code>
+     *
+     * <pre>
+     * This is only set if swap is enabled.
+     * </pre>
+     */
+    long getMemSwapBytes();
+
+    // optional uint64 mem_unevictable_bytes = 41;
+    /**
+     * <code>optional uint64 mem_unevictable_bytes = 41;</code>
+     */
+    boolean hasMemUnevictableBytes();
+    /**
+     * <code>optional uint64 mem_unevictable_bytes = 41;</code>
+     */
+    long getMemUnevictableBytes();
+
+    // optional uint64 mem_low_pressure_counter = 32;
+    /**
+     * <code>optional uint64 mem_low_pressure_counter = 32;</code>
+     *
+     * <pre>
+     * Number of occurrences of different levels of memory pressure
+     * events reported by memory cgroup. Pressure listening (re)starts
+     * with these values set to 0 when slave (re)starts. See
+     * https://www.kernel.org/doc/Documentation/cgroups/memory.txt for
+     * more details.
+     * </pre>
+     */
+    boolean hasMemLowPressureCounter();
+    /**
+     * <code>optional uint64 mem_low_pressure_counter = 32;</code>
+     *
+     * <pre>
+     * Number of occurrences of different levels of memory pressure
+     * events reported by memory cgroup. Pressure listening (re)starts
+     * with these values set to 0 when slave (re)starts. See
+     * https://www.kernel.org/doc/Documentation/cgroups/memory.txt for
+     * more details.
+     * </pre>
+     */
+    long getMemLowPressureCounter();
+
+    // optional uint64 mem_medium_pressure_counter = 33;
+    /**
+     * <code>optional uint64 mem_medium_pressure_counter = 33;</code>
+     */
+    boolean hasMemMediumPressureCounter();
+    /**
+     * <code>optional uint64 mem_medium_pressure_counter = 33;</code>
+     */
+    long getMemMediumPressureCounter();
+
+    // optional uint64 mem_critical_pressure_counter = 34;
+    /**
+     * <code>optional uint64 mem_critical_pressure_counter = 34;</code>
+     */
+    boolean hasMemCriticalPressureCounter();
+    /**
+     * <code>optional uint64 mem_critical_pressure_counter = 34;</code>
+     */
+    long getMemCriticalPressureCounter();
+
+    // optional uint64 disk_limit_bytes = 26;
+    /**
+     * <code>optional uint64 disk_limit_bytes = 26;</code>
+     *
+     * <pre>
+     * Disk Usage Information for executor working directory.
+     * </pre>
+     */
+    boolean hasDiskLimitBytes();
+    /**
+     * <code>optional uint64 disk_limit_bytes = 26;</code>
+     *
+     * <pre>
+     * Disk Usage Information for executor working directory.
+     * </pre>
+     */
+    long getDiskLimitBytes();
+
+    // optional uint64 disk_used_bytes = 27;
+    /**
+     * <code>optional uint64 disk_used_bytes = 27;</code>
+     */
+    boolean hasDiskUsedBytes();
+    /**
+     * <code>optional uint64 disk_used_bytes = 27;</code>
+     */
+    long getDiskUsedBytes();
+
+    // repeated .mesos.DiskStatistics disk_statistics = 43;
+    /**
+     * <code>repeated .mesos.DiskStatistics disk_statistics = 43;</code>
+     *
+     * <pre>
+     * Per disk (resource) statistics.
+     * </pre>
+     */
+    java.util.List<org.apache.mesos.Protos.DiskStatistics> 
+        getDiskStatisticsList();
+    /**
+     * <code>repeated .mesos.DiskStatistics disk_statistics = 43;</code>
+     *
+     * <pre>
+     * Per disk (resource) statistics.
+     * </pre>
+     */
+    org.apache.mesos.Protos.DiskStatistics getDiskStatistics(int index);
+    /**
+     * <code>repeated .mesos.DiskStatistics disk_statistics = 43;</code>
+     *
+     * <pre>
+     * Per disk (resource) statistics.
+     * </pre>
+     */
+    int getDiskStatisticsCount();
+    /**
+     * <code>repeated .mesos.DiskStatistics disk_statistics = 43;</code>
+     *
+     * <pre>
+     * Per disk (resource) statistics.
+     * </pre>
+     */
+    java.util.List<? extends org.apache.mesos.Protos.DiskStatisticsOrBuilder> 
+        getDiskStatisticsOrBuilderList();
+    /**
+     * <code>repeated .mesos.DiskStatistics disk_statistics = 43;</code>
+     *
+     * <pre>
+     * Per disk (resource) statistics.
+     * </pre>
+     */
+    org.apache.mesos.Protos.DiskStatisticsOrBuilder getDiskStatisticsOrBuilder(
+        int index);
+
+    // optional .mesos.CgroupInfo.Blkio.Statistics blkio_statistics = 44;
+    /**
+     * <code>optional .mesos.CgroupInfo.Blkio.Statistics blkio_statistics = 44;</code>
+     *
+     * <pre>
+     * Cgroups blkio statistics.
+     * </pre>
+     */
+    boolean hasBlkioStatistics();
+    /**
+     * <code>optional .mesos.CgroupInfo.Blkio.Statistics blkio_statistics = 44;</code>
+     *
+     * <pre>
+     * Cgroups blkio statistics.
+     * </pre>
+     */
+    org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics getBlkioStatistics();
+    /**
+     * <code>optional .mesos.CgroupInfo.Blkio.Statistics blkio_statistics = 44;</code>
+     *
+     * <pre>
+     * Cgroups blkio statistics.
+     * </pre>
+     */
+    org.apache.mesos.Protos.CgroupInfo.Blkio.StatisticsOrBuilder getBlkioStatisticsOrBuilder();
+
+    // optional .mesos.PerfStatistics perf = 13;
+    /**
+     * <code>optional .mesos.PerfStatistics perf = 13;</code>
+     *
+     * <pre>
+     * Perf statistics.
+     * </pre>
+     */
+    boolean hasPerf();
+    /**
+     * <code>optional .mesos.PerfStatistics perf = 13;</code>
+     *
+     * <pre>
+     * Perf statistics.
+     * </pre>
+     */
+    org.apache.mesos.Protos.PerfStatistics getPerf();
+    /**
+     * <code>optional .mesos.PerfStatistics perf = 13;</code>
+     *
+     * <pre>
+     * Perf statistics.
+     * </pre>
+     */
+    org.apache.mesos.Protos.PerfStatisticsOrBuilder getPerfOrBuilder();
+
+    // optional uint64 net_rx_packets = 14;
+    /**
+     * <code>optional uint64 net_rx_packets = 14;</code>
+     *
+     * <pre>
+     * Network Usage Information:
+     * </pre>
+     */
+    boolean hasNetRxPackets();
+    /**
+     * <code>optional uint64 net_rx_packets = 14;</code>
+     *
+     * <pre>
+     * Network Usage Information:
+     * </pre>
+     */
+    long getNetRxPackets();
+
+    // optional uint64 net_rx_bytes = 15;
+    /**
+     * <code>optional uint64 net_rx_bytes = 15;</code>
+     */
+    boolean hasNetRxBytes();
+    /**
+     * <code>optional uint64 net_rx_bytes = 15;</code>
+     */
+    long getNetRxBytes();
+
+    // optional uint64 net_rx_errors = 16;
+    /**
+     * <code>optional uint64 net_rx_errors = 16;</code>
+     */
+    boolean hasNetRxErrors();
+    /**
+     * <code>optional uint64 net_rx_errors = 16;</code>
+     */
+    long getNetRxErrors();
+
+    // optional uint64 net_rx_dropped = 17;
+    /**
+     * <code>optional uint64 net_rx_dropped = 17;</code>
+     */
+    boolean hasNetRxDropped();
+    /**
+     * <code>optional uint64 net_rx_dropped = 17;</code>
+     */
+    long getNetRxDropped();
+
+    // optional uint64 net_tx_packets = 18;
+    /**
+     * <code>optional uint64 net_tx_packets = 18;</code>
+     */
+    boolean hasNetTxPackets();
+    /**
+     * <code>optional uint64 net_tx_packets = 18;</code>
+     */
+    long getNetTxPackets();
+
+    // optional uint64 net_tx_bytes = 19;
+    /**
+     * <code>optional uint64 net_tx_bytes = 19;</code>
+     */
+    boolean hasNetTxBytes();
+    /**
+     * <code>optional uint64 net_tx_bytes = 19;</code>
+     */
+    long getNetTxBytes();
+
+    // optional uint64 net_tx_errors = 20;
+    /**
+     * <code>optional uint64 net_tx_errors = 20;</code>
+     */
+    boolean hasNetTxErrors();
+    /**
+     * <code>optional uint64 net_tx_errors = 20;</code>
+     */
+    long getNetTxErrors();
+
+    // optional uint64 net_tx_dropped = 21;
+    /**
+     * <code>optional uint64 net_tx_dropped = 21;</code>
+     */
+    boolean hasNetTxDropped();
+    /**
+     * <code>optional uint64 net_tx_dropped = 21;</code>
+     */
+    long getNetTxDropped();
+
+    // optional double net_tcp_rtt_microsecs_p50 = 22;
+    /**
+     * <code>optional double net_tcp_rtt_microsecs_p50 = 22;</code>
+     *
+     * <pre>
+     * The kernel keeps track of RTT (round-trip time) for its TCP
+     * sockets. RTT is a way to tell the latency of a container.
+     * </pre>
+     */
+    boolean hasNetTcpRttMicrosecsP50();
+    /**
+     * <code>optional double net_tcp_rtt_microsecs_p50 = 22;</code>
+     *
+     * <pre>
+     * The kernel keeps track of RTT (round-trip time) for its TCP
+     * sockets. RTT is a way to tell the latency of a container.
+     * </pre>
+     */
+    double getNetTcpRttMicrosecsP50();
+
+    // optional double net_tcp_rtt_microsecs_p90 = 23;
+    /**
+     * <code>optional double net_tcp_rtt_microsecs_p90 = 23;</code>
+     */
+    boolean hasNetTcpRttMicrosecsP90();
+    /**
+     * <code>optional double net_tcp_rtt_microsecs_p90 = 23;</code>
+     */
+    double getNetTcpRttMicrosecsP90();
+
+    // optional double net_tcp_rtt_microsecs_p95 = 24;
+    /**
+     * <code>optional double net_tcp_rtt_microsecs_p95 = 24;</code>
+     */
+    boolean hasNetTcpRttMicrosecsP95();
+    /**
+     * <code>optional double net_tcp_rtt_microsecs_p95 = 24;</code>
+     */
+    double getNetTcpRttMicrosecsP95();
+
+    // optional double net_tcp_rtt_microsecs_p99 = 25;
+    /**
+     * <code>optional double net_tcp_rtt_microsecs_p99 = 25;</code>
+     */
+    boolean hasNetTcpRttMicrosecsP99();
+    /**
+     * <code>optional double net_tcp_rtt_microsecs_p99 = 25;</code>
+     */
+    double getNetTcpRttMicrosecsP99();
+
+    // optional double net_tcp_active_connections = 28;
+    /**
+     * <code>optional double net_tcp_active_connections = 28;</code>
+     */
+    boolean hasNetTcpActiveConnections();
+    /**
+     * <code>optional double net_tcp_active_connections = 28;</code>
+     */
+    double getNetTcpActiveConnections();
+
+    // optional double net_tcp_time_wait_connections = 29;
+    /**
+     * <code>optional double net_tcp_time_wait_connections = 29;</code>
+     */
+    boolean hasNetTcpTimeWaitConnections();
+    /**
+     * <code>optional double net_tcp_time_wait_connections = 29;</code>
+     */
+    double getNetTcpTimeWaitConnections();
+
+    // repeated .mesos.TrafficControlStatistics net_traffic_control_statistics = 35;
+    /**
+     * <code>repeated .mesos.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+     *
+     * <pre>
+     * Network traffic flowing into or out of a container can be delayed
+     * or dropped due to congestion or policy inside and outside the
+     * container.
+     * </pre>
+     */
+    java.util.List<org.apache.mesos.Protos.TrafficControlStatistics> 
+        getNetTrafficControlStatisticsList();
+    /**
+     * <code>repeated .mesos.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+     *
+     * <pre>
+     * Network traffic flowing into or out of a container can be delayed
+     * or dropped due to congestion or policy inside and outside the
+     * container.
+     * </pre>
+     */
+    org.apache.mesos.Protos.TrafficControlStatistics getNetTrafficControlStatistics(int index);
+    /**
+     * <code>repeated .mesos.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+     *
+     * <pre>
+     * Network traffic flowing into or out of a container can be delayed
+     * or dropped due to congestion or policy inside and outside the
+     * container.
+     * </pre>
+     */
+    int getNetTrafficControlStatisticsCount();
+    /**
+     * <code>repeated .mesos.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+     *
+     * <pre>
+     * Network traffic flowing into or out of a container can be delayed
+     * or dropped due to congestion or policy inside and outside the
+     * container.
+     * </pre>
+     */
+    java.util.List<? extends org.apache.mesos.Protos.TrafficControlStatisticsOrBuilder> 
+        getNetTrafficControlStatisticsOrBuilderList();
+    /**
+     * <code>repeated .mesos.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+     *
+     * <pre>
+     * Network traffic flowing into or out of a container can be delayed
+     * or dropped due to congestion or policy inside and outside the
+     * container.
+     * </pre>
+     */
+    org.apache.mesos.Protos.TrafficControlStatisticsOrBuilder getNetTrafficControlStatisticsOrBuilder(
+        int index);
+
+    // optional .mesos.SNMPStatistics net_snmp_statistics = 42;
+    /**
+     * <code>optional .mesos.SNMPStatistics net_snmp_statistics = 42;</code>
+     *
+     * <pre>
+     * Network SNMP statistics for each container.
+     * </pre>
+     */
+    boolean hasNetSnmpStatistics();
+    /**
+     * <code>optional .mesos.SNMPStatistics net_snmp_statistics = 42;</code>
+     *
+     * <pre>
+     * Network SNMP statistics for each container.
+     * </pre>
+     */
+    org.apache.mesos.Protos.SNMPStatistics getNetSnmpStatistics();
+    /**
+     * <code>optional .mesos.SNMPStatistics net_snmp_statistics = 42;</code>
+     *
+     * <pre>
+     * Network SNMP statistics for each container.
+     * </pre>
+     */
+    org.apache.mesos.Protos.SNMPStatisticsOrBuilder getNetSnmpStatisticsOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.ResourceStatistics}
+   *
+   * <pre>
+   **
+   * A snapshot of resource usage statistics.
+   * </pre>
+   */
+  public static final class ResourceStatistics extends
+      com.google.protobuf.GeneratedMessage
+      implements ResourceStatisticsOrBuilder {
+    // Use ResourceStatistics.newBuilder() to construct.
+    private ResourceStatistics(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private ResourceStatistics(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final ResourceStatistics defaultInstance;
+    public static ResourceStatistics getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public ResourceStatistics getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private ResourceStatistics(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      int mutable_bitField1_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 9: {
+              bitField0_ |= 0x00000001;
+              timestamp_ = input.readDouble();
+              break;
+            }
+            case 17: {
+              bitField0_ |= 0x00000008;
+              cpusUserTimeSecs_ = input.readDouble();
+              break;
+            }
+            case 25: {
+              bitField0_ |= 0x00000010;
+              cpusSystemTimeSecs_ = input.readDouble();
+              break;
+            }
+            case 33: {
+              bitField0_ |= 0x00000020;
+              cpusLimit_ = input.readDouble();
+              break;
+            }
+            case 40: {
+              bitField0_ |= 0x00010000;
+              memRssBytes_ = input.readUInt64();
+              break;
+            }
+            case 48: {
+              bitField0_ |= 0x00000800;
+              memLimitBytes_ = input.readUInt64();
+              break;
+            }
+            case 56: {
+              bitField0_ |= 0x00000040;
+              cpusNrPeriods_ = input.readUInt32();
+              break;
+            }
+            case 64: {
+              bitField0_ |= 0x00000080;
+              cpusNrThrottled_ = input.readUInt32();
+              break;
+            }
+            case 73: {
+              bitField0_ |= 0x00000100;
+              cpusThrottledTimeSecs_ = input.readDouble();
+              break;
+            }
+            case 80: {
+              bitField0_ |= 0x00002000;
+              memFileBytes_ = input.readUInt64();
+              break;
+            }
+            case 88: {
+              bitField0_ |= 0x00004000;
+              memAnonBytes_ = input.readUInt64();
+              break;
+            }
+            case 96: {
+              bitField0_ |= 0x00020000;
+              memMappedFileBytes_ = input.readUInt64();
+              break;
+            }
+            case 106: {
+              org.apache.mesos.Protos.PerfStatistics.Builder subBuilder = null;
+              if (((bitField0_ & 0x04000000) == 0x04000000)) {
+                subBuilder = perf_.toBuilder();
+              }
+              perf_ = input.readMessage(org.apache.mesos.Protos.PerfStatistics.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(perf_);
+                perf_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x04000000;
+              break;
+            }
+            case 112: {
+              bitField0_ |= 0x08000000;
+              netRxPackets_ = input.readUInt64();
+              break;
+            }
+            case 120: {
+              bitField0_ |= 0x10000000;
+              netRxBytes_ = input.readUInt64();
+              break;
+            }
+            case 128: {
+              bitField0_ |= 0x20000000;
+              netRxErrors_ = input.readUInt64();
+              break;
+            }
+            case 136: {
+              bitField0_ |= 0x40000000;
+              netRxDropped_ = input.readUInt64();
+              break;
+            }
+            case 144: {
+              bitField0_ |= 0x80000000;
+              netTxPackets_ = input.readUInt64();
+              break;
+            }
+            case 152: {
+              bitField1_ |= 0x00000001;
+              netTxBytes_ = input.readUInt64();
+              break;
+            }
+            case 160: {
+              bitField1_ |= 0x00000002;
+              netTxErrors_ = input.readUInt64();
+              break;
+            }
+            case 168: {
+              bitField1_ |= 0x00000004;
+              netTxDropped_ = input.readUInt64();
+              break;
+            }
+            case 177: {
+              bitField1_ |= 0x00000008;
+              netTcpRttMicrosecsP50_ = input.readDouble();
+              break;
+            }
+            case 185: {
+              bitField1_ |= 0x00000010;
+              netTcpRttMicrosecsP90_ = input.readDouble();
+              break;
+            }
+            case 193: {
+              bitField1_ |= 0x00000020;
+              netTcpRttMicrosecsP95_ = input.readDouble();
+              break;
+            }
+            case 201: {
+              bitField1_ |= 0x00000040;
+              netTcpRttMicrosecsP99_ = input.readDouble();
+              break;
+            }
+            case 208: {
+              bitField0_ |= 0x00800000;
+              diskLimitBytes_ = input.readUInt64();
+              break;
+            }
+            case 216: {
+              bitField0_ |= 0x01000000;
+              diskUsedBytes_ = input.readUInt64();
+              break;
+            }
+            case 225: {
+              bitField1_ |= 0x00000080;
+              netTcpActiveConnections_ = input.readDouble();
+              break;
+            }
+            case 233: {
+              bitField1_ |= 0x00000100;
+              netTcpTimeWaitConnections_ = input.readDouble();
+              break;
+            }
+            case 240: {
+              bitField0_ |= 0x00000002;
+              processes_ = input.readUInt32();
+              break;
+            }
+            case 248: {
+              bitField0_ |= 0x00000004;
+              threads_ = input.readUInt32();
+              break;
+            }
+            case 256: {
+              bitField0_ |= 0x00100000;
+              memLowPressureCounter_ = input.readUInt64();
+              break;
+            }
+            case 264: {
+              bitField0_ |= 0x00200000;
+              memMediumPressureCounter_ = input.readUInt64();
+              break;
+            }
+            case 272: {
+              bitField0_ |= 0x00400000;
+              memCriticalPressureCounter_ = input.readUInt64();
+              break;
+            }
+            case 282: {
+              if (!((mutable_bitField1_ & 0x00000400) == 0x00000400)) {
+                netTrafficControlStatistics_ = new java.util.ArrayList<org.apache.mesos.Protos.TrafficControlStatistics>();
+                mutable_bitField1_ |= 0x00000400;
+              }
+              netTrafficControlStatistics_.add(input.readMessage(org.apache.mesos.Protos.TrafficControlStatistics.PARSER, extensionRegistry));
+              break;
+            }
+            case 288: {
+              bitField0_ |= 0x00000200;
+              memTotalBytes_ = input.readUInt64();
+              break;
+            }
+            case 296: {
+              bitField0_ |= 0x00000400;
+              memTotalMemswBytes_ = input.readUInt64();
+              break;
+            }
+            case 304: {
+              bitField0_ |= 0x00001000;
+              memSoftLimitBytes_ = input.readUInt64();
+              break;
+            }
+            case 312: {
+              bitField0_ |= 0x00008000;
+              memCacheBytes_ = input.readUInt64();
+              break;
+            }
+            case 320: {
+              bitField0_ |= 0x00040000;
+              memSwapBytes_ = input.readUInt64();
+              break;
+            }
+            case 328: {
+              bitField0_ |= 0x00080000;
+              memUnevictableBytes_ = input.readUInt64();
+              break;
+            }
+            case 338: {
+              org.apache.mesos.Protos.SNMPStatistics.Builder subBuilder = null;
+              if (((bitField1_ & 0x00000200) == 0x00000200)) {
+                subBuilder = netSnmpStatistics_.toBuilder();
+              }
+              netSnmpStatistics_ = input.readMessage(org.apache.mesos.Protos.SNMPStatistics.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(netSnmpStatistics_);
+                netSnmpStatistics_ = subBuilder.buildPartial();
+              }
+              bitField1_ |= 0x00000200;
+              break;
+            }
+            case 346: {
+              if (!((mutable_bitField0_ & 0x02000000) == 0x02000000)) {
+                diskStatistics_ = new java.util.ArrayList<org.apache.mesos.Protos.DiskStatistics>();
+                mutable_bitField0_ |= 0x02000000;
+              }
+              diskStatistics_.add(input.readMessage(org.apache.mesos.Protos.DiskStatistics.PARSER, extensionRegistry));
+              break;
+            }
+            case 354: {
+              org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics.Builder subBuilder = null;
+              if (((bitField0_ & 0x02000000) == 0x02000000)) {
+                subBuilder = blkioStatistics_.toBuilder();
+              }
+              blkioStatistics_ = input.readMessage(org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(blkioStatistics_);
+                blkioStatistics_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x02000000;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField1_ & 0x00000400) == 0x00000400)) {
+          netTrafficControlStatistics_ = java.util.Collections.unmodifiableList(netTrafficControlStatistics_);
+        }
+        if (((mutable_bitField0_ & 0x02000000) == 0x02000000)) {
+          diskStatistics_ = java.util.Collections.unmodifiableList(diskStatistics_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_ResourceStatistics_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_ResourceStatistics_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.ResourceStatistics.class, org.apache.mesos.Protos.ResourceStatistics.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<ResourceStatistics> PARSER =
+        new com.google.protobuf.AbstractParser<ResourceStatistics>() {
+      public ResourceStatistics parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new ResourceStatistics(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<ResourceStatistics> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    private int bitField1_;
+    // required double timestamp = 1;
+    public static final int TIMESTAMP_FIELD_NUMBER = 1;
+    private double timestamp_;
+    /**
+     * <code>required double timestamp = 1;</code>
+     *
+     * <pre>
+     * Snapshot time, in seconds since the Epoch.
+     * </pre>
+     */
+    public boolean hasTimestamp() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required double timestamp = 1;</code>
+     *
+     * <pre>
+     * Snapshot time, in seconds since the Epoch.
+     * </pre>
+     */
+    public double getTimestamp() {
+      return timestamp_;
+    }
+
+    // optional uint32 processes = 30;
+    public static final int PROCESSES_FIELD_NUMBER = 30;
+    private int processes_;
+    /**
+     * <code>optional uint32 processes = 30;</code>
+     */
+    public boolean hasProcesses() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional uint32 processes = 30;</code>
+     */
+    public int getProcesses() {
+      return processes_;
+    }
+
+    // optional uint32 threads = 31;
+    public static final int THREADS_FIELD_NUMBER = 31;
+    private int threads_;
+    /**
+     * <code>optional uint32 threads = 31;</code>
+     */
+    public boolean hasThreads() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional uint32 threads = 31;</code>
+     */
+    public int getThreads() {
+      return threads_;
+    }
+
+    // optional double cpus_user_time_secs = 2;
+    public static final int CPUS_USER_TIME_SECS_FIELD_NUMBER = 2;
+    private double cpusUserTimeSecs_;
+    /**
+     * <code>optional double cpus_user_time_secs = 2;</code>
+     *
+     * <pre>
+     * CPU Usage Information:
+     * Total CPU time spent in user mode, and kernel mode.
+     * </pre>
+     */
+    public boolean hasCpusUserTimeSecs() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional double cpus_user_time_secs = 2;</code>
+     *
+     * <pre>
+     * CPU Usage Information:
+     * Total CPU time spent in user mode, and kernel mode.
+     * </pre>
+     */
+    public double getCpusUserTimeSecs() {
+      return cpusUserTimeSecs_;
+    }
+
+    // optional double cpus_system_time_secs = 3;
+    public static final int CPUS_SYSTEM_TIME_SECS_FIELD_NUMBER = 3;
+    private double cpusSystemTimeSecs_;
+    /**
+     * <code>optional double cpus_system_time_secs = 3;</code>
+     */
+    public boolean hasCpusSystemTimeSecs() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional double cpus_system_time_secs = 3;</code>
+     */
+    public double getCpusSystemTimeSecs() {
+      return cpusSystemTimeSecs_;
+    }
+
+    // optional double cpus_limit = 4;
+    public static final int CPUS_LIMIT_FIELD_NUMBER = 4;
+    private double cpusLimit_;
+    /**
+     * <code>optional double cpus_limit = 4;</code>
+     *
+     * <pre>
+     * Number of CPUs allocated.
+     * </pre>
+     */
+    public boolean hasCpusLimit() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional double cpus_limit = 4;</code>
+     *
+     * <pre>
+     * Number of CPUs allocated.
+     * </pre>
+     */
+    public double getCpusLimit() {
+      return cpusLimit_;
+    }
+
+    // optional uint32 cpus_nr_periods = 7;
+    public static final int CPUS_NR_PERIODS_FIELD_NUMBER = 7;
+    private int cpusNrPeriods_;
+    /**
+     * <code>optional uint32 cpus_nr_periods = 7;</code>
+     *
+     * <pre>
+     * cpu.stat on process throttling (for contention issues).
+     * </pre>
+     */
+    public boolean hasCpusNrPeriods() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional uint32 cpus_nr_periods = 7;</code>
+     *
+     * <pre>
+     * cpu.stat on process throttling (for contention issues).
+     * </pre>
+     */
+    public int getCpusNrPeriods() {
+      return cpusNrPeriods_;
+    }
+
+    // optional uint32 cpus_nr_throttled = 8;
+    public static final int CPUS_NR_THROTTLED_FIELD_NUMBER = 8;
+    private int cpusNrThrottled_;
+    /**
+     * <code>optional uint32 cpus_nr_throttled = 8;</code>
+     */
+    public boolean hasCpusNrThrottled() {
+      return ((bitField0_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional uint32 cpus_nr_throttled = 8;</code>
+     */
+    public int getCpusNrThrottled() {
+      return cpusNrThrottled_;
+    }
+
+    // optional double cpus_throttled_time_secs = 9;
+    public static final int CPUS_THROTTLED_TIME_SECS_FIELD_NUMBER = 9;
+    private double cpusThrottledTimeSecs_;
+    /**
+     * <code>optional double cpus_throttled_time_secs = 9;</code>
+     */
+    public boolean hasCpusThrottledTimeSecs() {
+      return ((bitField0_ & 0x00000100) == 0x00000100);
+    }
+    /**
+     * <code>optional double cpus_throttled_time_secs = 9;</code>
+     */
+    public double getCpusThrottledTimeSecs() {
+      return cpusThrottledTimeSecs_;
+    }
+
+    // optional uint64 mem_total_bytes = 36;
+    public static final int MEM_TOTAL_BYTES_FIELD_NUMBER = 36;
+    private long memTotalBytes_;
+    /**
+     * <code>optional uint64 mem_total_bytes = 36;</code>
+     *
+     * <pre>
+     * mem_total_bytes was added in 0.23.0 to represent the total memory
+     * of a process in RAM (as opposed to in Swap). This was previously
+     * reported as mem_rss_bytes, which was also changed in 0.23.0 to
+     * represent only the anonymous memory usage, to keep in sync with
+     * Linux kernel's (arguably erroneous) use of terminology.
+     * </pre>
+     */
+    public boolean hasMemTotalBytes() {
+      return ((bitField0_ & 0x00000200) == 0x00000200);
+    }
+    /**
+     * <code>optional uint64 mem_total_bytes = 36;</code>
+     *
+     * <pre>
+     * mem_total_bytes was added in 0.23.0 to represent the total memory
+     * of a process in RAM (as opposed to in Swap). This was previously
+     * reported as mem_rss_bytes, which was also changed in 0.23.0 to
+     * represent only the anonymous memory usage, to keep in sync with
+     * Linux kernel's (arguably erroneous) use of terminology.
+     * </pre>
+     */
+    public long getMemTotalBytes() {
+      return memTotalBytes_;
+    }
+
+    // optional uint64 mem_total_memsw_bytes = 37;
+    public static final int MEM_TOTAL_MEMSW_BYTES_FIELD_NUMBER = 37;
+    private long memTotalMemswBytes_;
+    /**
+     * <code>optional uint64 mem_total_memsw_bytes = 37;</code>
+     *
+     * <pre>
+     * Total memory + swap usage. This is set if swap is enabled.
+     * </pre>
+     */
+    public boolean hasMemTotalMemswBytes() {
+      return ((bitField0_ & 0x00000400) == 0x00000400);
+    }
+    /**
+     * <code>optional uint64 mem_total_memsw_bytes = 37;</code>
+     *
+     * <pre>
+     * Total memory + swap usage. This is set if swap is enabled.
+     * </pre>
+     */
+    public long getMemTotalMemswBytes() {
+      return memTotalMemswBytes_;
+    }
+
+    // optional uint64 mem_limit_bytes = 6;
+    public static final int MEM_LIMIT_BYTES_FIELD_NUMBER = 6;
+    private long memLimitBytes_;
+    /**
+     * <code>optional uint64 mem_limit_bytes = 6;</code>
+     *
+     * <pre>
+     * Hard memory limit for a container.
+     * </pre>
+     */
+    public boolean hasMemLimitBytes() {
+      return ((bitField0_ & 0x00000800) == 0x00000800);
+    }
+    /**
+     * <code>optional uint64 mem_limit_bytes = 6;</code>
+     *
+     * <pre>
+     * Hard memory limit for a container.
+     * </pre>
+     */
+    public long getMemLimitBytes() {
+      return memLimitBytes_;
+    }
+
+    // optional uint64 mem_soft_limit_bytes = 38;
+    public static final int MEM_SOFT_LIMIT_BYTES_FIELD_NUMBER = 38;
+    private long memSoftLimitBytes_;
+    /**
+     * <code>optional uint64 mem_soft_limit_bytes = 38;</code>
+     *
+     * <pre>
+     * Soft memory limit for a container.
+     * </pre>
+     */
+    public boolean hasMemSoftLimitBytes() {
+      return ((bitField0_ & 0x00001000) == 0x00001000);
+    }
+    /**
+     * <code>optional uint64 mem_soft_limit_bytes = 38;</code>
+     *
+     * <pre>
+     * Soft memory limit for a container.
+     * </pre>
+     */
+    public long getMemSoftLimitBytes() {
+      return memSoftLimitBytes_;
+    }
+
+    // optional uint64 mem_file_bytes = 10;
+    public static final int MEM_FILE_BYTES_FIELD_NUMBER = 10;
+    private long memFileBytes_;
+    /**
+     * <code>optional uint64 mem_file_bytes = 10;</code>
+     *
+     * <pre>
+     * TODO(chzhcn) mem_file_bytes and mem_anon_bytes are deprecated in
+     * 0.23.0 and will be removed in 0.24.0.
+     * </pre>
+     */
+    public boolean hasMemFileBytes() {
+      return ((bitField0_ & 0x00002000) == 0x00002000);
+    }
+    /**
+     * <code>optional uint64 mem_file_bytes = 10;</code>
+     *
+     * <pre>
+     * TODO(chzhcn) mem_file_bytes and mem_anon_bytes are deprecated in
+     * 0.23.0 and will be removed in 0.24.0.
+     * </pre>
+     */
+    public long getMemFileBytes() {
+      return memFileBytes_;
+    }
+
+    // optional uint64 mem_anon_bytes = 11;
+    public static final int MEM_ANON_BYTES_FIELD_NUMBER = 11;
+    private long memAnonBytes_;
+    /**
+     * <code>optional uint64 mem_anon_bytes = 11;</code>
+     */
+    public boolean hasMemAnonBytes() {
+      return ((bitField0_ & 0x00004000) == 0x00004000);
+    }
+    /**
+     * <code>optional uint64 mem_anon_bytes = 11;</code>
+     */
+    public long getMemAnonBytes() {
+      return memAnonBytes_;
+    }
+
+    // optional uint64 mem_cache_bytes = 39;
+    public static final int MEM_CACHE_BYTES_FIELD_NUMBER = 39;
+    private long memCacheBytes_;
+    /**
+     * <code>optional uint64 mem_cache_bytes = 39;</code>
+     *
+     * <pre>
+     * mem_cache_bytes is added in 0.23.0 to represent page cache usage.
+     * </pre>
+     */
+    public boolean hasMemCacheBytes() {
+      return ((bitField0_ & 0x00008000) == 0x00008000);
+    }
+    /**
+     * <code>optional uint64 mem_cache_bytes = 39;</code>
+     *
+     * <pre>
+     * mem_cache_bytes is added in 0.23.0 to represent page cache usage.
+     * </pre>
+     */
+    public long getMemCacheBytes() {
+      return memCacheBytes_;
+    }
+
+    // optional uint64 mem_rss_bytes = 5;
+    public static final int MEM_RSS_BYTES_FIELD_NUMBER = 5;
+    private long memRssBytes_;
+    /**
+     * <code>optional uint64 mem_rss_bytes = 5;</code>
+     *
+     * <pre>
+     * Since 0.23.0, mem_rss_bytes is changed to represent only
+     * anonymous memory usage. Note that neither its requiredness, type,
+     * name nor numeric tag has been changed.
+     * </pre>
+     */
+    public boolean hasMemRssBytes() {
+      return ((bitField0_ & 0x00010000) == 0x00010000);
+    }
+    /**
+     * <code>optional uint64 mem_rss_bytes = 5;</code>
+     *
+     * <pre>
+     * Since 0.23.0, mem_rss_bytes is changed to represent only
+     * anonymous memory usage. Note that neither its requiredness, type,
+     * name nor numeric tag has been changed.
+     * </pre>
+     */
+    public long getMemRssBytes() {
+      return memRssBytes_;
+    }
+
+    // optional uint64 mem_mapped_file_bytes = 12;
+    public static final int MEM_MAPPED_FILE_BYTES_FIELD_NUMBER = 12;
+    private long memMappedFileBytes_;
+    /**
+     * <code>optional uint64 mem_mapped_file_bytes = 12;</code>
+     */
+    public boolean hasMemMappedFileBytes() {
+      return ((bitField0_ & 0x00020000) == 0x00020000);
+    }
+    /**
+     * <code>optional uint64 mem_mapped_file_bytes = 12;</code>
+     */
+    public long getMemMappedFileBytes() {
+      return memMappedFileBytes_;
+    }
+
+    // optional uint64 mem_swap_bytes = 40;
+    public static final int MEM_SWAP_BYTES_FIELD_NUMBER = 40;
+    private long memSwapBytes_;
+    /**
+     * <code>optional uint64 mem_swap_bytes = 40;</code>
+     *
+     * <pre>
+     * This is only set if swap is enabled.
+     * </pre>
+     */
+    public boolean hasMemSwapBytes() {
+      return ((bitField0_ & 0x00040000) == 0x00040000);
+    }
+    /**
+     * <code>optional uint64 mem_swap_bytes = 40;</code>
+     *
+     * <pre>
+     * This is only set if swap is enabled.
+     * </pre>
+     */
+    public long getMemSwapBytes() {
+      return memSwapBytes_;
+    }
+
+    // optional uint64 mem_unevictable_bytes = 41;
+    public static final int MEM_UNEVICTABLE_BYTES_FIELD_NUMBER = 41;
+    private long memUnevictableBytes_;
+    /**
+     * <code>optional uint64 mem_unevictable_bytes = 41;</code>
+     */
+    public boolean hasMemUnevictableBytes() {
+      return ((bitField0_ & 0x00080000) == 0x00080000);
+    }
+    /**
+     * <code>optional uint64 mem_unevictable_bytes = 41;</code>
+     */
+    public long getMemUnevictableBytes() {
+      return memUnevictableBytes_;
+    }
+
+    // optional uint64 mem_low_pressure_counter = 32;
+    public static final int MEM_LOW_PRESSURE_COUNTER_FIELD_NUMBER = 32;
+    private long memLowPressureCounter_;
+    /**
+     * <code>optional uint64 mem_low_pressure_counter = 32;</code>
+     *
+     * <pre>
+     * Number of occurrences of different levels of memory pressure
+     * events reported by memory cgroup. Pressure listening (re)starts
+     * with these values set to 0 when slave (re)starts. See
+     * https://www.kernel.org/doc/Documentation/cgroups/memory.txt for
+     * more details.
+     * </pre>
+     */
+    public boolean hasMemLowPressureCounter() {
+      return ((bitField0_ & 0x00100000) == 0x00100000);
+    }
+    /**
+     * <code>optional uint64 mem_low_pressure_counter = 32;</code>
+     *
+     * <pre>
+     * Number of occurrences of different levels of memory pressure
+     * events reported by memory cgroup. Pressure listening (re)starts
+     * with these values set to 0 when slave (re)starts. See
+     * https://www.kernel.org/doc/Documentation/cgroups/memory.txt for
+     * more details.
+     * </pre>
+     */
+    public long getMemLowPressureCounter() {
+      return memLowPressureCounter_;
+    }
+
+    // optional uint64 mem_medium_pressure_counter = 33;
+    public static final int MEM_MEDIUM_PRESSURE_COUNTER_FIELD_NUMBER = 33;
+    private long memMediumPressureCounter_;
+    /**
+     * <code>optional uint64 mem_medium_pressure_counter = 33;</code>
+     */
+    public boolean hasMemMediumPressureCounter() {
+      return ((bitField0_ & 0x00200000) == 0x00200000);
+    }
+    /**
+     * <code>optional uint64 mem_medium_pressure_counter = 33;</code>
+     */
+    public long getMemMediumPressureCounter() {
+      return memMediumPressureCounter_;
+    }
+
+    // optional uint64 mem_critical_pressure_counter = 34;
+    public static final int MEM_CRITICAL_PRESSURE_COUNTER_FIELD_NUMBER = 34;
+    private long memCriticalPressureCounter_;
+    /**
+     * <code>optional uint64 mem_critical_pressure_counter = 34;</code>
+     */
+    public boolean hasMemCriticalPressureCounter() {
+      return ((bitField0_ & 0x00400000) == 0x00400000);
+    }
+    /**
+     * <code>optional uint64 mem_critical_pressure_counter = 34;</code>
+     */
+    public long getMemCriticalPressureCounter() {
+      return memCriticalPressureCounter_;
+    }
+
+    // optional uint64 disk_limit_bytes = 26;
+    public static final int DISK_LIMIT_BYTES_FIELD_NUMBER = 26;
+    private long diskLimitBytes_;
+    /**
+     * <code>optional uint64 disk_limit_bytes = 26;</code>
+     *
+     * <pre>
+     * Disk Usage Information for executor working directory.
+     * </pre>
+     */
+    public boolean hasDiskLimitBytes() {
+      return ((bitField0_ & 0x00800000) == 0x00800000);
+    }
+    /**
+     * <code>optional uint64 disk_limit_bytes = 26;</code>
+     *
+     * <pre>
+     * Disk Usage Information for executor working directory.
+     * </pre>
+     */
+    public long getDiskLimitBytes() {
+      return diskLimitBytes_;
+    }
+
+    // optional uint64 disk_used_bytes = 27;
+    public static final int DISK_USED_BYTES_FIELD_NUMBER = 27;
+    private long diskUsedBytes_;
+    /**
+     * <code>optional uint64 disk_used_bytes = 27;</code>
+     */
+    public boolean hasDiskUsedBytes() {
+      return ((bitField0_ & 0x01000000) == 0x01000000);
+    }
+    /**
+     * <code>optional uint64 disk_used_bytes = 27;</code>
+     */
+    public long getDiskUsedBytes() {
+      return diskUsedBytes_;
+    }
+
+    // repeated .mesos.DiskStatistics disk_statistics = 43;
+    public static final int DISK_STATISTICS_FIELD_NUMBER = 43;
+    private java.util.List<org.apache.mesos.Protos.DiskStatistics> diskStatistics_;
+    /**
+     * <code>repeated .mesos.DiskStatistics disk_statistics = 43;</code>
+     *
+     * <pre>
+     * Per disk (resource) statistics.
+     * </pre>
+     */
+    public java.util.List<org.apache.mesos.Protos.DiskStatistics> getDiskStatisticsList() {
+      return diskStatistics_;
+    }
+    /**
+     * <code>repeated .mesos.DiskStatistics disk_statistics = 43;</code>
+     *
+     * <pre>
+     * Per disk (resource) statistics.
+     * </pre>
+     */
+    public java.util.List<? extends org.apache.mesos.Protos.DiskStatisticsOrBuilder> 
+        getDiskStatisticsOrBuilderList() {
+      return diskStatistics_;
+    }
+    /**
+     * <code>repeated .mesos.DiskStatistics disk_statistics = 43;</code>
+     *
+     * <pre>
+     * Per disk (resource) statistics.
+     * </pre>
+     */
+    public int getDiskStatisticsCount() {
+      return diskStatistics_.size();
+    }
+    /**
+     * <code>repeated .mesos.DiskStatistics disk_statistics = 43;</code>
+     *
+     * <pre>
+     * Per disk (resource) statistics.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.DiskStatistics getDiskStatistics(int index) {
+      return diskStatistics_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.DiskStatistics disk_statistics = 43;</code>
+     *
+     * <pre>
+     * Per disk (resource) statistics.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.DiskStatisticsOrBuilder getDiskStatisticsOrBuilder(
+        int index) {
+      return diskStatistics_.get(index);
+    }
+
+    // optional .mesos.CgroupInfo.Blkio.Statistics blkio_statistics = 44;
+    public static final int BLKIO_STATISTICS_FIELD_NUMBER = 44;
+    private org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics blkioStatistics_;
+    /**
+     * <code>optional .mesos.CgroupInfo.Blkio.Statistics blkio_statistics = 44;</code>
+     *
+     * <pre>
+     * Cgroups blkio statistics.
+     * </pre>
+     */
+    public boolean hasBlkioStatistics() {
+      return ((bitField0_ & 0x02000000) == 0x02000000);
+    }
+    /**
+     * <code>optional .mesos.CgroupInfo.Blkio.Statistics blkio_statistics = 44;</code>
+     *
+     * <pre>
+     * Cgroups blkio statistics.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics getBlkioStatistics() {
+      return blkioStatistics_;
+    }
+    /**
+     * <code>optional .mesos.CgroupInfo.Blkio.Statistics blkio_statistics = 44;</code>
+     *
+     * <pre>
+     * Cgroups blkio statistics.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.CgroupInfo.Blkio.StatisticsOrBuilder getBlkioStatisticsOrBuilder() {
+      return blkioStatistics_;
+    }
+
+    // optional .mesos.PerfStatistics perf = 13;
+    public static final int PERF_FIELD_NUMBER = 13;
+    private org.apache.mesos.Protos.PerfStatistics perf_;
+    /**
+     * <code>optional .mesos.PerfStatistics perf = 13;</code>
+     *
+     * <pre>
+     * Perf statistics.
+     * </pre>
+     */
+    public boolean hasPerf() {
+      return ((bitField0_ & 0x04000000) == 0x04000000);
+    }
+    /**
+     * <code>optional .mesos.PerfStatistics perf = 13;</code>
+     *
+     * <pre>
+     * Perf statistics.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.PerfStatistics getPerf() {
+      return perf_;
+    }
+    /**
+     * <code>optional .mesos.PerfStatistics perf = 13;</code>
+     *
+     * <pre>
+     * Perf statistics.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.PerfStatisticsOrBuilder getPerfOrBuilder() {
+      return perf_;
+    }
+
+    // optional uint64 net_rx_packets = 14;
+    public static final int NET_RX_PACKETS_FIELD_NUMBER = 14;
+    private long netRxPackets_;
+    /**
+     * <code>optional uint64 net_rx_packets = 14;</code>
+     *
+     * <pre>
+     * Network Usage Information:
+     * </pre>
+     */
+    public boolean hasNetRxPackets() {
+      return ((bitField0_ & 0x08000000) == 0x08000000);
+    }
+    /**
+     * <code>optional uint64 net_rx_packets = 14;</code>
+     *
+     * <pre>
+     * Network Usage Information:
+     * </pre>
+     */
+    public long getNetRxPackets() {
+      return netRxPackets_;
+    }
+
+    // optional uint64 net_rx_bytes = 15;
+    public static final int NET_RX_BYTES_FIELD_NUMBER = 15;
+    private long netRxBytes_;
+    /**
+     * <code>optional uint64 net_rx_bytes = 15;</code>
+     */
+    public boolean hasNetRxBytes() {
+      return ((bitField0_ & 0x10000000) == 0x10000000);
+    }
+    /**
+     * <code>optional uint64 net_rx_bytes = 15;</code>
+     */
+    public long getNetRxBytes() {
+      return netRxBytes_;
+    }
+
+    // optional uint64 net_rx_errors = 16;
+    public static final int NET_RX_ERRORS_FIELD_NUMBER = 16;
+    private long netRxErrors_;
+    /**
+     * <code>optional uint64 net_rx_errors = 16;</code>
+     */
+    public boolean hasNetRxErrors() {
+      return ((bitField0_ & 0x20000000) == 0x20000000);
+    }
+    /**
+     * <code>optional uint64 net_rx_errors = 16;</code>
+     */
+    public long getNetRxErrors() {
+      return netRxErrors_;
+    }
+
+    // optional uint64 net_rx_dropped = 17;
+    public static final int NET_RX_DROPPED_FIELD_NUMBER = 17;
+    private long netRxDropped_;
+    /**
+     * <code>optional uint64 net_rx_dropped = 17;</code>
+     */
+    public boolean hasNetRxDropped() {
+      return ((bitField0_ & 0x40000000) == 0x40000000);
+    }
+    /**
+     * <code>optional uint64 net_rx_dropped = 17;</code>
+     */
+    public long getNetRxDropped() {
+      return netRxDropped_;
+    }
+
+    // optional uint64 net_tx_packets = 18;
+    public static final int NET_TX_PACKETS_FIELD_NUMBER = 18;
+    private long netTxPackets_;
+    /**
+     * <code>optional uint64 net_tx_packets = 18;</code>
+     */
+    public boolean hasNetTxPackets() {
+      return ((bitField0_ & 0x80000000) == 0x80000000);
+    }
+    /**
+     * <code>optional uint64 net_tx_packets = 18;</code>
+     */
+    public long getNetTxPackets() {
+      return netTxPackets_;
+    }
+
+    // optional uint64 net_tx_bytes = 19;
+    public static final int NET_TX_BYTES_FIELD_NUMBER = 19;
+    private long netTxBytes_;
+    /**
+     * <code>optional uint64 net_tx_bytes = 19;</code>
+     */
+    public boolean hasNetTxBytes() {
+      return ((bitField1_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional uint64 net_tx_bytes = 19;</code>
+     */
+    public long getNetTxBytes() {
+      return netTxBytes_;
+    }
+
+    // optional uint64 net_tx_errors = 20;
+    public static final int NET_TX_ERRORS_FIELD_NUMBER = 20;
+    private long netTxErrors_;
+    /**
+     * <code>optional uint64 net_tx_errors = 20;</code>
+     */
+    public boolean hasNetTxErrors() {
+      return ((bitField1_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional uint64 net_tx_errors = 20;</code>
+     */
+    public long getNetTxErrors() {
+      return netTxErrors_;
+    }
+
+    // optional uint64 net_tx_dropped = 21;
+    public static final int NET_TX_DROPPED_FIELD_NUMBER = 21;
+    private long netTxDropped_;
+    /**
+     * <code>optional uint64 net_tx_dropped = 21;</code>
+     */
+    public boolean hasNetTxDropped() {
+      return ((bitField1_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional uint64 net_tx_dropped = 21;</code>
+     */
+    public long getNetTxDropped() {
+      return netTxDropped_;
+    }
+
+    // optional double net_tcp_rtt_microsecs_p50 = 22;
+    public static final int NET_TCP_RTT_MICROSECS_P50_FIELD_NUMBER = 22;
+    private double netTcpRttMicrosecsP50_;
+    /**
+     * <code>optional double net_tcp_rtt_microsecs_p50 = 22;</code>
+     *
+     * <pre>
+     * The kernel keeps track of RTT (round-trip time) for its TCP
+     * sockets. RTT is a way to tell the latency of a container.
+     * </pre>
+     */
+    public boolean hasNetTcpRttMicrosecsP50() {
+      return ((bitField1_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional double net_tcp_rtt_microsecs_p50 = 22;</code>
+     *
+     * <pre>
+     * The kernel keeps track of RTT (round-trip time) for its TCP
+     * sockets. RTT is a way to tell the latency of a container.
+     * </pre>
+     */
+    public double getNetTcpRttMicrosecsP50() {
+      return netTcpRttMicrosecsP50_;
+    }
+
+    // optional double net_tcp_rtt_microsecs_p90 = 23;
+    public static final int NET_TCP_RTT_MICROSECS_P90_FIELD_NUMBER = 23;
+    private double netTcpRttMicrosecsP90_;
+    /**
+     * <code>optional double net_tcp_rtt_microsecs_p90 = 23;</code>
+     */
+    public boolean hasNetTcpRttMicrosecsP90() {
+      return ((bitField1_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional double net_tcp_rtt_microsecs_p90 = 23;</code>
+     */
+    public double getNetTcpRttMicrosecsP90() {
+      return netTcpRttMicrosecsP90_;
+    }
+
+    // optional double net_tcp_rtt_microsecs_p95 = 24;
+    public static final int NET_TCP_RTT_MICROSECS_P95_FIELD_NUMBER = 24;
+    private double netTcpRttMicrosecsP95_;
+    /**
+     * <code>optional double net_tcp_rtt_microsecs_p95 = 24;</code>
+     */
+    public boolean hasNetTcpRttMicrosecsP95() {
+      return ((bitField1_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional double net_tcp_rtt_microsecs_p95 = 24;</code>
+     */
+    public double getNetTcpRttMicrosecsP95() {
+      return netTcpRttMicrosecsP95_;
+    }
+
+    // optional double net_tcp_rtt_microsecs_p99 = 25;
+    public static final int NET_TCP_RTT_MICROSECS_P99_FIELD_NUMBER = 25;
+    private double netTcpRttMicrosecsP99_;
+    /**
+     * <code>optional double net_tcp_rtt_microsecs_p99 = 25;</code>
+     */
+    public boolean hasNetTcpRttMicrosecsP99() {
+      return ((bitField1_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional double net_tcp_rtt_microsecs_p99 = 25;</code>
+     */
+    public double getNetTcpRttMicrosecsP99() {
+      return netTcpRttMicrosecsP99_;
+    }
+
+    // optional double net_tcp_active_connections = 28;
+    public static final int NET_TCP_ACTIVE_CONNECTIONS_FIELD_NUMBER = 28;
+    private double netTcpActiveConnections_;
+    /**
+     * <code>optional double net_tcp_active_connections = 28;</code>
+     */
+    public boolean hasNetTcpActiveConnections() {
+      return ((bitField1_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional double net_tcp_active_connections = 28;</code>
+     */
+    public double getNetTcpActiveConnections() {
+      return netTcpActiveConnections_;
+    }
+
+    // optional double net_tcp_time_wait_connections = 29;
+    public static final int NET_TCP_TIME_WAIT_CONNECTIONS_FIELD_NUMBER = 29;
+    private double netTcpTimeWaitConnections_;
+    /**
+     * <code>optional double net_tcp_time_wait_connections = 29;</code>
+     */
+    public boolean hasNetTcpTimeWaitConnections() {
+      return ((bitField1_ & 0x00000100) == 0x00000100);
+    }
+    /**
+     * <code>optional double net_tcp_time_wait_connections = 29;</code>
+     */
+    public double getNetTcpTimeWaitConnections() {
+      return netTcpTimeWaitConnections_;
+    }
+
+    // repeated .mesos.TrafficControlStatistics net_traffic_control_statistics = 35;
+    public static final int NET_TRAFFIC_CONTROL_STATISTICS_FIELD_NUMBER = 35;
+    private java.util.List<org.apache.mesos.Protos.TrafficControlStatistics> netTrafficControlStatistics_;
+    /**
+     * <code>repeated .mesos.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+     *
+     * <pre>
+     * Network traffic flowing into or out of a container can be delayed
+     * or dropped due to congestion or policy inside and outside the
+     * container.
+     * </pre>
+     */
+    public java.util.List<org.apache.mesos.Protos.TrafficControlStatistics> getNetTrafficControlStatisticsList() {
+      return netTrafficControlStatistics_;
+    }
+    /**
+     * <code>repeated .mesos.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+     *
+     * <pre>
+     * Network traffic flowing into or out of a container can be delayed
+     * or dropped due to congestion or policy inside and outside the
+     * container.
+     * </pre>
+     */
+    public java.util.List<? extends org.apache.mesos.Protos.TrafficControlStatisticsOrBuilder> 
+        getNetTrafficControlStatisticsOrBuilderList() {
+      return netTrafficControlStatistics_;
+    }
+    /**
+     * <code>repeated .mesos.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+     *
+     * <pre>
+     * Network traffic flowing into or out of a container can be delayed
+     * or dropped due to congestion or policy inside and outside the
+     * container.
+     * </pre>
+     */
+    public int getNetTrafficControlStatisticsCount() {
+      return netTrafficControlStatistics_.size();
+    }
+    /**
+     * <code>repeated .mesos.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+     *
+     * <pre>
+     * Network traffic flowing into or out of a container can be delayed
+     * or dropped due to congestion or policy inside and outside the
+     * container.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.TrafficControlStatistics getNetTrafficControlStatistics(int index) {
+      return netTrafficControlStatistics_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+     *
+     * <pre>
+     * Network traffic flowing into or out of a container can be delayed
+     * or dropped due to congestion or policy inside and outside the
+     * container.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.TrafficControlStatisticsOrBuilder getNetTrafficControlStatisticsOrBuilder(
+        int index) {
+      return netTrafficControlStatistics_.get(index);
+    }
+
+    // optional .mesos.SNMPStatistics net_snmp_statistics = 42;
+    public static final int NET_SNMP_STATISTICS_FIELD_NUMBER = 42;
+    private org.apache.mesos.Protos.SNMPStatistics netSnmpStatistics_;
+    /**
+     * <code>optional .mesos.SNMPStatistics net_snmp_statistics = 42;</code>
+     *
+     * <pre>
+     * Network SNMP statistics for each container.
+     * </pre>
+     */
+    public boolean hasNetSnmpStatistics() {
+      return ((bitField1_ & 0x00000200) == 0x00000200);
+    }
+    /**
+     * <code>optional .mesos.SNMPStatistics net_snmp_statistics = 42;</code>
+     *
+     * <pre>
+     * Network SNMP statistics for each container.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.SNMPStatistics getNetSnmpStatistics() {
+      return netSnmpStatistics_;
+    }
+    /**
+     * <code>optional .mesos.SNMPStatistics net_snmp_statistics = 42;</code>
+     *
+     * <pre>
+     * Network SNMP statistics for each container.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.SNMPStatisticsOrBuilder getNetSnmpStatisticsOrBuilder() {
+      return netSnmpStatistics_;
+    }
+
+    private void initFields() {
+      timestamp_ = 0D;
+      processes_ = 0;
+      threads_ = 0;
+      cpusUserTimeSecs_ = 0D;
+      cpusSystemTimeSecs_ = 0D;
+      cpusLimit_ = 0D;
+      cpusNrPeriods_ = 0;
+      cpusNrThrottled_ = 0;
+      cpusThrottledTimeSecs_ = 0D;
+      memTotalBytes_ = 0L;
+      memTotalMemswBytes_ = 0L;
+      memLimitBytes_ = 0L;
+      memSoftLimitBytes_ = 0L;
+      memFileBytes_ = 0L;
+      memAnonBytes_ = 0L;
+      memCacheBytes_ = 0L;
+      memRssBytes_ = 0L;
+      memMappedFileBytes_ = 0L;
+      memSwapBytes_ = 0L;
+      memUnevictableBytes_ = 0L;
+      memLowPressureCounter_ = 0L;
+      memMediumPressureCounter_ = 0L;
+      memCriticalPressureCounter_ = 0L;
+      diskLimitBytes_ = 0L;
+      diskUsedBytes_ = 0L;
+      diskStatistics_ = java.util.Collections.emptyList();
+      blkioStatistics_ = org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics.getDefaultInstance();
+      perf_ = org.apache.mesos.Protos.PerfStatistics.getDefaultInstance();
+      netRxPackets_ = 0L;
+      netRxBytes_ = 0L;
+      netRxErrors_ = 0L;
+      netRxDropped_ = 0L;
+      netTxPackets_ = 0L;
+      netTxBytes_ = 0L;
+      netTxErrors_ = 0L;
+      netTxDropped_ = 0L;
+      netTcpRttMicrosecsP50_ = 0D;
+      netTcpRttMicrosecsP90_ = 0D;
+      netTcpRttMicrosecsP95_ = 0D;
+      netTcpRttMicrosecsP99_ = 0D;
+      netTcpActiveConnections_ = 0D;
+      netTcpTimeWaitConnections_ = 0D;
+      netTrafficControlStatistics_ = java.util.Collections.emptyList();
+      netSnmpStatistics_ = org.apache.mesos.Protos.SNMPStatistics.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasTimestamp()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      for (int i = 0; i < getDiskStatisticsCount(); i++) {
+        if (!getDiskStatistics(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasBlkioStatistics()) {
+        if (!getBlkioStatistics().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasPerf()) {
+        if (!getPerf().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      for (int i = 0; i < getNetTrafficControlStatisticsCount(); i++) {
+        if (!getNetTrafficControlStatistics(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeDouble(1, timestamp_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeDouble(2, cpusUserTimeSecs_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeDouble(3, cpusSystemTimeSecs_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeDouble(4, cpusLimit_);
+      }
+      if (((bitField0_ & 0x00010000) == 0x00010000)) {
+        output.writeUInt64(5, memRssBytes_);
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        output.writeUInt64(6, memLimitBytes_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeUInt32(7, cpusNrPeriods_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        output.writeUInt32(8, cpusNrThrottled_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        output.writeDouble(9, cpusThrottledTimeSecs_);
+      }
+      if (((bitField0_ & 0x00002000) == 0x00002000)) {
+        output.writeUInt64(10, memFileBytes_);
+      }
+      if (((bitField0_ & 0x00004000) == 0x00004000)) {
+        output.writeUInt64(11, memAnonBytes_);
+      }
+      if (((bitField0_ & 0x00020000) == 0x00020000)) {
+        output.writeUInt64(12, memMappedFileBytes_);
+      }
+      if (((bitField0_ & 0x04000000) == 0x04000000)) {
+        output.writeMessage(13, perf_);
+      }
+      if (((bitField0_ & 0x08000000) == 0x08000000)) {
+        output.writeUInt64(14, netRxPackets_);
+      }
+      if (((bitField0_ & 0x10000000) == 0x10000000)) {
+        output.writeUInt64(15, netRxBytes_);
+      }
+      if (((bitField0_ & 0x20000000) == 0x20000000)) {
+        output.writeUInt64(16, netRxErrors_);
+      }
+      if (((bitField0_ & 0x40000000) == 0x40000000)) {
+        output.writeUInt64(17, netRxDropped_);
+      }
+      if (((bitField0_ & 0x80000000) == 0x80000000)) {
+        output.writeUInt64(18, netTxPackets_);
+      }
+      if (((bitField1_ & 0x00000001) == 0x00000001)) {
+        output.writeUInt64(19, netTxBytes_);
+      }
+      if (((bitField1_ & 0x00000002) == 0x00000002)) {
+        output.writeUInt64(20, netTxErrors_);
+      }
+      if (((bitField1_ & 0x00000004) == 0x00000004)) {
+        output.writeUInt64(21, netTxDropped_);
+      }
+      if (((bitField1_ & 0x00000008) == 0x00000008)) {
+        output.writeDouble(22, netTcpRttMicrosecsP50_);
+      }
+      if (((bitField1_ & 0x00000010) == 0x00000010)) {
+        output.writeDouble(23, netTcpRttMicrosecsP90_);
+      }
+      if (((bitField1_ & 0x00000020) == 0x00000020)) {
+        output.writeDouble(24, netTcpRttMicrosecsP95_);
+      }
+      if (((bitField1_ & 0x00000040) == 0x00000040)) {
+        output.writeDouble(25, netTcpRttMicrosecsP99_);
+      }
+      if (((bitField0_ & 0x00800000) == 0x00800000)) {
+        output.writeUInt64(26, diskLimitBytes_);
+      }
+      if (((bitField0_ & 0x01000000) == 0x01000000)) {
+        output.writeUInt64(27, diskUsedBytes_);
+      }
+      if (((bitField1_ & 0x00000080) == 0x00000080)) {
+        output.writeDouble(28, netTcpActiveConnections_);
+      }
+      if (((bitField1_ & 0x00000100) == 0x00000100)) {
+        output.writeDouble(29, netTcpTimeWaitConnections_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeUInt32(30, processes_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeUInt32(31, threads_);
+      }
+      if (((bitField0_ & 0x00100000) == 0x00100000)) {
+        output.writeUInt64(32, memLowPressureCounter_);
+      }
+      if (((bitField0_ & 0x00200000) == 0x00200000)) {
+        output.writeUInt64(33, memMediumPressureCounter_);
+      }
+      if (((bitField0_ & 0x00400000) == 0x00400000)) {
+        output.writeUInt64(34, memCriticalPressureCounter_);
+      }
+      for (int i = 0; i < netTrafficControlStatistics_.size(); i++) {
+        output.writeMessage(35, netTrafficControlStatistics_.get(i));
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        output.writeUInt64(36, memTotalBytes_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        output.writeUInt64(37, memTotalMemswBytes_);
+      }
+      if (((bitField0_ & 0x00001000) == 0x00001000)) {
+        output.writeUInt64(38, memSoftLimitBytes_);
+      }
+      if (((bitField0_ & 0x00008000) == 0x00008000)) {
+        output.writeUInt64(39, memCacheBytes_);
+      }
+      if (((bitField0_ & 0x00040000) == 0x00040000)) {
+        output.writeUInt64(40, memSwapBytes_);
+      }
+      if (((bitField0_ & 0x00080000) == 0x00080000)) {
+        output.writeUInt64(41, memUnevictableBytes_);
+      }
+      if (((bitField1_ & 0x00000200) == 0x00000200)) {
+        output.writeMessage(42, netSnmpStatistics_);
+      }
+      for (int i = 0; i < diskStatistics_.size(); i++) {
+        output.writeMessage(43, diskStatistics_.get(i));
+      }
+      if (((bitField0_ & 0x02000000) == 0x02000000)) {
+        output.writeMessage(44, blkioStatistics_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(1, timestamp_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(2, cpusUserTimeSecs_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(3, cpusSystemTimeSecs_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(4, cpusLimit_);
+      }
+      if (((bitField0_ & 0x00010000) == 0x00010000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(5, memRssBytes_);
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(6, memLimitBytes_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(7, cpusNrPeriods_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(8, cpusNrThrottled_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(9, cpusThrottledTimeSecs_);
+      }
+      if (((bitField0_ & 0x00002000) == 0x00002000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(10, memFileBytes_);
+      }
+      if (((bitField0_ & 0x00004000) == 0x00004000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(11, memAnonBytes_);
+      }
+      if (((bitField0_ & 0x00020000) == 0x00020000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(12, memMappedFileBytes_);
+      }
+      if (((bitField0_ & 0x04000000) == 0x04000000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(13, perf_);
+      }
+      if (((bitField0_ & 0x08000000) == 0x08000000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(14, netRxPackets_);
+      }
+      if (((bitField0_ & 0x10000000) == 0x10000000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(15, netRxBytes_);
+      }
+      if (((bitField0_ & 0x20000000) == 0x20000000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(16, netRxErrors_);
+      }
+      if (((bitField0_ & 0x40000000) == 0x40000000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(17, netRxDropped_);
+      }
+      if (((bitField0_ & 0x80000000) == 0x80000000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(18, netTxPackets_);
+      }
+      if (((bitField1_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(19, netTxBytes_);
+      }
+      if (((bitField1_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(20, netTxErrors_);
+      }
+      if (((bitField1_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(21, netTxDropped_);
+      }
+      if (((bitField1_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(22, netTcpRttMicrosecsP50_);
+      }
+      if (((bitField1_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(23, netTcpRttMicrosecsP90_);
+      }
+      if (((bitField1_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(24, netTcpRttMicrosecsP95_);
+      }
+      if (((bitField1_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(25, netTcpRttMicrosecsP99_);
+      }
+      if (((bitField0_ & 0x00800000) == 0x00800000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(26, diskLimitBytes_);
+      }
+      if (((bitField0_ & 0x01000000) == 0x01000000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(27, diskUsedBytes_);
+      }
+      if (((bitField1_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(28, netTcpActiveConnections_);
+      }
+      if (((bitField1_ & 0x00000100) == 0x00000100)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(29, netTcpTimeWaitConnections_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(30, processes_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(31, threads_);
+      }
+      if (((bitField0_ & 0x00100000) == 0x00100000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(32, memLowPressureCounter_);
+      }
+      if (((bitField0_ & 0x00200000) == 0x00200000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(33, memMediumPressureCounter_);
+      }
+      if (((bitField0_ & 0x00400000) == 0x00400000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(34, memCriticalPressureCounter_);
+      }
+      for (int i = 0; i < netTrafficControlStatistics_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(35, netTrafficControlStatistics_.get(i));
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(36, memTotalBytes_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(37, memTotalMemswBytes_);
+      }
+      if (((bitField0_ & 0x00001000) == 0x00001000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(38, memSoftLimitBytes_);
+      }
+      if (((bitField0_ & 0x00008000) == 0x00008000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(39, memCacheBytes_);
+      }
+      if (((bitField0_ & 0x00040000) == 0x00040000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(40, memSwapBytes_);
+      }
+      if (((bitField0_ & 0x00080000) == 0x00080000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(41, memUnevictableBytes_);
+      }
+      if (((bitField1_ & 0x00000200) == 0x00000200)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(42, netSnmpStatistics_);
+      }
+      for (int i = 0; i < diskStatistics_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(43, diskStatistics_.get(i));
+      }
+      if (((bitField0_ & 0x02000000) == 0x02000000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(44, blkioStatistics_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.ResourceStatistics parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.ResourceStatistics parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.ResourceStatistics parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.ResourceStatistics parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.ResourceStatistics parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.ResourceStatistics parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.ResourceStatistics parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.ResourceStatistics parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.ResourceStatistics parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.ResourceStatistics parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.ResourceStatistics prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.ResourceStatistics}
+     *
+     * <pre>
+     **
+     * A snapshot of resource usage statistics.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.ResourceStatisticsOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_ResourceStatistics_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_ResourceStatistics_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.ResourceStatistics.class, org.apache.mesos.Protos.ResourceStatistics.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.ResourceStatistics.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getDiskStatisticsFieldBuilder();
+          getBlkioStatisticsFieldBuilder();
+          getPerfFieldBuilder();
+          getNetTrafficControlStatisticsFieldBuilder();
+          getNetSnmpStatisticsFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        timestamp_ = 0D;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        processes_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        threads_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        cpusUserTimeSecs_ = 0D;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        cpusSystemTimeSecs_ = 0D;
+        bitField0_ = (bitField0_ & ~0x00000010);
+        cpusLimit_ = 0D;
+        bitField0_ = (bitField0_ & ~0x00000020);
+        cpusNrPeriods_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000040);
+        cpusNrThrottled_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000080);
+        cpusThrottledTimeSecs_ = 0D;
+        bitField0_ = (bitField0_ & ~0x00000100);
+        memTotalBytes_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000200);
+        memTotalMemswBytes_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000400);
+        memLimitBytes_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000800);
+        memSoftLimitBytes_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00001000);
+        memFileBytes_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00002000);
+        memAnonBytes_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00004000);
+        memCacheBytes_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00008000);
+        memRssBytes_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00010000);
+        memMappedFileBytes_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00020000);
+        memSwapBytes_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00040000);
+        memUnevictableBytes_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00080000);
+        memLowPressureCounter_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00100000);
+        memMediumPressureCounter_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00200000);
+        memCriticalPressureCounter_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00400000);
+        diskLimitBytes_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00800000);
+        diskUsedBytes_ = 0L;
+        bitField0_ = (bitField0_ & ~0x01000000);
+        if (diskStatisticsBuilder_ == null) {
+          diskStatistics_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x02000000);
+        } else {
+          diskStatisticsBuilder_.clear();
+        }
+        if (blkioStatisticsBuilder_ == null) {
+          blkioStatistics_ = org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics.getDefaultInstance();
+        } else {
+          blkioStatisticsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x04000000);
+        if (perfBuilder_ == null) {
+          perf_ = org.apache.mesos.Protos.PerfStatistics.getDefaultInstance();
+        } else {
+          perfBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x08000000);
+        netRxPackets_ = 0L;
+        bitField0_ = (bitField0_ & ~0x10000000);
+        netRxBytes_ = 0L;
+        bitField0_ = (bitField0_ & ~0x20000000);
+        netRxErrors_ = 0L;
+        bitField0_ = (bitField0_ & ~0x40000000);
+        netRxDropped_ = 0L;
+        bitField0_ = (bitField0_ & ~0x80000000);
+        netTxPackets_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00000001);
+        netTxBytes_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00000002);
+        netTxErrors_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00000004);
+        netTxDropped_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00000008);
+        netTcpRttMicrosecsP50_ = 0D;
+        bitField1_ = (bitField1_ & ~0x00000010);
+        netTcpRttMicrosecsP90_ = 0D;
+        bitField1_ = (bitField1_ & ~0x00000020);
+        netTcpRttMicrosecsP95_ = 0D;
+        bitField1_ = (bitField1_ & ~0x00000040);
+        netTcpRttMicrosecsP99_ = 0D;
+        bitField1_ = (bitField1_ & ~0x00000080);
+        netTcpActiveConnections_ = 0D;
+        bitField1_ = (bitField1_ & ~0x00000100);
+        netTcpTimeWaitConnections_ = 0D;
+        bitField1_ = (bitField1_ & ~0x00000200);
+        if (netTrafficControlStatisticsBuilder_ == null) {
+          netTrafficControlStatistics_ = java.util.Collections.emptyList();
+          bitField1_ = (bitField1_ & ~0x00000400);
+        } else {
+          netTrafficControlStatisticsBuilder_.clear();
+        }
+        if (netSnmpStatisticsBuilder_ == null) {
+          netSnmpStatistics_ = org.apache.mesos.Protos.SNMPStatistics.getDefaultInstance();
+        } else {
+          netSnmpStatisticsBuilder_.clear();
+        }
+        bitField1_ = (bitField1_ & ~0x00000800);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_ResourceStatistics_descriptor;
+      }
+
+      public org.apache.mesos.Protos.ResourceStatistics getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.ResourceStatistics.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.ResourceStatistics build() {
+        org.apache.mesos.Protos.ResourceStatistics result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.ResourceStatistics buildPartial() {
+        org.apache.mesos.Protos.ResourceStatistics result = new org.apache.mesos.Protos.ResourceStatistics(this);
+        int from_bitField0_ = bitField0_;
+        int from_bitField1_ = bitField1_;
+        int to_bitField0_ = 0;
+        int to_bitField1_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.timestamp_ = timestamp_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.processes_ = processes_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.threads_ = threads_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.cpusUserTimeSecs_ = cpusUserTimeSecs_;
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.cpusSystemTimeSecs_ = cpusSystemTimeSecs_;
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        result.cpusLimit_ = cpusLimit_;
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        result.cpusNrPeriods_ = cpusNrPeriods_;
+        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+          to_bitField0_ |= 0x00000080;
+        }
+        result.cpusNrThrottled_ = cpusNrThrottled_;
+        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
+          to_bitField0_ |= 0x00000100;
+        }
+        result.cpusThrottledTimeSecs_ = cpusThrottledTimeSecs_;
+        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
+          to_bitField0_ |= 0x00000200;
+        }
+        result.memTotalBytes_ = memTotalBytes_;
+        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
+          to_bitField0_ |= 0x00000400;
+        }
+        result.memTotalMemswBytes_ = memTotalMemswBytes_;
+        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
+          to_bitField0_ |= 0x00000800;
+        }
+        result.memLimitBytes_ = memLimitBytes_;
+        if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
+          to_bitField0_ |= 0x00001000;
+        }
+        result.memSoftLimitBytes_ = memSoftLimitBytes_;
+        if (((from_bitField0_ & 0x00002000) == 0x00002000)) {
+          to_bitField0_ |= 0x00002000;
+        }
+        result.memFileBytes_ = memFileBytes_;
+        if (((from_bitField0_ & 0x00004000) == 0x00004000)) {
+          to_bitField0_ |= 0x00004000;
+        }
+        result.memAnonBytes_ = memAnonBytes_;
+        if (((from_bitField0_ & 0x00008000) == 0x00008000)) {
+          to_bitField0_ |= 0x00008000;
+        }
+        result.memCacheBytes_ = memCacheBytes_;
+        if (((from_bitField0_ & 0x00010000) == 0x00010000)) {
+          to_bitField0_ |= 0x00010000;
+        }
+        result.memRssBytes_ = memRssBytes_;
+        if (((from_bitField0_ & 0x00020000) == 0x00020000)) {
+          to_bitField0_ |= 0x00020000;
+        }
+        result.memMappedFileBytes_ = memMappedFileBytes_;
+        if (((from_bitField0_ & 0x00040000) == 0x00040000)) {
+          to_bitField0_ |= 0x00040000;
+        }
+        result.memSwapBytes_ = memSwapBytes_;
+        if (((from_bitField0_ & 0x00080000) == 0x00080000)) {
+          to_bitField0_ |= 0x00080000;
+        }
+        result.memUnevictableBytes_ = memUnevictableBytes_;
+        if (((from_bitField0_ & 0x00100000) == 0x00100000)) {
+          to_bitField0_ |= 0x00100000;
+        }
+        result.memLowPressureCounter_ = memLowPressureCounter_;
+        if (((from_bitField0_ & 0x00200000) == 0x00200000)) {
+          to_bitField0_ |= 0x00200000;
+        }
+        result.memMediumPressureCounter_ = memMediumPressureCounter_;
+        if (((from_bitField0_ & 0x00400000) == 0x00400000)) {
+          to_bitField0_ |= 0x00400000;
+        }
+        result.memCriticalPressureCounter_ = memCriticalPressureCounter_;
+        if (((from_bitField0_ & 0x00800000) == 0x00800000)) {
+          to_bitField0_ |= 0x00800000;
+        }
+        result.diskLimitBytes_ = diskLimitBytes_;
+        if (((from_bitField0_ & 0x01000000) == 0x01000000)) {
+          to_bitField0_ |= 0x01000000;
+        }
+        result.diskUsedBytes_ = diskUsedBytes_;
+        if (diskStatisticsBuilder_ == null) {
+          if (((bitField0_ & 0x02000000) == 0x02000000)) {
+            diskStatistics_ = java.util.Collections.unmodifiableList(diskStatistics_);
+            bitField0_ = (bitField0_ & ~0x02000000);
+          }
+          result.diskStatistics_ = diskStatistics_;
+        } else {
+          result.diskStatistics_ = diskStatisticsBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x04000000) == 0x04000000)) {
+          to_bitField0_ |= 0x02000000;
+        }
+        if (blkioStatisticsBuilder_ == null) {
+          result.blkioStatistics_ = blkioStatistics_;
+        } else {
+          result.blkioStatistics_ = blkioStatisticsBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x08000000) == 0x08000000)) {
+          to_bitField0_ |= 0x04000000;
+        }
+        if (perfBuilder_ == null) {
+          result.perf_ = perf_;
+        } else {
+          result.perf_ = perfBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x10000000) == 0x10000000)) {
+          to_bitField0_ |= 0x08000000;
+        }
+        result.netRxPackets_ = netRxPackets_;
+        if (((from_bitField0_ & 0x20000000) == 0x20000000)) {
+          to_bitField0_ |= 0x10000000;
+        }
+        result.netRxBytes_ = netRxBytes_;
+        if (((from_bitField0_ & 0x40000000) == 0x40000000)) {
+          to_bitField0_ |= 0x20000000;
+        }
+        result.netRxErrors_ = netRxErrors_;
+        if (((from_bitField0_ & 0x80000000) == 0x80000000)) {
+          to_bitField0_ |= 0x40000000;
+        }
+        result.netRxDropped_ = netRxDropped_;
+        if (((from_bitField1_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x80000000;
+        }
+        result.netTxPackets_ = netTxPackets_;
+        if (((from_bitField1_ & 0x00000002) == 0x00000002)) {
+          to_bitField1_ |= 0x00000001;
+        }
+        result.netTxBytes_ = netTxBytes_;
+        if (((from_bitField1_ & 0x00000004) == 0x00000004)) {
+          to_bitField1_ |= 0x00000002;
+        }
+        result.netTxErrors_ = netTxErrors_;
+        if (((from_bitField1_ & 0x00000008) == 0x00000008)) {
+          to_bitField1_ |= 0x00000004;
+        }
+        result.netTxDropped_ = netTxDropped_;
+        if (((from_bitField1_ & 0x00000010) == 0x00000010)) {
+          to_bitField1_ |= 0x00000008;
+        }
+        result.netTcpRttMicrosecsP50_ = netTcpRttMicrosecsP50_;
+        if (((from_bitField1_ & 0x00000020) == 0x00000020)) {
+          to_bitField1_ |= 0x00000010;
+        }
+        result.netTcpRttMicrosecsP90_ = netTcpRttMicrosecsP90_;
+        if (((from_bitField1_ & 0x00000040) == 0x00000040)) {
+          to_bitField1_ |= 0x00000020;
+        }
+        result.netTcpRttMicrosecsP95_ = netTcpRttMicrosecsP95_;
+        if (((from_bitField1_ & 0x00000080) == 0x00000080)) {
+          to_bitField1_ |= 0x00000040;
+        }
+        result.netTcpRttMicrosecsP99_ = netTcpRttMicrosecsP99_;
+        if (((from_bitField1_ & 0x00000100) == 0x00000100)) {
+          to_bitField1_ |= 0x00000080;
+        }
+        result.netTcpActiveConnections_ = netTcpActiveConnections_;
+        if (((from_bitField1_ & 0x00000200) == 0x00000200)) {
+          to_bitField1_ |= 0x00000100;
+        }
+        result.netTcpTimeWaitConnections_ = netTcpTimeWaitConnections_;
+        if (netTrafficControlStatisticsBuilder_ == null) {
+          if (((bitField1_ & 0x00000400) == 0x00000400)) {
+            netTrafficControlStatistics_ = java.util.Collections.unmodifiableList(netTrafficControlStatistics_);
+            bitField1_ = (bitField1_ & ~0x00000400);
+          }
+          result.netTrafficControlStatistics_ = netTrafficControlStatistics_;
+        } else {
+          result.netTrafficControlStatistics_ = netTrafficControlStatisticsBuilder_.build();
+        }
+        if (((from_bitField1_ & 0x00000800) == 0x00000800)) {
+          to_bitField1_ |= 0x00000200;
+        }
+        if (netSnmpStatisticsBuilder_ == null) {
+          result.netSnmpStatistics_ = netSnmpStatistics_;
+        } else {
+          result.netSnmpStatistics_ = netSnmpStatisticsBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        result.bitField1_ = to_bitField1_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.ResourceStatistics) {
+          return mergeFrom((org.apache.mesos.Protos.ResourceStatistics)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.ResourceStatistics other) {
+        if (other == org.apache.mesos.Protos.ResourceStatistics.getDefaultInstance()) return this;
+        if (other.hasTimestamp()) {
+          setTimestamp(other.getTimestamp());
+        }
+        if (other.hasProcesses()) {
+          setProcesses(other.getProcesses());
+        }
+        if (other.hasThreads()) {
+          setThreads(other.getThreads());
+        }
+        if (other.hasCpusUserTimeSecs()) {
+          setCpusUserTimeSecs(other.getCpusUserTimeSecs());
+        }
+        if (other.hasCpusSystemTimeSecs()) {
+          setCpusSystemTimeSecs(other.getCpusSystemTimeSecs());
+        }
+        if (other.hasCpusLimit()) {
+          setCpusLimit(other.getCpusLimit());
+        }
+        if (other.hasCpusNrPeriods()) {
+          setCpusNrPeriods(other.getCpusNrPeriods());
+        }
+        if (other.hasCpusNrThrottled()) {
+          setCpusNrThrottled(other.getCpusNrThrottled());
+        }
+        if (other.hasCpusThrottledTimeSecs()) {
+          setCpusThrottledTimeSecs(other.getCpusThrottledTimeSecs());
+        }
+        if (other.hasMemTotalBytes()) {
+          setMemTotalBytes(other.getMemTotalBytes());
+        }
+        if (other.hasMemTotalMemswBytes()) {
+          setMemTotalMemswBytes(other.getMemTotalMemswBytes());
+        }
+        if (other.hasMemLimitBytes()) {
+          setMemLimitBytes(other.getMemLimitBytes());
+        }
+        if (other.hasMemSoftLimitBytes()) {
+          setMemSoftLimitBytes(other.getMemSoftLimitBytes());
+        }
+        if (other.hasMemFileBytes()) {
+          setMemFileBytes(other.getMemFileBytes());
+        }
+        if (other.hasMemAnonBytes()) {
+          setMemAnonBytes(other.getMemAnonBytes());
+        }
+        if (other.hasMemCacheBytes()) {
+          setMemCacheBytes(other.getMemCacheBytes());
+        }
+        if (other.hasMemRssBytes()) {
+          setMemRssBytes(other.getMemRssBytes());
+        }
+        if (other.hasMemMappedFileBytes()) {
+          setMemMappedFileBytes(other.getMemMappedFileBytes());
+        }
+        if (other.hasMemSwapBytes()) {
+          setMemSwapBytes(other.getMemSwapBytes());
+        }
+        if (other.hasMemUnevictableBytes()) {
+          setMemUnevictableBytes(other.getMemUnevictableBytes());
+        }
+        if (other.hasMemLowPressureCounter()) {
+          setMemLowPressureCounter(other.getMemLowPressureCounter());
+        }
+        if (other.hasMemMediumPressureCounter()) {
+          setMemMediumPressureCounter(other.getMemMediumPressureCounter());
+        }
+        if (other.hasMemCriticalPressureCounter()) {
+          setMemCriticalPressureCounter(other.getMemCriticalPressureCounter());
+        }
+        if (other.hasDiskLimitBytes()) {
+          setDiskLimitBytes(other.getDiskLimitBytes());
+        }
+        if (other.hasDiskUsedBytes()) {
+          setDiskUsedBytes(other.getDiskUsedBytes());
+        }
+        if (diskStatisticsBuilder_ == null) {
+          if (!other.diskStatistics_.isEmpty()) {
+            if (diskStatistics_.isEmpty()) {
+              diskStatistics_ = other.diskStatistics_;
+              bitField0_ = (bitField0_ & ~0x02000000);
+            } else {
+              ensureDiskStatisticsIsMutable();
+              diskStatistics_.addAll(other.diskStatistics_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.diskStatistics_.isEmpty()) {
+            if (diskStatisticsBuilder_.isEmpty()) {
+              diskStatisticsBuilder_.dispose();
+              diskStatisticsBuilder_ = null;
+              diskStatistics_ = other.diskStatistics_;
+              bitField0_ = (bitField0_ & ~0x02000000);
+              diskStatisticsBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getDiskStatisticsFieldBuilder() : null;
+            } else {
+              diskStatisticsBuilder_.addAllMessages(other.diskStatistics_);
+            }
+          }
+        }
+        if (other.hasBlkioStatistics()) {
+          mergeBlkioStatistics(other.getBlkioStatistics());
+        }
+        if (other.hasPerf()) {
+          mergePerf(other.getPerf());
+        }
+        if (other.hasNetRxPackets()) {
+          setNetRxPackets(other.getNetRxPackets());
+        }
+        if (other.hasNetRxBytes()) {
+          setNetRxBytes(other.getNetRxBytes());
+        }
+        if (other.hasNetRxErrors()) {
+          setNetRxErrors(other.getNetRxErrors());
+        }
+        if (other.hasNetRxDropped()) {
+          setNetRxDropped(other.getNetRxDropped());
+        }
+        if (other.hasNetTxPackets()) {
+          setNetTxPackets(other.getNetTxPackets());
+        }
+        if (other.hasNetTxBytes()) {
+          setNetTxBytes(other.getNetTxBytes());
+        }
+        if (other.hasNetTxErrors()) {
+          setNetTxErrors(other.getNetTxErrors());
+        }
+        if (other.hasNetTxDropped()) {
+          setNetTxDropped(other.getNetTxDropped());
+        }
+        if (other.hasNetTcpRttMicrosecsP50()) {
+          setNetTcpRttMicrosecsP50(other.getNetTcpRttMicrosecsP50());
+        }
+        if (other.hasNetTcpRttMicrosecsP90()) {
+          setNetTcpRttMicrosecsP90(other.getNetTcpRttMicrosecsP90());
+        }
+        if (other.hasNetTcpRttMicrosecsP95()) {
+          setNetTcpRttMicrosecsP95(other.getNetTcpRttMicrosecsP95());
+        }
+        if (other.hasNetTcpRttMicrosecsP99()) {
+          setNetTcpRttMicrosecsP99(other.getNetTcpRttMicrosecsP99());
+        }
+        if (other.hasNetTcpActiveConnections()) {
+          setNetTcpActiveConnections(other.getNetTcpActiveConnections());
+        }
+        if (other.hasNetTcpTimeWaitConnections()) {
+          setNetTcpTimeWaitConnections(other.getNetTcpTimeWaitConnections());
+        }
+        if (netTrafficControlStatisticsBuilder_ == null) {
+          if (!other.netTrafficControlStatistics_.isEmpty()) {
+            if (netTrafficControlStatistics_.isEmpty()) {
+              netTrafficControlStatistics_ = other.netTrafficControlStatistics_;
+              bitField1_ = (bitField1_ & ~0x00000400);
+            } else {
+              ensureNetTrafficControlStatisticsIsMutable();
+              netTrafficControlStatistics_.addAll(other.netTrafficControlStatistics_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.netTrafficControlStatistics_.isEmpty()) {
+            if (netTrafficControlStatisticsBuilder_.isEmpty()) {
+              netTrafficControlStatisticsBuilder_.dispose();
+              netTrafficControlStatisticsBuilder_ = null;
+              netTrafficControlStatistics_ = other.netTrafficControlStatistics_;
+              bitField1_ = (bitField1_ & ~0x00000400);
+              netTrafficControlStatisticsBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getNetTrafficControlStatisticsFieldBuilder() : null;
+            } else {
+              netTrafficControlStatisticsBuilder_.addAllMessages(other.netTrafficControlStatistics_);
+            }
+          }
+        }
+        if (other.hasNetSnmpStatistics()) {
+          mergeNetSnmpStatistics(other.getNetSnmpStatistics());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasTimestamp()) {
+          
+          return false;
+        }
+        for (int i = 0; i < getDiskStatisticsCount(); i++) {
+          if (!getDiskStatistics(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasBlkioStatistics()) {
+          if (!getBlkioStatistics().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasPerf()) {
+          if (!getPerf().isInitialized()) {
+            
+            return false;
+          }
+        }
+        for (int i = 0; i < getNetTrafficControlStatisticsCount(); i++) {
+          if (!getNetTrafficControlStatistics(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.ResourceStatistics parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.ResourceStatistics) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+      private int bitField1_;
+
+      // required double timestamp = 1;
+      private double timestamp_ ;
+      /**
+       * <code>required double timestamp = 1;</code>
+       *
+       * <pre>
+       * Snapshot time, in seconds since the Epoch.
+       * </pre>
+       */
+      public boolean hasTimestamp() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required double timestamp = 1;</code>
+       *
+       * <pre>
+       * Snapshot time, in seconds since the Epoch.
+       * </pre>
+       */
+      public double getTimestamp() {
+        return timestamp_;
+      }
+      /**
+       * <code>required double timestamp = 1;</code>
+       *
+       * <pre>
+       * Snapshot time, in seconds since the Epoch.
+       * </pre>
+       */
+      public Builder setTimestamp(double value) {
+        bitField0_ |= 0x00000001;
+        timestamp_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required double timestamp = 1;</code>
+       *
+       * <pre>
+       * Snapshot time, in seconds since the Epoch.
+       * </pre>
+       */
+      public Builder clearTimestamp() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        timestamp_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // optional uint32 processes = 30;
+      private int processes_ ;
+      /**
+       * <code>optional uint32 processes = 30;</code>
+       */
+      public boolean hasProcesses() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional uint32 processes = 30;</code>
+       */
+      public int getProcesses() {
+        return processes_;
+      }
+      /**
+       * <code>optional uint32 processes = 30;</code>
+       */
+      public Builder setProcesses(int value) {
+        bitField0_ |= 0x00000002;
+        processes_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint32 processes = 30;</code>
+       */
+      public Builder clearProcesses() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        processes_ = 0;
+        onChanged();
+        return this;
+      }
+
+      // optional uint32 threads = 31;
+      private int threads_ ;
+      /**
+       * <code>optional uint32 threads = 31;</code>
+       */
+      public boolean hasThreads() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional uint32 threads = 31;</code>
+       */
+      public int getThreads() {
+        return threads_;
+      }
+      /**
+       * <code>optional uint32 threads = 31;</code>
+       */
+      public Builder setThreads(int value) {
+        bitField0_ |= 0x00000004;
+        threads_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint32 threads = 31;</code>
+       */
+      public Builder clearThreads() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        threads_ = 0;
+        onChanged();
+        return this;
+      }
+
+      // optional double cpus_user_time_secs = 2;
+      private double cpusUserTimeSecs_ ;
+      /**
+       * <code>optional double cpus_user_time_secs = 2;</code>
+       *
+       * <pre>
+       * CPU Usage Information:
+       * Total CPU time spent in user mode, and kernel mode.
+       * </pre>
+       */
+      public boolean hasCpusUserTimeSecs() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional double cpus_user_time_secs = 2;</code>
+       *
+       * <pre>
+       * CPU Usage Information:
+       * Total CPU time spent in user mode, and kernel mode.
+       * </pre>
+       */
+      public double getCpusUserTimeSecs() {
+        return cpusUserTimeSecs_;
+      }
+      /**
+       * <code>optional double cpus_user_time_secs = 2;</code>
+       *
+       * <pre>
+       * CPU Usage Information:
+       * Total CPU time spent in user mode, and kernel mode.
+       * </pre>
+       */
+      public Builder setCpusUserTimeSecs(double value) {
+        bitField0_ |= 0x00000008;
+        cpusUserTimeSecs_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double cpus_user_time_secs = 2;</code>
+       *
+       * <pre>
+       * CPU Usage Information:
+       * Total CPU time spent in user mode, and kernel mode.
+       * </pre>
+       */
+      public Builder clearCpusUserTimeSecs() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        cpusUserTimeSecs_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // optional double cpus_system_time_secs = 3;
+      private double cpusSystemTimeSecs_ ;
+      /**
+       * <code>optional double cpus_system_time_secs = 3;</code>
+       */
+      public boolean hasCpusSystemTimeSecs() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional double cpus_system_time_secs = 3;</code>
+       */
+      public double getCpusSystemTimeSecs() {
+        return cpusSystemTimeSecs_;
+      }
+      /**
+       * <code>optional double cpus_system_time_secs = 3;</code>
+       */
+      public Builder setCpusSystemTimeSecs(double value) {
+        bitField0_ |= 0x00000010;
+        cpusSystemTimeSecs_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double cpus_system_time_secs = 3;</code>
+       */
+      public Builder clearCpusSystemTimeSecs() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        cpusSystemTimeSecs_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // optional double cpus_limit = 4;
+      private double cpusLimit_ ;
+      /**
+       * <code>optional double cpus_limit = 4;</code>
+       *
+       * <pre>
+       * Number of CPUs allocated.
+       * </pre>
+       */
+      public boolean hasCpusLimit() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional double cpus_limit = 4;</code>
+       *
+       * <pre>
+       * Number of CPUs allocated.
+       * </pre>
+       */
+      public double getCpusLimit() {
+        return cpusLimit_;
+      }
+      /**
+       * <code>optional double cpus_limit = 4;</code>
+       *
+       * <pre>
+       * Number of CPUs allocated.
+       * </pre>
+       */
+      public Builder setCpusLimit(double value) {
+        bitField0_ |= 0x00000020;
+        cpusLimit_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double cpus_limit = 4;</code>
+       *
+       * <pre>
+       * Number of CPUs allocated.
+       * </pre>
+       */
+      public Builder clearCpusLimit() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        cpusLimit_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // optional uint32 cpus_nr_periods = 7;
+      private int cpusNrPeriods_ ;
+      /**
+       * <code>optional uint32 cpus_nr_periods = 7;</code>
+       *
+       * <pre>
+       * cpu.stat on process throttling (for contention issues).
+       * </pre>
+       */
+      public boolean hasCpusNrPeriods() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional uint32 cpus_nr_periods = 7;</code>
+       *
+       * <pre>
+       * cpu.stat on process throttling (for contention issues).
+       * </pre>
+       */
+      public int getCpusNrPeriods() {
+        return cpusNrPeriods_;
+      }
+      /**
+       * <code>optional uint32 cpus_nr_periods = 7;</code>
+       *
+       * <pre>
+       * cpu.stat on process throttling (for contention issues).
+       * </pre>
+       */
+      public Builder setCpusNrPeriods(int value) {
+        bitField0_ |= 0x00000040;
+        cpusNrPeriods_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint32 cpus_nr_periods = 7;</code>
+       *
+       * <pre>
+       * cpu.stat on process throttling (for contention issues).
+       * </pre>
+       */
+      public Builder clearCpusNrPeriods() {
+        bitField0_ = (bitField0_ & ~0x00000040);
+        cpusNrPeriods_ = 0;
+        onChanged();
+        return this;
+      }
+
+      // optional uint32 cpus_nr_throttled = 8;
+      private int cpusNrThrottled_ ;
+      /**
+       * <code>optional uint32 cpus_nr_throttled = 8;</code>
+       */
+      public boolean hasCpusNrThrottled() {
+        return ((bitField0_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional uint32 cpus_nr_throttled = 8;</code>
+       */
+      public int getCpusNrThrottled() {
+        return cpusNrThrottled_;
+      }
+      /**
+       * <code>optional uint32 cpus_nr_throttled = 8;</code>
+       */
+      public Builder setCpusNrThrottled(int value) {
+        bitField0_ |= 0x00000080;
+        cpusNrThrottled_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint32 cpus_nr_throttled = 8;</code>
+       */
+      public Builder clearCpusNrThrottled() {
+        bitField0_ = (bitField0_ & ~0x00000080);
+        cpusNrThrottled_ = 0;
+        onChanged();
+        return this;
+      }
+
+      // optional double cpus_throttled_time_secs = 9;
+      private double cpusThrottledTimeSecs_ ;
+      /**
+       * <code>optional double cpus_throttled_time_secs = 9;</code>
+       */
+      public boolean hasCpusThrottledTimeSecs() {
+        return ((bitField0_ & 0x00000100) == 0x00000100);
+      }
+      /**
+       * <code>optional double cpus_throttled_time_secs = 9;</code>
+       */
+      public double getCpusThrottledTimeSecs() {
+        return cpusThrottledTimeSecs_;
+      }
+      /**
+       * <code>optional double cpus_throttled_time_secs = 9;</code>
+       */
+      public Builder setCpusThrottledTimeSecs(double value) {
+        bitField0_ |= 0x00000100;
+        cpusThrottledTimeSecs_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double cpus_throttled_time_secs = 9;</code>
+       */
+      public Builder clearCpusThrottledTimeSecs() {
+        bitField0_ = (bitField0_ & ~0x00000100);
+        cpusThrottledTimeSecs_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 mem_total_bytes = 36;
+      private long memTotalBytes_ ;
+      /**
+       * <code>optional uint64 mem_total_bytes = 36;</code>
+       *
+       * <pre>
+       * mem_total_bytes was added in 0.23.0 to represent the total memory
+       * of a process in RAM (as opposed to in Swap). This was previously
+       * reported as mem_rss_bytes, which was also changed in 0.23.0 to
+       * represent only the anonymous memory usage, to keep in sync with
+       * Linux kernel's (arguably erroneous) use of terminology.
+       * </pre>
+       */
+      public boolean hasMemTotalBytes() {
+        return ((bitField0_ & 0x00000200) == 0x00000200);
+      }
+      /**
+       * <code>optional uint64 mem_total_bytes = 36;</code>
+       *
+       * <pre>
+       * mem_total_bytes was added in 0.23.0 to represent the total memory
+       * of a process in RAM (as opposed to in Swap). This was previously
+       * reported as mem_rss_bytes, which was also changed in 0.23.0 to
+       * represent only the anonymous memory usage, to keep in sync with
+       * Linux kernel's (arguably erroneous) use of terminology.
+       * </pre>
+       */
+      public long getMemTotalBytes() {
+        return memTotalBytes_;
+      }
+      /**
+       * <code>optional uint64 mem_total_bytes = 36;</code>
+       *
+       * <pre>
+       * mem_total_bytes was added in 0.23.0 to represent the total memory
+       * of a process in RAM (as opposed to in Swap). This was previously
+       * reported as mem_rss_bytes, which was also changed in 0.23.0 to
+       * represent only the anonymous memory usage, to keep in sync with
+       * Linux kernel's (arguably erroneous) use of terminology.
+       * </pre>
+       */
+      public Builder setMemTotalBytes(long value) {
+        bitField0_ |= 0x00000200;
+        memTotalBytes_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 mem_total_bytes = 36;</code>
+       *
+       * <pre>
+       * mem_total_bytes was added in 0.23.0 to represent the total memory
+       * of a process in RAM (as opposed to in Swap). This was previously
+       * reported as mem_rss_bytes, which was also changed in 0.23.0 to
+       * represent only the anonymous memory usage, to keep in sync with
+       * Linux kernel's (arguably erroneous) use of terminology.
+       * </pre>
+       */
+      public Builder clearMemTotalBytes() {
+        bitField0_ = (bitField0_ & ~0x00000200);
+        memTotalBytes_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 mem_total_memsw_bytes = 37;
+      private long memTotalMemswBytes_ ;
+      /**
+       * <code>optional uint64 mem_total_memsw_bytes = 37;</code>
+       *
+       * <pre>
+       * Total memory + swap usage. This is set if swap is enabled.
+       * </pre>
+       */
+      public boolean hasMemTotalMemswBytes() {
+        return ((bitField0_ & 0x00000400) == 0x00000400);
+      }
+      /**
+       * <code>optional uint64 mem_total_memsw_bytes = 37;</code>
+       *
+       * <pre>
+       * Total memory + swap usage. This is set if swap is enabled.
+       * </pre>
+       */
+      public long getMemTotalMemswBytes() {
+        return memTotalMemswBytes_;
+      }
+      /**
+       * <code>optional uint64 mem_total_memsw_bytes = 37;</code>
+       *
+       * <pre>
+       * Total memory + swap usage. This is set if swap is enabled.
+       * </pre>
+       */
+      public Builder setMemTotalMemswBytes(long value) {
+        bitField0_ |= 0x00000400;
+        memTotalMemswBytes_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 mem_total_memsw_bytes = 37;</code>
+       *
+       * <pre>
+       * Total memory + swap usage. This is set if swap is enabled.
+       * </pre>
+       */
+      public Builder clearMemTotalMemswBytes() {
+        bitField0_ = (bitField0_ & ~0x00000400);
+        memTotalMemswBytes_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 mem_limit_bytes = 6;
+      private long memLimitBytes_ ;
+      /**
+       * <code>optional uint64 mem_limit_bytes = 6;</code>
+       *
+       * <pre>
+       * Hard memory limit for a container.
+       * </pre>
+       */
+      public boolean hasMemLimitBytes() {
+        return ((bitField0_ & 0x00000800) == 0x00000800);
+      }
+      /**
+       * <code>optional uint64 mem_limit_bytes = 6;</code>
+       *
+       * <pre>
+       * Hard memory limit for a container.
+       * </pre>
+       */
+      public long getMemLimitBytes() {
+        return memLimitBytes_;
+      }
+      /**
+       * <code>optional uint64 mem_limit_bytes = 6;</code>
+       *
+       * <pre>
+       * Hard memory limit for a container.
+       * </pre>
+       */
+      public Builder setMemLimitBytes(long value) {
+        bitField0_ |= 0x00000800;
+        memLimitBytes_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 mem_limit_bytes = 6;</code>
+       *
+       * <pre>
+       * Hard memory limit for a container.
+       * </pre>
+       */
+      public Builder clearMemLimitBytes() {
+        bitField0_ = (bitField0_ & ~0x00000800);
+        memLimitBytes_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 mem_soft_limit_bytes = 38;
+      private long memSoftLimitBytes_ ;
+      /**
+       * <code>optional uint64 mem_soft_limit_bytes = 38;</code>
+       *
+       * <pre>
+       * Soft memory limit for a container.
+       * </pre>
+       */
+      public boolean hasMemSoftLimitBytes() {
+        return ((bitField0_ & 0x00001000) == 0x00001000);
+      }
+      /**
+       * <code>optional uint64 mem_soft_limit_bytes = 38;</code>
+       *
+       * <pre>
+       * Soft memory limit for a container.
+       * </pre>
+       */
+      public long getMemSoftLimitBytes() {
+        return memSoftLimitBytes_;
+      }
+      /**
+       * <code>optional uint64 mem_soft_limit_bytes = 38;</code>
+       *
+       * <pre>
+       * Soft memory limit for a container.
+       * </pre>
+       */
+      public Builder setMemSoftLimitBytes(long value) {
+        bitField0_ |= 0x00001000;
+        memSoftLimitBytes_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 mem_soft_limit_bytes = 38;</code>
+       *
+       * <pre>
+       * Soft memory limit for a container.
+       * </pre>
+       */
+      public Builder clearMemSoftLimitBytes() {
+        bitField0_ = (bitField0_ & ~0x00001000);
+        memSoftLimitBytes_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 mem_file_bytes = 10;
+      private long memFileBytes_ ;
+      /**
+       * <code>optional uint64 mem_file_bytes = 10;</code>
+       *
+       * <pre>
+       * TODO(chzhcn) mem_file_bytes and mem_anon_bytes are deprecated in
+       * 0.23.0 and will be removed in 0.24.0.
+       * </pre>
+       */
+      public boolean hasMemFileBytes() {
+        return ((bitField0_ & 0x00002000) == 0x00002000);
+      }
+      /**
+       * <code>optional uint64 mem_file_bytes = 10;</code>
+       *
+       * <pre>
+       * TODO(chzhcn) mem_file_bytes and mem_anon_bytes are deprecated in
+       * 0.23.0 and will be removed in 0.24.0.
+       * </pre>
+       */
+      public long getMemFileBytes() {
+        return memFileBytes_;
+      }
+      /**
+       * <code>optional uint64 mem_file_bytes = 10;</code>
+       *
+       * <pre>
+       * TODO(chzhcn) mem_file_bytes and mem_anon_bytes are deprecated in
+       * 0.23.0 and will be removed in 0.24.0.
+       * </pre>
+       */
+      public Builder setMemFileBytes(long value) {
+        bitField0_ |= 0x00002000;
+        memFileBytes_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 mem_file_bytes = 10;</code>
+       *
+       * <pre>
+       * TODO(chzhcn) mem_file_bytes and mem_anon_bytes are deprecated in
+       * 0.23.0 and will be removed in 0.24.0.
+       * </pre>
+       */
+      public Builder clearMemFileBytes() {
+        bitField0_ = (bitField0_ & ~0x00002000);
+        memFileBytes_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 mem_anon_bytes = 11;
+      private long memAnonBytes_ ;
+      /**
+       * <code>optional uint64 mem_anon_bytes = 11;</code>
+       */
+      public boolean hasMemAnonBytes() {
+        return ((bitField0_ & 0x00004000) == 0x00004000);
+      }
+      /**
+       * <code>optional uint64 mem_anon_bytes = 11;</code>
+       */
+      public long getMemAnonBytes() {
+        return memAnonBytes_;
+      }
+      /**
+       * <code>optional uint64 mem_anon_bytes = 11;</code>
+       */
+      public Builder setMemAnonBytes(long value) {
+        bitField0_ |= 0x00004000;
+        memAnonBytes_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 mem_anon_bytes = 11;</code>
+       */
+      public Builder clearMemAnonBytes() {
+        bitField0_ = (bitField0_ & ~0x00004000);
+        memAnonBytes_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 mem_cache_bytes = 39;
+      private long memCacheBytes_ ;
+      /**
+       * <code>optional uint64 mem_cache_bytes = 39;</code>
+       *
+       * <pre>
+       * mem_cache_bytes is added in 0.23.0 to represent page cache usage.
+       * </pre>
+       */
+      public boolean hasMemCacheBytes() {
+        return ((bitField0_ & 0x00008000) == 0x00008000);
+      }
+      /**
+       * <code>optional uint64 mem_cache_bytes = 39;</code>
+       *
+       * <pre>
+       * mem_cache_bytes is added in 0.23.0 to represent page cache usage.
+       * </pre>
+       */
+      public long getMemCacheBytes() {
+        return memCacheBytes_;
+      }
+      /**
+       * <code>optional uint64 mem_cache_bytes = 39;</code>
+       *
+       * <pre>
+       * mem_cache_bytes is added in 0.23.0 to represent page cache usage.
+       * </pre>
+       */
+      public Builder setMemCacheBytes(long value) {
+        bitField0_ |= 0x00008000;
+        memCacheBytes_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 mem_cache_bytes = 39;</code>
+       *
+       * <pre>
+       * mem_cache_bytes is added in 0.23.0 to represent page cache usage.
+       * </pre>
+       */
+      public Builder clearMemCacheBytes() {
+        bitField0_ = (bitField0_ & ~0x00008000);
+        memCacheBytes_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 mem_rss_bytes = 5;
+      private long memRssBytes_ ;
+      /**
+       * <code>optional uint64 mem_rss_bytes = 5;</code>
+       *
+       * <pre>
+       * Since 0.23.0, mem_rss_bytes is changed to represent only
+       * anonymous memory usage. Note that neither its requiredness, type,
+       * name nor numeric tag has been changed.
+       * </pre>
+       */
+      public boolean hasMemRssBytes() {
+        return ((bitField0_ & 0x00010000) == 0x00010000);
+      }
+      /**
+       * <code>optional uint64 mem_rss_bytes = 5;</code>
+       *
+       * <pre>
+       * Since 0.23.0, mem_rss_bytes is changed to represent only
+       * anonymous memory usage. Note that neither its requiredness, type,
+       * name nor numeric tag has been changed.
+       * </pre>
+       */
+      public long getMemRssBytes() {
+        return memRssBytes_;
+      }
+      /**
+       * <code>optional uint64 mem_rss_bytes = 5;</code>
+       *
+       * <pre>
+       * Since 0.23.0, mem_rss_bytes is changed to represent only
+       * anonymous memory usage. Note that neither its requiredness, type,
+       * name nor numeric tag has been changed.
+       * </pre>
+       */
+      public Builder setMemRssBytes(long value) {
+        bitField0_ |= 0x00010000;
+        memRssBytes_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 mem_rss_bytes = 5;</code>
+       *
+       * <pre>
+       * Since 0.23.0, mem_rss_bytes is changed to represent only
+       * anonymous memory usage. Note that neither its requiredness, type,
+       * name nor numeric tag has been changed.
+       * </pre>
+       */
+      public Builder clearMemRssBytes() {
+        bitField0_ = (bitField0_ & ~0x00010000);
+        memRssBytes_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 mem_mapped_file_bytes = 12;
+      private long memMappedFileBytes_ ;
+      /**
+       * <code>optional uint64 mem_mapped_file_bytes = 12;</code>
+       */
+      public boolean hasMemMappedFileBytes() {
+        return ((bitField0_ & 0x00020000) == 0x00020000);
+      }
+      /**
+       * <code>optional uint64 mem_mapped_file_bytes = 12;</code>
+       */
+      public long getMemMappedFileBytes() {
+        return memMappedFileBytes_;
+      }
+      /**
+       * <code>optional uint64 mem_mapped_file_bytes = 12;</code>
+       */
+      public Builder setMemMappedFileBytes(long value) {
+        bitField0_ |= 0x00020000;
+        memMappedFileBytes_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 mem_mapped_file_bytes = 12;</code>
+       */
+      public Builder clearMemMappedFileBytes() {
+        bitField0_ = (bitField0_ & ~0x00020000);
+        memMappedFileBytes_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 mem_swap_bytes = 40;
+      private long memSwapBytes_ ;
+      /**
+       * <code>optional uint64 mem_swap_bytes = 40;</code>
+       *
+       * <pre>
+       * This is only set if swap is enabled.
+       * </pre>
+       */
+      public boolean hasMemSwapBytes() {
+        return ((bitField0_ & 0x00040000) == 0x00040000);
+      }
+      /**
+       * <code>optional uint64 mem_swap_bytes = 40;</code>
+       *
+       * <pre>
+       * This is only set if swap is enabled.
+       * </pre>
+       */
+      public long getMemSwapBytes() {
+        return memSwapBytes_;
+      }
+      /**
+       * <code>optional uint64 mem_swap_bytes = 40;</code>
+       *
+       * <pre>
+       * This is only set if swap is enabled.
+       * </pre>
+       */
+      public Builder setMemSwapBytes(long value) {
+        bitField0_ |= 0x00040000;
+        memSwapBytes_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 mem_swap_bytes = 40;</code>
+       *
+       * <pre>
+       * This is only set if swap is enabled.
+       * </pre>
+       */
+      public Builder clearMemSwapBytes() {
+        bitField0_ = (bitField0_ & ~0x00040000);
+        memSwapBytes_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 mem_unevictable_bytes = 41;
+      private long memUnevictableBytes_ ;
+      /**
+       * <code>optional uint64 mem_unevictable_bytes = 41;</code>
+       */
+      public boolean hasMemUnevictableBytes() {
+        return ((bitField0_ & 0x00080000) == 0x00080000);
+      }
+      /**
+       * <code>optional uint64 mem_unevictable_bytes = 41;</code>
+       */
+      public long getMemUnevictableBytes() {
+        return memUnevictableBytes_;
+      }
+      /**
+       * <code>optional uint64 mem_unevictable_bytes = 41;</code>
+       */
+      public Builder setMemUnevictableBytes(long value) {
+        bitField0_ |= 0x00080000;
+        memUnevictableBytes_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 mem_unevictable_bytes = 41;</code>
+       */
+      public Builder clearMemUnevictableBytes() {
+        bitField0_ = (bitField0_ & ~0x00080000);
+        memUnevictableBytes_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 mem_low_pressure_counter = 32;
+      private long memLowPressureCounter_ ;
+      /**
+       * <code>optional uint64 mem_low_pressure_counter = 32;</code>
+       *
+       * <pre>
+       * Number of occurrences of different levels of memory pressure
+       * events reported by memory cgroup. Pressure listening (re)starts
+       * with these values set to 0 when slave (re)starts. See
+       * https://www.kernel.org/doc/Documentation/cgroups/memory.txt for
+       * more details.
+       * </pre>
+       */
+      public boolean hasMemLowPressureCounter() {
+        return ((bitField0_ & 0x00100000) == 0x00100000);
+      }
+      /**
+       * <code>optional uint64 mem_low_pressure_counter = 32;</code>
+       *
+       * <pre>
+       * Number of occurrences of different levels of memory pressure
+       * events reported by memory cgroup. Pressure listening (re)starts
+       * with these values set to 0 when slave (re)starts. See
+       * https://www.kernel.org/doc/Documentation/cgroups/memory.txt for
+       * more details.
+       * </pre>
+       */
+      public long getMemLowPressureCounter() {
+        return memLowPressureCounter_;
+      }
+      /**
+       * <code>optional uint64 mem_low_pressure_counter = 32;</code>
+       *
+       * <pre>
+       * Number of occurrences of different levels of memory pressure
+       * events reported by memory cgroup. Pressure listening (re)starts
+       * with these values set to 0 when slave (re)starts. See
+       * https://www.kernel.org/doc/Documentation/cgroups/memory.txt for
+       * more details.
+       * </pre>
+       */
+      public Builder setMemLowPressureCounter(long value) {
+        bitField0_ |= 0x00100000;
+        memLowPressureCounter_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 mem_low_pressure_counter = 32;</code>
+       *
+       * <pre>
+       * Number of occurrences of different levels of memory pressure
+       * events reported by memory cgroup. Pressure listening (re)starts
+       * with these values set to 0 when slave (re)starts. See
+       * https://www.kernel.org/doc/Documentation/cgroups/memory.txt for
+       * more details.
+       * </pre>
+       */
+      public Builder clearMemLowPressureCounter() {
+        bitField0_ = (bitField0_ & ~0x00100000);
+        memLowPressureCounter_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 mem_medium_pressure_counter = 33;
+      private long memMediumPressureCounter_ ;
+      /**
+       * <code>optional uint64 mem_medium_pressure_counter = 33;</code>
+       */
+      public boolean hasMemMediumPressureCounter() {
+        return ((bitField0_ & 0x00200000) == 0x00200000);
+      }
+      /**
+       * <code>optional uint64 mem_medium_pressure_counter = 33;</code>
+       */
+      public long getMemMediumPressureCounter() {
+        return memMediumPressureCounter_;
+      }
+      /**
+       * <code>optional uint64 mem_medium_pressure_counter = 33;</code>
+       */
+      public Builder setMemMediumPressureCounter(long value) {
+        bitField0_ |= 0x00200000;
+        memMediumPressureCounter_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 mem_medium_pressure_counter = 33;</code>
+       */
+      public Builder clearMemMediumPressureCounter() {
+        bitField0_ = (bitField0_ & ~0x00200000);
+        memMediumPressureCounter_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 mem_critical_pressure_counter = 34;
+      private long memCriticalPressureCounter_ ;
+      /**
+       * <code>optional uint64 mem_critical_pressure_counter = 34;</code>
+       */
+      public boolean hasMemCriticalPressureCounter() {
+        return ((bitField0_ & 0x00400000) == 0x00400000);
+      }
+      /**
+       * <code>optional uint64 mem_critical_pressure_counter = 34;</code>
+       */
+      public long getMemCriticalPressureCounter() {
+        return memCriticalPressureCounter_;
+      }
+      /**
+       * <code>optional uint64 mem_critical_pressure_counter = 34;</code>
+       */
+      public Builder setMemCriticalPressureCounter(long value) {
+        bitField0_ |= 0x00400000;
+        memCriticalPressureCounter_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 mem_critical_pressure_counter = 34;</code>
+       */
+      public Builder clearMemCriticalPressureCounter() {
+        bitField0_ = (bitField0_ & ~0x00400000);
+        memCriticalPressureCounter_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 disk_limit_bytes = 26;
+      private long diskLimitBytes_ ;
+      /**
+       * <code>optional uint64 disk_limit_bytes = 26;</code>
+       *
+       * <pre>
+       * Disk Usage Information for executor working directory.
+       * </pre>
+       */
+      public boolean hasDiskLimitBytes() {
+        return ((bitField0_ & 0x00800000) == 0x00800000);
+      }
+      /**
+       * <code>optional uint64 disk_limit_bytes = 26;</code>
+       *
+       * <pre>
+       * Disk Usage Information for executor working directory.
+       * </pre>
+       */
+      public long getDiskLimitBytes() {
+        return diskLimitBytes_;
+      }
+      /**
+       * <code>optional uint64 disk_limit_bytes = 26;</code>
+       *
+       * <pre>
+       * Disk Usage Information for executor working directory.
+       * </pre>
+       */
+      public Builder setDiskLimitBytes(long value) {
+        bitField0_ |= 0x00800000;
+        diskLimitBytes_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 disk_limit_bytes = 26;</code>
+       *
+       * <pre>
+       * Disk Usage Information for executor working directory.
+       * </pre>
+       */
+      public Builder clearDiskLimitBytes() {
+        bitField0_ = (bitField0_ & ~0x00800000);
+        diskLimitBytes_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 disk_used_bytes = 27;
+      private long diskUsedBytes_ ;
+      /**
+       * <code>optional uint64 disk_used_bytes = 27;</code>
+       */
+      public boolean hasDiskUsedBytes() {
+        return ((bitField0_ & 0x01000000) == 0x01000000);
+      }
+      /**
+       * <code>optional uint64 disk_used_bytes = 27;</code>
+       */
+      public long getDiskUsedBytes() {
+        return diskUsedBytes_;
+      }
+      /**
+       * <code>optional uint64 disk_used_bytes = 27;</code>
+       */
+      public Builder setDiskUsedBytes(long value) {
+        bitField0_ |= 0x01000000;
+        diskUsedBytes_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 disk_used_bytes = 27;</code>
+       */
+      public Builder clearDiskUsedBytes() {
+        bitField0_ = (bitField0_ & ~0x01000000);
+        diskUsedBytes_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // repeated .mesos.DiskStatistics disk_statistics = 43;
+      private java.util.List<org.apache.mesos.Protos.DiskStatistics> diskStatistics_ =
+        java.util.Collections.emptyList();
+      private void ensureDiskStatisticsIsMutable() {
+        if (!((bitField0_ & 0x02000000) == 0x02000000)) {
+          diskStatistics_ = new java.util.ArrayList<org.apache.mesos.Protos.DiskStatistics>(diskStatistics_);
+          bitField0_ |= 0x02000000;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.DiskStatistics, org.apache.mesos.Protos.DiskStatistics.Builder, org.apache.mesos.Protos.DiskStatisticsOrBuilder> diskStatisticsBuilder_;
+
+      /**
+       * <code>repeated .mesos.DiskStatistics disk_statistics = 43;</code>
+       *
+       * <pre>
+       * Per disk (resource) statistics.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.Protos.DiskStatistics> getDiskStatisticsList() {
+        if (diskStatisticsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(diskStatistics_);
+        } else {
+          return diskStatisticsBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.DiskStatistics disk_statistics = 43;</code>
+       *
+       * <pre>
+       * Per disk (resource) statistics.
+       * </pre>
+       */
+      public int getDiskStatisticsCount() {
+        if (diskStatisticsBuilder_ == null) {
+          return diskStatistics_.size();
+        } else {
+          return diskStatisticsBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.DiskStatistics disk_statistics = 43;</code>
+       *
+       * <pre>
+       * Per disk (resource) statistics.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.DiskStatistics getDiskStatistics(int index) {
+        if (diskStatisticsBuilder_ == null) {
+          return diskStatistics_.get(index);
+        } else {
+          return diskStatisticsBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.DiskStatistics disk_statistics = 43;</code>
+       *
+       * <pre>
+       * Per disk (resource) statistics.
+       * </pre>
+       */
+      public Builder setDiskStatistics(
+          int index, org.apache.mesos.Protos.DiskStatistics value) {
+        if (diskStatisticsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureDiskStatisticsIsMutable();
+          diskStatistics_.set(index, value);
+          onChanged();
+        } else {
+          diskStatisticsBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.DiskStatistics disk_statistics = 43;</code>
+       *
+       * <pre>
+       * Per disk (resource) statistics.
+       * </pre>
+       */
+      public Builder setDiskStatistics(
+          int index, org.apache.mesos.Protos.DiskStatistics.Builder builderForValue) {
+        if (diskStatisticsBuilder_ == null) {
+          ensureDiskStatisticsIsMutable();
+          diskStatistics_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          diskStatisticsBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.DiskStatistics disk_statistics = 43;</code>
+       *
+       * <pre>
+       * Per disk (resource) statistics.
+       * </pre>
+       */
+      public Builder addDiskStatistics(org.apache.mesos.Protos.DiskStatistics value) {
+        if (diskStatisticsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureDiskStatisticsIsMutable();
+          diskStatistics_.add(value);
+          onChanged();
+        } else {
+          diskStatisticsBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.DiskStatistics disk_statistics = 43;</code>
+       *
+       * <pre>
+       * Per disk (resource) statistics.
+       * </pre>
+       */
+      public Builder addDiskStatistics(
+          int index, org.apache.mesos.Protos.DiskStatistics value) {
+        if (diskStatisticsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureDiskStatisticsIsMutable();
+          diskStatistics_.add(index, value);
+          onChanged();
+        } else {
+          diskStatisticsBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.DiskStatistics disk_statistics = 43;</code>
+       *
+       * <pre>
+       * Per disk (resource) statistics.
+       * </pre>
+       */
+      public Builder addDiskStatistics(
+          org.apache.mesos.Protos.DiskStatistics.Builder builderForValue) {
+        if (diskStatisticsBuilder_ == null) {
+          ensureDiskStatisticsIsMutable();
+          diskStatistics_.add(builderForValue.build());
+          onChanged();
+        } else {
+          diskStatisticsBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.DiskStatistics disk_statistics = 43;</code>
+       *
+       * <pre>
+       * Per disk (resource) statistics.
+       * </pre>
+       */
+      public Builder addDiskStatistics(
+          int index, org.apache.mesos.Protos.DiskStatistics.Builder builderForValue) {
+        if (diskStatisticsBuilder_ == null) {
+          ensureDiskStatisticsIsMutable();
+          diskStatistics_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          diskStatisticsBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.DiskStatistics disk_statistics = 43;</code>
+       *
+       * <pre>
+       * Per disk (resource) statistics.
+       * </pre>
+       */
+      public Builder addAllDiskStatistics(
+          java.lang.Iterable<? extends org.apache.mesos.Protos.DiskStatistics> values) {
+        if (diskStatisticsBuilder_ == null) {
+          ensureDiskStatisticsIsMutable();
+          super.addAll(values, diskStatistics_);
+          onChanged();
+        } else {
+          diskStatisticsBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.DiskStatistics disk_statistics = 43;</code>
+       *
+       * <pre>
+       * Per disk (resource) statistics.
+       * </pre>
+       */
+      public Builder clearDiskStatistics() {
+        if (diskStatisticsBuilder_ == null) {
+          diskStatistics_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x02000000);
+          onChanged();
+        } else {
+          diskStatisticsBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.DiskStatistics disk_statistics = 43;</code>
+       *
+       * <pre>
+       * Per disk (resource) statistics.
+       * </pre>
+       */
+      public Builder removeDiskStatistics(int index) {
+        if (diskStatisticsBuilder_ == null) {
+          ensureDiskStatisticsIsMutable();
+          diskStatistics_.remove(index);
+          onChanged();
+        } else {
+          diskStatisticsBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.DiskStatistics disk_statistics = 43;</code>
+       *
+       * <pre>
+       * Per disk (resource) statistics.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.DiskStatistics.Builder getDiskStatisticsBuilder(
+          int index) {
+        return getDiskStatisticsFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.DiskStatistics disk_statistics = 43;</code>
+       *
+       * <pre>
+       * Per disk (resource) statistics.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.DiskStatisticsOrBuilder getDiskStatisticsOrBuilder(
+          int index) {
+        if (diskStatisticsBuilder_ == null) {
+          return diskStatistics_.get(index);  } else {
+          return diskStatisticsBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.DiskStatistics disk_statistics = 43;</code>
+       *
+       * <pre>
+       * Per disk (resource) statistics.
+       * </pre>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.DiskStatisticsOrBuilder> 
+           getDiskStatisticsOrBuilderList() {
+        if (diskStatisticsBuilder_ != null) {
+          return diskStatisticsBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(diskStatistics_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.DiskStatistics disk_statistics = 43;</code>
+       *
+       * <pre>
+       * Per disk (resource) statistics.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.DiskStatistics.Builder addDiskStatisticsBuilder() {
+        return getDiskStatisticsFieldBuilder().addBuilder(
+            org.apache.mesos.Protos.DiskStatistics.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.DiskStatistics disk_statistics = 43;</code>
+       *
+       * <pre>
+       * Per disk (resource) statistics.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.DiskStatistics.Builder addDiskStatisticsBuilder(
+          int index) {
+        return getDiskStatisticsFieldBuilder().addBuilder(
+            index, org.apache.mesos.Protos.DiskStatistics.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.DiskStatistics disk_statistics = 43;</code>
+       *
+       * <pre>
+       * Per disk (resource) statistics.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.Protos.DiskStatistics.Builder> 
+           getDiskStatisticsBuilderList() {
+        return getDiskStatisticsFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.DiskStatistics, org.apache.mesos.Protos.DiskStatistics.Builder, org.apache.mesos.Protos.DiskStatisticsOrBuilder> 
+          getDiskStatisticsFieldBuilder() {
+        if (diskStatisticsBuilder_ == null) {
+          diskStatisticsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.DiskStatistics, org.apache.mesos.Protos.DiskStatistics.Builder, org.apache.mesos.Protos.DiskStatisticsOrBuilder>(
+                  diskStatistics_,
+                  ((bitField0_ & 0x02000000) == 0x02000000),
+                  getParentForChildren(),
+                  isClean());
+          diskStatistics_ = null;
+        }
+        return diskStatisticsBuilder_;
+      }
+
+      // optional .mesos.CgroupInfo.Blkio.Statistics blkio_statistics = 44;
+      private org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics blkioStatistics_ = org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics, org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics.Builder, org.apache.mesos.Protos.CgroupInfo.Blkio.StatisticsOrBuilder> blkioStatisticsBuilder_;
+      /**
+       * <code>optional .mesos.CgroupInfo.Blkio.Statistics blkio_statistics = 44;</code>
+       *
+       * <pre>
+       * Cgroups blkio statistics.
+       * </pre>
+       */
+      public boolean hasBlkioStatistics() {
+        return ((bitField0_ & 0x04000000) == 0x04000000);
+      }
+      /**
+       * <code>optional .mesos.CgroupInfo.Blkio.Statistics blkio_statistics = 44;</code>
+       *
+       * <pre>
+       * Cgroups blkio statistics.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics getBlkioStatistics() {
+        if (blkioStatisticsBuilder_ == null) {
+          return blkioStatistics_;
+        } else {
+          return blkioStatisticsBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.CgroupInfo.Blkio.Statistics blkio_statistics = 44;</code>
+       *
+       * <pre>
+       * Cgroups blkio statistics.
+       * </pre>
+       */
+      public Builder setBlkioStatistics(org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics value) {
+        if (blkioStatisticsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          blkioStatistics_ = value;
+          onChanged();
+        } else {
+          blkioStatisticsBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x04000000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CgroupInfo.Blkio.Statistics blkio_statistics = 44;</code>
+       *
+       * <pre>
+       * Cgroups blkio statistics.
+       * </pre>
+       */
+      public Builder setBlkioStatistics(
+          org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics.Builder builderForValue) {
+        if (blkioStatisticsBuilder_ == null) {
+          blkioStatistics_ = builderForValue.build();
+          onChanged();
+        } else {
+          blkioStatisticsBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x04000000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CgroupInfo.Blkio.Statistics blkio_statistics = 44;</code>
+       *
+       * <pre>
+       * Cgroups blkio statistics.
+       * </pre>
+       */
+      public Builder mergeBlkioStatistics(org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics value) {
+        if (blkioStatisticsBuilder_ == null) {
+          if (((bitField0_ & 0x04000000) == 0x04000000) &&
+              blkioStatistics_ != org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics.getDefaultInstance()) {
+            blkioStatistics_ =
+              org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics.newBuilder(blkioStatistics_).mergeFrom(value).buildPartial();
+          } else {
+            blkioStatistics_ = value;
+          }
+          onChanged();
+        } else {
+          blkioStatisticsBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x04000000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CgroupInfo.Blkio.Statistics blkio_statistics = 44;</code>
+       *
+       * <pre>
+       * Cgroups blkio statistics.
+       * </pre>
+       */
+      public Builder clearBlkioStatistics() {
+        if (blkioStatisticsBuilder_ == null) {
+          blkioStatistics_ = org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics.getDefaultInstance();
+          onChanged();
+        } else {
+          blkioStatisticsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x04000000);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CgroupInfo.Blkio.Statistics blkio_statistics = 44;</code>
+       *
+       * <pre>
+       * Cgroups blkio statistics.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics.Builder getBlkioStatisticsBuilder() {
+        bitField0_ |= 0x04000000;
+        onChanged();
+        return getBlkioStatisticsFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.CgroupInfo.Blkio.Statistics blkio_statistics = 44;</code>
+       *
+       * <pre>
+       * Cgroups blkio statistics.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.CgroupInfo.Blkio.StatisticsOrBuilder getBlkioStatisticsOrBuilder() {
+        if (blkioStatisticsBuilder_ != null) {
+          return blkioStatisticsBuilder_.getMessageOrBuilder();
+        } else {
+          return blkioStatistics_;
+        }
+      }
+      /**
+       * <code>optional .mesos.CgroupInfo.Blkio.Statistics blkio_statistics = 44;</code>
+       *
+       * <pre>
+       * Cgroups blkio statistics.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics, org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics.Builder, org.apache.mesos.Protos.CgroupInfo.Blkio.StatisticsOrBuilder> 
+          getBlkioStatisticsFieldBuilder() {
+        if (blkioStatisticsBuilder_ == null) {
+          blkioStatisticsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics, org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics.Builder, org.apache.mesos.Protos.CgroupInfo.Blkio.StatisticsOrBuilder>(
+                  blkioStatistics_,
+                  getParentForChildren(),
+                  isClean());
+          blkioStatistics_ = null;
+        }
+        return blkioStatisticsBuilder_;
+      }
+
+      // optional .mesos.PerfStatistics perf = 13;
+      private org.apache.mesos.Protos.PerfStatistics perf_ = org.apache.mesos.Protos.PerfStatistics.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.PerfStatistics, org.apache.mesos.Protos.PerfStatistics.Builder, org.apache.mesos.Protos.PerfStatisticsOrBuilder> perfBuilder_;
+      /**
+       * <code>optional .mesos.PerfStatistics perf = 13;</code>
+       *
+       * <pre>
+       * Perf statistics.
+       * </pre>
+       */
+      public boolean hasPerf() {
+        return ((bitField0_ & 0x08000000) == 0x08000000);
+      }
+      /**
+       * <code>optional .mesos.PerfStatistics perf = 13;</code>
+       *
+       * <pre>
+       * Perf statistics.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.PerfStatistics getPerf() {
+        if (perfBuilder_ == null) {
+          return perf_;
+        } else {
+          return perfBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.PerfStatistics perf = 13;</code>
+       *
+       * <pre>
+       * Perf statistics.
+       * </pre>
+       */
+      public Builder setPerf(org.apache.mesos.Protos.PerfStatistics value) {
+        if (perfBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          perf_ = value;
+          onChanged();
+        } else {
+          perfBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x08000000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.PerfStatistics perf = 13;</code>
+       *
+       * <pre>
+       * Perf statistics.
+       * </pre>
+       */
+      public Builder setPerf(
+          org.apache.mesos.Protos.PerfStatistics.Builder builderForValue) {
+        if (perfBuilder_ == null) {
+          perf_ = builderForValue.build();
+          onChanged();
+        } else {
+          perfBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x08000000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.PerfStatistics perf = 13;</code>
+       *
+       * <pre>
+       * Perf statistics.
+       * </pre>
+       */
+      public Builder mergePerf(org.apache.mesos.Protos.PerfStatistics value) {
+        if (perfBuilder_ == null) {
+          if (((bitField0_ & 0x08000000) == 0x08000000) &&
+              perf_ != org.apache.mesos.Protos.PerfStatistics.getDefaultInstance()) {
+            perf_ =
+              org.apache.mesos.Protos.PerfStatistics.newBuilder(perf_).mergeFrom(value).buildPartial();
+          } else {
+            perf_ = value;
+          }
+          onChanged();
+        } else {
+          perfBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x08000000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.PerfStatistics perf = 13;</code>
+       *
+       * <pre>
+       * Perf statistics.
+       * </pre>
+       */
+      public Builder clearPerf() {
+        if (perfBuilder_ == null) {
+          perf_ = org.apache.mesos.Protos.PerfStatistics.getDefaultInstance();
+          onChanged();
+        } else {
+          perfBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x08000000);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.PerfStatistics perf = 13;</code>
+       *
+       * <pre>
+       * Perf statistics.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.PerfStatistics.Builder getPerfBuilder() {
+        bitField0_ |= 0x08000000;
+        onChanged();
+        return getPerfFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.PerfStatistics perf = 13;</code>
+       *
+       * <pre>
+       * Perf statistics.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.PerfStatisticsOrBuilder getPerfOrBuilder() {
+        if (perfBuilder_ != null) {
+          return perfBuilder_.getMessageOrBuilder();
+        } else {
+          return perf_;
+        }
+      }
+      /**
+       * <code>optional .mesos.PerfStatistics perf = 13;</code>
+       *
+       * <pre>
+       * Perf statistics.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.PerfStatistics, org.apache.mesos.Protos.PerfStatistics.Builder, org.apache.mesos.Protos.PerfStatisticsOrBuilder> 
+          getPerfFieldBuilder() {
+        if (perfBuilder_ == null) {
+          perfBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.PerfStatistics, org.apache.mesos.Protos.PerfStatistics.Builder, org.apache.mesos.Protos.PerfStatisticsOrBuilder>(
+                  perf_,
+                  getParentForChildren(),
+                  isClean());
+          perf_ = null;
+        }
+        return perfBuilder_;
+      }
+
+      // optional uint64 net_rx_packets = 14;
+      private long netRxPackets_ ;
+      /**
+       * <code>optional uint64 net_rx_packets = 14;</code>
+       *
+       * <pre>
+       * Network Usage Information:
+       * </pre>
+       */
+      public boolean hasNetRxPackets() {
+        return ((bitField0_ & 0x10000000) == 0x10000000);
+      }
+      /**
+       * <code>optional uint64 net_rx_packets = 14;</code>
+       *
+       * <pre>
+       * Network Usage Information:
+       * </pre>
+       */
+      public long getNetRxPackets() {
+        return netRxPackets_;
+      }
+      /**
+       * <code>optional uint64 net_rx_packets = 14;</code>
+       *
+       * <pre>
+       * Network Usage Information:
+       * </pre>
+       */
+      public Builder setNetRxPackets(long value) {
+        bitField0_ |= 0x10000000;
+        netRxPackets_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 net_rx_packets = 14;</code>
+       *
+       * <pre>
+       * Network Usage Information:
+       * </pre>
+       */
+      public Builder clearNetRxPackets() {
+        bitField0_ = (bitField0_ & ~0x10000000);
+        netRxPackets_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 net_rx_bytes = 15;
+      private long netRxBytes_ ;
+      /**
+       * <code>optional uint64 net_rx_bytes = 15;</code>
+       */
+      public boolean hasNetRxBytes() {
+        return ((bitField0_ & 0x20000000) == 0x20000000);
+      }
+      /**
+       * <code>optional uint64 net_rx_bytes = 15;</code>
+       */
+      public long getNetRxBytes() {
+        return netRxBytes_;
+      }
+      /**
+       * <code>optional uint64 net_rx_bytes = 15;</code>
+       */
+      public Builder setNetRxBytes(long value) {
+        bitField0_ |= 0x20000000;
+        netRxBytes_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 net_rx_bytes = 15;</code>
+       */
+      public Builder clearNetRxBytes() {
+        bitField0_ = (bitField0_ & ~0x20000000);
+        netRxBytes_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 net_rx_errors = 16;
+      private long netRxErrors_ ;
+      /**
+       * <code>optional uint64 net_rx_errors = 16;</code>
+       */
+      public boolean hasNetRxErrors() {
+        return ((bitField0_ & 0x40000000) == 0x40000000);
+      }
+      /**
+       * <code>optional uint64 net_rx_errors = 16;</code>
+       */
+      public long getNetRxErrors() {
+        return netRxErrors_;
+      }
+      /**
+       * <code>optional uint64 net_rx_errors = 16;</code>
+       */
+      public Builder setNetRxErrors(long value) {
+        bitField0_ |= 0x40000000;
+        netRxErrors_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 net_rx_errors = 16;</code>
+       */
+      public Builder clearNetRxErrors() {
+        bitField0_ = (bitField0_ & ~0x40000000);
+        netRxErrors_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 net_rx_dropped = 17;
+      private long netRxDropped_ ;
+      /**
+       * <code>optional uint64 net_rx_dropped = 17;</code>
+       */
+      public boolean hasNetRxDropped() {
+        return ((bitField0_ & 0x80000000) == 0x80000000);
+      }
+      /**
+       * <code>optional uint64 net_rx_dropped = 17;</code>
+       */
+      public long getNetRxDropped() {
+        return netRxDropped_;
+      }
+      /**
+       * <code>optional uint64 net_rx_dropped = 17;</code>
+       */
+      public Builder setNetRxDropped(long value) {
+        bitField0_ |= 0x80000000;
+        netRxDropped_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 net_rx_dropped = 17;</code>
+       */
+      public Builder clearNetRxDropped() {
+        bitField0_ = (bitField0_ & ~0x80000000);
+        netRxDropped_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 net_tx_packets = 18;
+      private long netTxPackets_ ;
+      /**
+       * <code>optional uint64 net_tx_packets = 18;</code>
+       */
+      public boolean hasNetTxPackets() {
+        return ((bitField1_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional uint64 net_tx_packets = 18;</code>
+       */
+      public long getNetTxPackets() {
+        return netTxPackets_;
+      }
+      /**
+       * <code>optional uint64 net_tx_packets = 18;</code>
+       */
+      public Builder setNetTxPackets(long value) {
+        bitField1_ |= 0x00000001;
+        netTxPackets_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 net_tx_packets = 18;</code>
+       */
+      public Builder clearNetTxPackets() {
+        bitField1_ = (bitField1_ & ~0x00000001);
+        netTxPackets_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 net_tx_bytes = 19;
+      private long netTxBytes_ ;
+      /**
+       * <code>optional uint64 net_tx_bytes = 19;</code>
+       */
+      public boolean hasNetTxBytes() {
+        return ((bitField1_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional uint64 net_tx_bytes = 19;</code>
+       */
+      public long getNetTxBytes() {
+        return netTxBytes_;
+      }
+      /**
+       * <code>optional uint64 net_tx_bytes = 19;</code>
+       */
+      public Builder setNetTxBytes(long value) {
+        bitField1_ |= 0x00000002;
+        netTxBytes_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 net_tx_bytes = 19;</code>
+       */
+      public Builder clearNetTxBytes() {
+        bitField1_ = (bitField1_ & ~0x00000002);
+        netTxBytes_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 net_tx_errors = 20;
+      private long netTxErrors_ ;
+      /**
+       * <code>optional uint64 net_tx_errors = 20;</code>
+       */
+      public boolean hasNetTxErrors() {
+        return ((bitField1_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional uint64 net_tx_errors = 20;</code>
+       */
+      public long getNetTxErrors() {
+        return netTxErrors_;
+      }
+      /**
+       * <code>optional uint64 net_tx_errors = 20;</code>
+       */
+      public Builder setNetTxErrors(long value) {
+        bitField1_ |= 0x00000004;
+        netTxErrors_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 net_tx_errors = 20;</code>
+       */
+      public Builder clearNetTxErrors() {
+        bitField1_ = (bitField1_ & ~0x00000004);
+        netTxErrors_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 net_tx_dropped = 21;
+      private long netTxDropped_ ;
+      /**
+       * <code>optional uint64 net_tx_dropped = 21;</code>
+       */
+      public boolean hasNetTxDropped() {
+        return ((bitField1_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional uint64 net_tx_dropped = 21;</code>
+       */
+      public long getNetTxDropped() {
+        return netTxDropped_;
+      }
+      /**
+       * <code>optional uint64 net_tx_dropped = 21;</code>
+       */
+      public Builder setNetTxDropped(long value) {
+        bitField1_ |= 0x00000008;
+        netTxDropped_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 net_tx_dropped = 21;</code>
+       */
+      public Builder clearNetTxDropped() {
+        bitField1_ = (bitField1_ & ~0x00000008);
+        netTxDropped_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional double net_tcp_rtt_microsecs_p50 = 22;
+      private double netTcpRttMicrosecsP50_ ;
+      /**
+       * <code>optional double net_tcp_rtt_microsecs_p50 = 22;</code>
+       *
+       * <pre>
+       * The kernel keeps track of RTT (round-trip time) for its TCP
+       * sockets. RTT is a way to tell the latency of a container.
+       * </pre>
+       */
+      public boolean hasNetTcpRttMicrosecsP50() {
+        return ((bitField1_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional double net_tcp_rtt_microsecs_p50 = 22;</code>
+       *
+       * <pre>
+       * The kernel keeps track of RTT (round-trip time) for its TCP
+       * sockets. RTT is a way to tell the latency of a container.
+       * </pre>
+       */
+      public double getNetTcpRttMicrosecsP50() {
+        return netTcpRttMicrosecsP50_;
+      }
+      /**
+       * <code>optional double net_tcp_rtt_microsecs_p50 = 22;</code>
+       *
+       * <pre>
+       * The kernel keeps track of RTT (round-trip time) for its TCP
+       * sockets. RTT is a way to tell the latency of a container.
+       * </pre>
+       */
+      public Builder setNetTcpRttMicrosecsP50(double value) {
+        bitField1_ |= 0x00000010;
+        netTcpRttMicrosecsP50_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double net_tcp_rtt_microsecs_p50 = 22;</code>
+       *
+       * <pre>
+       * The kernel keeps track of RTT (round-trip time) for its TCP
+       * sockets. RTT is a way to tell the latency of a container.
+       * </pre>
+       */
+      public Builder clearNetTcpRttMicrosecsP50() {
+        bitField1_ = (bitField1_ & ~0x00000010);
+        netTcpRttMicrosecsP50_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // optional double net_tcp_rtt_microsecs_p90 = 23;
+      private double netTcpRttMicrosecsP90_ ;
+      /**
+       * <code>optional double net_tcp_rtt_microsecs_p90 = 23;</code>
+       */
+      public boolean hasNetTcpRttMicrosecsP90() {
+        return ((bitField1_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional double net_tcp_rtt_microsecs_p90 = 23;</code>
+       */
+      public double getNetTcpRttMicrosecsP90() {
+        return netTcpRttMicrosecsP90_;
+      }
+      /**
+       * <code>optional double net_tcp_rtt_microsecs_p90 = 23;</code>
+       */
+      public Builder setNetTcpRttMicrosecsP90(double value) {
+        bitField1_ |= 0x00000020;
+        netTcpRttMicrosecsP90_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double net_tcp_rtt_microsecs_p90 = 23;</code>
+       */
+      public Builder clearNetTcpRttMicrosecsP90() {
+        bitField1_ = (bitField1_ & ~0x00000020);
+        netTcpRttMicrosecsP90_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // optional double net_tcp_rtt_microsecs_p95 = 24;
+      private double netTcpRttMicrosecsP95_ ;
+      /**
+       * <code>optional double net_tcp_rtt_microsecs_p95 = 24;</code>
+       */
+      public boolean hasNetTcpRttMicrosecsP95() {
+        return ((bitField1_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional double net_tcp_rtt_microsecs_p95 = 24;</code>
+       */
+      public double getNetTcpRttMicrosecsP95() {
+        return netTcpRttMicrosecsP95_;
+      }
+      /**
+       * <code>optional double net_tcp_rtt_microsecs_p95 = 24;</code>
+       */
+      public Builder setNetTcpRttMicrosecsP95(double value) {
+        bitField1_ |= 0x00000040;
+        netTcpRttMicrosecsP95_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double net_tcp_rtt_microsecs_p95 = 24;</code>
+       */
+      public Builder clearNetTcpRttMicrosecsP95() {
+        bitField1_ = (bitField1_ & ~0x00000040);
+        netTcpRttMicrosecsP95_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // optional double net_tcp_rtt_microsecs_p99 = 25;
+      private double netTcpRttMicrosecsP99_ ;
+      /**
+       * <code>optional double net_tcp_rtt_microsecs_p99 = 25;</code>
+       */
+      public boolean hasNetTcpRttMicrosecsP99() {
+        return ((bitField1_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional double net_tcp_rtt_microsecs_p99 = 25;</code>
+       */
+      public double getNetTcpRttMicrosecsP99() {
+        return netTcpRttMicrosecsP99_;
+      }
+      /**
+       * <code>optional double net_tcp_rtt_microsecs_p99 = 25;</code>
+       */
+      public Builder setNetTcpRttMicrosecsP99(double value) {
+        bitField1_ |= 0x00000080;
+        netTcpRttMicrosecsP99_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double net_tcp_rtt_microsecs_p99 = 25;</code>
+       */
+      public Builder clearNetTcpRttMicrosecsP99() {
+        bitField1_ = (bitField1_ & ~0x00000080);
+        netTcpRttMicrosecsP99_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // optional double net_tcp_active_connections = 28;
+      private double netTcpActiveConnections_ ;
+      /**
+       * <code>optional double net_tcp_active_connections = 28;</code>
+       */
+      public boolean hasNetTcpActiveConnections() {
+        return ((bitField1_ & 0x00000100) == 0x00000100);
+      }
+      /**
+       * <code>optional double net_tcp_active_connections = 28;</code>
+       */
+      public double getNetTcpActiveConnections() {
+        return netTcpActiveConnections_;
+      }
+      /**
+       * <code>optional double net_tcp_active_connections = 28;</code>
+       */
+      public Builder setNetTcpActiveConnections(double value) {
+        bitField1_ |= 0x00000100;
+        netTcpActiveConnections_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double net_tcp_active_connections = 28;</code>
+       */
+      public Builder clearNetTcpActiveConnections() {
+        bitField1_ = (bitField1_ & ~0x00000100);
+        netTcpActiveConnections_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // optional double net_tcp_time_wait_connections = 29;
+      private double netTcpTimeWaitConnections_ ;
+      /**
+       * <code>optional double net_tcp_time_wait_connections = 29;</code>
+       */
+      public boolean hasNetTcpTimeWaitConnections() {
+        return ((bitField1_ & 0x00000200) == 0x00000200);
+      }
+      /**
+       * <code>optional double net_tcp_time_wait_connections = 29;</code>
+       */
+      public double getNetTcpTimeWaitConnections() {
+        return netTcpTimeWaitConnections_;
+      }
+      /**
+       * <code>optional double net_tcp_time_wait_connections = 29;</code>
+       */
+      public Builder setNetTcpTimeWaitConnections(double value) {
+        bitField1_ |= 0x00000200;
+        netTcpTimeWaitConnections_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double net_tcp_time_wait_connections = 29;</code>
+       */
+      public Builder clearNetTcpTimeWaitConnections() {
+        bitField1_ = (bitField1_ & ~0x00000200);
+        netTcpTimeWaitConnections_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // repeated .mesos.TrafficControlStatistics net_traffic_control_statistics = 35;
+      private java.util.List<org.apache.mesos.Protos.TrafficControlStatistics> netTrafficControlStatistics_ =
+        java.util.Collections.emptyList();
+      private void ensureNetTrafficControlStatisticsIsMutable() {
+        if (!((bitField1_ & 0x00000400) == 0x00000400)) {
+          netTrafficControlStatistics_ = new java.util.ArrayList<org.apache.mesos.Protos.TrafficControlStatistics>(netTrafficControlStatistics_);
+          bitField1_ |= 0x00000400;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.TrafficControlStatistics, org.apache.mesos.Protos.TrafficControlStatistics.Builder, org.apache.mesos.Protos.TrafficControlStatisticsOrBuilder> netTrafficControlStatisticsBuilder_;
+
+      /**
+       * <code>repeated .mesos.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+       *
+       * <pre>
+       * Network traffic flowing into or out of a container can be delayed
+       * or dropped due to congestion or policy inside and outside the
+       * container.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.Protos.TrafficControlStatistics> getNetTrafficControlStatisticsList() {
+        if (netTrafficControlStatisticsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(netTrafficControlStatistics_);
+        } else {
+          return netTrafficControlStatisticsBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+       *
+       * <pre>
+       * Network traffic flowing into or out of a container can be delayed
+       * or dropped due to congestion or policy inside and outside the
+       * container.
+       * </pre>
+       */
+      public int getNetTrafficControlStatisticsCount() {
+        if (netTrafficControlStatisticsBuilder_ == null) {
+          return netTrafficControlStatistics_.size();
+        } else {
+          return netTrafficControlStatisticsBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+       *
+       * <pre>
+       * Network traffic flowing into or out of a container can be delayed
+       * or dropped due to congestion or policy inside and outside the
+       * container.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.TrafficControlStatistics getNetTrafficControlStatistics(int index) {
+        if (netTrafficControlStatisticsBuilder_ == null) {
+          return netTrafficControlStatistics_.get(index);
+        } else {
+          return netTrafficControlStatisticsBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+       *
+       * <pre>
+       * Network traffic flowing into or out of a container can be delayed
+       * or dropped due to congestion or policy inside and outside the
+       * container.
+       * </pre>
+       */
+      public Builder setNetTrafficControlStatistics(
+          int index, org.apache.mesos.Protos.TrafficControlStatistics value) {
+        if (netTrafficControlStatisticsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureNetTrafficControlStatisticsIsMutable();
+          netTrafficControlStatistics_.set(index, value);
+          onChanged();
+        } else {
+          netTrafficControlStatisticsBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+       *
+       * <pre>
+       * Network traffic flowing into or out of a container can be delayed
+       * or dropped due to congestion or policy inside and outside the
+       * container.
+       * </pre>
+       */
+      public Builder setNetTrafficControlStatistics(
+          int index, org.apache.mesos.Protos.TrafficControlStatistics.Builder builderForValue) {
+        if (netTrafficControlStatisticsBuilder_ == null) {
+          ensureNetTrafficControlStatisticsIsMutable();
+          netTrafficControlStatistics_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          netTrafficControlStatisticsBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+       *
+       * <pre>
+       * Network traffic flowing into or out of a container can be delayed
+       * or dropped due to congestion or policy inside and outside the
+       * container.
+       * </pre>
+       */
+      public Builder addNetTrafficControlStatistics(org.apache.mesos.Protos.TrafficControlStatistics value) {
+        if (netTrafficControlStatisticsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureNetTrafficControlStatisticsIsMutable();
+          netTrafficControlStatistics_.add(value);
+          onChanged();
+        } else {
+          netTrafficControlStatisticsBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+       *
+       * <pre>
+       * Network traffic flowing into or out of a container can be delayed
+       * or dropped due to congestion or policy inside and outside the
+       * container.
+       * </pre>
+       */
+      public Builder addNetTrafficControlStatistics(
+          int index, org.apache.mesos.Protos.TrafficControlStatistics value) {
+        if (netTrafficControlStatisticsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureNetTrafficControlStatisticsIsMutable();
+          netTrafficControlStatistics_.add(index, value);
+          onChanged();
+        } else {
+          netTrafficControlStatisticsBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+       *
+       * <pre>
+       * Network traffic flowing into or out of a container can be delayed
+       * or dropped due to congestion or policy inside and outside the
+       * container.
+       * </pre>
+       */
+      public Builder addNetTrafficControlStatistics(
+          org.apache.mesos.Protos.TrafficControlStatistics.Builder builderForValue) {
+        if (netTrafficControlStatisticsBuilder_ == null) {
+          ensureNetTrafficControlStatisticsIsMutable();
+          netTrafficControlStatistics_.add(builderForValue.build());
+          onChanged();
+        } else {
+          netTrafficControlStatisticsBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+       *
+       * <pre>
+       * Network traffic flowing into or out of a container can be delayed
+       * or dropped due to congestion or policy inside and outside the
+       * container.
+       * </pre>
+       */
+      public Builder addNetTrafficControlStatistics(
+          int index, org.apache.mesos.Protos.TrafficControlStatistics.Builder builderForValue) {
+        if (netTrafficControlStatisticsBuilder_ == null) {
+          ensureNetTrafficControlStatisticsIsMutable();
+          netTrafficControlStatistics_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          netTrafficControlStatisticsBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+       *
+       * <pre>
+       * Network traffic flowing into or out of a container can be delayed
+       * or dropped due to congestion or policy inside and outside the
+       * container.
+       * </pre>
+       */
+      public Builder addAllNetTrafficControlStatistics(
+          java.lang.Iterable<? extends org.apache.mesos.Protos.TrafficControlStatistics> values) {
+        if (netTrafficControlStatisticsBuilder_ == null) {
+          ensureNetTrafficControlStatisticsIsMutable();
+          super.addAll(values, netTrafficControlStatistics_);
+          onChanged();
+        } else {
+          netTrafficControlStatisticsBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+       *
+       * <pre>
+       * Network traffic flowing into or out of a container can be delayed
+       * or dropped due to congestion or policy inside and outside the
+       * container.
+       * </pre>
+       */
+      public Builder clearNetTrafficControlStatistics() {
+        if (netTrafficControlStatisticsBuilder_ == null) {
+          netTrafficControlStatistics_ = java.util.Collections.emptyList();
+          bitField1_ = (bitField1_ & ~0x00000400);
+          onChanged();
+        } else {
+          netTrafficControlStatisticsBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+       *
+       * <pre>
+       * Network traffic flowing into or out of a container can be delayed
+       * or dropped due to congestion or policy inside and outside the
+       * container.
+       * </pre>
+       */
+      public Builder removeNetTrafficControlStatistics(int index) {
+        if (netTrafficControlStatisticsBuilder_ == null) {
+          ensureNetTrafficControlStatisticsIsMutable();
+          netTrafficControlStatistics_.remove(index);
+          onChanged();
+        } else {
+          netTrafficControlStatisticsBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+       *
+       * <pre>
+       * Network traffic flowing into or out of a container can be delayed
+       * or dropped due to congestion or policy inside and outside the
+       * container.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.TrafficControlStatistics.Builder getNetTrafficControlStatisticsBuilder(
+          int index) {
+        return getNetTrafficControlStatisticsFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+       *
+       * <pre>
+       * Network traffic flowing into or out of a container can be delayed
+       * or dropped due to congestion or policy inside and outside the
+       * container.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.TrafficControlStatisticsOrBuilder getNetTrafficControlStatisticsOrBuilder(
+          int index) {
+        if (netTrafficControlStatisticsBuilder_ == null) {
+          return netTrafficControlStatistics_.get(index);  } else {
+          return netTrafficControlStatisticsBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+       *
+       * <pre>
+       * Network traffic flowing into or out of a container can be delayed
+       * or dropped due to congestion or policy inside and outside the
+       * container.
+       * </pre>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.TrafficControlStatisticsOrBuilder> 
+           getNetTrafficControlStatisticsOrBuilderList() {
+        if (netTrafficControlStatisticsBuilder_ != null) {
+          return netTrafficControlStatisticsBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(netTrafficControlStatistics_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+       *
+       * <pre>
+       * Network traffic flowing into or out of a container can be delayed
+       * or dropped due to congestion or policy inside and outside the
+       * container.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.TrafficControlStatistics.Builder addNetTrafficControlStatisticsBuilder() {
+        return getNetTrafficControlStatisticsFieldBuilder().addBuilder(
+            org.apache.mesos.Protos.TrafficControlStatistics.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+       *
+       * <pre>
+       * Network traffic flowing into or out of a container can be delayed
+       * or dropped due to congestion or policy inside and outside the
+       * container.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.TrafficControlStatistics.Builder addNetTrafficControlStatisticsBuilder(
+          int index) {
+        return getNetTrafficControlStatisticsFieldBuilder().addBuilder(
+            index, org.apache.mesos.Protos.TrafficControlStatistics.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+       *
+       * <pre>
+       * Network traffic flowing into or out of a container can be delayed
+       * or dropped due to congestion or policy inside and outside the
+       * container.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.Protos.TrafficControlStatistics.Builder> 
+           getNetTrafficControlStatisticsBuilderList() {
+        return getNetTrafficControlStatisticsFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.TrafficControlStatistics, org.apache.mesos.Protos.TrafficControlStatistics.Builder, org.apache.mesos.Protos.TrafficControlStatisticsOrBuilder> 
+          getNetTrafficControlStatisticsFieldBuilder() {
+        if (netTrafficControlStatisticsBuilder_ == null) {
+          netTrafficControlStatisticsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.TrafficControlStatistics, org.apache.mesos.Protos.TrafficControlStatistics.Builder, org.apache.mesos.Protos.TrafficControlStatisticsOrBuilder>(
+                  netTrafficControlStatistics_,
+                  ((bitField1_ & 0x00000400) == 0x00000400),
+                  getParentForChildren(),
+                  isClean());
+          netTrafficControlStatistics_ = null;
+        }
+        return netTrafficControlStatisticsBuilder_;
+      }
+
+      // optional .mesos.SNMPStatistics net_snmp_statistics = 42;
+      private org.apache.mesos.Protos.SNMPStatistics netSnmpStatistics_ = org.apache.mesos.Protos.SNMPStatistics.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.SNMPStatistics, org.apache.mesos.Protos.SNMPStatistics.Builder, org.apache.mesos.Protos.SNMPStatisticsOrBuilder> netSnmpStatisticsBuilder_;
+      /**
+       * <code>optional .mesos.SNMPStatistics net_snmp_statistics = 42;</code>
+       *
+       * <pre>
+       * Network SNMP statistics for each container.
+       * </pre>
+       */
+      public boolean hasNetSnmpStatistics() {
+        return ((bitField1_ & 0x00000800) == 0x00000800);
+      }
+      /**
+       * <code>optional .mesos.SNMPStatistics net_snmp_statistics = 42;</code>
+       *
+       * <pre>
+       * Network SNMP statistics for each container.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.SNMPStatistics getNetSnmpStatistics() {
+        if (netSnmpStatisticsBuilder_ == null) {
+          return netSnmpStatistics_;
+        } else {
+          return netSnmpStatisticsBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.SNMPStatistics net_snmp_statistics = 42;</code>
+       *
+       * <pre>
+       * Network SNMP statistics for each container.
+       * </pre>
+       */
+      public Builder setNetSnmpStatistics(org.apache.mesos.Protos.SNMPStatistics value) {
+        if (netSnmpStatisticsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          netSnmpStatistics_ = value;
+          onChanged();
+        } else {
+          netSnmpStatisticsBuilder_.setMessage(value);
+        }
+        bitField1_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.SNMPStatistics net_snmp_statistics = 42;</code>
+       *
+       * <pre>
+       * Network SNMP statistics for each container.
+       * </pre>
+       */
+      public Builder setNetSnmpStatistics(
+          org.apache.mesos.Protos.SNMPStatistics.Builder builderForValue) {
+        if (netSnmpStatisticsBuilder_ == null) {
+          netSnmpStatistics_ = builderForValue.build();
+          onChanged();
+        } else {
+          netSnmpStatisticsBuilder_.setMessage(builderForValue.build());
+        }
+        bitField1_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.SNMPStatistics net_snmp_statistics = 42;</code>
+       *
+       * <pre>
+       * Network SNMP statistics for each container.
+       * </pre>
+       */
+      public Builder mergeNetSnmpStatistics(org.apache.mesos.Protos.SNMPStatistics value) {
+        if (netSnmpStatisticsBuilder_ == null) {
+          if (((bitField1_ & 0x00000800) == 0x00000800) &&
+              netSnmpStatistics_ != org.apache.mesos.Protos.SNMPStatistics.getDefaultInstance()) {
+            netSnmpStatistics_ =
+              org.apache.mesos.Protos.SNMPStatistics.newBuilder(netSnmpStatistics_).mergeFrom(value).buildPartial();
+          } else {
+            netSnmpStatistics_ = value;
+          }
+          onChanged();
+        } else {
+          netSnmpStatisticsBuilder_.mergeFrom(value);
+        }
+        bitField1_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.SNMPStatistics net_snmp_statistics = 42;</code>
+       *
+       * <pre>
+       * Network SNMP statistics for each container.
+       * </pre>
+       */
+      public Builder clearNetSnmpStatistics() {
+        if (netSnmpStatisticsBuilder_ == null) {
+          netSnmpStatistics_ = org.apache.mesos.Protos.SNMPStatistics.getDefaultInstance();
+          onChanged();
+        } else {
+          netSnmpStatisticsBuilder_.clear();
+        }
+        bitField1_ = (bitField1_ & ~0x00000800);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.SNMPStatistics net_snmp_statistics = 42;</code>
+       *
+       * <pre>
+       * Network SNMP statistics for each container.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.SNMPStatistics.Builder getNetSnmpStatisticsBuilder() {
+        bitField1_ |= 0x00000800;
+        onChanged();
+        return getNetSnmpStatisticsFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.SNMPStatistics net_snmp_statistics = 42;</code>
+       *
+       * <pre>
+       * Network SNMP statistics for each container.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.SNMPStatisticsOrBuilder getNetSnmpStatisticsOrBuilder() {
+        if (netSnmpStatisticsBuilder_ != null) {
+          return netSnmpStatisticsBuilder_.getMessageOrBuilder();
+        } else {
+          return netSnmpStatistics_;
+        }
+      }
+      /**
+       * <code>optional .mesos.SNMPStatistics net_snmp_statistics = 42;</code>
+       *
+       * <pre>
+       * Network SNMP statistics for each container.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.SNMPStatistics, org.apache.mesos.Protos.SNMPStatistics.Builder, org.apache.mesos.Protos.SNMPStatisticsOrBuilder> 
+          getNetSnmpStatisticsFieldBuilder() {
+        if (netSnmpStatisticsBuilder_ == null) {
+          netSnmpStatisticsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.SNMPStatistics, org.apache.mesos.Protos.SNMPStatistics.Builder, org.apache.mesos.Protos.SNMPStatisticsOrBuilder>(
+                  netSnmpStatistics_,
+                  getParentForChildren(),
+                  isClean());
+          netSnmpStatistics_ = null;
+        }
+        return netSnmpStatisticsBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.ResourceStatistics)
+    }
+
+    static {
+      defaultInstance = new ResourceStatistics(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.ResourceStatistics)
+  }
+
+  public interface ResourceUsageOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // repeated .mesos.ResourceUsage.Executor executors = 1;
+    /**
+     * <code>repeated .mesos.ResourceUsage.Executor executors = 1;</code>
+     */
+    java.util.List<org.apache.mesos.Protos.ResourceUsage.Executor> 
+        getExecutorsList();
+    /**
+     * <code>repeated .mesos.ResourceUsage.Executor executors = 1;</code>
+     */
+    org.apache.mesos.Protos.ResourceUsage.Executor getExecutors(int index);
+    /**
+     * <code>repeated .mesos.ResourceUsage.Executor executors = 1;</code>
+     */
+    int getExecutorsCount();
+    /**
+     * <code>repeated .mesos.ResourceUsage.Executor executors = 1;</code>
+     */
+    java.util.List<? extends org.apache.mesos.Protos.ResourceUsage.ExecutorOrBuilder> 
+        getExecutorsOrBuilderList();
+    /**
+     * <code>repeated .mesos.ResourceUsage.Executor executors = 1;</code>
+     */
+    org.apache.mesos.Protos.ResourceUsage.ExecutorOrBuilder getExecutorsOrBuilder(
+        int index);
+
+    // repeated .mesos.Resource total = 2;
+    /**
+     * <code>repeated .mesos.Resource total = 2;</code>
+     *
+     * <pre>
+     * Slave's total resources including checkpointed dynamic
+     * reservations and persistent volumes.
+     * </pre>
+     */
+    java.util.List<org.apache.mesos.Protos.Resource> 
+        getTotalList();
+    /**
+     * <code>repeated .mesos.Resource total = 2;</code>
+     *
+     * <pre>
+     * Slave's total resources including checkpointed dynamic
+     * reservations and persistent volumes.
+     * </pre>
+     */
+    org.apache.mesos.Protos.Resource getTotal(int index);
+    /**
+     * <code>repeated .mesos.Resource total = 2;</code>
+     *
+     * <pre>
+     * Slave's total resources including checkpointed dynamic
+     * reservations and persistent volumes.
+     * </pre>
+     */
+    int getTotalCount();
+    /**
+     * <code>repeated .mesos.Resource total = 2;</code>
+     *
+     * <pre>
+     * Slave's total resources including checkpointed dynamic
+     * reservations and persistent volumes.
+     * </pre>
+     */
+    java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+        getTotalOrBuilderList();
+    /**
+     * <code>repeated .mesos.Resource total = 2;</code>
+     *
+     * <pre>
+     * Slave's total resources including checkpointed dynamic
+     * reservations and persistent volumes.
+     * </pre>
+     */
+    org.apache.mesos.Protos.ResourceOrBuilder getTotalOrBuilder(
+        int index);
+  }
+  /**
+   * Protobuf type {@code mesos.ResourceUsage}
+   *
+   * <pre>
+   **
+   * Describes a snapshot of the resource usage for executors.
+   * </pre>
+   */
+  public static final class ResourceUsage extends
+      com.google.protobuf.GeneratedMessage
+      implements ResourceUsageOrBuilder {
+    // Use ResourceUsage.newBuilder() to construct.
+    private ResourceUsage(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private ResourceUsage(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final ResourceUsage defaultInstance;
+    public static ResourceUsage getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public ResourceUsage getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private ResourceUsage(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                executors_ = new java.util.ArrayList<org.apache.mesos.Protos.ResourceUsage.Executor>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              executors_.add(input.readMessage(org.apache.mesos.Protos.ResourceUsage.Executor.PARSER, extensionRegistry));
+              break;
+            }
+            case 18: {
+              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+                total_ = new java.util.ArrayList<org.apache.mesos.Protos.Resource>();
+                mutable_bitField0_ |= 0x00000002;
+              }
+              total_.add(input.readMessage(org.apache.mesos.Protos.Resource.PARSER, extensionRegistry));
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+          executors_ = java.util.Collections.unmodifiableList(executors_);
+        }
+        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+          total_ = java.util.Collections.unmodifiableList(total_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_ResourceUsage_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_ResourceUsage_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.ResourceUsage.class, org.apache.mesos.Protos.ResourceUsage.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<ResourceUsage> PARSER =
+        new com.google.protobuf.AbstractParser<ResourceUsage>() {
+      public ResourceUsage parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new ResourceUsage(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<ResourceUsage> getParserForType() {
+      return PARSER;
+    }
+
+    public interface ExecutorOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required .mesos.ExecutorInfo executor_info = 1;
+      /**
+       * <code>required .mesos.ExecutorInfo executor_info = 1;</code>
+       */
+      boolean hasExecutorInfo();
+      /**
+       * <code>required .mesos.ExecutorInfo executor_info = 1;</code>
+       */
+      org.apache.mesos.Protos.ExecutorInfo getExecutorInfo();
+      /**
+       * <code>required .mesos.ExecutorInfo executor_info = 1;</code>
+       */
+      org.apache.mesos.Protos.ExecutorInfoOrBuilder getExecutorInfoOrBuilder();
+
+      // repeated .mesos.Resource allocated = 2;
+      /**
+       * <code>repeated .mesos.Resource allocated = 2;</code>
+       *
+       * <pre>
+       * This includes resources used by the executor itself
+       * as well as its active tasks.
+       * </pre>
+       */
+      java.util.List<org.apache.mesos.Protos.Resource> 
+          getAllocatedList();
+      /**
+       * <code>repeated .mesos.Resource allocated = 2;</code>
+       *
+       * <pre>
+       * This includes resources used by the executor itself
+       * as well as its active tasks.
+       * </pre>
+       */
+      org.apache.mesos.Protos.Resource getAllocated(int index);
+      /**
+       * <code>repeated .mesos.Resource allocated = 2;</code>
+       *
+       * <pre>
+       * This includes resources used by the executor itself
+       * as well as its active tasks.
+       * </pre>
+       */
+      int getAllocatedCount();
+      /**
+       * <code>repeated .mesos.Resource allocated = 2;</code>
+       *
+       * <pre>
+       * This includes resources used by the executor itself
+       * as well as its active tasks.
+       * </pre>
+       */
+      java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+          getAllocatedOrBuilderList();
+      /**
+       * <code>repeated .mesos.Resource allocated = 2;</code>
+       *
+       * <pre>
+       * This includes resources used by the executor itself
+       * as well as its active tasks.
+       * </pre>
+       */
+      org.apache.mesos.Protos.ResourceOrBuilder getAllocatedOrBuilder(
+          int index);
+
+      // optional .mesos.ResourceStatistics statistics = 3;
+      /**
+       * <code>optional .mesos.ResourceStatistics statistics = 3;</code>
+       *
+       * <pre>
+       * Current resource usage. If absent, the containerizer
+       * cannot provide resource usage.
+       * </pre>
+       */
+      boolean hasStatistics();
+      /**
+       * <code>optional .mesos.ResourceStatistics statistics = 3;</code>
+       *
+       * <pre>
+       * Current resource usage. If absent, the containerizer
+       * cannot provide resource usage.
+       * </pre>
+       */
+      org.apache.mesos.Protos.ResourceStatistics getStatistics();
+      /**
+       * <code>optional .mesos.ResourceStatistics statistics = 3;</code>
+       *
+       * <pre>
+       * Current resource usage. If absent, the containerizer
+       * cannot provide resource usage.
+       * </pre>
+       */
+      org.apache.mesos.Protos.ResourceStatisticsOrBuilder getStatisticsOrBuilder();
+
+      // required .mesos.ContainerID container_id = 4;
+      /**
+       * <code>required .mesos.ContainerID container_id = 4;</code>
+       *
+       * <pre>
+       * The container id for the executor specified in the executor_info field.
+       * </pre>
+       */
+      boolean hasContainerId();
+      /**
+       * <code>required .mesos.ContainerID container_id = 4;</code>
+       *
+       * <pre>
+       * The container id for the executor specified in the executor_info field.
+       * </pre>
+       */
+      org.apache.mesos.Protos.ContainerID getContainerId();
+      /**
+       * <code>required .mesos.ContainerID container_id = 4;</code>
+       *
+       * <pre>
+       * The container id for the executor specified in the executor_info field.
+       * </pre>
+       */
+      org.apache.mesos.Protos.ContainerIDOrBuilder getContainerIdOrBuilder();
+
+      // repeated .mesos.ResourceUsage.Executor.Task tasks = 5;
+      /**
+       * <code>repeated .mesos.ResourceUsage.Executor.Task tasks = 5;</code>
+       *
+       * <pre>
+       * Non-terminal tasks.
+       * </pre>
+       */
+      java.util.List<org.apache.mesos.Protos.ResourceUsage.Executor.Task> 
+          getTasksList();
+      /**
+       * <code>repeated .mesos.ResourceUsage.Executor.Task tasks = 5;</code>
+       *
+       * <pre>
+       * Non-terminal tasks.
+       * </pre>
+       */
+      org.apache.mesos.Protos.ResourceUsage.Executor.Task getTasks(int index);
+      /**
+       * <code>repeated .mesos.ResourceUsage.Executor.Task tasks = 5;</code>
+       *
+       * <pre>
+       * Non-terminal tasks.
+       * </pre>
+       */
+      int getTasksCount();
+      /**
+       * <code>repeated .mesos.ResourceUsage.Executor.Task tasks = 5;</code>
+       *
+       * <pre>
+       * Non-terminal tasks.
+       * </pre>
+       */
+      java.util.List<? extends org.apache.mesos.Protos.ResourceUsage.Executor.TaskOrBuilder> 
+          getTasksOrBuilderList();
+      /**
+       * <code>repeated .mesos.ResourceUsage.Executor.Task tasks = 5;</code>
+       *
+       * <pre>
+       * Non-terminal tasks.
+       * </pre>
+       */
+      org.apache.mesos.Protos.ResourceUsage.Executor.TaskOrBuilder getTasksOrBuilder(
+          int index);
+    }
+    /**
+     * Protobuf type {@code mesos.ResourceUsage.Executor}
+     */
+    public static final class Executor extends
+        com.google.protobuf.GeneratedMessage
+        implements ExecutorOrBuilder {
+      // Use Executor.newBuilder() to construct.
+      private Executor(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Executor(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Executor defaultInstance;
+      public static Executor getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Executor getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Executor(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.Protos.ExecutorInfo.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = executorInfo_.toBuilder();
+                }
+                executorInfo_ = input.readMessage(org.apache.mesos.Protos.ExecutorInfo.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(executorInfo_);
+                  executorInfo_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+              case 18: {
+                if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+                  allocated_ = new java.util.ArrayList<org.apache.mesos.Protos.Resource>();
+                  mutable_bitField0_ |= 0x00000002;
+                }
+                allocated_.add(input.readMessage(org.apache.mesos.Protos.Resource.PARSER, extensionRegistry));
+                break;
+              }
+              case 26: {
+                org.apache.mesos.Protos.ResourceStatistics.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                  subBuilder = statistics_.toBuilder();
+                }
+                statistics_ = input.readMessage(org.apache.mesos.Protos.ResourceStatistics.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(statistics_);
+                  statistics_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000002;
+                break;
+              }
+              case 34: {
+                org.apache.mesos.Protos.ContainerID.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                  subBuilder = containerId_.toBuilder();
+                }
+                containerId_ = input.readMessage(org.apache.mesos.Protos.ContainerID.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(containerId_);
+                  containerId_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000004;
+                break;
+              }
+              case 42: {
+                if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
+                  tasks_ = new java.util.ArrayList<org.apache.mesos.Protos.ResourceUsage.Executor.Task>();
+                  mutable_bitField0_ |= 0x00000010;
+                }
+                tasks_.add(input.readMessage(org.apache.mesos.Protos.ResourceUsage.Executor.Task.PARSER, extensionRegistry));
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+            allocated_ = java.util.Collections.unmodifiableList(allocated_);
+          }
+          if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
+            tasks_ = java.util.Collections.unmodifiableList(tasks_);
+          }
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_ResourceUsage_Executor_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_ResourceUsage_Executor_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.ResourceUsage.Executor.class, org.apache.mesos.Protos.ResourceUsage.Executor.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Executor> PARSER =
+          new com.google.protobuf.AbstractParser<Executor>() {
+        public Executor parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Executor(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Executor> getParserForType() {
+        return PARSER;
+      }
+
+      public interface TaskOrBuilder
+          extends com.google.protobuf.MessageOrBuilder {
+
+        // required string name = 1;
+        /**
+         * <code>required string name = 1;</code>
+         */
+        boolean hasName();
+        /**
+         * <code>required string name = 1;</code>
+         */
+        java.lang.String getName();
+        /**
+         * <code>required string name = 1;</code>
+         */
+        com.google.protobuf.ByteString
+            getNameBytes();
+
+        // required .mesos.TaskID id = 2;
+        /**
+         * <code>required .mesos.TaskID id = 2;</code>
+         */
+        boolean hasId();
+        /**
+         * <code>required .mesos.TaskID id = 2;</code>
+         */
+        org.apache.mesos.Protos.TaskID getId();
+        /**
+         * <code>required .mesos.TaskID id = 2;</code>
+         */
+        org.apache.mesos.Protos.TaskIDOrBuilder getIdOrBuilder();
+
+        // repeated .mesos.Resource resources = 3;
+        /**
+         * <code>repeated .mesos.Resource resources = 3;</code>
+         */
+        java.util.List<org.apache.mesos.Protos.Resource> 
+            getResourcesList();
+        /**
+         * <code>repeated .mesos.Resource resources = 3;</code>
+         */
+        org.apache.mesos.Protos.Resource getResources(int index);
+        /**
+         * <code>repeated .mesos.Resource resources = 3;</code>
+         */
+        int getResourcesCount();
+        /**
+         * <code>repeated .mesos.Resource resources = 3;</code>
+         */
+        java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+            getResourcesOrBuilderList();
+        /**
+         * <code>repeated .mesos.Resource resources = 3;</code>
+         */
+        org.apache.mesos.Protos.ResourceOrBuilder getResourcesOrBuilder(
+            int index);
+
+        // optional .mesos.Labels labels = 4;
+        /**
+         * <code>optional .mesos.Labels labels = 4;</code>
+         */
+        boolean hasLabels();
+        /**
+         * <code>optional .mesos.Labels labels = 4;</code>
+         */
+        org.apache.mesos.Protos.Labels getLabels();
+        /**
+         * <code>optional .mesos.Labels labels = 4;</code>
+         */
+        org.apache.mesos.Protos.LabelsOrBuilder getLabelsOrBuilder();
+      }
+      /**
+       * Protobuf type {@code mesos.ResourceUsage.Executor.Task}
+       */
+      public static final class Task extends
+          com.google.protobuf.GeneratedMessage
+          implements TaskOrBuilder {
+        // Use Task.newBuilder() to construct.
+        private Task(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+          super(builder);
+          this.unknownFields = builder.getUnknownFields();
+        }
+        private Task(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+        private static final Task defaultInstance;
+        public static Task getDefaultInstance() {
+          return defaultInstance;
+        }
+
+        public Task getDefaultInstanceForType() {
+          return defaultInstance;
+        }
+
+        private final com.google.protobuf.UnknownFieldSet unknownFields;
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet
+            getUnknownFields() {
+          return this.unknownFields;
+        }
+        private Task(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          initFields();
+          int mutable_bitField0_ = 0;
+          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+              com.google.protobuf.UnknownFieldSet.newBuilder();
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(input, unknownFields,
+                                         extensionRegistry, tag)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 10: {
+                  bitField0_ |= 0x00000001;
+                  name_ = input.readBytes();
+                  break;
+                }
+                case 18: {
+                  org.apache.mesos.Protos.TaskID.Builder subBuilder = null;
+                  if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                    subBuilder = id_.toBuilder();
+                  }
+                  id_ = input.readMessage(org.apache.mesos.Protos.TaskID.PARSER, extensionRegistry);
+                  if (subBuilder != null) {
+                    subBuilder.mergeFrom(id_);
+                    id_ = subBuilder.buildPartial();
+                  }
+                  bitField0_ |= 0x00000002;
+                  break;
+                }
+                case 26: {
+                  if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
+                    resources_ = new java.util.ArrayList<org.apache.mesos.Protos.Resource>();
+                    mutable_bitField0_ |= 0x00000004;
+                  }
+                  resources_.add(input.readMessage(org.apache.mesos.Protos.Resource.PARSER, extensionRegistry));
+                  break;
+                }
+                case 34: {
+                  org.apache.mesos.Protos.Labels.Builder subBuilder = null;
+                  if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                    subBuilder = labels_.toBuilder();
+                  }
+                  labels_ = input.readMessage(org.apache.mesos.Protos.Labels.PARSER, extensionRegistry);
+                  if (subBuilder != null) {
+                    subBuilder.mergeFrom(labels_);
+                    labels_ = subBuilder.buildPartial();
+                  }
+                  bitField0_ |= 0x00000004;
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw e.setUnfinishedMessage(this);
+          } catch (java.io.IOException e) {
+            throw new com.google.protobuf.InvalidProtocolBufferException(
+                e.getMessage()).setUnfinishedMessage(this);
+          } finally {
+            if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
+              resources_ = java.util.Collections.unmodifiableList(resources_);
+            }
+            this.unknownFields = unknownFields.build();
+            makeExtensionsImmutable();
+          }
+        }
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_ResourceUsage_Executor_Task_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_ResourceUsage_Executor_Task_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.ResourceUsage.Executor.Task.class, org.apache.mesos.Protos.ResourceUsage.Executor.Task.Builder.class);
+        }
+
+        public static com.google.protobuf.Parser<Task> PARSER =
+            new com.google.protobuf.AbstractParser<Task>() {
+          public Task parsePartialFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return new Task(input, extensionRegistry);
+          }
+        };
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<Task> getParserForType() {
+          return PARSER;
+        }
+
+        private int bitField0_;
+        // required string name = 1;
+        public static final int NAME_FIELD_NUMBER = 1;
+        private java.lang.Object name_;
+        /**
+         * <code>required string name = 1;</code>
+         */
+        public boolean hasName() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required string name = 1;</code>
+         */
+        public java.lang.String getName() {
+          java.lang.Object ref = name_;
+          if (ref instanceof java.lang.String) {
+            return (java.lang.String) ref;
+          } else {
+            com.google.protobuf.ByteString bs = 
+                (com.google.protobuf.ByteString) ref;
+            java.lang.String s = bs.toStringUtf8();
+            if (bs.isValidUtf8()) {
+              name_ = s;
+            }
+            return s;
+          }
+        }
+        /**
+         * <code>required string name = 1;</code>
+         */
+        public com.google.protobuf.ByteString
+            getNameBytes() {
+          java.lang.Object ref = name_;
+          if (ref instanceof java.lang.String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            name_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+
+        // required .mesos.TaskID id = 2;
+        public static final int ID_FIELD_NUMBER = 2;
+        private org.apache.mesos.Protos.TaskID id_;
+        /**
+         * <code>required .mesos.TaskID id = 2;</code>
+         */
+        public boolean hasId() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>required .mesos.TaskID id = 2;</code>
+         */
+        public org.apache.mesos.Protos.TaskID getId() {
+          return id_;
+        }
+        /**
+         * <code>required .mesos.TaskID id = 2;</code>
+         */
+        public org.apache.mesos.Protos.TaskIDOrBuilder getIdOrBuilder() {
+          return id_;
+        }
+
+        // repeated .mesos.Resource resources = 3;
+        public static final int RESOURCES_FIELD_NUMBER = 3;
+        private java.util.List<org.apache.mesos.Protos.Resource> resources_;
+        /**
+         * <code>repeated .mesos.Resource resources = 3;</code>
+         */
+        public java.util.List<org.apache.mesos.Protos.Resource> getResourcesList() {
+          return resources_;
+        }
+        /**
+         * <code>repeated .mesos.Resource resources = 3;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+            getResourcesOrBuilderList() {
+          return resources_;
+        }
+        /**
+         * <code>repeated .mesos.Resource resources = 3;</code>
+         */
+        public int getResourcesCount() {
+          return resources_.size();
+        }
+        /**
+         * <code>repeated .mesos.Resource resources = 3;</code>
+         */
+        public org.apache.mesos.Protos.Resource getResources(int index) {
+          return resources_.get(index);
+        }
+        /**
+         * <code>repeated .mesos.Resource resources = 3;</code>
+         */
+        public org.apache.mesos.Protos.ResourceOrBuilder getResourcesOrBuilder(
+            int index) {
+          return resources_.get(index);
+        }
+
+        // optional .mesos.Labels labels = 4;
+        public static final int LABELS_FIELD_NUMBER = 4;
+        private org.apache.mesos.Protos.Labels labels_;
+        /**
+         * <code>optional .mesos.Labels labels = 4;</code>
+         */
+        public boolean hasLabels() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional .mesos.Labels labels = 4;</code>
+         */
+        public org.apache.mesos.Protos.Labels getLabels() {
+          return labels_;
+        }
+        /**
+         * <code>optional .mesos.Labels labels = 4;</code>
+         */
+        public org.apache.mesos.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+          return labels_;
+        }
+
+        private void initFields() {
+          name_ = "";
+          id_ = org.apache.mesos.Protos.TaskID.getDefaultInstance();
+          resources_ = java.util.Collections.emptyList();
+          labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+        }
+        private byte memoizedIsInitialized = -1;
+        public final boolean isInitialized() {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized != -1) return isInitialized == 1;
+
+          if (!hasName()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+          if (!hasId()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+          if (!getId().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+          for (int i = 0; i < getResourcesCount(); i++) {
+            if (!getResources(i).isInitialized()) {
+              memoizedIsInitialized = 0;
+              return false;
+            }
+          }
+          if (hasLabels()) {
+            if (!getLabels().isInitialized()) {
+              memoizedIsInitialized = 0;
+              return false;
+            }
+          }
+          memoizedIsInitialized = 1;
+          return true;
+        }
+
+        public void writeTo(com.google.protobuf.CodedOutputStream output)
+                            throws java.io.IOException {
+          getSerializedSize();
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            output.writeBytes(1, getNameBytes());
+          }
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            output.writeMessage(2, id_);
+          }
+          for (int i = 0; i < resources_.size(); i++) {
+            output.writeMessage(3, resources_.get(i));
+          }
+          if (((bitField0_ & 0x00000004) == 0x00000004)) {
+            output.writeMessage(4, labels_);
+          }
+          getUnknownFields().writeTo(output);
+        }
+
+        private int memoizedSerializedSize = -1;
+        public int getSerializedSize() {
+          int size = memoizedSerializedSize;
+          if (size != -1) return size;
+
+          size = 0;
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeBytesSize(1, getNameBytes());
+          }
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeMessageSize(2, id_);
+          }
+          for (int i = 0; i < resources_.size(); i++) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeMessageSize(3, resources_.get(i));
+          }
+          if (((bitField0_ & 0x00000004) == 0x00000004)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeMessageSize(4, labels_);
+          }
+          size += getUnknownFields().getSerializedSize();
+          memoizedSerializedSize = size;
+          return size;
+        }
+
+        private static final long serialVersionUID = 0L;
+        @java.lang.Override
+        protected java.lang.Object writeReplace()
+            throws java.io.ObjectStreamException {
+          return super.writeReplace();
+        }
+
+        public static org.apache.mesos.Protos.ResourceUsage.Executor.Task parseFrom(
+            com.google.protobuf.ByteString data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.Protos.ResourceUsage.Executor.Task parseFrom(
+            com.google.protobuf.ByteString data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.ResourceUsage.Executor.Task parseFrom(byte[] data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.Protos.ResourceUsage.Executor.Task parseFrom(
+            byte[] data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.ResourceUsage.Executor.Task parseFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.Protos.ResourceUsage.Executor.Task parseFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.ResourceUsage.Executor.Task parseDelimitedFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input);
+        }
+        public static org.apache.mesos.Protos.ResourceUsage.Executor.Task parseDelimitedFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.ResourceUsage.Executor.Task parseFrom(
+            com.google.protobuf.CodedInputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.Protos.ResourceUsage.Executor.Task parseFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+
+        public static Builder newBuilder() { return Builder.create(); }
+        public Builder newBuilderForType() { return newBuilder(); }
+        public static Builder newBuilder(org.apache.mesos.Protos.ResourceUsage.Executor.Task prototype) {
+          return newBuilder().mergeFrom(prototype);
+        }
+        public Builder toBuilder() { return newBuilder(this); }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          Builder builder = new Builder(parent);
+          return builder;
+        }
+        /**
+         * Protobuf type {@code mesos.ResourceUsage.Executor.Task}
+         */
+        public static final class Builder extends
+            com.google.protobuf.GeneratedMessage.Builder<Builder>
+           implements org.apache.mesos.Protos.ResourceUsage.Executor.TaskOrBuilder {
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.Protos.internal_static_mesos_ResourceUsage_Executor_Task_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.Protos.internal_static_mesos_ResourceUsage_Executor_Task_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.Protos.ResourceUsage.Executor.Task.class, org.apache.mesos.Protos.ResourceUsage.Executor.Task.Builder.class);
+          }
+
+          // Construct using org.apache.mesos.Protos.ResourceUsage.Executor.Task.newBuilder()
+          private Builder() {
+            maybeForceBuilderInitialization();
+          }
+
+          private Builder(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            super(parent);
+            maybeForceBuilderInitialization();
+          }
+          private void maybeForceBuilderInitialization() {
+            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+              getIdFieldBuilder();
+              getResourcesFieldBuilder();
+              getLabelsFieldBuilder();
+            }
+          }
+          private static Builder create() {
+            return new Builder();
+          }
+
+          public Builder clear() {
+            super.clear();
+            name_ = "";
+            bitField0_ = (bitField0_ & ~0x00000001);
+            if (idBuilder_ == null) {
+              id_ = org.apache.mesos.Protos.TaskID.getDefaultInstance();
+            } else {
+              idBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000002);
+            if (resourcesBuilder_ == null) {
+              resources_ = java.util.Collections.emptyList();
+              bitField0_ = (bitField0_ & ~0x00000004);
+            } else {
+              resourcesBuilder_.clear();
+            }
+            if (labelsBuilder_ == null) {
+              labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+            } else {
+              labelsBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000008);
+            return this;
+          }
+
+          public Builder clone() {
+            return create().mergeFrom(buildPartial());
+          }
+
+          public com.google.protobuf.Descriptors.Descriptor
+              getDescriptorForType() {
+            return org.apache.mesos.Protos.internal_static_mesos_ResourceUsage_Executor_Task_descriptor;
+          }
+
+          public org.apache.mesos.Protos.ResourceUsage.Executor.Task getDefaultInstanceForType() {
+            return org.apache.mesos.Protos.ResourceUsage.Executor.Task.getDefaultInstance();
+          }
+
+          public org.apache.mesos.Protos.ResourceUsage.Executor.Task build() {
+            org.apache.mesos.Protos.ResourceUsage.Executor.Task result = buildPartial();
+            if (!result.isInitialized()) {
+              throw newUninitializedMessageException(result);
+            }
+            return result;
+          }
+
+          public org.apache.mesos.Protos.ResourceUsage.Executor.Task buildPartial() {
+            org.apache.mesos.Protos.ResourceUsage.Executor.Task result = new org.apache.mesos.Protos.ResourceUsage.Executor.Task(this);
+            int from_bitField0_ = bitField0_;
+            int to_bitField0_ = 0;
+            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+              to_bitField0_ |= 0x00000001;
+            }
+            result.name_ = name_;
+            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+              to_bitField0_ |= 0x00000002;
+            }
+            if (idBuilder_ == null) {
+              result.id_ = id_;
+            } else {
+              result.id_ = idBuilder_.build();
+            }
+            if (resourcesBuilder_ == null) {
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                resources_ = java.util.Collections.unmodifiableList(resources_);
+                bitField0_ = (bitField0_ & ~0x00000004);
+              }
+              result.resources_ = resources_;
+            } else {
+              result.resources_ = resourcesBuilder_.build();
+            }
+            if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+              to_bitField0_ |= 0x00000004;
+            }
+            if (labelsBuilder_ == null) {
+              result.labels_ = labels_;
+            } else {
+              result.labels_ = labelsBuilder_.build();
+            }
+            result.bitField0_ = to_bitField0_;
+            onBuilt();
+            return result;
+          }
+
+          public Builder mergeFrom(com.google.protobuf.Message other) {
+            if (other instanceof org.apache.mesos.Protos.ResourceUsage.Executor.Task) {
+              return mergeFrom((org.apache.mesos.Protos.ResourceUsage.Executor.Task)other);
+            } else {
+              super.mergeFrom(other);
+              return this;
+            }
+          }
+
+          public Builder mergeFrom(org.apache.mesos.Protos.ResourceUsage.Executor.Task other) {
+            if (other == org.apache.mesos.Protos.ResourceUsage.Executor.Task.getDefaultInstance()) return this;
+            if (other.hasName()) {
+              bitField0_ |= 0x00000001;
+              name_ = other.name_;
+              onChanged();
+            }
+            if (other.hasId()) {
+              mergeId(other.getId());
+            }
+            if (resourcesBuilder_ == null) {
+              if (!other.resources_.isEmpty()) {
+                if (resources_.isEmpty()) {
+                  resources_ = other.resources_;
+                  bitField0_ = (bitField0_ & ~0x00000004);
+                } else {
+                  ensureResourcesIsMutable();
+                  resources_.addAll(other.resources_);
+                }
+                onChanged();
+              }
+            } else {
+              if (!other.resources_.isEmpty()) {
+                if (resourcesBuilder_.isEmpty()) {
+                  resourcesBuilder_.dispose();
+                  resourcesBuilder_ = null;
+                  resources_ = other.resources_;
+                  bitField0_ = (bitField0_ & ~0x00000004);
+                  resourcesBuilder_ = 
+                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                       getResourcesFieldBuilder() : null;
+                } else {
+                  resourcesBuilder_.addAllMessages(other.resources_);
+                }
+              }
+            }
+            if (other.hasLabels()) {
+              mergeLabels(other.getLabels());
+            }
+            this.mergeUnknownFields(other.getUnknownFields());
+            return this;
+          }
+
+          public final boolean isInitialized() {
+            if (!hasName()) {
+              
+              return false;
+            }
+            if (!hasId()) {
+              
+              return false;
+            }
+            if (!getId().isInitialized()) {
+              
+              return false;
+            }
+            for (int i = 0; i < getResourcesCount(); i++) {
+              if (!getResources(i).isInitialized()) {
+                
+                return false;
+              }
+            }
+            if (hasLabels()) {
+              if (!getLabels().isInitialized()) {
+                
+                return false;
+              }
+            }
+            return true;
+          }
+
+          public Builder mergeFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            org.apache.mesos.Protos.ResourceUsage.Executor.Task parsedMessage = null;
+            try {
+              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              parsedMessage = (org.apache.mesos.Protos.ResourceUsage.Executor.Task) e.getUnfinishedMessage();
+              throw e;
+            } finally {
+              if (parsedMessage != null) {
+                mergeFrom(parsedMessage);
+              }
+            }
+            return this;
+          }
+          private int bitField0_;
+
+          // required string name = 1;
+          private java.lang.Object name_ = "";
+          /**
+           * <code>required string name = 1;</code>
+           */
+          public boolean hasName() {
+            return ((bitField0_ & 0x00000001) == 0x00000001);
+          }
+          /**
+           * <code>required string name = 1;</code>
+           */
+          public java.lang.String getName() {
+            java.lang.Object ref = name_;
+            if (!(ref instanceof java.lang.String)) {
+              java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                  .toStringUtf8();
+              name_ = s;
+              return s;
+            } else {
+              return (java.lang.String) ref;
+            }
+          }
+          /**
+           * <code>required string name = 1;</code>
+           */
+          public com.google.protobuf.ByteString
+              getNameBytes() {
+            java.lang.Object ref = name_;
+            if (ref instanceof String) {
+              com.google.protobuf.ByteString b = 
+                  com.google.protobuf.ByteString.copyFromUtf8(
+                      (java.lang.String) ref);
+              name_ = b;
+              return b;
+            } else {
+              return (com.google.protobuf.ByteString) ref;
+            }
+          }
+          /**
+           * <code>required string name = 1;</code>
+           */
+          public Builder setName(
+              java.lang.String value) {
+            if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+            name_ = value;
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>required string name = 1;</code>
+           */
+          public Builder clearName() {
+            bitField0_ = (bitField0_ & ~0x00000001);
+            name_ = getDefaultInstance().getName();
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>required string name = 1;</code>
+           */
+          public Builder setNameBytes(
+              com.google.protobuf.ByteString value) {
+            if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+            name_ = value;
+            onChanged();
+            return this;
+          }
+
+          // required .mesos.TaskID id = 2;
+          private org.apache.mesos.Protos.TaskID id_ = org.apache.mesos.Protos.TaskID.getDefaultInstance();
+          private com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.TaskID, org.apache.mesos.Protos.TaskID.Builder, org.apache.mesos.Protos.TaskIDOrBuilder> idBuilder_;
+          /**
+           * <code>required .mesos.TaskID id = 2;</code>
+           */
+          public boolean hasId() {
+            return ((bitField0_ & 0x00000002) == 0x00000002);
+          }
+          /**
+           * <code>required .mesos.TaskID id = 2;</code>
+           */
+          public org.apache.mesos.Protos.TaskID getId() {
+            if (idBuilder_ == null) {
+              return id_;
+            } else {
+              return idBuilder_.getMessage();
+            }
+          }
+          /**
+           * <code>required .mesos.TaskID id = 2;</code>
+           */
+          public Builder setId(org.apache.mesos.Protos.TaskID value) {
+            if (idBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              id_ = value;
+              onChanged();
+            } else {
+              idBuilder_.setMessage(value);
+            }
+            bitField0_ |= 0x00000002;
+            return this;
+          }
+          /**
+           * <code>required .mesos.TaskID id = 2;</code>
+           */
+          public Builder setId(
+              org.apache.mesos.Protos.TaskID.Builder builderForValue) {
+            if (idBuilder_ == null) {
+              id_ = builderForValue.build();
+              onChanged();
+            } else {
+              idBuilder_.setMessage(builderForValue.build());
+            }
+            bitField0_ |= 0x00000002;
+            return this;
+          }
+          /**
+           * <code>required .mesos.TaskID id = 2;</code>
+           */
+          public Builder mergeId(org.apache.mesos.Protos.TaskID value) {
+            if (idBuilder_ == null) {
+              if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                  id_ != org.apache.mesos.Protos.TaskID.getDefaultInstance()) {
+                id_ =
+                  org.apache.mesos.Protos.TaskID.newBuilder(id_).mergeFrom(value).buildPartial();
+              } else {
+                id_ = value;
+              }
+              onChanged();
+            } else {
+              idBuilder_.mergeFrom(value);
+            }
+            bitField0_ |= 0x00000002;
+            return this;
+          }
+          /**
+           * <code>required .mesos.TaskID id = 2;</code>
+           */
+          public Builder clearId() {
+            if (idBuilder_ == null) {
+              id_ = org.apache.mesos.Protos.TaskID.getDefaultInstance();
+              onChanged();
+            } else {
+              idBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000002);
+            return this;
+          }
+          /**
+           * <code>required .mesos.TaskID id = 2;</code>
+           */
+          public org.apache.mesos.Protos.TaskID.Builder getIdBuilder() {
+            bitField0_ |= 0x00000002;
+            onChanged();
+            return getIdFieldBuilder().getBuilder();
+          }
+          /**
+           * <code>required .mesos.TaskID id = 2;</code>
+           */
+          public org.apache.mesos.Protos.TaskIDOrBuilder getIdOrBuilder() {
+            if (idBuilder_ != null) {
+              return idBuilder_.getMessageOrBuilder();
+            } else {
+              return id_;
+            }
+          }
+          /**
+           * <code>required .mesos.TaskID id = 2;</code>
+           */
+          private com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.TaskID, org.apache.mesos.Protos.TaskID.Builder, org.apache.mesos.Protos.TaskIDOrBuilder> 
+              getIdFieldBuilder() {
+            if (idBuilder_ == null) {
+              idBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                  org.apache.mesos.Protos.TaskID, org.apache.mesos.Protos.TaskID.Builder, org.apache.mesos.Protos.TaskIDOrBuilder>(
+                      id_,
+                      getParentForChildren(),
+                      isClean());
+              id_ = null;
+            }
+            return idBuilder_;
+          }
+
+          // repeated .mesos.Resource resources = 3;
+          private java.util.List<org.apache.mesos.Protos.Resource> resources_ =
+            java.util.Collections.emptyList();
+          private void ensureResourcesIsMutable() {
+            if (!((bitField0_ & 0x00000004) == 0x00000004)) {
+              resources_ = new java.util.ArrayList<org.apache.mesos.Protos.Resource>(resources_);
+              bitField0_ |= 0x00000004;
+             }
+          }
+
+          private com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder> resourcesBuilder_;
+
+          /**
+           * <code>repeated .mesos.Resource resources = 3;</code>
+           */
+          public java.util.List<org.apache.mesos.Protos.Resource> getResourcesList() {
+            if (resourcesBuilder_ == null) {
+              return java.util.Collections.unmodifiableList(resources_);
+            } else {
+              return resourcesBuilder_.getMessageList();
+            }
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 3;</code>
+           */
+          public int getResourcesCount() {
+            if (resourcesBuilder_ == null) {
+              return resources_.size();
+            } else {
+              return resourcesBuilder_.getCount();
+            }
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 3;</code>
+           */
+          public org.apache.mesos.Protos.Resource getResources(int index) {
+            if (resourcesBuilder_ == null) {
+              return resources_.get(index);
+            } else {
+              return resourcesBuilder_.getMessage(index);
+            }
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 3;</code>
+           */
+          public Builder setResources(
+              int index, org.apache.mesos.Protos.Resource value) {
+            if (resourcesBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureResourcesIsMutable();
+              resources_.set(index, value);
+              onChanged();
+            } else {
+              resourcesBuilder_.setMessage(index, value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 3;</code>
+           */
+          public Builder setResources(
+              int index, org.apache.mesos.Protos.Resource.Builder builderForValue) {
+            if (resourcesBuilder_ == null) {
+              ensureResourcesIsMutable();
+              resources_.set(index, builderForValue.build());
+              onChanged();
+            } else {
+              resourcesBuilder_.setMessage(index, builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 3;</code>
+           */
+          public Builder addResources(org.apache.mesos.Protos.Resource value) {
+            if (resourcesBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureResourcesIsMutable();
+              resources_.add(value);
+              onChanged();
+            } else {
+              resourcesBuilder_.addMessage(value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 3;</code>
+           */
+          public Builder addResources(
+              int index, org.apache.mesos.Protos.Resource value) {
+            if (resourcesBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureResourcesIsMutable();
+              resources_.add(index, value);
+              onChanged();
+            } else {
+              resourcesBuilder_.addMessage(index, value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 3;</code>
+           */
+          public Builder addResources(
+              org.apache.mesos.Protos.Resource.Builder builderForValue) {
+            if (resourcesBuilder_ == null) {
+              ensureResourcesIsMutable();
+              resources_.add(builderForValue.build());
+              onChanged();
+            } else {
+              resourcesBuilder_.addMessage(builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 3;</code>
+           */
+          public Builder addResources(
+              int index, org.apache.mesos.Protos.Resource.Builder builderForValue) {
+            if (resourcesBuilder_ == null) {
+              ensureResourcesIsMutable();
+              resources_.add(index, builderForValue.build());
+              onChanged();
+            } else {
+              resourcesBuilder_.addMessage(index, builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 3;</code>
+           */
+          public Builder addAllResources(
+              java.lang.Iterable<? extends org.apache.mesos.Protos.Resource> values) {
+            if (resourcesBuilder_ == null) {
+              ensureResourcesIsMutable();
+              super.addAll(values, resources_);
+              onChanged();
+            } else {
+              resourcesBuilder_.addAllMessages(values);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 3;</code>
+           */
+          public Builder clearResources() {
+            if (resourcesBuilder_ == null) {
+              resources_ = java.util.Collections.emptyList();
+              bitField0_ = (bitField0_ & ~0x00000004);
+              onChanged();
+            } else {
+              resourcesBuilder_.clear();
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 3;</code>
+           */
+          public Builder removeResources(int index) {
+            if (resourcesBuilder_ == null) {
+              ensureResourcesIsMutable();
+              resources_.remove(index);
+              onChanged();
+            } else {
+              resourcesBuilder_.remove(index);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 3;</code>
+           */
+          public org.apache.mesos.Protos.Resource.Builder getResourcesBuilder(
+              int index) {
+            return getResourcesFieldBuilder().getBuilder(index);
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 3;</code>
+           */
+          public org.apache.mesos.Protos.ResourceOrBuilder getResourcesOrBuilder(
+              int index) {
+            if (resourcesBuilder_ == null) {
+              return resources_.get(index);  } else {
+              return resourcesBuilder_.getMessageOrBuilder(index);
+            }
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 3;</code>
+           */
+          public java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+               getResourcesOrBuilderList() {
+            if (resourcesBuilder_ != null) {
+              return resourcesBuilder_.getMessageOrBuilderList();
+            } else {
+              return java.util.Collections.unmodifiableList(resources_);
+            }
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 3;</code>
+           */
+          public org.apache.mesos.Protos.Resource.Builder addResourcesBuilder() {
+            return getResourcesFieldBuilder().addBuilder(
+                org.apache.mesos.Protos.Resource.getDefaultInstance());
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 3;</code>
+           */
+          public org.apache.mesos.Protos.Resource.Builder addResourcesBuilder(
+              int index) {
+            return getResourcesFieldBuilder().addBuilder(
+                index, org.apache.mesos.Protos.Resource.getDefaultInstance());
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 3;</code>
+           */
+          public java.util.List<org.apache.mesos.Protos.Resource.Builder> 
+               getResourcesBuilderList() {
+            return getResourcesFieldBuilder().getBuilderList();
+          }
+          private com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder> 
+              getResourcesFieldBuilder() {
+            if (resourcesBuilder_ == null) {
+              resourcesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                  org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder>(
+                      resources_,
+                      ((bitField0_ & 0x00000004) == 0x00000004),
+                      getParentForChildren(),
+                      isClean());
+              resources_ = null;
+            }
+            return resourcesBuilder_;
+          }
+
+          // optional .mesos.Labels labels = 4;
+          private org.apache.mesos.Protos.Labels labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+          private com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Labels, org.apache.mesos.Protos.Labels.Builder, org.apache.mesos.Protos.LabelsOrBuilder> labelsBuilder_;
+          /**
+           * <code>optional .mesos.Labels labels = 4;</code>
+           */
+          public boolean hasLabels() {
+            return ((bitField0_ & 0x00000008) == 0x00000008);
+          }
+          /**
+           * <code>optional .mesos.Labels labels = 4;</code>
+           */
+          public org.apache.mesos.Protos.Labels getLabels() {
+            if (labelsBuilder_ == null) {
+              return labels_;
+            } else {
+              return labelsBuilder_.getMessage();
+            }
+          }
+          /**
+           * <code>optional .mesos.Labels labels = 4;</code>
+           */
+          public Builder setLabels(org.apache.mesos.Protos.Labels value) {
+            if (labelsBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              labels_ = value;
+              onChanged();
+            } else {
+              labelsBuilder_.setMessage(value);
+            }
+            bitField0_ |= 0x00000008;
+            return this;
+          }
+          /**
+           * <code>optional .mesos.Labels labels = 4;</code>
+           */
+          public Builder setLabels(
+              org.apache.mesos.Protos.Labels.Builder builderForValue) {
+            if (labelsBuilder_ == null) {
+              labels_ = builderForValue.build();
+              onChanged();
+            } else {
+              labelsBuilder_.setMessage(builderForValue.build());
+            }
+            bitField0_ |= 0x00000008;
+            return this;
+          }
+          /**
+           * <code>optional .mesos.Labels labels = 4;</code>
+           */
+          public Builder mergeLabels(org.apache.mesos.Protos.Labels value) {
+            if (labelsBuilder_ == null) {
+              if (((bitField0_ & 0x00000008) == 0x00000008) &&
+                  labels_ != org.apache.mesos.Protos.Labels.getDefaultInstance()) {
+                labels_ =
+                  org.apache.mesos.Protos.Labels.newBuilder(labels_).mergeFrom(value).buildPartial();
+              } else {
+                labels_ = value;
+              }
+              onChanged();
+            } else {
+              labelsBuilder_.mergeFrom(value);
+            }
+            bitField0_ |= 0x00000008;
+            return this;
+          }
+          /**
+           * <code>optional .mesos.Labels labels = 4;</code>
+           */
+          public Builder clearLabels() {
+            if (labelsBuilder_ == null) {
+              labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+              onChanged();
+            } else {
+              labelsBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000008);
+            return this;
+          }
+          /**
+           * <code>optional .mesos.Labels labels = 4;</code>
+           */
+          public org.apache.mesos.Protos.Labels.Builder getLabelsBuilder() {
+            bitField0_ |= 0x00000008;
+            onChanged();
+            return getLabelsFieldBuilder().getBuilder();
+          }
+          /**
+           * <code>optional .mesos.Labels labels = 4;</code>
+           */
+          public org.apache.mesos.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+            if (labelsBuilder_ != null) {
+              return labelsBuilder_.getMessageOrBuilder();
+            } else {
+              return labels_;
+            }
+          }
+          /**
+           * <code>optional .mesos.Labels labels = 4;</code>
+           */
+          private com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Labels, org.apache.mesos.Protos.Labels.Builder, org.apache.mesos.Protos.LabelsOrBuilder> 
+              getLabelsFieldBuilder() {
+            if (labelsBuilder_ == null) {
+              labelsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                  org.apache.mesos.Protos.Labels, org.apache.mesos.Protos.Labels.Builder, org.apache.mesos.Protos.LabelsOrBuilder>(
+                      labels_,
+                      getParentForChildren(),
+                      isClean());
+              labels_ = null;
+            }
+            return labelsBuilder_;
+          }
+
+          // @@protoc_insertion_point(builder_scope:mesos.ResourceUsage.Executor.Task)
+        }
+
+        static {
+          defaultInstance = new Task(true);
+          defaultInstance.initFields();
+        }
+
+        // @@protoc_insertion_point(class_scope:mesos.ResourceUsage.Executor.Task)
+      }
+
+      private int bitField0_;
+      // required .mesos.ExecutorInfo executor_info = 1;
+      public static final int EXECUTOR_INFO_FIELD_NUMBER = 1;
+      private org.apache.mesos.Protos.ExecutorInfo executorInfo_;
+      /**
+       * <code>required .mesos.ExecutorInfo executor_info = 1;</code>
+       */
+      public boolean hasExecutorInfo() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.ExecutorInfo executor_info = 1;</code>
+       */
+      public org.apache.mesos.Protos.ExecutorInfo getExecutorInfo() {
+        return executorInfo_;
+      }
+      /**
+       * <code>required .mesos.ExecutorInfo executor_info = 1;</code>
+       */
+      public org.apache.mesos.Protos.ExecutorInfoOrBuilder getExecutorInfoOrBuilder() {
+        return executorInfo_;
+      }
+
+      // repeated .mesos.Resource allocated = 2;
+      public static final int ALLOCATED_FIELD_NUMBER = 2;
+      private java.util.List<org.apache.mesos.Protos.Resource> allocated_;
+      /**
+       * <code>repeated .mesos.Resource allocated = 2;</code>
+       *
+       * <pre>
+       * This includes resources used by the executor itself
+       * as well as its active tasks.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.Protos.Resource> getAllocatedList() {
+        return allocated_;
+      }
+      /**
+       * <code>repeated .mesos.Resource allocated = 2;</code>
+       *
+       * <pre>
+       * This includes resources used by the executor itself
+       * as well as its active tasks.
+       * </pre>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+          getAllocatedOrBuilderList() {
+        return allocated_;
+      }
+      /**
+       * <code>repeated .mesos.Resource allocated = 2;</code>
+       *
+       * <pre>
+       * This includes resources used by the executor itself
+       * as well as its active tasks.
+       * </pre>
+       */
+      public int getAllocatedCount() {
+        return allocated_.size();
+      }
+      /**
+       * <code>repeated .mesos.Resource allocated = 2;</code>
+       *
+       * <pre>
+       * This includes resources used by the executor itself
+       * as well as its active tasks.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Resource getAllocated(int index) {
+        return allocated_.get(index);
+      }
+      /**
+       * <code>repeated .mesos.Resource allocated = 2;</code>
+       *
+       * <pre>
+       * This includes resources used by the executor itself
+       * as well as its active tasks.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.ResourceOrBuilder getAllocatedOrBuilder(
+          int index) {
+        return allocated_.get(index);
+      }
+
+      // optional .mesos.ResourceStatistics statistics = 3;
+      public static final int STATISTICS_FIELD_NUMBER = 3;
+      private org.apache.mesos.Protos.ResourceStatistics statistics_;
+      /**
+       * <code>optional .mesos.ResourceStatistics statistics = 3;</code>
+       *
+       * <pre>
+       * Current resource usage. If absent, the containerizer
+       * cannot provide resource usage.
+       * </pre>
+       */
+      public boolean hasStatistics() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.ResourceStatistics statistics = 3;</code>
+       *
+       * <pre>
+       * Current resource usage. If absent, the containerizer
+       * cannot provide resource usage.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.ResourceStatistics getStatistics() {
+        return statistics_;
+      }
+      /**
+       * <code>optional .mesos.ResourceStatistics statistics = 3;</code>
+       *
+       * <pre>
+       * Current resource usage. If absent, the containerizer
+       * cannot provide resource usage.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.ResourceStatisticsOrBuilder getStatisticsOrBuilder() {
+        return statistics_;
+      }
+
+      // required .mesos.ContainerID container_id = 4;
+      public static final int CONTAINER_ID_FIELD_NUMBER = 4;
+      private org.apache.mesos.Protos.ContainerID containerId_;
+      /**
+       * <code>required .mesos.ContainerID container_id = 4;</code>
+       *
+       * <pre>
+       * The container id for the executor specified in the executor_info field.
+       * </pre>
+       */
+      public boolean hasContainerId() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>required .mesos.ContainerID container_id = 4;</code>
+       *
+       * <pre>
+       * The container id for the executor specified in the executor_info field.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.ContainerID getContainerId() {
+        return containerId_;
+      }
+      /**
+       * <code>required .mesos.ContainerID container_id = 4;</code>
+       *
+       * <pre>
+       * The container id for the executor specified in the executor_info field.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.ContainerIDOrBuilder getContainerIdOrBuilder() {
+        return containerId_;
+      }
+
+      // repeated .mesos.ResourceUsage.Executor.Task tasks = 5;
+      public static final int TASKS_FIELD_NUMBER = 5;
+      private java.util.List<org.apache.mesos.Protos.ResourceUsage.Executor.Task> tasks_;
+      /**
+       * <code>repeated .mesos.ResourceUsage.Executor.Task tasks = 5;</code>
+       *
+       * <pre>
+       * Non-terminal tasks.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.Protos.ResourceUsage.Executor.Task> getTasksList() {
+        return tasks_;
+      }
+      /**
+       * <code>repeated .mesos.ResourceUsage.Executor.Task tasks = 5;</code>
+       *
+       * <pre>
+       * Non-terminal tasks.
+       * </pre>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.ResourceUsage.Executor.TaskOrBuilder> 
+          getTasksOrBuilderList() {
+        return tasks_;
+      }
+      /**
+       * <code>repeated .mesos.ResourceUsage.Executor.Task tasks = 5;</code>
+       *
+       * <pre>
+       * Non-terminal tasks.
+       * </pre>
+       */
+      public int getTasksCount() {
+        return tasks_.size();
+      }
+      /**
+       * <code>repeated .mesos.ResourceUsage.Executor.Task tasks = 5;</code>
+       *
+       * <pre>
+       * Non-terminal tasks.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.ResourceUsage.Executor.Task getTasks(int index) {
+        return tasks_.get(index);
+      }
+      /**
+       * <code>repeated .mesos.ResourceUsage.Executor.Task tasks = 5;</code>
+       *
+       * <pre>
+       * Non-terminal tasks.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.ResourceUsage.Executor.TaskOrBuilder getTasksOrBuilder(
+          int index) {
+        return tasks_.get(index);
+      }
+
+      private void initFields() {
+        executorInfo_ = org.apache.mesos.Protos.ExecutorInfo.getDefaultInstance();
+        allocated_ = java.util.Collections.emptyList();
+        statistics_ = org.apache.mesos.Protos.ResourceStatistics.getDefaultInstance();
+        containerId_ = org.apache.mesos.Protos.ContainerID.getDefaultInstance();
+        tasks_ = java.util.Collections.emptyList();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasExecutorInfo()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!hasContainerId()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getExecutorInfo().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        for (int i = 0; i < getAllocatedCount(); i++) {
+          if (!getAllocated(i).isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        if (hasStatistics()) {
+          if (!getStatistics().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        if (!getContainerId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        for (int i = 0; i < getTasksCount(); i++) {
+          if (!getTasks(i).isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, executorInfo_);
+        }
+        for (int i = 0; i < allocated_.size(); i++) {
+          output.writeMessage(2, allocated_.get(i));
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeMessage(3, statistics_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeMessage(4, containerId_);
+        }
+        for (int i = 0; i < tasks_.size(); i++) {
+          output.writeMessage(5, tasks_.get(i));
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, executorInfo_);
+        }
+        for (int i = 0; i < allocated_.size(); i++) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(2, allocated_.get(i));
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(3, statistics_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(4, containerId_);
+        }
+        for (int i = 0; i < tasks_.size(); i++) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(5, tasks_.get(i));
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.Protos.ResourceUsage.Executor parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.ResourceUsage.Executor parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.ResourceUsage.Executor parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.ResourceUsage.Executor parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.ResourceUsage.Executor parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.ResourceUsage.Executor parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.ResourceUsage.Executor parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.Protos.ResourceUsage.Executor parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.ResourceUsage.Executor parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.ResourceUsage.Executor parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.Protos.ResourceUsage.Executor prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.ResourceUsage.Executor}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.Protos.ResourceUsage.ExecutorOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_ResourceUsage_Executor_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_ResourceUsage_Executor_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.ResourceUsage.Executor.class, org.apache.mesos.Protos.ResourceUsage.Executor.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.Protos.ResourceUsage.Executor.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getExecutorInfoFieldBuilder();
+            getAllocatedFieldBuilder();
+            getStatisticsFieldBuilder();
+            getContainerIdFieldBuilder();
+            getTasksFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (executorInfoBuilder_ == null) {
+            executorInfo_ = org.apache.mesos.Protos.ExecutorInfo.getDefaultInstance();
+          } else {
+            executorInfoBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          if (allocatedBuilder_ == null) {
+            allocated_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000002);
+          } else {
+            allocatedBuilder_.clear();
+          }
+          if (statisticsBuilder_ == null) {
+            statistics_ = org.apache.mesos.Protos.ResourceStatistics.getDefaultInstance();
+          } else {
+            statisticsBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
+          if (containerIdBuilder_ == null) {
+            containerId_ = org.apache.mesos.Protos.ContainerID.getDefaultInstance();
+          } else {
+            containerIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000008);
+          if (tasksBuilder_ == null) {
+            tasks_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000010);
+          } else {
+            tasksBuilder_.clear();
+          }
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.Protos.internal_static_mesos_ResourceUsage_Executor_descriptor;
+        }
+
+        public org.apache.mesos.Protos.ResourceUsage.Executor getDefaultInstanceForType() {
+          return org.apache.mesos.Protos.ResourceUsage.Executor.getDefaultInstance();
+        }
+
+        public org.apache.mesos.Protos.ResourceUsage.Executor build() {
+          org.apache.mesos.Protos.ResourceUsage.Executor result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.Protos.ResourceUsage.Executor buildPartial() {
+          org.apache.mesos.Protos.ResourceUsage.Executor result = new org.apache.mesos.Protos.ResourceUsage.Executor(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (executorInfoBuilder_ == null) {
+            result.executorInfo_ = executorInfo_;
+          } else {
+            result.executorInfo_ = executorInfoBuilder_.build();
+          }
+          if (allocatedBuilder_ == null) {
+            if (((bitField0_ & 0x00000002) == 0x00000002)) {
+              allocated_ = java.util.Collections.unmodifiableList(allocated_);
+              bitField0_ = (bitField0_ & ~0x00000002);
+            }
+            result.allocated_ = allocated_;
+          } else {
+            result.allocated_ = allocatedBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          if (statisticsBuilder_ == null) {
+            result.statistics_ = statistics_;
+          } else {
+            result.statistics_ = statisticsBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          if (containerIdBuilder_ == null) {
+            result.containerId_ = containerId_;
+          } else {
+            result.containerId_ = containerIdBuilder_.build();
+          }
+          if (tasksBuilder_ == null) {
+            if (((bitField0_ & 0x00000010) == 0x00000010)) {
+              tasks_ = java.util.Collections.unmodifiableList(tasks_);
+              bitField0_ = (bitField0_ & ~0x00000010);
+            }
+            result.tasks_ = tasks_;
+          } else {
+            result.tasks_ = tasksBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.Protos.ResourceUsage.Executor) {
+            return mergeFrom((org.apache.mesos.Protos.ResourceUsage.Executor)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.Protos.ResourceUsage.Executor other) {
+          if (other == org.apache.mesos.Protos.ResourceUsage.Executor.getDefaultInstance()) return this;
+          if (other.hasExecutorInfo()) {
+            mergeExecutorInfo(other.getExecutorInfo());
+          }
+          if (allocatedBuilder_ == null) {
+            if (!other.allocated_.isEmpty()) {
+              if (allocated_.isEmpty()) {
+                allocated_ = other.allocated_;
+                bitField0_ = (bitField0_ & ~0x00000002);
+              } else {
+                ensureAllocatedIsMutable();
+                allocated_.addAll(other.allocated_);
+              }
+              onChanged();
+            }
+          } else {
+            if (!other.allocated_.isEmpty()) {
+              if (allocatedBuilder_.isEmpty()) {
+                allocatedBuilder_.dispose();
+                allocatedBuilder_ = null;
+                allocated_ = other.allocated_;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                allocatedBuilder_ = 
+                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                     getAllocatedFieldBuilder() : null;
+              } else {
+                allocatedBuilder_.addAllMessages(other.allocated_);
+              }
+            }
+          }
+          if (other.hasStatistics()) {
+            mergeStatistics(other.getStatistics());
+          }
+          if (other.hasContainerId()) {
+            mergeContainerId(other.getContainerId());
+          }
+          if (tasksBuilder_ == null) {
+            if (!other.tasks_.isEmpty()) {
+              if (tasks_.isEmpty()) {
+                tasks_ = other.tasks_;
+                bitField0_ = (bitField0_ & ~0x00000010);
+              } else {
+                ensureTasksIsMutable();
+                tasks_.addAll(other.tasks_);
+              }
+              onChanged();
+            }
+          } else {
+            if (!other.tasks_.isEmpty()) {
+              if (tasksBuilder_.isEmpty()) {
+                tasksBuilder_.dispose();
+                tasksBuilder_ = null;
+                tasks_ = other.tasks_;
+                bitField0_ = (bitField0_ & ~0x00000010);
+                tasksBuilder_ = 
+                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                     getTasksFieldBuilder() : null;
+              } else {
+                tasksBuilder_.addAllMessages(other.tasks_);
+              }
+            }
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasExecutorInfo()) {
+            
+            return false;
+          }
+          if (!hasContainerId()) {
+            
+            return false;
+          }
+          if (!getExecutorInfo().isInitialized()) {
+            
+            return false;
+          }
+          for (int i = 0; i < getAllocatedCount(); i++) {
+            if (!getAllocated(i).isInitialized()) {
+              
+              return false;
+            }
+          }
+          if (hasStatistics()) {
+            if (!getStatistics().isInitialized()) {
+              
+              return false;
+            }
+          }
+          if (!getContainerId().isInitialized()) {
+            
+            return false;
+          }
+          for (int i = 0; i < getTasksCount(); i++) {
+            if (!getTasks(i).isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.Protos.ResourceUsage.Executor parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.Protos.ResourceUsage.Executor) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required .mesos.ExecutorInfo executor_info = 1;
+        private org.apache.mesos.Protos.ExecutorInfo executorInfo_ = org.apache.mesos.Protos.ExecutorInfo.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.ExecutorInfo, org.apache.mesos.Protos.ExecutorInfo.Builder, org.apache.mesos.Protos.ExecutorInfoOrBuilder> executorInfoBuilder_;
+        /**
+         * <code>required .mesos.ExecutorInfo executor_info = 1;</code>
+         */
+        public boolean hasExecutorInfo() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.ExecutorInfo executor_info = 1;</code>
+         */
+        public org.apache.mesos.Protos.ExecutorInfo getExecutorInfo() {
+          if (executorInfoBuilder_ == null) {
+            return executorInfo_;
+          } else {
+            return executorInfoBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.ExecutorInfo executor_info = 1;</code>
+         */
+        public Builder setExecutorInfo(org.apache.mesos.Protos.ExecutorInfo value) {
+          if (executorInfoBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            executorInfo_ = value;
+            onChanged();
+          } else {
+            executorInfoBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.ExecutorInfo executor_info = 1;</code>
+         */
+        public Builder setExecutorInfo(
+            org.apache.mesos.Protos.ExecutorInfo.Builder builderForValue) {
+          if (executorInfoBuilder_ == null) {
+            executorInfo_ = builderForValue.build();
+            onChanged();
+          } else {
+            executorInfoBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.ExecutorInfo executor_info = 1;</code>
+         */
+        public Builder mergeExecutorInfo(org.apache.mesos.Protos.ExecutorInfo value) {
+          if (executorInfoBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                executorInfo_ != org.apache.mesos.Protos.ExecutorInfo.getDefaultInstance()) {
+              executorInfo_ =
+                org.apache.mesos.Protos.ExecutorInfo.newBuilder(executorInfo_).mergeFrom(value).buildPartial();
+            } else {
+              executorInfo_ = value;
+            }
+            onChanged();
+          } else {
+            executorInfoBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.ExecutorInfo executor_info = 1;</code>
+         */
+        public Builder clearExecutorInfo() {
+          if (executorInfoBuilder_ == null) {
+            executorInfo_ = org.apache.mesos.Protos.ExecutorInfo.getDefaultInstance();
+            onChanged();
+          } else {
+            executorInfoBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>required .mesos.ExecutorInfo executor_info = 1;</code>
+         */
+        public org.apache.mesos.Protos.ExecutorInfo.Builder getExecutorInfoBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getExecutorInfoFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.ExecutorInfo executor_info = 1;</code>
+         */
+        public org.apache.mesos.Protos.ExecutorInfoOrBuilder getExecutorInfoOrBuilder() {
+          if (executorInfoBuilder_ != null) {
+            return executorInfoBuilder_.getMessageOrBuilder();
+          } else {
+            return executorInfo_;
+          }
+        }
+        /**
+         * <code>required .mesos.ExecutorInfo executor_info = 1;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.ExecutorInfo, org.apache.mesos.Protos.ExecutorInfo.Builder, org.apache.mesos.Protos.ExecutorInfoOrBuilder> 
+            getExecutorInfoFieldBuilder() {
+          if (executorInfoBuilder_ == null) {
+            executorInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.ExecutorInfo, org.apache.mesos.Protos.ExecutorInfo.Builder, org.apache.mesos.Protos.ExecutorInfoOrBuilder>(
+                    executorInfo_,
+                    getParentForChildren(),
+                    isClean());
+            executorInfo_ = null;
+          }
+          return executorInfoBuilder_;
+        }
+
+        // repeated .mesos.Resource allocated = 2;
+        private java.util.List<org.apache.mesos.Protos.Resource> allocated_ =
+          java.util.Collections.emptyList();
+        private void ensureAllocatedIsMutable() {
+          if (!((bitField0_ & 0x00000002) == 0x00000002)) {
+            allocated_ = new java.util.ArrayList<org.apache.mesos.Protos.Resource>(allocated_);
+            bitField0_ |= 0x00000002;
+           }
+        }
+
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder> allocatedBuilder_;
+
+        /**
+         * <code>repeated .mesos.Resource allocated = 2;</code>
+         *
+         * <pre>
+         * This includes resources used by the executor itself
+         * as well as its active tasks.
+         * </pre>
+         */
+        public java.util.List<org.apache.mesos.Protos.Resource> getAllocatedList() {
+          if (allocatedBuilder_ == null) {
+            return java.util.Collections.unmodifiableList(allocated_);
+          } else {
+            return allocatedBuilder_.getMessageList();
+          }
+        }
+        /**
+         * <code>repeated .mesos.Resource allocated = 2;</code>
+         *
+         * <pre>
+         * This includes resources used by the executor itself
+         * as well as its active tasks.
+         * </pre>
+         */
+        public int getAllocatedCount() {
+          if (allocatedBuilder_ == null) {
+            return allocated_.size();
+          } else {
+            return allocatedBuilder_.getCount();
+          }
+        }
+        /**
+         * <code>repeated .mesos.Resource allocated = 2;</code>
+         *
+         * <pre>
+         * This includes resources used by the executor itself
+         * as well as its active tasks.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.Resource getAllocated(int index) {
+          if (allocatedBuilder_ == null) {
+            return allocated_.get(index);
+          } else {
+            return allocatedBuilder_.getMessage(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.Resource allocated = 2;</code>
+         *
+         * <pre>
+         * This includes resources used by the executor itself
+         * as well as its active tasks.
+         * </pre>
+         */
+        public Builder setAllocated(
+            int index, org.apache.mesos.Protos.Resource value) {
+          if (allocatedBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureAllocatedIsMutable();
+            allocated_.set(index, value);
+            onChanged();
+          } else {
+            allocatedBuilder_.setMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Resource allocated = 2;</code>
+         *
+         * <pre>
+         * This includes resources used by the executor itself
+         * as well as its active tasks.
+         * </pre>
+         */
+        public Builder setAllocated(
+            int index, org.apache.mesos.Protos.Resource.Builder builderForValue) {
+          if (allocatedBuilder_ == null) {
+            ensureAllocatedIsMutable();
+            allocated_.set(index, builderForValue.build());
+            onChanged();
+          } else {
+            allocatedBuilder_.setMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Resource allocated = 2;</code>
+         *
+         * <pre>
+         * This includes resources used by the executor itself
+         * as well as its active tasks.
+         * </pre>
+         */
+        public Builder addAllocated(org.apache.mesos.Protos.Resource value) {
+          if (allocatedBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureAllocatedIsMutable();
+            allocated_.add(value);
+            onChanged();
+          } else {
+            allocatedBuilder_.addMessage(value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Resource allocated = 2;</code>
+         *
+         * <pre>
+         * This includes resources used by the executor itself
+         * as well as its active tasks.
+         * </pre>
+         */
+        public Builder addAllocated(
+            int index, org.apache.mesos.Protos.Resource value) {
+          if (allocatedBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureAllocatedIsMutable();
+            allocated_.add(index, value);
+            onChanged();
+          } else {
+            allocatedBuilder_.addMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Resource allocated = 2;</code>
+         *
+         * <pre>
+         * This includes resources used by the executor itself
+         * as well as its active tasks.
+         * </pre>
+         */
+        public Builder addAllocated(
+            org.apache.mesos.Protos.Resource.Builder builderForValue) {
+          if (allocatedBuilder_ == null) {
+            ensureAllocatedIsMutable();
+            allocated_.add(builderForValue.build());
+            onChanged();
+          } else {
+            allocatedBuilder_.addMessage(builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Resource allocated = 2;</code>
+         *
+         * <pre>
+         * This includes resources used by the executor itself
+         * as well as its active tasks.
+         * </pre>
+         */
+        public Builder addAllocated(
+            int index, org.apache.mesos.Protos.Resource.Builder builderForValue) {
+          if (allocatedBuilder_ == null) {
+            ensureAllocatedIsMutable();
+            allocated_.add(index, builderForValue.build());
+            onChanged();
+          } else {
+            allocatedBuilder_.addMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Resource allocated = 2;</code>
+         *
+         * <pre>
+         * This includes resources used by the executor itself
+         * as well as its active tasks.
+         * </pre>
+         */
+        public Builder addAllAllocated(
+            java.lang.Iterable<? extends org.apache.mesos.Protos.Resource> values) {
+          if (allocatedBuilder_ == null) {
+            ensureAllocatedIsMutable();
+            super.addAll(values, allocated_);
+            onChanged();
+          } else {
+            allocatedBuilder_.addAllMessages(values);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Resource allocated = 2;</code>
+         *
+         * <pre>
+         * This includes resources used by the executor itself
+         * as well as its active tasks.
+         * </pre>
+         */
+        public Builder clearAllocated() {
+          if (allocatedBuilder_ == null) {
+            allocated_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000002);
+            onChanged();
+          } else {
+            allocatedBuilder_.clear();
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Resource allocated = 2;</code>
+         *
+         * <pre>
+         * This includes resources used by the executor itself
+         * as well as its active tasks.
+         * </pre>
+         */
+        public Builder removeAllocated(int index) {
+          if (allocatedBuilder_ == null) {
+            ensureAllocatedIsMutable();
+            allocated_.remove(index);
+            onChanged();
+          } else {
+            allocatedBuilder_.remove(index);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Resource allocated = 2;</code>
+         *
+         * <pre>
+         * This includes resources used by the executor itself
+         * as well as its active tasks.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.Resource.Builder getAllocatedBuilder(
+            int index) {
+          return getAllocatedFieldBuilder().getBuilder(index);
+        }
+        /**
+         * <code>repeated .mesos.Resource allocated = 2;</code>
+         *
+         * <pre>
+         * This includes resources used by the executor itself
+         * as well as its active tasks.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.ResourceOrBuilder getAllocatedOrBuilder(
+            int index) {
+          if (allocatedBuilder_ == null) {
+            return allocated_.get(index);  } else {
+            return allocatedBuilder_.getMessageOrBuilder(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.Resource allocated = 2;</code>
+         *
+         * <pre>
+         * This includes resources used by the executor itself
+         * as well as its active tasks.
+         * </pre>
+         */
+        public java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+             getAllocatedOrBuilderList() {
+          if (allocatedBuilder_ != null) {
+            return allocatedBuilder_.getMessageOrBuilderList();
+          } else {
+            return java.util.Collections.unmodifiableList(allocated_);
+          }
+        }
+        /**
+         * <code>repeated .mesos.Resource allocated = 2;</code>
+         *
+         * <pre>
+         * This includes resources used by the executor itself
+         * as well as its active tasks.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.Resource.Builder addAllocatedBuilder() {
+          return getAllocatedFieldBuilder().addBuilder(
+              org.apache.mesos.Protos.Resource.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.Resource allocated = 2;</code>
+         *
+         * <pre>
+         * This includes resources used by the executor itself
+         * as well as its active tasks.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.Resource.Builder addAllocatedBuilder(
+            int index) {
+          return getAllocatedFieldBuilder().addBuilder(
+              index, org.apache.mesos.Protos.Resource.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.Resource allocated = 2;</code>
+         *
+         * <pre>
+         * This includes resources used by the executor itself
+         * as well as its active tasks.
+         * </pre>
+         */
+        public java.util.List<org.apache.mesos.Protos.Resource.Builder> 
+             getAllocatedBuilderList() {
+          return getAllocatedFieldBuilder().getBuilderList();
+        }
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder> 
+            getAllocatedFieldBuilder() {
+          if (allocatedBuilder_ == null) {
+            allocatedBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder>(
+                    allocated_,
+                    ((bitField0_ & 0x00000002) == 0x00000002),
+                    getParentForChildren(),
+                    isClean());
+            allocated_ = null;
+          }
+          return allocatedBuilder_;
+        }
+
+        // optional .mesos.ResourceStatistics statistics = 3;
+        private org.apache.mesos.Protos.ResourceStatistics statistics_ = org.apache.mesos.Protos.ResourceStatistics.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.ResourceStatistics, org.apache.mesos.Protos.ResourceStatistics.Builder, org.apache.mesos.Protos.ResourceStatisticsOrBuilder> statisticsBuilder_;
+        /**
+         * <code>optional .mesos.ResourceStatistics statistics = 3;</code>
+         *
+         * <pre>
+         * Current resource usage. If absent, the containerizer
+         * cannot provide resource usage.
+         * </pre>
+         */
+        public boolean hasStatistics() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional .mesos.ResourceStatistics statistics = 3;</code>
+         *
+         * <pre>
+         * Current resource usage. If absent, the containerizer
+         * cannot provide resource usage.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.ResourceStatistics getStatistics() {
+          if (statisticsBuilder_ == null) {
+            return statistics_;
+          } else {
+            return statisticsBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.ResourceStatistics statistics = 3;</code>
+         *
+         * <pre>
+         * Current resource usage. If absent, the containerizer
+         * cannot provide resource usage.
+         * </pre>
+         */
+        public Builder setStatistics(org.apache.mesos.Protos.ResourceStatistics value) {
+          if (statisticsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            statistics_ = value;
+            onChanged();
+          } else {
+            statisticsBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.ResourceStatistics statistics = 3;</code>
+         *
+         * <pre>
+         * Current resource usage. If absent, the containerizer
+         * cannot provide resource usage.
+         * </pre>
+         */
+        public Builder setStatistics(
+            org.apache.mesos.Protos.ResourceStatistics.Builder builderForValue) {
+          if (statisticsBuilder_ == null) {
+            statistics_ = builderForValue.build();
+            onChanged();
+          } else {
+            statisticsBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.ResourceStatistics statistics = 3;</code>
+         *
+         * <pre>
+         * Current resource usage. If absent, the containerizer
+         * cannot provide resource usage.
+         * </pre>
+         */
+        public Builder mergeStatistics(org.apache.mesos.Protos.ResourceStatistics value) {
+          if (statisticsBuilder_ == null) {
+            if (((bitField0_ & 0x00000004) == 0x00000004) &&
+                statistics_ != org.apache.mesos.Protos.ResourceStatistics.getDefaultInstance()) {
+              statistics_ =
+                org.apache.mesos.Protos.ResourceStatistics.newBuilder(statistics_).mergeFrom(value).buildPartial();
+            } else {
+              statistics_ = value;
+            }
+            onChanged();
+          } else {
+            statisticsBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.ResourceStatistics statistics = 3;</code>
+         *
+         * <pre>
+         * Current resource usage. If absent, the containerizer
+         * cannot provide resource usage.
+         * </pre>
+         */
+        public Builder clearStatistics() {
+          if (statisticsBuilder_ == null) {
+            statistics_ = org.apache.mesos.Protos.ResourceStatistics.getDefaultInstance();
+            onChanged();
+          } else {
+            statisticsBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.ResourceStatistics statistics = 3;</code>
+         *
+         * <pre>
+         * Current resource usage. If absent, the containerizer
+         * cannot provide resource usage.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.ResourceStatistics.Builder getStatisticsBuilder() {
+          bitField0_ |= 0x00000004;
+          onChanged();
+          return getStatisticsFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.ResourceStatistics statistics = 3;</code>
+         *
+         * <pre>
+         * Current resource usage. If absent, the containerizer
+         * cannot provide resource usage.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.ResourceStatisticsOrBuilder getStatisticsOrBuilder() {
+          if (statisticsBuilder_ != null) {
+            return statisticsBuilder_.getMessageOrBuilder();
+          } else {
+            return statistics_;
+          }
+        }
+        /**
+         * <code>optional .mesos.ResourceStatistics statistics = 3;</code>
+         *
+         * <pre>
+         * Current resource usage. If absent, the containerizer
+         * cannot provide resource usage.
+         * </pre>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.ResourceStatistics, org.apache.mesos.Protos.ResourceStatistics.Builder, org.apache.mesos.Protos.ResourceStatisticsOrBuilder> 
+            getStatisticsFieldBuilder() {
+          if (statisticsBuilder_ == null) {
+            statisticsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.ResourceStatistics, org.apache.mesos.Protos.ResourceStatistics.Builder, org.apache.mesos.Protos.ResourceStatisticsOrBuilder>(
+                    statistics_,
+                    getParentForChildren(),
+                    isClean());
+            statistics_ = null;
+          }
+          return statisticsBuilder_;
+        }
+
+        // required .mesos.ContainerID container_id = 4;
+        private org.apache.mesos.Protos.ContainerID containerId_ = org.apache.mesos.Protos.ContainerID.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.ContainerID, org.apache.mesos.Protos.ContainerID.Builder, org.apache.mesos.Protos.ContainerIDOrBuilder> containerIdBuilder_;
+        /**
+         * <code>required .mesos.ContainerID container_id = 4;</code>
+         *
+         * <pre>
+         * The container id for the executor specified in the executor_info field.
+         * </pre>
+         */
+        public boolean hasContainerId() {
+          return ((bitField0_ & 0x00000008) == 0x00000008);
+        }
+        /**
+         * <code>required .mesos.ContainerID container_id = 4;</code>
+         *
+         * <pre>
+         * The container id for the executor specified in the executor_info field.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.ContainerID getContainerId() {
+          if (containerIdBuilder_ == null) {
+            return containerId_;
+          } else {
+            return containerIdBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.ContainerID container_id = 4;</code>
+         *
+         * <pre>
+         * The container id for the executor specified in the executor_info field.
+         * </pre>
+         */
+        public Builder setContainerId(org.apache.mesos.Protos.ContainerID value) {
+          if (containerIdBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            containerId_ = value;
+            onChanged();
+          } else {
+            containerIdBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000008;
+          return this;
+        }
+        /**
+         * <code>required .mesos.ContainerID container_id = 4;</code>
+         *
+         * <pre>
+         * The container id for the executor specified in the executor_info field.
+         * </pre>
+         */
+        public Builder setContainerId(
+            org.apache.mesos.Protos.ContainerID.Builder builderForValue) {
+          if (containerIdBuilder_ == null) {
+            containerId_ = builderForValue.build();
+            onChanged();
+          } else {
+            containerIdBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000008;
+          return this;
+        }
+        /**
+         * <code>required .mesos.ContainerID container_id = 4;</code>
+         *
+         * <pre>
+         * The container id for the executor specified in the executor_info field.
+         * </pre>
+         */
+        public Builder mergeContainerId(org.apache.mesos.Protos.ContainerID value) {
+          if (containerIdBuilder_ == null) {
+            if (((bitField0_ & 0x00000008) == 0x00000008) &&
+                containerId_ != org.apache.mesos.Protos.ContainerID.getDefaultInstance()) {
+              containerId_ =
+                org.apache.mesos.Protos.ContainerID.newBuilder(containerId_).mergeFrom(value).buildPartial();
+            } else {
+              containerId_ = value;
+            }
+            onChanged();
+          } else {
+            containerIdBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000008;
+          return this;
+        }
+        /**
+         * <code>required .mesos.ContainerID container_id = 4;</code>
+         *
+         * <pre>
+         * The container id for the executor specified in the executor_info field.
+         * </pre>
+         */
+        public Builder clearContainerId() {
+          if (containerIdBuilder_ == null) {
+            containerId_ = org.apache.mesos.Protos.ContainerID.getDefaultInstance();
+            onChanged();
+          } else {
+            containerIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000008);
+          return this;
+        }
+        /**
+         * <code>required .mesos.ContainerID container_id = 4;</code>
+         *
+         * <pre>
+         * The container id for the executor specified in the executor_info field.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.ContainerID.Builder getContainerIdBuilder() {
+          bitField0_ |= 0x00000008;
+          onChanged();
+          return getContainerIdFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.ContainerID container_id = 4;</code>
+         *
+         * <pre>
+         * The container id for the executor specified in the executor_info field.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.ContainerIDOrBuilder getContainerIdOrBuilder() {
+          if (containerIdBuilder_ != null) {
+            return containerIdBuilder_.getMessageOrBuilder();
+          } else {
+            return containerId_;
+          }
+        }
+        /**
+         * <code>required .mesos.ContainerID container_id = 4;</code>
+         *
+         * <pre>
+         * The container id for the executor specified in the executor_info field.
+         * </pre>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.ContainerID, org.apache.mesos.Protos.ContainerID.Builder, org.apache.mesos.Protos.ContainerIDOrBuilder> 
+            getContainerIdFieldBuilder() {
+          if (containerIdBuilder_ == null) {
+            containerIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.ContainerID, org.apache.mesos.Protos.ContainerID.Builder, org.apache.mesos.Protos.ContainerIDOrBuilder>(
+                    containerId_,
+                    getParentForChildren(),
+                    isClean());
+            containerId_ = null;
+          }
+          return containerIdBuilder_;
+        }
+
+        // repeated .mesos.ResourceUsage.Executor.Task tasks = 5;
+        private java.util.List<org.apache.mesos.Protos.ResourceUsage.Executor.Task> tasks_ =
+          java.util.Collections.emptyList();
+        private void ensureTasksIsMutable() {
+          if (!((bitField0_ & 0x00000010) == 0x00000010)) {
+            tasks_ = new java.util.ArrayList<org.apache.mesos.Protos.ResourceUsage.Executor.Task>(tasks_);
+            bitField0_ |= 0x00000010;
+           }
+        }
+
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.Protos.ResourceUsage.Executor.Task, org.apache.mesos.Protos.ResourceUsage.Executor.Task.Builder, org.apache.mesos.Protos.ResourceUsage.Executor.TaskOrBuilder> tasksBuilder_;
+
+        /**
+         * <code>repeated .mesos.ResourceUsage.Executor.Task tasks = 5;</code>
+         *
+         * <pre>
+         * Non-terminal tasks.
+         * </pre>
+         */
+        public java.util.List<org.apache.mesos.Protos.ResourceUsage.Executor.Task> getTasksList() {
+          if (tasksBuilder_ == null) {
+            return java.util.Collections.unmodifiableList(tasks_);
+          } else {
+            return tasksBuilder_.getMessageList();
+          }
+        }
+        /**
+         * <code>repeated .mesos.ResourceUsage.Executor.Task tasks = 5;</code>
+         *
+         * <pre>
+         * Non-terminal tasks.
+         * </pre>
+         */
+        public int getTasksCount() {
+          if (tasksBuilder_ == null) {
+            return tasks_.size();
+          } else {
+            return tasksBuilder_.getCount();
+          }
+        }
+        /**
+         * <code>repeated .mesos.ResourceUsage.Executor.Task tasks = 5;</code>
+         *
+         * <pre>
+         * Non-terminal tasks.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.ResourceUsage.Executor.Task getTasks(int index) {
+          if (tasksBuilder_ == null) {
+            return tasks_.get(index);
+          } else {
+            return tasksBuilder_.getMessage(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.ResourceUsage.Executor.Task tasks = 5;</code>
+         *
+         * <pre>
+         * Non-terminal tasks.
+         * </pre>
+         */
+        public Builder setTasks(
+            int index, org.apache.mesos.Protos.ResourceUsage.Executor.Task value) {
+          if (tasksBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureTasksIsMutable();
+            tasks_.set(index, value);
+            onChanged();
+          } else {
+            tasksBuilder_.setMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.ResourceUsage.Executor.Task tasks = 5;</code>
+         *
+         * <pre>
+         * Non-terminal tasks.
+         * </pre>
+         */
+        public Builder setTasks(
+            int index, org.apache.mesos.Protos.ResourceUsage.Executor.Task.Builder builderForValue) {
+          if (tasksBuilder_ == null) {
+            ensureTasksIsMutable();
+            tasks_.set(index, builderForValue.build());
+            onChanged();
+          } else {
+            tasksBuilder_.setMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.ResourceUsage.Executor.Task tasks = 5;</code>
+         *
+         * <pre>
+         * Non-terminal tasks.
+         * </pre>
+         */
+        public Builder addTasks(org.apache.mesos.Protos.ResourceUsage.Executor.Task value) {
+          if (tasksBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureTasksIsMutable();
+            tasks_.add(value);
+            onChanged();
+          } else {
+            tasksBuilder_.addMessage(value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.ResourceUsage.Executor.Task tasks = 5;</code>
+         *
+         * <pre>
+         * Non-terminal tasks.
+         * </pre>
+         */
+        public Builder addTasks(
+            int index, org.apache.mesos.Protos.ResourceUsage.Executor.Task value) {
+          if (tasksBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureTasksIsMutable();
+            tasks_.add(index, value);
+            onChanged();
+          } else {
+            tasksBuilder_.addMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.ResourceUsage.Executor.Task tasks = 5;</code>
+         *
+         * <pre>
+         * Non-terminal tasks.
+         * </pre>
+         */
+        public Builder addTasks(
+            org.apache.mesos.Protos.ResourceUsage.Executor.Task.Builder builderForValue) {
+          if (tasksBuilder_ == null) {
+            ensureTasksIsMutable();
+            tasks_.add(builderForValue.build());
+            onChanged();
+          } else {
+            tasksBuilder_.addMessage(builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.ResourceUsage.Executor.Task tasks = 5;</code>
+         *
+         * <pre>
+         * Non-terminal tasks.
+         * </pre>
+         */
+        public Builder addTasks(
+            int index, org.apache.mesos.Protos.ResourceUsage.Executor.Task.Builder builderForValue) {
+          if (tasksBuilder_ == null) {
+            ensureTasksIsMutable();
+            tasks_.add(index, builderForValue.build());
+            onChanged();
+          } else {
+            tasksBuilder_.addMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.ResourceUsage.Executor.Task tasks = 5;</code>
+         *
+         * <pre>
+         * Non-terminal tasks.
+         * </pre>
+         */
+        public Builder addAllTasks(
+            java.lang.Iterable<? extends org.apache.mesos.Protos.ResourceUsage.Executor.Task> values) {
+          if (tasksBuilder_ == null) {
+            ensureTasksIsMutable();
+            super.addAll(values, tasks_);
+            onChanged();
+          } else {
+            tasksBuilder_.addAllMessages(values);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.ResourceUsage.Executor.Task tasks = 5;</code>
+         *
+         * <pre>
+         * Non-terminal tasks.
+         * </pre>
+         */
+        public Builder clearTasks() {
+          if (tasksBuilder_ == null) {
+            tasks_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000010);
+            onChanged();
+          } else {
+            tasksBuilder_.clear();
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.ResourceUsage.Executor.Task tasks = 5;</code>
+         *
+         * <pre>
+         * Non-terminal tasks.
+         * </pre>
+         */
+        public Builder removeTasks(int index) {
+          if (tasksBuilder_ == null) {
+            ensureTasksIsMutable();
+            tasks_.remove(index);
+            onChanged();
+          } else {
+            tasksBuilder_.remove(index);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.ResourceUsage.Executor.Task tasks = 5;</code>
+         *
+         * <pre>
+         * Non-terminal tasks.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.ResourceUsage.Executor.Task.Builder getTasksBuilder(
+            int index) {
+          return getTasksFieldBuilder().getBuilder(index);
+        }
+        /**
+         * <code>repeated .mesos.ResourceUsage.Executor.Task tasks = 5;</code>
+         *
+         * <pre>
+         * Non-terminal tasks.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.ResourceUsage.Executor.TaskOrBuilder getTasksOrBuilder(
+            int index) {
+          if (tasksBuilder_ == null) {
+            return tasks_.get(index);  } else {
+            return tasksBuilder_.getMessageOrBuilder(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.ResourceUsage.Executor.Task tasks = 5;</code>
+         *
+         * <pre>
+         * Non-terminal tasks.
+         * </pre>
+         */
+        public java.util.List<? extends org.apache.mesos.Protos.ResourceUsage.Executor.TaskOrBuilder> 
+             getTasksOrBuilderList() {
+          if (tasksBuilder_ != null) {
+            return tasksBuilder_.getMessageOrBuilderList();
+          } else {
+            return java.util.Collections.unmodifiableList(tasks_);
+          }
+        }
+        /**
+         * <code>repeated .mesos.ResourceUsage.Executor.Task tasks = 5;</code>
+         *
+         * <pre>
+         * Non-terminal tasks.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.ResourceUsage.Executor.Task.Builder addTasksBuilder() {
+          return getTasksFieldBuilder().addBuilder(
+              org.apache.mesos.Protos.ResourceUsage.Executor.Task.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.ResourceUsage.Executor.Task tasks = 5;</code>
+         *
+         * <pre>
+         * Non-terminal tasks.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.ResourceUsage.Executor.Task.Builder addTasksBuilder(
+            int index) {
+          return getTasksFieldBuilder().addBuilder(
+              index, org.apache.mesos.Protos.ResourceUsage.Executor.Task.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.ResourceUsage.Executor.Task tasks = 5;</code>
+         *
+         * <pre>
+         * Non-terminal tasks.
+         * </pre>
+         */
+        public java.util.List<org.apache.mesos.Protos.ResourceUsage.Executor.Task.Builder> 
+             getTasksBuilderList() {
+          return getTasksFieldBuilder().getBuilderList();
+        }
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.Protos.ResourceUsage.Executor.Task, org.apache.mesos.Protos.ResourceUsage.Executor.Task.Builder, org.apache.mesos.Protos.ResourceUsage.Executor.TaskOrBuilder> 
+            getTasksFieldBuilder() {
+          if (tasksBuilder_ == null) {
+            tasksBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.Protos.ResourceUsage.Executor.Task, org.apache.mesos.Protos.ResourceUsage.Executor.Task.Builder, org.apache.mesos.Protos.ResourceUsage.Executor.TaskOrBuilder>(
+                    tasks_,
+                    ((bitField0_ & 0x00000010) == 0x00000010),
+                    getParentForChildren(),
+                    isClean());
+            tasks_ = null;
+          }
+          return tasksBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.ResourceUsage.Executor)
+      }
+
+      static {
+        defaultInstance = new Executor(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.ResourceUsage.Executor)
+    }
+
+    // repeated .mesos.ResourceUsage.Executor executors = 1;
+    public static final int EXECUTORS_FIELD_NUMBER = 1;
+    private java.util.List<org.apache.mesos.Protos.ResourceUsage.Executor> executors_;
+    /**
+     * <code>repeated .mesos.ResourceUsage.Executor executors = 1;</code>
+     */
+    public java.util.List<org.apache.mesos.Protos.ResourceUsage.Executor> getExecutorsList() {
+      return executors_;
+    }
+    /**
+     * <code>repeated .mesos.ResourceUsage.Executor executors = 1;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.Protos.ResourceUsage.ExecutorOrBuilder> 
+        getExecutorsOrBuilderList() {
+      return executors_;
+    }
+    /**
+     * <code>repeated .mesos.ResourceUsage.Executor executors = 1;</code>
+     */
+    public int getExecutorsCount() {
+      return executors_.size();
+    }
+    /**
+     * <code>repeated .mesos.ResourceUsage.Executor executors = 1;</code>
+     */
+    public org.apache.mesos.Protos.ResourceUsage.Executor getExecutors(int index) {
+      return executors_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.ResourceUsage.Executor executors = 1;</code>
+     */
+    public org.apache.mesos.Protos.ResourceUsage.ExecutorOrBuilder getExecutorsOrBuilder(
+        int index) {
+      return executors_.get(index);
+    }
+
+    // repeated .mesos.Resource total = 2;
+    public static final int TOTAL_FIELD_NUMBER = 2;
+    private java.util.List<org.apache.mesos.Protos.Resource> total_;
+    /**
+     * <code>repeated .mesos.Resource total = 2;</code>
+     *
+     * <pre>
+     * Slave's total resources including checkpointed dynamic
+     * reservations and persistent volumes.
+     * </pre>
+     */
+    public java.util.List<org.apache.mesos.Protos.Resource> getTotalList() {
+      return total_;
+    }
+    /**
+     * <code>repeated .mesos.Resource total = 2;</code>
+     *
+     * <pre>
+     * Slave's total resources including checkpointed dynamic
+     * reservations and persistent volumes.
+     * </pre>
+     */
+    public java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+        getTotalOrBuilderList() {
+      return total_;
+    }
+    /**
+     * <code>repeated .mesos.Resource total = 2;</code>
+     *
+     * <pre>
+     * Slave's total resources including checkpointed dynamic
+     * reservations and persistent volumes.
+     * </pre>
+     */
+    public int getTotalCount() {
+      return total_.size();
+    }
+    /**
+     * <code>repeated .mesos.Resource total = 2;</code>
+     *
+     * <pre>
+     * Slave's total resources including checkpointed dynamic
+     * reservations and persistent volumes.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.Resource getTotal(int index) {
+      return total_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.Resource total = 2;</code>
+     *
+     * <pre>
+     * Slave's total resources including checkpointed dynamic
+     * reservations and persistent volumes.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.ResourceOrBuilder getTotalOrBuilder(
+        int index) {
+      return total_.get(index);
+    }
+
+    private void initFields() {
+      executors_ = java.util.Collections.emptyList();
+      total_ = java.util.Collections.emptyList();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      for (int i = 0; i < getExecutorsCount(); i++) {
+        if (!getExecutors(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      for (int i = 0; i < getTotalCount(); i++) {
+        if (!getTotal(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      for (int i = 0; i < executors_.size(); i++) {
+        output.writeMessage(1, executors_.get(i));
+      }
+      for (int i = 0; i < total_.size(); i++) {
+        output.writeMessage(2, total_.get(i));
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      for (int i = 0; i < executors_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, executors_.get(i));
+      }
+      for (int i = 0; i < total_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, total_.get(i));
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.ResourceUsage parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.ResourceUsage parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.ResourceUsage parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.ResourceUsage parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.ResourceUsage parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.ResourceUsage parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.ResourceUsage parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.ResourceUsage parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.ResourceUsage parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.ResourceUsage parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.ResourceUsage prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.ResourceUsage}
+     *
+     * <pre>
+     **
+     * Describes a snapshot of the resource usage for executors.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.ResourceUsageOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_ResourceUsage_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_ResourceUsage_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.ResourceUsage.class, org.apache.mesos.Protos.ResourceUsage.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.ResourceUsage.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getExecutorsFieldBuilder();
+          getTotalFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (executorsBuilder_ == null) {
+          executors_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+        } else {
+          executorsBuilder_.clear();
+        }
+        if (totalBuilder_ == null) {
+          total_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000002);
+        } else {
+          totalBuilder_.clear();
+        }
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_ResourceUsage_descriptor;
+      }
+
+      public org.apache.mesos.Protos.ResourceUsage getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.ResourceUsage.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.ResourceUsage build() {
+        org.apache.mesos.Protos.ResourceUsage result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.ResourceUsage buildPartial() {
+        org.apache.mesos.Protos.ResourceUsage result = new org.apache.mesos.Protos.ResourceUsage(this);
+        int from_bitField0_ = bitField0_;
+        if (executorsBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            executors_ = java.util.Collections.unmodifiableList(executors_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.executors_ = executors_;
+        } else {
+          result.executors_ = executorsBuilder_.build();
+        }
+        if (totalBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            total_ = java.util.Collections.unmodifiableList(total_);
+            bitField0_ = (bitField0_ & ~0x00000002);
+          }
+          result.total_ = total_;
+        } else {
+          result.total_ = totalBuilder_.build();
+        }
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.ResourceUsage) {
+          return mergeFrom((org.apache.mesos.Protos.ResourceUsage)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.ResourceUsage other) {
+        if (other == org.apache.mesos.Protos.ResourceUsage.getDefaultInstance()) return this;
+        if (executorsBuilder_ == null) {
+          if (!other.executors_.isEmpty()) {
+            if (executors_.isEmpty()) {
+              executors_ = other.executors_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureExecutorsIsMutable();
+              executors_.addAll(other.executors_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.executors_.isEmpty()) {
+            if (executorsBuilder_.isEmpty()) {
+              executorsBuilder_.dispose();
+              executorsBuilder_ = null;
+              executors_ = other.executors_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              executorsBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getExecutorsFieldBuilder() : null;
+            } else {
+              executorsBuilder_.addAllMessages(other.executors_);
+            }
+          }
+        }
+        if (totalBuilder_ == null) {
+          if (!other.total_.isEmpty()) {
+            if (total_.isEmpty()) {
+              total_ = other.total_;
+              bitField0_ = (bitField0_ & ~0x00000002);
+            } else {
+              ensureTotalIsMutable();
+              total_.addAll(other.total_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.total_.isEmpty()) {
+            if (totalBuilder_.isEmpty()) {
+              totalBuilder_.dispose();
+              totalBuilder_ = null;
+              total_ = other.total_;
+              bitField0_ = (bitField0_ & ~0x00000002);
+              totalBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getTotalFieldBuilder() : null;
+            } else {
+              totalBuilder_.addAllMessages(other.total_);
+            }
+          }
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        for (int i = 0; i < getExecutorsCount(); i++) {
+          if (!getExecutors(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        for (int i = 0; i < getTotalCount(); i++) {
+          if (!getTotal(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.ResourceUsage parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.ResourceUsage) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // repeated .mesos.ResourceUsage.Executor executors = 1;
+      private java.util.List<org.apache.mesos.Protos.ResourceUsage.Executor> executors_ =
+        java.util.Collections.emptyList();
+      private void ensureExecutorsIsMutable() {
+        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+          executors_ = new java.util.ArrayList<org.apache.mesos.Protos.ResourceUsage.Executor>(executors_);
+          bitField0_ |= 0x00000001;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.ResourceUsage.Executor, org.apache.mesos.Protos.ResourceUsage.Executor.Builder, org.apache.mesos.Protos.ResourceUsage.ExecutorOrBuilder> executorsBuilder_;
+
+      /**
+       * <code>repeated .mesos.ResourceUsage.Executor executors = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.ResourceUsage.Executor> getExecutorsList() {
+        if (executorsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(executors_);
+        } else {
+          return executorsBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.ResourceUsage.Executor executors = 1;</code>
+       */
+      public int getExecutorsCount() {
+        if (executorsBuilder_ == null) {
+          return executors_.size();
+        } else {
+          return executorsBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.ResourceUsage.Executor executors = 1;</code>
+       */
+      public org.apache.mesos.Protos.ResourceUsage.Executor getExecutors(int index) {
+        if (executorsBuilder_ == null) {
+          return executors_.get(index);
+        } else {
+          return executorsBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.ResourceUsage.Executor executors = 1;</code>
+       */
+      public Builder setExecutors(
+          int index, org.apache.mesos.Protos.ResourceUsage.Executor value) {
+        if (executorsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureExecutorsIsMutable();
+          executors_.set(index, value);
+          onChanged();
+        } else {
+          executorsBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.ResourceUsage.Executor executors = 1;</code>
+       */
+      public Builder setExecutors(
+          int index, org.apache.mesos.Protos.ResourceUsage.Executor.Builder builderForValue) {
+        if (executorsBuilder_ == null) {
+          ensureExecutorsIsMutable();
+          executors_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          executorsBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.ResourceUsage.Executor executors = 1;</code>
+       */
+      public Builder addExecutors(org.apache.mesos.Protos.ResourceUsage.Executor value) {
+        if (executorsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureExecutorsIsMutable();
+          executors_.add(value);
+          onChanged();
+        } else {
+          executorsBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.ResourceUsage.Executor executors = 1;</code>
+       */
+      public Builder addExecutors(
+          int index, org.apache.mesos.Protos.ResourceUsage.Executor value) {
+        if (executorsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureExecutorsIsMutable();
+          executors_.add(index, value);
+          onChanged();
+        } else {
+          executorsBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.ResourceUsage.Executor executors = 1;</code>
+       */
+      public Builder addExecutors(
+          org.apache.mesos.Protos.ResourceUsage.Executor.Builder builderForValue) {
+        if (executorsBuilder_ == null) {
+          ensureExecutorsIsMutable();
+          executors_.add(builderForValue.build());
+          onChanged();
+        } else {
+          executorsBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.ResourceUsage.Executor executors = 1;</code>
+       */
+      public Builder addExecutors(
+          int index, org.apache.mesos.Protos.ResourceUsage.Executor.Builder builderForValue) {
+        if (executorsBuilder_ == null) {
+          ensureExecutorsIsMutable();
+          executors_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          executorsBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.ResourceUsage.Executor executors = 1;</code>
+       */
+      public Builder addAllExecutors(
+          java.lang.Iterable<? extends org.apache.mesos.Protos.ResourceUsage.Executor> values) {
+        if (executorsBuilder_ == null) {
+          ensureExecutorsIsMutable();
+          super.addAll(values, executors_);
+          onChanged();
+        } else {
+          executorsBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.ResourceUsage.Executor executors = 1;</code>
+       */
+      public Builder clearExecutors() {
+        if (executorsBuilder_ == null) {
+          executors_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+        } else {
+          executorsBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.ResourceUsage.Executor executors = 1;</code>
+       */
+      public Builder removeExecutors(int index) {
+        if (executorsBuilder_ == null) {
+          ensureExecutorsIsMutable();
+          executors_.remove(index);
+          onChanged();
+        } else {
+          executorsBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.ResourceUsage.Executor executors = 1;</code>
+       */
+      public org.apache.mesos.Protos.ResourceUsage.Executor.Builder getExecutorsBuilder(
+          int index) {
+        return getExecutorsFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.ResourceUsage.Executor executors = 1;</code>
+       */
+      public org.apache.mesos.Protos.ResourceUsage.ExecutorOrBuilder getExecutorsOrBuilder(
+          int index) {
+        if (executorsBuilder_ == null) {
+          return executors_.get(index);  } else {
+          return executorsBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.ResourceUsage.Executor executors = 1;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.ResourceUsage.ExecutorOrBuilder> 
+           getExecutorsOrBuilderList() {
+        if (executorsBuilder_ != null) {
+          return executorsBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(executors_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.ResourceUsage.Executor executors = 1;</code>
+       */
+      public org.apache.mesos.Protos.ResourceUsage.Executor.Builder addExecutorsBuilder() {
+        return getExecutorsFieldBuilder().addBuilder(
+            org.apache.mesos.Protos.ResourceUsage.Executor.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.ResourceUsage.Executor executors = 1;</code>
+       */
+      public org.apache.mesos.Protos.ResourceUsage.Executor.Builder addExecutorsBuilder(
+          int index) {
+        return getExecutorsFieldBuilder().addBuilder(
+            index, org.apache.mesos.Protos.ResourceUsage.Executor.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.ResourceUsage.Executor executors = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.ResourceUsage.Executor.Builder> 
+           getExecutorsBuilderList() {
+        return getExecutorsFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.ResourceUsage.Executor, org.apache.mesos.Protos.ResourceUsage.Executor.Builder, org.apache.mesos.Protos.ResourceUsage.ExecutorOrBuilder> 
+          getExecutorsFieldBuilder() {
+        if (executorsBuilder_ == null) {
+          executorsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.ResourceUsage.Executor, org.apache.mesos.Protos.ResourceUsage.Executor.Builder, org.apache.mesos.Protos.ResourceUsage.ExecutorOrBuilder>(
+                  executors_,
+                  ((bitField0_ & 0x00000001) == 0x00000001),
+                  getParentForChildren(),
+                  isClean());
+          executors_ = null;
+        }
+        return executorsBuilder_;
+      }
+
+      // repeated .mesos.Resource total = 2;
+      private java.util.List<org.apache.mesos.Protos.Resource> total_ =
+        java.util.Collections.emptyList();
+      private void ensureTotalIsMutable() {
+        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
+          total_ = new java.util.ArrayList<org.apache.mesos.Protos.Resource>(total_);
+          bitField0_ |= 0x00000002;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder> totalBuilder_;
+
+      /**
+       * <code>repeated .mesos.Resource total = 2;</code>
+       *
+       * <pre>
+       * Slave's total resources including checkpointed dynamic
+       * reservations and persistent volumes.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.Protos.Resource> getTotalList() {
+        if (totalBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(total_);
+        } else {
+          return totalBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource total = 2;</code>
+       *
+       * <pre>
+       * Slave's total resources including checkpointed dynamic
+       * reservations and persistent volumes.
+       * </pre>
+       */
+      public int getTotalCount() {
+        if (totalBuilder_ == null) {
+          return total_.size();
+        } else {
+          return totalBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource total = 2;</code>
+       *
+       * <pre>
+       * Slave's total resources including checkpointed dynamic
+       * reservations and persistent volumes.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Resource getTotal(int index) {
+        if (totalBuilder_ == null) {
+          return total_.get(index);
+        } else {
+          return totalBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource total = 2;</code>
+       *
+       * <pre>
+       * Slave's total resources including checkpointed dynamic
+       * reservations and persistent volumes.
+       * </pre>
+       */
+      public Builder setTotal(
+          int index, org.apache.mesos.Protos.Resource value) {
+        if (totalBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureTotalIsMutable();
+          total_.set(index, value);
+          onChanged();
+        } else {
+          totalBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource total = 2;</code>
+       *
+       * <pre>
+       * Slave's total resources including checkpointed dynamic
+       * reservations and persistent volumes.
+       * </pre>
+       */
+      public Builder setTotal(
+          int index, org.apache.mesos.Protos.Resource.Builder builderForValue) {
+        if (totalBuilder_ == null) {
+          ensureTotalIsMutable();
+          total_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          totalBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource total = 2;</code>
+       *
+       * <pre>
+       * Slave's total resources including checkpointed dynamic
+       * reservations and persistent volumes.
+       * </pre>
+       */
+      public Builder addTotal(org.apache.mesos.Protos.Resource value) {
+        if (totalBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureTotalIsMutable();
+          total_.add(value);
+          onChanged();
+        } else {
+          totalBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource total = 2;</code>
+       *
+       * <pre>
+       * Slave's total resources including checkpointed dynamic
+       * reservations and persistent volumes.
+       * </pre>
+       */
+      public Builder addTotal(
+          int index, org.apache.mesos.Protos.Resource value) {
+        if (totalBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureTotalIsMutable();
+          total_.add(index, value);
+          onChanged();
+        } else {
+          totalBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource total = 2;</code>
+       *
+       * <pre>
+       * Slave's total resources including checkpointed dynamic
+       * reservations and persistent volumes.
+       * </pre>
+       */
+      public Builder addTotal(
+          org.apache.mesos.Protos.Resource.Builder builderForValue) {
+        if (totalBuilder_ == null) {
+          ensureTotalIsMutable();
+          total_.add(builderForValue.build());
+          onChanged();
+        } else {
+          totalBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource total = 2;</code>
+       *
+       * <pre>
+       * Slave's total resources including checkpointed dynamic
+       * reservations and persistent volumes.
+       * </pre>
+       */
+      public Builder addTotal(
+          int index, org.apache.mesos.Protos.Resource.Builder builderForValue) {
+        if (totalBuilder_ == null) {
+          ensureTotalIsMutable();
+          total_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          totalBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource total = 2;</code>
+       *
+       * <pre>
+       * Slave's total resources including checkpointed dynamic
+       * reservations and persistent volumes.
+       * </pre>
+       */
+      public Builder addAllTotal(
+          java.lang.Iterable<? extends org.apache.mesos.Protos.Resource> values) {
+        if (totalBuilder_ == null) {
+          ensureTotalIsMutable();
+          super.addAll(values, total_);
+          onChanged();
+        } else {
+          totalBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource total = 2;</code>
+       *
+       * <pre>
+       * Slave's total resources including checkpointed dynamic
+       * reservations and persistent volumes.
+       * </pre>
+       */
+      public Builder clearTotal() {
+        if (totalBuilder_ == null) {
+          total_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000002);
+          onChanged();
+        } else {
+          totalBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource total = 2;</code>
+       *
+       * <pre>
+       * Slave's total resources including checkpointed dynamic
+       * reservations and persistent volumes.
+       * </pre>
+       */
+      public Builder removeTotal(int index) {
+        if (totalBuilder_ == null) {
+          ensureTotalIsMutable();
+          total_.remove(index);
+          onChanged();
+        } else {
+          totalBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource total = 2;</code>
+       *
+       * <pre>
+       * Slave's total resources including checkpointed dynamic
+       * reservations and persistent volumes.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Resource.Builder getTotalBuilder(
+          int index) {
+        return getTotalFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.Resource total = 2;</code>
+       *
+       * <pre>
+       * Slave's total resources including checkpointed dynamic
+       * reservations and persistent volumes.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.ResourceOrBuilder getTotalOrBuilder(
+          int index) {
+        if (totalBuilder_ == null) {
+          return total_.get(index);  } else {
+          return totalBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource total = 2;</code>
+       *
+       * <pre>
+       * Slave's total resources including checkpointed dynamic
+       * reservations and persistent volumes.
+       * </pre>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+           getTotalOrBuilderList() {
+        if (totalBuilder_ != null) {
+          return totalBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(total_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource total = 2;</code>
+       *
+       * <pre>
+       * Slave's total resources including checkpointed dynamic
+       * reservations and persistent volumes.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Resource.Builder addTotalBuilder() {
+        return getTotalFieldBuilder().addBuilder(
+            org.apache.mesos.Protos.Resource.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.Resource total = 2;</code>
+       *
+       * <pre>
+       * Slave's total resources including checkpointed dynamic
+       * reservations and persistent volumes.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Resource.Builder addTotalBuilder(
+          int index) {
+        return getTotalFieldBuilder().addBuilder(
+            index, org.apache.mesos.Protos.Resource.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.Resource total = 2;</code>
+       *
+       * <pre>
+       * Slave's total resources including checkpointed dynamic
+       * reservations and persistent volumes.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.Protos.Resource.Builder> 
+           getTotalBuilderList() {
+        return getTotalFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder> 
+          getTotalFieldBuilder() {
+        if (totalBuilder_ == null) {
+          totalBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder>(
+                  total_,
+                  ((bitField0_ & 0x00000002) == 0x00000002),
+                  getParentForChildren(),
+                  isClean());
+          total_ = null;
+        }
+        return totalBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.ResourceUsage)
+    }
+
+    static {
+      defaultInstance = new ResourceUsage(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.ResourceUsage)
+  }
+
+  public interface PerfStatisticsOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required double timestamp = 1;
+    /**
+     * <code>required double timestamp = 1;</code>
+     *
+     * <pre>
+     * Start of sample interval, in seconds since the Epoch.
+     * </pre>
+     */
+    boolean hasTimestamp();
+    /**
+     * <code>required double timestamp = 1;</code>
+     *
+     * <pre>
+     * Start of sample interval, in seconds since the Epoch.
+     * </pre>
+     */
+    double getTimestamp();
+
+    // required double duration = 2;
+    /**
+     * <code>required double duration = 2;</code>
+     *
+     * <pre>
+     * Duration of sample interval, in seconds.
+     * </pre>
+     */
+    boolean hasDuration();
+    /**
+     * <code>required double duration = 2;</code>
+     *
+     * <pre>
+     * Duration of sample interval, in seconds.
+     * </pre>
+     */
+    double getDuration();
+
+    // optional uint64 cycles = 3;
+    /**
+     * <code>optional uint64 cycles = 3;</code>
+     *
+     * <pre>
+     * Hardware event.
+     * </pre>
+     */
+    boolean hasCycles();
+    /**
+     * <code>optional uint64 cycles = 3;</code>
+     *
+     * <pre>
+     * Hardware event.
+     * </pre>
+     */
+    long getCycles();
+
+    // optional uint64 stalled_cycles_frontend = 4;
+    /**
+     * <code>optional uint64 stalled_cycles_frontend = 4;</code>
+     */
+    boolean hasStalledCyclesFrontend();
+    /**
+     * <code>optional uint64 stalled_cycles_frontend = 4;</code>
+     */
+    long getStalledCyclesFrontend();
+
+    // optional uint64 stalled_cycles_backend = 5;
+    /**
+     * <code>optional uint64 stalled_cycles_backend = 5;</code>
+     */
+    boolean hasStalledCyclesBackend();
+    /**
+     * <code>optional uint64 stalled_cycles_backend = 5;</code>
+     */
+    long getStalledCyclesBackend();
+
+    // optional uint64 instructions = 6;
+    /**
+     * <code>optional uint64 instructions = 6;</code>
+     */
+    boolean hasInstructions();
+    /**
+     * <code>optional uint64 instructions = 6;</code>
+     */
+    long getInstructions();
+
+    // optional uint64 cache_references = 7;
+    /**
+     * <code>optional uint64 cache_references = 7;</code>
+     */
+    boolean hasCacheReferences();
+    /**
+     * <code>optional uint64 cache_references = 7;</code>
+     */
+    long getCacheReferences();
+
+    // optional uint64 cache_misses = 8;
+    /**
+     * <code>optional uint64 cache_misses = 8;</code>
+     */
+    boolean hasCacheMisses();
+    /**
+     * <code>optional uint64 cache_misses = 8;</code>
+     */
+    long getCacheMisses();
+
+    // optional uint64 branches = 9;
+    /**
+     * <code>optional uint64 branches = 9;</code>
+     */
+    boolean hasBranches();
+    /**
+     * <code>optional uint64 branches = 9;</code>
+     */
+    long getBranches();
+
+    // optional uint64 branch_misses = 10;
+    /**
+     * <code>optional uint64 branch_misses = 10;</code>
+     */
+    boolean hasBranchMisses();
+    /**
+     * <code>optional uint64 branch_misses = 10;</code>
+     */
+    long getBranchMisses();
+
+    // optional uint64 bus_cycles = 11;
+    /**
+     * <code>optional uint64 bus_cycles = 11;</code>
+     */
+    boolean hasBusCycles();
+    /**
+     * <code>optional uint64 bus_cycles = 11;</code>
+     */
+    long getBusCycles();
+
+    // optional uint64 ref_cycles = 12;
+    /**
+     * <code>optional uint64 ref_cycles = 12;</code>
+     */
+    boolean hasRefCycles();
+    /**
+     * <code>optional uint64 ref_cycles = 12;</code>
+     */
+    long getRefCycles();
+
+    // optional double cpu_clock = 13;
+    /**
+     * <code>optional double cpu_clock = 13;</code>
+     *
+     * <pre>
+     * Software event.
+     * </pre>
+     */
+    boolean hasCpuClock();
+    /**
+     * <code>optional double cpu_clock = 13;</code>
+     *
+     * <pre>
+     * Software event.
+     * </pre>
+     */
+    double getCpuClock();
+
+    // optional double task_clock = 14;
+    /**
+     * <code>optional double task_clock = 14;</code>
+     */
+    boolean hasTaskClock();
+    /**
+     * <code>optional double task_clock = 14;</code>
+     */
+    double getTaskClock();
+
+    // optional uint64 page_faults = 15;
+    /**
+     * <code>optional uint64 page_faults = 15;</code>
+     */
+    boolean hasPageFaults();
+    /**
+     * <code>optional uint64 page_faults = 15;</code>
+     */
+    long getPageFaults();
+
+    // optional uint64 minor_faults = 16;
+    /**
+     * <code>optional uint64 minor_faults = 16;</code>
+     */
+    boolean hasMinorFaults();
+    /**
+     * <code>optional uint64 minor_faults = 16;</code>
+     */
+    long getMinorFaults();
+
+    // optional uint64 major_faults = 17;
+    /**
+     * <code>optional uint64 major_faults = 17;</code>
+     */
+    boolean hasMajorFaults();
+    /**
+     * <code>optional uint64 major_faults = 17;</code>
+     */
+    long getMajorFaults();
+
+    // optional uint64 context_switches = 18;
+    /**
+     * <code>optional uint64 context_switches = 18;</code>
+     */
+    boolean hasContextSwitches();
+    /**
+     * <code>optional uint64 context_switches = 18;</code>
+     */
+    long getContextSwitches();
+
+    // optional uint64 cpu_migrations = 19;
+    /**
+     * <code>optional uint64 cpu_migrations = 19;</code>
+     */
+    boolean hasCpuMigrations();
+    /**
+     * <code>optional uint64 cpu_migrations = 19;</code>
+     */
+    long getCpuMigrations();
+
+    // optional uint64 alignment_faults = 20;
+    /**
+     * <code>optional uint64 alignment_faults = 20;</code>
+     */
+    boolean hasAlignmentFaults();
+    /**
+     * <code>optional uint64 alignment_faults = 20;</code>
+     */
+    long getAlignmentFaults();
+
+    // optional uint64 emulation_faults = 21;
+    /**
+     * <code>optional uint64 emulation_faults = 21;</code>
+     */
+    boolean hasEmulationFaults();
+    /**
+     * <code>optional uint64 emulation_faults = 21;</code>
+     */
+    long getEmulationFaults();
+
+    // optional uint64 l1_dcache_loads = 22;
+    /**
+     * <code>optional uint64 l1_dcache_loads = 22;</code>
+     *
+     * <pre>
+     * Hardware cache event.
+     * </pre>
+     */
+    boolean hasL1DcacheLoads();
+    /**
+     * <code>optional uint64 l1_dcache_loads = 22;</code>
+     *
+     * <pre>
+     * Hardware cache event.
+     * </pre>
+     */
+    long getL1DcacheLoads();
+
+    // optional uint64 l1_dcache_load_misses = 23;
+    /**
+     * <code>optional uint64 l1_dcache_load_misses = 23;</code>
+     */
+    boolean hasL1DcacheLoadMisses();
+    /**
+     * <code>optional uint64 l1_dcache_load_misses = 23;</code>
+     */
+    long getL1DcacheLoadMisses();
+
+    // optional uint64 l1_dcache_stores = 24;
+    /**
+     * <code>optional uint64 l1_dcache_stores = 24;</code>
+     */
+    boolean hasL1DcacheStores();
+    /**
+     * <code>optional uint64 l1_dcache_stores = 24;</code>
+     */
+    long getL1DcacheStores();
+
+    // optional uint64 l1_dcache_store_misses = 25;
+    /**
+     * <code>optional uint64 l1_dcache_store_misses = 25;</code>
+     */
+    boolean hasL1DcacheStoreMisses();
+    /**
+     * <code>optional uint64 l1_dcache_store_misses = 25;</code>
+     */
+    long getL1DcacheStoreMisses();
+
+    // optional uint64 l1_dcache_prefetches = 26;
+    /**
+     * <code>optional uint64 l1_dcache_prefetches = 26;</code>
+     */
+    boolean hasL1DcachePrefetches();
+    /**
+     * <code>optional uint64 l1_dcache_prefetches = 26;</code>
+     */
+    long getL1DcachePrefetches();
+
+    // optional uint64 l1_dcache_prefetch_misses = 27;
+    /**
+     * <code>optional uint64 l1_dcache_prefetch_misses = 27;</code>
+     */
+    boolean hasL1DcachePrefetchMisses();
+    /**
+     * <code>optional uint64 l1_dcache_prefetch_misses = 27;</code>
+     */
+    long getL1DcachePrefetchMisses();
+
+    // optional uint64 l1_icache_loads = 28;
+    /**
+     * <code>optional uint64 l1_icache_loads = 28;</code>
+     */
+    boolean hasL1IcacheLoads();
+    /**
+     * <code>optional uint64 l1_icache_loads = 28;</code>
+     */
+    long getL1IcacheLoads();
+
+    // optional uint64 l1_icache_load_misses = 29;
+    /**
+     * <code>optional uint64 l1_icache_load_misses = 29;</code>
+     */
+    boolean hasL1IcacheLoadMisses();
+    /**
+     * <code>optional uint64 l1_icache_load_misses = 29;</code>
+     */
+    long getL1IcacheLoadMisses();
+
+    // optional uint64 l1_icache_prefetches = 30;
+    /**
+     * <code>optional uint64 l1_icache_prefetches = 30;</code>
+     */
+    boolean hasL1IcachePrefetches();
+    /**
+     * <code>optional uint64 l1_icache_prefetches = 30;</code>
+     */
+    long getL1IcachePrefetches();
+
+    // optional uint64 l1_icache_prefetch_misses = 31;
+    /**
+     * <code>optional uint64 l1_icache_prefetch_misses = 31;</code>
+     */
+    boolean hasL1IcachePrefetchMisses();
+    /**
+     * <code>optional uint64 l1_icache_prefetch_misses = 31;</code>
+     */
+    long getL1IcachePrefetchMisses();
+
+    // optional uint64 llc_loads = 32;
+    /**
+     * <code>optional uint64 llc_loads = 32;</code>
+     */
+    boolean hasLlcLoads();
+    /**
+     * <code>optional uint64 llc_loads = 32;</code>
+     */
+    long getLlcLoads();
+
+    // optional uint64 llc_load_misses = 33;
+    /**
+     * <code>optional uint64 llc_load_misses = 33;</code>
+     */
+    boolean hasLlcLoadMisses();
+    /**
+     * <code>optional uint64 llc_load_misses = 33;</code>
+     */
+    long getLlcLoadMisses();
+
+    // optional uint64 llc_stores = 34;
+    /**
+     * <code>optional uint64 llc_stores = 34;</code>
+     */
+    boolean hasLlcStores();
+    /**
+     * <code>optional uint64 llc_stores = 34;</code>
+     */
+    long getLlcStores();
+
+    // optional uint64 llc_store_misses = 35;
+    /**
+     * <code>optional uint64 llc_store_misses = 35;</code>
+     */
+    boolean hasLlcStoreMisses();
+    /**
+     * <code>optional uint64 llc_store_misses = 35;</code>
+     */
+    long getLlcStoreMisses();
+
+    // optional uint64 llc_prefetches = 36;
+    /**
+     * <code>optional uint64 llc_prefetches = 36;</code>
+     */
+    boolean hasLlcPrefetches();
+    /**
+     * <code>optional uint64 llc_prefetches = 36;</code>
+     */
+    long getLlcPrefetches();
+
+    // optional uint64 llc_prefetch_misses = 37;
+    /**
+     * <code>optional uint64 llc_prefetch_misses = 37;</code>
+     */
+    boolean hasLlcPrefetchMisses();
+    /**
+     * <code>optional uint64 llc_prefetch_misses = 37;</code>
+     */
+    long getLlcPrefetchMisses();
+
+    // optional uint64 dtlb_loads = 38;
+    /**
+     * <code>optional uint64 dtlb_loads = 38;</code>
+     */
+    boolean hasDtlbLoads();
+    /**
+     * <code>optional uint64 dtlb_loads = 38;</code>
+     */
+    long getDtlbLoads();
+
+    // optional uint64 dtlb_load_misses = 39;
+    /**
+     * <code>optional uint64 dtlb_load_misses = 39;</code>
+     */
+    boolean hasDtlbLoadMisses();
+    /**
+     * <code>optional uint64 dtlb_load_misses = 39;</code>
+     */
+    long getDtlbLoadMisses();
+
+    // optional uint64 dtlb_stores = 40;
+    /**
+     * <code>optional uint64 dtlb_stores = 40;</code>
+     */
+    boolean hasDtlbStores();
+    /**
+     * <code>optional uint64 dtlb_stores = 40;</code>
+     */
+    long getDtlbStores();
+
+    // optional uint64 dtlb_store_misses = 41;
+    /**
+     * <code>optional uint64 dtlb_store_misses = 41;</code>
+     */
+    boolean hasDtlbStoreMisses();
+    /**
+     * <code>optional uint64 dtlb_store_misses = 41;</code>
+     */
+    long getDtlbStoreMisses();
+
+    // optional uint64 dtlb_prefetches = 42;
+    /**
+     * <code>optional uint64 dtlb_prefetches = 42;</code>
+     */
+    boolean hasDtlbPrefetches();
+    /**
+     * <code>optional uint64 dtlb_prefetches = 42;</code>
+     */
+    long getDtlbPrefetches();
+
+    // optional uint64 dtlb_prefetch_misses = 43;
+    /**
+     * <code>optional uint64 dtlb_prefetch_misses = 43;</code>
+     */
+    boolean hasDtlbPrefetchMisses();
+    /**
+     * <code>optional uint64 dtlb_prefetch_misses = 43;</code>
+     */
+    long getDtlbPrefetchMisses();
+
+    // optional uint64 itlb_loads = 44;
+    /**
+     * <code>optional uint64 itlb_loads = 44;</code>
+     */
+    boolean hasItlbLoads();
+    /**
+     * <code>optional uint64 itlb_loads = 44;</code>
+     */
+    long getItlbLoads();
+
+    // optional uint64 itlb_load_misses = 45;
+    /**
+     * <code>optional uint64 itlb_load_misses = 45;</code>
+     */
+    boolean hasItlbLoadMisses();
+    /**
+     * <code>optional uint64 itlb_load_misses = 45;</code>
+     */
+    long getItlbLoadMisses();
+
+    // optional uint64 branch_loads = 46;
+    /**
+     * <code>optional uint64 branch_loads = 46;</code>
+     */
+    boolean hasBranchLoads();
+    /**
+     * <code>optional uint64 branch_loads = 46;</code>
+     */
+    long getBranchLoads();
+
+    // optional uint64 branch_load_misses = 47;
+    /**
+     * <code>optional uint64 branch_load_misses = 47;</code>
+     */
+    boolean hasBranchLoadMisses();
+    /**
+     * <code>optional uint64 branch_load_misses = 47;</code>
+     */
+    long getBranchLoadMisses();
+
+    // optional uint64 node_loads = 48;
+    /**
+     * <code>optional uint64 node_loads = 48;</code>
+     */
+    boolean hasNodeLoads();
+    /**
+     * <code>optional uint64 node_loads = 48;</code>
+     */
+    long getNodeLoads();
+
+    // optional uint64 node_load_misses = 49;
+    /**
+     * <code>optional uint64 node_load_misses = 49;</code>
+     */
+    boolean hasNodeLoadMisses();
+    /**
+     * <code>optional uint64 node_load_misses = 49;</code>
+     */
+    long getNodeLoadMisses();
+
+    // optional uint64 node_stores = 50;
+    /**
+     * <code>optional uint64 node_stores = 50;</code>
+     */
+    boolean hasNodeStores();
+    /**
+     * <code>optional uint64 node_stores = 50;</code>
+     */
+    long getNodeStores();
+
+    // optional uint64 node_store_misses = 51;
+    /**
+     * <code>optional uint64 node_store_misses = 51;</code>
+     */
+    boolean hasNodeStoreMisses();
+    /**
+     * <code>optional uint64 node_store_misses = 51;</code>
+     */
+    long getNodeStoreMisses();
+
+    // optional uint64 node_prefetches = 52;
+    /**
+     * <code>optional uint64 node_prefetches = 52;</code>
+     */
+    boolean hasNodePrefetches();
+    /**
+     * <code>optional uint64 node_prefetches = 52;</code>
+     */
+    long getNodePrefetches();
+
+    // optional uint64 node_prefetch_misses = 53;
+    /**
+     * <code>optional uint64 node_prefetch_misses = 53;</code>
+     */
+    boolean hasNodePrefetchMisses();
+    /**
+     * <code>optional uint64 node_prefetch_misses = 53;</code>
+     */
+    long getNodePrefetchMisses();
+  }
+  /**
+   * Protobuf type {@code mesos.PerfStatistics}
+   *
+   * <pre>
+   **
+   * Describes a sample of events from "perf stat". Only available on
+   * Linux.
+   *
+   * NOTE: Each optional field matches the name of a perf event (see
+   * "perf list") with the following changes:
+   * 1. Names are downcased.
+   * 2. Hyphens ('-') are replaced with underscores ('_').
+   * 3. Events with alternate names use the name "perf stat" returns,
+   *    e.g., for the event "cycles OR cpu-cycles" perf always returns
+   *    cycles.
+   * </pre>
+   */
+  public static final class PerfStatistics extends
+      com.google.protobuf.GeneratedMessage
+      implements PerfStatisticsOrBuilder {
+    // Use PerfStatistics.newBuilder() to construct.
+    private PerfStatistics(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private PerfStatistics(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final PerfStatistics defaultInstance;
+    public static PerfStatistics getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public PerfStatistics getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private PerfStatistics(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      int mutable_bitField1_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 9: {
+              bitField0_ |= 0x00000001;
+              timestamp_ = input.readDouble();
+              break;
+            }
+            case 17: {
+              bitField0_ |= 0x00000002;
+              duration_ = input.readDouble();
+              break;
+            }
+            case 24: {
+              bitField0_ |= 0x00000004;
+              cycles_ = input.readUInt64();
+              break;
+            }
+            case 32: {
+              bitField0_ |= 0x00000008;
+              stalledCyclesFrontend_ = input.readUInt64();
+              break;
+            }
+            case 40: {
+              bitField0_ |= 0x00000010;
+              stalledCyclesBackend_ = input.readUInt64();
+              break;
+            }
+            case 48: {
+              bitField0_ |= 0x00000020;
+              instructions_ = input.readUInt64();
+              break;
+            }
+            case 56: {
+              bitField0_ |= 0x00000040;
+              cacheReferences_ = input.readUInt64();
+              break;
+            }
+            case 64: {
+              bitField0_ |= 0x00000080;
+              cacheMisses_ = input.readUInt64();
+              break;
+            }
+            case 72: {
+              bitField0_ |= 0x00000100;
+              branches_ = input.readUInt64();
+              break;
+            }
+            case 80: {
+              bitField0_ |= 0x00000200;
+              branchMisses_ = input.readUInt64();
+              break;
+            }
+            case 88: {
+              bitField0_ |= 0x00000400;
+              busCycles_ = input.readUInt64();
+              break;
+            }
+            case 96: {
+              bitField0_ |= 0x00000800;
+              refCycles_ = input.readUInt64();
+              break;
+            }
+            case 105: {
+              bitField0_ |= 0x00001000;
+              cpuClock_ = input.readDouble();
+              break;
+            }
+            case 113: {
+              bitField0_ |= 0x00002000;
+              taskClock_ = input.readDouble();
+              break;
+            }
+            case 120: {
+              bitField0_ |= 0x00004000;
+              pageFaults_ = input.readUInt64();
+              break;
+            }
+            case 128: {
+              bitField0_ |= 0x00008000;
+              minorFaults_ = input.readUInt64();
+              break;
+            }
+            case 136: {
+              bitField0_ |= 0x00010000;
+              majorFaults_ = input.readUInt64();
+              break;
+            }
+            case 144: {
+              bitField0_ |= 0x00020000;
+              contextSwitches_ = input.readUInt64();
+              break;
+            }
+            case 152: {
+              bitField0_ |= 0x00040000;
+              cpuMigrations_ = input.readUInt64();
+              break;
+            }
+            case 160: {
+              bitField0_ |= 0x00080000;
+              alignmentFaults_ = input.readUInt64();
+              break;
+            }
+            case 168: {
+              bitField0_ |= 0x00100000;
+              emulationFaults_ = input.readUInt64();
+              break;
+            }
+            case 176: {
+              bitField0_ |= 0x00200000;
+              l1DcacheLoads_ = input.readUInt64();
+              break;
+            }
+            case 184: {
+              bitField0_ |= 0x00400000;
+              l1DcacheLoadMisses_ = input.readUInt64();
+              break;
+            }
+            case 192: {
+              bitField0_ |= 0x00800000;
+              l1DcacheStores_ = input.readUInt64();
+              break;
+            }
+            case 200: {
+              bitField0_ |= 0x01000000;
+              l1DcacheStoreMisses_ = input.readUInt64();
+              break;
+            }
+            case 208: {
+              bitField0_ |= 0x02000000;
+              l1DcachePrefetches_ = input.readUInt64();
+              break;
+            }
+            case 216: {
+              bitField0_ |= 0x04000000;
+              l1DcachePrefetchMisses_ = input.readUInt64();
+              break;
+            }
+            case 224: {
+              bitField0_ |= 0x08000000;
+              l1IcacheLoads_ = input.readUInt64();
+              break;
+            }
+            case 232: {
+              bitField0_ |= 0x10000000;
+              l1IcacheLoadMisses_ = input.readUInt64();
+              break;
+            }
+            case 240: {
+              bitField0_ |= 0x20000000;
+              l1IcachePrefetches_ = input.readUInt64();
+              break;
+            }
+            case 248: {
+              bitField0_ |= 0x40000000;
+              l1IcachePrefetchMisses_ = input.readUInt64();
+              break;
+            }
+            case 256: {
+              bitField0_ |= 0x80000000;
+              llcLoads_ = input.readUInt64();
+              break;
+            }
+            case 264: {
+              bitField1_ |= 0x00000001;
+              llcLoadMisses_ = input.readUInt64();
+              break;
+            }
+            case 272: {
+              bitField1_ |= 0x00000002;
+              llcStores_ = input.readUInt64();
+              break;
+            }
+            case 280: {
+              bitField1_ |= 0x00000004;
+              llcStoreMisses_ = input.readUInt64();
+              break;
+            }
+            case 288: {
+              bitField1_ |= 0x00000008;
+              llcPrefetches_ = input.readUInt64();
+              break;
+            }
+            case 296: {
+              bitField1_ |= 0x00000010;
+              llcPrefetchMisses_ = input.readUInt64();
+              break;
+            }
+            case 304: {
+              bitField1_ |= 0x00000020;
+              dtlbLoads_ = input.readUInt64();
+              break;
+            }
+            case 312: {
+              bitField1_ |= 0x00000040;
+              dtlbLoadMisses_ = input.readUInt64();
+              break;
+            }
+            case 320: {
+              bitField1_ |= 0x00000080;
+              dtlbStores_ = input.readUInt64();
+              break;
+            }
+            case 328: {
+              bitField1_ |= 0x00000100;
+              dtlbStoreMisses_ = input.readUInt64();
+              break;
+            }
+            case 336: {
+              bitField1_ |= 0x00000200;
+              dtlbPrefetches_ = input.readUInt64();
+              break;
+            }
+            case 344: {
+              bitField1_ |= 0x00000400;
+              dtlbPrefetchMisses_ = input.readUInt64();
+              break;
+            }
+            case 352: {
+              bitField1_ |= 0x00000800;
+              itlbLoads_ = input.readUInt64();
+              break;
+            }
+            case 360: {
+              bitField1_ |= 0x00001000;
+              itlbLoadMisses_ = input.readUInt64();
+              break;
+            }
+            case 368: {
+              bitField1_ |= 0x00002000;
+              branchLoads_ = input.readUInt64();
+              break;
+            }
+            case 376: {
+              bitField1_ |= 0x00004000;
+              branchLoadMisses_ = input.readUInt64();
+              break;
+            }
+            case 384: {
+              bitField1_ |= 0x00008000;
+              nodeLoads_ = input.readUInt64();
+              break;
+            }
+            case 392: {
+              bitField1_ |= 0x00010000;
+              nodeLoadMisses_ = input.readUInt64();
+              break;
+            }
+            case 400: {
+              bitField1_ |= 0x00020000;
+              nodeStores_ = input.readUInt64();
+              break;
+            }
+            case 408: {
+              bitField1_ |= 0x00040000;
+              nodeStoreMisses_ = input.readUInt64();
+              break;
+            }
+            case 416: {
+              bitField1_ |= 0x00080000;
+              nodePrefetches_ = input.readUInt64();
+              break;
+            }
+            case 424: {
+              bitField1_ |= 0x00100000;
+              nodePrefetchMisses_ = input.readUInt64();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_PerfStatistics_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_PerfStatistics_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.PerfStatistics.class, org.apache.mesos.Protos.PerfStatistics.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<PerfStatistics> PARSER =
+        new com.google.protobuf.AbstractParser<PerfStatistics>() {
+      public PerfStatistics parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new PerfStatistics(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<PerfStatistics> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    private int bitField1_;
+    // required double timestamp = 1;
+    public static final int TIMESTAMP_FIELD_NUMBER = 1;
+    private double timestamp_;
+    /**
+     * <code>required double timestamp = 1;</code>
+     *
+     * <pre>
+     * Start of sample interval, in seconds since the Epoch.
+     * </pre>
+     */
+    public boolean hasTimestamp() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required double timestamp = 1;</code>
+     *
+     * <pre>
+     * Start of sample interval, in seconds since the Epoch.
+     * </pre>
+     */
+    public double getTimestamp() {
+      return timestamp_;
+    }
+
+    // required double duration = 2;
+    public static final int DURATION_FIELD_NUMBER = 2;
+    private double duration_;
+    /**
+     * <code>required double duration = 2;</code>
+     *
+     * <pre>
+     * Duration of sample interval, in seconds.
+     * </pre>
+     */
+    public boolean hasDuration() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>required double duration = 2;</code>
+     *
+     * <pre>
+     * Duration of sample interval, in seconds.
+     * </pre>
+     */
+    public double getDuration() {
+      return duration_;
+    }
+
+    // optional uint64 cycles = 3;
+    public static final int CYCLES_FIELD_NUMBER = 3;
+    private long cycles_;
+    /**
+     * <code>optional uint64 cycles = 3;</code>
+     *
+     * <pre>
+     * Hardware event.
+     * </pre>
+     */
+    public boolean hasCycles() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional uint64 cycles = 3;</code>
+     *
+     * <pre>
+     * Hardware event.
+     * </pre>
+     */
+    public long getCycles() {
+      return cycles_;
+    }
+
+    // optional uint64 stalled_cycles_frontend = 4;
+    public static final int STALLED_CYCLES_FRONTEND_FIELD_NUMBER = 4;
+    private long stalledCyclesFrontend_;
+    /**
+     * <code>optional uint64 stalled_cycles_frontend = 4;</code>
+     */
+    public boolean hasStalledCyclesFrontend() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional uint64 stalled_cycles_frontend = 4;</code>
+     */
+    public long getStalledCyclesFrontend() {
+      return stalledCyclesFrontend_;
+    }
+
+    // optional uint64 stalled_cycles_backend = 5;
+    public static final int STALLED_CYCLES_BACKEND_FIELD_NUMBER = 5;
+    private long stalledCyclesBackend_;
+    /**
+     * <code>optional uint64 stalled_cycles_backend = 5;</code>
+     */
+    public boolean hasStalledCyclesBackend() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional uint64 stalled_cycles_backend = 5;</code>
+     */
+    public long getStalledCyclesBackend() {
+      return stalledCyclesBackend_;
+    }
+
+    // optional uint64 instructions = 6;
+    public static final int INSTRUCTIONS_FIELD_NUMBER = 6;
+    private long instructions_;
+    /**
+     * <code>optional uint64 instructions = 6;</code>
+     */
+    public boolean hasInstructions() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional uint64 instructions = 6;</code>
+     */
+    public long getInstructions() {
+      return instructions_;
+    }
+
+    // optional uint64 cache_references = 7;
+    public static final int CACHE_REFERENCES_FIELD_NUMBER = 7;
+    private long cacheReferences_;
+    /**
+     * <code>optional uint64 cache_references = 7;</code>
+     */
+    public boolean hasCacheReferences() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional uint64 cache_references = 7;</code>
+     */
+    public long getCacheReferences() {
+      return cacheReferences_;
+    }
+
+    // optional uint64 cache_misses = 8;
+    public static final int CACHE_MISSES_FIELD_NUMBER = 8;
+    private long cacheMisses_;
+    /**
+     * <code>optional uint64 cache_misses = 8;</code>
+     */
+    public boolean hasCacheMisses() {
+      return ((bitField0_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional uint64 cache_misses = 8;</code>
+     */
+    public long getCacheMisses() {
+      return cacheMisses_;
+    }
+
+    // optional uint64 branches = 9;
+    public static final int BRANCHES_FIELD_NUMBER = 9;
+    private long branches_;
+    /**
+     * <code>optional uint64 branches = 9;</code>
+     */
+    public boolean hasBranches() {
+      return ((bitField0_ & 0x00000100) == 0x00000100);
+    }
+    /**
+     * <code>optional uint64 branches = 9;</code>
+     */
+    public long getBranches() {
+      return branches_;
+    }
+
+    // optional uint64 branch_misses = 10;
+    public static final int BRANCH_MISSES_FIELD_NUMBER = 10;
+    private long branchMisses_;
+    /**
+     * <code>optional uint64 branch_misses = 10;</code>
+     */
+    public boolean hasBranchMisses() {
+      return ((bitField0_ & 0x00000200) == 0x00000200);
+    }
+    /**
+     * <code>optional uint64 branch_misses = 10;</code>
+     */
+    public long getBranchMisses() {
+      return branchMisses_;
+    }
+
+    // optional uint64 bus_cycles = 11;
+    public static final int BUS_CYCLES_FIELD_NUMBER = 11;
+    private long busCycles_;
+    /**
+     * <code>optional uint64 bus_cycles = 11;</code>
+     */
+    public boolean hasBusCycles() {
+      return ((bitField0_ & 0x00000400) == 0x00000400);
+    }
+    /**
+     * <code>optional uint64 bus_cycles = 11;</code>
+     */
+    public long getBusCycles() {
+      return busCycles_;
+    }
+
+    // optional uint64 ref_cycles = 12;
+    public static final int REF_CYCLES_FIELD_NUMBER = 12;
+    private long refCycles_;
+    /**
+     * <code>optional uint64 ref_cycles = 12;</code>
+     */
+    public boolean hasRefCycles() {
+      return ((bitField0_ & 0x00000800) == 0x00000800);
+    }
+    /**
+     * <code>optional uint64 ref_cycles = 12;</code>
+     */
+    public long getRefCycles() {
+      return refCycles_;
+    }
+
+    // optional double cpu_clock = 13;
+    public static final int CPU_CLOCK_FIELD_NUMBER = 13;
+    private double cpuClock_;
+    /**
+     * <code>optional double cpu_clock = 13;</code>
+     *
+     * <pre>
+     * Software event.
+     * </pre>
+     */
+    public boolean hasCpuClock() {
+      return ((bitField0_ & 0x00001000) == 0x00001000);
+    }
+    /**
+     * <code>optional double cpu_clock = 13;</code>
+     *
+     * <pre>
+     * Software event.
+     * </pre>
+     */
+    public double getCpuClock() {
+      return cpuClock_;
+    }
+
+    // optional double task_clock = 14;
+    public static final int TASK_CLOCK_FIELD_NUMBER = 14;
+    private double taskClock_;
+    /**
+     * <code>optional double task_clock = 14;</code>
+     */
+    public boolean hasTaskClock() {
+      return ((bitField0_ & 0x00002000) == 0x00002000);
+    }
+    /**
+     * <code>optional double task_clock = 14;</code>
+     */
+    public double getTaskClock() {
+      return taskClock_;
+    }
+
+    // optional uint64 page_faults = 15;
+    public static final int PAGE_FAULTS_FIELD_NUMBER = 15;
+    private long pageFaults_;
+    /**
+     * <code>optional uint64 page_faults = 15;</code>
+     */
+    public boolean hasPageFaults() {
+      return ((bitField0_ & 0x00004000) == 0x00004000);
+    }
+    /**
+     * <code>optional uint64 page_faults = 15;</code>
+     */
+    public long getPageFaults() {
+      return pageFaults_;
+    }
+
+    // optional uint64 minor_faults = 16;
+    public static final int MINOR_FAULTS_FIELD_NUMBER = 16;
+    private long minorFaults_;
+    /**
+     * <code>optional uint64 minor_faults = 16;</code>
+     */
+    public boolean hasMinorFaults() {
+      return ((bitField0_ & 0x00008000) == 0x00008000);
+    }
+    /**
+     * <code>optional uint64 minor_faults = 16;</code>
+     */
+    public long getMinorFaults() {
+      return minorFaults_;
+    }
+
+    // optional uint64 major_faults = 17;
+    public static final int MAJOR_FAULTS_FIELD_NUMBER = 17;
+    private long majorFaults_;
+    /**
+     * <code>optional uint64 major_faults = 17;</code>
+     */
+    public boolean hasMajorFaults() {
+      return ((bitField0_ & 0x00010000) == 0x00010000);
+    }
+    /**
+     * <code>optional uint64 major_faults = 17;</code>
+     */
+    public long getMajorFaults() {
+      return majorFaults_;
+    }
+
+    // optional uint64 context_switches = 18;
+    public static final int CONTEXT_SWITCHES_FIELD_NUMBER = 18;
+    private long contextSwitches_;
+    /**
+     * <code>optional uint64 context_switches = 18;</code>
+     */
+    public boolean hasContextSwitches() {
+      return ((bitField0_ & 0x00020000) == 0x00020000);
+    }
+    /**
+     * <code>optional uint64 context_switches = 18;</code>
+     */
+    public long getContextSwitches() {
+      return contextSwitches_;
+    }
+
+    // optional uint64 cpu_migrations = 19;
+    public static final int CPU_MIGRATIONS_FIELD_NUMBER = 19;
+    private long cpuMigrations_;
+    /**
+     * <code>optional uint64 cpu_migrations = 19;</code>
+     */
+    public boolean hasCpuMigrations() {
+      return ((bitField0_ & 0x00040000) == 0x00040000);
+    }
+    /**
+     * <code>optional uint64 cpu_migrations = 19;</code>
+     */
+    public long getCpuMigrations() {
+      return cpuMigrations_;
+    }
+
+    // optional uint64 alignment_faults = 20;
+    public static final int ALIGNMENT_FAULTS_FIELD_NUMBER = 20;
+    private long alignmentFaults_;
+    /**
+     * <code>optional uint64 alignment_faults = 20;</code>
+     */
+    public boolean hasAlignmentFaults() {
+      return ((bitField0_ & 0x00080000) == 0x00080000);
+    }
+    /**
+     * <code>optional uint64 alignment_faults = 20;</code>
+     */
+    public long getAlignmentFaults() {
+      return alignmentFaults_;
+    }
+
+    // optional uint64 emulation_faults = 21;
+    public static final int EMULATION_FAULTS_FIELD_NUMBER = 21;
+    private long emulationFaults_;
+    /**
+     * <code>optional uint64 emulation_faults = 21;</code>
+     */
+    public boolean hasEmulationFaults() {
+      return ((bitField0_ & 0x00100000) == 0x00100000);
+    }
+    /**
+     * <code>optional uint64 emulation_faults = 21;</code>
+     */
+    public long getEmulationFaults() {
+      return emulationFaults_;
+    }
+
+    // optional uint64 l1_dcache_loads = 22;
+    public static final int L1_DCACHE_LOADS_FIELD_NUMBER = 22;
+    private long l1DcacheLoads_;
+    /**
+     * <code>optional uint64 l1_dcache_loads = 22;</code>
+     *
+     * <pre>
+     * Hardware cache event.
+     * </pre>
+     */
+    public boolean hasL1DcacheLoads() {
+      return ((bitField0_ & 0x00200000) == 0x00200000);
+    }
+    /**
+     * <code>optional uint64 l1_dcache_loads = 22;</code>
+     *
+     * <pre>
+     * Hardware cache event.
+     * </pre>
+     */
+    public long getL1DcacheLoads() {
+      return l1DcacheLoads_;
+    }
+
+    // optional uint64 l1_dcache_load_misses = 23;
+    public static final int L1_DCACHE_LOAD_MISSES_FIELD_NUMBER = 23;
+    private long l1DcacheLoadMisses_;
+    /**
+     * <code>optional uint64 l1_dcache_load_misses = 23;</code>
+     */
+    public boolean hasL1DcacheLoadMisses() {
+      return ((bitField0_ & 0x00400000) == 0x00400000);
+    }
+    /**
+     * <code>optional uint64 l1_dcache_load_misses = 23;</code>
+     */
+    public long getL1DcacheLoadMisses() {
+      return l1DcacheLoadMisses_;
+    }
+
+    // optional uint64 l1_dcache_stores = 24;
+    public static final int L1_DCACHE_STORES_FIELD_NUMBER = 24;
+    private long l1DcacheStores_;
+    /**
+     * <code>optional uint64 l1_dcache_stores = 24;</code>
+     */
+    public boolean hasL1DcacheStores() {
+      return ((bitField0_ & 0x00800000) == 0x00800000);
+    }
+    /**
+     * <code>optional uint64 l1_dcache_stores = 24;</code>
+     */
+    public long getL1DcacheStores() {
+      return l1DcacheStores_;
+    }
+
+    // optional uint64 l1_dcache_store_misses = 25;
+    public static final int L1_DCACHE_STORE_MISSES_FIELD_NUMBER = 25;
+    private long l1DcacheStoreMisses_;
+    /**
+     * <code>optional uint64 l1_dcache_store_misses = 25;</code>
+     */
+    public boolean hasL1DcacheStoreMisses() {
+      return ((bitField0_ & 0x01000000) == 0x01000000);
+    }
+    /**
+     * <code>optional uint64 l1_dcache_store_misses = 25;</code>
+     */
+    public long getL1DcacheStoreMisses() {
+      return l1DcacheStoreMisses_;
+    }
+
+    // optional uint64 l1_dcache_prefetches = 26;
+    public static final int L1_DCACHE_PREFETCHES_FIELD_NUMBER = 26;
+    private long l1DcachePrefetches_;
+    /**
+     * <code>optional uint64 l1_dcache_prefetches = 26;</code>
+     */
+    public boolean hasL1DcachePrefetches() {
+      return ((bitField0_ & 0x02000000) == 0x02000000);
+    }
+    /**
+     * <code>optional uint64 l1_dcache_prefetches = 26;</code>
+     */
+    public long getL1DcachePrefetches() {
+      return l1DcachePrefetches_;
+    }
+
+    // optional uint64 l1_dcache_prefetch_misses = 27;
+    public static final int L1_DCACHE_PREFETCH_MISSES_FIELD_NUMBER = 27;
+    private long l1DcachePrefetchMisses_;
+    /**
+     * <code>optional uint64 l1_dcache_prefetch_misses = 27;</code>
+     */
+    public boolean hasL1DcachePrefetchMisses() {
+      return ((bitField0_ & 0x04000000) == 0x04000000);
+    }
+    /**
+     * <code>optional uint64 l1_dcache_prefetch_misses = 27;</code>
+     */
+    public long getL1DcachePrefetchMisses() {
+      return l1DcachePrefetchMisses_;
+    }
+
+    // optional uint64 l1_icache_loads = 28;
+    public static final int L1_ICACHE_LOADS_FIELD_NUMBER = 28;
+    private long l1IcacheLoads_;
+    /**
+     * <code>optional uint64 l1_icache_loads = 28;</code>
+     */
+    public boolean hasL1IcacheLoads() {
+      return ((bitField0_ & 0x08000000) == 0x08000000);
+    }
+    /**
+     * <code>optional uint64 l1_icache_loads = 28;</code>
+     */
+    public long getL1IcacheLoads() {
+      return l1IcacheLoads_;
+    }
+
+    // optional uint64 l1_icache_load_misses = 29;
+    public static final int L1_ICACHE_LOAD_MISSES_FIELD_NUMBER = 29;
+    private long l1IcacheLoadMisses_;
+    /**
+     * <code>optional uint64 l1_icache_load_misses = 29;</code>
+     */
+    public boolean hasL1IcacheLoadMisses() {
+      return ((bitField0_ & 0x10000000) == 0x10000000);
+    }
+    /**
+     * <code>optional uint64 l1_icache_load_misses = 29;</code>
+     */
+    public long getL1IcacheLoadMisses() {
+      return l1IcacheLoadMisses_;
+    }
+
+    // optional uint64 l1_icache_prefetches = 30;
+    public static final int L1_ICACHE_PREFETCHES_FIELD_NUMBER = 30;
+    private long l1IcachePrefetches_;
+    /**
+     * <code>optional uint64 l1_icache_prefetches = 30;</code>
+     */
+    public boolean hasL1IcachePrefetches() {
+      return ((bitField0_ & 0x20000000) == 0x20000000);
+    }
+    /**
+     * <code>optional uint64 l1_icache_prefetches = 30;</code>
+     */
+    public long getL1IcachePrefetches() {
+      return l1IcachePrefetches_;
+    }
+
+    // optional uint64 l1_icache_prefetch_misses = 31;
+    public static final int L1_ICACHE_PREFETCH_MISSES_FIELD_NUMBER = 31;
+    private long l1IcachePrefetchMisses_;
+    /**
+     * <code>optional uint64 l1_icache_prefetch_misses = 31;</code>
+     */
+    public boolean hasL1IcachePrefetchMisses() {
+      return ((bitField0_ & 0x40000000) == 0x40000000);
+    }
+    /**
+     * <code>optional uint64 l1_icache_prefetch_misses = 31;</code>
+     */
+    public long getL1IcachePrefetchMisses() {
+      return l1IcachePrefetchMisses_;
+    }
+
+    // optional uint64 llc_loads = 32;
+    public static final int LLC_LOADS_FIELD_NUMBER = 32;
+    private long llcLoads_;
+    /**
+     * <code>optional uint64 llc_loads = 32;</code>
+     */
+    public boolean hasLlcLoads() {
+      return ((bitField0_ & 0x80000000) == 0x80000000);
+    }
+    /**
+     * <code>optional uint64 llc_loads = 32;</code>
+     */
+    public long getLlcLoads() {
+      return llcLoads_;
+    }
+
+    // optional uint64 llc_load_misses = 33;
+    public static final int LLC_LOAD_MISSES_FIELD_NUMBER = 33;
+    private long llcLoadMisses_;
+    /**
+     * <code>optional uint64 llc_load_misses = 33;</code>
+     */
+    public boolean hasLlcLoadMisses() {
+      return ((bitField1_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional uint64 llc_load_misses = 33;</code>
+     */
+    public long getLlcLoadMisses() {
+      return llcLoadMisses_;
+    }
+
+    // optional uint64 llc_stores = 34;
+    public static final int LLC_STORES_FIELD_NUMBER = 34;
+    private long llcStores_;
+    /**
+     * <code>optional uint64 llc_stores = 34;</code>
+     */
+    public boolean hasLlcStores() {
+      return ((bitField1_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional uint64 llc_stores = 34;</code>
+     */
+    public long getLlcStores() {
+      return llcStores_;
+    }
+
+    // optional uint64 llc_store_misses = 35;
+    public static final int LLC_STORE_MISSES_FIELD_NUMBER = 35;
+    private long llcStoreMisses_;
+    /**
+     * <code>optional uint64 llc_store_misses = 35;</code>
+     */
+    public boolean hasLlcStoreMisses() {
+      return ((bitField1_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional uint64 llc_store_misses = 35;</code>
+     */
+    public long getLlcStoreMisses() {
+      return llcStoreMisses_;
+    }
+
+    // optional uint64 llc_prefetches = 36;
+    public static final int LLC_PREFETCHES_FIELD_NUMBER = 36;
+    private long llcPrefetches_;
+    /**
+     * <code>optional uint64 llc_prefetches = 36;</code>
+     */
+    public boolean hasLlcPrefetches() {
+      return ((bitField1_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional uint64 llc_prefetches = 36;</code>
+     */
+    public long getLlcPrefetches() {
+      return llcPrefetches_;
+    }
+
+    // optional uint64 llc_prefetch_misses = 37;
+    public static final int LLC_PREFETCH_MISSES_FIELD_NUMBER = 37;
+    private long llcPrefetchMisses_;
+    /**
+     * <code>optional uint64 llc_prefetch_misses = 37;</code>
+     */
+    public boolean hasLlcPrefetchMisses() {
+      return ((bitField1_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional uint64 llc_prefetch_misses = 37;</code>
+     */
+    public long getLlcPrefetchMisses() {
+      return llcPrefetchMisses_;
+    }
+
+    // optional uint64 dtlb_loads = 38;
+    public static final int DTLB_LOADS_FIELD_NUMBER = 38;
+    private long dtlbLoads_;
+    /**
+     * <code>optional uint64 dtlb_loads = 38;</code>
+     */
+    public boolean hasDtlbLoads() {
+      return ((bitField1_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional uint64 dtlb_loads = 38;</code>
+     */
+    public long getDtlbLoads() {
+      return dtlbLoads_;
+    }
+
+    // optional uint64 dtlb_load_misses = 39;
+    public static final int DTLB_LOAD_MISSES_FIELD_NUMBER = 39;
+    private long dtlbLoadMisses_;
+    /**
+     * <code>optional uint64 dtlb_load_misses = 39;</code>
+     */
+    public boolean hasDtlbLoadMisses() {
+      return ((bitField1_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional uint64 dtlb_load_misses = 39;</code>
+     */
+    public long getDtlbLoadMisses() {
+      return dtlbLoadMisses_;
+    }
+
+    // optional uint64 dtlb_stores = 40;
+    public static final int DTLB_STORES_FIELD_NUMBER = 40;
+    private long dtlbStores_;
+    /**
+     * <code>optional uint64 dtlb_stores = 40;</code>
+     */
+    public boolean hasDtlbStores() {
+      return ((bitField1_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional uint64 dtlb_stores = 40;</code>
+     */
+    public long getDtlbStores() {
+      return dtlbStores_;
+    }
+
+    // optional uint64 dtlb_store_misses = 41;
+    public static final int DTLB_STORE_MISSES_FIELD_NUMBER = 41;
+    private long dtlbStoreMisses_;
+    /**
+     * <code>optional uint64 dtlb_store_misses = 41;</code>
+     */
+    public boolean hasDtlbStoreMisses() {
+      return ((bitField1_ & 0x00000100) == 0x00000100);
+    }
+    /**
+     * <code>optional uint64 dtlb_store_misses = 41;</code>
+     */
+    public long getDtlbStoreMisses() {
+      return dtlbStoreMisses_;
+    }
+
+    // optional uint64 dtlb_prefetches = 42;
+    public static final int DTLB_PREFETCHES_FIELD_NUMBER = 42;
+    private long dtlbPrefetches_;
+    /**
+     * <code>optional uint64 dtlb_prefetches = 42;</code>
+     */
+    public boolean hasDtlbPrefetches() {
+      return ((bitField1_ & 0x00000200) == 0x00000200);
+    }
+    /**
+     * <code>optional uint64 dtlb_prefetches = 42;</code>
+     */
+    public long getDtlbPrefetches() {
+      return dtlbPrefetches_;
+    }
+
+    // optional uint64 dtlb_prefetch_misses = 43;
+    public static final int DTLB_PREFETCH_MISSES_FIELD_NUMBER = 43;
+    private long dtlbPrefetchMisses_;
+    /**
+     * <code>optional uint64 dtlb_prefetch_misses = 43;</code>
+     */
+    public boolean hasDtlbPrefetchMisses() {
+      return ((bitField1_ & 0x00000400) == 0x00000400);
+    }
+    /**
+     * <code>optional uint64 dtlb_prefetch_misses = 43;</code>
+     */
+    public long getDtlbPrefetchMisses() {
+      return dtlbPrefetchMisses_;
+    }
+
+    // optional uint64 itlb_loads = 44;
+    public static final int ITLB_LOADS_FIELD_NUMBER = 44;
+    private long itlbLoads_;
+    /**
+     * <code>optional uint64 itlb_loads = 44;</code>
+     */
+    public boolean hasItlbLoads() {
+      return ((bitField1_ & 0x00000800) == 0x00000800);
+    }
+    /**
+     * <code>optional uint64 itlb_loads = 44;</code>
+     */
+    public long getItlbLoads() {
+      return itlbLoads_;
+    }
+
+    // optional uint64 itlb_load_misses = 45;
+    public static final int ITLB_LOAD_MISSES_FIELD_NUMBER = 45;
+    private long itlbLoadMisses_;
+    /**
+     * <code>optional uint64 itlb_load_misses = 45;</code>
+     */
+    public boolean hasItlbLoadMisses() {
+      return ((bitField1_ & 0x00001000) == 0x00001000);
+    }
+    /**
+     * <code>optional uint64 itlb_load_misses = 45;</code>
+     */
+    public long getItlbLoadMisses() {
+      return itlbLoadMisses_;
+    }
+
+    // optional uint64 branch_loads = 46;
+    public static final int BRANCH_LOADS_FIELD_NUMBER = 46;
+    private long branchLoads_;
+    /**
+     * <code>optional uint64 branch_loads = 46;</code>
+     */
+    public boolean hasBranchLoads() {
+      return ((bitField1_ & 0x00002000) == 0x00002000);
+    }
+    /**
+     * <code>optional uint64 branch_loads = 46;</code>
+     */
+    public long getBranchLoads() {
+      return branchLoads_;
+    }
+
+    // optional uint64 branch_load_misses = 47;
+    public static final int BRANCH_LOAD_MISSES_FIELD_NUMBER = 47;
+    private long branchLoadMisses_;
+    /**
+     * <code>optional uint64 branch_load_misses = 47;</code>
+     */
+    public boolean hasBranchLoadMisses() {
+      return ((bitField1_ & 0x00004000) == 0x00004000);
+    }
+    /**
+     * <code>optional uint64 branch_load_misses = 47;</code>
+     */
+    public long getBranchLoadMisses() {
+      return branchLoadMisses_;
+    }
+
+    // optional uint64 node_loads = 48;
+    public static final int NODE_LOADS_FIELD_NUMBER = 48;
+    private long nodeLoads_;
+    /**
+     * <code>optional uint64 node_loads = 48;</code>
+     */
+    public boolean hasNodeLoads() {
+      return ((bitField1_ & 0x00008000) == 0x00008000);
+    }
+    /**
+     * <code>optional uint64 node_loads = 48;</code>
+     */
+    public long getNodeLoads() {
+      return nodeLoads_;
+    }
+
+    // optional uint64 node_load_misses = 49;
+    public static final int NODE_LOAD_MISSES_FIELD_NUMBER = 49;
+    private long nodeLoadMisses_;
+    /**
+     * <code>optional uint64 node_load_misses = 49;</code>
+     */
+    public boolean hasNodeLoadMisses() {
+      return ((bitField1_ & 0x00010000) == 0x00010000);
+    }
+    /**
+     * <code>optional uint64 node_load_misses = 49;</code>
+     */
+    public long getNodeLoadMisses() {
+      return nodeLoadMisses_;
+    }
+
+    // optional uint64 node_stores = 50;
+    public static final int NODE_STORES_FIELD_NUMBER = 50;
+    private long nodeStores_;
+    /**
+     * <code>optional uint64 node_stores = 50;</code>
+     */
+    public boolean hasNodeStores() {
+      return ((bitField1_ & 0x00020000) == 0x00020000);
+    }
+    /**
+     * <code>optional uint64 node_stores = 50;</code>
+     */
+    public long getNodeStores() {
+      return nodeStores_;
+    }
+
+    // optional uint64 node_store_misses = 51;
+    public static final int NODE_STORE_MISSES_FIELD_NUMBER = 51;
+    private long nodeStoreMisses_;
+    /**
+     * <code>optional uint64 node_store_misses = 51;</code>
+     */
+    public boolean hasNodeStoreMisses() {
+      return ((bitField1_ & 0x00040000) == 0x00040000);
+    }
+    /**
+     * <code>optional uint64 node_store_misses = 51;</code>
+     */
+    public long getNodeStoreMisses() {
+      return nodeStoreMisses_;
+    }
+
+    // optional uint64 node_prefetches = 52;
+    public static final int NODE_PREFETCHES_FIELD_NUMBER = 52;
+    private long nodePrefetches_;
+    /**
+     * <code>optional uint64 node_prefetches = 52;</code>
+     */
+    public boolean hasNodePrefetches() {
+      return ((bitField1_ & 0x00080000) == 0x00080000);
+    }
+    /**
+     * <code>optional uint64 node_prefetches = 52;</code>
+     */
+    public long getNodePrefetches() {
+      return nodePrefetches_;
+    }
+
+    // optional uint64 node_prefetch_misses = 53;
+    public static final int NODE_PREFETCH_MISSES_FIELD_NUMBER = 53;
+    private long nodePrefetchMisses_;
+    /**
+     * <code>optional uint64 node_prefetch_misses = 53;</code>
+     */
+    public boolean hasNodePrefetchMisses() {
+      return ((bitField1_ & 0x00100000) == 0x00100000);
+    }
+    /**
+     * <code>optional uint64 node_prefetch_misses = 53;</code>
+     */
+    public long getNodePrefetchMisses() {
+      return nodePrefetchMisses_;
+    }
+
+    private void initFields() {
+      timestamp_ = 0D;
+      duration_ = 0D;
+      cycles_ = 0L;
+      stalledCyclesFrontend_ = 0L;
+      stalledCyclesBackend_ = 0L;
+      instructions_ = 0L;
+      cacheReferences_ = 0L;
+      cacheMisses_ = 0L;
+      branches_ = 0L;
+      branchMisses_ = 0L;
+      busCycles_ = 0L;
+      refCycles_ = 0L;
+      cpuClock_ = 0D;
+      taskClock_ = 0D;
+      pageFaults_ = 0L;
+      minorFaults_ = 0L;
+      majorFaults_ = 0L;
+      contextSwitches_ = 0L;
+      cpuMigrations_ = 0L;
+      alignmentFaults_ = 0L;
+      emulationFaults_ = 0L;
+      l1DcacheLoads_ = 0L;
+      l1DcacheLoadMisses_ = 0L;
+      l1DcacheStores_ = 0L;
+      l1DcacheStoreMisses_ = 0L;
+      l1DcachePrefetches_ = 0L;
+      l1DcachePrefetchMisses_ = 0L;
+      l1IcacheLoads_ = 0L;
+      l1IcacheLoadMisses_ = 0L;
+      l1IcachePrefetches_ = 0L;
+      l1IcachePrefetchMisses_ = 0L;
+      llcLoads_ = 0L;
+      llcLoadMisses_ = 0L;
+      llcStores_ = 0L;
+      llcStoreMisses_ = 0L;
+      llcPrefetches_ = 0L;
+      llcPrefetchMisses_ = 0L;
+      dtlbLoads_ = 0L;
+      dtlbLoadMisses_ = 0L;
+      dtlbStores_ = 0L;
+      dtlbStoreMisses_ = 0L;
+      dtlbPrefetches_ = 0L;
+      dtlbPrefetchMisses_ = 0L;
+      itlbLoads_ = 0L;
+      itlbLoadMisses_ = 0L;
+      branchLoads_ = 0L;
+      branchLoadMisses_ = 0L;
+      nodeLoads_ = 0L;
+      nodeLoadMisses_ = 0L;
+      nodeStores_ = 0L;
+      nodeStoreMisses_ = 0L;
+      nodePrefetches_ = 0L;
+      nodePrefetchMisses_ = 0L;
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasTimestamp()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasDuration()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeDouble(1, timestamp_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeDouble(2, duration_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeUInt64(3, cycles_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeUInt64(4, stalledCyclesFrontend_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeUInt64(5, stalledCyclesBackend_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeUInt64(6, instructions_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeUInt64(7, cacheReferences_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        output.writeUInt64(8, cacheMisses_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        output.writeUInt64(9, branches_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        output.writeUInt64(10, branchMisses_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        output.writeUInt64(11, busCycles_);
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        output.writeUInt64(12, refCycles_);
+      }
+      if (((bitField0_ & 0x00001000) == 0x00001000)) {
+        output.writeDouble(13, cpuClock_);
+      }
+      if (((bitField0_ & 0x00002000) == 0x00002000)) {
+        output.writeDouble(14, taskClock_);
+      }
+      if (((bitField0_ & 0x00004000) == 0x00004000)) {
+        output.writeUInt64(15, pageFaults_);
+      }
+      if (((bitField0_ & 0x00008000) == 0x00008000)) {
+        output.writeUInt64(16, minorFaults_);
+      }
+      if (((bitField0_ & 0x00010000) == 0x00010000)) {
+        output.writeUInt64(17, majorFaults_);
+      }
+      if (((bitField0_ & 0x00020000) == 0x00020000)) {
+        output.writeUInt64(18, contextSwitches_);
+      }
+      if (((bitField0_ & 0x00040000) == 0x00040000)) {
+        output.writeUInt64(19, cpuMigrations_);
+      }
+      if (((bitField0_ & 0x00080000) == 0x00080000)) {
+        output.writeUInt64(20, alignmentFaults_);
+      }
+      if (((bitField0_ & 0x00100000) == 0x00100000)) {
+        output.writeUInt64(21, emulationFaults_);
+      }
+      if (((bitField0_ & 0x00200000) == 0x00200000)) {
+        output.writeUInt64(22, l1DcacheLoads_);
+      }
+      if (((bitField0_ & 0x00400000) == 0x00400000)) {
+        output.writeUInt64(23, l1DcacheLoadMisses_);
+      }
+      if (((bitField0_ & 0x00800000) == 0x00800000)) {
+        output.writeUInt64(24, l1DcacheStores_);
+      }
+      if (((bitField0_ & 0x01000000) == 0x01000000)) {
+        output.writeUInt64(25, l1DcacheStoreMisses_);
+      }
+      if (((bitField0_ & 0x02000000) == 0x02000000)) {
+        output.writeUInt64(26, l1DcachePrefetches_);
+      }
+      if (((bitField0_ & 0x04000000) == 0x04000000)) {
+        output.writeUInt64(27, l1DcachePrefetchMisses_);
+      }
+      if (((bitField0_ & 0x08000000) == 0x08000000)) {
+        output.writeUInt64(28, l1IcacheLoads_);
+      }
+      if (((bitField0_ & 0x10000000) == 0x10000000)) {
+        output.writeUInt64(29, l1IcacheLoadMisses_);
+      }
+      if (((bitField0_ & 0x20000000) == 0x20000000)) {
+        output.writeUInt64(30, l1IcachePrefetches_);
+      }
+      if (((bitField0_ & 0x40000000) == 0x40000000)) {
+        output.writeUInt64(31, l1IcachePrefetchMisses_);
+      }
+      if (((bitField0_ & 0x80000000) == 0x80000000)) {
+        output.writeUInt64(32, llcLoads_);
+      }
+      if (((bitField1_ & 0x00000001) == 0x00000001)) {
+        output.writeUInt64(33, llcLoadMisses_);
+      }
+      if (((bitField1_ & 0x00000002) == 0x00000002)) {
+        output.writeUInt64(34, llcStores_);
+      }
+      if (((bitField1_ & 0x00000004) == 0x00000004)) {
+        output.writeUInt64(35, llcStoreMisses_);
+      }
+      if (((bitField1_ & 0x00000008) == 0x00000008)) {
+        output.writeUInt64(36, llcPrefetches_);
+      }
+      if (((bitField1_ & 0x00000010) == 0x00000010)) {
+        output.writeUInt64(37, llcPrefetchMisses_);
+      }
+      if (((bitField1_ & 0x00000020) == 0x00000020)) {
+        output.writeUInt64(38, dtlbLoads_);
+      }
+      if (((bitField1_ & 0x00000040) == 0x00000040)) {
+        output.writeUInt64(39, dtlbLoadMisses_);
+      }
+      if (((bitField1_ & 0x00000080) == 0x00000080)) {
+        output.writeUInt64(40, dtlbStores_);
+      }
+      if (((bitField1_ & 0x00000100) == 0x00000100)) {
+        output.writeUInt64(41, dtlbStoreMisses_);
+      }
+      if (((bitField1_ & 0x00000200) == 0x00000200)) {
+        output.writeUInt64(42, dtlbPrefetches_);
+      }
+      if (((bitField1_ & 0x00000400) == 0x00000400)) {
+        output.writeUInt64(43, dtlbPrefetchMisses_);
+      }
+      if (((bitField1_ & 0x00000800) == 0x00000800)) {
+        output.writeUInt64(44, itlbLoads_);
+      }
+      if (((bitField1_ & 0x00001000) == 0x00001000)) {
+        output.writeUInt64(45, itlbLoadMisses_);
+      }
+      if (((bitField1_ & 0x00002000) == 0x00002000)) {
+        output.writeUInt64(46, branchLoads_);
+      }
+      if (((bitField1_ & 0x00004000) == 0x00004000)) {
+        output.writeUInt64(47, branchLoadMisses_);
+      }
+      if (((bitField1_ & 0x00008000) == 0x00008000)) {
+        output.writeUInt64(48, nodeLoads_);
+      }
+      if (((bitField1_ & 0x00010000) == 0x00010000)) {
+        output.writeUInt64(49, nodeLoadMisses_);
+      }
+      if (((bitField1_ & 0x00020000) == 0x00020000)) {
+        output.writeUInt64(50, nodeStores_);
+      }
+      if (((bitField1_ & 0x00040000) == 0x00040000)) {
+        output.writeUInt64(51, nodeStoreMisses_);
+      }
+      if (((bitField1_ & 0x00080000) == 0x00080000)) {
+        output.writeUInt64(52, nodePrefetches_);
+      }
+      if (((bitField1_ & 0x00100000) == 0x00100000)) {
+        output.writeUInt64(53, nodePrefetchMisses_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(1, timestamp_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(2, duration_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(3, cycles_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(4, stalledCyclesFrontend_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(5, stalledCyclesBackend_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(6, instructions_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(7, cacheReferences_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(8, cacheMisses_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(9, branches_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(10, branchMisses_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(11, busCycles_);
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(12, refCycles_);
+      }
+      if (((bitField0_ & 0x00001000) == 0x00001000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(13, cpuClock_);
+      }
+      if (((bitField0_ & 0x00002000) == 0x00002000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(14, taskClock_);
+      }
+      if (((bitField0_ & 0x00004000) == 0x00004000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(15, pageFaults_);
+      }
+      if (((bitField0_ & 0x00008000) == 0x00008000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(16, minorFaults_);
+      }
+      if (((bitField0_ & 0x00010000) == 0x00010000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(17, majorFaults_);
+      }
+      if (((bitField0_ & 0x00020000) == 0x00020000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(18, contextSwitches_);
+      }
+      if (((bitField0_ & 0x00040000) == 0x00040000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(19, cpuMigrations_);
+      }
+      if (((bitField0_ & 0x00080000) == 0x00080000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(20, alignmentFaults_);
+      }
+      if (((bitField0_ & 0x00100000) == 0x00100000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(21, emulationFaults_);
+      }
+      if (((bitField0_ & 0x00200000) == 0x00200000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(22, l1DcacheLoads_);
+      }
+      if (((bitField0_ & 0x00400000) == 0x00400000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(23, l1DcacheLoadMisses_);
+      }
+      if (((bitField0_ & 0x00800000) == 0x00800000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(24, l1DcacheStores_);
+      }
+      if (((bitField0_ & 0x01000000) == 0x01000000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(25, l1DcacheStoreMisses_);
+      }
+      if (((bitField0_ & 0x02000000) == 0x02000000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(26, l1DcachePrefetches_);
+      }
+      if (((bitField0_ & 0x04000000) == 0x04000000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(27, l1DcachePrefetchMisses_);
+      }
+      if (((bitField0_ & 0x08000000) == 0x08000000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(28, l1IcacheLoads_);
+      }
+      if (((bitField0_ & 0x10000000) == 0x10000000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(29, l1IcacheLoadMisses_);
+      }
+      if (((bitField0_ & 0x20000000) == 0x20000000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(30, l1IcachePrefetches_);
+      }
+      if (((bitField0_ & 0x40000000) == 0x40000000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(31, l1IcachePrefetchMisses_);
+      }
+      if (((bitField0_ & 0x80000000) == 0x80000000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(32, llcLoads_);
+      }
+      if (((bitField1_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(33, llcLoadMisses_);
+      }
+      if (((bitField1_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(34, llcStores_);
+      }
+      if (((bitField1_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(35, llcStoreMisses_);
+      }
+      if (((bitField1_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(36, llcPrefetches_);
+      }
+      if (((bitField1_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(37, llcPrefetchMisses_);
+      }
+      if (((bitField1_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(38, dtlbLoads_);
+      }
+      if (((bitField1_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(39, dtlbLoadMisses_);
+      }
+      if (((bitField1_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(40, dtlbStores_);
+      }
+      if (((bitField1_ & 0x00000100) == 0x00000100)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(41, dtlbStoreMisses_);
+      }
+      if (((bitField1_ & 0x00000200) == 0x00000200)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(42, dtlbPrefetches_);
+      }
+      if (((bitField1_ & 0x00000400) == 0x00000400)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(43, dtlbPrefetchMisses_);
+      }
+      if (((bitField1_ & 0x00000800) == 0x00000800)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(44, itlbLoads_);
+      }
+      if (((bitField1_ & 0x00001000) == 0x00001000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(45, itlbLoadMisses_);
+      }
+      if (((bitField1_ & 0x00002000) == 0x00002000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(46, branchLoads_);
+      }
+      if (((bitField1_ & 0x00004000) == 0x00004000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(47, branchLoadMisses_);
+      }
+      if (((bitField1_ & 0x00008000) == 0x00008000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(48, nodeLoads_);
+      }
+      if (((bitField1_ & 0x00010000) == 0x00010000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(49, nodeLoadMisses_);
+      }
+      if (((bitField1_ & 0x00020000) == 0x00020000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(50, nodeStores_);
+      }
+      if (((bitField1_ & 0x00040000) == 0x00040000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(51, nodeStoreMisses_);
+      }
+      if (((bitField1_ & 0x00080000) == 0x00080000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(52, nodePrefetches_);
+      }
+      if (((bitField1_ & 0x00100000) == 0x00100000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(53, nodePrefetchMisses_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.PerfStatistics parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.PerfStatistics parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.PerfStatistics parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.PerfStatistics parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.PerfStatistics parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.PerfStatistics parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.PerfStatistics parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.PerfStatistics parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.PerfStatistics parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.PerfStatistics parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.PerfStatistics prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.PerfStatistics}
+     *
+     * <pre>
+     **
+     * Describes a sample of events from "perf stat". Only available on
+     * Linux.
+     *
+     * NOTE: Each optional field matches the name of a perf event (see
+     * "perf list") with the following changes:
+     * 1. Names are downcased.
+     * 2. Hyphens ('-') are replaced with underscores ('_').
+     * 3. Events with alternate names use the name "perf stat" returns,
+     *    e.g., for the event "cycles OR cpu-cycles" perf always returns
+     *    cycles.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.PerfStatisticsOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_PerfStatistics_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_PerfStatistics_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.PerfStatistics.class, org.apache.mesos.Protos.PerfStatistics.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.PerfStatistics.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        timestamp_ = 0D;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        duration_ = 0D;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        cycles_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        stalledCyclesFrontend_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        stalledCyclesBackend_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000010);
+        instructions_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000020);
+        cacheReferences_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000040);
+        cacheMisses_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000080);
+        branches_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000100);
+        branchMisses_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000200);
+        busCycles_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000400);
+        refCycles_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000800);
+        cpuClock_ = 0D;
+        bitField0_ = (bitField0_ & ~0x00001000);
+        taskClock_ = 0D;
+        bitField0_ = (bitField0_ & ~0x00002000);
+        pageFaults_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00004000);
+        minorFaults_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00008000);
+        majorFaults_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00010000);
+        contextSwitches_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00020000);
+        cpuMigrations_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00040000);
+        alignmentFaults_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00080000);
+        emulationFaults_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00100000);
+        l1DcacheLoads_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00200000);
+        l1DcacheLoadMisses_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00400000);
+        l1DcacheStores_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00800000);
+        l1DcacheStoreMisses_ = 0L;
+        bitField0_ = (bitField0_ & ~0x01000000);
+        l1DcachePrefetches_ = 0L;
+        bitField0_ = (bitField0_ & ~0x02000000);
+        l1DcachePrefetchMisses_ = 0L;
+        bitField0_ = (bitField0_ & ~0x04000000);
+        l1IcacheLoads_ = 0L;
+        bitField0_ = (bitField0_ & ~0x08000000);
+        l1IcacheLoadMisses_ = 0L;
+        bitField0_ = (bitField0_ & ~0x10000000);
+        l1IcachePrefetches_ = 0L;
+        bitField0_ = (bitField0_ & ~0x20000000);
+        l1IcachePrefetchMisses_ = 0L;
+        bitField0_ = (bitField0_ & ~0x40000000);
+        llcLoads_ = 0L;
+        bitField0_ = (bitField0_ & ~0x80000000);
+        llcLoadMisses_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00000001);
+        llcStores_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00000002);
+        llcStoreMisses_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00000004);
+        llcPrefetches_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00000008);
+        llcPrefetchMisses_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00000010);
+        dtlbLoads_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00000020);
+        dtlbLoadMisses_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00000040);
+        dtlbStores_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00000080);
+        dtlbStoreMisses_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00000100);
+        dtlbPrefetches_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00000200);
+        dtlbPrefetchMisses_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00000400);
+        itlbLoads_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00000800);
+        itlbLoadMisses_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00001000);
+        branchLoads_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00002000);
+        branchLoadMisses_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00004000);
+        nodeLoads_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00008000);
+        nodeLoadMisses_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00010000);
+        nodeStores_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00020000);
+        nodeStoreMisses_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00040000);
+        nodePrefetches_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00080000);
+        nodePrefetchMisses_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00100000);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_PerfStatistics_descriptor;
+      }
+
+      public org.apache.mesos.Protos.PerfStatistics getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.PerfStatistics.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.PerfStatistics build() {
+        org.apache.mesos.Protos.PerfStatistics result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.PerfStatistics buildPartial() {
+        org.apache.mesos.Protos.PerfStatistics result = new org.apache.mesos.Protos.PerfStatistics(this);
+        int from_bitField0_ = bitField0_;
+        int from_bitField1_ = bitField1_;
+        int to_bitField0_ = 0;
+        int to_bitField1_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.timestamp_ = timestamp_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.duration_ = duration_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.cycles_ = cycles_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.stalledCyclesFrontend_ = stalledCyclesFrontend_;
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.stalledCyclesBackend_ = stalledCyclesBackend_;
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        result.instructions_ = instructions_;
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        result.cacheReferences_ = cacheReferences_;
+        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+          to_bitField0_ |= 0x00000080;
+        }
+        result.cacheMisses_ = cacheMisses_;
+        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
+          to_bitField0_ |= 0x00000100;
+        }
+        result.branches_ = branches_;
+        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
+          to_bitField0_ |= 0x00000200;
+        }
+        result.branchMisses_ = branchMisses_;
+        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
+          to_bitField0_ |= 0x00000400;
+        }
+        result.busCycles_ = busCycles_;
+        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
+          to_bitField0_ |= 0x00000800;
+        }
+        result.refCycles_ = refCycles_;
+        if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
+          to_bitField0_ |= 0x00001000;
+        }
+        result.cpuClock_ = cpuClock_;
+        if (((from_bitField0_ & 0x00002000) == 0x00002000)) {
+          to_bitField0_ |= 0x00002000;
+        }
+        result.taskClock_ = taskClock_;
+        if (((from_bitField0_ & 0x00004000) == 0x00004000)) {
+          to_bitField0_ |= 0x00004000;
+        }
+        result.pageFaults_ = pageFaults_;
+        if (((from_bitField0_ & 0x00008000) == 0x00008000)) {
+          to_bitField0_ |= 0x00008000;
+        }
+        result.minorFaults_ = minorFaults_;
+        if (((from_bitField0_ & 0x00010000) == 0x00010000)) {
+          to_bitField0_ |= 0x00010000;
+        }
+        result.majorFaults_ = majorFaults_;
+        if (((from_bitField0_ & 0x00020000) == 0x00020000)) {
+          to_bitField0_ |= 0x00020000;
+        }
+        result.contextSwitches_ = contextSwitches_;
+        if (((from_bitField0_ & 0x00040000) == 0x00040000)) {
+          to_bitField0_ |= 0x00040000;
+        }
+        result.cpuMigrations_ = cpuMigrations_;
+        if (((from_bitField0_ & 0x00080000) == 0x00080000)) {
+          to_bitField0_ |= 0x00080000;
+        }
+        result.alignmentFaults_ = alignmentFaults_;
+        if (((from_bitField0_ & 0x00100000) == 0x00100000)) {
+          to_bitField0_ |= 0x00100000;
+        }
+        result.emulationFaults_ = emulationFaults_;
+        if (((from_bitField0_ & 0x00200000) == 0x00200000)) {
+          to_bitField0_ |= 0x00200000;
+        }
+        result.l1DcacheLoads_ = l1DcacheLoads_;
+        if (((from_bitField0_ & 0x00400000) == 0x00400000)) {
+          to_bitField0_ |= 0x00400000;
+        }
+        result.l1DcacheLoadMisses_ = l1DcacheLoadMisses_;
+        if (((from_bitField0_ & 0x00800000) == 0x00800000)) {
+          to_bitField0_ |= 0x00800000;
+        }
+        result.l1DcacheStores_ = l1DcacheStores_;
+        if (((from_bitField0_ & 0x01000000) == 0x01000000)) {
+          to_bitField0_ |= 0x01000000;
+        }
+        result.l1DcacheStoreMisses_ = l1DcacheStoreMisses_;
+        if (((from_bitField0_ & 0x02000000) == 0x02000000)) {
+          to_bitField0_ |= 0x02000000;
+        }
+        result.l1DcachePrefetches_ = l1DcachePrefetches_;
+        if (((from_bitField0_ & 0x04000000) == 0x04000000)) {
+          to_bitField0_ |= 0x04000000;
+        }
+        result.l1DcachePrefetchMisses_ = l1DcachePrefetchMisses_;
+        if (((from_bitField0_ & 0x08000000) == 0x08000000)) {
+          to_bitField0_ |= 0x08000000;
+        }
+        result.l1IcacheLoads_ = l1IcacheLoads_;
+        if (((from_bitField0_ & 0x10000000) == 0x10000000)) {
+          to_bitField0_ |= 0x10000000;
+        }
+        result.l1IcacheLoadMisses_ = l1IcacheLoadMisses_;
+        if (((from_bitField0_ & 0x20000000) == 0x20000000)) {
+          to_bitField0_ |= 0x20000000;
+        }
+        result.l1IcachePrefetches_ = l1IcachePrefetches_;
+        if (((from_bitField0_ & 0x40000000) == 0x40000000)) {
+          to_bitField0_ |= 0x40000000;
+        }
+        result.l1IcachePrefetchMisses_ = l1IcachePrefetchMisses_;
+        if (((from_bitField0_ & 0x80000000) == 0x80000000)) {
+          to_bitField0_ |= 0x80000000;
+        }
+        result.llcLoads_ = llcLoads_;
+        if (((from_bitField1_ & 0x00000001) == 0x00000001)) {
+          to_bitField1_ |= 0x00000001;
+        }
+        result.llcLoadMisses_ = llcLoadMisses_;
+        if (((from_bitField1_ & 0x00000002) == 0x00000002)) {
+          to_bitField1_ |= 0x00000002;
+        }
+        result.llcStores_ = llcStores_;
+        if (((from_bitField1_ & 0x00000004) == 0x00000004)) {
+          to_bitField1_ |= 0x00000004;
+        }
+        result.llcStoreMisses_ = llcStoreMisses_;
+        if (((from_bitField1_ & 0x00000008) == 0x00000008)) {
+          to_bitField1_ |= 0x00000008;
+        }
+        result.llcPrefetches_ = llcPrefetches_;
+        if (((from_bitField1_ & 0x00000010) == 0x00000010)) {
+          to_bitField1_ |= 0x00000010;
+        }
+        result.llcPrefetchMisses_ = llcPrefetchMisses_;
+        if (((from_bitField1_ & 0x00000020) == 0x00000020)) {
+          to_bitField1_ |= 0x00000020;
+        }
+        result.dtlbLoads_ = dtlbLoads_;
+        if (((from_bitField1_ & 0x00000040) == 0x00000040)) {
+          to_bitField1_ |= 0x00000040;
+        }
+        result.dtlbLoadMisses_ = dtlbLoadMisses_;
+        if (((from_bitField1_ & 0x00000080) == 0x00000080)) {
+          to_bitField1_ |= 0x00000080;
+        }
+        result.dtlbStores_ = dtlbStores_;
+        if (((from_bitField1_ & 0x00000100) == 0x00000100)) {
+          to_bitField1_ |= 0x00000100;
+        }
+        result.dtlbStoreMisses_ = dtlbStoreMisses_;
+        if (((from_bitField1_ & 0x00000200) == 0x00000200)) {
+          to_bitField1_ |= 0x00000200;
+        }
+        result.dtlbPrefetches_ = dtlbPrefetches_;
+        if (((from_bitField1_ & 0x00000400) == 0x00000400)) {
+          to_bitField1_ |= 0x00000400;
+        }
+        result.dtlbPrefetchMisses_ = dtlbPrefetchMisses_;
+        if (((from_bitField1_ & 0x00000800) == 0x00000800)) {
+          to_bitField1_ |= 0x00000800;
+        }
+        result.itlbLoads_ = itlbLoads_;
+        if (((from_bitField1_ & 0x00001000) == 0x00001000)) {
+          to_bitField1_ |= 0x00001000;
+        }
+        result.itlbLoadMisses_ = itlbLoadMisses_;
+        if (((from_bitField1_ & 0x00002000) == 0x00002000)) {
+          to_bitField1_ |= 0x00002000;
+        }
+        result.branchLoads_ = branchLoads_;
+        if (((from_bitField1_ & 0x00004000) == 0x00004000)) {
+          to_bitField1_ |= 0x00004000;
+        }
+        result.branchLoadMisses_ = branchLoadMisses_;
+        if (((from_bitField1_ & 0x00008000) == 0x00008000)) {
+          to_bitField1_ |= 0x00008000;
+        }
+        result.nodeLoads_ = nodeLoads_;
+        if (((from_bitField1_ & 0x00010000) == 0x00010000)) {
+          to_bitField1_ |= 0x00010000;
+        }
+        result.nodeLoadMisses_ = nodeLoadMisses_;
+        if (((from_bitField1_ & 0x00020000) == 0x00020000)) {
+          to_bitField1_ |= 0x00020000;
+        }
+        result.nodeStores_ = nodeStores_;
+        if (((from_bitField1_ & 0x00040000) == 0x00040000)) {
+          to_bitField1_ |= 0x00040000;
+        }
+        result.nodeStoreMisses_ = nodeStoreMisses_;
+        if (((from_bitField1_ & 0x00080000) == 0x00080000)) {
+          to_bitField1_ |= 0x00080000;
+        }
+        result.nodePrefetches_ = nodePrefetches_;
+        if (((from_bitField1_ & 0x00100000) == 0x00100000)) {
+          to_bitField1_ |= 0x00100000;
+        }
+        result.nodePrefetchMisses_ = nodePrefetchMisses_;
+        result.bitField0_ = to_bitField0_;
+        result.bitField1_ = to_bitField1_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.PerfStatistics) {
+          return mergeFrom((org.apache.mesos.Protos.PerfStatistics)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.PerfStatistics other) {
+        if (other == org.apache.mesos.Protos.PerfStatistics.getDefaultInstance()) return this;
+        if (other.hasTimestamp()) {
+          setTimestamp(other.getTimestamp());
+        }
+        if (other.hasDuration()) {
+          setDuration(other.getDuration());
+        }
+        if (other.hasCycles()) {
+          setCycles(other.getCycles());
+        }
+        if (other.hasStalledCyclesFrontend()) {
+          setStalledCyclesFrontend(other.getStalledCyclesFrontend());
+        }
+        if (other.hasStalledCyclesBackend()) {
+          setStalledCyclesBackend(other.getStalledCyclesBackend());
+        }
+        if (other.hasInstructions()) {
+          setInstructions(other.getInstructions());
+        }
+        if (other.hasCacheReferences()) {
+          setCacheReferences(other.getCacheReferences());
+        }
+        if (other.hasCacheMisses()) {
+          setCacheMisses(other.getCacheMisses());
+        }
+        if (other.hasBranches()) {
+          setBranches(other.getBranches());
+        }
+        if (other.hasBranchMisses()) {
+          setBranchMisses(other.getBranchMisses());
+        }
+        if (other.hasBusCycles()) {
+          setBusCycles(other.getBusCycles());
+        }
+        if (other.hasRefCycles()) {
+          setRefCycles(other.getRefCycles());
+        }
+        if (other.hasCpuClock()) {
+          setCpuClock(other.getCpuClock());
+        }
+        if (other.hasTaskClock()) {
+          setTaskClock(other.getTaskClock());
+        }
+        if (other.hasPageFaults()) {
+          setPageFaults(other.getPageFaults());
+        }
+        if (other.hasMinorFaults()) {
+          setMinorFaults(other.getMinorFaults());
+        }
+        if (other.hasMajorFaults()) {
+          setMajorFaults(other.getMajorFaults());
+        }
+        if (other.hasContextSwitches()) {
+          setContextSwitches(other.getContextSwitches());
+        }
+        if (other.hasCpuMigrations()) {
+          setCpuMigrations(other.getCpuMigrations());
+        }
+        if (other.hasAlignmentFaults()) {
+          setAlignmentFaults(other.getAlignmentFaults());
+        }
+        if (other.hasEmulationFaults()) {
+          setEmulationFaults(other.getEmulationFaults());
+        }
+        if (other.hasL1DcacheLoads()) {
+          setL1DcacheLoads(other.getL1DcacheLoads());
+        }
+        if (other.hasL1DcacheLoadMisses()) {
+          setL1DcacheLoadMisses(other.getL1DcacheLoadMisses());
+        }
+        if (other.hasL1DcacheStores()) {
+          setL1DcacheStores(other.getL1DcacheStores());
+        }
+        if (other.hasL1DcacheStoreMisses()) {
+          setL1DcacheStoreMisses(other.getL1DcacheStoreMisses());
+        }
+        if (other.hasL1DcachePrefetches()) {
+          setL1DcachePrefetches(other.getL1DcachePrefetches());
+        }
+        if (other.hasL1DcachePrefetchMisses()) {
+          setL1DcachePrefetchMisses(other.getL1DcachePrefetchMisses());
+        }
+        if (other.hasL1IcacheLoads()) {
+          setL1IcacheLoads(other.getL1IcacheLoads());
+        }
+        if (other.hasL1IcacheLoadMisses()) {
+          setL1IcacheLoadMisses(other.getL1IcacheLoadMisses());
+        }
+        if (other.hasL1IcachePrefetches()) {
+          setL1IcachePrefetches(other.getL1IcachePrefetches());
+        }
+        if (other.hasL1IcachePrefetchMisses()) {
+          setL1IcachePrefetchMisses(other.getL1IcachePrefetchMisses());
+        }
+        if (other.hasLlcLoads()) {
+          setLlcLoads(other.getLlcLoads());
+        }
+        if (other.hasLlcLoadMisses()) {
+          setLlcLoadMisses(other.getLlcLoadMisses());
+        }
+        if (other.hasLlcStores()) {
+          setLlcStores(other.getLlcStores());
+        }
+        if (other.hasLlcStoreMisses()) {
+          setLlcStoreMisses(other.getLlcStoreMisses());
+        }
+        if (other.hasLlcPrefetches()) {
+          setLlcPrefetches(other.getLlcPrefetches());
+        }
+        if (other.hasLlcPrefetchMisses()) {
+          setLlcPrefetchMisses(other.getLlcPrefetchMisses());
+        }
+        if (other.hasDtlbLoads()) {
+          setDtlbLoads(other.getDtlbLoads());
+        }
+        if (other.hasDtlbLoadMisses()) {
+          setDtlbLoadMisses(other.getDtlbLoadMisses());
+        }
+        if (other.hasDtlbStores()) {
+          setDtlbStores(other.getDtlbStores());
+        }
+        if (other.hasDtlbStoreMisses()) {
+          setDtlbStoreMisses(other.getDtlbStoreMisses());
+        }
+        if (other.hasDtlbPrefetches()) {
+          setDtlbPrefetches(other.getDtlbPrefetches());
+        }
+        if (other.hasDtlbPrefetchMisses()) {
+          setDtlbPrefetchMisses(other.getDtlbPrefetchMisses());
+        }
+        if (other.hasItlbLoads()) {
+          setItlbLoads(other.getItlbLoads());
+        }
+        if (other.hasItlbLoadMisses()) {
+          setItlbLoadMisses(other.getItlbLoadMisses());
+        }
+        if (other.hasBranchLoads()) {
+          setBranchLoads(other.getBranchLoads());
+        }
+        if (other.hasBranchLoadMisses()) {
+          setBranchLoadMisses(other.getBranchLoadMisses());
+        }
+        if (other.hasNodeLoads()) {
+          setNodeLoads(other.getNodeLoads());
+        }
+        if (other.hasNodeLoadMisses()) {
+          setNodeLoadMisses(other.getNodeLoadMisses());
+        }
+        if (other.hasNodeStores()) {
+          setNodeStores(other.getNodeStores());
+        }
+        if (other.hasNodeStoreMisses()) {
+          setNodeStoreMisses(other.getNodeStoreMisses());
+        }
+        if (other.hasNodePrefetches()) {
+          setNodePrefetches(other.getNodePrefetches());
+        }
+        if (other.hasNodePrefetchMisses()) {
+          setNodePrefetchMisses(other.getNodePrefetchMisses());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasTimestamp()) {
+          
+          return false;
+        }
+        if (!hasDuration()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.PerfStatistics parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.PerfStatistics) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+      private int bitField1_;
+
+      // required double timestamp = 1;
+      private double timestamp_ ;
+      /**
+       * <code>required double timestamp = 1;</code>
+       *
+       * <pre>
+       * Start of sample interval, in seconds since the Epoch.
+       * </pre>
+       */
+      public boolean hasTimestamp() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required double timestamp = 1;</code>
+       *
+       * <pre>
+       * Start of sample interval, in seconds since the Epoch.
+       * </pre>
+       */
+      public double getTimestamp() {
+        return timestamp_;
+      }
+      /**
+       * <code>required double timestamp = 1;</code>
+       *
+       * <pre>
+       * Start of sample interval, in seconds since the Epoch.
+       * </pre>
+       */
+      public Builder setTimestamp(double value) {
+        bitField0_ |= 0x00000001;
+        timestamp_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required double timestamp = 1;</code>
+       *
+       * <pre>
+       * Start of sample interval, in seconds since the Epoch.
+       * </pre>
+       */
+      public Builder clearTimestamp() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        timestamp_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // required double duration = 2;
+      private double duration_ ;
+      /**
+       * <code>required double duration = 2;</code>
+       *
+       * <pre>
+       * Duration of sample interval, in seconds.
+       * </pre>
+       */
+      public boolean hasDuration() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required double duration = 2;</code>
+       *
+       * <pre>
+       * Duration of sample interval, in seconds.
+       * </pre>
+       */
+      public double getDuration() {
+        return duration_;
+      }
+      /**
+       * <code>required double duration = 2;</code>
+       *
+       * <pre>
+       * Duration of sample interval, in seconds.
+       * </pre>
+       */
+      public Builder setDuration(double value) {
+        bitField0_ |= 0x00000002;
+        duration_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required double duration = 2;</code>
+       *
+       * <pre>
+       * Duration of sample interval, in seconds.
+       * </pre>
+       */
+      public Builder clearDuration() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        duration_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 cycles = 3;
+      private long cycles_ ;
+      /**
+       * <code>optional uint64 cycles = 3;</code>
+       *
+       * <pre>
+       * Hardware event.
+       * </pre>
+       */
+      public boolean hasCycles() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional uint64 cycles = 3;</code>
+       *
+       * <pre>
+       * Hardware event.
+       * </pre>
+       */
+      public long getCycles() {
+        return cycles_;
+      }
+      /**
+       * <code>optional uint64 cycles = 3;</code>
+       *
+       * <pre>
+       * Hardware event.
+       * </pre>
+       */
+      public Builder setCycles(long value) {
+        bitField0_ |= 0x00000004;
+        cycles_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 cycles = 3;</code>
+       *
+       * <pre>
+       * Hardware event.
+       * </pre>
+       */
+      public Builder clearCycles() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        cycles_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 stalled_cycles_frontend = 4;
+      private long stalledCyclesFrontend_ ;
+      /**
+       * <code>optional uint64 stalled_cycles_frontend = 4;</code>
+       */
+      public boolean hasStalledCyclesFrontend() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional uint64 stalled_cycles_frontend = 4;</code>
+       */
+      public long getStalledCyclesFrontend() {
+        return stalledCyclesFrontend_;
+      }
+      /**
+       * <code>optional uint64 stalled_cycles_frontend = 4;</code>
+       */
+      public Builder setStalledCyclesFrontend(long value) {
+        bitField0_ |= 0x00000008;
+        stalledCyclesFrontend_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 stalled_cycles_frontend = 4;</code>
+       */
+      public Builder clearStalledCyclesFrontend() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        stalledCyclesFrontend_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 stalled_cycles_backend = 5;
+      private long stalledCyclesBackend_ ;
+      /**
+       * <code>optional uint64 stalled_cycles_backend = 5;</code>
+       */
+      public boolean hasStalledCyclesBackend() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional uint64 stalled_cycles_backend = 5;</code>
+       */
+      public long getStalledCyclesBackend() {
+        return stalledCyclesBackend_;
+      }
+      /**
+       * <code>optional uint64 stalled_cycles_backend = 5;</code>
+       */
+      public Builder setStalledCyclesBackend(long value) {
+        bitField0_ |= 0x00000010;
+        stalledCyclesBackend_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 stalled_cycles_backend = 5;</code>
+       */
+      public Builder clearStalledCyclesBackend() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        stalledCyclesBackend_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 instructions = 6;
+      private long instructions_ ;
+      /**
+       * <code>optional uint64 instructions = 6;</code>
+       */
+      public boolean hasInstructions() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional uint64 instructions = 6;</code>
+       */
+      public long getInstructions() {
+        return instructions_;
+      }
+      /**
+       * <code>optional uint64 instructions = 6;</code>
+       */
+      public Builder setInstructions(long value) {
+        bitField0_ |= 0x00000020;
+        instructions_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 instructions = 6;</code>
+       */
+      public Builder clearInstructions() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        instructions_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 cache_references = 7;
+      private long cacheReferences_ ;
+      /**
+       * <code>optional uint64 cache_references = 7;</code>
+       */
+      public boolean hasCacheReferences() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional uint64 cache_references = 7;</code>
+       */
+      public long getCacheReferences() {
+        return cacheReferences_;
+      }
+      /**
+       * <code>optional uint64 cache_references = 7;</code>
+       */
+      public Builder setCacheReferences(long value) {
+        bitField0_ |= 0x00000040;
+        cacheReferences_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 cache_references = 7;</code>
+       */
+      public Builder clearCacheReferences() {
+        bitField0_ = (bitField0_ & ~0x00000040);
+        cacheReferences_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 cache_misses = 8;
+      private long cacheMisses_ ;
+      /**
+       * <code>optional uint64 cache_misses = 8;</code>
+       */
+      public boolean hasCacheMisses() {
+        return ((bitField0_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional uint64 cache_misses = 8;</code>
+       */
+      public long getCacheMisses() {
+        return cacheMisses_;
+      }
+      /**
+       * <code>optional uint64 cache_misses = 8;</code>
+       */
+      public Builder setCacheMisses(long value) {
+        bitField0_ |= 0x00000080;
+        cacheMisses_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 cache_misses = 8;</code>
+       */
+      public Builder clearCacheMisses() {
+        bitField0_ = (bitField0_ & ~0x00000080);
+        cacheMisses_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 branches = 9;
+      private long branches_ ;
+      /**
+       * <code>optional uint64 branches = 9;</code>
+       */
+      public boolean hasBranches() {
+        return ((bitField0_ & 0x00000100) == 0x00000100);
+      }
+      /**
+       * <code>optional uint64 branches = 9;</code>
+       */
+      public long getBranches() {
+        return branches_;
+      }
+      /**
+       * <code>optional uint64 branches = 9;</code>
+       */
+      public Builder setBranches(long value) {
+        bitField0_ |= 0x00000100;
+        branches_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 branches = 9;</code>
+       */
+      public Builder clearBranches() {
+        bitField0_ = (bitField0_ & ~0x00000100);
+        branches_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 branch_misses = 10;
+      private long branchMisses_ ;
+      /**
+       * <code>optional uint64 branch_misses = 10;</code>
+       */
+      public boolean hasBranchMisses() {
+        return ((bitField0_ & 0x00000200) == 0x00000200);
+      }
+      /**
+       * <code>optional uint64 branch_misses = 10;</code>
+       */
+      public long getBranchMisses() {
+        return branchMisses_;
+      }
+      /**
+       * <code>optional uint64 branch_misses = 10;</code>
+       */
+      public Builder setBranchMisses(long value) {
+        bitField0_ |= 0x00000200;
+        branchMisses_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 branch_misses = 10;</code>
+       */
+      public Builder clearBranchMisses() {
+        bitField0_ = (bitField0_ & ~0x00000200);
+        branchMisses_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 bus_cycles = 11;
+      private long busCycles_ ;
+      /**
+       * <code>optional uint64 bus_cycles = 11;</code>
+       */
+      public boolean hasBusCycles() {
+        return ((bitField0_ & 0x00000400) == 0x00000400);
+      }
+      /**
+       * <code>optional uint64 bus_cycles = 11;</code>
+       */
+      public long getBusCycles() {
+        return busCycles_;
+      }
+      /**
+       * <code>optional uint64 bus_cycles = 11;</code>
+       */
+      public Builder setBusCycles(long value) {
+        bitField0_ |= 0x00000400;
+        busCycles_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 bus_cycles = 11;</code>
+       */
+      public Builder clearBusCycles() {
+        bitField0_ = (bitField0_ & ~0x00000400);
+        busCycles_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 ref_cycles = 12;
+      private long refCycles_ ;
+      /**
+       * <code>optional uint64 ref_cycles = 12;</code>
+       */
+      public boolean hasRefCycles() {
+        return ((bitField0_ & 0x00000800) == 0x00000800);
+      }
+      /**
+       * <code>optional uint64 ref_cycles = 12;</code>
+       */
+      public long getRefCycles() {
+        return refCycles_;
+      }
+      /**
+       * <code>optional uint64 ref_cycles = 12;</code>
+       */
+      public Builder setRefCycles(long value) {
+        bitField0_ |= 0x00000800;
+        refCycles_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 ref_cycles = 12;</code>
+       */
+      public Builder clearRefCycles() {
+        bitField0_ = (bitField0_ & ~0x00000800);
+        refCycles_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional double cpu_clock = 13;
+      private double cpuClock_ ;
+      /**
+       * <code>optional double cpu_clock = 13;</code>
+       *
+       * <pre>
+       * Software event.
+       * </pre>
+       */
+      public boolean hasCpuClock() {
+        return ((bitField0_ & 0x00001000) == 0x00001000);
+      }
+      /**
+       * <code>optional double cpu_clock = 13;</code>
+       *
+       * <pre>
+       * Software event.
+       * </pre>
+       */
+      public double getCpuClock() {
+        return cpuClock_;
+      }
+      /**
+       * <code>optional double cpu_clock = 13;</code>
+       *
+       * <pre>
+       * Software event.
+       * </pre>
+       */
+      public Builder setCpuClock(double value) {
+        bitField0_ |= 0x00001000;
+        cpuClock_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double cpu_clock = 13;</code>
+       *
+       * <pre>
+       * Software event.
+       * </pre>
+       */
+      public Builder clearCpuClock() {
+        bitField0_ = (bitField0_ & ~0x00001000);
+        cpuClock_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // optional double task_clock = 14;
+      private double taskClock_ ;
+      /**
+       * <code>optional double task_clock = 14;</code>
+       */
+      public boolean hasTaskClock() {
+        return ((bitField0_ & 0x00002000) == 0x00002000);
+      }
+      /**
+       * <code>optional double task_clock = 14;</code>
+       */
+      public double getTaskClock() {
+        return taskClock_;
+      }
+      /**
+       * <code>optional double task_clock = 14;</code>
+       */
+      public Builder setTaskClock(double value) {
+        bitField0_ |= 0x00002000;
+        taskClock_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double task_clock = 14;</code>
+       */
+      public Builder clearTaskClock() {
+        bitField0_ = (bitField0_ & ~0x00002000);
+        taskClock_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 page_faults = 15;
+      private long pageFaults_ ;
+      /**
+       * <code>optional uint64 page_faults = 15;</code>
+       */
+      public boolean hasPageFaults() {
+        return ((bitField0_ & 0x00004000) == 0x00004000);
+      }
+      /**
+       * <code>optional uint64 page_faults = 15;</code>
+       */
+      public long getPageFaults() {
+        return pageFaults_;
+      }
+      /**
+       * <code>optional uint64 page_faults = 15;</code>
+       */
+      public Builder setPageFaults(long value) {
+        bitField0_ |= 0x00004000;
+        pageFaults_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 page_faults = 15;</code>
+       */
+      public Builder clearPageFaults() {
+        bitField0_ = (bitField0_ & ~0x00004000);
+        pageFaults_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 minor_faults = 16;
+      private long minorFaults_ ;
+      /**
+       * <code>optional uint64 minor_faults = 16;</code>
+       */
+      public boolean hasMinorFaults() {
+        return ((bitField0_ & 0x00008000) == 0x00008000);
+      }
+      /**
+       * <code>optional uint64 minor_faults = 16;</code>
+       */
+      public long getMinorFaults() {
+        return minorFaults_;
+      }
+      /**
+       * <code>optional uint64 minor_faults = 16;</code>
+       */
+      public Builder setMinorFaults(long value) {
+        bitField0_ |= 0x00008000;
+        minorFaults_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 minor_faults = 16;</code>
+       */
+      public Builder clearMinorFaults() {
+        bitField0_ = (bitField0_ & ~0x00008000);
+        minorFaults_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 major_faults = 17;
+      private long majorFaults_ ;
+      /**
+       * <code>optional uint64 major_faults = 17;</code>
+       */
+      public boolean hasMajorFaults() {
+        return ((bitField0_ & 0x00010000) == 0x00010000);
+      }
+      /**
+       * <code>optional uint64 major_faults = 17;</code>
+       */
+      public long getMajorFaults() {
+        return majorFaults_;
+      }
+      /**
+       * <code>optional uint64 major_faults = 17;</code>
+       */
+      public Builder setMajorFaults(long value) {
+        bitField0_ |= 0x00010000;
+        majorFaults_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 major_faults = 17;</code>
+       */
+      public Builder clearMajorFaults() {
+        bitField0_ = (bitField0_ & ~0x00010000);
+        majorFaults_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 context_switches = 18;
+      private long contextSwitches_ ;
+      /**
+       * <code>optional uint64 context_switches = 18;</code>
+       */
+      public boolean hasContextSwitches() {
+        return ((bitField0_ & 0x00020000) == 0x00020000);
+      }
+      /**
+       * <code>optional uint64 context_switches = 18;</code>
+       */
+      public long getContextSwitches() {
+        return contextSwitches_;
+      }
+      /**
+       * <code>optional uint64 context_switches = 18;</code>
+       */
+      public Builder setContextSwitches(long value) {
+        bitField0_ |= 0x00020000;
+        contextSwitches_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 context_switches = 18;</code>
+       */
+      public Builder clearContextSwitches() {
+        bitField0_ = (bitField0_ & ~0x00020000);
+        contextSwitches_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 cpu_migrations = 19;
+      private long cpuMigrations_ ;
+      /**
+       * <code>optional uint64 cpu_migrations = 19;</code>
+       */
+      public boolean hasCpuMigrations() {
+        return ((bitField0_ & 0x00040000) == 0x00040000);
+      }
+      /**
+       * <code>optional uint64 cpu_migrations = 19;</code>
+       */
+      public long getCpuMigrations() {
+        return cpuMigrations_;
+      }
+      /**
+       * <code>optional uint64 cpu_migrations = 19;</code>
+       */
+      public Builder setCpuMigrations(long value) {
+        bitField0_ |= 0x00040000;
+        cpuMigrations_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 cpu_migrations = 19;</code>
+       */
+      public Builder clearCpuMigrations() {
+        bitField0_ = (bitField0_ & ~0x00040000);
+        cpuMigrations_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 alignment_faults = 20;
+      private long alignmentFaults_ ;
+      /**
+       * <code>optional uint64 alignment_faults = 20;</code>
+       */
+      public boolean hasAlignmentFaults() {
+        return ((bitField0_ & 0x00080000) == 0x00080000);
+      }
+      /**
+       * <code>optional uint64 alignment_faults = 20;</code>
+       */
+      public long getAlignmentFaults() {
+        return alignmentFaults_;
+      }
+      /**
+       * <code>optional uint64 alignment_faults = 20;</code>
+       */
+      public Builder setAlignmentFaults(long value) {
+        bitField0_ |= 0x00080000;
+        alignmentFaults_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 alignment_faults = 20;</code>
+       */
+      public Builder clearAlignmentFaults() {
+        bitField0_ = (bitField0_ & ~0x00080000);
+        alignmentFaults_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 emulation_faults = 21;
+      private long emulationFaults_ ;
+      /**
+       * <code>optional uint64 emulation_faults = 21;</code>
+       */
+      public boolean hasEmulationFaults() {
+        return ((bitField0_ & 0x00100000) == 0x00100000);
+      }
+      /**
+       * <code>optional uint64 emulation_faults = 21;</code>
+       */
+      public long getEmulationFaults() {
+        return emulationFaults_;
+      }
+      /**
+       * <code>optional uint64 emulation_faults = 21;</code>
+       */
+      public Builder setEmulationFaults(long value) {
+        bitField0_ |= 0x00100000;
+        emulationFaults_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 emulation_faults = 21;</code>
+       */
+      public Builder clearEmulationFaults() {
+        bitField0_ = (bitField0_ & ~0x00100000);
+        emulationFaults_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 l1_dcache_loads = 22;
+      private long l1DcacheLoads_ ;
+      /**
+       * <code>optional uint64 l1_dcache_loads = 22;</code>
+       *
+       * <pre>
+       * Hardware cache event.
+       * </pre>
+       */
+      public boolean hasL1DcacheLoads() {
+        return ((bitField0_ & 0x00200000) == 0x00200000);
+      }
+      /**
+       * <code>optional uint64 l1_dcache_loads = 22;</code>
+       *
+       * <pre>
+       * Hardware cache event.
+       * </pre>
+       */
+      public long getL1DcacheLoads() {
+        return l1DcacheLoads_;
+      }
+      /**
+       * <code>optional uint64 l1_dcache_loads = 22;</code>
+       *
+       * <pre>
+       * Hardware cache event.
+       * </pre>
+       */
+      public Builder setL1DcacheLoads(long value) {
+        bitField0_ |= 0x00200000;
+        l1DcacheLoads_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 l1_dcache_loads = 22;</code>
+       *
+       * <pre>
+       * Hardware cache event.
+       * </pre>
+       */
+      public Builder clearL1DcacheLoads() {
+        bitField0_ = (bitField0_ & ~0x00200000);
+        l1DcacheLoads_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 l1_dcache_load_misses = 23;
+      private long l1DcacheLoadMisses_ ;
+      /**
+       * <code>optional uint64 l1_dcache_load_misses = 23;</code>
+       */
+      public boolean hasL1DcacheLoadMisses() {
+        return ((bitField0_ & 0x00400000) == 0x00400000);
+      }
+      /**
+       * <code>optional uint64 l1_dcache_load_misses = 23;</code>
+       */
+      public long getL1DcacheLoadMisses() {
+        return l1DcacheLoadMisses_;
+      }
+      /**
+       * <code>optional uint64 l1_dcache_load_misses = 23;</code>
+       */
+      public Builder setL1DcacheLoadMisses(long value) {
+        bitField0_ |= 0x00400000;
+        l1DcacheLoadMisses_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 l1_dcache_load_misses = 23;</code>
+       */
+      public Builder clearL1DcacheLoadMisses() {
+        bitField0_ = (bitField0_ & ~0x00400000);
+        l1DcacheLoadMisses_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 l1_dcache_stores = 24;
+      private long l1DcacheStores_ ;
+      /**
+       * <code>optional uint64 l1_dcache_stores = 24;</code>
+       */
+      public boolean hasL1DcacheStores() {
+        return ((bitField0_ & 0x00800000) == 0x00800000);
+      }
+      /**
+       * <code>optional uint64 l1_dcache_stores = 24;</code>
+       */
+      public long getL1DcacheStores() {
+        return l1DcacheStores_;
+      }
+      /**
+       * <code>optional uint64 l1_dcache_stores = 24;</code>
+       */
+      public Builder setL1DcacheStores(long value) {
+        bitField0_ |= 0x00800000;
+        l1DcacheStores_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 l1_dcache_stores = 24;</code>
+       */
+      public Builder clearL1DcacheStores() {
+        bitField0_ = (bitField0_ & ~0x00800000);
+        l1DcacheStores_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 l1_dcache_store_misses = 25;
+      private long l1DcacheStoreMisses_ ;
+      /**
+       * <code>optional uint64 l1_dcache_store_misses = 25;</code>
+       */
+      public boolean hasL1DcacheStoreMisses() {
+        return ((bitField0_ & 0x01000000) == 0x01000000);
+      }
+      /**
+       * <code>optional uint64 l1_dcache_store_misses = 25;</code>
+       */
+      public long getL1DcacheStoreMisses() {
+        return l1DcacheStoreMisses_;
+      }
+      /**
+       * <code>optional uint64 l1_dcache_store_misses = 25;</code>
+       */
+      public Builder setL1DcacheStoreMisses(long value) {
+        bitField0_ |= 0x01000000;
+        l1DcacheStoreMisses_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 l1_dcache_store_misses = 25;</code>
+       */
+      public Builder clearL1DcacheStoreMisses() {
+        bitField0_ = (bitField0_ & ~0x01000000);
+        l1DcacheStoreMisses_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 l1_dcache_prefetches = 26;
+      private long l1DcachePrefetches_ ;
+      /**
+       * <code>optional uint64 l1_dcache_prefetches = 26;</code>
+       */
+      public boolean hasL1DcachePrefetches() {
+        return ((bitField0_ & 0x02000000) == 0x02000000);
+      }
+      /**
+       * <code>optional uint64 l1_dcache_prefetches = 26;</code>
+       */
+      public long getL1DcachePrefetches() {
+        return l1DcachePrefetches_;
+      }
+      /**
+       * <code>optional uint64 l1_dcache_prefetches = 26;</code>
+       */
+      public Builder setL1DcachePrefetches(long value) {
+        bitField0_ |= 0x02000000;
+        l1DcachePrefetches_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 l1_dcache_prefetches = 26;</code>
+       */
+      public Builder clearL1DcachePrefetches() {
+        bitField0_ = (bitField0_ & ~0x02000000);
+        l1DcachePrefetches_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 l1_dcache_prefetch_misses = 27;
+      private long l1DcachePrefetchMisses_ ;
+      /**
+       * <code>optional uint64 l1_dcache_prefetch_misses = 27;</code>
+       */
+      public boolean hasL1DcachePrefetchMisses() {
+        return ((bitField0_ & 0x04000000) == 0x04000000);
+      }
+      /**
+       * <code>optional uint64 l1_dcache_prefetch_misses = 27;</code>
+       */
+      public long getL1DcachePrefetchMisses() {
+        return l1DcachePrefetchMisses_;
+      }
+      /**
+       * <code>optional uint64 l1_dcache_prefetch_misses = 27;</code>
+       */
+      public Builder setL1DcachePrefetchMisses(long value) {
+        bitField0_ |= 0x04000000;
+        l1DcachePrefetchMisses_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 l1_dcache_prefetch_misses = 27;</code>
+       */
+      public Builder clearL1DcachePrefetchMisses() {
+        bitField0_ = (bitField0_ & ~0x04000000);
+        l1DcachePrefetchMisses_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 l1_icache_loads = 28;
+      private long l1IcacheLoads_ ;
+      /**
+       * <code>optional uint64 l1_icache_loads = 28;</code>
+       */
+      public boolean hasL1IcacheLoads() {
+        return ((bitField0_ & 0x08000000) == 0x08000000);
+      }
+      /**
+       * <code>optional uint64 l1_icache_loads = 28;</code>
+       */
+      public long getL1IcacheLoads() {
+        return l1IcacheLoads_;
+      }
+      /**
+       * <code>optional uint64 l1_icache_loads = 28;</code>
+       */
+      public Builder setL1IcacheLoads(long value) {
+        bitField0_ |= 0x08000000;
+        l1IcacheLoads_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 l1_icache_loads = 28;</code>
+       */
+      public Builder clearL1IcacheLoads() {
+        bitField0_ = (bitField0_ & ~0x08000000);
+        l1IcacheLoads_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 l1_icache_load_misses = 29;
+      private long l1IcacheLoadMisses_ ;
+      /**
+       * <code>optional uint64 l1_icache_load_misses = 29;</code>
+       */
+      public boolean hasL1IcacheLoadMisses() {
+        return ((bitField0_ & 0x10000000) == 0x10000000);
+      }
+      /**
+       * <code>optional uint64 l1_icache_load_misses = 29;</code>
+       */
+      public long getL1IcacheLoadMisses() {
+        return l1IcacheLoadMisses_;
+      }
+      /**
+       * <code>optional uint64 l1_icache_load_misses = 29;</code>
+       */
+      public Builder setL1IcacheLoadMisses(long value) {
+        bitField0_ |= 0x10000000;
+        l1IcacheLoadMisses_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 l1_icache_load_misses = 29;</code>
+       */
+      public Builder clearL1IcacheLoadMisses() {
+        bitField0_ = (bitField0_ & ~0x10000000);
+        l1IcacheLoadMisses_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 l1_icache_prefetches = 30;
+      private long l1IcachePrefetches_ ;
+      /**
+       * <code>optional uint64 l1_icache_prefetches = 30;</code>
+       */
+      public boolean hasL1IcachePrefetches() {
+        return ((bitField0_ & 0x20000000) == 0x20000000);
+      }
+      /**
+       * <code>optional uint64 l1_icache_prefetches = 30;</code>
+       */
+      public long getL1IcachePrefetches() {
+        return l1IcachePrefetches_;
+      }
+      /**
+       * <code>optional uint64 l1_icache_prefetches = 30;</code>
+       */
+      public Builder setL1IcachePrefetches(long value) {
+        bitField0_ |= 0x20000000;
+        l1IcachePrefetches_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 l1_icache_prefetches = 30;</code>
+       */
+      public Builder clearL1IcachePrefetches() {
+        bitField0_ = (bitField0_ & ~0x20000000);
+        l1IcachePrefetches_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 l1_icache_prefetch_misses = 31;
+      private long l1IcachePrefetchMisses_ ;
+      /**
+       * <code>optional uint64 l1_icache_prefetch_misses = 31;</code>
+       */
+      public boolean hasL1IcachePrefetchMisses() {
+        return ((bitField0_ & 0x40000000) == 0x40000000);
+      }
+      /**
+       * <code>optional uint64 l1_icache_prefetch_misses = 31;</code>
+       */
+      public long getL1IcachePrefetchMisses() {
+        return l1IcachePrefetchMisses_;
+      }
+      /**
+       * <code>optional uint64 l1_icache_prefetch_misses = 31;</code>
+       */
+      public Builder setL1IcachePrefetchMisses(long value) {
+        bitField0_ |= 0x40000000;
+        l1IcachePrefetchMisses_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 l1_icache_prefetch_misses = 31;</code>
+       */
+      public Builder clearL1IcachePrefetchMisses() {
+        bitField0_ = (bitField0_ & ~0x40000000);
+        l1IcachePrefetchMisses_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 llc_loads = 32;
+      private long llcLoads_ ;
+      /**
+       * <code>optional uint64 llc_loads = 32;</code>
+       */
+      public boolean hasLlcLoads() {
+        return ((bitField0_ & 0x80000000) == 0x80000000);
+      }
+      /**
+       * <code>optional uint64 llc_loads = 32;</code>
+       */
+      public long getLlcLoads() {
+        return llcLoads_;
+      }
+      /**
+       * <code>optional uint64 llc_loads = 32;</code>
+       */
+      public Builder setLlcLoads(long value) {
+        bitField0_ |= 0x80000000;
+        llcLoads_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 llc_loads = 32;</code>
+       */
+      public Builder clearLlcLoads() {
+        bitField0_ = (bitField0_ & ~0x80000000);
+        llcLoads_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 llc_load_misses = 33;
+      private long llcLoadMisses_ ;
+      /**
+       * <code>optional uint64 llc_load_misses = 33;</code>
+       */
+      public boolean hasLlcLoadMisses() {
+        return ((bitField1_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional uint64 llc_load_misses = 33;</code>
+       */
+      public long getLlcLoadMisses() {
+        return llcLoadMisses_;
+      }
+      /**
+       * <code>optional uint64 llc_load_misses = 33;</code>
+       */
+      public Builder setLlcLoadMisses(long value) {
+        bitField1_ |= 0x00000001;
+        llcLoadMisses_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 llc_load_misses = 33;</code>
+       */
+      public Builder clearLlcLoadMisses() {
+        bitField1_ = (bitField1_ & ~0x00000001);
+        llcLoadMisses_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 llc_stores = 34;
+      private long llcStores_ ;
+      /**
+       * <code>optional uint64 llc_stores = 34;</code>
+       */
+      public boolean hasLlcStores() {
+        return ((bitField1_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional uint64 llc_stores = 34;</code>
+       */
+      public long getLlcStores() {
+        return llcStores_;
+      }
+      /**
+       * <code>optional uint64 llc_stores = 34;</code>
+       */
+      public Builder setLlcStores(long value) {
+        bitField1_ |= 0x00000002;
+        llcStores_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 llc_stores = 34;</code>
+       */
+      public Builder clearLlcStores() {
+        bitField1_ = (bitField1_ & ~0x00000002);
+        llcStores_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 llc_store_misses = 35;
+      private long llcStoreMisses_ ;
+      /**
+       * <code>optional uint64 llc_store_misses = 35;</code>
+       */
+      public boolean hasLlcStoreMisses() {
+        return ((bitField1_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional uint64 llc_store_misses = 35;</code>
+       */
+      public long getLlcStoreMisses() {
+        return llcStoreMisses_;
+      }
+      /**
+       * <code>optional uint64 llc_store_misses = 35;</code>
+       */
+      public Builder setLlcStoreMisses(long value) {
+        bitField1_ |= 0x00000004;
+        llcStoreMisses_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 llc_store_misses = 35;</code>
+       */
+      public Builder clearLlcStoreMisses() {
+        bitField1_ = (bitField1_ & ~0x00000004);
+        llcStoreMisses_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 llc_prefetches = 36;
+      private long llcPrefetches_ ;
+      /**
+       * <code>optional uint64 llc_prefetches = 36;</code>
+       */
+      public boolean hasLlcPrefetches() {
+        return ((bitField1_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional uint64 llc_prefetches = 36;</code>
+       */
+      public long getLlcPrefetches() {
+        return llcPrefetches_;
+      }
+      /**
+       * <code>optional uint64 llc_prefetches = 36;</code>
+       */
+      public Builder setLlcPrefetches(long value) {
+        bitField1_ |= 0x00000008;
+        llcPrefetches_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 llc_prefetches = 36;</code>
+       */
+      public Builder clearLlcPrefetches() {
+        bitField1_ = (bitField1_ & ~0x00000008);
+        llcPrefetches_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 llc_prefetch_misses = 37;
+      private long llcPrefetchMisses_ ;
+      /**
+       * <code>optional uint64 llc_prefetch_misses = 37;</code>
+       */
+      public boolean hasLlcPrefetchMisses() {
+        return ((bitField1_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional uint64 llc_prefetch_misses = 37;</code>
+       */
+      public long getLlcPrefetchMisses() {
+        return llcPrefetchMisses_;
+      }
+      /**
+       * <code>optional uint64 llc_prefetch_misses = 37;</code>
+       */
+      public Builder setLlcPrefetchMisses(long value) {
+        bitField1_ |= 0x00000010;
+        llcPrefetchMisses_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 llc_prefetch_misses = 37;</code>
+       */
+      public Builder clearLlcPrefetchMisses() {
+        bitField1_ = (bitField1_ & ~0x00000010);
+        llcPrefetchMisses_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 dtlb_loads = 38;
+      private long dtlbLoads_ ;
+      /**
+       * <code>optional uint64 dtlb_loads = 38;</code>
+       */
+      public boolean hasDtlbLoads() {
+        return ((bitField1_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional uint64 dtlb_loads = 38;</code>
+       */
+      public long getDtlbLoads() {
+        return dtlbLoads_;
+      }
+      /**
+       * <code>optional uint64 dtlb_loads = 38;</code>
+       */
+      public Builder setDtlbLoads(long value) {
+        bitField1_ |= 0x00000020;
+        dtlbLoads_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 dtlb_loads = 38;</code>
+       */
+      public Builder clearDtlbLoads() {
+        bitField1_ = (bitField1_ & ~0x00000020);
+        dtlbLoads_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 dtlb_load_misses = 39;
+      private long dtlbLoadMisses_ ;
+      /**
+       * <code>optional uint64 dtlb_load_misses = 39;</code>
+       */
+      public boolean hasDtlbLoadMisses() {
+        return ((bitField1_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional uint64 dtlb_load_misses = 39;</code>
+       */
+      public long getDtlbLoadMisses() {
+        return dtlbLoadMisses_;
+      }
+      /**
+       * <code>optional uint64 dtlb_load_misses = 39;</code>
+       */
+      public Builder setDtlbLoadMisses(long value) {
+        bitField1_ |= 0x00000040;
+        dtlbLoadMisses_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 dtlb_load_misses = 39;</code>
+       */
+      public Builder clearDtlbLoadMisses() {
+        bitField1_ = (bitField1_ & ~0x00000040);
+        dtlbLoadMisses_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 dtlb_stores = 40;
+      private long dtlbStores_ ;
+      /**
+       * <code>optional uint64 dtlb_stores = 40;</code>
+       */
+      public boolean hasDtlbStores() {
+        return ((bitField1_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional uint64 dtlb_stores = 40;</code>
+       */
+      public long getDtlbStores() {
+        return dtlbStores_;
+      }
+      /**
+       * <code>optional uint64 dtlb_stores = 40;</code>
+       */
+      public Builder setDtlbStores(long value) {
+        bitField1_ |= 0x00000080;
+        dtlbStores_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 dtlb_stores = 40;</code>
+       */
+      public Builder clearDtlbStores() {
+        bitField1_ = (bitField1_ & ~0x00000080);
+        dtlbStores_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 dtlb_store_misses = 41;
+      private long dtlbStoreMisses_ ;
+      /**
+       * <code>optional uint64 dtlb_store_misses = 41;</code>
+       */
+      public boolean hasDtlbStoreMisses() {
+        return ((bitField1_ & 0x00000100) == 0x00000100);
+      }
+      /**
+       * <code>optional uint64 dtlb_store_misses = 41;</code>
+       */
+      public long getDtlbStoreMisses() {
+        return dtlbStoreMisses_;
+      }
+      /**
+       * <code>optional uint64 dtlb_store_misses = 41;</code>
+       */
+      public Builder setDtlbStoreMisses(long value) {
+        bitField1_ |= 0x00000100;
+        dtlbStoreMisses_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 dtlb_store_misses = 41;</code>
+       */
+      public Builder clearDtlbStoreMisses() {
+        bitField1_ = (bitField1_ & ~0x00000100);
+        dtlbStoreMisses_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 dtlb_prefetches = 42;
+      private long dtlbPrefetches_ ;
+      /**
+       * <code>optional uint64 dtlb_prefetches = 42;</code>
+       */
+      public boolean hasDtlbPrefetches() {
+        return ((bitField1_ & 0x00000200) == 0x00000200);
+      }
+      /**
+       * <code>optional uint64 dtlb_prefetches = 42;</code>
+       */
+      public long getDtlbPrefetches() {
+        return dtlbPrefetches_;
+      }
+      /**
+       * <code>optional uint64 dtlb_prefetches = 42;</code>
+       */
+      public Builder setDtlbPrefetches(long value) {
+        bitField1_ |= 0x00000200;
+        dtlbPrefetches_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 dtlb_prefetches = 42;</code>
+       */
+      public Builder clearDtlbPrefetches() {
+        bitField1_ = (bitField1_ & ~0x00000200);
+        dtlbPrefetches_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 dtlb_prefetch_misses = 43;
+      private long dtlbPrefetchMisses_ ;
+      /**
+       * <code>optional uint64 dtlb_prefetch_misses = 43;</code>
+       */
+      public boolean hasDtlbPrefetchMisses() {
+        return ((bitField1_ & 0x00000400) == 0x00000400);
+      }
+      /**
+       * <code>optional uint64 dtlb_prefetch_misses = 43;</code>
+       */
+      public long getDtlbPrefetchMisses() {
+        return dtlbPrefetchMisses_;
+      }
+      /**
+       * <code>optional uint64 dtlb_prefetch_misses = 43;</code>
+       */
+      public Builder setDtlbPrefetchMisses(long value) {
+        bitField1_ |= 0x00000400;
+        dtlbPrefetchMisses_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 dtlb_prefetch_misses = 43;</code>
+       */
+      public Builder clearDtlbPrefetchMisses() {
+        bitField1_ = (bitField1_ & ~0x00000400);
+        dtlbPrefetchMisses_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 itlb_loads = 44;
+      private long itlbLoads_ ;
+      /**
+       * <code>optional uint64 itlb_loads = 44;</code>
+       */
+      public boolean hasItlbLoads() {
+        return ((bitField1_ & 0x00000800) == 0x00000800);
+      }
+      /**
+       * <code>optional uint64 itlb_loads = 44;</code>
+       */
+      public long getItlbLoads() {
+        return itlbLoads_;
+      }
+      /**
+       * <code>optional uint64 itlb_loads = 44;</code>
+       */
+      public Builder setItlbLoads(long value) {
+        bitField1_ |= 0x00000800;
+        itlbLoads_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 itlb_loads = 44;</code>
+       */
+      public Builder clearItlbLoads() {
+        bitField1_ = (bitField1_ & ~0x00000800);
+        itlbLoads_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 itlb_load_misses = 45;
+      private long itlbLoadMisses_ ;
+      /**
+       * <code>optional uint64 itlb_load_misses = 45;</code>
+       */
+      public boolean hasItlbLoadMisses() {
+        return ((bitField1_ & 0x00001000) == 0x00001000);
+      }
+      /**
+       * <code>optional uint64 itlb_load_misses = 45;</code>
+       */
+      public long getItlbLoadMisses() {
+        return itlbLoadMisses_;
+      }
+      /**
+       * <code>optional uint64 itlb_load_misses = 45;</code>
+       */
+      public Builder setItlbLoadMisses(long value) {
+        bitField1_ |= 0x00001000;
+        itlbLoadMisses_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 itlb_load_misses = 45;</code>
+       */
+      public Builder clearItlbLoadMisses() {
+        bitField1_ = (bitField1_ & ~0x00001000);
+        itlbLoadMisses_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 branch_loads = 46;
+      private long branchLoads_ ;
+      /**
+       * <code>optional uint64 branch_loads = 46;</code>
+       */
+      public boolean hasBranchLoads() {
+        return ((bitField1_ & 0x00002000) == 0x00002000);
+      }
+      /**
+       * <code>optional uint64 branch_loads = 46;</code>
+       */
+      public long getBranchLoads() {
+        return branchLoads_;
+      }
+      /**
+       * <code>optional uint64 branch_loads = 46;</code>
+       */
+      public Builder setBranchLoads(long value) {
+        bitField1_ |= 0x00002000;
+        branchLoads_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 branch_loads = 46;</code>
+       */
+      public Builder clearBranchLoads() {
+        bitField1_ = (bitField1_ & ~0x00002000);
+        branchLoads_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 branch_load_misses = 47;
+      private long branchLoadMisses_ ;
+      /**
+       * <code>optional uint64 branch_load_misses = 47;</code>
+       */
+      public boolean hasBranchLoadMisses() {
+        return ((bitField1_ & 0x00004000) == 0x00004000);
+      }
+      /**
+       * <code>optional uint64 branch_load_misses = 47;</code>
+       */
+      public long getBranchLoadMisses() {
+        return branchLoadMisses_;
+      }
+      /**
+       * <code>optional uint64 branch_load_misses = 47;</code>
+       */
+      public Builder setBranchLoadMisses(long value) {
+        bitField1_ |= 0x00004000;
+        branchLoadMisses_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 branch_load_misses = 47;</code>
+       */
+      public Builder clearBranchLoadMisses() {
+        bitField1_ = (bitField1_ & ~0x00004000);
+        branchLoadMisses_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 node_loads = 48;
+      private long nodeLoads_ ;
+      /**
+       * <code>optional uint64 node_loads = 48;</code>
+       */
+      public boolean hasNodeLoads() {
+        return ((bitField1_ & 0x00008000) == 0x00008000);
+      }
+      /**
+       * <code>optional uint64 node_loads = 48;</code>
+       */
+      public long getNodeLoads() {
+        return nodeLoads_;
+      }
+      /**
+       * <code>optional uint64 node_loads = 48;</code>
+       */
+      public Builder setNodeLoads(long value) {
+        bitField1_ |= 0x00008000;
+        nodeLoads_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 node_loads = 48;</code>
+       */
+      public Builder clearNodeLoads() {
+        bitField1_ = (bitField1_ & ~0x00008000);
+        nodeLoads_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 node_load_misses = 49;
+      private long nodeLoadMisses_ ;
+      /**
+       * <code>optional uint64 node_load_misses = 49;</code>
+       */
+      public boolean hasNodeLoadMisses() {
+        return ((bitField1_ & 0x00010000) == 0x00010000);
+      }
+      /**
+       * <code>optional uint64 node_load_misses = 49;</code>
+       */
+      public long getNodeLoadMisses() {
+        return nodeLoadMisses_;
+      }
+      /**
+       * <code>optional uint64 node_load_misses = 49;</code>
+       */
+      public Builder setNodeLoadMisses(long value) {
+        bitField1_ |= 0x00010000;
+        nodeLoadMisses_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 node_load_misses = 49;</code>
+       */
+      public Builder clearNodeLoadMisses() {
+        bitField1_ = (bitField1_ & ~0x00010000);
+        nodeLoadMisses_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 node_stores = 50;
+      private long nodeStores_ ;
+      /**
+       * <code>optional uint64 node_stores = 50;</code>
+       */
+      public boolean hasNodeStores() {
+        return ((bitField1_ & 0x00020000) == 0x00020000);
+      }
+      /**
+       * <code>optional uint64 node_stores = 50;</code>
+       */
+      public long getNodeStores() {
+        return nodeStores_;
+      }
+      /**
+       * <code>optional uint64 node_stores = 50;</code>
+       */
+      public Builder setNodeStores(long value) {
+        bitField1_ |= 0x00020000;
+        nodeStores_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 node_stores = 50;</code>
+       */
+      public Builder clearNodeStores() {
+        bitField1_ = (bitField1_ & ~0x00020000);
+        nodeStores_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 node_store_misses = 51;
+      private long nodeStoreMisses_ ;
+      /**
+       * <code>optional uint64 node_store_misses = 51;</code>
+       */
+      public boolean hasNodeStoreMisses() {
+        return ((bitField1_ & 0x00040000) == 0x00040000);
+      }
+      /**
+       * <code>optional uint64 node_store_misses = 51;</code>
+       */
+      public long getNodeStoreMisses() {
+        return nodeStoreMisses_;
+      }
+      /**
+       * <code>optional uint64 node_store_misses = 51;</code>
+       */
+      public Builder setNodeStoreMisses(long value) {
+        bitField1_ |= 0x00040000;
+        nodeStoreMisses_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 node_store_misses = 51;</code>
+       */
+      public Builder clearNodeStoreMisses() {
+        bitField1_ = (bitField1_ & ~0x00040000);
+        nodeStoreMisses_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 node_prefetches = 52;
+      private long nodePrefetches_ ;
+      /**
+       * <code>optional uint64 node_prefetches = 52;</code>
+       */
+      public boolean hasNodePrefetches() {
+        return ((bitField1_ & 0x00080000) == 0x00080000);
+      }
+      /**
+       * <code>optional uint64 node_prefetches = 52;</code>
+       */
+      public long getNodePrefetches() {
+        return nodePrefetches_;
+      }
+      /**
+       * <code>optional uint64 node_prefetches = 52;</code>
+       */
+      public Builder setNodePrefetches(long value) {
+        bitField1_ |= 0x00080000;
+        nodePrefetches_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 node_prefetches = 52;</code>
+       */
+      public Builder clearNodePrefetches() {
+        bitField1_ = (bitField1_ & ~0x00080000);
+        nodePrefetches_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 node_prefetch_misses = 53;
+      private long nodePrefetchMisses_ ;
+      /**
+       * <code>optional uint64 node_prefetch_misses = 53;</code>
+       */
+      public boolean hasNodePrefetchMisses() {
+        return ((bitField1_ & 0x00100000) == 0x00100000);
+      }
+      /**
+       * <code>optional uint64 node_prefetch_misses = 53;</code>
+       */
+      public long getNodePrefetchMisses() {
+        return nodePrefetchMisses_;
+      }
+      /**
+       * <code>optional uint64 node_prefetch_misses = 53;</code>
+       */
+      public Builder setNodePrefetchMisses(long value) {
+        bitField1_ |= 0x00100000;
+        nodePrefetchMisses_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 node_prefetch_misses = 53;</code>
+       */
+      public Builder clearNodePrefetchMisses() {
+        bitField1_ = (bitField1_ & ~0x00100000);
+        nodePrefetchMisses_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.PerfStatistics)
+    }
+
+    static {
+      defaultInstance = new PerfStatistics(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.PerfStatistics)
+  }
+
+  public interface RequestOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional .mesos.SlaveID slave_id = 1;
+    /**
+     * <code>optional .mesos.SlaveID slave_id = 1;</code>
+     */
+    boolean hasSlaveId();
+    /**
+     * <code>optional .mesos.SlaveID slave_id = 1;</code>
+     */
+    org.apache.mesos.Protos.SlaveID getSlaveId();
+    /**
+     * <code>optional .mesos.SlaveID slave_id = 1;</code>
+     */
+    org.apache.mesos.Protos.SlaveIDOrBuilder getSlaveIdOrBuilder();
+
+    // repeated .mesos.Resource resources = 2;
+    /**
+     * <code>repeated .mesos.Resource resources = 2;</code>
+     */
+    java.util.List<org.apache.mesos.Protos.Resource> 
+        getResourcesList();
+    /**
+     * <code>repeated .mesos.Resource resources = 2;</code>
+     */
+    org.apache.mesos.Protos.Resource getResources(int index);
+    /**
+     * <code>repeated .mesos.Resource resources = 2;</code>
+     */
+    int getResourcesCount();
+    /**
+     * <code>repeated .mesos.Resource resources = 2;</code>
+     */
+    java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+        getResourcesOrBuilderList();
+    /**
+     * <code>repeated .mesos.Resource resources = 2;</code>
+     */
+    org.apache.mesos.Protos.ResourceOrBuilder getResourcesOrBuilder(
+        int index);
+  }
+  /**
+   * Protobuf type {@code mesos.Request}
+   *
+   * <pre>
+   **
+   * Describes a request for resources that can be used by a framework
+   * to proactively influence the allocator.  If 'slave_id' is provided
+   * then this request is assumed to only apply to resources on that
+   * slave.
+   * </pre>
+   */
+  public static final class Request extends
+      com.google.protobuf.GeneratedMessage
+      implements RequestOrBuilder {
+    // Use Request.newBuilder() to construct.
+    private Request(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Request(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Request defaultInstance;
+    public static Request getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Request getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Request(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              org.apache.mesos.Protos.SlaveID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                subBuilder = slaveId_.toBuilder();
+              }
+              slaveId_ = input.readMessage(org.apache.mesos.Protos.SlaveID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(slaveId_);
+                slaveId_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+            case 18: {
+              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+                resources_ = new java.util.ArrayList<org.apache.mesos.Protos.Resource>();
+                mutable_bitField0_ |= 0x00000002;
+              }
+              resources_.add(input.readMessage(org.apache.mesos.Protos.Resource.PARSER, extensionRegistry));
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+          resources_ = java.util.Collections.unmodifiableList(resources_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_Request_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_Request_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.Request.class, org.apache.mesos.Protos.Request.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Request> PARSER =
+        new com.google.protobuf.AbstractParser<Request>() {
+      public Request parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Request(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Request> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // optional .mesos.SlaveID slave_id = 1;
+    public static final int SLAVE_ID_FIELD_NUMBER = 1;
+    private org.apache.mesos.Protos.SlaveID slaveId_;
+    /**
+     * <code>optional .mesos.SlaveID slave_id = 1;</code>
+     */
+    public boolean hasSlaveId() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional .mesos.SlaveID slave_id = 1;</code>
+     */
+    public org.apache.mesos.Protos.SlaveID getSlaveId() {
+      return slaveId_;
+    }
+    /**
+     * <code>optional .mesos.SlaveID slave_id = 1;</code>
+     */
+    public org.apache.mesos.Protos.SlaveIDOrBuilder getSlaveIdOrBuilder() {
+      return slaveId_;
+    }
+
+    // repeated .mesos.Resource resources = 2;
+    public static final int RESOURCES_FIELD_NUMBER = 2;
+    private java.util.List<org.apache.mesos.Protos.Resource> resources_;
+    /**
+     * <code>repeated .mesos.Resource resources = 2;</code>
+     */
+    public java.util.List<org.apache.mesos.Protos.Resource> getResourcesList() {
+      return resources_;
+    }
+    /**
+     * <code>repeated .mesos.Resource resources = 2;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+        getResourcesOrBuilderList() {
+      return resources_;
+    }
+    /**
+     * <code>repeated .mesos.Resource resources = 2;</code>
+     */
+    public int getResourcesCount() {
+      return resources_.size();
+    }
+    /**
+     * <code>repeated .mesos.Resource resources = 2;</code>
+     */
+    public org.apache.mesos.Protos.Resource getResources(int index) {
+      return resources_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.Resource resources = 2;</code>
+     */
+    public org.apache.mesos.Protos.ResourceOrBuilder getResourcesOrBuilder(
+        int index) {
+      return resources_.get(index);
+    }
+
+    private void initFields() {
+      slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+      resources_ = java.util.Collections.emptyList();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (hasSlaveId()) {
+        if (!getSlaveId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      for (int i = 0; i < getResourcesCount(); i++) {
+        if (!getResources(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeMessage(1, slaveId_);
+      }
+      for (int i = 0; i < resources_.size(); i++) {
+        output.writeMessage(2, resources_.get(i));
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, slaveId_);
+      }
+      for (int i = 0; i < resources_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, resources_.get(i));
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.Request parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Request parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Request parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Request parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Request parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Request parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Request parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.Request parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Request parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Request parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.Request prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.Request}
+     *
+     * <pre>
+     **
+     * Describes a request for resources that can be used by a framework
+     * to proactively influence the allocator.  If 'slave_id' is provided
+     * then this request is assumed to only apply to resources on that
+     * slave.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.RequestOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_Request_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_Request_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.Request.class, org.apache.mesos.Protos.Request.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.Request.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getSlaveIdFieldBuilder();
+          getResourcesFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (slaveIdBuilder_ == null) {
+          slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+        } else {
+          slaveIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (resourcesBuilder_ == null) {
+          resources_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000002);
+        } else {
+          resourcesBuilder_.clear();
+        }
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_Request_descriptor;
+      }
+
+      public org.apache.mesos.Protos.Request getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.Request.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.Request build() {
+        org.apache.mesos.Protos.Request result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.Request buildPartial() {
+        org.apache.mesos.Protos.Request result = new org.apache.mesos.Protos.Request(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        if (slaveIdBuilder_ == null) {
+          result.slaveId_ = slaveId_;
+        } else {
+          result.slaveId_ = slaveIdBuilder_.build();
+        }
+        if (resourcesBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            resources_ = java.util.Collections.unmodifiableList(resources_);
+            bitField0_ = (bitField0_ & ~0x00000002);
+          }
+          result.resources_ = resources_;
+        } else {
+          result.resources_ = resourcesBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.Request) {
+          return mergeFrom((org.apache.mesos.Protos.Request)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.Request other) {
+        if (other == org.apache.mesos.Protos.Request.getDefaultInstance()) return this;
+        if (other.hasSlaveId()) {
+          mergeSlaveId(other.getSlaveId());
+        }
+        if (resourcesBuilder_ == null) {
+          if (!other.resources_.isEmpty()) {
+            if (resources_.isEmpty()) {
+              resources_ = other.resources_;
+              bitField0_ = (bitField0_ & ~0x00000002);
+            } else {
+              ensureResourcesIsMutable();
+              resources_.addAll(other.resources_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.resources_.isEmpty()) {
+            if (resourcesBuilder_.isEmpty()) {
+              resourcesBuilder_.dispose();
+              resourcesBuilder_ = null;
+              resources_ = other.resources_;
+              bitField0_ = (bitField0_ & ~0x00000002);
+              resourcesBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getResourcesFieldBuilder() : null;
+            } else {
+              resourcesBuilder_.addAllMessages(other.resources_);
+            }
+          }
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (hasSlaveId()) {
+          if (!getSlaveId().isInitialized()) {
+            
+            return false;
+          }
+        }
+        for (int i = 0; i < getResourcesCount(); i++) {
+          if (!getResources(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.Request parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.Request) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional .mesos.SlaveID slave_id = 1;
+      private org.apache.mesos.Protos.SlaveID slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.SlaveID, org.apache.mesos.Protos.SlaveID.Builder, org.apache.mesos.Protos.SlaveIDOrBuilder> slaveIdBuilder_;
+      /**
+       * <code>optional .mesos.SlaveID slave_id = 1;</code>
+       */
+      public boolean hasSlaveId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.SlaveID slave_id = 1;</code>
+       */
+      public org.apache.mesos.Protos.SlaveID getSlaveId() {
+        if (slaveIdBuilder_ == null) {
+          return slaveId_;
+        } else {
+          return slaveIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.SlaveID slave_id = 1;</code>
+       */
+      public Builder setSlaveId(org.apache.mesos.Protos.SlaveID value) {
+        if (slaveIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          slaveId_ = value;
+          onChanged();
+        } else {
+          slaveIdBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.SlaveID slave_id = 1;</code>
+       */
+      public Builder setSlaveId(
+          org.apache.mesos.Protos.SlaveID.Builder builderForValue) {
+        if (slaveIdBuilder_ == null) {
+          slaveId_ = builderForValue.build();
+          onChanged();
+        } else {
+          slaveIdBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.SlaveID slave_id = 1;</code>
+       */
+      public Builder mergeSlaveId(org.apache.mesos.Protos.SlaveID value) {
+        if (slaveIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001) &&
+              slaveId_ != org.apache.mesos.Protos.SlaveID.getDefaultInstance()) {
+            slaveId_ =
+              org.apache.mesos.Protos.SlaveID.newBuilder(slaveId_).mergeFrom(value).buildPartial();
+          } else {
+            slaveId_ = value;
+          }
+          onChanged();
+        } else {
+          slaveIdBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.SlaveID slave_id = 1;</code>
+       */
+      public Builder clearSlaveId() {
+        if (slaveIdBuilder_ == null) {
+          slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+          onChanged();
+        } else {
+          slaveIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.SlaveID slave_id = 1;</code>
+       */
+      public org.apache.mesos.Protos.SlaveID.Builder getSlaveIdBuilder() {
+        bitField0_ |= 0x00000001;
+        onChanged();
+        return getSlaveIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.SlaveID slave_id = 1;</code>
+       */
+      public org.apache.mesos.Protos.SlaveIDOrBuilder getSlaveIdOrBuilder() {
+        if (slaveIdBuilder_ != null) {
+          return slaveIdBuilder_.getMessageOrBuilder();
+        } else {
+          return slaveId_;
+        }
+      }
+      /**
+       * <code>optional .mesos.SlaveID slave_id = 1;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.SlaveID, org.apache.mesos.Protos.SlaveID.Builder, org.apache.mesos.Protos.SlaveIDOrBuilder> 
+          getSlaveIdFieldBuilder() {
+        if (slaveIdBuilder_ == null) {
+          slaveIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.SlaveID, org.apache.mesos.Protos.SlaveID.Builder, org.apache.mesos.Protos.SlaveIDOrBuilder>(
+                  slaveId_,
+                  getParentForChildren(),
+                  isClean());
+          slaveId_ = null;
+        }
+        return slaveIdBuilder_;
+      }
+
+      // repeated .mesos.Resource resources = 2;
+      private java.util.List<org.apache.mesos.Protos.Resource> resources_ =
+        java.util.Collections.emptyList();
+      private void ensureResourcesIsMutable() {
+        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
+          resources_ = new java.util.ArrayList<org.apache.mesos.Protos.Resource>(resources_);
+          bitField0_ |= 0x00000002;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder> resourcesBuilder_;
+
+      /**
+       * <code>repeated .mesos.Resource resources = 2;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.Resource> getResourcesList() {
+        if (resourcesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(resources_);
+        } else {
+          return resourcesBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 2;</code>
+       */
+      public int getResourcesCount() {
+        if (resourcesBuilder_ == null) {
+          return resources_.size();
+        } else {
+          return resourcesBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 2;</code>
+       */
+      public org.apache.mesos.Protos.Resource getResources(int index) {
+        if (resourcesBuilder_ == null) {
+          return resources_.get(index);
+        } else {
+          return resourcesBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 2;</code>
+       */
+      public Builder setResources(
+          int index, org.apache.mesos.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.set(index, value);
+          onChanged();
+        } else {
+          resourcesBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 2;</code>
+       */
+      public Builder setResources(
+          int index, org.apache.mesos.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 2;</code>
+       */
+      public Builder addResources(org.apache.mesos.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.add(value);
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 2;</code>
+       */
+      public Builder addResources(
+          int index, org.apache.mesos.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.add(index, value);
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 2;</code>
+       */
+      public Builder addResources(
+          org.apache.mesos.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.add(builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 2;</code>
+       */
+      public Builder addResources(
+          int index, org.apache.mesos.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 2;</code>
+       */
+      public Builder addAllResources(
+          java.lang.Iterable<? extends org.apache.mesos.Protos.Resource> values) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          super.addAll(values, resources_);
+          onChanged();
+        } else {
+          resourcesBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 2;</code>
+       */
+      public Builder clearResources() {
+        if (resourcesBuilder_ == null) {
+          resources_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000002);
+          onChanged();
+        } else {
+          resourcesBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 2;</code>
+       */
+      public Builder removeResources(int index) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.remove(index);
+          onChanged();
+        } else {
+          resourcesBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 2;</code>
+       */
+      public org.apache.mesos.Protos.Resource.Builder getResourcesBuilder(
+          int index) {
+        return getResourcesFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 2;</code>
+       */
+      public org.apache.mesos.Protos.ResourceOrBuilder getResourcesOrBuilder(
+          int index) {
+        if (resourcesBuilder_ == null) {
+          return resources_.get(index);  } else {
+          return resourcesBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 2;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+           getResourcesOrBuilderList() {
+        if (resourcesBuilder_ != null) {
+          return resourcesBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(resources_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 2;</code>
+       */
+      public org.apache.mesos.Protos.Resource.Builder addResourcesBuilder() {
+        return getResourcesFieldBuilder().addBuilder(
+            org.apache.mesos.Protos.Resource.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 2;</code>
+       */
+      public org.apache.mesos.Protos.Resource.Builder addResourcesBuilder(
+          int index) {
+        return getResourcesFieldBuilder().addBuilder(
+            index, org.apache.mesos.Protos.Resource.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 2;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.Resource.Builder> 
+           getResourcesBuilderList() {
+        return getResourcesFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder> 
+          getResourcesFieldBuilder() {
+        if (resourcesBuilder_ == null) {
+          resourcesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder>(
+                  resources_,
+                  ((bitField0_ & 0x00000002) == 0x00000002),
+                  getParentForChildren(),
+                  isClean());
+          resources_ = null;
+        }
+        return resourcesBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.Request)
+    }
+
+    static {
+      defaultInstance = new Request(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.Request)
+  }
+
+  public interface OfferOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required .mesos.OfferID id = 1;
+    /**
+     * <code>required .mesos.OfferID id = 1;</code>
+     */
+    boolean hasId();
+    /**
+     * <code>required .mesos.OfferID id = 1;</code>
+     */
+    org.apache.mesos.Protos.OfferID getId();
+    /**
+     * <code>required .mesos.OfferID id = 1;</code>
+     */
+    org.apache.mesos.Protos.OfferIDOrBuilder getIdOrBuilder();
+
+    // required .mesos.FrameworkID framework_id = 2;
+    /**
+     * <code>required .mesos.FrameworkID framework_id = 2;</code>
+     */
+    boolean hasFrameworkId();
+    /**
+     * <code>required .mesos.FrameworkID framework_id = 2;</code>
+     */
+    org.apache.mesos.Protos.FrameworkID getFrameworkId();
+    /**
+     * <code>required .mesos.FrameworkID framework_id = 2;</code>
+     */
+    org.apache.mesos.Protos.FrameworkIDOrBuilder getFrameworkIdOrBuilder();
+
+    // required .mesos.SlaveID slave_id = 3;
+    /**
+     * <code>required .mesos.SlaveID slave_id = 3;</code>
+     */
+    boolean hasSlaveId();
+    /**
+     * <code>required .mesos.SlaveID slave_id = 3;</code>
+     */
+    org.apache.mesos.Protos.SlaveID getSlaveId();
+    /**
+     * <code>required .mesos.SlaveID slave_id = 3;</code>
+     */
+    org.apache.mesos.Protos.SlaveIDOrBuilder getSlaveIdOrBuilder();
+
+    // required string hostname = 4;
+    /**
+     * <code>required string hostname = 4;</code>
+     */
+    boolean hasHostname();
+    /**
+     * <code>required string hostname = 4;</code>
+     */
+    java.lang.String getHostname();
+    /**
+     * <code>required string hostname = 4;</code>
+     */
+    com.google.protobuf.ByteString
+        getHostnameBytes();
+
+    // optional .mesos.URL url = 8;
+    /**
+     * <code>optional .mesos.URL url = 8;</code>
+     *
+     * <pre>
+     * URL for reaching the slave running on the host.
+     * </pre>
+     */
+    boolean hasUrl();
+    /**
+     * <code>optional .mesos.URL url = 8;</code>
+     *
+     * <pre>
+     * URL for reaching the slave running on the host.
+     * </pre>
+     */
+    org.apache.mesos.Protos.URL getUrl();
+    /**
+     * <code>optional .mesos.URL url = 8;</code>
+     *
+     * <pre>
+     * URL for reaching the slave running on the host.
+     * </pre>
+     */
+    org.apache.mesos.Protos.URLOrBuilder getUrlOrBuilder();
+
+    // optional .mesos.DomainInfo domain = 11;
+    /**
+     * <code>optional .mesos.DomainInfo domain = 11;</code>
+     *
+     * <pre>
+     * The domain of the slave.
+     * </pre>
+     */
+    boolean hasDomain();
+    /**
+     * <code>optional .mesos.DomainInfo domain = 11;</code>
+     *
+     * <pre>
+     * The domain of the slave.
+     * </pre>
+     */
+    org.apache.mesos.Protos.DomainInfo getDomain();
+    /**
+     * <code>optional .mesos.DomainInfo domain = 11;</code>
+     *
+     * <pre>
+     * The domain of the slave.
+     * </pre>
+     */
+    org.apache.mesos.Protos.DomainInfoOrBuilder getDomainOrBuilder();
+
+    // repeated .mesos.Resource resources = 5;
+    /**
+     * <code>repeated .mesos.Resource resources = 5;</code>
+     */
+    java.util.List<org.apache.mesos.Protos.Resource> 
+        getResourcesList();
+    /**
+     * <code>repeated .mesos.Resource resources = 5;</code>
+     */
+    org.apache.mesos.Protos.Resource getResources(int index);
+    /**
+     * <code>repeated .mesos.Resource resources = 5;</code>
+     */
+    int getResourcesCount();
+    /**
+     * <code>repeated .mesos.Resource resources = 5;</code>
+     */
+    java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+        getResourcesOrBuilderList();
+    /**
+     * <code>repeated .mesos.Resource resources = 5;</code>
+     */
+    org.apache.mesos.Protos.ResourceOrBuilder getResourcesOrBuilder(
+        int index);
+
+    // repeated .mesos.Attribute attributes = 7;
+    /**
+     * <code>repeated .mesos.Attribute attributes = 7;</code>
+     */
+    java.util.List<org.apache.mesos.Protos.Attribute> 
+        getAttributesList();
+    /**
+     * <code>repeated .mesos.Attribute attributes = 7;</code>
+     */
+    org.apache.mesos.Protos.Attribute getAttributes(int index);
+    /**
+     * <code>repeated .mesos.Attribute attributes = 7;</code>
+     */
+    int getAttributesCount();
+    /**
+     * <code>repeated .mesos.Attribute attributes = 7;</code>
+     */
+    java.util.List<? extends org.apache.mesos.Protos.AttributeOrBuilder> 
+        getAttributesOrBuilderList();
+    /**
+     * <code>repeated .mesos.Attribute attributes = 7;</code>
+     */
+    org.apache.mesos.Protos.AttributeOrBuilder getAttributesOrBuilder(
+        int index);
+
+    // repeated .mesos.ExecutorID executor_ids = 6;
+    /**
+     * <code>repeated .mesos.ExecutorID executor_ids = 6;</code>
+     */
+    java.util.List<org.apache.mesos.Protos.ExecutorID> 
+        getExecutorIdsList();
+    /**
+     * <code>repeated .mesos.ExecutorID executor_ids = 6;</code>
+     */
+    org.apache.mesos.Protos.ExecutorID getExecutorIds(int index);
+    /**
+     * <code>repeated .mesos.ExecutorID executor_ids = 6;</code>
+     */
+    int getExecutorIdsCount();
+    /**
+     * <code>repeated .mesos.ExecutorID executor_ids = 6;</code>
+     */
+    java.util.List<? extends org.apache.mesos.Protos.ExecutorIDOrBuilder> 
+        getExecutorIdsOrBuilderList();
+    /**
+     * <code>repeated .mesos.ExecutorID executor_ids = 6;</code>
+     */
+    org.apache.mesos.Protos.ExecutorIDOrBuilder getExecutorIdsOrBuilder(
+        int index);
+
+    // optional .mesos.Unavailability unavailability = 9;
+    /**
+     * <code>optional .mesos.Unavailability unavailability = 9;</code>
+     *
+     * <pre>
+     * Signifies that the resources in this Offer may be unavailable during
+     * the given interval.  Any tasks launched using these resources may be
+     * killed when the interval arrives.  For example, these resources may be
+     * part of a planned maintenance schedule.
+     *
+     * This field only provides information about a planned unavailability.
+     * The unavailability interval may not necessarily start at exactly this
+     * interval, nor last for exactly the duration of this interval.
+     * The unavailability may also be forever!  See comments in
+     * `Unavailability` for more details.
+     * </pre>
+     */
+    boolean hasUnavailability();
+    /**
+     * <code>optional .mesos.Unavailability unavailability = 9;</code>
+     *
+     * <pre>
+     * Signifies that the resources in this Offer may be unavailable during
+     * the given interval.  Any tasks launched using these resources may be
+     * killed when the interval arrives.  For example, these resources may be
+     * part of a planned maintenance schedule.
+     *
+     * This field only provides information about a planned unavailability.
+     * The unavailability interval may not necessarily start at exactly this
+     * interval, nor last for exactly the duration of this interval.
+     * The unavailability may also be forever!  See comments in
+     * `Unavailability` for more details.
+     * </pre>
+     */
+    org.apache.mesos.Protos.Unavailability getUnavailability();
+    /**
+     * <code>optional .mesos.Unavailability unavailability = 9;</code>
+     *
+     * <pre>
+     * Signifies that the resources in this Offer may be unavailable during
+     * the given interval.  Any tasks launched using these resources may be
+     * killed when the interval arrives.  For example, these resources may be
+     * part of a planned maintenance schedule.
+     *
+     * This field only provides information about a planned unavailability.
+     * The unavailability interval may not necessarily start at exactly this
+     * interval, nor last for exactly the duration of this interval.
+     * The unavailability may also be forever!  See comments in
+     * `Unavailability` for more details.
+     * </pre>
+     */
+    org.apache.mesos.Protos.UnavailabilityOrBuilder getUnavailabilityOrBuilder();
+
+    // optional .mesos.Resource.AllocationInfo allocation_info = 10;
+    /**
+     * <code>optional .mesos.Resource.AllocationInfo allocation_info = 10;</code>
+     *
+     * <pre>
+     * An offer represents resources allocated to *one* of the
+     * roles managed by the scheduler. (Therefore, each
+     * `Offer.resources[i].allocation_info` will match the
+     * top level `Offer.allocation_info`).
+     * </pre>
+     */
+    boolean hasAllocationInfo();
+    /**
+     * <code>optional .mesos.Resource.AllocationInfo allocation_info = 10;</code>
+     *
+     * <pre>
+     * An offer represents resources allocated to *one* of the
+     * roles managed by the scheduler. (Therefore, each
+     * `Offer.resources[i].allocation_info` will match the
+     * top level `Offer.allocation_info`).
+     * </pre>
+     */
+    org.apache.mesos.Protos.Resource.AllocationInfo getAllocationInfo();
+    /**
+     * <code>optional .mesos.Resource.AllocationInfo allocation_info = 10;</code>
+     *
+     * <pre>
+     * An offer represents resources allocated to *one* of the
+     * roles managed by the scheduler. (Therefore, each
+     * `Offer.resources[i].allocation_info` will match the
+     * top level `Offer.allocation_info`).
+     * </pre>
+     */
+    org.apache.mesos.Protos.Resource.AllocationInfoOrBuilder getAllocationInfoOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.Offer}
+   *
+   * <pre>
+   **
+   * Describes some resources available on a slave. An offer only
+   * contains resources from a single slave.
+   * </pre>
+   */
+  public static final class Offer extends
+      com.google.protobuf.GeneratedMessage
+      implements OfferOrBuilder {
+    // Use Offer.newBuilder() to construct.
+    private Offer(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Offer(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Offer defaultInstance;
+    public static Offer getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Offer getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Offer(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              org.apache.mesos.Protos.OfferID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                subBuilder = id_.toBuilder();
+              }
+              id_ = input.readMessage(org.apache.mesos.Protos.OfferID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(id_);
+                id_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+            case 18: {
+              org.apache.mesos.Protos.FrameworkID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = frameworkId_.toBuilder();
+              }
+              frameworkId_ = input.readMessage(org.apache.mesos.Protos.FrameworkID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(frameworkId_);
+                frameworkId_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+            case 26: {
+              org.apache.mesos.Protos.SlaveID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                subBuilder = slaveId_.toBuilder();
+              }
+              slaveId_ = input.readMessage(org.apache.mesos.Protos.SlaveID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(slaveId_);
+                slaveId_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000004;
+              break;
+            }
+            case 34: {
+              bitField0_ |= 0x00000008;
+              hostname_ = input.readBytes();
+              break;
+            }
+            case 42: {
+              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
+                resources_ = new java.util.ArrayList<org.apache.mesos.Protos.Resource>();
+                mutable_bitField0_ |= 0x00000040;
+              }
+              resources_.add(input.readMessage(org.apache.mesos.Protos.Resource.PARSER, extensionRegistry));
+              break;
+            }
+            case 50: {
+              if (!((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
+                executorIds_ = new java.util.ArrayList<org.apache.mesos.Protos.ExecutorID>();
+                mutable_bitField0_ |= 0x00000100;
+              }
+              executorIds_.add(input.readMessage(org.apache.mesos.Protos.ExecutorID.PARSER, extensionRegistry));
+              break;
+            }
+            case 58: {
+              if (!((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
+                attributes_ = new java.util.ArrayList<org.apache.mesos.Protos.Attribute>();
+                mutable_bitField0_ |= 0x00000080;
+              }
+              attributes_.add(input.readMessage(org.apache.mesos.Protos.Attribute.PARSER, extensionRegistry));
+              break;
+            }
+            case 66: {
+              org.apache.mesos.Protos.URL.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000010) == 0x00000010)) {
+                subBuilder = url_.toBuilder();
+              }
+              url_ = input.readMessage(org.apache.mesos.Protos.URL.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(url_);
+                url_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000010;
+              break;
+            }
+            case 74: {
+              org.apache.mesos.Protos.Unavailability.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000040) == 0x00000040)) {
+                subBuilder = unavailability_.toBuilder();
+              }
+              unavailability_ = input.readMessage(org.apache.mesos.Protos.Unavailability.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(unavailability_);
+                unavailability_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000040;
+              break;
+            }
+            case 82: {
+              org.apache.mesos.Protos.Resource.AllocationInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000080) == 0x00000080)) {
+                subBuilder = allocationInfo_.toBuilder();
+              }
+              allocationInfo_ = input.readMessage(org.apache.mesos.Protos.Resource.AllocationInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(allocationInfo_);
+                allocationInfo_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000080;
+              break;
+            }
+            case 90: {
+              org.apache.mesos.Protos.DomainInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000020) == 0x00000020)) {
+                subBuilder = domain_.toBuilder();
+              }
+              domain_ = input.readMessage(org.apache.mesos.Protos.DomainInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(domain_);
+                domain_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000020;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
+          resources_ = java.util.Collections.unmodifiableList(resources_);
+        }
+        if (((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
+          executorIds_ = java.util.Collections.unmodifiableList(executorIds_);
+        }
+        if (((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
+          attributes_ = java.util.Collections.unmodifiableList(attributes_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_Offer_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_Offer_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.Offer.class, org.apache.mesos.Protos.Offer.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Offer> PARSER =
+        new com.google.protobuf.AbstractParser<Offer>() {
+      public Offer parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Offer(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Offer> getParserForType() {
+      return PARSER;
+    }
+
+    public interface OperationOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // optional .mesos.Offer.Operation.Type type = 1;
+      /**
+       * <code>optional .mesos.Offer.Operation.Type type = 1;</code>
+       */
+      boolean hasType();
+      /**
+       * <code>optional .mesos.Offer.Operation.Type type = 1;</code>
+       */
+      org.apache.mesos.Protos.Offer.Operation.Type getType();
+
+      // optional .mesos.Offer.Operation.Launch launch = 2;
+      /**
+       * <code>optional .mesos.Offer.Operation.Launch launch = 2;</code>
+       */
+      boolean hasLaunch();
+      /**
+       * <code>optional .mesos.Offer.Operation.Launch launch = 2;</code>
+       */
+      org.apache.mesos.Protos.Offer.Operation.Launch getLaunch();
+      /**
+       * <code>optional .mesos.Offer.Operation.Launch launch = 2;</code>
+       */
+      org.apache.mesos.Protos.Offer.Operation.LaunchOrBuilder getLaunchOrBuilder();
+
+      // optional .mesos.Offer.Operation.LaunchGroup launch_group = 7;
+      /**
+       * <code>optional .mesos.Offer.Operation.LaunchGroup launch_group = 7;</code>
+       */
+      boolean hasLaunchGroup();
+      /**
+       * <code>optional .mesos.Offer.Operation.LaunchGroup launch_group = 7;</code>
+       */
+      org.apache.mesos.Protos.Offer.Operation.LaunchGroup getLaunchGroup();
+      /**
+       * <code>optional .mesos.Offer.Operation.LaunchGroup launch_group = 7;</code>
+       */
+      org.apache.mesos.Protos.Offer.Operation.LaunchGroupOrBuilder getLaunchGroupOrBuilder();
+
+      // optional .mesos.Offer.Operation.Reserve reserve = 3;
+      /**
+       * <code>optional .mesos.Offer.Operation.Reserve reserve = 3;</code>
+       */
+      boolean hasReserve();
+      /**
+       * <code>optional .mesos.Offer.Operation.Reserve reserve = 3;</code>
+       */
+      org.apache.mesos.Protos.Offer.Operation.Reserve getReserve();
+      /**
+       * <code>optional .mesos.Offer.Operation.Reserve reserve = 3;</code>
+       */
+      org.apache.mesos.Protos.Offer.Operation.ReserveOrBuilder getReserveOrBuilder();
+
+      // optional .mesos.Offer.Operation.Unreserve unreserve = 4;
+      /**
+       * <code>optional .mesos.Offer.Operation.Unreserve unreserve = 4;</code>
+       */
+      boolean hasUnreserve();
+      /**
+       * <code>optional .mesos.Offer.Operation.Unreserve unreserve = 4;</code>
+       */
+      org.apache.mesos.Protos.Offer.Operation.Unreserve getUnreserve();
+      /**
+       * <code>optional .mesos.Offer.Operation.Unreserve unreserve = 4;</code>
+       */
+      org.apache.mesos.Protos.Offer.Operation.UnreserveOrBuilder getUnreserveOrBuilder();
+
+      // optional .mesos.Offer.Operation.Create create = 5;
+      /**
+       * <code>optional .mesos.Offer.Operation.Create create = 5;</code>
+       */
+      boolean hasCreate();
+      /**
+       * <code>optional .mesos.Offer.Operation.Create create = 5;</code>
+       */
+      org.apache.mesos.Protos.Offer.Operation.Create getCreate();
+      /**
+       * <code>optional .mesos.Offer.Operation.Create create = 5;</code>
+       */
+      org.apache.mesos.Protos.Offer.Operation.CreateOrBuilder getCreateOrBuilder();
+
+      // optional .mesos.Offer.Operation.Destroy destroy = 6;
+      /**
+       * <code>optional .mesos.Offer.Operation.Destroy destroy = 6;</code>
+       */
+      boolean hasDestroy();
+      /**
+       * <code>optional .mesos.Offer.Operation.Destroy destroy = 6;</code>
+       */
+      org.apache.mesos.Protos.Offer.Operation.Destroy getDestroy();
+      /**
+       * <code>optional .mesos.Offer.Operation.Destroy destroy = 6;</code>
+       */
+      org.apache.mesos.Protos.Offer.Operation.DestroyOrBuilder getDestroyOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.Offer.Operation}
+     *
+     * <pre>
+     * Defines an operation that can be performed against offers.
+     * </pre>
+     */
+    public static final class Operation extends
+        com.google.protobuf.GeneratedMessage
+        implements OperationOrBuilder {
+      // Use Operation.newBuilder() to construct.
+      private Operation(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Operation(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Operation defaultInstance;
+      public static Operation getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Operation getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Operation(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 8: {
+                int rawValue = input.readEnum();
+                org.apache.mesos.Protos.Offer.Operation.Type value = org.apache.mesos.Protos.Offer.Operation.Type.valueOf(rawValue);
+                if (value == null) {
+                  unknownFields.mergeVarintField(1, rawValue);
+                } else {
+                  bitField0_ |= 0x00000001;
+                  type_ = value;
+                }
+                break;
+              }
+              case 18: {
+                org.apache.mesos.Protos.Offer.Operation.Launch.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                  subBuilder = launch_.toBuilder();
+                }
+                launch_ = input.readMessage(org.apache.mesos.Protos.Offer.Operation.Launch.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(launch_);
+                  launch_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000002;
+                break;
+              }
+              case 26: {
+                org.apache.mesos.Protos.Offer.Operation.Reserve.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                  subBuilder = reserve_.toBuilder();
+                }
+                reserve_ = input.readMessage(org.apache.mesos.Protos.Offer.Operation.Reserve.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(reserve_);
+                  reserve_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000008;
+                break;
+              }
+              case 34: {
+                org.apache.mesos.Protos.Offer.Operation.Unreserve.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000010) == 0x00000010)) {
+                  subBuilder = unreserve_.toBuilder();
+                }
+                unreserve_ = input.readMessage(org.apache.mesos.Protos.Offer.Operation.Unreserve.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(unreserve_);
+                  unreserve_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000010;
+                break;
+              }
+              case 42: {
+                org.apache.mesos.Protos.Offer.Operation.Create.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000020) == 0x00000020)) {
+                  subBuilder = create_.toBuilder();
+                }
+                create_ = input.readMessage(org.apache.mesos.Protos.Offer.Operation.Create.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(create_);
+                  create_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000020;
+                break;
+              }
+              case 50: {
+                org.apache.mesos.Protos.Offer.Operation.Destroy.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000040) == 0x00000040)) {
+                  subBuilder = destroy_.toBuilder();
+                }
+                destroy_ = input.readMessage(org.apache.mesos.Protos.Offer.Operation.Destroy.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(destroy_);
+                  destroy_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000040;
+                break;
+              }
+              case 58: {
+                org.apache.mesos.Protos.Offer.Operation.LaunchGroup.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                  subBuilder = launchGroup_.toBuilder();
+                }
+                launchGroup_ = input.readMessage(org.apache.mesos.Protos.Offer.Operation.LaunchGroup.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(launchGroup_);
+                  launchGroup_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000004;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_Offer_Operation_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_Offer_Operation_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.Offer.Operation.class, org.apache.mesos.Protos.Offer.Operation.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Operation> PARSER =
+          new com.google.protobuf.AbstractParser<Operation>() {
+        public Operation parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Operation(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Operation> getParserForType() {
+        return PARSER;
+      }
+
+      /**
+       * Protobuf enum {@code mesos.Offer.Operation.Type}
+       */
+      public enum Type
+          implements com.google.protobuf.ProtocolMessageEnum {
+        /**
+         * <code>UNKNOWN = 0;</code>
+         */
+        UNKNOWN(0, 0),
+        /**
+         * <code>LAUNCH = 1;</code>
+         */
+        LAUNCH(1, 1),
+        /**
+         * <code>LAUNCH_GROUP = 6;</code>
+         */
+        LAUNCH_GROUP(2, 6),
+        /**
+         * <code>RESERVE = 2;</code>
+         */
+        RESERVE(3, 2),
+        /**
+         * <code>UNRESERVE = 3;</code>
+         */
+        UNRESERVE(4, 3),
+        /**
+         * <code>CREATE = 4;</code>
+         */
+        CREATE(5, 4),
+        /**
+         * <code>DESTROY = 5;</code>
+         */
+        DESTROY(6, 5),
+        ;
+
+        /**
+         * <code>UNKNOWN = 0;</code>
+         */
+        public static final int UNKNOWN_VALUE = 0;
+        /**
+         * <code>LAUNCH = 1;</code>
+         */
+        public static final int LAUNCH_VALUE = 1;
+        /**
+         * <code>LAUNCH_GROUP = 6;</code>
+         */
+        public static final int LAUNCH_GROUP_VALUE = 6;
+        /**
+         * <code>RESERVE = 2;</code>
+         */
+        public static final int RESERVE_VALUE = 2;
+        /**
+         * <code>UNRESERVE = 3;</code>
+         */
+        public static final int UNRESERVE_VALUE = 3;
+        /**
+         * <code>CREATE = 4;</code>
+         */
+        public static final int CREATE_VALUE = 4;
+        /**
+         * <code>DESTROY = 5;</code>
+         */
+        public static final int DESTROY_VALUE = 5;
+
+
+        public final int getNumber() { return value; }
+
+        public static Type valueOf(int value) {
+          switch (value) {
+            case 0: return UNKNOWN;
+            case 1: return LAUNCH;
+            case 6: return LAUNCH_GROUP;
+            case 2: return RESERVE;
+            case 3: return UNRESERVE;
+            case 4: return CREATE;
+            case 5: return DESTROY;
+            default: return null;
+          }
+        }
+
+        public static com.google.protobuf.Internal.EnumLiteMap<Type>
+            internalGetValueMap() {
+          return internalValueMap;
+        }
+        private static com.google.protobuf.Internal.EnumLiteMap<Type>
+            internalValueMap =
+              new com.google.protobuf.Internal.EnumLiteMap<Type>() {
+                public Type findValueByNumber(int number) {
+                  return Type.valueOf(number);
+                }
+              };
+
+        public final com.google.protobuf.Descriptors.EnumValueDescriptor
+            getValueDescriptor() {
+          return getDescriptor().getValues().get(index);
+        }
+        public final com.google.protobuf.Descriptors.EnumDescriptor
+            getDescriptorForType() {
+          return getDescriptor();
+        }
+        public static final com.google.protobuf.Descriptors.EnumDescriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.Offer.Operation.getDescriptor().getEnumTypes().get(0);
+        }
+
+        private static final Type[] VALUES = values();
+
+        public static Type valueOf(
+            com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+          if (desc.getType() != getDescriptor()) {
+            throw new java.lang.IllegalArgumentException(
+              "EnumValueDescriptor is not for this type.");
+          }
+          return VALUES[desc.getIndex()];
+        }
+
+        private final int index;
+        private final int value;
+
+        private Type(int index, int value) {
+          this.index = index;
+          this.value = value;
+        }
+
+        // @@protoc_insertion_point(enum_scope:mesos.Offer.Operation.Type)
+      }
+
+      public interface LaunchOrBuilder
+          extends com.google.protobuf.MessageOrBuilder {
+
+        // repeated .mesos.TaskInfo task_infos = 1;
+        /**
+         * <code>repeated .mesos.TaskInfo task_infos = 1;</code>
+         */
+        java.util.List<org.apache.mesos.Protos.TaskInfo> 
+            getTaskInfosList();
+        /**
+         * <code>repeated .mesos.TaskInfo task_infos = 1;</code>
+         */
+        org.apache.mesos.Protos.TaskInfo getTaskInfos(int index);
+        /**
+         * <code>repeated .mesos.TaskInfo task_infos = 1;</code>
+         */
+        int getTaskInfosCount();
+        /**
+         * <code>repeated .mesos.TaskInfo task_infos = 1;</code>
+         */
+        java.util.List<? extends org.apache.mesos.Protos.TaskInfoOrBuilder> 
+            getTaskInfosOrBuilderList();
+        /**
+         * <code>repeated .mesos.TaskInfo task_infos = 1;</code>
+         */
+        org.apache.mesos.Protos.TaskInfoOrBuilder getTaskInfosOrBuilder(
+            int index);
+      }
+      /**
+       * Protobuf type {@code mesos.Offer.Operation.Launch}
+       *
+       * <pre>
+       * TODO(vinod): Deprecate this in favor of `LaunchGroup` below.
+       * </pre>
+       */
+      public static final class Launch extends
+          com.google.protobuf.GeneratedMessage
+          implements LaunchOrBuilder {
+        // Use Launch.newBuilder() to construct.
+        private Launch(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+          super(builder);
+          this.unknownFields = builder.getUnknownFields();
+        }
+        private Launch(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+        private static final Launch defaultInstance;
+        public static Launch getDefaultInstance() {
+          return defaultInstance;
+        }
+
+        public Launch getDefaultInstanceForType() {
+          return defaultInstance;
+        }
+
+        private final com.google.protobuf.UnknownFieldSet unknownFields;
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet
+            getUnknownFields() {
+          return this.unknownFields;
+        }
+        private Launch(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          initFields();
+          int mutable_bitField0_ = 0;
+          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+              com.google.protobuf.UnknownFieldSet.newBuilder();
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(input, unknownFields,
+                                         extensionRegistry, tag)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 10: {
+                  if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                    taskInfos_ = new java.util.ArrayList<org.apache.mesos.Protos.TaskInfo>();
+                    mutable_bitField0_ |= 0x00000001;
+                  }
+                  taskInfos_.add(input.readMessage(org.apache.mesos.Protos.TaskInfo.PARSER, extensionRegistry));
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw e.setUnfinishedMessage(this);
+          } catch (java.io.IOException e) {
+            throw new com.google.protobuf.InvalidProtocolBufferException(
+                e.getMessage()).setUnfinishedMessage(this);
+          } finally {
+            if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+              taskInfos_ = java.util.Collections.unmodifiableList(taskInfos_);
+            }
+            this.unknownFields = unknownFields.build();
+            makeExtensionsImmutable();
+          }
+        }
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_Offer_Operation_Launch_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_Offer_Operation_Launch_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.Offer.Operation.Launch.class, org.apache.mesos.Protos.Offer.Operation.Launch.Builder.class);
+        }
+
+        public static com.google.protobuf.Parser<Launch> PARSER =
+            new com.google.protobuf.AbstractParser<Launch>() {
+          public Launch parsePartialFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return new Launch(input, extensionRegistry);
+          }
+        };
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<Launch> getParserForType() {
+          return PARSER;
+        }
+
+        // repeated .mesos.TaskInfo task_infos = 1;
+        public static final int TASK_INFOS_FIELD_NUMBER = 1;
+        private java.util.List<org.apache.mesos.Protos.TaskInfo> taskInfos_;
+        /**
+         * <code>repeated .mesos.TaskInfo task_infos = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.Protos.TaskInfo> getTaskInfosList() {
+          return taskInfos_;
+        }
+        /**
+         * <code>repeated .mesos.TaskInfo task_infos = 1;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.Protos.TaskInfoOrBuilder> 
+            getTaskInfosOrBuilderList() {
+          return taskInfos_;
+        }
+        /**
+         * <code>repeated .mesos.TaskInfo task_infos = 1;</code>
+         */
+        public int getTaskInfosCount() {
+          return taskInfos_.size();
+        }
+        /**
+         * <code>repeated .mesos.TaskInfo task_infos = 1;</code>
+         */
+        public org.apache.mesos.Protos.TaskInfo getTaskInfos(int index) {
+          return taskInfos_.get(index);
+        }
+        /**
+         * <code>repeated .mesos.TaskInfo task_infos = 1;</code>
+         */
+        public org.apache.mesos.Protos.TaskInfoOrBuilder getTaskInfosOrBuilder(
+            int index) {
+          return taskInfos_.get(index);
+        }
+
+        private void initFields() {
+          taskInfos_ = java.util.Collections.emptyList();
+        }
+        private byte memoizedIsInitialized = -1;
+        public final boolean isInitialized() {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized != -1) return isInitialized == 1;
+
+          for (int i = 0; i < getTaskInfosCount(); i++) {
+            if (!getTaskInfos(i).isInitialized()) {
+              memoizedIsInitialized = 0;
+              return false;
+            }
+          }
+          memoizedIsInitialized = 1;
+          return true;
+        }
+
+        public void writeTo(com.google.protobuf.CodedOutputStream output)
+                            throws java.io.IOException {
+          getSerializedSize();
+          for (int i = 0; i < taskInfos_.size(); i++) {
+            output.writeMessage(1, taskInfos_.get(i));
+          }
+          getUnknownFields().writeTo(output);
+        }
+
+        private int memoizedSerializedSize = -1;
+        public int getSerializedSize() {
+          int size = memoizedSerializedSize;
+          if (size != -1) return size;
+
+          size = 0;
+          for (int i = 0; i < taskInfos_.size(); i++) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeMessageSize(1, taskInfos_.get(i));
+          }
+          size += getUnknownFields().getSerializedSize();
+          memoizedSerializedSize = size;
+          return size;
+        }
+
+        private static final long serialVersionUID = 0L;
+        @java.lang.Override
+        protected java.lang.Object writeReplace()
+            throws java.io.ObjectStreamException {
+          return super.writeReplace();
+        }
+
+        public static org.apache.mesos.Protos.Offer.Operation.Launch parseFrom(
+            com.google.protobuf.ByteString data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Launch parseFrom(
+            com.google.protobuf.ByteString data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Launch parseFrom(byte[] data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Launch parseFrom(
+            byte[] data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Launch parseFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Launch parseFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Launch parseDelimitedFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Launch parseDelimitedFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Launch parseFrom(
+            com.google.protobuf.CodedInputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Launch parseFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+
+        public static Builder newBuilder() { return Builder.create(); }
+        public Builder newBuilderForType() { return newBuilder(); }
+        public static Builder newBuilder(org.apache.mesos.Protos.Offer.Operation.Launch prototype) {
+          return newBuilder().mergeFrom(prototype);
+        }
+        public Builder toBuilder() { return newBuilder(this); }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          Builder builder = new Builder(parent);
+          return builder;
+        }
+        /**
+         * Protobuf type {@code mesos.Offer.Operation.Launch}
+         *
+         * <pre>
+         * TODO(vinod): Deprecate this in favor of `LaunchGroup` below.
+         * </pre>
+         */
+        public static final class Builder extends
+            com.google.protobuf.GeneratedMessage.Builder<Builder>
+           implements org.apache.mesos.Protos.Offer.Operation.LaunchOrBuilder {
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.Protos.internal_static_mesos_Offer_Operation_Launch_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.Protos.internal_static_mesos_Offer_Operation_Launch_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.Protos.Offer.Operation.Launch.class, org.apache.mesos.Protos.Offer.Operation.Launch.Builder.class);
+          }
+
+          // Construct using org.apache.mesos.Protos.Offer.Operation.Launch.newBuilder()
+          private Builder() {
+            maybeForceBuilderInitialization();
+          }
+
+          private Builder(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            super(parent);
+            maybeForceBuilderInitialization();
+          }
+          private void maybeForceBuilderInitialization() {
+            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+              getTaskInfosFieldBuilder();
+            }
+          }
+          private static Builder create() {
+            return new Builder();
+          }
+
+          public Builder clear() {
+            super.clear();
+            if (taskInfosBuilder_ == null) {
+              taskInfos_ = java.util.Collections.emptyList();
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              taskInfosBuilder_.clear();
+            }
+            return this;
+          }
+
+          public Builder clone() {
+            return create().mergeFrom(buildPartial());
+          }
+
+          public com.google.protobuf.Descriptors.Descriptor
+              getDescriptorForType() {
+            return org.apache.mesos.Protos.internal_static_mesos_Offer_Operation_Launch_descriptor;
+          }
+
+          public org.apache.mesos.Protos.Offer.Operation.Launch getDefaultInstanceForType() {
+            return org.apache.mesos.Protos.Offer.Operation.Launch.getDefaultInstance();
+          }
+
+          public org.apache.mesos.Protos.Offer.Operation.Launch build() {
+            org.apache.mesos.Protos.Offer.Operation.Launch result = buildPartial();
+            if (!result.isInitialized()) {
+              throw newUninitializedMessageException(result);
+            }
+            return result;
+          }
+
+          public org.apache.mesos.Protos.Offer.Operation.Launch buildPartial() {
+            org.apache.mesos.Protos.Offer.Operation.Launch result = new org.apache.mesos.Protos.Offer.Operation.Launch(this);
+            int from_bitField0_ = bitField0_;
+            if (taskInfosBuilder_ == null) {
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                taskInfos_ = java.util.Collections.unmodifiableList(taskInfos_);
+                bitField0_ = (bitField0_ & ~0x00000001);
+              }
+              result.taskInfos_ = taskInfos_;
+            } else {
+              result.taskInfos_ = taskInfosBuilder_.build();
+            }
+            onBuilt();
+            return result;
+          }
+
+          public Builder mergeFrom(com.google.protobuf.Message other) {
+            if (other instanceof org.apache.mesos.Protos.Offer.Operation.Launch) {
+              return mergeFrom((org.apache.mesos.Protos.Offer.Operation.Launch)other);
+            } else {
+              super.mergeFrom(other);
+              return this;
+            }
+          }
+
+          public Builder mergeFrom(org.apache.mesos.Protos.Offer.Operation.Launch other) {
+            if (other == org.apache.mesos.Protos.Offer.Operation.Launch.getDefaultInstance()) return this;
+            if (taskInfosBuilder_ == null) {
+              if (!other.taskInfos_.isEmpty()) {
+                if (taskInfos_.isEmpty()) {
+                  taskInfos_ = other.taskInfos_;
+                  bitField0_ = (bitField0_ & ~0x00000001);
+                } else {
+                  ensureTaskInfosIsMutable();
+                  taskInfos_.addAll(other.taskInfos_);
+                }
+                onChanged();
+              }
+            } else {
+              if (!other.taskInfos_.isEmpty()) {
+                if (taskInfosBuilder_.isEmpty()) {
+                  taskInfosBuilder_.dispose();
+                  taskInfosBuilder_ = null;
+                  taskInfos_ = other.taskInfos_;
+                  bitField0_ = (bitField0_ & ~0x00000001);
+                  taskInfosBuilder_ = 
+                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                       getTaskInfosFieldBuilder() : null;
+                } else {
+                  taskInfosBuilder_.addAllMessages(other.taskInfos_);
+                }
+              }
+            }
+            this.mergeUnknownFields(other.getUnknownFields());
+            return this;
+          }
+
+          public final boolean isInitialized() {
+            for (int i = 0; i < getTaskInfosCount(); i++) {
+              if (!getTaskInfos(i).isInitialized()) {
+                
+                return false;
+              }
+            }
+            return true;
+          }
+
+          public Builder mergeFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            org.apache.mesos.Protos.Offer.Operation.Launch parsedMessage = null;
+            try {
+              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              parsedMessage = (org.apache.mesos.Protos.Offer.Operation.Launch) e.getUnfinishedMessage();
+              throw e;
+            } finally {
+              if (parsedMessage != null) {
+                mergeFrom(parsedMessage);
+              }
+            }
+            return this;
+          }
+          private int bitField0_;
+
+          // repeated .mesos.TaskInfo task_infos = 1;
+          private java.util.List<org.apache.mesos.Protos.TaskInfo> taskInfos_ =
+            java.util.Collections.emptyList();
+          private void ensureTaskInfosIsMutable() {
+            if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+              taskInfos_ = new java.util.ArrayList<org.apache.mesos.Protos.TaskInfo>(taskInfos_);
+              bitField0_ |= 0x00000001;
+             }
+          }
+
+          private com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.TaskInfo, org.apache.mesos.Protos.TaskInfo.Builder, org.apache.mesos.Protos.TaskInfoOrBuilder> taskInfosBuilder_;
+
+          /**
+           * <code>repeated .mesos.TaskInfo task_infos = 1;</code>
+           */
+          public java.util.List<org.apache.mesos.Protos.TaskInfo> getTaskInfosList() {
+            if (taskInfosBuilder_ == null) {
+              return java.util.Collections.unmodifiableList(taskInfos_);
+            } else {
+              return taskInfosBuilder_.getMessageList();
+            }
+          }
+          /**
+           * <code>repeated .mesos.TaskInfo task_infos = 1;</code>
+           */
+          public int getTaskInfosCount() {
+            if (taskInfosBuilder_ == null) {
+              return taskInfos_.size();
+            } else {
+              return taskInfosBuilder_.getCount();
+            }
+          }
+          /**
+           * <code>repeated .mesos.TaskInfo task_infos = 1;</code>
+           */
+          public org.apache.mesos.Protos.TaskInfo getTaskInfos(int index) {
+            if (taskInfosBuilder_ == null) {
+              return taskInfos_.get(index);
+            } else {
+              return taskInfosBuilder_.getMessage(index);
+            }
+          }
+          /**
+           * <code>repeated .mesos.TaskInfo task_infos = 1;</code>
+           */
+          public Builder setTaskInfos(
+              int index, org.apache.mesos.Protos.TaskInfo value) {
+            if (taskInfosBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureTaskInfosIsMutable();
+              taskInfos_.set(index, value);
+              onChanged();
+            } else {
+              taskInfosBuilder_.setMessage(index, value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.TaskInfo task_infos = 1;</code>
+           */
+          public Builder setTaskInfos(
+              int index, org.apache.mesos.Protos.TaskInfo.Builder builderForValue) {
+            if (taskInfosBuilder_ == null) {
+              ensureTaskInfosIsMutable();
+              taskInfos_.set(index, builderForValue.build());
+              onChanged();
+            } else {
+              taskInfosBuilder_.setMessage(index, builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.TaskInfo task_infos = 1;</code>
+           */
+          public Builder addTaskInfos(org.apache.mesos.Protos.TaskInfo value) {
+            if (taskInfosBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureTaskInfosIsMutable();
+              taskInfos_.add(value);
+              onChanged();
+            } else {
+              taskInfosBuilder_.addMessage(value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.TaskInfo task_infos = 1;</code>
+           */
+          public Builder addTaskInfos(
+              int index, org.apache.mesos.Protos.TaskInfo value) {
+            if (taskInfosBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureTaskInfosIsMutable();
+              taskInfos_.add(index, value);
+              onChanged();
+            } else {
+              taskInfosBuilder_.addMessage(index, value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.TaskInfo task_infos = 1;</code>
+           */
+          public Builder addTaskInfos(
+              org.apache.mesos.Protos.TaskInfo.Builder builderForValue) {
+            if (taskInfosBuilder_ == null) {
+              ensureTaskInfosIsMutable();
+              taskInfos_.add(builderForValue.build());
+              onChanged();
+            } else {
+              taskInfosBuilder_.addMessage(builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.TaskInfo task_infos = 1;</code>
+           */
+          public Builder addTaskInfos(
+              int index, org.apache.mesos.Protos.TaskInfo.Builder builderForValue) {
+            if (taskInfosBuilder_ == null) {
+              ensureTaskInfosIsMutable();
+              taskInfos_.add(index, builderForValue.build());
+              onChanged();
+            } else {
+              taskInfosBuilder_.addMessage(index, builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.TaskInfo task_infos = 1;</code>
+           */
+          public Builder addAllTaskInfos(
+              java.lang.Iterable<? extends org.apache.mesos.Protos.TaskInfo> values) {
+            if (taskInfosBuilder_ == null) {
+              ensureTaskInfosIsMutable();
+              super.addAll(values, taskInfos_);
+              onChanged();
+            } else {
+              taskInfosBuilder_.addAllMessages(values);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.TaskInfo task_infos = 1;</code>
+           */
+          public Builder clearTaskInfos() {
+            if (taskInfosBuilder_ == null) {
+              taskInfos_ = java.util.Collections.emptyList();
+              bitField0_ = (bitField0_ & ~0x00000001);
+              onChanged();
+            } else {
+              taskInfosBuilder_.clear();
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.TaskInfo task_infos = 1;</code>
+           */
+          public Builder removeTaskInfos(int index) {
+            if (taskInfosBuilder_ == null) {
+              ensureTaskInfosIsMutable();
+              taskInfos_.remove(index);
+              onChanged();
+            } else {
+              taskInfosBuilder_.remove(index);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.TaskInfo task_infos = 1;</code>
+           */
+          public org.apache.mesos.Protos.TaskInfo.Builder getTaskInfosBuilder(
+              int index) {
+            return getTaskInfosFieldBuilder().getBuilder(index);
+          }
+          /**
+           * <code>repeated .mesos.TaskInfo task_infos = 1;</code>
+           */
+          public org.apache.mesos.Protos.TaskInfoOrBuilder getTaskInfosOrBuilder(
+              int index) {
+            if (taskInfosBuilder_ == null) {
+              return taskInfos_.get(index);  } else {
+              return taskInfosBuilder_.getMessageOrBuilder(index);
+            }
+          }
+          /**
+           * <code>repeated .mesos.TaskInfo task_infos = 1;</code>
+           */
+          public java.util.List<? extends org.apache.mesos.Protos.TaskInfoOrBuilder> 
+               getTaskInfosOrBuilderList() {
+            if (taskInfosBuilder_ != null) {
+              return taskInfosBuilder_.getMessageOrBuilderList();
+            } else {
+              return java.util.Collections.unmodifiableList(taskInfos_);
+            }
+          }
+          /**
+           * <code>repeated .mesos.TaskInfo task_infos = 1;</code>
+           */
+          public org.apache.mesos.Protos.TaskInfo.Builder addTaskInfosBuilder() {
+            return getTaskInfosFieldBuilder().addBuilder(
+                org.apache.mesos.Protos.TaskInfo.getDefaultInstance());
+          }
+          /**
+           * <code>repeated .mesos.TaskInfo task_infos = 1;</code>
+           */
+          public org.apache.mesos.Protos.TaskInfo.Builder addTaskInfosBuilder(
+              int index) {
+            return getTaskInfosFieldBuilder().addBuilder(
+                index, org.apache.mesos.Protos.TaskInfo.getDefaultInstance());
+          }
+          /**
+           * <code>repeated .mesos.TaskInfo task_infos = 1;</code>
+           */
+          public java.util.List<org.apache.mesos.Protos.TaskInfo.Builder> 
+               getTaskInfosBuilderList() {
+            return getTaskInfosFieldBuilder().getBuilderList();
+          }
+          private com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.TaskInfo, org.apache.mesos.Protos.TaskInfo.Builder, org.apache.mesos.Protos.TaskInfoOrBuilder> 
+              getTaskInfosFieldBuilder() {
+            if (taskInfosBuilder_ == null) {
+              taskInfosBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                  org.apache.mesos.Protos.TaskInfo, org.apache.mesos.Protos.TaskInfo.Builder, org.apache.mesos.Protos.TaskInfoOrBuilder>(
+                      taskInfos_,
+                      ((bitField0_ & 0x00000001) == 0x00000001),
+                      getParentForChildren(),
+                      isClean());
+              taskInfos_ = null;
+            }
+            return taskInfosBuilder_;
+          }
+
+          // @@protoc_insertion_point(builder_scope:mesos.Offer.Operation.Launch)
+        }
+
+        static {
+          defaultInstance = new Launch(true);
+          defaultInstance.initFields();
+        }
+
+        // @@protoc_insertion_point(class_scope:mesos.Offer.Operation.Launch)
+      }
+
+      public interface LaunchGroupOrBuilder
+          extends com.google.protobuf.MessageOrBuilder {
+
+        // required .mesos.ExecutorInfo executor = 1;
+        /**
+         * <code>required .mesos.ExecutorInfo executor = 1;</code>
+         */
+        boolean hasExecutor();
+        /**
+         * <code>required .mesos.ExecutorInfo executor = 1;</code>
+         */
+        org.apache.mesos.Protos.ExecutorInfo getExecutor();
+        /**
+         * <code>required .mesos.ExecutorInfo executor = 1;</code>
+         */
+        org.apache.mesos.Protos.ExecutorInfoOrBuilder getExecutorOrBuilder();
+
+        // required .mesos.TaskGroupInfo task_group = 2;
+        /**
+         * <code>required .mesos.TaskGroupInfo task_group = 2;</code>
+         */
+        boolean hasTaskGroup();
+        /**
+         * <code>required .mesos.TaskGroupInfo task_group = 2;</code>
+         */
+        org.apache.mesos.Protos.TaskGroupInfo getTaskGroup();
+        /**
+         * <code>required .mesos.TaskGroupInfo task_group = 2;</code>
+         */
+        org.apache.mesos.Protos.TaskGroupInfoOrBuilder getTaskGroupOrBuilder();
+      }
+      /**
+       * Protobuf type {@code mesos.Offer.Operation.LaunchGroup}
+       *
+       * <pre>
+       * Unlike `Launch` above, all the tasks in a `task_group` are
+       * atomically delivered to an executor.
+       *
+       * `NetworkInfo` set on executor will be shared by all tasks in
+       * the task group.
+       *
+       * TODO(vinod): Any volumes set on executor could be used by a
+       * task by explicitly setting `Volume.source` in its resources.
+       * </pre>
+       */
+      public static final class LaunchGroup extends
+          com.google.protobuf.GeneratedMessage
+          implements LaunchGroupOrBuilder {
+        // Use LaunchGroup.newBuilder() to construct.
+        private LaunchGroup(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+          super(builder);
+          this.unknownFields = builder.getUnknownFields();
+        }
+        private LaunchGroup(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+        private static final LaunchGroup defaultInstance;
+        public static LaunchGroup getDefaultInstance() {
+          return defaultInstance;
+        }
+
+        public LaunchGroup getDefaultInstanceForType() {
+          return defaultInstance;
+        }
+
+        private final com.google.protobuf.UnknownFieldSet unknownFields;
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet
+            getUnknownFields() {
+          return this.unknownFields;
+        }
+        private LaunchGroup(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          initFields();
+          int mutable_bitField0_ = 0;
+          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+              com.google.protobuf.UnknownFieldSet.newBuilder();
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(input, unknownFields,
+                                         extensionRegistry, tag)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 10: {
+                  org.apache.mesos.Protos.ExecutorInfo.Builder subBuilder = null;
+                  if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                    subBuilder = executor_.toBuilder();
+                  }
+                  executor_ = input.readMessage(org.apache.mesos.Protos.ExecutorInfo.PARSER, extensionRegistry);
+                  if (subBuilder != null) {
+                    subBuilder.mergeFrom(executor_);
+                    executor_ = subBuilder.buildPartial();
+                  }
+                  bitField0_ |= 0x00000001;
+                  break;
+                }
+                case 18: {
+                  org.apache.mesos.Protos.TaskGroupInfo.Builder subBuilder = null;
+                  if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                    subBuilder = taskGroup_.toBuilder();
+                  }
+                  taskGroup_ = input.readMessage(org.apache.mesos.Protos.TaskGroupInfo.PARSER, extensionRegistry);
+                  if (subBuilder != null) {
+                    subBuilder.mergeFrom(taskGroup_);
+                    taskGroup_ = subBuilder.buildPartial();
+                  }
+                  bitField0_ |= 0x00000002;
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw e.setUnfinishedMessage(this);
+          } catch (java.io.IOException e) {
+            throw new com.google.protobuf.InvalidProtocolBufferException(
+                e.getMessage()).setUnfinishedMessage(this);
+          } finally {
+            this.unknownFields = unknownFields.build();
+            makeExtensionsImmutable();
+          }
+        }
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_Offer_Operation_LaunchGroup_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_Offer_Operation_LaunchGroup_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.Offer.Operation.LaunchGroup.class, org.apache.mesos.Protos.Offer.Operation.LaunchGroup.Builder.class);
+        }
+
+        public static com.google.protobuf.Parser<LaunchGroup> PARSER =
+            new com.google.protobuf.AbstractParser<LaunchGroup>() {
+          public LaunchGroup parsePartialFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return new LaunchGroup(input, extensionRegistry);
+          }
+        };
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<LaunchGroup> getParserForType() {
+          return PARSER;
+        }
+
+        private int bitField0_;
+        // required .mesos.ExecutorInfo executor = 1;
+        public static final int EXECUTOR_FIELD_NUMBER = 1;
+        private org.apache.mesos.Protos.ExecutorInfo executor_;
+        /**
+         * <code>required .mesos.ExecutorInfo executor = 1;</code>
+         */
+        public boolean hasExecutor() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.ExecutorInfo executor = 1;</code>
+         */
+        public org.apache.mesos.Protos.ExecutorInfo getExecutor() {
+          return executor_;
+        }
+        /**
+         * <code>required .mesos.ExecutorInfo executor = 1;</code>
+         */
+        public org.apache.mesos.Protos.ExecutorInfoOrBuilder getExecutorOrBuilder() {
+          return executor_;
+        }
+
+        // required .mesos.TaskGroupInfo task_group = 2;
+        public static final int TASK_GROUP_FIELD_NUMBER = 2;
+        private org.apache.mesos.Protos.TaskGroupInfo taskGroup_;
+        /**
+         * <code>required .mesos.TaskGroupInfo task_group = 2;</code>
+         */
+        public boolean hasTaskGroup() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>required .mesos.TaskGroupInfo task_group = 2;</code>
+         */
+        public org.apache.mesos.Protos.TaskGroupInfo getTaskGroup() {
+          return taskGroup_;
+        }
+        /**
+         * <code>required .mesos.TaskGroupInfo task_group = 2;</code>
+         */
+        public org.apache.mesos.Protos.TaskGroupInfoOrBuilder getTaskGroupOrBuilder() {
+          return taskGroup_;
+        }
+
+        private void initFields() {
+          executor_ = org.apache.mesos.Protos.ExecutorInfo.getDefaultInstance();
+          taskGroup_ = org.apache.mesos.Protos.TaskGroupInfo.getDefaultInstance();
+        }
+        private byte memoizedIsInitialized = -1;
+        public final boolean isInitialized() {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized != -1) return isInitialized == 1;
+
+          if (!hasExecutor()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+          if (!hasTaskGroup()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+          if (!getExecutor().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+          if (!getTaskGroup().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+          memoizedIsInitialized = 1;
+          return true;
+        }
+
+        public void writeTo(com.google.protobuf.CodedOutputStream output)
+                            throws java.io.IOException {
+          getSerializedSize();
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            output.writeMessage(1, executor_);
+          }
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            output.writeMessage(2, taskGroup_);
+          }
+          getUnknownFields().writeTo(output);
+        }
+
+        private int memoizedSerializedSize = -1;
+        public int getSerializedSize() {
+          int size = memoizedSerializedSize;
+          if (size != -1) return size;
+
+          size = 0;
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeMessageSize(1, executor_);
+          }
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeMessageSize(2, taskGroup_);
+          }
+          size += getUnknownFields().getSerializedSize();
+          memoizedSerializedSize = size;
+          return size;
+        }
+
+        private static final long serialVersionUID = 0L;
+        @java.lang.Override
+        protected java.lang.Object writeReplace()
+            throws java.io.ObjectStreamException {
+          return super.writeReplace();
+        }
+
+        public static org.apache.mesos.Protos.Offer.Operation.LaunchGroup parseFrom(
+            com.google.protobuf.ByteString data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.LaunchGroup parseFrom(
+            com.google.protobuf.ByteString data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.LaunchGroup parseFrom(byte[] data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.LaunchGroup parseFrom(
+            byte[] data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.LaunchGroup parseFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.LaunchGroup parseFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.LaunchGroup parseDelimitedFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.LaunchGroup parseDelimitedFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.LaunchGroup parseFrom(
+            com.google.protobuf.CodedInputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.LaunchGroup parseFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+
+        public static Builder newBuilder() { return Builder.create(); }
+        public Builder newBuilderForType() { return newBuilder(); }
+        public static Builder newBuilder(org.apache.mesos.Protos.Offer.Operation.LaunchGroup prototype) {
+          return newBuilder().mergeFrom(prototype);
+        }
+        public Builder toBuilder() { return newBuilder(this); }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          Builder builder = new Builder(parent);
+          return builder;
+        }
+        /**
+         * Protobuf type {@code mesos.Offer.Operation.LaunchGroup}
+         *
+         * <pre>
+         * Unlike `Launch` above, all the tasks in a `task_group` are
+         * atomically delivered to an executor.
+         *
+         * `NetworkInfo` set on executor will be shared by all tasks in
+         * the task group.
+         *
+         * TODO(vinod): Any volumes set on executor could be used by a
+         * task by explicitly setting `Volume.source` in its resources.
+         * </pre>
+         */
+        public static final class Builder extends
+            com.google.protobuf.GeneratedMessage.Builder<Builder>
+           implements org.apache.mesos.Protos.Offer.Operation.LaunchGroupOrBuilder {
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.Protos.internal_static_mesos_Offer_Operation_LaunchGroup_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.Protos.internal_static_mesos_Offer_Operation_LaunchGroup_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.Protos.Offer.Operation.LaunchGroup.class, org.apache.mesos.Protos.Offer.Operation.LaunchGroup.Builder.class);
+          }
+
+          // Construct using org.apache.mesos.Protos.Offer.Operation.LaunchGroup.newBuilder()
+          private Builder() {
+            maybeForceBuilderInitialization();
+          }
+
+          private Builder(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            super(parent);
+            maybeForceBuilderInitialization();
+          }
+          private void maybeForceBuilderInitialization() {
+            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+              getExecutorFieldBuilder();
+              getTaskGroupFieldBuilder();
+            }
+          }
+          private static Builder create() {
+            return new Builder();
+          }
+
+          public Builder clear() {
+            super.clear();
+            if (executorBuilder_ == null) {
+              executor_ = org.apache.mesos.Protos.ExecutorInfo.getDefaultInstance();
+            } else {
+              executorBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000001);
+            if (taskGroupBuilder_ == null) {
+              taskGroup_ = org.apache.mesos.Protos.TaskGroupInfo.getDefaultInstance();
+            } else {
+              taskGroupBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000002);
+            return this;
+          }
+
+          public Builder clone() {
+            return create().mergeFrom(buildPartial());
+          }
+
+          public com.google.protobuf.Descriptors.Descriptor
+              getDescriptorForType() {
+            return org.apache.mesos.Protos.internal_static_mesos_Offer_Operation_LaunchGroup_descriptor;
+          }
+
+          public org.apache.mesos.Protos.Offer.Operation.LaunchGroup getDefaultInstanceForType() {
+            return org.apache.mesos.Protos.Offer.Operation.LaunchGroup.getDefaultInstance();
+          }
+
+          public org.apache.mesos.Protos.Offer.Operation.LaunchGroup build() {
+            org.apache.mesos.Protos.Offer.Operation.LaunchGroup result = buildPartial();
+            if (!result.isInitialized()) {
+              throw newUninitializedMessageException(result);
+            }
+            return result;
+          }
+
+          public org.apache.mesos.Protos.Offer.Operation.LaunchGroup buildPartial() {
+            org.apache.mesos.Protos.Offer.Operation.LaunchGroup result = new org.apache.mesos.Protos.Offer.Operation.LaunchGroup(this);
+            int from_bitField0_ = bitField0_;
+            int to_bitField0_ = 0;
+            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+              to_bitField0_ |= 0x00000001;
+            }
+            if (executorBuilder_ == null) {
+              result.executor_ = executor_;
+            } else {
+              result.executor_ = executorBuilder_.build();
+            }
+            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+              to_bitField0_ |= 0x00000002;
+            }
+            if (taskGroupBuilder_ == null) {
+              result.taskGroup_ = taskGroup_;
+            } else {
+              result.taskGroup_ = taskGroupBuilder_.build();
+            }
+            result.bitField0_ = to_bitField0_;
+            onBuilt();
+            return result;
+          }
+
+          public Builder mergeFrom(com.google.protobuf.Message other) {
+            if (other instanceof org.apache.mesos.Protos.Offer.Operation.LaunchGroup) {
+              return mergeFrom((org.apache.mesos.Protos.Offer.Operation.LaunchGroup)other);
+            } else {
+              super.mergeFrom(other);
+              return this;
+            }
+          }
+
+          public Builder mergeFrom(org.apache.mesos.Protos.Offer.Operation.LaunchGroup other) {
+            if (other == org.apache.mesos.Protos.Offer.Operation.LaunchGroup.getDefaultInstance()) return this;
+            if (other.hasExecutor()) {
+              mergeExecutor(other.getExecutor());
+            }
+            if (other.hasTaskGroup()) {
+              mergeTaskGroup(other.getTaskGroup());
+            }
+            this.mergeUnknownFields(other.getUnknownFields());
+            return this;
+          }
+
+          public final boolean isInitialized() {
+            if (!hasExecutor()) {
+              
+              return false;
+            }
+            if (!hasTaskGroup()) {
+              
+              return false;
+            }
+            if (!getExecutor().isInitialized()) {
+              
+              return false;
+            }
+            if (!getTaskGroup().isInitialized()) {
+              
+              return false;
+            }
+            return true;
+          }
+
+          public Builder mergeFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            org.apache.mesos.Protos.Offer.Operation.LaunchGroup parsedMessage = null;
+            try {
+              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              parsedMessage = (org.apache.mesos.Protos.Offer.Operation.LaunchGroup) e.getUnfinishedMessage();
+              throw e;
+            } finally {
+              if (parsedMessage != null) {
+                mergeFrom(parsedMessage);
+              }
+            }
+            return this;
+          }
+          private int bitField0_;
+
+          // required .mesos.ExecutorInfo executor = 1;
+          private org.apache.mesos.Protos.ExecutorInfo executor_ = org.apache.mesos.Protos.ExecutorInfo.getDefaultInstance();
+          private com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.ExecutorInfo, org.apache.mesos.Protos.ExecutorInfo.Builder, org.apache.mesos.Protos.ExecutorInfoOrBuilder> executorBuilder_;
+          /**
+           * <code>required .mesos.ExecutorInfo executor = 1;</code>
+           */
+          public boolean hasExecutor() {
+            return ((bitField0_ & 0x00000001) == 0x00000001);
+          }
+          /**
+           * <code>required .mesos.ExecutorInfo executor = 1;</code>
+           */
+          public org.apache.mesos.Protos.ExecutorInfo getExecutor() {
+            if (executorBuilder_ == null) {
+              return executor_;
+            } else {
+              return executorBuilder_.getMessage();
+            }
+          }
+          /**
+           * <code>required .mesos.ExecutorInfo executor = 1;</code>
+           */
+          public Builder setExecutor(org.apache.mesos.Protos.ExecutorInfo value) {
+            if (executorBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              executor_ = value;
+              onChanged();
+            } else {
+              executorBuilder_.setMessage(value);
+            }
+            bitField0_ |= 0x00000001;
+            return this;
+          }
+          /**
+           * <code>required .mesos.ExecutorInfo executor = 1;</code>
+           */
+          public Builder setExecutor(
+              org.apache.mesos.Protos.ExecutorInfo.Builder builderForValue) {
+            if (executorBuilder_ == null) {
+              executor_ = builderForValue.build();
+              onChanged();
+            } else {
+              executorBuilder_.setMessage(builderForValue.build());
+            }
+            bitField0_ |= 0x00000001;
+            return this;
+          }
+          /**
+           * <code>required .mesos.ExecutorInfo executor = 1;</code>
+           */
+          public Builder mergeExecutor(org.apache.mesos.Protos.ExecutorInfo value) {
+            if (executorBuilder_ == null) {
+              if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                  executor_ != org.apache.mesos.Protos.ExecutorInfo.getDefaultInstance()) {
+                executor_ =
+                  org.apache.mesos.Protos.ExecutorInfo.newBuilder(executor_).mergeFrom(value).buildPartial();
+              } else {
+                executor_ = value;
+              }
+              onChanged();
+            } else {
+              executorBuilder_.mergeFrom(value);
+            }
+            bitField0_ |= 0x00000001;
+            return this;
+          }
+          /**
+           * <code>required .mesos.ExecutorInfo executor = 1;</code>
+           */
+          public Builder clearExecutor() {
+            if (executorBuilder_ == null) {
+              executor_ = org.apache.mesos.Protos.ExecutorInfo.getDefaultInstance();
+              onChanged();
+            } else {
+              executorBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000001);
+            return this;
+          }
+          /**
+           * <code>required .mesos.ExecutorInfo executor = 1;</code>
+           */
+          public org.apache.mesos.Protos.ExecutorInfo.Builder getExecutorBuilder() {
+            bitField0_ |= 0x00000001;
+            onChanged();
+            return getExecutorFieldBuilder().getBuilder();
+          }
+          /**
+           * <code>required .mesos.ExecutorInfo executor = 1;</code>
+           */
+          public org.apache.mesos.Protos.ExecutorInfoOrBuilder getExecutorOrBuilder() {
+            if (executorBuilder_ != null) {
+              return executorBuilder_.getMessageOrBuilder();
+            } else {
+              return executor_;
+            }
+          }
+          /**
+           * <code>required .mesos.ExecutorInfo executor = 1;</code>
+           */
+          private com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.ExecutorInfo, org.apache.mesos.Protos.ExecutorInfo.Builder, org.apache.mesos.Protos.ExecutorInfoOrBuilder> 
+              getExecutorFieldBuilder() {
+            if (executorBuilder_ == null) {
+              executorBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                  org.apache.mesos.Protos.ExecutorInfo, org.apache.mesos.Protos.ExecutorInfo.Builder, org.apache.mesos.Protos.ExecutorInfoOrBuilder>(
+                      executor_,
+                      getParentForChildren(),
+                      isClean());
+              executor_ = null;
+            }
+            return executorBuilder_;
+          }
+
+          // required .mesos.TaskGroupInfo task_group = 2;
+          private org.apache.mesos.Protos.TaskGroupInfo taskGroup_ = org.apache.mesos.Protos.TaskGroupInfo.getDefaultInstance();
+          private com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.TaskGroupInfo, org.apache.mesos.Protos.TaskGroupInfo.Builder, org.apache.mesos.Protos.TaskGroupInfoOrBuilder> taskGroupBuilder_;
+          /**
+           * <code>required .mesos.TaskGroupInfo task_group = 2;</code>
+           */
+          public boolean hasTaskGroup() {
+            return ((bitField0_ & 0x00000002) == 0x00000002);
+          }
+          /**
+           * <code>required .mesos.TaskGroupInfo task_group = 2;</code>
+           */
+          public org.apache.mesos.Protos.TaskGroupInfo getTaskGroup() {
+            if (taskGroupBuilder_ == null) {
+              return taskGroup_;
+            } else {
+              return taskGroupBuilder_.getMessage();
+            }
+          }
+          /**
+           * <code>required .mesos.TaskGroupInfo task_group = 2;</code>
+           */
+          public Builder setTaskGroup(org.apache.mesos.Protos.TaskGroupInfo value) {
+            if (taskGroupBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              taskGroup_ = value;
+              onChanged();
+            } else {
+              taskGroupBuilder_.setMessage(value);
+            }
+            bitField0_ |= 0x00000002;
+            return this;
+          }
+          /**
+           * <code>required .mesos.TaskGroupInfo task_group = 2;</code>
+           */
+          public Builder setTaskGroup(
+              org.apache.mesos.Protos.TaskGroupInfo.Builder builderForValue) {
+            if (taskGroupBuilder_ == null) {
+              taskGroup_ = builderForValue.build();
+              onChanged();
+            } else {
+              taskGroupBuilder_.setMessage(builderForValue.build());
+            }
+            bitField0_ |= 0x00000002;
+            return this;
+          }
+          /**
+           * <code>required .mesos.TaskGroupInfo task_group = 2;</code>
+           */
+          public Builder mergeTaskGroup(org.apache.mesos.Protos.TaskGroupInfo value) {
+            if (taskGroupBuilder_ == null) {
+              if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                  taskGroup_ != org.apache.mesos.Protos.TaskGroupInfo.getDefaultInstance()) {
+                taskGroup_ =
+                  org.apache.mesos.Protos.TaskGroupInfo.newBuilder(taskGroup_).mergeFrom(value).buildPartial();
+              } else {
+                taskGroup_ = value;
+              }
+              onChanged();
+            } else {
+              taskGroupBuilder_.mergeFrom(value);
+            }
+            bitField0_ |= 0x00000002;
+            return this;
+          }
+          /**
+           * <code>required .mesos.TaskGroupInfo task_group = 2;</code>
+           */
+          public Builder clearTaskGroup() {
+            if (taskGroupBuilder_ == null) {
+              taskGroup_ = org.apache.mesos.Protos.TaskGroupInfo.getDefaultInstance();
+              onChanged();
+            } else {
+              taskGroupBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000002);
+            return this;
+          }
+          /**
+           * <code>required .mesos.TaskGroupInfo task_group = 2;</code>
+           */
+          public org.apache.mesos.Protos.TaskGroupInfo.Builder getTaskGroupBuilder() {
+            bitField0_ |= 0x00000002;
+            onChanged();
+            return getTaskGroupFieldBuilder().getBuilder();
+          }
+          /**
+           * <code>required .mesos.TaskGroupInfo task_group = 2;</code>
+           */
+          public org.apache.mesos.Protos.TaskGroupInfoOrBuilder getTaskGroupOrBuilder() {
+            if (taskGroupBuilder_ != null) {
+              return taskGroupBuilder_.getMessageOrBuilder();
+            } else {
+              return taskGroup_;
+            }
+          }
+          /**
+           * <code>required .mesos.TaskGroupInfo task_group = 2;</code>
+           */
+          private com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.TaskGroupInfo, org.apache.mesos.Protos.TaskGroupInfo.Builder, org.apache.mesos.Protos.TaskGroupInfoOrBuilder> 
+              getTaskGroupFieldBuilder() {
+            if (taskGroupBuilder_ == null) {
+              taskGroupBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                  org.apache.mesos.Protos.TaskGroupInfo, org.apache.mesos.Protos.TaskGroupInfo.Builder, org.apache.mesos.Protos.TaskGroupInfoOrBuilder>(
+                      taskGroup_,
+                      getParentForChildren(),
+                      isClean());
+              taskGroup_ = null;
+            }
+            return taskGroupBuilder_;
+          }
+
+          // @@protoc_insertion_point(builder_scope:mesos.Offer.Operation.LaunchGroup)
+        }
+
+        static {
+          defaultInstance = new LaunchGroup(true);
+          defaultInstance.initFields();
+        }
+
+        // @@protoc_insertion_point(class_scope:mesos.Offer.Operation.LaunchGroup)
+      }
+
+      public interface ReserveOrBuilder
+          extends com.google.protobuf.MessageOrBuilder {
+
+        // repeated .mesos.Resource resources = 1;
+        /**
+         * <code>repeated .mesos.Resource resources = 1;</code>
+         */
+        java.util.List<org.apache.mesos.Protos.Resource> 
+            getResourcesList();
+        /**
+         * <code>repeated .mesos.Resource resources = 1;</code>
+         */
+        org.apache.mesos.Protos.Resource getResources(int index);
+        /**
+         * <code>repeated .mesos.Resource resources = 1;</code>
+         */
+        int getResourcesCount();
+        /**
+         * <code>repeated .mesos.Resource resources = 1;</code>
+         */
+        java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+            getResourcesOrBuilderList();
+        /**
+         * <code>repeated .mesos.Resource resources = 1;</code>
+         */
+        org.apache.mesos.Protos.ResourceOrBuilder getResourcesOrBuilder(
+            int index);
+      }
+      /**
+       * Protobuf type {@code mesos.Offer.Operation.Reserve}
+       */
+      public static final class Reserve extends
+          com.google.protobuf.GeneratedMessage
+          implements ReserveOrBuilder {
+        // Use Reserve.newBuilder() to construct.
+        private Reserve(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+          super(builder);
+          this.unknownFields = builder.getUnknownFields();
+        }
+        private Reserve(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+        private static final Reserve defaultInstance;
+        public static Reserve getDefaultInstance() {
+          return defaultInstance;
+        }
+
+        public Reserve getDefaultInstanceForType() {
+          return defaultInstance;
+        }
+
+        private final com.google.protobuf.UnknownFieldSet unknownFields;
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet
+            getUnknownFields() {
+          return this.unknownFields;
+        }
+        private Reserve(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          initFields();
+          int mutable_bitField0_ = 0;
+          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+              com.google.protobuf.UnknownFieldSet.newBuilder();
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(input, unknownFields,
+                                         extensionRegistry, tag)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 10: {
+                  if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                    resources_ = new java.util.ArrayList<org.apache.mesos.Protos.Resource>();
+                    mutable_bitField0_ |= 0x00000001;
+                  }
+                  resources_.add(input.readMessage(org.apache.mesos.Protos.Resource.PARSER, extensionRegistry));
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw e.setUnfinishedMessage(this);
+          } catch (java.io.IOException e) {
+            throw new com.google.protobuf.InvalidProtocolBufferException(
+                e.getMessage()).setUnfinishedMessage(this);
+          } finally {
+            if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+              resources_ = java.util.Collections.unmodifiableList(resources_);
+            }
+            this.unknownFields = unknownFields.build();
+            makeExtensionsImmutable();
+          }
+        }
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_Offer_Operation_Reserve_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_Offer_Operation_Reserve_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.Offer.Operation.Reserve.class, org.apache.mesos.Protos.Offer.Operation.Reserve.Builder.class);
+        }
+
+        public static com.google.protobuf.Parser<Reserve> PARSER =
+            new com.google.protobuf.AbstractParser<Reserve>() {
+          public Reserve parsePartialFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return new Reserve(input, extensionRegistry);
+          }
+        };
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<Reserve> getParserForType() {
+          return PARSER;
+        }
+
+        // repeated .mesos.Resource resources = 1;
+        public static final int RESOURCES_FIELD_NUMBER = 1;
+        private java.util.List<org.apache.mesos.Protos.Resource> resources_;
+        /**
+         * <code>repeated .mesos.Resource resources = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.Protos.Resource> getResourcesList() {
+          return resources_;
+        }
+        /**
+         * <code>repeated .mesos.Resource resources = 1;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+            getResourcesOrBuilderList() {
+          return resources_;
+        }
+        /**
+         * <code>repeated .mesos.Resource resources = 1;</code>
+         */
+        public int getResourcesCount() {
+          return resources_.size();
+        }
+        /**
+         * <code>repeated .mesos.Resource resources = 1;</code>
+         */
+        public org.apache.mesos.Protos.Resource getResources(int index) {
+          return resources_.get(index);
+        }
+        /**
+         * <code>repeated .mesos.Resource resources = 1;</code>
+         */
+        public org.apache.mesos.Protos.ResourceOrBuilder getResourcesOrBuilder(
+            int index) {
+          return resources_.get(index);
+        }
+
+        private void initFields() {
+          resources_ = java.util.Collections.emptyList();
+        }
+        private byte memoizedIsInitialized = -1;
+        public final boolean isInitialized() {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized != -1) return isInitialized == 1;
+
+          for (int i = 0; i < getResourcesCount(); i++) {
+            if (!getResources(i).isInitialized()) {
+              memoizedIsInitialized = 0;
+              return false;
+            }
+          }
+          memoizedIsInitialized = 1;
+          return true;
+        }
+
+        public void writeTo(com.google.protobuf.CodedOutputStream output)
+                            throws java.io.IOException {
+          getSerializedSize();
+          for (int i = 0; i < resources_.size(); i++) {
+            output.writeMessage(1, resources_.get(i));
+          }
+          getUnknownFields().writeTo(output);
+        }
+
+        private int memoizedSerializedSize = -1;
+        public int getSerializedSize() {
+          int size = memoizedSerializedSize;
+          if (size != -1) return size;
+
+          size = 0;
+          for (int i = 0; i < resources_.size(); i++) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeMessageSize(1, resources_.get(i));
+          }
+          size += getUnknownFields().getSerializedSize();
+          memoizedSerializedSize = size;
+          return size;
+        }
+
+        private static final long serialVersionUID = 0L;
+        @java.lang.Override
+        protected java.lang.Object writeReplace()
+            throws java.io.ObjectStreamException {
+          return super.writeReplace();
+        }
+
+        public static org.apache.mesos.Protos.Offer.Operation.Reserve parseFrom(
+            com.google.protobuf.ByteString data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Reserve parseFrom(
+            com.google.protobuf.ByteString data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Reserve parseFrom(byte[] data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Reserve parseFrom(
+            byte[] data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Reserve parseFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Reserve parseFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Reserve parseDelimitedFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Reserve parseDelimitedFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Reserve parseFrom(
+            com.google.protobuf.CodedInputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Reserve parseFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+
+        public static Builder newBuilder() { return Builder.create(); }
+        public Builder newBuilderForType() { return newBuilder(); }
+        public static Builder newBuilder(org.apache.mesos.Protos.Offer.Operation.Reserve prototype) {
+          return newBuilder().mergeFrom(prototype);
+        }
+        public Builder toBuilder() { return newBuilder(this); }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          Builder builder = new Builder(parent);
+          return builder;
+        }
+        /**
+         * Protobuf type {@code mesos.Offer.Operation.Reserve}
+         */
+        public static final class Builder extends
+            com.google.protobuf.GeneratedMessage.Builder<Builder>
+           implements org.apache.mesos.Protos.Offer.Operation.ReserveOrBuilder {
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.Protos.internal_static_mesos_Offer_Operation_Reserve_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.Protos.internal_static_mesos_Offer_Operation_Reserve_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.Protos.Offer.Operation.Reserve.class, org.apache.mesos.Protos.Offer.Operation.Reserve.Builder.class);
+          }
+
+          // Construct using org.apache.mesos.Protos.Offer.Operation.Reserve.newBuilder()
+          private Builder() {
+            maybeForceBuilderInitialization();
+          }
+
+          private Builder(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            super(parent);
+            maybeForceBuilderInitialization();
+          }
+          private void maybeForceBuilderInitialization() {
+            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+              getResourcesFieldBuilder();
+            }
+          }
+          private static Builder create() {
+            return new Builder();
+          }
+
+          public Builder clear() {
+            super.clear();
+            if (resourcesBuilder_ == null) {
+              resources_ = java.util.Collections.emptyList();
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              resourcesBuilder_.clear();
+            }
+            return this;
+          }
+
+          public Builder clone() {
+            return create().mergeFrom(buildPartial());
+          }
+
+          public com.google.protobuf.Descriptors.Descriptor
+              getDescriptorForType() {
+            return org.apache.mesos.Protos.internal_static_mesos_Offer_Operation_Reserve_descriptor;
+          }
+
+          public org.apache.mesos.Protos.Offer.Operation.Reserve getDefaultInstanceForType() {
+            return org.apache.mesos.Protos.Offer.Operation.Reserve.getDefaultInstance();
+          }
+
+          public org.apache.mesos.Protos.Offer.Operation.Reserve build() {
+            org.apache.mesos.Protos.Offer.Operation.Reserve result = buildPartial();
+            if (!result.isInitialized()) {
+              throw newUninitializedMessageException(result);
+            }
+            return result;
+          }
+
+          public org.apache.mesos.Protos.Offer.Operation.Reserve buildPartial() {
+            org.apache.mesos.Protos.Offer.Operation.Reserve result = new org.apache.mesos.Protos.Offer.Operation.Reserve(this);
+            int from_bitField0_ = bitField0_;
+            if (resourcesBuilder_ == null) {
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                resources_ = java.util.Collections.unmodifiableList(resources_);
+                bitField0_ = (bitField0_ & ~0x00000001);
+              }
+              result.resources_ = resources_;
+            } else {
+              result.resources_ = resourcesBuilder_.build();
+            }
+            onBuilt();
+            return result;
+          }
+
+          public Builder mergeFrom(com.google.protobuf.Message other) {
+            if (other instanceof org.apache.mesos.Protos.Offer.Operation.Reserve) {
+              return mergeFrom((org.apache.mesos.Protos.Offer.Operation.Reserve)other);
+            } else {
+              super.mergeFrom(other);
+              return this;
+            }
+          }
+
+          public Builder mergeFrom(org.apache.mesos.Protos.Offer.Operation.Reserve other) {
+            if (other == org.apache.mesos.Protos.Offer.Operation.Reserve.getDefaultInstance()) return this;
+            if (resourcesBuilder_ == null) {
+              if (!other.resources_.isEmpty()) {
+                if (resources_.isEmpty()) {
+                  resources_ = other.resources_;
+                  bitField0_ = (bitField0_ & ~0x00000001);
+                } else {
+                  ensureResourcesIsMutable();
+                  resources_.addAll(other.resources_);
+                }
+                onChanged();
+              }
+            } else {
+              if (!other.resources_.isEmpty()) {
+                if (resourcesBuilder_.isEmpty()) {
+                  resourcesBuilder_.dispose();
+                  resourcesBuilder_ = null;
+                  resources_ = other.resources_;
+                  bitField0_ = (bitField0_ & ~0x00000001);
+                  resourcesBuilder_ = 
+                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                       getResourcesFieldBuilder() : null;
+                } else {
+                  resourcesBuilder_.addAllMessages(other.resources_);
+                }
+              }
+            }
+            this.mergeUnknownFields(other.getUnknownFields());
+            return this;
+          }
+
+          public final boolean isInitialized() {
+            for (int i = 0; i < getResourcesCount(); i++) {
+              if (!getResources(i).isInitialized()) {
+                
+                return false;
+              }
+            }
+            return true;
+          }
+
+          public Builder mergeFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            org.apache.mesos.Protos.Offer.Operation.Reserve parsedMessage = null;
+            try {
+              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              parsedMessage = (org.apache.mesos.Protos.Offer.Operation.Reserve) e.getUnfinishedMessage();
+              throw e;
+            } finally {
+              if (parsedMessage != null) {
+                mergeFrom(parsedMessage);
+              }
+            }
+            return this;
+          }
+          private int bitField0_;
+
+          // repeated .mesos.Resource resources = 1;
+          private java.util.List<org.apache.mesos.Protos.Resource> resources_ =
+            java.util.Collections.emptyList();
+          private void ensureResourcesIsMutable() {
+            if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+              resources_ = new java.util.ArrayList<org.apache.mesos.Protos.Resource>(resources_);
+              bitField0_ |= 0x00000001;
+             }
+          }
+
+          private com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder> resourcesBuilder_;
+
+          /**
+           * <code>repeated .mesos.Resource resources = 1;</code>
+           */
+          public java.util.List<org.apache.mesos.Protos.Resource> getResourcesList() {
+            if (resourcesBuilder_ == null) {
+              return java.util.Collections.unmodifiableList(resources_);
+            } else {
+              return resourcesBuilder_.getMessageList();
+            }
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 1;</code>
+           */
+          public int getResourcesCount() {
+            if (resourcesBuilder_ == null) {
+              return resources_.size();
+            } else {
+              return resourcesBuilder_.getCount();
+            }
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 1;</code>
+           */
+          public org.apache.mesos.Protos.Resource getResources(int index) {
+            if (resourcesBuilder_ == null) {
+              return resources_.get(index);
+            } else {
+              return resourcesBuilder_.getMessage(index);
+            }
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 1;</code>
+           */
+          public Builder setResources(
+              int index, org.apache.mesos.Protos.Resource value) {
+            if (resourcesBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureResourcesIsMutable();
+              resources_.set(index, value);
+              onChanged();
+            } else {
+              resourcesBuilder_.setMessage(index, value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 1;</code>
+           */
+          public Builder setResources(
+              int index, org.apache.mesos.Protos.Resource.Builder builderForValue) {
+            if (resourcesBuilder_ == null) {
+              ensureResourcesIsMutable();
+              resources_.set(index, builderForValue.build());
+              onChanged();
+            } else {
+              resourcesBuilder_.setMessage(index, builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 1;</code>
+           */
+          public Builder addResources(org.apache.mesos.Protos.Resource value) {
+            if (resourcesBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureResourcesIsMutable();
+              resources_.add(value);
+              onChanged();
+            } else {
+              resourcesBuilder_.addMessage(value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 1;</code>
+           */
+          public Builder addResources(
+              int index, org.apache.mesos.Protos.Resource value) {
+            if (resourcesBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureResourcesIsMutable();
+              resources_.add(index, value);
+              onChanged();
+            } else {
+              resourcesBuilder_.addMessage(index, value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 1;</code>
+           */
+          public Builder addResources(
+              org.apache.mesos.Protos.Resource.Builder builderForValue) {
+            if (resourcesBuilder_ == null) {
+              ensureResourcesIsMutable();
+              resources_.add(builderForValue.build());
+              onChanged();
+            } else {
+              resourcesBuilder_.addMessage(builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 1;</code>
+           */
+          public Builder addResources(
+              int index, org.apache.mesos.Protos.Resource.Builder builderForValue) {
+            if (resourcesBuilder_ == null) {
+              ensureResourcesIsMutable();
+              resources_.add(index, builderForValue.build());
+              onChanged();
+            } else {
+              resourcesBuilder_.addMessage(index, builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 1;</code>
+           */
+          public Builder addAllResources(
+              java.lang.Iterable<? extends org.apache.mesos.Protos.Resource> values) {
+            if (resourcesBuilder_ == null) {
+              ensureResourcesIsMutable();
+              super.addAll(values, resources_);
+              onChanged();
+            } else {
+              resourcesBuilder_.addAllMessages(values);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 1;</code>
+           */
+          public Builder clearResources() {
+            if (resourcesBuilder_ == null) {
+              resources_ = java.util.Collections.emptyList();
+              bitField0_ = (bitField0_ & ~0x00000001);
+              onChanged();
+            } else {
+              resourcesBuilder_.clear();
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 1;</code>
+           */
+          public Builder removeResources(int index) {
+            if (resourcesBuilder_ == null) {
+              ensureResourcesIsMutable();
+              resources_.remove(index);
+              onChanged();
+            } else {
+              resourcesBuilder_.remove(index);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 1;</code>
+           */
+          public org.apache.mesos.Protos.Resource.Builder getResourcesBuilder(
+              int index) {
+            return getResourcesFieldBuilder().getBuilder(index);
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 1;</code>
+           */
+          public org.apache.mesos.Protos.ResourceOrBuilder getResourcesOrBuilder(
+              int index) {
+            if (resourcesBuilder_ == null) {
+              return resources_.get(index);  } else {
+              return resourcesBuilder_.getMessageOrBuilder(index);
+            }
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 1;</code>
+           */
+          public java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+               getResourcesOrBuilderList() {
+            if (resourcesBuilder_ != null) {
+              return resourcesBuilder_.getMessageOrBuilderList();
+            } else {
+              return java.util.Collections.unmodifiableList(resources_);
+            }
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 1;</code>
+           */
+          public org.apache.mesos.Protos.Resource.Builder addResourcesBuilder() {
+            return getResourcesFieldBuilder().addBuilder(
+                org.apache.mesos.Protos.Resource.getDefaultInstance());
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 1;</code>
+           */
+          public org.apache.mesos.Protos.Resource.Builder addResourcesBuilder(
+              int index) {
+            return getResourcesFieldBuilder().addBuilder(
+                index, org.apache.mesos.Protos.Resource.getDefaultInstance());
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 1;</code>
+           */
+          public java.util.List<org.apache.mesos.Protos.Resource.Builder> 
+               getResourcesBuilderList() {
+            return getResourcesFieldBuilder().getBuilderList();
+          }
+          private com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder> 
+              getResourcesFieldBuilder() {
+            if (resourcesBuilder_ == null) {
+              resourcesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                  org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder>(
+                      resources_,
+                      ((bitField0_ & 0x00000001) == 0x00000001),
+                      getParentForChildren(),
+                      isClean());
+              resources_ = null;
+            }
+            return resourcesBuilder_;
+          }
+
+          // @@protoc_insertion_point(builder_scope:mesos.Offer.Operation.Reserve)
+        }
+
+        static {
+          defaultInstance = new Reserve(true);
+          defaultInstance.initFields();
+        }
+
+        // @@protoc_insertion_point(class_scope:mesos.Offer.Operation.Reserve)
+      }
+
+      public interface UnreserveOrBuilder
+          extends com.google.protobuf.MessageOrBuilder {
+
+        // repeated .mesos.Resource resources = 1;
+        /**
+         * <code>repeated .mesos.Resource resources = 1;</code>
+         */
+        java.util.List<org.apache.mesos.Protos.Resource> 
+            getResourcesList();
+        /**
+         * <code>repeated .mesos.Resource resources = 1;</code>
+         */
+        org.apache.mesos.Protos.Resource getResources(int index);
+        /**
+         * <code>repeated .mesos.Resource resources = 1;</code>
+         */
+        int getResourcesCount();
+        /**
+         * <code>repeated .mesos.Resource resources = 1;</code>
+         */
+        java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+            getResourcesOrBuilderList();
+        /**
+         * <code>repeated .mesos.Resource resources = 1;</code>
+         */
+        org.apache.mesos.Protos.ResourceOrBuilder getResourcesOrBuilder(
+            int index);
+      }
+      /**
+       * Protobuf type {@code mesos.Offer.Operation.Unreserve}
+       */
+      public static final class Unreserve extends
+          com.google.protobuf.GeneratedMessage
+          implements UnreserveOrBuilder {
+        // Use Unreserve.newBuilder() to construct.
+        private Unreserve(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+          super(builder);
+          this.unknownFields = builder.getUnknownFields();
+        }
+        private Unreserve(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+        private static final Unreserve defaultInstance;
+        public static Unreserve getDefaultInstance() {
+          return defaultInstance;
+        }
+
+        public Unreserve getDefaultInstanceForType() {
+          return defaultInstance;
+        }
+
+        private final com.google.protobuf.UnknownFieldSet unknownFields;
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet
+            getUnknownFields() {
+          return this.unknownFields;
+        }
+        private Unreserve(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          initFields();
+          int mutable_bitField0_ = 0;
+          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+              com.google.protobuf.UnknownFieldSet.newBuilder();
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(input, unknownFields,
+                                         extensionRegistry, tag)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 10: {
+                  if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                    resources_ = new java.util.ArrayList<org.apache.mesos.Protos.Resource>();
+                    mutable_bitField0_ |= 0x00000001;
+                  }
+                  resources_.add(input.readMessage(org.apache.mesos.Protos.Resource.PARSER, extensionRegistry));
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw e.setUnfinishedMessage(this);
+          } catch (java.io.IOException e) {
+            throw new com.google.protobuf.InvalidProtocolBufferException(
+                e.getMessage()).setUnfinishedMessage(this);
+          } finally {
+            if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+              resources_ = java.util.Collections.unmodifiableList(resources_);
+            }
+            this.unknownFields = unknownFields.build();
+            makeExtensionsImmutable();
+          }
+        }
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_Offer_Operation_Unreserve_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_Offer_Operation_Unreserve_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.Offer.Operation.Unreserve.class, org.apache.mesos.Protos.Offer.Operation.Unreserve.Builder.class);
+        }
+
+        public static com.google.protobuf.Parser<Unreserve> PARSER =
+            new com.google.protobuf.AbstractParser<Unreserve>() {
+          public Unreserve parsePartialFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return new Unreserve(input, extensionRegistry);
+          }
+        };
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<Unreserve> getParserForType() {
+          return PARSER;
+        }
+
+        // repeated .mesos.Resource resources = 1;
+        public static final int RESOURCES_FIELD_NUMBER = 1;
+        private java.util.List<org.apache.mesos.Protos.Resource> resources_;
+        /**
+         * <code>repeated .mesos.Resource resources = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.Protos.Resource> getResourcesList() {
+          return resources_;
+        }
+        /**
+         * <code>repeated .mesos.Resource resources = 1;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+            getResourcesOrBuilderList() {
+          return resources_;
+        }
+        /**
+         * <code>repeated .mesos.Resource resources = 1;</code>
+         */
+        public int getResourcesCount() {
+          return resources_.size();
+        }
+        /**
+         * <code>repeated .mesos.Resource resources = 1;</code>
+         */
+        public org.apache.mesos.Protos.Resource getResources(int index) {
+          return resources_.get(index);
+        }
+        /**
+         * <code>repeated .mesos.Resource resources = 1;</code>
+         */
+        public org.apache.mesos.Protos.ResourceOrBuilder getResourcesOrBuilder(
+            int index) {
+          return resources_.get(index);
+        }
+
+        private void initFields() {
+          resources_ = java.util.Collections.emptyList();
+        }
+        private byte memoizedIsInitialized = -1;
+        public final boolean isInitialized() {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized != -1) return isInitialized == 1;
+
+          for (int i = 0; i < getResourcesCount(); i++) {
+            if (!getResources(i).isInitialized()) {
+              memoizedIsInitialized = 0;
+              return false;
+            }
+          }
+          memoizedIsInitialized = 1;
+          return true;
+        }
+
+        public void writeTo(com.google.protobuf.CodedOutputStream output)
+                            throws java.io.IOException {
+          getSerializedSize();
+          for (int i = 0; i < resources_.size(); i++) {
+            output.writeMessage(1, resources_.get(i));
+          }
+          getUnknownFields().writeTo(output);
+        }
+
+        private int memoizedSerializedSize = -1;
+        public int getSerializedSize() {
+          int size = memoizedSerializedSize;
+          if (size != -1) return size;
+
+          size = 0;
+          for (int i = 0; i < resources_.size(); i++) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeMessageSize(1, resources_.get(i));
+          }
+          size += getUnknownFields().getSerializedSize();
+          memoizedSerializedSize = size;
+          return size;
+        }
+
+        private static final long serialVersionUID = 0L;
+        @java.lang.Override
+        protected java.lang.Object writeReplace()
+            throws java.io.ObjectStreamException {
+          return super.writeReplace();
+        }
+
+        public static org.apache.mesos.Protos.Offer.Operation.Unreserve parseFrom(
+            com.google.protobuf.ByteString data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Unreserve parseFrom(
+            com.google.protobuf.ByteString data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Unreserve parseFrom(byte[] data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Unreserve parseFrom(
+            byte[] data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Unreserve parseFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Unreserve parseFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Unreserve parseDelimitedFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Unreserve parseDelimitedFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Unreserve parseFrom(
+            com.google.protobuf.CodedInputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Unreserve parseFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+
+        public static Builder newBuilder() { return Builder.create(); }
+        public Builder newBuilderForType() { return newBuilder(); }
+        public static Builder newBuilder(org.apache.mesos.Protos.Offer.Operation.Unreserve prototype) {
+          return newBuilder().mergeFrom(prototype);
+        }
+        public Builder toBuilder() { return newBuilder(this); }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          Builder builder = new Builder(parent);
+          return builder;
+        }
+        /**
+         * Protobuf type {@code mesos.Offer.Operation.Unreserve}
+         */
+        public static final class Builder extends
+            com.google.protobuf.GeneratedMessage.Builder<Builder>
+           implements org.apache.mesos.Protos.Offer.Operation.UnreserveOrBuilder {
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.Protos.internal_static_mesos_Offer_Operation_Unreserve_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.Protos.internal_static_mesos_Offer_Operation_Unreserve_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.Protos.Offer.Operation.Unreserve.class, org.apache.mesos.Protos.Offer.Operation.Unreserve.Builder.class);
+          }
+
+          // Construct using org.apache.mesos.Protos.Offer.Operation.Unreserve.newBuilder()
+          private Builder() {
+            maybeForceBuilderInitialization();
+          }
+
+          private Builder(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            super(parent);
+            maybeForceBuilderInitialization();
+          }
+          private void maybeForceBuilderInitialization() {
+            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+              getResourcesFieldBuilder();
+            }
+          }
+          private static Builder create() {
+            return new Builder();
+          }
+
+          public Builder clear() {
+            super.clear();
+            if (resourcesBuilder_ == null) {
+              resources_ = java.util.Collections.emptyList();
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              resourcesBuilder_.clear();
+            }
+            return this;
+          }
+
+          public Builder clone() {
+            return create().mergeFrom(buildPartial());
+          }
+
+          public com.google.protobuf.Descriptors.Descriptor
+              getDescriptorForType() {
+            return org.apache.mesos.Protos.internal_static_mesos_Offer_Operation_Unreserve_descriptor;
+          }
+
+          public org.apache.mesos.Protos.Offer.Operation.Unreserve getDefaultInstanceForType() {
+            return org.apache.mesos.Protos.Offer.Operation.Unreserve.getDefaultInstance();
+          }
+
+          public org.apache.mesos.Protos.Offer.Operation.Unreserve build() {
+            org.apache.mesos.Protos.Offer.Operation.Unreserve result = buildPartial();
+            if (!result.isInitialized()) {
+              throw newUninitializedMessageException(result);
+            }
+            return result;
+          }
+
+          public org.apache.mesos.Protos.Offer.Operation.Unreserve buildPartial() {
+            org.apache.mesos.Protos.Offer.Operation.Unreserve result = new org.apache.mesos.Protos.Offer.Operation.Unreserve(this);
+            int from_bitField0_ = bitField0_;
+            if (resourcesBuilder_ == null) {
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                resources_ = java.util.Collections.unmodifiableList(resources_);
+                bitField0_ = (bitField0_ & ~0x00000001);
+              }
+              result.resources_ = resources_;
+            } else {
+              result.resources_ = resourcesBuilder_.build();
+            }
+            onBuilt();
+            return result;
+          }
+
+          public Builder mergeFrom(com.google.protobuf.Message other) {
+            if (other instanceof org.apache.mesos.Protos.Offer.Operation.Unreserve) {
+              return mergeFrom((org.apache.mesos.Protos.Offer.Operation.Unreserve)other);
+            } else {
+              super.mergeFrom(other);
+              return this;
+            }
+          }
+
+          public Builder mergeFrom(org.apache.mesos.Protos.Offer.Operation.Unreserve other) {
+            if (other == org.apache.mesos.Protos.Offer.Operation.Unreserve.getDefaultInstance()) return this;
+            if (resourcesBuilder_ == null) {
+              if (!other.resources_.isEmpty()) {
+                if (resources_.isEmpty()) {
+                  resources_ = other.resources_;
+                  bitField0_ = (bitField0_ & ~0x00000001);
+                } else {
+                  ensureResourcesIsMutable();
+                  resources_.addAll(other.resources_);
+                }
+                onChanged();
+              }
+            } else {
+              if (!other.resources_.isEmpty()) {
+                if (resourcesBuilder_.isEmpty()) {
+                  resourcesBuilder_.dispose();
+                  resourcesBuilder_ = null;
+                  resources_ = other.resources_;
+                  bitField0_ = (bitField0_ & ~0x00000001);
+                  resourcesBuilder_ = 
+                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                       getResourcesFieldBuilder() : null;
+                } else {
+                  resourcesBuilder_.addAllMessages(other.resources_);
+                }
+              }
+            }
+            this.mergeUnknownFields(other.getUnknownFields());
+            return this;
+          }
+
+          public final boolean isInitialized() {
+            for (int i = 0; i < getResourcesCount(); i++) {
+              if (!getResources(i).isInitialized()) {
+                
+                return false;
+              }
+            }
+            return true;
+          }
+
+          public Builder mergeFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            org.apache.mesos.Protos.Offer.Operation.Unreserve parsedMessage = null;
+            try {
+              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              parsedMessage = (org.apache.mesos.Protos.Offer.Operation.Unreserve) e.getUnfinishedMessage();
+              throw e;
+            } finally {
+              if (parsedMessage != null) {
+                mergeFrom(parsedMessage);
+              }
+            }
+            return this;
+          }
+          private int bitField0_;
+
+          // repeated .mesos.Resource resources = 1;
+          private java.util.List<org.apache.mesos.Protos.Resource> resources_ =
+            java.util.Collections.emptyList();
+          private void ensureResourcesIsMutable() {
+            if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+              resources_ = new java.util.ArrayList<org.apache.mesos.Protos.Resource>(resources_);
+              bitField0_ |= 0x00000001;
+             }
+          }
+
+          private com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder> resourcesBuilder_;
+
+          /**
+           * <code>repeated .mesos.Resource resources = 1;</code>
+           */
+          public java.util.List<org.apache.mesos.Protos.Resource> getResourcesList() {
+            if (resourcesBuilder_ == null) {
+              return java.util.Collections.unmodifiableList(resources_);
+            } else {
+              return resourcesBuilder_.getMessageList();
+            }
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 1;</code>
+           */
+          public int getResourcesCount() {
+            if (resourcesBuilder_ == null) {
+              return resources_.size();
+            } else {
+              return resourcesBuilder_.getCount();
+            }
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 1;</code>
+           */
+          public org.apache.mesos.Protos.Resource getResources(int index) {
+            if (resourcesBuilder_ == null) {
+              return resources_.get(index);
+            } else {
+              return resourcesBuilder_.getMessage(index);
+            }
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 1;</code>
+           */
+          public Builder setResources(
+              int index, org.apache.mesos.Protos.Resource value) {
+            if (resourcesBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureResourcesIsMutable();
+              resources_.set(index, value);
+              onChanged();
+            } else {
+              resourcesBuilder_.setMessage(index, value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 1;</code>
+           */
+          public Builder setResources(
+              int index, org.apache.mesos.Protos.Resource.Builder builderForValue) {
+            if (resourcesBuilder_ == null) {
+              ensureResourcesIsMutable();
+              resources_.set(index, builderForValue.build());
+              onChanged();
+            } else {
+              resourcesBuilder_.setMessage(index, builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 1;</code>
+           */
+          public Builder addResources(org.apache.mesos.Protos.Resource value) {
+            if (resourcesBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureResourcesIsMutable();
+              resources_.add(value);
+              onChanged();
+            } else {
+              resourcesBuilder_.addMessage(value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 1;</code>
+           */
+          public Builder addResources(
+              int index, org.apache.mesos.Protos.Resource value) {
+            if (resourcesBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureResourcesIsMutable();
+              resources_.add(index, value);
+              onChanged();
+            } else {
+              resourcesBuilder_.addMessage(index, value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 1;</code>
+           */
+          public Builder addResources(
+              org.apache.mesos.Protos.Resource.Builder builderForValue) {
+            if (resourcesBuilder_ == null) {
+              ensureResourcesIsMutable();
+              resources_.add(builderForValue.build());
+              onChanged();
+            } else {
+              resourcesBuilder_.addMessage(builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 1;</code>
+           */
+          public Builder addResources(
+              int index, org.apache.mesos.Protos.Resource.Builder builderForValue) {
+            if (resourcesBuilder_ == null) {
+              ensureResourcesIsMutable();
+              resources_.add(index, builderForValue.build());
+              onChanged();
+            } else {
+              resourcesBuilder_.addMessage(index, builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 1;</code>
+           */
+          public Builder addAllResources(
+              java.lang.Iterable<? extends org.apache.mesos.Protos.Resource> values) {
+            if (resourcesBuilder_ == null) {
+              ensureResourcesIsMutable();
+              super.addAll(values, resources_);
+              onChanged();
+            } else {
+              resourcesBuilder_.addAllMessages(values);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 1;</code>
+           */
+          public Builder clearResources() {
+            if (resourcesBuilder_ == null) {
+              resources_ = java.util.Collections.emptyList();
+              bitField0_ = (bitField0_ & ~0x00000001);
+              onChanged();
+            } else {
+              resourcesBuilder_.clear();
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 1;</code>
+           */
+          public Builder removeResources(int index) {
+            if (resourcesBuilder_ == null) {
+              ensureResourcesIsMutable();
+              resources_.remove(index);
+              onChanged();
+            } else {
+              resourcesBuilder_.remove(index);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 1;</code>
+           */
+          public org.apache.mesos.Protos.Resource.Builder getResourcesBuilder(
+              int index) {
+            return getResourcesFieldBuilder().getBuilder(index);
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 1;</code>
+           */
+          public org.apache.mesos.Protos.ResourceOrBuilder getResourcesOrBuilder(
+              int index) {
+            if (resourcesBuilder_ == null) {
+              return resources_.get(index);  } else {
+              return resourcesBuilder_.getMessageOrBuilder(index);
+            }
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 1;</code>
+           */
+          public java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+               getResourcesOrBuilderList() {
+            if (resourcesBuilder_ != null) {
+              return resourcesBuilder_.getMessageOrBuilderList();
+            } else {
+              return java.util.Collections.unmodifiableList(resources_);
+            }
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 1;</code>
+           */
+          public org.apache.mesos.Protos.Resource.Builder addResourcesBuilder() {
+            return getResourcesFieldBuilder().addBuilder(
+                org.apache.mesos.Protos.Resource.getDefaultInstance());
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 1;</code>
+           */
+          public org.apache.mesos.Protos.Resource.Builder addResourcesBuilder(
+              int index) {
+            return getResourcesFieldBuilder().addBuilder(
+                index, org.apache.mesos.Protos.Resource.getDefaultInstance());
+          }
+          /**
+           * <code>repeated .mesos.Resource resources = 1;</code>
+           */
+          public java.util.List<org.apache.mesos.Protos.Resource.Builder> 
+               getResourcesBuilderList() {
+            return getResourcesFieldBuilder().getBuilderList();
+          }
+          private com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder> 
+              getResourcesFieldBuilder() {
+            if (resourcesBuilder_ == null) {
+              resourcesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                  org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder>(
+                      resources_,
+                      ((bitField0_ & 0x00000001) == 0x00000001),
+                      getParentForChildren(),
+                      isClean());
+              resources_ = null;
+            }
+            return resourcesBuilder_;
+          }
+
+          // @@protoc_insertion_point(builder_scope:mesos.Offer.Operation.Unreserve)
+        }
+
+        static {
+          defaultInstance = new Unreserve(true);
+          defaultInstance.initFields();
+        }
+
+        // @@protoc_insertion_point(class_scope:mesos.Offer.Operation.Unreserve)
+      }
+
+      public interface CreateOrBuilder
+          extends com.google.protobuf.MessageOrBuilder {
+
+        // repeated .mesos.Resource volumes = 1;
+        /**
+         * <code>repeated .mesos.Resource volumes = 1;</code>
+         */
+        java.util.List<org.apache.mesos.Protos.Resource> 
+            getVolumesList();
+        /**
+         * <code>repeated .mesos.Resource volumes = 1;</code>
+         */
+        org.apache.mesos.Protos.Resource getVolumes(int index);
+        /**
+         * <code>repeated .mesos.Resource volumes = 1;</code>
+         */
+        int getVolumesCount();
+        /**
+         * <code>repeated .mesos.Resource volumes = 1;</code>
+         */
+        java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+            getVolumesOrBuilderList();
+        /**
+         * <code>repeated .mesos.Resource volumes = 1;</code>
+         */
+        org.apache.mesos.Protos.ResourceOrBuilder getVolumesOrBuilder(
+            int index);
+      }
+      /**
+       * Protobuf type {@code mesos.Offer.Operation.Create}
+       */
+      public static final class Create extends
+          com.google.protobuf.GeneratedMessage
+          implements CreateOrBuilder {
+        // Use Create.newBuilder() to construct.
+        private Create(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+          super(builder);
+          this.unknownFields = builder.getUnknownFields();
+        }
+        private Create(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+        private static final Create defaultInstance;
+        public static Create getDefaultInstance() {
+          return defaultInstance;
+        }
+
+        public Create getDefaultInstanceForType() {
+          return defaultInstance;
+        }
+
+        private final com.google.protobuf.UnknownFieldSet unknownFields;
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet
+            getUnknownFields() {
+          return this.unknownFields;
+        }
+        private Create(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          initFields();
+          int mutable_bitField0_ = 0;
+          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+              com.google.protobuf.UnknownFieldSet.newBuilder();
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(input, unknownFields,
+                                         extensionRegistry, tag)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 10: {
+                  if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                    volumes_ = new java.util.ArrayList<org.apache.mesos.Protos.Resource>();
+                    mutable_bitField0_ |= 0x00000001;
+                  }
+                  volumes_.add(input.readMessage(org.apache.mesos.Protos.Resource.PARSER, extensionRegistry));
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw e.setUnfinishedMessage(this);
+          } catch (java.io.IOException e) {
+            throw new com.google.protobuf.InvalidProtocolBufferException(
+                e.getMessage()).setUnfinishedMessage(this);
+          } finally {
+            if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+              volumes_ = java.util.Collections.unmodifiableList(volumes_);
+            }
+            this.unknownFields = unknownFields.build();
+            makeExtensionsImmutable();
+          }
+        }
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_Offer_Operation_Create_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_Offer_Operation_Create_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.Offer.Operation.Create.class, org.apache.mesos.Protos.Offer.Operation.Create.Builder.class);
+        }
+
+        public static com.google.protobuf.Parser<Create> PARSER =
+            new com.google.protobuf.AbstractParser<Create>() {
+          public Create parsePartialFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return new Create(input, extensionRegistry);
+          }
+        };
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<Create> getParserForType() {
+          return PARSER;
+        }
+
+        // repeated .mesos.Resource volumes = 1;
+        public static final int VOLUMES_FIELD_NUMBER = 1;
+        private java.util.List<org.apache.mesos.Protos.Resource> volumes_;
+        /**
+         * <code>repeated .mesos.Resource volumes = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.Protos.Resource> getVolumesList() {
+          return volumes_;
+        }
+        /**
+         * <code>repeated .mesos.Resource volumes = 1;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+            getVolumesOrBuilderList() {
+          return volumes_;
+        }
+        /**
+         * <code>repeated .mesos.Resource volumes = 1;</code>
+         */
+        public int getVolumesCount() {
+          return volumes_.size();
+        }
+        /**
+         * <code>repeated .mesos.Resource volumes = 1;</code>
+         */
+        public org.apache.mesos.Protos.Resource getVolumes(int index) {
+          return volumes_.get(index);
+        }
+        /**
+         * <code>repeated .mesos.Resource volumes = 1;</code>
+         */
+        public org.apache.mesos.Protos.ResourceOrBuilder getVolumesOrBuilder(
+            int index) {
+          return volumes_.get(index);
+        }
+
+        private void initFields() {
+          volumes_ = java.util.Collections.emptyList();
+        }
+        private byte memoizedIsInitialized = -1;
+        public final boolean isInitialized() {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized != -1) return isInitialized == 1;
+
+          for (int i = 0; i < getVolumesCount(); i++) {
+            if (!getVolumes(i).isInitialized()) {
+              memoizedIsInitialized = 0;
+              return false;
+            }
+          }
+          memoizedIsInitialized = 1;
+          return true;
+        }
+
+        public void writeTo(com.google.protobuf.CodedOutputStream output)
+                            throws java.io.IOException {
+          getSerializedSize();
+          for (int i = 0; i < volumes_.size(); i++) {
+            output.writeMessage(1, volumes_.get(i));
+          }
+          getUnknownFields().writeTo(output);
+        }
+
+        private int memoizedSerializedSize = -1;
+        public int getSerializedSize() {
+          int size = memoizedSerializedSize;
+          if (size != -1) return size;
+
+          size = 0;
+          for (int i = 0; i < volumes_.size(); i++) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeMessageSize(1, volumes_.get(i));
+          }
+          size += getUnknownFields().getSerializedSize();
+          memoizedSerializedSize = size;
+          return size;
+        }
+
+        private static final long serialVersionUID = 0L;
+        @java.lang.Override
+        protected java.lang.Object writeReplace()
+            throws java.io.ObjectStreamException {
+          return super.writeReplace();
+        }
+
+        public static org.apache.mesos.Protos.Offer.Operation.Create parseFrom(
+            com.google.protobuf.ByteString data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Create parseFrom(
+            com.google.protobuf.ByteString data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Create parseFrom(byte[] data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Create parseFrom(
+            byte[] data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Create parseFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Create parseFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Create parseDelimitedFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Create parseDelimitedFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Create parseFrom(
+            com.google.protobuf.CodedInputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Create parseFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+
+        public static Builder newBuilder() { return Builder.create(); }
+        public Builder newBuilderForType() { return newBuilder(); }
+        public static Builder newBuilder(org.apache.mesos.Protos.Offer.Operation.Create prototype) {
+          return newBuilder().mergeFrom(prototype);
+        }
+        public Builder toBuilder() { return newBuilder(this); }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          Builder builder = new Builder(parent);
+          return builder;
+        }
+        /**
+         * Protobuf type {@code mesos.Offer.Operation.Create}
+         */
+        public static final class Builder extends
+            com.google.protobuf.GeneratedMessage.Builder<Builder>
+           implements org.apache.mesos.Protos.Offer.Operation.CreateOrBuilder {
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.Protos.internal_static_mesos_Offer_Operation_Create_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.Protos.internal_static_mesos_Offer_Operation_Create_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.Protos.Offer.Operation.Create.class, org.apache.mesos.Protos.Offer.Operation.Create.Builder.class);
+          }
+
+          // Construct using org.apache.mesos.Protos.Offer.Operation.Create.newBuilder()
+          private Builder() {
+            maybeForceBuilderInitialization();
+          }
+
+          private Builder(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            super(parent);
+            maybeForceBuilderInitialization();
+          }
+          private void maybeForceBuilderInitialization() {
+            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+              getVolumesFieldBuilder();
+            }
+          }
+          private static Builder create() {
+            return new Builder();
+          }
+
+          public Builder clear() {
+            super.clear();
+            if (volumesBuilder_ == null) {
+              volumes_ = java.util.Collections.emptyList();
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              volumesBuilder_.clear();
+            }
+            return this;
+          }
+
+          public Builder clone() {
+            return create().mergeFrom(buildPartial());
+          }
+
+          public com.google.protobuf.Descriptors.Descriptor
+              getDescriptorForType() {
+            return org.apache.mesos.Protos.internal_static_mesos_Offer_Operation_Create_descriptor;
+          }
+
+          public org.apache.mesos.Protos.Offer.Operation.Create getDefaultInstanceForType() {
+            return org.apache.mesos.Protos.Offer.Operation.Create.getDefaultInstance();
+          }
+
+          public org.apache.mesos.Protos.Offer.Operation.Create build() {
+            org.apache.mesos.Protos.Offer.Operation.Create result = buildPartial();
+            if (!result.isInitialized()) {
+              throw newUninitializedMessageException(result);
+            }
+            return result;
+          }
+
+          public org.apache.mesos.Protos.Offer.Operation.Create buildPartial() {
+            org.apache.mesos.Protos.Offer.Operation.Create result = new org.apache.mesos.Protos.Offer.Operation.Create(this);
+            int from_bitField0_ = bitField0_;
+            if (volumesBuilder_ == null) {
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                volumes_ = java.util.Collections.unmodifiableList(volumes_);
+                bitField0_ = (bitField0_ & ~0x00000001);
+              }
+              result.volumes_ = volumes_;
+            } else {
+              result.volumes_ = volumesBuilder_.build();
+            }
+            onBuilt();
+            return result;
+          }
+
+          public Builder mergeFrom(com.google.protobuf.Message other) {
+            if (other instanceof org.apache.mesos.Protos.Offer.Operation.Create) {
+              return mergeFrom((org.apache.mesos.Protos.Offer.Operation.Create)other);
+            } else {
+              super.mergeFrom(other);
+              return this;
+            }
+          }
+
+          public Builder mergeFrom(org.apache.mesos.Protos.Offer.Operation.Create other) {
+            if (other == org.apache.mesos.Protos.Offer.Operation.Create.getDefaultInstance()) return this;
+            if (volumesBuilder_ == null) {
+              if (!other.volumes_.isEmpty()) {
+                if (volumes_.isEmpty()) {
+                  volumes_ = other.volumes_;
+                  bitField0_ = (bitField0_ & ~0x00000001);
+                } else {
+                  ensureVolumesIsMutable();
+                  volumes_.addAll(other.volumes_);
+                }
+                onChanged();
+              }
+            } else {
+              if (!other.volumes_.isEmpty()) {
+                if (volumesBuilder_.isEmpty()) {
+                  volumesBuilder_.dispose();
+                  volumesBuilder_ = null;
+                  volumes_ = other.volumes_;
+                  bitField0_ = (bitField0_ & ~0x00000001);
+                  volumesBuilder_ = 
+                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                       getVolumesFieldBuilder() : null;
+                } else {
+                  volumesBuilder_.addAllMessages(other.volumes_);
+                }
+              }
+            }
+            this.mergeUnknownFields(other.getUnknownFields());
+            return this;
+          }
+
+          public final boolean isInitialized() {
+            for (int i = 0; i < getVolumesCount(); i++) {
+              if (!getVolumes(i).isInitialized()) {
+                
+                return false;
+              }
+            }
+            return true;
+          }
+
+          public Builder mergeFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            org.apache.mesos.Protos.Offer.Operation.Create parsedMessage = null;
+            try {
+              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              parsedMessage = (org.apache.mesos.Protos.Offer.Operation.Create) e.getUnfinishedMessage();
+              throw e;
+            } finally {
+              if (parsedMessage != null) {
+                mergeFrom(parsedMessage);
+              }
+            }
+            return this;
+          }
+          private int bitField0_;
+
+          // repeated .mesos.Resource volumes = 1;
+          private java.util.List<org.apache.mesos.Protos.Resource> volumes_ =
+            java.util.Collections.emptyList();
+          private void ensureVolumesIsMutable() {
+            if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+              volumes_ = new java.util.ArrayList<org.apache.mesos.Protos.Resource>(volumes_);
+              bitField0_ |= 0x00000001;
+             }
+          }
+
+          private com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder> volumesBuilder_;
+
+          /**
+           * <code>repeated .mesos.Resource volumes = 1;</code>
+           */
+          public java.util.List<org.apache.mesos.Protos.Resource> getVolumesList() {
+            if (volumesBuilder_ == null) {
+              return java.util.Collections.unmodifiableList(volumes_);
+            } else {
+              return volumesBuilder_.getMessageList();
+            }
+          }
+          /**
+           * <code>repeated .mesos.Resource volumes = 1;</code>
+           */
+          public int getVolumesCount() {
+            if (volumesBuilder_ == null) {
+              return volumes_.size();
+            } else {
+              return volumesBuilder_.getCount();
+            }
+          }
+          /**
+           * <code>repeated .mesos.Resource volumes = 1;</code>
+           */
+          public org.apache.mesos.Protos.Resource getVolumes(int index) {
+            if (volumesBuilder_ == null) {
+              return volumes_.get(index);
+            } else {
+              return volumesBuilder_.getMessage(index);
+            }
+          }
+          /**
+           * <code>repeated .mesos.Resource volumes = 1;</code>
+           */
+          public Builder setVolumes(
+              int index, org.apache.mesos.Protos.Resource value) {
+            if (volumesBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureVolumesIsMutable();
+              volumes_.set(index, value);
+              onChanged();
+            } else {
+              volumesBuilder_.setMessage(index, value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource volumes = 1;</code>
+           */
+          public Builder setVolumes(
+              int index, org.apache.mesos.Protos.Resource.Builder builderForValue) {
+            if (volumesBuilder_ == null) {
+              ensureVolumesIsMutable();
+              volumes_.set(index, builderForValue.build());
+              onChanged();
+            } else {
+              volumesBuilder_.setMessage(index, builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource volumes = 1;</code>
+           */
+          public Builder addVolumes(org.apache.mesos.Protos.Resource value) {
+            if (volumesBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureVolumesIsMutable();
+              volumes_.add(value);
+              onChanged();
+            } else {
+              volumesBuilder_.addMessage(value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource volumes = 1;</code>
+           */
+          public Builder addVolumes(
+              int index, org.apache.mesos.Protos.Resource value) {
+            if (volumesBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureVolumesIsMutable();
+              volumes_.add(index, value);
+              onChanged();
+            } else {
+              volumesBuilder_.addMessage(index, value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource volumes = 1;</code>
+           */
+          public Builder addVolumes(
+              org.apache.mesos.Protos.Resource.Builder builderForValue) {
+            if (volumesBuilder_ == null) {
+              ensureVolumesIsMutable();
+              volumes_.add(builderForValue.build());
+              onChanged();
+            } else {
+              volumesBuilder_.addMessage(builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource volumes = 1;</code>
+           */
+          public Builder addVolumes(
+              int index, org.apache.mesos.Protos.Resource.Builder builderForValue) {
+            if (volumesBuilder_ == null) {
+              ensureVolumesIsMutable();
+              volumes_.add(index, builderForValue.build());
+              onChanged();
+            } else {
+              volumesBuilder_.addMessage(index, builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource volumes = 1;</code>
+           */
+          public Builder addAllVolumes(
+              java.lang.Iterable<? extends org.apache.mesos.Protos.Resource> values) {
+            if (volumesBuilder_ == null) {
+              ensureVolumesIsMutable();
+              super.addAll(values, volumes_);
+              onChanged();
+            } else {
+              volumesBuilder_.addAllMessages(values);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource volumes = 1;</code>
+           */
+          public Builder clearVolumes() {
+            if (volumesBuilder_ == null) {
+              volumes_ = java.util.Collections.emptyList();
+              bitField0_ = (bitField0_ & ~0x00000001);
+              onChanged();
+            } else {
+              volumesBuilder_.clear();
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource volumes = 1;</code>
+           */
+          public Builder removeVolumes(int index) {
+            if (volumesBuilder_ == null) {
+              ensureVolumesIsMutable();
+              volumes_.remove(index);
+              onChanged();
+            } else {
+              volumesBuilder_.remove(index);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource volumes = 1;</code>
+           */
+          public org.apache.mesos.Protos.Resource.Builder getVolumesBuilder(
+              int index) {
+            return getVolumesFieldBuilder().getBuilder(index);
+          }
+          /**
+           * <code>repeated .mesos.Resource volumes = 1;</code>
+           */
+          public org.apache.mesos.Protos.ResourceOrBuilder getVolumesOrBuilder(
+              int index) {
+            if (volumesBuilder_ == null) {
+              return volumes_.get(index);  } else {
+              return volumesBuilder_.getMessageOrBuilder(index);
+            }
+          }
+          /**
+           * <code>repeated .mesos.Resource volumes = 1;</code>
+           */
+          public java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+               getVolumesOrBuilderList() {
+            if (volumesBuilder_ != null) {
+              return volumesBuilder_.getMessageOrBuilderList();
+            } else {
+              return java.util.Collections.unmodifiableList(volumes_);
+            }
+          }
+          /**
+           * <code>repeated .mesos.Resource volumes = 1;</code>
+           */
+          public org.apache.mesos.Protos.Resource.Builder addVolumesBuilder() {
+            return getVolumesFieldBuilder().addBuilder(
+                org.apache.mesos.Protos.Resource.getDefaultInstance());
+          }
+          /**
+           * <code>repeated .mesos.Resource volumes = 1;</code>
+           */
+          public org.apache.mesos.Protos.Resource.Builder addVolumesBuilder(
+              int index) {
+            return getVolumesFieldBuilder().addBuilder(
+                index, org.apache.mesos.Protos.Resource.getDefaultInstance());
+          }
+          /**
+           * <code>repeated .mesos.Resource volumes = 1;</code>
+           */
+          public java.util.List<org.apache.mesos.Protos.Resource.Builder> 
+               getVolumesBuilderList() {
+            return getVolumesFieldBuilder().getBuilderList();
+          }
+          private com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder> 
+              getVolumesFieldBuilder() {
+            if (volumesBuilder_ == null) {
+              volumesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                  org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder>(
+                      volumes_,
+                      ((bitField0_ & 0x00000001) == 0x00000001),
+                      getParentForChildren(),
+                      isClean());
+              volumes_ = null;
+            }
+            return volumesBuilder_;
+          }
+
+          // @@protoc_insertion_point(builder_scope:mesos.Offer.Operation.Create)
+        }
+
+        static {
+          defaultInstance = new Create(true);
+          defaultInstance.initFields();
+        }
+
+        // @@protoc_insertion_point(class_scope:mesos.Offer.Operation.Create)
+      }
+
+      public interface DestroyOrBuilder
+          extends com.google.protobuf.MessageOrBuilder {
+
+        // repeated .mesos.Resource volumes = 1;
+        /**
+         * <code>repeated .mesos.Resource volumes = 1;</code>
+         */
+        java.util.List<org.apache.mesos.Protos.Resource> 
+            getVolumesList();
+        /**
+         * <code>repeated .mesos.Resource volumes = 1;</code>
+         */
+        org.apache.mesos.Protos.Resource getVolumes(int index);
+        /**
+         * <code>repeated .mesos.Resource volumes = 1;</code>
+         */
+        int getVolumesCount();
+        /**
+         * <code>repeated .mesos.Resource volumes = 1;</code>
+         */
+        java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+            getVolumesOrBuilderList();
+        /**
+         * <code>repeated .mesos.Resource volumes = 1;</code>
+         */
+        org.apache.mesos.Protos.ResourceOrBuilder getVolumesOrBuilder(
+            int index);
+      }
+      /**
+       * Protobuf type {@code mesos.Offer.Operation.Destroy}
+       */
+      public static final class Destroy extends
+          com.google.protobuf.GeneratedMessage
+          implements DestroyOrBuilder {
+        // Use Destroy.newBuilder() to construct.
+        private Destroy(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+          super(builder);
+          this.unknownFields = builder.getUnknownFields();
+        }
+        private Destroy(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+        private static final Destroy defaultInstance;
+        public static Destroy getDefaultInstance() {
+          return defaultInstance;
+        }
+
+        public Destroy getDefaultInstanceForType() {
+          return defaultInstance;
+        }
+
+        private final com.google.protobuf.UnknownFieldSet unknownFields;
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet
+            getUnknownFields() {
+          return this.unknownFields;
+        }
+        private Destroy(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          initFields();
+          int mutable_bitField0_ = 0;
+          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+              com.google.protobuf.UnknownFieldSet.newBuilder();
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(input, unknownFields,
+                                         extensionRegistry, tag)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 10: {
+                  if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                    volumes_ = new java.util.ArrayList<org.apache.mesos.Protos.Resource>();
+                    mutable_bitField0_ |= 0x00000001;
+                  }
+                  volumes_.add(input.readMessage(org.apache.mesos.Protos.Resource.PARSER, extensionRegistry));
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw e.setUnfinishedMessage(this);
+          } catch (java.io.IOException e) {
+            throw new com.google.protobuf.InvalidProtocolBufferException(
+                e.getMessage()).setUnfinishedMessage(this);
+          } finally {
+            if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+              volumes_ = java.util.Collections.unmodifiableList(volumes_);
+            }
+            this.unknownFields = unknownFields.build();
+            makeExtensionsImmutable();
+          }
+        }
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_Offer_Operation_Destroy_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_Offer_Operation_Destroy_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.Offer.Operation.Destroy.class, org.apache.mesos.Protos.Offer.Operation.Destroy.Builder.class);
+        }
+
+        public static com.google.protobuf.Parser<Destroy> PARSER =
+            new com.google.protobuf.AbstractParser<Destroy>() {
+          public Destroy parsePartialFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return new Destroy(input, extensionRegistry);
+          }
+        };
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<Destroy> getParserForType() {
+          return PARSER;
+        }
+
+        // repeated .mesos.Resource volumes = 1;
+        public static final int VOLUMES_FIELD_NUMBER = 1;
+        private java.util.List<org.apache.mesos.Protos.Resource> volumes_;
+        /**
+         * <code>repeated .mesos.Resource volumes = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.Protos.Resource> getVolumesList() {
+          return volumes_;
+        }
+        /**
+         * <code>repeated .mesos.Resource volumes = 1;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+            getVolumesOrBuilderList() {
+          return volumes_;
+        }
+        /**
+         * <code>repeated .mesos.Resource volumes = 1;</code>
+         */
+        public int getVolumesCount() {
+          return volumes_.size();
+        }
+        /**
+         * <code>repeated .mesos.Resource volumes = 1;</code>
+         */
+        public org.apache.mesos.Protos.Resource getVolumes(int index) {
+          return volumes_.get(index);
+        }
+        /**
+         * <code>repeated .mesos.Resource volumes = 1;</code>
+         */
+        public org.apache.mesos.Protos.ResourceOrBuilder getVolumesOrBuilder(
+            int index) {
+          return volumes_.get(index);
+        }
+
+        private void initFields() {
+          volumes_ = java.util.Collections.emptyList();
+        }
+        private byte memoizedIsInitialized = -1;
+        public final boolean isInitialized() {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized != -1) return isInitialized == 1;
+
+          for (int i = 0; i < getVolumesCount(); i++) {
+            if (!getVolumes(i).isInitialized()) {
+              memoizedIsInitialized = 0;
+              return false;
+            }
+          }
+          memoizedIsInitialized = 1;
+          return true;
+        }
+
+        public void writeTo(com.google.protobuf.CodedOutputStream output)
+                            throws java.io.IOException {
+          getSerializedSize();
+          for (int i = 0; i < volumes_.size(); i++) {
+            output.writeMessage(1, volumes_.get(i));
+          }
+          getUnknownFields().writeTo(output);
+        }
+
+        private int memoizedSerializedSize = -1;
+        public int getSerializedSize() {
+          int size = memoizedSerializedSize;
+          if (size != -1) return size;
+
+          size = 0;
+          for (int i = 0; i < volumes_.size(); i++) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeMessageSize(1, volumes_.get(i));
+          }
+          size += getUnknownFields().getSerializedSize();
+          memoizedSerializedSize = size;
+          return size;
+        }
+
+        private static final long serialVersionUID = 0L;
+        @java.lang.Override
+        protected java.lang.Object writeReplace()
+            throws java.io.ObjectStreamException {
+          return super.writeReplace();
+        }
+
+        public static org.apache.mesos.Protos.Offer.Operation.Destroy parseFrom(
+            com.google.protobuf.ByteString data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Destroy parseFrom(
+            com.google.protobuf.ByteString data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Destroy parseFrom(byte[] data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Destroy parseFrom(
+            byte[] data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Destroy parseFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Destroy parseFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Destroy parseDelimitedFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Destroy parseDelimitedFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Destroy parseFrom(
+            com.google.protobuf.CodedInputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.Protos.Offer.Operation.Destroy parseFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+
+        public static Builder newBuilder() { return Builder.create(); }
+        public Builder newBuilderForType() { return newBuilder(); }
+        public static Builder newBuilder(org.apache.mesos.Protos.Offer.Operation.Destroy prototype) {
+          return newBuilder().mergeFrom(prototype);
+        }
+        public Builder toBuilder() { return newBuilder(this); }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          Builder builder = new Builder(parent);
+          return builder;
+        }
+        /**
+         * Protobuf type {@code mesos.Offer.Operation.Destroy}
+         */
+        public static final class Builder extends
+            com.google.protobuf.GeneratedMessage.Builder<Builder>
+           implements org.apache.mesos.Protos.Offer.Operation.DestroyOrBuilder {
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.Protos.internal_static_mesos_Offer_Operation_Destroy_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.Protos.internal_static_mesos_Offer_Operation_Destroy_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.Protos.Offer.Operation.Destroy.class, org.apache.mesos.Protos.Offer.Operation.Destroy.Builder.class);
+          }
+
+          // Construct using org.apache.mesos.Protos.Offer.Operation.Destroy.newBuilder()
+          private Builder() {
+            maybeForceBuilderInitialization();
+          }
+
+          private Builder(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            super(parent);
+            maybeForceBuilderInitialization();
+          }
+          private void maybeForceBuilderInitialization() {
+            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+              getVolumesFieldBuilder();
+            }
+          }
+          private static Builder create() {
+            return new Builder();
+          }
+
+          public Builder clear() {
+            super.clear();
+            if (volumesBuilder_ == null) {
+              volumes_ = java.util.Collections.emptyList();
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              volumesBuilder_.clear();
+            }
+            return this;
+          }
+
+          public Builder clone() {
+            return create().mergeFrom(buildPartial());
+          }
+
+          public com.google.protobuf.Descriptors.Descriptor
+              getDescriptorForType() {
+            return org.apache.mesos.Protos.internal_static_mesos_Offer_Operation_Destroy_descriptor;
+          }
+
+          public org.apache.mesos.Protos.Offer.Operation.Destroy getDefaultInstanceForType() {
+            return org.apache.mesos.Protos.Offer.Operation.Destroy.getDefaultInstance();
+          }
+
+          public org.apache.mesos.Protos.Offer.Operation.Destroy build() {
+            org.apache.mesos.Protos.Offer.Operation.Destroy result = buildPartial();
+            if (!result.isInitialized()) {
+              throw newUninitializedMessageException(result);
+            }
+            return result;
+          }
+
+          public org.apache.mesos.Protos.Offer.Operation.Destroy buildPartial() {
+            org.apache.mesos.Protos.Offer.Operation.Destroy result = new org.apache.mesos.Protos.Offer.Operation.Destroy(this);
+            int from_bitField0_ = bitField0_;
+            if (volumesBuilder_ == null) {
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                volumes_ = java.util.Collections.unmodifiableList(volumes_);
+                bitField0_ = (bitField0_ & ~0x00000001);
+              }
+              result.volumes_ = volumes_;
+            } else {
+              result.volumes_ = volumesBuilder_.build();
+            }
+            onBuilt();
+            return result;
+          }
+
+          public Builder mergeFrom(com.google.protobuf.Message other) {
+            if (other instanceof org.apache.mesos.Protos.Offer.Operation.Destroy) {
+              return mergeFrom((org.apache.mesos.Protos.Offer.Operation.Destroy)other);
+            } else {
+              super.mergeFrom(other);
+              return this;
+            }
+          }
+
+          public Builder mergeFrom(org.apache.mesos.Protos.Offer.Operation.Destroy other) {
+            if (other == org.apache.mesos.Protos.Offer.Operation.Destroy.getDefaultInstance()) return this;
+            if (volumesBuilder_ == null) {
+              if (!other.volumes_.isEmpty()) {
+                if (volumes_.isEmpty()) {
+                  volumes_ = other.volumes_;
+                  bitField0_ = (bitField0_ & ~0x00000001);
+                } else {
+                  ensureVolumesIsMutable();
+                  volumes_.addAll(other.volumes_);
+                }
+                onChanged();
+              }
+            } else {
+              if (!other.volumes_.isEmpty()) {
+                if (volumesBuilder_.isEmpty()) {
+                  volumesBuilder_.dispose();
+                  volumesBuilder_ = null;
+                  volumes_ = other.volumes_;
+                  bitField0_ = (bitField0_ & ~0x00000001);
+                  volumesBuilder_ = 
+                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                       getVolumesFieldBuilder() : null;
+                } else {
+                  volumesBuilder_.addAllMessages(other.volumes_);
+                }
+              }
+            }
+            this.mergeUnknownFields(other.getUnknownFields());
+            return this;
+          }
+
+          public final boolean isInitialized() {
+            for (int i = 0; i < getVolumesCount(); i++) {
+              if (!getVolumes(i).isInitialized()) {
+                
+                return false;
+              }
+            }
+            return true;
+          }
+
+          public Builder mergeFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            org.apache.mesos.Protos.Offer.Operation.Destroy parsedMessage = null;
+            try {
+              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              parsedMessage = (org.apache.mesos.Protos.Offer.Operation.Destroy) e.getUnfinishedMessage();
+              throw e;
+            } finally {
+              if (parsedMessage != null) {
+                mergeFrom(parsedMessage);
+              }
+            }
+            return this;
+          }
+          private int bitField0_;
+
+          // repeated .mesos.Resource volumes = 1;
+          private java.util.List<org.apache.mesos.Protos.Resource> volumes_ =
+            java.util.Collections.emptyList();
+          private void ensureVolumesIsMutable() {
+            if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+              volumes_ = new java.util.ArrayList<org.apache.mesos.Protos.Resource>(volumes_);
+              bitField0_ |= 0x00000001;
+             }
+          }
+
+          private com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder> volumesBuilder_;
+
+          /**
+           * <code>repeated .mesos.Resource volumes = 1;</code>
+           */
+          public java.util.List<org.apache.mesos.Protos.Resource> getVolumesList() {
+            if (volumesBuilder_ == null) {
+              return java.util.Collections.unmodifiableList(volumes_);
+            } else {
+              return volumesBuilder_.getMessageList();
+            }
+          }
+          /**
+           * <code>repeated .mesos.Resource volumes = 1;</code>
+           */
+          public int getVolumesCount() {
+            if (volumesBuilder_ == null) {
+              return volumes_.size();
+            } else {
+              return volumesBuilder_.getCount();
+            }
+          }
+          /**
+           * <code>repeated .mesos.Resource volumes = 1;</code>
+           */
+          public org.apache.mesos.Protos.Resource getVolumes(int index) {
+            if (volumesBuilder_ == null) {
+              return volumes_.get(index);
+            } else {
+              return volumesBuilder_.getMessage(index);
+            }
+          }
+          /**
+           * <code>repeated .mesos.Resource volumes = 1;</code>
+           */
+          public Builder setVolumes(
+              int index, org.apache.mesos.Protos.Resource value) {
+            if (volumesBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureVolumesIsMutable();
+              volumes_.set(index, value);
+              onChanged();
+            } else {
+              volumesBuilder_.setMessage(index, value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource volumes = 1;</code>
+           */
+          public Builder setVolumes(
+              int index, org.apache.mesos.Protos.Resource.Builder builderForValue) {
+            if (volumesBuilder_ == null) {
+              ensureVolumesIsMutable();
+              volumes_.set(index, builderForValue.build());
+              onChanged();
+            } else {
+              volumesBuilder_.setMessage(index, builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource volumes = 1;</code>
+           */
+          public Builder addVolumes(org.apache.mesos.Protos.Resource value) {
+            if (volumesBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureVolumesIsMutable();
+              volumes_.add(value);
+              onChanged();
+            } else {
+              volumesBuilder_.addMessage(value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource volumes = 1;</code>
+           */
+          public Builder addVolumes(
+              int index, org.apache.mesos.Protos.Resource value) {
+            if (volumesBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureVolumesIsMutable();
+              volumes_.add(index, value);
+              onChanged();
+            } else {
+              volumesBuilder_.addMessage(index, value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource volumes = 1;</code>
+           */
+          public Builder addVolumes(
+              org.apache.mesos.Protos.Resource.Builder builderForValue) {
+            if (volumesBuilder_ == null) {
+              ensureVolumesIsMutable();
+              volumes_.add(builderForValue.build());
+              onChanged();
+            } else {
+              volumesBuilder_.addMessage(builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource volumes = 1;</code>
+           */
+          public Builder addVolumes(
+              int index, org.apache.mesos.Protos.Resource.Builder builderForValue) {
+            if (volumesBuilder_ == null) {
+              ensureVolumesIsMutable();
+              volumes_.add(index, builderForValue.build());
+              onChanged();
+            } else {
+              volumesBuilder_.addMessage(index, builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource volumes = 1;</code>
+           */
+          public Builder addAllVolumes(
+              java.lang.Iterable<? extends org.apache.mesos.Protos.Resource> values) {
+            if (volumesBuilder_ == null) {
+              ensureVolumesIsMutable();
+              super.addAll(values, volumes_);
+              onChanged();
+            } else {
+              volumesBuilder_.addAllMessages(values);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource volumes = 1;</code>
+           */
+          public Builder clearVolumes() {
+            if (volumesBuilder_ == null) {
+              volumes_ = java.util.Collections.emptyList();
+              bitField0_ = (bitField0_ & ~0x00000001);
+              onChanged();
+            } else {
+              volumesBuilder_.clear();
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource volumes = 1;</code>
+           */
+          public Builder removeVolumes(int index) {
+            if (volumesBuilder_ == null) {
+              ensureVolumesIsMutable();
+              volumes_.remove(index);
+              onChanged();
+            } else {
+              volumesBuilder_.remove(index);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.Resource volumes = 1;</code>
+           */
+          public org.apache.mesos.Protos.Resource.Builder getVolumesBuilder(
+              int index) {
+            return getVolumesFieldBuilder().getBuilder(index);
+          }
+          /**
+           * <code>repeated .mesos.Resource volumes = 1;</code>
+           */
+          public org.apache.mesos.Protos.ResourceOrBuilder getVolumesOrBuilder(
+              int index) {
+            if (volumesBuilder_ == null) {
+              return volumes_.get(index);  } else {
+              return volumesBuilder_.getMessageOrBuilder(index);
+            }
+          }
+          /**
+           * <code>repeated .mesos.Resource volumes = 1;</code>
+           */
+          public java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+               getVolumesOrBuilderList() {
+            if (volumesBuilder_ != null) {
+              return volumesBuilder_.getMessageOrBuilderList();
+            } else {
+              return java.util.Collections.unmodifiableList(volumes_);
+            }
+          }
+          /**
+           * <code>repeated .mesos.Resource volumes = 1;</code>
+           */
+          public org.apache.mesos.Protos.Resource.Builder addVolumesBuilder() {
+            return getVolumesFieldBuilder().addBuilder(
+                org.apache.mesos.Protos.Resource.getDefaultInstance());
+          }
+          /**
+           * <code>repeated .mesos.Resource volumes = 1;</code>
+           */
+          public org.apache.mesos.Protos.Resource.Builder addVolumesBuilder(
+              int index) {
+            return getVolumesFieldBuilder().addBuilder(
+                index, org.apache.mesos.Protos.Resource.getDefaultInstance());
+          }
+          /**
+           * <code>repeated .mesos.Resource volumes = 1;</code>
+           */
+          public java.util.List<org.apache.mesos.Protos.Resource.Builder> 
+               getVolumesBuilderList() {
+            return getVolumesFieldBuilder().getBuilderList();
+          }
+          private com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder> 
+              getVolumesFieldBuilder() {
+            if (volumesBuilder_ == null) {
+              volumesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                  org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder>(
+                      volumes_,
+                      ((bitField0_ & 0x00000001) == 0x00000001),
+                      getParentForChildren(),
+                      isClean());
+              volumes_ = null;
+            }
+            return volumesBuilder_;
+          }
+
+          // @@protoc_insertion_point(builder_scope:mesos.Offer.Operation.Destroy)
+        }
+
+        static {
+          defaultInstance = new Destroy(true);
+          defaultInstance.initFields();
+        }
+
+        // @@protoc_insertion_point(class_scope:mesos.Offer.Operation.Destroy)
+      }
+
+      private int bitField0_;
+      // optional .mesos.Offer.Operation.Type type = 1;
+      public static final int TYPE_FIELD_NUMBER = 1;
+      private org.apache.mesos.Protos.Offer.Operation.Type type_;
+      /**
+       * <code>optional .mesos.Offer.Operation.Type type = 1;</code>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.Offer.Operation.Type type = 1;</code>
+       */
+      public org.apache.mesos.Protos.Offer.Operation.Type getType() {
+        return type_;
+      }
+
+      // optional .mesos.Offer.Operation.Launch launch = 2;
+      public static final int LAUNCH_FIELD_NUMBER = 2;
+      private org.apache.mesos.Protos.Offer.Operation.Launch launch_;
+      /**
+       * <code>optional .mesos.Offer.Operation.Launch launch = 2;</code>
+       */
+      public boolean hasLaunch() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.Offer.Operation.Launch launch = 2;</code>
+       */
+      public org.apache.mesos.Protos.Offer.Operation.Launch getLaunch() {
+        return launch_;
+      }
+      /**
+       * <code>optional .mesos.Offer.Operation.Launch launch = 2;</code>
+       */
+      public org.apache.mesos.Protos.Offer.Operation.LaunchOrBuilder getLaunchOrBuilder() {
+        return launch_;
+      }
+
+      // optional .mesos.Offer.Operation.LaunchGroup launch_group = 7;
+      public static final int LAUNCH_GROUP_FIELD_NUMBER = 7;
+      private org.apache.mesos.Protos.Offer.Operation.LaunchGroup launchGroup_;
+      /**
+       * <code>optional .mesos.Offer.Operation.LaunchGroup launch_group = 7;</code>
+       */
+      public boolean hasLaunchGroup() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.Offer.Operation.LaunchGroup launch_group = 7;</code>
+       */
+      public org.apache.mesos.Protos.Offer.Operation.LaunchGroup getLaunchGroup() {
+        return launchGroup_;
+      }
+      /**
+       * <code>optional .mesos.Offer.Operation.LaunchGroup launch_group = 7;</code>
+       */
+      public org.apache.mesos.Protos.Offer.Operation.LaunchGroupOrBuilder getLaunchGroupOrBuilder() {
+        return launchGroup_;
+      }
+
+      // optional .mesos.Offer.Operation.Reserve reserve = 3;
+      public static final int RESERVE_FIELD_NUMBER = 3;
+      private org.apache.mesos.Protos.Offer.Operation.Reserve reserve_;
+      /**
+       * <code>optional .mesos.Offer.Operation.Reserve reserve = 3;</code>
+       */
+      public boolean hasReserve() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.Offer.Operation.Reserve reserve = 3;</code>
+       */
+      public org.apache.mesos.Protos.Offer.Operation.Reserve getReserve() {
+        return reserve_;
+      }
+      /**
+       * <code>optional .mesos.Offer.Operation.Reserve reserve = 3;</code>
+       */
+      public org.apache.mesos.Protos.Offer.Operation.ReserveOrBuilder getReserveOrBuilder() {
+        return reserve_;
+      }
+
+      // optional .mesos.Offer.Operation.Unreserve unreserve = 4;
+      public static final int UNRESERVE_FIELD_NUMBER = 4;
+      private org.apache.mesos.Protos.Offer.Operation.Unreserve unreserve_;
+      /**
+       * <code>optional .mesos.Offer.Operation.Unreserve unreserve = 4;</code>
+       */
+      public boolean hasUnreserve() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional .mesos.Offer.Operation.Unreserve unreserve = 4;</code>
+       */
+      public org.apache.mesos.Protos.Offer.Operation.Unreserve getUnreserve() {
+        return unreserve_;
+      }
+      /**
+       * <code>optional .mesos.Offer.Operation.Unreserve unreserve = 4;</code>
+       */
+      public org.apache.mesos.Protos.Offer.Operation.UnreserveOrBuilder getUnreserveOrBuilder() {
+        return unreserve_;
+      }
+
+      // optional .mesos.Offer.Operation.Create create = 5;
+      public static final int CREATE_FIELD_NUMBER = 5;
+      private org.apache.mesos.Protos.Offer.Operation.Create create_;
+      /**
+       * <code>optional .mesos.Offer.Operation.Create create = 5;</code>
+       */
+      public boolean hasCreate() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional .mesos.Offer.Operation.Create create = 5;</code>
+       */
+      public org.apache.mesos.Protos.Offer.Operation.Create getCreate() {
+        return create_;
+      }
+      /**
+       * <code>optional .mesos.Offer.Operation.Create create = 5;</code>
+       */
+      public org.apache.mesos.Protos.Offer.Operation.CreateOrBuilder getCreateOrBuilder() {
+        return create_;
+      }
+
+      // optional .mesos.Offer.Operation.Destroy destroy = 6;
+      public static final int DESTROY_FIELD_NUMBER = 6;
+      private org.apache.mesos.Protos.Offer.Operation.Destroy destroy_;
+      /**
+       * <code>optional .mesos.Offer.Operation.Destroy destroy = 6;</code>
+       */
+      public boolean hasDestroy() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional .mesos.Offer.Operation.Destroy destroy = 6;</code>
+       */
+      public org.apache.mesos.Protos.Offer.Operation.Destroy getDestroy() {
+        return destroy_;
+      }
+      /**
+       * <code>optional .mesos.Offer.Operation.Destroy destroy = 6;</code>
+       */
+      public org.apache.mesos.Protos.Offer.Operation.DestroyOrBuilder getDestroyOrBuilder() {
+        return destroy_;
+      }
+
+      private void initFields() {
+        type_ = org.apache.mesos.Protos.Offer.Operation.Type.UNKNOWN;
+        launch_ = org.apache.mesos.Protos.Offer.Operation.Launch.getDefaultInstance();
+        launchGroup_ = org.apache.mesos.Protos.Offer.Operation.LaunchGroup.getDefaultInstance();
+        reserve_ = org.apache.mesos.Protos.Offer.Operation.Reserve.getDefaultInstance();
+        unreserve_ = org.apache.mesos.Protos.Offer.Operation.Unreserve.getDefaultInstance();
+        create_ = org.apache.mesos.Protos.Offer.Operation.Create.getDefaultInstance();
+        destroy_ = org.apache.mesos.Protos.Offer.Operation.Destroy.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (hasLaunch()) {
+          if (!getLaunch().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        if (hasLaunchGroup()) {
+          if (!getLaunchGroup().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        if (hasReserve()) {
+          if (!getReserve().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        if (hasUnreserve()) {
+          if (!getUnreserve().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        if (hasCreate()) {
+          if (!getCreate().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        if (hasDestroy()) {
+          if (!getDestroy().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeEnum(1, type_.getNumber());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeMessage(2, launch_);
+        }
+        if (((bitField0_ & 0x00000008) == 0x00000008)) {
+          output.writeMessage(3, reserve_);
+        }
+        if (((bitField0_ & 0x00000010) == 0x00000010)) {
+          output.writeMessage(4, unreserve_);
+        }
+        if (((bitField0_ & 0x00000020) == 0x00000020)) {
+          output.writeMessage(5, create_);
+        }
+        if (((bitField0_ & 0x00000040) == 0x00000040)) {
+          output.writeMessage(6, destroy_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeMessage(7, launchGroup_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeEnumSize(1, type_.getNumber());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(2, launch_);
+        }
+        if (((bitField0_ & 0x00000008) == 0x00000008)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(3, reserve_);
+        }
+        if (((bitField0_ & 0x00000010) == 0x00000010)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(4, unreserve_);
+        }
+        if (((bitField0_ & 0x00000020) == 0x00000020)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(5, create_);
+        }
+        if (((bitField0_ & 0x00000040) == 0x00000040)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(6, destroy_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(7, launchGroup_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.Protos.Offer.Operation parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.Offer.Operation parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Offer.Operation parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.Offer.Operation parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Offer.Operation parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.Offer.Operation parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Offer.Operation parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.Protos.Offer.Operation parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Offer.Operation parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.Offer.Operation parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.Protos.Offer.Operation prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.Offer.Operation}
+       *
+       * <pre>
+       * Defines an operation that can be performed against offers.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.Protos.Offer.OperationOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_Offer_Operation_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_Offer_Operation_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.Offer.Operation.class, org.apache.mesos.Protos.Offer.Operation.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.Protos.Offer.Operation.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getLaunchFieldBuilder();
+            getLaunchGroupFieldBuilder();
+            getReserveFieldBuilder();
+            getUnreserveFieldBuilder();
+            getCreateFieldBuilder();
+            getDestroyFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          type_ = org.apache.mesos.Protos.Offer.Operation.Type.UNKNOWN;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          if (launchBuilder_ == null) {
+            launch_ = org.apache.mesos.Protos.Offer.Operation.Launch.getDefaultInstance();
+          } else {
+            launchBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          if (launchGroupBuilder_ == null) {
+            launchGroup_ = org.apache.mesos.Protos.Offer.Operation.LaunchGroup.getDefaultInstance();
+          } else {
+            launchGroupBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
+          if (reserveBuilder_ == null) {
+            reserve_ = org.apache.mesos.Protos.Offer.Operation.Reserve.getDefaultInstance();
+          } else {
+            reserveBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000008);
+          if (unreserveBuilder_ == null) {
+            unreserve_ = org.apache.mesos.Protos.Offer.Operation.Unreserve.getDefaultInstance();
+          } else {
+            unreserveBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000010);
+          if (createBuilder_ == null) {
+            create_ = org.apache.mesos.Protos.Offer.Operation.Create.getDefaultInstance();
+          } else {
+            createBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000020);
+          if (destroyBuilder_ == null) {
+            destroy_ = org.apache.mesos.Protos.Offer.Operation.Destroy.getDefaultInstance();
+          } else {
+            destroyBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000040);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.Protos.internal_static_mesos_Offer_Operation_descriptor;
+        }
+
+        public org.apache.mesos.Protos.Offer.Operation getDefaultInstanceForType() {
+          return org.apache.mesos.Protos.Offer.Operation.getDefaultInstance();
+        }
+
+        public org.apache.mesos.Protos.Offer.Operation build() {
+          org.apache.mesos.Protos.Offer.Operation result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.Protos.Offer.Operation buildPartial() {
+          org.apache.mesos.Protos.Offer.Operation result = new org.apache.mesos.Protos.Offer.Operation(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.type_ = type_;
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          if (launchBuilder_ == null) {
+            result.launch_ = launch_;
+          } else {
+            result.launch_ = launchBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          if (launchGroupBuilder_ == null) {
+            result.launchGroup_ = launchGroup_;
+          } else {
+            result.launchGroup_ = launchGroupBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+            to_bitField0_ |= 0x00000008;
+          }
+          if (reserveBuilder_ == null) {
+            result.reserve_ = reserve_;
+          } else {
+            result.reserve_ = reserveBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+            to_bitField0_ |= 0x00000010;
+          }
+          if (unreserveBuilder_ == null) {
+            result.unreserve_ = unreserve_;
+          } else {
+            result.unreserve_ = unreserveBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+            to_bitField0_ |= 0x00000020;
+          }
+          if (createBuilder_ == null) {
+            result.create_ = create_;
+          } else {
+            result.create_ = createBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+            to_bitField0_ |= 0x00000040;
+          }
+          if (destroyBuilder_ == null) {
+            result.destroy_ = destroy_;
+          } else {
+            result.destroy_ = destroyBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.Protos.Offer.Operation) {
+            return mergeFrom((org.apache.mesos.Protos.Offer.Operation)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.Protos.Offer.Operation other) {
+          if (other == org.apache.mesos.Protos.Offer.Operation.getDefaultInstance()) return this;
+          if (other.hasType()) {
+            setType(other.getType());
+          }
+          if (other.hasLaunch()) {
+            mergeLaunch(other.getLaunch());
+          }
+          if (other.hasLaunchGroup()) {
+            mergeLaunchGroup(other.getLaunchGroup());
+          }
+          if (other.hasReserve()) {
+            mergeReserve(other.getReserve());
+          }
+          if (other.hasUnreserve()) {
+            mergeUnreserve(other.getUnreserve());
+          }
+          if (other.hasCreate()) {
+            mergeCreate(other.getCreate());
+          }
+          if (other.hasDestroy()) {
+            mergeDestroy(other.getDestroy());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (hasLaunch()) {
+            if (!getLaunch().isInitialized()) {
+              
+              return false;
+            }
+          }
+          if (hasLaunchGroup()) {
+            if (!getLaunchGroup().isInitialized()) {
+              
+              return false;
+            }
+          }
+          if (hasReserve()) {
+            if (!getReserve().isInitialized()) {
+              
+              return false;
+            }
+          }
+          if (hasUnreserve()) {
+            if (!getUnreserve().isInitialized()) {
+              
+              return false;
+            }
+          }
+          if (hasCreate()) {
+            if (!getCreate().isInitialized()) {
+              
+              return false;
+            }
+          }
+          if (hasDestroy()) {
+            if (!getDestroy().isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.Protos.Offer.Operation parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.Protos.Offer.Operation) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // optional .mesos.Offer.Operation.Type type = 1;
+        private org.apache.mesos.Protos.Offer.Operation.Type type_ = org.apache.mesos.Protos.Offer.Operation.Type.UNKNOWN;
+        /**
+         * <code>optional .mesos.Offer.Operation.Type type = 1;</code>
+         */
+        public boolean hasType() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.Type type = 1;</code>
+         */
+        public org.apache.mesos.Protos.Offer.Operation.Type getType() {
+          return type_;
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.Type type = 1;</code>
+         */
+        public Builder setType(org.apache.mesos.Protos.Offer.Operation.Type value) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          bitField0_ |= 0x00000001;
+          type_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.Type type = 1;</code>
+         */
+        public Builder clearType() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          type_ = org.apache.mesos.Protos.Offer.Operation.Type.UNKNOWN;
+          onChanged();
+          return this;
+        }
+
+        // optional .mesos.Offer.Operation.Launch launch = 2;
+        private org.apache.mesos.Protos.Offer.Operation.Launch launch_ = org.apache.mesos.Protos.Offer.Operation.Launch.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Offer.Operation.Launch, org.apache.mesos.Protos.Offer.Operation.Launch.Builder, org.apache.mesos.Protos.Offer.Operation.LaunchOrBuilder> launchBuilder_;
+        /**
+         * <code>optional .mesos.Offer.Operation.Launch launch = 2;</code>
+         */
+        public boolean hasLaunch() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.Launch launch = 2;</code>
+         */
+        public org.apache.mesos.Protos.Offer.Operation.Launch getLaunch() {
+          if (launchBuilder_ == null) {
+            return launch_;
+          } else {
+            return launchBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.Launch launch = 2;</code>
+         */
+        public Builder setLaunch(org.apache.mesos.Protos.Offer.Operation.Launch value) {
+          if (launchBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            launch_ = value;
+            onChanged();
+          } else {
+            launchBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.Launch launch = 2;</code>
+         */
+        public Builder setLaunch(
+            org.apache.mesos.Protos.Offer.Operation.Launch.Builder builderForValue) {
+          if (launchBuilder_ == null) {
+            launch_ = builderForValue.build();
+            onChanged();
+          } else {
+            launchBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.Launch launch = 2;</code>
+         */
+        public Builder mergeLaunch(org.apache.mesos.Protos.Offer.Operation.Launch value) {
+          if (launchBuilder_ == null) {
+            if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                launch_ != org.apache.mesos.Protos.Offer.Operation.Launch.getDefaultInstance()) {
+              launch_ =
+                org.apache.mesos.Protos.Offer.Operation.Launch.newBuilder(launch_).mergeFrom(value).buildPartial();
+            } else {
+              launch_ = value;
+            }
+            onChanged();
+          } else {
+            launchBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.Launch launch = 2;</code>
+         */
+        public Builder clearLaunch() {
+          if (launchBuilder_ == null) {
+            launch_ = org.apache.mesos.Protos.Offer.Operation.Launch.getDefaultInstance();
+            onChanged();
+          } else {
+            launchBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.Launch launch = 2;</code>
+         */
+        public org.apache.mesos.Protos.Offer.Operation.Launch.Builder getLaunchBuilder() {
+          bitField0_ |= 0x00000002;
+          onChanged();
+          return getLaunchFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.Launch launch = 2;</code>
+         */
+        public org.apache.mesos.Protos.Offer.Operation.LaunchOrBuilder getLaunchOrBuilder() {
+          if (launchBuilder_ != null) {
+            return launchBuilder_.getMessageOrBuilder();
+          } else {
+            return launch_;
+          }
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.Launch launch = 2;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Offer.Operation.Launch, org.apache.mesos.Protos.Offer.Operation.Launch.Builder, org.apache.mesos.Protos.Offer.Operation.LaunchOrBuilder> 
+            getLaunchFieldBuilder() {
+          if (launchBuilder_ == null) {
+            launchBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.Offer.Operation.Launch, org.apache.mesos.Protos.Offer.Operation.Launch.Builder, org.apache.mesos.Protos.Offer.Operation.LaunchOrBuilder>(
+                    launch_,
+                    getParentForChildren(),
+                    isClean());
+            launch_ = null;
+          }
+          return launchBuilder_;
+        }
+
+        // optional .mesos.Offer.Operation.LaunchGroup launch_group = 7;
+        private org.apache.mesos.Protos.Offer.Operation.LaunchGroup launchGroup_ = org.apache.mesos.Protos.Offer.Operation.LaunchGroup.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Offer.Operation.LaunchGroup, org.apache.mesos.Protos.Offer.Operation.LaunchGroup.Builder, org.apache.mesos.Protos.Offer.Operation.LaunchGroupOrBuilder> launchGroupBuilder_;
+        /**
+         * <code>optional .mesos.Offer.Operation.LaunchGroup launch_group = 7;</code>
+         */
+        public boolean hasLaunchGroup() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.LaunchGroup launch_group = 7;</code>
+         */
+        public org.apache.mesos.Protos.Offer.Operation.LaunchGroup getLaunchGroup() {
+          if (launchGroupBuilder_ == null) {
+            return launchGroup_;
+          } else {
+            return launchGroupBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.LaunchGroup launch_group = 7;</code>
+         */
+        public Builder setLaunchGroup(org.apache.mesos.Protos.Offer.Operation.LaunchGroup value) {
+          if (launchGroupBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            launchGroup_ = value;
+            onChanged();
+          } else {
+            launchGroupBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.LaunchGroup launch_group = 7;</code>
+         */
+        public Builder setLaunchGroup(
+            org.apache.mesos.Protos.Offer.Operation.LaunchGroup.Builder builderForValue) {
+          if (launchGroupBuilder_ == null) {
+            launchGroup_ = builderForValue.build();
+            onChanged();
+          } else {
+            launchGroupBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.LaunchGroup launch_group = 7;</code>
+         */
+        public Builder mergeLaunchGroup(org.apache.mesos.Protos.Offer.Operation.LaunchGroup value) {
+          if (launchGroupBuilder_ == null) {
+            if (((bitField0_ & 0x00000004) == 0x00000004) &&
+                launchGroup_ != org.apache.mesos.Protos.Offer.Operation.LaunchGroup.getDefaultInstance()) {
+              launchGroup_ =
+                org.apache.mesos.Protos.Offer.Operation.LaunchGroup.newBuilder(launchGroup_).mergeFrom(value).buildPartial();
+            } else {
+              launchGroup_ = value;
+            }
+            onChanged();
+          } else {
+            launchGroupBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.LaunchGroup launch_group = 7;</code>
+         */
+        public Builder clearLaunchGroup() {
+          if (launchGroupBuilder_ == null) {
+            launchGroup_ = org.apache.mesos.Protos.Offer.Operation.LaunchGroup.getDefaultInstance();
+            onChanged();
+          } else {
+            launchGroupBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.LaunchGroup launch_group = 7;</code>
+         */
+        public org.apache.mesos.Protos.Offer.Operation.LaunchGroup.Builder getLaunchGroupBuilder() {
+          bitField0_ |= 0x00000004;
+          onChanged();
+          return getLaunchGroupFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.LaunchGroup launch_group = 7;</code>
+         */
+        public org.apache.mesos.Protos.Offer.Operation.LaunchGroupOrBuilder getLaunchGroupOrBuilder() {
+          if (launchGroupBuilder_ != null) {
+            return launchGroupBuilder_.getMessageOrBuilder();
+          } else {
+            return launchGroup_;
+          }
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.LaunchGroup launch_group = 7;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Offer.Operation.LaunchGroup, org.apache.mesos.Protos.Offer.Operation.LaunchGroup.Builder, org.apache.mesos.Protos.Offer.Operation.LaunchGroupOrBuilder> 
+            getLaunchGroupFieldBuilder() {
+          if (launchGroupBuilder_ == null) {
+            launchGroupBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.Offer.Operation.LaunchGroup, org.apache.mesos.Protos.Offer.Operation.LaunchGroup.Builder, org.apache.mesos.Protos.Offer.Operation.LaunchGroupOrBuilder>(
+                    launchGroup_,
+                    getParentForChildren(),
+                    isClean());
+            launchGroup_ = null;
+          }
+          return launchGroupBuilder_;
+        }
+
+        // optional .mesos.Offer.Operation.Reserve reserve = 3;
+        private org.apache.mesos.Protos.Offer.Operation.Reserve reserve_ = org.apache.mesos.Protos.Offer.Operation.Reserve.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Offer.Operation.Reserve, org.apache.mesos.Protos.Offer.Operation.Reserve.Builder, org.apache.mesos.Protos.Offer.Operation.ReserveOrBuilder> reserveBuilder_;
+        /**
+         * <code>optional .mesos.Offer.Operation.Reserve reserve = 3;</code>
+         */
+        public boolean hasReserve() {
+          return ((bitField0_ & 0x00000008) == 0x00000008);
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.Reserve reserve = 3;</code>
+         */
+        public org.apache.mesos.Protos.Offer.Operation.Reserve getReserve() {
+          if (reserveBuilder_ == null) {
+            return reserve_;
+          } else {
+            return reserveBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.Reserve reserve = 3;</code>
+         */
+        public Builder setReserve(org.apache.mesos.Protos.Offer.Operation.Reserve value) {
+          if (reserveBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            reserve_ = value;
+            onChanged();
+          } else {
+            reserveBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000008;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.Reserve reserve = 3;</code>
+         */
+        public Builder setReserve(
+            org.apache.mesos.Protos.Offer.Operation.Reserve.Builder builderForValue) {
+          if (reserveBuilder_ == null) {
+            reserve_ = builderForValue.build();
+            onChanged();
+          } else {
+            reserveBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000008;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.Reserve reserve = 3;</code>
+         */
+        public Builder mergeReserve(org.apache.mesos.Protos.Offer.Operation.Reserve value) {
+          if (reserveBuilder_ == null) {
+            if (((bitField0_ & 0x00000008) == 0x00000008) &&
+                reserve_ != org.apache.mesos.Protos.Offer.Operation.Reserve.getDefaultInstance()) {
+              reserve_ =
+                org.apache.mesos.Protos.Offer.Operation.Reserve.newBuilder(reserve_).mergeFrom(value).buildPartial();
+            } else {
+              reserve_ = value;
+            }
+            onChanged();
+          } else {
+            reserveBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000008;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.Reserve reserve = 3;</code>
+         */
+        public Builder clearReserve() {
+          if (reserveBuilder_ == null) {
+            reserve_ = org.apache.mesos.Protos.Offer.Operation.Reserve.getDefaultInstance();
+            onChanged();
+          } else {
+            reserveBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000008);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.Reserve reserve = 3;</code>
+         */
+        public org.apache.mesos.Protos.Offer.Operation.Reserve.Builder getReserveBuilder() {
+          bitField0_ |= 0x00000008;
+          onChanged();
+          return getReserveFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.Reserve reserve = 3;</code>
+         */
+        public org.apache.mesos.Protos.Offer.Operation.ReserveOrBuilder getReserveOrBuilder() {
+          if (reserveBuilder_ != null) {
+            return reserveBuilder_.getMessageOrBuilder();
+          } else {
+            return reserve_;
+          }
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.Reserve reserve = 3;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Offer.Operation.Reserve, org.apache.mesos.Protos.Offer.Operation.Reserve.Builder, org.apache.mesos.Protos.Offer.Operation.ReserveOrBuilder> 
+            getReserveFieldBuilder() {
+          if (reserveBuilder_ == null) {
+            reserveBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.Offer.Operation.Reserve, org.apache.mesos.Protos.Offer.Operation.Reserve.Builder, org.apache.mesos.Protos.Offer.Operation.ReserveOrBuilder>(
+                    reserve_,
+                    getParentForChildren(),
+                    isClean());
+            reserve_ = null;
+          }
+          return reserveBuilder_;
+        }
+
+        // optional .mesos.Offer.Operation.Unreserve unreserve = 4;
+        private org.apache.mesos.Protos.Offer.Operation.Unreserve unreserve_ = org.apache.mesos.Protos.Offer.Operation.Unreserve.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Offer.Operation.Unreserve, org.apache.mesos.Protos.Offer.Operation.Unreserve.Builder, org.apache.mesos.Protos.Offer.Operation.UnreserveOrBuilder> unreserveBuilder_;
+        /**
+         * <code>optional .mesos.Offer.Operation.Unreserve unreserve = 4;</code>
+         */
+        public boolean hasUnreserve() {
+          return ((bitField0_ & 0x00000010) == 0x00000010);
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.Unreserve unreserve = 4;</code>
+         */
+        public org.apache.mesos.Protos.Offer.Operation.Unreserve getUnreserve() {
+          if (unreserveBuilder_ == null) {
+            return unreserve_;
+          } else {
+            return unreserveBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.Unreserve unreserve = 4;</code>
+         */
+        public Builder setUnreserve(org.apache.mesos.Protos.Offer.Operation.Unreserve value) {
+          if (unreserveBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            unreserve_ = value;
+            onChanged();
+          } else {
+            unreserveBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000010;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.Unreserve unreserve = 4;</code>
+         */
+        public Builder setUnreserve(
+            org.apache.mesos.Protos.Offer.Operation.Unreserve.Builder builderForValue) {
+          if (unreserveBuilder_ == null) {
+            unreserve_ = builderForValue.build();
+            onChanged();
+          } else {
+            unreserveBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000010;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.Unreserve unreserve = 4;</code>
+         */
+        public Builder mergeUnreserve(org.apache.mesos.Protos.Offer.Operation.Unreserve value) {
+          if (unreserveBuilder_ == null) {
+            if (((bitField0_ & 0x00000010) == 0x00000010) &&
+                unreserve_ != org.apache.mesos.Protos.Offer.Operation.Unreserve.getDefaultInstance()) {
+              unreserve_ =
+                org.apache.mesos.Protos.Offer.Operation.Unreserve.newBuilder(unreserve_).mergeFrom(value).buildPartial();
+            } else {
+              unreserve_ = value;
+            }
+            onChanged();
+          } else {
+            unreserveBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000010;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.Unreserve unreserve = 4;</code>
+         */
+        public Builder clearUnreserve() {
+          if (unreserveBuilder_ == null) {
+            unreserve_ = org.apache.mesos.Protos.Offer.Operation.Unreserve.getDefaultInstance();
+            onChanged();
+          } else {
+            unreserveBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000010);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.Unreserve unreserve = 4;</code>
+         */
+        public org.apache.mesos.Protos.Offer.Operation.Unreserve.Builder getUnreserveBuilder() {
+          bitField0_ |= 0x00000010;
+          onChanged();
+          return getUnreserveFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.Unreserve unreserve = 4;</code>
+         */
+        public org.apache.mesos.Protos.Offer.Operation.UnreserveOrBuilder getUnreserveOrBuilder() {
+          if (unreserveBuilder_ != null) {
+            return unreserveBuilder_.getMessageOrBuilder();
+          } else {
+            return unreserve_;
+          }
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.Unreserve unreserve = 4;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Offer.Operation.Unreserve, org.apache.mesos.Protos.Offer.Operation.Unreserve.Builder, org.apache.mesos.Protos.Offer.Operation.UnreserveOrBuilder> 
+            getUnreserveFieldBuilder() {
+          if (unreserveBuilder_ == null) {
+            unreserveBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.Offer.Operation.Unreserve, org.apache.mesos.Protos.Offer.Operation.Unreserve.Builder, org.apache.mesos.Protos.Offer.Operation.UnreserveOrBuilder>(
+                    unreserve_,
+                    getParentForChildren(),
+                    isClean());
+            unreserve_ = null;
+          }
+          return unreserveBuilder_;
+        }
+
+        // optional .mesos.Offer.Operation.Create create = 5;
+        private org.apache.mesos.Protos.Offer.Operation.Create create_ = org.apache.mesos.Protos.Offer.Operation.Create.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Offer.Operation.Create, org.apache.mesos.Protos.Offer.Operation.Create.Builder, org.apache.mesos.Protos.Offer.Operation.CreateOrBuilder> createBuilder_;
+        /**
+         * <code>optional .mesos.Offer.Operation.Create create = 5;</code>
+         */
+        public boolean hasCreate() {
+          return ((bitField0_ & 0x00000020) == 0x00000020);
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.Create create = 5;</code>
+         */
+        public org.apache.mesos.Protos.Offer.Operation.Create getCreate() {
+          if (createBuilder_ == null) {
+            return create_;
+          } else {
+            return createBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.Create create = 5;</code>
+         */
+        public Builder setCreate(org.apache.mesos.Protos.Offer.Operation.Create value) {
+          if (createBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            create_ = value;
+            onChanged();
+          } else {
+            createBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000020;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.Create create = 5;</code>
+         */
+        public Builder setCreate(
+            org.apache.mesos.Protos.Offer.Operation.Create.Builder builderForValue) {
+          if (createBuilder_ == null) {
+            create_ = builderForValue.build();
+            onChanged();
+          } else {
+            createBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000020;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.Create create = 5;</code>
+         */
+        public Builder mergeCreate(org.apache.mesos.Protos.Offer.Operation.Create value) {
+          if (createBuilder_ == null) {
+            if (((bitField0_ & 0x00000020) == 0x00000020) &&
+                create_ != org.apache.mesos.Protos.Offer.Operation.Create.getDefaultInstance()) {
+              create_ =
+                org.apache.mesos.Protos.Offer.Operation.Create.newBuilder(create_).mergeFrom(value).buildPartial();
+            } else {
+              create_ = value;
+            }
+            onChanged();
+          } else {
+            createBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000020;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.Create create = 5;</code>
+         */
+        public Builder clearCreate() {
+          if (createBuilder_ == null) {
+            create_ = org.apache.mesos.Protos.Offer.Operation.Create.getDefaultInstance();
+            onChanged();
+          } else {
+            createBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000020);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.Create create = 5;</code>
+         */
+        public org.apache.mesos.Protos.Offer.Operation.Create.Builder getCreateBuilder() {
+          bitField0_ |= 0x00000020;
+          onChanged();
+          return getCreateFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.Create create = 5;</code>
+         */
+        public org.apache.mesos.Protos.Offer.Operation.CreateOrBuilder getCreateOrBuilder() {
+          if (createBuilder_ != null) {
+            return createBuilder_.getMessageOrBuilder();
+          } else {
+            return create_;
+          }
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.Create create = 5;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Offer.Operation.Create, org.apache.mesos.Protos.Offer.Operation.Create.Builder, org.apache.mesos.Protos.Offer.Operation.CreateOrBuilder> 
+            getCreateFieldBuilder() {
+          if (createBuilder_ == null) {
+            createBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.Offer.Operation.Create, org.apache.mesos.Protos.Offer.Operation.Create.Builder, org.apache.mesos.Protos.Offer.Operation.CreateOrBuilder>(
+                    create_,
+                    getParentForChildren(),
+                    isClean());
+            create_ = null;
+          }
+          return createBuilder_;
+        }
+
+        // optional .mesos.Offer.Operation.Destroy destroy = 6;
+        private org.apache.mesos.Protos.Offer.Operation.Destroy destroy_ = org.apache.mesos.Protos.Offer.Operation.Destroy.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Offer.Operation.Destroy, org.apache.mesos.Protos.Offer.Operation.Destroy.Builder, org.apache.mesos.Protos.Offer.Operation.DestroyOrBuilder> destroyBuilder_;
+        /**
+         * <code>optional .mesos.Offer.Operation.Destroy destroy = 6;</code>
+         */
+        public boolean hasDestroy() {
+          return ((bitField0_ & 0x00000040) == 0x00000040);
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.Destroy destroy = 6;</code>
+         */
+        public org.apache.mesos.Protos.Offer.Operation.Destroy getDestroy() {
+          if (destroyBuilder_ == null) {
+            return destroy_;
+          } else {
+            return destroyBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.Destroy destroy = 6;</code>
+         */
+        public Builder setDestroy(org.apache.mesos.Protos.Offer.Operation.Destroy value) {
+          if (destroyBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            destroy_ = value;
+            onChanged();
+          } else {
+            destroyBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000040;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.Destroy destroy = 6;</code>
+         */
+        public Builder setDestroy(
+            org.apache.mesos.Protos.Offer.Operation.Destroy.Builder builderForValue) {
+          if (destroyBuilder_ == null) {
+            destroy_ = builderForValue.build();
+            onChanged();
+          } else {
+            destroyBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000040;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.Destroy destroy = 6;</code>
+         */
+        public Builder mergeDestroy(org.apache.mesos.Protos.Offer.Operation.Destroy value) {
+          if (destroyBuilder_ == null) {
+            if (((bitField0_ & 0x00000040) == 0x00000040) &&
+                destroy_ != org.apache.mesos.Protos.Offer.Operation.Destroy.getDefaultInstance()) {
+              destroy_ =
+                org.apache.mesos.Protos.Offer.Operation.Destroy.newBuilder(destroy_).mergeFrom(value).buildPartial();
+            } else {
+              destroy_ = value;
+            }
+            onChanged();
+          } else {
+            destroyBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000040;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.Destroy destroy = 6;</code>
+         */
+        public Builder clearDestroy() {
+          if (destroyBuilder_ == null) {
+            destroy_ = org.apache.mesos.Protos.Offer.Operation.Destroy.getDefaultInstance();
+            onChanged();
+          } else {
+            destroyBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000040);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.Destroy destroy = 6;</code>
+         */
+        public org.apache.mesos.Protos.Offer.Operation.Destroy.Builder getDestroyBuilder() {
+          bitField0_ |= 0x00000040;
+          onChanged();
+          return getDestroyFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.Destroy destroy = 6;</code>
+         */
+        public org.apache.mesos.Protos.Offer.Operation.DestroyOrBuilder getDestroyOrBuilder() {
+          if (destroyBuilder_ != null) {
+            return destroyBuilder_.getMessageOrBuilder();
+          } else {
+            return destroy_;
+          }
+        }
+        /**
+         * <code>optional .mesos.Offer.Operation.Destroy destroy = 6;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Offer.Operation.Destroy, org.apache.mesos.Protos.Offer.Operation.Destroy.Builder, org.apache.mesos.Protos.Offer.Operation.DestroyOrBuilder> 
+            getDestroyFieldBuilder() {
+          if (destroyBuilder_ == null) {
+            destroyBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.Offer.Operation.Destroy, org.apache.mesos.Protos.Offer.Operation.Destroy.Builder, org.apache.mesos.Protos.Offer.Operation.DestroyOrBuilder>(
+                    destroy_,
+                    getParentForChildren(),
+                    isClean());
+            destroy_ = null;
+          }
+          return destroyBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.Offer.Operation)
+      }
+
+      static {
+        defaultInstance = new Operation(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.Offer.Operation)
+    }
+
+    private int bitField0_;
+    // required .mesos.OfferID id = 1;
+    public static final int ID_FIELD_NUMBER = 1;
+    private org.apache.mesos.Protos.OfferID id_;
+    /**
+     * <code>required .mesos.OfferID id = 1;</code>
+     */
+    public boolean hasId() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required .mesos.OfferID id = 1;</code>
+     */
+    public org.apache.mesos.Protos.OfferID getId() {
+      return id_;
+    }
+    /**
+     * <code>required .mesos.OfferID id = 1;</code>
+     */
+    public org.apache.mesos.Protos.OfferIDOrBuilder getIdOrBuilder() {
+      return id_;
+    }
+
+    // required .mesos.FrameworkID framework_id = 2;
+    public static final int FRAMEWORK_ID_FIELD_NUMBER = 2;
+    private org.apache.mesos.Protos.FrameworkID frameworkId_;
+    /**
+     * <code>required .mesos.FrameworkID framework_id = 2;</code>
+     */
+    public boolean hasFrameworkId() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>required .mesos.FrameworkID framework_id = 2;</code>
+     */
+    public org.apache.mesos.Protos.FrameworkID getFrameworkId() {
+      return frameworkId_;
+    }
+    /**
+     * <code>required .mesos.FrameworkID framework_id = 2;</code>
+     */
+    public org.apache.mesos.Protos.FrameworkIDOrBuilder getFrameworkIdOrBuilder() {
+      return frameworkId_;
+    }
+
+    // required .mesos.SlaveID slave_id = 3;
+    public static final int SLAVE_ID_FIELD_NUMBER = 3;
+    private org.apache.mesos.Protos.SlaveID slaveId_;
+    /**
+     * <code>required .mesos.SlaveID slave_id = 3;</code>
+     */
+    public boolean hasSlaveId() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>required .mesos.SlaveID slave_id = 3;</code>
+     */
+    public org.apache.mesos.Protos.SlaveID getSlaveId() {
+      return slaveId_;
+    }
+    /**
+     * <code>required .mesos.SlaveID slave_id = 3;</code>
+     */
+    public org.apache.mesos.Protos.SlaveIDOrBuilder getSlaveIdOrBuilder() {
+      return slaveId_;
+    }
+
+    // required string hostname = 4;
+    public static final int HOSTNAME_FIELD_NUMBER = 4;
+    private java.lang.Object hostname_;
+    /**
+     * <code>required string hostname = 4;</code>
+     */
+    public boolean hasHostname() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>required string hostname = 4;</code>
+     */
+    public java.lang.String getHostname() {
+      java.lang.Object ref = hostname_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          hostname_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string hostname = 4;</code>
+     */
+    public com.google.protobuf.ByteString
+        getHostnameBytes() {
+      java.lang.Object ref = hostname_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        hostname_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional .mesos.URL url = 8;
+    public static final int URL_FIELD_NUMBER = 8;
+    private org.apache.mesos.Protos.URL url_;
+    /**
+     * <code>optional .mesos.URL url = 8;</code>
+     *
+     * <pre>
+     * URL for reaching the slave running on the host.
+     * </pre>
+     */
+    public boolean hasUrl() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional .mesos.URL url = 8;</code>
+     *
+     * <pre>
+     * URL for reaching the slave running on the host.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.URL getUrl() {
+      return url_;
+    }
+    /**
+     * <code>optional .mesos.URL url = 8;</code>
+     *
+     * <pre>
+     * URL for reaching the slave running on the host.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.URLOrBuilder getUrlOrBuilder() {
+      return url_;
+    }
+
+    // optional .mesos.DomainInfo domain = 11;
+    public static final int DOMAIN_FIELD_NUMBER = 11;
+    private org.apache.mesos.Protos.DomainInfo domain_;
+    /**
+     * <code>optional .mesos.DomainInfo domain = 11;</code>
+     *
+     * <pre>
+     * The domain of the slave.
+     * </pre>
+     */
+    public boolean hasDomain() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional .mesos.DomainInfo domain = 11;</code>
+     *
+     * <pre>
+     * The domain of the slave.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.DomainInfo getDomain() {
+      return domain_;
+    }
+    /**
+     * <code>optional .mesos.DomainInfo domain = 11;</code>
+     *
+     * <pre>
+     * The domain of the slave.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.DomainInfoOrBuilder getDomainOrBuilder() {
+      return domain_;
+    }
+
+    // repeated .mesos.Resource resources = 5;
+    public static final int RESOURCES_FIELD_NUMBER = 5;
+    private java.util.List<org.apache.mesos.Protos.Resource> resources_;
+    /**
+     * <code>repeated .mesos.Resource resources = 5;</code>
+     */
+    public java.util.List<org.apache.mesos.Protos.Resource> getResourcesList() {
+      return resources_;
+    }
+    /**
+     * <code>repeated .mesos.Resource resources = 5;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+        getResourcesOrBuilderList() {
+      return resources_;
+    }
+    /**
+     * <code>repeated .mesos.Resource resources = 5;</code>
+     */
+    public int getResourcesCount() {
+      return resources_.size();
+    }
+    /**
+     * <code>repeated .mesos.Resource resources = 5;</code>
+     */
+    public org.apache.mesos.Protos.Resource getResources(int index) {
+      return resources_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.Resource resources = 5;</code>
+     */
+    public org.apache.mesos.Protos.ResourceOrBuilder getResourcesOrBuilder(
+        int index) {
+      return resources_.get(index);
+    }
+
+    // repeated .mesos.Attribute attributes = 7;
+    public static final int ATTRIBUTES_FIELD_NUMBER = 7;
+    private java.util.List<org.apache.mesos.Protos.Attribute> attributes_;
+    /**
+     * <code>repeated .mesos.Attribute attributes = 7;</code>
+     */
+    public java.util.List<org.apache.mesos.Protos.Attribute> getAttributesList() {
+      return attributes_;
+    }
+    /**
+     * <code>repeated .mesos.Attribute attributes = 7;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.Protos.AttributeOrBuilder> 
+        getAttributesOrBuilderList() {
+      return attributes_;
+    }
+    /**
+     * <code>repeated .mesos.Attribute attributes = 7;</code>
+     */
+    public int getAttributesCount() {
+      return attributes_.size();
+    }
+    /**
+     * <code>repeated .mesos.Attribute attributes = 7;</code>
+     */
+    public org.apache.mesos.Protos.Attribute getAttributes(int index) {
+      return attributes_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.Attribute attributes = 7;</code>
+     */
+    public org.apache.mesos.Protos.AttributeOrBuilder getAttributesOrBuilder(
+        int index) {
+      return attributes_.get(index);
+    }
+
+    // repeated .mesos.ExecutorID executor_ids = 6;
+    public static final int EXECUTOR_IDS_FIELD_NUMBER = 6;
+    private java.util.List<org.apache.mesos.Protos.ExecutorID> executorIds_;
+    /**
+     * <code>repeated .mesos.ExecutorID executor_ids = 6;</code>
+     */
+    public java.util.List<org.apache.mesos.Protos.ExecutorID> getExecutorIdsList() {
+      return executorIds_;
+    }
+    /**
+     * <code>repeated .mesos.ExecutorID executor_ids = 6;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.Protos.ExecutorIDOrBuilder> 
+        getExecutorIdsOrBuilderList() {
+      return executorIds_;
+    }
+    /**
+     * <code>repeated .mesos.ExecutorID executor_ids = 6;</code>
+     */
+    public int getExecutorIdsCount() {
+      return executorIds_.size();
+    }
+    /**
+     * <code>repeated .mesos.ExecutorID executor_ids = 6;</code>
+     */
+    public org.apache.mesos.Protos.ExecutorID getExecutorIds(int index) {
+      return executorIds_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.ExecutorID executor_ids = 6;</code>
+     */
+    public org.apache.mesos.Protos.ExecutorIDOrBuilder getExecutorIdsOrBuilder(
+        int index) {
+      return executorIds_.get(index);
+    }
+
+    // optional .mesos.Unavailability unavailability = 9;
+    public static final int UNAVAILABILITY_FIELD_NUMBER = 9;
+    private org.apache.mesos.Protos.Unavailability unavailability_;
+    /**
+     * <code>optional .mesos.Unavailability unavailability = 9;</code>
+     *
+     * <pre>
+     * Signifies that the resources in this Offer may be unavailable during
+     * the given interval.  Any tasks launched using these resources may be
+     * killed when the interval arrives.  For example, these resources may be
+     * part of a planned maintenance schedule.
+     *
+     * This field only provides information about a planned unavailability.
+     * The unavailability interval may not necessarily start at exactly this
+     * interval, nor last for exactly the duration of this interval.
+     * The unavailability may also be forever!  See comments in
+     * `Unavailability` for more details.
+     * </pre>
+     */
+    public boolean hasUnavailability() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional .mesos.Unavailability unavailability = 9;</code>
+     *
+     * <pre>
+     * Signifies that the resources in this Offer may be unavailable during
+     * the given interval.  Any tasks launched using these resources may be
+     * killed when the interval arrives.  For example, these resources may be
+     * part of a planned maintenance schedule.
+     *
+     * This field only provides information about a planned unavailability.
+     * The unavailability interval may not necessarily start at exactly this
+     * interval, nor last for exactly the duration of this interval.
+     * The unavailability may also be forever!  See comments in
+     * `Unavailability` for more details.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.Unavailability getUnavailability() {
+      return unavailability_;
+    }
+    /**
+     * <code>optional .mesos.Unavailability unavailability = 9;</code>
+     *
+     * <pre>
+     * Signifies that the resources in this Offer may be unavailable during
+     * the given interval.  Any tasks launched using these resources may be
+     * killed when the interval arrives.  For example, these resources may be
+     * part of a planned maintenance schedule.
+     *
+     * This field only provides information about a planned unavailability.
+     * The unavailability interval may not necessarily start at exactly this
+     * interval, nor last for exactly the duration of this interval.
+     * The unavailability may also be forever!  See comments in
+     * `Unavailability` for more details.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.UnavailabilityOrBuilder getUnavailabilityOrBuilder() {
+      return unavailability_;
+    }
+
+    // optional .mesos.Resource.AllocationInfo allocation_info = 10;
+    public static final int ALLOCATION_INFO_FIELD_NUMBER = 10;
+    private org.apache.mesos.Protos.Resource.AllocationInfo allocationInfo_;
+    /**
+     * <code>optional .mesos.Resource.AllocationInfo allocation_info = 10;</code>
+     *
+     * <pre>
+     * An offer represents resources allocated to *one* of the
+     * roles managed by the scheduler. (Therefore, each
+     * `Offer.resources[i].allocation_info` will match the
+     * top level `Offer.allocation_info`).
+     * </pre>
+     */
+    public boolean hasAllocationInfo() {
+      return ((bitField0_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional .mesos.Resource.AllocationInfo allocation_info = 10;</code>
+     *
+     * <pre>
+     * An offer represents resources allocated to *one* of the
+     * roles managed by the scheduler. (Therefore, each
+     * `Offer.resources[i].allocation_info` will match the
+     * top level `Offer.allocation_info`).
+     * </pre>
+     */
+    public org.apache.mesos.Protos.Resource.AllocationInfo getAllocationInfo() {
+      return allocationInfo_;
+    }
+    /**
+     * <code>optional .mesos.Resource.AllocationInfo allocation_info = 10;</code>
+     *
+     * <pre>
+     * An offer represents resources allocated to *one* of the
+     * roles managed by the scheduler. (Therefore, each
+     * `Offer.resources[i].allocation_info` will match the
+     * top level `Offer.allocation_info`).
+     * </pre>
+     */
+    public org.apache.mesos.Protos.Resource.AllocationInfoOrBuilder getAllocationInfoOrBuilder() {
+      return allocationInfo_;
+    }
+
+    private void initFields() {
+      id_ = org.apache.mesos.Protos.OfferID.getDefaultInstance();
+      frameworkId_ = org.apache.mesos.Protos.FrameworkID.getDefaultInstance();
+      slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+      hostname_ = "";
+      url_ = org.apache.mesos.Protos.URL.getDefaultInstance();
+      domain_ = org.apache.mesos.Protos.DomainInfo.getDefaultInstance();
+      resources_ = java.util.Collections.emptyList();
+      attributes_ = java.util.Collections.emptyList();
+      executorIds_ = java.util.Collections.emptyList();
+      unavailability_ = org.apache.mesos.Protos.Unavailability.getDefaultInstance();
+      allocationInfo_ = org.apache.mesos.Protos.Resource.AllocationInfo.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasId()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasFrameworkId()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasSlaveId()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasHostname()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!getId().isInitialized()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!getFrameworkId().isInitialized()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!getSlaveId().isInitialized()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (hasUrl()) {
+        if (!getUrl().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasDomain()) {
+        if (!getDomain().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      for (int i = 0; i < getResourcesCount(); i++) {
+        if (!getResources(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      for (int i = 0; i < getAttributesCount(); i++) {
+        if (!getAttributes(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      for (int i = 0; i < getExecutorIdsCount(); i++) {
+        if (!getExecutorIds(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasUnavailability()) {
+        if (!getUnavailability().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeMessage(1, id_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(2, frameworkId_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeMessage(3, slaveId_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeBytes(4, getHostnameBytes());
+      }
+      for (int i = 0; i < resources_.size(); i++) {
+        output.writeMessage(5, resources_.get(i));
+      }
+      for (int i = 0; i < executorIds_.size(); i++) {
+        output.writeMessage(6, executorIds_.get(i));
+      }
+      for (int i = 0; i < attributes_.size(); i++) {
+        output.writeMessage(7, attributes_.get(i));
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeMessage(8, url_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeMessage(9, unavailability_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        output.writeMessage(10, allocationInfo_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeMessage(11, domain_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, id_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, frameworkId_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, slaveId_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(4, getHostnameBytes());
+      }
+      for (int i = 0; i < resources_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(5, resources_.get(i));
+      }
+      for (int i = 0; i < executorIds_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(6, executorIds_.get(i));
+      }
+      for (int i = 0; i < attributes_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(7, attributes_.get(i));
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(8, url_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(9, unavailability_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(10, allocationInfo_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(11, domain_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.Offer parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Offer parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Offer parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Offer parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Offer parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Offer parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Offer parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.Offer parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Offer parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Offer parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.Offer prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.Offer}
+     *
+     * <pre>
+     **
+     * Describes some resources available on a slave. An offer only
+     * contains resources from a single slave.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.OfferOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_Offer_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_Offer_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.Offer.class, org.apache.mesos.Protos.Offer.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.Offer.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getIdFieldBuilder();
+          getFrameworkIdFieldBuilder();
+          getSlaveIdFieldBuilder();
+          getUrlFieldBuilder();
+          getDomainFieldBuilder();
+          getResourcesFieldBuilder();
+          getAttributesFieldBuilder();
+          getExecutorIdsFieldBuilder();
+          getUnavailabilityFieldBuilder();
+          getAllocationInfoFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (idBuilder_ == null) {
+          id_ = org.apache.mesos.Protos.OfferID.getDefaultInstance();
+        } else {
+          idBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (frameworkIdBuilder_ == null) {
+          frameworkId_ = org.apache.mesos.Protos.FrameworkID.getDefaultInstance();
+        } else {
+          frameworkIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        if (slaveIdBuilder_ == null) {
+          slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+        } else {
+          slaveIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        hostname_ = "";
+        bitField0_ = (bitField0_ & ~0x00000008);
+        if (urlBuilder_ == null) {
+          url_ = org.apache.mesos.Protos.URL.getDefaultInstance();
+        } else {
+          urlBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        if (domainBuilder_ == null) {
+          domain_ = org.apache.mesos.Protos.DomainInfo.getDefaultInstance();
+        } else {
+          domainBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
+        if (resourcesBuilder_ == null) {
+          resources_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000040);
+        } else {
+          resourcesBuilder_.clear();
+        }
+        if (attributesBuilder_ == null) {
+          attributes_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000080);
+        } else {
+          attributesBuilder_.clear();
+        }
+        if (executorIdsBuilder_ == null) {
+          executorIds_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000100);
+        } else {
+          executorIdsBuilder_.clear();
+        }
+        if (unavailabilityBuilder_ == null) {
+          unavailability_ = org.apache.mesos.Protos.Unavailability.getDefaultInstance();
+        } else {
+          unavailabilityBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000200);
+        if (allocationInfoBuilder_ == null) {
+          allocationInfo_ = org.apache.mesos.Protos.Resource.AllocationInfo.getDefaultInstance();
+        } else {
+          allocationInfoBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000400);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_Offer_descriptor;
+      }
+
+      public org.apache.mesos.Protos.Offer getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.Offer.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.Offer build() {
+        org.apache.mesos.Protos.Offer result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.Offer buildPartial() {
+        org.apache.mesos.Protos.Offer result = new org.apache.mesos.Protos.Offer(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        if (idBuilder_ == null) {
+          result.id_ = id_;
+        } else {
+          result.id_ = idBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (frameworkIdBuilder_ == null) {
+          result.frameworkId_ = frameworkId_;
+        } else {
+          result.frameworkId_ = frameworkIdBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        if (slaveIdBuilder_ == null) {
+          result.slaveId_ = slaveId_;
+        } else {
+          result.slaveId_ = slaveIdBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.hostname_ = hostname_;
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        if (urlBuilder_ == null) {
+          result.url_ = url_;
+        } else {
+          result.url_ = urlBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        if (domainBuilder_ == null) {
+          result.domain_ = domain_;
+        } else {
+          result.domain_ = domainBuilder_.build();
+        }
+        if (resourcesBuilder_ == null) {
+          if (((bitField0_ & 0x00000040) == 0x00000040)) {
+            resources_ = java.util.Collections.unmodifiableList(resources_);
+            bitField0_ = (bitField0_ & ~0x00000040);
+          }
+          result.resources_ = resources_;
+        } else {
+          result.resources_ = resourcesBuilder_.build();
+        }
+        if (attributesBuilder_ == null) {
+          if (((bitField0_ & 0x00000080) == 0x00000080)) {
+            attributes_ = java.util.Collections.unmodifiableList(attributes_);
+            bitField0_ = (bitField0_ & ~0x00000080);
+          }
+          result.attributes_ = attributes_;
+        } else {
+          result.attributes_ = attributesBuilder_.build();
+        }
+        if (executorIdsBuilder_ == null) {
+          if (((bitField0_ & 0x00000100) == 0x00000100)) {
+            executorIds_ = java.util.Collections.unmodifiableList(executorIds_);
+            bitField0_ = (bitField0_ & ~0x00000100);
+          }
+          result.executorIds_ = executorIds_;
+        } else {
+          result.executorIds_ = executorIdsBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        if (unavailabilityBuilder_ == null) {
+          result.unavailability_ = unavailability_;
+        } else {
+          result.unavailability_ = unavailabilityBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
+          to_bitField0_ |= 0x00000080;
+        }
+        if (allocationInfoBuilder_ == null) {
+          result.allocationInfo_ = allocationInfo_;
+        } else {
+          result.allocationInfo_ = allocationInfoBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.Offer) {
+          return mergeFrom((org.apache.mesos.Protos.Offer)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.Offer other) {
+        if (other == org.apache.mesos.Protos.Offer.getDefaultInstance()) return this;
+        if (other.hasId()) {
+          mergeId(other.getId());
+        }
+        if (other.hasFrameworkId()) {
+          mergeFrameworkId(other.getFrameworkId());
+        }
+        if (other.hasSlaveId()) {
+          mergeSlaveId(other.getSlaveId());
+        }
+        if (other.hasHostname()) {
+          bitField0_ |= 0x00000008;
+          hostname_ = other.hostname_;
+          onChanged();
+        }
+        if (other.hasUrl()) {
+          mergeUrl(other.getUrl());
+        }
+        if (other.hasDomain()) {
+          mergeDomain(other.getDomain());
+        }
+        if (resourcesBuilder_ == null) {
+          if (!other.resources_.isEmpty()) {
+            if (resources_.isEmpty()) {
+              resources_ = other.resources_;
+              bitField0_ = (bitField0_ & ~0x00000040);
+            } else {
+              ensureResourcesIsMutable();
+              resources_.addAll(other.resources_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.resources_.isEmpty()) {
+            if (resourcesBuilder_.isEmpty()) {
+              resourcesBuilder_.dispose();
+              resourcesBuilder_ = null;
+              resources_ = other.resources_;
+              bitField0_ = (bitField0_ & ~0x00000040);
+              resourcesBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getResourcesFieldBuilder() : null;
+            } else {
+              resourcesBuilder_.addAllMessages(other.resources_);
+            }
+          }
+        }
+        if (attributesBuilder_ == null) {
+          if (!other.attributes_.isEmpty()) {
+            if (attributes_.isEmpty()) {
+              attributes_ = other.attributes_;
+              bitField0_ = (bitField0_ & ~0x00000080);
+            } else {
+              ensureAttributesIsMutable();
+              attributes_.addAll(other.attributes_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.attributes_.isEmpty()) {
+            if (attributesBuilder_.isEmpty()) {
+              attributesBuilder_.dispose();
+              attributesBuilder_ = null;
+              attributes_ = other.attributes_;
+              bitField0_ = (bitField0_ & ~0x00000080);
+              attributesBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getAttributesFieldBuilder() : null;
+            } else {
+              attributesBuilder_.addAllMessages(other.attributes_);
+            }
+          }
+        }
+        if (executorIdsBuilder_ == null) {
+          if (!other.executorIds_.isEmpty()) {
+            if (executorIds_.isEmpty()) {
+              executorIds_ = other.executorIds_;
+              bitField0_ = (bitField0_ & ~0x00000100);
+            } else {
+              ensureExecutorIdsIsMutable();
+              executorIds_.addAll(other.executorIds_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.executorIds_.isEmpty()) {
+            if (executorIdsBuilder_.isEmpty()) {
+              executorIdsBuilder_.dispose();
+              executorIdsBuilder_ = null;
+              executorIds_ = other.executorIds_;
+              bitField0_ = (bitField0_ & ~0x00000100);
+              executorIdsBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getExecutorIdsFieldBuilder() : null;
+            } else {
+              executorIdsBuilder_.addAllMessages(other.executorIds_);
+            }
+          }
+        }
+        if (other.hasUnavailability()) {
+          mergeUnavailability(other.getUnavailability());
+        }
+        if (other.hasAllocationInfo()) {
+          mergeAllocationInfo(other.getAllocationInfo());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasId()) {
+          
+          return false;
+        }
+        if (!hasFrameworkId()) {
+          
+          return false;
+        }
+        if (!hasSlaveId()) {
+          
+          return false;
+        }
+        if (!hasHostname()) {
+          
+          return false;
+        }
+        if (!getId().isInitialized()) {
+          
+          return false;
+        }
+        if (!getFrameworkId().isInitialized()) {
+          
+          return false;
+        }
+        if (!getSlaveId().isInitialized()) {
+          
+          return false;
+        }
+        if (hasUrl()) {
+          if (!getUrl().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasDomain()) {
+          if (!getDomain().isInitialized()) {
+            
+            return false;
+          }
+        }
+        for (int i = 0; i < getResourcesCount(); i++) {
+          if (!getResources(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        for (int i = 0; i < getAttributesCount(); i++) {
+          if (!getAttributes(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        for (int i = 0; i < getExecutorIdsCount(); i++) {
+          if (!getExecutorIds(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasUnavailability()) {
+          if (!getUnavailability().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.Offer parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.Offer) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required .mesos.OfferID id = 1;
+      private org.apache.mesos.Protos.OfferID id_ = org.apache.mesos.Protos.OfferID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.OfferID, org.apache.mesos.Protos.OfferID.Builder, org.apache.mesos.Protos.OfferIDOrBuilder> idBuilder_;
+      /**
+       * <code>required .mesos.OfferID id = 1;</code>
+       */
+      public boolean hasId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.OfferID id = 1;</code>
+       */
+      public org.apache.mesos.Protos.OfferID getId() {
+        if (idBuilder_ == null) {
+          return id_;
+        } else {
+          return idBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>required .mesos.OfferID id = 1;</code>
+       */
+      public Builder setId(org.apache.mesos.Protos.OfferID value) {
+        if (idBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          id_ = value;
+          onChanged();
+        } else {
+          idBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .mesos.OfferID id = 1;</code>
+       */
+      public Builder setId(
+          org.apache.mesos.Protos.OfferID.Builder builderForValue) {
+        if (idBuilder_ == null) {
+          id_ = builderForValue.build();
+          onChanged();
+        } else {
+          idBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .mesos.OfferID id = 1;</code>
+       */
+      public Builder mergeId(org.apache.mesos.Protos.OfferID value) {
+        if (idBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001) &&
+              id_ != org.apache.mesos.Protos.OfferID.getDefaultInstance()) {
+            id_ =
+              org.apache.mesos.Protos.OfferID.newBuilder(id_).mergeFrom(value).buildPartial();
+          } else {
+            id_ = value;
+          }
+          onChanged();
+        } else {
+          idBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .mesos.OfferID id = 1;</code>
+       */
+      public Builder clearId() {
+        if (idBuilder_ == null) {
+          id_ = org.apache.mesos.Protos.OfferID.getDefaultInstance();
+          onChanged();
+        } else {
+          idBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+      /**
+       * <code>required .mesos.OfferID id = 1;</code>
+       */
+      public org.apache.mesos.Protos.OfferID.Builder getIdBuilder() {
+        bitField0_ |= 0x00000001;
+        onChanged();
+        return getIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>required .mesos.OfferID id = 1;</code>
+       */
+      public org.apache.mesos.Protos.OfferIDOrBuilder getIdOrBuilder() {
+        if (idBuilder_ != null) {
+          return idBuilder_.getMessageOrBuilder();
+        } else {
+          return id_;
+        }
+      }
+      /**
+       * <code>required .mesos.OfferID id = 1;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.OfferID, org.apache.mesos.Protos.OfferID.Builder, org.apache.mesos.Protos.OfferIDOrBuilder> 
+          getIdFieldBuilder() {
+        if (idBuilder_ == null) {
+          idBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.OfferID, org.apache.mesos.Protos.OfferID.Builder, org.apache.mesos.Protos.OfferIDOrBuilder>(
+                  id_,
+                  getParentForChildren(),
+                  isClean());
+          id_ = null;
+        }
+        return idBuilder_;
+      }
+
+      // required .mesos.FrameworkID framework_id = 2;
+      private org.apache.mesos.Protos.FrameworkID frameworkId_ = org.apache.mesos.Protos.FrameworkID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.FrameworkID, org.apache.mesos.Protos.FrameworkID.Builder, org.apache.mesos.Protos.FrameworkIDOrBuilder> frameworkIdBuilder_;
+      /**
+       * <code>required .mesos.FrameworkID framework_id = 2;</code>
+       */
+      public boolean hasFrameworkId() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required .mesos.FrameworkID framework_id = 2;</code>
+       */
+      public org.apache.mesos.Protos.FrameworkID getFrameworkId() {
+        if (frameworkIdBuilder_ == null) {
+          return frameworkId_;
+        } else {
+          return frameworkIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>required .mesos.FrameworkID framework_id = 2;</code>
+       */
+      public Builder setFrameworkId(org.apache.mesos.Protos.FrameworkID value) {
+        if (frameworkIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          frameworkId_ = value;
+          onChanged();
+        } else {
+          frameworkIdBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.FrameworkID framework_id = 2;</code>
+       */
+      public Builder setFrameworkId(
+          org.apache.mesos.Protos.FrameworkID.Builder builderForValue) {
+        if (frameworkIdBuilder_ == null) {
+          frameworkId_ = builderForValue.build();
+          onChanged();
+        } else {
+          frameworkIdBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.FrameworkID framework_id = 2;</code>
+       */
+      public Builder mergeFrameworkId(org.apache.mesos.Protos.FrameworkID value) {
+        if (frameworkIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              frameworkId_ != org.apache.mesos.Protos.FrameworkID.getDefaultInstance()) {
+            frameworkId_ =
+              org.apache.mesos.Protos.FrameworkID.newBuilder(frameworkId_).mergeFrom(value).buildPartial();
+          } else {
+            frameworkId_ = value;
+          }
+          onChanged();
+        } else {
+          frameworkIdBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.FrameworkID framework_id = 2;</code>
+       */
+      public Builder clearFrameworkId() {
+        if (frameworkIdBuilder_ == null) {
+          frameworkId_ = org.apache.mesos.Protos.FrameworkID.getDefaultInstance();
+          onChanged();
+        } else {
+          frameworkIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>required .mesos.FrameworkID framework_id = 2;</code>
+       */
+      public org.apache.mesos.Protos.FrameworkID.Builder getFrameworkIdBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getFrameworkIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>required .mesos.FrameworkID framework_id = 2;</code>
+       */
+      public org.apache.mesos.Protos.FrameworkIDOrBuilder getFrameworkIdOrBuilder() {
+        if (frameworkIdBuilder_ != null) {
+          return frameworkIdBuilder_.getMessageOrBuilder();
+        } else {
+          return frameworkId_;
+        }
+      }
+      /**
+       * <code>required .mesos.FrameworkID framework_id = 2;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.FrameworkID, org.apache.mesos.Protos.FrameworkID.Builder, org.apache.mesos.Protos.FrameworkIDOrBuilder> 
+          getFrameworkIdFieldBuilder() {
+        if (frameworkIdBuilder_ == null) {
+          frameworkIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.FrameworkID, org.apache.mesos.Protos.FrameworkID.Builder, org.apache.mesos.Protos.FrameworkIDOrBuilder>(
+                  frameworkId_,
+                  getParentForChildren(),
+                  isClean());
+          frameworkId_ = null;
+        }
+        return frameworkIdBuilder_;
+      }
+
+      // required .mesos.SlaveID slave_id = 3;
+      private org.apache.mesos.Protos.SlaveID slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.SlaveID, org.apache.mesos.Protos.SlaveID.Builder, org.apache.mesos.Protos.SlaveIDOrBuilder> slaveIdBuilder_;
+      /**
+       * <code>required .mesos.SlaveID slave_id = 3;</code>
+       */
+      public boolean hasSlaveId() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>required .mesos.SlaveID slave_id = 3;</code>
+       */
+      public org.apache.mesos.Protos.SlaveID getSlaveId() {
+        if (slaveIdBuilder_ == null) {
+          return slaveId_;
+        } else {
+          return slaveIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>required .mesos.SlaveID slave_id = 3;</code>
+       */
+      public Builder setSlaveId(org.apache.mesos.Protos.SlaveID value) {
+        if (slaveIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          slaveId_ = value;
+          onChanged();
+        } else {
+          slaveIdBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>required .mesos.SlaveID slave_id = 3;</code>
+       */
+      public Builder setSlaveId(
+          org.apache.mesos.Protos.SlaveID.Builder builderForValue) {
+        if (slaveIdBuilder_ == null) {
+          slaveId_ = builderForValue.build();
+          onChanged();
+        } else {
+          slaveIdBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>required .mesos.SlaveID slave_id = 3;</code>
+       */
+      public Builder mergeSlaveId(org.apache.mesos.Protos.SlaveID value) {
+        if (slaveIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) == 0x00000004) &&
+              slaveId_ != org.apache.mesos.Protos.SlaveID.getDefaultInstance()) {
+            slaveId_ =
+              org.apache.mesos.Protos.SlaveID.newBuilder(slaveId_).mergeFrom(value).buildPartial();
+          } else {
+            slaveId_ = value;
+          }
+          onChanged();
+        } else {
+          slaveIdBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>required .mesos.SlaveID slave_id = 3;</code>
+       */
+      public Builder clearSlaveId() {
+        if (slaveIdBuilder_ == null) {
+          slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+          onChanged();
+        } else {
+          slaveIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+      /**
+       * <code>required .mesos.SlaveID slave_id = 3;</code>
+       */
+      public org.apache.mesos.Protos.SlaveID.Builder getSlaveIdBuilder() {
+        bitField0_ |= 0x00000004;
+        onChanged();
+        return getSlaveIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>required .mesos.SlaveID slave_id = 3;</code>
+       */
+      public org.apache.mesos.Protos.SlaveIDOrBuilder getSlaveIdOrBuilder() {
+        if (slaveIdBuilder_ != null) {
+          return slaveIdBuilder_.getMessageOrBuilder();
+        } else {
+          return slaveId_;
+        }
+      }
+      /**
+       * <code>required .mesos.SlaveID slave_id = 3;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.SlaveID, org.apache.mesos.Protos.SlaveID.Builder, org.apache.mesos.Protos.SlaveIDOrBuilder> 
+          getSlaveIdFieldBuilder() {
+        if (slaveIdBuilder_ == null) {
+          slaveIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.SlaveID, org.apache.mesos.Protos.SlaveID.Builder, org.apache.mesos.Protos.SlaveIDOrBuilder>(
+                  slaveId_,
+                  getParentForChildren(),
+                  isClean());
+          slaveId_ = null;
+        }
+        return slaveIdBuilder_;
+      }
+
+      // required string hostname = 4;
+      private java.lang.Object hostname_ = "";
+      /**
+       * <code>required string hostname = 4;</code>
+       */
+      public boolean hasHostname() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>required string hostname = 4;</code>
+       */
+      public java.lang.String getHostname() {
+        java.lang.Object ref = hostname_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          hostname_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string hostname = 4;</code>
+       */
+      public com.google.protobuf.ByteString
+          getHostnameBytes() {
+        java.lang.Object ref = hostname_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          hostname_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string hostname = 4;</code>
+       */
+      public Builder setHostname(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+        hostname_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string hostname = 4;</code>
+       */
+      public Builder clearHostname() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        hostname_ = getDefaultInstance().getHostname();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string hostname = 4;</code>
+       */
+      public Builder setHostnameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+        hostname_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.URL url = 8;
+      private org.apache.mesos.Protos.URL url_ = org.apache.mesos.Protos.URL.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.URL, org.apache.mesos.Protos.URL.Builder, org.apache.mesos.Protos.URLOrBuilder> urlBuilder_;
+      /**
+       * <code>optional .mesos.URL url = 8;</code>
+       *
+       * <pre>
+       * URL for reaching the slave running on the host.
+       * </pre>
+       */
+      public boolean hasUrl() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional .mesos.URL url = 8;</code>
+       *
+       * <pre>
+       * URL for reaching the slave running on the host.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.URL getUrl() {
+        if (urlBuilder_ == null) {
+          return url_;
+        } else {
+          return urlBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.URL url = 8;</code>
+       *
+       * <pre>
+       * URL for reaching the slave running on the host.
+       * </pre>
+       */
+      public Builder setUrl(org.apache.mesos.Protos.URL value) {
+        if (urlBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          url_ = value;
+          onChanged();
+        } else {
+          urlBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.URL url = 8;</code>
+       *
+       * <pre>
+       * URL for reaching the slave running on the host.
+       * </pre>
+       */
+      public Builder setUrl(
+          org.apache.mesos.Protos.URL.Builder builderForValue) {
+        if (urlBuilder_ == null) {
+          url_ = builderForValue.build();
+          onChanged();
+        } else {
+          urlBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.URL url = 8;</code>
+       *
+       * <pre>
+       * URL for reaching the slave running on the host.
+       * </pre>
+       */
+      public Builder mergeUrl(org.apache.mesos.Protos.URL value) {
+        if (urlBuilder_ == null) {
+          if (((bitField0_ & 0x00000010) == 0x00000010) &&
+              url_ != org.apache.mesos.Protos.URL.getDefaultInstance()) {
+            url_ =
+              org.apache.mesos.Protos.URL.newBuilder(url_).mergeFrom(value).buildPartial();
+          } else {
+            url_ = value;
+          }
+          onChanged();
+        } else {
+          urlBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.URL url = 8;</code>
+       *
+       * <pre>
+       * URL for reaching the slave running on the host.
+       * </pre>
+       */
+      public Builder clearUrl() {
+        if (urlBuilder_ == null) {
+          url_ = org.apache.mesos.Protos.URL.getDefaultInstance();
+          onChanged();
+        } else {
+          urlBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.URL url = 8;</code>
+       *
+       * <pre>
+       * URL for reaching the slave running on the host.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.URL.Builder getUrlBuilder() {
+        bitField0_ |= 0x00000010;
+        onChanged();
+        return getUrlFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.URL url = 8;</code>
+       *
+       * <pre>
+       * URL for reaching the slave running on the host.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.URLOrBuilder getUrlOrBuilder() {
+        if (urlBuilder_ != null) {
+          return urlBuilder_.getMessageOrBuilder();
+        } else {
+          return url_;
+        }
+      }
+      /**
+       * <code>optional .mesos.URL url = 8;</code>
+       *
+       * <pre>
+       * URL for reaching the slave running on the host.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.URL, org.apache.mesos.Protos.URL.Builder, org.apache.mesos.Protos.URLOrBuilder> 
+          getUrlFieldBuilder() {
+        if (urlBuilder_ == null) {
+          urlBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.URL, org.apache.mesos.Protos.URL.Builder, org.apache.mesos.Protos.URLOrBuilder>(
+                  url_,
+                  getParentForChildren(),
+                  isClean());
+          url_ = null;
+        }
+        return urlBuilder_;
+      }
+
+      // optional .mesos.DomainInfo domain = 11;
+      private org.apache.mesos.Protos.DomainInfo domain_ = org.apache.mesos.Protos.DomainInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.DomainInfo, org.apache.mesos.Protos.DomainInfo.Builder, org.apache.mesos.Protos.DomainInfoOrBuilder> domainBuilder_;
+      /**
+       * <code>optional .mesos.DomainInfo domain = 11;</code>
+       *
+       * <pre>
+       * The domain of the slave.
+       * </pre>
+       */
+      public boolean hasDomain() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional .mesos.DomainInfo domain = 11;</code>
+       *
+       * <pre>
+       * The domain of the slave.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.DomainInfo getDomain() {
+        if (domainBuilder_ == null) {
+          return domain_;
+        } else {
+          return domainBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.DomainInfo domain = 11;</code>
+       *
+       * <pre>
+       * The domain of the slave.
+       * </pre>
+       */
+      public Builder setDomain(org.apache.mesos.Protos.DomainInfo value) {
+        if (domainBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          domain_ = value;
+          onChanged();
+        } else {
+          domainBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.DomainInfo domain = 11;</code>
+       *
+       * <pre>
+       * The domain of the slave.
+       * </pre>
+       */
+      public Builder setDomain(
+          org.apache.mesos.Protos.DomainInfo.Builder builderForValue) {
+        if (domainBuilder_ == null) {
+          domain_ = builderForValue.build();
+          onChanged();
+        } else {
+          domainBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.DomainInfo domain = 11;</code>
+       *
+       * <pre>
+       * The domain of the slave.
+       * </pre>
+       */
+      public Builder mergeDomain(org.apache.mesos.Protos.DomainInfo value) {
+        if (domainBuilder_ == null) {
+          if (((bitField0_ & 0x00000020) == 0x00000020) &&
+              domain_ != org.apache.mesos.Protos.DomainInfo.getDefaultInstance()) {
+            domain_ =
+              org.apache.mesos.Protos.DomainInfo.newBuilder(domain_).mergeFrom(value).buildPartial();
+          } else {
+            domain_ = value;
+          }
+          onChanged();
+        } else {
+          domainBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.DomainInfo domain = 11;</code>
+       *
+       * <pre>
+       * The domain of the slave.
+       * </pre>
+       */
+      public Builder clearDomain() {
+        if (domainBuilder_ == null) {
+          domain_ = org.apache.mesos.Protos.DomainInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          domainBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.DomainInfo domain = 11;</code>
+       *
+       * <pre>
+       * The domain of the slave.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.DomainInfo.Builder getDomainBuilder() {
+        bitField0_ |= 0x00000020;
+        onChanged();
+        return getDomainFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.DomainInfo domain = 11;</code>
+       *
+       * <pre>
+       * The domain of the slave.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.DomainInfoOrBuilder getDomainOrBuilder() {
+        if (domainBuilder_ != null) {
+          return domainBuilder_.getMessageOrBuilder();
+        } else {
+          return domain_;
+        }
+      }
+      /**
+       * <code>optional .mesos.DomainInfo domain = 11;</code>
+       *
+       * <pre>
+       * The domain of the slave.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.DomainInfo, org.apache.mesos.Protos.DomainInfo.Builder, org.apache.mesos.Protos.DomainInfoOrBuilder> 
+          getDomainFieldBuilder() {
+        if (domainBuilder_ == null) {
+          domainBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.DomainInfo, org.apache.mesos.Protos.DomainInfo.Builder, org.apache.mesos.Protos.DomainInfoOrBuilder>(
+                  domain_,
+                  getParentForChildren(),
+                  isClean());
+          domain_ = null;
+        }
+        return domainBuilder_;
+      }
+
+      // repeated .mesos.Resource resources = 5;
+      private java.util.List<org.apache.mesos.Protos.Resource> resources_ =
+        java.util.Collections.emptyList();
+      private void ensureResourcesIsMutable() {
+        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
+          resources_ = new java.util.ArrayList<org.apache.mesos.Protos.Resource>(resources_);
+          bitField0_ |= 0x00000040;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder> resourcesBuilder_;
+
+      /**
+       * <code>repeated .mesos.Resource resources = 5;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.Resource> getResourcesList() {
+        if (resourcesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(resources_);
+        } else {
+          return resourcesBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 5;</code>
+       */
+      public int getResourcesCount() {
+        if (resourcesBuilder_ == null) {
+          return resources_.size();
+        } else {
+          return resourcesBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 5;</code>
+       */
+      public org.apache.mesos.Protos.Resource getResources(int index) {
+        if (resourcesBuilder_ == null) {
+          return resources_.get(index);
+        } else {
+          return resourcesBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 5;</code>
+       */
+      public Builder setResources(
+          int index, org.apache.mesos.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.set(index, value);
+          onChanged();
+        } else {
+          resourcesBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 5;</code>
+       */
+      public Builder setResources(
+          int index, org.apache.mesos.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 5;</code>
+       */
+      public Builder addResources(org.apache.mesos.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.add(value);
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 5;</code>
+       */
+      public Builder addResources(
+          int index, org.apache.mesos.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.add(index, value);
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 5;</code>
+       */
+      public Builder addResources(
+          org.apache.mesos.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.add(builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 5;</code>
+       */
+      public Builder addResources(
+          int index, org.apache.mesos.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 5;</code>
+       */
+      public Builder addAllResources(
+          java.lang.Iterable<? extends org.apache.mesos.Protos.Resource> values) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          super.addAll(values, resources_);
+          onChanged();
+        } else {
+          resourcesBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 5;</code>
+       */
+      public Builder clearResources() {
+        if (resourcesBuilder_ == null) {
+          resources_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000040);
+          onChanged();
+        } else {
+          resourcesBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 5;</code>
+       */
+      public Builder removeResources(int index) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.remove(index);
+          onChanged();
+        } else {
+          resourcesBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 5;</code>
+       */
+      public org.apache.mesos.Protos.Resource.Builder getResourcesBuilder(
+          int index) {
+        return getResourcesFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 5;</code>
+       */
+      public org.apache.mesos.Protos.ResourceOrBuilder getResourcesOrBuilder(
+          int index) {
+        if (resourcesBuilder_ == null) {
+          return resources_.get(index);  } else {
+          return resourcesBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 5;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+           getResourcesOrBuilderList() {
+        if (resourcesBuilder_ != null) {
+          return resourcesBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(resources_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 5;</code>
+       */
+      public org.apache.mesos.Protos.Resource.Builder addResourcesBuilder() {
+        return getResourcesFieldBuilder().addBuilder(
+            org.apache.mesos.Protos.Resource.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 5;</code>
+       */
+      public org.apache.mesos.Protos.Resource.Builder addResourcesBuilder(
+          int index) {
+        return getResourcesFieldBuilder().addBuilder(
+            index, org.apache.mesos.Protos.Resource.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 5;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.Resource.Builder> 
+           getResourcesBuilderList() {
+        return getResourcesFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder> 
+          getResourcesFieldBuilder() {
+        if (resourcesBuilder_ == null) {
+          resourcesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder>(
+                  resources_,
+                  ((bitField0_ & 0x00000040) == 0x00000040),
+                  getParentForChildren(),
+                  isClean());
+          resources_ = null;
+        }
+        return resourcesBuilder_;
+      }
+
+      // repeated .mesos.Attribute attributes = 7;
+      private java.util.List<org.apache.mesos.Protos.Attribute> attributes_ =
+        java.util.Collections.emptyList();
+      private void ensureAttributesIsMutable() {
+        if (!((bitField0_ & 0x00000080) == 0x00000080)) {
+          attributes_ = new java.util.ArrayList<org.apache.mesos.Protos.Attribute>(attributes_);
+          bitField0_ |= 0x00000080;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.Attribute, org.apache.mesos.Protos.Attribute.Builder, org.apache.mesos.Protos.AttributeOrBuilder> attributesBuilder_;
+
+      /**
+       * <code>repeated .mesos.Attribute attributes = 7;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.Attribute> getAttributesList() {
+        if (attributesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(attributes_);
+        } else {
+          return attributesBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 7;</code>
+       */
+      public int getAttributesCount() {
+        if (attributesBuilder_ == null) {
+          return attributes_.size();
+        } else {
+          return attributesBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 7;</code>
+       */
+      public org.apache.mesos.Protos.Attribute getAttributes(int index) {
+        if (attributesBuilder_ == null) {
+          return attributes_.get(index);
+        } else {
+          return attributesBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 7;</code>
+       */
+      public Builder setAttributes(
+          int index, org.apache.mesos.Protos.Attribute value) {
+        if (attributesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureAttributesIsMutable();
+          attributes_.set(index, value);
+          onChanged();
+        } else {
+          attributesBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 7;</code>
+       */
+      public Builder setAttributes(
+          int index, org.apache.mesos.Protos.Attribute.Builder builderForValue) {
+        if (attributesBuilder_ == null) {
+          ensureAttributesIsMutable();
+          attributes_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          attributesBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 7;</code>
+       */
+      public Builder addAttributes(org.apache.mesos.Protos.Attribute value) {
+        if (attributesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureAttributesIsMutable();
+          attributes_.add(value);
+          onChanged();
+        } else {
+          attributesBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 7;</code>
+       */
+      public Builder addAttributes(
+          int index, org.apache.mesos.Protos.Attribute value) {
+        if (attributesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureAttributesIsMutable();
+          attributes_.add(index, value);
+          onChanged();
+        } else {
+          attributesBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 7;</code>
+       */
+      public Builder addAttributes(
+          org.apache.mesos.Protos.Attribute.Builder builderForValue) {
+        if (attributesBuilder_ == null) {
+          ensureAttributesIsMutable();
+          attributes_.add(builderForValue.build());
+          onChanged();
+        } else {
+          attributesBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 7;</code>
+       */
+      public Builder addAttributes(
+          int index, org.apache.mesos.Protos.Attribute.Builder builderForValue) {
+        if (attributesBuilder_ == null) {
+          ensureAttributesIsMutable();
+          attributes_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          attributesBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 7;</code>
+       */
+      public Builder addAllAttributes(
+          java.lang.Iterable<? extends org.apache.mesos.Protos.Attribute> values) {
+        if (attributesBuilder_ == null) {
+          ensureAttributesIsMutable();
+          super.addAll(values, attributes_);
+          onChanged();
+        } else {
+          attributesBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 7;</code>
+       */
+      public Builder clearAttributes() {
+        if (attributesBuilder_ == null) {
+          attributes_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000080);
+          onChanged();
+        } else {
+          attributesBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 7;</code>
+       */
+      public Builder removeAttributes(int index) {
+        if (attributesBuilder_ == null) {
+          ensureAttributesIsMutable();
+          attributes_.remove(index);
+          onChanged();
+        } else {
+          attributesBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 7;</code>
+       */
+      public org.apache.mesos.Protos.Attribute.Builder getAttributesBuilder(
+          int index) {
+        return getAttributesFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 7;</code>
+       */
+      public org.apache.mesos.Protos.AttributeOrBuilder getAttributesOrBuilder(
+          int index) {
+        if (attributesBuilder_ == null) {
+          return attributes_.get(index);  } else {
+          return attributesBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 7;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.AttributeOrBuilder> 
+           getAttributesOrBuilderList() {
+        if (attributesBuilder_ != null) {
+          return attributesBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(attributes_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 7;</code>
+       */
+      public org.apache.mesos.Protos.Attribute.Builder addAttributesBuilder() {
+        return getAttributesFieldBuilder().addBuilder(
+            org.apache.mesos.Protos.Attribute.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 7;</code>
+       */
+      public org.apache.mesos.Protos.Attribute.Builder addAttributesBuilder(
+          int index) {
+        return getAttributesFieldBuilder().addBuilder(
+            index, org.apache.mesos.Protos.Attribute.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.Attribute attributes = 7;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.Attribute.Builder> 
+           getAttributesBuilderList() {
+        return getAttributesFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.Attribute, org.apache.mesos.Protos.Attribute.Builder, org.apache.mesos.Protos.AttributeOrBuilder> 
+          getAttributesFieldBuilder() {
+        if (attributesBuilder_ == null) {
+          attributesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.Attribute, org.apache.mesos.Protos.Attribute.Builder, org.apache.mesos.Protos.AttributeOrBuilder>(
+                  attributes_,
+                  ((bitField0_ & 0x00000080) == 0x00000080),
+                  getParentForChildren(),
+                  isClean());
+          attributes_ = null;
+        }
+        return attributesBuilder_;
+      }
+
+      // repeated .mesos.ExecutorID executor_ids = 6;
+      private java.util.List<org.apache.mesos.Protos.ExecutorID> executorIds_ =
+        java.util.Collections.emptyList();
+      private void ensureExecutorIdsIsMutable() {
+        if (!((bitField0_ & 0x00000100) == 0x00000100)) {
+          executorIds_ = new java.util.ArrayList<org.apache.mesos.Protos.ExecutorID>(executorIds_);
+          bitField0_ |= 0x00000100;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.ExecutorID, org.apache.mesos.Protos.ExecutorID.Builder, org.apache.mesos.Protos.ExecutorIDOrBuilder> executorIdsBuilder_;
+
+      /**
+       * <code>repeated .mesos.ExecutorID executor_ids = 6;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.ExecutorID> getExecutorIdsList() {
+        if (executorIdsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(executorIds_);
+        } else {
+          return executorIdsBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.ExecutorID executor_ids = 6;</code>
+       */
+      public int getExecutorIdsCount() {
+        if (executorIdsBuilder_ == null) {
+          return executorIds_.size();
+        } else {
+          return executorIdsBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.ExecutorID executor_ids = 6;</code>
+       */
+      public org.apache.mesos.Protos.ExecutorID getExecutorIds(int index) {
+        if (executorIdsBuilder_ == null) {
+          return executorIds_.get(index);
+        } else {
+          return executorIdsBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.ExecutorID executor_ids = 6;</code>
+       */
+      public Builder setExecutorIds(
+          int index, org.apache.mesos.Protos.ExecutorID value) {
+        if (executorIdsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureExecutorIdsIsMutable();
+          executorIds_.set(index, value);
+          onChanged();
+        } else {
+          executorIdsBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.ExecutorID executor_ids = 6;</code>
+       */
+      public Builder setExecutorIds(
+          int index, org.apache.mesos.Protos.ExecutorID.Builder builderForValue) {
+        if (executorIdsBuilder_ == null) {
+          ensureExecutorIdsIsMutable();
+          executorIds_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          executorIdsBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.ExecutorID executor_ids = 6;</code>
+       */
+      public Builder addExecutorIds(org.apache.mesos.Protos.ExecutorID value) {
+        if (executorIdsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureExecutorIdsIsMutable();
+          executorIds_.add(value);
+          onChanged();
+        } else {
+          executorIdsBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.ExecutorID executor_ids = 6;</code>
+       */
+      public Builder addExecutorIds(
+          int index, org.apache.mesos.Protos.ExecutorID value) {
+        if (executorIdsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureExecutorIdsIsMutable();
+          executorIds_.add(index, value);
+          onChanged();
+        } else {
+          executorIdsBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.ExecutorID executor_ids = 6;</code>
+       */
+      public Builder addExecutorIds(
+          org.apache.mesos.Protos.ExecutorID.Builder builderForValue) {
+        if (executorIdsBuilder_ == null) {
+          ensureExecutorIdsIsMutable();
+          executorIds_.add(builderForValue.build());
+          onChanged();
+        } else {
+          executorIdsBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.ExecutorID executor_ids = 6;</code>
+       */
+      public Builder addExecutorIds(
+          int index, org.apache.mesos.Protos.ExecutorID.Builder builderForValue) {
+        if (executorIdsBuilder_ == null) {
+          ensureExecutorIdsIsMutable();
+          executorIds_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          executorIdsBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.ExecutorID executor_ids = 6;</code>
+       */
+      public Builder addAllExecutorIds(
+          java.lang.Iterable<? extends org.apache.mesos.Protos.ExecutorID> values) {
+        if (executorIdsBuilder_ == null) {
+          ensureExecutorIdsIsMutable();
+          super.addAll(values, executorIds_);
+          onChanged();
+        } else {
+          executorIdsBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.ExecutorID executor_ids = 6;</code>
+       */
+      public Builder clearExecutorIds() {
+        if (executorIdsBuilder_ == null) {
+          executorIds_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000100);
+          onChanged();
+        } else {
+          executorIdsBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.ExecutorID executor_ids = 6;</code>
+       */
+      public Builder removeExecutorIds(int index) {
+        if (executorIdsBuilder_ == null) {
+          ensureExecutorIdsIsMutable();
+          executorIds_.remove(index);
+          onChanged();
+        } else {
+          executorIdsBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.ExecutorID executor_ids = 6;</code>
+       */
+      public org.apache.mesos.Protos.ExecutorID.Builder getExecutorIdsBuilder(
+          int index) {
+        return getExecutorIdsFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.ExecutorID executor_ids = 6;</code>
+       */
+      public org.apache.mesos.Protos.ExecutorIDOrBuilder getExecutorIdsOrBuilder(
+          int index) {
+        if (executorIdsBuilder_ == null) {
+          return executorIds_.get(index);  } else {
+          return executorIdsBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.ExecutorID executor_ids = 6;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.ExecutorIDOrBuilder> 
+           getExecutorIdsOrBuilderList() {
+        if (executorIdsBuilder_ != null) {
+          return executorIdsBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(executorIds_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.ExecutorID executor_ids = 6;</code>
+       */
+      public org.apache.mesos.Protos.ExecutorID.Builder addExecutorIdsBuilder() {
+        return getExecutorIdsFieldBuilder().addBuilder(
+            org.apache.mesos.Protos.ExecutorID.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.ExecutorID executor_ids = 6;</code>
+       */
+      public org.apache.mesos.Protos.ExecutorID.Builder addExecutorIdsBuilder(
+          int index) {
+        return getExecutorIdsFieldBuilder().addBuilder(
+            index, org.apache.mesos.Protos.ExecutorID.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.ExecutorID executor_ids = 6;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.ExecutorID.Builder> 
+           getExecutorIdsBuilderList() {
+        return getExecutorIdsFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.ExecutorID, org.apache.mesos.Protos.ExecutorID.Builder, org.apache.mesos.Protos.ExecutorIDOrBuilder> 
+          getExecutorIdsFieldBuilder() {
+        if (executorIdsBuilder_ == null) {
+          executorIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.ExecutorID, org.apache.mesos.Protos.ExecutorID.Builder, org.apache.mesos.Protos.ExecutorIDOrBuilder>(
+                  executorIds_,
+                  ((bitField0_ & 0x00000100) == 0x00000100),
+                  getParentForChildren(),
+                  isClean());
+          executorIds_ = null;
+        }
+        return executorIdsBuilder_;
+      }
+
+      // optional .mesos.Unavailability unavailability = 9;
+      private org.apache.mesos.Protos.Unavailability unavailability_ = org.apache.mesos.Protos.Unavailability.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Unavailability, org.apache.mesos.Protos.Unavailability.Builder, org.apache.mesos.Protos.UnavailabilityOrBuilder> unavailabilityBuilder_;
+      /**
+       * <code>optional .mesos.Unavailability unavailability = 9;</code>
+       *
+       * <pre>
+       * Signifies that the resources in this Offer may be unavailable during
+       * the given interval.  Any tasks launched using these resources may be
+       * killed when the interval arrives.  For example, these resources may be
+       * part of a planned maintenance schedule.
+       *
+       * This field only provides information about a planned unavailability.
+       * The unavailability interval may not necessarily start at exactly this
+       * interval, nor last for exactly the duration of this interval.
+       * The unavailability may also be forever!  See comments in
+       * `Unavailability` for more details.
+       * </pre>
+       */
+      public boolean hasUnavailability() {
+        return ((bitField0_ & 0x00000200) == 0x00000200);
+      }
+      /**
+       * <code>optional .mesos.Unavailability unavailability = 9;</code>
+       *
+       * <pre>
+       * Signifies that the resources in this Offer may be unavailable during
+       * the given interval.  Any tasks launched using these resources may be
+       * killed when the interval arrives.  For example, these resources may be
+       * part of a planned maintenance schedule.
+       *
+       * This field only provides information about a planned unavailability.
+       * The unavailability interval may not necessarily start at exactly this
+       * interval, nor last for exactly the duration of this interval.
+       * The unavailability may also be forever!  See comments in
+       * `Unavailability` for more details.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Unavailability getUnavailability() {
+        if (unavailabilityBuilder_ == null) {
+          return unavailability_;
+        } else {
+          return unavailabilityBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.Unavailability unavailability = 9;</code>
+       *
+       * <pre>
+       * Signifies that the resources in this Offer may be unavailable during
+       * the given interval.  Any tasks launched using these resources may be
+       * killed when the interval arrives.  For example, these resources may be
+       * part of a planned maintenance schedule.
+       *
+       * This field only provides information about a planned unavailability.
+       * The unavailability interval may not necessarily start at exactly this
+       * interval, nor last for exactly the duration of this interval.
+       * The unavailability may also be forever!  See comments in
+       * `Unavailability` for more details.
+       * </pre>
+       */
+      public Builder setUnavailability(org.apache.mesos.Protos.Unavailability value) {
+        if (unavailabilityBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          unavailability_ = value;
+          onChanged();
+        } else {
+          unavailabilityBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000200;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Unavailability unavailability = 9;</code>
+       *
+       * <pre>
+       * Signifies that the resources in this Offer may be unavailable during
+       * the given interval.  Any tasks launched using these resources may be
+       * killed when the interval arrives.  For example, these resources may be
+       * part of a planned maintenance schedule.
+       *
+       * This field only provides information about a planned unavailability.
+       * The unavailability interval may not necessarily start at exactly this
+       * interval, nor last for exactly the duration of this interval.
+       * The unavailability may also be forever!  See comments in
+       * `Unavailability` for more details.
+       * </pre>
+       */
+      public Builder setUnavailability(
+          org.apache.mesos.Protos.Unavailability.Builder builderForValue) {
+        if (unavailabilityBuilder_ == null) {
+          unavailability_ = builderForValue.build();
+          onChanged();
+        } else {
+          unavailabilityBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000200;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Unavailability unavailability = 9;</code>
+       *
+       * <pre>
+       * Signifies that the resources in this Offer may be unavailable during
+       * the given interval.  Any tasks launched using these resources may be
+       * killed when the interval arrives.  For example, these resources may be
+       * part of a planned maintenance schedule.
+       *
+       * This field only provides information about a planned unavailability.
+       * The unavailability interval may not necessarily start at exactly this
+       * interval, nor last for exactly the duration of this interval.
+       * The unavailability may also be forever!  See comments in
+       * `Unavailability` for more details.
+       * </pre>
+       */
+      public Builder mergeUnavailability(org.apache.mesos.Protos.Unavailability value) {
+        if (unavailabilityBuilder_ == null) {
+          if (((bitField0_ & 0x00000200) == 0x00000200) &&
+              unavailability_ != org.apache.mesos.Protos.Unavailability.getDefaultInstance()) {
+            unavailability_ =
+              org.apache.mesos.Protos.Unavailability.newBuilder(unavailability_).mergeFrom(value).buildPartial();
+          } else {
+            unavailability_ = value;
+          }
+          onChanged();
+        } else {
+          unavailabilityBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000200;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Unavailability unavailability = 9;</code>
+       *
+       * <pre>
+       * Signifies that the resources in this Offer may be unavailable during
+       * the given interval.  Any tasks launched using these resources may be
+       * killed when the interval arrives.  For example, these resources may be
+       * part of a planned maintenance schedule.
+       *
+       * This field only provides information about a planned unavailability.
+       * The unavailability interval may not necessarily start at exactly this
+       * interval, nor last for exactly the duration of this interval.
+       * The unavailability may also be forever!  See comments in
+       * `Unavailability` for more details.
+       * </pre>
+       */
+      public Builder clearUnavailability() {
+        if (unavailabilityBuilder_ == null) {
+          unavailability_ = org.apache.mesos.Protos.Unavailability.getDefaultInstance();
+          onChanged();
+        } else {
+          unavailabilityBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000200);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Unavailability unavailability = 9;</code>
+       *
+       * <pre>
+       * Signifies that the resources in this Offer may be unavailable during
+       * the given interval.  Any tasks launched using these resources may be
+       * killed when the interval arrives.  For example, these resources may be
+       * part of a planned maintenance schedule.
+       *
+       * This field only provides information about a planned unavailability.
+       * The unavailability interval may not necessarily start at exactly this
+       * interval, nor last for exactly the duration of this interval.
+       * The unavailability may also be forever!  See comments in
+       * `Unavailability` for more details.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Unavailability.Builder getUnavailabilityBuilder() {
+        bitField0_ |= 0x00000200;
+        onChanged();
+        return getUnavailabilityFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.Unavailability unavailability = 9;</code>
+       *
+       * <pre>
+       * Signifies that the resources in this Offer may be unavailable during
+       * the given interval.  Any tasks launched using these resources may be
+       * killed when the interval arrives.  For example, these resources may be
+       * part of a planned maintenance schedule.
+       *
+       * This field only provides information about a planned unavailability.
+       * The unavailability interval may not necessarily start at exactly this
+       * interval, nor last for exactly the duration of this interval.
+       * The unavailability may also be forever!  See comments in
+       * `Unavailability` for more details.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.UnavailabilityOrBuilder getUnavailabilityOrBuilder() {
+        if (unavailabilityBuilder_ != null) {
+          return unavailabilityBuilder_.getMessageOrBuilder();
+        } else {
+          return unavailability_;
+        }
+      }
+      /**
+       * <code>optional .mesos.Unavailability unavailability = 9;</code>
+       *
+       * <pre>
+       * Signifies that the resources in this Offer may be unavailable during
+       * the given interval.  Any tasks launched using these resources may be
+       * killed when the interval arrives.  For example, these resources may be
+       * part of a planned maintenance schedule.
+       *
+       * This field only provides information about a planned unavailability.
+       * The unavailability interval may not necessarily start at exactly this
+       * interval, nor last for exactly the duration of this interval.
+       * The unavailability may also be forever!  See comments in
+       * `Unavailability` for more details.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Unavailability, org.apache.mesos.Protos.Unavailability.Builder, org.apache.mesos.Protos.UnavailabilityOrBuilder> 
+          getUnavailabilityFieldBuilder() {
+        if (unavailabilityBuilder_ == null) {
+          unavailabilityBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Unavailability, org.apache.mesos.Protos.Unavailability.Builder, org.apache.mesos.Protos.UnavailabilityOrBuilder>(
+                  unavailability_,
+                  getParentForChildren(),
+                  isClean());
+          unavailability_ = null;
+        }
+        return unavailabilityBuilder_;
+      }
+
+      // optional .mesos.Resource.AllocationInfo allocation_info = 10;
+      private org.apache.mesos.Protos.Resource.AllocationInfo allocationInfo_ = org.apache.mesos.Protos.Resource.AllocationInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Resource.AllocationInfo, org.apache.mesos.Protos.Resource.AllocationInfo.Builder, org.apache.mesos.Protos.Resource.AllocationInfoOrBuilder> allocationInfoBuilder_;
+      /**
+       * <code>optional .mesos.Resource.AllocationInfo allocation_info = 10;</code>
+       *
+       * <pre>
+       * An offer represents resources allocated to *one* of the
+       * roles managed by the scheduler. (Therefore, each
+       * `Offer.resources[i].allocation_info` will match the
+       * top level `Offer.allocation_info`).
+       * </pre>
+       */
+      public boolean hasAllocationInfo() {
+        return ((bitField0_ & 0x00000400) == 0x00000400);
+      }
+      /**
+       * <code>optional .mesos.Resource.AllocationInfo allocation_info = 10;</code>
+       *
+       * <pre>
+       * An offer represents resources allocated to *one* of the
+       * roles managed by the scheduler. (Therefore, each
+       * `Offer.resources[i].allocation_info` will match the
+       * top level `Offer.allocation_info`).
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Resource.AllocationInfo getAllocationInfo() {
+        if (allocationInfoBuilder_ == null) {
+          return allocationInfo_;
+        } else {
+          return allocationInfoBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.Resource.AllocationInfo allocation_info = 10;</code>
+       *
+       * <pre>
+       * An offer represents resources allocated to *one* of the
+       * roles managed by the scheduler. (Therefore, each
+       * `Offer.resources[i].allocation_info` will match the
+       * top level `Offer.allocation_info`).
+       * </pre>
+       */
+      public Builder setAllocationInfo(org.apache.mesos.Protos.Resource.AllocationInfo value) {
+        if (allocationInfoBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          allocationInfo_ = value;
+          onChanged();
+        } else {
+          allocationInfoBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000400;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Resource.AllocationInfo allocation_info = 10;</code>
+       *
+       * <pre>
+       * An offer represents resources allocated to *one* of the
+       * roles managed by the scheduler. (Therefore, each
+       * `Offer.resources[i].allocation_info` will match the
+       * top level `Offer.allocation_info`).
+       * </pre>
+       */
+      public Builder setAllocationInfo(
+          org.apache.mesos.Protos.Resource.AllocationInfo.Builder builderForValue) {
+        if (allocationInfoBuilder_ == null) {
+          allocationInfo_ = builderForValue.build();
+          onChanged();
+        } else {
+          allocationInfoBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000400;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Resource.AllocationInfo allocation_info = 10;</code>
+       *
+       * <pre>
+       * An offer represents resources allocated to *one* of the
+       * roles managed by the scheduler. (Therefore, each
+       * `Offer.resources[i].allocation_info` will match the
+       * top level `Offer.allocation_info`).
+       * </pre>
+       */
+      public Builder mergeAllocationInfo(org.apache.mesos.Protos.Resource.AllocationInfo value) {
+        if (allocationInfoBuilder_ == null) {
+          if (((bitField0_ & 0x00000400) == 0x00000400) &&
+              allocationInfo_ != org.apache.mesos.Protos.Resource.AllocationInfo.getDefaultInstance()) {
+            allocationInfo_ =
+              org.apache.mesos.Protos.Resource.AllocationInfo.newBuilder(allocationInfo_).mergeFrom(value).buildPartial();
+          } else {
+            allocationInfo_ = value;
+          }
+          onChanged();
+        } else {
+          allocationInfoBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000400;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Resource.AllocationInfo allocation_info = 10;</code>
+       *
+       * <pre>
+       * An offer represents resources allocated to *one* of the
+       * roles managed by the scheduler. (Therefore, each
+       * `Offer.resources[i].allocation_info` will match the
+       * top level `Offer.allocation_info`).
+       * </pre>
+       */
+      public Builder clearAllocationInfo() {
+        if (allocationInfoBuilder_ == null) {
+          allocationInfo_ = org.apache.mesos.Protos.Resource.AllocationInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          allocationInfoBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000400);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Resource.AllocationInfo allocation_info = 10;</code>
+       *
+       * <pre>
+       * An offer represents resources allocated to *one* of the
+       * roles managed by the scheduler. (Therefore, each
+       * `Offer.resources[i].allocation_info` will match the
+       * top level `Offer.allocation_info`).
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Resource.AllocationInfo.Builder getAllocationInfoBuilder() {
+        bitField0_ |= 0x00000400;
+        onChanged();
+        return getAllocationInfoFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.Resource.AllocationInfo allocation_info = 10;</code>
+       *
+       * <pre>
+       * An offer represents resources allocated to *one* of the
+       * roles managed by the scheduler. (Therefore, each
+       * `Offer.resources[i].allocation_info` will match the
+       * top level `Offer.allocation_info`).
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Resource.AllocationInfoOrBuilder getAllocationInfoOrBuilder() {
+        if (allocationInfoBuilder_ != null) {
+          return allocationInfoBuilder_.getMessageOrBuilder();
+        } else {
+          return allocationInfo_;
+        }
+      }
+      /**
+       * <code>optional .mesos.Resource.AllocationInfo allocation_info = 10;</code>
+       *
+       * <pre>
+       * An offer represents resources allocated to *one* of the
+       * roles managed by the scheduler. (Therefore, each
+       * `Offer.resources[i].allocation_info` will match the
+       * top level `Offer.allocation_info`).
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Resource.AllocationInfo, org.apache.mesos.Protos.Resource.AllocationInfo.Builder, org.apache.mesos.Protos.Resource.AllocationInfoOrBuilder> 
+          getAllocationInfoFieldBuilder() {
+        if (allocationInfoBuilder_ == null) {
+          allocationInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Resource.AllocationInfo, org.apache.mesos.Protos.Resource.AllocationInfo.Builder, org.apache.mesos.Protos.Resource.AllocationInfoOrBuilder>(
+                  allocationInfo_,
+                  getParentForChildren(),
+                  isClean());
+          allocationInfo_ = null;
+        }
+        return allocationInfoBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.Offer)
+    }
+
+    static {
+      defaultInstance = new Offer(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.Offer)
+  }
+
+  public interface InverseOfferOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required .mesos.OfferID id = 1;
+    /**
+     * <code>required .mesos.OfferID id = 1;</code>
+     *
+     * <pre>
+     * This is the same OfferID as found in normal offers, which allows
+     * re-use of some of the OfferID-only messages.
+     * </pre>
+     */
+    boolean hasId();
+    /**
+     * <code>required .mesos.OfferID id = 1;</code>
+     *
+     * <pre>
+     * This is the same OfferID as found in normal offers, which allows
+     * re-use of some of the OfferID-only messages.
+     * </pre>
+     */
+    org.apache.mesos.Protos.OfferID getId();
+    /**
+     * <code>required .mesos.OfferID id = 1;</code>
+     *
+     * <pre>
+     * This is the same OfferID as found in normal offers, which allows
+     * re-use of some of the OfferID-only messages.
+     * </pre>
+     */
+    org.apache.mesos.Protos.OfferIDOrBuilder getIdOrBuilder();
+
+    // optional .mesos.URL url = 2;
+    /**
+     * <code>optional .mesos.URL url = 2;</code>
+     *
+     * <pre>
+     * URL for reaching the slave running on the host.  This enables some
+     * optimizations as described in MESOS-3012, such as allowing the
+     * scheduler driver to bypass the master and talk directly with a slave.
+     * </pre>
+     */
+    boolean hasUrl();
+    /**
+     * <code>optional .mesos.URL url = 2;</code>
+     *
+     * <pre>
+     * URL for reaching the slave running on the host.  This enables some
+     * optimizations as described in MESOS-3012, such as allowing the
+     * scheduler driver to bypass the master and talk directly with a slave.
+     * </pre>
+     */
+    org.apache.mesos.Protos.URL getUrl();
+    /**
+     * <code>optional .mesos.URL url = 2;</code>
+     *
+     * <pre>
+     * URL for reaching the slave running on the host.  This enables some
+     * optimizations as described in MESOS-3012, such as allowing the
+     * scheduler driver to bypass the master and talk directly with a slave.
+     * </pre>
+     */
+    org.apache.mesos.Protos.URLOrBuilder getUrlOrBuilder();
+
+    // required .mesos.FrameworkID framework_id = 3;
+    /**
+     * <code>required .mesos.FrameworkID framework_id = 3;</code>
+     *
+     * <pre>
+     * The framework that should release its resources.
+     * If no specifics are provided (i.e. which slave), all the framework's
+     * resources are requested back.
+     * </pre>
+     */
+    boolean hasFrameworkId();
+    /**
+     * <code>required .mesos.FrameworkID framework_id = 3;</code>
+     *
+     * <pre>
+     * The framework that should release its resources.
+     * If no specifics are provided (i.e. which slave), all the framework's
+     * resources are requested back.
+     * </pre>
+     */
+    org.apache.mesos.Protos.FrameworkID getFrameworkId();
+    /**
+     * <code>required .mesos.FrameworkID framework_id = 3;</code>
+     *
+     * <pre>
+     * The framework that should release its resources.
+     * If no specifics are provided (i.e. which slave), all the framework's
+     * resources are requested back.
+     * </pre>
+     */
+    org.apache.mesos.Protos.FrameworkIDOrBuilder getFrameworkIdOrBuilder();
+
+    // optional .mesos.SlaveID slave_id = 4;
+    /**
+     * <code>optional .mesos.SlaveID slave_id = 4;</code>
+     *
+     * <pre>
+     * Specified if the resources need to be released from a particular slave.
+     * All the framework's resources on this slave are requested back,
+     * unless further qualified by the `resources` field.
+     * </pre>
+     */
+    boolean hasSlaveId();
+    /**
+     * <code>optional .mesos.SlaveID slave_id = 4;</code>
+     *
+     * <pre>
+     * Specified if the resources need to be released from a particular slave.
+     * All the framework's resources on this slave are requested back,
+     * unless further qualified by the `resources` field.
+     * </pre>
+     */
+    org.apache.mesos.Protos.SlaveID getSlaveId();
+    /**
+     * <code>optional .mesos.SlaveID slave_id = 4;</code>
+     *
+     * <pre>
+     * Specified if the resources need to be released from a particular slave.
+     * All the framework's resources on this slave are requested back,
+     * unless further qualified by the `resources` field.
+     * </pre>
+     */
+    org.apache.mesos.Protos.SlaveIDOrBuilder getSlaveIdOrBuilder();
+
+    // required .mesos.Unavailability unavailability = 5;
+    /**
+     * <code>required .mesos.Unavailability unavailability = 5;</code>
+     *
+     * <pre>
+     * This InverseOffer represents a planned unavailability event in the
+     * specified interval.  Any tasks running on the given framework or slave
+     * may be killed when the interval arrives.  Therefore, frameworks should
+     * aim to gracefully terminate tasks prior to the arrival of the interval.
+     *
+     * For reserved resources, the resources are expected to be returned to the
+     * framework after the unavailability interval.  This is an expectation,
+     * not a guarantee.  For example, if the unavailability duration is not set,
+     * the resources may be removed permanently.
+     *
+     * For other resources, there is no guarantee that requested resources will
+     * be returned after the unavailability interval.  The allocator has no
+     * obligation to re-offer these resources to the prior framework after
+     * the unavailability.
+     * </pre>
+     */
+    boolean hasUnavailability();
+    /**
+     * <code>required .mesos.Unavailability unavailability = 5;</code>
+     *
+     * <pre>
+     * This InverseOffer represents a planned unavailability event in the
+     * specified interval.  Any tasks running on the given framework or slave
+     * may be killed when the interval arrives.  Therefore, frameworks should
+     * aim to gracefully terminate tasks prior to the arrival of the interval.
+     *
+     * For reserved resources, the resources are expected to be returned to the
+     * framework after the unavailability interval.  This is an expectation,
+     * not a guarantee.  For example, if the unavailability duration is not set,
+     * the resources may be removed permanently.
+     *
+     * For other resources, there is no guarantee that requested resources will
+     * be returned after the unavailability interval.  The allocator has no
+     * obligation to re-offer these resources to the prior framework after
+     * the unavailability.
+     * </pre>
+     */
+    org.apache.mesos.Protos.Unavailability getUnavailability();
+    /**
+     * <code>required .mesos.Unavailability unavailability = 5;</code>
+     *
+     * <pre>
+     * This InverseOffer represents a planned unavailability event in the
+     * specified interval.  Any tasks running on the given framework or slave
+     * may be killed when the interval arrives.  Therefore, frameworks should
+     * aim to gracefully terminate tasks prior to the arrival of the interval.
+     *
+     * For reserved resources, the resources are expected to be returned to the
+     * framework after the unavailability interval.  This is an expectation,
+     * not a guarantee.  For example, if the unavailability duration is not set,
+     * the resources may be removed permanently.
+     *
+     * For other resources, there is no guarantee that requested resources will
+     * be returned after the unavailability interval.  The allocator has no
+     * obligation to re-offer these resources to the prior framework after
+     * the unavailability.
+     * </pre>
+     */
+    org.apache.mesos.Protos.UnavailabilityOrBuilder getUnavailabilityOrBuilder();
+
+    // repeated .mesos.Resource resources = 6;
+    /**
+     * <code>repeated .mesos.Resource resources = 6;</code>
+     *
+     * <pre>
+     * A list of resources being requested back from the framework,
+     * on the slave identified by `slave_id`.  If no resources are specified
+     * then all resources are being requested back.  For the purpose of
+     * maintenance, this field is always empty (maintenance always requests
+     * all resources back).
+     * </pre>
+     */
+    java.util.List<org.apache.mesos.Protos.Resource> 
+        getResourcesList();
+    /**
+     * <code>repeated .mesos.Resource resources = 6;</code>
+     *
+     * <pre>
+     * A list of resources being requested back from the framework,
+     * on the slave identified by `slave_id`.  If no resources are specified
+     * then all resources are being requested back.  For the purpose of
+     * maintenance, this field is always empty (maintenance always requests
+     * all resources back).
+     * </pre>
+     */
+    org.apache.mesos.Protos.Resource getResources(int index);
+    /**
+     * <code>repeated .mesos.Resource resources = 6;</code>
+     *
+     * <pre>
+     * A list of resources being requested back from the framework,
+     * on the slave identified by `slave_id`.  If no resources are specified
+     * then all resources are being requested back.  For the purpose of
+     * maintenance, this field is always empty (maintenance always requests
+     * all resources back).
+     * </pre>
+     */
+    int getResourcesCount();
+    /**
+     * <code>repeated .mesos.Resource resources = 6;</code>
+     *
+     * <pre>
+     * A list of resources being requested back from the framework,
+     * on the slave identified by `slave_id`.  If no resources are specified
+     * then all resources are being requested back.  For the purpose of
+     * maintenance, this field is always empty (maintenance always requests
+     * all resources back).
+     * </pre>
+     */
+    java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+        getResourcesOrBuilderList();
+    /**
+     * <code>repeated .mesos.Resource resources = 6;</code>
+     *
+     * <pre>
+     * A list of resources being requested back from the framework,
+     * on the slave identified by `slave_id`.  If no resources are specified
+     * then all resources are being requested back.  For the purpose of
+     * maintenance, this field is always empty (maintenance always requests
+     * all resources back).
+     * </pre>
+     */
+    org.apache.mesos.Protos.ResourceOrBuilder getResourcesOrBuilder(
+        int index);
+  }
+  /**
+   * Protobuf type {@code mesos.InverseOffer}
+   *
+   * <pre>
+   **
+   * A request to return some resources occupied by a framework.
+   * </pre>
+   */
+  public static final class InverseOffer extends
+      com.google.protobuf.GeneratedMessage
+      implements InverseOfferOrBuilder {
+    // Use InverseOffer.newBuilder() to construct.
+    private InverseOffer(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private InverseOffer(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final InverseOffer defaultInstance;
+    public static InverseOffer getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public InverseOffer getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private InverseOffer(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              org.apache.mesos.Protos.OfferID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                subBuilder = id_.toBuilder();
+              }
+              id_ = input.readMessage(org.apache.mesos.Protos.OfferID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(id_);
+                id_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+            case 18: {
+              org.apache.mesos.Protos.URL.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = url_.toBuilder();
+              }
+              url_ = input.readMessage(org.apache.mesos.Protos.URL.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(url_);
+                url_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+            case 26: {
+              org.apache.mesos.Protos.FrameworkID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                subBuilder = frameworkId_.toBuilder();
+              }
+              frameworkId_ = input.readMessage(org.apache.mesos.Protos.FrameworkID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(frameworkId_);
+                frameworkId_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000004;
+              break;
+            }
+            case 34: {
+              org.apache.mesos.Protos.SlaveID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                subBuilder = slaveId_.toBuilder();
+              }
+              slaveId_ = input.readMessage(org.apache.mesos.Protos.SlaveID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(slaveId_);
+                slaveId_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000008;
+              break;
+            }
+            case 42: {
+              org.apache.mesos.Protos.Unavailability.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000010) == 0x00000010)) {
+                subBuilder = unavailability_.toBuilder();
+              }
+              unavailability_ = input.readMessage(org.apache.mesos.Protos.Unavailability.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(unavailability_);
+                unavailability_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000010;
+              break;
+            }
+            case 50: {
+              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
+                resources_ = new java.util.ArrayList<org.apache.mesos.Protos.Resource>();
+                mutable_bitField0_ |= 0x00000020;
+              }
+              resources_.add(input.readMessage(org.apache.mesos.Protos.Resource.PARSER, extensionRegistry));
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
+          resources_ = java.util.Collections.unmodifiableList(resources_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_InverseOffer_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_InverseOffer_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.InverseOffer.class, org.apache.mesos.Protos.InverseOffer.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<InverseOffer> PARSER =
+        new com.google.protobuf.AbstractParser<InverseOffer>() {
+      public InverseOffer parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new InverseOffer(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<InverseOffer> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required .mesos.OfferID id = 1;
+    public static final int ID_FIELD_NUMBER = 1;
+    private org.apache.mesos.Protos.OfferID id_;
+    /**
+     * <code>required .mesos.OfferID id = 1;</code>
+     *
+     * <pre>
+     * This is the same OfferID as found in normal offers, which allows
+     * re-use of some of the OfferID-only messages.
+     * </pre>
+     */
+    public boolean hasId() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required .mesos.OfferID id = 1;</code>
+     *
+     * <pre>
+     * This is the same OfferID as found in normal offers, which allows
+     * re-use of some of the OfferID-only messages.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.OfferID getId() {
+      return id_;
+    }
+    /**
+     * <code>required .mesos.OfferID id = 1;</code>
+     *
+     * <pre>
+     * This is the same OfferID as found in normal offers, which allows
+     * re-use of some of the OfferID-only messages.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.OfferIDOrBuilder getIdOrBuilder() {
+      return id_;
+    }
+
+    // optional .mesos.URL url = 2;
+    public static final int URL_FIELD_NUMBER = 2;
+    private org.apache.mesos.Protos.URL url_;
+    /**
+     * <code>optional .mesos.URL url = 2;</code>
+     *
+     * <pre>
+     * URL for reaching the slave running on the host.  This enables some
+     * optimizations as described in MESOS-3012, such as allowing the
+     * scheduler driver to bypass the master and talk directly with a slave.
+     * </pre>
+     */
+    public boolean hasUrl() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional .mesos.URL url = 2;</code>
+     *
+     * <pre>
+     * URL for reaching the slave running on the host.  This enables some
+     * optimizations as described in MESOS-3012, such as allowing the
+     * scheduler driver to bypass the master and talk directly with a slave.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.URL getUrl() {
+      return url_;
+    }
+    /**
+     * <code>optional .mesos.URL url = 2;</code>
+     *
+     * <pre>
+     * URL for reaching the slave running on the host.  This enables some
+     * optimizations as described in MESOS-3012, such as allowing the
+     * scheduler driver to bypass the master and talk directly with a slave.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.URLOrBuilder getUrlOrBuilder() {
+      return url_;
+    }
+
+    // required .mesos.FrameworkID framework_id = 3;
+    public static final int FRAMEWORK_ID_FIELD_NUMBER = 3;
+    private org.apache.mesos.Protos.FrameworkID frameworkId_;
+    /**
+     * <code>required .mesos.FrameworkID framework_id = 3;</code>
+     *
+     * <pre>
+     * The framework that should release its resources.
+     * If no specifics are provided (i.e. which slave), all the framework's
+     * resources are requested back.
+     * </pre>
+     */
+    public boolean hasFrameworkId() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>required .mesos.FrameworkID framework_id = 3;</code>
+     *
+     * <pre>
+     * The framework that should release its resources.
+     * If no specifics are provided (i.e. which slave), all the framework's
+     * resources are requested back.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.FrameworkID getFrameworkId() {
+      return frameworkId_;
+    }
+    /**
+     * <code>required .mesos.FrameworkID framework_id = 3;</code>
+     *
+     * <pre>
+     * The framework that should release its resources.
+     * If no specifics are provided (i.e. which slave), all the framework's
+     * resources are requested back.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.FrameworkIDOrBuilder getFrameworkIdOrBuilder() {
+      return frameworkId_;
+    }
+
+    // optional .mesos.SlaveID slave_id = 4;
+    public static final int SLAVE_ID_FIELD_NUMBER = 4;
+    private org.apache.mesos.Protos.SlaveID slaveId_;
+    /**
+     * <code>optional .mesos.SlaveID slave_id = 4;</code>
+     *
+     * <pre>
+     * Specified if the resources need to be released from a particular slave.
+     * All the framework's resources on this slave are requested back,
+     * unless further qualified by the `resources` field.
+     * </pre>
+     */
+    public boolean hasSlaveId() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional .mesos.SlaveID slave_id = 4;</code>
+     *
+     * <pre>
+     * Specified if the resources need to be released from a particular slave.
+     * All the framework's resources on this slave are requested back,
+     * unless further qualified by the `resources` field.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.SlaveID getSlaveId() {
+      return slaveId_;
+    }
+    /**
+     * <code>optional .mesos.SlaveID slave_id = 4;</code>
+     *
+     * <pre>
+     * Specified if the resources need to be released from a particular slave.
+     * All the framework's resources on this slave are requested back,
+     * unless further qualified by the `resources` field.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.SlaveIDOrBuilder getSlaveIdOrBuilder() {
+      return slaveId_;
+    }
+
+    // required .mesos.Unavailability unavailability = 5;
+    public static final int UNAVAILABILITY_FIELD_NUMBER = 5;
+    private org.apache.mesos.Protos.Unavailability unavailability_;
+    /**
+     * <code>required .mesos.Unavailability unavailability = 5;</code>
+     *
+     * <pre>
+     * This InverseOffer represents a planned unavailability event in the
+     * specified interval.  Any tasks running on the given framework or slave
+     * may be killed when the interval arrives.  Therefore, frameworks should
+     * aim to gracefully terminate tasks prior to the arrival of the interval.
+     *
+     * For reserved resources, the resources are expected to be returned to the
+     * framework after the unavailability interval.  This is an expectation,
+     * not a guarantee.  For example, if the unavailability duration is not set,
+     * the resources may be removed permanently.
+     *
+     * For other resources, there is no guarantee that requested resources will
+     * be returned after the unavailability interval.  The allocator has no
+     * obligation to re-offer these resources to the prior framework after
+     * the unavailability.
+     * </pre>
+     */
+    public boolean hasUnavailability() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>required .mesos.Unavailability unavailability = 5;</code>
+     *
+     * <pre>
+     * This InverseOffer represents a planned unavailability event in the
+     * specified interval.  Any tasks running on the given framework or slave
+     * may be killed when the interval arrives.  Therefore, frameworks should
+     * aim to gracefully terminate tasks prior to the arrival of the interval.
+     *
+     * For reserved resources, the resources are expected to be returned to the
+     * framework after the unavailability interval.  This is an expectation,
+     * not a guarantee.  For example, if the unavailability duration is not set,
+     * the resources may be removed permanently.
+     *
+     * For other resources, there is no guarantee that requested resources will
+     * be returned after the unavailability interval.  The allocator has no
+     * obligation to re-offer these resources to the prior framework after
+     * the unavailability.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.Unavailability getUnavailability() {
+      return unavailability_;
+    }
+    /**
+     * <code>required .mesos.Unavailability unavailability = 5;</code>
+     *
+     * <pre>
+     * This InverseOffer represents a planned unavailability event in the
+     * specified interval.  Any tasks running on the given framework or slave
+     * may be killed when the interval arrives.  Therefore, frameworks should
+     * aim to gracefully terminate tasks prior to the arrival of the interval.
+     *
+     * For reserved resources, the resources are expected to be returned to the
+     * framework after the unavailability interval.  This is an expectation,
+     * not a guarantee.  For example, if the unavailability duration is not set,
+     * the resources may be removed permanently.
+     *
+     * For other resources, there is no guarantee that requested resources will
+     * be returned after the unavailability interval.  The allocator has no
+     * obligation to re-offer these resources to the prior framework after
+     * the unavailability.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.UnavailabilityOrBuilder getUnavailabilityOrBuilder() {
+      return unavailability_;
+    }
+
+    // repeated .mesos.Resource resources = 6;
+    public static final int RESOURCES_FIELD_NUMBER = 6;
+    private java.util.List<org.apache.mesos.Protos.Resource> resources_;
+    /**
+     * <code>repeated .mesos.Resource resources = 6;</code>
+     *
+     * <pre>
+     * A list of resources being requested back from the framework,
+     * on the slave identified by `slave_id`.  If no resources are specified
+     * then all resources are being requested back.  For the purpose of
+     * maintenance, this field is always empty (maintenance always requests
+     * all resources back).
+     * </pre>
+     */
+    public java.util.List<org.apache.mesos.Protos.Resource> getResourcesList() {
+      return resources_;
+    }
+    /**
+     * <code>repeated .mesos.Resource resources = 6;</code>
+     *
+     * <pre>
+     * A list of resources being requested back from the framework,
+     * on the slave identified by `slave_id`.  If no resources are specified
+     * then all resources are being requested back.  For the purpose of
+     * maintenance, this field is always empty (maintenance always requests
+     * all resources back).
+     * </pre>
+     */
+    public java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+        getResourcesOrBuilderList() {
+      return resources_;
+    }
+    /**
+     * <code>repeated .mesos.Resource resources = 6;</code>
+     *
+     * <pre>
+     * A list of resources being requested back from the framework,
+     * on the slave identified by `slave_id`.  If no resources are specified
+     * then all resources are being requested back.  For the purpose of
+     * maintenance, this field is always empty (maintenance always requests
+     * all resources back).
+     * </pre>
+     */
+    public int getResourcesCount() {
+      return resources_.size();
+    }
+    /**
+     * <code>repeated .mesos.Resource resources = 6;</code>
+     *
+     * <pre>
+     * A list of resources being requested back from the framework,
+     * on the slave identified by `slave_id`.  If no resources are specified
+     * then all resources are being requested back.  For the purpose of
+     * maintenance, this field is always empty (maintenance always requests
+     * all resources back).
+     * </pre>
+     */
+    public org.apache.mesos.Protos.Resource getResources(int index) {
+      return resources_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.Resource resources = 6;</code>
+     *
+     * <pre>
+     * A list of resources being requested back from the framework,
+     * on the slave identified by `slave_id`.  If no resources are specified
+     * then all resources are being requested back.  For the purpose of
+     * maintenance, this field is always empty (maintenance always requests
+     * all resources back).
+     * </pre>
+     */
+    public org.apache.mesos.Protos.ResourceOrBuilder getResourcesOrBuilder(
+        int index) {
+      return resources_.get(index);
+    }
+
+    private void initFields() {
+      id_ = org.apache.mesos.Protos.OfferID.getDefaultInstance();
+      url_ = org.apache.mesos.Protos.URL.getDefaultInstance();
+      frameworkId_ = org.apache.mesos.Protos.FrameworkID.getDefaultInstance();
+      slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+      unavailability_ = org.apache.mesos.Protos.Unavailability.getDefaultInstance();
+      resources_ = java.util.Collections.emptyList();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasId()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasFrameworkId()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasUnavailability()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!getId().isInitialized()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (hasUrl()) {
+        if (!getUrl().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (!getFrameworkId().isInitialized()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (hasSlaveId()) {
+        if (!getSlaveId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (!getUnavailability().isInitialized()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      for (int i = 0; i < getResourcesCount(); i++) {
+        if (!getResources(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeMessage(1, id_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(2, url_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeMessage(3, frameworkId_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeMessage(4, slaveId_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeMessage(5, unavailability_);
+      }
+      for (int i = 0; i < resources_.size(); i++) {
+        output.writeMessage(6, resources_.get(i));
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, id_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, url_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, frameworkId_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, slaveId_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(5, unavailability_);
+      }
+      for (int i = 0; i < resources_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(6, resources_.get(i));
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.InverseOffer parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.InverseOffer parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.InverseOffer parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.InverseOffer parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.InverseOffer parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.InverseOffer parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.InverseOffer parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.InverseOffer parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.InverseOffer parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.InverseOffer parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.InverseOffer prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.InverseOffer}
+     *
+     * <pre>
+     **
+     * A request to return some resources occupied by a framework.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.InverseOfferOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_InverseOffer_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_InverseOffer_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.InverseOffer.class, org.apache.mesos.Protos.InverseOffer.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.InverseOffer.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getIdFieldBuilder();
+          getUrlFieldBuilder();
+          getFrameworkIdFieldBuilder();
+          getSlaveIdFieldBuilder();
+          getUnavailabilityFieldBuilder();
+          getResourcesFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (idBuilder_ == null) {
+          id_ = org.apache.mesos.Protos.OfferID.getDefaultInstance();
+        } else {
+          idBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (urlBuilder_ == null) {
+          url_ = org.apache.mesos.Protos.URL.getDefaultInstance();
+        } else {
+          urlBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        if (frameworkIdBuilder_ == null) {
+          frameworkId_ = org.apache.mesos.Protos.FrameworkID.getDefaultInstance();
+        } else {
+          frameworkIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        if (slaveIdBuilder_ == null) {
+          slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+        } else {
+          slaveIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        if (unavailabilityBuilder_ == null) {
+          unavailability_ = org.apache.mesos.Protos.Unavailability.getDefaultInstance();
+        } else {
+          unavailabilityBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        if (resourcesBuilder_ == null) {
+          resources_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000020);
+        } else {
+          resourcesBuilder_.clear();
+        }
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_InverseOffer_descriptor;
+      }
+
+      public org.apache.mesos.Protos.InverseOffer getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.InverseOffer.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.InverseOffer build() {
+        org.apache.mesos.Protos.InverseOffer result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.InverseOffer buildPartial() {
+        org.apache.mesos.Protos.InverseOffer result = new org.apache.mesos.Protos.InverseOffer(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        if (idBuilder_ == null) {
+          result.id_ = id_;
+        } else {
+          result.id_ = idBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (urlBuilder_ == null) {
+          result.url_ = url_;
+        } else {
+          result.url_ = urlBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        if (frameworkIdBuilder_ == null) {
+          result.frameworkId_ = frameworkId_;
+        } else {
+          result.frameworkId_ = frameworkIdBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        if (slaveIdBuilder_ == null) {
+          result.slaveId_ = slaveId_;
+        } else {
+          result.slaveId_ = slaveIdBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        if (unavailabilityBuilder_ == null) {
+          result.unavailability_ = unavailability_;
+        } else {
+          result.unavailability_ = unavailabilityBuilder_.build();
+        }
+        if (resourcesBuilder_ == null) {
+          if (((bitField0_ & 0x00000020) == 0x00000020)) {
+            resources_ = java.util.Collections.unmodifiableList(resources_);
+            bitField0_ = (bitField0_ & ~0x00000020);
+          }
+          result.resources_ = resources_;
+        } else {
+          result.resources_ = resourcesBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.InverseOffer) {
+          return mergeFrom((org.apache.mesos.Protos.InverseOffer)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.InverseOffer other) {
+        if (other == org.apache.mesos.Protos.InverseOffer.getDefaultInstance()) return this;
+        if (other.hasId()) {
+          mergeId(other.getId());
+        }
+        if (other.hasUrl()) {
+          mergeUrl(other.getUrl());
+        }
+        if (other.hasFrameworkId()) {
+          mergeFrameworkId(other.getFrameworkId());
+        }
+        if (other.hasSlaveId()) {
+          mergeSlaveId(other.getSlaveId());
+        }
+        if (other.hasUnavailability()) {
+          mergeUnavailability(other.getUnavailability());
+        }
+        if (resourcesBuilder_ == null) {
+          if (!other.resources_.isEmpty()) {
+            if (resources_.isEmpty()) {
+              resources_ = other.resources_;
+              bitField0_ = (bitField0_ & ~0x00000020);
+            } else {
+              ensureResourcesIsMutable();
+              resources_.addAll(other.resources_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.resources_.isEmpty()) {
+            if (resourcesBuilder_.isEmpty()) {
+              resourcesBuilder_.dispose();
+              resourcesBuilder_ = null;
+              resources_ = other.resources_;
+              bitField0_ = (bitField0_ & ~0x00000020);
+              resourcesBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getResourcesFieldBuilder() : null;
+            } else {
+              resourcesBuilder_.addAllMessages(other.resources_);
+            }
+          }
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasId()) {
+          
+          return false;
+        }
+        if (!hasFrameworkId()) {
+          
+          return false;
+        }
+        if (!hasUnavailability()) {
+          
+          return false;
+        }
+        if (!getId().isInitialized()) {
+          
+          return false;
+        }
+        if (hasUrl()) {
+          if (!getUrl().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (!getFrameworkId().isInitialized()) {
+          
+          return false;
+        }
+        if (hasSlaveId()) {
+          if (!getSlaveId().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (!getUnavailability().isInitialized()) {
+          
+          return false;
+        }
+        for (int i = 0; i < getResourcesCount(); i++) {
+          if (!getResources(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.InverseOffer parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.InverseOffer) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required .mesos.OfferID id = 1;
+      private org.apache.mesos.Protos.OfferID id_ = org.apache.mesos.Protos.OfferID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.OfferID, org.apache.mesos.Protos.OfferID.Builder, org.apache.mesos.Protos.OfferIDOrBuilder> idBuilder_;
+      /**
+       * <code>required .mesos.OfferID id = 1;</code>
+       *
+       * <pre>
+       * This is the same OfferID as found in normal offers, which allows
+       * re-use of some of the OfferID-only messages.
+       * </pre>
+       */
+      public boolean hasId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.OfferID id = 1;</code>
+       *
+       * <pre>
+       * This is the same OfferID as found in normal offers, which allows
+       * re-use of some of the OfferID-only messages.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.OfferID getId() {
+        if (idBuilder_ == null) {
+          return id_;
+        } else {
+          return idBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>required .mesos.OfferID id = 1;</code>
+       *
+       * <pre>
+       * This is the same OfferID as found in normal offers, which allows
+       * re-use of some of the OfferID-only messages.
+       * </pre>
+       */
+      public Builder setId(org.apache.mesos.Protos.OfferID value) {
+        if (idBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          id_ = value;
+          onChanged();
+        } else {
+          idBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .mesos.OfferID id = 1;</code>
+       *
+       * <pre>
+       * This is the same OfferID as found in normal offers, which allows
+       * re-use of some of the OfferID-only messages.
+       * </pre>
+       */
+      public Builder setId(
+          org.apache.mesos.Protos.OfferID.Builder builderForValue) {
+        if (idBuilder_ == null) {
+          id_ = builderForValue.build();
+          onChanged();
+        } else {
+          idBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .mesos.OfferID id = 1;</code>
+       *
+       * <pre>
+       * This is the same OfferID as found in normal offers, which allows
+       * re-use of some of the OfferID-only messages.
+       * </pre>
+       */
+      public Builder mergeId(org.apache.mesos.Protos.OfferID value) {
+        if (idBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001) &&
+              id_ != org.apache.mesos.Protos.OfferID.getDefaultInstance()) {
+            id_ =
+              org.apache.mesos.Protos.OfferID.newBuilder(id_).mergeFrom(value).buildPartial();
+          } else {
+            id_ = value;
+          }
+          onChanged();
+        } else {
+          idBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .mesos.OfferID id = 1;</code>
+       *
+       * <pre>
+       * This is the same OfferID as found in normal offers, which allows
+       * re-use of some of the OfferID-only messages.
+       * </pre>
+       */
+      public Builder clearId() {
+        if (idBuilder_ == null) {
+          id_ = org.apache.mesos.Protos.OfferID.getDefaultInstance();
+          onChanged();
+        } else {
+          idBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+      /**
+       * <code>required .mesos.OfferID id = 1;</code>
+       *
+       * <pre>
+       * This is the same OfferID as found in normal offers, which allows
+       * re-use of some of the OfferID-only messages.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.OfferID.Builder getIdBuilder() {
+        bitField0_ |= 0x00000001;
+        onChanged();
+        return getIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>required .mesos.OfferID id = 1;</code>
+       *
+       * <pre>
+       * This is the same OfferID as found in normal offers, which allows
+       * re-use of some of the OfferID-only messages.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.OfferIDOrBuilder getIdOrBuilder() {
+        if (idBuilder_ != null) {
+          return idBuilder_.getMessageOrBuilder();
+        } else {
+          return id_;
+        }
+      }
+      /**
+       * <code>required .mesos.OfferID id = 1;</code>
+       *
+       * <pre>
+       * This is the same OfferID as found in normal offers, which allows
+       * re-use of some of the OfferID-only messages.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.OfferID, org.apache.mesos.Protos.OfferID.Builder, org.apache.mesos.Protos.OfferIDOrBuilder> 
+          getIdFieldBuilder() {
+        if (idBuilder_ == null) {
+          idBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.OfferID, org.apache.mesos.Protos.OfferID.Builder, org.apache.mesos.Protos.OfferIDOrBuilder>(
+                  id_,
+                  getParentForChildren(),
+                  isClean());
+          id_ = null;
+        }
+        return idBuilder_;
+      }
+
+      // optional .mesos.URL url = 2;
+      private org.apache.mesos.Protos.URL url_ = org.apache.mesos.Protos.URL.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.URL, org.apache.mesos.Protos.URL.Builder, org.apache.mesos.Protos.URLOrBuilder> urlBuilder_;
+      /**
+       * <code>optional .mesos.URL url = 2;</code>
+       *
+       * <pre>
+       * URL for reaching the slave running on the host.  This enables some
+       * optimizations as described in MESOS-3012, such as allowing the
+       * scheduler driver to bypass the master and talk directly with a slave.
+       * </pre>
+       */
+      public boolean hasUrl() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.URL url = 2;</code>
+       *
+       * <pre>
+       * URL for reaching the slave running on the host.  This enables some
+       * optimizations as described in MESOS-3012, such as allowing the
+       * scheduler driver to bypass the master and talk directly with a slave.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.URL getUrl() {
+        if (urlBuilder_ == null) {
+          return url_;
+        } else {
+          return urlBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.URL url = 2;</code>
+       *
+       * <pre>
+       * URL for reaching the slave running on the host.  This enables some
+       * optimizations as described in MESOS-3012, such as allowing the
+       * scheduler driver to bypass the master and talk directly with a slave.
+       * </pre>
+       */
+      public Builder setUrl(org.apache.mesos.Protos.URL value) {
+        if (urlBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          url_ = value;
+          onChanged();
+        } else {
+          urlBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.URL url = 2;</code>
+       *
+       * <pre>
+       * URL for reaching the slave running on the host.  This enables some
+       * optimizations as described in MESOS-3012, such as allowing the
+       * scheduler driver to bypass the master and talk directly with a slave.
+       * </pre>
+       */
+      public Builder setUrl(
+          org.apache.mesos.Protos.URL.Builder builderForValue) {
+        if (urlBuilder_ == null) {
+          url_ = builderForValue.build();
+          onChanged();
+        } else {
+          urlBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.URL url = 2;</code>
+       *
+       * <pre>
+       * URL for reaching the slave running on the host.  This enables some
+       * optimizations as described in MESOS-3012, such as allowing the
+       * scheduler driver to bypass the master and talk directly with a slave.
+       * </pre>
+       */
+      public Builder mergeUrl(org.apache.mesos.Protos.URL value) {
+        if (urlBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              url_ != org.apache.mesos.Protos.URL.getDefaultInstance()) {
+            url_ =
+              org.apache.mesos.Protos.URL.newBuilder(url_).mergeFrom(value).buildPartial();
+          } else {
+            url_ = value;
+          }
+          onChanged();
+        } else {
+          urlBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.URL url = 2;</code>
+       *
+       * <pre>
+       * URL for reaching the slave running on the host.  This enables some
+       * optimizations as described in MESOS-3012, such as allowing the
+       * scheduler driver to bypass the master and talk directly with a slave.
+       * </pre>
+       */
+      public Builder clearUrl() {
+        if (urlBuilder_ == null) {
+          url_ = org.apache.mesos.Protos.URL.getDefaultInstance();
+          onChanged();
+        } else {
+          urlBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.URL url = 2;</code>
+       *
+       * <pre>
+       * URL for reaching the slave running on the host.  This enables some
+       * optimizations as described in MESOS-3012, such as allowing the
+       * scheduler driver to bypass the master and talk directly with a slave.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.URL.Builder getUrlBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getUrlFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.URL url = 2;</code>
+       *
+       * <pre>
+       * URL for reaching the slave running on the host.  This enables some
+       * optimizations as described in MESOS-3012, such as allowing the
+       * scheduler driver to bypass the master and talk directly with a slave.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.URLOrBuilder getUrlOrBuilder() {
+        if (urlBuilder_ != null) {
+          return urlBuilder_.getMessageOrBuilder();
+        } else {
+          return url_;
+        }
+      }
+      /**
+       * <code>optional .mesos.URL url = 2;</code>
+       *
+       * <pre>
+       * URL for reaching the slave running on the host.  This enables some
+       * optimizations as described in MESOS-3012, such as allowing the
+       * scheduler driver to bypass the master and talk directly with a slave.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.URL, org.apache.mesos.Protos.URL.Builder, org.apache.mesos.Protos.URLOrBuilder> 
+          getUrlFieldBuilder() {
+        if (urlBuilder_ == null) {
+          urlBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.URL, org.apache.mesos.Protos.URL.Builder, org.apache.mesos.Protos.URLOrBuilder>(
+                  url_,
+                  getParentForChildren(),
+                  isClean());
+          url_ = null;
+        }
+        return urlBuilder_;
+      }
+
+      // required .mesos.FrameworkID framework_id = 3;
+      private org.apache.mesos.Protos.FrameworkID frameworkId_ = org.apache.mesos.Protos.FrameworkID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.FrameworkID, org.apache.mesos.Protos.FrameworkID.Builder, org.apache.mesos.Protos.FrameworkIDOrBuilder> frameworkIdBuilder_;
+      /**
+       * <code>required .mesos.FrameworkID framework_id = 3;</code>
+       *
+       * <pre>
+       * The framework that should release its resources.
+       * If no specifics are provided (i.e. which slave), all the framework's
+       * resources are requested back.
+       * </pre>
+       */
+      public boolean hasFrameworkId() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>required .mesos.FrameworkID framework_id = 3;</code>
+       *
+       * <pre>
+       * The framework that should release its resources.
+       * If no specifics are provided (i.e. which slave), all the framework's
+       * resources are requested back.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.FrameworkID getFrameworkId() {
+        if (frameworkIdBuilder_ == null) {
+          return frameworkId_;
+        } else {
+          return frameworkIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>required .mesos.FrameworkID framework_id = 3;</code>
+       *
+       * <pre>
+       * The framework that should release its resources.
+       * If no specifics are provided (i.e. which slave), all the framework's
+       * resources are requested back.
+       * </pre>
+       */
+      public Builder setFrameworkId(org.apache.mesos.Protos.FrameworkID value) {
+        if (frameworkIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          frameworkId_ = value;
+          onChanged();
+        } else {
+          frameworkIdBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>required .mesos.FrameworkID framework_id = 3;</code>
+       *
+       * <pre>
+       * The framework that should release its resources.
+       * If no specifics are provided (i.e. which slave), all the framework's
+       * resources are requested back.
+       * </pre>
+       */
+      public Builder setFrameworkId(
+          org.apache.mesos.Protos.FrameworkID.Builder builderForValue) {
+        if (frameworkIdBuilder_ == null) {
+          frameworkId_ = builderForValue.build();
+          onChanged();
+        } else {
+          frameworkIdBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>required .mesos.FrameworkID framework_id = 3;</code>
+       *
+       * <pre>
+       * The framework that should release its resources.
+       * If no specifics are provided (i.e. which slave), all the framework's
+       * resources are requested back.
+       * </pre>
+       */
+      public Builder mergeFrameworkId(org.apache.mesos.Protos.FrameworkID value) {
+        if (frameworkIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) == 0x00000004) &&
+              frameworkId_ != org.apache.mesos.Protos.FrameworkID.getDefaultInstance()) {
+            frameworkId_ =
+              org.apache.mesos.Protos.FrameworkID.newBuilder(frameworkId_).mergeFrom(value).buildPartial();
+          } else {
+            frameworkId_ = value;
+          }
+          onChanged();
+        } else {
+          frameworkIdBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>required .mesos.FrameworkID framework_id = 3;</code>
+       *
+       * <pre>
+       * The framework that should release its resources.
+       * If no specifics are provided (i.e. which slave), all the framework's
+       * resources are requested back.
+       * </pre>
+       */
+      public Builder clearFrameworkId() {
+        if (frameworkIdBuilder_ == null) {
+          frameworkId_ = org.apache.mesos.Protos.FrameworkID.getDefaultInstance();
+          onChanged();
+        } else {
+          frameworkIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+      /**
+       * <code>required .mesos.FrameworkID framework_id = 3;</code>
+       *
+       * <pre>
+       * The framework that should release its resources.
+       * If no specifics are provided (i.e. which slave), all the framework's
+       * resources are requested back.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.FrameworkID.Builder getFrameworkIdBuilder() {
+        bitField0_ |= 0x00000004;
+        onChanged();
+        return getFrameworkIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>required .mesos.FrameworkID framework_id = 3;</code>
+       *
+       * <pre>
+       * The framework that should release its resources.
+       * If no specifics are provided (i.e. which slave), all the framework's
+       * resources are requested back.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.FrameworkIDOrBuilder getFrameworkIdOrBuilder() {
+        if (frameworkIdBuilder_ != null) {
+          return frameworkIdBuilder_.getMessageOrBuilder();
+        } else {
+          return frameworkId_;
+        }
+      }
+      /**
+       * <code>required .mesos.FrameworkID framework_id = 3;</code>
+       *
+       * <pre>
+       * The framework that should release its resources.
+       * If no specifics are provided (i.e. which slave), all the framework's
+       * resources are requested back.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.FrameworkID, org.apache.mesos.Protos.FrameworkID.Builder, org.apache.mesos.Protos.FrameworkIDOrBuilder> 
+          getFrameworkIdFieldBuilder() {
+        if (frameworkIdBuilder_ == null) {
+          frameworkIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.FrameworkID, org.apache.mesos.Protos.FrameworkID.Builder, org.apache.mesos.Protos.FrameworkIDOrBuilder>(
+                  frameworkId_,
+                  getParentForChildren(),
+                  isClean());
+          frameworkId_ = null;
+        }
+        return frameworkIdBuilder_;
+      }
+
+      // optional .mesos.SlaveID slave_id = 4;
+      private org.apache.mesos.Protos.SlaveID slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.SlaveID, org.apache.mesos.Protos.SlaveID.Builder, org.apache.mesos.Protos.SlaveIDOrBuilder> slaveIdBuilder_;
+      /**
+       * <code>optional .mesos.SlaveID slave_id = 4;</code>
+       *
+       * <pre>
+       * Specified if the resources need to be released from a particular slave.
+       * All the framework's resources on this slave are requested back,
+       * unless further qualified by the `resources` field.
+       * </pre>
+       */
+      public boolean hasSlaveId() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.SlaveID slave_id = 4;</code>
+       *
+       * <pre>
+       * Specified if the resources need to be released from a particular slave.
+       * All the framework's resources on this slave are requested back,
+       * unless further qualified by the `resources` field.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.SlaveID getSlaveId() {
+        if (slaveIdBuilder_ == null) {
+          return slaveId_;
+        } else {
+          return slaveIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.SlaveID slave_id = 4;</code>
+       *
+       * <pre>
+       * Specified if the resources need to be released from a particular slave.
+       * All the framework's resources on this slave are requested back,
+       * unless further qualified by the `resources` field.
+       * </pre>
+       */
+      public Builder setSlaveId(org.apache.mesos.Protos.SlaveID value) {
+        if (slaveIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          slaveId_ = value;
+          onChanged();
+        } else {
+          slaveIdBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.SlaveID slave_id = 4;</code>
+       *
+       * <pre>
+       * Specified if the resources need to be released from a particular slave.
+       * All the framework's resources on this slave are requested back,
+       * unless further qualified by the `resources` field.
+       * </pre>
+       */
+      public Builder setSlaveId(
+          org.apache.mesos.Protos.SlaveID.Builder builderForValue) {
+        if (slaveIdBuilder_ == null) {
+          slaveId_ = builderForValue.build();
+          onChanged();
+        } else {
+          slaveIdBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.SlaveID slave_id = 4;</code>
+       *
+       * <pre>
+       * Specified if the resources need to be released from a particular slave.
+       * All the framework's resources on this slave are requested back,
+       * unless further qualified by the `resources` field.
+       * </pre>
+       */
+      public Builder mergeSlaveId(org.apache.mesos.Protos.SlaveID value) {
+        if (slaveIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008) &&
+              slaveId_ != org.apache.mesos.Protos.SlaveID.getDefaultInstance()) {
+            slaveId_ =
+              org.apache.mesos.Protos.SlaveID.newBuilder(slaveId_).mergeFrom(value).buildPartial();
+          } else {
+            slaveId_ = value;
+          }
+          onChanged();
+        } else {
+          slaveIdBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.SlaveID slave_id = 4;</code>
+       *
+       * <pre>
+       * Specified if the resources need to be released from a particular slave.
+       * All the framework's resources on this slave are requested back,
+       * unless further qualified by the `resources` field.
+       * </pre>
+       */
+      public Builder clearSlaveId() {
+        if (slaveIdBuilder_ == null) {
+          slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+          onChanged();
+        } else {
+          slaveIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.SlaveID slave_id = 4;</code>
+       *
+       * <pre>
+       * Specified if the resources need to be released from a particular slave.
+       * All the framework's resources on this slave are requested back,
+       * unless further qualified by the `resources` field.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.SlaveID.Builder getSlaveIdBuilder() {
+        bitField0_ |= 0x00000008;
+        onChanged();
+        return getSlaveIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.SlaveID slave_id = 4;</code>
+       *
+       * <pre>
+       * Specified if the resources need to be released from a particular slave.
+       * All the framework's resources on this slave are requested back,
+       * unless further qualified by the `resources` field.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.SlaveIDOrBuilder getSlaveIdOrBuilder() {
+        if (slaveIdBuilder_ != null) {
+          return slaveIdBuilder_.getMessageOrBuilder();
+        } else {
+          return slaveId_;
+        }
+      }
+      /**
+       * <code>optional .mesos.SlaveID slave_id = 4;</code>
+       *
+       * <pre>
+       * Specified if the resources need to be released from a particular slave.
+       * All the framework's resources on this slave are requested back,
+       * unless further qualified by the `resources` field.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.SlaveID, org.apache.mesos.Protos.SlaveID.Builder, org.apache.mesos.Protos.SlaveIDOrBuilder> 
+          getSlaveIdFieldBuilder() {
+        if (slaveIdBuilder_ == null) {
+          slaveIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.SlaveID, org.apache.mesos.Protos.SlaveID.Builder, org.apache.mesos.Protos.SlaveIDOrBuilder>(
+                  slaveId_,
+                  getParentForChildren(),
+                  isClean());
+          slaveId_ = null;
+        }
+        return slaveIdBuilder_;
+      }
+
+      // required .mesos.Unavailability unavailability = 5;
+      private org.apache.mesos.Protos.Unavailability unavailability_ = org.apache.mesos.Protos.Unavailability.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Unavailability, org.apache.mesos.Protos.Unavailability.Builder, org.apache.mesos.Protos.UnavailabilityOrBuilder> unavailabilityBuilder_;
+      /**
+       * <code>required .mesos.Unavailability unavailability = 5;</code>
+       *
+       * <pre>
+       * This InverseOffer represents a planned unavailability event in the
+       * specified interval.  Any tasks running on the given framework or slave
+       * may be killed when the interval arrives.  Therefore, frameworks should
+       * aim to gracefully terminate tasks prior to the arrival of the interval.
+       *
+       * For reserved resources, the resources are expected to be returned to the
+       * framework after the unavailability interval.  This is an expectation,
+       * not a guarantee.  For example, if the unavailability duration is not set,
+       * the resources may be removed permanently.
+       *
+       * For other resources, there is no guarantee that requested resources will
+       * be returned after the unavailability interval.  The allocator has no
+       * obligation to re-offer these resources to the prior framework after
+       * the unavailability.
+       * </pre>
+       */
+      public boolean hasUnavailability() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>required .mesos.Unavailability unavailability = 5;</code>
+       *
+       * <pre>
+       * This InverseOffer represents a planned unavailability event in the
+       * specified interval.  Any tasks running on the given framework or slave
+       * may be killed when the interval arrives.  Therefore, frameworks should
+       * aim to gracefully terminate tasks prior to the arrival of the interval.
+       *
+       * For reserved resources, the resources are expected to be returned to the
+       * framework after the unavailability interval.  This is an expectation,
+       * not a guarantee.  For example, if the unavailability duration is not set,
+       * the resources may be removed permanently.
+       *
+       * For other resources, there is no guarantee that requested resources will
+       * be returned after the unavailability interval.  The allocator has no
+       * obligation to re-offer these resources to the prior framework after
+       * the unavailability.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Unavailability getUnavailability() {
+        if (unavailabilityBuilder_ == null) {
+          return unavailability_;
+        } else {
+          return unavailabilityBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>required .mesos.Unavailability unavailability = 5;</code>
+       *
+       * <pre>
+       * This InverseOffer represents a planned unavailability event in the
+       * specified interval.  Any tasks running on the given framework or slave
+       * may be killed when the interval arrives.  Therefore, frameworks should
+       * aim to gracefully terminate tasks prior to the arrival of the interval.
+       *
+       * For reserved resources, the resources are expected to be returned to the
+       * framework after the unavailability interval.  This is an expectation,
+       * not a guarantee.  For example, if the unavailability duration is not set,
+       * the resources may be removed permanently.
+       *
+       * For other resources, there is no guarantee that requested resources will
+       * be returned after the unavailability interval.  The allocator has no
+       * obligation to re-offer these resources to the prior framework after
+       * the unavailability.
+       * </pre>
+       */
+      public Builder setUnavailability(org.apache.mesos.Protos.Unavailability value) {
+        if (unavailabilityBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          unavailability_ = value;
+          onChanged();
+        } else {
+          unavailabilityBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>required .mesos.Unavailability unavailability = 5;</code>
+       *
+       * <pre>
+       * This InverseOffer represents a planned unavailability event in the
+       * specified interval.  Any tasks running on the given framework or slave
+       * may be killed when the interval arrives.  Therefore, frameworks should
+       * aim to gracefully terminate tasks prior to the arrival of the interval.
+       *
+       * For reserved resources, the resources are expected to be returned to the
+       * framework after the unavailability interval.  This is an expectation,
+       * not a guarantee.  For example, if the unavailability duration is not set,
+       * the resources may be removed permanently.
+       *
+       * For other resources, there is no guarantee that requested resources will
+       * be returned after the unavailability interval.  The allocator has no
+       * obligation to re-offer these resources to the prior framework after
+       * the unavailability.
+       * </pre>
+       */
+      public Builder setUnavailability(
+          org.apache.mesos.Protos.Unavailability.Builder builderForValue) {
+        if (unavailabilityBuilder_ == null) {
+          unavailability_ = builderForValue.build();
+          onChanged();
+        } else {
+          unavailabilityBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>required .mesos.Unavailability unavailability = 5;</code>
+       *
+       * <pre>
+       * This InverseOffer represents a planned unavailability event in the
+       * specified interval.  Any tasks running on the given framework or slave
+       * may be killed when the interval arrives.  Therefore, frameworks should
+       * aim to gracefully terminate tasks prior to the arrival of the interval.
+       *
+       * For reserved resources, the resources are expected to be returned to the
+       * framework after the unavailability interval.  This is an expectation,
+       * not a guarantee.  For example, if the unavailability duration is not set,
+       * the resources may be removed permanently.
+       *
+       * For other resources, there is no guarantee that requested resources will
+       * be returned after the unavailability interval.  The allocator has no
+       * obligation to re-offer these resources to the prior framework after
+       * the unavailability.
+       * </pre>
+       */
+      public Builder mergeUnavailability(org.apache.mesos.Protos.Unavailability value) {
+        if (unavailabilityBuilder_ == null) {
+          if (((bitField0_ & 0x00000010) == 0x00000010) &&
+              unavailability_ != org.apache.mesos.Protos.Unavailability.getDefaultInstance()) {
+            unavailability_ =
+              org.apache.mesos.Protos.Unavailability.newBuilder(unavailability_).mergeFrom(value).buildPartial();
+          } else {
+            unavailability_ = value;
+          }
+          onChanged();
+        } else {
+          unavailabilityBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>required .mesos.Unavailability unavailability = 5;</code>
+       *
+       * <pre>
+       * This InverseOffer represents a planned unavailability event in the
+       * specified interval.  Any tasks running on the given framework or slave
+       * may be killed when the interval arrives.  Therefore, frameworks should
+       * aim to gracefully terminate tasks prior to the arrival of the interval.
+       *
+       * For reserved resources, the resources are expected to be returned to the
+       * framework after the unavailability interval.  This is an expectation,
+       * not a guarantee.  For example, if the unavailability duration is not set,
+       * the resources may be removed permanently.
+       *
+       * For other resources, there is no guarantee that requested resources will
+       * be returned after the unavailability interval.  The allocator has no
+       * obligation to re-offer these resources to the prior framework after
+       * the unavailability.
+       * </pre>
+       */
+      public Builder clearUnavailability() {
+        if (unavailabilityBuilder_ == null) {
+          unavailability_ = org.apache.mesos.Protos.Unavailability.getDefaultInstance();
+          onChanged();
+        } else {
+          unavailabilityBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+      /**
+       * <code>required .mesos.Unavailability unavailability = 5;</code>
+       *
+       * <pre>
+       * This InverseOffer represents a planned unavailability event in the
+       * specified interval.  Any tasks running on the given framework or slave
+       * may be killed when the interval arrives.  Therefore, frameworks should
+       * aim to gracefully terminate tasks prior to the arrival of the interval.
+       *
+       * For reserved resources, the resources are expected to be returned to the
+       * framework after the unavailability interval.  This is an expectation,
+       * not a guarantee.  For example, if the unavailability duration is not set,
+       * the resources may be removed permanently.
+       *
+       * For other resources, there is no guarantee that requested resources will
+       * be returned after the unavailability interval.  The allocator has no
+       * obligation to re-offer these resources to the prior framework after
+       * the unavailability.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Unavailability.Builder getUnavailabilityBuilder() {
+        bitField0_ |= 0x00000010;
+        onChanged();
+        return getUnavailabilityFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>required .mesos.Unavailability unavailability = 5;</code>
+       *
+       * <pre>
+       * This InverseOffer represents a planned unavailability event in the
+       * specified interval.  Any tasks running on the given framework or slave
+       * may be killed when the interval arrives.  Therefore, frameworks should
+       * aim to gracefully terminate tasks prior to the arrival of the interval.
+       *
+       * For reserved resources, the resources are expected to be returned to the
+       * framework after the unavailability interval.  This is an expectation,
+       * not a guarantee.  For example, if the unavailability duration is not set,
+       * the resources may be removed permanently.
+       *
+       * For other resources, there is no guarantee that requested resources will
+       * be returned after the unavailability interval.  The allocator has no
+       * obligation to re-offer these resources to the prior framework after
+       * the unavailability.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.UnavailabilityOrBuilder getUnavailabilityOrBuilder() {
+        if (unavailabilityBuilder_ != null) {
+          return unavailabilityBuilder_.getMessageOrBuilder();
+        } else {
+          return unavailability_;
+        }
+      }
+      /**
+       * <code>required .mesos.Unavailability unavailability = 5;</code>
+       *
+       * <pre>
+       * This InverseOffer represents a planned unavailability event in the
+       * specified interval.  Any tasks running on the given framework or slave
+       * may be killed when the interval arrives.  Therefore, frameworks should
+       * aim to gracefully terminate tasks prior to the arrival of the interval.
+       *
+       * For reserved resources, the resources are expected to be returned to the
+       * framework after the unavailability interval.  This is an expectation,
+       * not a guarantee.  For example, if the unavailability duration is not set,
+       * the resources may be removed permanently.
+       *
+       * For other resources, there is no guarantee that requested resources will
+       * be returned after the unavailability interval.  The allocator has no
+       * obligation to re-offer these resources to the prior framework after
+       * the unavailability.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Unavailability, org.apache.mesos.Protos.Unavailability.Builder, org.apache.mesos.Protos.UnavailabilityOrBuilder> 
+          getUnavailabilityFieldBuilder() {
+        if (unavailabilityBuilder_ == null) {
+          unavailabilityBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Unavailability, org.apache.mesos.Protos.Unavailability.Builder, org.apache.mesos.Protos.UnavailabilityOrBuilder>(
+                  unavailability_,
+                  getParentForChildren(),
+                  isClean());
+          unavailability_ = null;
+        }
+        return unavailabilityBuilder_;
+      }
+
+      // repeated .mesos.Resource resources = 6;
+      private java.util.List<org.apache.mesos.Protos.Resource> resources_ =
+        java.util.Collections.emptyList();
+      private void ensureResourcesIsMutable() {
+        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
+          resources_ = new java.util.ArrayList<org.apache.mesos.Protos.Resource>(resources_);
+          bitField0_ |= 0x00000020;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder> resourcesBuilder_;
+
+      /**
+       * <code>repeated .mesos.Resource resources = 6;</code>
+       *
+       * <pre>
+       * A list of resources being requested back from the framework,
+       * on the slave identified by `slave_id`.  If no resources are specified
+       * then all resources are being requested back.  For the purpose of
+       * maintenance, this field is always empty (maintenance always requests
+       * all resources back).
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.Protos.Resource> getResourcesList() {
+        if (resourcesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(resources_);
+        } else {
+          return resourcesBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 6;</code>
+       *
+       * <pre>
+       * A list of resources being requested back from the framework,
+       * on the slave identified by `slave_id`.  If no resources are specified
+       * then all resources are being requested back.  For the purpose of
+       * maintenance, this field is always empty (maintenance always requests
+       * all resources back).
+       * </pre>
+       */
+      public int getResourcesCount() {
+        if (resourcesBuilder_ == null) {
+          return resources_.size();
+        } else {
+          return resourcesBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 6;</code>
+       *
+       * <pre>
+       * A list of resources being requested back from the framework,
+       * on the slave identified by `slave_id`.  If no resources are specified
+       * then all resources are being requested back.  For the purpose of
+       * maintenance, this field is always empty (maintenance always requests
+       * all resources back).
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Resource getResources(int index) {
+        if (resourcesBuilder_ == null) {
+          return resources_.get(index);
+        } else {
+          return resourcesBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 6;</code>
+       *
+       * <pre>
+       * A list of resources being requested back from the framework,
+       * on the slave identified by `slave_id`.  If no resources are specified
+       * then all resources are being requested back.  For the purpose of
+       * maintenance, this field is always empty (maintenance always requests
+       * all resources back).
+       * </pre>
+       */
+      public Builder setResources(
+          int index, org.apache.mesos.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.set(index, value);
+          onChanged();
+        } else {
+          resourcesBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 6;</code>
+       *
+       * <pre>
+       * A list of resources being requested back from the framework,
+       * on the slave identified by `slave_id`.  If no resources are specified
+       * then all resources are being requested back.  For the purpose of
+       * maintenance, this field is always empty (maintenance always requests
+       * all resources back).
+       * </pre>
+       */
+      public Builder setResources(
+          int index, org.apache.mesos.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 6;</code>
+       *
+       * <pre>
+       * A list of resources being requested back from the framework,
+       * on the slave identified by `slave_id`.  If no resources are specified
+       * then all resources are being requested back.  For the purpose of
+       * maintenance, this field is always empty (maintenance always requests
+       * all resources back).
+       * </pre>
+       */
+      public Builder addResources(org.apache.mesos.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.add(value);
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 6;</code>
+       *
+       * <pre>
+       * A list of resources being requested back from the framework,
+       * on the slave identified by `slave_id`.  If no resources are specified
+       * then all resources are being requested back.  For the purpose of
+       * maintenance, this field is always empty (maintenance always requests
+       * all resources back).
+       * </pre>
+       */
+      public Builder addResources(
+          int index, org.apache.mesos.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.add(index, value);
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 6;</code>
+       *
+       * <pre>
+       * A list of resources being requested back from the framework,
+       * on the slave identified by `slave_id`.  If no resources are specified
+       * then all resources are being requested back.  For the purpose of
+       * maintenance, this field is always empty (maintenance always requests
+       * all resources back).
+       * </pre>
+       */
+      public Builder addResources(
+          org.apache.mesos.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.add(builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 6;</code>
+       *
+       * <pre>
+       * A list of resources being requested back from the framework,
+       * on the slave identified by `slave_id`.  If no resources are specified
+       * then all resources are being requested back.  For the purpose of
+       * maintenance, this field is always empty (maintenance always requests
+       * all resources back).
+       * </pre>
+       */
+      public Builder addResources(
+          int index, org.apache.mesos.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 6;</code>
+       *
+       * <pre>
+       * A list of resources being requested back from the framework,
+       * on the slave identified by `slave_id`.  If no resources are specified
+       * then all resources are being requested back.  For the purpose of
+       * maintenance, this field is always empty (maintenance always requests
+       * all resources back).
+       * </pre>
+       */
+      public Builder addAllResources(
+          java.lang.Iterable<? extends org.apache.mesos.Protos.Resource> values) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          super.addAll(values, resources_);
+          onChanged();
+        } else {
+          resourcesBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 6;</code>
+       *
+       * <pre>
+       * A list of resources being requested back from the framework,
+       * on the slave identified by `slave_id`.  If no resources are specified
+       * then all resources are being requested back.  For the purpose of
+       * maintenance, this field is always empty (maintenance always requests
+       * all resources back).
+       * </pre>
+       */
+      public Builder clearResources() {
+        if (resourcesBuilder_ == null) {
+          resources_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000020);
+          onChanged();
+        } else {
+          resourcesBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 6;</code>
+       *
+       * <pre>
+       * A list of resources being requested back from the framework,
+       * on the slave identified by `slave_id`.  If no resources are specified
+       * then all resources are being requested back.  For the purpose of
+       * maintenance, this field is always empty (maintenance always requests
+       * all resources back).
+       * </pre>
+       */
+      public Builder removeResources(int index) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.remove(index);
+          onChanged();
+        } else {
+          resourcesBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 6;</code>
+       *
+       * <pre>
+       * A list of resources being requested back from the framework,
+       * on the slave identified by `slave_id`.  If no resources are specified
+       * then all resources are being requested back.  For the purpose of
+       * maintenance, this field is always empty (maintenance always requests
+       * all resources back).
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Resource.Builder getResourcesBuilder(
+          int index) {
+        return getResourcesFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 6;</code>
+       *
+       * <pre>
+       * A list of resources being requested back from the framework,
+       * on the slave identified by `slave_id`.  If no resources are specified
+       * then all resources are being requested back.  For the purpose of
+       * maintenance, this field is always empty (maintenance always requests
+       * all resources back).
+       * </pre>
+       */
+      public org.apache.mesos.Protos.ResourceOrBuilder getResourcesOrBuilder(
+          int index) {
+        if (resourcesBuilder_ == null) {
+          return resources_.get(index);  } else {
+          return resourcesBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 6;</code>
+       *
+       * <pre>
+       * A list of resources being requested back from the framework,
+       * on the slave identified by `slave_id`.  If no resources are specified
+       * then all resources are being requested back.  For the purpose of
+       * maintenance, this field is always empty (maintenance always requests
+       * all resources back).
+       * </pre>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+           getResourcesOrBuilderList() {
+        if (resourcesBuilder_ != null) {
+          return resourcesBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(resources_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 6;</code>
+       *
+       * <pre>
+       * A list of resources being requested back from the framework,
+       * on the slave identified by `slave_id`.  If no resources are specified
+       * then all resources are being requested back.  For the purpose of
+       * maintenance, this field is always empty (maintenance always requests
+       * all resources back).
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Resource.Builder addResourcesBuilder() {
+        return getResourcesFieldBuilder().addBuilder(
+            org.apache.mesos.Protos.Resource.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 6;</code>
+       *
+       * <pre>
+       * A list of resources being requested back from the framework,
+       * on the slave identified by `slave_id`.  If no resources are specified
+       * then all resources are being requested back.  For the purpose of
+       * maintenance, this field is always empty (maintenance always requests
+       * all resources back).
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Resource.Builder addResourcesBuilder(
+          int index) {
+        return getResourcesFieldBuilder().addBuilder(
+            index, org.apache.mesos.Protos.Resource.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 6;</code>
+       *
+       * <pre>
+       * A list of resources being requested back from the framework,
+       * on the slave identified by `slave_id`.  If no resources are specified
+       * then all resources are being requested back.  For the purpose of
+       * maintenance, this field is always empty (maintenance always requests
+       * all resources back).
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.Protos.Resource.Builder> 
+           getResourcesBuilderList() {
+        return getResourcesFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder> 
+          getResourcesFieldBuilder() {
+        if (resourcesBuilder_ == null) {
+          resourcesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder>(
+                  resources_,
+                  ((bitField0_ & 0x00000020) == 0x00000020),
+                  getParentForChildren(),
+                  isClean());
+          resources_ = null;
+        }
+        return resourcesBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.InverseOffer)
+    }
+
+    static {
+      defaultInstance = new InverseOffer(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.InverseOffer)
+  }
+
+  public interface TaskInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string name = 1;
+    /**
+     * <code>required string name = 1;</code>
+     */
+    boolean hasName();
+    /**
+     * <code>required string name = 1;</code>
+     */
+    java.lang.String getName();
+    /**
+     * <code>required string name = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getNameBytes();
+
+    // required .mesos.TaskID task_id = 2;
+    /**
+     * <code>required .mesos.TaskID task_id = 2;</code>
+     */
+    boolean hasTaskId();
+    /**
+     * <code>required .mesos.TaskID task_id = 2;</code>
+     */
+    org.apache.mesos.Protos.TaskID getTaskId();
+    /**
+     * <code>required .mesos.TaskID task_id = 2;</code>
+     */
+    org.apache.mesos.Protos.TaskIDOrBuilder getTaskIdOrBuilder();
+
+    // required .mesos.SlaveID slave_id = 3;
+    /**
+     * <code>required .mesos.SlaveID slave_id = 3;</code>
+     */
+    boolean hasSlaveId();
+    /**
+     * <code>required .mesos.SlaveID slave_id = 3;</code>
+     */
+    org.apache.mesos.Protos.SlaveID getSlaveId();
+    /**
+     * <code>required .mesos.SlaveID slave_id = 3;</code>
+     */
+    org.apache.mesos.Protos.SlaveIDOrBuilder getSlaveIdOrBuilder();
+
+    // repeated .mesos.Resource resources = 4;
+    /**
+     * <code>repeated .mesos.Resource resources = 4;</code>
+     */
+    java.util.List<org.apache.mesos.Protos.Resource> 
+        getResourcesList();
+    /**
+     * <code>repeated .mesos.Resource resources = 4;</code>
+     */
+    org.apache.mesos.Protos.Resource getResources(int index);
+    /**
+     * <code>repeated .mesos.Resource resources = 4;</code>
+     */
+    int getResourcesCount();
+    /**
+     * <code>repeated .mesos.Resource resources = 4;</code>
+     */
+    java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+        getResourcesOrBuilderList();
+    /**
+     * <code>repeated .mesos.Resource resources = 4;</code>
+     */
+    org.apache.mesos.Protos.ResourceOrBuilder getResourcesOrBuilder(
+        int index);
+
+    // optional .mesos.ExecutorInfo executor = 5;
+    /**
+     * <code>optional .mesos.ExecutorInfo executor = 5;</code>
+     */
+    boolean hasExecutor();
+    /**
+     * <code>optional .mesos.ExecutorInfo executor = 5;</code>
+     */
+    org.apache.mesos.Protos.ExecutorInfo getExecutor();
+    /**
+     * <code>optional .mesos.ExecutorInfo executor = 5;</code>
+     */
+    org.apache.mesos.Protos.ExecutorInfoOrBuilder getExecutorOrBuilder();
+
+    // optional .mesos.CommandInfo command = 7;
+    /**
+     * <code>optional .mesos.CommandInfo command = 7;</code>
+     */
+    boolean hasCommand();
+    /**
+     * <code>optional .mesos.CommandInfo command = 7;</code>
+     */
+    org.apache.mesos.Protos.CommandInfo getCommand();
+    /**
+     * <code>optional .mesos.CommandInfo command = 7;</code>
+     */
+    org.apache.mesos.Protos.CommandInfoOrBuilder getCommandOrBuilder();
+
+    // optional .mesos.ContainerInfo container = 9;
+    /**
+     * <code>optional .mesos.ContainerInfo container = 9;</code>
+     *
+     * <pre>
+     * Task provided with a container will launch the container as part
+     * of this task paired with the task's CommandInfo.
+     * </pre>
+     */
+    boolean hasContainer();
+    /**
+     * <code>optional .mesos.ContainerInfo container = 9;</code>
+     *
+     * <pre>
+     * Task provided with a container will launch the container as part
+     * of this task paired with the task's CommandInfo.
+     * </pre>
+     */
+    org.apache.mesos.Protos.ContainerInfo getContainer();
+    /**
+     * <code>optional .mesos.ContainerInfo container = 9;</code>
+     *
+     * <pre>
+     * Task provided with a container will launch the container as part
+     * of this task paired with the task's CommandInfo.
+     * </pre>
+     */
+    org.apache.mesos.Protos.ContainerInfoOrBuilder getContainerOrBuilder();
+
+    // optional .mesos.HealthCheck health_check = 8;
+    /**
+     * <code>optional .mesos.HealthCheck health_check = 8;</code>
+     *
+     * <pre>
+     * A health check for the task. Implemented for executor-less
+     * command-based tasks. For tasks that specify an executor, it is
+     * the executor's responsibility to implement the health checking.
+     * </pre>
+     */
+    boolean hasHealthCheck();
+    /**
+     * <code>optional .mesos.HealthCheck health_check = 8;</code>
+     *
+     * <pre>
+     * A health check for the task. Implemented for executor-less
+     * command-based tasks. For tasks that specify an executor, it is
+     * the executor's responsibility to implement the health checking.
+     * </pre>
+     */
+    org.apache.mesos.Protos.HealthCheck getHealthCheck();
+    /**
+     * <code>optional .mesos.HealthCheck health_check = 8;</code>
+     *
+     * <pre>
+     * A health check for the task. Implemented for executor-less
+     * command-based tasks. For tasks that specify an executor, it is
+     * the executor's responsibility to implement the health checking.
+     * </pre>
+     */
+    org.apache.mesos.Protos.HealthCheckOrBuilder getHealthCheckOrBuilder();
+
+    // optional .mesos.CheckInfo check = 13;
+    /**
+     * <code>optional .mesos.CheckInfo check = 13;</code>
+     *
+     * <pre>
+     * A general check for the task. Implemented for all built-in executors.
+     * For tasks that specify an executor, it is the executor's responsibility
+     * to implement checking support. Executors should (all built-in executors
+     * will) neither interpret nor act on the check's result.
+     *
+     * NOTE: Check support in built-in executors is experimental.
+     *
+     * TODO(alexr): Consider supporting multiple checks per task.
+     * </pre>
+     */
+    boolean hasCheck();
+    /**
+     * <code>optional .mesos.CheckInfo check = 13;</code>
+     *
+     * <pre>
+     * A general check for the task. Implemented for all built-in executors.
+     * For tasks that specify an executor, it is the executor's responsibility
+     * to implement checking support. Executors should (all built-in executors
+     * will) neither interpret nor act on the check's result.
+     *
+     * NOTE: Check support in built-in executors is experimental.
+     *
+     * TODO(alexr): Consider supporting multiple checks per task.
+     * </pre>
+     */
+    org.apache.mesos.Protos.CheckInfo getCheck();
+    /**
+     * <code>optional .mesos.CheckInfo check = 13;</code>
+     *
+     * <pre>
+     * A general check for the task. Implemented for all built-in executors.
+     * For tasks that specify an executor, it is the executor's responsibility
+     * to implement checking support. Executors should (all built-in executors
+     * will) neither interpret nor act on the check's result.
+     *
+     * NOTE: Check support in built-in executors is experimental.
+     *
+     * TODO(alexr): Consider supporting multiple checks per task.
+     * </pre>
+     */
+    org.apache.mesos.Protos.CheckInfoOrBuilder getCheckOrBuilder();
+
+    // optional .mesos.KillPolicy kill_policy = 12;
+    /**
+     * <code>optional .mesos.KillPolicy kill_policy = 12;</code>
+     *
+     * <pre>
+     * A kill policy for the task. Implemented for executor-less
+     * command-based and docker tasks. For tasks that specify an
+     * executor, it is the executor's responsibility to implement
+     * the kill policy.
+     * </pre>
+     */
+    boolean hasKillPolicy();
+    /**
+     * <code>optional .mesos.KillPolicy kill_policy = 12;</code>
+     *
+     * <pre>
+     * A kill policy for the task. Implemented for executor-less
+     * command-based and docker tasks. For tasks that specify an
+     * executor, it is the executor's responsibility to implement
+     * the kill policy.
+     * </pre>
+     */
+    org.apache.mesos.Protos.KillPolicy getKillPolicy();
+    /**
+     * <code>optional .mesos.KillPolicy kill_policy = 12;</code>
+     *
+     * <pre>
+     * A kill policy for the task. Implemented for executor-less
+     * command-based and docker tasks. For tasks that specify an
+     * executor, it is the executor's responsibility to implement
+     * the kill policy.
+     * </pre>
+     */
+    org.apache.mesos.Protos.KillPolicyOrBuilder getKillPolicyOrBuilder();
+
+    // optional bytes data = 6;
+    /**
+     * <code>optional bytes data = 6;</code>
+     */
+    boolean hasData();
+    /**
+     * <code>optional bytes data = 6;</code>
+     */
+    com.google.protobuf.ByteString getData();
+
+    // optional .mesos.Labels labels = 10;
+    /**
+     * <code>optional .mesos.Labels labels = 10;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs which are exposed through
+     * master and slave endpoints. Labels will not be interpreted or
+     * acted upon by Mesos itself. As opposed to the data field, labels
+     * will be kept in memory on master and slave processes. Therefore,
+     * labels should be used to tag tasks with light-weight meta-data.
+     * Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    boolean hasLabels();
+    /**
+     * <code>optional .mesos.Labels labels = 10;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs which are exposed through
+     * master and slave endpoints. Labels will not be interpreted or
+     * acted upon by Mesos itself. As opposed to the data field, labels
+     * will be kept in memory on master and slave processes. Therefore,
+     * labels should be used to tag tasks with light-weight meta-data.
+     * Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    org.apache.mesos.Protos.Labels getLabels();
+    /**
+     * <code>optional .mesos.Labels labels = 10;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs which are exposed through
+     * master and slave endpoints. Labels will not be interpreted or
+     * acted upon by Mesos itself. As opposed to the data field, labels
+     * will be kept in memory on master and slave processes. Therefore,
+     * labels should be used to tag tasks with light-weight meta-data.
+     * Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    org.apache.mesos.Protos.LabelsOrBuilder getLabelsOrBuilder();
+
+    // optional .mesos.DiscoveryInfo discovery = 11;
+    /**
+     * <code>optional .mesos.DiscoveryInfo discovery = 11;</code>
+     *
+     * <pre>
+     * Service discovery information for the task. It is not interpreted
+     * or acted upon by Mesos. It is up to a service discovery system
+     * to use this information as needed and to handle tasks without
+     * service discovery information.
+     * </pre>
+     */
+    boolean hasDiscovery();
+    /**
+     * <code>optional .mesos.DiscoveryInfo discovery = 11;</code>
+     *
+     * <pre>
+     * Service discovery information for the task. It is not interpreted
+     * or acted upon by Mesos. It is up to a service discovery system
+     * to use this information as needed and to handle tasks without
+     * service discovery information.
+     * </pre>
+     */
+    org.apache.mesos.Protos.DiscoveryInfo getDiscovery();
+    /**
+     * <code>optional .mesos.DiscoveryInfo discovery = 11;</code>
+     *
+     * <pre>
+     * Service discovery information for the task. It is not interpreted
+     * or acted upon by Mesos. It is up to a service discovery system
+     * to use this information as needed and to handle tasks without
+     * service discovery information.
+     * </pre>
+     */
+    org.apache.mesos.Protos.DiscoveryInfoOrBuilder getDiscoveryOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.TaskInfo}
+   *
+   * <pre>
+   **
+   * Describes a task. Passed from the scheduler all the way to an
+   * executor (see SchedulerDriver::launchTasks and
+   * Executor::launchTask). Either ExecutorInfo or CommandInfo should be set.
+   * A different executor can be used to launch this task, and subsequent tasks
+   * meant for the same executor can reuse the same ExecutorInfo struct.
+   * </pre>
+   */
+  public static final class TaskInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements TaskInfoOrBuilder {
+    // Use TaskInfo.newBuilder() to construct.
+    private TaskInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private TaskInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final TaskInfo defaultInstance;
+    public static TaskInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public TaskInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private TaskInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              name_ = input.readBytes();
+              break;
+            }
+            case 18: {
+              org.apache.mesos.Protos.TaskID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = taskId_.toBuilder();
+              }
+              taskId_ = input.readMessage(org.apache.mesos.Protos.TaskID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(taskId_);
+                taskId_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+            case 26: {
+              org.apache.mesos.Protos.SlaveID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                subBuilder = slaveId_.toBuilder();
+              }
+              slaveId_ = input.readMessage(org.apache.mesos.Protos.SlaveID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(slaveId_);
+                slaveId_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000004;
+              break;
+            }
+            case 34: {
+              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
+                resources_ = new java.util.ArrayList<org.apache.mesos.Protos.Resource>();
+                mutable_bitField0_ |= 0x00000008;
+              }
+              resources_.add(input.readMessage(org.apache.mesos.Protos.Resource.PARSER, extensionRegistry));
+              break;
+            }
+            case 42: {
+              org.apache.mesos.Protos.ExecutorInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                subBuilder = executor_.toBuilder();
+              }
+              executor_ = input.readMessage(org.apache.mesos.Protos.ExecutorInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(executor_);
+                executor_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000008;
+              break;
+            }
+            case 50: {
+              bitField0_ |= 0x00000200;
+              data_ = input.readBytes();
+              break;
+            }
+            case 58: {
+              org.apache.mesos.Protos.CommandInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000010) == 0x00000010)) {
+                subBuilder = command_.toBuilder();
+              }
+              command_ = input.readMessage(org.apache.mesos.Protos.CommandInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(command_);
+                command_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000010;
+              break;
+            }
+            case 66: {
+              org.apache.mesos.Protos.HealthCheck.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000040) == 0x00000040)) {
+                subBuilder = healthCheck_.toBuilder();
+              }
+              healthCheck_ = input.readMessage(org.apache.mesos.Protos.HealthCheck.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(healthCheck_);
+                healthCheck_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000040;
+              break;
+            }
+            case 74: {
+              org.apache.mesos.Protos.ContainerInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000020) == 0x00000020)) {
+                subBuilder = container_.toBuilder();
+              }
+              container_ = input.readMessage(org.apache.mesos.Protos.ContainerInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(container_);
+                container_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000020;
+              break;
+            }
+            case 82: {
+              org.apache.mesos.Protos.Labels.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000400) == 0x00000400)) {
+                subBuilder = labels_.toBuilder();
+              }
+              labels_ = input.readMessage(org.apache.mesos.Protos.Labels.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(labels_);
+                labels_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000400;
+              break;
+            }
+            case 90: {
+              org.apache.mesos.Protos.DiscoveryInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000800) == 0x00000800)) {
+                subBuilder = discovery_.toBuilder();
+              }
+              discovery_ = input.readMessage(org.apache.mesos.Protos.DiscoveryInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(discovery_);
+                discovery_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000800;
+              break;
+            }
+            case 98: {
+              org.apache.mesos.Protos.KillPolicy.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000100) == 0x00000100)) {
+                subBuilder = killPolicy_.toBuilder();
+              }
+              killPolicy_ = input.readMessage(org.apache.mesos.Protos.KillPolicy.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(killPolicy_);
+                killPolicy_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000100;
+              break;
+            }
+            case 106: {
+              org.apache.mesos.Protos.CheckInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000080) == 0x00000080)) {
+                subBuilder = check_.toBuilder();
+              }
+              check_ = input.readMessage(org.apache.mesos.Protos.CheckInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(check_);
+                check_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000080;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
+          resources_ = java.util.Collections.unmodifiableList(resources_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_TaskInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_TaskInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.TaskInfo.class, org.apache.mesos.Protos.TaskInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<TaskInfo> PARSER =
+        new com.google.protobuf.AbstractParser<TaskInfo>() {
+      public TaskInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new TaskInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<TaskInfo> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string name = 1;
+    public static final int NAME_FIELD_NUMBER = 1;
+    private java.lang.Object name_;
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public boolean hasName() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public java.lang.String getName() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          name_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getNameBytes() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        name_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // required .mesos.TaskID task_id = 2;
+    public static final int TASK_ID_FIELD_NUMBER = 2;
+    private org.apache.mesos.Protos.TaskID taskId_;
+    /**
+     * <code>required .mesos.TaskID task_id = 2;</code>
+     */
+    public boolean hasTaskId() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>required .mesos.TaskID task_id = 2;</code>
+     */
+    public org.apache.mesos.Protos.TaskID getTaskId() {
+      return taskId_;
+    }
+    /**
+     * <code>required .mesos.TaskID task_id = 2;</code>
+     */
+    public org.apache.mesos.Protos.TaskIDOrBuilder getTaskIdOrBuilder() {
+      return taskId_;
+    }
+
+    // required .mesos.SlaveID slave_id = 3;
+    public static final int SLAVE_ID_FIELD_NUMBER = 3;
+    private org.apache.mesos.Protos.SlaveID slaveId_;
+    /**
+     * <code>required .mesos.SlaveID slave_id = 3;</code>
+     */
+    public boolean hasSlaveId() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>required .mesos.SlaveID slave_id = 3;</code>
+     */
+    public org.apache.mesos.Protos.SlaveID getSlaveId() {
+      return slaveId_;
+    }
+    /**
+     * <code>required .mesos.SlaveID slave_id = 3;</code>
+     */
+    public org.apache.mesos.Protos.SlaveIDOrBuilder getSlaveIdOrBuilder() {
+      return slaveId_;
+    }
+
+    // repeated .mesos.Resource resources = 4;
+    public static final int RESOURCES_FIELD_NUMBER = 4;
+    private java.util.List<org.apache.mesos.Protos.Resource> resources_;
+    /**
+     * <code>repeated .mesos.Resource resources = 4;</code>
+     */
+    public java.util.List<org.apache.mesos.Protos.Resource> getResourcesList() {
+      return resources_;
+    }
+    /**
+     * <code>repeated .mesos.Resource resources = 4;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+        getResourcesOrBuilderList() {
+      return resources_;
+    }
+    /**
+     * <code>repeated .mesos.Resource resources = 4;</code>
+     */
+    public int getResourcesCount() {
+      return resources_.size();
+    }
+    /**
+     * <code>repeated .mesos.Resource resources = 4;</code>
+     */
+    public org.apache.mesos.Protos.Resource getResources(int index) {
+      return resources_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.Resource resources = 4;</code>
+     */
+    public org.apache.mesos.Protos.ResourceOrBuilder getResourcesOrBuilder(
+        int index) {
+      return resources_.get(index);
+    }
+
+    // optional .mesos.ExecutorInfo executor = 5;
+    public static final int EXECUTOR_FIELD_NUMBER = 5;
+    private org.apache.mesos.Protos.ExecutorInfo executor_;
+    /**
+     * <code>optional .mesos.ExecutorInfo executor = 5;</code>
+     */
+    public boolean hasExecutor() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional .mesos.ExecutorInfo executor = 5;</code>
+     */
+    public org.apache.mesos.Protos.ExecutorInfo getExecutor() {
+      return executor_;
+    }
+    /**
+     * <code>optional .mesos.ExecutorInfo executor = 5;</code>
+     */
+    public org.apache.mesos.Protos.ExecutorInfoOrBuilder getExecutorOrBuilder() {
+      return executor_;
+    }
+
+    // optional .mesos.CommandInfo command = 7;
+    public static final int COMMAND_FIELD_NUMBER = 7;
+    private org.apache.mesos.Protos.CommandInfo command_;
+    /**
+     * <code>optional .mesos.CommandInfo command = 7;</code>
+     */
+    public boolean hasCommand() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional .mesos.CommandInfo command = 7;</code>
+     */
+    public org.apache.mesos.Protos.CommandInfo getCommand() {
+      return command_;
+    }
+    /**
+     * <code>optional .mesos.CommandInfo command = 7;</code>
+     */
+    public org.apache.mesos.Protos.CommandInfoOrBuilder getCommandOrBuilder() {
+      return command_;
+    }
+
+    // optional .mesos.ContainerInfo container = 9;
+    public static final int CONTAINER_FIELD_NUMBER = 9;
+    private org.apache.mesos.Protos.ContainerInfo container_;
+    /**
+     * <code>optional .mesos.ContainerInfo container = 9;</code>
+     *
+     * <pre>
+     * Task provided with a container will launch the container as part
+     * of this task paired with the task's CommandInfo.
+     * </pre>
+     */
+    public boolean hasContainer() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional .mesos.ContainerInfo container = 9;</code>
+     *
+     * <pre>
+     * Task provided with a container will launch the container as part
+     * of this task paired with the task's CommandInfo.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.ContainerInfo getContainer() {
+      return container_;
+    }
+    /**
+     * <code>optional .mesos.ContainerInfo container = 9;</code>
+     *
+     * <pre>
+     * Task provided with a container will launch the container as part
+     * of this task paired with the task's CommandInfo.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.ContainerInfoOrBuilder getContainerOrBuilder() {
+      return container_;
+    }
+
+    // optional .mesos.HealthCheck health_check = 8;
+    public static final int HEALTH_CHECK_FIELD_NUMBER = 8;
+    private org.apache.mesos.Protos.HealthCheck healthCheck_;
+    /**
+     * <code>optional .mesos.HealthCheck health_check = 8;</code>
+     *
+     * <pre>
+     * A health check for the task. Implemented for executor-less
+     * command-based tasks. For tasks that specify an executor, it is
+     * the executor's responsibility to implement the health checking.
+     * </pre>
+     */
+    public boolean hasHealthCheck() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional .mesos.HealthCheck health_check = 8;</code>
+     *
+     * <pre>
+     * A health check for the task. Implemented for executor-less
+     * command-based tasks. For tasks that specify an executor, it is
+     * the executor's responsibility to implement the health checking.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.HealthCheck getHealthCheck() {
+      return healthCheck_;
+    }
+    /**
+     * <code>optional .mesos.HealthCheck health_check = 8;</code>
+     *
+     * <pre>
+     * A health check for the task. Implemented for executor-less
+     * command-based tasks. For tasks that specify an executor, it is
+     * the executor's responsibility to implement the health checking.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.HealthCheckOrBuilder getHealthCheckOrBuilder() {
+      return healthCheck_;
+    }
+
+    // optional .mesos.CheckInfo check = 13;
+    public static final int CHECK_FIELD_NUMBER = 13;
+    private org.apache.mesos.Protos.CheckInfo check_;
+    /**
+     * <code>optional .mesos.CheckInfo check = 13;</code>
+     *
+     * <pre>
+     * A general check for the task. Implemented for all built-in executors.
+     * For tasks that specify an executor, it is the executor's responsibility
+     * to implement checking support. Executors should (all built-in executors
+     * will) neither interpret nor act on the check's result.
+     *
+     * NOTE: Check support in built-in executors is experimental.
+     *
+     * TODO(alexr): Consider supporting multiple checks per task.
+     * </pre>
+     */
+    public boolean hasCheck() {
+      return ((bitField0_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional .mesos.CheckInfo check = 13;</code>
+     *
+     * <pre>
+     * A general check for the task. Implemented for all built-in executors.
+     * For tasks that specify an executor, it is the executor's responsibility
+     * to implement checking support. Executors should (all built-in executors
+     * will) neither interpret nor act on the check's result.
+     *
+     * NOTE: Check support in built-in executors is experimental.
+     *
+     * TODO(alexr): Consider supporting multiple checks per task.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.CheckInfo getCheck() {
+      return check_;
+    }
+    /**
+     * <code>optional .mesos.CheckInfo check = 13;</code>
+     *
+     * <pre>
+     * A general check for the task. Implemented for all built-in executors.
+     * For tasks that specify an executor, it is the executor's responsibility
+     * to implement checking support. Executors should (all built-in executors
+     * will) neither interpret nor act on the check's result.
+     *
+     * NOTE: Check support in built-in executors is experimental.
+     *
+     * TODO(alexr): Consider supporting multiple checks per task.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.CheckInfoOrBuilder getCheckOrBuilder() {
+      return check_;
+    }
+
+    // optional .mesos.KillPolicy kill_policy = 12;
+    public static final int KILL_POLICY_FIELD_NUMBER = 12;
+    private org.apache.mesos.Protos.KillPolicy killPolicy_;
+    /**
+     * <code>optional .mesos.KillPolicy kill_policy = 12;</code>
+     *
+     * <pre>
+     * A kill policy for the task. Implemented for executor-less
+     * command-based and docker tasks. For tasks that specify an
+     * executor, it is the executor's responsibility to implement
+     * the kill policy.
+     * </pre>
+     */
+    public boolean hasKillPolicy() {
+      return ((bitField0_ & 0x00000100) == 0x00000100);
+    }
+    /**
+     * <code>optional .mesos.KillPolicy kill_policy = 12;</code>
+     *
+     * <pre>
+     * A kill policy for the task. Implemented for executor-less
+     * command-based and docker tasks. For tasks that specify an
+     * executor, it is the executor's responsibility to implement
+     * the kill policy.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.KillPolicy getKillPolicy() {
+      return killPolicy_;
+    }
+    /**
+     * <code>optional .mesos.KillPolicy kill_policy = 12;</code>
+     *
+     * <pre>
+     * A kill policy for the task. Implemented for executor-less
+     * command-based and docker tasks. For tasks that specify an
+     * executor, it is the executor's responsibility to implement
+     * the kill policy.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.KillPolicyOrBuilder getKillPolicyOrBuilder() {
+      return killPolicy_;
+    }
+
+    // optional bytes data = 6;
+    public static final int DATA_FIELD_NUMBER = 6;
+    private com.google.protobuf.ByteString data_;
+    /**
+     * <code>optional bytes data = 6;</code>
+     */
+    public boolean hasData() {
+      return ((bitField0_ & 0x00000200) == 0x00000200);
+    }
+    /**
+     * <code>optional bytes data = 6;</code>
+     */
+    public com.google.protobuf.ByteString getData() {
+      return data_;
+    }
+
+    // optional .mesos.Labels labels = 10;
+    public static final int LABELS_FIELD_NUMBER = 10;
+    private org.apache.mesos.Protos.Labels labels_;
+    /**
+     * <code>optional .mesos.Labels labels = 10;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs which are exposed through
+     * master and slave endpoints. Labels will not be interpreted or
+     * acted upon by Mesos itself. As opposed to the data field, labels
+     * will be kept in memory on master and slave processes. Therefore,
+     * labels should be used to tag tasks with light-weight meta-data.
+     * Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    public boolean hasLabels() {
+      return ((bitField0_ & 0x00000400) == 0x00000400);
+    }
+    /**
+     * <code>optional .mesos.Labels labels = 10;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs which are exposed through
+     * master and slave endpoints. Labels will not be interpreted or
+     * acted upon by Mesos itself. As opposed to the data field, labels
+     * will be kept in memory on master and slave processes. Therefore,
+     * labels should be used to tag tasks with light-weight meta-data.
+     * Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.Labels getLabels() {
+      return labels_;
+    }
+    /**
+     * <code>optional .mesos.Labels labels = 10;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs which are exposed through
+     * master and slave endpoints. Labels will not be interpreted or
+     * acted upon by Mesos itself. As opposed to the data field, labels
+     * will be kept in memory on master and slave processes. Therefore,
+     * labels should be used to tag tasks with light-weight meta-data.
+     * Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+      return labels_;
+    }
+
+    // optional .mesos.DiscoveryInfo discovery = 11;
+    public static final int DISCOVERY_FIELD_NUMBER = 11;
+    private org.apache.mesos.Protos.DiscoveryInfo discovery_;
+    /**
+     * <code>optional .mesos.DiscoveryInfo discovery = 11;</code>
+     *
+     * <pre>
+     * Service discovery information for the task. It is not interpreted
+     * or acted upon by Mesos. It is up to a service discovery system
+     * to use this information as needed and to handle tasks without
+     * service discovery information.
+     * </pre>
+     */
+    public boolean hasDiscovery() {
+      return ((bitField0_ & 0x00000800) == 0x00000800);
+    }
+    /**
+     * <code>optional .mesos.DiscoveryInfo discovery = 11;</code>
+     *
+     * <pre>
+     * Service discovery information for the task. It is not interpreted
+     * or acted upon by Mesos. It is up to a service discovery system
+     * to use this information as needed and to handle tasks without
+     * service discovery information.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.DiscoveryInfo getDiscovery() {
+      return discovery_;
+    }
+    /**
+     * <code>optional .mesos.DiscoveryInfo discovery = 11;</code>
+     *
+     * <pre>
+     * Service discovery information for the task. It is not interpreted
+     * or acted upon by Mesos. It is up to a service discovery system
+     * to use this information as needed and to handle tasks without
+     * service discovery information.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.DiscoveryInfoOrBuilder getDiscoveryOrBuilder() {
+      return discovery_;
+    }
+
+    private void initFields() {
+      name_ = "";
+      taskId_ = org.apache.mesos.Protos.TaskID.getDefaultInstance();
+      slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+      resources_ = java.util.Collections.emptyList();
+      executor_ = org.apache.mesos.Protos.ExecutorInfo.getDefaultInstance();
+      command_ = org.apache.mesos.Protos.CommandInfo.getDefaultInstance();
+      container_ = org.apache.mesos.Protos.ContainerInfo.getDefaultInstance();
+      healthCheck_ = org.apache.mesos.Protos.HealthCheck.getDefaultInstance();
+      check_ = org.apache.mesos.Protos.CheckInfo.getDefaultInstance();
+      killPolicy_ = org.apache.mesos.Protos.KillPolicy.getDefaultInstance();
+      data_ = com.google.protobuf.ByteString.EMPTY;
+      labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+      discovery_ = org.apache.mesos.Protos.DiscoveryInfo.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasName()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasTaskId()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasSlaveId()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!getTaskId().isInitialized()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!getSlaveId().isInitialized()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      for (int i = 0; i < getResourcesCount(); i++) {
+        if (!getResources(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasExecutor()) {
+        if (!getExecutor().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasCommand()) {
+        if (!getCommand().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasContainer()) {
+        if (!getContainer().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasHealthCheck()) {
+        if (!getHealthCheck().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasCheck()) {
+        if (!getCheck().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasKillPolicy()) {
+        if (!getKillPolicy().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasLabels()) {
+        if (!getLabels().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasDiscovery()) {
+        if (!getDiscovery().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(2, taskId_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeMessage(3, slaveId_);
+      }
+      for (int i = 0; i < resources_.size(); i++) {
+        output.writeMessage(4, resources_.get(i));
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeMessage(5, executor_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        output.writeBytes(6, data_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeMessage(7, command_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeMessage(8, healthCheck_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeMessage(9, container_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        output.writeMessage(10, labels_);
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        output.writeMessage(11, discovery_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        output.writeMessage(12, killPolicy_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        output.writeMessage(13, check_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, taskId_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, slaveId_);
+      }
+      for (int i = 0; i < resources_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, resources_.get(i));
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(5, executor_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(6, data_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(7, command_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(8, healthCheck_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(9, container_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(10, labels_);
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(11, discovery_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(12, killPolicy_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(13, check_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.TaskInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.TaskInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.TaskInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.TaskInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.TaskInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.TaskInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.TaskInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.TaskInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.TaskInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.TaskInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.TaskInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.TaskInfo}
+     *
+     * <pre>
+     **
+     * Describes a task. Passed from the scheduler all the way to an
+     * executor (see SchedulerDriver::launchTasks and
+     * Executor::launchTask). Either ExecutorInfo or CommandInfo should be set.
+     * A different executor can be used to launch this task, and subsequent tasks
+     * meant for the same executor can reuse the same ExecutorInfo struct.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.TaskInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_TaskInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_TaskInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.TaskInfo.class, org.apache.mesos.Protos.TaskInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.TaskInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getTaskIdFieldBuilder();
+          getSlaveIdFieldBuilder();
+          getResourcesFieldBuilder();
+          getExecutorFieldBuilder();
+          getCommandFieldBuilder();
+          getContainerFieldBuilder();
+          getHealthCheckFieldBuilder();
+          getCheckFieldBuilder();
+          getKillPolicyFieldBuilder();
+          getLabelsFieldBuilder();
+          getDiscoveryFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        name_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (taskIdBuilder_ == null) {
+          taskId_ = org.apache.mesos.Protos.TaskID.getDefaultInstance();
+        } else {
+          taskIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        if (slaveIdBuilder_ == null) {
+          slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+        } else {
+          slaveIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        if (resourcesBuilder_ == null) {
+          resources_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000008);
+        } else {
+          resourcesBuilder_.clear();
+        }
+        if (executorBuilder_ == null) {
+          executor_ = org.apache.mesos.Protos.ExecutorInfo.getDefaultInstance();
+        } else {
+          executorBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        if (commandBuilder_ == null) {
+          command_ = org.apache.mesos.Protos.CommandInfo.getDefaultInstance();
+        } else {
+          commandBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
+        if (containerBuilder_ == null) {
+          container_ = org.apache.mesos.Protos.ContainerInfo.getDefaultInstance();
+        } else {
+          containerBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000040);
+        if (healthCheckBuilder_ == null) {
+          healthCheck_ = org.apache.mesos.Protos.HealthCheck.getDefaultInstance();
+        } else {
+          healthCheckBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000080);
+        if (checkBuilder_ == null) {
+          check_ = org.apache.mesos.Protos.CheckInfo.getDefaultInstance();
+        } else {
+          checkBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000100);
+        if (killPolicyBuilder_ == null) {
+          killPolicy_ = org.apache.mesos.Protos.KillPolicy.getDefaultInstance();
+        } else {
+          killPolicyBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000200);
+        data_ = com.google.protobuf.ByteString.EMPTY;
+        bitField0_ = (bitField0_ & ~0x00000400);
+        if (labelsBuilder_ == null) {
+          labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+        } else {
+          labelsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000800);
+        if (discoveryBuilder_ == null) {
+          discovery_ = org.apache.mesos.Protos.DiscoveryInfo.getDefaultInstance();
+        } else {
+          discoveryBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00001000);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_TaskInfo_descriptor;
+      }
+
+      public org.apache.mesos.Protos.TaskInfo getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.TaskInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.TaskInfo build() {
+        org.apache.mesos.Protos.TaskInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.TaskInfo buildPartial() {
+        org.apache.mesos.Protos.TaskInfo result = new org.apache.mesos.Protos.TaskInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.name_ = name_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (taskIdBuilder_ == null) {
+          result.taskId_ = taskId_;
+        } else {
+          result.taskId_ = taskIdBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        if (slaveIdBuilder_ == null) {
+          result.slaveId_ = slaveId_;
+        } else {
+          result.slaveId_ = slaveIdBuilder_.build();
+        }
+        if (resourcesBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008)) {
+            resources_ = java.util.Collections.unmodifiableList(resources_);
+            bitField0_ = (bitField0_ & ~0x00000008);
+          }
+          result.resources_ = resources_;
+        } else {
+          result.resources_ = resourcesBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        if (executorBuilder_ == null) {
+          result.executor_ = executor_;
+        } else {
+          result.executor_ = executorBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        if (commandBuilder_ == null) {
+          result.command_ = command_;
+        } else {
+          result.command_ = commandBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        if (containerBuilder_ == null) {
+          result.container_ = container_;
+        } else {
+          result.container_ = containerBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        if (healthCheckBuilder_ == null) {
+          result.healthCheck_ = healthCheck_;
+        } else {
+          result.healthCheck_ = healthCheckBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
+          to_bitField0_ |= 0x00000080;
+        }
+        if (checkBuilder_ == null) {
+          result.check_ = check_;
+        } else {
+          result.check_ = checkBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
+          to_bitField0_ |= 0x00000100;
+        }
+        if (killPolicyBuilder_ == null) {
+          result.killPolicy_ = killPolicy_;
+        } else {
+          result.killPolicy_ = killPolicyBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
+          to_bitField0_ |= 0x00000200;
+        }
+        result.data_ = data_;
+        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
+          to_bitField0_ |= 0x00000400;
+        }
+        if (labelsBuilder_ == null) {
+          result.labels_ = labels_;
+        } else {
+          result.labels_ = labelsBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
+          to_bitField0_ |= 0x00000800;
+        }
+        if (discoveryBuilder_ == null) {
+          result.discovery_ = discovery_;
+        } else {
+          result.discovery_ = discoveryBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.TaskInfo) {
+          return mergeFrom((org.apache.mesos.Protos.TaskInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.TaskInfo other) {
+        if (other == org.apache.mesos.Protos.TaskInfo.getDefaultInstance()) return this;
+        if (other.hasName()) {
+          bitField0_ |= 0x00000001;
+          name_ = other.name_;
+          onChanged();
+        }
+        if (other.hasTaskId()) {
+          mergeTaskId(other.getTaskId());
+        }
+        if (other.hasSlaveId()) {
+          mergeSlaveId(other.getSlaveId());
+        }
+        if (resourcesBuilder_ == null) {
+          if (!other.resources_.isEmpty()) {
+            if (resources_.isEmpty()) {
+              resources_ = other.resources_;
+              bitField0_ = (bitField0_ & ~0x00000008);
+            } else {
+              ensureResourcesIsMutable();
+              resources_.addAll(other.resources_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.resources_.isEmpty()) {
+            if (resourcesBuilder_.isEmpty()) {
+              resourcesBuilder_.dispose();
+              resourcesBuilder_ = null;
+              resources_ = other.resources_;
+              bitField0_ = (bitField0_ & ~0x00000008);
+              resourcesBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getResourcesFieldBuilder() : null;
+            } else {
+              resourcesBuilder_.addAllMessages(other.resources_);
+            }
+          }
+        }
+        if (other.hasExecutor()) {
+          mergeExecutor(other.getExecutor());
+        }
+        if (other.hasCommand()) {
+          mergeCommand(other.getCommand());
+        }
+        if (other.hasContainer()) {
+          mergeContainer(other.getContainer());
+        }
+        if (other.hasHealthCheck()) {
+          mergeHealthCheck(other.getHealthCheck());
+        }
+        if (other.hasCheck()) {
+          mergeCheck(other.getCheck());
+        }
+        if (other.hasKillPolicy()) {
+          mergeKillPolicy(other.getKillPolicy());
+        }
+        if (other.hasData()) {
+          setData(other.getData());
+        }
+        if (other.hasLabels()) {
+          mergeLabels(other.getLabels());
+        }
+        if (other.hasDiscovery()) {
+          mergeDiscovery(other.getDiscovery());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasName()) {
+          
+          return false;
+        }
+        if (!hasTaskId()) {
+          
+          return false;
+        }
+        if (!hasSlaveId()) {
+          
+          return false;
+        }
+        if (!getTaskId().isInitialized()) {
+          
+          return false;
+        }
+        if (!getSlaveId().isInitialized()) {
+          
+          return false;
+        }
+        for (int i = 0; i < getResourcesCount(); i++) {
+          if (!getResources(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasExecutor()) {
+          if (!getExecutor().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasCommand()) {
+          if (!getCommand().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasContainer()) {
+          if (!getContainer().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasHealthCheck()) {
+          if (!getHealthCheck().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasCheck()) {
+          if (!getCheck().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasKillPolicy()) {
+          if (!getKillPolicy().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasLabels()) {
+          if (!getLabels().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasDiscovery()) {
+          if (!getDiscovery().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.TaskInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.TaskInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string name = 1;
+      private java.lang.Object name_ = "";
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public boolean hasName() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public java.lang.String getName() {
+        java.lang.Object ref = name_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          name_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        java.lang.Object ref = name_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          name_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder setName(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder clearName() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        name_ = getDefaultInstance().getName();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder setNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+
+      // required .mesos.TaskID task_id = 2;
+      private org.apache.mesos.Protos.TaskID taskId_ = org.apache.mesos.Protos.TaskID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.TaskID, org.apache.mesos.Protos.TaskID.Builder, org.apache.mesos.Protos.TaskIDOrBuilder> taskIdBuilder_;
+      /**
+       * <code>required .mesos.TaskID task_id = 2;</code>
+       */
+      public boolean hasTaskId() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required .mesos.TaskID task_id = 2;</code>
+       */
+      public org.apache.mesos.Protos.TaskID getTaskId() {
+        if (taskIdBuilder_ == null) {
+          return taskId_;
+        } else {
+          return taskIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>required .mesos.TaskID task_id = 2;</code>
+       */
+      public Builder setTaskId(org.apache.mesos.Protos.TaskID value) {
+        if (taskIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          taskId_ = value;
+          onChanged();
+        } else {
+          taskIdBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.TaskID task_id = 2;</code>
+       */
+      public Builder setTaskId(
+          org.apache.mesos.Protos.TaskID.Builder builderForValue) {
+        if (taskIdBuilder_ == null) {
+          taskId_ = builderForValue.build();
+          onChanged();
+        } else {
+          taskIdBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.TaskID task_id = 2;</code>
+       */
+      public Builder mergeTaskId(org.apache.mesos.Protos.TaskID value) {
+        if (taskIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              taskId_ != org.apache.mesos.Protos.TaskID.getDefaultInstance()) {
+            taskId_ =
+              org.apache.mesos.Protos.TaskID.newBuilder(taskId_).mergeFrom(value).buildPartial();
+          } else {
+            taskId_ = value;
+          }
+          onChanged();
+        } else {
+          taskIdBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.TaskID task_id = 2;</code>
+       */
+      public Builder clearTaskId() {
+        if (taskIdBuilder_ == null) {
+          taskId_ = org.apache.mesos.Protos.TaskID.getDefaultInstance();
+          onChanged();
+        } else {
+          taskIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>required .mesos.TaskID task_id = 2;</code>
+       */
+      public org.apache.mesos.Protos.TaskID.Builder getTaskIdBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getTaskIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>required .mesos.TaskID task_id = 2;</code>
+       */
+      public org.apache.mesos.Protos.TaskIDOrBuilder getTaskIdOrBuilder() {
+        if (taskIdBuilder_ != null) {
+          return taskIdBuilder_.getMessageOrBuilder();
+        } else {
+          return taskId_;
+        }
+      }
+      /**
+       * <code>required .mesos.TaskID task_id = 2;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.TaskID, org.apache.mesos.Protos.TaskID.Builder, org.apache.mesos.Protos.TaskIDOrBuilder> 
+          getTaskIdFieldBuilder() {
+        if (taskIdBuilder_ == null) {
+          taskIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.TaskID, org.apache.mesos.Protos.TaskID.Builder, org.apache.mesos.Protos.TaskIDOrBuilder>(
+                  taskId_,
+                  getParentForChildren(),
+                  isClean());
+          taskId_ = null;
+        }
+        return taskIdBuilder_;
+      }
+
+      // required .mesos.SlaveID slave_id = 3;
+      private org.apache.mesos.Protos.SlaveID slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.SlaveID, org.apache.mesos.Protos.SlaveID.Builder, org.apache.mesos.Protos.SlaveIDOrBuilder> slaveIdBuilder_;
+      /**
+       * <code>required .mesos.SlaveID slave_id = 3;</code>
+       */
+      public boolean hasSlaveId() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>required .mesos.SlaveID slave_id = 3;</code>
+       */
+      public org.apache.mesos.Protos.SlaveID getSlaveId() {
+        if (slaveIdBuilder_ == null) {
+          return slaveId_;
+        } else {
+          return slaveIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>required .mesos.SlaveID slave_id = 3;</code>
+       */
+      public Builder setSlaveId(org.apache.mesos.Protos.SlaveID value) {
+        if (slaveIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          slaveId_ = value;
+          onChanged();
+        } else {
+          slaveIdBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>required .mesos.SlaveID slave_id = 3;</code>
+       */
+      public Builder setSlaveId(
+          org.apache.mesos.Protos.SlaveID.Builder builderForValue) {
+        if (slaveIdBuilder_ == null) {
+          slaveId_ = builderForValue.build();
+          onChanged();
+        } else {
+          slaveIdBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>required .mesos.SlaveID slave_id = 3;</code>
+       */
+      public Builder mergeSlaveId(org.apache.mesos.Protos.SlaveID value) {
+        if (slaveIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) == 0x00000004) &&
+              slaveId_ != org.apache.mesos.Protos.SlaveID.getDefaultInstance()) {
+            slaveId_ =
+              org.apache.mesos.Protos.SlaveID.newBuilder(slaveId_).mergeFrom(value).buildPartial();
+          } else {
+            slaveId_ = value;
+          }
+          onChanged();
+        } else {
+          slaveIdBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>required .mesos.SlaveID slave_id = 3;</code>
+       */
+      public Builder clearSlaveId() {
+        if (slaveIdBuilder_ == null) {
+          slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+          onChanged();
+        } else {
+          slaveIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+      /**
+       * <code>required .mesos.SlaveID slave_id = 3;</code>
+       */
+      public org.apache.mesos.Protos.SlaveID.Builder getSlaveIdBuilder() {
+        bitField0_ |= 0x00000004;
+        onChanged();
+        return getSlaveIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>required .mesos.SlaveID slave_id = 3;</code>
+       */
+      public org.apache.mesos.Protos.SlaveIDOrBuilder getSlaveIdOrBuilder() {
+        if (slaveIdBuilder_ != null) {
+          return slaveIdBuilder_.getMessageOrBuilder();
+        } else {
+          return slaveId_;
+        }
+      }
+      /**
+       * <code>required .mesos.SlaveID slave_id = 3;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.SlaveID, org.apache.mesos.Protos.SlaveID.Builder, org.apache.mesos.Protos.SlaveIDOrBuilder> 
+          getSlaveIdFieldBuilder() {
+        if (slaveIdBuilder_ == null) {
+          slaveIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.SlaveID, org.apache.mesos.Protos.SlaveID.Builder, org.apache.mesos.Protos.SlaveIDOrBuilder>(
+                  slaveId_,
+                  getParentForChildren(),
+                  isClean());
+          slaveId_ = null;
+        }
+        return slaveIdBuilder_;
+      }
+
+      // repeated .mesos.Resource resources = 4;
+      private java.util.List<org.apache.mesos.Protos.Resource> resources_ =
+        java.util.Collections.emptyList();
+      private void ensureResourcesIsMutable() {
+        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
+          resources_ = new java.util.ArrayList<org.apache.mesos.Protos.Resource>(resources_);
+          bitField0_ |= 0x00000008;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder> resourcesBuilder_;
+
+      /**
+       * <code>repeated .mesos.Resource resources = 4;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.Resource> getResourcesList() {
+        if (resourcesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(resources_);
+        } else {
+          return resourcesBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 4;</code>
+       */
+      public int getResourcesCount() {
+        if (resourcesBuilder_ == null) {
+          return resources_.size();
+        } else {
+          return resourcesBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 4;</code>
+       */
+      public org.apache.mesos.Protos.Resource getResources(int index) {
+        if (resourcesBuilder_ == null) {
+          return resources_.get(index);
+        } else {
+          return resourcesBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 4;</code>
+       */
+      public Builder setResources(
+          int index, org.apache.mesos.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.set(index, value);
+          onChanged();
+        } else {
+          resourcesBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 4;</code>
+       */
+      public Builder setResources(
+          int index, org.apache.mesos.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 4;</code>
+       */
+      public Builder addResources(org.apache.mesos.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.add(value);
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 4;</code>
+       */
+      public Builder addResources(
+          int index, org.apache.mesos.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.add(index, value);
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 4;</code>
+       */
+      public Builder addResources(
+          org.apache.mesos.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.add(builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 4;</code>
+       */
+      public Builder addResources(
+          int index, org.apache.mesos.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 4;</code>
+       */
+      public Builder addAllResources(
+          java.lang.Iterable<? extends org.apache.mesos.Protos.Resource> values) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          super.addAll(values, resources_);
+          onChanged();
+        } else {
+          resourcesBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 4;</code>
+       */
+      public Builder clearResources() {
+        if (resourcesBuilder_ == null) {
+          resources_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000008);
+          onChanged();
+        } else {
+          resourcesBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 4;</code>
+       */
+      public Builder removeResources(int index) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.remove(index);
+          onChanged();
+        } else {
+          resourcesBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 4;</code>
+       */
+      public org.apache.mesos.Protos.Resource.Builder getResourcesBuilder(
+          int index) {
+        return getResourcesFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 4;</code>
+       */
+      public org.apache.mesos.Protos.ResourceOrBuilder getResourcesOrBuilder(
+          int index) {
+        if (resourcesBuilder_ == null) {
+          return resources_.get(index);  } else {
+          return resourcesBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 4;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+           getResourcesOrBuilderList() {
+        if (resourcesBuilder_ != null) {
+          return resourcesBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(resources_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 4;</code>
+       */
+      public org.apache.mesos.Protos.Resource.Builder addResourcesBuilder() {
+        return getResourcesFieldBuilder().addBuilder(
+            org.apache.mesos.Protos.Resource.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 4;</code>
+       */
+      public org.apache.mesos.Protos.Resource.Builder addResourcesBuilder(
+          int index) {
+        return getResourcesFieldBuilder().addBuilder(
+            index, org.apache.mesos.Protos.Resource.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 4;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.Resource.Builder> 
+           getResourcesBuilderList() {
+        return getResourcesFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder> 
+          getResourcesFieldBuilder() {
+        if (resourcesBuilder_ == null) {
+          resourcesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder>(
+                  resources_,
+                  ((bitField0_ & 0x00000008) == 0x00000008),
+                  getParentForChildren(),
+                  isClean());
+          resources_ = null;
+        }
+        return resourcesBuilder_;
+      }
+
+      // optional .mesos.ExecutorInfo executor = 5;
+      private org.apache.mesos.Protos.ExecutorInfo executor_ = org.apache.mesos.Protos.ExecutorInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.ExecutorInfo, org.apache.mesos.Protos.ExecutorInfo.Builder, org.apache.mesos.Protos.ExecutorInfoOrBuilder> executorBuilder_;
+      /**
+       * <code>optional .mesos.ExecutorInfo executor = 5;</code>
+       */
+      public boolean hasExecutor() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional .mesos.ExecutorInfo executor = 5;</code>
+       */
+      public org.apache.mesos.Protos.ExecutorInfo getExecutor() {
+        if (executorBuilder_ == null) {
+          return executor_;
+        } else {
+          return executorBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.ExecutorInfo executor = 5;</code>
+       */
+      public Builder setExecutor(org.apache.mesos.Protos.ExecutorInfo value) {
+        if (executorBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          executor_ = value;
+          onChanged();
+        } else {
+          executorBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ExecutorInfo executor = 5;</code>
+       */
+      public Builder setExecutor(
+          org.apache.mesos.Protos.ExecutorInfo.Builder builderForValue) {
+        if (executorBuilder_ == null) {
+          executor_ = builderForValue.build();
+          onChanged();
+        } else {
+          executorBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ExecutorInfo executor = 5;</code>
+       */
+      public Builder mergeExecutor(org.apache.mesos.Protos.ExecutorInfo value) {
+        if (executorBuilder_ == null) {
+          if (((bitField0_ & 0x00000010) == 0x00000010) &&
+              executor_ != org.apache.mesos.Protos.ExecutorInfo.getDefaultInstance()) {
+            executor_ =
+              org.apache.mesos.Protos.ExecutorInfo.newBuilder(executor_).mergeFrom(value).buildPartial();
+          } else {
+            executor_ = value;
+          }
+          onChanged();
+        } else {
+          executorBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ExecutorInfo executor = 5;</code>
+       */
+      public Builder clearExecutor() {
+        if (executorBuilder_ == null) {
+          executor_ = org.apache.mesos.Protos.ExecutorInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          executorBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ExecutorInfo executor = 5;</code>
+       */
+      public org.apache.mesos.Protos.ExecutorInfo.Builder getExecutorBuilder() {
+        bitField0_ |= 0x00000010;
+        onChanged();
+        return getExecutorFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.ExecutorInfo executor = 5;</code>
+       */
+      public org.apache.mesos.Protos.ExecutorInfoOrBuilder getExecutorOrBuilder() {
+        if (executorBuilder_ != null) {
+          return executorBuilder_.getMessageOrBuilder();
+        } else {
+          return executor_;
+        }
+      }
+      /**
+       * <code>optional .mesos.ExecutorInfo executor = 5;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.ExecutorInfo, org.apache.mesos.Protos.ExecutorInfo.Builder, org.apache.mesos.Protos.ExecutorInfoOrBuilder> 
+          getExecutorFieldBuilder() {
+        if (executorBuilder_ == null) {
+          executorBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.ExecutorInfo, org.apache.mesos.Protos.ExecutorInfo.Builder, org.apache.mesos.Protos.ExecutorInfoOrBuilder>(
+                  executor_,
+                  getParentForChildren(),
+                  isClean());
+          executor_ = null;
+        }
+        return executorBuilder_;
+      }
+
+      // optional .mesos.CommandInfo command = 7;
+      private org.apache.mesos.Protos.CommandInfo command_ = org.apache.mesos.Protos.CommandInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.CommandInfo, org.apache.mesos.Protos.CommandInfo.Builder, org.apache.mesos.Protos.CommandInfoOrBuilder> commandBuilder_;
+      /**
+       * <code>optional .mesos.CommandInfo command = 7;</code>
+       */
+      public boolean hasCommand() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional .mesos.CommandInfo command = 7;</code>
+       */
+      public org.apache.mesos.Protos.CommandInfo getCommand() {
+        if (commandBuilder_ == null) {
+          return command_;
+        } else {
+          return commandBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.CommandInfo command = 7;</code>
+       */
+      public Builder setCommand(org.apache.mesos.Protos.CommandInfo value) {
+        if (commandBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          command_ = value;
+          onChanged();
+        } else {
+          commandBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CommandInfo command = 7;</code>
+       */
+      public Builder setCommand(
+          org.apache.mesos.Protos.CommandInfo.Builder builderForValue) {
+        if (commandBuilder_ == null) {
+          command_ = builderForValue.build();
+          onChanged();
+        } else {
+          commandBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CommandInfo command = 7;</code>
+       */
+      public Builder mergeCommand(org.apache.mesos.Protos.CommandInfo value) {
+        if (commandBuilder_ == null) {
+          if (((bitField0_ & 0x00000020) == 0x00000020) &&
+              command_ != org.apache.mesos.Protos.CommandInfo.getDefaultInstance()) {
+            command_ =
+              org.apache.mesos.Protos.CommandInfo.newBuilder(command_).mergeFrom(value).buildPartial();
+          } else {
+            command_ = value;
+          }
+          onChanged();
+        } else {
+          commandBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CommandInfo command = 7;</code>
+       */
+      public Builder clearCommand() {
+        if (commandBuilder_ == null) {
+          command_ = org.apache.mesos.Protos.CommandInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          commandBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CommandInfo command = 7;</code>
+       */
+      public org.apache.mesos.Protos.CommandInfo.Builder getCommandBuilder() {
+        bitField0_ |= 0x00000020;
+        onChanged();
+        return getCommandFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.CommandInfo command = 7;</code>
+       */
+      public org.apache.mesos.Protos.CommandInfoOrBuilder getCommandOrBuilder() {
+        if (commandBuilder_ != null) {
+          return commandBuilder_.getMessageOrBuilder();
+        } else {
+          return command_;
+        }
+      }
+      /**
+       * <code>optional .mesos.CommandInfo command = 7;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.CommandInfo, org.apache.mesos.Protos.CommandInfo.Builder, org.apache.mesos.Protos.CommandInfoOrBuilder> 
+          getCommandFieldBuilder() {
+        if (commandBuilder_ == null) {
+          commandBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.CommandInfo, org.apache.mesos.Protos.CommandInfo.Builder, org.apache.mesos.Protos.CommandInfoOrBuilder>(
+                  command_,
+                  getParentForChildren(),
+                  isClean());
+          command_ = null;
+        }
+        return commandBuilder_;
+      }
+
+      // optional .mesos.ContainerInfo container = 9;
+      private org.apache.mesos.Protos.ContainerInfo container_ = org.apache.mesos.Protos.ContainerInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.ContainerInfo, org.apache.mesos.Protos.ContainerInfo.Builder, org.apache.mesos.Protos.ContainerInfoOrBuilder> containerBuilder_;
+      /**
+       * <code>optional .mesos.ContainerInfo container = 9;</code>
+       *
+       * <pre>
+       * Task provided with a container will launch the container as part
+       * of this task paired with the task's CommandInfo.
+       * </pre>
+       */
+      public boolean hasContainer() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional .mesos.ContainerInfo container = 9;</code>
+       *
+       * <pre>
+       * Task provided with a container will launch the container as part
+       * of this task paired with the task's CommandInfo.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.ContainerInfo getContainer() {
+        if (containerBuilder_ == null) {
+          return container_;
+        } else {
+          return containerBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.ContainerInfo container = 9;</code>
+       *
+       * <pre>
+       * Task provided with a container will launch the container as part
+       * of this task paired with the task's CommandInfo.
+       * </pre>
+       */
+      public Builder setContainer(org.apache.mesos.Protos.ContainerInfo value) {
+        if (containerBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          container_ = value;
+          onChanged();
+        } else {
+          containerBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ContainerInfo container = 9;</code>
+       *
+       * <pre>
+       * Task provided with a container will launch the container as part
+       * of this task paired with the task's CommandInfo.
+       * </pre>
+       */
+      public Builder setContainer(
+          org.apache.mesos.Protos.ContainerInfo.Builder builderForValue) {
+        if (containerBuilder_ == null) {
+          container_ = builderForValue.build();
+          onChanged();
+        } else {
+          containerBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ContainerInfo container = 9;</code>
+       *
+       * <pre>
+       * Task provided with a container will launch the container as part
+       * of this task paired with the task's CommandInfo.
+       * </pre>
+       */
+      public Builder mergeContainer(org.apache.mesos.Protos.ContainerInfo value) {
+        if (containerBuilder_ == null) {
+          if (((bitField0_ & 0x00000040) == 0x00000040) &&
+              container_ != org.apache.mesos.Protos.ContainerInfo.getDefaultInstance()) {
+            container_ =
+              org.apache.mesos.Protos.ContainerInfo.newBuilder(container_).mergeFrom(value).buildPartial();
+          } else {
+            container_ = value;
+          }
+          onChanged();
+        } else {
+          containerBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ContainerInfo container = 9;</code>
+       *
+       * <pre>
+       * Task provided with a container will launch the container as part
+       * of this task paired with the task's CommandInfo.
+       * </pre>
+       */
+      public Builder clearContainer() {
+        if (containerBuilder_ == null) {
+          container_ = org.apache.mesos.Protos.ContainerInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          containerBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000040);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ContainerInfo container = 9;</code>
+       *
+       * <pre>
+       * Task provided with a container will launch the container as part
+       * of this task paired with the task's CommandInfo.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.ContainerInfo.Builder getContainerBuilder() {
+        bitField0_ |= 0x00000040;
+        onChanged();
+        return getContainerFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.ContainerInfo container = 9;</code>
+       *
+       * <pre>
+       * Task provided with a container will launch the container as part
+       * of this task paired with the task's CommandInfo.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.ContainerInfoOrBuilder getContainerOrBuilder() {
+        if (containerBuilder_ != null) {
+          return containerBuilder_.getMessageOrBuilder();
+        } else {
+          return container_;
+        }
+      }
+      /**
+       * <code>optional .mesos.ContainerInfo container = 9;</code>
+       *
+       * <pre>
+       * Task provided with a container will launch the container as part
+       * of this task paired with the task's CommandInfo.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.ContainerInfo, org.apache.mesos.Protos.ContainerInfo.Builder, org.apache.mesos.Protos.ContainerInfoOrBuilder> 
+          getContainerFieldBuilder() {
+        if (containerBuilder_ == null) {
+          containerBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.ContainerInfo, org.apache.mesos.Protos.ContainerInfo.Builder, org.apache.mesos.Protos.ContainerInfoOrBuilder>(
+                  container_,
+                  getParentForChildren(),
+                  isClean());
+          container_ = null;
+        }
+        return containerBuilder_;
+      }
+
+      // optional .mesos.HealthCheck health_check = 8;
+      private org.apache.mesos.Protos.HealthCheck healthCheck_ = org.apache.mesos.Protos.HealthCheck.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.HealthCheck, org.apache.mesos.Protos.HealthCheck.Builder, org.apache.mesos.Protos.HealthCheckOrBuilder> healthCheckBuilder_;
+      /**
+       * <code>optional .mesos.HealthCheck health_check = 8;</code>
+       *
+       * <pre>
+       * A health check for the task. Implemented for executor-less
+       * command-based tasks. For tasks that specify an executor, it is
+       * the executor's responsibility to implement the health checking.
+       * </pre>
+       */
+      public boolean hasHealthCheck() {
+        return ((bitField0_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional .mesos.HealthCheck health_check = 8;</code>
+       *
+       * <pre>
+       * A health check for the task. Implemented for executor-less
+       * command-based tasks. For tasks that specify an executor, it is
+       * the executor's responsibility to implement the health checking.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.HealthCheck getHealthCheck() {
+        if (healthCheckBuilder_ == null) {
+          return healthCheck_;
+        } else {
+          return healthCheckBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.HealthCheck health_check = 8;</code>
+       *
+       * <pre>
+       * A health check for the task. Implemented for executor-less
+       * command-based tasks. For tasks that specify an executor, it is
+       * the executor's responsibility to implement the health checking.
+       * </pre>
+       */
+      public Builder setHealthCheck(org.apache.mesos.Protos.HealthCheck value) {
+        if (healthCheckBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          healthCheck_ = value;
+          onChanged();
+        } else {
+          healthCheckBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.HealthCheck health_check = 8;</code>
+       *
+       * <pre>
+       * A health check for the task. Implemented for executor-less
+       * command-based tasks. For tasks that specify an executor, it is
+       * the executor's responsibility to implement the health checking.
+       * </pre>
+       */
+      public Builder setHealthCheck(
+          org.apache.mesos.Protos.HealthCheck.Builder builderForValue) {
+        if (healthCheckBuilder_ == null) {
+          healthCheck_ = builderForValue.build();
+          onChanged();
+        } else {
+          healthCheckBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.HealthCheck health_check = 8;</code>
+       *
+       * <pre>
+       * A health check for the task. Implemented for executor-less
+       * command-based tasks. For tasks that specify an executor, it is
+       * the executor's responsibility to implement the health checking.
+       * </pre>
+       */
+      public Builder mergeHealthCheck(org.apache.mesos.Protos.HealthCheck value) {
+        if (healthCheckBuilder_ == null) {
+          if (((bitField0_ & 0x00000080) == 0x00000080) &&
+              healthCheck_ != org.apache.mesos.Protos.HealthCheck.getDefaultInstance()) {
+            healthCheck_ =
+              org.apache.mesos.Protos.HealthCheck.newBuilder(healthCheck_).mergeFrom(value).buildPartial();
+          } else {
+            healthCheck_ = value;
+          }
+          onChanged();
+        } else {
+          healthCheckBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.HealthCheck health_check = 8;</code>
+       *
+       * <pre>
+       * A health check for the task. Implemented for executor-less
+       * command-based tasks. For tasks that specify an executor, it is
+       * the executor's responsibility to implement the health checking.
+       * </pre>
+       */
+      public Builder clearHealthCheck() {
+        if (healthCheckBuilder_ == null) {
+          healthCheck_ = org.apache.mesos.Protos.HealthCheck.getDefaultInstance();
+          onChanged();
+        } else {
+          healthCheckBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000080);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.HealthCheck health_check = 8;</code>
+       *
+       * <pre>
+       * A health check for the task. Implemented for executor-less
+       * command-based tasks. For tasks that specify an executor, it is
+       * the executor's responsibility to implement the health checking.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.HealthCheck.Builder getHealthCheckBuilder() {
+        bitField0_ |= 0x00000080;
+        onChanged();
+        return getHealthCheckFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.HealthCheck health_check = 8;</code>
+       *
+       * <pre>
+       * A health check for the task. Implemented for executor-less
+       * command-based tasks. For tasks that specify an executor, it is
+       * the executor's responsibility to implement the health checking.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.HealthCheckOrBuilder getHealthCheckOrBuilder() {
+        if (healthCheckBuilder_ != null) {
+          return healthCheckBuilder_.getMessageOrBuilder();
+        } else {
+          return healthCheck_;
+        }
+      }
+      /**
+       * <code>optional .mesos.HealthCheck health_check = 8;</code>
+       *
+       * <pre>
+       * A health check for the task. Implemented for executor-less
+       * command-based tasks. For tasks that specify an executor, it is
+       * the executor's responsibility to implement the health checking.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.HealthCheck, org.apache.mesos.Protos.HealthCheck.Builder, org.apache.mesos.Protos.HealthCheckOrBuilder> 
+          getHealthCheckFieldBuilder() {
+        if (healthCheckBuilder_ == null) {
+          healthCheckBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.HealthCheck, org.apache.mesos.Protos.HealthCheck.Builder, org.apache.mesos.Protos.HealthCheckOrBuilder>(
+                  healthCheck_,
+                  getParentForChildren(),
+                  isClean());
+          healthCheck_ = null;
+        }
+        return healthCheckBuilder_;
+      }
+
+      // optional .mesos.CheckInfo check = 13;
+      private org.apache.mesos.Protos.CheckInfo check_ = org.apache.mesos.Protos.CheckInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.CheckInfo, org.apache.mesos.Protos.CheckInfo.Builder, org.apache.mesos.Protos.CheckInfoOrBuilder> checkBuilder_;
+      /**
+       * <code>optional .mesos.CheckInfo check = 13;</code>
+       *
+       * <pre>
+       * A general check for the task. Implemented for all built-in executors.
+       * For tasks that specify an executor, it is the executor's responsibility
+       * to implement checking support. Executors should (all built-in executors
+       * will) neither interpret nor act on the check's result.
+       *
+       * NOTE: Check support in built-in executors is experimental.
+       *
+       * TODO(alexr): Consider supporting multiple checks per task.
+       * </pre>
+       */
+      public boolean hasCheck() {
+        return ((bitField0_ & 0x00000100) == 0x00000100);
+      }
+      /**
+       * <code>optional .mesos.CheckInfo check = 13;</code>
+       *
+       * <pre>
+       * A general check for the task. Implemented for all built-in executors.
+       * For tasks that specify an executor, it is the executor's responsibility
+       * to implement checking support. Executors should (all built-in executors
+       * will) neither interpret nor act on the check's result.
+       *
+       * NOTE: Check support in built-in executors is experimental.
+       *
+       * TODO(alexr): Consider supporting multiple checks per task.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.CheckInfo getCheck() {
+        if (checkBuilder_ == null) {
+          return check_;
+        } else {
+          return checkBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.CheckInfo check = 13;</code>
+       *
+       * <pre>
+       * A general check for the task. Implemented for all built-in executors.
+       * For tasks that specify an executor, it is the executor's responsibility
+       * to implement checking support. Executors should (all built-in executors
+       * will) neither interpret nor act on the check's result.
+       *
+       * NOTE: Check support in built-in executors is experimental.
+       *
+       * TODO(alexr): Consider supporting multiple checks per task.
+       * </pre>
+       */
+      public Builder setCheck(org.apache.mesos.Protos.CheckInfo value) {
+        if (checkBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          check_ = value;
+          onChanged();
+        } else {
+          checkBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000100;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CheckInfo check = 13;</code>
+       *
+       * <pre>
+       * A general check for the task. Implemented for all built-in executors.
+       * For tasks that specify an executor, it is the executor's responsibility
+       * to implement checking support. Executors should (all built-in executors
+       * will) neither interpret nor act on the check's result.
+       *
+       * NOTE: Check support in built-in executors is experimental.
+       *
+       * TODO(alexr): Consider supporting multiple checks per task.
+       * </pre>
+       */
+      public Builder setCheck(
+          org.apache.mesos.Protos.CheckInfo.Builder builderForValue) {
+        if (checkBuilder_ == null) {
+          check_ = builderForValue.build();
+          onChanged();
+        } else {
+          checkBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000100;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CheckInfo check = 13;</code>
+       *
+       * <pre>
+       * A general check for the task. Implemented for all built-in executors.
+       * For tasks that specify an executor, it is the executor's responsibility
+       * to implement checking support. Executors should (all built-in executors
+       * will) neither interpret nor act on the check's result.
+       *
+       * NOTE: Check support in built-in executors is experimental.
+       *
+       * TODO(alexr): Consider supporting multiple checks per task.
+       * </pre>
+       */
+      public Builder mergeCheck(org.apache.mesos.Protos.CheckInfo value) {
+        if (checkBuilder_ == null) {
+          if (((bitField0_ & 0x00000100) == 0x00000100) &&
+              check_ != org.apache.mesos.Protos.CheckInfo.getDefaultInstance()) {
+            check_ =
+              org.apache.mesos.Protos.CheckInfo.newBuilder(check_).mergeFrom(value).buildPartial();
+          } else {
+            check_ = value;
+          }
+          onChanged();
+        } else {
+          checkBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000100;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CheckInfo check = 13;</code>
+       *
+       * <pre>
+       * A general check for the task. Implemented for all built-in executors.
+       * For tasks that specify an executor, it is the executor's responsibility
+       * to implement checking support. Executors should (all built-in executors
+       * will) neither interpret nor act on the check's result.
+       *
+       * NOTE: Check support in built-in executors is experimental.
+       *
+       * TODO(alexr): Consider supporting multiple checks per task.
+       * </pre>
+       */
+      public Builder clearCheck() {
+        if (checkBuilder_ == null) {
+          check_ = org.apache.mesos.Protos.CheckInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          checkBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000100);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CheckInfo check = 13;</code>
+       *
+       * <pre>
+       * A general check for the task. Implemented for all built-in executors.
+       * For tasks that specify an executor, it is the executor's responsibility
+       * to implement checking support. Executors should (all built-in executors
+       * will) neither interpret nor act on the check's result.
+       *
+       * NOTE: Check support in built-in executors is experimental.
+       *
+       * TODO(alexr): Consider supporting multiple checks per task.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.CheckInfo.Builder getCheckBuilder() {
+        bitField0_ |= 0x00000100;
+        onChanged();
+        return getCheckFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.CheckInfo check = 13;</code>
+       *
+       * <pre>
+       * A general check for the task. Implemented for all built-in executors.
+       * For tasks that specify an executor, it is the executor's responsibility
+       * to implement checking support. Executors should (all built-in executors
+       * will) neither interpret nor act on the check's result.
+       *
+       * NOTE: Check support in built-in executors is experimental.
+       *
+       * TODO(alexr): Consider supporting multiple checks per task.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.CheckInfoOrBuilder getCheckOrBuilder() {
+        if (checkBuilder_ != null) {
+          return checkBuilder_.getMessageOrBuilder();
+        } else {
+          return check_;
+        }
+      }
+      /**
+       * <code>optional .mesos.CheckInfo check = 13;</code>
+       *
+       * <pre>
+       * A general check for the task. Implemented for all built-in executors.
+       * For tasks that specify an executor, it is the executor's responsibility
+       * to implement checking support. Executors should (all built-in executors
+       * will) neither interpret nor act on the check's result.
+       *
+       * NOTE: Check support in built-in executors is experimental.
+       *
+       * TODO(alexr): Consider supporting multiple checks per task.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.CheckInfo, org.apache.mesos.Protos.CheckInfo.Builder, org.apache.mesos.Protos.CheckInfoOrBuilder> 
+          getCheckFieldBuilder() {
+        if (checkBuilder_ == null) {
+          checkBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.CheckInfo, org.apache.mesos.Protos.CheckInfo.Builder, org.apache.mesos.Protos.CheckInfoOrBuilder>(
+                  check_,
+                  getParentForChildren(),
+                  isClean());
+          check_ = null;
+        }
+        return checkBuilder_;
+      }
+
+      // optional .mesos.KillPolicy kill_policy = 12;
+      private org.apache.mesos.Protos.KillPolicy killPolicy_ = org.apache.mesos.Protos.KillPolicy.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.KillPolicy, org.apache.mesos.Protos.KillPolicy.Builder, org.apache.mesos.Protos.KillPolicyOrBuilder> killPolicyBuilder_;
+      /**
+       * <code>optional .mesos.KillPolicy kill_policy = 12;</code>
+       *
+       * <pre>
+       * A kill policy for the task. Implemented for executor-less
+       * command-based and docker tasks. For tasks that specify an
+       * executor, it is the executor's responsibility to implement
+       * the kill policy.
+       * </pre>
+       */
+      public boolean hasKillPolicy() {
+        return ((bitField0_ & 0x00000200) == 0x00000200);
+      }
+      /**
+       * <code>optional .mesos.KillPolicy kill_policy = 12;</code>
+       *
+       * <pre>
+       * A kill policy for the task. Implemented for executor-less
+       * command-based and docker tasks. For tasks that specify an
+       * executor, it is the executor's responsibility to implement
+       * the kill policy.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.KillPolicy getKillPolicy() {
+        if (killPolicyBuilder_ == null) {
+          return killPolicy_;
+        } else {
+          return killPolicyBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.KillPolicy kill_policy = 12;</code>
+       *
+       * <pre>
+       * A kill policy for the task. Implemented for executor-less
+       * command-based and docker tasks. For tasks that specify an
+       * executor, it is the executor's responsibility to implement
+       * the kill policy.
+       * </pre>
+       */
+      public Builder setKillPolicy(org.apache.mesos.Protos.KillPolicy value) {
+        if (killPolicyBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          killPolicy_ = value;
+          onChanged();
+        } else {
+          killPolicyBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000200;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.KillPolicy kill_policy = 12;</code>
+       *
+       * <pre>
+       * A kill policy for the task. Implemented for executor-less
+       * command-based and docker tasks. For tasks that specify an
+       * executor, it is the executor's responsibility to implement
+       * the kill policy.
+       * </pre>
+       */
+      public Builder setKillPolicy(
+          org.apache.mesos.Protos.KillPolicy.Builder builderForValue) {
+        if (killPolicyBuilder_ == null) {
+          killPolicy_ = builderForValue.build();
+          onChanged();
+        } else {
+          killPolicyBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000200;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.KillPolicy kill_policy = 12;</code>
+       *
+       * <pre>
+       * A kill policy for the task. Implemented for executor-less
+       * command-based and docker tasks. For tasks that specify an
+       * executor, it is the executor's responsibility to implement
+       * the kill policy.
+       * </pre>
+       */
+      public Builder mergeKillPolicy(org.apache.mesos.Protos.KillPolicy value) {
+        if (killPolicyBuilder_ == null) {
+          if (((bitField0_ & 0x00000200) == 0x00000200) &&
+              killPolicy_ != org.apache.mesos.Protos.KillPolicy.getDefaultInstance()) {
+            killPolicy_ =
+              org.apache.mesos.Protos.KillPolicy.newBuilder(killPolicy_).mergeFrom(value).buildPartial();
+          } else {
+            killPolicy_ = value;
+          }
+          onChanged();
+        } else {
+          killPolicyBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000200;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.KillPolicy kill_policy = 12;</code>
+       *
+       * <pre>
+       * A kill policy for the task. Implemented for executor-less
+       * command-based and docker tasks. For tasks that specify an
+       * executor, it is the executor's responsibility to implement
+       * the kill policy.
+       * </pre>
+       */
+      public Builder clearKillPolicy() {
+        if (killPolicyBuilder_ == null) {
+          killPolicy_ = org.apache.mesos.Protos.KillPolicy.getDefaultInstance();
+          onChanged();
+        } else {
+          killPolicyBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000200);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.KillPolicy kill_policy = 12;</code>
+       *
+       * <pre>
+       * A kill policy for the task. Implemented for executor-less
+       * command-based and docker tasks. For tasks that specify an
+       * executor, it is the executor's responsibility to implement
+       * the kill policy.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.KillPolicy.Builder getKillPolicyBuilder() {
+        bitField0_ |= 0x00000200;
+        onChanged();
+        return getKillPolicyFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.KillPolicy kill_policy = 12;</code>
+       *
+       * <pre>
+       * A kill policy for the task. Implemented for executor-less
+       * command-based and docker tasks. For tasks that specify an
+       * executor, it is the executor's responsibility to implement
+       * the kill policy.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.KillPolicyOrBuilder getKillPolicyOrBuilder() {
+        if (killPolicyBuilder_ != null) {
+          return killPolicyBuilder_.getMessageOrBuilder();
+        } else {
+          return killPolicy_;
+        }
+      }
+      /**
+       * <code>optional .mesos.KillPolicy kill_policy = 12;</code>
+       *
+       * <pre>
+       * A kill policy for the task. Implemented for executor-less
+       * command-based and docker tasks. For tasks that specify an
+       * executor, it is the executor's responsibility to implement
+       * the kill policy.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.KillPolicy, org.apache.mesos.Protos.KillPolicy.Builder, org.apache.mesos.Protos.KillPolicyOrBuilder> 
+          getKillPolicyFieldBuilder() {
+        if (killPolicyBuilder_ == null) {
+          killPolicyBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.KillPolicy, org.apache.mesos.Protos.KillPolicy.Builder, org.apache.mesos.Protos.KillPolicyOrBuilder>(
+                  killPolicy_,
+                  getParentForChildren(),
+                  isClean());
+          killPolicy_ = null;
+        }
+        return killPolicyBuilder_;
+      }
+
+      // optional bytes data = 6;
+      private com.google.protobuf.ByteString data_ = com.google.protobuf.ByteString.EMPTY;
+      /**
+       * <code>optional bytes data = 6;</code>
+       */
+      public boolean hasData() {
+        return ((bitField0_ & 0x00000400) == 0x00000400);
+      }
+      /**
+       * <code>optional bytes data = 6;</code>
+       */
+      public com.google.protobuf.ByteString getData() {
+        return data_;
+      }
+      /**
+       * <code>optional bytes data = 6;</code>
+       */
+      public Builder setData(com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000400;
+        data_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional bytes data = 6;</code>
+       */
+      public Builder clearData() {
+        bitField0_ = (bitField0_ & ~0x00000400);
+        data_ = getDefaultInstance().getData();
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.Labels labels = 10;
+      private org.apache.mesos.Protos.Labels labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Labels, org.apache.mesos.Protos.Labels.Builder, org.apache.mesos.Protos.LabelsOrBuilder> labelsBuilder_;
+      /**
+       * <code>optional .mesos.Labels labels = 10;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and slave endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and slave processes. Therefore,
+       * labels should be used to tag tasks with light-weight meta-data.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public boolean hasLabels() {
+        return ((bitField0_ & 0x00000800) == 0x00000800);
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 10;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and slave endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and slave processes. Therefore,
+       * labels should be used to tag tasks with light-weight meta-data.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Labels getLabels() {
+        if (labelsBuilder_ == null) {
+          return labels_;
+        } else {
+          return labelsBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 10;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and slave endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and slave processes. Therefore,
+       * labels should be used to tag tasks with light-weight meta-data.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public Builder setLabels(org.apache.mesos.Protos.Labels value) {
+        if (labelsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          labels_ = value;
+          onChanged();
+        } else {
+          labelsBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 10;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and slave endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and slave processes. Therefore,
+       * labels should be used to tag tasks with light-weight meta-data.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public Builder setLabels(
+          org.apache.mesos.Protos.Labels.Builder builderForValue) {
+        if (labelsBuilder_ == null) {
+          labels_ = builderForValue.build();
+          onChanged();
+        } else {
+          labelsBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 10;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and slave endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and slave processes. Therefore,
+       * labels should be used to tag tasks with light-weight meta-data.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public Builder mergeLabels(org.apache.mesos.Protos.Labels value) {
+        if (labelsBuilder_ == null) {
+          if (((bitField0_ & 0x00000800) == 0x00000800) &&
+              labels_ != org.apache.mesos.Protos.Labels.getDefaultInstance()) {
+            labels_ =
+              org.apache.mesos.Protos.Labels.newBuilder(labels_).mergeFrom(value).buildPartial();
+          } else {
+            labels_ = value;
+          }
+          onChanged();
+        } else {
+          labelsBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 10;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and slave endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and slave processes. Therefore,
+       * labels should be used to tag tasks with light-weight meta-data.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public Builder clearLabels() {
+        if (labelsBuilder_ == null) {
+          labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+          onChanged();
+        } else {
+          labelsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000800);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 10;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and slave endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and slave processes. Therefore,
+       * labels should be used to tag tasks with light-weight meta-data.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Labels.Builder getLabelsBuilder() {
+        bitField0_ |= 0x00000800;
+        onChanged();
+        return getLabelsFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 10;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and slave endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and slave processes. Therefore,
+       * labels should be used to tag tasks with light-weight meta-data.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+        if (labelsBuilder_ != null) {
+          return labelsBuilder_.getMessageOrBuilder();
+        } else {
+          return labels_;
+        }
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 10;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and slave endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and slave processes. Therefore,
+       * labels should be used to tag tasks with light-weight meta-data.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Labels, org.apache.mesos.Protos.Labels.Builder, org.apache.mesos.Protos.LabelsOrBuilder> 
+          getLabelsFieldBuilder() {
+        if (labelsBuilder_ == null) {
+          labelsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Labels, org.apache.mesos.Protos.Labels.Builder, org.apache.mesos.Protos.LabelsOrBuilder>(
+                  labels_,
+                  getParentForChildren(),
+                  isClean());
+          labels_ = null;
+        }
+        return labelsBuilder_;
+      }
+
+      // optional .mesos.DiscoveryInfo discovery = 11;
+      private org.apache.mesos.Protos.DiscoveryInfo discovery_ = org.apache.mesos.Protos.DiscoveryInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.DiscoveryInfo, org.apache.mesos.Protos.DiscoveryInfo.Builder, org.apache.mesos.Protos.DiscoveryInfoOrBuilder> discoveryBuilder_;
+      /**
+       * <code>optional .mesos.DiscoveryInfo discovery = 11;</code>
+       *
+       * <pre>
+       * Service discovery information for the task. It is not interpreted
+       * or acted upon by Mesos. It is up to a service discovery system
+       * to use this information as needed and to handle tasks without
+       * service discovery information.
+       * </pre>
+       */
+      public boolean hasDiscovery() {
+        return ((bitField0_ & 0x00001000) == 0x00001000);
+      }
+      /**
+       * <code>optional .mesos.DiscoveryInfo discovery = 11;</code>
+       *
+       * <pre>
+       * Service discovery information for the task. It is not interpreted
+       * or acted upon by Mesos. It is up to a service discovery system
+       * to use this information as needed and to handle tasks without
+       * service discovery information.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.DiscoveryInfo getDiscovery() {
+        if (discoveryBuilder_ == null) {
+          return discovery_;
+        } else {
+          return discoveryBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.DiscoveryInfo discovery = 11;</code>
+       *
+       * <pre>
+       * Service discovery information for the task. It is not interpreted
+       * or acted upon by Mesos. It is up to a service discovery system
+       * to use this information as needed and to handle tasks without
+       * service discovery information.
+       * </pre>
+       */
+      public Builder setDiscovery(org.apache.mesos.Protos.DiscoveryInfo value) {
+        if (discoveryBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          discovery_ = value;
+          onChanged();
+        } else {
+          discoveryBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00001000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.DiscoveryInfo discovery = 11;</code>
+       *
+       * <pre>
+       * Service discovery information for the task. It is not interpreted
+       * or acted upon by Mesos. It is up to a service discovery system
+       * to use this information as needed and to handle tasks without
+       * service discovery information.
+       * </pre>
+       */
+      public Builder setDiscovery(
+          org.apache.mesos.Protos.DiscoveryInfo.Builder builderForValue) {
+        if (discoveryBuilder_ == null) {
+          discovery_ = builderForValue.build();
+          onChanged();
+        } else {
+          discoveryBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00001000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.DiscoveryInfo discovery = 11;</code>
+       *
+       * <pre>
+       * Service discovery information for the task. It is not interpreted
+       * or acted upon by Mesos. It is up to a service discovery system
+       * to use this information as needed and to handle tasks without
+       * service discovery information.
+       * </pre>
+       */
+      public Builder mergeDiscovery(org.apache.mesos.Protos.DiscoveryInfo value) {
+        if (discoveryBuilder_ == null) {
+          if (((bitField0_ & 0x00001000) == 0x00001000) &&
+              discovery_ != org.apache.mesos.Protos.DiscoveryInfo.getDefaultInstance()) {
+            discovery_ =
+              org.apache.mesos.Protos.DiscoveryInfo.newBuilder(discovery_).mergeFrom(value).buildPartial();
+          } else {
+            discovery_ = value;
+          }
+          onChanged();
+        } else {
+          discoveryBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00001000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.DiscoveryInfo discovery = 11;</code>
+       *
+       * <pre>
+       * Service discovery information for the task. It is not interpreted
+       * or acted upon by Mesos. It is up to a service discovery system
+       * to use this information as needed and to handle tasks without
+       * service discovery information.
+       * </pre>
+       */
+      public Builder clearDiscovery() {
+        if (discoveryBuilder_ == null) {
+          discovery_ = org.apache.mesos.Protos.DiscoveryInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          discoveryBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00001000);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.DiscoveryInfo discovery = 11;</code>
+       *
+       * <pre>
+       * Service discovery information for the task. It is not interpreted
+       * or acted upon by Mesos. It is up to a service discovery system
+       * to use this information as needed and to handle tasks without
+       * service discovery information.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.DiscoveryInfo.Builder getDiscoveryBuilder() {
+        bitField0_ |= 0x00001000;
+        onChanged();
+        return getDiscoveryFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.DiscoveryInfo discovery = 11;</code>
+       *
+       * <pre>
+       * Service discovery information for the task. It is not interpreted
+       * or acted upon by Mesos. It is up to a service discovery system
+       * to use this information as needed and to handle tasks without
+       * service discovery information.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.DiscoveryInfoOrBuilder getDiscoveryOrBuilder() {
+        if (discoveryBuilder_ != null) {
+          return discoveryBuilder_.getMessageOrBuilder();
+        } else {
+          return discovery_;
+        }
+      }
+      /**
+       * <code>optional .mesos.DiscoveryInfo discovery = 11;</code>
+       *
+       * <pre>
+       * Service discovery information for the task. It is not interpreted
+       * or acted upon by Mesos. It is up to a service discovery system
+       * to use this information as needed and to handle tasks without
+       * service discovery information.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.DiscoveryInfo, org.apache.mesos.Protos.DiscoveryInfo.Builder, org.apache.mesos.Protos.DiscoveryInfoOrBuilder> 
+          getDiscoveryFieldBuilder() {
+        if (discoveryBuilder_ == null) {
+          discoveryBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.DiscoveryInfo, org.apache.mesos.Protos.DiscoveryInfo.Builder, org.apache.mesos.Protos.DiscoveryInfoOrBuilder>(
+                  discovery_,
+                  getParentForChildren(),
+                  isClean());
+          discovery_ = null;
+        }
+        return discoveryBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.TaskInfo)
+    }
+
+    static {
+      defaultInstance = new TaskInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.TaskInfo)
+  }
+
+  public interface TaskGroupInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // repeated .mesos.TaskInfo tasks = 1;
+    /**
+     * <code>repeated .mesos.TaskInfo tasks = 1;</code>
+     */
+    java.util.List<org.apache.mesos.Protos.TaskInfo> 
+        getTasksList();
+    /**
+     * <code>repeated .mesos.TaskInfo tasks = 1;</code>
+     */
+    org.apache.mesos.Protos.TaskInfo getTasks(int index);
+    /**
+     * <code>repeated .mesos.TaskInfo tasks = 1;</code>
+     */
+    int getTasksCount();
+    /**
+     * <code>repeated .mesos.TaskInfo tasks = 1;</code>
+     */
+    java.util.List<? extends org.apache.mesos.Protos.TaskInfoOrBuilder> 
+        getTasksOrBuilderList();
+    /**
+     * <code>repeated .mesos.TaskInfo tasks = 1;</code>
+     */
+    org.apache.mesos.Protos.TaskInfoOrBuilder getTasksOrBuilder(
+        int index);
+  }
+  /**
+   * Protobuf type {@code mesos.TaskGroupInfo}
+   *
+   * <pre>
+   **
+   * Describes a group of tasks that belong to an executor. The
+   * executor will receive the task group in a single message to
+   * allow the group to be launched "atomically".
+   *
+   * NOTES:
+   * 1) `NetworkInfo` must not be set inside task's `ContainerInfo`.
+   * 2) `TaskInfo.executor` doesn't need to set. If set, it should match
+   *    `LaunchGroup.executor`.
+   * </pre>
+   */
+  public static final class TaskGroupInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements TaskGroupInfoOrBuilder {
+    // Use TaskGroupInfo.newBuilder() to construct.
+    private TaskGroupInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private TaskGroupInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final TaskGroupInfo defaultInstance;
+    public static TaskGroupInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public TaskGroupInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private TaskGroupInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                tasks_ = new java.util.ArrayList<org.apache.mesos.Protos.TaskInfo>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              tasks_.add(input.readMessage(org.apache.mesos.Protos.TaskInfo.PARSER, extensionRegistry));
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+          tasks_ = java.util.Collections.unmodifiableList(tasks_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_TaskGroupInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_TaskGroupInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.TaskGroupInfo.class, org.apache.mesos.Protos.TaskGroupInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<TaskGroupInfo> PARSER =
+        new com.google.protobuf.AbstractParser<TaskGroupInfo>() {
+      public TaskGroupInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new TaskGroupInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<TaskGroupInfo> getParserForType() {
+      return PARSER;
+    }
+
+    // repeated .mesos.TaskInfo tasks = 1;
+    public static final int TASKS_FIELD_NUMBER = 1;
+    private java.util.List<org.apache.mesos.Protos.TaskInfo> tasks_;
+    /**
+     * <code>repeated .mesos.TaskInfo tasks = 1;</code>
+     */
+    public java.util.List<org.apache.mesos.Protos.TaskInfo> getTasksList() {
+      return tasks_;
+    }
+    /**
+     * <code>repeated .mesos.TaskInfo tasks = 1;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.Protos.TaskInfoOrBuilder> 
+        getTasksOrBuilderList() {
+      return tasks_;
+    }
+    /**
+     * <code>repeated .mesos.TaskInfo tasks = 1;</code>
+     */
+    public int getTasksCount() {
+      return tasks_.size();
+    }
+    /**
+     * <code>repeated .mesos.TaskInfo tasks = 1;</code>
+     */
+    public org.apache.mesos.Protos.TaskInfo getTasks(int index) {
+      return tasks_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.TaskInfo tasks = 1;</code>
+     */
+    public org.apache.mesos.Protos.TaskInfoOrBuilder getTasksOrBuilder(
+        int index) {
+      return tasks_.get(index);
+    }
+
+    private void initFields() {
+      tasks_ = java.util.Collections.emptyList();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      for (int i = 0; i < getTasksCount(); i++) {
+        if (!getTasks(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      for (int i = 0; i < tasks_.size(); i++) {
+        output.writeMessage(1, tasks_.get(i));
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      for (int i = 0; i < tasks_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, tasks_.get(i));
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.TaskGroupInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.TaskGroupInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.TaskGroupInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.TaskGroupInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.TaskGroupInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.TaskGroupInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.TaskGroupInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.TaskGroupInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.TaskGroupInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.TaskGroupInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.TaskGroupInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.TaskGroupInfo}
+     *
+     * <pre>
+     **
+     * Describes a group of tasks that belong to an executor. The
+     * executor will receive the task group in a single message to
+     * allow the group to be launched "atomically".
+     *
+     * NOTES:
+     * 1) `NetworkInfo` must not be set inside task's `ContainerInfo`.
+     * 2) `TaskInfo.executor` doesn't need to set. If set, it should match
+     *    `LaunchGroup.executor`.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.TaskGroupInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_TaskGroupInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_TaskGroupInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.TaskGroupInfo.class, org.apache.mesos.Protos.TaskGroupInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.TaskGroupInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getTasksFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (tasksBuilder_ == null) {
+          tasks_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+        } else {
+          tasksBuilder_.clear();
+        }
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_TaskGroupInfo_descriptor;
+      }
+
+      public org.apache.mesos.Protos.TaskGroupInfo getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.TaskGroupInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.TaskGroupInfo build() {
+        org.apache.mesos.Protos.TaskGroupInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.TaskGroupInfo buildPartial() {
+        org.apache.mesos.Protos.TaskGroupInfo result = new org.apache.mesos.Protos.TaskGroupInfo(this);
+        int from_bitField0_ = bitField0_;
+        if (tasksBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            tasks_ = java.util.Collections.unmodifiableList(tasks_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.tasks_ = tasks_;
+        } else {
+          result.tasks_ = tasksBuilder_.build();
+        }
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.TaskGroupInfo) {
+          return mergeFrom((org.apache.mesos.Protos.TaskGroupInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.TaskGroupInfo other) {
+        if (other == org.apache.mesos.Protos.TaskGroupInfo.getDefaultInstance()) return this;
+        if (tasksBuilder_ == null) {
+          if (!other.tasks_.isEmpty()) {
+            if (tasks_.isEmpty()) {
+              tasks_ = other.tasks_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureTasksIsMutable();
+              tasks_.addAll(other.tasks_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.tasks_.isEmpty()) {
+            if (tasksBuilder_.isEmpty()) {
+              tasksBuilder_.dispose();
+              tasksBuilder_ = null;
+              tasks_ = other.tasks_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              tasksBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getTasksFieldBuilder() : null;
+            } else {
+              tasksBuilder_.addAllMessages(other.tasks_);
+            }
+          }
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        for (int i = 0; i < getTasksCount(); i++) {
+          if (!getTasks(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.TaskGroupInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.TaskGroupInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // repeated .mesos.TaskInfo tasks = 1;
+      private java.util.List<org.apache.mesos.Protos.TaskInfo> tasks_ =
+        java.util.Collections.emptyList();
+      private void ensureTasksIsMutable() {
+        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+          tasks_ = new java.util.ArrayList<org.apache.mesos.Protos.TaskInfo>(tasks_);
+          bitField0_ |= 0x00000001;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.TaskInfo, org.apache.mesos.Protos.TaskInfo.Builder, org.apache.mesos.Protos.TaskInfoOrBuilder> tasksBuilder_;
+
+      /**
+       * <code>repeated .mesos.TaskInfo tasks = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.TaskInfo> getTasksList() {
+        if (tasksBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(tasks_);
+        } else {
+          return tasksBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.TaskInfo tasks = 1;</code>
+       */
+      public int getTasksCount() {
+        if (tasksBuilder_ == null) {
+          return tasks_.size();
+        } else {
+          return tasksBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.TaskInfo tasks = 1;</code>
+       */
+      public org.apache.mesos.Protos.TaskInfo getTasks(int index) {
+        if (tasksBuilder_ == null) {
+          return tasks_.get(index);
+        } else {
+          return tasksBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.TaskInfo tasks = 1;</code>
+       */
+      public Builder setTasks(
+          int index, org.apache.mesos.Protos.TaskInfo value) {
+        if (tasksBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureTasksIsMutable();
+          tasks_.set(index, value);
+          onChanged();
+        } else {
+          tasksBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.TaskInfo tasks = 1;</code>
+       */
+      public Builder setTasks(
+          int index, org.apache.mesos.Protos.TaskInfo.Builder builderForValue) {
+        if (tasksBuilder_ == null) {
+          ensureTasksIsMutable();
+          tasks_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          tasksBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.TaskInfo tasks = 1;</code>
+       */
+      public Builder addTasks(org.apache.mesos.Protos.TaskInfo value) {
+        if (tasksBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureTasksIsMutable();
+          tasks_.add(value);
+          onChanged();
+        } else {
+          tasksBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.TaskInfo tasks = 1;</code>
+       */
+      public Builder addTasks(
+          int index, org.apache.mesos.Protos.TaskInfo value) {
+        if (tasksBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureTasksIsMutable();
+          tasks_.add(index, value);
+          onChanged();
+        } else {
+          tasksBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.TaskInfo tasks = 1;</code>
+       */
+      public Builder addTasks(
+          org.apache.mesos.Protos.TaskInfo.Builder builderForValue) {
+        if (tasksBuilder_ == null) {
+          ensureTasksIsMutable();
+          tasks_.add(builderForValue.build());
+          onChanged();
+        } else {
+          tasksBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.TaskInfo tasks = 1;</code>
+       */
+      public Builder addTasks(
+          int index, org.apache.mesos.Protos.TaskInfo.Builder builderForValue) {
+        if (tasksBuilder_ == null) {
+          ensureTasksIsMutable();
+          tasks_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          tasksBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.TaskInfo tasks = 1;</code>
+       */
+      public Builder addAllTasks(
+          java.lang.Iterable<? extends org.apache.mesos.Protos.TaskInfo> values) {
+        if (tasksBuilder_ == null) {
+          ensureTasksIsMutable();
+          super.addAll(values, tasks_);
+          onChanged();
+        } else {
+          tasksBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.TaskInfo tasks = 1;</code>
+       */
+      public Builder clearTasks() {
+        if (tasksBuilder_ == null) {
+          tasks_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+        } else {
+          tasksBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.TaskInfo tasks = 1;</code>
+       */
+      public Builder removeTasks(int index) {
+        if (tasksBuilder_ == null) {
+          ensureTasksIsMutable();
+          tasks_.remove(index);
+          onChanged();
+        } else {
+          tasksBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.TaskInfo tasks = 1;</code>
+       */
+      public org.apache.mesos.Protos.TaskInfo.Builder getTasksBuilder(
+          int index) {
+        return getTasksFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.TaskInfo tasks = 1;</code>
+       */
+      public org.apache.mesos.Protos.TaskInfoOrBuilder getTasksOrBuilder(
+          int index) {
+        if (tasksBuilder_ == null) {
+          return tasks_.get(index);  } else {
+          return tasksBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.TaskInfo tasks = 1;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.TaskInfoOrBuilder> 
+           getTasksOrBuilderList() {
+        if (tasksBuilder_ != null) {
+          return tasksBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(tasks_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.TaskInfo tasks = 1;</code>
+       */
+      public org.apache.mesos.Protos.TaskInfo.Builder addTasksBuilder() {
+        return getTasksFieldBuilder().addBuilder(
+            org.apache.mesos.Protos.TaskInfo.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.TaskInfo tasks = 1;</code>
+       */
+      public org.apache.mesos.Protos.TaskInfo.Builder addTasksBuilder(
+          int index) {
+        return getTasksFieldBuilder().addBuilder(
+            index, org.apache.mesos.Protos.TaskInfo.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.TaskInfo tasks = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.TaskInfo.Builder> 
+           getTasksBuilderList() {
+        return getTasksFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.TaskInfo, org.apache.mesos.Protos.TaskInfo.Builder, org.apache.mesos.Protos.TaskInfoOrBuilder> 
+          getTasksFieldBuilder() {
+        if (tasksBuilder_ == null) {
+          tasksBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.TaskInfo, org.apache.mesos.Protos.TaskInfo.Builder, org.apache.mesos.Protos.TaskInfoOrBuilder>(
+                  tasks_,
+                  ((bitField0_ & 0x00000001) == 0x00000001),
+                  getParentForChildren(),
+                  isClean());
+          tasks_ = null;
+        }
+        return tasksBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.TaskGroupInfo)
+    }
+
+    static {
+      defaultInstance = new TaskGroupInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.TaskGroupInfo)
+  }
+
+  public interface TaskOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string name = 1;
+    /**
+     * <code>required string name = 1;</code>
+     */
+    boolean hasName();
+    /**
+     * <code>required string name = 1;</code>
+     */
+    java.lang.String getName();
+    /**
+     * <code>required string name = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getNameBytes();
+
+    // required .mesos.TaskID task_id = 2;
+    /**
+     * <code>required .mesos.TaskID task_id = 2;</code>
+     */
+    boolean hasTaskId();
+    /**
+     * <code>required .mesos.TaskID task_id = 2;</code>
+     */
+    org.apache.mesos.Protos.TaskID getTaskId();
+    /**
+     * <code>required .mesos.TaskID task_id = 2;</code>
+     */
+    org.apache.mesos.Protos.TaskIDOrBuilder getTaskIdOrBuilder();
+
+    // required .mesos.FrameworkID framework_id = 3;
+    /**
+     * <code>required .mesos.FrameworkID framework_id = 3;</code>
+     */
+    boolean hasFrameworkId();
+    /**
+     * <code>required .mesos.FrameworkID framework_id = 3;</code>
+     */
+    org.apache.mesos.Protos.FrameworkID getFrameworkId();
+    /**
+     * <code>required .mesos.FrameworkID framework_id = 3;</code>
+     */
+    org.apache.mesos.Protos.FrameworkIDOrBuilder getFrameworkIdOrBuilder();
+
+    // optional .mesos.ExecutorID executor_id = 4;
+    /**
+     * <code>optional .mesos.ExecutorID executor_id = 4;</code>
+     */
+    boolean hasExecutorId();
+    /**
+     * <code>optional .mesos.ExecutorID executor_id = 4;</code>
+     */
+    org.apache.mesos.Protos.ExecutorID getExecutorId();
+    /**
+     * <code>optional .mesos.ExecutorID executor_id = 4;</code>
+     */
+    org.apache.mesos.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder();
+
+    // required .mesos.SlaveID slave_id = 5;
+    /**
+     * <code>required .mesos.SlaveID slave_id = 5;</code>
+     */
+    boolean hasSlaveId();
+    /**
+     * <code>required .mesos.SlaveID slave_id = 5;</code>
+     */
+    org.apache.mesos.Protos.SlaveID getSlaveId();
+    /**
+     * <code>required .mesos.SlaveID slave_id = 5;</code>
+     */
+    org.apache.mesos.Protos.SlaveIDOrBuilder getSlaveIdOrBuilder();
+
+    // required .mesos.TaskState state = 6;
+    /**
+     * <code>required .mesos.TaskState state = 6;</code>
+     *
+     * <pre>
+     * Latest state of the task.
+     * </pre>
+     */
+    boolean hasState();
+    /**
+     * <code>required .mesos.TaskState state = 6;</code>
+     *
+     * <pre>
+     * Latest state of the task.
+     * </pre>
+     */
+    org.apache.mesos.Protos.TaskState getState();
+
+    // repeated .mesos.Resource resources = 7;
+    /**
+     * <code>repeated .mesos.Resource resources = 7;</code>
+     */
+    java.util.List<org.apache.mesos.Protos.Resource> 
+        getResourcesList();
+    /**
+     * <code>repeated .mesos.Resource resources = 7;</code>
+     */
+    org.apache.mesos.Protos.Resource getResources(int index);
+    /**
+     * <code>repeated .mesos.Resource resources = 7;</code>
+     */
+    int getResourcesCount();
+    /**
+     * <code>repeated .mesos.Resource resources = 7;</code>
+     */
+    java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+        getResourcesOrBuilderList();
+    /**
+     * <code>repeated .mesos.Resource resources = 7;</code>
+     */
+    org.apache.mesos.Protos.ResourceOrBuilder getResourcesOrBuilder(
+        int index);
+
+    // repeated .mesos.TaskStatus statuses = 8;
+    /**
+     * <code>repeated .mesos.TaskStatus statuses = 8;</code>
+     */
+    java.util.List<org.apache.mesos.Protos.TaskStatus> 
+        getStatusesList();
+    /**
+     * <code>repeated .mesos.TaskStatus statuses = 8;</code>
+     */
+    org.apache.mesos.Protos.TaskStatus getStatuses(int index);
+    /**
+     * <code>repeated .mesos.TaskStatus statuses = 8;</code>
+     */
+    int getStatusesCount();
+    /**
+     * <code>repeated .mesos.TaskStatus statuses = 8;</code>
+     */
+    java.util.List<? extends org.apache.mesos.Protos.TaskStatusOrBuilder> 
+        getStatusesOrBuilderList();
+    /**
+     * <code>repeated .mesos.TaskStatus statuses = 8;</code>
+     */
+    org.apache.mesos.Protos.TaskStatusOrBuilder getStatusesOrBuilder(
+        int index);
+
+    // optional .mesos.TaskState status_update_state = 9;
+    /**
+     * <code>optional .mesos.TaskState status_update_state = 9;</code>
+     *
+     * <pre>
+     * These fields correspond to the state and uuid of the latest
+     * status update forwarded to the master.
+     * NOTE: Either both the fields must be set or both must be unset.
+     * </pre>
+     */
+    boolean hasStatusUpdateState();
+    /**
+     * <code>optional .mesos.TaskState status_update_state = 9;</code>
+     *
+     * <pre>
+     * These fields correspond to the state and uuid of the latest
+     * status update forwarded to the master.
+     * NOTE: Either both the fields must be set or both must be unset.
+     * </pre>
+     */
+    org.apache.mesos.Protos.TaskState getStatusUpdateState();
+
+    // optional bytes status_update_uuid = 10;
+    /**
+     * <code>optional bytes status_update_uuid = 10;</code>
+     */
+    boolean hasStatusUpdateUuid();
+    /**
+     * <code>optional bytes status_update_uuid = 10;</code>
+     */
+    com.google.protobuf.ByteString getStatusUpdateUuid();
+
+    // optional .mesos.Labels labels = 11;
+    /**
+     * <code>optional .mesos.Labels labels = 11;</code>
+     */
+    boolean hasLabels();
+    /**
+     * <code>optional .mesos.Labels labels = 11;</code>
+     */
+    org.apache.mesos.Protos.Labels getLabels();
+    /**
+     * <code>optional .mesos.Labels labels = 11;</code>
+     */
+    org.apache.mesos.Protos.LabelsOrBuilder getLabelsOrBuilder();
+
+    // optional .mesos.DiscoveryInfo discovery = 12;
+    /**
+     * <code>optional .mesos.DiscoveryInfo discovery = 12;</code>
+     *
+     * <pre>
+     * Service discovery information for the task. It is not interpreted
+     * or acted upon by Mesos. It is up to a service discovery system
+     * to use this information as needed and to handle tasks without
+     * service discovery information.
+     * </pre>
+     */
+    boolean hasDiscovery();
+    /**
+     * <code>optional .mesos.DiscoveryInfo discovery = 12;</code>
+     *
+     * <pre>
+     * Service discovery information for the task. It is not interpreted
+     * or acted upon by Mesos. It is up to a service discovery system
+     * to use this information as needed and to handle tasks without
+     * service discovery information.
+     * </pre>
+     */
+    org.apache.mesos.Protos.DiscoveryInfo getDiscovery();
+    /**
+     * <code>optional .mesos.DiscoveryInfo discovery = 12;</code>
+     *
+     * <pre>
+     * Service discovery information for the task. It is not interpreted
+     * or acted upon by Mesos. It is up to a service discovery system
+     * to use this information as needed and to handle tasks without
+     * service discovery information.
+     * </pre>
+     */
+    org.apache.mesos.Protos.DiscoveryInfoOrBuilder getDiscoveryOrBuilder();
+
+    // optional .mesos.ContainerInfo container = 13;
+    /**
+     * <code>optional .mesos.ContainerInfo container = 13;</code>
+     *
+     * <pre>
+     * Container information for the task.
+     * </pre>
+     */
+    boolean hasContainer();
+    /**
+     * <code>optional .mesos.ContainerInfo container = 13;</code>
+     *
+     * <pre>
+     * Container information for the task.
+     * </pre>
+     */
+    org.apache.mesos.Protos.ContainerInfo getContainer();
+    /**
+     * <code>optional .mesos.ContainerInfo container = 13;</code>
+     *
+     * <pre>
+     * Container information for the task.
+     * </pre>
+     */
+    org.apache.mesos.Protos.ContainerInfoOrBuilder getContainerOrBuilder();
+
+    // optional string user = 14;
+    /**
+     * <code>optional string user = 14;</code>
+     *
+     * <pre>
+     * Specific user under which task is running.
+     * </pre>
+     */
+    boolean hasUser();
+    /**
+     * <code>optional string user = 14;</code>
+     *
+     * <pre>
+     * Specific user under which task is running.
+     * </pre>
+     */
+    java.lang.String getUser();
+    /**
+     * <code>optional string user = 14;</code>
+     *
+     * <pre>
+     * Specific user under which task is running.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getUserBytes();
+  }
+  /**
+   * Protobuf type {@code mesos.Task}
+   *
+   * <pre>
+   **
+   * Describes a task, similar to `TaskInfo`.
+   *
+   * `Task` is used in some of the Mesos messages found below.
+   * `Task` is used instead of `TaskInfo` if:
+   *   1) we need additional IDs, such as a specific
+   *      framework, executor, or agent; or
+   *   2) we do not need the additional data, such as the command run by the
+   *      task or the health checks.  These additional fields may be large and
+   *      unnecessary for some Mesos messages.
+   *
+   * `Task` is generally constructed from a `TaskInfo`.  See protobuf::createTask.
+   * </pre>
+   */
+  public static final class Task extends
+      com.google.protobuf.GeneratedMessage
+      implements TaskOrBuilder {
+    // Use Task.newBuilder() to construct.
+    private Task(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Task(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Task defaultInstance;
+    public static Task getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Task getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Task(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              name_ = input.readBytes();
+              break;
+            }
+            case 18: {
+              org.apache.mesos.Protos.TaskID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = taskId_.toBuilder();
+              }
+              taskId_ = input.readMessage(org.apache.mesos.Protos.TaskID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(taskId_);
+                taskId_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+            case 26: {
+              org.apache.mesos.Protos.FrameworkID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                subBuilder = frameworkId_.toBuilder();
+              }
+              frameworkId_ = input.readMessage(org.apache.mesos.Protos.FrameworkID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(frameworkId_);
+                frameworkId_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000004;
+              break;
+            }
+            case 34: {
+              org.apache.mesos.Protos.ExecutorID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                subBuilder = executorId_.toBuilder();
+              }
+              executorId_ = input.readMessage(org.apache.mesos.Protos.ExecutorID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(executorId_);
+                executorId_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000008;
+              break;
+            }
+            case 42: {
+              org.apache.mesos.Protos.SlaveID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000010) == 0x00000010)) {
+                subBuilder = slaveId_.toBuilder();
+              }
+              slaveId_ = input.readMessage(org.apache.mesos.Protos.SlaveID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(slaveId_);
+                slaveId_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000010;
+              break;
+            }
+            case 48: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.Protos.TaskState value = org.apache.mesos.Protos.TaskState.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(6, rawValue);
+              } else {
+                bitField0_ |= 0x00000020;
+                state_ = value;
+              }
+              break;
+            }
+            case 58: {
+              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
+                resources_ = new java.util.ArrayList<org.apache.mesos.Protos.Resource>();
+                mutable_bitField0_ |= 0x00000040;
+              }
+              resources_.add(input.readMessage(org.apache.mesos.Protos.Resource.PARSER, extensionRegistry));
+              break;
+            }
+            case 66: {
+              if (!((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
+                statuses_ = new java.util.ArrayList<org.apache.mesos.Protos.TaskStatus>();
+                mutable_bitField0_ |= 0x00000080;
+              }
+              statuses_.add(input.readMessage(org.apache.mesos.Protos.TaskStatus.PARSER, extensionRegistry));
+              break;
+            }
+            case 72: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.Protos.TaskState value = org.apache.mesos.Protos.TaskState.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(9, rawValue);
+              } else {
+                bitField0_ |= 0x00000040;
+                statusUpdateState_ = value;
+              }
+              break;
+            }
+            case 82: {
+              bitField0_ |= 0x00000080;
+              statusUpdateUuid_ = input.readBytes();
+              break;
+            }
+            case 90: {
+              org.apache.mesos.Protos.Labels.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000100) == 0x00000100)) {
+                subBuilder = labels_.toBuilder();
+              }
+              labels_ = input.readMessage(org.apache.mesos.Protos.Labels.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(labels_);
+                labels_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000100;
+              break;
+            }
+            case 98: {
+              org.apache.mesos.Protos.DiscoveryInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000200) == 0x00000200)) {
+                subBuilder = discovery_.toBuilder();
+              }
+              discovery_ = input.readMessage(org.apache.mesos.Protos.DiscoveryInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(discovery_);
+                discovery_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000200;
+              break;
+            }
+            case 106: {
+              org.apache.mesos.Protos.ContainerInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000400) == 0x00000400)) {
+                subBuilder = container_.toBuilder();
+              }
+              container_ = input.readMessage(org.apache.mesos.Protos.ContainerInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(container_);
+                container_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000400;
+              break;
+            }
+            case 114: {
+              bitField0_ |= 0x00000800;
+              user_ = input.readBytes();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
+          resources_ = java.util.Collections.unmodifiableList(resources_);
+        }
+        if (((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
+          statuses_ = java.util.Collections.unmodifiableList(statuses_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_Task_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_Task_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.Task.class, org.apache.mesos.Protos.Task.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Task> PARSER =
+        new com.google.protobuf.AbstractParser<Task>() {
+      public Task parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Task(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Task> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string name = 1;
+    public static final int NAME_FIELD_NUMBER = 1;
+    private java.lang.Object name_;
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public boolean hasName() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public java.lang.String getName() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          name_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getNameBytes() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        name_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // required .mesos.TaskID task_id = 2;
+    public static final int TASK_ID_FIELD_NUMBER = 2;
+    private org.apache.mesos.Protos.TaskID taskId_;
+    /**
+     * <code>required .mesos.TaskID task_id = 2;</code>
+     */
+    public boolean hasTaskId() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>required .mesos.TaskID task_id = 2;</code>
+     */
+    public org.apache.mesos.Protos.TaskID getTaskId() {
+      return taskId_;
+    }
+    /**
+     * <code>required .mesos.TaskID task_id = 2;</code>
+     */
+    public org.apache.mesos.Protos.TaskIDOrBuilder getTaskIdOrBuilder() {
+      return taskId_;
+    }
+
+    // required .mesos.FrameworkID framework_id = 3;
+    public static final int FRAMEWORK_ID_FIELD_NUMBER = 3;
+    private org.apache.mesos.Protos.FrameworkID frameworkId_;
+    /**
+     * <code>required .mesos.FrameworkID framework_id = 3;</code>
+     */
+    public boolean hasFrameworkId() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>required .mesos.FrameworkID framework_id = 3;</code>
+     */
+    public org.apache.mesos.Protos.FrameworkID getFrameworkId() {
+      return frameworkId_;
+    }
+    /**
+     * <code>required .mesos.FrameworkID framework_id = 3;</code>
+     */
+    public org.apache.mesos.Protos.FrameworkIDOrBuilder getFrameworkIdOrBuilder() {
+      return frameworkId_;
+    }
+
+    // optional .mesos.ExecutorID executor_id = 4;
+    public static final int EXECUTOR_ID_FIELD_NUMBER = 4;
+    private org.apache.mesos.Protos.ExecutorID executorId_;
+    /**
+     * <code>optional .mesos.ExecutorID executor_id = 4;</code>
+     */
+    public boolean hasExecutorId() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional .mesos.ExecutorID executor_id = 4;</code>
+     */
+    public org.apache.mesos.Protos.ExecutorID getExecutorId() {
+      return executorId_;
+    }
+    /**
+     * <code>optional .mesos.ExecutorID executor_id = 4;</code>
+     */
+    public org.apache.mesos.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder() {
+      return executorId_;
+    }
+
+    // required .mesos.SlaveID slave_id = 5;
+    public static final int SLAVE_ID_FIELD_NUMBER = 5;
+    private org.apache.mesos.Protos.SlaveID slaveId_;
+    /**
+     * <code>required .mesos.SlaveID slave_id = 5;</code>
+     */
+    public boolean hasSlaveId() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>required .mesos.SlaveID slave_id = 5;</code>
+     */
+    public org.apache.mesos.Protos.SlaveID getSlaveId() {
+      return slaveId_;
+    }
+    /**
+     * <code>required .mesos.SlaveID slave_id = 5;</code>
+     */
+    public org.apache.mesos.Protos.SlaveIDOrBuilder getSlaveIdOrBuilder() {
+      return slaveId_;
+    }
+
+    // required .mesos.TaskState state = 6;
+    public static final int STATE_FIELD_NUMBER = 6;
+    private org.apache.mesos.Protos.TaskState state_;
+    /**
+     * <code>required .mesos.TaskState state = 6;</code>
+     *
+     * <pre>
+     * Latest state of the task.
+     * </pre>
+     */
+    public boolean hasState() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>required .mesos.TaskState state = 6;</code>
+     *
+     * <pre>
+     * Latest state of the task.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.TaskState getState() {
+      return state_;
+    }
+
+    // repeated .mesos.Resource resources = 7;
+    public static final int RESOURCES_FIELD_NUMBER = 7;
+    private java.util.List<org.apache.mesos.Protos.Resource> resources_;
+    /**
+     * <code>repeated .mesos.Resource resources = 7;</code>
+     */
+    public java.util.List<org.apache.mesos.Protos.Resource> getResourcesList() {
+      return resources_;
+    }
+    /**
+     * <code>repeated .mesos.Resource resources = 7;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+        getResourcesOrBuilderList() {
+      return resources_;
+    }
+    /**
+     * <code>repeated .mesos.Resource resources = 7;</code>
+     */
+    public int getResourcesCount() {
+      return resources_.size();
+    }
+    /**
+     * <code>repeated .mesos.Resource resources = 7;</code>
+     */
+    public org.apache.mesos.Protos.Resource getResources(int index) {
+      return resources_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.Resource resources = 7;</code>
+     */
+    public org.apache.mesos.Protos.ResourceOrBuilder getResourcesOrBuilder(
+        int index) {
+      return resources_.get(index);
+    }
+
+    // repeated .mesos.TaskStatus statuses = 8;
+    public static final int STATUSES_FIELD_NUMBER = 8;
+    private java.util.List<org.apache.mesos.Protos.TaskStatus> statuses_;
+    /**
+     * <code>repeated .mesos.TaskStatus statuses = 8;</code>
+     */
+    public java.util.List<org.apache.mesos.Protos.TaskStatus> getStatusesList() {
+      return statuses_;
+    }
+    /**
+     * <code>repeated .mesos.TaskStatus statuses = 8;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.Protos.TaskStatusOrBuilder> 
+        getStatusesOrBuilderList() {
+      return statuses_;
+    }
+    /**
+     * <code>repeated .mesos.TaskStatus statuses = 8;</code>
+     */
+    public int getStatusesCount() {
+      return statuses_.size();
+    }
+    /**
+     * <code>repeated .mesos.TaskStatus statuses = 8;</code>
+     */
+    public org.apache.mesos.Protos.TaskStatus getStatuses(int index) {
+      return statuses_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.TaskStatus statuses = 8;</code>
+     */
+    public org.apache.mesos.Protos.TaskStatusOrBuilder getStatusesOrBuilder(
+        int index) {
+      return statuses_.get(index);
+    }
+
+    // optional .mesos.TaskState status_update_state = 9;
+    public static final int STATUS_UPDATE_STATE_FIELD_NUMBER = 9;
+    private org.apache.mesos.Protos.TaskState statusUpdateState_;
+    /**
+     * <code>optional .mesos.TaskState status_update_state = 9;</code>
+     *
+     * <pre>
+     * These fields correspond to the state and uuid of the latest
+     * status update forwarded to the master.
+     * NOTE: Either both the fields must be set or both must be unset.
+     * </pre>
+     */
+    public boolean hasStatusUpdateState() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional .mesos.TaskState status_update_state = 9;</code>
+     *
+     * <pre>
+     * These fields correspond to the state and uuid of the latest
+     * status update forwarded to the master.
+     * NOTE: Either both the fields must be set or both must be unset.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.TaskState getStatusUpdateState() {
+      return statusUpdateState_;
+    }
+
+    // optional bytes status_update_uuid = 10;
+    public static final int STATUS_UPDATE_UUID_FIELD_NUMBER = 10;
+    private com.google.protobuf.ByteString statusUpdateUuid_;
+    /**
+     * <code>optional bytes status_update_uuid = 10;</code>
+     */
+    public boolean hasStatusUpdateUuid() {
+      return ((bitField0_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional bytes status_update_uuid = 10;</code>
+     */
+    public com.google.protobuf.ByteString getStatusUpdateUuid() {
+      return statusUpdateUuid_;
+    }
+
+    // optional .mesos.Labels labels = 11;
+    public static final int LABELS_FIELD_NUMBER = 11;
+    private org.apache.mesos.Protos.Labels labels_;
+    /**
+     * <code>optional .mesos.Labels labels = 11;</code>
+     */
+    public boolean hasLabels() {
+      return ((bitField0_ & 0x00000100) == 0x00000100);
+    }
+    /**
+     * <code>optional .mesos.Labels labels = 11;</code>
+     */
+    public org.apache.mesos.Protos.Labels getLabels() {
+      return labels_;
+    }
+    /**
+     * <code>optional .mesos.Labels labels = 11;</code>
+     */
+    public org.apache.mesos.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+      return labels_;
+    }
+
+    // optional .mesos.DiscoveryInfo discovery = 12;
+    public static final int DISCOVERY_FIELD_NUMBER = 12;
+    private org.apache.mesos.Protos.DiscoveryInfo discovery_;
+    /**
+     * <code>optional .mesos.DiscoveryInfo discovery = 12;</code>
+     *
+     * <pre>
+     * Service discovery information for the task. It is not interpreted
+     * or acted upon by Mesos. It is up to a service discovery system
+     * to use this information as needed and to handle tasks without
+     * service discovery information.
+     * </pre>
+     */
+    public boolean hasDiscovery() {
+      return ((bitField0_ & 0x00000200) == 0x00000200);
+    }
+    /**
+     * <code>optional .mesos.DiscoveryInfo discovery = 12;</code>
+     *
+     * <pre>
+     * Service discovery information for the task. It is not interpreted
+     * or acted upon by Mesos. It is up to a service discovery system
+     * to use this information as needed and to handle tasks without
+     * service discovery information.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.DiscoveryInfo getDiscovery() {
+      return discovery_;
+    }
+    /**
+     * <code>optional .mesos.DiscoveryInfo discovery = 12;</code>
+     *
+     * <pre>
+     * Service discovery information for the task. It is not interpreted
+     * or acted upon by Mesos. It is up to a service discovery system
+     * to use this information as needed and to handle tasks without
+     * service discovery information.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.DiscoveryInfoOrBuilder getDiscoveryOrBuilder() {
+      return discovery_;
+    }
+
+    // optional .mesos.ContainerInfo container = 13;
+    public static final int CONTAINER_FIELD_NUMBER = 13;
+    private org.apache.mesos.Protos.ContainerInfo container_;
+    /**
+     * <code>optional .mesos.ContainerInfo container = 13;</code>
+     *
+     * <pre>
+     * Container information for the task.
+     * </pre>
+     */
+    public boolean hasContainer() {
+      return ((bitField0_ & 0x00000400) == 0x00000400);
+    }
+    /**
+     * <code>optional .mesos.ContainerInfo container = 13;</code>
+     *
+     * <pre>
+     * Container information for the task.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.ContainerInfo getContainer() {
+      return container_;
+    }
+    /**
+     * <code>optional .mesos.ContainerInfo container = 13;</code>
+     *
+     * <pre>
+     * Container information for the task.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.ContainerInfoOrBuilder getContainerOrBuilder() {
+      return container_;
+    }
+
+    // optional string user = 14;
+    public static final int USER_FIELD_NUMBER = 14;
+    private java.lang.Object user_;
+    /**
+     * <code>optional string user = 14;</code>
+     *
+     * <pre>
+     * Specific user under which task is running.
+     * </pre>
+     */
+    public boolean hasUser() {
+      return ((bitField0_ & 0x00000800) == 0x00000800);
+    }
+    /**
+     * <code>optional string user = 14;</code>
+     *
+     * <pre>
+     * Specific user under which task is running.
+     * </pre>
+     */
+    public java.lang.String getUser() {
+      java.lang.Object ref = user_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          user_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string user = 14;</code>
+     *
+     * <pre>
+     * Specific user under which task is running.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getUserBytes() {
+      java.lang.Object ref = user_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        user_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      name_ = "";
+      taskId_ = org.apache.mesos.Protos.TaskID.getDefaultInstance();
+      frameworkId_ = org.apache.mesos.Protos.FrameworkID.getDefaultInstance();
+      executorId_ = org.apache.mesos.Protos.ExecutorID.getDefaultInstance();
+      slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+      state_ = org.apache.mesos.Protos.TaskState.TASK_STAGING;
+      resources_ = java.util.Collections.emptyList();
+      statuses_ = java.util.Collections.emptyList();
+      statusUpdateState_ = org.apache.mesos.Protos.TaskState.TASK_STAGING;
+      statusUpdateUuid_ = com.google.protobuf.ByteString.EMPTY;
+      labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+      discovery_ = org.apache.mesos.Protos.DiscoveryInfo.getDefaultInstance();
+      container_ = org.apache.mesos.Protos.ContainerInfo.getDefaultInstance();
+      user_ = "";
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasName()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasTaskId()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasFrameworkId()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasSlaveId()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasState()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!getTaskId().isInitialized()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!getFrameworkId().isInitialized()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (hasExecutorId()) {
+        if (!getExecutorId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (!getSlaveId().isInitialized()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      for (int i = 0; i < getResourcesCount(); i++) {
+        if (!getResources(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      for (int i = 0; i < getStatusesCount(); i++) {
+        if (!getStatuses(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasLabels()) {
+        if (!getLabels().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasDiscovery()) {
+        if (!getDiscovery().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasContainer()) {
+        if (!getContainer().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(2, taskId_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeMessage(3, frameworkId_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeMessage(4, executorId_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeMessage(5, slaveId_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeEnum(6, state_.getNumber());
+      }
+      for (int i = 0; i < resources_.size(); i++) {
+        output.writeMessage(7, resources_.get(i));
+      }
+      for (int i = 0; i < statuses_.size(); i++) {
+        output.writeMessage(8, statuses_.get(i));
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeEnum(9, statusUpdateState_.getNumber());
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        output.writeBytes(10, statusUpdateUuid_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        output.writeMessage(11, labels_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        output.writeMessage(12, discovery_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        output.writeMessage(13, container_);
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        output.writeBytes(14, getUserBytes());
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, taskId_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, frameworkId_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, executorId_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(5, slaveId_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(6, state_.getNumber());
+      }
+      for (int i = 0; i < resources_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(7, resources_.get(i));
+      }
+      for (int i = 0; i < statuses_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(8, statuses_.get(i));
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(9, statusUpdateState_.getNumber());
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(10, statusUpdateUuid_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(11, labels_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(12, discovery_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(13, container_);
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(14, getUserBytes());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.Task parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Task parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Task parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Task parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Task parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Task parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Task parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.Task parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Task parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Task parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.Task prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.Task}
+     *
+     * <pre>
+     **
+     * Describes a task, similar to `TaskInfo`.
+     *
+     * `Task` is used in some of the Mesos messages found below.
+     * `Task` is used instead of `TaskInfo` if:
+     *   1) we need additional IDs, such as a specific
+     *      framework, executor, or agent; or
+     *   2) we do not need the additional data, such as the command run by the
+     *      task or the health checks.  These additional fields may be large and
+     *      unnecessary for some Mesos messages.
+     *
+     * `Task` is generally constructed from a `TaskInfo`.  See protobuf::createTask.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.TaskOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_Task_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_Task_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.Task.class, org.apache.mesos.Protos.Task.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.Task.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getTaskIdFieldBuilder();
+          getFrameworkIdFieldBuilder();
+          getExecutorIdFieldBuilder();
+          getSlaveIdFieldBuilder();
+          getResourcesFieldBuilder();
+          getStatusesFieldBuilder();
+          getLabelsFieldBuilder();
+          getDiscoveryFieldBuilder();
+          getContainerFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        name_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (taskIdBuilder_ == null) {
+          taskId_ = org.apache.mesos.Protos.TaskID.getDefaultInstance();
+        } else {
+          taskIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        if (frameworkIdBuilder_ == null) {
+          frameworkId_ = org.apache.mesos.Protos.FrameworkID.getDefaultInstance();
+        } else {
+          frameworkIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        if (executorIdBuilder_ == null) {
+          executorId_ = org.apache.mesos.Protos.ExecutorID.getDefaultInstance();
+        } else {
+          executorIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        if (slaveIdBuilder_ == null) {
+          slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+        } else {
+          slaveIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        state_ = org.apache.mesos.Protos.TaskState.TASK_STAGING;
+        bitField0_ = (bitField0_ & ~0x00000020);
+        if (resourcesBuilder_ == null) {
+          resources_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000040);
+        } else {
+          resourcesBuilder_.clear();
+        }
+        if (statusesBuilder_ == null) {
+          statuses_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000080);
+        } else {
+          statusesBuilder_.clear();
+        }
+        statusUpdateState_ = org.apache.mesos.Protos.TaskState.TASK_STAGING;
+        bitField0_ = (bitField0_ & ~0x00000100);
+        statusUpdateUuid_ = com.google.protobuf.ByteString.EMPTY;
+        bitField0_ = (bitField0_ & ~0x00000200);
+        if (labelsBuilder_ == null) {
+          labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+        } else {
+          labelsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000400);
+        if (discoveryBuilder_ == null) {
+          discovery_ = org.apache.mesos.Protos.DiscoveryInfo.getDefaultInstance();
+        } else {
+          discoveryBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000800);
+        if (containerBuilder_ == null) {
+          container_ = org.apache.mesos.Protos.ContainerInfo.getDefaultInstance();
+        } else {
+          containerBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00001000);
+        user_ = "";
+        bitField0_ = (bitField0_ & ~0x00002000);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_Task_descriptor;
+      }
+
+      public org.apache.mesos.Protos.Task getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.Task.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.Task build() {
+        org.apache.mesos.Protos.Task result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.Task buildPartial() {
+        org.apache.mesos.Protos.Task result = new org.apache.mesos.Protos.Task(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.name_ = name_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (taskIdBuilder_ == null) {
+          result.taskId_ = taskId_;
+        } else {
+          result.taskId_ = taskIdBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        if (frameworkIdBuilder_ == null) {
+          result.frameworkId_ = frameworkId_;
+        } else {
+          result.frameworkId_ = frameworkIdBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        if (executorIdBuilder_ == null) {
+          result.executorId_ = executorId_;
+        } else {
+          result.executorId_ = executorIdBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        if (slaveIdBuilder_ == null) {
+          result.slaveId_ = slaveId_;
+        } else {
+          result.slaveId_ = slaveIdBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        result.state_ = state_;
+        if (resourcesBuilder_ == null) {
+          if (((bitField0_ & 0x00000040) == 0x00000040)) {
+            resources_ = java.util.Collections.unmodifiableList(resources_);
+            bitField0_ = (bitField0_ & ~0x00000040);
+          }
+          result.resources_ = resources_;
+        } else {
+          result.resources_ = resourcesBuilder_.build();
+        }
+        if (statusesBuilder_ == null) {
+          if (((bitField0_ & 0x00000080) == 0x00000080)) {
+            statuses_ = java.util.Collections.unmodifiableList(statuses_);
+            bitField0_ = (bitField0_ & ~0x00000080);
+          }
+          result.statuses_ = statuses_;
+        } else {
+          result.statuses_ = statusesBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        result.statusUpdateState_ = statusUpdateState_;
+        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
+          to_bitField0_ |= 0x00000080;
+        }
+        result.statusUpdateUuid_ = statusUpdateUuid_;
+        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
+          to_bitField0_ |= 0x00000100;
+        }
+        if (labelsBuilder_ == null) {
+          result.labels_ = labels_;
+        } else {
+          result.labels_ = labelsBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
+          to_bitField0_ |= 0x00000200;
+        }
+        if (discoveryBuilder_ == null) {
+          result.discovery_ = discovery_;
+        } else {
+          result.discovery_ = discoveryBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
+          to_bitField0_ |= 0x00000400;
+        }
+        if (containerBuilder_ == null) {
+          result.container_ = container_;
+        } else {
+          result.container_ = containerBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00002000) == 0x00002000)) {
+          to_bitField0_ |= 0x00000800;
+        }
+        result.user_ = user_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.Task) {
+          return mergeFrom((org.apache.mesos.Protos.Task)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.Task other) {
+        if (other == org.apache.mesos.Protos.Task.getDefaultInstance()) return this;
+        if (other.hasName()) {
+          bitField0_ |= 0x00000001;
+          name_ = other.name_;
+          onChanged();
+        }
+        if (other.hasTaskId()) {
+          mergeTaskId(other.getTaskId());
+        }
+        if (other.hasFrameworkId()) {
+          mergeFrameworkId(other.getFrameworkId());
+        }
+        if (other.hasExecutorId()) {
+          mergeExecutorId(other.getExecutorId());
+        }
+        if (other.hasSlaveId()) {
+          mergeSlaveId(other.getSlaveId());
+        }
+        if (other.hasState()) {
+          setState(other.getState());
+        }
+        if (resourcesBuilder_ == null) {
+          if (!other.resources_.isEmpty()) {
+            if (resources_.isEmpty()) {
+              resources_ = other.resources_;
+              bitField0_ = (bitField0_ & ~0x00000040);
+            } else {
+              ensureResourcesIsMutable();
+              resources_.addAll(other.resources_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.resources_.isEmpty()) {
+            if (resourcesBuilder_.isEmpty()) {
+              resourcesBuilder_.dispose();
+              resourcesBuilder_ = null;
+              resources_ = other.resources_;
+              bitField0_ = (bitField0_ & ~0x00000040);
+              resourcesBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getResourcesFieldBuilder() : null;
+            } else {
+              resourcesBuilder_.addAllMessages(other.resources_);
+            }
+          }
+        }
+        if (statusesBuilder_ == null) {
+          if (!other.statuses_.isEmpty()) {
+            if (statuses_.isEmpty()) {
+              statuses_ = other.statuses_;
+              bitField0_ = (bitField0_ & ~0x00000080);
+            } else {
+              ensureStatusesIsMutable();
+              statuses_.addAll(other.statuses_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.statuses_.isEmpty()) {
+            if (statusesBuilder_.isEmpty()) {
+              statusesBuilder_.dispose();
+              statusesBuilder_ = null;
+              statuses_ = other.statuses_;
+              bitField0_ = (bitField0_ & ~0x00000080);
+              statusesBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getStatusesFieldBuilder() : null;
+            } else {
+              statusesBuilder_.addAllMessages(other.statuses_);
+            }
+          }
+        }
+        if (other.hasStatusUpdateState()) {
+          setStatusUpdateState(other.getStatusUpdateState());
+        }
+        if (other.hasStatusUpdateUuid()) {
+          setStatusUpdateUuid(other.getStatusUpdateUuid());
+        }
+        if (other.hasLabels()) {
+          mergeLabels(other.getLabels());
+        }
+        if (other.hasDiscovery()) {
+          mergeDiscovery(other.getDiscovery());
+        }
+        if (other.hasContainer()) {
+          mergeContainer(other.getContainer());
+        }
+        if (other.hasUser()) {
+          bitField0_ |= 0x00002000;
+          user_ = other.user_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasName()) {
+          
+          return false;
+        }
+        if (!hasTaskId()) {
+          
+          return false;
+        }
+        if (!hasFrameworkId()) {
+          
+          return false;
+        }
+        if (!hasSlaveId()) {
+          
+          return false;
+        }
+        if (!hasState()) {
+          
+          return false;
+        }
+        if (!getTaskId().isInitialized()) {
+          
+          return false;
+        }
+        if (!getFrameworkId().isInitialized()) {
+          
+          return false;
+        }
+        if (hasExecutorId()) {
+          if (!getExecutorId().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (!getSlaveId().isInitialized()) {
+          
+          return false;
+        }
+        for (int i = 0; i < getResourcesCount(); i++) {
+          if (!getResources(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        for (int i = 0; i < getStatusesCount(); i++) {
+          if (!getStatuses(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasLabels()) {
+          if (!getLabels().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasDiscovery()) {
+          if (!getDiscovery().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasContainer()) {
+          if (!getContainer().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.Task parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.Task) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string name = 1;
+      private java.lang.Object name_ = "";
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public boolean hasName() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public java.lang.String getName() {
+        java.lang.Object ref = name_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          name_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        java.lang.Object ref = name_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          name_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder setName(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder clearName() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        name_ = getDefaultInstance().getName();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder setNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+
+      // required .mesos.TaskID task_id = 2;
+      private org.apache.mesos.Protos.TaskID taskId_ = org.apache.mesos.Protos.TaskID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.TaskID, org.apache.mesos.Protos.TaskID.Builder, org.apache.mesos.Protos.TaskIDOrBuilder> taskIdBuilder_;
+      /**
+       * <code>required .mesos.TaskID task_id = 2;</code>
+       */
+      public boolean hasTaskId() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required .mesos.TaskID task_id = 2;</code>
+       */
+      public org.apache.mesos.Protos.TaskID getTaskId() {
+        if (taskIdBuilder_ == null) {
+          return taskId_;
+        } else {
+          return taskIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>required .mesos.TaskID task_id = 2;</code>
+       */
+      public Builder setTaskId(org.apache.mesos.Protos.TaskID value) {
+        if (taskIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          taskId_ = value;
+          onChanged();
+        } else {
+          taskIdBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.TaskID task_id = 2;</code>
+       */
+      public Builder setTaskId(
+          org.apache.mesos.Protos.TaskID.Builder builderForValue) {
+        if (taskIdBuilder_ == null) {
+          taskId_ = builderForValue.build();
+          onChanged();
+        } else {
+          taskIdBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.TaskID task_id = 2;</code>
+       */
+      public Builder mergeTaskId(org.apache.mesos.Protos.TaskID value) {
+        if (taskIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              taskId_ != org.apache.mesos.Protos.TaskID.getDefaultInstance()) {
+            taskId_ =
+              org.apache.mesos.Protos.TaskID.newBuilder(taskId_).mergeFrom(value).buildPartial();
+          } else {
+            taskId_ = value;
+          }
+          onChanged();
+        } else {
+          taskIdBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.TaskID task_id = 2;</code>
+       */
+      public Builder clearTaskId() {
+        if (taskIdBuilder_ == null) {
+          taskId_ = org.apache.mesos.Protos.TaskID.getDefaultInstance();
+          onChanged();
+        } else {
+          taskIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>required .mesos.TaskID task_id = 2;</code>
+       */
+      public org.apache.mesos.Protos.TaskID.Builder getTaskIdBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getTaskIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>required .mesos.TaskID task_id = 2;</code>
+       */
+      public org.apache.mesos.Protos.TaskIDOrBuilder getTaskIdOrBuilder() {
+        if (taskIdBuilder_ != null) {
+          return taskIdBuilder_.getMessageOrBuilder();
+        } else {
+          return taskId_;
+        }
+      }
+      /**
+       * <code>required .mesos.TaskID task_id = 2;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.TaskID, org.apache.mesos.Protos.TaskID.Builder, org.apache.mesos.Protos.TaskIDOrBuilder> 
+          getTaskIdFieldBuilder() {
+        if (taskIdBuilder_ == null) {
+          taskIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.TaskID, org.apache.mesos.Protos.TaskID.Builder, org.apache.mesos.Protos.TaskIDOrBuilder>(
+                  taskId_,
+                  getParentForChildren(),
+                  isClean());
+          taskId_ = null;
+        }
+        return taskIdBuilder_;
+      }
+
+      // required .mesos.FrameworkID framework_id = 3;
+      private org.apache.mesos.Protos.FrameworkID frameworkId_ = org.apache.mesos.Protos.FrameworkID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.FrameworkID, org.apache.mesos.Protos.FrameworkID.Builder, org.apache.mesos.Protos.FrameworkIDOrBuilder> frameworkIdBuilder_;
+      /**
+       * <code>required .mesos.FrameworkID framework_id = 3;</code>
+       */
+      public boolean hasFrameworkId() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>required .mesos.FrameworkID framework_id = 3;</code>
+       */
+      public org.apache.mesos.Protos.FrameworkID getFrameworkId() {
+        if (frameworkIdBuilder_ == null) {
+          return frameworkId_;
+        } else {
+          return frameworkIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>required .mesos.FrameworkID framework_id = 3;</code>
+       */
+      public Builder setFrameworkId(org.apache.mesos.Protos.FrameworkID value) {
+        if (frameworkIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          frameworkId_ = value;
+          onChanged();
+        } else {
+          frameworkIdBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>required .mesos.FrameworkID framework_id = 3;</code>
+       */
+      public Builder setFrameworkId(
+          org.apache.mesos.Protos.FrameworkID.Builder builderForValue) {
+        if (frameworkIdBuilder_ == null) {
+          frameworkId_ = builderForValue.build();
+          onChanged();
+        } else {
+          frameworkIdBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>required .mesos.FrameworkID framework_id = 3;</code>
+       */
+      public Builder mergeFrameworkId(org.apache.mesos.Protos.FrameworkID value) {
+        if (frameworkIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) == 0x00000004) &&
+              frameworkId_ != org.apache.mesos.Protos.FrameworkID.getDefaultInstance()) {
+            frameworkId_ =
+              org.apache.mesos.Protos.FrameworkID.newBuilder(frameworkId_).mergeFrom(value).buildPartial();
+          } else {
+            frameworkId_ = value;
+          }
+          onChanged();
+        } else {
+          frameworkIdBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>required .mesos.FrameworkID framework_id = 3;</code>
+       */
+      public Builder clearFrameworkId() {
+        if (frameworkIdBuilder_ == null) {
+          frameworkId_ = org.apache.mesos.Protos.FrameworkID.getDefaultInstance();
+          onChanged();
+        } else {
+          frameworkIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+      /**
+       * <code>required .mesos.FrameworkID framework_id = 3;</code>
+       */
+      public org.apache.mesos.Protos.FrameworkID.Builder getFrameworkIdBuilder() {
+        bitField0_ |= 0x00000004;
+        onChanged();
+        return getFrameworkIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>required .mesos.FrameworkID framework_id = 3;</code>
+       */
+      public org.apache.mesos.Protos.FrameworkIDOrBuilder getFrameworkIdOrBuilder() {
+        if (frameworkIdBuilder_ != null) {
+          return frameworkIdBuilder_.getMessageOrBuilder();
+        } else {
+          return frameworkId_;
+        }
+      }
+      /**
+       * <code>required .mesos.FrameworkID framework_id = 3;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.FrameworkID, org.apache.mesos.Protos.FrameworkID.Builder, org.apache.mesos.Protos.FrameworkIDOrBuilder> 
+          getFrameworkIdFieldBuilder() {
+        if (frameworkIdBuilder_ == null) {
+          frameworkIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.FrameworkID, org.apache.mesos.Protos.FrameworkID.Builder, org.apache.mesos.Protos.FrameworkIDOrBuilder>(
+                  frameworkId_,
+                  getParentForChildren(),
+                  isClean());
+          frameworkId_ = null;
+        }
+        return frameworkIdBuilder_;
+      }
+
+      // optional .mesos.ExecutorID executor_id = 4;
+      private org.apache.mesos.Protos.ExecutorID executorId_ = org.apache.mesos.Protos.ExecutorID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.ExecutorID, org.apache.mesos.Protos.ExecutorID.Builder, org.apache.mesos.Protos.ExecutorIDOrBuilder> executorIdBuilder_;
+      /**
+       * <code>optional .mesos.ExecutorID executor_id = 4;</code>
+       */
+      public boolean hasExecutorId() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.ExecutorID executor_id = 4;</code>
+       */
+      public org.apache.mesos.Protos.ExecutorID getExecutorId() {
+        if (executorIdBuilder_ == null) {
+          return executorId_;
+        } else {
+          return executorIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.ExecutorID executor_id = 4;</code>
+       */
+      public Builder setExecutorId(org.apache.mesos.Protos.ExecutorID value) {
+        if (executorIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          executorId_ = value;
+          onChanged();
+        } else {
+          executorIdBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ExecutorID executor_id = 4;</code>
+       */
+      public Builder setExecutorId(
+          org.apache.mesos.Protos.ExecutorID.Builder builderForValue) {
+        if (executorIdBuilder_ == null) {
+          executorId_ = builderForValue.build();
+          onChanged();
+        } else {
+          executorIdBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ExecutorID executor_id = 4;</code>
+       */
+      public Builder mergeExecutorId(org.apache.mesos.Protos.ExecutorID value) {
+        if (executorIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008) &&
+              executorId_ != org.apache.mesos.Protos.ExecutorID.getDefaultInstance()) {
+            executorId_ =
+              org.apache.mesos.Protos.ExecutorID.newBuilder(executorId_).mergeFrom(value).buildPartial();
+          } else {
+            executorId_ = value;
+          }
+          onChanged();
+        } else {
+          executorIdBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ExecutorID executor_id = 4;</code>
+       */
+      public Builder clearExecutorId() {
+        if (executorIdBuilder_ == null) {
+          executorId_ = org.apache.mesos.Protos.ExecutorID.getDefaultInstance();
+          onChanged();
+        } else {
+          executorIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ExecutorID executor_id = 4;</code>
+       */
+      public org.apache.mesos.Protos.ExecutorID.Builder getExecutorIdBuilder() {
+        bitField0_ |= 0x00000008;
+        onChanged();
+        return getExecutorIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.ExecutorID executor_id = 4;</code>
+       */
+      public org.apache.mesos.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder() {
+        if (executorIdBuilder_ != null) {
+          return executorIdBuilder_.getMessageOrBuilder();
+        } else {
+          return executorId_;
+        }
+      }
+      /**
+       * <code>optional .mesos.ExecutorID executor_id = 4;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.ExecutorID, org.apache.mesos.Protos.ExecutorID.Builder, org.apache.mesos.Protos.ExecutorIDOrBuilder> 
+          getExecutorIdFieldBuilder() {
+        if (executorIdBuilder_ == null) {
+          executorIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.ExecutorID, org.apache.mesos.Protos.ExecutorID.Builder, org.apache.mesos.Protos.ExecutorIDOrBuilder>(
+                  executorId_,
+                  getParentForChildren(),
+                  isClean());
+          executorId_ = null;
+        }
+        return executorIdBuilder_;
+      }
+
+      // required .mesos.SlaveID slave_id = 5;
+      private org.apache.mesos.Protos.SlaveID slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.SlaveID, org.apache.mesos.Protos.SlaveID.Builder, org.apache.mesos.Protos.SlaveIDOrBuilder> slaveIdBuilder_;
+      /**
+       * <code>required .mesos.SlaveID slave_id = 5;</code>
+       */
+      public boolean hasSlaveId() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>required .mesos.SlaveID slave_id = 5;</code>
+       */
+      public org.apache.mesos.Protos.SlaveID getSlaveId() {
+        if (slaveIdBuilder_ == null) {
+          return slaveId_;
+        } else {
+          return slaveIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>required .mesos.SlaveID slave_id = 5;</code>
+       */
+      public Builder setSlaveId(org.apache.mesos.Protos.SlaveID value) {
+        if (slaveIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          slaveId_ = value;
+          onChanged();
+        } else {
+          slaveIdBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>required .mesos.SlaveID slave_id = 5;</code>
+       */
+      public Builder setSlaveId(
+          org.apache.mesos.Protos.SlaveID.Builder builderForValue) {
+        if (slaveIdBuilder_ == null) {
+          slaveId_ = builderForValue.build();
+          onChanged();
+        } else {
+          slaveIdBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>required .mesos.SlaveID slave_id = 5;</code>
+       */
+      public Builder mergeSlaveId(org.apache.mesos.Protos.SlaveID value) {
+        if (slaveIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000010) == 0x00000010) &&
+              slaveId_ != org.apache.mesos.Protos.SlaveID.getDefaultInstance()) {
+            slaveId_ =
+              org.apache.mesos.Protos.SlaveID.newBuilder(slaveId_).mergeFrom(value).buildPartial();
+          } else {
+            slaveId_ = value;
+          }
+          onChanged();
+        } else {
+          slaveIdBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>required .mesos.SlaveID slave_id = 5;</code>
+       */
+      public Builder clearSlaveId() {
+        if (slaveIdBuilder_ == null) {
+          slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+          onChanged();
+        } else {
+          slaveIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+      /**
+       * <code>required .mesos.SlaveID slave_id = 5;</code>
+       */
+      public org.apache.mesos.Protos.SlaveID.Builder getSlaveIdBuilder() {
+        bitField0_ |= 0x00000010;
+        onChanged();
+        return getSlaveIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>required .mesos.SlaveID slave_id = 5;</code>
+       */
+      public org.apache.mesos.Protos.SlaveIDOrBuilder getSlaveIdOrBuilder() {
+        if (slaveIdBuilder_ != null) {
+          return slaveIdBuilder_.getMessageOrBuilder();
+        } else {
+          return slaveId_;
+        }
+      }
+      /**
+       * <code>required .mesos.SlaveID slave_id = 5;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.SlaveID, org.apache.mesos.Protos.SlaveID.Builder, org.apache.mesos.Protos.SlaveIDOrBuilder> 
+          getSlaveIdFieldBuilder() {
+        if (slaveIdBuilder_ == null) {
+          slaveIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.SlaveID, org.apache.mesos.Protos.SlaveID.Builder, org.apache.mesos.Protos.SlaveIDOrBuilder>(
+                  slaveId_,
+                  getParentForChildren(),
+                  isClean());
+          slaveId_ = null;
+        }
+        return slaveIdBuilder_;
+      }
+
+      // required .mesos.TaskState state = 6;
+      private org.apache.mesos.Protos.TaskState state_ = org.apache.mesos.Protos.TaskState.TASK_STAGING;
+      /**
+       * <code>required .mesos.TaskState state = 6;</code>
+       *
+       * <pre>
+       * Latest state of the task.
+       * </pre>
+       */
+      public boolean hasState() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>required .mesos.TaskState state = 6;</code>
+       *
+       * <pre>
+       * Latest state of the task.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.TaskState getState() {
+        return state_;
+      }
+      /**
+       * <code>required .mesos.TaskState state = 6;</code>
+       *
+       * <pre>
+       * Latest state of the task.
+       * </pre>
+       */
+      public Builder setState(org.apache.mesos.Protos.TaskState value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000020;
+        state_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required .mesos.TaskState state = 6;</code>
+       *
+       * <pre>
+       * Latest state of the task.
+       * </pre>
+       */
+      public Builder clearState() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        state_ = org.apache.mesos.Protos.TaskState.TASK_STAGING;
+        onChanged();
+        return this;
+      }
+
+      // repeated .mesos.Resource resources = 7;
+      private java.util.List<org.apache.mesos.Protos.Resource> resources_ =
+        java.util.Collections.emptyList();
+      private void ensureResourcesIsMutable() {
+        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
+          resources_ = new java.util.ArrayList<org.apache.mesos.Protos.Resource>(resources_);
+          bitField0_ |= 0x00000040;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder> resourcesBuilder_;
+
+      /**
+       * <code>repeated .mesos.Resource resources = 7;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.Resource> getResourcesList() {
+        if (resourcesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(resources_);
+        } else {
+          return resourcesBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 7;</code>
+       */
+      public int getResourcesCount() {
+        if (resourcesBuilder_ == null) {
+          return resources_.size();
+        } else {
+          return resourcesBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 7;</code>
+       */
+      public org.apache.mesos.Protos.Resource getResources(int index) {
+        if (resourcesBuilder_ == null) {
+          return resources_.get(index);
+        } else {
+          return resourcesBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 7;</code>
+       */
+      public Builder setResources(
+          int index, org.apache.mesos.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.set(index, value);
+          onChanged();
+        } else {
+          resourcesBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 7;</code>
+       */
+      public Builder setResources(
+          int index, org.apache.mesos.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 7;</code>
+       */
+      public Builder addResources(org.apache.mesos.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.add(value);
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 7;</code>
+       */
+      public Builder addResources(
+          int index, org.apache.mesos.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.add(index, value);
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 7;</code>
+       */
+      public Builder addResources(
+          org.apache.mesos.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.add(builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 7;</code>
+       */
+      public Builder addResources(
+          int index, org.apache.mesos.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 7;</code>
+       */
+      public Builder addAllResources(
+          java.lang.Iterable<? extends org.apache.mesos.Protos.Resource> values) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          super.addAll(values, resources_);
+          onChanged();
+        } else {
+          resourcesBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 7;</code>
+       */
+      public Builder clearResources() {
+        if (resourcesBuilder_ == null) {
+          resources_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000040);
+          onChanged();
+        } else {
+          resourcesBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 7;</code>
+       */
+      public Builder removeResources(int index) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.remove(index);
+          onChanged();
+        } else {
+          resourcesBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 7;</code>
+       */
+      public org.apache.mesos.Protos.Resource.Builder getResourcesBuilder(
+          int index) {
+        return getResourcesFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 7;</code>
+       */
+      public org.apache.mesos.Protos.ResourceOrBuilder getResourcesOrBuilder(
+          int index) {
+        if (resourcesBuilder_ == null) {
+          return resources_.get(index);  } else {
+          return resourcesBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 7;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+           getResourcesOrBuilderList() {
+        if (resourcesBuilder_ != null) {
+          return resourcesBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(resources_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 7;</code>
+       */
+      public org.apache.mesos.Protos.Resource.Builder addResourcesBuilder() {
+        return getResourcesFieldBuilder().addBuilder(
+            org.apache.mesos.Protos.Resource.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 7;</code>
+       */
+      public org.apache.mesos.Protos.Resource.Builder addResourcesBuilder(
+          int index) {
+        return getResourcesFieldBuilder().addBuilder(
+            index, org.apache.mesos.Protos.Resource.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 7;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.Resource.Builder> 
+           getResourcesBuilderList() {
+        return getResourcesFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder> 
+          getResourcesFieldBuilder() {
+        if (resourcesBuilder_ == null) {
+          resourcesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder>(
+                  resources_,
+                  ((bitField0_ & 0x00000040) == 0x00000040),
+                  getParentForChildren(),
+                  isClean());
+          resources_ = null;
+        }
+        return resourcesBuilder_;
+      }
+
+      // repeated .mesos.TaskStatus statuses = 8;
+      private java.util.List<org.apache.mesos.Protos.TaskStatus> statuses_ =
+        java.util.Collections.emptyList();
+      private void ensureStatusesIsMutable() {
+        if (!((bitField0_ & 0x00000080) == 0x00000080)) {
+          statuses_ = new java.util.ArrayList<org.apache.mesos.Protos.TaskStatus>(statuses_);
+          bitField0_ |= 0x00000080;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.TaskStatus, org.apache.mesos.Protos.TaskStatus.Builder, org.apache.mesos.Protos.TaskStatusOrBuilder> statusesBuilder_;
+
+      /**
+       * <code>repeated .mesos.TaskStatus statuses = 8;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.TaskStatus> getStatusesList() {
+        if (statusesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(statuses_);
+        } else {
+          return statusesBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.TaskStatus statuses = 8;</code>
+       */
+      public int getStatusesCount() {
+        if (statusesBuilder_ == null) {
+          return statuses_.size();
+        } else {
+          return statusesBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.TaskStatus statuses = 8;</code>
+       */
+      public org.apache.mesos.Protos.TaskStatus getStatuses(int index) {
+        if (statusesBuilder_ == null) {
+          return statuses_.get(index);
+        } else {
+          return statusesBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.TaskStatus statuses = 8;</code>
+       */
+      public Builder setStatuses(
+          int index, org.apache.mesos.Protos.TaskStatus value) {
+        if (statusesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureStatusesIsMutable();
+          statuses_.set(index, value);
+          onChanged();
+        } else {
+          statusesBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.TaskStatus statuses = 8;</code>
+       */
+      public Builder setStatuses(
+          int index, org.apache.mesos.Protos.TaskStatus.Builder builderForValue) {
+        if (statusesBuilder_ == null) {
+          ensureStatusesIsMutable();
+          statuses_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          statusesBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.TaskStatus statuses = 8;</code>
+       */
+      public Builder addStatuses(org.apache.mesos.Protos.TaskStatus value) {
+        if (statusesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureStatusesIsMutable();
+          statuses_.add(value);
+          onChanged();
+        } else {
+          statusesBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.TaskStatus statuses = 8;</code>
+       */
+      public Builder addStatuses(
+          int index, org.apache.mesos.Protos.TaskStatus value) {
+        if (statusesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureStatusesIsMutable();
+          statuses_.add(index, value);
+          onChanged();
+        } else {
+          statusesBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.TaskStatus statuses = 8;</code>
+       */
+      public Builder addStatuses(
+          org.apache.mesos.Protos.TaskStatus.Builder builderForValue) {
+        if (statusesBuilder_ == null) {
+          ensureStatusesIsMutable();
+          statuses_.add(builderForValue.build());
+          onChanged();
+        } else {
+          statusesBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.TaskStatus statuses = 8;</code>
+       */
+      public Builder addStatuses(
+          int index, org.apache.mesos.Protos.TaskStatus.Builder builderForValue) {
+        if (statusesBuilder_ == null) {
+          ensureStatusesIsMutable();
+          statuses_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          statusesBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.TaskStatus statuses = 8;</code>
+       */
+      public Builder addAllStatuses(
+          java.lang.Iterable<? extends org.apache.mesos.Protos.TaskStatus> values) {
+        if (statusesBuilder_ == null) {
+          ensureStatusesIsMutable();
+          super.addAll(values, statuses_);
+          onChanged();
+        } else {
+          statusesBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.TaskStatus statuses = 8;</code>
+       */
+      public Builder clearStatuses() {
+        if (statusesBuilder_ == null) {
+          statuses_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000080);
+          onChanged();
+        } else {
+          statusesBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.TaskStatus statuses = 8;</code>
+       */
+      public Builder removeStatuses(int index) {
+        if (statusesBuilder_ == null) {
+          ensureStatusesIsMutable();
+          statuses_.remove(index);
+          onChanged();
+        } else {
+          statusesBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.TaskStatus statuses = 8;</code>
+       */
+      public org.apache.mesos.Protos.TaskStatus.Builder getStatusesBuilder(
+          int index) {
+        return getStatusesFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.TaskStatus statuses = 8;</code>
+       */
+      public org.apache.mesos.Protos.TaskStatusOrBuilder getStatusesOrBuilder(
+          int index) {
+        if (statusesBuilder_ == null) {
+          return statuses_.get(index);  } else {
+          return statusesBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.TaskStatus statuses = 8;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.TaskStatusOrBuilder> 
+           getStatusesOrBuilderList() {
+        if (statusesBuilder_ != null) {
+          return statusesBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(statuses_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.TaskStatus statuses = 8;</code>
+       */
+      public org.apache.mesos.Protos.TaskStatus.Builder addStatusesBuilder() {
+        return getStatusesFieldBuilder().addBuilder(
+            org.apache.mesos.Protos.TaskStatus.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.TaskStatus statuses = 8;</code>
+       */
+      public org.apache.mesos.Protos.TaskStatus.Builder addStatusesBuilder(
+          int index) {
+        return getStatusesFieldBuilder().addBuilder(
+            index, org.apache.mesos.Protos.TaskStatus.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.TaskStatus statuses = 8;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.TaskStatus.Builder> 
+           getStatusesBuilderList() {
+        return getStatusesFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.TaskStatus, org.apache.mesos.Protos.TaskStatus.Builder, org.apache.mesos.Protos.TaskStatusOrBuilder> 
+          getStatusesFieldBuilder() {
+        if (statusesBuilder_ == null) {
+          statusesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.TaskStatus, org.apache.mesos.Protos.TaskStatus.Builder, org.apache.mesos.Protos.TaskStatusOrBuilder>(
+                  statuses_,
+                  ((bitField0_ & 0x00000080) == 0x00000080),
+                  getParentForChildren(),
+                  isClean());
+          statuses_ = null;
+        }
+        return statusesBuilder_;
+      }
+
+      // optional .mesos.TaskState status_update_state = 9;
+      private org.apache.mesos.Protos.TaskState statusUpdateState_ = org.apache.mesos.Protos.TaskState.TASK_STAGING;
+      /**
+       * <code>optional .mesos.TaskState status_update_state = 9;</code>
+       *
+       * <pre>
+       * These fields correspond to the state and uuid of the latest
+       * status update forwarded to the master.
+       * NOTE: Either both the fields must be set or both must be unset.
+       * </pre>
+       */
+      public boolean hasStatusUpdateState() {
+        return ((bitField0_ & 0x00000100) == 0x00000100);
+      }
+      /**
+       * <code>optional .mesos.TaskState status_update_state = 9;</code>
+       *
+       * <pre>
+       * These fields correspond to the state and uuid of the latest
+       * status update forwarded to the master.
+       * NOTE: Either both the fields must be set or both must be unset.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.TaskState getStatusUpdateState() {
+        return statusUpdateState_;
+      }
+      /**
+       * <code>optional .mesos.TaskState status_update_state = 9;</code>
+       *
+       * <pre>
+       * These fields correspond to the state and uuid of the latest
+       * status update forwarded to the master.
+       * NOTE: Either both the fields must be set or both must be unset.
+       * </pre>
+       */
+      public Builder setStatusUpdateState(org.apache.mesos.Protos.TaskState value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000100;
+        statusUpdateState_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional .mesos.TaskState status_update_state = 9;</code>
+       *
+       * <pre>
+       * These fields correspond to the state and uuid of the latest
+       * status update forwarded to the master.
+       * NOTE: Either both the fields must be set or both must be unset.
+       * </pre>
+       */
+      public Builder clearStatusUpdateState() {
+        bitField0_ = (bitField0_ & ~0x00000100);
+        statusUpdateState_ = org.apache.mesos.Protos.TaskState.TASK_STAGING;
+        onChanged();
+        return this;
+      }
+
+      // optional bytes status_update_uuid = 10;
+      private com.google.protobuf.ByteString statusUpdateUuid_ = com.google.protobuf.ByteString.EMPTY;
+      /**
+       * <code>optional bytes status_update_uuid = 10;</code>
+       */
+      public boolean hasStatusUpdateUuid() {
+        return ((bitField0_ & 0x00000200) == 0x00000200);
+      }
+      /**
+       * <code>optional bytes status_update_uuid = 10;</code>
+       */
+      public com.google.protobuf.ByteString getStatusUpdateUuid() {
+        return statusUpdateUuid_;
+      }
+      /**
+       * <code>optional bytes status_update_uuid = 10;</code>
+       */
+      public Builder setStatusUpdateUuid(com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000200;
+        statusUpdateUuid_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional bytes status_update_uuid = 10;</code>
+       */
+      public Builder clearStatusUpdateUuid() {
+        bitField0_ = (bitField0_ & ~0x00000200);
+        statusUpdateUuid_ = getDefaultInstance().getStatusUpdateUuid();
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.Labels labels = 11;
+      private org.apache.mesos.Protos.Labels labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Labels, org.apache.mesos.Protos.Labels.Builder, org.apache.mesos.Protos.LabelsOrBuilder> labelsBuilder_;
+      /**
+       * <code>optional .mesos.Labels labels = 11;</code>
+       */
+      public boolean hasLabels() {
+        return ((bitField0_ & 0x00000400) == 0x00000400);
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 11;</code>
+       */
+      public org.apache.mesos.Protos.Labels getLabels() {
+        if (labelsBuilder_ == null) {
+          return labels_;
+        } else {
+          return labelsBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 11;</code>
+       */
+      public Builder setLabels(org.apache.mesos.Protos.Labels value) {
+        if (labelsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          labels_ = value;
+          onChanged();
+        } else {
+          labelsBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000400;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 11;</code>
+       */
+      public Builder setLabels(
+          org.apache.mesos.Protos.Labels.Builder builderForValue) {
+        if (labelsBuilder_ == null) {
+          labels_ = builderForValue.build();
+          onChanged();
+        } else {
+          labelsBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000400;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 11;</code>
+       */
+      public Builder mergeLabels(org.apache.mesos.Protos.Labels value) {
+        if (labelsBuilder_ == null) {
+          if (((bitField0_ & 0x00000400) == 0x00000400) &&
+              labels_ != org.apache.mesos.Protos.Labels.getDefaultInstance()) {
+            labels_ =
+              org.apache.mesos.Protos.Labels.newBuilder(labels_).mergeFrom(value).buildPartial();
+          } else {
+            labels_ = value;
+          }
+          onChanged();
+        } else {
+          labelsBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000400;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 11;</code>
+       */
+      public Builder clearLabels() {
+        if (labelsBuilder_ == null) {
+          labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+          onChanged();
+        } else {
+          labelsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000400);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 11;</code>
+       */
+      public org.apache.mesos.Protos.Labels.Builder getLabelsBuilder() {
+        bitField0_ |= 0x00000400;
+        onChanged();
+        return getLabelsFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 11;</code>
+       */
+      public org.apache.mesos.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+        if (labelsBuilder_ != null) {
+          return labelsBuilder_.getMessageOrBuilder();
+        } else {
+          return labels_;
+        }
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 11;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Labels, org.apache.mesos.Protos.Labels.Builder, org.apache.mesos.Protos.LabelsOrBuilder> 
+          getLabelsFieldBuilder() {
+        if (labelsBuilder_ == null) {
+          labelsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Labels, org.apache.mesos.Protos.Labels.Builder, org.apache.mesos.Protos.LabelsOrBuilder>(
+                  labels_,
+                  getParentForChildren(),
+                  isClean());
+          labels_ = null;
+        }
+        return labelsBuilder_;
+      }
+
+      // optional .mesos.DiscoveryInfo discovery = 12;
+      private org.apache.mesos.Protos.DiscoveryInfo discovery_ = org.apache.mesos.Protos.DiscoveryInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.DiscoveryInfo, org.apache.mesos.Protos.DiscoveryInfo.Builder, org.apache.mesos.Protos.DiscoveryInfoOrBuilder> discoveryBuilder_;
+      /**
+       * <code>optional .mesos.DiscoveryInfo discovery = 12;</code>
+       *
+       * <pre>
+       * Service discovery information for the task. It is not interpreted
+       * or acted upon by Mesos. It is up to a service discovery system
+       * to use this information as needed and to handle tasks without
+       * service discovery information.
+       * </pre>
+       */
+      public boolean hasDiscovery() {
+        return ((bitField0_ & 0x00000800) == 0x00000800);
+      }
+      /**
+       * <code>optional .mesos.DiscoveryInfo discovery = 12;</code>
+       *
+       * <pre>
+       * Service discovery information for the task. It is not interpreted
+       * or acted upon by Mesos. It is up to a service discovery system
+       * to use this information as needed and to handle tasks without
+       * service discovery information.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.DiscoveryInfo getDiscovery() {
+        if (discoveryBuilder_ == null) {
+          return discovery_;
+        } else {
+          return discoveryBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.DiscoveryInfo discovery = 12;</code>
+       *
+       * <pre>
+       * Service discovery information for the task. It is not interpreted
+       * or acted upon by Mesos. It is up to a service discovery system
+       * to use this information as needed and to handle tasks without
+       * service discovery information.
+       * </pre>
+       */
+      public Builder setDiscovery(org.apache.mesos.Protos.DiscoveryInfo value) {
+        if (discoveryBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          discovery_ = value;
+          onChanged();
+        } else {
+          discoveryBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.DiscoveryInfo discovery = 12;</code>
+       *
+       * <pre>
+       * Service discovery information for the task. It is not interpreted
+       * or acted upon by Mesos. It is up to a service discovery system
+       * to use this information as needed and to handle tasks without
+       * service discovery information.
+       * </pre>
+       */
+      public Builder setDiscovery(
+          org.apache.mesos.Protos.DiscoveryInfo.Builder builderForValue) {
+        if (discoveryBuilder_ == null) {
+          discovery_ = builderForValue.build();
+          onChanged();
+        } else {
+          discoveryBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.DiscoveryInfo discovery = 12;</code>
+       *
+       * <pre>
+       * Service discovery information for the task. It is not interpreted
+       * or acted upon by Mesos. It is up to a service discovery system
+       * to use this information as needed and to handle tasks without
+       * service discovery information.
+       * </pre>
+       */
+      public Builder mergeDiscovery(org.apache.mesos.Protos.DiscoveryInfo value) {
+        if (discoveryBuilder_ == null) {
+          if (((bitField0_ & 0x00000800) == 0x00000800) &&
+              discovery_ != org.apache.mesos.Protos.DiscoveryInfo.getDefaultInstance()) {
+            discovery_ =
+              org.apache.mesos.Protos.DiscoveryInfo.newBuilder(discovery_).mergeFrom(value).buildPartial();
+          } else {
+            discovery_ = value;
+          }
+          onChanged();
+        } else {
+          discoveryBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.DiscoveryInfo discovery = 12;</code>
+       *
+       * <pre>
+       * Service discovery information for the task. It is not interpreted
+       * or acted upon by Mesos. It is up to a service discovery system
+       * to use this information as needed and to handle tasks without
+       * service discovery information.
+       * </pre>
+       */
+      public Builder clearDiscovery() {
+        if (discoveryBuilder_ == null) {
+          discovery_ = org.apache.mesos.Protos.DiscoveryInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          discoveryBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000800);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.DiscoveryInfo discovery = 12;</code>
+       *
+       * <pre>
+       * Service discovery information for the task. It is not interpreted
+       * or acted upon by Mesos. It is up to a service discovery system
+       * to use this information as needed and to handle tasks without
+       * service discovery information.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.DiscoveryInfo.Builder getDiscoveryBuilder() {
+        bitField0_ |= 0x00000800;
+        onChanged();
+        return getDiscoveryFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.DiscoveryInfo discovery = 12;</code>
+       *
+       * <pre>
+       * Service discovery information for the task. It is not interpreted
+       * or acted upon by Mesos. It is up to a service discovery system
+       * to use this information as needed and to handle tasks without
+       * service discovery information.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.DiscoveryInfoOrBuilder getDiscoveryOrBuilder() {
+        if (discoveryBuilder_ != null) {
+          return discoveryBuilder_.getMessageOrBuilder();
+        } else {
+          return discovery_;
+        }
+      }
+      /**
+       * <code>optional .mesos.DiscoveryInfo discovery = 12;</code>
+       *
+       * <pre>
+       * Service discovery information for the task. It is not interpreted
+       * or acted upon by Mesos. It is up to a service discovery system
+       * to use this information as needed and to handle tasks without
+       * service discovery information.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.DiscoveryInfo, org.apache.mesos.Protos.DiscoveryInfo.Builder, org.apache.mesos.Protos.DiscoveryInfoOrBuilder> 
+          getDiscoveryFieldBuilder() {
+        if (discoveryBuilder_ == null) {
+          discoveryBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.DiscoveryInfo, org.apache.mesos.Protos.DiscoveryInfo.Builder, org.apache.mesos.Protos.DiscoveryInfoOrBuilder>(
+                  discovery_,
+                  getParentForChildren(),
+                  isClean());
+          discovery_ = null;
+        }
+        return discoveryBuilder_;
+      }
+
+      // optional .mesos.ContainerInfo container = 13;
+      private org.apache.mesos.Protos.ContainerInfo container_ = org.apache.mesos.Protos.ContainerInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.ContainerInfo, org.apache.mesos.Protos.ContainerInfo.Builder, org.apache.mesos.Protos.ContainerInfoOrBuilder> containerBuilder_;
+      /**
+       * <code>optional .mesos.ContainerInfo container = 13;</code>
+       *
+       * <pre>
+       * Container information for the task.
+       * </pre>
+       */
+      public boolean hasContainer() {
+        return ((bitField0_ & 0x00001000) == 0x00001000);
+      }
+      /**
+       * <code>optional .mesos.ContainerInfo container = 13;</code>
+       *
+       * <pre>
+       * Container information for the task.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.ContainerInfo getContainer() {
+        if (containerBuilder_ == null) {
+          return container_;
+        } else {
+          return containerBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.ContainerInfo container = 13;</code>
+       *
+       * <pre>
+       * Container information for the task.
+       * </pre>
+       */
+      public Builder setContainer(org.apache.mesos.Protos.ContainerInfo value) {
+        if (containerBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          container_ = value;
+          onChanged();
+        } else {
+          containerBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00001000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ContainerInfo container = 13;</code>
+       *
+       * <pre>
+       * Container information for the task.
+       * </pre>
+       */
+      public Builder setContainer(
+          org.apache.mesos.Protos.ContainerInfo.Builder builderForValue) {
+        if (containerBuilder_ == null) {
+          container_ = builderForValue.build();
+          onChanged();
+        } else {
+          containerBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00001000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ContainerInfo container = 13;</code>
+       *
+       * <pre>
+       * Container information for the task.
+       * </pre>
+       */
+      public Builder mergeContainer(org.apache.mesos.Protos.ContainerInfo value) {
+        if (containerBuilder_ == null) {
+          if (((bitField0_ & 0x00001000) == 0x00001000) &&
+              container_ != org.apache.mesos.Protos.ContainerInfo.getDefaultInstance()) {
+            container_ =
+              org.apache.mesos.Protos.ContainerInfo.newBuilder(container_).mergeFrom(value).buildPartial();
+          } else {
+            container_ = value;
+          }
+          onChanged();
+        } else {
+          containerBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00001000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ContainerInfo container = 13;</code>
+       *
+       * <pre>
+       * Container information for the task.
+       * </pre>
+       */
+      public Builder clearContainer() {
+        if (containerBuilder_ == null) {
+          container_ = org.apache.mesos.Protos.ContainerInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          containerBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00001000);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ContainerInfo container = 13;</code>
+       *
+       * <pre>
+       * Container information for the task.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.ContainerInfo.Builder getContainerBuilder() {
+        bitField0_ |= 0x00001000;
+        onChanged();
+        return getContainerFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.ContainerInfo container = 13;</code>
+       *
+       * <pre>
+       * Container information for the task.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.ContainerInfoOrBuilder getContainerOrBuilder() {
+        if (containerBuilder_ != null) {
+          return containerBuilder_.getMessageOrBuilder();
+        } else {
+          return container_;
+        }
+      }
+      /**
+       * <code>optional .mesos.ContainerInfo container = 13;</code>
+       *
+       * <pre>
+       * Container information for the task.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.ContainerInfo, org.apache.mesos.Protos.ContainerInfo.Builder, org.apache.mesos.Protos.ContainerInfoOrBuilder> 
+          getContainerFieldBuilder() {
+        if (containerBuilder_ == null) {
+          containerBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.ContainerInfo, org.apache.mesos.Protos.ContainerInfo.Builder, org.apache.mesos.Protos.ContainerInfoOrBuilder>(
+                  container_,
+                  getParentForChildren(),
+                  isClean());
+          container_ = null;
+        }
+        return containerBuilder_;
+      }
+
+      // optional string user = 14;
+      private java.lang.Object user_ = "";
+      /**
+       * <code>optional string user = 14;</code>
+       *
+       * <pre>
+       * Specific user under which task is running.
+       * </pre>
+       */
+      public boolean hasUser() {
+        return ((bitField0_ & 0x00002000) == 0x00002000);
+      }
+      /**
+       * <code>optional string user = 14;</code>
+       *
+       * <pre>
+       * Specific user under which task is running.
+       * </pre>
+       */
+      public java.lang.String getUser() {
+        java.lang.Object ref = user_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          user_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string user = 14;</code>
+       *
+       * <pre>
+       * Specific user under which task is running.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getUserBytes() {
+        java.lang.Object ref = user_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          user_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string user = 14;</code>
+       *
+       * <pre>
+       * Specific user under which task is running.
+       * </pre>
+       */
+      public Builder setUser(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00002000;
+        user_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string user = 14;</code>
+       *
+       * <pre>
+       * Specific user under which task is running.
+       * </pre>
+       */
+      public Builder clearUser() {
+        bitField0_ = (bitField0_ & ~0x00002000);
+        user_ = getDefaultInstance().getUser();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string user = 14;</code>
+       *
+       * <pre>
+       * Specific user under which task is running.
+       * </pre>
+       */
+      public Builder setUserBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00002000;
+        user_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.Task)
+    }
+
+    static {
+      defaultInstance = new Task(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.Task)
+  }
+
+  public interface CheckStatusInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional .mesos.CheckInfo.Type type = 1;
+    /**
+     * <code>optional .mesos.CheckInfo.Type type = 1;</code>
+     *
+     * <pre>
+     * The type of the check this status corresponds to.
+     * </pre>
+     */
+    boolean hasType();
+    /**
+     * <code>optional .mesos.CheckInfo.Type type = 1;</code>
+     *
+     * <pre>
+     * The type of the check this status corresponds to.
+     * </pre>
+     */
+    org.apache.mesos.Protos.CheckInfo.Type getType();
+
+    // optional .mesos.CheckStatusInfo.Command command = 2;
+    /**
+     * <code>optional .mesos.CheckStatusInfo.Command command = 2;</code>
+     *
+     * <pre>
+     * Status of a command check.
+     * </pre>
+     */
+    boolean hasCommand();
+    /**
+     * <code>optional .mesos.CheckStatusInfo.Command command = 2;</code>
+     *
+     * <pre>
+     * Status of a command check.
+     * </pre>
+     */
+    org.apache.mesos.Protos.CheckStatusInfo.Command getCommand();
+    /**
+     * <code>optional .mesos.CheckStatusInfo.Command command = 2;</code>
+     *
+     * <pre>
+     * Status of a command check.
+     * </pre>
+     */
+    org.apache.mesos.Protos.CheckStatusInfo.CommandOrBuilder getCommandOrBuilder();
+
+    // optional .mesos.CheckStatusInfo.Http http = 3;
+    /**
+     * <code>optional .mesos.CheckStatusInfo.Http http = 3;</code>
+     *
+     * <pre>
+     * Status of an HTTP check.
+     * </pre>
+     */
+    boolean hasHttp();
+    /**
+     * <code>optional .mesos.CheckStatusInfo.Http http = 3;</code>
+     *
+     * <pre>
+     * Status of an HTTP check.
+     * </pre>
+     */
+    org.apache.mesos.Protos.CheckStatusInfo.Http getHttp();
+    /**
+     * <code>optional .mesos.CheckStatusInfo.Http http = 3;</code>
+     *
+     * <pre>
+     * Status of an HTTP check.
+     * </pre>
+     */
+    org.apache.mesos.Protos.CheckStatusInfo.HttpOrBuilder getHttpOrBuilder();
+
+    // optional .mesos.CheckStatusInfo.Tcp tcp = 4;
+    /**
+     * <code>optional .mesos.CheckStatusInfo.Tcp tcp = 4;</code>
+     *
+     * <pre>
+     * Status of a TCP check.
+     * </pre>
+     */
+    boolean hasTcp();
+    /**
+     * <code>optional .mesos.CheckStatusInfo.Tcp tcp = 4;</code>
+     *
+     * <pre>
+     * Status of a TCP check.
+     * </pre>
+     */
+    org.apache.mesos.Protos.CheckStatusInfo.Tcp getTcp();
+    /**
+     * <code>optional .mesos.CheckStatusInfo.Tcp tcp = 4;</code>
+     *
+     * <pre>
+     * Status of a TCP check.
+     * </pre>
+     */
+    org.apache.mesos.Protos.CheckStatusInfo.TcpOrBuilder getTcpOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.CheckStatusInfo}
+   *
+   * <pre>
+   **
+   * Describes the status of a check. Type and the corresponding field, i.e.,
+   * `command` or `http` must be set. If the result of the check is not available
+   * (e.g., the check timed out), these fields must contain empty messages, i.e.,
+   * `exit_code` or `status_code` will be unset.
+   *
+   * NOTE: This API is unstable and the related feature is experimental.
+   * </pre>
+   */
+  public static final class CheckStatusInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements CheckStatusInfoOrBuilder {
+    // Use CheckStatusInfo.newBuilder() to construct.
+    private CheckStatusInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private CheckStatusInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final CheckStatusInfo defaultInstance;
+    public static CheckStatusInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public CheckStatusInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private CheckStatusInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 8: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.Protos.CheckInfo.Type value = org.apache.mesos.Protos.CheckInfo.Type.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(1, rawValue);
+              } else {
+                bitField0_ |= 0x00000001;
+                type_ = value;
+              }
+              break;
+            }
+            case 18: {
+              org.apache.mesos.Protos.CheckStatusInfo.Command.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = command_.toBuilder();
+              }
+              command_ = input.readMessage(org.apache.mesos.Protos.CheckStatusInfo.Command.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(command_);
+                command_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+            case 26: {
+              org.apache.mesos.Protos.CheckStatusInfo.Http.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                subBuilder = http_.toBuilder();
+              }
+              http_ = input.readMessage(org.apache.mesos.Protos.CheckStatusInfo.Http.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(http_);
+                http_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000004;
+              break;
+            }
+            case 34: {
+              org.apache.mesos.Protos.CheckStatusInfo.Tcp.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                subBuilder = tcp_.toBuilder();
+              }
+              tcp_ = input.readMessage(org.apache.mesos.Protos.CheckStatusInfo.Tcp.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(tcp_);
+                tcp_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000008;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_CheckStatusInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_CheckStatusInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.CheckStatusInfo.class, org.apache.mesos.Protos.CheckStatusInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<CheckStatusInfo> PARSER =
+        new com.google.protobuf.AbstractParser<CheckStatusInfo>() {
+      public CheckStatusInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new CheckStatusInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<CheckStatusInfo> getParserForType() {
+      return PARSER;
+    }
+
+    public interface CommandOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // optional int32 exit_code = 1;
+      /**
+       * <code>optional int32 exit_code = 1;</code>
+       *
+       * <pre>
+       * Exit code of a command check. It is the result of calling
+       * `WEXITSTATUS()` on `waitpid()` termination information on
+       * Posix and calling `GetExitCodeProcess()` on Windows.
+       * </pre>
+       */
+      boolean hasExitCode();
+      /**
+       * <code>optional int32 exit_code = 1;</code>
+       *
+       * <pre>
+       * Exit code of a command check. It is the result of calling
+       * `WEXITSTATUS()` on `waitpid()` termination information on
+       * Posix and calling `GetExitCodeProcess()` on Windows.
+       * </pre>
+       */
+      int getExitCode();
+    }
+    /**
+     * Protobuf type {@code mesos.CheckStatusInfo.Command}
+     */
+    public static final class Command extends
+        com.google.protobuf.GeneratedMessage
+        implements CommandOrBuilder {
+      // Use Command.newBuilder() to construct.
+      private Command(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Command(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Command defaultInstance;
+      public static Command getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Command getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Command(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 8: {
+                bitField0_ |= 0x00000001;
+                exitCode_ = input.readInt32();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_CheckStatusInfo_Command_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_CheckStatusInfo_Command_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.CheckStatusInfo.Command.class, org.apache.mesos.Protos.CheckStatusInfo.Command.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Command> PARSER =
+          new com.google.protobuf.AbstractParser<Command>() {
+        public Command parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Command(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Command> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // optional int32 exit_code = 1;
+      public static final int EXIT_CODE_FIELD_NUMBER = 1;
+      private int exitCode_;
+      /**
+       * <code>optional int32 exit_code = 1;</code>
+       *
+       * <pre>
+       * Exit code of a command check. It is the result of calling
+       * `WEXITSTATUS()` on `waitpid()` termination information on
+       * Posix and calling `GetExitCodeProcess()` on Windows.
+       * </pre>
+       */
+      public boolean hasExitCode() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional int32 exit_code = 1;</code>
+       *
+       * <pre>
+       * Exit code of a command check. It is the result of calling
+       * `WEXITSTATUS()` on `waitpid()` termination information on
+       * Posix and calling `GetExitCodeProcess()` on Windows.
+       * </pre>
+       */
+      public int getExitCode() {
+        return exitCode_;
+      }
+
+      private void initFields() {
+        exitCode_ = 0;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeInt32(1, exitCode_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeInt32Size(1, exitCode_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.Protos.CheckStatusInfo.Command parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.CheckStatusInfo.Command parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.CheckStatusInfo.Command parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.CheckStatusInfo.Command parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.CheckStatusInfo.Command parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.CheckStatusInfo.Command parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.CheckStatusInfo.Command parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.Protos.CheckStatusInfo.Command parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.CheckStatusInfo.Command parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.CheckStatusInfo.Command parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.Protos.CheckStatusInfo.Command prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.CheckStatusInfo.Command}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.Protos.CheckStatusInfo.CommandOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_CheckStatusInfo_Command_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_CheckStatusInfo_Command_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.CheckStatusInfo.Command.class, org.apache.mesos.Protos.CheckStatusInfo.Command.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.Protos.CheckStatusInfo.Command.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          exitCode_ = 0;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.Protos.internal_static_mesos_CheckStatusInfo_Command_descriptor;
+        }
+
+        public org.apache.mesos.Protos.CheckStatusInfo.Command getDefaultInstanceForType() {
+          return org.apache.mesos.Protos.CheckStatusInfo.Command.getDefaultInstance();
+        }
+
+        public org.apache.mesos.Protos.CheckStatusInfo.Command build() {
+          org.apache.mesos.Protos.CheckStatusInfo.Command result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.Protos.CheckStatusInfo.Command buildPartial() {
+          org.apache.mesos.Protos.CheckStatusInfo.Command result = new org.apache.mesos.Protos.CheckStatusInfo.Command(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.exitCode_ = exitCode_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.Protos.CheckStatusInfo.Command) {
+            return mergeFrom((org.apache.mesos.Protos.CheckStatusInfo.Command)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.Protos.CheckStatusInfo.Command other) {
+          if (other == org.apache.mesos.Protos.CheckStatusInfo.Command.getDefaultInstance()) return this;
+          if (other.hasExitCode()) {
+            setExitCode(other.getExitCode());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.Protos.CheckStatusInfo.Command parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.Protos.CheckStatusInfo.Command) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // optional int32 exit_code = 1;
+        private int exitCode_ ;
+        /**
+         * <code>optional int32 exit_code = 1;</code>
+         *
+         * <pre>
+         * Exit code of a command check. It is the result of calling
+         * `WEXITSTATUS()` on `waitpid()` termination information on
+         * Posix and calling `GetExitCodeProcess()` on Windows.
+         * </pre>
+         */
+        public boolean hasExitCode() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional int32 exit_code = 1;</code>
+         *
+         * <pre>
+         * Exit code of a command check. It is the result of calling
+         * `WEXITSTATUS()` on `waitpid()` termination information on
+         * Posix and calling `GetExitCodeProcess()` on Windows.
+         * </pre>
+         */
+        public int getExitCode() {
+          return exitCode_;
+        }
+        /**
+         * <code>optional int32 exit_code = 1;</code>
+         *
+         * <pre>
+         * Exit code of a command check. It is the result of calling
+         * `WEXITSTATUS()` on `waitpid()` termination information on
+         * Posix and calling `GetExitCodeProcess()` on Windows.
+         * </pre>
+         */
+        public Builder setExitCode(int value) {
+          bitField0_ |= 0x00000001;
+          exitCode_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional int32 exit_code = 1;</code>
+         *
+         * <pre>
+         * Exit code of a command check. It is the result of calling
+         * `WEXITSTATUS()` on `waitpid()` termination information on
+         * Posix and calling `GetExitCodeProcess()` on Windows.
+         * </pre>
+         */
+        public Builder clearExitCode() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          exitCode_ = 0;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.CheckStatusInfo.Command)
+      }
+
+      static {
+        defaultInstance = new Command(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.CheckStatusInfo.Command)
+    }
+
+    public interface HttpOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // optional uint32 status_code = 1;
+      /**
+       * <code>optional uint32 status_code = 1;</code>
+       *
+       * <pre>
+       * HTTP status code of an HTTP check.
+       * </pre>
+       */
+      boolean hasStatusCode();
+      /**
+       * <code>optional uint32 status_code = 1;</code>
+       *
+       * <pre>
+       * HTTP status code of an HTTP check.
+       * </pre>
+       */
+      int getStatusCode();
+    }
+    /**
+     * Protobuf type {@code mesos.CheckStatusInfo.Http}
+     */
+    public static final class Http extends
+        com.google.protobuf.GeneratedMessage
+        implements HttpOrBuilder {
+      // Use Http.newBuilder() to construct.
+      private Http(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Http(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Http defaultInstance;
+      public static Http getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Http getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Http(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 8: {
+                bitField0_ |= 0x00000001;
+                statusCode_ = input.readUInt32();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_CheckStatusInfo_Http_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_CheckStatusInfo_Http_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.CheckStatusInfo.Http.class, org.apache.mesos.Protos.CheckStatusInfo.Http.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Http> PARSER =
+          new com.google.protobuf.AbstractParser<Http>() {
+        public Http parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Http(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Http> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // optional uint32 status_code = 1;
+      public static final int STATUS_CODE_FIELD_NUMBER = 1;
+      private int statusCode_;
+      /**
+       * <code>optional uint32 status_code = 1;</code>
+       *
+       * <pre>
+       * HTTP status code of an HTTP check.
+       * </pre>
+       */
+      public boolean hasStatusCode() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional uint32 status_code = 1;</code>
+       *
+       * <pre>
+       * HTTP status code of an HTTP check.
+       * </pre>
+       */
+      public int getStatusCode() {
+        return statusCode_;
+      }
+
+      private void initFields() {
+        statusCode_ = 0;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeUInt32(1, statusCode_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeUInt32Size(1, statusCode_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.Protos.CheckStatusInfo.Http parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.CheckStatusInfo.Http parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.CheckStatusInfo.Http parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.CheckStatusInfo.Http parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.CheckStatusInfo.Http parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.CheckStatusInfo.Http parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.CheckStatusInfo.Http parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.Protos.CheckStatusInfo.Http parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.CheckStatusInfo.Http parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.CheckStatusInfo.Http parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.Protos.CheckStatusInfo.Http prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.CheckStatusInfo.Http}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.Protos.CheckStatusInfo.HttpOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_CheckStatusInfo_Http_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_CheckStatusInfo_Http_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.CheckStatusInfo.Http.class, org.apache.mesos.Protos.CheckStatusInfo.Http.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.Protos.CheckStatusInfo.Http.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          statusCode_ = 0;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.Protos.internal_static_mesos_CheckStatusInfo_Http_descriptor;
+        }
+
+        public org.apache.mesos.Protos.CheckStatusInfo.Http getDefaultInstanceForType() {
+          return org.apache.mesos.Protos.CheckStatusInfo.Http.getDefaultInstance();
+        }
+
+        public org.apache.mesos.Protos.CheckStatusInfo.Http build() {
+          org.apache.mesos.Protos.CheckStatusInfo.Http result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.Protos.CheckStatusInfo.Http buildPartial() {
+          org.apache.mesos.Protos.CheckStatusInfo.Http result = new org.apache.mesos.Protos.CheckStatusInfo.Http(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.statusCode_ = statusCode_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.Protos.CheckStatusInfo.Http) {
+            return mergeFrom((org.apache.mesos.Protos.CheckStatusInfo.Http)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.Protos.CheckStatusInfo.Http other) {
+          if (other == org.apache.mesos.Protos.CheckStatusInfo.Http.getDefaultInstance()) return this;
+          if (other.hasStatusCode()) {
+            setStatusCode(other.getStatusCode());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.Protos.CheckStatusInfo.Http parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.Protos.CheckStatusInfo.Http) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // optional uint32 status_code = 1;
+        private int statusCode_ ;
+        /**
+         * <code>optional uint32 status_code = 1;</code>
+         *
+         * <pre>
+         * HTTP status code of an HTTP check.
+         * </pre>
+         */
+        public boolean hasStatusCode() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional uint32 status_code = 1;</code>
+         *
+         * <pre>
+         * HTTP status code of an HTTP check.
+         * </pre>
+         */
+        public int getStatusCode() {
+          return statusCode_;
+        }
+        /**
+         * <code>optional uint32 status_code = 1;</code>
+         *
+         * <pre>
+         * HTTP status code of an HTTP check.
+         * </pre>
+         */
+        public Builder setStatusCode(int value) {
+          bitField0_ |= 0x00000001;
+          statusCode_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional uint32 status_code = 1;</code>
+         *
+         * <pre>
+         * HTTP status code of an HTTP check.
+         * </pre>
+         */
+        public Builder clearStatusCode() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          statusCode_ = 0;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.CheckStatusInfo.Http)
+      }
+
+      static {
+        defaultInstance = new Http(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.CheckStatusInfo.Http)
+    }
+
+    public interface TcpOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // optional bool succeeded = 1;
+      /**
+       * <code>optional bool succeeded = 1;</code>
+       *
+       * <pre>
+       * Whether a TCP connection succeeded.
+       * </pre>
+       */
+      boolean hasSucceeded();
+      /**
+       * <code>optional bool succeeded = 1;</code>
+       *
+       * <pre>
+       * Whether a TCP connection succeeded.
+       * </pre>
+       */
+      boolean getSucceeded();
+    }
+    /**
+     * Protobuf type {@code mesos.CheckStatusInfo.Tcp}
+     */
+    public static final class Tcp extends
+        com.google.protobuf.GeneratedMessage
+        implements TcpOrBuilder {
+      // Use Tcp.newBuilder() to construct.
+      private Tcp(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Tcp(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Tcp defaultInstance;
+      public static Tcp getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Tcp getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Tcp(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 8: {
+                bitField0_ |= 0x00000001;
+                succeeded_ = input.readBool();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_CheckStatusInfo_Tcp_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_CheckStatusInfo_Tcp_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.CheckStatusInfo.Tcp.class, org.apache.mesos.Protos.CheckStatusInfo.Tcp.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Tcp> PARSER =
+          new com.google.protobuf.AbstractParser<Tcp>() {
+        public Tcp parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Tcp(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Tcp> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // optional bool succeeded = 1;
+      public static final int SUCCEEDED_FIELD_NUMBER = 1;
+      private boolean succeeded_;
+      /**
+       * <code>optional bool succeeded = 1;</code>
+       *
+       * <pre>
+       * Whether a TCP connection succeeded.
+       * </pre>
+       */
+      public boolean hasSucceeded() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional bool succeeded = 1;</code>
+       *
+       * <pre>
+       * Whether a TCP connection succeeded.
+       * </pre>
+       */
+      public boolean getSucceeded() {
+        return succeeded_;
+      }
+
+      private void initFields() {
+        succeeded_ = false;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeBool(1, succeeded_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBoolSize(1, succeeded_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.Protos.CheckStatusInfo.Tcp parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.CheckStatusInfo.Tcp parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.CheckStatusInfo.Tcp parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.CheckStatusInfo.Tcp parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.CheckStatusInfo.Tcp parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.CheckStatusInfo.Tcp parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.CheckStatusInfo.Tcp parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.Protos.CheckStatusInfo.Tcp parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.CheckStatusInfo.Tcp parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.CheckStatusInfo.Tcp parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.Protos.CheckStatusInfo.Tcp prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.CheckStatusInfo.Tcp}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.Protos.CheckStatusInfo.TcpOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_CheckStatusInfo_Tcp_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_CheckStatusInfo_Tcp_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.CheckStatusInfo.Tcp.class, org.apache.mesos.Protos.CheckStatusInfo.Tcp.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.Protos.CheckStatusInfo.Tcp.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          succeeded_ = false;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.Protos.internal_static_mesos_CheckStatusInfo_Tcp_descriptor;
+        }
+
+        public org.apache.mesos.Protos.CheckStatusInfo.Tcp getDefaultInstanceForType() {
+          return org.apache.mesos.Protos.CheckStatusInfo.Tcp.getDefaultInstance();
+        }
+
+        public org.apache.mesos.Protos.CheckStatusInfo.Tcp build() {
+          org.apache.mesos.Protos.CheckStatusInfo.Tcp result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.Protos.CheckStatusInfo.Tcp buildPartial() {
+          org.apache.mesos.Protos.CheckStatusInfo.Tcp result = new org.apache.mesos.Protos.CheckStatusInfo.Tcp(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.succeeded_ = succeeded_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.Protos.CheckStatusInfo.Tcp) {
+            return mergeFrom((org.apache.mesos.Protos.CheckStatusInfo.Tcp)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.Protos.CheckStatusInfo.Tcp other) {
+          if (other == org.apache.mesos.Protos.CheckStatusInfo.Tcp.getDefaultInstance()) return this;
+          if (other.hasSucceeded()) {
+            setSucceeded(other.getSucceeded());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.Protos.CheckStatusInfo.Tcp parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.Protos.CheckStatusInfo.Tcp) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // optional bool succeeded = 1;
+        private boolean succeeded_ ;
+        /**
+         * <code>optional bool succeeded = 1;</code>
+         *
+         * <pre>
+         * Whether a TCP connection succeeded.
+         * </pre>
+         */
+        public boolean hasSucceeded() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional bool succeeded = 1;</code>
+         *
+         * <pre>
+         * Whether a TCP connection succeeded.
+         * </pre>
+         */
+        public boolean getSucceeded() {
+          return succeeded_;
+        }
+        /**
+         * <code>optional bool succeeded = 1;</code>
+         *
+         * <pre>
+         * Whether a TCP connection succeeded.
+         * </pre>
+         */
+        public Builder setSucceeded(boolean value) {
+          bitField0_ |= 0x00000001;
+          succeeded_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional bool succeeded = 1;</code>
+         *
+         * <pre>
+         * Whether a TCP connection succeeded.
+         * </pre>
+         */
+        public Builder clearSucceeded() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          succeeded_ = false;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.CheckStatusInfo.Tcp)
+      }
+
+      static {
+        defaultInstance = new Tcp(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.CheckStatusInfo.Tcp)
+    }
+
+    private int bitField0_;
+    // optional .mesos.CheckInfo.Type type = 1;
+    public static final int TYPE_FIELD_NUMBER = 1;
+    private org.apache.mesos.Protos.CheckInfo.Type type_;
+    /**
+     * <code>optional .mesos.CheckInfo.Type type = 1;</code>
+     *
+     * <pre>
+     * The type of the check this status corresponds to.
+     * </pre>
+     */
+    public boolean hasType() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional .mesos.CheckInfo.Type type = 1;</code>
+     *
+     * <pre>
+     * The type of the check this status corresponds to.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.CheckInfo.Type getType() {
+      return type_;
+    }
+
+    // optional .mesos.CheckStatusInfo.Command command = 2;
+    public static final int COMMAND_FIELD_NUMBER = 2;
+    private org.apache.mesos.Protos.CheckStatusInfo.Command command_;
+    /**
+     * <code>optional .mesos.CheckStatusInfo.Command command = 2;</code>
+     *
+     * <pre>
+     * Status of a command check.
+     * </pre>
+     */
+    public boolean hasCommand() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional .mesos.CheckStatusInfo.Command command = 2;</code>
+     *
+     * <pre>
+     * Status of a command check.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.CheckStatusInfo.Command getCommand() {
+      return command_;
+    }
+    /**
+     * <code>optional .mesos.CheckStatusInfo.Command command = 2;</code>
+     *
+     * <pre>
+     * Status of a command check.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.CheckStatusInfo.CommandOrBuilder getCommandOrBuilder() {
+      return command_;
+    }
+
+    // optional .mesos.CheckStatusInfo.Http http = 3;
+    public static final int HTTP_FIELD_NUMBER = 3;
+    private org.apache.mesos.Protos.CheckStatusInfo.Http http_;
+    /**
+     * <code>optional .mesos.CheckStatusInfo.Http http = 3;</code>
+     *
+     * <pre>
+     * Status of an HTTP check.
+     * </pre>
+     */
+    public boolean hasHttp() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional .mesos.CheckStatusInfo.Http http = 3;</code>
+     *
+     * <pre>
+     * Status of an HTTP check.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.CheckStatusInfo.Http getHttp() {
+      return http_;
+    }
+    /**
+     * <code>optional .mesos.CheckStatusInfo.Http http = 3;</code>
+     *
+     * <pre>
+     * Status of an HTTP check.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.CheckStatusInfo.HttpOrBuilder getHttpOrBuilder() {
+      return http_;
+    }
+
+    // optional .mesos.CheckStatusInfo.Tcp tcp = 4;
+    public static final int TCP_FIELD_NUMBER = 4;
+    private org.apache.mesos.Protos.CheckStatusInfo.Tcp tcp_;
+    /**
+     * <code>optional .mesos.CheckStatusInfo.Tcp tcp = 4;</code>
+     *
+     * <pre>
+     * Status of a TCP check.
+     * </pre>
+     */
+    public boolean hasTcp() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional .mesos.CheckStatusInfo.Tcp tcp = 4;</code>
+     *
+     * <pre>
+     * Status of a TCP check.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.CheckStatusInfo.Tcp getTcp() {
+      return tcp_;
+    }
+    /**
+     * <code>optional .mesos.CheckStatusInfo.Tcp tcp = 4;</code>
+     *
+     * <pre>
+     * Status of a TCP check.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.CheckStatusInfo.TcpOrBuilder getTcpOrBuilder() {
+      return tcp_;
+    }
+
+    private void initFields() {
+      type_ = org.apache.mesos.Protos.CheckInfo.Type.UNKNOWN;
+      command_ = org.apache.mesos.Protos.CheckStatusInfo.Command.getDefaultInstance();
+      http_ = org.apache.mesos.Protos.CheckStatusInfo.Http.getDefaultInstance();
+      tcp_ = org.apache.mesos.Protos.CheckStatusInfo.Tcp.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeEnum(1, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(2, command_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeMessage(3, http_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeMessage(4, tcp_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(1, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, command_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, http_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, tcp_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.CheckStatusInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.CheckStatusInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.CheckStatusInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.CheckStatusInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.CheckStatusInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.CheckStatusInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.CheckStatusInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.CheckStatusInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.CheckStatusInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.CheckStatusInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.CheckStatusInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.CheckStatusInfo}
+     *
+     * <pre>
+     **
+     * Describes the status of a check. Type and the corresponding field, i.e.,
+     * `command` or `http` must be set. If the result of the check is not available
+     * (e.g., the check timed out), these fields must contain empty messages, i.e.,
+     * `exit_code` or `status_code` will be unset.
+     *
+     * NOTE: This API is unstable and the related feature is experimental.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.CheckStatusInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_CheckStatusInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_CheckStatusInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.CheckStatusInfo.class, org.apache.mesos.Protos.CheckStatusInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.CheckStatusInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getCommandFieldBuilder();
+          getHttpFieldBuilder();
+          getTcpFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        type_ = org.apache.mesos.Protos.CheckInfo.Type.UNKNOWN;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (commandBuilder_ == null) {
+          command_ = org.apache.mesos.Protos.CheckStatusInfo.Command.getDefaultInstance();
+        } else {
+          commandBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        if (httpBuilder_ == null) {
+          http_ = org.apache.mesos.Protos.CheckStatusInfo.Http.getDefaultInstance();
+        } else {
+          httpBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        if (tcpBuilder_ == null) {
+          tcp_ = org.apache.mesos.Protos.CheckStatusInfo.Tcp.getDefaultInstance();
+        } else {
+          tcpBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_CheckStatusInfo_descriptor;
+      }
+
+      public org.apache.mesos.Protos.CheckStatusInfo getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.CheckStatusInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.CheckStatusInfo build() {
+        org.apache.mesos.Protos.CheckStatusInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.CheckStatusInfo buildPartial() {
+        org.apache.mesos.Protos.CheckStatusInfo result = new org.apache.mesos.Protos.CheckStatusInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.type_ = type_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (commandBuilder_ == null) {
+          result.command_ = command_;
+        } else {
+          result.command_ = commandBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        if (httpBuilder_ == null) {
+          result.http_ = http_;
+        } else {
+          result.http_ = httpBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        if (tcpBuilder_ == null) {
+          result.tcp_ = tcp_;
+        } else {
+          result.tcp_ = tcpBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.CheckStatusInfo) {
+          return mergeFrom((org.apache.mesos.Protos.CheckStatusInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.CheckStatusInfo other) {
+        if (other == org.apache.mesos.Protos.CheckStatusInfo.getDefaultInstance()) return this;
+        if (other.hasType()) {
+          setType(other.getType());
+        }
+        if (other.hasCommand()) {
+          mergeCommand(other.getCommand());
+        }
+        if (other.hasHttp()) {
+          mergeHttp(other.getHttp());
+        }
+        if (other.hasTcp()) {
+          mergeTcp(other.getTcp());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.CheckStatusInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.CheckStatusInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional .mesos.CheckInfo.Type type = 1;
+      private org.apache.mesos.Protos.CheckInfo.Type type_ = org.apache.mesos.Protos.CheckInfo.Type.UNKNOWN;
+      /**
+       * <code>optional .mesos.CheckInfo.Type type = 1;</code>
+       *
+       * <pre>
+       * The type of the check this status corresponds to.
+       * </pre>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.CheckInfo.Type type = 1;</code>
+       *
+       * <pre>
+       * The type of the check this status corresponds to.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.CheckInfo.Type getType() {
+        return type_;
+      }
+      /**
+       * <code>optional .mesos.CheckInfo.Type type = 1;</code>
+       *
+       * <pre>
+       * The type of the check this status corresponds to.
+       * </pre>
+       */
+      public Builder setType(org.apache.mesos.Protos.CheckInfo.Type value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000001;
+        type_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CheckInfo.Type type = 1;</code>
+       *
+       * <pre>
+       * The type of the check this status corresponds to.
+       * </pre>
+       */
+      public Builder clearType() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        type_ = org.apache.mesos.Protos.CheckInfo.Type.UNKNOWN;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.CheckStatusInfo.Command command = 2;
+      private org.apache.mesos.Protos.CheckStatusInfo.Command command_ = org.apache.mesos.Protos.CheckStatusInfo.Command.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.CheckStatusInfo.Command, org.apache.mesos.Protos.CheckStatusInfo.Command.Builder, org.apache.mesos.Protos.CheckStatusInfo.CommandOrBuilder> commandBuilder_;
+      /**
+       * <code>optional .mesos.CheckStatusInfo.Command command = 2;</code>
+       *
+       * <pre>
+       * Status of a command check.
+       * </pre>
+       */
+      public boolean hasCommand() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.CheckStatusInfo.Command command = 2;</code>
+       *
+       * <pre>
+       * Status of a command check.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.CheckStatusInfo.Command getCommand() {
+        if (commandBuilder_ == null) {
+          return command_;
+        } else {
+          return commandBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.CheckStatusInfo.Command command = 2;</code>
+       *
+       * <pre>
+       * Status of a command check.
+       * </pre>
+       */
+      public Builder setCommand(org.apache.mesos.Protos.CheckStatusInfo.Command value) {
+        if (commandBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          command_ = value;
+          onChanged();
+        } else {
+          commandBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CheckStatusInfo.Command command = 2;</code>
+       *
+       * <pre>
+       * Status of a command check.
+       * </pre>
+       */
+      public Builder setCommand(
+          org.apache.mesos.Protos.CheckStatusInfo.Command.Builder builderForValue) {
+        if (commandBuilder_ == null) {
+          command_ = builderForValue.build();
+          onChanged();
+        } else {
+          commandBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CheckStatusInfo.Command command = 2;</code>
+       *
+       * <pre>
+       * Status of a command check.
+       * </pre>
+       */
+      public Builder mergeCommand(org.apache.mesos.Protos.CheckStatusInfo.Command value) {
+        if (commandBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              command_ != org.apache.mesos.Protos.CheckStatusInfo.Command.getDefaultInstance()) {
+            command_ =
+              org.apache.mesos.Protos.CheckStatusInfo.Command.newBuilder(command_).mergeFrom(value).buildPartial();
+          } else {
+            command_ = value;
+          }
+          onChanged();
+        } else {
+          commandBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CheckStatusInfo.Command command = 2;</code>
+       *
+       * <pre>
+       * Status of a command check.
+       * </pre>
+       */
+      public Builder clearCommand() {
+        if (commandBuilder_ == null) {
+          command_ = org.apache.mesos.Protos.CheckStatusInfo.Command.getDefaultInstance();
+          onChanged();
+        } else {
+          commandBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CheckStatusInfo.Command command = 2;</code>
+       *
+       * <pre>
+       * Status of a command check.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.CheckStatusInfo.Command.Builder getCommandBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getCommandFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.CheckStatusInfo.Command command = 2;</code>
+       *
+       * <pre>
+       * Status of a command check.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.CheckStatusInfo.CommandOrBuilder getCommandOrBuilder() {
+        if (commandBuilder_ != null) {
+          return commandBuilder_.getMessageOrBuilder();
+        } else {
+          return command_;
+        }
+      }
+      /**
+       * <code>optional .mesos.CheckStatusInfo.Command command = 2;</code>
+       *
+       * <pre>
+       * Status of a command check.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.CheckStatusInfo.Command, org.apache.mesos.Protos.CheckStatusInfo.Command.Builder, org.apache.mesos.Protos.CheckStatusInfo.CommandOrBuilder> 
+          getCommandFieldBuilder() {
+        if (commandBuilder_ == null) {
+          commandBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.CheckStatusInfo.Command, org.apache.mesos.Protos.CheckStatusInfo.Command.Builder, org.apache.mesos.Protos.CheckStatusInfo.CommandOrBuilder>(
+                  command_,
+                  getParentForChildren(),
+                  isClean());
+          command_ = null;
+        }
+        return commandBuilder_;
+      }
+
+      // optional .mesos.CheckStatusInfo.Http http = 3;
+      private org.apache.mesos.Protos.CheckStatusInfo.Http http_ = org.apache.mesos.Protos.CheckStatusInfo.Http.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.CheckStatusInfo.Http, org.apache.mesos.Protos.CheckStatusInfo.Http.Builder, org.apache.mesos.Protos.CheckStatusInfo.HttpOrBuilder> httpBuilder_;
+      /**
+       * <code>optional .mesos.CheckStatusInfo.Http http = 3;</code>
+       *
+       * <pre>
+       * Status of an HTTP check.
+       * </pre>
+       */
+      public boolean hasHttp() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.CheckStatusInfo.Http http = 3;</code>
+       *
+       * <pre>
+       * Status of an HTTP check.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.CheckStatusInfo.Http getHttp() {
+        if (httpBuilder_ == null) {
+          return http_;
+        } else {
+          return httpBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.CheckStatusInfo.Http http = 3;</code>
+       *
+       * <pre>
+       * Status of an HTTP check.
+       * </pre>
+       */
+      public Builder setHttp(org.apache.mesos.Protos.CheckStatusInfo.Http value) {
+        if (httpBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          http_ = value;
+          onChanged();
+        } else {
+          httpBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CheckStatusInfo.Http http = 3;</code>
+       *
+       * <pre>
+       * Status of an HTTP check.
+       * </pre>
+       */
+      public Builder setHttp(
+          org.apache.mesos.Protos.CheckStatusInfo.Http.Builder builderForValue) {
+        if (httpBuilder_ == null) {
+          http_ = builderForValue.build();
+          onChanged();
+        } else {
+          httpBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CheckStatusInfo.Http http = 3;</code>
+       *
+       * <pre>
+       * Status of an HTTP check.
+       * </pre>
+       */
+      public Builder mergeHttp(org.apache.mesos.Protos.CheckStatusInfo.Http value) {
+        if (httpBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) == 0x00000004) &&
+              http_ != org.apache.mesos.Protos.CheckStatusInfo.Http.getDefaultInstance()) {
+            http_ =
+              org.apache.mesos.Protos.CheckStatusInfo.Http.newBuilder(http_).mergeFrom(value).buildPartial();
+          } else {
+            http_ = value;
+          }
+          onChanged();
+        } else {
+          httpBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CheckStatusInfo.Http http = 3;</code>
+       *
+       * <pre>
+       * Status of an HTTP check.
+       * </pre>
+       */
+      public Builder clearHttp() {
+        if (httpBuilder_ == null) {
+          http_ = org.apache.mesos.Protos.CheckStatusInfo.Http.getDefaultInstance();
+          onChanged();
+        } else {
+          httpBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CheckStatusInfo.Http http = 3;</code>
+       *
+       * <pre>
+       * Status of an HTTP check.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.CheckStatusInfo.Http.Builder getHttpBuilder() {
+        bitField0_ |= 0x00000004;
+        onChanged();
+        return getHttpFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.CheckStatusInfo.Http http = 3;</code>
+       *
+       * <pre>
+       * Status of an HTTP check.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.CheckStatusInfo.HttpOrBuilder getHttpOrBuilder() {
+        if (httpBuilder_ != null) {
+          return httpBuilder_.getMessageOrBuilder();
+        } else {
+          return http_;
+        }
+      }
+      /**
+       * <code>optional .mesos.CheckStatusInfo.Http http = 3;</code>
+       *
+       * <pre>
+       * Status of an HTTP check.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.CheckStatusInfo.Http, org.apache.mesos.Protos.CheckStatusInfo.Http.Builder, org.apache.mesos.Protos.CheckStatusInfo.HttpOrBuilder> 
+          getHttpFieldBuilder() {
+        if (httpBuilder_ == null) {
+          httpBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.CheckStatusInfo.Http, org.apache.mesos.Protos.CheckStatusInfo.Http.Builder, org.apache.mesos.Protos.CheckStatusInfo.HttpOrBuilder>(
+                  http_,
+                  getParentForChildren(),
+                  isClean());
+          http_ = null;
+        }
+        return httpBuilder_;
+      }
+
+      // optional .mesos.CheckStatusInfo.Tcp tcp = 4;
+      private org.apache.mesos.Protos.CheckStatusInfo.Tcp tcp_ = org.apache.mesos.Protos.CheckStatusInfo.Tcp.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.CheckStatusInfo.Tcp, org.apache.mesos.Protos.CheckStatusInfo.Tcp.Builder, org.apache.mesos.Protos.CheckStatusInfo.TcpOrBuilder> tcpBuilder_;
+      /**
+       * <code>optional .mesos.CheckStatusInfo.Tcp tcp = 4;</code>
+       *
+       * <pre>
+       * Status of a TCP check.
+       * </pre>
+       */
+      public boolean hasTcp() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.CheckStatusInfo.Tcp tcp = 4;</code>
+       *
+       * <pre>
+       * Status of a TCP check.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.CheckStatusInfo.Tcp getTcp() {
+        if (tcpBuilder_ == null) {
+          return tcp_;
+        } else {
+          return tcpBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.CheckStatusInfo.Tcp tcp = 4;</code>
+       *
+       * <pre>
+       * Status of a TCP check.
+       * </pre>
+       */
+      public Builder setTcp(org.apache.mesos.Protos.CheckStatusInfo.Tcp value) {
+        if (tcpBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          tcp_ = value;
+          onChanged();
+        } else {
+          tcpBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CheckStatusInfo.Tcp tcp = 4;</code>
+       *
+       * <pre>
+       * Status of a TCP check.
+       * </pre>
+       */
+      public Builder setTcp(
+          org.apache.mesos.Protos.CheckStatusInfo.Tcp.Builder builderForValue) {
+        if (tcpBuilder_ == null) {
+          tcp_ = builderForValue.build();
+          onChanged();
+        } else {
+          tcpBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CheckStatusInfo.Tcp tcp = 4;</code>
+       *
+       * <pre>
+       * Status of a TCP check.
+       * </pre>
+       */
+      public Builder mergeTcp(org.apache.mesos.Protos.CheckStatusInfo.Tcp value) {
+        if (tcpBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008) &&
+              tcp_ != org.apache.mesos.Protos.CheckStatusInfo.Tcp.getDefaultInstance()) {
+            tcp_ =
+              org.apache.mesos.Protos.CheckStatusInfo.Tcp.newBuilder(tcp_).mergeFrom(value).buildPartial();
+          } else {
+            tcp_ = value;
+          }
+          onChanged();
+        } else {
+          tcpBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CheckStatusInfo.Tcp tcp = 4;</code>
+       *
+       * <pre>
+       * Status of a TCP check.
+       * </pre>
+       */
+      public Builder clearTcp() {
+        if (tcpBuilder_ == null) {
+          tcp_ = org.apache.mesos.Protos.CheckStatusInfo.Tcp.getDefaultInstance();
+          onChanged();
+        } else {
+          tcpBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CheckStatusInfo.Tcp tcp = 4;</code>
+       *
+       * <pre>
+       * Status of a TCP check.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.CheckStatusInfo.Tcp.Builder getTcpBuilder() {
+        bitField0_ |= 0x00000008;
+        onChanged();
+        return getTcpFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.CheckStatusInfo.Tcp tcp = 4;</code>
+       *
+       * <pre>
+       * Status of a TCP check.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.CheckStatusInfo.TcpOrBuilder getTcpOrBuilder() {
+        if (tcpBuilder_ != null) {
+          return tcpBuilder_.getMessageOrBuilder();
+        } else {
+          return tcp_;
+        }
+      }
+      /**
+       * <code>optional .mesos.CheckStatusInfo.Tcp tcp = 4;</code>
+       *
+       * <pre>
+       * Status of a TCP check.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.CheckStatusInfo.Tcp, org.apache.mesos.Protos.CheckStatusInfo.Tcp.Builder, org.apache.mesos.Protos.CheckStatusInfo.TcpOrBuilder> 
+          getTcpFieldBuilder() {
+        if (tcpBuilder_ == null) {
+          tcpBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.CheckStatusInfo.Tcp, org.apache.mesos.Protos.CheckStatusInfo.Tcp.Builder, org.apache.mesos.Protos.CheckStatusInfo.TcpOrBuilder>(
+                  tcp_,
+                  getParentForChildren(),
+                  isClean());
+          tcp_ = null;
+        }
+        return tcpBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.CheckStatusInfo)
+    }
+
+    static {
+      defaultInstance = new CheckStatusInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.CheckStatusInfo)
+  }
+
+  public interface TaskStatusOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required .mesos.TaskID task_id = 1;
+    /**
+     * <code>required .mesos.TaskID task_id = 1;</code>
+     */
+    boolean hasTaskId();
+    /**
+     * <code>required .mesos.TaskID task_id = 1;</code>
+     */
+    org.apache.mesos.Protos.TaskID getTaskId();
+    /**
+     * <code>required .mesos.TaskID task_id = 1;</code>
+     */
+    org.apache.mesos.Protos.TaskIDOrBuilder getTaskIdOrBuilder();
+
+    // required .mesos.TaskState state = 2;
+    /**
+     * <code>required .mesos.TaskState state = 2;</code>
+     */
+    boolean hasState();
+    /**
+     * <code>required .mesos.TaskState state = 2;</code>
+     */
+    org.apache.mesos.Protos.TaskState getState();
+
+    // optional string message = 4;
+    /**
+     * <code>optional string message = 4;</code>
+     *
+     * <pre>
+     * Possible message explaining state.
+     * </pre>
+     */
+    boolean hasMessage();
+    /**
+     * <code>optional string message = 4;</code>
+     *
+     * <pre>
+     * Possible message explaining state.
+     * </pre>
+     */
+    java.lang.String getMessage();
+    /**
+     * <code>optional string message = 4;</code>
+     *
+     * <pre>
+     * Possible message explaining state.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getMessageBytes();
+
+    // optional .mesos.TaskStatus.Source source = 9;
+    /**
+     * <code>optional .mesos.TaskStatus.Source source = 9;</code>
+     */
+    boolean hasSource();
+    /**
+     * <code>optional .mesos.TaskStatus.Source source = 9;</code>
+     */
+    org.apache.mesos.Protos.TaskStatus.Source getSource();
+
+    // optional .mesos.TaskStatus.Reason reason = 10;
+    /**
+     * <code>optional .mesos.TaskStatus.Reason reason = 10;</code>
+     */
+    boolean hasReason();
+    /**
+     * <code>optional .mesos.TaskStatus.Reason reason = 10;</code>
+     */
+    org.apache.mesos.Protos.TaskStatus.Reason getReason();
+
+    // optional bytes data = 3;
+    /**
+     * <code>optional bytes data = 3;</code>
+     */
+    boolean hasData();
+    /**
+     * <code>optional bytes data = 3;</code>
+     */
+    com.google.protobuf.ByteString getData();
+
+    // optional .mesos.SlaveID slave_id = 5;
+    /**
+     * <code>optional .mesos.SlaveID slave_id = 5;</code>
+     */
+    boolean hasSlaveId();
+    /**
+     * <code>optional .mesos.SlaveID slave_id = 5;</code>
+     */
+    org.apache.mesos.Protos.SlaveID getSlaveId();
+    /**
+     * <code>optional .mesos.SlaveID slave_id = 5;</code>
+     */
+    org.apache.mesos.Protos.SlaveIDOrBuilder getSlaveIdOrBuilder();
+
+    // optional .mesos.ExecutorID executor_id = 7;
+    /**
+     * <code>optional .mesos.ExecutorID executor_id = 7;</code>
+     *
+     * <pre>
+     * TODO(benh): Use in master/slave.
+     * </pre>
+     */
+    boolean hasExecutorId();
+    /**
+     * <code>optional .mesos.ExecutorID executor_id = 7;</code>
+     *
+     * <pre>
+     * TODO(benh): Use in master/slave.
+     * </pre>
+     */
+    org.apache.mesos.Protos.ExecutorID getExecutorId();
+    /**
+     * <code>optional .mesos.ExecutorID executor_id = 7;</code>
+     *
+     * <pre>
+     * TODO(benh): Use in master/slave.
+     * </pre>
+     */
+    org.apache.mesos.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder();
+
+    // optional double timestamp = 6;
+    /**
+     * <code>optional double timestamp = 6;</code>
+     */
+    boolean hasTimestamp();
+    /**
+     * <code>optional double timestamp = 6;</code>
+     */
+    double getTimestamp();
+
+    // optional bytes uuid = 11;
+    /**
+     * <code>optional bytes uuid = 11;</code>
+     *
+     * <pre>
+     * Statuses that are delivered reliably to the scheduler will
+     * include a 'uuid'. The status is considered delivered once
+     * it is acknowledged by the scheduler. Schedulers can choose
+     * to either explicitly acknowledge statuses or let the scheduler
+     * driver implicitly acknowledge (default).
+     *
+     * TODO(bmahler): This is currently overwritten in the scheduler
+     * driver and executor driver, but executors will need to set this
+     * to a valid RFC-4122 UUID if using the HTTP API.
+     * </pre>
+     */
+    boolean hasUuid();
+    /**
+     * <code>optional bytes uuid = 11;</code>
+     *
+     * <pre>
+     * Statuses that are delivered reliably to the scheduler will
+     * include a 'uuid'. The status is considered delivered once
+     * it is acknowledged by the scheduler. Schedulers can choose
+     * to either explicitly acknowledge statuses or let the scheduler
+     * driver implicitly acknowledge (default).
+     *
+     * TODO(bmahler): This is currently overwritten in the scheduler
+     * driver and executor driver, but executors will need to set this
+     * to a valid RFC-4122 UUID if using the HTTP API.
+     * </pre>
+     */
+    com.google.protobuf.ByteString getUuid();
+
+    // optional bool healthy = 8;
+    /**
+     * <code>optional bool healthy = 8;</code>
+     *
+     * <pre>
+     * Describes whether the task has been determined to be healthy (true) or
+     * unhealthy (false) according to the `health_check` field in `TaskInfo`.
+     * </pre>
+     */
+    boolean hasHealthy();
+    /**
+     * <code>optional bool healthy = 8;</code>
+     *
+     * <pre>
+     * Describes whether the task has been determined to be healthy (true) or
+     * unhealthy (false) according to the `health_check` field in `TaskInfo`.
+     * </pre>
+     */
+    boolean getHealthy();
+
+    // optional .mesos.CheckStatusInfo check_status = 15;
+    /**
+     * <code>optional .mesos.CheckStatusInfo check_status = 15;</code>
+     *
+     * <pre>
+     * Contains check status for the check specified in the corresponding
+     * `TaskInfo`. If no check has been specified, this field must be
+     * absent, otherwise it must be present even if the check status is
+     * not available yet. If the status update is triggered for a different
+     * reason than `REASON_TASK_CHECK_STATUS_UPDATED`, this field will contain
+     * the last known value.
+     *
+     * NOTE: A check-related task status update is triggered if and only if
+     * the value or presence of any field in `CheckStatusInfo` changes.
+     *
+     * NOTE: Check support in built-in executors is experimental.
+     * </pre>
+     */
+    boolean hasCheckStatus();
+    /**
+     * <code>optional .mesos.CheckStatusInfo check_status = 15;</code>
+     *
+     * <pre>
+     * Contains check status for the check specified in the corresponding
+     * `TaskInfo`. If no check has been specified, this field must be
+     * absent, otherwise it must be present even if the check status is
+     * not available yet. If the status update is triggered for a different
+     * reason than `REASON_TASK_CHECK_STATUS_UPDATED`, this field will contain
+     * the last known value.
+     *
+     * NOTE: A check-related task status update is triggered if and only if
+     * the value or presence of any field in `CheckStatusInfo` changes.
+     *
+     * NOTE: Check support in built-in executors is experimental.
+     * </pre>
+     */
+    org.apache.mesos.Protos.CheckStatusInfo getCheckStatus();
+    /**
+     * <code>optional .mesos.CheckStatusInfo check_status = 15;</code>
+     *
+     * <pre>
+     * Contains check status for the check specified in the corresponding
+     * `TaskInfo`. If no check has been specified, this field must be
+     * absent, otherwise it must be present even if the check status is
+     * not available yet. If the status update is triggered for a different
+     * reason than `REASON_TASK_CHECK_STATUS_UPDATED`, this field will contain
+     * the last known value.
+     *
+     * NOTE: A check-related task status update is triggered if and only if
+     * the value or presence of any field in `CheckStatusInfo` changes.
+     *
+     * NOTE: Check support in built-in executors is experimental.
+     * </pre>
+     */
+    org.apache.mesos.Protos.CheckStatusInfoOrBuilder getCheckStatusOrBuilder();
+
+    // optional .mesos.Labels labels = 12;
+    /**
+     * <code>optional .mesos.Labels labels = 12;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs which are exposed through
+     * master and slave endpoints. Labels will not be interpreted or
+     * acted upon by Mesos itself. As opposed to the data field, labels
+     * will be kept in memory on master and slave processes. Therefore,
+     * labels should be used to tag TaskStatus message with light-weight
+     * meta-data. Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    boolean hasLabels();
+    /**
+     * <code>optional .mesos.Labels labels = 12;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs which are exposed through
+     * master and slave endpoints. Labels will not be interpreted or
+     * acted upon by Mesos itself. As opposed to the data field, labels
+     * will be kept in memory on master and slave processes. Therefore,
+     * labels should be used to tag TaskStatus message with light-weight
+     * meta-data. Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    org.apache.mesos.Protos.Labels getLabels();
+    /**
+     * <code>optional .mesos.Labels labels = 12;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs which are exposed through
+     * master and slave endpoints. Labels will not be interpreted or
+     * acted upon by Mesos itself. As opposed to the data field, labels
+     * will be kept in memory on master and slave processes. Therefore,
+     * labels should be used to tag TaskStatus message with light-weight
+     * meta-data. Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    org.apache.mesos.Protos.LabelsOrBuilder getLabelsOrBuilder();
+
+    // optional .mesos.ContainerStatus container_status = 13;
+    /**
+     * <code>optional .mesos.ContainerStatus container_status = 13;</code>
+     *
+     * <pre>
+     * Container related information that is resolved dynamically such as
+     * network address.
+     * </pre>
+     */
+    boolean hasContainerStatus();
+    /**
+     * <code>optional .mesos.ContainerStatus container_status = 13;</code>
+     *
+     * <pre>
+     * Container related information that is resolved dynamically such as
+     * network address.
+     * </pre>
+     */
+    org.apache.mesos.Protos.ContainerStatus getContainerStatus();
+    /**
+     * <code>optional .mesos.ContainerStatus container_status = 13;</code>
+     *
+     * <pre>
+     * Container related information that is resolved dynamically such as
+     * network address.
+     * </pre>
+     */
+    org.apache.mesos.Protos.ContainerStatusOrBuilder getContainerStatusOrBuilder();
+
+    // optional .mesos.TimeInfo unreachable_time = 14;
+    /**
+     * <code>optional .mesos.TimeInfo unreachable_time = 14;</code>
+     *
+     * <pre>
+     * The time (according to the master's clock) when the agent where
+     * this task was running became unreachable. This is only set on
+     * status updates for tasks running on agents that are unreachable
+     * (e.g., partitioned away from the master).
+     * </pre>
+     */
+    boolean hasUnreachableTime();
+    /**
+     * <code>optional .mesos.TimeInfo unreachable_time = 14;</code>
+     *
+     * <pre>
+     * The time (according to the master's clock) when the agent where
+     * this task was running became unreachable. This is only set on
+     * status updates for tasks running on agents that are unreachable
+     * (e.g., partitioned away from the master).
+     * </pre>
+     */
+    org.apache.mesos.Protos.TimeInfo getUnreachableTime();
+    /**
+     * <code>optional .mesos.TimeInfo unreachable_time = 14;</code>
+     *
+     * <pre>
+     * The time (according to the master's clock) when the agent where
+     * this task was running became unreachable. This is only set on
+     * status updates for tasks running on agents that are unreachable
+     * (e.g., partitioned away from the master).
+     * </pre>
+     */
+    org.apache.mesos.Protos.TimeInfoOrBuilder getUnreachableTimeOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.TaskStatus}
+   *
+   * <pre>
+   **
+   * Describes the current status of a task.
+   * </pre>
+   */
+  public static final class TaskStatus extends
+      com.google.protobuf.GeneratedMessage
+      implements TaskStatusOrBuilder {
+    // Use TaskStatus.newBuilder() to construct.
+    private TaskStatus(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private TaskStatus(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final TaskStatus defaultInstance;
+    public static TaskStatus getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public TaskStatus getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private TaskStatus(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              org.apache.mesos.Protos.TaskID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                subBuilder = taskId_.toBuilder();
+              }
+              taskId_ = input.readMessage(org.apache.mesos.Protos.TaskID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(taskId_);
+                taskId_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+            case 16: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.Protos.TaskState value = org.apache.mesos.Protos.TaskState.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(2, rawValue);
+              } else {
+                bitField0_ |= 0x00000002;
+                state_ = value;
+              }
+              break;
+            }
+            case 26: {
+              bitField0_ |= 0x00000020;
+              data_ = input.readBytes();
+              break;
+            }
+            case 34: {
+              bitField0_ |= 0x00000004;
+              message_ = input.readBytes();
+              break;
+            }
+            case 42: {
+              org.apache.mesos.Protos.SlaveID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000040) == 0x00000040)) {
+                subBuilder = slaveId_.toBuilder();
+              }
+              slaveId_ = input.readMessage(org.apache.mesos.Protos.SlaveID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(slaveId_);
+                slaveId_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000040;
+              break;
+            }
+            case 49: {
+              bitField0_ |= 0x00000100;
+              timestamp_ = input.readDouble();
+              break;
+            }
+            case 58: {
+              org.apache.mesos.Protos.ExecutorID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000080) == 0x00000080)) {
+                subBuilder = executorId_.toBuilder();
+              }
+              executorId_ = input.readMessage(org.apache.mesos.Protos.ExecutorID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(executorId_);
+                executorId_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000080;
+              break;
+            }
+            case 64: {
+              bitField0_ |= 0x00000400;
+              healthy_ = input.readBool();
+              break;
+            }
+            case 72: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.Protos.TaskStatus.Source value = org.apache.mesos.Protos.TaskStatus.Source.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(9, rawValue);
+              } else {
+                bitField0_ |= 0x00000008;
+                source_ = value;
+              }
+              break;
+            }
+            case 80: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.Protos.TaskStatus.Reason value = org.apache.mesos.Protos.TaskStatus.Reason.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(10, rawValue);
+              } else {
+                bitField0_ |= 0x00000010;
+                reason_ = value;
+              }
+              break;
+            }
+            case 90: {
+              bitField0_ |= 0x00000200;
+              uuid_ = input.readBytes();
+              break;
+            }
+            case 98: {
+              org.apache.mesos.Protos.Labels.Builder subBuilder = null;
+              if (((bitField0_ & 0x00001000) == 0x00001000)) {
+                subBuilder = labels_.toBuilder();
+              }
+              labels_ = input.readMessage(org.apache.mesos.Protos.Labels.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(labels_);
+                labels_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00001000;
+              break;
+            }
+            case 106: {
+              org.apache.mesos.Protos.ContainerStatus.Builder subBuilder = null;
+              if (((bitField0_ & 0x00002000) == 0x00002000)) {
+                subBuilder = containerStatus_.toBuilder();
+              }
+              containerStatus_ = input.readMessage(org.apache.mesos.Protos.ContainerStatus.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(containerStatus_);
+                containerStatus_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00002000;
+              break;
+            }
+            case 114: {
+              org.apache.mesos.Protos.TimeInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00004000) == 0x00004000)) {
+                subBuilder = unreachableTime_.toBuilder();
+              }
+              unreachableTime_ = input.readMessage(org.apache.mesos.Protos.TimeInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(unreachableTime_);
+                unreachableTime_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00004000;
+              break;
+            }
+            case 122: {
+              org.apache.mesos.Protos.CheckStatusInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000800) == 0x00000800)) {
+                subBuilder = checkStatus_.toBuilder();
+              }
+              checkStatus_ = input.readMessage(org.apache.mesos.Protos.CheckStatusInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(checkStatus_);
+                checkStatus_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000800;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_TaskStatus_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_TaskStatus_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.TaskStatus.class, org.apache.mesos.Protos.TaskStatus.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<TaskStatus> PARSER =
+        new com.google.protobuf.AbstractParser<TaskStatus>() {
+      public TaskStatus parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new TaskStatus(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<TaskStatus> getParserForType() {
+      return PARSER;
+    }
+
+    /**
+     * Protobuf enum {@code mesos.TaskStatus.Source}
+     *
+     * <pre>
+     * Describes the source of the task status update.
+     * </pre>
+     */
+    public enum Source
+        implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>SOURCE_MASTER = 0;</code>
+       */
+      SOURCE_MASTER(0, 0),
+      /**
+       * <code>SOURCE_SLAVE = 1;</code>
+       */
+      SOURCE_SLAVE(1, 1),
+      /**
+       * <code>SOURCE_EXECUTOR = 2;</code>
+       */
+      SOURCE_EXECUTOR(2, 2),
+      ;
+
+      /**
+       * <code>SOURCE_MASTER = 0;</code>
+       */
+      public static final int SOURCE_MASTER_VALUE = 0;
+      /**
+       * <code>SOURCE_SLAVE = 1;</code>
+       */
+      public static final int SOURCE_SLAVE_VALUE = 1;
+      /**
+       * <code>SOURCE_EXECUTOR = 2;</code>
+       */
+      public static final int SOURCE_EXECUTOR_VALUE = 2;
+
+
+      public final int getNumber() { return value; }
+
+      public static Source valueOf(int value) {
+        switch (value) {
+          case 0: return SOURCE_MASTER;
+          case 1: return SOURCE_SLAVE;
+          case 2: return SOURCE_EXECUTOR;
+          default: return null;
+        }
+      }
+
+      public static com.google.protobuf.Internal.EnumLiteMap<Source>
+          internalGetValueMap() {
+        return internalValueMap;
+      }
+      private static com.google.protobuf.Internal.EnumLiteMap<Source>
+          internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap<Source>() {
+              public Source findValueByNumber(int number) {
+                return Source.valueOf(number);
+              }
+            };
+
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
+          getValueDescriptor() {
+        return getDescriptor().getValues().get(index);
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptorForType() {
+        return getDescriptor();
+      }
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.TaskStatus.getDescriptor().getEnumTypes().get(0);
+      }
+
+      private static final Source[] VALUES = values();
+
+      public static Source valueOf(
+          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+        if (desc.getType() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "EnumValueDescriptor is not for this type.");
+        }
+        return VALUES[desc.getIndex()];
+      }
+
+      private final int index;
+      private final int value;
+
+      private Source(int index, int value) {
+        this.index = index;
+        this.value = value;
+      }
+
+      // @@protoc_insertion_point(enum_scope:mesos.TaskStatus.Source)
+    }
+
+    /**
+     * Protobuf enum {@code mesos.TaskStatus.Reason}
+     *
+     * <pre>
+     * Detailed reason for the task status update.
+     *
+     * TODO(bmahler): Differentiate between slave removal reasons
+     * (e.g. unhealthy vs. unregistered for maintenance).
+     * </pre>
+     */
+    public enum Reason
+        implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>REASON_COMMAND_EXECUTOR_FAILED = 0;</code>
+       *
+       * <pre>
+       * TODO(jieyu): The default value when a caller doesn't check for
+       * presence is 0 and so ideally the 0 reason is not a valid one.
+       * Since this is not used anywhere, consider removing this reason.
+       * </pre>
+       */
+      REASON_COMMAND_EXECUTOR_FAILED(0, 0),
+      /**
+       * <code>REASON_CONTAINER_LAUNCH_FAILED = 21;</code>
+       */
+      REASON_CONTAINER_LAUNCH_FAILED(1, 21),
+      /**
+       * <code>REASON_CONTAINER_LIMITATION = 19;</code>
+       */
+      REASON_CONTAINER_LIMITATION(2, 19),
+      /**
+       * <code>REASON_CONTAINER_LIMITATION_DISK = 20;</code>
+       */
+      REASON_CONTAINER_LIMITATION_DISK(3, 20),
+      /**
+       * <code>REASON_CONTAINER_LIMITATION_MEMORY = 8;</code>
+       */
+      REASON_CONTAINER_LIMITATION_MEMORY(4, 8),
+      /**
+       * <code>REASON_CONTAINER_PREEMPTED = 17;</code>
+       */
+      REASON_CONTAINER_PREEMPTED(5, 17),
+      /**
+       * <code>REASON_CONTAINER_UPDATE_FAILED = 22;</code>
+       */
+      REASON_CONTAINER_UPDATE_FAILED(6, 22),
+      /**
+       * <code>REASON_EXECUTOR_REGISTRATION_TIMEOUT = 23;</code>
+       */
+      REASON_EXECUTOR_REGISTRATION_TIMEOUT(7, 23),
+      /**
+       * <code>REASON_EXECUTOR_REREGISTRATION_TIMEOUT = 24;</code>
+       */
+      REASON_EXECUTOR_REREGISTRATION_TIMEOUT(8, 24),
+      /**
+       * <code>REASON_EXECUTOR_TERMINATED = 1;</code>
+       */
+      REASON_EXECUTOR_TERMINATED(9, 1),
+      /**
+       * <code>REASON_EXECUTOR_UNREGISTERED = 2;</code>
+       *
+       * <pre>
+       * No longer used.
+       * </pre>
+       */
+      REASON_EXECUTOR_UNREGISTERED(10, 2),
+      /**
+       * <code>REASON_FRAMEWORK_REMOVED = 3;</code>
+       */
+      REASON_FRAMEWORK_REMOVED(11, 3),
+      /**
+       * <code>REASON_GC_ERROR = 4;</code>
+       */
+      REASON_GC_ERROR(12, 4),
+      /**
+       * <code>REASON_INVALID_FRAMEWORKID = 5;</code>
+       */
+      REASON_INVALID_FRAMEWORKID(13, 5),
+      /**
+       * <code>REASON_INVALID_OFFERS = 6;</code>
+       */
+      REASON_INVALID_OFFERS(14, 6),
+      /**
+       * <code>REASON_IO_SWITCHBOARD_EXITED = 27;</code>
+       */
+      REASON_IO_SWITCHBOARD_EXITED(15, 27),
+      /**
+       * <code>REASON_MASTER_DISCONNECTED = 7;</code>
+       */
+      REASON_MASTER_DISCONNECTED(16, 7),
+      /**
+       * <code>REASON_RECONCILIATION = 9;</code>
+       */
+      REASON_RECONCILIATION(17, 9),
+      /**
+       * <code>REASON_RESOURCES_UNKNOWN = 18;</code>
+       */
+      REASON_RESOURCES_UNKNOWN(18, 18),
+      /**
+       * <code>REASON_SLAVE_DISCONNECTED = 10;</code>
+       */
+      REASON_SLAVE_DISCONNECTED(19, 10),
+      /**
+       * <code>REASON_SLAVE_REMOVED = 11;</code>
+       */
+      REASON_SLAVE_REMOVED(20, 11),
+      /**
+       * <code>REASON_SLAVE_RESTARTED = 12;</code>
+       */
+      REASON_SLAVE_RESTARTED(21, 12),
+      /**
+       * <code>REASON_SLAVE_UNKNOWN = 13;</code>
+       */
+      REASON_SLAVE_UNKNOWN(22, 13),
+      /**
+       * <code>REASON_TASK_KILLED_DURING_LAUNCH = 30;</code>
+       */
+      REASON_TASK_KILLED_DURING_LAUNCH(23, 30),
+      /**
+       * <code>REASON_TASK_CHECK_STATUS_UPDATED = 28;</code>
+       */
+      REASON_TASK_CHECK_STATUS_UPDATED(24, 28),
+      /**
+       * <code>REASON_TASK_HEALTH_CHECK_STATUS_UPDATED = 29;</code>
+       */
+      REASON_TASK_HEALTH_CHECK_STATUS_UPDATED(25, 29),
+      /**
+       * <code>REASON_TASK_GROUP_INVALID = 25;</code>
+       */
+      REASON_TASK_GROUP_INVALID(26, 25),
+      /**
+       * <code>REASON_TASK_GROUP_UNAUTHORIZED = 26;</code>
+       */
+      REASON_TASK_GROUP_UNAUTHORIZED(27, 26),
+      /**
+       * <code>REASON_TASK_INVALID = 14;</code>
+       */
+      REASON_TASK_INVALID(28, 14),
+      /**
+       * <code>REASON_TASK_UNAUTHORIZED = 15;</code>
+       */
+      REASON_TASK_UNAUTHORIZED(29, 15),
+      /**
+       * <code>REASON_TASK_UNKNOWN = 16;</code>
+       */
+      REASON_TASK_UNKNOWN(30, 16),
+      ;
+
+      /**
+       * <code>REASON_COMMAND_EXECUTOR_FAILED = 0;</code>
+       *
+       * <pre>
+       * TODO(jieyu): The default value when a caller doesn't check for
+       * presence is 0 and so ideally the 0 reason is not a valid one.
+       * Since this is not used anywhere, consider removing this reason.
+       * </pre>
+       */
+      public static final int REASON_COMMAND_EXECUTOR_FAILED_VALUE = 0;
+      /**
+       * <code>REASON_CONTAINER_LAUNCH_FAILED = 21;</code>
+       */
+      public static final int REASON_CONTAINER_LAUNCH_FAILED_VALUE = 21;
+      /**
+       * <code>REASON_CONTAINER_LIMITATION = 19;</code>
+       */
+      public static final int REASON_CONTAINER_LIMITATION_VALUE = 19;
+      /**
+       * <code>REASON_CONTAINER_LIMITATION_DISK = 20;</code>
+       */
+      public static final int REASON_CONTAINER_LIMITATION_DISK_VALUE = 20;
+      /**
+       * <code>REASON_CONTAINER_LIMITATION_MEMORY = 8;</code>
+       */
+      public static final int REASON_CONTAINER_LIMITATION_MEMORY_VALUE = 8;
+      /**
+       * <code>REASON_CONTAINER_PREEMPTED = 17;</code>
+       */
+      public static final int REASON_CONTAINER_PREEMPTED_VALUE = 17;
+      /**
+       * <code>REASON_CONTAINER_UPDATE_FAILED = 22;</code>
+       */
+      public static final int REASON_CONTAINER_UPDATE_FAILED_VALUE = 22;
+      /**
+       * <code>REASON_EXECUTOR_REGISTRATION_TIMEOUT = 23;</code>
+       */
+      public static final int REASON_EXECUTOR_REGISTRATION_TIMEOUT_VALUE = 23;
+      /**
+       * <code>REASON_EXECUTOR_REREGISTRATION_TIMEOUT = 24;</code>
+       */
+      public static final int REASON_EXECUTOR_REREGISTRATION_TIMEOUT_VALUE = 24;
+      /**
+       * <code>REASON_EXECUTOR_TERMINATED = 1;</code>
+       */
+      public static final int REASON_EXECUTOR_TERMINATED_VALUE = 1;
+      /**
+       * <code>REASON_EXECUTOR_UNREGISTERED = 2;</code>
+       *
+       * <pre>
+       * No longer used.
+       * </pre>
+       */
+      public static final int REASON_EXECUTOR_UNREGISTERED_VALUE = 2;
+      /**
+       * <code>REASON_FRAMEWORK_REMOVED = 3;</code>
+       */
+      public static final int REASON_FRAMEWORK_REMOVED_VALUE = 3;
+      /**
+       * <code>REASON_GC_ERROR = 4;</code>
+       */
+      public static final int REASON_GC_ERROR_VALUE = 4;
+      /**
+       * <code>REASON_INVALID_FRAMEWORKID = 5;</code>
+       */
+      public static final int REASON_INVALID_FRAMEWORKID_VALUE = 5;
+      /**
+       * <code>REASON_INVALID_OFFERS = 6;</code>
+       */
+      public static final int REASON_INVALID_OFFERS_VALUE = 6;
+      /**
+       * <code>REASON_IO_SWITCHBOARD_EXITED = 27;</code>
+       */
+      public static final int REASON_IO_SWITCHBOARD_EXITED_VALUE = 27;
+      /**
+       * <code>REASON_MASTER_DISCONNECTED = 7;</code>
+       */
+      public static final int REASON_MASTER_DISCONNECTED_VALUE = 7;
+      /**
+       * <code>REASON_RECONCILIATION = 9;</code>
+       */
+      public static final int REASON_RECONCILIATION_VALUE = 9;
+      /**
+       * <code>REASON_RESOURCES_UNKNOWN = 18;</code>
+       */
+      public static final int REASON_RESOURCES_UNKNOWN_VALUE = 18;
+      /**
+       * <code>REASON_SLAVE_DISCONNECTED = 10;</code>
+       */
+      public static final int REASON_SLAVE_DISCONNECTED_VALUE = 10;
+      /**
+       * <code>REASON_SLAVE_REMOVED = 11;</code>
+       */
+      public static final int REASON_SLAVE_REMOVED_VALUE = 11;
+      /**
+       * <code>REASON_SLAVE_RESTARTED = 12;</code>
+       */
+      public static final int REASON_SLAVE_RESTARTED_VALUE = 12;
+      /**
+       * <code>REASON_SLAVE_UNKNOWN = 13;</code>
+       */
+      public static final int REASON_SLAVE_UNKNOWN_VALUE = 13;
+      /**
+       * <code>REASON_TASK_KILLED_DURING_LAUNCH = 30;</code>
+       */
+      public static final int REASON_TASK_KILLED_DURING_LAUNCH_VALUE = 30;
+      /**
+       * <code>REASON_TASK_CHECK_STATUS_UPDATED = 28;</code>
+       */
+      public static final int REASON_TASK_CHECK_STATUS_UPDATED_VALUE = 28;
+      /**
+       * <code>REASON_TASK_HEALTH_CHECK_STATUS_UPDATED = 29;</code>
+       */
+      public static final int REASON_TASK_HEALTH_CHECK_STATUS_UPDATED_VALUE = 29;
+      /**
+       * <code>REASON_TASK_GROUP_INVALID = 25;</code>
+       */
+      public static final int REASON_TASK_GROUP_INVALID_VALUE = 25;
+      /**
+       * <code>REASON_TASK_GROUP_UNAUTHORIZED = 26;</code>
+       */
+      public static final int REASON_TASK_GROUP_UNAUTHORIZED_VALUE = 26;
+      /**
+       * <code>REASON_TASK_INVALID = 14;</code>
+       */
+      public static final int REASON_TASK_INVALID_VALUE = 14;
+      /**
+       * <code>REASON_TASK_UNAUTHORIZED = 15;</code>
+       */
+      public static final int REASON_TASK_UNAUTHORIZED_VALUE = 15;
+      /**
+       * <code>REASON_TASK_UNKNOWN = 16;</code>
+       */
+      public static final int REASON_TASK_UNKNOWN_VALUE = 16;
+
+
+      public final int getNumber() { return value; }
+
+      public static Reason valueOf(int value) {
+        switch (value) {
+          case 0: return REASON_COMMAND_EXECUTOR_FAILED;
+          case 21: return REASON_CONTAINER_LAUNCH_FAILED;
+          case 19: return REASON_CONTAINER_LIMITATION;
+          case 20: return REASON_CONTAINER_LIMITATION_DISK;
+          case 8: return REASON_CONTAINER_LIMITATION_MEMORY;
+          case 17: return REASON_CONTAINER_PREEMPTED;
+          case 22: return REASON_CONTAINER_UPDATE_FAILED;
+          case 23: return REASON_EXECUTOR_REGISTRATION_TIMEOUT;
+          case 24: return REASON_EXECUTOR_REREGISTRATION_TIMEOUT;
+          case 1: return REASON_EXECUTOR_TERMINATED;
+          case 2: return REASON_EXECUTOR_UNREGISTERED;
+          case 3: return REASON_FRAMEWORK_REMOVED;
+          case 4: return REASON_GC_ERROR;
+          case 5: return REASON_INVALID_FRAMEWORKID;
+          case 6: return REASON_INVALID_OFFERS;
+          case 27: return REASON_IO_SWITCHBOARD_EXITED;
+          case 7: return REASON_MASTER_DISCONNECTED;
+          case 9: return REASON_RECONCILIATION;
+          case 18: return REASON_RESOURCES_UNKNOWN;
+          case 10: return REASON_SLAVE_DISCONNECTED;
+          case 11: return REASON_SLAVE_REMOVED;
+          case 12: return REASON_SLAVE_RESTARTED;
+          case 13: return REASON_SLAVE_UNKNOWN;
+          case 30: return REASON_TASK_KILLED_DURING_LAUNCH;
+          case 28: return REASON_TASK_CHECK_STATUS_UPDATED;
+          case 29: return REASON_TASK_HEALTH_CHECK_STATUS_UPDATED;
+          case 25: return REASON_TASK_GROUP_INVALID;
+          case 26: return REASON_TASK_GROUP_UNAUTHORIZED;
+          case 14: return REASON_TASK_INVALID;
+          case 15: return REASON_TASK_UNAUTHORIZED;
+          case 16: return REASON_TASK_UNKNOWN;
+          default: return null;
+        }
+      }
+
+      public static com.google.protobuf.Internal.EnumLiteMap<Reason>
+          internalGetValueMap() {
+        return internalValueMap;
+      }
+      private static com.google.protobuf.Internal.EnumLiteMap<Reason>
+          internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap<Reason>() {
+              public Reason findValueByNumber(int number) {
+                return Reason.valueOf(number);
+              }
+            };
+
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
+          getValueDescriptor() {
+        return getDescriptor().getValues().get(index);
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptorForType() {
+        return getDescriptor();
+      }
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.TaskStatus.getDescriptor().getEnumTypes().get(1);
+      }
+
+      private static final Reason[] VALUES = values();
+
+      public static Reason valueOf(
+          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+        if (desc.getType() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "EnumValueDescriptor is not for this type.");
+        }
+        return VALUES[desc.getIndex()];
+      }
+
+      private final int index;
+      private final int value;
+
+      private Reason(int index, int value) {
+        this.index = index;
+        this.value = value;
+      }
+
+      // @@protoc_insertion_point(enum_scope:mesos.TaskStatus.Reason)
+    }
+
+    private int bitField0_;
+    // required .mesos.TaskID task_id = 1;
+    public static final int TASK_ID_FIELD_NUMBER = 1;
+    private org.apache.mesos.Protos.TaskID taskId_;
+    /**
+     * <code>required .mesos.TaskID task_id = 1;</code>
+     */
+    public boolean hasTaskId() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required .mesos.TaskID task_id = 1;</code>
+     */
+    public org.apache.mesos.Protos.TaskID getTaskId() {
+      return taskId_;
+    }
+    /**
+     * <code>required .mesos.TaskID task_id = 1;</code>
+     */
+    public org.apache.mesos.Protos.TaskIDOrBuilder getTaskIdOrBuilder() {
+      return taskId_;
+    }
+
+    // required .mesos.TaskState state = 2;
+    public static final int STATE_FIELD_NUMBER = 2;
+    private org.apache.mesos.Protos.TaskState state_;
+    /**
+     * <code>required .mesos.TaskState state = 2;</code>
+     */
+    public boolean hasState() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>required .mesos.TaskState state = 2;</code>
+     */
+    public org.apache.mesos.Protos.TaskState getState() {
+      return state_;
+    }
+
+    // optional string message = 4;
+    public static final int MESSAGE_FIELD_NUMBER = 4;
+    private java.lang.Object message_;
+    /**
+     * <code>optional string message = 4;</code>
+     *
+     * <pre>
+     * Possible message explaining state.
+     * </pre>
+     */
+    public boolean hasMessage() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional string message = 4;</code>
+     *
+     * <pre>
+     * Possible message explaining state.
+     * </pre>
+     */
+    public java.lang.String getMessage() {
+      java.lang.Object ref = message_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          message_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string message = 4;</code>
+     *
+     * <pre>
+     * Possible message explaining state.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getMessageBytes() {
+      java.lang.Object ref = message_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        message_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional .mesos.TaskStatus.Source source = 9;
+    public static final int SOURCE_FIELD_NUMBER = 9;
+    private org.apache.mesos.Protos.TaskStatus.Source source_;
+    /**
+     * <code>optional .mesos.TaskStatus.Source source = 9;</code>
+     */
+    public boolean hasSource() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional .mesos.TaskStatus.Source source = 9;</code>
+     */
+    public org.apache.mesos.Protos.TaskStatus.Source getSource() {
+      return source_;
+    }
+
+    // optional .mesos.TaskStatus.Reason reason = 10;
+    public static final int REASON_FIELD_NUMBER = 10;
+    private org.apache.mesos.Protos.TaskStatus.Reason reason_;
+    /**
+     * <code>optional .mesos.TaskStatus.Reason reason = 10;</code>
+     */
+    public boolean hasReason() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional .mesos.TaskStatus.Reason reason = 10;</code>
+     */
+    public org.apache.mesos.Protos.TaskStatus.Reason getReason() {
+      return reason_;
+    }
+
+    // optional bytes data = 3;
+    public static final int DATA_FIELD_NUMBER = 3;
+    private com.google.protobuf.ByteString data_;
+    /**
+     * <code>optional bytes data = 3;</code>
+     */
+    public boolean hasData() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional bytes data = 3;</code>
+     */
+    public com.google.protobuf.ByteString getData() {
+      return data_;
+    }
+
+    // optional .mesos.SlaveID slave_id = 5;
+    public static final int SLAVE_ID_FIELD_NUMBER = 5;
+    private org.apache.mesos.Protos.SlaveID slaveId_;
+    /**
+     * <code>optional .mesos.SlaveID slave_id = 5;</code>
+     */
+    public boolean hasSlaveId() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional .mesos.SlaveID slave_id = 5;</code>
+     */
+    public org.apache.mesos.Protos.SlaveID getSlaveId() {
+      return slaveId_;
+    }
+    /**
+     * <code>optional .mesos.SlaveID slave_id = 5;</code>
+     */
+    public org.apache.mesos.Protos.SlaveIDOrBuilder getSlaveIdOrBuilder() {
+      return slaveId_;
+    }
+
+    // optional .mesos.ExecutorID executor_id = 7;
+    public static final int EXECUTOR_ID_FIELD_NUMBER = 7;
+    private org.apache.mesos.Protos.ExecutorID executorId_;
+    /**
+     * <code>optional .mesos.ExecutorID executor_id = 7;</code>
+     *
+     * <pre>
+     * TODO(benh): Use in master/slave.
+     * </pre>
+     */
+    public boolean hasExecutorId() {
+      return ((bitField0_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional .mesos.ExecutorID executor_id = 7;</code>
+     *
+     * <pre>
+     * TODO(benh): Use in master/slave.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.ExecutorID getExecutorId() {
+      return executorId_;
+    }
+    /**
+     * <code>optional .mesos.ExecutorID executor_id = 7;</code>
+     *
+     * <pre>
+     * TODO(benh): Use in master/slave.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder() {
+      return executorId_;
+    }
+
+    // optional double timestamp = 6;
+    public static final int TIMESTAMP_FIELD_NUMBER = 6;
+    private double timestamp_;
+    /**
+     * <code>optional double timestamp = 6;</code>
+     */
+    public boolean hasTimestamp() {
+      return ((bitField0_ & 0x00000100) == 0x00000100);
+    }
+    /**
+     * <code>optional double timestamp = 6;</code>
+     */
+    public double getTimestamp() {
+      return timestamp_;
+    }
+
+    // optional bytes uuid = 11;
+    public static final int UUID_FIELD_NUMBER = 11;
+    private com.google.protobuf.ByteString uuid_;
+    /**
+     * <code>optional bytes uuid = 11;</code>
+     *
+     * <pre>
+     * Statuses that are delivered reliably to the scheduler will
+     * include a 'uuid'. The status is considered delivered once
+     * it is acknowledged by the scheduler. Schedulers can choose
+     * to either explicitly acknowledge statuses or let the scheduler
+     * driver implicitly acknowledge (default).
+     *
+     * TODO(bmahler): This is currently overwritten in the scheduler
+     * driver and executor driver, but executors will need to set this
+     * to a valid RFC-4122 UUID if using the HTTP API.
+     * </pre>
+     */
+    public boolean hasUuid() {
+      return ((bitField0_ & 0x00000200) == 0x00000200);
+    }
+    /**
+     * <code>optional bytes uuid = 11;</code>
+     *
+     * <pre>
+     * Statuses that are delivered reliably to the scheduler will
+     * include a 'uuid'. The status is considered delivered once
+     * it is acknowledged by the scheduler. Schedulers can choose
+     * to either explicitly acknowledge statuses or let the scheduler
+     * driver implicitly acknowledge (default).
+     *
+     * TODO(bmahler): This is currently overwritten in the scheduler
+     * driver and executor driver, but executors will need to set this
+     * to a valid RFC-4122 UUID if using the HTTP API.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString getUuid() {
+      return uuid_;
+    }
+
+    // optional bool healthy = 8;
+    public static final int HEALTHY_FIELD_NUMBER = 8;
+    private boolean healthy_;
+    /**
+     * <code>optional bool healthy = 8;</code>
+     *
+     * <pre>
+     * Describes whether the task has been determined to be healthy (true) or
+     * unhealthy (false) according to the `health_check` field in `TaskInfo`.
+     * </pre>
+     */
+    public boolean hasHealthy() {
+      return ((bitField0_ & 0x00000400) == 0x00000400);
+    }
+    /**
+     * <code>optional bool healthy = 8;</code>
+     *
+     * <pre>
+     * Describes whether the task has been determined to be healthy (true) or
+     * unhealthy (false) according to the `health_check` field in `TaskInfo`.
+     * </pre>
+     */
+    public boolean getHealthy() {
+      return healthy_;
+    }
+
+    // optional .mesos.CheckStatusInfo check_status = 15;
+    public static final int CHECK_STATUS_FIELD_NUMBER = 15;
+    private org.apache.mesos.Protos.CheckStatusInfo checkStatus_;
+    /**
+     * <code>optional .mesos.CheckStatusInfo check_status = 15;</code>
+     *
+     * <pre>
+     * Contains check status for the check specified in the corresponding
+     * `TaskInfo`. If no check has been specified, this field must be
+     * absent, otherwise it must be present even if the check status is
+     * not available yet. If the status update is triggered for a different
+     * reason than `REASON_TASK_CHECK_STATUS_UPDATED`, this field will contain
+     * the last known value.
+     *
+     * NOTE: A check-related task status update is triggered if and only if
+     * the value or presence of any field in `CheckStatusInfo` changes.
+     *
+     * NOTE: Check support in built-in executors is experimental.
+     * </pre>
+     */
+    public boolean hasCheckStatus() {
+      return ((bitField0_ & 0x00000800) == 0x00000800);
+    }
+    /**
+     * <code>optional .mesos.CheckStatusInfo check_status = 15;</code>
+     *
+     * <pre>
+     * Contains check status for the check specified in the corresponding
+     * `TaskInfo`. If no check has been specified, this field must be
+     * absent, otherwise it must be present even if the check status is
+     * not available yet. If the status update is triggered for a different
+     * reason than `REASON_TASK_CHECK_STATUS_UPDATED`, this field will contain
+     * the last known value.
+     *
+     * NOTE: A check-related task status update is triggered if and only if
+     * the value or presence of any field in `CheckStatusInfo` changes.
+     *
+     * NOTE: Check support in built-in executors is experimental.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.CheckStatusInfo getCheckStatus() {
+      return checkStatus_;
+    }
+    /**
+     * <code>optional .mesos.CheckStatusInfo check_status = 15;</code>
+     *
+     * <pre>
+     * Contains check status for the check specified in the corresponding
+     * `TaskInfo`. If no check has been specified, this field must be
+     * absent, otherwise it must be present even if the check status is
+     * not available yet. If the status update is triggered for a different
+     * reason than `REASON_TASK_CHECK_STATUS_UPDATED`, this field will contain
+     * the last known value.
+     *
+     * NOTE: A check-related task status update is triggered if and only if
+     * the value or presence of any field in `CheckStatusInfo` changes.
+     *
+     * NOTE: Check support in built-in executors is experimental.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.CheckStatusInfoOrBuilder getCheckStatusOrBuilder() {
+      return checkStatus_;
+    }
+
+    // optional .mesos.Labels labels = 12;
+    public static final int LABELS_FIELD_NUMBER = 12;
+    private org.apache.mesos.Protos.Labels labels_;
+    /**
+     * <code>optional .mesos.Labels labels = 12;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs which are exposed through
+     * master and slave endpoints. Labels will not be interpreted or
+     * acted upon by Mesos itself. As opposed to the data field, labels
+     * will be kept in memory on master and slave processes. Therefore,
+     * labels should be used to tag TaskStatus message with light-weight
+     * meta-data. Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    public boolean hasLabels() {
+      return ((bitField0_ & 0x00001000) == 0x00001000);
+    }
+    /**
+     * <code>optional .mesos.Labels labels = 12;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs which are exposed through
+     * master and slave endpoints. Labels will not be interpreted or
+     * acted upon by Mesos itself. As opposed to the data field, labels
+     * will be kept in memory on master and slave processes. Therefore,
+     * labels should be used to tag TaskStatus message with light-weight
+     * meta-data. Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.Labels getLabels() {
+      return labels_;
+    }
+    /**
+     * <code>optional .mesos.Labels labels = 12;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs which are exposed through
+     * master and slave endpoints. Labels will not be interpreted or
+     * acted upon by Mesos itself. As opposed to the data field, labels
+     * will be kept in memory on master and slave processes. Therefore,
+     * labels should be used to tag TaskStatus message with light-weight
+     * meta-data. Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+      return labels_;
+    }
+
+    // optional .mesos.ContainerStatus container_status = 13;
+    public static final int CONTAINER_STATUS_FIELD_NUMBER = 13;
+    private org.apache.mesos.Protos.ContainerStatus containerStatus_;
+    /**
+     * <code>optional .mesos.ContainerStatus container_status = 13;</code>
+     *
+     * <pre>
+     * Container related information that is resolved dynamically such as
+     * network address.
+     * </pre>
+     */
+    public boolean hasContainerStatus() {
+      return ((bitField0_ & 0x00002000) == 0x00002000);
+    }
+    /**
+     * <code>optional .mesos.ContainerStatus container_status = 13;</code>
+     *
+     * <pre>
+     * Container related information that is resolved dynamically such as
+     * network address.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.ContainerStatus getContainerStatus() {
+      return containerStatus_;
+    }
+    /**
+     * <code>optional .mesos.ContainerStatus container_status = 13;</code>
+     *
+     * <pre>
+     * Container related information that is resolved dynamically such as
+     * network address.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.ContainerStatusOrBuilder getContainerStatusOrBuilder() {
+      return containerStatus_;
+    }
+
+    // optional .mesos.TimeInfo unreachable_time = 14;
+    public static final int UNREACHABLE_TIME_FIELD_NUMBER = 14;
+    private org.apache.mesos.Protos.TimeInfo unreachableTime_;
+    /**
+     * <code>optional .mesos.TimeInfo unreachable_time = 14;</code>
+     *
+     * <pre>
+     * The time (according to the master's clock) when the agent where
+     * this task was running became unreachable. This is only set on
+     * status updates for tasks running on agents that are unreachable
+     * (e.g., partitioned away from the master).
+     * </pre>
+     */
+    public boolean hasUnreachableTime() {
+      return ((bitField0_ & 0x00004000) == 0x00004000);
+    }
+    /**
+     * <code>optional .mesos.TimeInfo unreachable_time = 14;</code>
+     *
+     * <pre>
+     * The time (according to the master's clock) when the agent where
+     * this task was running became unreachable. This is only set on
+     * status updates for tasks running on agents that are unreachable
+     * (e.g., partitioned away from the master).
+     * </pre>
+     */
+    public org.apache.mesos.Protos.TimeInfo getUnreachableTime() {
+      return unreachableTime_;
+    }
+    /**
+     * <code>optional .mesos.TimeInfo unreachable_time = 14;</code>
+     *
+     * <pre>
+     * The time (according to the master's clock) when the agent where
+     * this task was running became unreachable. This is only set on
+     * status updates for tasks running on agents that are unreachable
+     * (e.g., partitioned away from the master).
+     * </pre>
+     */
+    public org.apache.mesos.Protos.TimeInfoOrBuilder getUnreachableTimeOrBuilder() {
+      return unreachableTime_;
+    }
+
+    private void initFields() {
+      taskId_ = org.apache.mesos.Protos.TaskID.getDefaultInstance();
+      state_ = org.apache.mesos.Protos.TaskState.TASK_STAGING;
+      message_ = "";
+      source_ = org.apache.mesos.Protos.TaskStatus.Source.SOURCE_MASTER;
+      reason_ = org.apache.mesos.Protos.TaskStatus.Reason.REASON_COMMAND_EXECUTOR_FAILED;
+      data_ = com.google.protobuf.ByteString.EMPTY;
+      slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+      executorId_ = org.apache.mesos.Protos.ExecutorID.getDefaultInstance();
+      timestamp_ = 0D;
+      uuid_ = com.google.protobuf.ByteString.EMPTY;
+      healthy_ = false;
+      checkStatus_ = org.apache.mesos.Protos.CheckStatusInfo.getDefaultInstance();
+      labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+      containerStatus_ = org.apache.mesos.Protos.ContainerStatus.getDefaultInstance();
+      unreachableTime_ = org.apache.mesos.Protos.TimeInfo.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasTaskId()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasState()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!getTaskId().isInitialized()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (hasSlaveId()) {
+        if (!getSlaveId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasExecutorId()) {
+        if (!getExecutorId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasLabels()) {
+        if (!getLabels().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasContainerStatus()) {
+        if (!getContainerStatus().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasUnreachableTime()) {
+        if (!getUnreachableTime().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeMessage(1, taskId_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeEnum(2, state_.getNumber());
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeBytes(3, data_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeBytes(4, getMessageBytes());
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeMessage(5, slaveId_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        output.writeDouble(6, timestamp_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        output.writeMessage(7, executorId_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        output.writeBool(8, healthy_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeEnum(9, source_.getNumber());
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeEnum(10, reason_.getNumber());
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        output.writeBytes(11, uuid_);
+      }
+      if (((bitField0_ & 0x00001000) == 0x00001000)) {
+        output.writeMessage(12, labels_);
+      }
+      if (((bitField0_ & 0x00002000) == 0x00002000)) {
+        output.writeMessage(13, containerStatus_);
+      }
+      if (((bitField0_ & 0x00004000) == 0x00004000)) {
+        output.writeMessage(14, unreachableTime_);
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        output.writeMessage(15, checkStatus_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, taskId_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(2, state_.getNumber());
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(3, data_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(4, getMessageBytes());
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(5, slaveId_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(6, timestamp_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(7, executorId_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(8, healthy_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(9, source_.getNumber());
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(10, reason_.getNumber());
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(11, uuid_);
+      }
+      if (((bitField0_ & 0x00001000) == 0x00001000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(12, labels_);
+      }
+      if (((bitField0_ & 0x00002000) == 0x00002000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(13, containerStatus_);
+      }
+      if (((bitField0_ & 0x00004000) == 0x00004000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(14, unreachableTime_);
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(15, checkStatus_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.TaskStatus parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.TaskStatus parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.TaskStatus parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.TaskStatus parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.TaskStatus parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.TaskStatus parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.TaskStatus parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.TaskStatus parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.TaskStatus parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.TaskStatus parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.TaskStatus prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.TaskStatus}
+     *
+     * <pre>
+     **
+     * Describes the current status of a task.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.TaskStatusOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_TaskStatus_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_TaskStatus_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.TaskStatus.class, org.apache.mesos.Protos.TaskStatus.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.TaskStatus.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getTaskIdFieldBuilder();
+          getSlaveIdFieldBuilder();
+          getExecutorIdFieldBuilder();
+          getCheckStatusFieldBuilder();
+          getLabelsFieldBuilder();
+          getContainerStatusFieldBuilder();
+          getUnreachableTimeFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (taskIdBuilder_ == null) {
+          taskId_ = org.apache.mesos.Protos.TaskID.getDefaultInstance();
+        } else {
+          taskIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        state_ = org.apache.mesos.Protos.TaskState.TASK_STAGING;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        message_ = "";
+        bitField0_ = (bitField0_ & ~0x00000004);
+        source_ = org.apache.mesos.Protos.TaskStatus.Source.SOURCE_MASTER;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        reason_ = org.apache.mesos.Protos.TaskStatus.Reason.REASON_COMMAND_EXECUTOR_FAILED;
+        bitField0_ = (bitField0_ & ~0x00000010);
+        data_ = com.google.protobuf.ByteString.EMPTY;
+        bitField0_ = (bitField0_ & ~0x00000020);
+        if (slaveIdBuilder_ == null) {
+          slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+        } else {
+          slaveIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000040);
+        if (executorIdBuilder_ == null) {
+          executorId_ = org.apache.mesos.Protos.ExecutorID.getDefaultInstance();
+        } else {
+          executorIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000080);
+        timestamp_ = 0D;
+        bitField0_ = (bitField0_ & ~0x00000100);
+        uuid_ = com.google.protobuf.ByteString.EMPTY;
+        bitField0_ = (bitField0_ & ~0x00000200);
+        healthy_ = false;
+        bitField0_ = (bitField0_ & ~0x00000400);
+        if (checkStatusBuilder_ == null) {
+          checkStatus_ = org.apache.mesos.Protos.CheckStatusInfo.getDefaultInstance();
+        } else {
+          checkStatusBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000800);
+        if (labelsBuilder_ == null) {
+          labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+        } else {
+          labelsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00001000);
+        if (containerStatusBuilder_ == null) {
+          containerStatus_ = org.apache.mesos.Protos.ContainerStatus.getDefaultInstance();
+        } else {
+          containerStatusBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00002000);
+        if (unreachableTimeBuilder_ == null) {
+          unreachableTime_ = org.apache.mesos.Protos.TimeInfo.getDefaultInstance();
+        } else {
+          unreachableTimeBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00004000);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_TaskStatus_descriptor;
+      }
+
+      public org.apache.mesos.Protos.TaskStatus getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.TaskStatus.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.TaskStatus build() {
+        org.apache.mesos.Protos.TaskStatus result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.TaskStatus buildPartial() {
+        org.apache.mesos.Protos.TaskStatus result = new org.apache.mesos.Protos.TaskStatus(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        if (taskIdBuilder_ == null) {
+          result.taskId_ = taskId_;
+        } else {
+          result.taskId_ = taskIdBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.state_ = state_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.message_ = message_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.source_ = source_;
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.reason_ = reason_;
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        result.data_ = data_;
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        if (slaveIdBuilder_ == null) {
+          result.slaveId_ = slaveId_;
+        } else {
+          result.slaveId_ = slaveIdBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+          to_bitField0_ |= 0x00000080;
+        }
+        if (executorIdBuilder_ == null) {
+          result.executorId_ = executorId_;
+        } else {
+          result.executorId_ = executorIdBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
+          to_bitField0_ |= 0x00000100;
+        }
+        result.timestamp_ = timestamp_;
+        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
+          to_bitField0_ |= 0x00000200;
+        }
+        result.uuid_ = uuid_;
+        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
+          to_bitField0_ |= 0x00000400;
+        }
+        result.healthy_ = healthy_;
+        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
+          to_bitField0_ |= 0x00000800;
+        }
+        if (checkStatusBuilder_ == null) {
+          result.checkStatus_ = checkStatus_;
+        } else {
+          result.checkStatus_ = checkStatusBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
+          to_bitField0_ |= 0x00001000;
+        }
+        if (labelsBuilder_ == null) {
+          result.labels_ = labels_;
+        } else {
+          result.labels_ = labelsBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00002000) == 0x00002000)) {
+          to_bitField0_ |= 0x00002000;
+        }
+        if (containerStatusBuilder_ == null) {
+          result.containerStatus_ = containerStatus_;
+        } else {
+          result.containerStatus_ = containerStatusBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00004000) == 0x00004000)) {
+          to_bitField0_ |= 0x00004000;
+        }
+        if (unreachableTimeBuilder_ == null) {
+          result.unreachableTime_ = unreachableTime_;
+        } else {
+          result.unreachableTime_ = unreachableTimeBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.TaskStatus) {
+          return mergeFrom((org.apache.mesos.Protos.TaskStatus)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.TaskStatus other) {
+        if (other == org.apache.mesos.Protos.TaskStatus.getDefaultInstance()) return this;
+        if (other.hasTaskId()) {
+          mergeTaskId(other.getTaskId());
+        }
+        if (other.hasState()) {
+          setState(other.getState());
+        }
+        if (other.hasMessage()) {
+          bitField0_ |= 0x00000004;
+          message_ = other.message_;
+          onChanged();
+        }
+        if (other.hasSource()) {
+          setSource(other.getSource());
+        }
+        if (other.hasReason()) {
+          setReason(other.getReason());
+        }
+        if (other.hasData()) {
+          setData(other.getData());
+        }
+        if (other.hasSlaveId()) {
+          mergeSlaveId(other.getSlaveId());
+        }
+        if (other.hasExecutorId()) {
+          mergeExecutorId(other.getExecutorId());
+        }
+        if (other.hasTimestamp()) {
+          setTimestamp(other.getTimestamp());
+        }
+        if (other.hasUuid()) {
+          setUuid(other.getUuid());
+        }
+        if (other.hasHealthy()) {
+          setHealthy(other.getHealthy());
+        }
+        if (other.hasCheckStatus()) {
+          mergeCheckStatus(other.getCheckStatus());
+        }
+        if (other.hasLabels()) {
+          mergeLabels(other.getLabels());
+        }
+        if (other.hasContainerStatus()) {
+          mergeContainerStatus(other.getContainerStatus());
+        }
+        if (other.hasUnreachableTime()) {
+          mergeUnreachableTime(other.getUnreachableTime());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasTaskId()) {
+          
+          return false;
+        }
+        if (!hasState()) {
+          
+          return false;
+        }
+        if (!getTaskId().isInitialized()) {
+          
+          return false;
+        }
+        if (hasSlaveId()) {
+          if (!getSlaveId().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasExecutorId()) {
+          if (!getExecutorId().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasLabels()) {
+          if (!getLabels().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasContainerStatus()) {
+          if (!getContainerStatus().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasUnreachableTime()) {
+          if (!getUnreachableTime().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.TaskStatus parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.TaskStatus) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required .mesos.TaskID task_id = 1;
+      private org.apache.mesos.Protos.TaskID taskId_ = org.apache.mesos.Protos.TaskID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.TaskID, org.apache.mesos.Protos.TaskID.Builder, org.apache.mesos.Protos.TaskIDOrBuilder> taskIdBuilder_;
+      /**
+       * <code>required .mesos.TaskID task_id = 1;</code>
+       */
+      public boolean hasTaskId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.TaskID task_id = 1;</code>
+       */
+      public org.apache.mesos.Protos.TaskID getTaskId() {
+        if (taskIdBuilder_ == null) {
+          return taskId_;
+        } else {
+          return taskIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>required .mesos.TaskID task_id = 1;</code>
+       */
+      public Builder setTaskId(org.apache.mesos.Protos.TaskID value) {
+        if (taskIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          taskId_ = value;
+          onChanged();
+        } else {
+          taskIdBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .mesos.TaskID task_id = 1;</code>
+       */
+      public Builder setTaskId(
+          org.apache.mesos.Protos.TaskID.Builder builderForValue) {
+        if (taskIdBuilder_ == null) {
+          taskId_ = builderForValue.build();
+          onChanged();
+        } else {
+          taskIdBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .mesos.TaskID task_id = 1;</code>
+       */
+      public Builder mergeTaskId(org.apache.mesos.Protos.TaskID value) {
+        if (taskIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001) &&
+              taskId_ != org.apache.mesos.Protos.TaskID.getDefaultInstance()) {
+            taskId_ =
+              org.apache.mesos.Protos.TaskID.newBuilder(taskId_).mergeFrom(value).buildPartial();
+          } else {
+            taskId_ = value;
+          }
+          onChanged();
+        } else {
+          taskIdBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .mesos.TaskID task_id = 1;</code>
+       */
+      public Builder clearTaskId() {
+        if (taskIdBuilder_ == null) {
+          taskId_ = org.apache.mesos.Protos.TaskID.getDefaultInstance();
+          onChanged();
+        } else {
+          taskIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+      /**
+       * <code>required .mesos.TaskID task_id = 1;</code>
+       */
+      public org.apache.mesos.Protos.TaskID.Builder getTaskIdBuilder() {
+        bitField0_ |= 0x00000001;
+        onChanged();
+        return getTaskIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>required .mesos.TaskID task_id = 1;</code>
+       */
+      public org.apache.mesos.Protos.TaskIDOrBuilder getTaskIdOrBuilder() {
+        if (taskIdBuilder_ != null) {
+          return taskIdBuilder_.getMessageOrBuilder();
+        } else {
+          return taskId_;
+        }
+      }
+      /**
+       * <code>required .mesos.TaskID task_id = 1;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.TaskID, org.apache.mesos.Protos.TaskID.Builder, org.apache.mesos.Protos.TaskIDOrBuilder> 
+          getTaskIdFieldBuilder() {
+        if (taskIdBuilder_ == null) {
+          taskIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.TaskID, org.apache.mesos.Protos.TaskID.Builder, org.apache.mesos.Protos.TaskIDOrBuilder>(
+                  taskId_,
+                  getParentForChildren(),
+                  isClean());
+          taskId_ = null;
+        }
+        return taskIdBuilder_;
+      }
+
+      // required .mesos.TaskState state = 2;
+      private org.apache.mesos.Protos.TaskState state_ = org.apache.mesos.Protos.TaskState.TASK_STAGING;
+      /**
+       * <code>required .mesos.TaskState state = 2;</code>
+       */
+      public boolean hasState() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required .mesos.TaskState state = 2;</code>
+       */
+      public org.apache.mesos.Protos.TaskState getState() {
+        return state_;
+      }
+      /**
+       * <code>required .mesos.TaskState state = 2;</code>
+       */
+      public Builder setState(org.apache.mesos.Protos.TaskState value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000002;
+        state_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required .mesos.TaskState state = 2;</code>
+       */
+      public Builder clearState() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        state_ = org.apache.mesos.Protos.TaskState.TASK_STAGING;
+        onChanged();
+        return this;
+      }
+
+      // optional string message = 4;
+      private java.lang.Object message_ = "";
+      /**
+       * <code>optional string message = 4;</code>
+       *
+       * <pre>
+       * Possible message explaining state.
+       * </pre>
+       */
+      public boolean hasMessage() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional string message = 4;</code>
+       *
+       * <pre>
+       * Possible message explaining state.
+       * </pre>
+       */
+      public java.lang.String getMessage() {
+        java.lang.Object ref = message_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          message_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string message = 4;</code>
+       *
+       * <pre>
+       * Possible message explaining state.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getMessageBytes() {
+        java.lang.Object ref = message_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          message_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string message = 4;</code>
+       *
+       * <pre>
+       * Possible message explaining state.
+       * </pre>
+       */
+      public Builder setMessage(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        message_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string message = 4;</code>
+       *
+       * <pre>
+       * Possible message explaining state.
+       * </pre>
+       */
+      public Builder clearMessage() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        message_ = getDefaultInstance().getMessage();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string message = 4;</code>
+       *
+       * <pre>
+       * Possible message explaining state.
+       * </pre>
+       */
+      public Builder setMessageBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        message_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.TaskStatus.Source source = 9;
+      private org.apache.mesos.Protos.TaskStatus.Source source_ = org.apache.mesos.Protos.TaskStatus.Source.SOURCE_MASTER;
+      /**
+       * <code>optional .mesos.TaskStatus.Source source = 9;</code>
+       */
+      public boolean hasSource() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.TaskStatus.Source source = 9;</code>
+       */
+      public org.apache.mesos.Protos.TaskStatus.Source getSource() {
+        return source_;
+      }
+      /**
+       * <code>optional .mesos.TaskStatus.Source source = 9;</code>
+       */
+      public Builder setSource(org.apache.mesos.Protos.TaskStatus.Source value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000008;
+        source_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional .mesos.TaskStatus.Source source = 9;</code>
+       */
+      public Builder clearSource() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        source_ = org.apache.mesos.Protos.TaskStatus.Source.SOURCE_MASTER;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.TaskStatus.Reason reason = 10;
+      private org.apache.mesos.Protos.TaskStatus.Reason reason_ = org.apache.mesos.Protos.TaskStatus.Reason.REASON_COMMAND_EXECUTOR_FAILED;
+      /**
+       * <code>optional .mesos.TaskStatus.Reason reason = 10;</code>
+       */
+      public boolean hasReason() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional .mesos.TaskStatus.Reason reason = 10;</code>
+       */
+      public org.apache.mesos.Protos.TaskStatus.Reason getReason() {
+        return reason_;
+      }
+      /**
+       * <code>optional .mesos.TaskStatus.Reason reason = 10;</code>
+       */
+      public Builder setReason(org.apache.mesos.Protos.TaskStatus.Reason value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000010;
+        reason_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional .mesos.TaskStatus.Reason reason = 10;</code>
+       */
+      public Builder clearReason() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        reason_ = org.apache.mesos.Protos.TaskStatus.Reason.REASON_COMMAND_EXECUTOR_FAILED;
+        onChanged();
+        return this;
+      }
+
+      // optional bytes data = 3;
+      private com.google.protobuf.ByteString data_ = com.google.protobuf.ByteString.EMPTY;
+      /**
+       * <code>optional bytes data = 3;</code>
+       */
+      public boolean hasData() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional bytes data = 3;</code>
+       */
+      public com.google.protobuf.ByteString getData() {
+        return data_;
+      }
+      /**
+       * <code>optional bytes data = 3;</code>
+       */
+      public Builder setData(com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000020;
+        data_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional bytes data = 3;</code>
+       */
+      public Builder clearData() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        data_ = getDefaultInstance().getData();
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.SlaveID slave_id = 5;
+      private org.apache.mesos.Protos.SlaveID slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.SlaveID, org.apache.mesos.Protos.SlaveID.Builder, org.apache.mesos.Protos.SlaveIDOrBuilder> slaveIdBuilder_;
+      /**
+       * <code>optional .mesos.SlaveID slave_id = 5;</code>
+       */
+      public boolean hasSlaveId() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional .mesos.SlaveID slave_id = 5;</code>
+       */
+      public org.apache.mesos.Protos.SlaveID getSlaveId() {
+        if (slaveIdBuilder_ == null) {
+          return slaveId_;
+        } else {
+          return slaveIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.SlaveID slave_id = 5;</code>
+       */
+      public Builder setSlaveId(org.apache.mesos.Protos.SlaveID value) {
+        if (slaveIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          slaveId_ = value;
+          onChanged();
+        } else {
+          slaveIdBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.SlaveID slave_id = 5;</code>
+       */
+      public Builder setSlaveId(
+          org.apache.mesos.Protos.SlaveID.Builder builderForValue) {
+        if (slaveIdBuilder_ == null) {
+          slaveId_ = builderForValue.build();
+          onChanged();
+        } else {
+          slaveIdBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.SlaveID slave_id = 5;</code>
+       */
+      public Builder mergeSlaveId(org.apache.mesos.Protos.SlaveID value) {
+        if (slaveIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000040) == 0x00000040) &&
+              slaveId_ != org.apache.mesos.Protos.SlaveID.getDefaultInstance()) {
+            slaveId_ =
+              org.apache.mesos.Protos.SlaveID.newBuilder(slaveId_).mergeFrom(value).buildPartial();
+          } else {
+            slaveId_ = value;
+          }
+          onChanged();
+        } else {
+          slaveIdBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.SlaveID slave_id = 5;</code>
+       */
+      public Builder clearSlaveId() {
+        if (slaveIdBuilder_ == null) {
+          slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+          onChanged();
+        } else {
+          slaveIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000040);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.SlaveID slave_id = 5;</code>
+       */
+      public org.apache.mesos.Protos.SlaveID.Builder getSlaveIdBuilder() {
+        bitField0_ |= 0x00000040;
+        onChanged();
+        return getSlaveIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.SlaveID slave_id = 5;</code>
+       */
+      public org.apache.mesos.Protos.SlaveIDOrBuilder getSlaveIdOrBuilder() {
+        if (slaveIdBuilder_ != null) {
+          return slaveIdBuilder_.getMessageOrBuilder();
+        } else {
+          return slaveId_;
+        }
+      }
+      /**
+       * <code>optional .mesos.SlaveID slave_id = 5;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.SlaveID, org.apache.mesos.Protos.SlaveID.Builder, org.apache.mesos.Protos.SlaveIDOrBuilder> 
+          getSlaveIdFieldBuilder() {
+        if (slaveIdBuilder_ == null) {
+          slaveIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.SlaveID, org.apache.mesos.Protos.SlaveID.Builder, org.apache.mesos.Protos.SlaveIDOrBuilder>(
+                  slaveId_,
+                  getParentForChildren(),
+                  isClean());
+          slaveId_ = null;
+        }
+        return slaveIdBuilder_;
+      }
+
+      // optional .mesos.ExecutorID executor_id = 7;
+      private org.apache.mesos.Protos.ExecutorID executorId_ = org.apache.mesos.Protos.ExecutorID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.ExecutorID, org.apache.mesos.Protos.ExecutorID.Builder, org.apache.mesos.Protos.ExecutorIDOrBuilder> executorIdBuilder_;
+      /**
+       * <code>optional .mesos.ExecutorID executor_id = 7;</code>
+       *
+       * <pre>
+       * TODO(benh): Use in master/slave.
+       * </pre>
+       */
+      public boolean hasExecutorId() {
+        return ((bitField0_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional .mesos.ExecutorID executor_id = 7;</code>
+       *
+       * <pre>
+       * TODO(benh): Use in master/slave.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.ExecutorID getExecutorId() {
+        if (executorIdBuilder_ == null) {
+          return executorId_;
+        } else {
+          return executorIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.ExecutorID executor_id = 7;</code>
+       *
+       * <pre>
+       * TODO(benh): Use in master/slave.
+       * </pre>
+       */
+      public Builder setExecutorId(org.apache.mesos.Protos.ExecutorID value) {
+        if (executorIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          executorId_ = value;
+          onChanged();
+        } else {
+          executorIdBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ExecutorID executor_id = 7;</code>
+       *
+       * <pre>
+       * TODO(benh): Use in master/slave.
+       * </pre>
+       */
+      public Builder setExecutorId(
+          org.apache.mesos.Protos.ExecutorID.Builder builderForValue) {
+        if (executorIdBuilder_ == null) {
+          executorId_ = builderForValue.build();
+          onChanged();
+        } else {
+          executorIdBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ExecutorID executor_id = 7;</code>
+       *
+       * <pre>
+       * TODO(benh): Use in master/slave.
+       * </pre>
+       */
+      public Builder mergeExecutorId(org.apache.mesos.Protos.ExecutorID value) {
+        if (executorIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000080) == 0x00000080) &&
+              executorId_ != org.apache.mesos.Protos.ExecutorID.getDefaultInstance()) {
+            executorId_ =
+              org.apache.mesos.Protos.ExecutorID.newBuilder(executorId_).mergeFrom(value).buildPartial();
+          } else {
+            executorId_ = value;
+          }
+          onChanged();
+        } else {
+          executorIdBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ExecutorID executor_id = 7;</code>
+       *
+       * <pre>
+       * TODO(benh): Use in master/slave.
+       * </pre>
+       */
+      public Builder clearExecutorId() {
+        if (executorIdBuilder_ == null) {
+          executorId_ = org.apache.mesos.Protos.ExecutorID.getDefaultInstance();
+          onChanged();
+        } else {
+          executorIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000080);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ExecutorID executor_id = 7;</code>
+       *
+       * <pre>
+       * TODO(benh): Use in master/slave.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.ExecutorID.Builder getExecutorIdBuilder() {
+        bitField0_ |= 0x00000080;
+        onChanged();
+        return getExecutorIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.ExecutorID executor_id = 7;</code>
+       *
+       * <pre>
+       * TODO(benh): Use in master/slave.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder() {
+        if (executorIdBuilder_ != null) {
+          return executorIdBuilder_.getMessageOrBuilder();
+        } else {
+          return executorId_;
+        }
+      }
+      /**
+       * <code>optional .mesos.ExecutorID executor_id = 7;</code>
+       *
+       * <pre>
+       * TODO(benh): Use in master/slave.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.ExecutorID, org.apache.mesos.Protos.ExecutorID.Builder, org.apache.mesos.Protos.ExecutorIDOrBuilder> 
+          getExecutorIdFieldBuilder() {
+        if (executorIdBuilder_ == null) {
+          executorIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.ExecutorID, org.apache.mesos.Protos.ExecutorID.Builder, org.apache.mesos.Protos.ExecutorIDOrBuilder>(
+                  executorId_,
+                  getParentForChildren(),
+                  isClean());
+          executorId_ = null;
+        }
+        return executorIdBuilder_;
+      }
+
+      // optional double timestamp = 6;
+      private double timestamp_ ;
+      /**
+       * <code>optional double timestamp = 6;</code>
+       */
+      public boolean hasTimestamp() {
+        return ((bitField0_ & 0x00000100) == 0x00000100);
+      }
+      /**
+       * <code>optional double timestamp = 6;</code>
+       */
+      public double getTimestamp() {
+        return timestamp_;
+      }
+      /**
+       * <code>optional double timestamp = 6;</code>
+       */
+      public Builder setTimestamp(double value) {
+        bitField0_ |= 0x00000100;
+        timestamp_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double timestamp = 6;</code>
+       */
+      public Builder clearTimestamp() {
+        bitField0_ = (bitField0_ & ~0x00000100);
+        timestamp_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // optional bytes uuid = 11;
+      private com.google.protobuf.ByteString uuid_ = com.google.protobuf.ByteString.EMPTY;
+      /**
+       * <code>optional bytes uuid = 11;</code>
+       *
+       * <pre>
+       * Statuses that are delivered reliably to the scheduler will
+       * include a 'uuid'. The status is considered delivered once
+       * it is acknowledged by the scheduler. Schedulers can choose
+       * to either explicitly acknowledge statuses or let the scheduler
+       * driver implicitly acknowledge (default).
+       *
+       * TODO(bmahler): This is currently overwritten in the scheduler
+       * driver and executor driver, but executors will need to set this
+       * to a valid RFC-4122 UUID if using the HTTP API.
+       * </pre>
+       */
+      public boolean hasUuid() {
+        return ((bitField0_ & 0x00000200) == 0x00000200);
+      }
+      /**
+       * <code>optional bytes uuid = 11;</code>
+       *
+       * <pre>
+       * Statuses that are delivered reliably to the scheduler will
+       * include a 'uuid'. The status is considered delivered once
+       * it is acknowledged by the scheduler. Schedulers can choose
+       * to either explicitly acknowledge statuses or let the scheduler
+       * driver implicitly acknowledge (default).
+       *
+       * TODO(bmahler): This is currently overwritten in the scheduler
+       * driver and executor driver, but executors will need to set this
+       * to a valid RFC-4122 UUID if using the HTTP API.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString getUuid() {
+        return uuid_;
+      }
+      /**
+       * <code>optional bytes uuid = 11;</code>
+       *
+       * <pre>
+       * Statuses that are delivered reliably to the scheduler will
+       * include a 'uuid'. The status is considered delivered once
+       * it is acknowledged by the scheduler. Schedulers can choose
+       * to either explicitly acknowledge statuses or let the scheduler
+       * driver implicitly acknowledge (default).
+       *
+       * TODO(bmahler): This is currently overwritten in the scheduler
+       * driver and executor driver, but executors will need to set this
+       * to a valid RFC-4122 UUID if using the HTTP API.
+       * </pre>
+       */
+      public Builder setUuid(com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000200;
+        uuid_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional bytes uuid = 11;</code>
+       *
+       * <pre>
+       * Statuses that are delivered reliably to the scheduler will
+       * include a 'uuid'. The status is considered delivered once
+       * it is acknowledged by the scheduler. Schedulers can choose
+       * to either explicitly acknowledge statuses or let the scheduler
+       * driver implicitly acknowledge (default).
+       *
+       * TODO(bmahler): This is currently overwritten in the scheduler
+       * driver and executor driver, but executors will need to set this
+       * to a valid RFC-4122 UUID if using the HTTP API.
+       * </pre>
+       */
+      public Builder clearUuid() {
+        bitField0_ = (bitField0_ & ~0x00000200);
+        uuid_ = getDefaultInstance().getUuid();
+        onChanged();
+        return this;
+      }
+
+      // optional bool healthy = 8;
+      private boolean healthy_ ;
+      /**
+       * <code>optional bool healthy = 8;</code>
+       *
+       * <pre>
+       * Describes whether the task has been determined to be healthy (true) or
+       * unhealthy (false) according to the `health_check` field in `TaskInfo`.
+       * </pre>
+       */
+      public boolean hasHealthy() {
+        return ((bitField0_ & 0x00000400) == 0x00000400);
+      }
+      /**
+       * <code>optional bool healthy = 8;</code>
+       *
+       * <pre>
+       * Describes whether the task has been determined to be healthy (true) or
+       * unhealthy (false) according to the `health_check` field in `TaskInfo`.
+       * </pre>
+       */
+      public boolean getHealthy() {
+        return healthy_;
+      }
+      /**
+       * <code>optional bool healthy = 8;</code>
+       *
+       * <pre>
+       * Describes whether the task has been determined to be healthy (true) or
+       * unhealthy (false) according to the `health_check` field in `TaskInfo`.
+       * </pre>
+       */
+      public Builder setHealthy(boolean value) {
+        bitField0_ |= 0x00000400;
+        healthy_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional bool healthy = 8;</code>
+       *
+       * <pre>
+       * Describes whether the task has been determined to be healthy (true) or
+       * unhealthy (false) according to the `health_check` field in `TaskInfo`.
+       * </pre>
+       */
+      public Builder clearHealthy() {
+        bitField0_ = (bitField0_ & ~0x00000400);
+        healthy_ = false;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.CheckStatusInfo check_status = 15;
+      private org.apache.mesos.Protos.CheckStatusInfo checkStatus_ = org.apache.mesos.Protos.CheckStatusInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.CheckStatusInfo, org.apache.mesos.Protos.CheckStatusInfo.Builder, org.apache.mesos.Protos.CheckStatusInfoOrBuilder> checkStatusBuilder_;
+      /**
+       * <code>optional .mesos.CheckStatusInfo check_status = 15;</code>
+       *
+       * <pre>
+       * Contains check status for the check specified in the corresponding
+       * `TaskInfo`. If no check has been specified, this field must be
+       * absent, otherwise it must be present even if the check status is
+       * not available yet. If the status update is triggered for a different
+       * reason than `REASON_TASK_CHECK_STATUS_UPDATED`, this field will contain
+       * the last known value.
+       *
+       * NOTE: A check-related task status update is triggered if and only if
+       * the value or presence of any field in `CheckStatusInfo` changes.
+       *
+       * NOTE: Check support in built-in executors is experimental.
+       * </pre>
+       */
+      public boolean hasCheckStatus() {
+        return ((bitField0_ & 0x00000800) == 0x00000800);
+      }
+      /**
+       * <code>optional .mesos.CheckStatusInfo check_status = 15;</code>
+       *
+       * <pre>
+       * Contains check status for the check specified in the corresponding
+       * `TaskInfo`. If no check has been specified, this field must be
+       * absent, otherwise it must be present even if the check status is
+       * not available yet. If the status update is triggered for a different
+       * reason than `REASON_TASK_CHECK_STATUS_UPDATED`, this field will contain
+       * the last known value.
+       *
+       * NOTE: A check-related task status update is triggered if and only if
+       * the value or presence of any field in `CheckStatusInfo` changes.
+       *
+       * NOTE: Check support in built-in executors is experimental.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.CheckStatusInfo getCheckStatus() {
+        if (checkStatusBuilder_ == null) {
+          return checkStatus_;
+        } else {
+          return checkStatusBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.CheckStatusInfo check_status = 15;</code>
+       *
+       * <pre>
+       * Contains check status for the check specified in the corresponding
+       * `TaskInfo`. If no check has been specified, this field must be
+       * absent, otherwise it must be present even if the check status is
+       * not available yet. If the status update is triggered for a different
+       * reason than `REASON_TASK_CHECK_STATUS_UPDATED`, this field will contain
+       * the last known value.
+       *
+       * NOTE: A check-related task status update is triggered if and only if
+       * the value or presence of any field in `CheckStatusInfo` changes.
+       *
+       * NOTE: Check support in built-in executors is experimental.
+       * </pre>
+       */
+      public Builder setCheckStatus(org.apache.mesos.Protos.CheckStatusInfo value) {
+        if (checkStatusBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          checkStatus_ = value;
+          onChanged();
+        } else {
+          checkStatusBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CheckStatusInfo check_status = 15;</code>
+       *
+       * <pre>
+       * Contains check status for the check specified in the corresponding
+       * `TaskInfo`. If no check has been specified, this field must be
+       * absent, otherwise it must be present even if the check status is
+       * not available yet. If the status update is triggered for a different
+       * reason than `REASON_TASK_CHECK_STATUS_UPDATED`, this field will contain
+       * the last known value.
+       *
+       * NOTE: A check-related task status update is triggered if and only if
+       * the value or presence of any field in `CheckStatusInfo` changes.
+       *
+       * NOTE: Check support in built-in executors is experimental.
+       * </pre>
+       */
+      public Builder setCheckStatus(
+          org.apache.mesos.Protos.CheckStatusInfo.Builder builderForValue) {
+        if (checkStatusBuilder_ == null) {
+          checkStatus_ = builderForValue.build();
+          onChanged();
+        } else {
+          checkStatusBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CheckStatusInfo check_status = 15;</code>
+       *
+       * <pre>
+       * Contains check status for the check specified in the corresponding
+       * `TaskInfo`. If no check has been specified, this field must be
+       * absent, otherwise it must be present even if the check status is
+       * not available yet. If the status update is triggered for a different
+       * reason than `REASON_TASK_CHECK_STATUS_UPDATED`, this field will contain
+       * the last known value.
+       *
+       * NOTE: A check-related task status update is triggered if and only if
+       * the value or presence of any field in `CheckStatusInfo` changes.
+       *
+       * NOTE: Check support in built-in executors is experimental.
+       * </pre>
+       */
+      public Builder mergeCheckStatus(org.apache.mesos.Protos.CheckStatusInfo value) {
+        if (checkStatusBuilder_ == null) {
+          if (((bitField0_ & 0x00000800) == 0x00000800) &&
+              checkStatus_ != org.apache.mesos.Protos.CheckStatusInfo.getDefaultInstance()) {
+            checkStatus_ =
+              org.apache.mesos.Protos.CheckStatusInfo.newBuilder(checkStatus_).mergeFrom(value).buildPartial();
+          } else {
+            checkStatus_ = value;
+          }
+          onChanged();
+        } else {
+          checkStatusBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CheckStatusInfo check_status = 15;</code>
+       *
+       * <pre>
+       * Contains check status for the check specified in the corresponding
+       * `TaskInfo`. If no check has been specified, this field must be
+       * absent, otherwise it must be present even if the check status is
+       * not available yet. If the status update is triggered for a different
+       * reason than `REASON_TASK_CHECK_STATUS_UPDATED`, this field will contain
+       * the last known value.
+       *
+       * NOTE: A check-related task status update is triggered if and only if
+       * the value or presence of any field in `CheckStatusInfo` changes.
+       *
+       * NOTE: Check support in built-in executors is experimental.
+       * </pre>
+       */
+      public Builder clearCheckStatus() {
+        if (checkStatusBuilder_ == null) {
+          checkStatus_ = org.apache.mesos.Protos.CheckStatusInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          checkStatusBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000800);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CheckStatusInfo check_status = 15;</code>
+       *
+       * <pre>
+       * Contains check status for the check specified in the corresponding
+       * `TaskInfo`. If no check has been specified, this field must be
+       * absent, otherwise it must be present even if the check status is
+       * not available yet. If the status update is triggered for a different
+       * reason than `REASON_TASK_CHECK_STATUS_UPDATED`, this field will contain
+       * the last known value.
+       *
+       * NOTE: A check-related task status update is triggered if and only if
+       * the value or presence of any field in `CheckStatusInfo` changes.
+       *
+       * NOTE: Check support in built-in executors is experimental.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.CheckStatusInfo.Builder getCheckStatusBuilder() {
+        bitField0_ |= 0x00000800;
+        onChanged();
+        return getCheckStatusFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.CheckStatusInfo check_status = 15;</code>
+       *
+       * <pre>
+       * Contains check status for the check specified in the corresponding
+       * `TaskInfo`. If no check has been specified, this field must be
+       * absent, otherwise it must be present even if the check status is
+       * not available yet. If the status update is triggered for a different
+       * reason than `REASON_TASK_CHECK_STATUS_UPDATED`, this field will contain
+       * the last known value.
+       *
+       * NOTE: A check-related task status update is triggered if and only if
+       * the value or presence of any field in `CheckStatusInfo` changes.
+       *
+       * NOTE: Check support in built-in executors is experimental.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.CheckStatusInfoOrBuilder getCheckStatusOrBuilder() {
+        if (checkStatusBuilder_ != null) {
+          return checkStatusBuilder_.getMessageOrBuilder();
+        } else {
+          return checkStatus_;
+        }
+      }
+      /**
+       * <code>optional .mesos.CheckStatusInfo check_status = 15;</code>
+       *
+       * <pre>
+       * Contains check status for the check specified in the corresponding
+       * `TaskInfo`. If no check has been specified, this field must be
+       * absent, otherwise it must be present even if the check status is
+       * not available yet. If the status update is triggered for a different
+       * reason than `REASON_TASK_CHECK_STATUS_UPDATED`, this field will contain
+       * the last known value.
+       *
+       * NOTE: A check-related task status update is triggered if and only if
+       * the value or presence of any field in `CheckStatusInfo` changes.
+       *
+       * NOTE: Check support in built-in executors is experimental.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.CheckStatusInfo, org.apache.mesos.Protos.CheckStatusInfo.Builder, org.apache.mesos.Protos.CheckStatusInfoOrBuilder> 
+          getCheckStatusFieldBuilder() {
+        if (checkStatusBuilder_ == null) {
+          checkStatusBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.CheckStatusInfo, org.apache.mesos.Protos.CheckStatusInfo.Builder, org.apache.mesos.Protos.CheckStatusInfoOrBuilder>(
+                  checkStatus_,
+                  getParentForChildren(),
+                  isClean());
+          checkStatus_ = null;
+        }
+        return checkStatusBuilder_;
+      }
+
+      // optional .mesos.Labels labels = 12;
+      private org.apache.mesos.Protos.Labels labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Labels, org.apache.mesos.Protos.Labels.Builder, org.apache.mesos.Protos.LabelsOrBuilder> labelsBuilder_;
+      /**
+       * <code>optional .mesos.Labels labels = 12;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and slave endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and slave processes. Therefore,
+       * labels should be used to tag TaskStatus message with light-weight
+       * meta-data. Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public boolean hasLabels() {
+        return ((bitField0_ & 0x00001000) == 0x00001000);
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 12;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and slave endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and slave processes. Therefore,
+       * labels should be used to tag TaskStatus message with light-weight
+       * meta-data. Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Labels getLabels() {
+        if (labelsBuilder_ == null) {
+          return labels_;
+        } else {
+          return labelsBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 12;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and slave endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and slave processes. Therefore,
+       * labels should be used to tag TaskStatus message with light-weight
+       * meta-data. Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public Builder setLabels(org.apache.mesos.Protos.Labels value) {
+        if (labelsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          labels_ = value;
+          onChanged();
+        } else {
+          labelsBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00001000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 12;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and slave endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and slave processes. Therefore,
+       * labels should be used to tag TaskStatus message with light-weight
+       * meta-data. Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public Builder setLabels(
+          org.apache.mesos.Protos.Labels.Builder builderForValue) {
+        if (labelsBuilder_ == null) {
+          labels_ = builderForValue.build();
+          onChanged();
+        } else {
+          labelsBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00001000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 12;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and slave endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and slave processes. Therefore,
+       * labels should be used to tag TaskStatus message with light-weight
+       * meta-data. Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public Builder mergeLabels(org.apache.mesos.Protos.Labels value) {
+        if (labelsBuilder_ == null) {
+          if (((bitField0_ & 0x00001000) == 0x00001000) &&
+              labels_ != org.apache.mesos.Protos.Labels.getDefaultInstance()) {
+            labels_ =
+              org.apache.mesos.Protos.Labels.newBuilder(labels_).mergeFrom(value).buildPartial();
+          } else {
+            labels_ = value;
+          }
+          onChanged();
+        } else {
+          labelsBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00001000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 12;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and slave endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and slave processes. Therefore,
+       * labels should be used to tag TaskStatus message with light-weight
+       * meta-data. Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public Builder clearLabels() {
+        if (labelsBuilder_ == null) {
+          labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+          onChanged();
+        } else {
+          labelsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00001000);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 12;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and slave endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and slave processes. Therefore,
+       * labels should be used to tag TaskStatus message with light-weight
+       * meta-data. Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Labels.Builder getLabelsBuilder() {
+        bitField0_ |= 0x00001000;
+        onChanged();
+        return getLabelsFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 12;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and slave endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and slave processes. Therefore,
+       * labels should be used to tag TaskStatus message with light-weight
+       * meta-data. Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+        if (labelsBuilder_ != null) {
+          return labelsBuilder_.getMessageOrBuilder();
+        } else {
+          return labels_;
+        }
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 12;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and slave endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and slave processes. Therefore,
+       * labels should be used to tag TaskStatus message with light-weight
+       * meta-data. Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Labels, org.apache.mesos.Protos.Labels.Builder, org.apache.mesos.Protos.LabelsOrBuilder> 
+          getLabelsFieldBuilder() {
+        if (labelsBuilder_ == null) {
+          labelsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Labels, org.apache.mesos.Protos.Labels.Builder, org.apache.mesos.Protos.LabelsOrBuilder>(
+                  labels_,
+                  getParentForChildren(),
+                  isClean());
+          labels_ = null;
+        }
+        return labelsBuilder_;
+      }
+
+      // optional .mesos.ContainerStatus container_status = 13;
+      private org.apache.mesos.Protos.ContainerStatus containerStatus_ = org.apache.mesos.Protos.ContainerStatus.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.ContainerStatus, org.apache.mesos.Protos.ContainerStatus.Builder, org.apache.mesos.Protos.ContainerStatusOrBuilder> containerStatusBuilder_;
+      /**
+       * <code>optional .mesos.ContainerStatus container_status = 13;</code>
+       *
+       * <pre>
+       * Container related information that is resolved dynamically such as
+       * network address.
+       * </pre>
+       */
+      public boolean hasContainerStatus() {
+        return ((bitField0_ & 0x00002000) == 0x00002000);
+      }
+      /**
+       * <code>optional .mesos.ContainerStatus container_status = 13;</code>
+       *
+       * <pre>
+       * Container related information that is resolved dynamically such as
+       * network address.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.ContainerStatus getContainerStatus() {
+        if (containerStatusBuilder_ == null) {
+          return containerStatus_;
+        } else {
+          return containerStatusBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.ContainerStatus container_status = 13;</code>
+       *
+       * <pre>
+       * Container related information that is resolved dynamically such as
+       * network address.
+       * </pre>
+       */
+      public Builder setContainerStatus(org.apache.mesos.Protos.ContainerStatus value) {
+        if (containerStatusBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          containerStatus_ = value;
+          onChanged();
+        } else {
+          containerStatusBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00002000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ContainerStatus container_status = 13;</code>
+       *
+       * <pre>
+       * Container related information that is resolved dynamically such as
+       * network address.
+       * </pre>
+       */
+      public Builder setContainerStatus(
+          org.apache.mesos.Protos.ContainerStatus.Builder builderForValue) {
+        if (containerStatusBuilder_ == null) {
+          containerStatus_ = builderForValue.build();
+          onChanged();
+        } else {
+          containerStatusBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00002000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ContainerStatus container_status = 13;</code>
+       *
+       * <pre>
+       * Container related information that is resolved dynamically such as
+       * network address.
+       * </pre>
+       */
+      public Builder mergeContainerStatus(org.apache.mesos.Protos.ContainerStatus value) {
+        if (containerStatusBuilder_ == null) {
+          if (((bitField0_ & 0x00002000) == 0x00002000) &&
+              containerStatus_ != org.apache.mesos.Protos.ContainerStatus.getDefaultInstance()) {
+            containerStatus_ =
+              org.apache.mesos.Protos.ContainerStatus.newBuilder(containerStatus_).mergeFrom(value).buildPartial();
+          } else {
+            containerStatus_ = value;
+          }
+          onChanged();
+        } else {
+          containerStatusBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00002000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ContainerStatus container_status = 13;</code>
+       *
+       * <pre>
+       * Container related information that is resolved dynamically such as
+       * network address.
+       * </pre>
+       */
+      public Builder clearContainerStatus() {
+        if (containerStatusBuilder_ == null) {
+          containerStatus_ = org.apache.mesos.Protos.ContainerStatus.getDefaultInstance();
+          onChanged();
+        } else {
+          containerStatusBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00002000);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ContainerStatus container_status = 13;</code>
+       *
+       * <pre>
+       * Container related information that is resolved dynamically such as
+       * network address.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.ContainerStatus.Builder getContainerStatusBuilder() {
+        bitField0_ |= 0x00002000;
+        onChanged();
+        return getContainerStatusFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.ContainerStatus container_status = 13;</code>
+       *
+       * <pre>
+       * Container related information that is resolved dynamically such as
+       * network address.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.ContainerStatusOrBuilder getContainerStatusOrBuilder() {
+        if (containerStatusBuilder_ != null) {
+          return containerStatusBuilder_.getMessageOrBuilder();
+        } else {
+          return containerStatus_;
+        }
+      }
+      /**
+       * <code>optional .mesos.ContainerStatus container_status = 13;</code>
+       *
+       * <pre>
+       * Container related information that is resolved dynamically such as
+       * network address.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.ContainerStatus, org.apache.mesos.Protos.ContainerStatus.Builder, org.apache.mesos.Protos.ContainerStatusOrBuilder> 
+          getContainerStatusFieldBuilder() {
+        if (containerStatusBuilder_ == null) {
+          containerStatusBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.ContainerStatus, org.apache.mesos.Protos.ContainerStatus.Builder, org.apache.mesos.Protos.ContainerStatusOrBuilder>(
+                  containerStatus_,
+                  getParentForChildren(),
+                  isClean());
+          containerStatus_ = null;
+        }
+        return containerStatusBuilder_;
+      }
+
+      // optional .mesos.TimeInfo unreachable_time = 14;
+      private org.apache.mesos.Protos.TimeInfo unreachableTime_ = org.apache.mesos.Protos.TimeInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.TimeInfo, org.apache.mesos.Protos.TimeInfo.Builder, org.apache.mesos.Protos.TimeInfoOrBuilder> unreachableTimeBuilder_;
+      /**
+       * <code>optional .mesos.TimeInfo unreachable_time = 14;</code>
+       *
+       * <pre>
+       * The time (according to the master's clock) when the agent where
+       * this task was running became unreachable. This is only set on
+       * status updates for tasks running on agents that are unreachable
+       * (e.g., partitioned away from the master).
+       * </pre>
+       */
+      public boolean hasUnreachableTime() {
+        return ((bitField0_ & 0x00004000) == 0x00004000);
+      }
+      /**
+       * <code>optional .mesos.TimeInfo unreachable_time = 14;</code>
+       *
+       * <pre>
+       * The time (according to the master's clock) when the agent where
+       * this task was running became unreachable. This is only set on
+       * status updates for tasks running on agents that are unreachable
+       * (e.g., partitioned away from the master).
+       * </pre>
+       */
+      public org.apache.mesos.Protos.TimeInfo getUnreachableTime() {
+        if (unreachableTimeBuilder_ == null) {
+          return unreachableTime_;
+        } else {
+          return unreachableTimeBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.TimeInfo unreachable_time = 14;</code>
+       *
+       * <pre>
+       * The time (according to the master's clock) when the agent where
+       * this task was running became unreachable. This is only set on
+       * status updates for tasks running on agents that are unreachable
+       * (e.g., partitioned away from the master).
+       * </pre>
+       */
+      public Builder setUnreachableTime(org.apache.mesos.Protos.TimeInfo value) {
+        if (unreachableTimeBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          unreachableTime_ = value;
+          onChanged();
+        } else {
+          unreachableTimeBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00004000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.TimeInfo unreachable_time = 14;</code>
+       *
+       * <pre>
+       * The time (according to the master's clock) when the agent where
+       * this task was running became unreachable. This is only set on
+       * status updates for tasks running on agents that are unreachable
+       * (e.g., partitioned away from the master).
+       * </pre>
+       */
+      public Builder setUnreachableTime(
+          org.apache.mesos.Protos.TimeInfo.Builder builderForValue) {
+        if (unreachableTimeBuilder_ == null) {
+          unreachableTime_ = builderForValue.build();
+          onChanged();
+        } else {
+          unreachableTimeBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00004000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.TimeInfo unreachable_time = 14;</code>
+       *
+       * <pre>
+       * The time (according to the master's clock) when the agent where
+       * this task was running became unreachable. This is only set on
+       * status updates for tasks running on agents that are unreachable
+       * (e.g., partitioned away from the master).
+       * </pre>
+       */
+      public Builder mergeUnreachableTime(org.apache.mesos.Protos.TimeInfo value) {
+        if (unreachableTimeBuilder_ == null) {
+          if (((bitField0_ & 0x00004000) == 0x00004000) &&
+              unreachableTime_ != org.apache.mesos.Protos.TimeInfo.getDefaultInstance()) {
+            unreachableTime_ =
+              org.apache.mesos.Protos.TimeInfo.newBuilder(unreachableTime_).mergeFrom(value).buildPartial();
+          } else {
+            unreachableTime_ = value;
+          }
+          onChanged();
+        } else {
+          unreachableTimeBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00004000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.TimeInfo unreachable_time = 14;</code>
+       *
+       * <pre>
+       * The time (according to the master's clock) when the agent where
+       * this task was running became unreachable. This is only set on
+       * status updates for tasks running on agents that are unreachable
+       * (e.g., partitioned away from the master).
+       * </pre>
+       */
+      public Builder clearUnreachableTime() {
+        if (unreachableTimeBuilder_ == null) {
+          unreachableTime_ = org.apache.mesos.Protos.TimeInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          unreachableTimeBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00004000);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.TimeInfo unreachable_time = 14;</code>
+       *
+       * <pre>
+       * The time (according to the master's clock) when the agent where
+       * this task was running became unreachable. This is only set on
+       * status updates for tasks running on agents that are unreachable
+       * (e.g., partitioned away from the master).
+       * </pre>
+       */
+      public org.apache.mesos.Protos.TimeInfo.Builder getUnreachableTimeBuilder() {
+        bitField0_ |= 0x00004000;
+        onChanged();
+        return getUnreachableTimeFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.TimeInfo unreachable_time = 14;</code>
+       *
+       * <pre>
+       * The time (according to the master's clock) when the agent where
+       * this task was running became unreachable. This is only set on
+       * status updates for tasks running on agents that are unreachable
+       * (e.g., partitioned away from the master).
+       * </pre>
+       */
+      public org.apache.mesos.Protos.TimeInfoOrBuilder getUnreachableTimeOrBuilder() {
+        if (unreachableTimeBuilder_ != null) {
+          return unreachableTimeBuilder_.getMessageOrBuilder();
+        } else {
+          return unreachableTime_;
+        }
+      }
+      /**
+       * <code>optional .mesos.TimeInfo unreachable_time = 14;</code>
+       *
+       * <pre>
+       * The time (according to the master's clock) when the agent where
+       * this task was running became unreachable. This is only set on
+       * status updates for tasks running on agents that are unreachable
+       * (e.g., partitioned away from the master).
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.TimeInfo, org.apache.mesos.Protos.TimeInfo.Builder, org.apache.mesos.Protos.TimeInfoOrBuilder> 
+          getUnreachableTimeFieldBuilder() {
+        if (unreachableTimeBuilder_ == null) {
+          unreachableTimeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.TimeInfo, org.apache.mesos.Protos.TimeInfo.Builder, org.apache.mesos.Protos.TimeInfoOrBuilder>(
+                  unreachableTime_,
+                  getParentForChildren(),
+                  isClean());
+          unreachableTime_ = null;
+        }
+        return unreachableTimeBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.TaskStatus)
+    }
+
+    static {
+      defaultInstance = new TaskStatus(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.TaskStatus)
+  }
+
+  public interface FiltersOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional double refuse_seconds = 1 [default = 5];
+    /**
+     * <code>optional double refuse_seconds = 1 [default = 5];</code>
+     *
+     * <pre>
+     * Time to consider unused resources refused. Note that all unused
+     * resources will be considered refused and use the default value
+     * (below) regardless of whether Filters was passed to
+     * SchedulerDriver::launchTasks. You MUST pass Filters with this
+     * field set to change this behavior (i.e., get another offer which
+     * includes unused resources sooner or later than the default).
+     * </pre>
+     */
+    boolean hasRefuseSeconds();
+    /**
+     * <code>optional double refuse_seconds = 1 [default = 5];</code>
+     *
+     * <pre>
+     * Time to consider unused resources refused. Note that all unused
+     * resources will be considered refused and use the default value
+     * (below) regardless of whether Filters was passed to
+     * SchedulerDriver::launchTasks. You MUST pass Filters with this
+     * field set to change this behavior (i.e., get another offer which
+     * includes unused resources sooner or later than the default).
+     * </pre>
+     */
+    double getRefuseSeconds();
+  }
+  /**
+   * Protobuf type {@code mesos.Filters}
+   *
+   * <pre>
+   **
+   * Describes possible filters that can be applied to unused resources
+   * (see SchedulerDriver::launchTasks) to influence the allocator.
+   * </pre>
+   */
+  public static final class Filters extends
+      com.google.protobuf.GeneratedMessage
+      implements FiltersOrBuilder {
+    // Use Filters.newBuilder() to construct.
+    private Filters(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Filters(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Filters defaultInstance;
+    public static Filters getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Filters getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Filters(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 9: {
+              bitField0_ |= 0x00000001;
+              refuseSeconds_ = input.readDouble();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_Filters_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_Filters_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.Filters.class, org.apache.mesos.Protos.Filters.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Filters> PARSER =
+        new com.google.protobuf.AbstractParser<Filters>() {
+      public Filters parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Filters(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Filters> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // optional double refuse_seconds = 1 [default = 5];
+    public static final int REFUSE_SECONDS_FIELD_NUMBER = 1;
+    private double refuseSeconds_;
+    /**
+     * <code>optional double refuse_seconds = 1 [default = 5];</code>
+     *
+     * <pre>
+     * Time to consider unused resources refused. Note that all unused
+     * resources will be considered refused and use the default value
+     * (below) regardless of whether Filters was passed to
+     * SchedulerDriver::launchTasks. You MUST pass Filters with this
+     * field set to change this behavior (i.e., get another offer which
+     * includes unused resources sooner or later than the default).
+     * </pre>
+     */
+    public boolean hasRefuseSeconds() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional double refuse_seconds = 1 [default = 5];</code>
+     *
+     * <pre>
+     * Time to consider unused resources refused. Note that all unused
+     * resources will be considered refused and use the default value
+     * (below) regardless of whether Filters was passed to
+     * SchedulerDriver::launchTasks. You MUST pass Filters with this
+     * field set to change this behavior (i.e., get another offer which
+     * includes unused resources sooner or later than the default).
+     * </pre>
+     */
+    public double getRefuseSeconds() {
+      return refuseSeconds_;
+    }
+
+    private void initFields() {
+      refuseSeconds_ = 5D;
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeDouble(1, refuseSeconds_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(1, refuseSeconds_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.Filters parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Filters parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Filters parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Filters parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Filters parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Filters parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Filters parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.Filters parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Filters parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Filters parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.Filters prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.Filters}
+     *
+     * <pre>
+     **
+     * Describes possible filters that can be applied to unused resources
+     * (see SchedulerDriver::launchTasks) to influence the allocator.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.FiltersOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_Filters_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_Filters_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.Filters.class, org.apache.mesos.Protos.Filters.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.Filters.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        refuseSeconds_ = 5D;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_Filters_descriptor;
+      }
+
+      public org.apache.mesos.Protos.Filters getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.Filters.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.Filters build() {
+        org.apache.mesos.Protos.Filters result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.Filters buildPartial() {
+        org.apache.mesos.Protos.Filters result = new org.apache.mesos.Protos.Filters(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.refuseSeconds_ = refuseSeconds_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.Filters) {
+          return mergeFrom((org.apache.mesos.Protos.Filters)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.Filters other) {
+        if (other == org.apache.mesos.Protos.Filters.getDefaultInstance()) return this;
+        if (other.hasRefuseSeconds()) {
+          setRefuseSeconds(other.getRefuseSeconds());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.Filters parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.Filters) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional double refuse_seconds = 1 [default = 5];
+      private double refuseSeconds_ = 5D;
+      /**
+       * <code>optional double refuse_seconds = 1 [default = 5];</code>
+       *
+       * <pre>
+       * Time to consider unused resources refused. Note that all unused
+       * resources will be considered refused and use the default value
+       * (below) regardless of whether Filters was passed to
+       * SchedulerDriver::launchTasks. You MUST pass Filters with this
+       * field set to change this behavior (i.e., get another offer which
+       * includes unused resources sooner or later than the default).
+       * </pre>
+       */
+      public boolean hasRefuseSeconds() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional double refuse_seconds = 1 [default = 5];</code>
+       *
+       * <pre>
+       * Time to consider unused resources refused. Note that all unused
+       * resources will be considered refused and use the default value
+       * (below) regardless of whether Filters was passed to
+       * SchedulerDriver::launchTasks. You MUST pass Filters with this
+       * field set to change this behavior (i.e., get another offer which
+       * includes unused resources sooner or later than the default).
+       * </pre>
+       */
+      public double getRefuseSeconds() {
+        return refuseSeconds_;
+      }
+      /**
+       * <code>optional double refuse_seconds = 1 [default = 5];</code>
+       *
+       * <pre>
+       * Time to consider unused resources refused. Note that all unused
+       * resources will be considered refused and use the default value
+       * (below) regardless of whether Filters was passed to
+       * SchedulerDriver::launchTasks. You MUST pass Filters with this
+       * field set to change this behavior (i.e., get another offer which
+       * includes unused resources sooner or later than the default).
+       * </pre>
+       */
+      public Builder setRefuseSeconds(double value) {
+        bitField0_ |= 0x00000001;
+        refuseSeconds_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double refuse_seconds = 1 [default = 5];</code>
+       *
+       * <pre>
+       * Time to consider unused resources refused. Note that all unused
+       * resources will be considered refused and use the default value
+       * (below) regardless of whether Filters was passed to
+       * SchedulerDriver::launchTasks. You MUST pass Filters with this
+       * field set to change this behavior (i.e., get another offer which
+       * includes unused resources sooner or later than the default).
+       * </pre>
+       */
+      public Builder clearRefuseSeconds() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        refuseSeconds_ = 5D;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.Filters)
+    }
+
+    static {
+      defaultInstance = new Filters(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.Filters)
+  }
+
+  public interface EnvironmentOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // repeated .mesos.Environment.Variable variables = 1;
+    /**
+     * <code>repeated .mesos.Environment.Variable variables = 1;</code>
+     */
+    java.util.List<org.apache.mesos.Protos.Environment.Variable> 
+        getVariablesList();
+    /**
+     * <code>repeated .mesos.Environment.Variable variables = 1;</code>
+     */
+    org.apache.mesos.Protos.Environment.Variable getVariables(int index);
+    /**
+     * <code>repeated .mesos.Environment.Variable variables = 1;</code>
+     */
+    int getVariablesCount();
+    /**
+     * <code>repeated .mesos.Environment.Variable variables = 1;</code>
+     */
+    java.util.List<? extends org.apache.mesos.Protos.Environment.VariableOrBuilder> 
+        getVariablesOrBuilderList();
+    /**
+     * <code>repeated .mesos.Environment.Variable variables = 1;</code>
+     */
+    org.apache.mesos.Protos.Environment.VariableOrBuilder getVariablesOrBuilder(
+        int index);
+  }
+  /**
+   * Protobuf type {@code mesos.Environment}
+   *
+   * <pre>
+   **
+   * Describes a collection of environment variables. This is used with
+   * CommandInfo in order to set environment variables before running a
+   * command. The contents of each variable may be specified as a string
+   * or a Secret; only one of `value` and `secret` must be set.
+   * </pre>
+   */
+  public static final class Environment extends
+      com.google.protobuf.GeneratedMessage
+      implements EnvironmentOrBuilder {
+    // Use Environment.newBuilder() to construct.
+    private Environment(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Environment(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Environment defaultInstance;
+    public static Environment getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Environment getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Environment(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                variables_ = new java.util.ArrayList<org.apache.mesos.Protos.Environment.Variable>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              variables_.add(input.readMessage(org.apache.mesos.Protos.Environment.Variable.PARSER, extensionRegistry));
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+          variables_ = java.util.Collections.unmodifiableList(variables_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_Environment_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_Environment_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.Environment.class, org.apache.mesos.Protos.Environment.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Environment> PARSER =
+        new com.google.protobuf.AbstractParser<Environment>() {
+      public Environment parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Environment(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Environment> getParserForType() {
+      return PARSER;
+    }
+
+    public interface VariableOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required string name = 1;
+      /**
+       * <code>required string name = 1;</code>
+       */
+      boolean hasName();
+      /**
+       * <code>required string name = 1;</code>
+       */
+      java.lang.String getName();
+      /**
+       * <code>required string name = 1;</code>
+       */
+      com.google.protobuf.ByteString
+          getNameBytes();
+
+      // optional .mesos.Environment.Variable.Type type = 3 [default = VALUE];
+      /**
+       * <code>optional .mesos.Environment.Variable.Type type = 3 [default = VALUE];</code>
+       *
+       * <pre>
+       * In Mesos 1.2, the `Environment.variables.value` message was made
+       * optional. The default type for `Environment.variables.type` is now VALUE,
+       * which requires `value` to be set, maintaining backward compatibility.
+       *
+       * TODO(greggomann): The default can be removed in Mesos 2.1 (MESOS-7134).
+       * </pre>
+       */
+      boolean hasType();
+      /**
+       * <code>optional .mesos.Environment.Variable.Type type = 3 [default = VALUE];</code>
+       *
+       * <pre>
+       * In Mesos 1.2, the `Environment.variables.value` message was made
+       * optional. The default type for `Environment.variables.type` is now VALUE,
+       * which requires `value` to be set, maintaining backward compatibility.
+       *
+       * TODO(greggomann): The default can be removed in Mesos 2.1 (MESOS-7134).
+       * </pre>
+       */
+      org.apache.mesos.Protos.Environment.Variable.Type getType();
+
+      // optional string value = 2;
+      /**
+       * <code>optional string value = 2;</code>
+       *
+       * <pre>
+       * Only one of `value` and `secret` must be set.
+       * </pre>
+       */
+      boolean hasValue();
+      /**
+       * <code>optional string value = 2;</code>
+       *
+       * <pre>
+       * Only one of `value` and `secret` must be set.
+       * </pre>
+       */
+      java.lang.String getValue();
+      /**
+       * <code>optional string value = 2;</code>
+       *
+       * <pre>
+       * Only one of `value` and `secret` must be set.
+       * </pre>
+       */
+      com.google.protobuf.ByteString
+          getValueBytes();
+
+      // optional .mesos.Secret secret = 4;
+      /**
+       * <code>optional .mesos.Secret secret = 4;</code>
+       */
+      boolean hasSecret();
+      /**
+       * <code>optional .mesos.Secret secret = 4;</code>
+       */
+      org.apache.mesos.Protos.Secret getSecret();
+      /**
+       * <code>optional .mesos.Secret secret = 4;</code>
+       */
+      org.apache.mesos.Protos.SecretOrBuilder getSecretOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.Environment.Variable}
+     */
+    public static final class Variable extends
+        com.google.protobuf.GeneratedMessage
+        implements VariableOrBuilder {
+      // Use Variable.newBuilder() to construct.
+      private Variable(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Variable(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Variable defaultInstance;
+      public static Variable getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Variable getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Variable(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                bitField0_ |= 0x00000001;
+                name_ = input.readBytes();
+                break;
+              }
+              case 18: {
+                bitField0_ |= 0x00000004;
+                value_ = input.readBytes();
+                break;
+              }
+              case 24: {
+                int rawValue = input.readEnum();
+                org.apache.mesos.Protos.Environment.Variable.Type value = org.apache.mesos.Protos.Environment.Variable.Type.valueOf(rawValue);
+                if (value == null) {
+                  unknownFields.mergeVarintField(3, rawValue);
+                } else {
+                  bitField0_ |= 0x00000002;
+                  type_ = value;
+                }
+                break;
+              }
+              case 34: {
+                org.apache.mesos.Protos.Secret.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                  subBuilder = secret_.toBuilder();
+                }
+                secret_ = input.readMessage(org.apache.mesos.Protos.Secret.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(secret_);
+                  secret_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000008;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_Environment_Variable_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_Environment_Variable_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.Environment.Variable.class, org.apache.mesos.Protos.Environment.Variable.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Variable> PARSER =
+          new com.google.protobuf.AbstractParser<Variable>() {
+        public Variable parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Variable(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Variable> getParserForType() {
+        return PARSER;
+      }
+
+      /**
+       * Protobuf enum {@code mesos.Environment.Variable.Type}
+       */
+      public enum Type
+          implements com.google.protobuf.ProtocolMessageEnum {
+        /**
+         * <code>UNKNOWN = 0;</code>
+         */
+        UNKNOWN(0, 0),
+        /**
+         * <code>VALUE = 1;</code>
+         */
+        VALUE(1, 1),
+        /**
+         * <code>SECRET = 2;</code>
+         */
+        SECRET(2, 2),
+        ;
+
+        /**
+         * <code>UNKNOWN = 0;</code>
+         */
+        public static final int UNKNOWN_VALUE = 0;
+        /**
+         * <code>VALUE = 1;</code>
+         */
+        public static final int VALUE_VALUE = 1;
+        /**
+         * <code>SECRET = 2;</code>
+         */
+        public static final int SECRET_VALUE = 2;
+
+
+        public final int getNumber() { return value; }
+
+        public static Type valueOf(int value) {
+          switch (value) {
+            case 0: return UNKNOWN;
+            case 1: return VALUE;
+            case 2: return SECRET;
+            default: return null;
+          }
+        }
+
+        public static com.google.protobuf.Internal.EnumLiteMap<Type>
+            internalGetValueMap() {
+          return internalValueMap;
+        }
+        private static com.google.protobuf.Internal.EnumLiteMap<Type>
+            internalValueMap =
+              new com.google.protobuf.Internal.EnumLiteMap<Type>() {
+                public Type findValueByNumber(int number) {
+                  return Type.valueOf(number);
+                }
+              };
+
+        public final com.google.protobuf.Descriptors.EnumValueDescriptor
+            getValueDescriptor() {
+          return getDescriptor().getValues().get(index);
+        }
+        public final com.google.protobuf.Descriptors.EnumDescriptor
+            getDescriptorForType() {
+          return getDescriptor();
+        }
+        public static final com.google.protobuf.Descriptors.EnumDescriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.Environment.Variable.getDescriptor().getEnumTypes().get(0);
+        }
+
+        private static final Type[] VALUES = values();
+
+        public static Type valueOf(
+            com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+          if (desc.getType() != getDescriptor()) {
+            throw new java.lang.IllegalArgumentException(
+              "EnumValueDescriptor is not for this type.");
+          }
+          return VALUES[desc.getIndex()];
+        }
+
+        private final int index;
+        private final int value;
+
+        private Type(int index, int value) {
+          this.index = index;
+          this.value = value;
+        }
+
+        // @@protoc_insertion_point(enum_scope:mesos.Environment.Variable.Type)
+      }
+
+      private int bitField0_;
+      // required string name = 1;
+      public static final int NAME_FIELD_NUMBER = 1;
+      private java.lang.Object name_;
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public boolean hasName() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public java.lang.String getName() {
+        java.lang.Object ref = name_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            name_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        java.lang.Object ref = name_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          name_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      // optional .mesos.Environment.Variable.Type type = 3 [default = VALUE];
+      public static final int TYPE_FIELD_NUMBER = 3;
+      private org.apache.mesos.Protos.Environment.Variable.Type type_;
+      /**
+       * <code>optional .mesos.Environment.Variable.Type type = 3 [default = VALUE];</code>
+       *
+       * <pre>
+       * In Mesos 1.2, the `Environment.variables.value` message was made
+       * optional. The default type for `Environment.variables.type` is now VALUE,
+       * which requires `value` to be set, maintaining backward compatibility.
+       *
+       * TODO(greggomann): The default can be removed in Mesos 2.1 (MESOS-7134).
+       * </pre>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.Environment.Variable.Type type = 3 [default = VALUE];</code>
+       *
+       * <pre>
+       * In Mesos 1.2, the `Environment.variables.value` message was made
+       * optional. The default type for `Environment.variables.type` is now VALUE,
+       * which requires `value` to be set, maintaining backward compatibility.
+       *
+       * TODO(greggomann): The default can be removed in Mesos 2.1 (MESOS-7134).
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Environment.Variable.Type getType() {
+        return type_;
+      }
+
+      // optional string value = 2;
+      public static final int VALUE_FIELD_NUMBER = 2;
+      private java.lang.Object value_;
+      /**
+       * <code>optional string value = 2;</code>
+       *
+       * <pre>
+       * Only one of `value` and `secret` must be set.
+       * </pre>
+       */
+      public boolean hasValue() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional string value = 2;</code>
+       *
+       * <pre>
+       * Only one of `value` and `secret` must be set.
+       * </pre>
+       */
+      public java.lang.String getValue() {
+        java.lang.Object ref = value_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            value_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>optional string value = 2;</code>
+       *
+       * <pre>
+       * Only one of `value` and `secret` must be set.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getValueBytes() {
+        java.lang.Object ref = value_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          value_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      // optional .mesos.Secret secret = 4;
+      public static final int SECRET_FIELD_NUMBER = 4;
+      private org.apache.mesos.Protos.Secret secret_;
+      /**
+       * <code>optional .mesos.Secret secret = 4;</code>
+       */
+      public boolean hasSecret() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.Secret secret = 4;</code>
+       */
+      public org.apache.mesos.Protos.Secret getSecret() {
+        return secret_;
+      }
+      /**
+       * <code>optional .mesos.Secret secret = 4;</code>
+       */
+      public org.apache.mesos.Protos.SecretOrBuilder getSecretOrBuilder() {
+        return secret_;
+      }
+
+      private void initFields() {
+        name_ = "";
+        type_ = org.apache.mesos.Protos.Environment.Variable.Type.VALUE;
+        value_ = "";
+        secret_ = org.apache.mesos.Protos.Secret.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasName()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (hasSecret()) {
+          if (!getSecret().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeBytes(1, getNameBytes());
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeBytes(2, getValueBytes());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeEnum(3, type_.getNumber());
+        }
+        if (((bitField0_ & 0x00000008) == 0x00000008)) {
+          output.writeMessage(4, secret_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(1, getNameBytes());
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(2, getValueBytes());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeEnumSize(3, type_.getNumber());
+        }
+        if (((bitField0_ & 0x00000008) == 0x00000008)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(4, secret_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.Protos.Environment.Variable parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.Environment.Variable parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Environment.Variable parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.Environment.Variable parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Environment.Variable parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.Environment.Variable parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Environment.Variable parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.Protos.Environment.Variable parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Environment.Variable parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.Environment.Variable parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.Protos.Environment.Variable prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.Environment.Variable}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.Protos.Environment.VariableOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_Environment_Variable_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_Environment_Variable_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.Environment.Variable.class, org.apache.mesos.Protos.Environment.Variable.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.Protos.Environment.Variable.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getSecretFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          name_ = "";
+          bitField0_ = (bitField0_ & ~0x00000001);
+          type_ = org.apache.mesos.Protos.Environment.Variable.Type.VALUE;
+          bitField0_ = (bitField0_ & ~0x00000002);
+          value_ = "";
+          bitField0_ = (bitField0_ & ~0x00000004);
+          if (secretBuilder_ == null) {
+            secret_ = org.apache.mesos.Protos.Secret.getDefaultInstance();
+          } else {
+            secretBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000008);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.Protos.internal_static_mesos_Environment_Variable_descriptor;
+        }
+
+        public org.apache.mesos.Protos.Environment.Variable getDefaultInstanceForType() {
+          return org.apache.mesos.Protos.Environment.Variable.getDefaultInstance();
+        }
+
+        public org.apache.mesos.Protos.Environment.Variable build() {
+          org.apache.mesos.Protos.Environment.Variable result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.Protos.Environment.Variable buildPartial() {
+          org.apache.mesos.Protos.Environment.Variable result = new org.apache.mesos.Protos.Environment.Variable(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.name_ = name_;
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          result.type_ = type_;
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          result.value_ = value_;
+          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+            to_bitField0_ |= 0x00000008;
+          }
+          if (secretBuilder_ == null) {
+            result.secret_ = secret_;
+          } else {
+            result.secret_ = secretBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.Protos.Environment.Variable) {
+            return mergeFrom((org.apache.mesos.Protos.Environment.Variable)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.Protos.Environment.Variable other) {
+          if (other == org.apache.mesos.Protos.Environment.Variable.getDefaultInstance()) return this;
+          if (other.hasName()) {
+            bitField0_ |= 0x00000001;
+            name_ = other.name_;
+            onChanged();
+          }
+          if (other.hasType()) {
+            setType(other.getType());
+          }
+          if (other.hasValue()) {
+            bitField0_ |= 0x00000004;
+            value_ = other.value_;
+            onChanged();
+          }
+          if (other.hasSecret()) {
+            mergeSecret(other.getSecret());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasName()) {
+            
+            return false;
+          }
+          if (hasSecret()) {
+            if (!getSecret().isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.Protos.Environment.Variable parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.Protos.Environment.Variable) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required string name = 1;
+        private java.lang.Object name_ = "";
+        /**
+         * <code>required string name = 1;</code>
+         */
+        public boolean hasName() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required string name = 1;</code>
+         */
+        public java.lang.String getName() {
+          java.lang.Object ref = name_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            name_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>required string name = 1;</code>
+         */
+        public com.google.protobuf.ByteString
+            getNameBytes() {
+          java.lang.Object ref = name_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            name_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>required string name = 1;</code>
+         */
+        public Builder setName(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          name_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required string name = 1;</code>
+         */
+        public Builder clearName() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          name_ = getDefaultInstance().getName();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required string name = 1;</code>
+         */
+        public Builder setNameBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          name_ = value;
+          onChanged();
+          return this;
+        }
+
+        // optional .mesos.Environment.Variable.Type type = 3 [default = VALUE];
+        private org.apache.mesos.Protos.Environment.Variable.Type type_ = org.apache.mesos.Protos.Environment.Variable.Type.VALUE;
+        /**
+         * <code>optional .mesos.Environment.Variable.Type type = 3 [default = VALUE];</code>
+         *
+         * <pre>
+         * In Mesos 1.2, the `Environment.variables.value` message was made
+         * optional. The default type for `Environment.variables.type` is now VALUE,
+         * which requires `value` to be set, maintaining backward compatibility.
+         *
+         * TODO(greggomann): The default can be removed in Mesos 2.1 (MESOS-7134).
+         * </pre>
+         */
+        public boolean hasType() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional .mesos.Environment.Variable.Type type = 3 [default = VALUE];</code>
+         *
+         * <pre>
+         * In Mesos 1.2, the `Environment.variables.value` message was made
+         * optional. The default type for `Environment.variables.type` is now VALUE,
+         * which requires `value` to be set, maintaining backward compatibility.
+         *
+         * TODO(greggomann): The default can be removed in Mesos 2.1 (MESOS-7134).
+         * </pre>
+         */
+        public org.apache.mesos.Protos.Environment.Variable.Type getType() {
+          return type_;
+        }
+        /**
+         * <code>optional .mesos.Environment.Variable.Type type = 3 [default = VALUE];</code>
+         *
+         * <pre>
+         * In Mesos 1.2, the `Environment.variables.value` message was made
+         * optional. The default type for `Environment.variables.type` is now VALUE,
+         * which requires `value` to be set, maintaining backward compatibility.
+         *
+         * TODO(greggomann): The default can be removed in Mesos 2.1 (MESOS-7134).
+         * </pre>
+         */
+        public Builder setType(org.apache.mesos.Protos.Environment.Variable.Type value) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          bitField0_ |= 0x00000002;
+          type_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Environment.Variable.Type type = 3 [default = VALUE];</code>
+         *
+         * <pre>
+         * In Mesos 1.2, the `Environment.variables.value` message was made
+         * optional. The default type for `Environment.variables.type` is now VALUE,
+         * which requires `value` to be set, maintaining backward compatibility.
+         *
+         * TODO(greggomann): The default can be removed in Mesos 2.1 (MESOS-7134).
+         * </pre>
+         */
+        public Builder clearType() {
+          bitField0_ = (bitField0_ & ~0x00000002);
+          type_ = org.apache.mesos.Protos.Environment.Variable.Type.VALUE;
+          onChanged();
+          return this;
+        }
+
+        // optional string value = 2;
+        private java.lang.Object value_ = "";
+        /**
+         * <code>optional string value = 2;</code>
+         *
+         * <pre>
+         * Only one of `value` and `secret` must be set.
+         * </pre>
+         */
+        public boolean hasValue() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional string value = 2;</code>
+         *
+         * <pre>
+         * Only one of `value` and `secret` must be set.
+         * </pre>
+         */
+        public java.lang.String getValue() {
+          java.lang.Object ref = value_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            value_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>optional string value = 2;</code>
+         *
+         * <pre>
+         * Only one of `value` and `secret` must be set.
+         * </pre>
+         */
+        public com.google.protobuf.ByteString
+            getValueBytes() {
+          java.lang.Object ref = value_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            value_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>optional string value = 2;</code>
+         *
+         * <pre>
+         * Only one of `value` and `secret` must be set.
+         * </pre>
+         */
+        public Builder setValue(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+          value_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string value = 2;</code>
+         *
+         * <pre>
+         * Only one of `value` and `secret` must be set.
+         * </pre>
+         */
+        public Builder clearValue() {
+          bitField0_ = (bitField0_ & ~0x00000004);
+          value_ = getDefaultInstance().getValue();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string value = 2;</code>
+         *
+         * <pre>
+         * Only one of `value` and `secret` must be set.
+         * </pre>
+         */
+        public Builder setValueBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+          value_ = value;
+          onChanged();
+          return this;
+        }
+
+        // optional .mesos.Secret secret = 4;
+        private org.apache.mesos.Protos.Secret secret_ = org.apache.mesos.Protos.Secret.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Secret, org.apache.mesos.Protos.Secret.Builder, org.apache.mesos.Protos.SecretOrBuilder> secretBuilder_;
+        /**
+         * <code>optional .mesos.Secret secret = 4;</code>
+         */
+        public boolean hasSecret() {
+          return ((bitField0_ & 0x00000008) == 0x00000008);
+        }
+        /**
+         * <code>optional .mesos.Secret secret = 4;</code>
+         */
+        public org.apache.mesos.Protos.Secret getSecret() {
+          if (secretBuilder_ == null) {
+            return secret_;
+          } else {
+            return secretBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.Secret secret = 4;</code>
+         */
+        public Builder setSecret(org.apache.mesos.Protos.Secret value) {
+          if (secretBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            secret_ = value;
+            onChanged();
+          } else {
+            secretBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000008;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Secret secret = 4;</code>
+         */
+        public Builder setSecret(
+            org.apache.mesos.Protos.Secret.Builder builderForValue) {
+          if (secretBuilder_ == null) {
+            secret_ = builderForValue.build();
+            onChanged();
+          } else {
+            secretBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000008;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Secret secret = 4;</code>
+         */
+        public Builder mergeSecret(org.apache.mesos.Protos.Secret value) {
+          if (secretBuilder_ == null) {
+            if (((bitField0_ & 0x00000008) == 0x00000008) &&
+                secret_ != org.apache.mesos.Protos.Secret.getDefaultInstance()) {
+              secret_ =
+                org.apache.mesos.Protos.Secret.newBuilder(secret_).mergeFrom(value).buildPartial();
+            } else {
+              secret_ = value;
+            }
+            onChanged();
+          } else {
+            secretBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000008;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Secret secret = 4;</code>
+         */
+        public Builder clearSecret() {
+          if (secretBuilder_ == null) {
+            secret_ = org.apache.mesos.Protos.Secret.getDefaultInstance();
+            onChanged();
+          } else {
+            secretBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000008);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Secret secret = 4;</code>
+         */
+        public org.apache.mesos.Protos.Secret.Builder getSecretBuilder() {
+          bitField0_ |= 0x00000008;
+          onChanged();
+          return getSecretFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.Secret secret = 4;</code>
+         */
+        public org.apache.mesos.Protos.SecretOrBuilder getSecretOrBuilder() {
+          if (secretBuilder_ != null) {
+            return secretBuilder_.getMessageOrBuilder();
+          } else {
+            return secret_;
+          }
+        }
+        /**
+         * <code>optional .mesos.Secret secret = 4;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Secret, org.apache.mesos.Protos.Secret.Builder, org.apache.mesos.Protos.SecretOrBuilder> 
+            getSecretFieldBuilder() {
+          if (secretBuilder_ == null) {
+            secretBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.Secret, org.apache.mesos.Protos.Secret.Builder, org.apache.mesos.Protos.SecretOrBuilder>(
+                    secret_,
+                    getParentForChildren(),
+                    isClean());
+            secret_ = null;
+          }
+          return secretBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.Environment.Variable)
+      }
+
+      static {
+        defaultInstance = new Variable(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.Environment.Variable)
+    }
+
+    // repeated .mesos.Environment.Variable variables = 1;
+    public static final int VARIABLES_FIELD_NUMBER = 1;
+    private java.util.List<org.apache.mesos.Protos.Environment.Variable> variables_;
+    /**
+     * <code>repeated .mesos.Environment.Variable variables = 1;</code>
+     */
+    public java.util.List<org.apache.mesos.Protos.Environment.Variable> getVariablesList() {
+      return variables_;
+    }
+    /**
+     * <code>repeated .mesos.Environment.Variable variables = 1;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.Protos.Environment.VariableOrBuilder> 
+        getVariablesOrBuilderList() {
+      return variables_;
+    }
+    /**
+     * <code>repeated .mesos.Environment.Variable variables = 1;</code>
+     */
+    public int getVariablesCount() {
+      return variables_.size();
+    }
+    /**
+     * <code>repeated .mesos.Environment.Variable variables = 1;</code>
+     */
+    public org.apache.mesos.Protos.Environment.Variable getVariables(int index) {
+      return variables_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.Environment.Variable variables = 1;</code>
+     */
+    public org.apache.mesos.Protos.Environment.VariableOrBuilder getVariablesOrBuilder(
+        int index) {
+      return variables_.get(index);
+    }
+
+    private void initFields() {
+      variables_ = java.util.Collections.emptyList();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      for (int i = 0; i < getVariablesCount(); i++) {
+        if (!getVariables(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      for (int i = 0; i < variables_.size(); i++) {
+        output.writeMessage(1, variables_.get(i));
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      for (int i = 0; i < variables_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, variables_.get(i));
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.Environment parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Environment parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Environment parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Environment parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Environment parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Environment parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Environment parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.Environment parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Environment parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Environment parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.Environment prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.Environment}
+     *
+     * <pre>
+     **
+     * Describes a collection of environment variables. This is used with
+     * CommandInfo in order to set environment variables before running a
+     * command. The contents of each variable may be specified as a string
+     * or a Secret; only one of `value` and `secret` must be set.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.EnvironmentOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_Environment_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_Environment_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.Environment.class, org.apache.mesos.Protos.Environment.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.Environment.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getVariablesFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (variablesBuilder_ == null) {
+          variables_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+        } else {
+          variablesBuilder_.clear();
+        }
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_Environment_descriptor;
+      }
+
+      public org.apache.mesos.Protos.Environment getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.Environment.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.Environment build() {
+        org.apache.mesos.Protos.Environment result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.Environment buildPartial() {
+        org.apache.mesos.Protos.Environment result = new org.apache.mesos.Protos.Environment(this);
+        int from_bitField0_ = bitField0_;
+        if (variablesBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            variables_ = java.util.Collections.unmodifiableList(variables_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.variables_ = variables_;
+        } else {
+          result.variables_ = variablesBuilder_.build();
+        }
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.Environment) {
+          return mergeFrom((org.apache.mesos.Protos.Environment)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.Environment other) {
+        if (other == org.apache.mesos.Protos.Environment.getDefaultInstance()) return this;
+        if (variablesBuilder_ == null) {
+          if (!other.variables_.isEmpty()) {
+            if (variables_.isEmpty()) {
+              variables_ = other.variables_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureVariablesIsMutable();
+              variables_.addAll(other.variables_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.variables_.isEmpty()) {
+            if (variablesBuilder_.isEmpty()) {
+              variablesBuilder_.dispose();
+              variablesBuilder_ = null;
+              variables_ = other.variables_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              variablesBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getVariablesFieldBuilder() : null;
+            } else {
+              variablesBuilder_.addAllMessages(other.variables_);
+            }
+          }
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        for (int i = 0; i < getVariablesCount(); i++) {
+          if (!getVariables(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.Environment parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.Environment) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // repeated .mesos.Environment.Variable variables = 1;
+      private java.util.List<org.apache.mesos.Protos.Environment.Variable> variables_ =
+        java.util.Collections.emptyList();
+      private void ensureVariablesIsMutable() {
+        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+          variables_ = new java.util.ArrayList<org.apache.mesos.Protos.Environment.Variable>(variables_);
+          bitField0_ |= 0x00000001;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.Environment.Variable, org.apache.mesos.Protos.Environment.Variable.Builder, org.apache.mesos.Protos.Environment.VariableOrBuilder> variablesBuilder_;
+
+      /**
+       * <code>repeated .mesos.Environment.Variable variables = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.Environment.Variable> getVariablesList() {
+        if (variablesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(variables_);
+        } else {
+          return variablesBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.Environment.Variable variables = 1;</code>
+       */
+      public int getVariablesCount() {
+        if (variablesBuilder_ == null) {
+          return variables_.size();
+        } else {
+          return variablesBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.Environment.Variable variables = 1;</code>
+       */
+      public org.apache.mesos.Protos.Environment.Variable getVariables(int index) {
+        if (variablesBuilder_ == null) {
+          return variables_.get(index);
+        } else {
+          return variablesBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Environment.Variable variables = 1;</code>
+       */
+      public Builder setVariables(
+          int index, org.apache.mesos.Protos.Environment.Variable value) {
+        if (variablesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureVariablesIsMutable();
+          variables_.set(index, value);
+          onChanged();
+        } else {
+          variablesBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Environment.Variable variables = 1;</code>
+       */
+      public Builder setVariables(
+          int index, org.apache.mesos.Protos.Environment.Variable.Builder builderForValue) {
+        if (variablesBuilder_ == null) {
+          ensureVariablesIsMutable();
+          variables_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          variablesBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Environment.Variable variables = 1;</code>
+       */
+      public Builder addVariables(org.apache.mesos.Protos.Environment.Variable value) {
+        if (variablesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureVariablesIsMutable();
+          variables_.add(value);
+          onChanged();
+        } else {
+          variablesBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Environment.Variable variables = 1;</code>
+       */
+      public Builder addVariables(
+          int index, org.apache.mesos.Protos.Environment.Variable value) {
+        if (variablesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureVariablesIsMutable();
+          variables_.add(index, value);
+          onChanged();
+        } else {
+          variablesBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Environment.Variable variables = 1;</code>
+       */
+      public Builder addVariables(
+          org.apache.mesos.Protos.Environment.Variable.Builder builderForValue) {
+        if (variablesBuilder_ == null) {
+          ensureVariablesIsMutable();
+          variables_.add(builderForValue.build());
+          onChanged();
+        } else {
+          variablesBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Environment.Variable variables = 1;</code>
+       */
+      public Builder addVariables(
+          int index, org.apache.mesos.Protos.Environment.Variable.Builder builderForValue) {
+        if (variablesBuilder_ == null) {
+          ensureVariablesIsMutable();
+          variables_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          variablesBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Environment.Variable variables = 1;</code>
+       */
+      public Builder addAllVariables(
+          java.lang.Iterable<? extends org.apache.mesos.Protos.Environment.Variable> values) {
+        if (variablesBuilder_ == null) {
+          ensureVariablesIsMutable();
+          super.addAll(values, variables_);
+          onChanged();
+        } else {
+          variablesBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Environment.Variable variables = 1;</code>
+       */
+      public Builder clearVariables() {
+        if (variablesBuilder_ == null) {
+          variables_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+        } else {
+          variablesBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Environment.Variable variables = 1;</code>
+       */
+      public Builder removeVariables(int index) {
+        if (variablesBuilder_ == null) {
+          ensureVariablesIsMutable();
+          variables_.remove(index);
+          onChanged();
+        } else {
+          variablesBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Environment.Variable variables = 1;</code>
+       */
+      public org.apache.mesos.Protos.Environment.Variable.Builder getVariablesBuilder(
+          int index) {
+        return getVariablesFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.Environment.Variable variables = 1;</code>
+       */
+      public org.apache.mesos.Protos.Environment.VariableOrBuilder getVariablesOrBuilder(
+          int index) {
+        if (variablesBuilder_ == null) {
+          return variables_.get(index);  } else {
+          return variablesBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Environment.Variable variables = 1;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.Environment.VariableOrBuilder> 
+           getVariablesOrBuilderList() {
+        if (variablesBuilder_ != null) {
+          return variablesBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(variables_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Environment.Variable variables = 1;</code>
+       */
+      public org.apache.mesos.Protos.Environment.Variable.Builder addVariablesBuilder() {
+        return getVariablesFieldBuilder().addBuilder(
+            org.apache.mesos.Protos.Environment.Variable.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.Environment.Variable variables = 1;</code>
+       */
+      public org.apache.mesos.Protos.Environment.Variable.Builder addVariablesBuilder(
+          int index) {
+        return getVariablesFieldBuilder().addBuilder(
+            index, org.apache.mesos.Protos.Environment.Variable.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.Environment.Variable variables = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.Environment.Variable.Builder> 
+           getVariablesBuilderList() {
+        return getVariablesFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.Environment.Variable, org.apache.mesos.Protos.Environment.Variable.Builder, org.apache.mesos.Protos.Environment.VariableOrBuilder> 
+          getVariablesFieldBuilder() {
+        if (variablesBuilder_ == null) {
+          variablesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.Environment.Variable, org.apache.mesos.Protos.Environment.Variable.Builder, org.apache.mesos.Protos.Environment.VariableOrBuilder>(
+                  variables_,
+                  ((bitField0_ & 0x00000001) == 0x00000001),
+                  getParentForChildren(),
+                  isClean());
+          variables_ = null;
+        }
+        return variablesBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.Environment)
+    }
+
+    static {
+      defaultInstance = new Environment(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.Environment)
+  }
+
+  public interface ParameterOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string key = 1;
+    /**
+     * <code>required string key = 1;</code>
+     */
+    boolean hasKey();
+    /**
+     * <code>required string key = 1;</code>
+     */
+    java.lang.String getKey();
+    /**
+     * <code>required string key = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getKeyBytes();
+
+    // required string value = 2;
+    /**
+     * <code>required string value = 2;</code>
+     */
+    boolean hasValue();
+    /**
+     * <code>required string value = 2;</code>
+     */
+    java.lang.String getValue();
+    /**
+     * <code>required string value = 2;</code>
+     */
+    com.google.protobuf.ByteString
+        getValueBytes();
+  }
+  /**
+   * Protobuf type {@code mesos.Parameter}
+   *
+   * <pre>
+   **
+   * A generic (key, value) pair used in various places for parameters.
+   * </pre>
+   */
+  public static final class Parameter extends
+      com.google.protobuf.GeneratedMessage
+      implements ParameterOrBuilder {
+    // Use Parameter.newBuilder() to construct.
+    private Parameter(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Parameter(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Parameter defaultInstance;
+    public static Parameter getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Parameter getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Parameter(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              key_ = input.readBytes();
+              break;
+            }
+            case 18: {
+              bitField0_ |= 0x00000002;
+              value_ = input.readBytes();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_Parameter_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_Parameter_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.Parameter.class, org.apache.mesos.Protos.Parameter.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Parameter> PARSER =
+        new com.google.protobuf.AbstractParser<Parameter>() {
+      public Parameter parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Parameter(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Parameter> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string key = 1;
+    public static final int KEY_FIELD_NUMBER = 1;
+    private java.lang.Object key_;
+    /**
+     * <code>required string key = 1;</code>
+     */
+    public boolean hasKey() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string key = 1;</code>
+     */
+    public java.lang.String getKey() {
+      java.lang.Object ref = key_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          key_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string key = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getKeyBytes() {
+      java.lang.Object ref = key_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        key_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // required string value = 2;
+    public static final int VALUE_FIELD_NUMBER = 2;
+    private java.lang.Object value_;
+    /**
+     * <code>required string value = 2;</code>
+     */
+    public boolean hasValue() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>required string value = 2;</code>
+     */
+    public java.lang.String getValue() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          value_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string value = 2;</code>
+     */
+    public com.google.protobuf.ByteString
+        getValueBytes() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        value_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      key_ = "";
+      value_ = "";
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasKey()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasValue()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getKeyBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(2, getValueBytes());
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getKeyBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(2, getValueBytes());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.Parameter parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Parameter parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Parameter parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Parameter parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Parameter parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Parameter parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Parameter parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.Parameter parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Parameter parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Parameter parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.Parameter prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.Parameter}
+     *
+     * <pre>
+     **
+     * A generic (key, value) pair used in various places for parameters.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.ParameterOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_Parameter_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_Parameter_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.Parameter.class, org.apache.mesos.Protos.Parameter.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.Parameter.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        key_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        value_ = "";
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_Parameter_descriptor;
+      }
+
+      public org.apache.mesos.Protos.Parameter getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.Parameter.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.Parameter build() {
+        org.apache.mesos.Protos.Parameter result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.Parameter buildPartial() {
+        org.apache.mesos.Protos.Parameter result = new org.apache.mesos.Protos.Parameter(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.key_ = key_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.value_ = value_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.Parameter) {
+          return mergeFrom((org.apache.mesos.Protos.Parameter)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.Parameter other) {
+        if (other == org.apache.mesos.Protos.Parameter.getDefaultInstance()) return this;
+        if (other.hasKey()) {
+          bitField0_ |= 0x00000001;
+          key_ = other.key_;
+          onChanged();
+        }
+        if (other.hasValue()) {
+          bitField0_ |= 0x00000002;
+          value_ = other.value_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasKey()) {
+          
+          return false;
+        }
+        if (!hasValue()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.Parameter parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.Parameter) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string key = 1;
+      private java.lang.Object key_ = "";
+      /**
+       * <code>required string key = 1;</code>
+       */
+      public boolean hasKey() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string key = 1;</code>
+       */
+      public java.lang.String getKey() {
+        java.lang.Object ref = key_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          key_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string key = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getKeyBytes() {
+        java.lang.Object ref = key_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          key_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string key = 1;</code>
+       */
+      public Builder setKey(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        key_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string key = 1;</code>
+       */
+      public Builder clearKey() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        key_ = getDefaultInstance().getKey();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string key = 1;</code>
+       */
+      public Builder setKeyBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        key_ = value;
+        onChanged();
+        return this;
+      }
+
+      // required string value = 2;
+      private java.lang.Object value_ = "";
+      /**
+       * <code>required string value = 2;</code>
+       */
+      public boolean hasValue() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required string value = 2;</code>
+       */
+      public java.lang.String getValue() {
+        java.lang.Object ref = value_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          value_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string value = 2;</code>
+       */
+      public com.google.protobuf.ByteString
+          getValueBytes() {
+        java.lang.Object ref = value_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          value_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string value = 2;</code>
+       */
+      public Builder setValue(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string value = 2;</code>
+       */
+      public Builder clearValue() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        value_ = getDefaultInstance().getValue();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string value = 2;</code>
+       */
+      public Builder setValueBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.Parameter)
+    }
+
+    static {
+      defaultInstance = new Parameter(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.Parameter)
+  }
+
+  public interface ParametersOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // repeated .mesos.Parameter parameter = 1;
+    /**
+     * <code>repeated .mesos.Parameter parameter = 1;</code>
+     */
+    java.util.List<org.apache.mesos.Protos.Parameter> 
+        getParameterList();
+    /**
+     * <code>repeated .mesos.Parameter parameter = 1;</code>
+     */
+    org.apache.mesos.Protos.Parameter getParameter(int index);
+    /**
+     * <code>repeated .mesos.Parameter parameter = 1;</code>
+     */
+    int getParameterCount();
+    /**
+     * <code>repeated .mesos.Parameter parameter = 1;</code>
+     */
+    java.util.List<? extends org.apache.mesos.Protos.ParameterOrBuilder> 
+        getParameterOrBuilderList();
+    /**
+     * <code>repeated .mesos.Parameter parameter = 1;</code>
+     */
+    org.apache.mesos.Protos.ParameterOrBuilder getParameterOrBuilder(
+        int index);
+  }
+  /**
+   * Protobuf type {@code mesos.Parameters}
+   *
+   * <pre>
+   **
+   * Collection of Parameter.
+   * </pre>
+   */
+  public static final class Parameters extends
+      com.google.protobuf.GeneratedMessage
+      implements ParametersOrBuilder {
+    // Use Parameters.newBuilder() to construct.
+    private Parameters(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Parameters(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Parameters defaultInstance;
+    public static Parameters getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Parameters getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Parameters(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                parameter_ = new java.util.ArrayList<org.apache.mesos.Protos.Parameter>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              parameter_.add(input.readMessage(org.apache.mesos.Protos.Parameter.PARSER, extensionRegistry));
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+          parameter_ = java.util.Collections.unmodifiableList(parameter_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_Parameters_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_Parameters_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.Parameters.class, org.apache.mesos.Protos.Parameters.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Parameters> PARSER =
+        new com.google.protobuf.AbstractParser<Parameters>() {
+      public Parameters parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Parameters(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Parameters> getParserForType() {
+      return PARSER;
+    }
+
+    // repeated .mesos.Parameter parameter = 1;
+    public static final int PARAMETER_FIELD_NUMBER = 1;
+    private java.util.List<org.apache.mesos.Protos.Parameter> parameter_;
+    /**
+     * <code>repeated .mesos.Parameter parameter = 1;</code>
+     */
+    public java.util.List<org.apache.mesos.Protos.Parameter> getParameterList() {
+      return parameter_;
+    }
+    /**
+     * <code>repeated .mesos.Parameter parameter = 1;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.Protos.ParameterOrBuilder> 
+        getParameterOrBuilderList() {
+      return parameter_;
+    }
+    /**
+     * <code>repeated .mesos.Parameter parameter = 1;</code>
+     */
+    public int getParameterCount() {
+      return parameter_.size();
+    }
+    /**
+     * <code>repeated .mesos.Parameter parameter = 1;</code>
+     */
+    public org.apache.mesos.Protos.Parameter getParameter(int index) {
+      return parameter_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.Parameter parameter = 1;</code>
+     */
+    public org.apache.mesos.Protos.ParameterOrBuilder getParameterOrBuilder(
+        int index) {
+      return parameter_.get(index);
+    }
+
+    private void initFields() {
+      parameter_ = java.util.Collections.emptyList();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      for (int i = 0; i < getParameterCount(); i++) {
+        if (!getParameter(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      for (int i = 0; i < parameter_.size(); i++) {
+        output.writeMessage(1, parameter_.get(i));
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      for (int i = 0; i < parameter_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, parameter_.get(i));
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.Parameters parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Parameters parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Parameters parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Parameters parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Parameters parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Parameters parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Parameters parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.Parameters parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Parameters parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Parameters parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.Parameters prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.Parameters}
+     *
+     * <pre>
+     **
+     * Collection of Parameter.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.ParametersOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_Parameters_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_Parameters_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.Parameters.class, org.apache.mesos.Protos.Parameters.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.Parameters.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getParameterFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (parameterBuilder_ == null) {
+          parameter_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+        } else {
+          parameterBuilder_.clear();
+        }
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_Parameters_descriptor;
+      }
+
+      public org.apache.mesos.Protos.Parameters getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.Parameters.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.Parameters build() {
+        org.apache.mesos.Protos.Parameters result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.Parameters buildPartial() {
+        org.apache.mesos.Protos.Parameters result = new org.apache.mesos.Protos.Parameters(this);
+        int from_bitField0_ = bitField0_;
+        if (parameterBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            parameter_ = java.util.Collections.unmodifiableList(parameter_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.parameter_ = parameter_;
+        } else {
+          result.parameter_ = parameterBuilder_.build();
+        }
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.Parameters) {
+          return mergeFrom((org.apache.mesos.Protos.Parameters)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.Parameters other) {
+        if (other == org.apache.mesos.Protos.Parameters.getDefaultInstance()) return this;
+        if (parameterBuilder_ == null) {
+          if (!other.parameter_.isEmpty()) {
+            if (parameter_.isEmpty()) {
+              parameter_ = other.parameter_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureParameterIsMutable();
+              parameter_.addAll(other.parameter_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.parameter_.isEmpty()) {
+            if (parameterBuilder_.isEmpty()) {
+              parameterBuilder_.dispose();
+              parameterBuilder_ = null;
+              parameter_ = other.parameter_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              parameterBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getParameterFieldBuilder() : null;
+            } else {
+              parameterBuilder_.addAllMessages(other.parameter_);
+            }
+          }
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        for (int i = 0; i < getParameterCount(); i++) {
+          if (!getParameter(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.Parameters parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.Parameters) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // repeated .mesos.Parameter parameter = 1;
+      private java.util.List<org.apache.mesos.Protos.Parameter> parameter_ =
+        java.util.Collections.emptyList();
+      private void ensureParameterIsMutable() {
+        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+          parameter_ = new java.util.ArrayList<org.apache.mesos.Protos.Parameter>(parameter_);
+          bitField0_ |= 0x00000001;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.Parameter, org.apache.mesos.Protos.Parameter.Builder, org.apache.mesos.Protos.ParameterOrBuilder> parameterBuilder_;
+
+      /**
+       * <code>repeated .mesos.Parameter parameter = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.Parameter> getParameterList() {
+        if (parameterBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(parameter_);
+        } else {
+          return parameterBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.Parameter parameter = 1;</code>
+       */
+      public int getParameterCount() {
+        if (parameterBuilder_ == null) {
+          return parameter_.size();
+        } else {
+          return parameterBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.Parameter parameter = 1;</code>
+       */
+      public org.apache.mesos.Protos.Parameter getParameter(int index) {
+        if (parameterBuilder_ == null) {
+          return parameter_.get(index);
+        } else {
+          return parameterBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Parameter parameter = 1;</code>
+       */
+      public Builder setParameter(
+          int index, org.apache.mesos.Protos.Parameter value) {
+        if (parameterBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureParameterIsMutable();
+          parameter_.set(index, value);
+          onChanged();
+        } else {
+          parameterBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Parameter parameter = 1;</code>
+       */
+      public Builder setParameter(
+          int index, org.apache.mesos.Protos.Parameter.Builder builderForValue) {
+        if (parameterBuilder_ == null) {
+          ensureParameterIsMutable();
+          parameter_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          parameterBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Parameter parameter = 1;</code>
+       */
+      public Builder addParameter(org.apache.mesos.Protos.Parameter value) {
+        if (parameterBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureParameterIsMutable();
+          parameter_.add(value);
+          onChanged();
+        } else {
+          parameterBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Parameter parameter = 1;</code>
+       */
+      public Builder addParameter(
+          int index, org.apache.mesos.Protos.Parameter value) {
+        if (parameterBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureParameterIsMutable();
+          parameter_.add(index, value);
+          onChanged();
+        } else {
+          parameterBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Parameter parameter = 1;</code>
+       */
+      public Builder addParameter(
+          org.apache.mesos.Protos.Parameter.Builder builderForValue) {
+        if (parameterBuilder_ == null) {
+          ensureParameterIsMutable();
+          parameter_.add(builderForValue.build());
+          onChanged();
+        } else {
+          parameterBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Parameter parameter = 1;</code>
+       */
+      public Builder addParameter(
+          int index, org.apache.mesos.Protos.Parameter.Builder builderForValue) {
+        if (parameterBuilder_ == null) {
+          ensureParameterIsMutable();
+          parameter_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          parameterBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Parameter parameter = 1;</code>
+       */
+      public Builder addAllParameter(
+          java.lang.Iterable<? extends org.apache.mesos.Protos.Parameter> values) {
+        if (parameterBuilder_ == null) {
+          ensureParameterIsMutable();
+          super.addAll(values, parameter_);
+          onChanged();
+        } else {
+          parameterBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Parameter parameter = 1;</code>
+       */
+      public Builder clearParameter() {
+        if (parameterBuilder_ == null) {
+          parameter_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+        } else {
+          parameterBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Parameter parameter = 1;</code>
+       */
+      public Builder removeParameter(int index) {
+        if (parameterBuilder_ == null) {
+          ensureParameterIsMutable();
+          parameter_.remove(index);
+          onChanged();
+        } else {
+          parameterBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Parameter parameter = 1;</code>
+       */
+      public org.apache.mesos.Protos.Parameter.Builder getParameterBuilder(
+          int index) {
+        return getParameterFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.Parameter parameter = 1;</code>
+       */
+      public org.apache.mesos.Protos.ParameterOrBuilder getParameterOrBuilder(
+          int index) {
+        if (parameterBuilder_ == null) {
+          return parameter_.get(index);  } else {
+          return parameterBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Parameter parameter = 1;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.ParameterOrBuilder> 
+           getParameterOrBuilderList() {
+        if (parameterBuilder_ != null) {
+          return parameterBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(parameter_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Parameter parameter = 1;</code>
+       */
+      public org.apache.mesos.Protos.Parameter.Builder addParameterBuilder() {
+        return getParameterFieldBuilder().addBuilder(
+            org.apache.mesos.Protos.Parameter.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.Parameter parameter = 1;</code>
+       */
+      public org.apache.mesos.Protos.Parameter.Builder addParameterBuilder(
+          int index) {
+        return getParameterFieldBuilder().addBuilder(
+            index, org.apache.mesos.Protos.Parameter.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.Parameter parameter = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.Parameter.Builder> 
+           getParameterBuilderList() {
+        return getParameterFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.Parameter, org.apache.mesos.Protos.Parameter.Builder, org.apache.mesos.Protos.ParameterOrBuilder> 
+          getParameterFieldBuilder() {
+        if (parameterBuilder_ == null) {
+          parameterBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.Parameter, org.apache.mesos.Protos.Parameter.Builder, org.apache.mesos.Protos.ParameterOrBuilder>(
+                  parameter_,
+                  ((bitField0_ & 0x00000001) == 0x00000001),
+                  getParentForChildren(),
+                  isClean());
+          parameter_ = null;
+        }
+        return parameterBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.Parameters)
+    }
+
+    static {
+      defaultInstance = new Parameters(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.Parameters)
+  }
+
+  public interface CredentialOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string principal = 1;
+    /**
+     * <code>required string principal = 1;</code>
+     */
+    boolean hasPrincipal();
+    /**
+     * <code>required string principal = 1;</code>
+     */
+    java.lang.String getPrincipal();
+    /**
+     * <code>required string principal = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getPrincipalBytes();
+
+    // optional string secret = 2;
+    /**
+     * <code>optional string secret = 2;</code>
+     */
+    boolean hasSecret();
+    /**
+     * <code>optional string secret = 2;</code>
+     */
+    java.lang.String getSecret();
+    /**
+     * <code>optional string secret = 2;</code>
+     */
+    com.google.protobuf.ByteString
+        getSecretBytes();
+  }
+  /**
+   * Protobuf type {@code mesos.Credential}
+   *
+   * <pre>
+   **
+   * Credential used in various places for authentication and
+   * authorization.
+   *
+   * NOTE: A 'principal' is different from 'FrameworkInfo.user'. The
+   * former is used for authentication and authorization while the
+   * latter is used to determine the default user under which the
+   * framework's executors/tasks are run.
+   * </pre>
+   */
+  public static final class Credential extends
+      com.google.protobuf.GeneratedMessage
+      implements CredentialOrBuilder {
+    // Use Credential.newBuilder() to construct.
+    private Credential(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Credential(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Credential defaultInstance;
+    public static Credential getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Credential getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Credential(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              principal_ = input.readBytes();
+              break;
+            }
+            case 18: {
+              bitField0_ |= 0x00000002;
+              secret_ = input.readBytes();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_Credential_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_Credential_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.Credential.class, org.apache.mesos.Protos.Credential.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Credential> PARSER =
+        new com.google.protobuf.AbstractParser<Credential>() {
+      public Credential parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Credential(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Credential> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string principal = 1;
+    public static final int PRINCIPAL_FIELD_NUMBER = 1;
+    private java.lang.Object principal_;
+    /**
+     * <code>required string principal = 1;</code>
+     */
+    public boolean hasPrincipal() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string principal = 1;</code>
+     */
+    public java.lang.String getPrincipal() {
+      java.lang.Object ref = principal_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          principal_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string principal = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getPrincipalBytes() {
+      java.lang.Object ref = principal_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        principal_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional string secret = 2;
+    public static final int SECRET_FIELD_NUMBER = 2;
+    private java.lang.Object secret_;
+    /**
+     * <code>optional string secret = 2;</code>
+     */
+    public boolean hasSecret() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional string secret = 2;</code>
+     */
+    public java.lang.String getSecret() {
+      java.lang.Object ref = secret_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          secret_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string secret = 2;</code>
+     */
+    public com.google.protobuf.ByteString
+        getSecretBytes() {
+      java.lang.Object ref = secret_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        secret_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      principal_ = "";
+      secret_ = "";
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasPrincipal()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getPrincipalBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(2, getSecretBytes());
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getPrincipalBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(2, getSecretBytes());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.Credential parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Credential parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Credential parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Credential parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Credential parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Credential parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Credential parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.Credential parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Credential parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Credential parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.Credential prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.Credential}
+     *
+     * <pre>
+     **
+     * Credential used in various places for authentication and
+     * authorization.
+     *
+     * NOTE: A 'principal' is different from 'FrameworkInfo.user'. The
+     * former is used for authentication and authorization while the
+     * latter is used to determine the default user under which the
+     * framework's executors/tasks are run.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.CredentialOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_Credential_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_Credential_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.Credential.class, org.apache.mesos.Protos.Credential.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.Credential.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        principal_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        secret_ = "";
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_Credential_descriptor;
+      }
+
+      public org.apache.mesos.Protos.Credential getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.Credential.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.Credential build() {
+        org.apache.mesos.Protos.Credential result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.Credential buildPartial() {
+        org.apache.mesos.Protos.Credential result = new org.apache.mesos.Protos.Credential(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.principal_ = principal_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.secret_ = secret_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.Credential) {
+          return mergeFrom((org.apache.mesos.Protos.Credential)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.Credential other) {
+        if (other == org.apache.mesos.Protos.Credential.getDefaultInstance()) return this;
+        if (other.hasPrincipal()) {
+          bitField0_ |= 0x00000001;
+          principal_ = other.principal_;
+          onChanged();
+        }
+        if (other.hasSecret()) {
+          bitField0_ |= 0x00000002;
+          secret_ = other.secret_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasPrincipal()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.Credential parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.Credential) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string principal = 1;
+      private java.lang.Object principal_ = "";
+      /**
+       * <code>required string principal = 1;</code>
+       */
+      public boolean hasPrincipal() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string principal = 1;</code>
+       */
+      public java.lang.String getPrincipal() {
+        java.lang.Object ref = principal_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          principal_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string principal = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getPrincipalBytes() {
+        java.lang.Object ref = principal_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          principal_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string principal = 1;</code>
+       */
+      public Builder setPrincipal(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        principal_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string principal = 1;</code>
+       */
+      public Builder clearPrincipal() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        principal_ = getDefaultInstance().getPrincipal();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string principal = 1;</code>
+       */
+      public Builder setPrincipalBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        principal_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional string secret = 2;
+      private java.lang.Object secret_ = "";
+      /**
+       * <code>optional string secret = 2;</code>
+       */
+      public boolean hasSecret() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional string secret = 2;</code>
+       */
+      public java.lang.String getSecret() {
+        java.lang.Object ref = secret_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          secret_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string secret = 2;</code>
+       */
+      public com.google.protobuf.ByteString
+          getSecretBytes() {
+        java.lang.Object ref = secret_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          secret_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string secret = 2;</code>
+       */
+      public Builder setSecret(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        secret_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string secret = 2;</code>
+       */
+      public Builder clearSecret() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        secret_ = getDefaultInstance().getSecret();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string secret = 2;</code>
+       */
+      public Builder setSecretBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        secret_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.Credential)
+    }
+
+    static {
+      defaultInstance = new Credential(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.Credential)
+  }
+
+  public interface CredentialsOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // repeated .mesos.Credential credentials = 1;
+    /**
+     * <code>repeated .mesos.Credential credentials = 1;</code>
+     */
+    java.util.List<org.apache.mesos.Protos.Credential> 
+        getCredentialsList();
+    /**
+     * <code>repeated .mesos.Credential credentials = 1;</code>
+     */
+    org.apache.mesos.Protos.Credential getCredentials(int index);
+    /**
+     * <code>repeated .mesos.Credential credentials = 1;</code>
+     */
+    int getCredentialsCount();
+    /**
+     * <code>repeated .mesos.Credential credentials = 1;</code>
+     */
+    java.util.List<? extends org.apache.mesos.Protos.CredentialOrBuilder> 
+        getCredentialsOrBuilderList();
+    /**
+     * <code>repeated .mesos.Credential credentials = 1;</code>
+     */
+    org.apache.mesos.Protos.CredentialOrBuilder getCredentialsOrBuilder(
+        int index);
+  }
+  /**
+   * Protobuf type {@code mesos.Credentials}
+   *
+   * <pre>
+   **
+   * Credentials used for framework authentication, HTTP authentication
+   * (where the common 'username' and 'password' are captured as
+   * 'principal' and 'secret' respectively), etc.
+   * </pre>
+   */
+  public static final class Credentials extends
+      com.google.protobuf.GeneratedMessage
+      implements CredentialsOrBuilder {
+    // Use Credentials.newBuilder() to construct.
+    private Credentials(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Credentials(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Credentials defaultInstance;
+    public static Credentials getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Credentials getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Credentials(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                credentials_ = new java.util.ArrayList<org.apache.mesos.Protos.Credential>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              credentials_.add(input.readMessage(org.apache.mesos.Protos.Credential.PARSER, extensionRegistry));
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+          credentials_ = java.util.Collections.unmodifiableList(credentials_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_Credentials_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_Credentials_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.Credentials.class, org.apache.mesos.Protos.Credentials.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Credentials> PARSER =
+        new com.google.protobuf.AbstractParser<Credentials>() {
+      public Credentials parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Credentials(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Credentials> getParserForType() {
+      return PARSER;
+    }
+
+    // repeated .mesos.Credential credentials = 1;
+    public static final int CREDENTIALS_FIELD_NUMBER = 1;
+    private java.util.List<org.apache.mesos.Protos.Credential> credentials_;
+    /**
+     * <code>repeated .mesos.Credential credentials = 1;</code>
+     */
+    public java.util.List<org.apache.mesos.Protos.Credential> getCredentialsList() {
+      return credentials_;
+    }
+    /**
+     * <code>repeated .mesos.Credential credentials = 1;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.Protos.CredentialOrBuilder> 
+        getCredentialsOrBuilderList() {
+      return credentials_;
+    }
+    /**
+     * <code>repeated .mesos.Credential credentials = 1;</code>
+     */
+    public int getCredentialsCount() {
+      return credentials_.size();
+    }
+    /**
+     * <code>repeated .mesos.Credential credentials = 1;</code>
+     */
+    public org.apache.mesos.Protos.Credential getCredentials(int index) {
+      return credentials_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.Credential credentials = 1;</code>
+     */
+    public org.apache.mesos.Protos.CredentialOrBuilder getCredentialsOrBuilder(
+        int index) {
+      return credentials_.get(index);
+    }
+
+    private void initFields() {
+      credentials_ = java.util.Collections.emptyList();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      for (int i = 0; i < getCredentialsCount(); i++) {
+        if (!getCredentials(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      for (int i = 0; i < credentials_.size(); i++) {
+        output.writeMessage(1, credentials_.get(i));
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      for (int i = 0; i < credentials_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, credentials_.get(i));
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.Credentials parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Credentials parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Credentials parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Credentials parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Credentials parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Credentials parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Credentials parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.Credentials parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Credentials parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Credentials parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.Credentials prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.Credentials}
+     *
+     * <pre>
+     **
+     * Credentials used for framework authentication, HTTP authentication
+     * (where the common 'username' and 'password' are captured as
+     * 'principal' and 'secret' respectively), etc.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.CredentialsOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_Credentials_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_Credentials_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.Credentials.class, org.apache.mesos.Protos.Credentials.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.Credentials.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getCredentialsFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (credentialsBuilder_ == null) {
+          credentials_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+        } else {
+          credentialsBuilder_.clear();
+        }
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_Credentials_descriptor;
+      }
+
+      public org.apache.mesos.Protos.Credentials getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.Credentials.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.Credentials build() {
+        org.apache.mesos.Protos.Credentials result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.Credentials buildPartial() {
+        org.apache.mesos.Protos.Credentials result = new org.apache.mesos.Protos.Credentials(this);
+        int from_bitField0_ = bitField0_;
+        if (credentialsBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            credentials_ = java.util.Collections.unmodifiableList(credentials_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.credentials_ = credentials_;
+        } else {
+          result.credentials_ = credentialsBuilder_.build();
+        }
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.Credentials) {
+          return mergeFrom((org.apache.mesos.Protos.Credentials)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.Credentials other) {
+        if (other == org.apache.mesos.Protos.Credentials.getDefaultInstance()) return this;
+        if (credentialsBuilder_ == null) {
+          if (!other.credentials_.isEmpty()) {
+            if (credentials_.isEmpty()) {
+              credentials_ = other.credentials_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureCredentialsIsMutable();
+              credentials_.addAll(other.credentials_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.credentials_.isEmpty()) {
+            if (credentialsBuilder_.isEmpty()) {
+              credentialsBuilder_.dispose();
+              credentialsBuilder_ = null;
+              credentials_ = other.credentials_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              credentialsBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getCredentialsFieldBuilder() : null;
+            } else {
+              credentialsBuilder_.addAllMessages(other.credentials_);
+            }
+          }
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        for (int i = 0; i < getCredentialsCount(); i++) {
+          if (!getCredentials(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.Credentials parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.Credentials) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // repeated .mesos.Credential credentials = 1;
+      private java.util.List<org.apache.mesos.Protos.Credential> credentials_ =
+        java.util.Collections.emptyList();
+      private void ensureCredentialsIsMutable() {
+        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+          credentials_ = new java.util.ArrayList<org.apache.mesos.Protos.Credential>(credentials_);
+          bitField0_ |= 0x00000001;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.Credential, org.apache.mesos.Protos.Credential.Builder, org.apache.mesos.Protos.CredentialOrBuilder> credentialsBuilder_;
+
+      /**
+       * <code>repeated .mesos.Credential credentials = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.Credential> getCredentialsList() {
+        if (credentialsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(credentials_);
+        } else {
+          return credentialsBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.Credential credentials = 1;</code>
+       */
+      public int getCredentialsCount() {
+        if (credentialsBuilder_ == null) {
+          return credentials_.size();
+        } else {
+          return credentialsBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.Credential credentials = 1;</code>
+       */
+      public org.apache.mesos.Protos.Credential getCredentials(int index) {
+        if (credentialsBuilder_ == null) {
+          return credentials_.get(index);
+        } else {
+          return credentialsBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Credential credentials = 1;</code>
+       */
+      public Builder setCredentials(
+          int index, org.apache.mesos.Protos.Credential value) {
+        if (credentialsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureCredentialsIsMutable();
+          credentials_.set(index, value);
+          onChanged();
+        } else {
+          credentialsBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Credential credentials = 1;</code>
+       */
+      public Builder setCredentials(
+          int index, org.apache.mesos.Protos.Credential.Builder builderForValue) {
+        if (credentialsBuilder_ == null) {
+          ensureCredentialsIsMutable();
+          credentials_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          credentialsBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Credential credentials = 1;</code>
+       */
+      public Builder addCredentials(org.apache.mesos.Protos.Credential value) {
+        if (credentialsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureCredentialsIsMutable();
+          credentials_.add(value);
+          onChanged();
+        } else {
+          credentialsBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Credential credentials = 1;</code>
+       */
+      public Builder addCredentials(
+          int index, org.apache.mesos.Protos.Credential value) {
+        if (credentialsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureCredentialsIsMutable();
+          credentials_.add(index, value);
+          onChanged();
+        } else {
+          credentialsBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Credential credentials = 1;</code>
+       */
+      public Builder addCredentials(
+          org.apache.mesos.Protos.Credential.Builder builderForValue) {
+        if (credentialsBuilder_ == null) {
+          ensureCredentialsIsMutable();
+          credentials_.add(builderForValue.build());
+          onChanged();
+        } else {
+          credentialsBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Credential credentials = 1;</code>
+       */
+      public Builder addCredentials(
+          int index, org.apache.mesos.Protos.Credential.Builder builderForValue) {
+        if (credentialsBuilder_ == null) {
+          ensureCredentialsIsMutable();
+          credentials_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          credentialsBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Credential credentials = 1;</code>
+       */
+      public Builder addAllCredentials(
+          java.lang.Iterable<? extends org.apache.mesos.Protos.Credential> values) {
+        if (credentialsBuilder_ == null) {
+          ensureCredentialsIsMutable();
+          super.addAll(values, credentials_);
+          onChanged();
+        } else {
+          credentialsBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Credential credentials = 1;</code>
+       */
+      public Builder clearCredentials() {
+        if (credentialsBuilder_ == null) {
+          credentials_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+        } else {
+          credentialsBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Credential credentials = 1;</code>
+       */
+      public Builder removeCredentials(int index) {
+        if (credentialsBuilder_ == null) {
+          ensureCredentialsIsMutable();
+          credentials_.remove(index);
+          onChanged();
+        } else {
+          credentialsBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Credential credentials = 1;</code>
+       */
+      public org.apache.mesos.Protos.Credential.Builder getCredentialsBuilder(
+          int index) {
+        return getCredentialsFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.Credential credentials = 1;</code>
+       */
+      public org.apache.mesos.Protos.CredentialOrBuilder getCredentialsOrBuilder(
+          int index) {
+        if (credentialsBuilder_ == null) {
+          return credentials_.get(index);  } else {
+          return credentialsBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Credential credentials = 1;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.CredentialOrBuilder> 
+           getCredentialsOrBuilderList() {
+        if (credentialsBuilder_ != null) {
+          return credentialsBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(credentials_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Credential credentials = 1;</code>
+       */
+      public org.apache.mesos.Protos.Credential.Builder addCredentialsBuilder() {
+        return getCredentialsFieldBuilder().addBuilder(
+            org.apache.mesos.Protos.Credential.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.Credential credentials = 1;</code>
+       */
+      public org.apache.mesos.Protos.Credential.Builder addCredentialsBuilder(
+          int index) {
+        return getCredentialsFieldBuilder().addBuilder(
+            index, org.apache.mesos.Protos.Credential.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.Credential credentials = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.Credential.Builder> 
+           getCredentialsBuilderList() {
+        return getCredentialsFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.Credential, org.apache.mesos.Protos.Credential.Builder, org.apache.mesos.Protos.CredentialOrBuilder> 
+          getCredentialsFieldBuilder() {
+        if (credentialsBuilder_ == null) {
+          credentialsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.Credential, org.apache.mesos.Protos.Credential.Builder, org.apache.mesos.Protos.CredentialOrBuilder>(
+                  credentials_,
+                  ((bitField0_ & 0x00000001) == 0x00000001),
+                  getParentForChildren(),
+                  isClean());
+          credentials_ = null;
+        }
+        return credentialsBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.Credentials)
+    }
+
+    static {
+      defaultInstance = new Credentials(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.Credentials)
+  }
+
+  public interface SecretOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional .mesos.Secret.Type type = 1;
+    /**
+     * <code>optional .mesos.Secret.Type type = 1;</code>
+     */
+    boolean hasType();
+    /**
+     * <code>optional .mesos.Secret.Type type = 1;</code>
+     */
+    org.apache.mesos.Protos.Secret.Type getType();
+
+    // optional .mesos.Secret.Reference reference = 2;
+    /**
+     * <code>optional .mesos.Secret.Reference reference = 2;</code>
+     *
+     * <pre>
+     * Only one of `reference` and `value` must be set.
+     * </pre>
+     */
+    boolean hasReference();
+    /**
+     * <code>optional .mesos.Secret.Reference reference = 2;</code>
+     *
+     * <pre>
+     * Only one of `reference` and `value` must be set.
+     * </pre>
+     */
+    org.apache.mesos.Protos.Secret.Reference getReference();
+    /**
+     * <code>optional .mesos.Secret.Reference reference = 2;</code>
+     *
+     * <pre>
+     * Only one of `reference` and `value` must be set.
+     * </pre>
+     */
+    org.apache.mesos.Protos.Secret.ReferenceOrBuilder getReferenceOrBuilder();
+
+    // optional .mesos.Secret.Value value = 3;
+    /**
+     * <code>optional .mesos.Secret.Value value = 3;</code>
+     */
+    boolean hasValue();
+    /**
+     * <code>optional .mesos.Secret.Value value = 3;</code>
+     */
+    org.apache.mesos.Protos.Secret.Value getValue();
+    /**
+     * <code>optional .mesos.Secret.Value value = 3;</code>
+     */
+    org.apache.mesos.Protos.Secret.ValueOrBuilder getValueOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.Secret}
+   *
+   * <pre>
+   **
+   * Secret used to pass privileged information. It is designed to provide
+   * pass-by-value or pass-by-reference semantics, where the REFERENCE type can be
+   * used by custom modules which interact with a secure back-end.
+   * </pre>
+   */
+  public static final class Secret extends
+      com.google.protobuf.GeneratedMessage
+      implements SecretOrBuilder {
+    // Use Secret.newBuilder() to construct.
+    private Secret(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Secret(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Secret defaultInstance;
+    public static Secret getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Secret getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Secret(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 8: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.Protos.Secret.Type value = org.apache.mesos.Protos.Secret.Type.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(1, rawValue);
+              } else {
+                bitField0_ |= 0x00000001;
+                type_ = value;
+              }
+              break;
+            }
+            case 18: {
+              org.apache.mesos.Protos.Secret.Reference.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = reference_.toBuilder();
+              }
+              reference_ = input.readMessage(org.apache.mesos.Protos.Secret.Reference.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(reference_);
+                reference_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+            case 26: {
+              org.apache.mesos.Protos.Secret.Value.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                subBuilder = value_.toBuilder();
+              }
+              value_ = input.readMessage(org.apache.mesos.Protos.Secret.Value.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(value_);
+                value_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000004;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_Secret_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_Secret_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.Secret.class, org.apache.mesos.Protos.Secret.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Secret> PARSER =
+        new com.google.protobuf.AbstractParser<Secret>() {
+      public Secret parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Secret(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Secret> getParserForType() {
+      return PARSER;
+    }
+
+    /**
+     * Protobuf enum {@code mesos.Secret.Type}
+     */
+    public enum Type
+        implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>UNKNOWN = 0;</code>
+       */
+      UNKNOWN(0, 0),
+      /**
+       * <code>REFERENCE = 1;</code>
+       */
+      REFERENCE(1, 1),
+      /**
+       * <code>VALUE = 2;</code>
+       */
+      VALUE(2, 2),
+      ;
+
+      /**
+       * <code>UNKNOWN = 0;</code>
+       */
+      public static final int UNKNOWN_VALUE = 0;
+      /**
+       * <code>REFERENCE = 1;</code>
+       */
+      public static final int REFERENCE_VALUE = 1;
+      /**
+       * <code>VALUE = 2;</code>
+       */
+      public static final int VALUE_VALUE = 2;
+
+
+      public final int getNumber() { return value; }
+
+      public static Type valueOf(int value) {
+        switch (value) {
+          case 0: return UNKNOWN;
+          case 1: return REFERENCE;
+          case 2: return VALUE;
+          default: return null;
+        }
+      }
+
+      public static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalGetValueMap() {
+        return internalValueMap;
+      }
+      private static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap<Type>() {
+              public Type findValueByNumber(int number) {
+                return Type.valueOf(number);
+              }
+            };
+
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
+          getValueDescriptor() {
+        return getDescriptor().getValues().get(index);
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptorForType() {
+        return getDescriptor();
+      }
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.Secret.getDescriptor().getEnumTypes().get(0);
+      }
+
+      private static final Type[] VALUES = values();
+
+      public static Type valueOf(
+          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+        if (desc.getType() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "EnumValueDescriptor is not for this type.");
+        }
+        return VALUES[desc.getIndex()];
+      }
+
+      private final int index;
+      private final int value;
+
+      private Type(int index, int value) {
+        this.index = index;
+        this.value = value;
+      }
+
+      // @@protoc_insertion_point(enum_scope:mesos.Secret.Type)
+    }
+
+    public interface ReferenceOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required string name = 1;
+      /**
+       * <code>required string name = 1;</code>
+       */
+      boolean hasName();
+      /**
+       * <code>required string name = 1;</code>
+       */
+      java.lang.String getName();
+      /**
+       * <code>required string name = 1;</code>
+       */
+      com.google.protobuf.ByteString
+          getNameBytes();
+
+      // optional string key = 2;
+      /**
+       * <code>optional string key = 2;</code>
+       */
+      boolean hasKey();
+      /**
+       * <code>optional string key = 2;</code>
+       */
+      java.lang.String getKey();
+      /**
+       * <code>optional string key = 2;</code>
+       */
+      com.google.protobuf.ByteString
+          getKeyBytes();
+    }
+    /**
+     * Protobuf type {@code mesos.Secret.Reference}
+     *
+     * <pre>
+     * Can be used by modules to refer to a secret stored in a secure back-end.
+     * The `key` field is provided to permit reference to a single value within a
+     * secret containing arbitrary key-value pairs.
+     *
+     * For example, given a back-end secret store with a secret named
+     * "my-secret" containing the following key-value pairs:
+     *
+     *   {
+     *     "username": "my-user",
+     *     "password": "my-password
+     *   }
+     *
+     * the username could be referred to in a `Secret` by specifying
+     * "my-secret" for the `name` and "username" for the `key`.
+     * </pre>
+     */
+    public static final class Reference extends
+        com.google.protobuf.GeneratedMessage
+        implements ReferenceOrBuilder {
+      // Use Reference.newBuilder() to construct.
+      private Reference(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Reference(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Reference defaultInstance;
+      public static Reference getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Reference getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Reference(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                bitField0_ |= 0x00000001;
+                name_ = input.readBytes();
+                break;
+              }
+              case 18: {
+                bitField0_ |= 0x00000002;
+                key_ = input.readBytes();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_Secret_Reference_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_Secret_Reference_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.Secret.Reference.class, org.apache.mesos.Protos.Secret.Reference.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Reference> PARSER =
+          new com.google.protobuf.AbstractParser<Reference>() {
+        public Reference parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Reference(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Reference> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required string name = 1;
+      public static final int NAME_FIELD_NUMBER = 1;
+      private java.lang.Object name_;
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public boolean hasName() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public java.lang.String getName() {
+        java.lang.Object ref = name_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            name_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        java.lang.Object ref = name_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          name_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      // optional string key = 2;
+      public static final int KEY_FIELD_NUMBER = 2;
+      private java.lang.Object key_;
+      /**
+       * <code>optional string key = 2;</code>
+       */
+      public boolean hasKey() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional string key = 2;</code>
+       */
+      public java.lang.String getKey() {
+        java.lang.Object ref = key_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            key_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>optional string key = 2;</code>
+       */
+      public com.google.protobuf.ByteString
+          getKeyBytes() {
+        java.lang.Object ref = key_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          key_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      private void initFields() {
+        name_ = "";
+        key_ = "";
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasName()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeBytes(1, getNameBytes());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeBytes(2, getKeyBytes());
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(1, getNameBytes());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(2, getKeyBytes());
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.Protos.Secret.Reference parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.Secret.Reference parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Secret.Reference parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.Secret.Reference parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Secret.Reference parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.Secret.Reference parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Secret.Reference parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.Protos.Secret.Reference parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Secret.Reference parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.Secret.Reference parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.Protos.Secret.Reference prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.Secret.Reference}
+       *
+       * <pre>
+       * Can be used by modules to refer to a secret stored in a secure back-end.
+       * The `key` field is provided to permit reference to a single value within a
+       * secret containing arbitrary key-value pairs.
+       *
+       * For example, given a back-end secret store with a secret named
+       * "my-secret" containing the following key-value pairs:
+       *
+       *   {
+       *     "username": "my-user",
+       *     "password": "my-password
+       *   }
+       *
+       * the username could be referred to in a `Secret` by specifying
+       * "my-secret" for the `name` and "username" for the `key`.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.Protos.Secret.ReferenceOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_Secret_Reference_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_Secret_Reference_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.Secret.Reference.class, org.apache.mesos.Protos.Secret.Reference.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.Protos.Secret.Reference.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          name_ = "";
+          bitField0_ = (bitField0_ & ~0x00000001);
+          key_ = "";
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.Protos.internal_static_mesos_Secret_Reference_descriptor;
+        }
+
+        public org.apache.mesos.Protos.Secret.Reference getDefaultInstanceForType() {
+          return org.apache.mesos.Protos.Secret.Reference.getDefaultInstance();
+        }
+
+        public org.apache.mesos.Protos.Secret.Reference build() {
+          org.apache.mesos.Protos.Secret.Reference result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.Protos.Secret.Reference buildPartial() {
+          org.apache.mesos.Protos.Secret.Reference result = new org.apache.mesos.Protos.Secret.Reference(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.name_ = name_;
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          result.key_ = key_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.Protos.Secret.Reference) {
+            return mergeFrom((org.apache.mesos.Protos.Secret.Reference)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.Protos.Secret.Reference other) {
+          if (other == org.apache.mesos.Protos.Secret.Reference.getDefaultInstance()) return this;
+          if (other.hasName()) {
+            bitField0_ |= 0x00000001;
+            name_ = other.name_;
+            onChanged();
+          }
+          if (other.hasKey()) {
+            bitField0_ |= 0x00000002;
+            key_ = other.key_;
+            onChanged();
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasName()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.Protos.Secret.Reference parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.Protos.Secret.Reference) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required string name = 1;
+        private java.lang.Object name_ = "";
+        /**
+         * <code>required string name = 1;</code>
+         */
+        public boolean hasName() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required string name = 1;</code>
+         */
+        public java.lang.String getName() {
+          java.lang.Object ref = name_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            name_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>required string name = 1;</code>
+         */
+        public com.google.protobuf.ByteString
+            getNameBytes() {
+          java.lang.Object ref = name_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            name_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>required string name = 1;</code>
+         */
+        public Builder setName(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          name_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required string name = 1;</code>
+         */
+        public Builder clearName() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          name_ = getDefaultInstance().getName();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required string name = 1;</code>
+         */
+        public Builder setNameBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          name_ = value;
+          onChanged();
+          return this;
+        }
+
+        // optional string key = 2;
+        private java.lang.Object key_ = "";
+        /**
+         * <code>optional string key = 2;</code>
+         */
+        public boolean hasKey() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional string key = 2;</code>
+         */
+        public java.lang.String getKey() {
+          java.lang.Object ref = key_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            key_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>optional string key = 2;</code>
+         */
+        public com.google.protobuf.ByteString
+            getKeyBytes() {
+          java.lang.Object ref = key_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            key_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>optional string key = 2;</code>
+         */
+        public Builder setKey(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+          key_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string key = 2;</code>
+         */
+        public Builder clearKey() {
+          bitField0_ = (bitField0_ & ~0x00000002);
+          key_ = getDefaultInstance().getKey();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string key = 2;</code>
+         */
+        public Builder setKeyBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+          key_ = value;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.Secret.Reference)
+      }
+
+      static {
+        defaultInstance = new Reference(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.Secret.Reference)
+    }
+
+    public interface ValueOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required bytes data = 1;
+      /**
+       * <code>required bytes data = 1;</code>
+       */
+      boolean hasData();
+      /**
+       * <code>required bytes data = 1;</code>
+       */
+      com.google.protobuf.ByteString getData();
+    }
+    /**
+     * Protobuf type {@code mesos.Secret.Value}
+     *
+     * <pre>
+     * Used to pass the value of a secret.
+     * </pre>
+     */
+    public static final class Value extends
+        com.google.protobuf.GeneratedMessage
+        implements ValueOrBuilder {
+      // Use Value.newBuilder() to construct.
+      private Value(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Value(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Value defaultInstance;
+      public static Value getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Value getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Value(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                bitField0_ |= 0x00000001;
+                data_ = input.readBytes();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_Secret_Value_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_Secret_Value_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.Secret.Value.class, org.apache.mesos.Protos.Secret.Value.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Value> PARSER =
+          new com.google.protobuf.AbstractParser<Value>() {
+        public Value parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Value(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Value> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required bytes data = 1;
+      public static final int DATA_FIELD_NUMBER = 1;
+      private com.google.protobuf.ByteString data_;
+      /**
+       * <code>required bytes data = 1;</code>
+       */
+      public boolean hasData() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required bytes data = 1;</code>
+       */
+      public com.google.protobuf.ByteString getData() {
+        return data_;
+      }
+
+      private void initFields() {
+        data_ = com.google.protobuf.ByteString.EMPTY;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasData()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeBytes(1, data_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(1, data_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.Protos.Secret.Value parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.Secret.Value parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Secret.Value parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.Secret.Value parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Secret.Value parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.Secret.Value parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Secret.Value parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.Protos.Secret.Value parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Secret.Value parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.Secret.Value parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.Protos.Secret.Value prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.Secret.Value}
+       *
+       * <pre>
+       * Used to pass the value of a secret.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.Protos.Secret.ValueOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_Secret_Value_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_Secret_Value_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.Secret.Value.class, org.apache.mesos.Protos.Secret.Value.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.Protos.Secret.Value.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          data_ = com.google.protobuf.ByteString.EMPTY;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.Protos.internal_static_mesos_Secret_Value_descriptor;
+        }
+
+        public org.apache.mesos.Protos.Secret.Value getDefaultInstanceForType() {
+          return org.apache.mesos.Protos.Secret.Value.getDefaultInstance();
+        }
+
+        public org.apache.mesos.Protos.Secret.Value build() {
+          org.apache.mesos.Protos.Secret.Value result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.Protos.Secret.Value buildPartial() {
+          org.apache.mesos.Protos.Secret.Value result = new org.apache.mesos.Protos.Secret.Value(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.data_ = data_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.Protos.Secret.Value) {
+            return mergeFrom((org.apache.mesos.Protos.Secret.Value)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.Protos.Secret.Value other) {
+          if (other == org.apache.mesos.Protos.Secret.Value.getDefaultInstance()) return this;
+          if (other.hasData()) {
+            setData(other.getData());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasData()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.Protos.Secret.Value parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.Protos.Secret.Value) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required bytes data = 1;
+        private com.google.protobuf.ByteString data_ = com.google.protobuf.ByteString.EMPTY;
+        /**
+         * <code>required bytes data = 1;</code>
+         */
+        public boolean hasData() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required bytes data = 1;</code>
+         */
+        public com.google.protobuf.ByteString getData() {
+          return data_;
+        }
+        /**
+         * <code>required bytes data = 1;</code>
+         */
+        public Builder setData(com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          data_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required bytes data = 1;</code>
+         */
+        public Builder clearData() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          data_ = getDefaultInstance().getData();
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.Secret.Value)
+      }
+
+      static {
+        defaultInstance = new Value(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.Secret.Value)
+    }
+
+    private int bitField0_;
+    // optional .mesos.Secret.Type type = 1;
+    public static final int TYPE_FIELD_NUMBER = 1;
+    private org.apache.mesos.Protos.Secret.Type type_;
+    /**
+     * <code>optional .mesos.Secret.Type type = 1;</code>
+     */
+    public boolean hasType() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional .mesos.Secret.Type type = 1;</code>
+     */
+    public org.apache.mesos.Protos.Secret.Type getType() {
+      return type_;
+    }
+
+    // optional .mesos.Secret.Reference reference = 2;
+    public static final int REFERENCE_FIELD_NUMBER = 2;
+    private org.apache.mesos.Protos.Secret.Reference reference_;
+    /**
+     * <code>optional .mesos.Secret.Reference reference = 2;</code>
+     *
+     * <pre>
+     * Only one of `reference` and `value` must be set.
+     * </pre>
+     */
+    public boolean hasReference() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional .mesos.Secret.Reference reference = 2;</code>
+     *
+     * <pre>
+     * Only one of `reference` and `value` must be set.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.Secret.Reference getReference() {
+      return reference_;
+    }
+    /**
+     * <code>optional .mesos.Secret.Reference reference = 2;</code>
+     *
+     * <pre>
+     * Only one of `reference` and `value` must be set.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.Secret.ReferenceOrBuilder getReferenceOrBuilder() {
+      return reference_;
+    }
+
+    // optional .mesos.Secret.Value value = 3;
+    public static final int VALUE_FIELD_NUMBER = 3;
+    private org.apache.mesos.Protos.Secret.Value value_;
+    /**
+     * <code>optional .mesos.Secret.Value value = 3;</code>
+     */
+    public boolean hasValue() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional .mesos.Secret.Value value = 3;</code>
+     */
+    public org.apache.mesos.Protos.Secret.Value getValue() {
+      return value_;
+    }
+    /**
+     * <code>optional .mesos.Secret.Value value = 3;</code>
+     */
+    public org.apache.mesos.Protos.Secret.ValueOrBuilder getValueOrBuilder() {
+      return value_;
+    }
+
+    private void initFields() {
+      type_ = org.apache.mesos.Protos.Secret.Type.UNKNOWN;
+      reference_ = org.apache.mesos.Protos.Secret.Reference.getDefaultInstance();
+      value_ = org.apache.mesos.Protos.Secret.Value.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (hasReference()) {
+        if (!getReference().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasValue()) {
+        if (!getValue().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeEnum(1, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(2, reference_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeMessage(3, value_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(1, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, reference_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, value_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.Secret parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Secret parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Secret parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Secret parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Secret parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Secret parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Secret parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.Secret parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Secret parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Secret parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.Secret prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.Secret}
+     *
+     * <pre>
+     **
+     * Secret used to pass privileged information. It is designed to provide
+     * pass-by-value or pass-by-reference semantics, where the REFERENCE type can be
+     * used by custom modules which interact with a secure back-end.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.SecretOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_Secret_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_Secret_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.Secret.class, org.apache.mesos.Protos.Secret.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.Secret.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getReferenceFieldBuilder();
+          getValueFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        type_ = org.apache.mesos.Protos.Secret.Type.UNKNOWN;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (referenceBuilder_ == null) {
+          reference_ = org.apache.mesos.Protos.Secret.Reference.getDefaultInstance();
+        } else {
+          referenceBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        if (valueBuilder_ == null) {
+          value_ = org.apache.mesos.Protos.Secret.Value.getDefaultInstance();
+        } else {
+          valueBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_Secret_descriptor;
+      }
+
+      public org.apache.mesos.Protos.Secret getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.Secret.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.Secret build() {
+        org.apache.mesos.Protos.Secret result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.Secret buildPartial() {
+        org.apache.mesos.Protos.Secret result = new org.apache.mesos.Protos.Secret(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.type_ = type_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (referenceBuilder_ == null) {
+          result.reference_ = reference_;
+        } else {
+          result.reference_ = referenceBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        if (valueBuilder_ == null) {
+          result.value_ = value_;
+        } else {
+          result.value_ = valueBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.Secret) {
+          return mergeFrom((org.apache.mesos.Protos.Secret)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.Secret other) {
+        if (other == org.apache.mesos.Protos.Secret.getDefaultInstance()) return this;
+        if (other.hasType()) {
+          setType(other.getType());
+        }
+        if (other.hasReference()) {
+          mergeReference(other.getReference());
+        }
+        if (other.hasValue()) {
+          mergeValue(other.getValue());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (hasReference()) {
+          if (!getReference().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasValue()) {
+          if (!getValue().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.Secret parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.Secret) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional .mesos.Secret.Type type = 1;
+      private org.apache.mesos.Protos.Secret.Type type_ = org.apache.mesos.Protos.Secret.Type.UNKNOWN;
+      /**
+       * <code>optional .mesos.Secret.Type type = 1;</code>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.Secret.Type type = 1;</code>
+       */
+      public org.apache.mesos.Protos.Secret.Type getType() {
+        return type_;
+      }
+      /**
+       * <code>optional .mesos.Secret.Type type = 1;</code>
+       */
+      public Builder setType(org.apache.mesos.Protos.Secret.Type value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000001;
+        type_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Secret.Type type = 1;</code>
+       */
+      public Builder clearType() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        type_ = org.apache.mesos.Protos.Secret.Type.UNKNOWN;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.Secret.Reference reference = 2;
+      private org.apache.mesos.Protos.Secret.Reference reference_ = org.apache.mesos.Protos.Secret.Reference.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Secret.Reference, org.apache.mesos.Protos.Secret.Reference.Builder, org.apache.mesos.Protos.Secret.ReferenceOrBuilder> referenceBuilder_;
+      /**
+       * <code>optional .mesos.Secret.Reference reference = 2;</code>
+       *
+       * <pre>
+       * Only one of `reference` and `value` must be set.
+       * </pre>
+       */
+      public boolean hasReference() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.Secret.Reference reference = 2;</code>
+       *
+       * <pre>
+       * Only one of `reference` and `value` must be set.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Secret.Reference getReference() {
+        if (referenceBuilder_ == null) {
+          return reference_;
+        } else {
+          return referenceBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.Secret.Reference reference = 2;</code>
+       *
+       * <pre>
+       * Only one of `reference` and `value` must be set.
+       * </pre>
+       */
+      public Builder setReference(org.apache.mesos.Protos.Secret.Reference value) {
+        if (referenceBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          reference_ = value;
+          onChanged();
+        } else {
+          referenceBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Secret.Reference reference = 2;</code>
+       *
+       * <pre>
+       * Only one of `reference` and `value` must be set.
+       * </pre>
+       */
+      public Builder setReference(
+          org.apache.mesos.Protos.Secret.Reference.Builder builderForValue) {
+        if (referenceBuilder_ == null) {
+          reference_ = builderForValue.build();
+          onChanged();
+        } else {
+          referenceBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Secret.Reference reference = 2;</code>
+       *
+       * <pre>
+       * Only one of `reference` and `value` must be set.
+       * </pre>
+       */
+      public Builder mergeReference(org.apache.mesos.Protos.Secret.Reference value) {
+        if (referenceBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              reference_ != org.apache.mesos.Protos.Secret.Reference.getDefaultInstance()) {
+            reference_ =
+              org.apache.mesos.Protos.Secret.Reference.newBuilder(reference_).mergeFrom(value).buildPartial();
+          } else {
+            reference_ = value;
+          }
+          onChanged();
+        } else {
+          referenceBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Secret.Reference reference = 2;</code>
+       *
+       * <pre>
+       * Only one of `reference` and `value` must be set.
+       * </pre>
+       */
+      public Builder clearReference() {
+        if (referenceBuilder_ == null) {
+          reference_ = org.apache.mesos.Protos.Secret.Reference.getDefaultInstance();
+          onChanged();
+        } else {
+          referenceBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Secret.Reference reference = 2;</code>
+       *
+       * <pre>
+       * Only one of `reference` and `value` must be set.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Secret.Reference.Builder getReferenceBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getReferenceFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.Secret.Reference reference = 2;</code>
+       *
+       * <pre>
+       * Only one of `reference` and `value` must be set.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Secret.ReferenceOrBuilder getReferenceOrBuilder() {
+        if (referenceBuilder_ != null) {
+          return referenceBuilder_.getMessageOrBuilder();
+        } else {
+          return reference_;
+        }
+      }
+      /**
+       * <code>optional .mesos.Secret.Reference reference = 2;</code>
+       *
+       * <pre>
+       * Only one of `reference` and `value` must be set.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Secret.Reference, org.apache.mesos.Protos.Secret.Reference.Builder, org.apache.mesos.Protos.Secret.ReferenceOrBuilder> 
+          getReferenceFieldBuilder() {
+        if (referenceBuilder_ == null) {
+          referenceBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Secret.Reference, org.apache.mesos.Protos.Secret.Reference.Builder, org.apache.mesos.Protos.Secret.ReferenceOrBuilder>(
+                  reference_,
+                  getParentForChildren(),
+                  isClean());
+          reference_ = null;
+        }
+        return referenceBuilder_;
+      }
+
+      // optional .mesos.Secret.Value value = 3;
+      private org.apache.mesos.Protos.Secret.Value value_ = org.apache.mesos.Protos.Secret.Value.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Secret.Value, org.apache.mesos.Protos.Secret.Value.Builder, org.apache.mesos.Protos.Secret.ValueOrBuilder> valueBuilder_;
+      /**
+       * <code>optional .mesos.Secret.Value value = 3;</code>
+       */
+      public boolean hasValue() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.Secret.Value value = 3;</code>
+       */
+      public org.apache.mesos.Protos.Secret.Value getValue() {
+        if (valueBuilder_ == null) {
+          return value_;
+        } else {
+          return valueBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.Secret.Value value = 3;</code>
+       */
+      public Builder setValue(org.apache.mesos.Protos.Secret.Value value) {
+        if (valueBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          value_ = value;
+          onChanged();
+        } else {
+          valueBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Secret.Value value = 3;</code>
+       */
+      public Builder setValue(
+          org.apache.mesos.Protos.Secret.Value.Builder builderForValue) {
+        if (valueBuilder_ == null) {
+          value_ = builderForValue.build();
+          onChanged();
+        } else {
+          valueBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Secret.Value value = 3;</code>
+       */
+      public Builder mergeValue(org.apache.mesos.Protos.Secret.Value value) {
+        if (valueBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) == 0x00000004) &&
+              value_ != org.apache.mesos.Protos.Secret.Value.getDefaultInstance()) {
+            value_ =
+              org.apache.mesos.Protos.Secret.Value.newBuilder(value_).mergeFrom(value).buildPartial();
+          } else {
+            value_ = value;
+          }
+          onChanged();
+        } else {
+          valueBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Secret.Value value = 3;</code>
+       */
+      public Builder clearValue() {
+        if (valueBuilder_ == null) {
+          value_ = org.apache.mesos.Protos.Secret.Value.getDefaultInstance();
+          onChanged();
+        } else {
+          valueBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Secret.Value value = 3;</code>
+       */
+      public org.apache.mesos.Protos.Secret.Value.Builder getValueBuilder() {
+        bitField0_ |= 0x00000004;
+        onChanged();
+        return getValueFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.Secret.Value value = 3;</code>
+       */
+      public org.apache.mesos.Protos.Secret.ValueOrBuilder getValueOrBuilder() {
+        if (valueBuilder_ != null) {
+          return valueBuilder_.getMessageOrBuilder();
+        } else {
+          return value_;
+        }
+      }
+      /**
+       * <code>optional .mesos.Secret.Value value = 3;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Secret.Value, org.apache.mesos.Protos.Secret.Value.Builder, org.apache.mesos.Protos.Secret.ValueOrBuilder> 
+          getValueFieldBuilder() {
+        if (valueBuilder_ == null) {
+          valueBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Secret.Value, org.apache.mesos.Protos.Secret.Value.Builder, org.apache.mesos.Protos.Secret.ValueOrBuilder>(
+                  value_,
+                  getParentForChildren(),
+                  isClean());
+          value_ = null;
+        }
+        return valueBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.Secret)
+    }
+
+    static {
+      defaultInstance = new Secret(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.Secret)
+  }
+
+  public interface RateLimitOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional double qps = 1;
+    /**
+     * <code>optional double qps = 1;</code>
+     *
+     * <pre>
+     * Leaving QPS unset gives it unlimited rate (i.e., not throttled),
+     * which also implies unlimited capacity.
+     * </pre>
+     */
+    boolean hasQps();
+    /**
+     * <code>optional double qps = 1;</code>
+     *
+     * <pre>
+     * Leaving QPS unset gives it unlimited rate (i.e., not throttled),
+     * which also implies unlimited capacity.
+     * </pre>
+     */
+    double getQps();
+
+    // required string principal = 2;
+    /**
+     * <code>required string principal = 2;</code>
+     *
+     * <pre>
+     * Principal of framework(s) to be throttled. Should match
+     * FrameworkInfo.principal and Credential.principal (if using authentication).
+     * </pre>
+     */
+    boolean hasPrincipal();
+    /**
+     * <code>required string principal = 2;</code>
+     *
+     * <pre>
+     * Principal of framework(s) to be throttled. Should match
+     * FrameworkInfo.principal and Credential.principal (if using authentication).
+     * </pre>
+     */
+    java.lang.String getPrincipal();
+    /**
+     * <code>required string principal = 2;</code>
+     *
+     * <pre>
+     * Principal of framework(s) to be throttled. Should match
+     * FrameworkInfo.principal and Credential.principal (if using authentication).
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getPrincipalBytes();
+
+    // optional uint64 capacity = 3;
+    /**
+     * <code>optional uint64 capacity = 3;</code>
+     *
+     * <pre>
+     * Max number of outstanding messages from frameworks of this principal
+     * allowed by master before the next message is dropped and an error is sent
+     * back to the sender. Messages received before the capacity is reached are
+     * still going to be processed after the error is sent.
+     * If unspecified, this principal is assigned unlimited capacity.
+     * NOTE: This value is ignored if 'qps' is not set.
+     * </pre>
+     */
+    boolean hasCapacity();
+    /**
+     * <code>optional uint64 capacity = 3;</code>
+     *
+     * <pre>
+     * Max number of outstanding messages from frameworks of this principal
+     * allowed by master before the next message is dropped and an error is sent
+     * back to the sender. Messages received before the capacity is reached are
+     * still going to be processed after the error is sent.
+     * If unspecified, this principal is assigned unlimited capacity.
+     * NOTE: This value is ignored if 'qps' is not set.
+     * </pre>
+     */
+    long getCapacity();
+  }
+  /**
+   * Protobuf type {@code mesos.RateLimit}
+   *
+   * <pre>
+   **
+   * Rate (queries per second, QPS) limit for messages from a framework to master.
+   * Strictly speaking they are the combined rate from all frameworks of the same
+   * principal.
+   * </pre>
+   */
+  public static final class RateLimit extends
+      com.google.protobuf.GeneratedMessage
+      implements RateLimitOrBuilder {
+    // Use RateLimit.newBuilder() to construct.
+    private RateLimit(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private RateLimit(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final RateLimit defaultInstance;
+    public static RateLimit getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public RateLimit getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private RateLimit(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 9: {
+              bitField0_ |= 0x00000001;
+              qps_ = input.readDouble();
+              break;
+            }
+            case 18: {
+              bitField0_ |= 0x00000002;
+              principal_ = input.readBytes();
+              break;
+            }
+            case 24: {
+              bitField0_ |= 0x00000004;
+              capacity_ = input.readUInt64();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_RateLimit_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_RateLimit_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.RateLimit.class, org.apache.mesos.Protos.RateLimit.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<RateLimit> PARSER =
+        new com.google.protobuf.AbstractParser<RateLimit>() {
+      public RateLimit parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new RateLimit(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<RateLimit> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // optional double qps = 1;
+    public static final int QPS_FIELD_NUMBER = 1;
+    private double qps_;
+    /**
+     * <code>optional double qps = 1;</code>
+     *
+     * <pre>
+     * Leaving QPS unset gives it unlimited rate (i.e., not throttled),
+     * which also implies unlimited capacity.
+     * </pre>
+     */
+    public boolean hasQps() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional double qps = 1;</code>
+     *
+     * <pre>
+     * Leaving QPS unset gives it unlimited rate (i.e., not throttled),
+     * which also implies unlimited capacity.
+     * </pre>
+     */
+    public double getQps() {
+      return qps_;
+    }
+
+    // required string principal = 2;
+    public static final int PRINCIPAL_FIELD_NUMBER = 2;
+    private java.lang.Object principal_;
+    /**
+     * <code>required string principal = 2;</code>
+     *
+     * <pre>
+     * Principal of framework(s) to be throttled. Should match
+     * FrameworkInfo.principal and Credential.principal (if using authentication).
+     * </pre>
+     */
+    public boolean hasPrincipal() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>required string principal = 2;</code>
+     *
+     * <pre>
+     * Principal of framework(s) to be throttled. Should match
+     * FrameworkInfo.principal and Credential.principal (if using authentication).
+     * </pre>
+     */
+    public java.lang.String getPrincipal() {
+      java.lang.Object ref = principal_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          principal_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string principal = 2;</code>
+     *
+     * <pre>
+     * Principal of framework(s) to be throttled. Should match
+     * FrameworkInfo.principal and Credential.principal (if using authentication).
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getPrincipalBytes() {
+      java.lang.Object ref = principal_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        principal_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional uint64 capacity = 3;
+    public static final int CAPACITY_FIELD_NUMBER = 3;
+    private long capacity_;
+    /**
+     * <code>optional uint64 capacity = 3;</code>
+     *
+     * <pre>
+     * Max number of outstanding messages from frameworks of this principal
+     * allowed by master before the next message is dropped and an error is sent
+     * back to the sender. Messages received before the capacity is reached are
+     * still going to be processed after the error is sent.
+     * If unspecified, this principal is assigned unlimited capacity.
+     * NOTE: This value is ignored if 'qps' is not set.
+     * </pre>
+     */
+    public boolean hasCapacity() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional uint64 capacity = 3;</code>
+     *
+     * <pre>
+     * Max number of outstanding messages from frameworks of this principal
+     * allowed by master before the next message is dropped and an error is sent
+     * back to the sender. Messages received before the capacity is reached are
+     * still going to be processed after the error is sent.
+     * If unspecified, this principal is assigned unlimited capacity.
+     * NOTE: This value is ignored if 'qps' is not set.
+     * </pre>
+     */
+    public long getCapacity() {
+      return capacity_;
+    }
+
+    private void initFields() {
+      qps_ = 0D;
+      principal_ = "";
+      capacity_ = 0L;
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasPrincipal()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeDouble(1, qps_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(2, getPrincipalBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeUInt64(3, capacity_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(1, qps_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(2, getPrincipalBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(3, capacity_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.RateLimit parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.RateLimit parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.RateLimit parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.RateLimit parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.RateLimit parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.RateLimit parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.RateLimit parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.RateLimit parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.RateLimit parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.RateLimit parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.RateLimit prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.RateLimit}
+     *
+     * <pre>
+     **
+     * Rate (queries per second, QPS) limit for messages from a framework to master.
+     * Strictly speaking they are the combined rate from all frameworks of the same
+     * principal.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.RateLimitOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_RateLimit_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_RateLimit_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.RateLimit.class, org.apache.mesos.Protos.RateLimit.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.RateLimit.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        qps_ = 0D;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        principal_ = "";
+        bitField0_ = (bitField0_ & ~0x00000002);
+        capacity_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_RateLimit_descriptor;
+      }
+
+      public org.apache.mesos.Protos.RateLimit getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.RateLimit.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.RateLimit build() {
+        org.apache.mesos.Protos.RateLimit result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.RateLimit buildPartial() {
+        org.apache.mesos.Protos.RateLimit result = new org.apache.mesos.Protos.RateLimit(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.qps_ = qps_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.principal_ = principal_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.capacity_ = capacity_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.RateLimit) {
+          return mergeFrom((org.apache.mesos.Protos.RateLimit)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.RateLimit other) {
+        if (other == org.apache.mesos.Protos.RateLimit.getDefaultInstance()) return this;
+        if (other.hasQps()) {
+          setQps(other.getQps());
+        }
+        if (other.hasPrincipal()) {
+          bitField0_ |= 0x00000002;
+          principal_ = other.principal_;
+          onChanged();
+        }
+        if (other.hasCapacity()) {
+          setCapacity(other.getCapacity());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasPrincipal()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.RateLimit parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.RateLimit) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional double qps = 1;
+      private double qps_ ;
+      /**
+       * <code>optional double qps = 1;</code>
+       *
+       * <pre>
+       * Leaving QPS unset gives it unlimited rate (i.e., not throttled),
+       * which also implies unlimited capacity.
+       * </pre>
+       */
+      public boolean hasQps() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional double qps = 1;</code>
+       *
+       * <pre>
+       * Leaving QPS unset gives it unlimited rate (i.e., not throttled),
+       * which also implies unlimited capacity.
+       * </pre>
+       */
+      public double getQps() {
+        return qps_;
+      }
+      /**
+       * <code>optional double qps = 1;</code>
+       *
+       * <pre>
+       * Leaving QPS unset gives it unlimited rate (i.e., not throttled),
+       * which also implies unlimited capacity.
+       * </pre>
+       */
+      public Builder setQps(double value) {
+        bitField0_ |= 0x00000001;
+        qps_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double qps = 1;</code>
+       *
+       * <pre>
+       * Leaving QPS unset gives it unlimited rate (i.e., not throttled),
+       * which also implies unlimited capacity.
+       * </pre>
+       */
+      public Builder clearQps() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        qps_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // required string principal = 2;
+      private java.lang.Object principal_ = "";
+      /**
+       * <code>required string principal = 2;</code>
+       *
+       * <pre>
+       * Principal of framework(s) to be throttled. Should match
+       * FrameworkInfo.principal and Credential.principal (if using authentication).
+       * </pre>
+       */
+      public boolean hasPrincipal() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required string principal = 2;</code>
+       *
+       * <pre>
+       * Principal of framework(s) to be throttled. Should match
+       * FrameworkInfo.principal and Credential.principal (if using authentication).
+       * </pre>
+       */
+      public java.lang.String getPrincipal() {
+        java.lang.Object ref = principal_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          principal_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string principal = 2;</code>
+       *
+       * <pre>
+       * Principal of framework(s) to be throttled. Should match
+       * FrameworkInfo.principal and Credential.principal (if using authentication).
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getPrincipalBytes() {
+        java.lang.Object ref = principal_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          principal_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string principal = 2;</code>
+       *
+       * <pre>
+       * Principal of framework(s) to be throttled. Should match
+       * FrameworkInfo.principal and Credential.principal (if using authentication).
+       * </pre>
+       */
+      public Builder setPrincipal(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        principal_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string principal = 2;</code>
+       *
+       * <pre>
+       * Principal of framework(s) to be throttled. Should match
+       * FrameworkInfo.principal and Credential.principal (if using authentication).
+       * </pre>
+       */
+      public Builder clearPrincipal() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        principal_ = getDefaultInstance().getPrincipal();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string principal = 2;</code>
+       *
+       * <pre>
+       * Principal of framework(s) to be throttled. Should match
+       * FrameworkInfo.principal and Credential.principal (if using authentication).
+       * </pre>
+       */
+      public Builder setPrincipalBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        principal_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 capacity = 3;
+      private long capacity_ ;
+      /**
+       * <code>optional uint64 capacity = 3;</code>
+       *
+       * <pre>
+       * Max number of outstanding messages from frameworks of this principal
+       * allowed by master before the next message is dropped and an error is sent
+       * back to the sender. Messages received before the capacity is reached are
+       * still going to be processed after the error is sent.
+       * If unspecified, this principal is assigned unlimited capacity.
+       * NOTE: This value is ignored if 'qps' is not set.
+       * </pre>
+       */
+      public boolean hasCapacity() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional uint64 capacity = 3;</code>
+       *
+       * <pre>
+       * Max number of outstanding messages from frameworks of this principal
+       * allowed by master before the next message is dropped and an error is sent
+       * back to the sender. Messages received before the capacity is reached are
+       * still going to be processed after the error is sent.
+       * If unspecified, this principal is assigned unlimited capacity.
+       * NOTE: This value is ignored if 'qps' is not set.
+       * </pre>
+       */
+      public long getCapacity() {
+        return capacity_;
+      }
+      /**
+       * <code>optional uint64 capacity = 3;</code>
+       *
+       * <pre>
+       * Max number of outstanding messages from frameworks of this principal
+       * allowed by master before the next message is dropped and an error is sent
+       * back to the sender. Messages received before the capacity is reached are
+       * still going to be processed after the error is sent.
+       * If unspecified, this principal is assigned unlimited capacity.
+       * NOTE: This value is ignored if 'qps' is not set.
+       * </pre>
+       */
+      public Builder setCapacity(long value) {
+        bitField0_ |= 0x00000004;
+        capacity_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 capacity = 3;</code>
+       *
+       * <pre>
+       * Max number of outstanding messages from frameworks of this principal
+       * allowed by master before the next message is dropped and an error is sent
+       * back to the sender. Messages received before the capacity is reached are
+       * still going to be processed after the error is sent.
+       * If unspecified, this principal is assigned unlimited capacity.
+       * NOTE: This value is ignored if 'qps' is not set.
+       * </pre>
+       */
+      public Builder clearCapacity() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        capacity_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.RateLimit)
+    }
+
+    static {
+      defaultInstance = new RateLimit(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.RateLimit)
+  }
+
+  public interface RateLimitsOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // repeated .mesos.RateLimit limits = 1;
+    /**
+     * <code>repeated .mesos.RateLimit limits = 1;</code>
+     *
+     * <pre>
+     * Items should have unique principals.
+     * </pre>
+     */
+    java.util.List<org.apache.mesos.Protos.RateLimit> 
+        getLimitsList();
+    /**
+     * <code>repeated .mesos.RateLimit limits = 1;</code>
+     *
+     * <pre>
+     * Items should have unique principals.
+     * </pre>
+     */
+    org.apache.mesos.Protos.RateLimit getLimits(int index);
+    /**
+     * <code>repeated .mesos.RateLimit limits = 1;</code>
+     *
+     * <pre>
+     * Items should have unique principals.
+     * </pre>
+     */
+    int getLimitsCount();
+    /**
+     * <code>repeated .mesos.RateLimit limits = 1;</code>
+     *
+     * <pre>
+     * Items should have unique principals.
+     * </pre>
+     */
+    java.util.List<? extends org.apache.mesos.Protos.RateLimitOrBuilder> 
+        getLimitsOrBuilderList();
+    /**
+     * <code>repeated .mesos.RateLimit limits = 1;</code>
+     *
+     * <pre>
+     * Items should have unique principals.
+     * </pre>
+     */
+    org.apache.mesos.Protos.RateLimitOrBuilder getLimitsOrBuilder(
+        int index);
+
+    // optional double aggregate_default_qps = 2;
+    /**
+     * <code>optional double aggregate_default_qps = 2;</code>
+     *
+     * <pre>
+     * All the frameworks not specified in 'limits' get this default rate.
+     * This rate is an aggregate rate for all of them, i.e., their combined
+     * traffic is throttled together at this rate.
+     * </pre>
+     */
+    boolean hasAggregateDefaultQps();
+    /**
+     * <code>optional double aggregate_default_qps = 2;</code>
+     *
+     * <pre>
+     * All the frameworks not specified in 'limits' get this default rate.
+     * This rate is an aggregate rate for all of them, i.e., their combined
+     * traffic is throttled together at this rate.
+     * </pre>
+     */
+    double getAggregateDefaultQps();
+
+    // optional uint64 aggregate_default_capacity = 3;
+    /**
+     * <code>optional uint64 aggregate_default_capacity = 3;</code>
+     *
+     * <pre>
+     * All the frameworks not specified in 'limits' get this default capacity.
+     * This is an aggregate value similar to 'aggregate_default_qps'.
+     * </pre>
+     */
+    boolean hasAggregateDefaultCapacity();
+    /**
+     * <code>optional uint64 aggregate_default_capacity = 3;</code>
+     *
+     * <pre>
+     * All the frameworks not specified in 'limits' get this default capacity.
+     * This is an aggregate value similar to 'aggregate_default_qps'.
+     * </pre>
+     */
+    long getAggregateDefaultCapacity();
+  }
+  /**
+   * Protobuf type {@code mesos.RateLimits}
+   *
+   * <pre>
+   **
+   * Collection of RateLimit.
+   * Frameworks without rate limits defined here are not throttled unless
+   * 'aggregate_default_qps' is specified.
+   * </pre>
+   */
+  public static final class RateLimits extends
+      com.google.protobuf.GeneratedMessage
+      implements RateLimitsOrBuilder {
+    // Use RateLimits.newBuilder() to construct.
+    private RateLimits(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private RateLimits(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final RateLimits defaultInstance;
+    public static RateLimits getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public RateLimits getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private RateLimits(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                limits_ = new java.util.ArrayList<org.apache.mesos.Protos.RateLimit>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              limits_.add(input.readMessage(org.apache.mesos.Protos.RateLimit.PARSER, extensionRegistry));
+              break;
+            }
+            case 17: {
+              bitField0_ |= 0x00000001;
+              aggregateDefaultQps_ = input.readDouble();
+              break;
+            }
+            case 24: {
+              bitField0_ |= 0x00000002;
+              aggregateDefaultCapacity_ = input.readUInt64();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+          limits_ = java.util.Collections.unmodifiableList(limits_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_RateLimits_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_RateLimits_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.RateLimits.class, org.apache.mesos.Protos.RateLimits.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<RateLimits> PARSER =
+        new com.google.protobuf.AbstractParser<RateLimits>() {
+      public RateLimits parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new RateLimits(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<RateLimits> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // repeated .mesos.RateLimit limits = 1;
+    public static final int LIMITS_FIELD_NUMBER = 1;
+    private java.util.List<org.apache.mesos.Protos.RateLimit> limits_;
+    /**
+     * <code>repeated .mesos.RateLimit limits = 1;</code>
+     *
+     * <pre>
+     * Items should have unique principals.
+     * </pre>
+     */
+    public java.util.List<org.apache.mesos.Protos.RateLimit> getLimitsList() {
+      return limits_;
+    }
+    /**
+     * <code>repeated .mesos.RateLimit limits = 1;</code>
+     *
+     * <pre>
+     * Items should have unique principals.
+     * </pre>
+     */
+    public java.util.List<? extends org.apache.mesos.Protos.RateLimitOrBuilder> 
+        getLimitsOrBuilderList() {
+      return limits_;
+    }
+    /**
+     * <code>repeated .mesos.RateLimit limits = 1;</code>
+     *
+     * <pre>
+     * Items should have unique principals.
+     * </pre>
+     */
+    public int getLimitsCount() {
+      return limits_.size();
+    }
+    /**
+     * <code>repeated .mesos.RateLimit limits = 1;</code>
+     *
+     * <pre>
+     * Items should have unique principals.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.RateLimit getLimits(int index) {
+      return limits_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.RateLimit limits = 1;</code>
+     *
+     * <pre>
+     * Items should have unique principals.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.RateLimitOrBuilder getLimitsOrBuilder(
+        int index) {
+      return limits_.get(index);
+    }
+
+    // optional double aggregate_default_qps = 2;
+    public static final int AGGREGATE_DEFAULT_QPS_FIELD_NUMBER = 2;
+    private double aggregateDefaultQps_;
+    /**
+     * <code>optional double aggregate_default_qps = 2;</code>
+     *
+     * <pre>
+     * All the frameworks not specified in 'limits' get this default rate.
+     * This rate is an aggregate rate for all of them, i.e., their combined
+     * traffic is throttled together at this rate.
+     * </pre>
+     */
+    public boolean hasAggregateDefaultQps() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional double aggregate_default_qps = 2;</code>
+     *
+     * <pre>
+     * All the frameworks not specified in 'limits' get this default rate.
+     * This rate is an aggregate rate for all of them, i.e., their combined
+     * traffic is throttled together at this rate.
+     * </pre>
+     */
+    public double getAggregateDefaultQps() {
+      return aggregateDefaultQps_;
+    }
+
+    // optional uint64 aggregate_default_capacity = 3;
+    public static final int AGGREGATE_DEFAULT_CAPACITY_FIELD_NUMBER = 3;
+    private long aggregateDefaultCapacity_;
+    /**
+     * <code>optional uint64 aggregate_default_capacity = 3;</code>
+     *
+     * <pre>
+     * All the frameworks not specified in 'limits' get this default capacity.
+     * This is an aggregate value similar to 'aggregate_default_qps'.
+     * </pre>
+     */
+    public boolean hasAggregateDefaultCapacity() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional uint64 aggregate_default_capacity = 3;</code>
+     *
+     * <pre>
+     * All the frameworks not specified in 'limits' get this default capacity.
+     * This is an aggregate value similar to 'aggregate_default_qps'.
+     * </pre>
+     */
+    public long getAggregateDefaultCapacity() {
+      return aggregateDefaultCapacity_;
+    }
+
+    private void initFields() {
+      limits_ = java.util.Collections.emptyList();
+      aggregateDefaultQps_ = 0D;
+      aggregateDefaultCapacity_ = 0L;
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      for (int i = 0; i < getLimitsCount(); i++) {
+        if (!getLimits(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      for (int i = 0; i < limits_.size(); i++) {
+        output.writeMessage(1, limits_.get(i));
+      }
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeDouble(2, aggregateDefaultQps_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeUInt64(3, aggregateDefaultCapacity_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      for (int i = 0; i < limits_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, limits_.get(i));
+      }
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(2, aggregateDefaultQps_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(3, aggregateDefaultCapacity_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.RateLimits parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.RateLimits parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.RateLimits parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.RateLimits parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.RateLimits parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.RateLimits parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.RateLimits parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.RateLimits parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.RateLimits parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.RateLimits parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.RateLimits prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.RateLimits}
+     *
+     * <pre>
+     **
+     * Collection of RateLimit.
+     * Frameworks without rate limits defined here are not throttled unless
+     * 'aggregate_default_qps' is specified.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.RateLimitsOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_RateLimits_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_RateLimits_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.RateLimits.class, org.apache.mesos.Protos.RateLimits.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.RateLimits.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getLimitsFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (limitsBuilder_ == null) {
+          limits_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+        } else {
+          limitsBuilder_.clear();
+        }
+        aggregateDefaultQps_ = 0D;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        aggregateDefaultCapacity_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_RateLimits_descriptor;
+      }
+
+      public org.apache.mesos.Protos.RateLimits getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.RateLimits.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.RateLimits build() {
+        org.apache.mesos.Protos.RateLimits result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.RateLimits buildPartial() {
+        org.apache.mesos.Protos.RateLimits result = new org.apache.mesos.Protos.RateLimits(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (limitsBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            limits_ = java.util.Collections.unmodifiableList(limits_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.limits_ = limits_;
+        } else {
+          result.limits_ = limitsBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.aggregateDefaultQps_ = aggregateDefaultQps_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.aggregateDefaultCapacity_ = aggregateDefaultCapacity_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.RateLimits) {
+          return mergeFrom((org.apache.mesos.Protos.RateLimits)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.RateLimits other) {
+        if (other == org.apache.mesos.Protos.RateLimits.getDefaultInstance()) return this;
+        if (limitsBuilder_ == null) {
+          if (!other.limits_.isEmpty()) {
+            if (limits_.isEmpty()) {
+              limits_ = other.limits_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureLimitsIsMutable();
+              limits_.addAll(other.limits_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.limits_.isEmpty()) {
+            if (limitsBuilder_.isEmpty()) {
+              limitsBuilder_.dispose();
+              limitsBuilder_ = null;
+              limits_ = other.limits_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              limitsBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getLimitsFieldBuilder() : null;
+            } else {
+              limitsBuilder_.addAllMessages(other.limits_);
+            }
+          }
+        }
+        if (other.hasAggregateDefaultQps()) {
+          setAggregateDefaultQps(other.getAggregateDefaultQps());
+        }
+        if (other.hasAggregateDefaultCapacity()) {
+          setAggregateDefaultCapacity(other.getAggregateDefaultCapacity());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        for (int i = 0; i < getLimitsCount(); i++) {
+          if (!getLimits(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.RateLimits parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.RateLimits) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // repeated .mesos.RateLimit limits = 1;
+      private java.util.List<org.apache.mesos.Protos.RateLimit> limits_ =
+        java.util.Collections.emptyList();
+      private void ensureLimitsIsMutable() {
+        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+          limits_ = new java.util.ArrayList<org.apache.mesos.Protos.RateLimit>(limits_);
+          bitField0_ |= 0x00000001;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.RateLimit, org.apache.mesos.Protos.RateLimit.Builder, org.apache.mesos.Protos.RateLimitOrBuilder> limitsBuilder_;
+
+      /**
+       * <code>repeated .mesos.RateLimit limits = 1;</code>
+       *
+       * <pre>
+       * Items should have unique principals.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.Protos.RateLimit> getLimitsList() {
+        if (limitsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(limits_);
+        } else {
+          return limitsBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.RateLimit limits = 1;</code>
+       *
+       * <pre>
+       * Items should have unique principals.
+       * </pre>
+       */
+      public int getLimitsCount() {
+        if (limitsBuilder_ == null) {
+          return limits_.size();
+        } else {
+          return limitsBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.RateLimit limits = 1;</code>
+       *
+       * <pre>
+       * Items should have unique principals.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.RateLimit getLimits(int index) {
+        if (limitsBuilder_ == null) {
+          return limits_.get(index);
+        } else {
+          return limitsBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.RateLimit limits = 1;</code>
+       *
+       * <pre>
+       * Items should have unique principals.
+       * </pre>
+       */
+      public Builder setLimits(
+          int index, org.apache.mesos.Protos.RateLimit value) {
+        if (limitsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureLimitsIsMutable();
+          limits_.set(index, value);
+          onChanged();
+        } else {
+          limitsBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.RateLimit limits = 1;</code>
+       *
+       * <pre>
+       * Items should have unique principals.
+       * </pre>
+       */
+      public Builder setLimits(
+          int index, org.apache.mesos.Protos.RateLimit.Builder builderForValue) {
+        if (limitsBuilder_ == null) {
+          ensureLimitsIsMutable();
+          limits_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          limitsBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.RateLimit limits = 1;</code>
+       *
+       * <pre>
+       * Items should have unique principals.
+       * </pre>
+       */
+      public Builder addLimits(org.apache.mesos.Protos.RateLimit value) {
+        if (limitsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureLimitsIsMutable();
+          limits_.add(value);
+          onChanged();
+        } else {
+          limitsBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.RateLimit limits = 1;</code>
+       *
+       * <pre>
+       * Items should have unique principals.
+       * </pre>
+       */
+      public Builder addLimits(
+          int index, org.apache.mesos.Protos.RateLimit value) {
+        if (limitsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureLimitsIsMutable();
+          limits_.add(index, value);
+          onChanged();
+        } else {
+          limitsBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.RateLimit limits = 1;</code>
+       *
+       * <pre>
+       * Items should have unique principals.
+       * </pre>
+       */
+      public Builder addLimits(
+          org.apache.mesos.Protos.RateLimit.Builder builderForValue) {
+        if (limitsBuilder_ == null) {
+          ensureLimitsIsMutable();
+          limits_.add(builderForValue.build());
+          onChanged();
+        } else {
+          limitsBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.RateLimit limits = 1;</code>
+       *
+       * <pre>
+       * Items should have unique principals.
+       * </pre>
+       */
+      public Builder addLimits(
+          int index, org.apache.mesos.Protos.RateLimit.Builder builderForValue) {
+        if (limitsBuilder_ == null) {
+          ensureLimitsIsMutable();
+          limits_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          limitsBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.RateLimit limits = 1;</code>
+       *
+       * <pre>
+       * Items should have unique principals.
+       * </pre>
+       */
+      public Builder addAllLimits(
+          java.lang.Iterable<? extends org.apache.mesos.Protos.RateLimit> values) {
+        if (limitsBuilder_ == null) {
+          ensureLimitsIsMutable();
+          super.addAll(values, limits_);
+          onChanged();
+        } else {
+          limitsBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.RateLimit limits = 1;</code>
+       *
+       * <pre>
+       * Items should have unique principals.
+       * </pre>
+       */
+      public Builder clearLimits() {
+        if (limitsBuilder_ == null) {
+          limits_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+        } else {
+          limitsBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.RateLimit limits = 1;</code>
+       *
+       * <pre>
+       * Items should have unique principals.
+       * </pre>
+       */
+      public Builder removeLimits(int index) {
+        if (limitsBuilder_ == null) {
+          ensureLimitsIsMutable();
+          limits_.remove(index);
+          onChanged();
+        } else {
+          limitsBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.RateLimit limits = 1;</code>
+       *
+       * <pre>
+       * Items should have unique principals.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.RateLimit.Builder getLimitsBuilder(
+          int index) {
+        return getLimitsFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.RateLimit limits = 1;</code>
+       *
+       * <pre>
+       * Items should have unique principals.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.RateLimitOrBuilder getLimitsOrBuilder(
+          int index) {
+        if (limitsBuilder_ == null) {
+          return limits_.get(index);  } else {
+          return limitsBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.RateLimit limits = 1;</code>
+       *
+       * <pre>
+       * Items should have unique principals.
+       * </pre>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.RateLimitOrBuilder> 
+           getLimitsOrBuilderList() {
+        if (limitsBuilder_ != null) {
+          return limitsBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(limits_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.RateLimit limits = 1;</code>
+       *
+       * <pre>
+       * Items should have unique principals.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.RateLimit.Builder addLimitsBuilder() {
+        return getLimitsFieldBuilder().addBuilder(
+            org.apache.mesos.Protos.RateLimit.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.RateLimit limits = 1;</code>
+       *
+       * <pre>
+       * Items should have unique principals.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.RateLimit.Builder addLimitsBuilder(
+          int index) {
+        return getLimitsFieldBuilder().addBuilder(
+            index, org.apache.mesos.Protos.RateLimit.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.RateLimit limits = 1;</code>
+       *
+       * <pre>
+       * Items should have unique principals.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.Protos.RateLimit.Builder> 
+           getLimitsBuilderList() {
+        return getLimitsFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.RateLimit, org.apache.mesos.Protos.RateLimit.Builder, org.apache.mesos.Protos.RateLimitOrBuilder> 
+          getLimitsFieldBuilder() {
+        if (limitsBuilder_ == null) {
+          limitsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.RateLimit, org.apache.mesos.Protos.RateLimit.Builder, org.apache.mesos.Protos.RateLimitOrBuilder>(
+                  limits_,
+                  ((bitField0_ & 0x00000001) == 0x00000001),
+                  getParentForChildren(),
+                  isClean());
+          limits_ = null;
+        }
+        return limitsBuilder_;
+      }
+
+      // optional double aggregate_default_qps = 2;
+      private double aggregateDefaultQps_ ;
+      /**
+       * <code>optional double aggregate_default_qps = 2;</code>
+       *
+       * <pre>
+       * All the frameworks not specified in 'limits' get this default rate.
+       * This rate is an aggregate rate for all of them, i.e., their combined
+       * traffic is throttled together at this rate.
+       * </pre>
+       */
+      public boolean hasAggregateDefaultQps() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional double aggregate_default_qps = 2;</code>
+       *
+       * <pre>
+       * All the frameworks not specified in 'limits' get this default rate.
+       * This rate is an aggregate rate for all of them, i.e., their combined
+       * traffic is throttled together at this rate.
+       * </pre>
+       */
+      public double getAggregateDefaultQps() {
+        return aggregateDefaultQps_;
+      }
+      /**
+       * <code>optional double aggregate_default_qps = 2;</code>
+       *
+       * <pre>
+       * All the frameworks not specified in 'limits' get this default rate.
+       * This rate is an aggregate rate for all of them, i.e., their combined
+       * traffic is throttled together at this rate.
+       * </pre>
+       */
+      public Builder setAggregateDefaultQps(double value) {
+        bitField0_ |= 0x00000002;
+        aggregateDefaultQps_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double aggregate_default_qps = 2;</code>
+       *
+       * <pre>
+       * All the frameworks not specified in 'limits' get this default rate.
+       * This rate is an aggregate rate for all of them, i.e., their combined
+       * traffic is throttled together at this rate.
+       * </pre>
+       */
+      public Builder clearAggregateDefaultQps() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        aggregateDefaultQps_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 aggregate_default_capacity = 3;
+      private long aggregateDefaultCapacity_ ;
+      /**
+       * <code>optional uint64 aggregate_default_capacity = 3;</code>
+       *
+       * <pre>
+       * All the frameworks not specified in 'limits' get this default capacity.
+       * This is an aggregate value similar to 'aggregate_default_qps'.
+       * </pre>
+       */
+      public boolean hasAggregateDefaultCapacity() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional uint64 aggregate_default_capacity = 3;</code>
+       *
+       * <pre>
+       * All the frameworks not specified in 'limits' get this default capacity.
+       * This is an aggregate value similar to 'aggregate_default_qps'.
+       * </pre>
+       */
+      public long getAggregateDefaultCapacity() {
+        return aggregateDefaultCapacity_;
+      }
+      /**
+       * <code>optional uint64 aggregate_default_capacity = 3;</code>
+       *
+       * <pre>
+       * All the frameworks not specified in 'limits' get this default capacity.
+       * This is an aggregate value similar to 'aggregate_default_qps'.
+       * </pre>
+       */
+      public Builder setAggregateDefaultCapacity(long value) {
+        bitField0_ |= 0x00000004;
+        aggregateDefaultCapacity_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 aggregate_default_capacity = 3;</code>
+       *
+       * <pre>
+       * All the frameworks not specified in 'limits' get this default capacity.
+       * This is an aggregate value similar to 'aggregate_default_qps'.
+       * </pre>
+       */
+      public Builder clearAggregateDefaultCapacity() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        aggregateDefaultCapacity_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.RateLimits)
+    }
+
+    static {
+      defaultInstance = new RateLimits(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.RateLimits)
+  }
+
+  public interface ImageOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required .mesos.Image.Type type = 1;
+    /**
+     * <code>required .mesos.Image.Type type = 1;</code>
+     */
+    boolean hasType();
+    /**
+     * <code>required .mesos.Image.Type type = 1;</code>
+     */
+    org.apache.mesos.Protos.Image.Type getType();
+
+    // optional .mesos.Image.Appc appc = 2;
+    /**
+     * <code>optional .mesos.Image.Appc appc = 2;</code>
+     *
+     * <pre>
+     * Only one of the following image messages should be set to match
+     * the type.
+     * </pre>
+     */
+    boolean hasAppc();
+    /**
+     * <code>optional .mesos.Image.Appc appc = 2;</code>
+     *
+     * <pre>
+     * Only one of the following image messages should be set to match
+     * the type.
+     * </pre>
+     */
+    org.apache.mesos.Protos.Image.Appc getAppc();
+    /**
+     * <code>optional .mesos.Image.Appc appc = 2;</code>
+     *
+     * <pre>
+     * Only one of the following image messages should be set to match
+     * the type.
+     * </pre>
+     */
+    org.apache.mesos.Protos.Image.AppcOrBuilder getAppcOrBuilder();
+
+    // optional .mesos.Image.Docker docker = 3;
+    /**
+     * <code>optional .mesos.Image.Docker docker = 3;</code>
+     */
+    boolean hasDocker();
+    /**
+     * <code>optional .mesos.Image.Docker docker = 3;</code>
+     */
+    org.apache.mesos.Protos.Image.Docker getDocker();
+    /**
+     * <code>optional .mesos.Image.Docker docker = 3;</code>
+     */
+    org.apache.mesos.Protos.Image.DockerOrBuilder getDockerOrBuilder();
+
+    // optional bool cached = 4 [default = true];
+    /**
+     * <code>optional bool cached = 4 [default = true];</code>
+     *
+     * <pre>
+     * With this flag set to false, the mesos containerizer will pull
+     * the docker/appc image from the registry even if the image is
+     * already downloaded on the agent.
+     * </pre>
+     */
+    boolean hasCached();
+    /**
+     * <code>optional bool cached = 4 [default = true];</code>
+     *
+     * <pre>
+     * With this flag set to false, the mesos containerizer will pull
+     * the docker/appc image from the registry even if the image is
+     * already downloaded on the agent.
+     * </pre>
+     */
+    boolean getCached();
+  }
+  /**
+   * Protobuf type {@code mesos.Image}
+   *
+   * <pre>
+   **
+   * Describe an image used by tasks or executors. Note that it's only
+   * for tasks or executors launched by MesosContainerizer currently.
+   * </pre>
+   */
+  public static final class Image extends
+      com.google.protobuf.GeneratedMessage
+      implements ImageOrBuilder {
+    // Use Image.newBuilder() to construct.
+    private Image(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Image(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Image defaultInstance;
+    public static Image getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Image getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Image(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 8: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.Protos.Image.Type value = org.apache.mesos.Protos.Image.Type.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(1, rawValue);
+              } else {
+                bitField0_ |= 0x00000001;
+                type_ = value;
+              }
+              break;
+            }
+            case 18: {
+              org.apache.mesos.Protos.Image.Appc.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = appc_.toBuilder();
+              }
+              appc_ = input.readMessage(org.apache.mesos.Protos.Image.Appc.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(appc_);
+                appc_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+            case 26: {
+              org.apache.mesos.Protos.Image.Docker.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                subBuilder = docker_.toBuilder();
+              }
+              docker_ = input.readMessage(org.apache.mesos.Protos.Image.Docker.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(docker_);
+                docker_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000004;
+              break;
+            }
+            case 32: {
+              bitField0_ |= 0x00000008;
+              cached_ = input.readBool();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_Image_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_Image_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.Image.class, org.apache.mesos.Protos.Image.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Image> PARSER =
+        new com.google.protobuf.AbstractParser<Image>() {
+      public Image parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Image(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Image> getParserForType() {
+      return PARSER;
+    }
+
+    /**
+     * Protobuf enum {@code mesos.Image.Type}
+     */
+    public enum Type
+        implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>APPC = 1;</code>
+       */
+      APPC(0, 1),
+      /**
+       * <code>DOCKER = 2;</code>
+       */
+      DOCKER(1, 2),
+      ;
+
+      /**
+       * <code>APPC = 1;</code>
+       */
+      public static final int APPC_VALUE = 1;
+      /**
+       * <code>DOCKER = 2;</code>
+       */
+      public static final int DOCKER_VALUE = 2;
+
+
+      public final int getNumber() { return value; }
+
+      public static Type valueOf(int value) {
+        switch (value) {
+          case 1: return APPC;
+          case 2: return DOCKER;
+          default: return null;
+        }
+      }
+
+      public static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalGetValueMap() {
+        return internalValueMap;
+      }
+      private static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap<Type>() {
+              public Type findValueByNumber(int number) {
+                return Type.valueOf(number);
+              }
+            };
+
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
+          getValueDescriptor() {
+        return getDescriptor().getValues().get(index);
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptorForType() {
+        return getDescriptor();
+      }
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.Image.getDescriptor().getEnumTypes().get(0);
+      }
+
+      private static final Type[] VALUES = values();
+
+      public static Type valueOf(
+          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+        if (desc.getType() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "EnumValueDescriptor is not for this type.");
+        }
+        return VALUES[desc.getIndex()];
+      }
+
+      private final int index;
+      private final int value;
+
+      private Type(int index, int value) {
+        this.index = index;
+        this.value = value;
+      }
+
+      // @@protoc_insertion_point(enum_scope:mesos.Image.Type)
+    }
+
+    public interface AppcOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required string name = 1;
+      /**
+       * <code>required string name = 1;</code>
+       *
+       * <pre>
+       * The name of the image.
+       * </pre>
+       */
+      boolean hasName();
+      /**
+       * <code>required string name = 1;</code>
+       *
+       * <pre>
+       * The name of the image.
+       * </pre>
+       */
+      java.lang.String getName();
+      /**
+       * <code>required string name = 1;</code>
+       *
+       * <pre>
+       * The name of the image.
+       * </pre>
+       */
+      com.google.protobuf.ByteString
+          getNameBytes();
+
+      // optional string id = 2;
+      /**
+       * <code>optional string id = 2;</code>
+       *
+       * <pre>
+       * An image ID is a string of the format "hash-value", where
+       * "hash" is the hash algorithm used and "value" is the hex
+       * encoded string of the digest. Currently the only permitted
+       * hash algorithm is sha512.
+       * </pre>
+       */
+      boolean hasId();
+      /**
+       * <code>optional string id = 2;</code>
+       *
+       * <pre>
+       * An image ID is a string of the format "hash-value", where
+       * "hash" is the hash algorithm used and "value" is the hex
+       * encoded string of the digest. Currently the only permitted
+       * hash algorithm is sha512.
+       * </pre>
+       */
+      java.lang.String getId();
+      /**
+       * <code>optional string id = 2;</code>
+       *
+       * <pre>
+       * An image ID is a string of the format "hash-value", where
+       * "hash" is the hash algorithm used and "value" is the hex
+       * encoded string of the digest. Currently the only permitted
+       * hash algorithm is sha512.
+       * </pre>
+       */
+      com.google.protobuf.ByteString
+          getIdBytes();
+
+      // optional .mesos.Labels labels = 3;
+      /**
+       * <code>optional .mesos.Labels labels = 3;</code>
+       *
+       * <pre>
+       * Optional labels. Suggested labels: "version", "os", and "arch".
+       * </pre>
+       */
+      boolean hasLabels();
+      /**
+       * <code>optional .mesos.Labels labels = 3;</code>
+       *
+       * <pre>
+       * Optional labels. Suggested labels: "version", "os", and "arch".
+       * </pre>
+       */
+      org.apache.mesos.Protos.Labels getLabels();
+      /**
+       * <code>optional .mesos.Labels labels = 3;</code>
+       *
+       * <pre>
+       * Optional labels. Suggested labels: "version", "os", and "arch".
+       * </pre>
+       */
+      org.apache.mesos.Protos.LabelsOrBuilder getLabelsOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.Image.Appc}
+     *
+     * <pre>
+     * Protobuf for specifying an Appc container image. See:
+     * https://github.com/appc/spec/blob/master/spec/aci.md
+     * </pre>
+     */
+    public static final class Appc extends
+        com.google.protobuf.GeneratedMessage
+        implements AppcOrBuilder {
+      // Use Appc.newBuilder() to construct.
+      private Appc(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Appc(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Appc defaultInstance;
+      public static Appc getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Appc getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Appc(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                bitField0_ |= 0x00000001;
+                name_ = input.readBytes();
+                break;
+              }
+              case 18: {
+                bitField0_ |= 0x00000002;
+                id_ = input.readBytes();
+                break;
+              }
+              case 26: {
+                org.apache.mesos.Protos.Labels.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                  subBuilder = labels_.toBuilder();
+                }
+                labels_ = input.readMessage(org.apache.mesos.Protos.Labels.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(labels_);
+                  labels_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000004;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_Image_Appc_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_Image_Appc_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.Image.Appc.class, org.apache.mesos.Protos.Image.Appc.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Appc> PARSER =
+          new com.google.protobuf.AbstractParser<Appc>() {
+        public Appc parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Appc(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Appc> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required string name = 1;
+      public static final int NAME_FIELD_NUMBER = 1;
+      private java.lang.Object name_;
+      /**
+       * <code>required string name = 1;</code>
+       *
+       * <pre>
+       * The name of the image.
+       * </pre>
+       */
+      public boolean hasName() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string name = 1;</code>
+       *
+       * <pre>
+       * The name of the image.
+       * </pre>
+       */
+      public java.lang.String getName() {
+        java.lang.Object ref = name_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            name_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>required string name = 1;</code>
+       *
+       * <pre>
+       * The name of the image.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        java.lang.Object ref = name_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          name_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      // optional string id = 2;
+      public static final int ID_FIELD_NUMBER = 2;
+      private java.lang.Object id_;
+      /**
+       * <code>optional string id = 2;</code>
+       *
+       * <pre>
+       * An image ID is a string of the format "hash-value", where
+       * "hash" is the hash algorithm used and "value" is the hex
+       * encoded string of the digest. Currently the only permitted
+       * hash algorithm is sha512.
+       * </pre>
+       */
+      public boolean hasId() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional string id = 2;</code>
+       *
+       * <pre>
+       * An image ID is a string of the format "hash-value", where
+       * "hash" is the hash algorithm used and "value" is the hex
+       * encoded string of the digest. Currently the only permitted
+       * hash algorithm is sha512.
+       * </pre>
+       */
+      public java.lang.String getId() {
+        java.lang.Object ref = id_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            id_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>optional string id = 2;</code>
+       *
+       * <pre>
+       * An image ID is a string of the format "hash-value", where
+       * "hash" is the hash algorithm used and "value" is the hex
+       * encoded string of the digest. Currently the only permitted
+       * hash algorithm is sha512.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getIdBytes() {
+        java.lang.Object ref = id_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          id_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      // optional .mesos.Labels labels = 3;
+      public static final int LABELS_FIELD_NUMBER = 3;
+      private org.apache.mesos.Protos.Labels labels_;
+      /**
+       * <code>optional .mesos.Labels labels = 3;</code>
+       *
+       * <pre>
+       * Optional labels. Suggested labels: "version", "os", and "arch".
+       * </pre>
+       */
+      public boolean hasLabels() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 3;</code>
+       *
+       * <pre>
+       * Optional labels. Suggested labels: "version", "os", and "arch".
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Labels getLabels() {
+        return labels_;
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 3;</code>
+       *
+       * <pre>
+       * Optional labels. Suggested labels: "version", "os", and "arch".
+       * </pre>
+       */
+      public org.apache.mesos.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+        return labels_;
+      }
+
+      private void initFields() {
+        name_ = "";
+        id_ = "";
+        labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasName()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (hasLabels()) {
+          if (!getLabels().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeBytes(1, getNameBytes());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeBytes(2, getIdBytes());
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeMessage(3, labels_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(1, getNameBytes());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(2, getIdBytes());
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(3, labels_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.Protos.Image.Appc parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.Image.Appc parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Image.Appc parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.Image.Appc parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Image.Appc parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.Image.Appc parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Image.Appc parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.Protos.Image.Appc parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Image.Appc parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.Image.Appc parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.Protos.Image.Appc prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.Image.Appc}
+       *
+       * <pre>
+       * Protobuf for specifying an Appc container image. See:
+       * https://github.com/appc/spec/blob/master/spec/aci.md
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.Protos.Image.AppcOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_Image_Appc_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_Image_Appc_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.Image.Appc.class, org.apache.mesos.Protos.Image.Appc.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.Protos.Image.Appc.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getLabelsFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          name_ = "";
+          bitField0_ = (bitField0_ & ~0x00000001);
+          id_ = "";
+          bitField0_ = (bitField0_ & ~0x00000002);
+          if (labelsBuilder_ == null) {
+            labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+          } else {
+            labelsBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.Protos.internal_static_mesos_Image_Appc_descriptor;
+        }
+
+        public org.apache.mesos.Protos.Image.Appc getDefaultInstanceForType() {
+          return org.apache.mesos.Protos.Image.Appc.getDefaultInstance();
+        }
+
+        public org.apache.mesos.Protos.Image.Appc build() {
+          org.apache.mesos.Protos.Image.Appc result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.Protos.Image.Appc buildPartial() {
+          org.apache.mesos.Protos.Image.Appc result = new org.apache.mesos.Protos.Image.Appc(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.name_ = name_;
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          result.id_ = id_;
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          if (labelsBuilder_ == null) {
+            result.labels_ = labels_;
+          } else {
+            result.labels_ = labelsBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.Protos.Image.Appc) {
+            return mergeFrom((org.apache.mesos.Protos.Image.Appc)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.Protos.Image.Appc other) {
+          if (other == org.apache.mesos.Protos.Image.Appc.getDefaultInstance()) return this;
+          if (other.hasName()) {
+            bitField0_ |= 0x00000001;
+            name_ = other.name_;
+            onChanged();
+          }
+          if (other.hasId()) {
+            bitField0_ |= 0x00000002;
+            id_ = other.id_;
+            onChanged();
+          }
+          if (other.hasLabels()) {
+            mergeLabels(other.getLabels());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasName()) {
+            
+            return false;
+          }
+          if (hasLabels()) {
+            if (!getLabels().isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.Protos.Image.Appc parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.Protos.Image.Appc) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required string name = 1;
+        private java.lang.Object name_ = "";
+        /**
+         * <code>required string name = 1;</code>
+         *
+         * <pre>
+         * The name of the image.
+         * </pre>
+         */
+        public boolean hasName() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required string name = 1;</code>
+         *
+         * <pre>
+         * The name of the image.
+         * </pre>
+         */
+        public java.lang.String getName() {
+          java.lang.Object ref = name_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            name_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>required string name = 1;</code>
+         *
+         * <pre>
+         * The name of the image.
+         * </pre>
+         */
+        public com.google.protobuf.ByteString
+            getNameBytes() {
+          java.lang.Object ref = name_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            name_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>required string name = 1;</code>
+         *
+         * <pre>
+         * The name of the image.
+         * </pre>
+         */
+        public Builder setName(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          name_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required string name = 1;</code>
+         *
+         * <pre>
+         * The name of the image.
+         * </pre>
+         */
+        public Builder clearName() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          name_ = getDefaultInstance().getName();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required string name = 1;</code>
+         *
+         * <pre>
+         * The name of the image.
+         * </pre>
+         */
+        public Builder setNameBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          name_ = value;
+          onChanged();
+          return this;
+        }
+
+        // optional string id = 2;
+        private java.lang.Object id_ = "";
+        /**
+         * <code>optional string id = 2;</code>
+         *
+         * <pre>
+         * An image ID is a string of the format "hash-value", where
+         * "hash" is the hash algorithm used and "value" is the hex
+         * encoded string of the digest. Currently the only permitted
+         * hash algorithm is sha512.
+         * </pre>
+         */
+        public boolean hasId() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional string id = 2;</code>
+         *
+         * <pre>
+         * An image ID is a string of the format "hash-value", where
+         * "hash" is the hash algorithm used and "value" is the hex
+         * encoded string of the digest. Currently the only permitted
+         * hash algorithm is sha512.
+         * </pre>
+         */
+        public java.lang.String getId() {
+          java.lang.Object ref = id_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            id_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>optional string id = 2;</code>
+         *
+         * <pre>
+         * An image ID is a string of the format "hash-value", where
+         * "hash" is the hash algorithm used and "value" is the hex
+         * encoded string of the digest. Currently the only permitted
+         * hash algorithm is sha512.
+         * </pre>
+         */
+        public com.google.protobuf.ByteString
+            getIdBytes() {
+          java.lang.Object ref = id_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            id_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>optional string id = 2;</code>
+         *
+         * <pre>
+         * An image ID is a string of the format "hash-value", where
+         * "hash" is the hash algorithm used and "value" is the hex
+         * encoded string of the digest. Currently the only permitted
+         * hash algorithm is sha512.
+         * </pre>
+         */
+        public Builder setId(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+          id_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string id = 2;</code>
+         *
+         * <pre>
+         * An image ID is a string of the format "hash-value", where
+         * "hash" is the hash algorithm used and "value" is the hex
+         * encoded string of the digest. Currently the only permitted
+         * hash algorithm is sha512.
+         * </pre>
+         */
+        public Builder clearId() {
+          bitField0_ = (bitField0_ & ~0x00000002);
+          id_ = getDefaultInstance().getId();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string id = 2;</code>
+         *
+         * <pre>
+         * An image ID is a string of the format "hash-value", where
+         * "hash" is the hash algorithm used and "value" is the hex
+         * encoded string of the digest. Currently the only permitted
+         * hash algorithm is sha512.
+         * </pre>
+         */
+        public Builder setIdBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+          id_ = value;
+          onChanged();
+          return this;
+        }
+
+        // optional .mesos.Labels labels = 3;
+        private org.apache.mesos.Protos.Labels labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Labels, org.apache.mesos.Protos.Labels.Builder, org.apache.mesos.Protos.LabelsOrBuilder> labelsBuilder_;
+        /**
+         * <code>optional .mesos.Labels labels = 3;</code>
+         *
+         * <pre>
+         * Optional labels. Suggested labels: "version", "os", and "arch".
+         * </pre>
+         */
+        public boolean hasLabels() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional .mesos.Labels labels = 3;</code>
+         *
+         * <pre>
+         * Optional labels. Suggested labels: "version", "os", and "arch".
+         * </pre>
+         */
+        public org.apache.mesos.Protos.Labels getLabels() {
+          if (labelsBuilder_ == null) {
+            return labels_;
+          } else {
+            return labelsBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.Labels labels = 3;</code>
+         *
+         * <pre>
+         * Optional labels. Suggested labels: "version", "os", and "arch".
+         * </pre>
+         */
+        public Builder setLabels(org.apache.mesos.Protos.Labels value) {
+          if (labelsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            labels_ = value;
+            onChanged();
+          } else {
+            labelsBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Labels labels = 3;</code>
+         *
+         * <pre>
+         * Optional labels. Suggested labels: "version", "os", and "arch".
+         * </pre>
+         */
+        public Builder setLabels(
+            org.apache.mesos.Protos.Labels.Builder builderForValue) {
+          if (labelsBuilder_ == null) {
+            labels_ = builderForValue.build();
+            onChanged();
+          } else {
+            labelsBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Labels labels = 3;</code>
+         *
+         * <pre>
+         * Optional labels. Suggested labels: "version", "os", and "arch".
+         * </pre>
+         */
+        public Builder mergeLabels(org.apache.mesos.Protos.Labels value) {
+          if (labelsBuilder_ == null) {
+            if (((bitField0_ & 0x00000004) == 0x00000004) &&
+                labels_ != org.apache.mesos.Protos.Labels.getDefaultInstance()) {
+              labels_ =
+                org.apache.mesos.Protos.Labels.newBuilder(labels_).mergeFrom(value).buildPartial();
+            } else {
+              labels_ = value;
+            }
+            onChanged();
+          } else {
+            labelsBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Labels labels = 3;</code>
+         *
+         * <pre>
+         * Optional labels. Suggested labels: "version", "os", and "arch".
+         * </pre>
+         */
+        public Builder clearLabels() {
+          if (labelsBuilder_ == null) {
+            labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+            onChanged();
+          } else {
+            labelsBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Labels labels = 3;</code>
+         *
+         * <pre>
+         * Optional labels. Suggested labels: "version", "os", and "arch".
+         * </pre>
+         */
+        public org.apache.mesos.Protos.Labels.Builder getLabelsBuilder() {
+          bitField0_ |= 0x00000004;
+          onChanged();
+          return getLabelsFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.Labels labels = 3;</code>
+         *
+         * <pre>
+         * Optional labels. Suggested labels: "version", "os", and "arch".
+         * </pre>
+         */
+        public org.apache.mesos.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+          if (labelsBuilder_ != null) {
+            return labelsBuilder_.getMessageOrBuilder();
+          } else {
+            return labels_;
+          }
+        }
+        /**
+         * <code>optional .mesos.Labels labels = 3;</code>
+         *
+         * <pre>
+         * Optional labels. Suggested labels: "version", "os", and "arch".
+         * </pre>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Labels, org.apache.mesos.Protos.Labels.Builder, org.apache.mesos.Protos.LabelsOrBuilder> 
+            getLabelsFieldBuilder() {
+          if (labelsBuilder_ == null) {
+            labelsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.Labels, org.apache.mesos.Protos.Labels.Builder, org.apache.mesos.Protos.LabelsOrBuilder>(
+                    labels_,
+                    getParentForChildren(),
+                    isClean());
+            labels_ = null;
+          }
+          return labelsBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.Image.Appc)
+      }
+
+      static {
+        defaultInstance = new Appc(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.Image.Appc)
+    }
+
+    public interface DockerOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required string name = 1;
+      /**
+       * <code>required string name = 1;</code>
+       *
+       * <pre>
+       * The name of the image. Expected format:
+       *   [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG|@TYPE:DIGEST]
+       *
+       * See: https://docs.docker.com/reference/commandline/pull/
+       * </pre>
+       */
+      boolean hasName();
+      /**
+       * <code>required string name = 1;</code>
+       *
+       * <pre>
+       * The name of the image. Expected format:
+       *   [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG|@TYPE:DIGEST]
+       *
+       * See: https://docs.docker.com/reference/commandline/pull/
+       * </pre>
+       */
+      java.lang.String getName();
+      /**
+       * <code>required string name = 1;</code>
+       *
+       * <pre>
+       * The name of the image. Expected format:
+       *   [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG|@TYPE:DIGEST]
+       *
+       * See: https://docs.docker.com/reference/commandline/pull/
+       * </pre>
+       */
+      com.google.protobuf.ByteString
+          getNameBytes();
+
+      // optional .mesos.Credential credential = 2 [deprecated = true];
+      /**
+       * <code>optional .mesos.Credential credential = 2 [deprecated = true];</code>
+       *
+       * <pre>
+       * Credential to authenticate with docker registry.
+       * NOTE: This is not encrypted, therefore framework and operators
+       * should enable SSL when passing this information.
+       *
+       * This field has never been used in Mesos before and is
+       * deprecated since Mesos 1.3. Please use `config` below
+       * (see MESOS-7088 for details).
+       * </pre>
+       */
+      @java.lang.Deprecated boolean hasCredential();
+      /**
+       * <code>optional .mesos.Credential credential = 2 [deprecated = true];</code>
+       *
+       * <pre>
+       * Credential to authenticate with docker registry.
+       * NOTE: This is not encrypted, therefore framework and operators
+       * should enable SSL when passing this information.
+       *
+       * This field has never been used in Mesos before and is
+       * deprecated since Mesos 1.3. Please use `config` below
+       * (see MESOS-7088 for details).
+       * </pre>
+       */
+      @java.lang.Deprecated org.apache.mesos.Protos.Credential getCredential();
+      /**
+       * <code>optional .mesos.Credential credential = 2 [deprecated = true];</code>
+       *
+       * <pre>
+       * Credential to authenticate with docker registry.
+       * NOTE: This is not encrypted, therefore framework and operators
+       * should enable SSL when passing this information.
+       *
+       * This field has never been used in Mesos before and is
+       * deprecated since Mesos 1.3. Please use `config` below
+       * (see MESOS-7088 for details).
+       * </pre>
+       */
+      @java.lang.Deprecated org.apache.mesos.Protos.CredentialOrBuilder getCredentialOrBuilder();
+
+      // optional .mesos.Secret config = 3;
+      /**
+       * <code>optional .mesos.Secret config = 3;</code>
+       *
+       * <pre>
+       * Docker config containing credentails to authenticate with
+       * docker registry. The secret is expected to be a docker
+       * config file in JSON format with UTF-8 character encoding.
+       * </pre>
+       */
+      boolean hasConfig();
+      /**
+       * <code>optional .mesos.Secret config = 3;</code>
+       *
+       * <pre>
+       * Docker config containing credentails to authenticate with
+       * docker registry. The secret is expected to be a docker
+       * config file in JSON format with UTF-8 character encoding.
+       * </pre>
+       */
+      org.apache.mesos.Protos.Secret getConfig();
+      /**
+       * <code>optional .mesos.Secret config = 3;</code>
+       *
+       * <pre>
+       * Docker config containing credentails to authenticate with
+       * docker registry. The secret is expected to be a docker
+       * config file in JSON format with UTF-8 character encoding.
+       * </pre>
+       */
+      org.apache.mesos.Protos.SecretOrBuilder getConfigOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.Image.Docker}
+     */
+    public static final class Docker extends
+        com.google.protobuf.GeneratedMessage
+        implements DockerOrBuilder {
+      // Use Docker.newBuilder() to construct.
+      private Docker(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Docker(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Docker defaultInstance;
+      public static Docker getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Docker getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Docker(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                bitField0_ |= 0x00000001;
+                name_ = input.readBytes();
+                break;
+              }
+              case 18: {
+                org.apache.mesos.Protos.Credential.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                  subBuilder = credential_.toBuilder();
+                }
+                credential_ = input.readMessage(org.apache.mesos.Protos.Credential.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(credential_);
+                  credential_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000002;
+                break;
+              }
+              case 26: {
+                org.apache.mesos.Protos.Secret.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                  subBuilder = config_.toBuilder();
+                }
+                config_ = input.readMessage(org.apache.mesos.Protos.Secret.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(config_);
+                  config_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000004;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_Image_Docker_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_Image_Docker_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.Image.Docker.class, org.apache.mesos.Protos.Image.Docker.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Docker> PARSER =
+          new com.google.protobuf.AbstractParser<Docker>() {
+        public Docker parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Docker(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Docker> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required string name = 1;
+      public static final int NAME_FIELD_NUMBER = 1;
+      private java.lang.Object name_;
+      /**
+       * <code>required string name = 1;</code>
+       *
+       * <pre>
+       * The name of the image. Expected format:
+       *   [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG|@TYPE:DIGEST]
+       *
+       * See: https://docs.docker.com/reference/commandline/pull/
+       * </pre>
+       */
+      public boolean hasName() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string name = 1;</code>
+       *
+       * <pre>
+       * The name of the image. Expected format:
+       *   [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG|@TYPE:DIGEST]
+       *
+       * See: https://docs.docker.com/reference/commandline/pull/
+       * </pre>
+       */
+      public java.lang.String getName() {
+        java.lang.Object ref = name_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            name_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>required string name = 1;</code>
+       *
+       * <pre>
+       * The name of the image. Expected format:
+       *   [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG|@TYPE:DIGEST]
+       *
+       * See: https://docs.docker.com/reference/commandline/pull/
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        java.lang.Object ref = name_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          name_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      // optional .mesos.Credential credential = 2 [deprecated = true];
+      public static final int CREDENTIAL_FIELD_NUMBER = 2;
+      private org.apache.mesos.Protos.Credential credential_;
+      /**
+       * <code>optional .mesos.Credential credential = 2 [deprecated = true];</code>
+       *
+       * <pre>
+       * Credential to authenticate with docker registry.
+       * NOTE: This is not encrypted, therefore framework and operators
+       * should enable SSL when passing this information.
+       *
+       * This field has never been used in Mesos before and is
+       * deprecated since Mesos 1.3. Please use `config` below
+       * (see MESOS-7088 for details).
+       * </pre>
+       */
+      @java.lang.Deprecated public boolean hasCredential() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.Credential credential = 2 [deprecated = true];</code>
+       *
+       * <pre>
+       * Credential to authenticate with docker registry.
+       * NOTE: This is not encrypted, therefore framework and operators
+       * should enable SSL when passing this information.
+       *
+       * This field has never been used in Mesos before and is
+       * deprecated since Mesos 1.3. Please use `config` below
+       * (see MESOS-7088 for details).
+       * </pre>
+       */
+      @java.lang.Deprecated public org.apache.mesos.Protos.Credential getCredential() {
+        return credential_;
+      }
+      /**
+       * <code>optional .mesos.Credential credential = 2 [deprecated = true];</code>
+       *
+       * <pre>
+       * Credential to authenticate with docker registry.
+       * NOTE: This is not encrypted, therefore framework and operators
+       * should enable SSL when passing this information.
+       *
+       * This field has never been used in Mesos before and is
+       * deprecated since Mesos 1.3. Please use `config` below
+       * (see MESOS-7088 for details).
+       * </pre>
+       */
+      @java.lang.Deprecated public org.apache.mesos.Protos.CredentialOrBuilder getCredentialOrBuilder() {
+        return credential_;
+      }
+
+      // optional .mesos.Secret config = 3;
+      public static final int CONFIG_FIELD_NUMBER = 3;
+      private org.apache.mesos.Protos.Secret config_;
+      /**
+       * <code>optional .mesos.Secret config = 3;</code>
+       *
+       * <pre>
+       * Docker config containing credentails to authenticate with
+       * docker registry. The secret is expected to be a docker
+       * config file in JSON format with UTF-8 character encoding.
+       * </pre>
+       */
+      public boolean hasConfig() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.Secret config = 3;</code>
+       *
+       * <pre>
+       * Docker config containing credentails to authenticate with
+       * docker registry. The secret is expected to be a docker
+       * config file in JSON format with UTF-8 character encoding.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Secret getConfig() {
+        return config_;
+      }
+      /**
+       * <code>optional .mesos.Secret config = 3;</code>
+       *
+       * <pre>
+       * Docker config containing credentails to authenticate with
+       * docker registry. The secret is expected to be a docker
+       * config file in JSON format with UTF-8 character encoding.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.SecretOrBuilder getConfigOrBuilder() {
+        return config_;
+      }
+
+      private void initFields() {
+        name_ = "";
+        credential_ = org.apache.mesos.Protos.Credential.getDefaultInstance();
+        config_ = org.apache.mesos.Protos.Secret.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasName()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (hasCredential()) {
+          if (!getCredential().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        if (hasConfig()) {
+          if (!getConfig().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeBytes(1, getNameBytes());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeMessage(2, credential_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeMessage(3, config_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(1, getNameBytes());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(2, credential_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(3, config_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.Protos.Image.Docker parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.Image.Docker parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Image.Docker parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.Image.Docker parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Image.Docker parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.Image.Docker parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Image.Docker parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.Protos.Image.Docker parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Image.Docker parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.Image.Docker parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.Protos.Image.Docker prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.Image.Docker}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.Protos.Image.DockerOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_Image_Docker_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_Image_Docker_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.Image.Docker.class, org.apache.mesos.Protos.Image.Docker.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.Protos.Image.Docker.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getCredentialFieldBuilder();
+            getConfigFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          name_ = "";
+          bitField0_ = (bitField0_ & ~0x00000001);
+          if (credentialBuilder_ == null) {
+            credential_ = org.apache.mesos.Protos.Credential.getDefaultInstance();
+          } else {
+            credentialBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          if (configBuilder_ == null) {
+            config_ = org.apache.mesos.Protos.Secret.getDefaultInstance();
+          } else {
+            configBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.Protos.internal_static_mesos_Image_Docker_descriptor;
+        }
+
+        public org.apache.mesos.Protos.Image.Docker getDefaultInstanceForType() {
+          return org.apache.mesos.Protos.Image.Docker.getDefaultInstance();
+        }
+
+        public org.apache.mesos.Protos.Image.Docker build() {
+          org.apache.mesos.Protos.Image.Docker result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.Protos.Image.Docker buildPartial() {
+          org.apache.mesos.Protos.Image.Docker result = new org.apache.mesos.Protos.Image.Docker(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.name_ = name_;
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          if (credentialBuilder_ == null) {
+            result.credential_ = credential_;
+          } else {
+            result.credential_ = credentialBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          if (configBuilder_ == null) {
+            result.config_ = config_;
+          } else {
+            result.config_ = configBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.Protos.Image.Docker) {
+            return mergeFrom((org.apache.mesos.Protos.Image.Docker)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.Protos.Image.Docker other) {
+          if (other == org.apache.mesos.Protos.Image.Docker.getDefaultInstance()) return this;
+          if (other.hasName()) {
+            bitField0_ |= 0x00000001;
+            name_ = other.name_;
+            onChanged();
+          }
+          if (other.hasCredential()) {
+            mergeCredential(other.getCredential());
+          }
+          if (other.hasConfig()) {
+            mergeConfig(other.getConfig());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasName()) {
+            
+            return false;
+          }
+          if (hasCredential()) {
+            if (!getCredential().isInitialized()) {
+              
+              return false;
+            }
+          }
+          if (hasConfig()) {
+            if (!getConfig().isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.Protos.Image.Docker parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.Protos.Image.Docker) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required string name = 1;
+        private java.lang.Object name_ = "";
+        /**
+         * <code>required string name = 1;</code>
+         *
+         * <pre>
+         * The name of the image. Expected format:
+         *   [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG|@TYPE:DIGEST]
+         *
+         * See: https://docs.docker.com/reference/commandline/pull/
+         * </pre>
+         */
+        public boolean hasName() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required string name = 1;</code>
+         *
+         * <pre>
+         * The name of the image. Expected format:
+         *   [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG|@TYPE:DIGEST]
+         *
+         * See: https://docs.docker.com/reference/commandline/pull/
+         * </pre>
+         */
+        public java.lang.String getName() {
+          java.lang.Object ref = name_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            name_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>required string name = 1;</code>
+         *
+         * <pre>
+         * The name of the image. Expected format:
+         *   [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG|@TYPE:DIGEST]
+         *
+         * See: https://docs.docker.com/reference/commandline/pull/
+         * </pre>
+         */
+        public com.google.protobuf.ByteString
+            getNameBytes() {
+          java.lang.Object ref = name_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            name_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>required string name = 1;</code>
+         *
+         * <pre>
+         * The name of the image. Expected format:
+         *   [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG|@TYPE:DIGEST]
+         *
+         * See: https://docs.docker.com/reference/commandline/pull/
+         * </pre>
+         */
+        public Builder setName(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          name_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required string name = 1;</code>
+         *
+         * <pre>
+         * The name of the image. Expected format:
+         *   [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG|@TYPE:DIGEST]
+         *
+         * See: https://docs.docker.com/reference/commandline/pull/
+         * </pre>
+         */
+        public Builder clearName() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          name_ = getDefaultInstance().getName();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required string name = 1;</code>
+         *
+         * <pre>
+         * The name of the image. Expected format:
+         *   [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG|@TYPE:DIGEST]
+         *
+         * See: https://docs.docker.com/reference/commandline/pull/
+         * </pre>
+         */
+        public Builder setNameBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          name_ = value;
+          onChanged();
+          return this;
+        }
+
+        // optional .mesos.Credential credential = 2 [deprecated = true];
+        private org.apache.mesos.Protos.Credential credential_ = org.apache.mesos.Protos.Credential.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Credential, org.apache.mesos.Protos.Credential.Builder, org.apache.mesos.Protos.CredentialOrBuilder> credentialBuilder_;
+        /**
+         * <code>optional .mesos.Credential credential = 2 [deprecated = true];</code>
+         *
+         * <pre>
+         * Credential to authenticate with docker registry.
+         * NOTE: This is not encrypted, therefore framework and operators
+         * should enable SSL when passing this information.
+         *
+         * This field has never been used in Mesos before and is
+         * deprecated since Mesos 1.3. Please use `config` below
+         * (see MESOS-7088 for details).
+         * </pre>
+         */
+        @java.lang.Deprecated public boolean hasCredential() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional .mesos.Credential credential = 2 [deprecated = true];</code>
+         *
+         * <pre>
+         * Credential to authenticate with docker registry.
+         * NOTE: This is not encrypted, therefore framework and operators
+         * should enable SSL when passing this information.
+         *
+         * This field has never been used in Mesos before and is
+         * deprecated since Mesos 1.3. Please use `config` below
+         * (see MESOS-7088 for details).
+         * </pre>
+         */
+        @java.lang.Deprecated public org.apache.mesos.Protos.Credential getCredential() {
+          if (credentialBuilder_ == null) {
+            return credential_;
+          } else {
+            return credentialBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.Credential credential = 2 [deprecated = true];</code>
+         *
+         * <pre>
+         * Credential to authenticate with docker registry.
+         * NOTE: This is not encrypted, therefore framework and operators
+         * should enable SSL when passing this information.
+         *
+         * This field has never been used in Mesos before and is
+         * deprecated since Mesos 1.3. Please use `config` below
+         * (see MESOS-7088 for details).
+         * </pre>
+         */
+        @java.lang.Deprecated public Builder setCredential(org.apache.mesos.Protos.Credential value) {
+          if (credentialBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            credential_ = value;
+            onChanged();
+          } else {
+            credentialBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Credential credential = 2 [deprecated = true];</code>
+         *
+         * <pre>
+         * Credential to authenticate with docker registry.
+         * NOTE: This is not encrypted, therefore framework and operators
+         * should enable SSL when passing this information.
+         *
+         * This field has never been used in Mesos before and is
+         * deprecated since Mesos 1.3. Please use `config` below
+         * (see MESOS-7088 for details).
+         * </pre>
+         */
+        @java.lang.Deprecated public Builder setCredential(
+            org.apache.mesos.Protos.Credential.Builder builderForValue) {
+          if (credentialBuilder_ == null) {
+            credential_ = builderForValue.build();
+            onChanged();
+          } else {
+            credentialBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Credential credential = 2 [deprecated = true];</code>
+         *
+         * <pre>
+         * Credential to authenticate with docker registry.
+         * NOTE: This is not encrypted, therefore framework and operators
+         * should enable SSL when passing this information.
+         *
+         * This field has never been used in Mesos before and is
+         * deprecated since Mesos 1.3. Please use `config` below
+         * (see MESOS-7088 for details).
+         * </pre>
+         */
+        @java.lang.Deprecated public Builder mergeCredential(org.apache.mesos.Protos.Credential value) {
+          if (credentialBuilder_ == null) {
+            if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                credential_ != org.apache.mesos.Protos.Credential.getDefaultInstance()) {
+              credential_ =
+                org.apache.mesos.Protos.Credential.newBuilder(credential_).mergeFrom(value).buildPartial();
+            } else {
+              credential_ = value;
+            }
+            onChanged();
+          } else {
+            credentialBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Credential credential = 2 [deprecated = true];</code>
+         *
+         * <pre>
+         * Credential to authenticate with docker registry.
+         * NOTE: This is not encrypted, therefore framework and operators
+         * should enable SSL when passing this information.
+         *
+         * This field has never been used in Mesos before and is
+         * deprecated since Mesos 1.3. Please use `config` below
+         * (see MESOS-7088 for details).
+         * </pre>
+         */
+        @java.lang.Deprecated public Builder clearCredential() {
+          if (credentialBuilder_ == null) {
+            credential_ = org.apache.mesos.Protos.Credential.getDefaultInstance();
+            onChanged();
+          } else {
+            credentialBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Credential credential = 2 [deprecated = true];</code>
+         *
+         * <pre>
+         * Credential to authenticate with docker registry.
+         * NOTE: This is not encrypted, therefore framework and operators
+         * should enable SSL when passing this information.
+         *
+         * This field has never been used in Mesos before and is
+         * deprecated since Mesos 1.3. Please use `config` below
+         * (see MESOS-7088 for details).
+         * </pre>
+         */
+        @java.lang.Deprecated public org.apache.mesos.Protos.Credential.Builder getCredentialBuilder() {
+          bitField0_ |= 0x00000002;
+          onChanged();
+          return getCredentialFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.Credential credential = 2 [deprecated = true];</code>
+         *
+         * <pre>
+         * Credential to authenticate with docker registry.
+         * NOTE: This is not encrypted, therefore framework and operators
+         * should enable SSL when passing this information.
+         *
+         * This field has never been used in Mesos before and is
+         * deprecated since Mesos 1.3. Please use `config` below
+         * (see MESOS-7088 for details).
+         * </pre>
+         */
+        @java.lang.Deprecated public org.apache.mesos.Protos.CredentialOrBuilder getCredentialOrBuilder() {
+          if (credentialBuilder_ != null) {
+            return credentialBuilder_.getMessageOrBuilder();
+          } else {
+            return credential_;
+          }
+        }
+        /**
+         * <code>optional .mesos.Credential credential = 2 [deprecated = true];</code>
+         *
+         * <pre>
+         * Credential to authenticate with docker registry.
+         * NOTE: This is not encrypted, therefore framework and operators
+         * should enable SSL when passing this information.
+         *
+         * This field has never been used in Mesos before and is
+         * deprecated since Mesos 1.3. Please use `config` below
+         * (see MESOS-7088 for details).
+         * </pre>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Credential, org.apache.mesos.Protos.Credential.Builder, org.apache.mesos.Protos.CredentialOrBuilder> 
+            getCredentialFieldBuilder() {
+          if (credentialBuilder_ == null) {
+            credentialBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.Credential, org.apache.mesos.Protos.Credential.Builder, org.apache.mesos.Protos.CredentialOrBuilder>(
+                    credential_,
+                    getParentForChildren(),
+                    isClean());
+            credential_ = null;
+          }
+          return credentialBuilder_;
+        }
+
+        // optional .mesos.Secret config = 3;
+        private org.apache.mesos.Protos.Secret config_ = org.apache.mesos.Protos.Secret.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Secret, org.apache.mesos.Protos.Secret.Builder, org.apache.mesos.Protos.SecretOrBuilder> configBuilder_;
+        /**
+         * <code>optional .mesos.Secret config = 3;</code>
+         *
+         * <pre>
+         * Docker config containing credentails to authenticate with
+         * docker registry. The secret is expected to be a docker
+         * config file in JSON format with UTF-8 character encoding.
+         * </pre>
+         */
+        public boolean hasConfig() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional .mesos.Secret config = 3;</code>
+         *
+         * <pre>
+         * Docker config containing credentails to authenticate with
+         * docker registry. The secret is expected to be a docker
+         * config file in JSON format with UTF-8 character encoding.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.Secret getConfig() {
+          if (configBuilder_ == null) {
+            return config_;
+          } else {
+            return configBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.Secret config = 3;</code>
+         *
+         * <pre>
+         * Docker config containing credentails to authenticate with
+         * docker registry. The secret is expected to be a docker
+         * config file in JSON format with UTF-8 character encoding.
+         * </pre>
+         */
+        public Builder setConfig(org.apache.mesos.Protos.Secret value) {
+          if (configBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            config_ = value;
+            onChanged();
+          } else {
+            configBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Secret config = 3;</code>
+         *
+         * <pre>
+         * Docker config containing credentails to authenticate with
+         * docker registry. The secret is expected to be a docker
+         * config file in JSON format with UTF-8 character encoding.
+         * </pre>
+         */
+        public Builder setConfig(
+            org.apache.mesos.Protos.Secret.Builder builderForValue) {
+          if (configBuilder_ == null) {
+            config_ = builderForValue.build();
+            onChanged();
+          } else {
+            configBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Secret config = 3;</code>
+         *
+         * <pre>
+         * Docker config containing credentails to authenticate with
+         * docker registry. The secret is expected to be a docker
+         * config file in JSON format with UTF-8 character encoding.
+         * </pre>
+         */
+        public Builder mergeConfig(org.apache.mesos.Protos.Secret value) {
+          if (configBuilder_ == null) {
+            if (((bitField0_ & 0x00000004) == 0x00000004) &&
+                config_ != org.apache.mesos.Protos.Secret.getDefaultInstance()) {
+              config_ =
+                org.apache.mesos.Protos.Secret.newBuilder(config_).mergeFrom(value).buildPartial();
+            } else {
+              config_ = value;
+            }
+            onChanged();
+          } else {
+            configBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Secret config = 3;</code>
+         *
+         * <pre>
+         * Docker config containing credentails to authenticate with
+         * docker registry. The secret is expected to be a docker
+         * config file in JSON format with UTF-8 character encoding.
+         * </pre>
+         */
+        public Builder clearConfig() {
+          if (configBuilder_ == null) {
+            config_ = org.apache.mesos.Protos.Secret.getDefaultInstance();
+            onChanged();
+          } else {
+            configBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Secret config = 3;</code>
+         *
+         * <pre>
+         * Docker config containing credentails to authenticate with
+         * docker registry. The secret is expected to be a docker
+         * config file in JSON format with UTF-8 character encoding.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.Secret.Builder getConfigBuilder() {
+          bitField0_ |= 0x00000004;
+          onChanged();
+          return getConfigFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.Secret config = 3;</code>
+         *
+         * <pre>
+         * Docker config containing credentails to authenticate with
+         * docker registry. The secret is expected to be a docker
+         * config file in JSON format with UTF-8 character encoding.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.SecretOrBuilder getConfigOrBuilder() {
+          if (configBuilder_ != null) {
+            return configBuilder_.getMessageOrBuilder();
+          } else {
+            return config_;
+          }
+        }
+        /**
+         * <code>optional .mesos.Secret config = 3;</code>
+         *
+         * <pre>
+         * Docker config containing credentails to authenticate with
+         * docker registry. The secret is expected to be a docker
+         * config file in JSON format with UTF-8 character encoding.
+         * </pre>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Secret, org.apache.mesos.Protos.Secret.Builder, org.apache.mesos.Protos.SecretOrBuilder> 
+            getConfigFieldBuilder() {
+          if (configBuilder_ == null) {
+            configBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.Secret, org.apache.mesos.Protos.Secret.Builder, org.apache.mesos.Protos.SecretOrBuilder>(
+                    config_,
+                    getParentForChildren(),
+                    isClean());
+            config_ = null;
+          }
+          return configBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.Image.Docker)
+      }
+
+      static {
+        defaultInstance = new Docker(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.Image.Docker)
+    }
+
+    private int bitField0_;
+    // required .mesos.Image.Type type = 1;
+    public static final int TYPE_FIELD_NUMBER = 1;
+    private org.apache.mesos.Protos.Image.Type type_;
+    /**
+     * <code>required .mesos.Image.Type type = 1;</code>
+     */
+    public boolean hasType() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required .mesos.Image.Type type = 1;</code>
+     */
+    public org.apache.mesos.Protos.Image.Type getType() {
+      return type_;
+    }
+
+    // optional .mesos.Image.Appc appc = 2;
+    public static final int APPC_FIELD_NUMBER = 2;
+    private org.apache.mesos.Protos.Image.Appc appc_;
+    /**
+     * <code>optional .mesos.Image.Appc appc = 2;</code>
+     *
+     * <pre>
+     * Only one of the following image messages should be set to match
+     * the type.
+     * </pre>
+     */
+    public boolean hasAppc() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional .mesos.Image.Appc appc = 2;</code>
+     *
+     * <pre>
+     * Only one of the following image messages should be set to match
+     * the type.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.Image.Appc getAppc() {
+      return appc_;
+    }
+    /**
+     * <code>optional .mesos.Image.Appc appc = 2;</code>
+     *
+     * <pre>
+     * Only one of the following image messages should be set to match
+     * the type.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.Image.AppcOrBuilder getAppcOrBuilder() {
+      return appc_;
+    }
+
+    // optional .mesos.Image.Docker docker = 3;
+    public static final int DOCKER_FIELD_NUMBER = 3;
+    private org.apache.mesos.Protos.Image.Docker docker_;
+    /**
+     * <code>optional .mesos.Image.Docker docker = 3;</code>
+     */
+    public boolean hasDocker() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional .mesos.Image.Docker docker = 3;</code>
+     */
+    public org.apache.mesos.Protos.Image.Docker getDocker() {
+      return docker_;
+    }
+    /**
+     * <code>optional .mesos.Image.Docker docker = 3;</code>
+     */
+    public org.apache.mesos.Protos.Image.DockerOrBuilder getDockerOrBuilder() {
+      return docker_;
+    }
+
+    // optional bool cached = 4 [default = true];
+    public static final int CACHED_FIELD_NUMBER = 4;
+    private boolean cached_;
+    /**
+     * <code>optional bool cached = 4 [default = true];</code>
+     *
+     * <pre>
+     * With this flag set to false, the mesos containerizer will pull
+     * the docker/appc image from the registry even if the image is
+     * already downloaded on the agent.
+     * </pre>
+     */
+    public boolean hasCached() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional bool cached = 4 [default = true];</code>
+     *
+     * <pre>
+     * With this flag set to false, the mesos containerizer will pull
+     * the docker/appc image from the registry even if the image is
+     * already downloaded on the agent.
+     * </pre>
+     */
+    public boolean getCached() {
+      return cached_;
+    }
+
+    private void initFields() {
+      type_ = org.apache.mesos.Protos.Image.Type.APPC;
+      appc_ = org.apache.mesos.Protos.Image.Appc.getDefaultInstance();
+      docker_ = org.apache.mesos.Protos.Image.Docker.getDefaultInstance();
+      cached_ = true;
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasType()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (hasAppc()) {
+        if (!getAppc().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasDocker()) {
+        if (!getDocker().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeEnum(1, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(2, appc_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeMessage(3, docker_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeBool(4, cached_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(1, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, appc_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, docker_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(4, cached_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.Image parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Image parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Image parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Image parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Image parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Image parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Image parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.Image parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Image parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Image parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.Image prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.Image}
+     *
+     * <pre>
+     **
+     * Describe an image used by tasks or executors. Note that it's only
+     * for tasks or executors launched by MesosContainerizer currently.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.ImageOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_Image_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_Image_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.Image.class, org.apache.mesos.Protos.Image.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.Image.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getAppcFieldBuilder();
+          getDockerFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        type_ = org.apache.mesos.Protos.Image.Type.APPC;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (appcBuilder_ == null) {
+          appc_ = org.apache.mesos.Protos.Image.Appc.getDefaultInstance();
+        } else {
+          appcBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        if (dockerBuilder_ == null) {
+          docker_ = org.apache.mesos.Protos.Image.Docker.getDefaultInstance();
+        } else {
+          dockerBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        cached_ = true;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_Image_descriptor;
+      }
+
+      public org.apache.mesos.Protos.Image getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.Image.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.Image build() {
+        org.apache.mesos.Protos.Image result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.Image buildPartial() {
+        org.apache.mesos.Protos.Image result = new org.apache.mesos.Protos.Image(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.type_ = type_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (appcBuilder_ == null) {
+          result.appc_ = appc_;
+        } else {
+          result.appc_ = appcBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        if (dockerBuilder_ == null) {
+          result.docker_ = docker_;
+        } else {
+          result.docker_ = dockerBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.cached_ = cached_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.Image) {
+          return mergeFrom((org.apache.mesos.Protos.Image)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.Image other) {
+        if (other == org.apache.mesos.Protos.Image.getDefaultInstance()) return this;
+        if (other.hasType()) {
+          setType(other.getType());
+        }
+        if (other.hasAppc()) {
+          mergeAppc(other.getAppc());
+        }
+        if (other.hasDocker()) {
+          mergeDocker(other.getDocker());
+        }
+        if (other.hasCached()) {
+          setCached(other.getCached());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasType()) {
+          
+          return false;
+        }
+        if (hasAppc()) {
+          if (!getAppc().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasDocker()) {
+          if (!getDocker().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.Image parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.Image) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required .mesos.Image.Type type = 1;
+      private org.apache.mesos.Protos.Image.Type type_ = org.apache.mesos.Protos.Image.Type.APPC;
+      /**
+       * <code>required .mesos.Image.Type type = 1;</code>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.Image.Type type = 1;</code>
+       */
+      public org.apache.mesos.Protos.Image.Type getType() {
+        return type_;
+      }
+      /**
+       * <code>required .mesos.Image.Type type = 1;</code>
+       */
+      public Builder setType(org.apache.mesos.Protos.Image.Type value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000001;
+        type_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required .mesos.Image.Type type = 1;</code>
+       */
+      public Builder clearType() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        type_ = org.apache.mesos.Protos.Image.Type.APPC;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.Image.Appc appc = 2;
+      private org.apache.mesos.Protos.Image.Appc appc_ = org.apache.mesos.Protos.Image.Appc.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Image.Appc, org.apache.mesos.Protos.Image.Appc.Builder, org.apache.mesos.Protos.Image.AppcOrBuilder> appcBuilder_;
+      /**
+       * <code>optional .mesos.Image.Appc appc = 2;</code>
+       *
+       * <pre>
+       * Only one of the following image messages should be set to match
+       * the type.
+       * </pre>
+       */
+      public boolean hasAppc() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.Image.Appc appc = 2;</code>
+       *
+       * <pre>
+       * Only one of the following image messages should be set to match
+       * the type.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Image.Appc getAppc() {
+        if (appcBuilder_ == null) {
+          return appc_;
+        } else {
+          return appcBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.Image.Appc appc = 2;</code>
+       *
+       * <pre>
+       * Only one of the following image messages should be set to match
+       * the type.
+       * </pre>
+       */
+      public Builder setAppc(org.apache.mesos.Protos.Image.Appc value) {
+        if (appcBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          appc_ = value;
+          onChanged();
+        } else {
+          appcBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Image.Appc appc = 2;</code>
+       *
+       * <pre>
+       * Only one of the following image messages should be set to match
+       * the type.
+       * </pre>
+       */
+      public Builder setAppc(
+          org.apache.mesos.Protos.Image.Appc.Builder builderForValue) {
+        if (appcBuilder_ == null) {
+          appc_ = builderForValue.build();
+          onChanged();
+        } else {
+          appcBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Image.Appc appc = 2;</code>
+       *
+       * <pre>
+       * Only one of the following image messages should be set to match
+       * the type.
+       * </pre>
+       */
+      public Builder mergeAppc(org.apache.mesos.Protos.Image.Appc value) {
+        if (appcBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              appc_ != org.apache.mesos.Protos.Image.Appc.getDefaultInstance()) {
+            appc_ =
+              org.apache.mesos.Protos.Image.Appc.newBuilder(appc_).mergeFrom(value).buildPartial();
+          } else {
+            appc_ = value;
+          }
+          onChanged();
+        } else {
+          appcBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Image.Appc appc = 2;</code>
+       *
+       * <pre>
+       * Only one of the following image messages should be set to match
+       * the type.
+       * </pre>
+       */
+      public Builder clearAppc() {
+        if (appcBuilder_ == null) {
+          appc_ = org.apache.mesos.Protos.Image.Appc.getDefaultInstance();
+          onChanged();
+        } else {
+          appcBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Image.Appc appc = 2;</code>
+       *
+       * <pre>
+       * Only one of the following image messages should be set to match
+       * the type.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Image.Appc.Builder getAppcBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getAppcFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.Image.Appc appc = 2;</code>
+       *
+       * <pre>
+       * Only one of the following image messages should be set to match
+       * the type.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Image.AppcOrBuilder getAppcOrBuilder() {
+        if (appcBuilder_ != null) {
+          return appcBuilder_.getMessageOrBuilder();
+        } else {
+          return appc_;
+        }
+      }
+      /**
+       * <code>optional .mesos.Image.Appc appc = 2;</code>
+       *
+       * <pre>
+       * Only one of the following image messages should be set to match
+       * the type.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Image.Appc, org.apache.mesos.Protos.Image.Appc.Builder, org.apache.mesos.Protos.Image.AppcOrBuilder> 
+          getAppcFieldBuilder() {
+        if (appcBuilder_ == null) {
+          appcBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Image.Appc, org.apache.mesos.Protos.Image.Appc.Builder, org.apache.mesos.Protos.Image.AppcOrBuilder>(
+                  appc_,
+                  getParentForChildren(),
+                  isClean());
+          appc_ = null;
+        }
+        return appcBuilder_;
+      }
+
+      // optional .mesos.Image.Docker docker = 3;
+      private org.apache.mesos.Protos.Image.Docker docker_ = org.apache.mesos.Protos.Image.Docker.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Image.Docker, org.apache.mesos.Protos.Image.Docker.Builder, org.apache.mesos.Protos.Image.DockerOrBuilder> dockerBuilder_;
+      /**
+       * <code>optional .mesos.Image.Docker docker = 3;</code>
+       */
+      public boolean hasDocker() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.Image.Docker docker = 3;</code>
+       */
+      public org.apache.mesos.Protos.Image.Docker getDocker() {
+        if (dockerBuilder_ == null) {
+          return docker_;
+        } else {
+          return dockerBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.Image.Docker docker = 3;</code>
+       */
+      public Builder setDocker(org.apache.mesos.Protos.Image.Docker value) {
+        if (dockerBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          docker_ = value;
+          onChanged();
+        } else {
+          dockerBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Image.Docker docker = 3;</code>
+       */
+      public Builder setDocker(
+          org.apache.mesos.Protos.Image.Docker.Builder builderForValue) {
+        if (dockerBuilder_ == null) {
+          docker_ = builderForValue.build();
+          onChanged();
+        } else {
+          dockerBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Image.Docker docker = 3;</code>
+       */
+      public Builder mergeDocker(org.apache.mesos.Protos.Image.Docker value) {
+        if (dockerBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) == 0x00000004) &&
+              docker_ != org.apache.mesos.Protos.Image.Docker.getDefaultInstance()) {
+            docker_ =
+              org.apache.mesos.Protos.Image.Docker.newBuilder(docker_).mergeFrom(value).buildPartial();
+          } else {
+            docker_ = value;
+          }
+          onChanged();
+        } else {
+          dockerBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Image.Docker docker = 3;</code>
+       */
+      public Builder clearDocker() {
+        if (dockerBuilder_ == null) {
+          docker_ = org.apache.mesos.Protos.Image.Docker.getDefaultInstance();
+          onChanged();
+        } else {
+          dockerBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Image.Docker docker = 3;</code>
+       */
+      public org.apache.mesos.Protos.Image.Docker.Builder getDockerBuilder() {
+        bitField0_ |= 0x00000004;
+        onChanged();
+        return getDockerFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.Image.Docker docker = 3;</code>
+       */
+      public org.apache.mesos.Protos.Image.DockerOrBuilder getDockerOrBuilder() {
+        if (dockerBuilder_ != null) {
+          return dockerBuilder_.getMessageOrBuilder();
+        } else {
+          return docker_;
+        }
+      }
+      /**
+       * <code>optional .mesos.Image.Docker docker = 3;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Image.Docker, org.apache.mesos.Protos.Image.Docker.Builder, org.apache.mesos.Protos.Image.DockerOrBuilder> 
+          getDockerFieldBuilder() {
+        if (dockerBuilder_ == null) {
+          dockerBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Image.Docker, org.apache.mesos.Protos.Image.Docker.Builder, org.apache.mesos.Protos.Image.DockerOrBuilder>(
+                  docker_,
+                  getParentForChildren(),
+                  isClean());
+          docker_ = null;
+        }
+        return dockerBuilder_;
+      }
+
+      // optional bool cached = 4 [default = true];
+      private boolean cached_ = true;
+      /**
+       * <code>optional bool cached = 4 [default = true];</code>
+       *
+       * <pre>
+       * With this flag set to false, the mesos containerizer will pull
+       * the docker/appc image from the registry even if the image is
+       * already downloaded on the agent.
+       * </pre>
+       */
+      public boolean hasCached() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional bool cached = 4 [default = true];</code>
+       *
+       * <pre>
+       * With this flag set to false, the mesos containerizer will pull
+       * the docker/appc image from the registry even if the image is
+       * already downloaded on the agent.
+       * </pre>
+       */
+      public boolean getCached() {
+        return cached_;
+      }
+      /**
+       * <code>optional bool cached = 4 [default = true];</code>
+       *
+       * <pre>
+       * With this flag set to false, the mesos containerizer will pull
+       * the docker/appc image from the registry even if the image is
+       * already downloaded on the agent.
+       * </pre>
+       */
+      public Builder setCached(boolean value) {
+        bitField0_ |= 0x00000008;
+        cached_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional bool cached = 4 [default = true];</code>
+       *
+       * <pre>
+       * With this flag set to false, the mesos containerizer will pull
+       * the docker/appc image from the registry even if the image is
+       * already downloaded on the agent.
+       * </pre>
+       */
+      public Builder clearCached() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        cached_ = true;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.Image)
+    }
+
+    static {
+      defaultInstance = new Image(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.Image)
+  }
+
+  public interface VolumeOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required .mesos.Volume.Mode mode = 3;
+    /**
+     * <code>required .mesos.Volume.Mode mode = 3;</code>
+     *
+     * <pre>
+     * TODO(gyliu513): Make this as `optional` after deprecation cycle of 1.0.
+     * </pre>
+     */
+    boolean hasMode();
+    /**
+     * <code>required .mesos.Volume.Mode mode = 3;</code>
+     *
+     * <pre>
+     * TODO(gyliu513): Make this as `optional` after deprecation cycle of 1.0.
+     * </pre>
+     */
+    org.apache.mesos.Protos.Volume.Mode getMode();
+
+    // required string container_path = 1;
+    /**
+     * <code>required string container_path = 1;</code>
+     *
+     * <pre>
+     * Path pointing to a directory or file in the container. If the
+     * path is a relative path, it is relative to the container work
+     * directory. If the path is an absolute path, that path must
+     * already exist.
+     * </pre>
+     */
+    boolean hasContainerPath();
+    /**
+     * <code>required string container_path = 1;</code>
+     *
+     * <pre>
+     * Path pointing to a directory or file in the container. If the
+     * path is a relative path, it is relative to the container work
+     * directory. If the path is an absolute path, that path must
+     * already exist.
+     * </pre>
+     */
+    java.lang.String getContainerPath();
+    /**
+     * <code>required string container_path = 1;</code>
+     *
+     * <pre>
+     * Path pointing to a directory or file in the container. If the
+     * path is a relative path, it is relative to the container work
+     * directory. If the path is an absolute path, that path must
+     * already exist.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getContainerPathBytes();
+
+    // optional string host_path = 2;
+    /**
+     * <code>optional string host_path = 2;</code>
+     *
+     * <pre>
+     * Absolute path pointing to a directory or file on the host or a
+     * path relative to the container work directory.
+     * </pre>
+     */
+    boolean hasHostPath();
+    /**
+     * <code>optional string host_path = 2;</code>
+     *
+     * <pre>
+     * Absolute path pointing to a directory or file on the host or a
+     * path relative to the container work directory.
+     * </pre>
+     */
+    java.lang.String getHostPath();
+    /**
+     * <code>optional string host_path = 2;</code>
+     *
+     * <pre>
+     * Absolute path pointing to a directory or file on the host or a
+     * path relative to the container work directory.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getHostPathBytes();
+
+    // optional .mesos.Image image = 4;
+    /**
+     * <code>optional .mesos.Image image = 4;</code>
+     *
+     * <pre>
+     * The source of the volume is an Image which describes a root
+     * filesystem which will be provisioned by Mesos.
+     * </pre>
+     */
+    boolean hasImage();
+    /**
+     * <code>optional .mesos.Image image = 4;</code>
+     *
+     * <pre>
+     * The source of the volume is an Image which describes a root
+     * filesystem which will be provisioned by Mesos.
+     * </pre>
+     */
+    org.apache.mesos.Protos.Image getImage();
+    /**
+     * <code>optional .mesos.Image image = 4;</code>
+     *
+     * <pre>
+     * The source of the volume is an Image which describes a root
+     * filesystem which will be provisioned by Mesos.
+     * </pre>
+     */
+    org.apache.mesos.Protos.ImageOrBuilder getImageOrBuilder();
+
+    // optional .mesos.Volume.Source source = 5;
+    /**
+     * <code>optional .mesos.Volume.Source source = 5;</code>
+     */
+    boolean hasSource();
+    /**
+     * <code>optional .mesos.Volume.Source source = 5;</code>
+     */
+    org.apache.mesos.Protos.Volume.Source getSource();
+    /**
+     * <code>optional .mesos.Volume.Source source = 5;</code>
+     */
+    org.apache.mesos.Protos.Volume.SourceOrBuilder getSourceOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.Volume}
+   *
+   * <pre>
+   **
+   * Describes a volume mapping either from host to container or vice
+   * versa. Both paths can either refer to a directory or a file.
+   * </pre>
+   */
+  public static final class Volume extends
+      com.google.protobuf.GeneratedMessage
+      implements VolumeOrBuilder {
+    // Use Volume.newBuilder() to construct.
+    private Volume(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Volume(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Volume defaultInstance;
+    public static Volume getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Volume getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Volume(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000002;
+              containerPath_ = input.readBytes();
+              break;
+            }
+            case 18: {
+              bitField0_ |= 0x00000004;
+              hostPath_ = input.readBytes();
+              break;
+            }
+            case 24: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.Protos.Volume.Mode value = org.apache.mesos.Protos.Volume.Mode.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(3, rawValue);
+              } else {
+                bitField0_ |= 0x00000001;
+                mode_ = value;
+              }
+              break;
+            }
+            case 34: {
+              org.apache.mesos.Protos.Image.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                subBuilder = image_.toBuilder();
+              }
+              image_ = input.readMessage(org.apache.mesos.Protos.Image.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(image_);
+                image_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000008;
+              break;
+            }
+            case 42: {
+              org.apache.mesos.Protos.Volume.Source.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000010) == 0x00000010)) {
+                subBuilder = source_.toBuilder();
+              }
+              source_ = input.readMessage(org.apache.mesos.Protos.Volume.Source.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(source_);
+                source_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000010;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_Volume_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_Volume_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.Volume.class, org.apache.mesos.Protos.Volume.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Volume> PARSER =
+        new com.google.protobuf.AbstractParser<Volume>() {
+      public Volume parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Volume(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Volume> getParserForType() {
+      return PARSER;
+    }
+
+    /**
+     * Protobuf enum {@code mesos.Volume.Mode}
+     */
+    public enum Mode
+        implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>RW = 1;</code>
+       *
+       * <pre>
+       * read-write.
+       * </pre>
+       */
+      RW(0, 1),
+      /**
+       * <code>RO = 2;</code>
+       *
+       * <pre>
+       * read-only.
+       * </pre>
+       */
+      RO(1, 2),
+      ;
+
+      /**
+       * <code>RW = 1;</code>
+       *
+       * <pre>
+       * read-write.
+       * </pre>
+       */
+      public static final int RW_VALUE = 1;
+      /**
+       * <code>RO = 2;</code>
+       *
+       * <pre>
+       * read-only.
+       * </pre>
+       */
+      public static final int RO_VALUE = 2;
+
+
+      public final int getNumber() { return value; }
+
+      public static Mode valueOf(int value) {
+        switch (value) {
+          case 1: return RW;
+          case 2: return RO;
+          default: return null;
+        }
+      }
+
+      public static com.google.protobuf.Internal.EnumLiteMap<Mode>
+          internalGetValueMap() {
+        return internalValueMap;
+      }
+      private static com.google.protobuf.Internal.EnumLiteMap<Mode>
+          internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap<Mode>() {
+              public Mode findValueByNumber(int number) {
+                return Mode.valueOf(number);
+              }
+            };
+
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
+          getValueDescriptor() {
+        return getDescriptor().getValues().get(index);
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptorForType() {
+        return getDescriptor();
+      }
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.Volume.getDescriptor().getEnumTypes().get(0);
+      }
+
+      private static final Mode[] VALUES = values();
+
+      public static Mode valueOf(
+          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+        if (desc.getType() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "EnumValueDescriptor is not for this type.");
+        }
+        return VALUES[desc.getIndex()];
+      }
+
+      private final int index;
+      private final int value;
+
+      private Mode(int index, int value) {
+        this.index = index;
+        this.value = value;
+      }
+
+      // @@protoc_insertion_point(enum_scope:mesos.Volume.Mode)
+    }
+
+    public interface SourceOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // optional .mesos.Volume.Source.Type type = 1;
+      /**
+       * <code>optional .mesos.Volume.Source.Type type = 1;</code>
+       *
+       * <pre>
+       * Enum fields should be optional, see: MESOS-4997.
+       * </pre>
+       */
+      boolean hasType();
+      /**
+       * <code>optional .mesos.Volume.Source.Type type = 1;</code>
+       *
+       * <pre>
+       * Enum fields should be optional, see: MESOS-4997.
+       * </pre>
+       */
+      org.apache.mesos.Protos.Volume.Source.Type getType();
+
+      // optional .mesos.Volume.Source.DockerVolume docker_volume = 2;
+      /**
+       * <code>optional .mesos.Volume.Source.DockerVolume docker_volume = 2;</code>
+       *
+       * <pre>
+       * The source of the volume created by docker volume driver.
+       * </pre>
+       */
+      boolean hasDockerVolume();
+      /**
+       * <code>optional .mesos.Volume.Source.DockerVolume docker_volume = 2;</code>
+       *
+       * <pre>
+       * The source of the volume created by docker volume driver.
+       * </pre>
+       */
+      org.apache.mesos.Protos.Volume.Source.DockerVolume getDockerVolume();
+      /**
+       * <code>optional .mesos.Volume.Source.DockerVolume docker_volume = 2;</code>
+       *
+       * <pre>
+       * The source of the volume created by docker volume driver.
+       * </pre>
+       */
+      org.apache.mesos.Protos.Volume.Source.DockerVolumeOrBuilder getDockerVolumeOrBuilder();
+
+      // optional .mesos.Volume.Source.SandboxPath sandbox_path = 3;
+      /**
+       * <code>optional .mesos.Volume.Source.SandboxPath sandbox_path = 3;</code>
+       */
+      boolean hasSandboxPath();
+      /**
+       * <code>optional .mesos.Volume.Source.SandboxPath sandbox_path = 3;</code>
+       */
+      org.apache.mesos.Protos.Volume.Source.SandboxPath getSandboxPath();
+      /**
+       * <code>optional .mesos.Volume.Source.SandboxPath sandbox_path = 3;</code>
+       */
+      org.apache.mesos.Protos.Volume.Source.SandboxPathOrBuilder getSandboxPathOrBuilder();
+
+      // optional .mesos.Secret secret = 4;
+      /**
+       * <code>optional .mesos.Secret secret = 4;</code>
+       *
+       * <pre>
+       * The volume/secret isolator uses the secret-fetcher module (third-party or
+       * internal) downloads the secret and makes it available at container_path.
+       * </pre>
+       */
+      boolean hasSecret();
+      /**
+       * <code>optional .mesos.Secret secret = 4;</code>
+       *
+       * <pre>
+       * The volume/secret isolator uses the secret-fetcher module (third-party or
+       * internal) downloads the secret and makes it available at container_path.
+       * </pre>
+       */
+      org.apache.mesos.Protos.Secret getSecret();
+      /**
+       * <code>optional .mesos.Secret secret = 4;</code>
+       *
+       * <pre>
+       * The volume/secret isolator uses the secret-fetcher module (third-party or
+       * internal) downloads the secret and makes it available at container_path.
+       * </pre>
+       */
+      org.apache.mesos.Protos.SecretOrBuilder getSecretOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.Volume.Source}
+     *
+     * <pre>
+     * Describes where a volume originates from.
+     * </pre>
+     */
+    public static final class Source extends
+        com.google.protobuf.GeneratedMessage
+        implements SourceOrBuilder {
+      // Use Source.newBuilder() to construct.
+      private Source(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Source(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Source defaultInstance;
+      public static Source getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Source getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Source(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 8: {
+                int rawValue = input.readEnum();
+                org.apache.mesos.Protos.Volume.Source.Type value = org.apache.mesos.Protos.Volume.Source.Type.valueOf(rawValue);
+                if (value == null) {
+                  unknownFields.mergeVarintField(1, rawValue);
+                } else {
+                  bitField0_ |= 0x00000001;
+                  type_ = value;
+                }
+                break;
+              }
+              case 18: {
+                org.apache.mesos.Protos.Volume.Source.DockerVolume.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                  subBuilder = dockerVolume_.toBuilder();
+                }
+                dockerVolume_ = input.readMessage(org.apache.mesos.Protos.Volume.Source.DockerVolume.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(dockerVolume_);
+                  dockerVolume_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000002;
+                break;
+              }
+              case 26: {
+                org.apache.mesos.Protos.Volume.Source.SandboxPath.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                  subBuilder = sandboxPath_.toBuilder();
+                }
+                sandboxPath_ = input.readMessage(org.apache.mesos.Protos.Volume.Source.SandboxPath.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(sandboxPath_);
+                  sandboxPath_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000004;
+                break;
+              }
+              case 34: {
+                org.apache.mesos.Protos.Secret.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                  subBuilder = secret_.toBuilder();
+                }
+                secret_ = input.readMessage(org.apache.mesos.Protos.Secret.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(secret_);
+                  secret_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000008;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_Volume_Source_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_Volume_Source_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.Volume.Source.class, org.apache.mesos.Protos.Volume.Source.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Source> PARSER =
+          new com.google.protobuf.AbstractParser<Source>() {
+        public Source parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Source(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Source> getParserForType() {
+        return PARSER;
+      }
+
+      /**
+       * Protobuf enum {@code mesos.Volume.Source.Type}
+       */
+      public enum Type
+          implements com.google.protobuf.ProtocolMessageEnum {
+        /**
+         * <code>UNKNOWN = 0;</code>
+         *
+         * <pre>
+         * This must be the first enum value in this list, to
+         * ensure that if 'type' is not set, the default value
+         * is UNKNOWN. This enables enum values to be added
+         * in a backwards-compatible way. See: MESOS-4997.
+         * </pre>
+         */
+        UNKNOWN(0, 0),
+        /**
+         * <code>DOCKER_VOLUME = 1;</code>
+         *
+         * <pre>
+         * TODO(gyliu513): Add HOST_PATH and IMAGE as volume source type.
+         * </pre>
+         */
+        DOCKER_VOLUME(1, 1),
+        /**
+         * <code>SANDBOX_PATH = 2;</code>
+         */
+        SANDBOX_PATH(2, 2),
+        /**
+         * <code>SECRET = 3;</code>
+         */
+        SECRET(3, 3),
+        ;
+
+        /**
+         * <code>UNKNOWN = 0;</code>
+         *
+         * <pre>
+         * This must be the first enum value in this list, to
+         * ensure that if 'type' is not set, the default value
+         * is UNKNOWN. This enables enum values to be added
+         * in a backwards-compatible way. See: MESOS-4997.
+         * </pre>
+         */
+        public static final int UNKNOWN_VALUE = 0;
+        /**
+         * <code>DOCKER_VOLUME = 1;</code>
+         *
+         * <pre>
+         * TODO(gyliu513): Add HOST_PATH and IMAGE as volume source type.
+         * </pre>
+         */
+        public static final int DOCKER_VOLUME_VALUE = 1;
+        /**
+         * <code>SANDBOX_PATH = 2;</code>
+         */
+        public static final int SANDBOX_PATH_VALUE = 2;
+        /**
+         * <code>SECRET = 3;</code>
+         */
+        public static final int SECRET_VALUE = 3;
+
+
+        public final int getNumber() { return value; }
+
+        public static Type valueOf(int value) {
+          switch (value) {
+            case 0: return UNKNOWN;
+            case 1: return DOCKER_VOLUME;
+            case 2: return SANDBOX_PATH;
+            case 3: return SECRET;
+            default: return null;
+          }
+        }
+
+        public static com.google.protobuf.Internal.EnumLiteMap<Type>
+            internalGetValueMap() {
+          return internalValueMap;
+        }
+        private static com.google.protobuf.Internal.EnumLiteMap<Type>
+            internalValueMap =
+              new com.google.protobuf.Internal.EnumLiteMap<Type>() {
+                public Type findValueByNumber(int number) {
+                  return Type.valueOf(number);
+                }
+              };
+
+        public final com.google.protobuf.Descriptors.EnumValueDescriptor
+            getValueDescriptor() {
+          return getDescriptor().getValues().get(index);
+        }
+        public final com.google.protobuf.Descriptors.EnumDescriptor
+            getDescriptorForType() {
+          return getDescriptor();
+        }
+        public static final com.google.protobuf.Descriptors.EnumDescriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.Volume.Source.getDescriptor().getEnumTypes().get(0);
+        }
+
+        private static final Type[] VALUES = values();
+
+        public static Type valueOf(
+            com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+          if (desc.getType() != getDescriptor()) {
+            throw new java.lang.IllegalArgumentException(
+              "EnumValueDescriptor is not for this type.");
+          }
+          return VALUES[desc.getIndex()];
+        }
+
+        private final int index;
+        private final int value;
+
+        private Type(int index, int value) {
+          this.index = index;
+          this.value = value;
+        }
+
+        // @@protoc_insertion_point(enum_scope:mesos.Volume.Source.Type)
+      }
+
+      public interface DockerVolumeOrBuilder
+          extends com.google.protobuf.MessageOrBuilder {
+
+        // optional string driver = 1;
+        /**
+         * <code>optional string driver = 1;</code>
+         *
+         * <pre>
+         * Driver of the volume, it can be flocker, convoy, raxrey etc.
+         * </pre>
+         */
+        boolean hasDriver();
+        /**
+         * <code>optional string driver = 1;</code>
+         *
+         * <pre>
+         * Driver of the volume, it can be flocker, convoy, raxrey etc.
+         * </pre>
+         */
+        java.lang.String getDriver();
+        /**
+         * <code>optional string driver = 1;</code>
+         *
+         * <pre>
+         * Driver of the volume, it can be flocker, convoy, raxrey etc.
+         * </pre>
+         */
+        com.google.protobuf.ByteString
+            getDriverBytes();
+
+        // required string name = 2;
+        /**
+         * <code>required string name = 2;</code>
+         *
+         * <pre>
+         * Name of the volume.
+         * </pre>
+         */
+        boolean hasName();
+        /**
+         * <code>required string name = 2;</code>
+         *
+         * <pre>
+         * Name of the volume.
+         * </pre>
+         */
+        java.lang.String getName();
+        /**
+         * <code>required string name = 2;</code>
+         *
+         * <pre>
+         * Name of the volume.
+         * </pre>
+         */
+        com.google.protobuf.ByteString
+            getNameBytes();
+
+        // optional .mesos.Parameters driver_options = 3;
+        /**
+         * <code>optional .mesos.Parameters driver_options = 3;</code>
+         *
+         * <pre>
+         * Volume driver specific options.
+         * </pre>
+         */
+        boolean hasDriverOptions();
+        /**
+         * <code>optional .mesos.Parameters driver_options = 3;</code>
+         *
+         * <pre>
+         * Volume driver specific options.
+         * </pre>
+         */
+        org.apache.mesos.Protos.Parameters getDriverOptions();
+        /**
+         * <code>optional .mesos.Parameters driver_options = 3;</code>
+         *
+         * <pre>
+         * Volume driver specific options.
+         * </pre>
+         */
+        org.apache.mesos.Protos.ParametersOrBuilder getDriverOptionsOrBuilder();
+      }
+      /**
+       * Protobuf type {@code mesos.Volume.Source.DockerVolume}
+       */
+      public static final class DockerVolume extends
+          com.google.protobuf.GeneratedMessage
+          implements DockerVolumeOrBuilder {
+        // Use DockerVolume.newBuilder() to construct.
+        private DockerVolume(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+          super(builder);
+          this.unknownFields = builder.getUnknownFields();
+        }
+        private DockerVolume(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+        private static final DockerVolume defaultInstance;
+        public static DockerVolume getDefaultInstance() {
+          return defaultInstance;
+        }
+
+        public DockerVolume getDefaultInstanceForType() {
+          return defaultInstance;
+        }
+
+        private final com.google.protobuf.UnknownFieldSet unknownFields;
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet
+            getUnknownFields() {
+          return this.unknownFields;
+        }
+        private DockerVolume(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          initFields();
+          int mutable_bitField0_ = 0;
+          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+              com.google.protobuf.UnknownFieldSet.newBuilder();
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(input, unknownFields,
+                                         extensionRegistry, tag)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 10: {
+                  bitField0_ |= 0x00000001;
+                  driver_ = input.readBytes();
+                  break;
+                }
+                case 18: {
+                  bitField0_ |= 0x00000002;
+                  name_ = input.readBytes();
+                  break;
+                }
+                case 26: {
+                  org.apache.mesos.Protos.Parameters.Builder subBuilder = null;
+                  if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                    subBuilder = driverOptions_.toBuilder();
+                  }
+                  driverOptions_ = input.readMessage(org.apache.mesos.Protos.Parameters.PARSER, extensionRegistry);
+                  if (subBuilder != null) {
+                    subBuilder.mergeFrom(driverOptions_);
+                    driverOptions_ = subBuilder.buildPartial();
+                  }
+                  bitField0_ |= 0x00000004;
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw e.setUnfinishedMessage(this);
+          } catch (java.io.IOException e) {
+            throw new com.google.protobuf.InvalidProtocolBufferException(
+                e.getMessage()).setUnfinishedMessage(this);
+          } finally {
+            this.unknownFields = unknownFields.build();
+            makeExtensionsImmutable();
+          }
+        }
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_Volume_Source_DockerVolume_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_Volume_Source_DockerVolume_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.Volume.Source.DockerVolume.class, org.apache.mesos.Protos.Volume.Source.DockerVolume.Builder.class);
+        }
+
+        public static com.google.protobuf.Parser<DockerVolume> PARSER =
+            new com.google.protobuf.AbstractParser<DockerVolume>() {
+          public DockerVolume parsePartialFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return new DockerVolume(input, extensionRegistry);
+          }
+        };
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<DockerVolume> getParserForType() {
+          return PARSER;
+        }
+
+        private int bitField0_;
+        // optional string driver = 1;
+        public static final int DRIVER_FIELD_NUMBER = 1;
+        private java.lang.Object driver_;
+        /**
+         * <code>optional string driver = 1;</code>
+         *
+         * <pre>
+         * Driver of the volume, it can be flocker, convoy, raxrey etc.
+         * </pre>
+         */
+        public boolean hasDriver() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional string driver = 1;</code>
+         *
+         * <pre>
+         * Driver of the volume, it can be flocker, convoy, raxrey etc.
+         * </pre>
+         */
+        public java.lang.String getDriver() {
+          java.lang.Object ref = driver_;
+          if (ref instanceof java.lang.String) {
+            return (java.lang.String) ref;
+          } else {
+            com.google.protobuf.ByteString bs = 
+                (com.google.protobuf.ByteString) ref;
+            java.lang.String s = bs.toStringUtf8();
+            if (bs.isValidUtf8()) {
+              driver_ = s;
+            }
+            return s;
+          }
+        }
+        /**
+         * <code>optional string driver = 1;</code>
+         *
+         * <pre>
+         * Driver of the volume, it can be flocker, convoy, raxrey etc.
+         * </pre>
+         */
+        public com.google.protobuf.ByteString
+            getDriverBytes() {
+          java.lang.Object ref = driver_;
+          if (ref instanceof java.lang.String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            driver_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+
+        // required string name = 2;
+        public static final int NAME_FIELD_NUMBER = 2;
+        private java.lang.Object name_;
+        /**
+         * <code>required string name = 2;</code>
+         *
+         * <pre>
+         * Name of the volume.
+         * </pre>
+         */
+        public boolean hasName() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>required string name = 2;</code>
+         *
+         * <pre>
+         * Name of the volume.
+         * </pre>
+         */
+        public java.lang.String getName() {
+          java.lang.Object ref = name_;
+          if (ref instanceof java.lang.String) {
+            return (java.lang.String) ref;
+          } else {
+            com.google.protobuf.ByteString bs = 
+                (com.google.protobuf.ByteString) ref;
+            java.lang.String s = bs.toStringUtf8();
+            if (bs.isValidUtf8()) {
+              name_ = s;
+            }
+            return s;
+          }
+        }
+        /**
+         * <code>required string name = 2;</code>
+         *
+         * <pre>
+         * Name of the volume.
+         * </pre>
+         */
+        public com.google.protobuf.ByteString
+            getNameBytes() {
+          java.lang.Object ref = name_;
+          if (ref instanceof java.lang.String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            name_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+
+        // optional .mesos.Parameters driver_options = 3;
+        public static final int DRIVER_OPTIONS_FIELD_NUMBER = 3;
+        private org.apache.mesos.Protos.Parameters driverOptions_;
+        /**
+         * <code>optional .mesos.Parameters driver_options = 3;</code>
+         *
+         * <pre>
+         * Volume driver specific options.
+         * </pre>
+         */
+        public boolean hasDriverOptions() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional .mesos.Parameters driver_options = 3;</code>
+         *
+         * <pre>
+         * Volume driver specific options.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.Parameters getDriverOptions() {
+          return driverOptions_;
+        }
+        /**
+         * <code>optional .mesos.Parameters driver_options = 3;</code>
+         *
+         * <pre>
+         * Volume driver specific options.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.ParametersOrBuilder getDriverOptionsOrBuilder() {
+          return driverOptions_;
+        }
+
+        private void initFields() {
+          driver_ = "";
+          name_ = "";
+          driverOptions_ = org.apache.mesos.Protos.Parameters.getDefaultInstance();
+        }
+        private byte memoizedIsInitialized = -1;
+        public final boolean isInitialized() {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized != -1) return isInitialized == 1;
+
+          if (!hasName()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+          if (hasDriverOptions()) {
+            if (!getDriverOptions().isInitialized()) {
+              memoizedIsInitialized = 0;
+              return false;
+            }
+          }
+          memoizedIsInitialized = 1;
+          return true;
+        }
+
+        public void writeTo(com.google.protobuf.CodedOutputStream output)
+                            throws java.io.IOException {
+          getSerializedSize();
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            output.writeBytes(1, getDriverBytes());
+          }
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            output.writeBytes(2, getNameBytes());
+          }
+          if (((bitField0_ & 0x00000004) == 0x00000004)) {
+            output.writeMessage(3, driverOptions_);
+          }
+          getUnknownFields().writeTo(output);
+        }
+
+        private int memoizedSerializedSize = -1;
+        public int getSerializedSize() {
+          int size = memoizedSerializedSize;
+          if (size != -1) return size;
+
+          size = 0;
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeBytesSize(1, getDriverBytes());
+          }
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeBytesSize(2, getNameBytes());
+          }
+          if (((bitField0_ & 0x00000004) == 0x00000004)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeMessageSize(3, driverOptions_);
+          }
+          size += getUnknownFields().getSerializedSize();
+          memoizedSerializedSize = size;
+          return size;
+        }
+
+        private static final long serialVersionUID = 0L;
+        @java.lang.Override
+        protected java.lang.Object writeReplace()
+            throws java.io.ObjectStreamException {
+          return super.writeReplace();
+        }
+
+        public static org.apache.mesos.Protos.Volume.Source.DockerVolume parseFrom(
+            com.google.protobuf.ByteString data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.Protos.Volume.Source.DockerVolume parseFrom(
+            com.google.protobuf.ByteString data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.Volume.Source.DockerVolume parseFrom(byte[] data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.Protos.Volume.Source.DockerVolume parseFrom(
+            byte[] data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.Volume.Source.DockerVolume parseFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.Protos.Volume.Source.DockerVolume parseFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.Volume.Source.DockerVolume parseDelimitedFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input);
+        }
+        public static org.apache.mesos.Protos.Volume.Source.DockerVolume parseDelimitedFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.Volume.Source.DockerVolume parseFrom(
+            com.google.protobuf.CodedInputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.Protos.Volume.Source.DockerVolume parseFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+
+        public static Builder newBuilder() { return Builder.create(); }
+        public Builder newBuilderForType() { return newBuilder(); }
+        public static Builder newBuilder(org.apache.mesos.Protos.Volume.Source.DockerVolume prototype) {
+          return newBuilder().mergeFrom(prototype);
+        }
+        public Builder toBuilder() { return newBuilder(this); }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          Builder builder = new Builder(parent);
+          return builder;
+        }
+        /**
+         * Protobuf type {@code mesos.Volume.Source.DockerVolume}
+         */
+        public static final class Builder extends
+            com.google.protobuf.GeneratedMessage.Builder<Builder>
+           implements org.apache.mesos.Protos.Volume.Source.DockerVolumeOrBuilder {
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.Protos.internal_static_mesos_Volume_Source_DockerVolume_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.Protos.internal_static_mesos_Volume_Source_DockerVolume_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.Protos.Volume.Source.DockerVolume.class, org.apache.mesos.Protos.Volume.Source.DockerVolume.Builder.class);
+          }
+
+          // Construct using org.apache.mesos.Protos.Volume.Source.DockerVolume.newBuilder()
+          private Builder() {
+            maybeForceBuilderInitialization();
+          }
+
+          private Builder(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            super(parent);
+            maybeForceBuilderInitialization();
+          }
+          private void maybeForceBuilderInitialization() {
+            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+              getDriverOptionsFieldBuilder();
+            }
+          }
+          private static Builder create() {
+            return new Builder();
+          }
+
+          public Builder clear() {
+            super.clear();
+            driver_ = "";
+            bitField0_ = (bitField0_ & ~0x00000001);
+            name_ = "";
+            bitField0_ = (bitField0_ & ~0x00000002);
+            if (driverOptionsBuilder_ == null) {
+              driverOptions_ = org.apache.mesos.Protos.Parameters.getDefaultInstance();
+            } else {
+              driverOptionsBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000004);
+            return this;
+          }
+
+          public Builder clone() {
+            return create().mergeFrom(buildPartial());
+          }
+
+          public com.google.protobuf.Descriptors.Descriptor
+              getDescriptorForType() {
+            return org.apache.mesos.Protos.internal_static_mesos_Volume_Source_DockerVolume_descriptor;
+          }
+
+          public org.apache.mesos.Protos.Volume.Source.DockerVolume getDefaultInstanceForType() {
+            return org.apache.mesos.Protos.Volume.Source.DockerVolume.getDefaultInstance();
+          }
+
+          public org.apache.mesos.Protos.Volume.Source.DockerVolume build() {
+            org.apache.mesos.Protos.Volume.Source.DockerVolume result = buildPartial();
+            if (!result.isInitialized()) {
+              throw newUninitializedMessageException(result);
+            }
+            return result;
+          }
+
+          public org.apache.mesos.Protos.Volume.Source.DockerVolume buildPartial() {
+            org.apache.mesos.Protos.Volume.Source.DockerVolume result = new org.apache.mesos.Protos.Volume.Source.DockerVolume(this);
+            int from_bitField0_ = bitField0_;
+            int to_bitField0_ = 0;
+            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+              to_bitField0_ |= 0x00000001;
+            }
+            result.driver_ = driver_;
+            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+              to_bitField0_ |= 0x00000002;
+            }
+            result.name_ = name_;
+            if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+              to_bitField0_ |= 0x00000004;
+            }
+            if (driverOptionsBuilder_ == null) {
+              result.driverOptions_ = driverOptions_;
+            } else {
+              result.driverOptions_ = driverOptionsBuilder_.build();
+            }
+            result.bitField0_ = to_bitField0_;
+            onBuilt();
+            return result;
+          }
+
+          public Builder mergeFrom(com.google.protobuf.Message other) {
+            if (other instanceof org.apache.mesos.Protos.Volume.Source.DockerVolume) {
+              return mergeFrom((org.apache.mesos.Protos.Volume.Source.DockerVolume)other);
+            } else {
+              super.mergeFrom(other);
+              return this;
+            }
+          }
+
+          public Builder mergeFrom(org.apache.mesos.Protos.Volume.Source.DockerVolume other) {
+            if (other == org.apache.mesos.Protos.Volume.Source.DockerVolume.getDefaultInstance()) return this;
+            if (other.hasDriver()) {
+              bitField0_ |= 0x00000001;
+              driver_ = other.driver_;
+              onChanged();
+            }
+            if (other.hasName()) {
+              bitField0_ |= 0x00000002;
+              name_ = other.name_;
+              onChanged();
+            }
+            if (other.hasDriverOptions()) {
+              mergeDriverOptions(other.getDriverOptions());
+            }
+            this.mergeUnknownFields(other.getUnknownFields());
+            return this;
+          }
+
+          public final boolean isInitialized() {
+            if (!hasName()) {
+              
+              return false;
+            }
+            if (hasDriverOptions()) {
+              if (!getDriverOptions().isInitialized()) {
+                
+                return false;
+              }
+            }
+            return true;
+          }
+
+          public Builder mergeFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            org.apache.mesos.Protos.Volume.Source.DockerVolume parsedMessage = null;
+            try {
+              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              parsedMessage = (org.apache.mesos.Protos.Volume.Source.DockerVolume) e.getUnfinishedMessage();
+              throw e;
+            } finally {
+              if (parsedMessage != null) {
+                mergeFrom(parsedMessage);
+              }
+            }
+            return this;
+          }
+          private int bitField0_;
+
+          // optional string driver = 1;
+          private java.lang.Object driver_ = "";
+          /**
+           * <code>optional string driver = 1;</code>
+           *
+           * <pre>
+           * Driver of the volume, it can be flocker, convoy, raxrey etc.
+           * </pre>
+           */
+          public boolean hasDriver() {
+            return ((bitField0_ & 0x00000001) == 0x00000001);
+          }
+          /**
+           * <code>optional string driver = 1;</code>
+           *
+           * <pre>
+           * Driver of the volume, it can be flocker, convoy, raxrey etc.
+           * </pre>
+           */
+          public java.lang.String getDriver() {
+            java.lang.Object ref = driver_;
+            if (!(ref instanceof java.lang.String)) {
+              java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                  .toStringUtf8();
+              driver_ = s;
+              return s;
+            } else {
+              return (java.lang.String) ref;
+            }
+          }
+          /**
+           * <code>optional string driver = 1;</code>
+           *
+           * <pre>
+           * Driver of the volume, it can be flocker, convoy, raxrey etc.
+           * </pre>
+           */
+          public com.google.protobuf.ByteString
+              getDriverBytes() {
+            java.lang.Object ref = driver_;
+            if (ref instanceof String) {
+              com.google.protobuf.ByteString b = 
+                  com.google.protobuf.ByteString.copyFromUtf8(
+                      (java.lang.String) ref);
+              driver_ = b;
+              return b;
+            } else {
+              return (com.google.protobuf.ByteString) ref;
+            }
+          }
+          /**
+           * <code>optional string driver = 1;</code>
+           *
+           * <pre>
+           * Driver of the volume, it can be flocker, convoy, raxrey etc.
+           * </pre>
+           */
+          public Builder setDriver(
+              java.lang.String value) {
+            if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+            driver_ = value;
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>optional string driver = 1;</code>
+           *
+           * <pre>
+           * Driver of the volume, it can be flocker, convoy, raxrey etc.
+           * </pre>
+           */
+          public Builder clearDriver() {
+            bitField0_ = (bitField0_ & ~0x00000001);
+            driver_ = getDefaultInstance().getDriver();
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>optional string driver = 1;</code>
+           *
+           * <pre>
+           * Driver of the volume, it can be flocker, convoy, raxrey etc.
+           * </pre>
+           */
+          public Builder setDriverBytes(
+              com.google.protobuf.ByteString value) {
+            if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+            driver_ = value;
+            onChanged();
+            return this;
+          }
+
+          // required string name = 2;
+          private java.lang.Object name_ = "";
+          /**
+           * <code>required string name = 2;</code>
+           *
+           * <pre>
+           * Name of the volume.
+           * </pre>
+           */
+          public boolean hasName() {
+            return ((bitField0_ & 0x00000002) == 0x00000002);
+          }
+          /**
+           * <code>required string name = 2;</code>
+           *
+           * <pre>
+           * Name of the volume.
+           * </pre>
+           */
+          public java.lang.String getName() {
+            java.lang.Object ref = name_;
+            if (!(ref instanceof java.lang.String)) {
+              java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                  .toStringUtf8();
+              name_ = s;
+              return s;
+            } else {
+              return (java.lang.String) ref;
+            }
+          }
+          /**
+           * <code>required string name = 2;</code>
+           *
+           * <pre>
+           * Name of the volume.
+           * </pre>
+           */
+          public com.google.protobuf.ByteString
+              getNameBytes() {
+            java.lang.Object ref = name_;
+            if (ref instanceof String) {
+              com.google.protobuf.ByteString b = 
+                  com.google.protobuf.ByteString.copyFromUtf8(
+                      (java.lang.String) ref);
+              name_ = b;
+              return b;
+            } else {
+              return (com.google.protobuf.ByteString) ref;
+            }
+          }
+          /**
+           * <code>required string name = 2;</code>
+           *
+           * <pre>
+           * Name of the volume.
+           * </pre>
+           */
+          public Builder setName(
+              java.lang.String value) {
+            if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+            name_ = value;
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>required string name = 2;</code>
+           *
+           * <pre>
+           * Name of the volume.
+           * </pre>
+           */
+          public Builder clearName() {
+            bitField0_ = (bitField0_ & ~0x00000002);
+            name_ = getDefaultInstance().getName();
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>required string name = 2;</code>
+           *
+           * <pre>
+           * Name of the volume.
+           * </pre>
+           */
+          public Builder setNameBytes(
+              com.google.protobuf.ByteString value) {
+            if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+            name_ = value;
+            onChanged();
+            return this;
+          }
+
+          // optional .mesos.Parameters driver_options = 3;
+          private org.apache.mesos.Protos.Parameters driverOptions_ = org.apache.mesos.Protos.Parameters.getDefaultInstance();
+          private com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Parameters, org.apache.mesos.Protos.Parameters.Builder, org.apache.mesos.Protos.ParametersOrBuilder> driverOptionsBuilder_;
+          /**
+           * <code>optional .mesos.Parameters driver_options = 3;</code>
+           *
+           * <pre>
+           * Volume driver specific options.
+           * </pre>
+           */
+          public boolean hasDriverOptions() {
+            return ((bitField0_ & 0x00000004) == 0x00000004);
+          }
+          /**
+           * <code>optional .mesos.Parameters driver_options = 3;</code>
+           *
+           * <pre>
+           * Volume driver specific options.
+           * </pre>
+           */
+          public org.apache.mesos.Protos.Parameters getDriverOptions() {
+            if (driverOptionsBuilder_ == null) {
+              return driverOptions_;
+            } else {
+              return driverOptionsBuilder_.getMessage();
+            }
+          }
+          /**
+           * <code>optional .mesos.Parameters driver_options = 3;</code>
+           *
+           * <pre>
+           * Volume driver specific options.
+           * </pre>
+           */
+          public Builder setDriverOptions(org.apache.mesos.Protos.Parameters value) {
+            if (driverOptionsBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              driverOptions_ = value;
+              onChanged();
+            } else {
+              driverOptionsBuilder_.setMessage(value);
+            }
+            bitField0_ |= 0x00000004;
+            return this;
+          }
+          /**
+           * <code>optional .mesos.Parameters driver_options = 3;</code>
+           *
+           * <pre>
+           * Volume driver specific options.
+           * </pre>
+           */
+          public Builder setDriverOptions(
+              org.apache.mesos.Protos.Parameters.Builder builderForValue) {
+            if (driverOptionsBuilder_ == null) {
+              driverOptions_ = builderForValue.build();
+              onChanged();
+            } else {
+              driverOptionsBuilder_.setMessage(builderForValue.build());
+            }
+            bitField0_ |= 0x00000004;
+            return this;
+          }
+          /**
+           * <code>optional .mesos.Parameters driver_options = 3;</code>
+           *
+           * <pre>
+           * Volume driver specific options.
+           * </pre>
+           */
+          public Builder mergeDriverOptions(org.apache.mesos.Protos.Parameters value) {
+            if (driverOptionsBuilder_ == null) {
+              if (((bitField0_ & 0x00000004) == 0x00000004) &&
+                  driverOptions_ != org.apache.mesos.Protos.Parameters.getDefaultInstance()) {
+                driverOptions_ =
+                  org.apache.mesos.Protos.Parameters.newBuilder(driverOptions_).mergeFrom(value).buildPartial();
+              } else {
+                driverOptions_ = value;
+              }
+              onChanged();
+            } else {
+              driverOptionsBuilder_.mergeFrom(value);
+            }
+            bitField0_ |= 0x00000004;
+            return this;
+          }
+          /**
+           * <code>optional .mesos.Parameters driver_options = 3;</code>
+           *
+           * <pre>
+           * Volume driver specific options.
+           * </pre>
+           */
+          public Builder clearDriverOptions() {
+            if (driverOptionsBuilder_ == null) {
+              driverOptions_ = org.apache.mesos.Protos.Parameters.getDefaultInstance();
+              onChanged();
+            } else {
+              driverOptionsBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000004);
+            return this;
+          }
+          /**
+           * <code>optional .mesos.Parameters driver_options = 3;</code>
+           *
+           * <pre>
+           * Volume driver specific options.
+           * </pre>
+           */
+          public org.apache.mesos.Protos.Parameters.Builder getDriverOptionsBuilder() {
+            bitField0_ |= 0x00000004;
+            onChanged();
+            return getDriverOptionsFieldBuilder().getBuilder();
+          }
+          /**
+           * <code>optional .mesos.Parameters driver_options = 3;</code>
+           *
+           * <pre>
+           * Volume driver specific options.
+           * </pre>
+           */
+          public org.apache.mesos.Protos.ParametersOrBuilder getDriverOptionsOrBuilder() {
+            if (driverOptionsBuilder_ != null) {
+              return driverOptionsBuilder_.getMessageOrBuilder();
+            } else {
+              return driverOptions_;
+            }
+          }
+          /**
+           * <code>optional .mesos.Parameters driver_options = 3;</code>
+           *
+           * <pre>
+           * Volume driver specific options.
+           * </pre>
+           */
+          private com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Parameters, org.apache.mesos.Protos.Parameters.Builder, org.apache.mesos.Protos.ParametersOrBuilder> 
+              getDriverOptionsFieldBuilder() {
+            if (driverOptionsBuilder_ == null) {
+              driverOptionsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                  org.apache.mesos.Protos.Parameters, org.apache.mesos.Protos.Parameters.Builder, org.apache.mesos.Protos.ParametersOrBuilder>(
+                      driverOptions_,
+                      getParentForChildren(),
+                      isClean());
+              driverOptions_ = null;
+            }
+            return driverOptionsBuilder_;
+          }
+
+          // @@protoc_insertion_point(builder_scope:mesos.Volume.Source.DockerVolume)
+        }
+
+        static {
+          defaultInstance = new DockerVolume(true);
+          defaultInstance.initFields();
+        }
+
+        // @@protoc_insertion_point(class_scope:mesos.Volume.Source.DockerVolume)
+      }
+
+      public interface SandboxPathOrBuilder
+          extends com.google.protobuf.MessageOrBuilder {
+
+        // optional .mesos.Volume.Source.SandboxPath.Type type = 1;
+        /**
+         * <code>optional .mesos.Volume.Source.SandboxPath.Type type = 1;</code>
+         */
+        boolean hasType();
+        /**
+         * <code>optional .mesos.Volume.Source.SandboxPath.Type type = 1;</code>
+         */
+        org.apache.mesos.Protos.Volume.Source.SandboxPath.Type getType();
+
+        // required string path = 2;
+        /**
+         * <code>required string path = 2;</code>
+         *
+         * <pre>
+         * A path relative to the corresponding container's sandbox.
+         * Note that upwards traversal (i.e. ../../abc) is not allowed.
+         * </pre>
+         */
+        boolean hasPath();
+        /**
+         * <code>required string path = 2;</code>
+         *
+         * <pre>
+         * A path relative to the corresponding container's sandbox.
+         * Note that upwards traversal (i.e. ../../abc) is not allowed.
+         * </pre>
+         */
+        java.lang.String getPath();
+        /**
+         * <code>required string path = 2;</code>
+         *
+         * <pre>
+         * A path relative to the corresponding container's sandbox.
+         * Note that upwards traversal (i.e. ../../abc) is not allowed.
+         * </pre>
+         */
+        com.google.protobuf.ByteString
+            getPathBytes();
+      }
+      /**
+       * Protobuf type {@code mesos.Volume.Source.SandboxPath}
+       *
+       * <pre>
+       * Describe a path from a container's sandbox. The container can
+       * be the current container (SELF), or its parent container
+       * (PARENT). PARENT allows all child containers to share a volume
+       * from their parent container's sandbox. It'll be an error if
+       * the current container is a top level container.
+       * </pre>
+       */
+      public static final class SandboxPath extends
+          com.google.protobuf.GeneratedMessage
+          implements SandboxPathOrBuilder {
+        // Use SandboxPath.newBuilder() to construct.
+        private SandboxPath(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+          super(builder);
+          this.unknownFields = builder.getUnknownFields();
+        }
+        private SandboxPath(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+        private static final SandboxPath defaultInstance;
+        public static SandboxPath getDefaultInstance() {
+          return defaultInstance;
+        }
+
+        public SandboxPath getDefaultInstanceForType() {
+          return defaultInstance;
+        }
+
+        private final com.google.protobuf.UnknownFieldSet unknownFields;
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet
+            getUnknownFields() {
+          return this.unknownFields;
+        }
+        private SandboxPath(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          initFields();
+          int mutable_bitField0_ = 0;
+          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+              com.google.protobuf.UnknownFieldSet.newBuilder();
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(input, unknownFields,
+                                         extensionRegistry, tag)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 8: {
+                  int rawValue = input.readEnum();
+                  org.apache.mesos.Protos.Volume.Source.SandboxPath.Type value = org.apache.mesos.Protos.Volume.Source.SandboxPath.Type.valueOf(rawValue);
+                  if (value == null) {
+                    unknownFields.mergeVarintField(1, rawValue);
+                  } else {
+                    bitField0_ |= 0x00000001;
+                    type_ = value;
+                  }
+                  break;
+                }
+                case 18: {
+                  bitField0_ |= 0x00000002;
+                  path_ = input.readBytes();
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw e.setUnfinishedMessage(this);
+          } catch (java.io.IOException e) {
+            throw new com.google.protobuf.InvalidProtocolBufferException(
+                e.getMessage()).setUnfinishedMessage(this);
+          } finally {
+            this.unknownFields = unknownFields.build();
+            makeExtensionsImmutable();
+          }
+        }
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_Volume_Source_SandboxPath_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_Volume_Source_SandboxPath_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.Volume.Source.SandboxPath.class, org.apache.mesos.Protos.Volume.Source.SandboxPath.Builder.class);
+        }
+
+        public static com.google.protobuf.Parser<SandboxPath> PARSER =
+            new com.google.protobuf.AbstractParser<SandboxPath>() {
+          public SandboxPath parsePartialFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return new SandboxPath(input, extensionRegistry);
+          }
+        };
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<SandboxPath> getParserForType() {
+          return PARSER;
+        }
+
+        /**
+         * Protobuf enum {@code mesos.Volume.Source.SandboxPath.Type}
+         */
+        public enum Type
+            implements com.google.protobuf.ProtocolMessageEnum {
+          /**
+           * <code>UNKNOWN = 0;</code>
+           */
+          UNKNOWN(0, 0),
+          /**
+           * <code>SELF = 1;</code>
+           */
+          SELF(1, 1),
+          /**
+           * <code>PARENT = 2;</code>
+           */
+          PARENT(2, 2),
+          ;
+
+          /**
+           * <code>UNKNOWN = 0;</code>
+           */
+          public static final int UNKNOWN_VALUE = 0;
+          /**
+           * <code>SELF = 1;</code>
+           */
+          public static final int SELF_VALUE = 1;
+          /**
+           * <code>PARENT = 2;</code>
+           */
+          public static final int PARENT_VALUE = 2;
+
+
+          public final int getNumber() { return value; }
+
+          public static Type valueOf(int value) {
+            switch (value) {
+              case 0: return UNKNOWN;
+              case 1: return SELF;
+              case 2: return PARENT;
+              default: return null;
+            }
+          }
+
+          public static com.google.protobuf.Internal.EnumLiteMap<Type>
+              internalGetValueMap() {
+            return internalValueMap;
+          }
+          private static com.google.protobuf.Internal.EnumLiteMap<Type>
+              internalValueMap =
+                new com.google.protobuf.Internal.EnumLiteMap<Type>() {
+                  public Type findValueByNumber(int number) {
+                    return Type.valueOf(number);
+                  }
+                };
+
+          public final com.google.protobuf.Descriptors.EnumValueDescriptor
+              getValueDescriptor() {
+            return getDescriptor().getValues().get(index);
+          }
+          public final com.google.protobuf.Descriptors.EnumDescriptor
+              getDescriptorForType() {
+            return getDescriptor();
+          }
+          public static final com.google.protobuf.Descriptors.EnumDescriptor
+              getDescriptor() {
+            return org.apache.mesos.Protos.Volume.Source.SandboxPath.getDescriptor().getEnumTypes().get(0);
+          }
+
+          private static final Type[] VALUES = values();
+
+          public static Type valueOf(
+              com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+            if (desc.getType() != getDescriptor()) {
+              throw new java.lang.IllegalArgumentException(
+                "EnumValueDescriptor is not for this type.");
+            }
+            return VALUES[desc.getIndex()];
+          }
+
+          private final int index;
+          private final int value;
+
+          private Type(int index, int value) {
+            this.index = index;
+            this.value = value;
+          }
+
+          // @@protoc_insertion_point(enum_scope:mesos.Volume.Source.SandboxPath.Type)
+        }
+
+        private int bitField0_;
+        // optional .mesos.Volume.Source.SandboxPath.Type type = 1;
+        public static final int TYPE_FIELD_NUMBER = 1;
+        private org.apache.mesos.Protos.Volume.Source.SandboxPath.Type type_;
+        /**
+         * <code>optional .mesos.Volume.Source.SandboxPath.Type type = 1;</code>
+         */
+        public boolean hasType() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional .mesos.Volume.Source.SandboxPath.Type type = 1;</code>
+         */
+        public org.apache.mesos.Protos.Volume.Source.SandboxPath.Type getType() {
+          return type_;
+        }
+
+        // required string path = 2;
+        public static final int PATH_FIELD_NUMBER = 2;
+        private java.lang.Object path_;
+        /**
+         * <code>required string path = 2;</code>
+         *
+         * <pre>
+         * A path relative to the corresponding container's sandbox.
+         * Note that upwards traversal (i.e. ../../abc) is not allowed.
+         * </pre>
+         */
+        public boolean hasPath() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>required string path = 2;</code>
+         *
+         * <pre>
+         * A path relative to the corresponding container's sandbox.
+         * Note that upwards traversal (i.e. ../../abc) is not allowed.
+         * </pre>
+         */
+        public java.lang.String getPath() {
+          java.lang.Object ref = path_;
+          if (ref instanceof java.lang.String) {
+            return (java.lang.String) ref;
+          } else {
+            com.google.protobuf.ByteString bs = 
+                (com.google.protobuf.ByteString) ref;
+            java.lang.String s = bs.toStringUtf8();
+            if (bs.isValidUtf8()) {
+              path_ = s;
+            }
+            return s;
+          }
+        }
+        /**
+         * <code>required string path = 2;</code>
+         *
+         * <pre>
+         * A path relative to the corresponding container's sandbox.
+         * Note that upwards traversal (i.e. ../../abc) is not allowed.
+         * </pre>
+         */
+        public com.google.protobuf.ByteString
+            getPathBytes() {
+          java.lang.Object ref = path_;
+          if (ref instanceof java.lang.String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            path_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+
+        private void initFields() {
+          type_ = org.apache.mesos.Protos.Volume.Source.SandboxPath.Type.UNKNOWN;
+          path_ = "";
+        }
+        private byte memoizedIsInitialized = -1;
+        public final boolean isInitialized() {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized != -1) return isInitialized == 1;
+
+          if (!hasPath()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+          memoizedIsInitialized = 1;
+          return true;
+        }
+
+        public void writeTo(com.google.protobuf.CodedOutputStream output)
+                            throws java.io.IOException {
+          getSerializedSize();
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            output.writeEnum(1, type_.getNumber());
+          }
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            output.writeBytes(2, getPathBytes());
+          }
+          getUnknownFields().writeTo(output);
+        }
+
+        private int memoizedSerializedSize = -1;
+        public int getSerializedSize() {
+          int size = memoizedSerializedSize;
+          if (size != -1) return size;
+
+          size = 0;
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeEnumSize(1, type_.getNumber());
+          }
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeBytesSize(2, getPathBytes());
+          }
+          size += getUnknownFields().getSerializedSize();
+          memoizedSerializedSize = size;
+          return size;
+        }
+
+        private static final long serialVersionUID = 0L;
+        @java.lang.Override
+        protected java.lang.Object writeReplace()
+            throws java.io.ObjectStreamException {
+          return super.writeReplace();
+        }
+
+        public static org.apache.mesos.Protos.Volume.Source.SandboxPath parseFrom(
+            com.google.protobuf.ByteString data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.Protos.Volume.Source.SandboxPath parseFrom(
+            com.google.protobuf.ByteString data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.Volume.Source.SandboxPath parseFrom(byte[] data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.Protos.Volume.Source.SandboxPath parseFrom(
+            byte[] data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.Volume.Source.SandboxPath parseFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.Protos.Volume.Source.SandboxPath parseFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.Volume.Source.SandboxPath parseDelimitedFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input);
+        }
+        public static org.apache.mesos.Protos.Volume.Source.SandboxPath parseDelimitedFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.Volume.Source.SandboxPath parseFrom(
+            com.google.protobuf.CodedInputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.Protos.Volume.Source.SandboxPath parseFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+
+        public static Builder newBuilder() { return Builder.create(); }
+        public Builder newBuilderForType() { return newBuilder(); }
+        public static Builder newBuilder(org.apache.mesos.Protos.Volume.Source.SandboxPath prototype) {
+          return newBuilder().mergeFrom(prototype);
+        }
+        public Builder toBuilder() { return newBuilder(this); }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          Builder builder = new Builder(parent);
+          return builder;
+        }
+        /**
+         * Protobuf type {@code mesos.Volume.Source.SandboxPath}
+         *
+         * <pre>
+         * Describe a path from a container's sandbox. The container can
+         * be the current container (SELF), or its parent container
+         * (PARENT). PARENT allows all child containers to share a volume
+         * from their parent container's sandbox. It'll be an error if
+         * the current container is a top level container.
+         * </pre>
+         */
+        public static final class Builder extends
+            com.google.protobuf.GeneratedMessage.Builder<Builder>
+           implements org.apache.mesos.Protos.Volume.Source.SandboxPathOrBuilder {
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.Protos.internal_static_mesos_Volume_Source_SandboxPath_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.Protos.internal_static_mesos_Volume_Source_SandboxPath_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.Protos.Volume.Source.SandboxPath.class, org.apache.mesos.Protos.Volume.Source.SandboxPath.Builder.class);
+          }
+
+          // Construct using org.apache.mesos.Protos.Volume.Source.SandboxPath.newBuilder()
+          private Builder() {
+            maybeForceBuilderInitialization();
+          }
+
+          private Builder(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            super(parent);
+            maybeForceBuilderInitialization();
+          }
+          private void maybeForceBuilderInitialization() {
+            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            }
+          }
+          private static Builder create() {
+            return new Builder();
+          }
+
+          public Builder clear() {
+            super.clear();
+            type_ = org.apache.mesos.Protos.Volume.Source.SandboxPath.Type.UNKNOWN;
+            bitField0_ = (bitField0_ & ~0x00000001);
+            path_ = "";
+            bitField0_ = (bitField0_ & ~0x00000002);
+            return this;
+          }
+
+          public Builder clone() {
+            return create().mergeFrom(buildPartial());
+          }
+
+          public com.google.protobuf.Descriptors.Descriptor
+              getDescriptorForType() {
+            return org.apache.mesos.Protos.internal_static_mesos_Volume_Source_SandboxPath_descriptor;
+          }
+
+          public org.apache.mesos.Protos.Volume.Source.SandboxPath getDefaultInstanceForType() {
+            return org.apache.mesos.Protos.Volume.Source.SandboxPath.getDefaultInstance();
+          }
+
+          public org.apache.mesos.Protos.Volume.Source.SandboxPath build() {
+            org.apache.mesos.Protos.Volume.Source.SandboxPath result = buildPartial();
+            if (!result.isInitialized()) {
+              throw newUninitializedMessageException(result);
+            }
+            return result;
+          }
+
+          public org.apache.mesos.Protos.Volume.Source.SandboxPath buildPartial() {
+            org.apache.mesos.Protos.Volume.Source.SandboxPath result = new org.apache.mesos.Protos.Volume.Source.SandboxPath(this);
+            int from_bitField0_ = bitField0_;
+            int to_bitField0_ = 0;
+            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+              to_bitField0_ |= 0x00000001;
+            }
+            result.type_ = type_;
+            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+              to_bitField0_ |= 0x00000002;
+            }
+            result.path_ = path_;
+            result.bitField0_ = to_bitField0_;
+            onBuilt();
+            return result;
+          }
+
+          public Builder mergeFrom(com.google.protobuf.Message other) {
+            if (other instanceof org.apache.mesos.Protos.Volume.Source.SandboxPath) {
+              return mergeFrom((org.apache.mesos.Protos.Volume.Source.SandboxPath)other);
+            } else {
+              super.mergeFrom(other);
+              return this;
+            }
+          }
+
+          public Builder mergeFrom(org.apache.mesos.Protos.Volume.Source.SandboxPath other) {
+            if (other == org.apache.mesos.Protos.Volume.Source.SandboxPath.getDefaultInstance()) return this;
+            if (other.hasType()) {
+              setType(other.getType());
+            }
+            if (other.hasPath()) {
+              bitField0_ |= 0x00000002;
+              path_ = other.path_;
+              onChanged();
+            }
+            this.mergeUnknownFields(other.getUnknownFields());
+            return this;
+          }
+
+          public final boolean isInitialized() {
+            if (!hasPath()) {
+              
+              return false;
+            }
+            return true;
+          }
+
+          public Builder mergeFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            org.apache.mesos.Protos.Volume.Source.SandboxPath parsedMessage = null;
+            try {
+              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              parsedMessage = (org.apache.mesos.Protos.Volume.Source.SandboxPath) e.getUnfinishedMessage();
+              throw e;
+            } finally {
+              if (parsedMessage != null) {
+                mergeFrom(parsedMessage);
+              }
+            }
+            return this;
+          }
+          private int bitField0_;
+
+          // optional .mesos.Volume.Source.SandboxPath.Type type = 1;
+          private org.apache.mesos.Protos.Volume.Source.SandboxPath.Type type_ = org.apache.mesos.Protos.Volume.Source.SandboxPath.Type.UNKNOWN;
+          /**
+           * <code>optional .mesos.Volume.Source.SandboxPath.Type type = 1;</code>
+           */
+          public boolean hasType() {
+            return ((bitField0_ & 0x00000001) == 0x00000001);
+          }
+          /**
+           * <code>optional .mesos.Volume.Source.SandboxPath.Type type = 1;</code>
+           */
+          public org.apache.mesos.Protos.Volume.Source.SandboxPath.Type getType() {
+            return type_;
+          }
+          /**
+           * <code>optional .mesos.Volume.Source.SandboxPath.Type type = 1;</code>
+           */
+          public Builder setType(org.apache.mesos.Protos.Volume.Source.SandboxPath.Type value) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            bitField0_ |= 0x00000001;
+            type_ = value;
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>optional .mesos.Volume.Source.SandboxPath.Type type = 1;</code>
+           */
+          public Builder clearType() {
+            bitField0_ = (bitField0_ & ~0x00000001);
+            type_ = org.apache.mesos.Protos.Volume.Source.SandboxPath.Type.UNKNOWN;
+            onChanged();
+            return this;
+          }
+
+          // required string path = 2;
+          private java.lang.Object path_ = "";
+          /**
+           * <code>required string path = 2;</code>
+           *
+           * <pre>
+           * A path relative to the corresponding container's sandbox.
+           * Note that upwards traversal (i.e. ../../abc) is not allowed.
+           * </pre>
+           */
+          public boolean hasPath() {
+            return ((bitField0_ & 0x00000002) == 0x00000002);
+          }
+          /**
+           * <code>required string path = 2;</code>
+           *
+           * <pre>
+           * A path relative to the corresponding container's sandbox.
+           * Note that upwards traversal (i.e. ../../abc) is not allowed.
+           * </pre>
+           */
+          public java.lang.String getPath() {
+            java.lang.Object ref = path_;
+            if (!(ref instanceof java.lang.String)) {
+              java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                  .toStringUtf8();
+              path_ = s;
+              return s;
+            } else {
+              return (java.lang.String) ref;
+            }
+          }
+          /**
+           * <code>required string path = 2;</code>
+           *
+           * <pre>
+           * A path relative to the corresponding container's sandbox.
+           * Note that upwards traversal (i.e. ../../abc) is not allowed.
+           * </pre>
+           */
+          public com.google.protobuf.ByteString
+              getPathBytes() {
+            java.lang.Object ref = path_;
+            if (ref instanceof String) {
+              com.google.protobuf.ByteString b = 
+                  com.google.protobuf.ByteString.copyFromUtf8(
+                      (java.lang.String) ref);
+              path_ = b;
+              return b;
+            } else {
+              return (com.google.protobuf.ByteString) ref;
+            }
+          }
+          /**
+           * <code>required string path = 2;</code>
+           *
+           * <pre>
+           * A path relative to the corresponding container's sandbox.
+           * Note that upwards traversal (i.e. ../../abc) is not allowed.
+           * </pre>
+           */
+          public Builder setPath(
+              java.lang.String value) {
+            if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+            path_ = value;
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>required string path = 2;</code>
+           *
+           * <pre>
+           * A path relative to the corresponding container's sandbox.
+           * Note that upwards traversal (i.e. ../../abc) is not allowed.
+           * </pre>
+           */
+          public Builder clearPath() {
+            bitField0_ = (bitField0_ & ~0x00000002);
+            path_ = getDefaultInstance().getPath();
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>required string path = 2;</code>
+           *
+           * <pre>
+           * A path relative to the corresponding container's sandbox.
+           * Note that upwards traversal (i.e. ../../abc) is not allowed.
+           * </pre>
+           */
+          public Builder setPathBytes(
+              com.google.protobuf.ByteString value) {
+            if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+            path_ = value;
+            onChanged();
+            return this;
+          }
+
+          // @@protoc_insertion_point(builder_scope:mesos.Volume.Source.SandboxPath)
+        }
+
+        static {
+          defaultInstance = new SandboxPath(true);
+          defaultInstance.initFields();
+        }
+
+        // @@protoc_insertion_point(class_scope:mesos.Volume.Source.SandboxPath)
+      }
+
+      private int bitField0_;
+      // optional .mesos.Volume.Source.Type type = 1;
+      public static final int TYPE_FIELD_NUMBER = 1;
+      private org.apache.mesos.Protos.Volume.Source.Type type_;
+      /**
+       * <code>optional .mesos.Volume.Source.Type type = 1;</code>
+       *
+       * <pre>
+       * Enum fields should be optional, see: MESOS-4997.
+       * </pre>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.Volume.Source.Type type = 1;</code>
+       *
+       * <pre>
+       * Enum fields should be optional, see: MESOS-4997.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Volume.Source.Type getType() {
+        return type_;
+      }
+
+      // optional .mesos.Volume.Source.DockerVolume docker_volume = 2;
+      public static final int DOCKER_VOLUME_FIELD_NUMBER = 2;
+      private org.apache.mesos.Protos.Volume.Source.DockerVolume dockerVolume_;
+      /**
+       * <code>optional .mesos.Volume.Source.DockerVolume docker_volume = 2;</code>
+       *
+       * <pre>
+       * The source of the volume created by docker volume driver.
+       * </pre>
+       */
+      public boolean hasDockerVolume() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.Volume.Source.DockerVolume docker_volume = 2;</code>
+       *
+       * <pre>
+       * The source of the volume created by docker volume driver.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Volume.Source.DockerVolume getDockerVolume() {
+        return dockerVolume_;
+      }
+      /**
+       * <code>optional .mesos.Volume.Source.DockerVolume docker_volume = 2;</code>
+       *
+       * <pre>
+       * The source of the volume created by docker volume driver.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Volume.Source.DockerVolumeOrBuilder getDockerVolumeOrBuilder() {
+        return dockerVolume_;
+      }
+
+      // optional .mesos.Volume.Source.SandboxPath sandbox_path = 3;
+      public static final int SANDBOX_PATH_FIELD_NUMBER = 3;
+      private org.apache.mesos.Protos.Volume.Source.SandboxPath sandboxPath_;
+      /**
+       * <code>optional .mesos.Volume.Source.SandboxPath sandbox_path = 3;</code>
+       */
+      public boolean hasSandboxPath() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.Volume.Source.SandboxPath sandbox_path = 3;</code>
+       */
+      public org.apache.mesos.Protos.Volume.Source.SandboxPath getSandboxPath() {
+        return sandboxPath_;
+      }
+      /**
+       * <code>optional .mesos.Volume.Source.SandboxPath sandbox_path = 3;</code>
+       */
+      public org.apache.mesos.Protos.Volume.Source.SandboxPathOrBuilder getSandboxPathOrBuilder() {
+        return sandboxPath_;
+      }
+
+      // optional .mesos.Secret secret = 4;
+      public static final int SECRET_FIELD_NUMBER = 4;
+      private org.apache.mesos.Protos.Secret secret_;
+      /**
+       * <code>optional .mesos.Secret secret = 4;</code>
+       *
+       * <pre>
+       * The volume/secret isolator uses the secret-fetcher module (third-party or
+       * internal) downloads the secret and makes it available at container_path.
+       * </pre>
+       */
+      public boolean hasSecret() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.Secret secret = 4;</code>
+       *
+       * <pre>
+       * The volume/secret isolator uses the secret-fetcher module (third-party or
+       * internal) downloads the secret and makes it available at container_path.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Secret getSecret() {
+        return secret_;
+      }
+      /**
+       * <code>optional .mesos.Secret secret = 4;</code>
+       *
+       * <pre>
+       * The volume/secret isolator uses the secret-fetcher module (third-party or
+       * internal) downloads the secret and makes it available at container_path.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.SecretOrBuilder getSecretOrBuilder() {
+        return secret_;
+      }
+
+      private void initFields() {
+        type_ = org.apache.mesos.Protos.Volume.Source.Type.UNKNOWN;
+        dockerVolume_ = org.apache.mesos.Protos.Volume.Source.DockerVolume.getDefaultInstance();
+        sandboxPath_ = org.apache.mesos.Protos.Volume.Source.SandboxPath.getDefaultInstance();
+        secret_ = org.apache.mesos.Protos.Secret.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (hasDockerVolume()) {
+          if (!getDockerVolume().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        if (hasSandboxPath()) {
+          if (!getSandboxPath().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        if (hasSecret()) {
+          if (!getSecret().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeEnum(1, type_.getNumber());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeMessage(2, dockerVolume_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeMessage(3, sandboxPath_);
+        }
+        if (((bitField0_ & 0x00000008) == 0x00000008)) {
+          output.writeMessage(4, secret_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeEnumSize(1, type_.getNumber());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(2, dockerVolume_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(3, sandboxPath_);
+        }
+        if (((bitField0_ & 0x00000008) == 0x00000008)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(4, secret_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.Protos.Volume.Source parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.Volume.Source parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Volume.Source parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.Volume.Source parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Volume.Source parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.Volume.Source parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Volume.Source parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.Protos.Volume.Source parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Volume.Source parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.Volume.Source parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.Protos.Volume.Source prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.Volume.Source}
+       *
+       * <pre>
+       * Describes where a volume originates from.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.Protos.Volume.SourceOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_Volume_Source_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_Volume_Source_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.Volume.Source.class, org.apache.mesos.Protos.Volume.Source.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.Protos.Volume.Source.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getDockerVolumeFieldBuilder();
+            getSandboxPathFieldBuilder();
+            getSecretFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          type_ = org.apache.mesos.Protos.Volume.Source.Type.UNKNOWN;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          if (dockerVolumeBuilder_ == null) {
+            dockerVolume_ = org.apache.mesos.Protos.Volume.Source.DockerVolume.getDefaultInstance();
+          } else {
+            dockerVolumeBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          if (sandboxPathBuilder_ == null) {
+            sandboxPath_ = org.apache.mesos.Protos.Volume.Source.SandboxPath.getDefaultInstance();
+          } else {
+            sandboxPathBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
+          if (secretBuilder_ == null) {
+            secret_ = org.apache.mesos.Protos.Secret.getDefaultInstance();
+          } else {
+            secretBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000008);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.Protos.internal_static_mesos_Volume_Source_descriptor;
+        }
+
+        public org.apache.mesos.Protos.Volume.Source getDefaultInstanceForType() {
+          return org.apache.mesos.Protos.Volume.Source.getDefaultInstance();
+        }
+
+        public org.apache.mesos.Protos.Volume.Source build() {
+          org.apache.mesos.Protos.Volume.Source result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.Protos.Volume.Source buildPartial() {
+          org.apache.mesos.Protos.Volume.Source result = new org.apache.mesos.Protos.Volume.Source(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.type_ = type_;
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          if (dockerVolumeBuilder_ == null) {
+            result.dockerVolume_ = dockerVolume_;
+          } else {
+            result.dockerVolume_ = dockerVolumeBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          if (sandboxPathBuilder_ == null) {
+            result.sandboxPath_ = sandboxPath_;
+          } else {
+            result.sandboxPath_ = sandboxPathBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+            to_bitField0_ |= 0x00000008;
+          }
+          if (secretBuilder_ == null) {
+            result.secret_ = secret_;
+          } else {
+            result.secret_ = secretBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.Protos.Volume.Source) {
+            return mergeFrom((org.apache.mesos.Protos.Volume.Source)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.Protos.Volume.Source other) {
+          if (other == org.apache.mesos.Protos.Volume.Source.getDefaultInstance()) return this;
+          if (other.hasType()) {
+            setType(other.getType());
+          }
+          if (other.hasDockerVolume()) {
+            mergeDockerVolume(other.getDockerVolume());
+          }
+          if (other.hasSandboxPath()) {
+            mergeSandboxPath(other.getSandboxPath());
+          }
+          if (other.hasSecret()) {
+            mergeSecret(other.getSecret());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (hasDockerVolume()) {
+            if (!getDockerVolume().isInitialized()) {
+              
+              return false;
+            }
+          }
+          if (hasSandboxPath()) {
+            if (!getSandboxPath().isInitialized()) {
+              
+              return false;
+            }
+          }
+          if (hasSecret()) {
+            if (!getSecret().isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.Protos.Volume.Source parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.Protos.Volume.Source) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // optional .mesos.Volume.Source.Type type = 1;
+        private org.apache.mesos.Protos.Volume.Source.Type type_ = org.apache.mesos.Protos.Volume.Source.Type.UNKNOWN;
+        /**
+         * <code>optional .mesos.Volume.Source.Type type = 1;</code>
+         *
+         * <pre>
+         * Enum fields should be optional, see: MESOS-4997.
+         * </pre>
+         */
+        public boolean hasType() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional .mesos.Volume.Source.Type type = 1;</code>
+         *
+         * <pre>
+         * Enum fields should be optional, see: MESOS-4997.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.Volume.Source.Type getType() {
+          return type_;
+        }
+        /**
+         * <code>optional .mesos.Volume.Source.Type type = 1;</code>
+         *
+         * <pre>
+         * Enum fields should be optional, see: MESOS-4997.
+         * </pre>
+         */
+        public Builder setType(org.apache.mesos.Protos.Volume.Source.Type value) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          bitField0_ |= 0x00000001;
+          type_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Volume.Source.Type type = 1;</code>
+         *
+         * <pre>
+         * Enum fields should be optional, see: MESOS-4997.
+         * </pre>
+         */
+        public Builder clearType() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          type_ = org.apache.mesos.Protos.Volume.Source.Type.UNKNOWN;
+          onChanged();
+          return this;
+        }
+
+        // optional .mesos.Volume.Source.DockerVolume docker_volume = 2;
+        private org.apache.mesos.Protos.Volume.Source.DockerVolume dockerVolume_ = org.apache.mesos.Protos.Volume.Source.DockerVolume.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Volume.Source.DockerVolume, org.apache.mesos.Protos.Volume.Source.DockerVolume.Builder, org.apache.mesos.Protos.Volume.Source.DockerVolumeOrBuilder> dockerVolumeBuilder_;
+        /**
+         * <code>optional .mesos.Volume.Source.DockerVolume docker_volume = 2;</code>
+         *
+         * <pre>
+         * The source of the volume created by docker volume driver.
+         * </pre>
+         */
+        public boolean hasDockerVolume() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional .mesos.Volume.Source.DockerVolume docker_volume = 2;</code>
+         *
+         * <pre>
+         * The source of the volume created by docker volume driver.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.Volume.Source.DockerVolume getDockerVolume() {
+          if (dockerVolumeBuilder_ == null) {
+            return dockerVolume_;
+          } else {
+            return dockerVolumeBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.Volume.Source.DockerVolume docker_volume = 2;</code>
+         *
+         * <pre>
+         * The source of the volume created by docker volume driver.
+         * </pre>
+         */
+        public Builder setDockerVolume(org.apache.mesos.Protos.Volume.Source.DockerVolume value) {
+          if (dockerVolumeBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            dockerVolume_ = value;
+            onChanged();
+          } else {
+            dockerVolumeBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Volume.Source.DockerVolume docker_volume = 2;</code>
+         *
+         * <pre>
+         * The source of the volume created by docker volume driver.
+         * </pre>
+         */
+        public Builder setDockerVolume(
+            org.apache.mesos.Protos.Volume.Source.DockerVolume.Builder builderForValue) {
+          if (dockerVolumeBuilder_ == null) {
+            dockerVolume_ = builderForValue.build();
+            onChanged();
+          } else {
+            dockerVolumeBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Volume.Source.DockerVolume docker_volume = 2;</code>
+         *
+         * <pre>
+         * The source of the volume created by docker volume driver.
+         * </pre>
+         */
+        public Builder mergeDockerVolume(org.apache.mesos.Protos.Volume.Source.DockerVolume value) {
+          if (dockerVolumeBuilder_ == null) {
+            if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                dockerVolume_ != org.apache.mesos.Protos.Volume.Source.DockerVolume.getDefaultInstance()) {
+              dockerVolume_ =
+                org.apache.mesos.Protos.Volume.Source.DockerVolume.newBuilder(dockerVolume_).mergeFrom(value).buildPartial();
+            } else {
+              dockerVolume_ = value;
+            }
+            onChanged();
+          } else {
+            dockerVolumeBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Volume.Source.DockerVolume docker_volume = 2;</code>
+         *
+         * <pre>
+         * The source of the volume created by docker volume driver.
+         * </pre>
+         */
+        public Builder clearDockerVolume() {
+          if (dockerVolumeBuilder_ == null) {
+            dockerVolume_ = org.apache.mesos.Protos.Volume.Source.DockerVolume.getDefaultInstance();
+            onChanged();
+          } else {
+            dockerVolumeBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Volume.Source.DockerVolume docker_volume = 2;</code>
+         *
+         * <pre>
+         * The source of the volume created by docker volume driver.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.Volume.Source.DockerVolume.Builder getDockerVolumeBuilder() {
+          bitField0_ |= 0x00000002;
+          onChanged();
+          return getDockerVolumeFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.Volume.Source.DockerVolume docker_volume = 2;</code>
+         *
+         * <pre>
+         * The source of the volume created by docker volume driver.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.Volume.Source.DockerVolumeOrBuilder getDockerVolumeOrBuilder() {
+          if (dockerVolumeBuilder_ != null) {
+            return dockerVolumeBuilder_.getMessageOrBuilder();
+          } else {
+            return dockerVolume_;
+          }
+        }
+        /**
+         * <code>optional .mesos.Volume.Source.DockerVolume docker_volume = 2;</code>
+         *
+         * <pre>
+         * The source of the volume created by docker volume driver.
+         * </pre>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Volume.Source.DockerVolume, org.apache.mesos.Protos.Volume.Source.DockerVolume.Builder, org.apache.mesos.Protos.Volume.Source.DockerVolumeOrBuilder> 
+            getDockerVolumeFieldBuilder() {
+          if (dockerVolumeBuilder_ == null) {
+            dockerVolumeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.Volume.Source.DockerVolume, org.apache.mesos.Protos.Volume.Source.DockerVolume.Builder, org.apache.mesos.Protos.Volume.Source.DockerVolumeOrBuilder>(
+                    dockerVolume_,
+                    getParentForChildren(),
+                    isClean());
+            dockerVolume_ = null;
+          }
+          return dockerVolumeBuilder_;
+        }
+
+        // optional .mesos.Volume.Source.SandboxPath sandbox_path = 3;
+        private org.apache.mesos.Protos.Volume.Source.SandboxPath sandboxPath_ = org.apache.mesos.Protos.Volume.Source.SandboxPath.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Volume.Source.SandboxPath, org.apache.mesos.Protos.Volume.Source.SandboxPath.Builder, org.apache.mesos.Protos.Volume.Source.SandboxPathOrBuilder> sandboxPathBuilder_;
+        /**
+         * <code>optional .mesos.Volume.Source.SandboxPath sandbox_path = 3;</code>
+         */
+        public boolean hasSandboxPath() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional .mesos.Volume.Source.SandboxPath sandbox_path = 3;</code>
+         */
+        public org.apache.mesos.Protos.Volume.Source.SandboxPath getSandboxPath() {
+          if (sandboxPathBuilder_ == null) {
+            return sandboxPath_;
+          } else {
+            return sandboxPathBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.Volume.Source.SandboxPath sandbox_path = 3;</code>
+         */
+        public Builder setSandboxPath(org.apache.mesos.Protos.Volume.Source.SandboxPath value) {
+          if (sandboxPathBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            sandboxPath_ = value;
+            onChanged();
+          } else {
+            sandboxPathBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Volume.Source.SandboxPath sandbox_path = 3;</code>
+         */
+        public Builder setSandboxPath(
+            org.apache.mesos.Protos.Volume.Source.SandboxPath.Builder builderForValue) {
+          if (sandboxPathBuilder_ == null) {
+            sandboxPath_ = builderForValue.build();
+            onChanged();
+          } else {
+            sandboxPathBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Volume.Source.SandboxPath sandbox_path = 3;</code>
+         */
+        public Builder mergeSandboxPath(org.apache.mesos.Protos.Volume.Source.SandboxPath value) {
+          if (sandboxPathBuilder_ == null) {
+            if (((bitField0_ & 0x00000004) == 0x00000004) &&
+                sandboxPath_ != org.apache.mesos.Protos.Volume.Source.SandboxPath.getDefaultInstance()) {
+              sandboxPath_ =
+                org.apache.mesos.Protos.Volume.Source.SandboxPath.newBuilder(sandboxPath_).mergeFrom(value).buildPartial();
+            } else {
+              sandboxPath_ = value;
+            }
+            onChanged();
+          } else {
+            sandboxPathBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Volume.Source.SandboxPath sandbox_path = 3;</code>
+         */
+        public Builder clearSandboxPath() {
+          if (sandboxPathBuilder_ == null) {
+            sandboxPath_ = org.apache.mesos.Protos.Volume.Source.SandboxPath.getDefaultInstance();
+            onChanged();
+          } else {
+            sandboxPathBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Volume.Source.SandboxPath sandbox_path = 3;</code>
+         */
+        public org.apache.mesos.Protos.Volume.Source.SandboxPath.Builder getSandboxPathBuilder() {
+          bitField0_ |= 0x00000004;
+          onChanged();
+          return getSandboxPathFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.Volume.Source.SandboxPath sandbox_path = 3;</code>
+         */
+        public org.apache.mesos.Protos.Volume.Source.SandboxPathOrBuilder getSandboxPathOrBuilder() {
+          if (sandboxPathBuilder_ != null) {
+            return sandboxPathBuilder_.getMessageOrBuilder();
+          } else {
+            return sandboxPath_;
+          }
+        }
+        /**
+         * <code>optional .mesos.Volume.Source.SandboxPath sandbox_path = 3;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Volume.Source.SandboxPath, org.apache.mesos.Protos.Volume.Source.SandboxPath.Builder, org.apache.mesos.Protos.Volume.Source.SandboxPathOrBuilder> 
+            getSandboxPathFieldBuilder() {
+          if (sandboxPathBuilder_ == null) {
+            sandboxPathBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.Volume.Source.SandboxPath, org.apache.mesos.Protos.Volume.Source.SandboxPath.Builder, org.apache.mesos.Protos.Volume.Source.SandboxPathOrBuilder>(
+                    sandboxPath_,
+                    getParentForChildren(),
+                    isClean());
+            sandboxPath_ = null;
+          }
+          return sandboxPathBuilder_;
+        }
+
+        // optional .mesos.Secret secret = 4;
+        private org.apache.mesos.Protos.Secret secret_ = org.apache.mesos.Protos.Secret.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Secret, org.apache.mesos.Protos.Secret.Builder, org.apache.mesos.Protos.SecretOrBuilder> secretBuilder_;
+        /**
+         * <code>optional .mesos.Secret secret = 4;</code>
+         *
+         * <pre>
+         * The volume/secret isolator uses the secret-fetcher module (third-party or
+         * internal) downloads the secret and makes it available at container_path.
+         * </pre>
+         */
+        public boolean hasSecret() {
+          return ((bitField0_ & 0x00000008) == 0x00000008);
+        }
+        /**
+         * <code>optional .mesos.Secret secret = 4;</code>
+         *
+         * <pre>
+         * The volume/secret isolator uses the secret-fetcher module (third-party or
+         * internal) downloads the secret and makes it available at container_path.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.Secret getSecret() {
+          if (secretBuilder_ == null) {
+            return secret_;
+          } else {
+            return secretBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.Secret secret = 4;</code>
+         *
+         * <pre>
+         * The volume/secret isolator uses the secret-fetcher module (third-party or
+         * internal) downloads the secret and makes it available at container_path.
+         * </pre>
+         */
+        public Builder setSecret(org.apache.mesos.Protos.Secret value) {
+          if (secretBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            secret_ = value;
+            onChanged();
+          } else {
+            secretBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000008;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Secret secret = 4;</code>
+         *
+         * <pre>
+         * The volume/secret isolator uses the secret-fetcher module (third-party or
+         * internal) downloads the secret and makes it available at container_path.
+         * </pre>
+         */
+        public Builder setSecret(
+            org.apache.mesos.Protos.Secret.Builder builderForValue) {
+          if (secretBuilder_ == null) {
+            secret_ = builderForValue.build();
+            onChanged();
+          } else {
+            secretBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000008;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Secret secret = 4;</code>
+         *
+         * <pre>
+         * The volume/secret isolator uses the secret-fetcher module (third-party or
+         * internal) downloads the secret and makes it available at container_path.
+         * </pre>
+         */
+        public Builder mergeSecret(org.apache.mesos.Protos.Secret value) {
+          if (secretBuilder_ == null) {
+            if (((bitField0_ & 0x00000008) == 0x00000008) &&
+                secret_ != org.apache.mesos.Protos.Secret.getDefaultInstance()) {
+              secret_ =
+                org.apache.mesos.Protos.Secret.newBuilder(secret_).mergeFrom(value).buildPartial();
+            } else {
+              secret_ = value;
+            }
+            onChanged();
+          } else {
+            secretBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000008;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Secret secret = 4;</code>
+         *
+         * <pre>
+         * The volume/secret isolator uses the secret-fetcher module (third-party or
+         * internal) downloads the secret and makes it available at container_path.
+         * </pre>
+         */
+        public Builder clearSecret() {
+          if (secretBuilder_ == null) {
+            secret_ = org.apache.mesos.Protos.Secret.getDefaultInstance();
+            onChanged();
+          } else {
+            secretBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000008);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Secret secret = 4;</code>
+         *
+         * <pre>
+         * The volume/secret isolator uses the secret-fetcher module (third-party or
+         * internal) downloads the secret and makes it available at container_path.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.Secret.Builder getSecretBuilder() {
+          bitField0_ |= 0x00000008;
+          onChanged();
+          return getSecretFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.Secret secret = 4;</code>
+         *
+         * <pre>
+         * The volume/secret isolator uses the secret-fetcher module (third-party or
+         * internal) downloads the secret and makes it available at container_path.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.SecretOrBuilder getSecretOrBuilder() {
+          if (secretBuilder_ != null) {
+            return secretBuilder_.getMessageOrBuilder();
+          } else {
+            return secret_;
+          }
+        }
+        /**
+         * <code>optional .mesos.Secret secret = 4;</code>
+         *
+         * <pre>
+         * The volume/secret isolator uses the secret-fetcher module (third-party or
+         * internal) downloads the secret and makes it available at container_path.
+         * </pre>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Secret, org.apache.mesos.Protos.Secret.Builder, org.apache.mesos.Protos.SecretOrBuilder> 
+            getSecretFieldBuilder() {
+          if (secretBuilder_ == null) {
+            secretBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.Secret, org.apache.mesos.Protos.Secret.Builder, org.apache.mesos.Protos.SecretOrBuilder>(
+                    secret_,
+                    getParentForChildren(),
+                    isClean());
+            secret_ = null;
+          }
+          return secretBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.Volume.Source)
+      }
+
+      static {
+        defaultInstance = new Source(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.Volume.Source)
+    }
+
+    private int bitField0_;
+    // required .mesos.Volume.Mode mode = 3;
+    public static final int MODE_FIELD_NUMBER = 3;
+    private org.apache.mesos.Protos.Volume.Mode mode_;
+    /**
+     * <code>required .mesos.Volume.Mode mode = 3;</code>
+     *
+     * <pre>
+     * TODO(gyliu513): Make this as `optional` after deprecation cycle of 1.0.
+     * </pre>
+     */
+    public boolean hasMode() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required .mesos.Volume.Mode mode = 3;</code>
+     *
+     * <pre>
+     * TODO(gyliu513): Make this as `optional` after deprecation cycle of 1.0.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.Volume.Mode getMode() {
+      return mode_;
+    }
+
+    // required string container_path = 1;
+    public static final int CONTAINER_PATH_FIELD_NUMBER = 1;
+    private java.lang.Object containerPath_;
+    /**
+     * <code>required string container_path = 1;</code>
+     *
+     * <pre>
+     * Path pointing to a directory or file in the container. If the
+     * path is a relative path, it is relative to the container work
+     * directory. If the path is an absolute path, that path must
+     * already exist.
+     * </pre>
+     */
+    public boolean hasContainerPath() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>required string container_path = 1;</code>
+     *
+     * <pre>
+     * Path pointing to a directory or file in the container. If the
+     * path is a relative path, it is relative to the container work
+     * directory. If the path is an absolute path, that path must
+     * already exist.
+     * </pre>
+     */
+    public java.lang.String getContainerPath() {
+      java.lang.Object ref = containerPath_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          containerPath_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string container_path = 1;</code>
+     *
+     * <pre>
+     * Path pointing to a directory or file in the container. If the
+     * path is a relative path, it is relative to the container work
+     * directory. If the path is an absolute path, that path must
+     * already exist.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getContainerPathBytes() {
+      java.lang.Object ref = containerPath_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        containerPath_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional string host_path = 2;
+    public static final int HOST_PATH_FIELD_NUMBER = 2;
+    private java.lang.Object hostPath_;
+    /**
+     * <code>optional string host_path = 2;</code>
+     *
+     * <pre>
+     * Absolute path pointing to a directory or file on the host or a
+     * path relative to the container work directory.
+     * </pre>
+     */
+    public boolean hasHostPath() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional string host_path = 2;</code>
+     *
+     * <pre>
+     * Absolute path pointing to a directory or file on the host or a
+     * path relative to the container work directory.
+     * </pre>
+     */
+    public java.lang.String getHostPath() {
+      java.lang.Object ref = hostPath_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          hostPath_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string host_path = 2;</code>
+     *
+     * <pre>
+     * Absolute path pointing to a directory or file on the host or a
+     * path relative to the container work directory.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getHostPathBytes() {
+      java.lang.Object ref = hostPath_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        hostPath_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional .mesos.Image image = 4;
+    public static final int IMAGE_FIELD_NUMBER = 4;
+    private org.apache.mesos.Protos.Image image_;
+    /**
+     * <code>optional .mesos.Image image = 4;</code>
+     *
+     * <pre>
+     * The source of the volume is an Image which describes a root
+     * filesystem which will be provisioned by Mesos.
+     * </pre>
+     */
+    public boolean hasImage() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional .mesos.Image image = 4;</code>
+     *
+     * <pre>
+     * The source of the volume is an Image which describes a root
+     * filesystem which will be provisioned by Mesos.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.Image getImage() {
+      return image_;
+    }
+    /**
+     * <code>optional .mesos.Image image = 4;</code>
+     *
+     * <pre>
+     * The source of the volume is an Image which describes a root
+     * filesystem which will be provisioned by Mesos.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.ImageOrBuilder getImageOrBuilder() {
+      return image_;
+    }
+
+    // optional .mesos.Volume.Source source = 5;
+    public static final int SOURCE_FIELD_NUMBER = 5;
+    private org.apache.mesos.Protos.Volume.Source source_;
+    /**
+     * <code>optional .mesos.Volume.Source source = 5;</code>
+     */
+    public boolean hasSource() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional .mesos.Volume.Source source = 5;</code>
+     */
+    public org.apache.mesos.Protos.Volume.Source getSource() {
+      return source_;
+    }
+    /**
+     * <code>optional .mesos.Volume.Source source = 5;</code>
+     */
+    public org.apache.mesos.Protos.Volume.SourceOrBuilder getSourceOrBuilder() {
+      return source_;
+    }
+
+    private void initFields() {
+      mode_ = org.apache.mesos.Protos.Volume.Mode.RW;
+      containerPath_ = "";
+      hostPath_ = "";
+      image_ = org.apache.mesos.Protos.Image.getDefaultInstance();
+      source_ = org.apache.mesos.Protos.Volume.Source.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasMode()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasContainerPath()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (hasImage()) {
+        if (!getImage().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasSource()) {
+        if (!getSource().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(1, getContainerPathBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeBytes(2, getHostPathBytes());
+      }
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeEnum(3, mode_.getNumber());
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeMessage(4, image_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeMessage(5, source_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getContainerPathBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(2, getHostPathBytes());
+      }
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(3, mode_.getNumber());
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, image_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(5, source_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.Volume parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Volume parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Volume parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Volume parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Volume parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Volume parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Volume parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.Volume parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Volume parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Volume parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.Volume prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.Volume}
+     *
+     * <pre>
+     **
+     * Describes a volume mapping either from host to container or vice
+     * versa. Both paths can either refer to a directory or a file.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.VolumeOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_Volume_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_Volume_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.Volume.class, org.apache.mesos.Protos.Volume.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.Volume.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getImageFieldBuilder();
+          getSourceFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        mode_ = org.apache.mesos.Protos.Volume.Mode.RW;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        containerPath_ = "";
+        bitField0_ = (bitField0_ & ~0x00000002);
+        hostPath_ = "";
+        bitField0_ = (bitField0_ & ~0x00000004);
+        if (imageBuilder_ == null) {
+          image_ = org.apache.mesos.Protos.Image.getDefaultInstance();
+        } else {
+          imageBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        if (sourceBuilder_ == null) {
+          source_ = org.apache.mesos.Protos.Volume.Source.getDefaultInstance();
+        } else {
+          sourceBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_Volume_descriptor;
+      }
+
+      public org.apache.mesos.Protos.Volume getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.Volume.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.Volume build() {
+        org.apache.mesos.Protos.Volume result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.Volume buildPartial() {
+        org.apache.mesos.Protos.Volume result = new org.apache.mesos.Protos.Volume(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.mode_ = mode_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.containerPath_ = containerPath_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.hostPath_ = hostPath_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        if (imageBuilder_ == null) {
+          result.image_ = image_;
+        } else {
+          result.image_ = imageBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        if (sourceBuilder_ == null) {
+          result.source_ = source_;
+        } else {
+          result.source_ = sourceBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.Volume) {
+          return mergeFrom((org.apache.mesos.Protos.Volume)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.Volume other) {
+        if (other == org.apache.mesos.Protos.Volume.getDefaultInstance()) return this;
+        if (other.hasMode()) {
+          setMode(other.getMode());
+        }
+        if (other.hasContainerPath()) {
+          bitField0_ |= 0x00000002;
+          containerPath_ = other.containerPath_;
+          onChanged();
+        }
+        if (other.hasHostPath()) {
+          bitField0_ |= 0x00000004;
+          hostPath_ = other.hostPath_;
+          onChanged();
+        }
+        if (other.hasImage()) {
+          mergeImage(other.getImage());
+        }
+        if (other.hasSource()) {
+          mergeSource(other.getSource());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasMode()) {
+          
+          return false;
+        }
+        if (!hasContainerPath()) {
+          
+          return false;
+        }
+        if (hasImage()) {
+          if (!getImage().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasSource()) {
+          if (!getSource().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.Volume parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.Volume) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required .mesos.Volume.Mode mode = 3;
+      private org.apache.mesos.Protos.Volume.Mode mode_ = org.apache.mesos.Protos.Volume.Mode.RW;
+      /**
+       * <code>required .mesos.Volume.Mode mode = 3;</code>
+       *
+       * <pre>
+       * TODO(gyliu513): Make this as `optional` after deprecation cycle of 1.0.
+       * </pre>
+       */
+      public boolean hasMode() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.Volume.Mode mode = 3;</code>
+       *
+       * <pre>
+       * TODO(gyliu513): Make this as `optional` after deprecation cycle of 1.0.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Volume.Mode getMode() {
+        return mode_;
+      }
+      /**
+       * <code>required .mesos.Volume.Mode mode = 3;</code>
+       *
+       * <pre>
+       * TODO(gyliu513): Make this as `optional` after deprecation cycle of 1.0.
+       * </pre>
+       */
+      public Builder setMode(org.apache.mesos.Protos.Volume.Mode value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000001;
+        mode_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required .mesos.Volume.Mode mode = 3;</code>
+       *
+       * <pre>
+       * TODO(gyliu513): Make this as `optional` after deprecation cycle of 1.0.
+       * </pre>
+       */
+      public Builder clearMode() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        mode_ = org.apache.mesos.Protos.Volume.Mode.RW;
+        onChanged();
+        return this;
+      }
+
+      // required string container_path = 1;
+      private java.lang.Object containerPath_ = "";
+      /**
+       * <code>required string container_path = 1;</code>
+       *
+       * <pre>
+       * Path pointing to a directory or file in the container. If the
+       * path is a relative path, it is relative to the container work
+       * directory. If the path is an absolute path, that path must
+       * already exist.
+       * </pre>
+       */
+      public boolean hasContainerPath() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required string container_path = 1;</code>
+       *
+       * <pre>
+       * Path pointing to a directory or file in the container. If the
+       * path is a relative path, it is relative to the container work
+       * directory. If the path is an absolute path, that path must
+       * already exist.
+       * </pre>
+       */
+      public java.lang.String getContainerPath() {
+        java.lang.Object ref = containerPath_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          containerPath_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string container_path = 1;</code>
+       *
+       * <pre>
+       * Path pointing to a directory or file in the container. If the
+       * path is a relative path, it is relative to the container work
+       * directory. If the path is an absolute path, that path must
+       * already exist.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getContainerPathBytes() {
+        java.lang.Object ref = containerPath_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          containerPath_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string container_path = 1;</code>
+       *
+       * <pre>
+       * Path pointing to a directory or file in the container. If the
+       * path is a relative path, it is relative to the container work
+       * directory. If the path is an absolute path, that path must
+       * already exist.
+       * </pre>
+       */
+      public Builder setContainerPath(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        containerPath_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string container_path = 1;</code>
+       *
+       * <pre>
+       * Path pointing to a directory or file in the container. If the
+       * path is a relative path, it is relative to the container work
+       * directory. If the path is an absolute path, that path must
+       * already exist.
+       * </pre>
+       */
+      public Builder clearContainerPath() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        containerPath_ = getDefaultInstance().getContainerPath();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string container_path = 1;</code>
+       *
+       * <pre>
+       * Path pointing to a directory or file in the container. If the
+       * path is a relative path, it is relative to the container work
+       * directory. If the path is an absolute path, that path must
+       * already exist.
+       * </pre>
+       */
+      public Builder setContainerPathBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        containerPath_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional string host_path = 2;
+      private java.lang.Object hostPath_ = "";
+      /**
+       * <code>optional string host_path = 2;</code>
+       *
+       * <pre>
+       * Absolute path pointing to a directory or file on the host or a
+       * path relative to the container work directory.
+       * </pre>
+       */
+      public boolean hasHostPath() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional string host_path = 2;</code>
+       *
+       * <pre>
+       * Absolute path pointing to a directory or file on the host or a
+       * path relative to the container work directory.
+       * </pre>
+       */
+      public java.lang.String getHostPath() {
+        java.lang.Object ref = hostPath_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          hostPath_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string host_path = 2;</code>
+       *
+       * <pre>
+       * Absolute path pointing to a directory or file on the host or a
+       * path relative to the container work directory.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getHostPathBytes() {
+        java.lang.Object ref = hostPath_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          hostPath_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string host_path = 2;</code>
+       *
+       * <pre>
+       * Absolute path pointing to a directory or file on the host or a
+       * path relative to the container work directory.
+       * </pre>
+       */
+      public Builder setHostPath(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        hostPath_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string host_path = 2;</code>
+       *
+       * <pre>
+       * Absolute path pointing to a directory or file on the host or a
+       * path relative to the container work directory.
+       * </pre>
+       */
+      public Builder clearHostPath() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        hostPath_ = getDefaultInstance().getHostPath();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string host_path = 2;</code>
+       *
+       * <pre>
+       * Absolute path pointing to a directory or file on the host or a
+       * path relative to the container work directory.
+       * </pre>
+       */
+      public Builder setHostPathBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        hostPath_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.Image image = 4;
+      private org.apache.mesos.Protos.Image image_ = org.apache.mesos.Protos.Image.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Image, org.apache.mesos.Protos.Image.Builder, org.apache.mesos.Protos.ImageOrBuilder> imageBuilder_;
+      /**
+       * <code>optional .mesos.Image image = 4;</code>
+       *
+       * <pre>
+       * The source of the volume is an Image which describes a root
+       * filesystem which will be provisioned by Mesos.
+       * </pre>
+       */
+      public boolean hasImage() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.Image image = 4;</code>
+       *
+       * <pre>
+       * The source of the volume is an Image which describes a root
+       * filesystem which will be provisioned by Mesos.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Image getImage() {
+        if (imageBuilder_ == null) {
+          return image_;
+        } else {
+          return imageBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.Image image = 4;</code>
+       *
+       * <pre>
+       * The source of the volume is an Image which describes a root
+       * filesystem which will be provisioned by Mesos.
+       * </pre>
+       */
+      public Builder setImage(org.apache.mesos.Protos.Image value) {
+        if (imageBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          image_ = value;
+          onChanged();
+        } else {
+          imageBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Image image = 4;</code>
+       *
+       * <pre>
+       * The source of the volume is an Image which describes a root
+       * filesystem which will be provisioned by Mesos.
+       * </pre>
+       */
+      public Builder setImage(
+          org.apache.mesos.Protos.Image.Builder builderForValue) {
+        if (imageBuilder_ == null) {
+          image_ = builderForValue.build();
+          onChanged();
+        } else {
+          imageBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Image image = 4;</code>
+       *
+       * <pre>
+       * The source of the volume is an Image which describes a root
+       * filesystem which will be provisioned by Mesos.
+       * </pre>
+       */
+      public Builder mergeImage(org.apache.mesos.Protos.Image value) {
+        if (imageBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008) &&
+              image_ != org.apache.mesos.Protos.Image.getDefaultInstance()) {
+            image_ =
+              org.apache.mesos.Protos.Image.newBuilder(image_).mergeFrom(value).buildPartial();
+          } else {
+            image_ = value;
+          }
+          onChanged();
+        } else {
+          imageBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Image image = 4;</code>
+       *
+       * <pre>
+       * The source of the volume is an Image which describes a root
+       * filesystem which will be provisioned by Mesos.
+       * </pre>
+       */
+      public Builder clearImage() {
+        if (imageBuilder_ == null) {
+          image_ = org.apache.mesos.Protos.Image.getDefaultInstance();
+          onChanged();
+        } else {
+          imageBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Image image = 4;</code>
+       *
+       * <pre>
+       * The source of the volume is an Image which describes a root
+       * filesystem which will be provisioned by Mesos.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Image.Builder getImageBuilder() {
+        bitField0_ |= 0x00000008;
+        onChanged();
+        return getImageFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.Image image = 4;</code>
+       *
+       * <pre>
+       * The source of the volume is an Image which describes a root
+       * filesystem which will be provisioned by Mesos.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.ImageOrBuilder getImageOrBuilder() {
+        if (imageBuilder_ != null) {
+          return imageBuilder_.getMessageOrBuilder();
+        } else {
+          return image_;
+        }
+      }
+      /**
+       * <code>optional .mesos.Image image = 4;</code>
+       *
+       * <pre>
+       * The source of the volume is an Image which describes a root
+       * filesystem which will be provisioned by Mesos.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Image, org.apache.mesos.Protos.Image.Builder, org.apache.mesos.Protos.ImageOrBuilder> 
+          getImageFieldBuilder() {
+        if (imageBuilder_ == null) {
+          imageBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Image, org.apache.mesos.Protos.Image.Builder, org.apache.mesos.Protos.ImageOrBuilder>(
+                  image_,
+                  getParentForChildren(),
+                  isClean());
+          image_ = null;
+        }
+        return imageBuilder_;
+      }
+
+      // optional .mesos.Volume.Source source = 5;
+      private org.apache.mesos.Protos.Volume.Source source_ = org.apache.mesos.Protos.Volume.Source.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Volume.Source, org.apache.mesos.Protos.Volume.Source.Builder, org.apache.mesos.Protos.Volume.SourceOrBuilder> sourceBuilder_;
+      /**
+       * <code>optional .mesos.Volume.Source source = 5;</code>
+       */
+      public boolean hasSource() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional .mesos.Volume.Source source = 5;</code>
+       */
+      public org.apache.mesos.Protos.Volume.Source getSource() {
+        if (sourceBuilder_ == null) {
+          return source_;
+        } else {
+          return sourceBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.Volume.Source source = 5;</code>
+       */
+      public Builder setSource(org.apache.mesos.Protos.Volume.Source value) {
+        if (sourceBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          source_ = value;
+          onChanged();
+        } else {
+          sourceBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Volume.Source source = 5;</code>
+       */
+      public Builder setSource(
+          org.apache.mesos.Protos.Volume.Source.Builder builderForValue) {
+        if (sourceBuilder_ == null) {
+          source_ = builderForValue.build();
+          onChanged();
+        } else {
+          sourceBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Volume.Source source = 5;</code>
+       */
+      public Builder mergeSource(org.apache.mesos.Protos.Volume.Source value) {
+        if (sourceBuilder_ == null) {
+          if (((bitField0_ & 0x00000010) == 0x00000010) &&
+              source_ != org.apache.mesos.Protos.Volume.Source.getDefaultInstance()) {
+            source_ =
+              org.apache.mesos.Protos.Volume.Source.newBuilder(source_).mergeFrom(value).buildPartial();
+          } else {
+            source_ = value;
+          }
+          onChanged();
+        } else {
+          sourceBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Volume.Source source = 5;</code>
+       */
+      public Builder clearSource() {
+        if (sourceBuilder_ == null) {
+          source_ = org.apache.mesos.Protos.Volume.Source.getDefaultInstance();
+          onChanged();
+        } else {
+          sourceBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Volume.Source source = 5;</code>
+       */
+      public org.apache.mesos.Protos.Volume.Source.Builder getSourceBuilder() {
+        bitField0_ |= 0x00000010;
+        onChanged();
+        return getSourceFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.Volume.Source source = 5;</code>
+       */
+      public org.apache.mesos.Protos.Volume.SourceOrBuilder getSourceOrBuilder() {
+        if (sourceBuilder_ != null) {
+          return sourceBuilder_.getMessageOrBuilder();
+        } else {
+          return source_;
+        }
+      }
+      /**
+       * <code>optional .mesos.Volume.Source source = 5;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Volume.Source, org.apache.mesos.Protos.Volume.Source.Builder, org.apache.mesos.Protos.Volume.SourceOrBuilder> 
+          getSourceFieldBuilder() {
+        if (sourceBuilder_ == null) {
+          sourceBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Volume.Source, org.apache.mesos.Protos.Volume.Source.Builder, org.apache.mesos.Protos.Volume.SourceOrBuilder>(
+                  source_,
+                  getParentForChildren(),
+                  isClean());
+          source_ = null;
+        }
+        return sourceBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.Volume)
+    }
+
+    static {
+      defaultInstance = new Volume(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.Volume)
+  }
+
+  public interface NetworkInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // repeated .mesos.NetworkInfo.IPAddress ip_addresses = 5;
+    /**
+     * <code>repeated .mesos.NetworkInfo.IPAddress ip_addresses = 5;</code>
+     *
+     * <pre>
+     * When included in a ContainerInfo, each of these represent a
+     * request for an IP address. Each request can specify an explicit address
+     * or the IP protocol to use.
+     *
+     * When included in a TaskStatus message, these inform the framework
+     * scheduler about the IP addresses that are bound to the container
+     * interface. When there are no custom network isolator modules installed,
+     * this field is filled in automatically with the Agent IP address.
+     * </pre>
+     */
+    java.util.List<org.apache.mesos.Protos.NetworkInfo.IPAddress> 
+        getIpAddressesList();
+    /**
+     * <code>repeated .mesos.NetworkInfo.IPAddress ip_addresses = 5;</code>
+     *
+     * <pre>
+     * When included in a ContainerInfo, each of these represent a
+     * request for an IP address. Each request can specify an explicit address
+     * or the IP protocol to use.
+     *
+     * When included in a TaskStatus message, these inform the framework
+     * scheduler about the IP addresses that are bound to the container
+     * interface. When there are no custom network isolator modules installed,
+     * this field is filled in automatically with the Agent IP address.
+     * </pre>
+     */
+    org.apache.mesos.Protos.NetworkInfo.IPAddress getIpAddresses(int index);
+    /**
+     * <code>repeated .mesos.NetworkInfo.IPAddress ip_addresses = 5;</code>
+     *
+     * <pre>
+     * When included in a ContainerInfo, each of these represent a
+     * request for an IP address. Each request can specify an explicit address
+     * or the IP protocol to use.
+     *
+     * When included in a TaskStatus message, these inform the framework
+     * scheduler about the IP addresses that are bound to the container
+     * interface. When there are no custom network isolator modules installed,
+     * this field is filled in automatically with the Agent IP address.
+     * </pre>
+     */
+    int getIpAddressesCount();
+    /**
+     * <code>repeated .mesos.NetworkInfo.IPAddress ip_addresses = 5;</code>
+     *
+     * <pre>
+     * When included in a ContainerInfo, each of these represent a
+     * request for an IP address. Each request can specify an explicit address
+     * or the IP protocol to use.
+     *
+     * When included in a TaskStatus message, these inform the framework
+     * scheduler about the IP addresses that are bound to the container
+     * interface. When there are no custom network isolator modules installed,
+     * this field is filled in automatically with the Agent IP address.
+     * </pre>
+     */
+    java.util.List<? extends org.apache.mesos.Protos.NetworkInfo.IPAddressOrBuilder> 
+        getIpAddressesOrBuilderList();
+    /**
+     * <code>repeated .mesos.NetworkInfo.IPAddress ip_addresses = 5;</code>
+     *
+     * <pre>
+     * When included in a ContainerInfo, each of these represent a
+     * request for an IP address. Each request can specify an explicit address
+     * or the IP protocol to use.
+     *
+     * When included in a TaskStatus message, these inform the framework
+     * scheduler about the IP addresses that are bound to the container
+     * interface. When there are no custom network isolator modules installed,
+     * this field is filled in automatically with the Agent IP address.
+     * </pre>
+     */
+    org.apache.mesos.Protos.NetworkInfo.IPAddressOrBuilder getIpAddressesOrBuilder(
+        int index);
+
+    // optional string name = 6;
+    /**
+     * <code>optional string name = 6;</code>
+     *
+     * <pre>
+     * Name of the network which will be used by network isolator to determine
+     * the network that the container joins. It's up to the network isolator
+     * to decide how to interpret this field.
+     * </pre>
+     */
+    boolean hasName();
+    /**
+     * <code>optional string name = 6;</code>
+     *
+     * <pre>
+     * Name of the network which will be used by network isolator to determine
+     * the network that the container joins. It's up to the network isolator
+     * to decide how to interpret this field.
+     * </pre>
+     */
+    java.lang.String getName();
+    /**
+     * <code>optional string name = 6;</code>
+     *
+     * <pre>
+     * Name of the network which will be used by network isolator to determine
+     * the network that the container joins. It's up to the network isolator
+     * to decide how to interpret this field.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getNameBytes();
+
+    // repeated string groups = 3;
+    /**
+     * <code>repeated string groups = 3;</code>
+     *
+     * <pre>
+     * A group is the name given to a set of logically-related interfaces that
+     * are allowed to communicate among themselves. Network traffic is allowed
+     * between two container interfaces that share at least one network group.
+     * For example, one might want to create separate groups for isolating dev,
+     * testing, qa and prod deployment environments.
+     * </pre>
+     */
+    java.util.List<java.lang.String>
+    getGroupsList();
+    /**
+     * <code>repeated string groups = 3;</code>
+     *
+     * <pre>
+     * A group is the name given to a set of logically-related interfaces that
+     * are allowed to communicate among themselves. Network traffic is allowed
+     * between two container interfaces that share at least one network group.
+     * For example, one might want to create separate groups for isolating dev,
+     * testing, qa and prod deployment environments.
+     * </pre>
+     */
+    int getGroupsCount();
+    /**
+     * <code>repeated string groups = 3;</code>
+     *
+     * <pre>
+     * A group is the name given to a set of logically-related interfaces that
+     * are allowed to communicate among themselves. Network traffic is allowed
+     * between two container interfaces that share at least one network group.
+     * For example, one might want to create separate groups for isolating dev,
+     * testing, qa and prod deployment environments.
+     * </pre>
+     */
+    java.lang.String getGroups(int index);
+    /**
+     * <code>repeated string groups = 3;</code>
+     *
+     * <pre>
+     * A group is the name given to a set of logically-related interfaces that
+     * are allowed to communicate among themselves. Network traffic is allowed
+     * between two container interfaces that share at least one network group.
+     * For example, one might want to create separate groups for isolating dev,
+     * testing, qa and prod deployment environments.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getGroupsBytes(int index);
+
+    // optional .mesos.Labels labels = 4;
+    /**
+     * <code>optional .mesos.Labels labels = 4;</code>
+     *
+     * <pre>
+     * To tag certain metadata to be used by Isolator/IPAM, e.g., rack, etc.
+     * </pre>
+     */
+    boolean hasLabels();
+    /**
+     * <code>optional .mesos.Labels labels = 4;</code>
+     *
+     * <pre>
+     * To tag certain metadata to be used by Isolator/IPAM, e.g., rack, etc.
+     * </pre>
+     */
+    org.apache.mesos.Protos.Labels getLabels();
+    /**
+     * <code>optional .mesos.Labels labels = 4;</code>
+     *
+     * <pre>
+     * To tag certain metadata to be used by Isolator/IPAM, e.g., rack, etc.
+     * </pre>
+     */
+    org.apache.mesos.Protos.LabelsOrBuilder getLabelsOrBuilder();
+
+    // repeated .mesos.NetworkInfo.PortMapping port_mappings = 7;
+    /**
+     * <code>repeated .mesos.NetworkInfo.PortMapping port_mappings = 7;</code>
+     */
+    java.util.List<org.apache.mesos.Protos.NetworkInfo.PortMapping> 
+        getPortMappingsList();
+    /**
+     * <code>repeated .mesos.NetworkInfo.PortMapping port_mappings = 7;</code>
+     */
+    org.apache.mesos.Protos.NetworkInfo.PortMapping getPortMappings(int index);
+    /**
+     * <code>repeated .mesos.NetworkInfo.PortMapping port_mappings = 7;</code>
+     */
+    int getPortMappingsCount();
+    /**
+     * <code>repeated .mesos.NetworkInfo.PortMapping port_mappings = 7;</code>
+     */
+    java.util.List<? extends org.apache.mesos.Protos.NetworkInfo.PortMappingOrBuilder> 
+        getPortMappingsOrBuilderList();
+    /**
+     * <code>repeated .mesos.NetworkInfo.PortMapping port_mappings = 7;</code>
+     */
+    org.apache.mesos.Protos.NetworkInfo.PortMappingOrBuilder getPortMappingsOrBuilder(
+        int index);
+  }
+  /**
+   * Protobuf type {@code mesos.NetworkInfo}
+   *
+   * <pre>
+   **
+   * Describes a network request from a framework as well as network resolution
+   * provided by Mesos.
+   *
+   * A framework may request the network isolator on the Agent to isolate the
+   * container in a network namespace and create a virtual network interface.
+   * The `NetworkInfo` message describes the properties of that virtual
+   * interface, including the IP addresses and network isolation policy
+   * (network group membership).
+   *
+   * The NetworkInfo message is not interpreted by the Master or Agent and is
+   * intended to be used by Agent and Master modules implementing network
+   * isolation. If the modules are missing, the message is simply ignored. In
+   * future, the task launch will fail if there is no module providing the
+   * network isolation capabilities (MESOS-3390).
+   *
+   * An executor, Agent, or an Agent module may append NetworkInfos inside
+   * TaskStatus::container_status to provide information such as the container IP
+   * address and isolation groups.
+   * </pre>
+   */
+  public static final class NetworkInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements NetworkInfoOrBuilder {
+    // Use NetworkInfo.newBuilder() to construct.
+    private NetworkInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private NetworkInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final NetworkInfo defaultInstance;
+    public static NetworkInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public NetworkInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private NetworkInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 26: {
+              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
+                groups_ = new com.google.protobuf.LazyStringArrayList();
+                mutable_bitField0_ |= 0x00000004;
+              }
+              groups_.add(input.readBytes());
+              break;
+            }
+            case 34: {
+              org.apache.mesos.Protos.Labels.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = labels_.toBuilder();
+              }
+              labels_ = input.readMessage(org.apache.mesos.Protos.Labels.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(labels_);
+                labels_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+            case 42: {
+              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                ipAddresses_ = new java.util.ArrayList<org.apache.mesos.Protos.NetworkInfo.IPAddress>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              ipAddresses_.add(input.readMessage(org.apache.mesos.Protos.NetworkInfo.IPAddress.PARSER, extensionRegistry));
+              break;
+            }
+            case 50: {
+              bitField0_ |= 0x00000001;
+              name_ = input.readBytes();
+              break;
+            }
+            case 58: {
+              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
+                portMappings_ = new java.util.ArrayList<org.apache.mesos.Protos.NetworkInfo.PortMapping>();
+                mutable_bitField0_ |= 0x00000010;
+              }
+              portMappings_.add(input.readMessage(org.apache.mesos.Protos.NetworkInfo.PortMapping.PARSER, extensionRegistry));
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
+          groups_ = new com.google.protobuf.UnmodifiableLazyStringList(groups_);
+        }
+        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+          ipAddresses_ = java.util.Collections.unmodifiableList(ipAddresses_);
+        }
+        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
+          portMappings_ = java.util.Collections.unmodifiableList(portMappings_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_NetworkInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_NetworkInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.NetworkInfo.class, org.apache.mesos.Protos.NetworkInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<NetworkInfo> PARSER =
+        new com.google.protobuf.AbstractParser<NetworkInfo>() {
+      public NetworkInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new NetworkInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<NetworkInfo> getParserForType() {
+      return PARSER;
+    }
+
+    /**
+     * Protobuf enum {@code mesos.NetworkInfo.Protocol}
+     */
+    public enum Protocol
+        implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>IPv4 = 1;</code>
+       */
+      IPv4(0, 1),
+      /**
+       * <code>IPv6 = 2;</code>
+       */
+      IPv6(1, 2),
+      ;
+
+      /**
+       * <code>IPv4 = 1;</code>
+       */
+      public static final int IPv4_VALUE = 1;
+      /**
+       * <code>IPv6 = 2;</code>
+       */
+      public static final int IPv6_VALUE = 2;
+
+
+      public final int getNumber() { return value; }
+
+      public static Protocol valueOf(int value) {
+        switch (value) {
+          case 1: return IPv4;
+          case 2: return IPv6;
+          default: return null;
+        }
+      }
+
+      public static com.google.protobuf.Internal.EnumLiteMap<Protocol>
+          internalGetValueMap() {
+        return internalValueMap;
+      }
+      private static com.google.protobuf.Internal.EnumLiteMap<Protocol>
+          internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap<Protocol>() {
+              public Protocol findValueByNumber(int number) {
+                return Protocol.valueOf(number);
+              }
+            };
+
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
+          getValueDescriptor() {
+        return getDescriptor().getValues().get(index);
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptorForType() {
+        return getDescriptor();
+      }
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.NetworkInfo.getDescriptor().getEnumTypes().get(0);
+      }
+
+      private static final Protocol[] VALUES = values();
+
+      public static Protocol valueOf(
+          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+        if (desc.getType() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "EnumValueDescriptor is not for this type.");
+        }
+        return VALUES[desc.getIndex()];
+      }
+
+      private final int index;
+      private final int value;
+
+      private Protocol(int index, int value) {
+        this.index = index;
+        this.value = value;
+      }
+
+      // @@protoc_insertion_point(enum_scope:mesos.NetworkInfo.Protocol)
+    }
+
+    public interface IPAddressOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // optional .mesos.NetworkInfo.Protocol protocol = 1 [default = IPv4];
+      /**
+       * <code>optional .mesos.NetworkInfo.Protocol protocol = 1 [default = IPv4];</code>
+       *
+       * <pre>
+       * Specify IP address requirement. Set protocol to the desired value to
+       * request the network isolator on the Agent to assign an IP address to the
+       * container being launched. If a specific IP address is specified in
+       * ip_address, this field should not be set.
+       * </pre>
+       */
+      boolean hasProtocol();
+      /**
+       * <code>optional .mesos.NetworkInfo.Protocol protocol = 1 [default = IPv4];</code>
+       *
+       * <pre>
+       * Specify IP address requirement. Set protocol to the desired value to
+       * request the network isolator on the Agent to assign an IP address to the
+       * container being launched. If a specific IP address is specified in
+       * ip_address, this field should not be set.
+       * </pre>
+       */
+      org.apache.mesos.Protos.NetworkInfo.Protocol getProtocol();
+
+      // optional string ip_address = 2;
+      /**
+       * <code>optional string ip_address = 2;</code>
+       *
+       * <pre>
+       * Statically assigned IP provided by the Framework. This IP will be
+       * assigned to the container by the network isolator module on the Agent.
+       * This field should not be used with the protocol field above.
+       *
+       * If an explicit address is requested but is unavailable, the network
+       * isolator should fail the task.
+       * </pre>
+       */
+      boolean hasIpAddress();
+      /**
+       * <code>optional string ip_address = 2;</code>
+       *
+       * <pre>
+       * Statically assigned IP provided by the Framework. This IP will be
+       * assigned to the container by the network isolator module on the Agent.
+       * This field should not be used with the protocol field above.
+       *
+       * If an explicit address is requested but is unavailable, the network
+       * isolator should fail the task.
+       * </pre>
+       */
+      java.lang.String getIpAddress();
+      /**
+       * <code>optional string ip_address = 2;</code>
+       *
+       * <pre>
+       * Statically assigned IP provided by the Framework. This IP will be
+       * assigned to the container by the network isolator module on the Agent.
+       * This field should not be used with the protocol field above.
+       *
+       * If an explicit address is requested but is unavailable, the network
+       * isolator should fail the task.
+       * </pre>
+       */
+      com.google.protobuf.ByteString
+          getIpAddressBytes();
+    }
+    /**
+     * Protobuf type {@code mesos.NetworkInfo.IPAddress}
+     *
+     * <pre>
+     * Specifies a request for an IP address, or reports the assigned container
+     * IP address.
+     *
+     * Users can request an automatically assigned IP (for example, via an
+     * IPAM service) or a specific IP by adding a NetworkInfo to the
+     * ContainerInfo for a task.  On a request, specifying neither `protocol`
+     * nor `ip_address` means that any available address may be assigned.
+     * </pre>
+     */
+    public static final class IPAddress extends
+        com.google.protobuf.GeneratedMessage
+        implements IPAddressOrBuilder {
+      // Use IPAddress.newBuilder() to construct.
+      private IPAddress(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private IPAddress(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final IPAddress defaultInstance;
+      public static IPAddress getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public IPAddress getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private IPAddress(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 8: {
+                int rawValue = input.readEnum();
+                org.apache.mesos.Protos.NetworkInfo.Protocol value = org.apache.mesos.Protos.NetworkInfo.Protocol.valueOf(rawValue);
+                if (value == null) {
+                  unknownFields.mergeVarintField(1, rawValue);
+                } else {
+                  bitField0_ |= 0x00000001;
+                  protocol_ = value;
+                }
+                break;
+              }
+              case 18: {
+                bitField0_ |= 0x00000002;
+                ipAddress_ = input.readBytes();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_NetworkInfo_IPAddress_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_NetworkInfo_IPAddress_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.NetworkInfo.IPAddress.class, org.apache.mesos.Protos.NetworkInfo.IPAddress.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<IPAddress> PARSER =
+          new com.google.protobuf.AbstractParser<IPAddress>() {
+        public IPAddress parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new IPAddress(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<IPAddress> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // optional .mesos.NetworkInfo.Protocol protocol = 1 [default = IPv4];
+      public static final int PROTOCOL_FIELD_NUMBER = 1;
+      private org.apache.mesos.Protos.NetworkInfo.Protocol protocol_;
+      /**
+       * <code>optional .mesos.NetworkInfo.Protocol protocol = 1 [default = IPv4];</code>
+       *
+       * <pre>
+       * Specify IP address requirement. Set protocol to the desired value to
+       * request the network isolator on the Agent to assign an IP address to the
+       * container being launched. If a specific IP address is specified in
+       * ip_address, this field should not be set.
+       * </pre>
+       */
+      public boolean hasProtocol() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.NetworkInfo.Protocol protocol = 1 [default = IPv4];</code>
+       *
+       * <pre>
+       * Specify IP address requirement. Set protocol to the desired value to
+       * request the network isolator on the Agent to assign an IP address to the
+       * container being launched. If a specific IP address is specified in
+       * ip_address, this field should not be set.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.NetworkInfo.Protocol getProtocol() {
+        return protocol_;
+      }
+
+      // optional string ip_address = 2;
+      public static final int IP_ADDRESS_FIELD_NUMBER = 2;
+      private java.lang.Object ipAddress_;
+      /**
+       * <code>optional string ip_address = 2;</code>
+       *
+       * <pre>
+       * Statically assigned IP provided by the Framework. This IP will be
+       * assigned to the container by the network isolator module on the Agent.
+       * This field should not be used with the protocol field above.
+       *
+       * If an explicit address is requested but is unavailable, the network
+       * isolator should fail the task.
+       * </pre>
+       */
+      public boolean hasIpAddress() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional string ip_address = 2;</code>
+       *
+       * <pre>
+       * Statically assigned IP provided by the Framework. This IP will be
+       * assigned to the container by the network isolator module on the Agent.
+       * This field should not be used with the protocol field above.
+       *
+       * If an explicit address is requested but is unavailable, the network
+       * isolator should fail the task.
+       * </pre>
+       */
+      public java.lang.String getIpAddress() {
+        java.lang.Object ref = ipAddress_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            ipAddress_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>optional string ip_address = 2;</code>
+       *
+       * <pre>
+       * Statically assigned IP provided by the Framework. This IP will be
+       * assigned to the container by the network isolator module on the Agent.
+       * This field should not be used with the protocol field above.
+       *
+       * If an explicit address is requested but is unavailable, the network
+       * isolator should fail the task.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getIpAddressBytes() {
+        java.lang.Object ref = ipAddress_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          ipAddress_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      private void initFields() {
+        protocol_ = org.apache.mesos.Protos.NetworkInfo.Protocol.IPv4;
+        ipAddress_ = "";
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeEnum(1, protocol_.getNumber());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeBytes(2, getIpAddressBytes());
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeEnumSize(1, protocol_.getNumber());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(2, getIpAddressBytes());
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.Protos.NetworkInfo.IPAddress parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.NetworkInfo.IPAddress parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.NetworkInfo.IPAddress parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.NetworkInfo.IPAddress parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.NetworkInfo.IPAddress parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.NetworkInfo.IPAddress parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.NetworkInfo.IPAddress parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.Protos.NetworkInfo.IPAddress parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.NetworkInfo.IPAddress parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.NetworkInfo.IPAddress parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.Protos.NetworkInfo.IPAddress prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.NetworkInfo.IPAddress}
+       *
+       * <pre>
+       * Specifies a request for an IP address, or reports the assigned container
+       * IP address.
+       *
+       * Users can request an automatically assigned IP (for example, via an
+       * IPAM service) or a specific IP by adding a NetworkInfo to the
+       * ContainerInfo for a task.  On a request, specifying neither `protocol`
+       * nor `ip_address` means that any available address may be assigned.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.Protos.NetworkInfo.IPAddressOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_NetworkInfo_IPAddress_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_NetworkInfo_IPAddress_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.NetworkInfo.IPAddress.class, org.apache.mesos.Protos.NetworkInfo.IPAddress.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.Protos.NetworkInfo.IPAddress.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          protocol_ = org.apache.mesos.Protos.NetworkInfo.Protocol.IPv4;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          ipAddress_ = "";
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.Protos.internal_static_mesos_NetworkInfo_IPAddress_descriptor;
+        }
+
+        public org.apache.mesos.Protos.NetworkInfo.IPAddress getDefaultInstanceForType() {
+          return org.apache.mesos.Protos.NetworkInfo.IPAddress.getDefaultInstance();
+        }
+
+        public org.apache.mesos.Protos.NetworkInfo.IPAddress build() {
+          org.apache.mesos.Protos.NetworkInfo.IPAddress result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.Protos.NetworkInfo.IPAddress buildPartial() {
+          org.apache.mesos.Protos.NetworkInfo.IPAddress result = new org.apache.mesos.Protos.NetworkInfo.IPAddress(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.protocol_ = protocol_;
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          result.ipAddress_ = ipAddress_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.Protos.NetworkInfo.IPAddress) {
+            return mergeFrom((org.apache.mesos.Protos.NetworkInfo.IPAddress)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.Protos.NetworkInfo.IPAddress other) {
+          if (other == org.apache.mesos.Protos.NetworkInfo.IPAddress.getDefaultInstance()) return this;
+          if (other.hasProtocol()) {
+            setProtocol(other.getProtocol());
+          }
+          if (other.hasIpAddress()) {
+            bitField0_ |= 0x00000002;
+            ipAddress_ = other.ipAddress_;
+            onChanged();
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.Protos.NetworkInfo.IPAddress parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.Protos.NetworkInfo.IPAddress) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // optional .mesos.NetworkInfo.Protocol protocol = 1 [default = IPv4];
+        private org.apache.mesos.Protos.NetworkInfo.Protocol protocol_ = org.apache.mesos.Protos.NetworkInfo.Protocol.IPv4;
+        /**
+         * <code>optional .mesos.NetworkInfo.Protocol protocol = 1 [default = IPv4];</code>
+         *
+         * <pre>
+         * Specify IP address requirement. Set protocol to the desired value to
+         * request the network isolator on the Agent to assign an IP address to the
+         * container being launched. If a specific IP address is specified in
+         * ip_address, this field should not be set.
+         * </pre>
+         */
+        public boolean hasProtocol() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional .mesos.NetworkInfo.Protocol protocol = 1 [default = IPv4];</code>
+         *
+         * <pre>
+         * Specify IP address requirement. Set protocol to the desired value to
+         * request the network isolator on the Agent to assign an IP address to the
+         * container being launched. If a specific IP address is specified in
+         * ip_address, this field should not be set.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.NetworkInfo.Protocol getProtocol() {
+          return protocol_;
+        }
+        /**
+         * <code>optional .mesos.NetworkInfo.Protocol protocol = 1 [default = IPv4];</code>
+         *
+         * <pre>
+         * Specify IP address requirement. Set protocol to the desired value to
+         * request the network isolator on the Agent to assign an IP address to the
+         * container being launched. If a specific IP address is specified in
+         * ip_address, this field should not be set.
+         * </pre>
+         */
+        public Builder setProtocol(org.apache.mesos.Protos.NetworkInfo.Protocol value) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          bitField0_ |= 0x00000001;
+          protocol_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional .mesos.NetworkInfo.Protocol protocol = 1 [default = IPv4];</code>
+         *
+         * <pre>
+         * Specify IP address requirement. Set protocol to the desired value to
+         * request the network isolator on the Agent to assign an IP address to the
+         * container being launched. If a specific IP address is specified in
+         * ip_address, this field should not be set.
+         * </pre>
+         */
+        public Builder clearProtocol() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          protocol_ = org.apache.mesos.Protos.NetworkInfo.Protocol.IPv4;
+          onChanged();
+          return this;
+        }
+
+        // optional string ip_address = 2;
+        private java.lang.Object ipAddress_ = "";
+        /**
+         * <code>optional string ip_address = 2;</code>
+         *
+         * <pre>
+         * Statically assigned IP provided by the Framework. This IP will be
+         * assigned to the container by the network isolator module on the Agent.
+         * This field should not be used with the protocol field above.
+         *
+         * If an explicit address is requested but is unavailable, the network
+         * isolator should fail the task.
+         * </pre>
+         */
+        public boolean hasIpAddress() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional string ip_address = 2;</code>
+         *
+         * <pre>
+         * Statically assigned IP provided by the Framework. This IP will be
+         * assigned to the container by the network isolator module on the Agent.
+         * This field should not be used with the protocol field above.
+         *
+         * If an explicit address is requested but is unavailable, the network
+         * isolator should fail the task.
+         * </pre>
+         */
+        public java.lang.String getIpAddress() {
+          java.lang.Object ref = ipAddress_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            ipAddress_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>optional string ip_address = 2;</code>
+         *
+         * <pre>
+         * Statically assigned IP provided by the Framework. This IP will be
+         * assigned to the container by the network isolator module on the Agent.
+         * This field should not be used with the protocol field above.
+         *
+         * If an explicit address is requested but is unavailable, the network
+         * isolator should fail the task.
+         * </pre>
+         */
+        public com.google.protobuf.ByteString
+            getIpAddressBytes() {
+          java.lang.Object ref = ipAddress_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            ipAddress_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>optional string ip_address = 2;</code>
+         *
+         * <pre>
+         * Statically assigned IP provided by the Framework. This IP will be
+         * assigned to the container by the network isolator module on the Agent.
+         * This field should not be used with the protocol field above.
+         *
+         * If an explicit address is requested but is unavailable, the network
+         * isolator should fail the task.
+         * </pre>
+         */
+        public Builder setIpAddress(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+          ipAddress_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string ip_address = 2;</code>
+         *
+         * <pre>
+         * Statically assigned IP provided by the Framework. This IP will be
+         * assigned to the container by the network isolator module on the Agent.
+         * This field should not be used with the protocol field above.
+         *
+         * If an explicit address is requested but is unavailable, the network
+         * isolator should fail the task.
+         * </pre>
+         */
+        public Builder clearIpAddress() {
+          bitField0_ = (bitField0_ & ~0x00000002);
+          ipAddress_ = getDefaultInstance().getIpAddress();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string ip_address = 2;</code>
+         *
+         * <pre>
+         * Statically assigned IP provided by the Framework. This IP will be
+         * assigned to the container by the network isolator module on the Agent.
+         * This field should not be used with the protocol field above.
+         *
+         * If an explicit address is requested but is unavailable, the network
+         * isolator should fail the task.
+         * </pre>
+         */
+        public Builder setIpAddressBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+          ipAddress_ = value;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.NetworkInfo.IPAddress)
+      }
+
+      static {
+        defaultInstance = new IPAddress(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.NetworkInfo.IPAddress)
+    }
+
+    public interface PortMappingOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required uint32 host_port = 1;
+      /**
+       * <code>required uint32 host_port = 1;</code>
+       */
+      boolean hasHostPort();
+      /**
+       * <code>required uint32 host_port = 1;</code>
+       */
+      int getHostPort();
+
+      // required uint32 container_port = 2;
+      /**
+       * <code>required uint32 container_port = 2;</code>
+       */
+      boolean hasContainerPort();
+      /**
+       * <code>required uint32 container_port = 2;</code>
+       */
+      int getContainerPort();
+
+      // optional string protocol = 3;
+      /**
+       * <code>optional string protocol = 3;</code>
+       *
+       * <pre>
+       * Protocol to expose as (ie: tcp, udp).
+       * </pre>
+       */
+      boolean hasProtocol();
+      /**
+       * <code>optional string protocol = 3;</code>
+       *
+       * <pre>
+       * Protocol to expose as (ie: tcp, udp).
+       * </pre>
+       */
+      java.lang.String getProtocol();
+      /**
+       * <code>optional string protocol = 3;</code>
+       *
+       * <pre>
+       * Protocol to expose as (ie: tcp, udp).
+       * </pre>
+       */
+      com.google.protobuf.ByteString
+          getProtocolBytes();
+    }
+    /**
+     * Protobuf type {@code mesos.NetworkInfo.PortMapping}
+     *
+     * <pre>
+     * Specifies a port mapping request for the task on this network.
+     * </pre>
+     */
+    public static final class PortMapping extends
+        com.google.protobuf.GeneratedMessage
+        implements PortMappingOrBuilder {
+      // Use PortMapping.newBuilder() to construct.
+      private PortMapping(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private PortMapping(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final PortMapping defaultInstance;
+      public static PortMapping getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public PortMapping getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private PortMapping(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 8: {
+                bitField0_ |= 0x00000001;
+                hostPort_ = input.readUInt32();
+                break;
+              }
+              case 16: {
+                bitField0_ |= 0x00000002;
+                containerPort_ = input.readUInt32();
+                break;
+              }
+              case 26: {
+                bitField0_ |= 0x00000004;
+                protocol_ = input.readBytes();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_NetworkInfo_PortMapping_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_NetworkInfo_PortMapping_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.NetworkInfo.PortMapping.class, org.apache.mesos.Protos.NetworkInfo.PortMapping.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<PortMapping> PARSER =
+          new com.google.protobuf.AbstractParser<PortMapping>() {
+        public PortMapping parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new PortMapping(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<PortMapping> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required uint32 host_port = 1;
+      public static final int HOST_PORT_FIELD_NUMBER = 1;
+      private int hostPort_;
+      /**
+       * <code>required uint32 host_port = 1;</code>
+       */
+      public boolean hasHostPort() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required uint32 host_port = 1;</code>
+       */
+      public int getHostPort() {
+        return hostPort_;
+      }
+
+      // required uint32 container_port = 2;
+      public static final int CONTAINER_PORT_FIELD_NUMBER = 2;
+      private int containerPort_;
+      /**
+       * <code>required uint32 container_port = 2;</code>
+       */
+      public boolean hasContainerPort() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required uint32 container_port = 2;</code>
+       */
+      public int getContainerPort() {
+        return containerPort_;
+      }
+
+      // optional string protocol = 3;
+      public static final int PROTOCOL_FIELD_NUMBER = 3;
+      private java.lang.Object protocol_;
+      /**
+       * <code>optional string protocol = 3;</code>
+       *
+       * <pre>
+       * Protocol to expose as (ie: tcp, udp).
+       * </pre>
+       */
+      public boolean hasProtocol() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional string protocol = 3;</code>
+       *
+       * <pre>
+       * Protocol to expose as (ie: tcp, udp).
+       * </pre>
+       */
+      public java.lang.String getProtocol() {
+        java.lang.Object ref = protocol_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            protocol_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>optional string protocol = 3;</code>
+       *
+       * <pre>
+       * Protocol to expose as (ie: tcp, udp).
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getProtocolBytes() {
+        java.lang.Object ref = protocol_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          protocol_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      private void initFields() {
+        hostPort_ = 0;
+        containerPort_ = 0;
+        protocol_ = "";
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasHostPort()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!hasContainerPort()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeUInt32(1, hostPort_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeUInt32(2, containerPort_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeBytes(3, getProtocolBytes());
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeUInt32Size(1, hostPort_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeUInt32Size(2, containerPort_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(3, getProtocolBytes());
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.Protos.NetworkInfo.PortMapping parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.NetworkInfo.PortMapping parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.NetworkInfo.PortMapping parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.NetworkInfo.PortMapping parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.NetworkInfo.PortMapping parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.NetworkInfo.PortMapping parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.NetworkInfo.PortMapping parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.Protos.NetworkInfo.PortMapping parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.NetworkInfo.PortMapping parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.NetworkInfo.PortMapping parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.Protos.NetworkInfo.PortMapping prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.NetworkInfo.PortMapping}
+       *
+       * <pre>
+       * Specifies a port mapping request for the task on this network.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.Protos.NetworkInfo.PortMappingOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_NetworkInfo_PortMapping_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_NetworkInfo_PortMapping_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.NetworkInfo.PortMapping.class, org.apache.mesos.Protos.NetworkInfo.PortMapping.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.Protos.NetworkInfo.PortMapping.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          hostPort_ = 0;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          containerPort_ = 0;
+          bitField0_ = (bitField0_ & ~0x00000002);
+          protocol_ = "";
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.Protos.internal_static_mesos_NetworkInfo_PortMapping_descriptor;
+        }
+
+        public org.apache.mesos.Protos.NetworkInfo.PortMapping getDefaultInstanceForType() {
+          return org.apache.mesos.Protos.NetworkInfo.PortMapping.getDefaultInstance();
+        }
+
+        public org.apache.mesos.Protos.NetworkInfo.PortMapping build() {
+          org.apache.mesos.Protos.NetworkInfo.PortMapping result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.Protos.NetworkInfo.PortMapping buildPartial() {
+          org.apache.mesos.Protos.NetworkInfo.PortMapping result = new org.apache.mesos.Protos.NetworkInfo.PortMapping(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.hostPort_ = hostPort_;
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          result.containerPort_ = containerPort_;
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          result.protocol_ = protocol_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.Protos.NetworkInfo.PortMapping) {
+            return mergeFrom((org.apache.mesos.Protos.NetworkInfo.PortMapping)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.Protos.NetworkInfo.PortMapping other) {
+          if (other == org.apache.mesos.Protos.NetworkInfo.PortMapping.getDefaultInstance()) return this;
+          if (other.hasHostPort()) {
+            setHostPort(other.getHostPort());
+          }
+          if (other.hasContainerPort()) {
+            setContainerPort(other.getContainerPort());
+          }
+          if (other.hasProtocol()) {
+            bitField0_ |= 0x00000004;
+            protocol_ = other.protocol_;
+            onChanged();
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasHostPort()) {
+            
+            return false;
+          }
+          if (!hasContainerPort()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.Protos.NetworkInfo.PortMapping parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.Protos.NetworkInfo.PortMapping) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required uint32 host_port = 1;
+        private int hostPort_ ;
+        /**
+         * <code>required uint32 host_port = 1;</code>
+         */
+        public boolean hasHostPort() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required uint32 host_port = 1;</code>
+         */
+        public int getHostPort() {
+          return hostPort_;
+        }
+        /**
+         * <code>required uint32 host_port = 1;</code>
+         */
+        public Builder setHostPort(int value) {
+          bitField0_ |= 0x00000001;
+          hostPort_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required uint32 host_port = 1;</code>
+         */
+        public Builder clearHostPort() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          hostPort_ = 0;
+          onChanged();
+          return this;
+        }
+
+        // required uint32 container_port = 2;
+        private int containerPort_ ;
+        /**
+         * <code>required uint32 container_port = 2;</code>
+         */
+        public boolean hasContainerPort() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>required uint32 container_port = 2;</code>
+         */
+        public int getContainerPort() {
+          return containerPort_;
+        }
+        /**
+         * <code>required uint32 container_port = 2;</code>
+         */
+        public Builder setContainerPort(int value) {
+          bitField0_ |= 0x00000002;
+          containerPort_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required uint32 container_port = 2;</code>
+         */
+        public Builder clearContainerPort() {
+          bitField0_ = (bitField0_ & ~0x00000002);
+          containerPort_ = 0;
+          onChanged();
+          return this;
+        }
+
+        // optional string protocol = 3;
+        private java.lang.Object protocol_ = "";
+        /**
+         * <code>optional string protocol = 3;</code>
+         *
+         * <pre>
+         * Protocol to expose as (ie: tcp, udp).
+         * </pre>
+         */
+        public boolean hasProtocol() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional string protocol = 3;</code>
+         *
+         * <pre>
+         * Protocol to expose as (ie: tcp, udp).
+         * </pre>
+         */
+        public java.lang.String getProtocol() {
+          java.lang.Object ref = protocol_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            protocol_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>optional string protocol = 3;</code>
+         *
+         * <pre>
+         * Protocol to expose as (ie: tcp, udp).
+         * </pre>
+         */
+        public com.google.protobuf.ByteString
+            getProtocolBytes() {
+          java.lang.Object ref = protocol_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            protocol_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>optional string protocol = 3;</code>
+         *
+         * <pre>
+         * Protocol to expose as (ie: tcp, udp).
+         * </pre>
+         */
+        public Builder setProtocol(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+          protocol_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string protocol = 3;</code>
+         *
+         * <pre>
+         * Protocol to expose as (ie: tcp, udp).
+         * </pre>
+         */
+        public Builder clearProtocol() {
+          bitField0_ = (bitField0_ & ~0x00000004);
+          protocol_ = getDefaultInstance().getProtocol();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string protocol = 3;</code>
+         *
+         * <pre>
+         * Protocol to expose as (ie: tcp, udp).
+         * </pre>
+         */
+        public Builder setProtocolBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+          protocol_ = value;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.NetworkInfo.PortMapping)
+      }
+
+      static {
+        defaultInstance = new PortMapping(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.NetworkInfo.PortMapping)
+    }
+
+    private int bitField0_;
+    // repeated .mesos.NetworkInfo.IPAddress ip_addresses = 5;
+    public static final int IP_ADDRESSES_FIELD_NUMBER = 5;
+    private java.util.List<org.apache.mesos.Protos.NetworkInfo.IPAddress> ipAddresses_;
+    /**
+     * <code>repeated .mesos.NetworkInfo.IPAddress ip_addresses = 5;</code>
+     *
+     * <pre>
+     * When included in a ContainerInfo, each of these represent a
+     * request for an IP address. Each request can specify an explicit address
+     * or the IP protocol to use.
+     *
+     * When included in a TaskStatus message, these inform the framework
+     * scheduler about the IP addresses that are bound to the container
+     * interface. When there are no custom network isolator modules installed,
+     * this field is filled in automatically with the Agent IP address.
+     * </pre>
+     */
+    public java.util.List<org.apache.mesos.Protos.NetworkInfo.IPAddress> getIpAddressesList() {
+      return ipAddresses_;
+    }
+    /**
+     * <code>repeated .mesos.NetworkInfo.IPAddress ip_addresses = 5;</code>
+     *
+     * <pre>
+     * When included in a ContainerInfo, each of these represent a
+     * request for an IP address. Each request can specify an explicit address
+     * or the IP protocol to use.
+     *
+     * When included in a TaskStatus message, these inform the framework
+     * scheduler about the IP addresses that are bound to the container
+     * interface. When there are no custom network isolator modules installed,
+     * this field is filled in automatically with the Agent IP address.
+     * </pre>
+     */
+    public java.util.List<? extends org.apache.mesos.Protos.NetworkInfo.IPAddressOrBuilder> 
+        getIpAddressesOrBuilderList() {
+      return ipAddresses_;
+    }
+    /**
+     * <code>repeated .mesos.NetworkInfo.IPAddress ip_addresses = 5;</code>
+     *
+     * <pre>
+     * When included in a ContainerInfo, each of these represent a
+     * request for an IP address. Each request can specify an explicit address
+     * or the IP protocol to use.
+     *
+     * When included in a TaskStatus message, these inform the framework
+     * scheduler about the IP addresses that are bound to the container
+     * interface. When there are no custom network isolator modules installed,
+     * this field is filled in automatically with the Agent IP address.
+     * </pre>
+     */
+    public int getIpAddressesCount() {
+      return ipAddresses_.size();
+    }
+    /**
+     * <code>repeated .mesos.NetworkInfo.IPAddress ip_addresses = 5;</code>
+     *
+     * <pre>
+     * When included in a ContainerInfo, each of these represent a
+     * request for an IP address. Each request can specify an explicit address
+     * or the IP protocol to use.
+     *
+     * When included in a TaskStatus message, these inform the framework
+     * scheduler about the IP addresses that are bound to the container
+     * interface. When there are no custom network isolator modules installed,
+     * this field is filled in automatically with the Agent IP address.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.NetworkInfo.IPAddress getIpAddresses(int index) {
+      return ipAddresses_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.NetworkInfo.IPAddress ip_addresses = 5;</code>
+     *
+     * <pre>
+     * When included in a ContainerInfo, each of these represent a
+     * request for an IP address. Each request can specify an explicit address
+     * or the IP protocol to use.
+     *
+     * When included in a TaskStatus message, these inform the framework
+     * scheduler about the IP addresses that are bound to the container
+     * interface. When there are no custom network isolator modules installed,
+     * this field is filled in automatically with the Agent IP address.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.NetworkInfo.IPAddressOrBuilder getIpAddressesOrBuilder(
+        int index) {
+      return ipAddresses_.get(index);
+    }
+
+    // optional string name = 6;
+    public static final int NAME_FIELD_NUMBER = 6;
+    private java.lang.Object name_;
+    /**
+     * <code>optional string name = 6;</code>
+     *
+     * <pre>
+     * Name of the network which will be used by network isolator to determine
+     * the network that the container joins. It's up to the network isolator
+     * to decide how to interpret this field.
+     * </pre>
+     */
+    public boolean hasName() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional string name = 6;</code>
+     *
+     * <pre>
+     * Name of the network which will be used by network isolator to determine
+     * the network that the container joins. It's up to the network isolator
+     * to decide how to interpret this field.
+     * </pre>
+     */
+    public java.lang.String getName() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          name_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string name = 6;</code>
+     *
+     * <pre>
+     * Name of the network which will be used by network isolator to determine
+     * the network that the container joins. It's up to the network isolator
+     * to decide how to interpret this field.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getNameBytes() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        name_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // repeated string groups = 3;
+    public static final int GROUPS_FIELD_NUMBER = 3;
+    private com.google.protobuf.LazyStringList groups_;
+    /**
+     * <code>repeated string groups = 3;</code>
+     *
+     * <pre>
+     * A group is the name given to a set of logically-related interfaces that
+     * are allowed to communicate among themselves. Network traffic is allowed
+     * between two container interfaces that share at least one network group.
+     * For example, one might want to create separate groups for isolating dev,
+     * testing, qa and prod deployment environments.
+     * </pre>
+     */
+    public java.util.List<java.lang.String>
+        getGroupsList() {
+      return groups_;
+    }
+    /**
+     * <code>repeated string groups = 3;</code>
+     *
+     * <pre>
+     * A group is the name given to a set of logically-related interfaces that
+     * are allowed to communicate among themselves. Network traffic is allowed
+     * between two container interfaces that share at least one network group.
+     * For example, one might want to create separate groups for isolating dev,
+     * testing, qa and prod deployment environments.
+     * </pre>
+     */
+    public int getGroupsCount() {
+      return groups_.size();
+    }
+    /**
+     * <code>repeated string groups = 3;</code>
+     *
+     * <pre>
+     * A group is the name given to a set of logically-related interfaces that
+     * are allowed to communicate among themselves. Network traffic is allowed
+     * between two container interfaces that share at least one network group.
+     * For example, one might want to create separate groups for isolating dev,
+     * testing, qa and prod deployment environments.
+     * </pre>
+     */
+    public java.lang.String getGroups(int index) {
+      return groups_.get(index);
+    }
+    /**
+     * <code>repeated string groups = 3;</code>
+     *
+     * <pre>
+     * A group is the name given to a set of logically-related interfaces that
+     * are allowed to communicate among themselves. Network traffic is allowed
+     * between two container interfaces that share at least one network group.
+     * For example, one might want to create separate groups for isolating dev,
+     * testing, qa and prod deployment environments.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getGroupsBytes(int index) {
+      return groups_.getByteString(index);
+    }
+
+    // optional .mesos.Labels labels = 4;
+    public static final int LABELS_FIELD_NUMBER = 4;
+    private org.apache.mesos.Protos.Labels labels_;
+    /**
+     * <code>optional .mesos.Labels labels = 4;</code>
+     *
+     * <pre>
+     * To tag certain metadata to be used by Isolator/IPAM, e.g., rack, etc.
+     * </pre>
+     */
+    public boolean hasLabels() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional .mesos.Labels labels = 4;</code>
+     *
+     * <pre>
+     * To tag certain metadata to be used by Isolator/IPAM, e.g., rack, etc.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.Labels getLabels() {
+      return labels_;
+    }
+    /**
+     * <code>optional .mesos.Labels labels = 4;</code>
+     *
+     * <pre>
+     * To tag certain metadata to be used by Isolator/IPAM, e.g., rack, etc.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+      return labels_;
+    }
+
+    // repeated .mesos.NetworkInfo.PortMapping port_mappings = 7;
+    public static final int PORT_MAPPINGS_FIELD_NUMBER = 7;
+    private java.util.List<org.apache.mesos.Protos.NetworkInfo.PortMapping> portMappings_;
+    /**
+     * <code>repeated .mesos.NetworkInfo.PortMapping port_mappings = 7;</code>
+     */
+    public java.util.List<org.apache.mesos.Protos.NetworkInfo.PortMapping> getPortMappingsList() {
+      return portMappings_;
+    }
+    /**
+     * <code>repeated .mesos.NetworkInfo.PortMapping port_mappings = 7;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.Protos.NetworkInfo.PortMappingOrBuilder> 
+        getPortMappingsOrBuilderList() {
+      return portMappings_;
+    }
+    /**
+     * <code>repeated .mesos.NetworkInfo.PortMapping port_mappings = 7;</code>
+     */
+    public int getPortMappingsCount() {
+      return portMappings_.size();
+    }
+    /**
+     * <code>repeated .mesos.NetworkInfo.PortMapping port_mappings = 7;</code>
+     */
+    public org.apache.mesos.Protos.NetworkInfo.PortMapping getPortMappings(int index) {
+      return portMappings_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.NetworkInfo.PortMapping port_mappings = 7;</code>
+     */
+    public org.apache.mesos.Protos.NetworkInfo.PortMappingOrBuilder getPortMappingsOrBuilder(
+        int index) {
+      return portMappings_.get(index);
+    }
+
+    private void initFields() {
+      ipAddresses_ = java.util.Collections.emptyList();
+      name_ = "";
+      groups_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+      labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+      portMappings_ = java.util.Collections.emptyList();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (hasLabels()) {
+        if (!getLabels().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      for (int i = 0; i < getPortMappingsCount(); i++) {
+        if (!getPortMappings(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      for (int i = 0; i < groups_.size(); i++) {
+        output.writeBytes(3, groups_.getByteString(i));
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(4, labels_);
+      }
+      for (int i = 0; i < ipAddresses_.size(); i++) {
+        output.writeMessage(5, ipAddresses_.get(i));
+      }
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(6, getNameBytes());
+      }
+      for (int i = 0; i < portMappings_.size(); i++) {
+        output.writeMessage(7, portMappings_.get(i));
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      {
+        int dataSize = 0;
+        for (int i = 0; i < groups_.size(); i++) {
+          dataSize += com.google.protobuf.CodedOutputStream
+            .computeBytesSizeNoTag(groups_.getByteString(i));
+        }
+        size += dataSize;
+        size += 1 * getGroupsList().size();
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, labels_);
+      }
+      for (int i = 0; i < ipAddresses_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(5, ipAddresses_.get(i));
+      }
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(6, getNameBytes());
+      }
+      for (int i = 0; i < portMappings_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(7, portMappings_.get(i));
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.NetworkInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.NetworkInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.NetworkInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.NetworkInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.NetworkInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.NetworkInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.NetworkInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.NetworkInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.NetworkInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.NetworkInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.NetworkInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.NetworkInfo}
+     *
+     * <pre>
+     **
+     * Describes a network request from a framework as well as network resolution
+     * provided by Mesos.
+     *
+     * A framework may request the network isolator on the Agent to isolate the
+     * container in a network namespace and create a virtual network interface.
+     * The `NetworkInfo` message describes the properties of that virtual
+     * interface, including the IP addresses and network isolation policy
+     * (network group membership).
+     *
+     * The NetworkInfo message is not interpreted by the Master or Agent and is
+     * intended to be used by Agent and Master modules implementing network
+     * isolation. If the modules are missing, the message is simply ignored. In
+     * future, the task launch will fail if there is no module providing the
+     * network isolation capabilities (MESOS-3390).
+     *
+     * An executor, Agent, or an Agent module may append NetworkInfos inside
+     * TaskStatus::container_status to provide information such as the container IP
+     * address and isolation groups.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.NetworkInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_NetworkInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_NetworkInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.NetworkInfo.class, org.apache.mesos.Protos.NetworkInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.NetworkInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getIpAddressesFieldBuilder();
+          getLabelsFieldBuilder();
+          getPortMappingsFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (ipAddressesBuilder_ == null) {
+          ipAddresses_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+        } else {
+          ipAddressesBuilder_.clear();
+        }
+        name_ = "";
+        bitField0_ = (bitField0_ & ~0x00000002);
+        groups_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        if (labelsBuilder_ == null) {
+          labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+        } else {
+          labelsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        if (portMappingsBuilder_ == null) {
+          portMappings_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000010);
+        } else {
+          portMappingsBuilder_.clear();
+        }
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_NetworkInfo_descriptor;
+      }
+
+      public org.apache.mesos.Protos.NetworkInfo getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.NetworkInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.NetworkInfo build() {
+        org.apache.mesos.Protos.NetworkInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.NetworkInfo buildPartial() {
+        org.apache.mesos.Protos.NetworkInfo result = new org.apache.mesos.Protos.NetworkInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (ipAddressesBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            ipAddresses_ = java.util.Collections.unmodifiableList(ipAddresses_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.ipAddresses_ = ipAddresses_;
+        } else {
+          result.ipAddresses_ = ipAddressesBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.name_ = name_;
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          groups_ = new com.google.protobuf.UnmodifiableLazyStringList(
+              groups_);
+          bitField0_ = (bitField0_ & ~0x00000004);
+        }
+        result.groups_ = groups_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (labelsBuilder_ == null) {
+          result.labels_ = labels_;
+        } else {
+          result.labels_ = labelsBuilder_.build();
+        }
+        if (portMappingsBuilder_ == null) {
+          if (((bitField0_ & 0x00000010) == 0x00000010)) {
+            portMappings_ = java.util.Collections.unmodifiableList(portMappings_);
+            bitField0_ = (bitField0_ & ~0x00000010);
+          }
+          result.portMappings_ = portMappings_;
+        } else {
+          result.portMappings_ = portMappingsBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.NetworkInfo) {
+          return mergeFrom((org.apache.mesos.Protos.NetworkInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.NetworkInfo other) {
+        if (other == org.apache.mesos.Protos.NetworkInfo.getDefaultInstance()) return this;
+        if (ipAddressesBuilder_ == null) {
+          if (!other.ipAddresses_.isEmpty()) {
+            if (ipAddresses_.isEmpty()) {
+              ipAddresses_ = other.ipAddresses_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureIpAddressesIsMutable();
+              ipAddresses_.addAll(other.ipAddresses_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.ipAddresses_.isEmpty()) {
+            if (ipAddressesBuilder_.isEmpty()) {
+              ipAddressesBuilder_.dispose();
+              ipAddressesBuilder_ = null;
+              ipAddresses_ = other.ipAddresses_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              ipAddressesBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getIpAddressesFieldBuilder() : null;
+            } else {
+              ipAddressesBuilder_.addAllMessages(other.ipAddresses_);
+            }
+          }
+        }
+        if (other.hasName()) {
+          bitField0_ |= 0x00000002;
+          name_ = other.name_;
+          onChanged();
+        }
+        if (!other.groups_.isEmpty()) {
+          if (groups_.isEmpty()) {
+            groups_ = other.groups_;
+            bitField0_ = (bitField0_ & ~0x00000004);
+          } else {
+            ensureGroupsIsMutable();
+            groups_.addAll(other.groups_);
+          }
+          onChanged();
+        }
+        if (other.hasLabels()) {
+          mergeLabels(other.getLabels());
+        }
+        if (portMappingsBuilder_ == null) {
+          if (!other.portMappings_.isEmpty()) {
+            if (portMappings_.isEmpty()) {
+              portMappings_ = other.portMappings_;
+              bitField0_ = (bitField0_ & ~0x00000010);
+            } else {
+              ensurePortMappingsIsMutable();
+              portMappings_.addAll(other.portMappings_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.portMappings_.isEmpty()) {
+            if (portMappingsBuilder_.isEmpty()) {
+              portMappingsBuilder_.dispose();
+              portMappingsBuilder_ = null;
+              portMappings_ = other.portMappings_;
+              bitField0_ = (bitField0_ & ~0x00000010);
+              portMappingsBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getPortMappingsFieldBuilder() : null;
+            } else {
+              portMappingsBuilder_.addAllMessages(other.portMappings_);
+            }
+          }
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (hasLabels()) {
+          if (!getLabels().isInitialized()) {
+            
+            return false;
+          }
+        }
+        for (int i = 0; i < getPortMappingsCount(); i++) {
+          if (!getPortMappings(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.NetworkInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.NetworkInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // repeated .mesos.NetworkInfo.IPAddress ip_addresses = 5;
+      private java.util.List<org.apache.mesos.Protos.NetworkInfo.IPAddress> ipAddresses_ =
+        java.util.Collections.emptyList();
+      private void ensureIpAddressesIsMutable() {
+        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+          ipAddresses_ = new java.util.ArrayList<org.apache.mesos.Protos.NetworkInfo.IPAddress>(ipAddresses_);
+          bitField0_ |= 0x00000001;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.NetworkInfo.IPAddress, org.apache.mesos.Protos.NetworkInfo.IPAddress.Builder, org.apache.mesos.Protos.NetworkInfo.IPAddressOrBuilder> ipAddressesBuilder_;
+
+      /**
+       * <code>repeated .mesos.NetworkInfo.IPAddress ip_addresses = 5;</code>
+       *
+       * <pre>
+       * When included in a ContainerInfo, each of these represent a
+       * request for an IP address. Each request can specify an explicit address
+       * or the IP protocol to use.
+       *
+       * When included in a TaskStatus message, these inform the framework
+       * scheduler about the IP addresses that are bound to the container
+       * interface. When there are no custom network isolator modules installed,
+       * this field is filled in automatically with the Agent IP address.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.Protos.NetworkInfo.IPAddress> getIpAddressesList() {
+        if (ipAddressesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(ipAddresses_);
+        } else {
+          return ipAddressesBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo.IPAddress ip_addresses = 5;</code>
+       *
+       * <pre>
+       * When included in a ContainerInfo, each of these represent a
+       * request for an IP address. Each request can specify an explicit address
+       * or the IP protocol to use.
+       *
+       * When included in a TaskStatus message, these inform the framework
+       * scheduler about the IP addresses that are bound to the container
+       * interface. When there are no custom network isolator modules installed,
+       * this field is filled in automatically with the Agent IP address.
+       * </pre>
+       */
+      public int getIpAddressesCount() {
+        if (ipAddressesBuilder_ == null) {
+          return ipAddresses_.size();
+        } else {
+          return ipAddressesBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo.IPAddress ip_addresses = 5;</code>
+       *
+       * <pre>
+       * When included in a ContainerInfo, each of these represent a
+       * request for an IP address. Each request can specify an explicit address
+       * or the IP protocol to use.
+       *
+       * When included in a TaskStatus message, these inform the framework
+       * scheduler about the IP addresses that are bound to the container
+       * interface. When there are no custom network isolator modules installed,
+       * this field is filled in automatically with the Agent IP address.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.NetworkInfo.IPAddress getIpAddresses(int index) {
+        if (ipAddressesBuilder_ == null) {
+          return ipAddresses_.get(index);
+        } else {
+          return ipAddressesBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo.IPAddress ip_addresses = 5;</code>
+       *
+       * <pre>
+       * When included in a ContainerInfo, each of these represent a
+       * request for an IP address. Each request can specify an explicit address
+       * or the IP protocol to use.
+       *
+       * When included in a TaskStatus message, these inform the framework
+       * scheduler about the IP addresses that are bound to the container
+       * interface. When there are no custom network isolator modules installed,
+       * this field is filled in automatically with the Agent IP address.
+       * </pre>
+       */
+      public Builder setIpAddresses(
+          int index, org.apache.mesos.Protos.NetworkInfo.IPAddress value) {
+        if (ipAddressesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureIpAddressesIsMutable();
+          ipAddresses_.set(index, value);
+          onChanged();
+        } else {
+          ipAddressesBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo.IPAddress ip_addresses = 5;</code>
+       *
+       * <pre>
+       * When included in a ContainerInfo, each of these represent a
+       * request for an IP address. Each request can specify an explicit address
+       * or the IP protocol to use.
+       *
+       * When included in a TaskStatus message, these inform the framework
+       * scheduler about the IP addresses that are bound to the container
+       * interface. When there are no custom network isolator modules installed,
+       * this field is filled in automatically with the Agent IP address.
+       * </pre>
+       */
+      public Builder setIpAddresses(
+          int index, org.apache.mesos.Protos.NetworkInfo.IPAddress.Builder builderForValue) {
+        if (ipAddressesBuilder_ == null) {
+          ensureIpAddressesIsMutable();
+          ipAddresses_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          ipAddressesBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo.IPAddress ip_addresses = 5;</code>
+       *
+       * <pre>
+       * When included in a ContainerInfo, each of these represent a
+       * request for an IP address. Each request can specify an explicit address
+       * or the IP protocol to use.
+       *
+       * When included in a TaskStatus message, these inform the framework
+       * scheduler about the IP addresses that are bound to the container
+       * interface. When there are no custom network isolator modules installed,
+       * this field is filled in automatically with the Agent IP address.
+       * </pre>
+       */
+      public Builder addIpAddresses(org.apache.mesos.Protos.NetworkInfo.IPAddress value) {
+        if (ipAddressesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureIpAddressesIsMutable();
+          ipAddresses_.add(value);
+          onChanged();
+        } else {
+          ipAddressesBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo.IPAddress ip_addresses = 5;</code>
+       *
+       * <pre>
+       * When included in a ContainerInfo, each of these represent a
+       * request for an IP address. Each request can specify an explicit address
+       * or the IP protocol to use.
+       *
+       * When included in a TaskStatus message, these inform the framework
+       * scheduler about the IP addresses that are bound to the container
+       * interface. When there are no custom network isolator modules installed,
+       * this field is filled in automatically with the Agent IP address.
+       * </pre>
+       */
+      public Builder addIpAddresses(
+          int index, org.apache.mesos.Protos.NetworkInfo.IPAddress value) {
+        if (ipAddressesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureIpAddressesIsMutable();
+          ipAddresses_.add(index, value);
+          onChanged();
+        } else {
+          ipAddressesBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo.IPAddress ip_addresses = 5;</code>
+       *
+       * <pre>
+       * When included in a ContainerInfo, each of these represent a
+       * request for an IP address. Each request can specify an explicit address
+       * or the IP protocol to use.
+       *
+       * When included in a TaskStatus message, these inform the framework
+       * scheduler about the IP addresses that are bound to the container
+       * interface. When there are no custom network isolator modules installed,
+       * this field is filled in automatically with the Agent IP address.
+       * </pre>
+       */
+      public Builder addIpAddresses(
+          org.apache.mesos.Protos.NetworkInfo.IPAddress.Builder builderForValue) {
+        if (ipAddressesBuilder_ == null) {
+          ensureIpAddressesIsMutable();
+          ipAddresses_.add(builderForValue.build());
+          onChanged();
+        } else {
+          ipAddressesBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo.IPAddress ip_addresses = 5;</code>
+       *
+       * <pre>
+       * When included in a ContainerInfo, each of these represent a
+       * request for an IP address. Each request can specify an explicit address
+       * or the IP protocol to use.
+       *
+       * When included in a TaskStatus message, these inform the framework
+       * scheduler about the IP addresses that are bound to the container
+       * interface. When there are no custom network isolator modules installed,
+       * this field is filled in automatically with the Agent IP address.
+       * </pre>
+       */
+      public Builder addIpAddresses(
+          int index, org.apache.mesos.Protos.NetworkInfo.IPAddress.Builder builderForValue) {
+        if (ipAddressesBuilder_ == null) {
+          ensureIpAddressesIsMutable();
+          ipAddresses_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          ipAddressesBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo.IPAddress ip_addresses = 5;</code>
+       *
+       * <pre>
+       * When included in a ContainerInfo, each of these represent a
+       * request for an IP address. Each request can specify an explicit address
+       * or the IP protocol to use.
+       *
+       * When included in a TaskStatus message, these inform the framework
+       * scheduler about the IP addresses that are bound to the container
+       * interface. When there are no custom network isolator modules installed,
+       * this field is filled in automatically with the Agent IP address.
+       * </pre>
+       */
+      public Builder addAllIpAddresses(
+          java.lang.Iterable<? extends org.apache.mesos.Protos.NetworkInfo.IPAddress> values) {
+        if (ipAddressesBuilder_ == null) {
+          ensureIpAddressesIsMutable();
+          super.addAll(values, ipAddresses_);
+          onChanged();
+        } else {
+          ipAddressesBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo.IPAddress ip_addresses = 5;</code>
+       *
+       * <pre>
+       * When included in a ContainerInfo, each of these represent a
+       * request for an IP address. Each request can specify an explicit address
+       * or the IP protocol to use.
+       *
+       * When included in a TaskStatus message, these inform the framework
+       * scheduler about the IP addresses that are bound to the container
+       * interface. When there are no custom network isolator modules installed,
+       * this field is filled in automatically with the Agent IP address.
+       * </pre>
+       */
+      public Builder clearIpAddresses() {
+        if (ipAddressesBuilder_ == null) {
+          ipAddresses_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+        } else {
+          ipAddressesBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo.IPAddress ip_addresses = 5;</code>
+       *
+       * <pre>
+       * When included in a ContainerInfo, each of these represent a
+       * request for an IP address. Each request can specify an explicit address
+       * or the IP protocol to use.
+       *
+       * When included in a TaskStatus message, these inform the framework
+       * scheduler about the IP addresses that are bound to the container
+       * interface. When there are no custom network isolator modules installed,
+       * this field is filled in automatically with the Agent IP address.
+       * </pre>
+       */
+      public Builder removeIpAddresses(int index) {
+        if (ipAddressesBuilder_ == null) {
+          ensureIpAddressesIsMutable();
+          ipAddresses_.remove(index);
+          onChanged();
+        } else {
+          ipAddressesBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo.IPAddress ip_addresses = 5;</code>
+       *
+       * <pre>
+       * When included in a ContainerInfo, each of these represent a
+       * request for an IP address. Each request can specify an explicit address
+       * or the IP protocol to use.
+       *
+       * When included in a TaskStatus message, these inform the framework
+       * scheduler about the IP addresses that are bound to the container
+       * interface. When there are no custom network isolator modules installed,
+       * this field is filled in automatically with the Agent IP address.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.NetworkInfo.IPAddress.Builder getIpAddressesBuilder(
+          int index) {
+        return getIpAddressesFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo.IPAddress ip_addresses = 5;</code>
+       *
+       * <pre>
+       * When included in a ContainerInfo, each of these represent a
+       * request for an IP address. Each request can specify an explicit address
+       * or the IP protocol to use.
+       *
+       * When included in a TaskStatus message, these inform the framework
+       * scheduler about the IP addresses that are bound to the container
+       * interface. When there are no custom network isolator modules installed,
+       * this field is filled in automatically with the Agent IP address.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.NetworkInfo.IPAddressOrBuilder getIpAddressesOrBuilder(
+          int index) {
+        if (ipAddressesBuilder_ == null) {
+          return ipAddresses_.get(index);  } else {
+          return ipAddressesBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo.IPAddress ip_addresses = 5;</code>
+       *
+       * <pre>
+       * When included in a ContainerInfo, each of these represent a
+       * request for an IP address. Each request can specify an explicit address
+       * or the IP protocol to use.
+       *
+       * When included in a TaskStatus message, these inform the framework
+       * scheduler about the IP addresses that are bound to the container
+       * interface. When there are no custom network isolator modules installed,
+       * this field is filled in automatically with the Agent IP address.
+       * </pre>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.NetworkInfo.IPAddressOrBuilder> 
+           getIpAddressesOrBuilderList() {
+        if (ipAddressesBuilder_ != null) {
+          return ipAddressesBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(ipAddresses_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo.IPAddress ip_addresses = 5;</code>
+       *
+       * <pre>
+       * When included in a ContainerInfo, each of these represent a
+       * request for an IP address. Each request can specify an explicit address
+       * or the IP protocol to use.
+       *
+       * When included in a TaskStatus message, these inform the framework
+       * scheduler about the IP addresses that are bound to the container
+       * interface. When there are no custom network isolator modules installed,
+       * this field is filled in automatically with the Agent IP address.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.NetworkInfo.IPAddress.Builder addIpAddressesBuilder() {
+        return getIpAddressesFieldBuilder().addBuilder(
+            org.apache.mesos.Protos.NetworkInfo.IPAddress.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo.IPAddress ip_addresses = 5;</code>
+       *
+       * <pre>
+       * When included in a ContainerInfo, each of these represent a
+       * request for an IP address. Each request can specify an explicit address
+       * or the IP protocol to use.
+       *
+       * When included in a TaskStatus message, these inform the framework
+       * scheduler about the IP addresses that are bound to the container
+       * interface. When there are no custom network isolator modules installed,
+       * this field is filled in automatically with the Agent IP address.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.NetworkInfo.IPAddress.Builder addIpAddressesBuilder(
+          int index) {
+        return getIpAddressesFieldBuilder().addBuilder(
+            index, org.apache.mesos.Protos.NetworkInfo.IPAddress.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo.IPAddress ip_addresses = 5;</code>
+       *
+       * <pre>
+       * When included in a ContainerInfo, each of these represent a
+       * request for an IP address. Each request can specify an explicit address
+       * or the IP protocol to use.
+       *
+       * When included in a TaskStatus message, these inform the framework
+       * scheduler about the IP addresses that are bound to the container
+       * interface. When there are no custom network isolator modules installed,
+       * this field is filled in automatically with the Agent IP address.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.Protos.NetworkInfo.IPAddress.Builder> 
+           getIpAddressesBuilderList() {
+        return getIpAddressesFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.NetworkInfo.IPAddress, org.apache.mesos.Protos.NetworkInfo.IPAddress.Builder, org.apache.mesos.Protos.NetworkInfo.IPAddressOrBuilder> 
+          getIpAddressesFieldBuilder() {
+        if (ipAddressesBuilder_ == null) {
+          ipAddressesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.NetworkInfo.IPAddress, org.apache.mesos.Protos.NetworkInfo.IPAddress.Builder, org.apache.mesos.Protos.NetworkInfo.IPAddressOrBuilder>(
+                  ipAddresses_,
+                  ((bitField0_ & 0x00000001) == 0x00000001),
+                  getParentForChildren(),
+                  isClean());
+          ipAddresses_ = null;
+        }
+        return ipAddressesBuilder_;
+      }
+
+      // optional string name = 6;
+      private java.lang.Object name_ = "";
+      /**
+       * <code>optional string name = 6;</code>
+       *
+       * <pre>
+       * Name of the network which will be used by network isolator to determine
+       * the network that the container joins. It's up to the network isolator
+       * to decide how to interpret this field.
+       * </pre>
+       */
+      public boolean hasName() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional string name = 6;</code>
+       *
+       * <pre>
+       * Name of the network which will be used by network isolator to determine
+       * the network that the container joins. It's up to the network isolator
+       * to decide how to interpret this field.
+       * </pre>
+       */
+      public java.lang.String getName() {
+        java.lang.Object ref = name_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          name_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string name = 6;</code>
+       *
+       * <pre>
+       * Name of the network which will be used by network isolator to determine
+       * the network that the container joins. It's up to the network isolator
+       * to decide how to interpret this field.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        java.lang.Object ref = name_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          name_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string name = 6;</code>
+       *
+       * <pre>
+       * Name of the network which will be used by network isolator to determine
+       * the network that the container joins. It's up to the network isolator
+       * to decide how to interpret this field.
+       * </pre>
+       */
+      public Builder setName(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string name = 6;</code>
+       *
+       * <pre>
+       * Name of the network which will be used by network isolator to determine
+       * the network that the container joins. It's up to the network isolator
+       * to decide how to interpret this field.
+       * </pre>
+       */
+      public Builder clearName() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        name_ = getDefaultInstance().getName();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string name = 6;</code>
+       *
+       * <pre>
+       * Name of the network which will be used by network isolator to determine
+       * the network that the container joins. It's up to the network isolator
+       * to decide how to interpret this field.
+       * </pre>
+       */
+      public Builder setNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+
+      // repeated string groups = 3;
+      private com.google.protobuf.LazyStringList groups_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+      private void ensureGroupsIsMutable() {
+        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
+          groups_ = new com.google.protobuf.LazyStringArrayList(groups_);
+          bitField0_ |= 0x00000004;
+         }
+      }
+      /**
+       * <code>repeated string groups = 3;</code>
+       *
+       * <pre>
+       * A group is the name given to a set of logically-related interfaces that
+       * are allowed to communicate among themselves. Network traffic is allowed
+       * between two container interfaces that share at least one network group.
+       * For example, one might want to create separate groups for isolating dev,
+       * testing, qa and prod deployment environments.
+       * </pre>
+       */
+      public java.util.List<java.lang.String>
+          getGroupsList() {
+        return java.util.Collections.unmodifiableList(groups_);
+      }
+      /**
+       * <code>repeated string groups = 3;</code>
+       *
+       * <pre>
+       * A group is the name given to a set of logically-related interfaces that
+       * are allowed to communicate among themselves. Network traffic is allowed
+       * between two container interfaces that share at least one network group.
+       * For example, one might want to create separate groups for isolating dev,
+       * testing, qa and prod deployment environments.
+       * </pre>
+       */
+      public int getGroupsCount() {
+        return groups_.size();
+      }
+      /**
+       * <code>repeated string groups = 3;</code>
+       *
+       * <pre>
+       * A group is the name given to a set of logically-related interfaces that
+       * are allowed to communicate among themselves. Network traffic is allowed
+       * between two container interfaces that share at least one network group.
+       * For example, one might want to create separate groups for isolating dev,
+       * testing, qa and prod deployment environments.
+       * </pre>
+       */
+      public java.lang.String getGroups(int index) {
+        return groups_.get(index);
+      }
+      /**
+       * <code>repeated string groups = 3;</code>
+       *
+       * <pre>
+       * A group is the name given to a set of logically-related interfaces that
+       * are allowed to communicate among themselves. Network traffic is allowed
+       * between two container interfaces that share at least one network group.
+       * For example, one might want to create separate groups for isolating dev,
+       * testing, qa and prod deployment environments.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getGroupsBytes(int index) {
+        return groups_.getByteString(index);
+      }
+      /**
+       * <code>repeated string groups = 3;</code>
+       *
+       * <pre>
+       * A group is the name given to a set of logically-related interfaces that
+       * are allowed to communicate among themselves. Network traffic is allowed
+       * between two container interfaces that share at least one network group.
+       * For example, one might want to create separate groups for isolating dev,
+       * testing, qa and prod deployment environments.
+       * </pre>
+       */
+      public Builder setGroups(
+          int index, java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureGroupsIsMutable();
+        groups_.set(index, value);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated string groups = 3;</code>
+       *
+       * <pre>
+       * A group is the name given to a set of logically-related interfaces that
+       * are allowed to communicate among themselves. Network traffic is allowed
+       * between two container interfaces that share at least one network group.
+       * For example, one might want to create separate groups for isolating dev,
+       * testing, qa and prod deployment environments.
+       * </pre>
+       */
+      public Builder addGroups(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureGroupsIsMutable();
+        groups_.add(value);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated string groups = 3;</code>
+       *
+       * <pre>
+       * A group is the name given to a set of logically-related interfaces that
+       * are allowed to communicate among themselves. Network traffic is allowed
+       * between two container interfaces that share at least one network group.
+       * For example, one might want to create separate groups for isolating dev,
+       * testing, qa and prod deployment environments.
+       * </pre>
+       */
+      public Builder addAllGroups(
+          java.lang.Iterable<java.lang.String> values) {
+        ensureGroupsIsMutable();
+        super.addAll(values, groups_);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated string groups = 3;</code>
+       *
+       * <pre>
+       * A group is the name given to a set of logically-related interfaces that
+       * are allowed to communicate among themselves. Network traffic is allowed
+       * between two container interfaces that share at least one network group.
+       * For example, one might want to create separate groups for isolating dev,
+       * testing, qa and prod deployment environments.
+       * </pre>
+       */
+      public Builder clearGroups() {
+        groups_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated string groups = 3;</code>
+       *
+       * <pre>
+       * A group is the name given to a set of logically-related interfaces that
+       * are allowed to communicate among themselves. Network traffic is allowed
+       * between two container interfaces that share at least one network group.
+       * For example, one might want to create separate groups for isolating dev,
+       * testing, qa and prod deployment environments.
+       * </pre>
+       */
+      public Builder addGroupsBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureGroupsIsMutable();
+        groups_.add(value);
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.Labels labels = 4;
+      private org.apache.mesos.Protos.Labels labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Labels, org.apache.mesos.Protos.Labels.Builder, org.apache.mesos.Protos.LabelsOrBuilder> labelsBuilder_;
+      /**
+       * <code>optional .mesos.Labels labels = 4;</code>
+       *
+       * <pre>
+       * To tag certain metadata to be used by Isolator/IPAM, e.g., rack, etc.
+       * </pre>
+       */
+      public boolean hasLabels() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 4;</code>
+       *
+       * <pre>
+       * To tag certain metadata to be used by Isolator/IPAM, e.g., rack, etc.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Labels getLabels() {
+        if (labelsBuilder_ == null) {
+          return labels_;
+        } else {
+          return labelsBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 4;</code>
+       *
+       * <pre>
+       * To tag certain metadata to be used by Isolator/IPAM, e.g., rack, etc.
+       * </pre>
+       */
+      public Builder setLabels(org.apache.mesos.Protos.Labels value) {
+        if (labelsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          labels_ = value;
+          onChanged();
+        } else {
+          labelsBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 4;</code>
+       *
+       * <pre>
+       * To tag certain metadata to be used by Isolator/IPAM, e.g., rack, etc.
+       * </pre>
+       */
+      public Builder setLabels(
+          org.apache.mesos.Protos.Labels.Builder builderForValue) {
+        if (labelsBuilder_ == null) {
+          labels_ = builderForValue.build();
+          onChanged();
+        } else {
+          labelsBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 4;</code>
+       *
+       * <pre>
+       * To tag certain metadata to be used by Isolator/IPAM, e.g., rack, etc.
+       * </pre>
+       */
+      public Builder mergeLabels(org.apache.mesos.Protos.Labels value) {
+        if (labelsBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008) &&
+              labels_ != org.apache.mesos.Protos.Labels.getDefaultInstance()) {
+            labels_ =
+              org.apache.mesos.Protos.Labels.newBuilder(labels_).mergeFrom(value).buildPartial();
+          } else {
+            labels_ = value;
+          }
+          onChanged();
+        } else {
+          labelsBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 4;</code>
+       *
+       * <pre>
+       * To tag certain metadata to be used by Isolator/IPAM, e.g., rack, etc.
+       * </pre>
+       */
+      public Builder clearLabels() {
+        if (labelsBuilder_ == null) {
+          labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+          onChanged();
+        } else {
+          labelsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 4;</code>
+       *
+       * <pre>
+       * To tag certain metadata to be used by Isolator/IPAM, e.g., rack, etc.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Labels.Builder getLabelsBuilder() {
+        bitField0_ |= 0x00000008;
+        onChanged();
+        return getLabelsFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 4;</code>
+       *
+       * <pre>
+       * To tag certain metadata to be used by Isolator/IPAM, e.g., rack, etc.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+        if (labelsBuilder_ != null) {
+          return labelsBuilder_.getMessageOrBuilder();
+        } else {
+          return labels_;
+        }
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 4;</code>
+       *
+       * <pre>
+       * To tag certain metadata to be used by Isolator/IPAM, e.g., rack, etc.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Labels, org.apache.mesos.Protos.Labels.Builder, org.apache.mesos.Protos.LabelsOrBuilder> 
+          getLabelsFieldBuilder() {
+        if (labelsBuilder_ == null) {
+          labelsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Labels, org.apache.mesos.Protos.Labels.Builder, org.apache.mesos.Protos.LabelsOrBuilder>(
+                  labels_,
+                  getParentForChildren(),
+                  isClean());
+          labels_ = null;
+        }
+        return labelsBuilder_;
+      }
+
+      // repeated .mesos.NetworkInfo.PortMapping port_mappings = 7;
+      private java.util.List<org.apache.mesos.Protos.NetworkInfo.PortMapping> portMappings_ =
+        java.util.Collections.emptyList();
+      private void ensurePortMappingsIsMutable() {
+        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
+          portMappings_ = new java.util.ArrayList<org.apache.mesos.Protos.NetworkInfo.PortMapping>(portMappings_);
+          bitField0_ |= 0x00000010;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.NetworkInfo.PortMapping, org.apache.mesos.Protos.NetworkInfo.PortMapping.Builder, org.apache.mesos.Protos.NetworkInfo.PortMappingOrBuilder> portMappingsBuilder_;
+
+      /**
+       * <code>repeated .mesos.NetworkInfo.PortMapping port_mappings = 7;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.NetworkInfo.PortMapping> getPortMappingsList() {
+        if (portMappingsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(portMappings_);
+        } else {
+          return portMappingsBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo.PortMapping port_mappings = 7;</code>
+       */
+      public int getPortMappingsCount() {
+        if (portMappingsBuilder_ == null) {
+          return portMappings_.size();
+        } else {
+          return portMappingsBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo.PortMapping port_mappings = 7;</code>
+       */
+      public org.apache.mesos.Protos.NetworkInfo.PortMapping getPortMappings(int index) {
+        if (portMappingsBuilder_ == null) {
+          return portMappings_.get(index);
+        } else {
+          return portMappingsBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo.PortMapping port_mappings = 7;</code>
+       */
+      public Builder setPortMappings(
+          int index, org.apache.mesos.Protos.NetworkInfo.PortMapping value) {
+        if (portMappingsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensurePortMappingsIsMutable();
+          portMappings_.set(index, value);
+          onChanged();
+        } else {
+          portMappingsBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo.PortMapping port_mappings = 7;</code>
+       */
+      public Builder setPortMappings(
+          int index, org.apache.mesos.Protos.NetworkInfo.PortMapping.Builder builderForValue) {
+        if (portMappingsBuilder_ == null) {
+          ensurePortMappingsIsMutable();
+          portMappings_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          portMappingsBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo.PortMapping port_mappings = 7;</code>
+       */
+      public Builder addPortMappings(org.apache.mesos.Protos.NetworkInfo.PortMapping value) {
+        if (portMappingsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensurePortMappingsIsMutable();
+          portMappings_.add(value);
+          onChanged();
+        } else {
+          portMappingsBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo.PortMapping port_mappings = 7;</code>
+       */
+      public Builder addPortMappings(
+          int index, org.apache.mesos.Protos.NetworkInfo.PortMapping value) {
+        if (portMappingsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensurePortMappingsIsMutable();
+          portMappings_.add(index, value);
+          onChanged();
+        } else {
+          portMappingsBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo.PortMapping port_mappings = 7;</code>
+       */
+      public Builder addPortMappings(
+          org.apache.mesos.Protos.NetworkInfo.PortMapping.Builder builderForValue) {
+        if (portMappingsBuilder_ == null) {
+          ensurePortMappingsIsMutable();
+          portMappings_.add(builderForValue.build());
+          onChanged();
+        } else {
+          portMappingsBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo.PortMapping port_mappings = 7;</code>
+       */
+      public Builder addPortMappings(
+          int index, org.apache.mesos.Protos.NetworkInfo.PortMapping.Builder builderForValue) {
+        if (portMappingsBuilder_ == null) {
+          ensurePortMappingsIsMutable();
+          portMappings_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          portMappingsBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo.PortMapping port_mappings = 7;</code>
+       */
+      public Builder addAllPortMappings(
+          java.lang.Iterable<? extends org.apache.mesos.Protos.NetworkInfo.PortMapping> values) {
+        if (portMappingsBuilder_ == null) {
+          ensurePortMappingsIsMutable();
+          super.addAll(values, portMappings_);
+          onChanged();
+        } else {
+          portMappingsBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo.PortMapping port_mappings = 7;</code>
+       */
+      public Builder clearPortMappings() {
+        if (portMappingsBuilder_ == null) {
+          portMappings_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000010);
+          onChanged();
+        } else {
+          portMappingsBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo.PortMapping port_mappings = 7;</code>
+       */
+      public Builder removePortMappings(int index) {
+        if (portMappingsBuilder_ == null) {
+          ensurePortMappingsIsMutable();
+          portMappings_.remove(index);
+          onChanged();
+        } else {
+          portMappingsBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo.PortMapping port_mappings = 7;</code>
+       */
+      public org.apache.mesos.Protos.NetworkInfo.PortMapping.Builder getPortMappingsBuilder(
+          int index) {
+        return getPortMappingsFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo.PortMapping port_mappings = 7;</code>
+       */
+      public org.apache.mesos.Protos.NetworkInfo.PortMappingOrBuilder getPortMappingsOrBuilder(
+          int index) {
+        if (portMappingsBuilder_ == null) {
+          return portMappings_.get(index);  } else {
+          return portMappingsBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo.PortMapping port_mappings = 7;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.NetworkInfo.PortMappingOrBuilder> 
+           getPortMappingsOrBuilderList() {
+        if (portMappingsBuilder_ != null) {
+          return portMappingsBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(portMappings_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo.PortMapping port_mappings = 7;</code>
+       */
+      public org.apache.mesos.Protos.NetworkInfo.PortMapping.Builder addPortMappingsBuilder() {
+        return getPortMappingsFieldBuilder().addBuilder(
+            org.apache.mesos.Protos.NetworkInfo.PortMapping.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo.PortMapping port_mappings = 7;</code>
+       */
+      public org.apache.mesos.Protos.NetworkInfo.PortMapping.Builder addPortMappingsBuilder(
+          int index) {
+        return getPortMappingsFieldBuilder().addBuilder(
+            index, org.apache.mesos.Protos.NetworkInfo.PortMapping.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo.PortMapping port_mappings = 7;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.NetworkInfo.PortMapping.Builder> 
+           getPortMappingsBuilderList() {
+        return getPortMappingsFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.NetworkInfo.PortMapping, org.apache.mesos.Protos.NetworkInfo.PortMapping.Builder, org.apache.mesos.Protos.NetworkInfo.PortMappingOrBuilder> 
+          getPortMappingsFieldBuilder() {
+        if (portMappingsBuilder_ == null) {
+          portMappingsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.NetworkInfo.PortMapping, org.apache.mesos.Protos.NetworkInfo.PortMapping.Builder, org.apache.mesos.Protos.NetworkInfo.PortMappingOrBuilder>(
+                  portMappings_,
+                  ((bitField0_ & 0x00000010) == 0x00000010),
+                  getParentForChildren(),
+                  isClean());
+          portMappings_ = null;
+        }
+        return portMappingsBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.NetworkInfo)
+    }
+
+    static {
+      defaultInstance = new NetworkInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.NetworkInfo)
+  }
+
+  public interface CapabilityInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // repeated .mesos.CapabilityInfo.Capability capabilities = 1;
+    /**
+     * <code>repeated .mesos.CapabilityInfo.Capability capabilities = 1;</code>
+     */
+    java.util.List<org.apache.mesos.Protos.CapabilityInfo.Capability> getCapabilitiesList();
+    /**
+     * <code>repeated .mesos.CapabilityInfo.Capability capabilities = 1;</code>
+     */
+    int getCapabilitiesCount();
+    /**
+     * <code>repeated .mesos.CapabilityInfo.Capability capabilities = 1;</code>
+     */
+    org.apache.mesos.Protos.CapabilityInfo.Capability getCapabilities(int index);
+  }
+  /**
+   * Protobuf type {@code mesos.CapabilityInfo}
+   *
+   * <pre>
+   **
+   * Encapsulation of `Capabilities` supported by Linux.
+   * Reference: http://linux.die.net/man/7/capabilities.
+   * </pre>
+   */
+  public static final class CapabilityInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements CapabilityInfoOrBuilder {
+    // Use CapabilityInfo.newBuilder() to construct.
+    private CapabilityInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private CapabilityInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final CapabilityInfo defaultInstance;
+    public static CapabilityInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public CapabilityInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private CapabilityInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 8: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.Protos.CapabilityInfo.Capability value = org.apache.mesos.Protos.CapabilityInfo.Capability.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(1, rawValue);
+              } else {
+                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                  capabilities_ = new java.util.ArrayList<org.apache.mesos.Protos.CapabilityInfo.Capability>();
+                  mutable_bitField0_ |= 0x00000001;
+                }
+                capabilities_.add(value);
+              }
+              break;
+            }
+            case 10: {
+              int length = input.readRawVarint32();
+              int oldLimit = input.pushLimit(length);
+              while(input.getBytesUntilLimit() > 0) {
+                int rawValue = input.readEnum();
+                org.apache.mesos.Protos.CapabilityInfo.Capability value = org.apache.mesos.Protos.CapabilityInfo.Capability.valueOf(rawValue);
+                if (value == null) {
+                  unknownFields.mergeVarintField(1, rawValue);
+                } else {
+                  if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                    capabilities_ = new java.util.ArrayList<org.apache.mesos.Protos.CapabilityInfo.Capability>();
+                    mutable_bitField0_ |= 0x00000001;
+                  }
+                  capabilities_.add(value);
+                }
+              }
+              input.popLimit(oldLimit);
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+          capabilities_ = java.util.Collections.unmodifiableList(capabilities_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_CapabilityInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_CapabilityInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.CapabilityInfo.class, org.apache.mesos.Protos.CapabilityInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<CapabilityInfo> PARSER =
+        new com.google.protobuf.AbstractParser<CapabilityInfo>() {
+      public CapabilityInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new CapabilityInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<CapabilityInfo> getParserForType() {
+      return PARSER;
+    }
+
+    /**
+     * Protobuf enum {@code mesos.CapabilityInfo.Capability}
+     *
+     * <pre>
+     * We start the actual values at an offset(1000) because Protobuf 2
+     * uses the first value as the default one. Separating the default
+     * value from the real first value helps to disambiguate them. This
+     * is especially valuable for backward compatibility.
+     * See: MESOS-4997.
+     * </pre>
+     */
+    public enum Capability
+        implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>UNKNOWN = 0;</code>
+       */
+      UNKNOWN(0, 0),
+      /**
+       * <code>CHOWN = 1000;</code>
+       */
+      CHOWN(1, 1000),
+      /**
+       * <code>DAC_OVERRIDE = 1001;</code>
+       */
+      DAC_OVERRIDE(2, 1001),
+      /**
+       * <code>DAC_READ_SEARCH = 1002;</code>
+       */
+      DAC_READ_SEARCH(3, 1002),
+      /**
+       * <code>FOWNER = 1003;</code>
+       */
+      FOWNER(4, 1003),
+      /**
+       * <code>FSETID = 1004;</code>
+       */
+      FSETID(5, 1004),
+      /**
+       * <code>KILL = 1005;</code>
+       */
+      KILL(6, 1005),
+      /**
+       * <code>SETGID = 1006;</code>
+       */
+      SETGID(7, 1006),
+      /**
+       * <code>SETUID = 1007;</code>
+       */
+      SETUID(8, 1007),
+      /**
+       * <code>SETPCAP = 1008;</code>
+       */
+      SETPCAP(9, 1008),
+      /**
+       * <code>LINUX_IMMUTABLE = 1009;</code>
+       */
+      LINUX_IMMUTABLE(10, 1009),
+      /**
+       * <code>NET_BIND_SERVICE = 1010;</code>
+       */
+      NET_BIND_SERVICE(11, 1010),
+      /**
+       * <code>NET_BROADCAST = 1011;</code>
+       */
+      NET_BROADCAST(12, 1011),
+      /**
+       * <code>NET_ADMIN = 1012;</code>
+       */
+      NET_ADMIN(13, 1012),
+      /**
+       * <code>NET_RAW = 1013;</code>
+       */
+      NET_RAW(14, 1013),
+      /**
+       * <code>IPC_LOCK = 1014;</code>
+       */
+      IPC_LOCK(15, 1014),
+      /**
+       * <code>IPC_OWNER = 1015;</code>
+       */
+      IPC_OWNER(16, 1015),
+      /**
+       * <code>SYS_MODULE = 1016;</code>
+       */
+      SYS_MODULE(17, 1016),
+      /**
+       * <code>SYS_RAWIO = 1017;</code>
+       */
+      SYS_RAWIO(18, 1017),
+      /**
+       * <code>SYS_CHROOT = 1018;</code>
+       */
+      SYS_CHROOT(19, 1018),
+      /**
+       * <code>SYS_PTRACE = 1019;</code>
+       */
+      SYS_PTRACE(20, 1019),
+      /**
+       * <code>SYS_PACCT = 1020;</code>
+       */
+      SYS_PACCT(21, 1020),
+      /**
+       * <code>SYS_ADMIN = 1021;</code>
+       */
+      SYS_ADMIN(22, 1021),
+      /**
+       * <code>SYS_BOOT = 1022;</code>
+       */
+      SYS_BOOT(23, 1022),
+      /**
+       * <code>SYS_NICE = 1023;</code>
+       */
+      SYS_NICE(24, 1023),
+      /**
+       * <code>SYS_RESOURCE = 1024;</code>
+       */
+      SYS_RESOURCE(25, 1024),
+      /**
+       * <code>SYS_TIME = 1025;</code>
+       */
+      SYS_TIME(26, 1025),
+      /**
+       * <code>SYS_TTY_CONFIG = 1026;</code>
+       */
+      SYS_TTY_CONFIG(27, 1026),
+      /**
+       * <code>MKNOD = 1027;</code>
+       */
+      MKNOD(28, 1027),
+      /**
+       * <code>LEASE = 1028;</code>
+       */
+      LEASE(29, 1028),
+      /**
+       * <code>AUDIT_WRITE = 1029;</code>
+       */
+      AUDIT_WRITE(30, 1029),
+      /**
+       * <code>AUDIT_CONTROL = 1030;</code>
+       */
+      AUDIT_CONTROL(31, 1030),
+      /**
+       * <code>SETFCAP = 1031;</code>
+       */
+      SETFCAP(32, 1031),
+      /**
+       * <code>MAC_OVERRIDE = 1032;</code>
+       */
+      MAC_OVERRIDE(33, 1032),
+      /**
+       * <code>MAC_ADMIN = 1033;</code>
+       */
+      MAC_ADMIN(34, 1033),
+      /**
+       * <code>SYSLOG = 1034;</code>
+       */
+      SYSLOG(35, 1034),
+      /**
+       * <code>WAKE_ALARM = 1035;</code>
+       */
+      WAKE_ALARM(36, 1035),
+      /**
+       * <code>BLOCK_SUSPEND = 1036;</code>
+       */
+      BLOCK_SUSPEND(37, 1036),
+      /**
+       * <code>AUDIT_READ = 1037;</code>
+       */
+      AUDIT_READ(38, 1037),
+      ;
+
+      /**
+       * <code>UNKNOWN = 0;</code>
+       */
+      public static final int UNKNOWN_VALUE = 0;
+      /**
+       * <code>CHOWN = 1000;</code>
+       */
+      public static final int CHOWN_VALUE = 1000;
+      /**
+       * <code>DAC_OVERRIDE = 1001;</code>
+       */
+      public static final int DAC_OVERRIDE_VALUE = 1001;
+      /**
+       * <code>DAC_READ_SEARCH = 1002;</code>
+       */
+      public static final int DAC_READ_SEARCH_VALUE = 1002;
+      /**
+       * <code>FOWNER = 1003;</code>
+       */
+      public static final int FOWNER_VALUE = 1003;
+      /**
+       * <code>FSETID = 1004;</code>
+       */
+      public static final int FSETID_VALUE = 1004;
+      /**
+       * <code>KILL = 1005;</code>
+       */
+      public static final int KILL_VALUE = 1005;
+      /**
+       * <code>SETGID = 1006;</code>
+       */
+      public static final int SETGID_VALUE = 1006;
+      /**
+       * <code>SETUID = 1007;</code>
+       */
+      public static final int SETUID_VALUE = 1007;
+      /**
+       * <code>SETPCAP = 1008;</code>
+       */
+      public static final int SETPCAP_VALUE = 1008;
+      /**
+       * <code>LINUX_IMMUTABLE = 1009;</code>
+       */
+      public static final int LINUX_IMMUTABLE_VALUE = 1009;
+      /**
+       * <code>NET_BIND_SERVICE = 1010;</code>
+       */
+      public static final int NET_BIND_SERVICE_VALUE = 1010;
+      /**
+       * <code>NET_BROADCAST = 1011;</code>
+       */
+      public static final int NET_BROADCAST_VALUE = 1011;
+      /**
+       * <code>NET_ADMIN = 1012;</code>
+       */
+      public static final int NET_ADMIN_VALUE = 1012;
+      /**
+       * <code>NET_RAW = 1013;</code>
+       */
+      public static final int NET_RAW_VALUE = 1013;
+      /**
+       * <code>IPC_LOCK = 1014;</code>
+       */
+      public static final int IPC_LOCK_VALUE = 1014;
+      /**
+       * <code>IPC_OWNER = 1015;</code>
+       */
+      public static final int IPC_OWNER_VALUE = 1015;
+      /**
+       * <code>SYS_MODULE = 1016;</code>
+       */
+      public static final int SYS_MODULE_VALUE = 1016;
+      /**
+       * <code>SYS_RAWIO = 1017;</code>
+       */
+      public static final int SYS_RAWIO_VALUE = 1017;
+      /**
+       * <code>SYS_CHROOT = 1018;</code>
+       */
+      public static final int SYS_CHROOT_VALUE = 1018;
+      /**
+       * <code>SYS_PTRACE = 1019;</code>
+       */
+      public static final int SYS_PTRACE_VALUE = 1019;
+      /**
+       * <code>SYS_PACCT = 1020;</code>
+       */
+      public static final int SYS_PACCT_VALUE = 1020;
+      /**
+       * <code>SYS_ADMIN = 1021;</code>
+       */
+      public static final int SYS_ADMIN_VALUE = 1021;
+      /**
+       * <code>SYS_BOOT = 1022;</code>
+       */
+      public static final int SYS_BOOT_VALUE = 1022;
+      /**
+       * <code>SYS_NICE = 1023;</code>
+       */
+      public static final int SYS_NICE_VALUE = 1023;
+      /**
+       * <code>SYS_RESOURCE = 1024;</code>
+       */
+      public static final int SYS_RESOURCE_VALUE = 1024;
+      /**
+       * <code>SYS_TIME = 1025;</code>
+       */
+      public static final int SYS_TIME_VALUE = 1025;
+      /**
+       * <code>SYS_TTY_CONFIG = 1026;</code>
+       */
+      public static final int SYS_TTY_CONFIG_VALUE = 1026;
+      /**
+       * <code>MKNOD = 1027;</code>
+       */
+      public static final int MKNOD_VALUE = 1027;
+      /**
+       * <code>LEASE = 1028;</code>
+       */
+      public static final int LEASE_VALUE = 1028;
+      /**
+       * <code>AUDIT_WRITE = 1029;</code>
+       */
+      public static final int AUDIT_WRITE_VALUE = 1029;
+      /**
+       * <code>AUDIT_CONTROL = 1030;</code>
+       */
+      public static final int AUDIT_CONTROL_VALUE = 1030;
+      /**
+       * <code>SETFCAP = 1031;</code>
+       */
+      public static final int SETFCAP_VALUE = 1031;
+      /**
+       * <code>MAC_OVERRIDE = 1032;</code>
+       */
+      public static final int MAC_OVERRIDE_VALUE = 1032;
+      /**
+       * <code>MAC_ADMIN = 1033;</code>
+       */
+      public static final int MAC_ADMIN_VALUE = 1033;
+      /**
+       * <code>SYSLOG = 1034;</code>
+       */
+      public static final int SYSLOG_VALUE = 1034;
+      /**
+       * <code>WAKE_ALARM = 1035;</code>
+       */
+      public static final int WAKE_ALARM_VALUE = 1035;
+      /**
+       * <code>BLOCK_SUSPEND = 1036;</code>
+       */
+      public static final int BLOCK_SUSPEND_VALUE = 1036;
+      /**
+       * <code>AUDIT_READ = 1037;</code>
+       */
+      public static final int AUDIT_READ_VALUE = 1037;
+
+
+      public final int getNumber() { return value; }
+
+      public static Capability valueOf(int value) {
+        switch (value) {
+          case 0: return UNKNOWN;
+          case 1000: return CHOWN;
+          case 1001: return DAC_OVERRIDE;
+          case 1002: return DAC_READ_SEARCH;
+          case 1003: return FOWNER;
+          case 1004: return FSETID;
+          case 1005: return KILL;
+          case 1006: return SETGID;
+          case 1007: return SETUID;
+          case 1008: return SETPCAP;
+          case 1009: return LINUX_IMMUTABLE;
+          case 1010: return NET_BIND_SERVICE;
+          case 1011: return NET_BROADCAST;
+          case 1012: return NET_ADMIN;
+          case 1013: return NET_RAW;
+          case 1014: return IPC_LOCK;
+          case 1015: return IPC_OWNER;
+          case 1016: return SYS_MODULE;
+          case 1017: return SYS_RAWIO;
+          case 1018: return SYS_CHROOT;
+          case 1019: return SYS_PTRACE;
+          case 1020: return SYS_PACCT;
+          case 1021: return SYS_ADMIN;
+          case 1022: return SYS_BOOT;
+          case 1023: return SYS_NICE;
+          case 1024: return SYS_RESOURCE;
+          case 1025: return SYS_TIME;
+          case 1026: return SYS_TTY_CONFIG;
+          case 1027: return MKNOD;
+          case 1028: return LEASE;
+          case 1029: return AUDIT_WRITE;
+          case 1030: return AUDIT_CONTROL;
+          case 1031: return SETFCAP;
+          case 1032: return MAC_OVERRIDE;
+          case 1033: return MAC_ADMIN;
+          case 1034: return SYSLOG;
+          case 1035: return WAKE_ALARM;
+          case 1036: return BLOCK_SUSPEND;
+          case 1037: return AUDIT_READ;
+          default: return null;
+        }
+      }
+
+      public static com.google.protobuf.Internal.EnumLiteMap<Capability>
+          internalGetValueMap() {
+        return internalValueMap;
+      }
+      private static com.google.protobuf.Internal.EnumLiteMap<Capability>
+          internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap<Capability>() {
+              public Capability findValueByNumber(int number) {
+                return Capability.valueOf(number);
+              }
+            };
+
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
+          getValueDescriptor() {
+        return getDescriptor().getValues().get(index);
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptorForType() {
+        return getDescriptor();
+      }
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.CapabilityInfo.getDescriptor().getEnumTypes().get(0);
+      }
+
+      private static final Capability[] VALUES = values();
+
+      public static Capability valueOf(
+          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+        if (desc.getType() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "EnumValueDescriptor is not for this type.");
+        }
+        return VALUES[desc.getIndex()];
+      }
+
+      private final int index;
+      private final int value;
+
+      private Capability(int index, int value) {
+        this.index = index;
+        this.value = value;
+      }
+
+      // @@protoc_insertion_point(enum_scope:mesos.CapabilityInfo.Capability)
+    }
+
+    // repeated .mesos.CapabilityInfo.Capability capabilities = 1;
+    public static final int CAPABILITIES_FIELD_NUMBER = 1;
+    private java.util.List<org.apache.mesos.Protos.CapabilityInfo.Capability> capabilities_;
+    /**
+     * <code>repeated .mesos.CapabilityInfo.Capability capabilities = 1;</code>
+     */
+    public java.util.List<org.apache.mesos.Protos.CapabilityInfo.Capability> getCapabilitiesList() {
+      return capabilities_;
+    }
+    /**
+     * <code>repeated .mesos.CapabilityInfo.Capability capabilities = 1;</code>
+     */
+    public int getCapabilitiesCount() {
+      return capabilities_.size();
+    }
+    /**
+     * <code>repeated .mesos.CapabilityInfo.Capability capabilities = 1;</code>
+     */
+    public org.apache.mesos.Protos.CapabilityInfo.Capability getCapabilities(int index) {
+      return capabilities_.get(index);
+    }
+
+    private void initFields() {
+      capabilities_ = java.util.Collections.emptyList();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      for (int i = 0; i < capabilities_.size(); i++) {
+        output.writeEnum(1, capabilities_.get(i).getNumber());
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      {
+        int dataSize = 0;
+        for (int i = 0; i < capabilities_.size(); i++) {
+          dataSize += com.google.protobuf.CodedOutputStream
+            .computeEnumSizeNoTag(capabilities_.get(i).getNumber());
+        }
+        size += dataSize;
+        size += 1 * capabilities_.size();
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.CapabilityInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.CapabilityInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.CapabilityInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.CapabilityInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.CapabilityInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.CapabilityInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.CapabilityInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.CapabilityInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.CapabilityInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.CapabilityInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.CapabilityInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.CapabilityInfo}
+     *
+     * <pre>
+     **
+     * Encapsulation of `Capabilities` supported by Linux.
+     * Reference: http://linux.die.net/man/7/capabilities.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.CapabilityInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_CapabilityInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_CapabilityInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.CapabilityInfo.class, org.apache.mesos.Protos.CapabilityInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.CapabilityInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        capabilities_ = java.util.Collections.emptyList();
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_CapabilityInfo_descriptor;
+      }
+
+      public org.apache.mesos.Protos.CapabilityInfo getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.CapabilityInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.CapabilityInfo build() {
+        org.apache.mesos.Protos.CapabilityInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.CapabilityInfo buildPartial() {
+        org.apache.mesos.Protos.CapabilityInfo result = new org.apache.mesos.Protos.CapabilityInfo(this);
+        int from_bitField0_ = bitField0_;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          capabilities_ = java.util.Collections.unmodifiableList(capabilities_);
+          bitField0_ = (bitField0_ & ~0x00000001);
+        }
+        result.capabilities_ = capabilities_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.CapabilityInfo) {
+          return mergeFrom((org.apache.mesos.Protos.CapabilityInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.CapabilityInfo other) {
+        if (other == org.apache.mesos.Protos.CapabilityInfo.getDefaultInstance()) return this;
+        if (!other.capabilities_.isEmpty()) {
+          if (capabilities_.isEmpty()) {
+            capabilities_ = other.capabilities_;
+            bitField0_ = (bitField0_ & ~0x00000001);
+          } else {
+            ensureCapabilitiesIsMutable();
+            capabilities_.addAll(other.capabilities_);
+          }
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.CapabilityInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.CapabilityInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // repeated .mesos.CapabilityInfo.Capability capabilities = 1;
+      private java.util.List<org.apache.mesos.Protos.CapabilityInfo.Capability> capabilities_ =
+        java.util.Collections.emptyList();
+      private void ensureCapabilitiesIsMutable() {
+        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+          capabilities_ = new java.util.ArrayList<org.apache.mesos.Protos.CapabilityInfo.Capability>(capabilities_);
+          bitField0_ |= 0x00000001;
+        }
+      }
+      /**
+       * <code>repeated .mesos.CapabilityInfo.Capability capabilities = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.CapabilityInfo.Capability> getCapabilitiesList() {
+        return java.util.Collections.unmodifiableList(capabilities_);
+      }
+      /**
+       * <code>repeated .mesos.CapabilityInfo.Capability capabilities = 1;</code>
+       */
+      public int getCapabilitiesCount() {
+        return capabilities_.size();
+      }
+      /**
+       * <code>repeated .mesos.CapabilityInfo.Capability capabilities = 1;</code>
+       */
+      public org.apache.mesos.Protos.CapabilityInfo.Capability getCapabilities(int index) {
+        return capabilities_.get(index);
+      }
+      /**
+       * <code>repeated .mesos.CapabilityInfo.Capability capabilities = 1;</code>
+       */
+      public Builder setCapabilities(
+          int index, org.apache.mesos.Protos.CapabilityInfo.Capability value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        ensureCapabilitiesIsMutable();
+        capabilities_.set(index, value);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.CapabilityInfo.Capability capabilities = 1;</code>
+       */
+      public Builder addCapabilities(org.apache.mesos.Protos.CapabilityInfo.Capability value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        ensureCapabilitiesIsMutable();
+        capabilities_.add(value);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.CapabilityInfo.Capability capabilities = 1;</code>
+       */
+      public Builder addAllCapabilities(
+          java.lang.Iterable<? extends org.apache.mesos.Protos.CapabilityInfo.Capability> values) {
+        ensureCapabilitiesIsMutable();
+        super.addAll(values, capabilities_);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.CapabilityInfo.Capability capabilities = 1;</code>
+       */
+      public Builder clearCapabilities() {
+        capabilities_ = java.util.Collections.emptyList();
+        bitField0_ = (bitField0_ & ~0x00000001);
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.CapabilityInfo)
+    }
+
+    static {
+      defaultInstance = new CapabilityInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.CapabilityInfo)
+  }
+
+  public interface LinuxInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional .mesos.CapabilityInfo capability_info = 1 [deprecated = true];
+    /**
+     * <code>optional .mesos.CapabilityInfo capability_info = 1 [deprecated = true];</code>
+     *
+     * <pre>
+     * Since 1.4.0, deprecated in favor of `effective_capabilities`.
+     * </pre>
+     */
+    @java.lang.Deprecated boolean hasCapabilityInfo();
+    /**
+     * <code>optional .mesos.CapabilityInfo capability_info = 1 [deprecated = true];</code>
+     *
+     * <pre>
+     * Since 1.4.0, deprecated in favor of `effective_capabilities`.
+     * </pre>
+     */
+    @java.lang.Deprecated org.apache.mesos.Protos.CapabilityInfo getCapabilityInfo();
+    /**
+     * <code>optional .mesos.CapabilityInfo capability_info = 1 [deprecated = true];</code>
+     *
+     * <pre>
+     * Since 1.4.0, deprecated in favor of `effective_capabilities`.
+     * </pre>
+     */
+    @java.lang.Deprecated org.apache.mesos.Protos.CapabilityInfoOrBuilder getCapabilityInfoOrBuilder();
+
+    // optional .mesos.CapabilityInfo bounding_capabilities = 2;
+    /**
+     * <code>optional .mesos.CapabilityInfo bounding_capabilities = 2;</code>
+     *
+     * <pre>
+     * The set of capabilities that are allowed but not initially
+     * granted to tasks.
+     * </pre>
+     */
+    boolean hasBoundingCapabilities();
+    /**
+     * <code>optional .mesos.CapabilityInfo bounding_capabilities = 2;</code>
+     *
+     * <pre>
+     * The set of capabilities that are allowed but not initially
+     * granted to tasks.
+     * </pre>
+     */
+    org.apache.mesos.Protos.CapabilityInfo getBoundingCapabilities();
+    /**
+     * <code>optional .mesos.CapabilityInfo bounding_capabilities = 2;</code>
+     *
+     * <pre>
+     * The set of capabilities that are allowed but not initially
+     * granted to tasks.
+     * </pre>
+     */
+    org.apache.mesos.Protos.CapabilityInfoOrBuilder getBoundingCapabilitiesOrBuilder();
+
+    // optional .mesos.CapabilityInfo effective_capabilities = 3;
+    /**
+     * <code>optional .mesos.CapabilityInfo effective_capabilities = 3;</code>
+     *
+     * <pre>
+     * Represents the set of capabilities that the task will
+     * be executed with.
+     * </pre>
+     */
+    boolean hasEffectiveCapabilities();
+    /**
+     * <code>optional .mesos.CapabilityInfo effective_capabilities = 3;</code>
+     *
+     * <pre>
+     * Represents the set of capabilities that the task will
+     * be executed with.
+     * </pre>
+     */
+    org.apache.mesos.Protos.CapabilityInfo getEffectiveCapabilities();
+    /**
+     * <code>optional .mesos.CapabilityInfo effective_capabilities = 3;</code>
+     *
+     * <pre>
+     * Represents the set of capabilities that the task will
+     * be executed with.
+     * </pre>
+     */
+    org.apache.mesos.Protos.CapabilityInfoOrBuilder getEffectiveCapabilitiesOrBuilder();
+
+    // optional bool share_pid_namespace = 4;
+    /**
+     * <code>optional bool share_pid_namespace = 4;</code>
+     *
+     * <pre>
+     * If set as 'true', the container shares the pid namespace with
+     * its parent. If the container is a top level container, it will
+     * share the pid namespace with the agent. If the container is a
+     * nested container, it will share the pid namespace with its
+     * parent container. This field will be ignored if 'namespaces/pid'
+     * isolator is not enabled.
+     * </pre>
+     */
+    boolean hasSharePidNamespace();
+    /**
+     * <code>optional bool share_pid_namespace = 4;</code>
+     *
+     * <pre>
+     * If set as 'true', the container shares the pid namespace with
+     * its parent. If the container is a top level container, it will
+     * share the pid namespace with the agent. If the container is a
+     * nested container, it will share the pid namespace with its
+     * parent container. This field will be ignored if 'namespaces/pid'
+     * isolator is not enabled.
+     * </pre>
+     */
+    boolean getSharePidNamespace();
+  }
+  /**
+   * Protobuf type {@code mesos.LinuxInfo}
+   *
+   * <pre>
+   **
+   * Encapsulation for Linux specific configuration.
+   * E.g, capabilities, limits etc.
+   * </pre>
+   */
+  public static final class LinuxInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements LinuxInfoOrBuilder {
+    // Use LinuxInfo.newBuilder() to construct.
+    private LinuxInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private LinuxInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final LinuxInfo defaultInstance;
+    public static LinuxInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public LinuxInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private LinuxInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              org.apache.mesos.Protos.CapabilityInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                subBuilder = capabilityInfo_.toBuilder();
+              }
+              capabilityInfo_ = input.readMessage(org.apache.mesos.Protos.CapabilityInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(capabilityInfo_);
+                capabilityInfo_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+            case 18: {
+              org.apache.mesos.Protos.CapabilityInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = boundingCapabilities_.toBuilder();
+              }
+              boundingCapabilities_ = input.readMessage(org.apache.mesos.Protos.CapabilityInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(boundingCapabilities_);
+                boundingCapabilities_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+            case 26: {
+              org.apache.mesos.Protos.CapabilityInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                subBuilder = effectiveCapabilities_.toBuilder();
+              }
+              effectiveCapabilities_ = input.readMessage(org.apache.mesos.Protos.CapabilityInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(effectiveCapabilities_);
+                effectiveCapabilities_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000004;
+              break;
+            }
+            case 32: {
+              bitField0_ |= 0x00000008;
+              sharePidNamespace_ = input.readBool();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_LinuxInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_LinuxInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.LinuxInfo.class, org.apache.mesos.Protos.LinuxInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<LinuxInfo> PARSER =
+        new com.google.protobuf.AbstractParser<LinuxInfo>() {
+      public LinuxInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new LinuxInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<LinuxInfo> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // optional .mesos.CapabilityInfo capability_info = 1 [deprecated = true];
+    public static final int CAPABILITY_INFO_FIELD_NUMBER = 1;
+    private org.apache.mesos.Protos.CapabilityInfo capabilityInfo_;
+    /**
+     * <code>optional .mesos.CapabilityInfo capability_info = 1 [deprecated = true];</code>
+     *
+     * <pre>
+     * Since 1.4.0, deprecated in favor of `effective_capabilities`.
+     * </pre>
+     */
+    @java.lang.Deprecated public boolean hasCapabilityInfo() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional .mesos.CapabilityInfo capability_info = 1 [deprecated = true];</code>
+     *
+     * <pre>
+     * Since 1.4.0, deprecated in favor of `effective_capabilities`.
+     * </pre>
+     */
+    @java.lang.Deprecated public org.apache.mesos.Protos.CapabilityInfo getCapabilityInfo() {
+      return capabilityInfo_;
+    }
+    /**
+     * <code>optional .mesos.CapabilityInfo capability_info = 1 [deprecated = true];</code>
+     *
+     * <pre>
+     * Since 1.4.0, deprecated in favor of `effective_capabilities`.
+     * </pre>
+     */
+    @java.lang.Deprecated public org.apache.mesos.Protos.CapabilityInfoOrBuilder getCapabilityInfoOrBuilder() {
+      return capabilityInfo_;
+    }
+
+    // optional .mesos.CapabilityInfo bounding_capabilities = 2;
+    public static final int BOUNDING_CAPABILITIES_FIELD_NUMBER = 2;
+    private org.apache.mesos.Protos.CapabilityInfo boundingCapabilities_;
+    /**
+     * <code>optional .mesos.CapabilityInfo bounding_capabilities = 2;</code>
+     *
+     * <pre>
+     * The set of capabilities that are allowed but not initially
+     * granted to tasks.
+     * </pre>
+     */
+    public boolean hasBoundingCapabilities() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional .mesos.CapabilityInfo bounding_capabilities = 2;</code>
+     *
+     * <pre>
+     * The set of capabilities that are allowed but not initially
+     * granted to tasks.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.CapabilityInfo getBoundingCapabilities() {
+      return boundingCapabilities_;
+    }
+    /**
+     * <code>optional .mesos.CapabilityInfo bounding_capabilities = 2;</code>
+     *
+     * <pre>
+     * The set of capabilities that are allowed but not initially
+     * granted to tasks.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.CapabilityInfoOrBuilder getBoundingCapabilitiesOrBuilder() {
+      return boundingCapabilities_;
+    }
+
+    // optional .mesos.CapabilityInfo effective_capabilities = 3;
+    public static final int EFFECTIVE_CAPABILITIES_FIELD_NUMBER = 3;
+    private org.apache.mesos.Protos.CapabilityInfo effectiveCapabilities_;
+    /**
+     * <code>optional .mesos.CapabilityInfo effective_capabilities = 3;</code>
+     *
+     * <pre>
+     * Represents the set of capabilities that the task will
+     * be executed with.
+     * </pre>
+     */
+    public boolean hasEffectiveCapabilities() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional .mesos.CapabilityInfo effective_capabilities = 3;</code>
+     *
+     * <pre>
+     * Represents the set of capabilities that the task will
+     * be executed with.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.CapabilityInfo getEffectiveCapabilities() {
+      return effectiveCapabilities_;
+    }
+    /**
+     * <code>optional .mesos.CapabilityInfo effective_capabilities = 3;</code>
+     *
+     * <pre>
+     * Represents the set of capabilities that the task will
+     * be executed with.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.CapabilityInfoOrBuilder getEffectiveCapabilitiesOrBuilder() {
+      return effectiveCapabilities_;
+    }
+
+    // optional bool share_pid_namespace = 4;
+    public static final int SHARE_PID_NAMESPACE_FIELD_NUMBER = 4;
+    private boolean sharePidNamespace_;
+    /**
+     * <code>optional bool share_pid_namespace = 4;</code>
+     *
+     * <pre>
+     * If set as 'true', the container shares the pid namespace with
+     * its parent. If the container is a top level container, it will
+     * share the pid namespace with the agent. If the container is a
+     * nested container, it will share the pid namespace with its
+     * parent container. This field will be ignored if 'namespaces/pid'
+     * isolator is not enabled.
+     * </pre>
+     */
+    public boolean hasSharePidNamespace() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional bool share_pid_namespace = 4;</code>
+     *
+     * <pre>
+     * If set as 'true', the container shares the pid namespace with
+     * its parent. If the container is a top level container, it will
+     * share the pid namespace with the agent. If the container is a
+     * nested container, it will share the pid namespace with its
+     * parent container. This field will be ignored if 'namespaces/pid'
+     * isolator is not enabled.
+     * </pre>
+     */
+    public boolean getSharePidNamespace() {
+      return sharePidNamespace_;
+    }
+
+    private void initFields() {
+      capabilityInfo_ = org.apache.mesos.Protos.CapabilityInfo.getDefaultInstance();
+      boundingCapabilities_ = org.apache.mesos.Protos.CapabilityInfo.getDefaultInstance();
+      effectiveCapabilities_ = org.apache.mesos.Protos.CapabilityInfo.getDefaultInstance();
+      sharePidNamespace_ = false;
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeMessage(1, capabilityInfo_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(2, boundingCapabilities_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeMessage(3, effectiveCapabilities_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeBool(4, sharePidNamespace_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, capabilityInfo_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, boundingCapabilities_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, effectiveCapabilities_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(4, sharePidNamespace_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.LinuxInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.LinuxInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.LinuxInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.LinuxInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.LinuxInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.LinuxInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.LinuxInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.LinuxInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.LinuxInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.LinuxInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.LinuxInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.LinuxInfo}
+     *
+     * <pre>
+     **
+     * Encapsulation for Linux specific configuration.
+     * E.g, capabilities, limits etc.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.LinuxInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_LinuxInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_LinuxInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.LinuxInfo.class, org.apache.mesos.Protos.LinuxInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.LinuxInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getCapabilityInfoFieldBuilder();
+          getBoundingCapabilitiesFieldBuilder();
+          getEffectiveCapabilitiesFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (capabilityInfoBuilder_ == null) {
+          capabilityInfo_ = org.apache.mesos.Protos.CapabilityInfo.getDefaultInstance();
+        } else {
+          capabilityInfoBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (boundingCapabilitiesBuilder_ == null) {
+          boundingCapabilities_ = org.apache.mesos.Protos.CapabilityInfo.getDefaultInstance();
+        } else {
+          boundingCapabilitiesBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        if (effectiveCapabilitiesBuilder_ == null) {
+          effectiveCapabilities_ = org.apache.mesos.Protos.CapabilityInfo.getDefaultInstance();
+        } else {
+          effectiveCapabilitiesBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        sharePidNamespace_ = false;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_LinuxInfo_descriptor;
+      }
+
+      public org.apache.mesos.Protos.LinuxInfo getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.LinuxInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.LinuxInfo build() {
+        org.apache.mesos.Protos.LinuxInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.LinuxInfo buildPartial() {
+        org.apache.mesos.Protos.LinuxInfo result = new org.apache.mesos.Protos.LinuxInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        if (capabilityInfoBuilder_ == null) {
+          result.capabilityInfo_ = capabilityInfo_;
+        } else {
+          result.capabilityInfo_ = capabilityInfoBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (boundingCapabilitiesBuilder_ == null) {
+          result.boundingCapabilities_ = boundingCapabilities_;
+        } else {
+          result.boundingCapabilities_ = boundingCapabilitiesBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        if (effectiveCapabilitiesBuilder_ == null) {
+          result.effectiveCapabilities_ = effectiveCapabilities_;
+        } else {
+          result.effectiveCapabilities_ = effectiveCapabilitiesBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.sharePidNamespace_ = sharePidNamespace_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.LinuxInfo) {
+          return mergeFrom((org.apache.mesos.Protos.LinuxInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.LinuxInfo other) {
+        if (other == org.apache.mesos.Protos.LinuxInfo.getDefaultInstance()) return this;
+        if (other.hasCapabilityInfo()) {
+          mergeCapabilityInfo(other.getCapabilityInfo());
+        }
+        if (other.hasBoundingCapabilities()) {
+          mergeBoundingCapabilities(other.getBoundingCapabilities());
+        }
+        if (other.hasEffectiveCapabilities()) {
+          mergeEffectiveCapabilities(other.getEffectiveCapabilities());
+        }
+        if (other.hasSharePidNamespace()) {
+          setSharePidNamespace(other.getSharePidNamespace());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.LinuxInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.LinuxInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional .mesos.CapabilityInfo capability_info = 1 [deprecated = true];
+      private org.apache.mesos.Protos.CapabilityInfo capabilityInfo_ = org.apache.mesos.Protos.CapabilityInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.CapabilityInfo, org.apache.mesos.Protos.CapabilityInfo.Builder, org.apache.mesos.Protos.CapabilityInfoOrBuilder> capabilityInfoBuilder_;
+      /**
+       * <code>optional .mesos.CapabilityInfo capability_info = 1 [deprecated = true];</code>
+       *
+       * <pre>
+       * Since 1.4.0, deprecated in favor of `effective_capabilities`.
+       * </pre>
+       */
+      @java.lang.Deprecated public boolean hasCapabilityInfo() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.CapabilityInfo capability_info = 1 [deprecated = true];</code>
+       *
+       * <pre>
+       * Since 1.4.0, deprecated in favor of `effective_capabilities`.
+       * </pre>
+       */
+      @java.lang.Deprecated public org.apache.mesos.Protos.CapabilityInfo getCapabilityInfo() {
+        if (capabilityInfoBuilder_ == null) {
+          return capabilityInfo_;
+        } else {
+          return capabilityInfoBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.CapabilityInfo capability_info = 1 [deprecated = true];</code>
+       *
+       * <pre>
+       * Since 1.4.0, deprecated in favor of `effective_capabilities`.
+       * </pre>
+       */
+      @java.lang.Deprecated public Builder setCapabilityInfo(org.apache.mesos.Protos.CapabilityInfo value) {
+        if (capabilityInfoBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          capabilityInfo_ = value;
+          onChanged();
+        } else {
+          capabilityInfoBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CapabilityInfo capability_info = 1 [deprecated = true];</code>
+       *
+       * <pre>
+       * Since 1.4.0, deprecated in favor of `effective_capabilities`.
+       * </pre>
+       */
+      @java.lang.Deprecated public Builder setCapabilityInfo(
+          org.apache.mesos.Protos.CapabilityInfo.Builder builderForValue) {
+        if (capabilityInfoBuilder_ == null) {
+          capabilityInfo_ = builderForValue.build();
+          onChanged();
+        } else {
+          capabilityInfoBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CapabilityInfo capability_info = 1 [deprecated = true];</code>
+       *
+       * <pre>
+       * Since 1.4.0, deprecated in favor of `effective_capabilities`.
+       * </pre>
+       */
+      @java.lang.Deprecated public Builder mergeCapabilityInfo(org.apache.mesos.Protos.CapabilityInfo value) {
+        if (capabilityInfoBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001) &&
+              capabilityInfo_ != org.apache.mesos.Protos.CapabilityInfo.getDefaultInstance()) {
+            capabilityInfo_ =
+              org.apache.mesos.Protos.CapabilityInfo.newBuilder(capabilityInfo_).mergeFrom(value).buildPartial();
+          } else {
+            capabilityInfo_ = value;
+          }
+          onChanged();
+        } else {
+          capabilityInfoBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CapabilityInfo capability_info = 1 [deprecated = true];</code>
+       *
+       * <pre>
+       * Since 1.4.0, deprecated in favor of `effective_capabilities`.
+       * </pre>
+       */
+      @java.lang.Deprecated public Builder clearCapabilityInfo() {
+        if (capabilityInfoBuilder_ == null) {
+          capabilityInfo_ = org.apache.mesos.Protos.CapabilityInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          capabilityInfoBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CapabilityInfo capability_info = 1 [deprecated = true];</code>
+       *
+       * <pre>
+       * Since 1.4.0, deprecated in favor of `effective_capabilities`.
+       * </pre>
+       */
+      @java.lang.Deprecated public org.apache.mesos.Protos.CapabilityInfo.Builder getCapabilityInfoBuilder() {
+        bitField0_ |= 0x00000001;
+        onChanged();
+        return getCapabilityInfoFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.CapabilityInfo capability_info = 1 [deprecated = true];</code>
+       *
+       * <pre>
+       * Since 1.4.0, deprecated in favor of `effective_capabilities`.
+       * </pre>
+       */
+      @java.lang.Deprecated public org.apache.mesos.Protos.CapabilityInfoOrBuilder getCapabilityInfoOrBuilder() {
+        if (capabilityInfoBuilder_ != null) {
+          return capabilityInfoBuilder_.getMessageOrBuilder();
+        } else {
+          return capabilityInfo_;
+        }
+      }
+      /**
+       * <code>optional .mesos.CapabilityInfo capability_info = 1 [deprecated = true];</code>
+       *
+       * <pre>
+       * Since 1.4.0, deprecated in favor of `effective_capabilities`.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.CapabilityInfo, org.apache.mesos.Protos.CapabilityInfo.Builder, org.apache.mesos.Protos.CapabilityInfoOrBuilder> 
+          getCapabilityInfoFieldBuilder() {
+        if (capabilityInfoBuilder_ == null) {
+          capabilityInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.CapabilityInfo, org.apache.mesos.Protos.CapabilityInfo.Builder, org.apache.mesos.Protos.CapabilityInfoOrBuilder>(
+                  capabilityInfo_,
+                  getParentForChildren(),
+                  isClean());
+          capabilityInfo_ = null;
+        }
+        return capabilityInfoBuilder_;
+      }
+
+      // optional .mesos.CapabilityInfo bounding_capabilities = 2;
+      private org.apache.mesos.Protos.CapabilityInfo boundingCapabilities_ = org.apache.mesos.Protos.CapabilityInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.CapabilityInfo, org.apache.mesos.Protos.CapabilityInfo.Builder, org.apache.mesos.Protos.CapabilityInfoOrBuilder> boundingCapabilitiesBuilder_;
+      /**
+       * <code>optional .mesos.CapabilityInfo bounding_capabilities = 2;</code>
+       *
+       * <pre>
+       * The set of capabilities that are allowed but not initially
+       * granted to tasks.
+       * </pre>
+       */
+      public boolean hasBoundingCapabilities() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.CapabilityInfo bounding_capabilities = 2;</code>
+       *
+       * <pre>
+       * The set of capabilities that are allowed but not initially
+       * granted to tasks.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.CapabilityInfo getBoundingCapabilities() {
+        if (boundingCapabilitiesBuilder_ == null) {
+          return boundingCapabilities_;
+        } else {
+          return boundingCapabilitiesBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.CapabilityInfo bounding_capabilities = 2;</code>
+       *
+       * <pre>
+       * The set of capabilities that are allowed but not initially
+       * granted to tasks.
+       * </pre>
+       */
+      public Builder setBoundingCapabilities(org.apache.mesos.Protos.CapabilityInfo value) {
+        if (boundingCapabilitiesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          boundingCapabilities_ = value;
+          onChanged();
+        } else {
+          boundingCapabilitiesBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CapabilityInfo bounding_capabilities = 2;</code>
+       *
+       * <pre>
+       * The set of capabilities that are allowed but not initially
+       * granted to tasks.
+       * </pre>
+       */
+      public Builder setBoundingCapabilities(
+          org.apache.mesos.Protos.CapabilityInfo.Builder builderForValue) {
+        if (boundingCapabilitiesBuilder_ == null) {
+          boundingCapabilities_ = builderForValue.build();
+          onChanged();
+        } else {
+          boundingCapabilitiesBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CapabilityInfo bounding_capabilities = 2;</code>
+       *
+       * <pre>
+       * The set of capabilities that are allowed but not initially
+       * granted to tasks.
+       * </pre>
+       */
+      public Builder mergeBoundingCapabilities(org.apache.mesos.Protos.CapabilityInfo value) {
+        if (boundingCapabilitiesBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              boundingCapabilities_ != org.apache.mesos.Protos.CapabilityInfo.getDefaultInstance()) {
+            boundingCapabilities_ =
+              org.apache.mesos.Protos.CapabilityInfo.newBuilder(boundingCapabilities_).mergeFrom(value).buildPartial();
+          } else {
+            boundingCapabilities_ = value;
+          }
+          onChanged();
+        } else {
+          boundingCapabilitiesBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CapabilityInfo bounding_capabilities = 2;</code>
+       *
+       * <pre>
+       * The set of capabilities that are allowed but not initially
+       * granted to tasks.
+       * </pre>
+       */
+      public Builder clearBoundingCapabilities() {
+        if (boundingCapabilitiesBuilder_ == null) {
+          boundingCapabilities_ = org.apache.mesos.Protos.CapabilityInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          boundingCapabilitiesBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CapabilityInfo bounding_capabilities = 2;</code>
+       *
+       * <pre>
+       * The set of capabilities that are allowed but not initially
+       * granted to tasks.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.CapabilityInfo.Builder getBoundingCapabilitiesBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getBoundingCapabilitiesFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.CapabilityInfo bounding_capabilities = 2;</code>
+       *
+       * <pre>
+       * The set of capabilities that are allowed but not initially
+       * granted to tasks.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.CapabilityInfoOrBuilder getBoundingCapabilitiesOrBuilder() {
+        if (boundingCapabilitiesBuilder_ != null) {
+          return boundingCapabilitiesBuilder_.getMessageOrBuilder();
+        } else {
+          return boundingCapabilities_;
+        }
+      }
+      /**
+       * <code>optional .mesos.CapabilityInfo bounding_capabilities = 2;</code>
+       *
+       * <pre>
+       * The set of capabilities that are allowed but not initially
+       * granted to tasks.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.CapabilityInfo, org.apache.mesos.Protos.CapabilityInfo.Builder, org.apache.mesos.Protos.CapabilityInfoOrBuilder> 
+          getBoundingCapabilitiesFieldBuilder() {
+        if (boundingCapabilitiesBuilder_ == null) {
+          boundingCapabilitiesBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.CapabilityInfo, org.apache.mesos.Protos.CapabilityInfo.Builder, org.apache.mesos.Protos.CapabilityInfoOrBuilder>(
+                  boundingCapabilities_,
+                  getParentForChildren(),
+                  isClean());
+          boundingCapabilities_ = null;
+        }
+        return boundingCapabilitiesBuilder_;
+      }
+
+      // optional .mesos.CapabilityInfo effective_capabilities = 3;
+      private org.apache.mesos.Protos.CapabilityInfo effectiveCapabilities_ = org.apache.mesos.Protos.CapabilityInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.CapabilityInfo, org.apache.mesos.Protos.CapabilityInfo.Builder, org.apache.mesos.Protos.CapabilityInfoOrBuilder> effectiveCapabilitiesBuilder_;
+      /**
+       * <code>optional .mesos.CapabilityInfo effective_capabilities = 3;</code>
+       *
+       * <pre>
+       * Represents the set of capabilities that the task will
+       * be executed with.
+       * </pre>
+       */
+      public boolean hasEffectiveCapabilities() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.CapabilityInfo effective_capabilities = 3;</code>
+       *
+       * <pre>
+       * Represents the set of capabilities that the task will
+       * be executed with.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.CapabilityInfo getEffectiveCapabilities() {
+        if (effectiveCapabilitiesBuilder_ == null) {
+          return effectiveCapabilities_;
+        } else {
+          return effectiveCapabilitiesBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.CapabilityInfo effective_capabilities = 3;</code>
+       *
+       * <pre>
+       * Represents the set of capabilities that the task will
+       * be executed with.
+       * </pre>
+       */
+      public Builder setEffectiveCapabilities(org.apache.mesos.Protos.CapabilityInfo value) {
+        if (effectiveCapabilitiesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          effectiveCapabilities_ = value;
+          onChanged();
+        } else {
+          effectiveCapabilitiesBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CapabilityInfo effective_capabilities = 3;</code>
+       *
+       * <pre>
+       * Represents the set of capabilities that the task will
+       * be executed with.
+       * </pre>
+       */
+      public Builder setEffectiveCapabilities(
+          org.apache.mesos.Protos.CapabilityInfo.Builder builderForValue) {
+        if (effectiveCapabilitiesBuilder_ == null) {
+          effectiveCapabilities_ = builderForValue.build();
+          onChanged();
+        } else {
+          effectiveCapabilitiesBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CapabilityInfo effective_capabilities = 3;</code>
+       *
+       * <pre>
+       * Represents the set of capabilities that the task will
+       * be executed with.
+       * </pre>
+       */
+      public Builder mergeEffectiveCapabilities(org.apache.mesos.Protos.CapabilityInfo value) {
+        if (effectiveCapabilitiesBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) == 0x00000004) &&
+              effectiveCapabilities_ != org.apache.mesos.Protos.CapabilityInfo.getDefaultInstance()) {
+            effectiveCapabilities_ =
+              org.apache.mesos.Protos.CapabilityInfo.newBuilder(effectiveCapabilities_).mergeFrom(value).buildPartial();
+          } else {
+            effectiveCapabilities_ = value;
+          }
+          onChanged();
+        } else {
+          effectiveCapabilitiesBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CapabilityInfo effective_capabilities = 3;</code>
+       *
+       * <pre>
+       * Represents the set of capabilities that the task will
+       * be executed with.
+       * </pre>
+       */
+      public Builder clearEffectiveCapabilities() {
+        if (effectiveCapabilitiesBuilder_ == null) {
+          effectiveCapabilities_ = org.apache.mesos.Protos.CapabilityInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          effectiveCapabilitiesBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CapabilityInfo effective_capabilities = 3;</code>
+       *
+       * <pre>
+       * Represents the set of capabilities that the task will
+       * be executed with.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.CapabilityInfo.Builder getEffectiveCapabilitiesBuilder() {
+        bitField0_ |= 0x00000004;
+        onChanged();
+        return getEffectiveCapabilitiesFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.CapabilityInfo effective_capabilities = 3;</code>
+       *
+       * <pre>
+       * Represents the set of capabilities that the task will
+       * be executed with.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.CapabilityInfoOrBuilder getEffectiveCapabilitiesOrBuilder() {
+        if (effectiveCapabilitiesBuilder_ != null) {
+          return effectiveCapabilitiesBuilder_.getMessageOrBuilder();
+        } else {
+          return effectiveCapabilities_;
+        }
+      }
+      /**
+       * <code>optional .mesos.CapabilityInfo effective_capabilities = 3;</code>
+       *
+       * <pre>
+       * Represents the set of capabilities that the task will
+       * be executed with.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.CapabilityInfo, org.apache.mesos.Protos.CapabilityInfo.Builder, org.apache.mesos.Protos.CapabilityInfoOrBuilder> 
+          getEffectiveCapabilitiesFieldBuilder() {
+        if (effectiveCapabilitiesBuilder_ == null) {
+          effectiveCapabilitiesBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.CapabilityInfo, org.apache.mesos.Protos.CapabilityInfo.Builder, org.apache.mesos.Protos.CapabilityInfoOrBuilder>(
+                  effectiveCapabilities_,
+                  getParentForChildren(),
+                  isClean());
+          effectiveCapabilities_ = null;
+        }
+        return effectiveCapabilitiesBuilder_;
+      }
+
+      // optional bool share_pid_namespace = 4;
+      private boolean sharePidNamespace_ ;
+      /**
+       * <code>optional bool share_pid_namespace = 4;</code>
+       *
+       * <pre>
+       * If set as 'true', the container shares the pid namespace with
+       * its parent. If the container is a top level container, it will
+       * share the pid namespace with the agent. If the container is a
+       * nested container, it will share the pid namespace with its
+       * parent container. This field will be ignored if 'namespaces/pid'
+       * isolator is not enabled.
+       * </pre>
+       */
+      public boolean hasSharePidNamespace() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional bool share_pid_namespace = 4;</code>
+       *
+       * <pre>
+       * If set as 'true', the container shares the pid namespace with
+       * its parent. If the container is a top level container, it will
+       * share the pid namespace with the agent. If the container is a
+       * nested container, it will share the pid namespace with its
+       * parent container. This field will be ignored if 'namespaces/pid'
+       * isolator is not enabled.
+       * </pre>
+       */
+      public boolean getSharePidNamespace() {
+        return sharePidNamespace_;
+      }
+      /**
+       * <code>optional bool share_pid_namespace = 4;</code>
+       *
+       * <pre>
+       * If set as 'true', the container shares the pid namespace with
+       * its parent. If the container is a top level container, it will
+       * share the pid namespace with the agent. If the container is a
+       * nested container, it will share the pid namespace with its
+       * parent container. This field will be ignored if 'namespaces/pid'
+       * isolator is not enabled.
+       * </pre>
+       */
+      public Builder setSharePidNamespace(boolean value) {
+        bitField0_ |= 0x00000008;
+        sharePidNamespace_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional bool share_pid_namespace = 4;</code>
+       *
+       * <pre>
+       * If set as 'true', the container shares the pid namespace with
+       * its parent. If the container is a top level container, it will
+       * share the pid namespace with the agent. If the container is a
+       * nested container, it will share the pid namespace with its
+       * parent container. This field will be ignored if 'namespaces/pid'
+       * isolator is not enabled.
+       * </pre>
+       */
+      public Builder clearSharePidNamespace() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        sharePidNamespace_ = false;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.LinuxInfo)
+    }
+
+    static {
+      defaultInstance = new LinuxInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.LinuxInfo)
+  }
+
+  public interface RLimitInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // repeated .mesos.RLimitInfo.RLimit rlimits = 1;
+    /**
+     * <code>repeated .mesos.RLimitInfo.RLimit rlimits = 1;</code>
+     */
+    java.util.List<org.apache.mesos.Protos.RLimitInfo.RLimit> 
+        getRlimitsList();
+    /**
+     * <code>repeated .mesos.RLimitInfo.RLimit rlimits = 1;</code>
+     */
+    org.apache.mesos.Protos.RLimitInfo.RLimit getRlimits(int index);
+    /**
+     * <code>repeated .mesos.RLimitInfo.RLimit rlimits = 1;</code>
+     */
+    int getRlimitsCount();
+    /**
+     * <code>repeated .mesos.RLimitInfo.RLimit rlimits = 1;</code>
+     */
+    java.util.List<? extends org.apache.mesos.Protos.RLimitInfo.RLimitOrBuilder> 
+        getRlimitsOrBuilderList();
+    /**
+     * <code>repeated .mesos.RLimitInfo.RLimit rlimits = 1;</code>
+     */
+    org.apache.mesos.Protos.RLimitInfo.RLimitOrBuilder getRlimitsOrBuilder(
+        int index);
+  }
+  /**
+   * Protobuf type {@code mesos.RLimitInfo}
+   *
+   * <pre>
+   **
+   * Encapsulation for POSIX rlimits, see
+   * http://pubs.opengroup.org/onlinepubs/009695399/functions/getrlimit.html.
+   * Note that some types might only be defined for Linux.
+   * We use a custom prefix to avoid conflict with existing system macros
+   * (e.g., `RLIMIT_CPU` or `NOFILE`).
+   * </pre>
+   */
+  public static final class RLimitInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements RLimitInfoOrBuilder {
+    // Use RLimitInfo.newBuilder() to construct.
+    private RLimitInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private RLimitInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final RLimitInfo defaultInstance;
+    public static RLimitInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public RLimitInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private RLimitInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                rlimits_ = new java.util.ArrayList<org.apache.mesos.Protos.RLimitInfo.RLimit>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              rlimits_.add(input.readMessage(org.apache.mesos.Protos.RLimitInfo.RLimit.PARSER, extensionRegistry));
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+          rlimits_ = java.util.Collections.unmodifiableList(rlimits_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_RLimitInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_RLimitInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.RLimitInfo.class, org.apache.mesos.Protos.RLimitInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<RLimitInfo> PARSER =
+        new com.google.protobuf.AbstractParser<RLimitInfo>() {
+      public RLimitInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new RLimitInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<RLimitInfo> getParserForType() {
+      return PARSER;
+    }
+
+    public interface RLimitOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // optional .mesos.RLimitInfo.RLimit.Type type = 1;
+      /**
+       * <code>optional .mesos.RLimitInfo.RLimit.Type type = 1;</code>
+       */
+      boolean hasType();
+      /**
+       * <code>optional .mesos.RLimitInfo.RLimit.Type type = 1;</code>
+       */
+      org.apache.mesos.Protos.RLimitInfo.RLimit.Type getType();
+
+      // optional uint64 hard = 2;
+      /**
+       * <code>optional uint64 hard = 2;</code>
+       *
+       * <pre>
+       * Either both are set or both are not set.
+       * If both are not set, it represents unlimited.
+       * If both are set, we require `soft` &lt;= `hard`.
+       * </pre>
+       */
+      boolean hasHard();
+      /**
+       * <code>optional uint64 hard = 2;</code>
+       *
+       * <pre>
+       * Either both are set or both are not set.
+       * If both are not set, it represents unlimited.
+       * If both are set, we require `soft` &lt;= `hard`.
+       * </pre>
+       */
+      long getHard();
+
+      // optional uint64 soft = 3;
+      /**
+       * <code>optional uint64 soft = 3;</code>
+       */
+      boolean hasSoft();
+      /**
+       * <code>optional uint64 soft = 3;</code>
+       */
+      long getSoft();
+    }
+    /**
+     * Protobuf type {@code mesos.RLimitInfo.RLimit}
+     */
+    public static final class RLimit extends
+        com.google.protobuf.GeneratedMessage
+        implements RLimitOrBuilder {
+      // Use RLimit.newBuilder() to construct.
+      private RLimit(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private RLimit(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final RLimit defaultInstance;
+      public static RLimit getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public RLimit getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private RLimit(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 8: {
+                int rawValue = input.readEnum();
+                org.apache.mesos.Protos.RLimitInfo.RLimit.Type value = org.apache.mesos.Protos.RLimitInfo.RLimit.Type.valueOf(rawValue);
+                if (value == null) {
+                  unknownFields.mergeVarintField(1, rawValue);
+                } else {
+                  bitField0_ |= 0x00000001;
+                  type_ = value;
+                }
+                break;
+              }
+              case 16: {
+                bitField0_ |= 0x00000002;
+                hard_ = input.readUInt64();
+                break;
+              }
+              case 24: {
+                bitField0_ |= 0x00000004;
+                soft_ = input.readUInt64();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_RLimitInfo_RLimit_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_RLimitInfo_RLimit_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.RLimitInfo.RLimit.class, org.apache.mesos.Protos.RLimitInfo.RLimit.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<RLimit> PARSER =
+          new com.google.protobuf.AbstractParser<RLimit>() {
+        public RLimit parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new RLimit(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<RLimit> getParserForType() {
+        return PARSER;
+      }
+
+      /**
+       * Protobuf enum {@code mesos.RLimitInfo.RLimit.Type}
+       */
+      public enum Type
+          implements com.google.protobuf.ProtocolMessageEnum {
+        /**
+         * <code>UNKNOWN = 0;</code>
+         */
+        UNKNOWN(0, 0),
+        /**
+         * <code>RLMT_AS = 1;</code>
+         */
+        RLMT_AS(1, 1),
+        /**
+         * <code>RLMT_CORE = 2;</code>
+         */
+        RLMT_CORE(2, 2),
+        /**
+         * <code>RLMT_CPU = 3;</code>
+         */
+        RLMT_CPU(3, 3),
+        /**
+         * <code>RLMT_DATA = 4;</code>
+         */
+        RLMT_DATA(4, 4),
+        /**
+         * <code>RLMT_FSIZE = 5;</code>
+         */
+        RLMT_FSIZE(5, 5),
+        /**
+         * <code>RLMT_LOCKS = 6;</code>
+         */
+        RLMT_LOCKS(6, 6),
+        /**
+         * <code>RLMT_MEMLOCK = 7;</code>
+         */
+        RLMT_MEMLOCK(7, 7),
+        /**
+         * <code>RLMT_MSGQUEUE = 8;</code>
+         */
+        RLMT_MSGQUEUE(8, 8),
+        /**
+         * <code>RLMT_NICE = 9;</code>
+         */
+        RLMT_NICE(9, 9),
+        /**
+         * <code>RLMT_NOFILE = 10;</code>
+         */
+        RLMT_NOFILE(10, 10),
+        /**
+         * <code>RLMT_NPROC = 11;</code>
+         */
+        RLMT_NPROC(11, 11),
+        /**
+         * <code>RLMT_RSS = 12;</code>
+         */
+        RLMT_RSS(12, 12),
+        /**
+         * <code>RLMT_RTPRIO = 13;</code>
+         */
+        RLMT_RTPRIO(13, 13),
+        /**
+         * <code>RLMT_RTTIME = 14;</code>
+         */
+        RLMT_RTTIME(14, 14),
+        /**
+         * <code>RLMT_SIGPENDING = 15;</code>
+         */
+        RLMT_SIGPENDING(15, 15),
+        /**
+         * <code>RLMT_STACK = 16;</code>
+         */
+        RLMT_STACK(16, 16),
+        ;
+
+        /**
+         * <code>UNKNOWN = 0;</code>
+         */
+        public static final int UNKNOWN_VALUE = 0;
+        /**
+         * <code>RLMT_AS = 1;</code>
+         */
+        public static final int RLMT_AS_VALUE = 1;
+        /**
+         * <code>RLMT_CORE = 2;</code>
+         */
+        public static final int RLMT_CORE_VALUE = 2;
+        /**
+         * <code>RLMT_CPU = 3;</code>
+         */
+        public static final int RLMT_CPU_VALUE = 3;
+        /**
+         * <code>RLMT_DATA = 4;</code>
+         */
+        public static final int RLMT_DATA_VALUE = 4;
+        /**
+         * <code>RLMT_FSIZE = 5;</code>
+         */
+        public static final int RLMT_FSIZE_VALUE = 5;
+        /**
+         * <code>RLMT_LOCKS = 6;</code>
+         */
+        public static final int RLMT_LOCKS_VALUE = 6;
+        /**
+         * <code>RLMT_MEMLOCK = 7;</code>
+         */
+        public static final int RLMT_MEMLOCK_VALUE = 7;
+        /**
+         * <code>RLMT_MSGQUEUE = 8;</code>
+         */
+        public static final int RLMT_MSGQUEUE_VALUE = 8;
+        /**
+         * <code>RLMT_NICE = 9;</code>
+         */
+        public static final int RLMT_NICE_VALUE = 9;
+        /**
+         * <code>RLMT_NOFILE = 10;</code>
+         */
+        public static final int RLMT_NOFILE_VALUE = 10;
+        /**
+         * <code>RLMT_NPROC = 11;</code>
+         */
+        public static final int RLMT_NPROC_VALUE = 11;
+        /**
+         * <code>RLMT_RSS = 12;</code>
+         */
+        public static final int RLMT_RSS_VALUE = 12;
+        /**
+         * <code>RLMT_RTPRIO = 13;</code>
+         */
+        public static final int RLMT_RTPRIO_VALUE = 13;
+        /**
+         * <code>RLMT_RTTIME = 14;</code>
+         */
+        public static final int RLMT_RTTIME_VALUE = 14;
+        /**
+         * <code>RLMT_SIGPENDING = 15;</code>
+         */
+        public static final int RLMT_SIGPENDING_VALUE = 15;
+        /**
+         * <code>RLMT_STACK = 16;</code>
+         */
+        public static final int RLMT_STACK_VALUE = 16;
+
+
+        public final int getNumber() { return value; }
+
+        public static Type valueOf(int value) {
+          switch (value) {
+            case 0: return UNKNOWN;
+            case 1: return RLMT_AS;
+            case 2: return RLMT_CORE;
+            case 3: return RLMT_CPU;
+            case 4: return RLMT_DATA;
+            case 5: return RLMT_FSIZE;
+            case 6: return RLMT_LOCKS;
+            case 7: return RLMT_MEMLOCK;
+            case 8: return RLMT_MSGQUEUE;
+            case 9: return RLMT_NICE;
+            case 10: return RLMT_NOFILE;
+            case 11: return RLMT_NPROC;
+            case 12: return RLMT_RSS;
+            case 13: return RLMT_RTPRIO;
+            case 14: return RLMT_RTTIME;
+            case 15: return RLMT_SIGPENDING;
+            case 16: return RLMT_STACK;
+            default: return null;
+          }
+        }
+
+        public static com.google.protobuf.Internal.EnumLiteMap<Type>
+            internalGetValueMap() {
+          return internalValueMap;
+        }
+        private static com.google.protobuf.Internal.EnumLiteMap<Type>
+            internalValueMap =
+              new com.google.protobuf.Internal.EnumLiteMap<Type>() {
+                public Type findValueByNumber(int number) {
+                  return Type.valueOf(number);
+                }
+              };
+
+        public final com.google.protobuf.Descriptors.EnumValueDescriptor
+            getValueDescriptor() {
+          return getDescriptor().getValues().get(index);
+        }
+        public final com.google.protobuf.Descriptors.EnumDescriptor
+            getDescriptorForType() {
+          return getDescriptor();
+        }
+        public static final com.google.protobuf.Descriptors.EnumDescriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.RLimitInfo.RLimit.getDescriptor().getEnumTypes().get(0);
+        }
+
+        private static final Type[] VALUES = values();
+
+        public static Type valueOf(
+            com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+          if (desc.getType() != getDescriptor()) {
+            throw new java.lang.IllegalArgumentException(
+              "EnumValueDescriptor is not for this type.");
+          }
+          return VALUES[desc.getIndex()];
+        }
+
+        private final int index;
+        private final int value;
+
+        private Type(int index, int value) {
+          this.index = index;
+          this.value = value;
+        }
+
+        // @@protoc_insertion_point(enum_scope:mesos.RLimitInfo.RLimit.Type)
+      }
+
+      private int bitField0_;
+      // optional .mesos.RLimitInfo.RLimit.Type type = 1;
+      public static final int TYPE_FIELD_NUMBER = 1;
+      private org.apache.mesos.Protos.RLimitInfo.RLimit.Type type_;
+      /**
+       * <code>optional .mesos.RLimitInfo.RLimit.Type type = 1;</code>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.RLimitInfo.RLimit.Type type = 1;</code>
+       */
+      public org.apache.mesos.Protos.RLimitInfo.RLimit.Type getType() {
+        return type_;
+      }
+
+      // optional uint64 hard = 2;
+      public static final int HARD_FIELD_NUMBER = 2;
+      private long hard_;
+      /**
+       * <code>optional uint64 hard = 2;</code>
+       *
+       * <pre>
+       * Either both are set or both are not set.
+       * If both are not set, it represents unlimited.
+       * If both are set, we require `soft` &lt;= `hard`.
+       * </pre>
+       */
+      public boolean hasHard() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional uint64 hard = 2;</code>
+       *
+       * <pre>
+       * Either both are set or both are not set.
+       * If both are not set, it represents unlimited.
+       * If both are set, we require `soft` &lt;= `hard`.
+       * </pre>
+       */
+      public long getHard() {
+        return hard_;
+      }
+
+      // optional uint64 soft = 3;
+      public static final int SOFT_FIELD_NUMBER = 3;
+      private long soft_;
+      /**
+       * <code>optional uint64 soft = 3;</code>
+       */
+      public boolean hasSoft() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional uint64 soft = 3;</code>
+       */
+      public long getSoft() {
+        return soft_;
+      }
+
+      private void initFields() {
+        type_ = org.apache.mesos.Protos.RLimitInfo.RLimit.Type.UNKNOWN;
+        hard_ = 0L;
+        soft_ = 0L;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeEnum(1, type_.getNumber());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeUInt64(2, hard_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeUInt64(3, soft_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeEnumSize(1, type_.getNumber());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeUInt64Size(2, hard_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeUInt64Size(3, soft_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.Protos.RLimitInfo.RLimit parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.RLimitInfo.RLimit parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.RLimitInfo.RLimit parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.RLimitInfo.RLimit parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.RLimitInfo.RLimit parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.RLimitInfo.RLimit parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.RLimitInfo.RLimit parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.Protos.RLimitInfo.RLimit parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.RLimitInfo.RLimit parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.RLimitInfo.RLimit parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.Protos.RLimitInfo.RLimit prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.RLimitInfo.RLimit}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.Protos.RLimitInfo.RLimitOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_RLimitInfo_RLimit_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_RLimitInfo_RLimit_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.RLimitInfo.RLimit.class, org.apache.mesos.Protos.RLimitInfo.RLimit.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.Protos.RLimitInfo.RLimit.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          type_ = org.apache.mesos.Protos.RLimitInfo.RLimit.Type.UNKNOWN;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          hard_ = 0L;
+          bitField0_ = (bitField0_ & ~0x00000002);
+          soft_ = 0L;
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.Protos.internal_static_mesos_RLimitInfo_RLimit_descriptor;
+        }
+
+        public org.apache.mesos.Protos.RLimitInfo.RLimit getDefaultInstanceForType() {
+          return org.apache.mesos.Protos.RLimitInfo.RLimit.getDefaultInstance();
+        }
+
+        public org.apache.mesos.Protos.RLimitInfo.RLimit build() {
+          org.apache.mesos.Protos.RLimitInfo.RLimit result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.Protos.RLimitInfo.RLimit buildPartial() {
+          org.apache.mesos.Protos.RLimitInfo.RLimit result = new org.apache.mesos.Protos.RLimitInfo.RLimit(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.type_ = type_;
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          result.hard_ = hard_;
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          result.soft_ = soft_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.Protos.RLimitInfo.RLimit) {
+            return mergeFrom((org.apache.mesos.Protos.RLimitInfo.RLimit)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.Protos.RLimitInfo.RLimit other) {
+          if (other == org.apache.mesos.Protos.RLimitInfo.RLimit.getDefaultInstance()) return this;
+          if (other.hasType()) {
+            setType(other.getType());
+          }
+          if (other.hasHard()) {
+            setHard(other.getHard());
+          }
+          if (other.hasSoft()) {
+            setSoft(other.getSoft());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.Protos.RLimitInfo.RLimit parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.Protos.RLimitInfo.RLimit) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // optional .mesos.RLimitInfo.RLimit.Type type = 1;
+        private org.apache.mesos.Protos.RLimitInfo.RLimit.Type type_ = org.apache.mesos.Protos.RLimitInfo.RLimit.Type.UNKNOWN;
+        /**
+         * <code>optional .mesos.RLimitInfo.RLimit.Type type = 1;</code>
+         */
+        public boolean hasType() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional .mesos.RLimitInfo.RLimit.Type type = 1;</code>
+         */
+        public org.apache.mesos.Protos.RLimitInfo.RLimit.Type getType() {
+          return type_;
+        }
+        /**
+         * <code>optional .mesos.RLimitInfo.RLimit.Type type = 1;</code>
+         */
+        public Builder setType(org.apache.mesos.Protos.RLimitInfo.RLimit.Type value) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          bitField0_ |= 0x00000001;
+          type_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional .mesos.RLimitInfo.RLimit.Type type = 1;</code>
+         */
+        public Builder clearType() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          type_ = org.apache.mesos.Protos.RLimitInfo.RLimit.Type.UNKNOWN;
+          onChanged();
+          return this;
+        }
+
+        // optional uint64 hard = 2;
+        private long hard_ ;
+        /**
+         * <code>optional uint64 hard = 2;</code>
+         *
+         * <pre>
+         * Either both are set or both are not set.
+         * If both are not set, it represents unlimited.
+         * If both are set, we require `soft` &lt;= `hard`.
+         * </pre>
+         */
+        public boolean hasHard() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional uint64 hard = 2;</code>
+         *
+         * <pre>
+         * Either both are set or both are not set.
+         * If both are not set, it represents unlimited.
+         * If both are set, we require `soft` &lt;= `hard`.
+         * </pre>
+         */
+        public long getHard() {
+          return hard_;
+        }
+        /**
+         * <code>optional uint64 hard = 2;</code>
+         *
+         * <pre>
+         * Either both are set or both are not set.
+         * If both are not set, it represents unlimited.
+         * If both are set, we require `soft` &lt;= `hard`.
+         * </pre>
+         */
+        public Builder setHard(long value) {
+          bitField0_ |= 0x00000002;
+          hard_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional uint64 hard = 2;</code>
+         *
+         * <pre>
+         * Either both are set or both are not set.
+         * If both are not set, it represents unlimited.
+         * If both are set, we require `soft` &lt;= `hard`.
+         * </pre>
+         */
+        public Builder clearHard() {
+          bitField0_ = (bitField0_ & ~0x00000002);
+          hard_ = 0L;
+          onChanged();
+          return this;
+        }
+
+        // optional uint64 soft = 3;
+        private long soft_ ;
+        /**
+         * <code>optional uint64 soft = 3;</code>
+         */
+        public boolean hasSoft() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional uint64 soft = 3;</code>
+         */
+        public long getSoft() {
+          return soft_;
+        }
+        /**
+         * <code>optional uint64 soft = 3;</code>
+         */
+        public Builder setSoft(long value) {
+          bitField0_ |= 0x00000004;
+          soft_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional uint64 soft = 3;</code>
+         */
+        public Builder clearSoft() {
+          bitField0_ = (bitField0_ & ~0x00000004);
+          soft_ = 0L;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.RLimitInfo.RLimit)
+      }
+
+      static {
+        defaultInstance = new RLimit(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.RLimitInfo.RLimit)
+    }
+
+    // repeated .mesos.RLimitInfo.RLimit rlimits = 1;
+    public static final int RLIMITS_FIELD_NUMBER = 1;
+    private java.util.List<org.apache.mesos.Protos.RLimitInfo.RLimit> rlimits_;
+    /**
+     * <code>repeated .mesos.RLimitInfo.RLimit rlimits = 1;</code>
+     */
+    public java.util.List<org.apache.mesos.Protos.RLimitInfo.RLimit> getRlimitsList() {
+      return rlimits_;
+    }
+    /**
+     * <code>repeated .mesos.RLimitInfo.RLimit rlimits = 1;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.Protos.RLimitInfo.RLimitOrBuilder> 
+        getRlimitsOrBuilderList() {
+      return rlimits_;
+    }
+    /**
+     * <code>repeated .mesos.RLimitInfo.RLimit rlimits = 1;</code>
+     */
+    public int getRlimitsCount() {
+      return rlimits_.size();
+    }
+    /**
+     * <code>repeated .mesos.RLimitInfo.RLimit rlimits = 1;</code>
+     */
+    public org.apache.mesos.Protos.RLimitInfo.RLimit getRlimits(int index) {
+      return rlimits_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.RLimitInfo.RLimit rlimits = 1;</code>
+     */
+    public org.apache.mesos.Protos.RLimitInfo.RLimitOrBuilder getRlimitsOrBuilder(
+        int index) {
+      return rlimits_.get(index);
+    }
+
+    private void initFields() {
+      rlimits_ = java.util.Collections.emptyList();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      for (int i = 0; i < rlimits_.size(); i++) {
+        output.writeMessage(1, rlimits_.get(i));
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      for (int i = 0; i < rlimits_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, rlimits_.get(i));
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.RLimitInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.RLimitInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.RLimitInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.RLimitInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.RLimitInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.RLimitInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.RLimitInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.RLimitInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.RLimitInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.RLimitInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.RLimitInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.RLimitInfo}
+     *
+     * <pre>
+     **
+     * Encapsulation for POSIX rlimits, see
+     * http://pubs.opengroup.org/onlinepubs/009695399/functions/getrlimit.html.
+     * Note that some types might only be defined for Linux.
+     * We use a custom prefix to avoid conflict with existing system macros
+     * (e.g., `RLIMIT_CPU` or `NOFILE`).
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.RLimitInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_RLimitInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_RLimitInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.RLimitInfo.class, org.apache.mesos.Protos.RLimitInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.RLimitInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getRlimitsFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (rlimitsBuilder_ == null) {
+          rlimits_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+        } else {
+          rlimitsBuilder_.clear();
+        }
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_RLimitInfo_descriptor;
+      }
+
+      public org.apache.mesos.Protos.RLimitInfo getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.RLimitInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.RLimitInfo build() {
+        org.apache.mesos.Protos.RLimitInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.RLimitInfo buildPartial() {
+        org.apache.mesos.Protos.RLimitInfo result = new org.apache.mesos.Protos.RLimitInfo(this);
+        int from_bitField0_ = bitField0_;
+        if (rlimitsBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            rlimits_ = java.util.Collections.unmodifiableList(rlimits_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.rlimits_ = rlimits_;
+        } else {
+          result.rlimits_ = rlimitsBuilder_.build();
+        }
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.RLimitInfo) {
+          return mergeFrom((org.apache.mesos.Protos.RLimitInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.RLimitInfo other) {
+        if (other == org.apache.mesos.Protos.RLimitInfo.getDefaultInstance()) return this;
+        if (rlimitsBuilder_ == null) {
+          if (!other.rlimits_.isEmpty()) {
+            if (rlimits_.isEmpty()) {
+              rlimits_ = other.rlimits_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureRlimitsIsMutable();
+              rlimits_.addAll(other.rlimits_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.rlimits_.isEmpty()) {
+            if (rlimitsBuilder_.isEmpty()) {
+              rlimitsBuilder_.dispose();
+              rlimitsBuilder_ = null;
+              rlimits_ = other.rlimits_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              rlimitsBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getRlimitsFieldBuilder() : null;
+            } else {
+              rlimitsBuilder_.addAllMessages(other.rlimits_);
+            }
+          }
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.RLimitInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.RLimitInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // repeated .mesos.RLimitInfo.RLimit rlimits = 1;
+      private java.util.List<org.apache.mesos.Protos.RLimitInfo.RLimit> rlimits_ =
+        java.util.Collections.emptyList();
+      private void ensureRlimitsIsMutable() {
+        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+          rlimits_ = new java.util.ArrayList<org.apache.mesos.Protos.RLimitInfo.RLimit>(rlimits_);
+          bitField0_ |= 0x00000001;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.RLimitInfo.RLimit, org.apache.mesos.Protos.RLimitInfo.RLimit.Builder, org.apache.mesos.Protos.RLimitInfo.RLimitOrBuilder> rlimitsBuilder_;
+
+      /**
+       * <code>repeated .mesos.RLimitInfo.RLimit rlimits = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.RLimitInfo.RLimit> getRlimitsList() {
+        if (rlimitsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(rlimits_);
+        } else {
+          return rlimitsBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.RLimitInfo.RLimit rlimits = 1;</code>
+       */
+      public int getRlimitsCount() {
+        if (rlimitsBuilder_ == null) {
+          return rlimits_.size();
+        } else {
+          return rlimitsBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.RLimitInfo.RLimit rlimits = 1;</code>
+       */
+      public org.apache.mesos.Protos.RLimitInfo.RLimit getRlimits(int index) {
+        if (rlimitsBuilder_ == null) {
+          return rlimits_.get(index);
+        } else {
+          return rlimitsBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.RLimitInfo.RLimit rlimits = 1;</code>
+       */
+      public Builder setRlimits(
+          int index, org.apache.mesos.Protos.RLimitInfo.RLimit value) {
+        if (rlimitsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureRlimitsIsMutable();
+          rlimits_.set(index, value);
+          onChanged();
+        } else {
+          rlimitsBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.RLimitInfo.RLimit rlimits = 1;</code>
+       */
+      public Builder setRlimits(
+          int index, org.apache.mesos.Protos.RLimitInfo.RLimit.Builder builderForValue) {
+        if (rlimitsBuilder_ == null) {
+          ensureRlimitsIsMutable();
+          rlimits_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          rlimitsBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.RLimitInfo.RLimit rlimits = 1;</code>
+       */
+      public Builder addRlimits(org.apache.mesos.Protos.RLimitInfo.RLimit value) {
+        if (rlimitsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureRlimitsIsMutable();
+          rlimits_.add(value);
+          onChanged();
+        } else {
+          rlimitsBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.RLimitInfo.RLimit rlimits = 1;</code>
+       */
+      public Builder addRlimits(
+          int index, org.apache.mesos.Protos.RLimitInfo.RLimit value) {
+        if (rlimitsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureRlimitsIsMutable();
+          rlimits_.add(index, value);
+          onChanged();
+        } else {
+          rlimitsBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.RLimitInfo.RLimit rlimits = 1;</code>
+       */
+      public Builder addRlimits(
+          org.apache.mesos.Protos.RLimitInfo.RLimit.Builder builderForValue) {
+        if (rlimitsBuilder_ == null) {
+          ensureRlimitsIsMutable();
+          rlimits_.add(builderForValue.build());
+          onChanged();
+        } else {
+          rlimitsBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.RLimitInfo.RLimit rlimits = 1;</code>
+       */
+      public Builder addRlimits(
+          int index, org.apache.mesos.Protos.RLimitInfo.RLimit.Builder builderForValue) {
+        if (rlimitsBuilder_ == null) {
+          ensureRlimitsIsMutable();
+          rlimits_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          rlimitsBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.RLimitInfo.RLimit rlimits = 1;</code>
+       */
+      public Builder addAllRlimits(
+          java.lang.Iterable<? extends org.apache.mesos.Protos.RLimitInfo.RLimit> values) {
+        if (rlimitsBuilder_ == null) {
+          ensureRlimitsIsMutable();
+          super.addAll(values, rlimits_);
+          onChanged();
+        } else {
+          rlimitsBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.RLimitInfo.RLimit rlimits = 1;</code>
+       */
+      public Builder clearRlimits() {
+        if (rlimitsBuilder_ == null) {
+          rlimits_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+        } else {
+          rlimitsBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.RLimitInfo.RLimit rlimits = 1;</code>
+       */
+      public Builder removeRlimits(int index) {
+        if (rlimitsBuilder_ == null) {
+          ensureRlimitsIsMutable();
+          rlimits_.remove(index);
+          onChanged();
+        } else {
+          rlimitsBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.RLimitInfo.RLimit rlimits = 1;</code>
+       */
+      public org.apache.mesos.Protos.RLimitInfo.RLimit.Builder getRlimitsBuilder(
+          int index) {
+        return getRlimitsFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.RLimitInfo.RLimit rlimits = 1;</code>
+       */
+      public org.apache.mesos.Protos.RLimitInfo.RLimitOrBuilder getRlimitsOrBuilder(
+          int index) {
+        if (rlimitsBuilder_ == null) {
+          return rlimits_.get(index);  } else {
+          return rlimitsBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.RLimitInfo.RLimit rlimits = 1;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.RLimitInfo.RLimitOrBuilder> 
+           getRlimitsOrBuilderList() {
+        if (rlimitsBuilder_ != null) {
+          return rlimitsBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(rlimits_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.RLimitInfo.RLimit rlimits = 1;</code>
+       */
+      public org.apache.mesos.Protos.RLimitInfo.RLimit.Builder addRlimitsBuilder() {
+        return getRlimitsFieldBuilder().addBuilder(
+            org.apache.mesos.Protos.RLimitInfo.RLimit.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.RLimitInfo.RLimit rlimits = 1;</code>
+       */
+      public org.apache.mesos.Protos.RLimitInfo.RLimit.Builder addRlimitsBuilder(
+          int index) {
+        return getRlimitsFieldBuilder().addBuilder(
+            index, org.apache.mesos.Protos.RLimitInfo.RLimit.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.RLimitInfo.RLimit rlimits = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.RLimitInfo.RLimit.Builder> 
+           getRlimitsBuilderList() {
+        return getRlimitsFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.RLimitInfo.RLimit, org.apache.mesos.Protos.RLimitInfo.RLimit.Builder, org.apache.mesos.Protos.RLimitInfo.RLimitOrBuilder> 
+          getRlimitsFieldBuilder() {
+        if (rlimitsBuilder_ == null) {
+          rlimitsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.RLimitInfo.RLimit, org.apache.mesos.Protos.RLimitInfo.RLimit.Builder, org.apache.mesos.Protos.RLimitInfo.RLimitOrBuilder>(
+                  rlimits_,
+                  ((bitField0_ & 0x00000001) == 0x00000001),
+                  getParentForChildren(),
+                  isClean());
+          rlimits_ = null;
+        }
+        return rlimitsBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.RLimitInfo)
+    }
+
+    static {
+      defaultInstance = new RLimitInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.RLimitInfo)
+  }
+
+  public interface TTYInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional .mesos.TTYInfo.WindowSize window_size = 1;
+    /**
+     * <code>optional .mesos.TTYInfo.WindowSize window_size = 1;</code>
+     */
+    boolean hasWindowSize();
+    /**
+     * <code>optional .mesos.TTYInfo.WindowSize window_size = 1;</code>
+     */
+    org.apache.mesos.Protos.TTYInfo.WindowSize getWindowSize();
+    /**
+     * <code>optional .mesos.TTYInfo.WindowSize window_size = 1;</code>
+     */
+    org.apache.mesos.Protos.TTYInfo.WindowSizeOrBuilder getWindowSizeOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.TTYInfo}
+   *
+   * <pre>
+   **
+   * Describes the information about (pseudo) TTY that can
+   * be attached to a process running in a container.
+   * </pre>
+   */
+  public static final class TTYInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements TTYInfoOrBuilder {
+    // Use TTYInfo.newBuilder() to construct.
+    private TTYInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private TTYInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final TTYInfo defaultInstance;
+    public static TTYInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public TTYInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private TTYInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              org.apache.mesos.Protos.TTYInfo.WindowSize.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                subBuilder = windowSize_.toBuilder();
+              }
+              windowSize_ = input.readMessage(org.apache.mesos.Protos.TTYInfo.WindowSize.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(windowSize_);
+                windowSize_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_TTYInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_TTYInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.TTYInfo.class, org.apache.mesos.Protos.TTYInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<TTYInfo> PARSER =
+        new com.google.protobuf.AbstractParser<TTYInfo>() {
+      public TTYInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new TTYInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<TTYInfo> getParserForType() {
+      return PARSER;
+    }
+
+    public interface WindowSizeOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required uint32 rows = 1;
+      /**
+       * <code>required uint32 rows = 1;</code>
+       */
+      boolean hasRows();
+      /**
+       * <code>required uint32 rows = 1;</code>
+       */
+      int getRows();
+
+      // required uint32 columns = 2;
+      /**
+       * <code>required uint32 columns = 2;</code>
+       */
+      boolean hasColumns();
+      /**
+       * <code>required uint32 columns = 2;</code>
+       */
+      int getColumns();
+    }
+    /**
+     * Protobuf type {@code mesos.TTYInfo.WindowSize}
+     */
+    public static final class WindowSize extends
+        com.google.protobuf.GeneratedMessage
+        implements WindowSizeOrBuilder {
+      // Use WindowSize.newBuilder() to construct.
+      private WindowSize(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private WindowSize(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final WindowSize defaultInstance;
+      public static WindowSize getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public WindowSize getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private WindowSize(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 8: {
+                bitField0_ |= 0x00000001;
+                rows_ = input.readUInt32();
+                break;
+              }
+              case 16: {
+                bitField0_ |= 0x00000002;
+                columns_ = input.readUInt32();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_TTYInfo_WindowSize_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_TTYInfo_WindowSize_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.TTYInfo.WindowSize.class, org.apache.mesos.Protos.TTYInfo.WindowSize.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<WindowSize> PARSER =
+          new com.google.protobuf.AbstractParser<WindowSize>() {
+        public WindowSize parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new WindowSize(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<WindowSize> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required uint32 rows = 1;
+      public static final int ROWS_FIELD_NUMBER = 1;
+      private int rows_;
+      /**
+       * <code>required uint32 rows = 1;</code>
+       */
+      public boolean hasRows() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required uint32 rows = 1;</code>
+       */
+      public int getRows() {
+        return rows_;
+      }
+
+      // required uint32 columns = 2;
+      public static final int COLUMNS_FIELD_NUMBER = 2;
+      private int columns_;
+      /**
+       * <code>required uint32 columns = 2;</code>
+       */
+      public boolean hasColumns() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required uint32 columns = 2;</code>
+       */
+      public int getColumns() {
+        return columns_;
+      }
+
+      private void initFields() {
+        rows_ = 0;
+        columns_ = 0;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasRows()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!hasColumns()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeUInt32(1, rows_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeUInt32(2, columns_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeUInt32Size(1, rows_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeUInt32Size(2, columns_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.Protos.TTYInfo.WindowSize parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.TTYInfo.WindowSize parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.TTYInfo.WindowSize parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.TTYInfo.WindowSize parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.TTYInfo.WindowSize parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.TTYInfo.WindowSize parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.TTYInfo.WindowSize parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.Protos.TTYInfo.WindowSize parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.TTYInfo.WindowSize parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.TTYInfo.WindowSize parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.Protos.TTYInfo.WindowSize prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.TTYInfo.WindowSize}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.Protos.TTYInfo.WindowSizeOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_TTYInfo_WindowSize_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_TTYInfo_WindowSize_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.TTYInfo.WindowSize.class, org.apache.mesos.Protos.TTYInfo.WindowSize.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.Protos.TTYInfo.WindowSize.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          rows_ = 0;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          columns_ = 0;
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.Protos.internal_static_mesos_TTYInfo_WindowSize_descriptor;
+        }
+
+        public org.apache.mesos.Protos.TTYInfo.WindowSize getDefaultInstanceForType() {
+          return org.apache.mesos.Protos.TTYInfo.WindowSize.getDefaultInstance();
+        }
+
+        public org.apache.mesos.Protos.TTYInfo.WindowSize build() {
+          org.apache.mesos.Protos.TTYInfo.WindowSize result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.Protos.TTYInfo.WindowSize buildPartial() {
+          org.apache.mesos.Protos.TTYInfo.WindowSize result = new org.apache.mesos.Protos.TTYInfo.WindowSize(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.rows_ = rows_;
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          result.columns_ = columns_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.Protos.TTYInfo.WindowSize) {
+            return mergeFrom((org.apache.mesos.Protos.TTYInfo.WindowSize)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.Protos.TTYInfo.WindowSize other) {
+          if (other == org.apache.mesos.Protos.TTYInfo.WindowSize.getDefaultInstance()) return this;
+          if (other.hasRows()) {
+            setRows(other.getRows());
+          }
+          if (other.hasColumns()) {
+            setColumns(other.getColumns());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasRows()) {
+            
+            return false;
+          }
+          if (!hasColumns()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.Protos.TTYInfo.WindowSize parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.Protos.TTYInfo.WindowSize) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required uint32 rows = 1;
+        private int rows_ ;
+        /**
+         * <code>required uint32 rows = 1;</code>
+         */
+        public boolean hasRows() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required uint32 rows = 1;</code>
+         */
+        public int getRows() {
+          return rows_;
+        }
+        /**
+         * <code>required uint32 rows = 1;</code>
+         */
+        public Builder setRows(int value) {
+          bitField0_ |= 0x00000001;
+          rows_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required uint32 rows = 1;</code>
+         */
+        public Builder clearRows() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          rows_ = 0;
+          onChanged();
+          return this;
+        }
+
+        // required uint32 columns = 2;
+        private int columns_ ;
+        /**
+         * <code>required uint32 columns = 2;</code>
+         */
+        public boolean hasColumns() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>required uint32 columns = 2;</code>
+         */
+        public int getColumns() {
+          return columns_;
+        }
+        /**
+         * <code>required uint32 columns = 2;</code>
+         */
+        public Builder setColumns(int value) {
+          bitField0_ |= 0x00000002;
+          columns_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required uint32 columns = 2;</code>
+         */
+        public Builder clearColumns() {
+          bitField0_ = (bitField0_ & ~0x00000002);
+          columns_ = 0;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.TTYInfo.WindowSize)
+      }
+
+      static {
+        defaultInstance = new WindowSize(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.TTYInfo.WindowSize)
+    }
+
+    private int bitField0_;
+    // optional .mesos.TTYInfo.WindowSize window_size = 1;
+    public static final int WINDOW_SIZE_FIELD_NUMBER = 1;
+    private org.apache.mesos.Protos.TTYInfo.WindowSize windowSize_;
+    /**
+     * <code>optional .mesos.TTYInfo.WindowSize window_size = 1;</code>
+     */
+    public boolean hasWindowSize() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional .mesos.TTYInfo.WindowSize window_size = 1;</code>
+     */
+    public org.apache.mesos.Protos.TTYInfo.WindowSize getWindowSize() {
+      return windowSize_;
+    }
+    /**
+     * <code>optional .mesos.TTYInfo.WindowSize window_size = 1;</code>
+     */
+    public org.apache.mesos.Protos.TTYInfo.WindowSizeOrBuilder getWindowSizeOrBuilder() {
+      return windowSize_;
+    }
+
+    private void initFields() {
+      windowSize_ = org.apache.mesos.Protos.TTYInfo.WindowSize.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (hasWindowSize()) {
+        if (!getWindowSize().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeMessage(1, windowSize_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, windowSize_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.TTYInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.TTYInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.TTYInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.TTYInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.TTYInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.TTYInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.TTYInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.TTYInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.TTYInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.TTYInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.TTYInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.TTYInfo}
+     *
+     * <pre>
+     **
+     * Describes the information about (pseudo) TTY that can
+     * be attached to a process running in a container.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.TTYInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_TTYInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_TTYInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.TTYInfo.class, org.apache.mesos.Protos.TTYInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.TTYInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getWindowSizeFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (windowSizeBuilder_ == null) {
+          windowSize_ = org.apache.mesos.Protos.TTYInfo.WindowSize.getDefaultInstance();
+        } else {
+          windowSizeBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_TTYInfo_descriptor;
+      }
+
+      public org.apache.mesos.Protos.TTYInfo getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.TTYInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.TTYInfo build() {
+        org.apache.mesos.Protos.TTYInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.TTYInfo buildPartial() {
+        org.apache.mesos.Protos.TTYInfo result = new org.apache.mesos.Protos.TTYInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        if (windowSizeBuilder_ == null) {
+          result.windowSize_ = windowSize_;
+        } else {
+          result.windowSize_ = windowSizeBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.TTYInfo) {
+          return mergeFrom((org.apache.mesos.Protos.TTYInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.TTYInfo other) {
+        if (other == org.apache.mesos.Protos.TTYInfo.getDefaultInstance()) return this;
+        if (other.hasWindowSize()) {
+          mergeWindowSize(other.getWindowSize());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (hasWindowSize()) {
+          if (!getWindowSize().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.TTYInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.TTYInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional .mesos.TTYInfo.WindowSize window_size = 1;
+      private org.apache.mesos.Protos.TTYInfo.WindowSize windowSize_ = org.apache.mesos.Protos.TTYInfo.WindowSize.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.TTYInfo.WindowSize, org.apache.mesos.Protos.TTYInfo.WindowSize.Builder, org.apache.mesos.Protos.TTYInfo.WindowSizeOrBuilder> windowSizeBuilder_;
+      /**
+       * <code>optional .mesos.TTYInfo.WindowSize window_size = 1;</code>
+       */
+      public boolean hasWindowSize() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.TTYInfo.WindowSize window_size = 1;</code>
+       */
+      public org.apache.mesos.Protos.TTYInfo.WindowSize getWindowSize() {
+        if (windowSizeBuilder_ == null) {
+          return windowSize_;
+        } else {
+          return windowSizeBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.TTYInfo.WindowSize window_size = 1;</code>
+       */
+      public Builder setWindowSize(org.apache.mesos.Protos.TTYInfo.WindowSize value) {
+        if (windowSizeBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          windowSize_ = value;
+          onChanged();
+        } else {
+          windowSizeBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.TTYInfo.WindowSize window_size = 1;</code>
+       */
+      public Builder setWindowSize(
+          org.apache.mesos.Protos.TTYInfo.WindowSize.Builder builderForValue) {
+        if (windowSizeBuilder_ == null) {
+          windowSize_ = builderForValue.build();
+          onChanged();
+        } else {
+          windowSizeBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.TTYInfo.WindowSize window_size = 1;</code>
+       */
+      public Builder mergeWindowSize(org.apache.mesos.Protos.TTYInfo.WindowSize value) {
+        if (windowSizeBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001) &&
+              windowSize_ != org.apache.mesos.Protos.TTYInfo.WindowSize.getDefaultInstance()) {
+            windowSize_ =
+              org.apache.mesos.Protos.TTYInfo.WindowSize.newBuilder(windowSize_).mergeFrom(value).buildPartial();
+          } else {
+            windowSize_ = value;
+          }
+          onChanged();
+        } else {
+          windowSizeBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.TTYInfo.WindowSize window_size = 1;</code>
+       */
+      public Builder clearWindowSize() {
+        if (windowSizeBuilder_ == null) {
+          windowSize_ = org.apache.mesos.Protos.TTYInfo.WindowSize.getDefaultInstance();
+          onChanged();
+        } else {
+          windowSizeBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.TTYInfo.WindowSize window_size = 1;</code>
+       */
+      public org.apache.mesos.Protos.TTYInfo.WindowSize.Builder getWindowSizeBuilder() {
+        bitField0_ |= 0x00000001;
+        onChanged();
+        return getWindowSizeFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.TTYInfo.WindowSize window_size = 1;</code>
+       */
+      public org.apache.mesos.Protos.TTYInfo.WindowSizeOrBuilder getWindowSizeOrBuilder() {
+        if (windowSizeBuilder_ != null) {
+          return windowSizeBuilder_.getMessageOrBuilder();
+        } else {
+          return windowSize_;
+        }
+      }
+      /**
+       * <code>optional .mesos.TTYInfo.WindowSize window_size = 1;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.TTYInfo.WindowSize, org.apache.mesos.Protos.TTYInfo.WindowSize.Builder, org.apache.mesos.Protos.TTYInfo.WindowSizeOrBuilder> 
+          getWindowSizeFieldBuilder() {
+        if (windowSizeBuilder_ == null) {
+          windowSizeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.TTYInfo.WindowSize, org.apache.mesos.Protos.TTYInfo.WindowSize.Builder, org.apache.mesos.Protos.TTYInfo.WindowSizeOrBuilder>(
+                  windowSize_,
+                  getParentForChildren(),
+                  isClean());
+          windowSize_ = null;
+        }
+        return windowSizeBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.TTYInfo)
+    }
+
+    static {
+      defaultInstance = new TTYInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.TTYInfo)
+  }
+
+  public interface ContainerInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required .mesos.ContainerInfo.Type type = 1;
+    /**
+     * <code>required .mesos.ContainerInfo.Type type = 1;</code>
+     */
+    boolean hasType();
+    /**
+     * <code>required .mesos.ContainerInfo.Type type = 1;</code>
+     */
+    org.apache.mesos.Protos.ContainerInfo.Type getType();
+
+    // repeated .mesos.Volume volumes = 2;
+    /**
+     * <code>repeated .mesos.Volume volumes = 2;</code>
+     */
+    java.util.List<org.apache.mesos.Protos.Volume> 
+        getVolumesList();
+    /**
+     * <code>repeated .mesos.Volume volumes = 2;</code>
+     */
+    org.apache.mesos.Protos.Volume getVolumes(int index);
+    /**
+     * <code>repeated .mesos.Volume volumes = 2;</code>
+     */
+    int getVolumesCount();
+    /**
+     * <code>repeated .mesos.Volume volumes = 2;</code>
+     */
+    java.util.List<? extends org.apache.mesos.Protos.VolumeOrBuilder> 
+        getVolumesOrBuilderList();
+    /**
+     * <code>repeated .mesos.Volume volumes = 2;</code>
+     */
+    org.apache.mesos.Protos.VolumeOrBuilder getVolumesOrBuilder(
+        int index);
+
+    // optional string hostname = 4;
+    /**
+     * <code>optional string hostname = 4;</code>
+     */
+    boolean hasHostname();
+    /**
+     * <code>optional string hostname = 4;</code>
+     */
+    java.lang.String getHostname();
+    /**
+     * <code>optional string hostname = 4;</code>
+     */
+    com.google.protobuf.ByteString
+        getHostnameBytes();
+
+    // optional .mesos.ContainerInfo.DockerInfo docker = 3;
+    /**
+     * <code>optional .mesos.ContainerInfo.DockerInfo docker = 3;</code>
+     *
+     * <pre>
+     * Only one of the following *Info messages should be set to match
+     * the type.
+     * </pre>
+     */
+    boolean hasDocker();
+    /**
+     * <code>optional .mesos.ContainerInfo.DockerInfo docker = 3;</code>
+     *
+     * <pre>
+     * Only one of the following *Info messages should be set to match
+     * the type.
+     * </pre>
+     */
+    org.apache.mesos.Protos.ContainerInfo.DockerInfo getDocker();
+    /**
+     * <code>optional .mesos.ContainerInfo.DockerInfo docker = 3;</code>
+     *
+     * <pre>
+     * Only one of the following *Info messages should be set to match
+     * the type.
+     * </pre>
+     */
+    org.apache.mesos.Protos.ContainerInfo.DockerInfoOrBuilder getDockerOrBuilder();
+
+    // optional .mesos.ContainerInfo.MesosInfo mesos = 5;
+    /**
+     * <code>optional .mesos.ContainerInfo.MesosInfo mesos = 5;</code>
+     */
+    boolean hasMesos();
+    /**
+     * <code>optional .mesos.ContainerInfo.MesosInfo mesos = 5;</code>
+     */
+    org.apache.mesos.Protos.ContainerInfo.MesosInfo getMesos();
+    /**
+     * <code>optional .mesos.ContainerInfo.MesosInfo mesos = 5;</code>
+     */
+    org.apache.mesos.Protos.ContainerInfo.MesosInfoOrBuilder getMesosOrBuilder();
+
+    // repeated .mesos.NetworkInfo network_infos = 7;
+    /**
+     * <code>repeated .mesos.NetworkInfo network_infos = 7;</code>
+     *
+     * <pre>
+     * A list of network requests. A framework can request multiple IP addresses
+     * for the container.
+     * </pre>
+     */
+    java.util.List<org.apache.mesos.Protos.NetworkInfo> 
+        getNetworkInfosList();
+    /**
+     * <code>repeated .mesos.NetworkInfo network_infos = 7;</code>
+     *
+     * <pre>
+     * A list of network requests. A framework can request multiple IP addresses
+     * for the container.
+     * </pre>
+     */
+    org.apache.mesos.Protos.NetworkInfo getNetworkInfos(int index);
+    /**
+     * <code>repeated .mesos.NetworkInfo network_infos = 7;</code>
+     *
+     * <pre>
+     * A list of network requests. A framework can request multiple IP addresses
+     * for the container.
+     * </pre>
+     */
+    int getNetworkInfosCount();
+    /**
+     * <code>repeated .mesos.NetworkInfo network_infos = 7;</code>
+     *
+     * <pre>
+     * A list of network requests. A framework can request multiple IP addresses
+     * for the container.
+     * </pre>
+     */
+    java.util.List<? extends org.apache.mesos.Protos.NetworkInfoOrBuilder> 
+        getNetworkInfosOrBuilderList();
+    /**
+     * <code>repeated .mesos.NetworkInfo network_infos = 7;</code>
+     *
+     * <pre>
+     * A list of network requests. A framework can request multiple IP addresses
+     * for the container.
+     * </pre>
+     */
+    org.apache.mesos.Protos.NetworkInfoOrBuilder getNetworkInfosOrBuilder(
+        int index);
+
+    // optional .mesos.LinuxInfo linux_info = 8;
+    /**
+     * <code>optional .mesos.LinuxInfo linux_info = 8;</code>
+     *
+     * <pre>
+     * Linux specific information for the container.
+     * </pre>
+     */
+    boolean hasLinuxInfo();
+    /**
+     * <code>optional .mesos.LinuxInfo linux_info = 8;</code>
+     *
+     * <pre>
+     * Linux specific information for the container.
+     * </pre>
+     */
+    org.apache.mesos.Protos.LinuxInfo getLinuxInfo();
+    /**
+     * <code>optional .mesos.LinuxInfo linux_info = 8;</code>
+     *
+     * <pre>
+     * Linux specific information for the container.
+     * </pre>
+     */
+    org.apache.mesos.Protos.LinuxInfoOrBuilder getLinuxInfoOrBuilder();
+
+    // optional .mesos.RLimitInfo rlimit_info = 9;
+    /**
+     * <code>optional .mesos.RLimitInfo rlimit_info = 9;</code>
+     *
+     * <pre>
+     * (POSIX only) rlimits of the container.
+     * </pre>
+     */
+    boolean hasRlimitInfo();
+    /**
+     * <code>optional .mesos.RLimitInfo rlimit_info = 9;</code>
+     *
+     * <pre>
+     * (POSIX only) rlimits of the container.
+     * </pre>
+     */
+    org.apache.mesos.Protos.RLimitInfo getRlimitInfo();
+    /**
+     * <code>optional .mesos.RLimitInfo rlimit_info = 9;</code>
+     *
+     * <pre>
+     * (POSIX only) rlimits of the container.
+     * </pre>
+     */
+    org.apache.mesos.Protos.RLimitInfoOrBuilder getRlimitInfoOrBuilder();
+
+    // optional .mesos.TTYInfo tty_info = 10;
+    /**
+     * <code>optional .mesos.TTYInfo tty_info = 10;</code>
+     *
+     * <pre>
+     * If specified a tty will be attached to the container entrypoint.
+     * </pre>
+     */
+    boolean hasTtyInfo();
+    /**
+     * <code>optional .mesos.TTYInfo tty_info = 10;</code>
+     *
+     * <pre>
+     * If specified a tty will be attached to the container entrypoint.
+     * </pre>
+     */
+    org.apache.mesos.Protos.TTYInfo getTtyInfo();
+    /**
+     * <code>optional .mesos.TTYInfo tty_info = 10;</code>
+     *
+     * <pre>
+     * If specified a tty will be attached to the container entrypoint.
+     * </pre>
+     */
+    org.apache.mesos.Protos.TTYInfoOrBuilder getTtyInfoOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.ContainerInfo}
+   *
+   * <pre>
+   **
+   * Describes a container configuration and allows extensible
+   * configurations for different container implementations.
+   *
+   * NOTE: `ContainerInfo` may be specified, e.g., by a task, even if no
+   * container image is provided. In this case neither `MesosInfo` nor
+   * `DockerInfo` is set, the required `type` must be `MESOS`. This is to
+   * address a case when a task without an image, e.g., a shell script
+   * with URIs, wants to use features originally designed for containers,
+   * for example custom network isolation via `NetworkInfo`.
+   * </pre>
+   */
+  public static final class ContainerInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements ContainerInfoOrBuilder {
+    // Use ContainerInfo.newBuilder() to construct.
+    private ContainerInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private ContainerInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final ContainerInfo defaultInstance;
+    public static ContainerInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public ContainerInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private ContainerInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 8: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.Protos.ContainerInfo.Type value = org.apache.mesos.Protos.ContainerInfo.Type.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(1, rawValue);
+              } else {
+                bitField0_ |= 0x00000001;
+                type_ = value;
+              }
+              break;
+            }
+            case 18: {
+              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+                volumes_ = new java.util.ArrayList<org.apache.mesos.Protos.Volume>();
+                mutable_bitField0_ |= 0x00000002;
+              }
+              volumes_.add(input.readMessage(org.apache.mesos.Protos.Volume.PARSER, extensionRegistry));
+              break;
+            }
+            case 26: {
+              org.apache.mesos.Protos.ContainerInfo.DockerInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                subBuilder = docker_.toBuilder();
+              }
+              docker_ = input.readMessage(org.apache.mesos.Protos.ContainerInfo.DockerInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(docker_);
+                docker_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000004;
+              break;
+            }
+            case 34: {
+              bitField0_ |= 0x00000002;
+              hostname_ = input.readBytes();
+              break;
+            }
+            case 42: {
+              org.apache.mesos.Protos.ContainerInfo.MesosInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                subBuilder = mesos_.toBuilder();
+              }
+              mesos_ = input.readMessage(org.apache.mesos.Protos.ContainerInfo.MesosInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(mesos_);
+                mesos_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000008;
+              break;
+            }
+            case 58: {
+              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
+                networkInfos_ = new java.util.ArrayList<org.apache.mesos.Protos.NetworkInfo>();
+                mutable_bitField0_ |= 0x00000020;
+              }
+              networkInfos_.add(input.readMessage(org.apache.mesos.Protos.NetworkInfo.PARSER, extensionRegistry));
+              break;
+            }
+            case 66: {
+              org.apache.mesos.Protos.LinuxInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000010) == 0x00000010)) {
+                subBuilder = linuxInfo_.toBuilder();
+              }
+              linuxInfo_ = input.readMessage(org.apache.mesos.Protos.LinuxInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(linuxInfo_);
+                linuxInfo_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000010;
+              break;
+            }
+            case 74: {
+              org.apache.mesos.Protos.RLimitInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000020) == 0x00000020)) {
+                subBuilder = rlimitInfo_.toBuilder();
+              }
+              rlimitInfo_ = input.readMessage(org.apache.mesos.Protos.RLimitInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(rlimitInfo_);
+                rlimitInfo_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000020;
+              break;
+            }
+            case 82: {
+              org.apache.mesos.Protos.TTYInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000040) == 0x00000040)) {
+                subBuilder = ttyInfo_.toBuilder();
+              }
+              ttyInfo_ = input.readMessage(org.apache.mesos.Protos.TTYInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(ttyInfo_);
+                ttyInfo_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000040;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+          volumes_ = java.util.Collections.unmodifiableList(volumes_);
+        }
+        if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
+          networkInfos_ = java.util.Collections.unmodifiableList(networkInfos_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_ContainerInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_ContainerInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.ContainerInfo.class, org.apache.mesos.Protos.ContainerInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<ContainerInfo> PARSER =
+        new com.google.protobuf.AbstractParser<ContainerInfo>() {
+      public ContainerInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new ContainerInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<ContainerInfo> getParserForType() {
+      return PARSER;
+    }
+
+    /**
+     * Protobuf enum {@code mesos.ContainerInfo.Type}
+     *
+     * <pre>
+     * All container implementation types.
+     * </pre>
+     */
+    public enum Type
+        implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>DOCKER = 1;</code>
+       */
+      DOCKER(0, 1),
+      /**
+       * <code>MESOS = 2;</code>
+       */
+      MESOS(1, 2),
+      ;
+
+      /**
+       * <code>DOCKER = 1;</code>
+       */
+      public static final int DOCKER_VALUE = 1;
+      /**
+       * <code>MESOS = 2;</code>
+       */
+      public static final int MESOS_VALUE = 2;
+
+
+      public final int getNumber() { return value; }
+
+      public static Type valueOf(int value) {
+        switch (value) {
+          case 1: return DOCKER;
+          case 2: return MESOS;
+          default: return null;
+        }
+      }
+
+      public static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalGetValueMap() {
+        return internalValueMap;
+      }
+      private static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap<Type>() {
+              public Type findValueByNumber(int number) {
+                return Type.valueOf(number);
+              }
+            };
+
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
+          getValueDescriptor() {
+        return getDescriptor().getValues().get(index);
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptorForType() {
+        return getDescriptor();
+      }
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.ContainerInfo.getDescriptor().getEnumTypes().get(0);
+      }
+
+      private static final Type[] VALUES = values();
+
+      public static Type valueOf(
+          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+        if (desc.getType() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "EnumValueDescriptor is not for this type.");
+        }
+        return VALUES[desc.getIndex()];
+      }
+
+      private final int index;
+      private final int value;
+
+      private Type(int index, int value) {
+        this.index = index;
+        this.value = value;
+      }
+
+      // @@protoc_insertion_point(enum_scope:mesos.ContainerInfo.Type)
+    }
+
+    public interface DockerInfoOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required string image = 1;
+      /**
+       * <code>required string image = 1;</code>
+       *
+       * <pre>
+       * The docker image that is going to be passed to the registry.
+       * </pre>
+       */
+      boolean hasImage();
+      /**
+       * <code>required string image = 1;</code>
+       *
+       * <pre>
+       * The docker image that is going to be passed to the registry.
+       * </pre>
+       */
+      java.lang.String getImage();
+      /**
+       * <code>required string image = 1;</code>
+       *
+       * <pre>
+       * The docker image that is going to be passed to the registry.
+       * </pre>
+       */
+      com.google.protobuf.ByteString
+          getImageBytes();
+
+      // optional .mesos.ContainerInfo.DockerInfo.Network network = 2 [default = HOST];
+      /**
+       * <code>optional .mesos.ContainerInfo.DockerInfo.Network network = 2 [default = HOST];</code>
+       */
+      boolean hasNetwork();
+      /**
+       * <code>optional .mesos.ContainerInfo.DockerInfo.Network network = 2 [default = HOST];</code>
+       */
+      org.apache.mesos.Protos.ContainerInfo.DockerInfo.Network getNetwork();
+
+      // repeated .mesos.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;
+      /**
+       * <code>repeated .mesos.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+       */
+      java.util.List<org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping> 
+          getPortMappingsList();
+      /**
+       * <code>repeated .mesos.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+       */
+      org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping getPortMappings(int index);
+      /**
+       * <code>repeated .mesos.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+       */
+      int getPortMappingsCount();
+      /**
+       * <code>repeated .mesos.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+       */
+      java.util.List<? extends org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMappingOrBuilder> 
+          getPortMappingsOrBuilderList();
+      /**
+       * <code>repeated .mesos.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+       */
+      org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMappingOrBuilder getPortMappingsOrBuilder(
+          int index);
+
+      // optional bool privileged = 4 [default = false];
+      /**
+       * <code>optional bool privileged = 4 [default = false];</code>
+       */
+      boolean hasPrivileged();
+      /**
+       * <code>optional bool privileged = 4 [default = false];</code>
+       */
+      boolean getPrivileged();
+
+      // repeated .mesos.Parameter parameters = 5;
+      /**
+       * <code>repeated .mesos.Parameter parameters = 5;</code>
+       *
+       * <pre>
+       * Allowing arbitrary parameters to be passed to docker CLI.
+       * Note that anything passed to this field is not guaranteed
+       * to be supported moving forward, as we might move away from
+       * the docker CLI.
+       * </pre>
+       */
+      java.util.List<org.apache.mesos.Protos.Parameter> 
+          getParametersList();
+      /**
+       * <code>repeated .mesos.Parameter parameters = 5;</code>
+       *
+       * <pre>
+       * Allowing arbitrary parameters to be passed to docker CLI.
+       * Note that anything passed to this field is not guaranteed
+       * to be supported moving forward, as we might move away from
+       * the docker CLI.
+       * </pre>
+       */
+      org.apache.mesos.Protos.Parameter getParameters(int index);
+      /**
+       * <code>repeated .mesos.Parameter parameters = 5;</code>
+       *
+       * <pre>
+       * Allowing arbitrary parameters to be passed to docker CLI.
+       * Note that anything passed to this field is not guaranteed
+       * to be supported moving forward, as we might move away from
+       * the docker CLI.
+       * </pre>
+       */
+      int getParametersCount();
+      /**
+       * <code>repeated .mesos.Parameter parameters = 5;</code>
+       *
+       * <pre>
+       * Allowing arbitrary parameters to be passed to docker CLI.
+       * Note that anything passed to this field is not guaranteed
+       * to be supported moving forward, as we might move away from
+       * the docker CLI.
+       * </pre>
+       */
+      java.util.List<? extends org.apache.mesos.Protos.ParameterOrBuilder> 
+          getParametersOrBuilderList();
+      /**
+       * <code>repeated .mesos.Parameter parameters = 5;</code>
+       *
+       * <pre>
+       * Allowing arbitrary parameters to be passed to docker CLI.
+       * Note that anything passed to this field is not guaranteed
+       * to be supported moving forward, as we might move away from
+       * the docker CLI.
+       * </pre>
+       */
+      org.apache.mesos.Protos.ParameterOrBuilder getParametersOrBuilder(
+          int index);
+
+      // optional bool force_pull_image = 6;
+      /**
+       * <code>optional bool force_pull_image = 6;</code>
+       *
+       * <pre>
+       * With this flag set to true, the docker containerizer will
+       * pull the docker image from the registry even if the image
+       * is already downloaded on the slave.
+       * </pre>
+       */
+      boolean hasForcePullImage();
+      /**
+       * <code>optional bool force_pull_image = 6;</code>
+       *
+       * <pre>
+       * With this flag set to true, the docker containerizer will
+       * pull the docker image from the registry even if the image
+       * is already downloaded on the slave.
+       * </pre>
+       */
+      boolean getForcePullImage();
+
+      // optional string volume_driver = 7 [deprecated = true];
+      /**
+       * <code>optional string volume_driver = 7 [deprecated = true];</code>
+       *
+       * <pre>
+       * The name of volume driver plugin.
+       * </pre>
+       */
+      @java.lang.Deprecated boolean hasVolumeDriver();
+      /**
+       * <code>optional string volume_driver = 7 [deprecated = true];</code>
+       *
+       * <pre>
+       * The name of volume driver plugin.
+       * </pre>
+       */
+      @java.lang.Deprecated java.lang.String getVolumeDriver();
+      /**
+       * <code>optional string volume_driver = 7 [deprecated = true];</code>
+       *
+       * <pre>
+       * The name of volume driver plugin.
+       * </pre>
+       */
+      @java.lang.Deprecated com.google.protobuf.ByteString
+          getVolumeDriverBytes();
+    }
+    /**
+     * Protobuf type {@code mesos.ContainerInfo.DockerInfo}
+     */
+    public static final class DockerInfo extends
+        com.google.protobuf.GeneratedMessage
+        implements DockerInfoOrBuilder {
+      // Use DockerInfo.newBuilder() to construct.
+      private DockerInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private DockerInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final DockerInfo defaultInstance;
+      public static DockerInfo getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public DockerInfo getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private DockerInfo(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                bitField0_ |= 0x00000001;
+                image_ = input.readBytes();
+                break;
+              }
+              case 16: {
+                int rawValue = input.readEnum();
+                org.apache.mesos.Protos.ContainerInfo.DockerInfo.Network value = org.apache.mesos.Protos.ContainerInfo.DockerInfo.Network.valueOf(rawValue);
+                if (value == null) {
+                  unknownFields.mergeVarintField(2, rawValue);
+                } else {
+                  bitField0_ |= 0x00000002;
+                  network_ = value;
+                }
+                break;
+              }
+              case 26: {
+                if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
+                  portMappings_ = new java.util.ArrayList<org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping>();
+                  mutable_bitField0_ |= 0x00000004;
+                }
+                portMappings_.add(input.readMessage(org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping.PARSER, extensionRegistry));
+                break;
+              }
+              case 32: {
+                bitField0_ |= 0x00000004;
+                privileged_ = input.readBool();
+                break;
+              }
+              case 42: {
+                if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
+                  parameters_ = new java.util.ArrayList<org.apache.mesos.Protos.Parameter>();
+                  mutable_bitField0_ |= 0x00000010;
+                }
+                parameters_.add(input.readMessage(org.apache.mesos.Protos.Parameter.PARSER, extensionRegistry));
+                break;
+              }
+              case 48: {
+                bitField0_ |= 0x00000008;
+                forcePullImage_ = input.readBool();
+                break;
+              }
+              case 58: {
+                bitField0_ |= 0x00000010;
+                volumeDriver_ = input.readBytes();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
+            portMappings_ = java.util.Collections.unmodifiableList(portMappings_);
+          }
+          if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
+            parameters_ = java.util.Collections.unmodifiableList(parameters_);
+          }
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_ContainerInfo_DockerInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_ContainerInfo_DockerInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.ContainerInfo.DockerInfo.class, org.apache.mesos.Protos.ContainerInfo.DockerInfo.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<DockerInfo> PARSER =
+          new com.google.protobuf.AbstractParser<DockerInfo>() {
+        public DockerInfo parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new DockerInfo(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<DockerInfo> getParserForType() {
+        return PARSER;
+      }
+
+      /**
+       * Protobuf enum {@code mesos.ContainerInfo.DockerInfo.Network}
+       *
+       * <pre>
+       * Network options.
+       * </pre>
+       */
+      public enum Network
+          implements com.google.protobuf.ProtocolMessageEnum {
+        /**
+         * <code>HOST = 1;</code>
+         */
+        HOST(0, 1),
+        /**
+         * <code>BRIDGE = 2;</code>
+         */
+        BRIDGE(1, 2),
+        /**
+         * <code>NONE = 3;</code>
+         */
+        NONE(2, 3),
+        /**
+         * <code>USER = 4;</code>
+         */
+        USER(3, 4),
+        ;
+
+        /**
+         * <code>HOST = 1;</code>
+         */
+        public static final int HOST_VALUE = 1;
+        /**
+         * <code>BRIDGE = 2;</code>
+         */
+        public static final int BRIDGE_VALUE = 2;
+        /**
+         * <code>NONE = 3;</code>
+         */
+        public static final int NONE_VALUE = 3;
+        /**
+         * <code>USER = 4;</code>
+         */
+        public static final int USER_VALUE = 4;
+
+
+        public final int getNumber() { return value; }
+
+        public static Network valueOf(int value) {
+          switch (value) {
+            case 1: return HOST;
+            case 2: return BRIDGE;
+            case 3: return NONE;
+            case 4: return USER;
+            default: return null;
+          }
+        }
+
+        public static com.google.protobuf.Internal.EnumLiteMap<Network>
+            internalGetValueMap() {
+          return internalValueMap;
+        }
+        private static com.google.protobuf.Internal.EnumLiteMap<Network>
+            internalValueMap =
+              new com.google.protobuf.Internal.EnumLiteMap<Network>() {
+                public Network findValueByNumber(int number) {
+                  return Network.valueOf(number);
+                }
+              };
+
+        public final com.google.protobuf.Descriptors.EnumValueDescriptor
+            getValueDescriptor() {
+          return getDescriptor().getValues().get(index);
+        }
+        public final com.google.protobuf.Descriptors.EnumDescriptor
+            getDescriptorForType() {
+          return getDescriptor();
+        }
+        public static final com.google.protobuf.Descriptors.EnumDescriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.ContainerInfo.DockerInfo.getDescriptor().getEnumTypes().get(0);
+        }
+
+        private static final Network[] VALUES = values();
+
+        public static Network valueOf(
+            com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+          if (desc.getType() != getDescriptor()) {
+            throw new java.lang.IllegalArgumentException(
+              "EnumValueDescriptor is not for this type.");
+          }
+          return VALUES[desc.getIndex()];
+        }
+
+        private final int index;
+        private final int value;
+
+        private Network(int index, int value) {
+          this.index = index;
+          this.value = value;
+        }
+
+        // @@protoc_insertion_point(enum_scope:mesos.ContainerInfo.DockerInfo.Network)
+      }
+
+      public interface PortMappingOrBuilder
+          extends com.google.protobuf.MessageOrBuilder {
+
+        // required uint32 host_port = 1;
+        /**
+         * <code>required uint32 host_port = 1;</code>
+         */
+        boolean hasHostPort();
+        /**
+         * <code>required uint32 host_port = 1;</code>
+         */
+        int getHostPort();
+
+        // required uint32 container_port = 2;
+        /**
+         * <code>required uint32 container_port = 2;</code>
+         */
+        boolean hasContainerPort();
+        /**
+         * <code>required uint32 container_port = 2;</code>
+         */
+        int getContainerPort();
+
+        // optional string protocol = 3;
+        /**
+         * <code>optional string protocol = 3;</code>
+         *
+         * <pre>
+         * Protocol to expose as (ie: tcp, udp).
+         * </pre>
+         */
+        boolean hasProtocol();
+        /**
+         * <code>optional string protocol = 3;</code>
+         *
+         * <pre>
+         * Protocol to expose as (ie: tcp, udp).
+         * </pre>
+         */
+        java.lang.String getProtocol();
+        /**
+         * <code>optional string protocol = 3;</code>
+         *
+         * <pre>
+         * Protocol to expose as (ie: tcp, udp).
+         * </pre>
+         */
+        com.google.protobuf.ByteString
+            getProtocolBytes();
+      }
+      /**
+       * Protobuf type {@code mesos.ContainerInfo.DockerInfo.PortMapping}
+       */
+      public static final class PortMapping extends
+          com.google.protobuf.GeneratedMessage
+          implements PortMappingOrBuilder {
+        // Use PortMapping.newBuilder() to construct.
+        private PortMapping(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+          super(builder);
+          this.unknownFields = builder.getUnknownFields();
+        }
+        private PortMapping(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+        private static final PortMapping defaultInstance;
+        public static PortMapping getDefaultInstance() {
+          return defaultInstance;
+        }
+
+        public PortMapping getDefaultInstanceForType() {
+          return defaultInstance;
+        }
+
+        private final com.google.protobuf.UnknownFieldSet unknownFields;
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet
+            getUnknownFields() {
+          return this.unknownFields;
+        }
+        private PortMapping(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          initFields();
+          int mutable_bitField0_ = 0;
+          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+              com.google.protobuf.UnknownFieldSet.newBuilder();
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(input, unknownFields,
+                                         extensionRegistry, tag)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 8: {
+                  bitField0_ |= 0x00000001;
+                  hostPort_ = input.readUInt32();
+                  break;
+                }
+                case 16: {
+                  bitField0_ |= 0x00000002;
+                  containerPort_ = input.readUInt32();
+                  break;
+                }
+                case 26: {
+                  bitField0_ |= 0x00000004;
+                  protocol_ = input.readBytes();
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw e.setUnfinishedMessage(this);
+          } catch (java.io.IOException e) {
+            throw new com.google.protobuf.InvalidProtocolBufferException(
+                e.getMessage()).setUnfinishedMessage(this);
+          } finally {
+            this.unknownFields = unknownFields.build();
+            makeExtensionsImmutable();
+          }
+        }
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_ContainerInfo_DockerInfo_PortMapping_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_ContainerInfo_DockerInfo_PortMapping_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping.class, org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping.Builder.class);
+        }
+
+        public static com.google.protobuf.Parser<PortMapping> PARSER =
+            new com.google.protobuf.AbstractParser<PortMapping>() {
+          public PortMapping parsePartialFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return new PortMapping(input, extensionRegistry);
+          }
+        };
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<PortMapping> getParserForType() {
+          return PARSER;
+        }
+
+        private int bitField0_;
+        // required uint32 host_port = 1;
+        public static final int HOST_PORT_FIELD_NUMBER = 1;
+        private int hostPort_;
+        /**
+         * <code>required uint32 host_port = 1;</code>
+         */
+        public boolean hasHostPort() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required uint32 host_port = 1;</code>
+         */
+        public int getHostPort() {
+          return hostPort_;
+        }
+
+        // required uint32 container_port = 2;
+        public static final int CONTAINER_PORT_FIELD_NUMBER = 2;
+        private int containerPort_;
+        /**
+         * <code>required uint32 container_port = 2;</code>
+         */
+        public boolean hasContainerPort() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>required uint32 container_port = 2;</code>
+         */
+        public int getContainerPort() {
+          return containerPort_;
+        }
+
+        // optional string protocol = 3;
+        public static final int PROTOCOL_FIELD_NUMBER = 3;
+        private java.lang.Object protocol_;
+        /**
+         * <code>optional string protocol = 3;</code>
+         *
+         * <pre>
+         * Protocol to expose as (ie: tcp, udp).
+         * </pre>
+         */
+        public boolean hasProtocol() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional string protocol = 3;</code>
+         *
+         * <pre>
+         * Protocol to expose as (ie: tcp, udp).
+         * </pre>
+         */
+        public java.lang.String getProtocol() {
+          java.lang.Object ref = protocol_;
+          if (ref instanceof java.lang.String) {
+            return (java.lang.String) ref;
+          } else {
+            com.google.protobuf.ByteString bs = 
+                (com.google.protobuf.ByteString) ref;
+            java.lang.String s = bs.toStringUtf8();
+            if (bs.isValidUtf8()) {
+              protocol_ = s;
+            }
+            return s;
+          }
+        }
+        /**
+         * <code>optional string protocol = 3;</code>
+         *
+         * <pre>
+         * Protocol to expose as (ie: tcp, udp).
+         * </pre>
+         */
+        public com.google.protobuf.ByteString
+            getProtocolBytes() {
+          java.lang.Object ref = protocol_;
+          if (ref instanceof java.lang.String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            protocol_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+
+        private void initFields() {
+          hostPort_ = 0;
+          containerPort_ = 0;
+          protocol_ = "";
+        }
+        private byte memoizedIsInitialized = -1;
+        public final boolean isInitialized() {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized != -1) return isInitialized == 1;
+
+          if (!hasHostPort()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+          if (!hasContainerPort()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+          memoizedIsInitialized = 1;
+          return true;
+        }
+
+        public void writeTo(com.google.protobuf.CodedOutputStream output)
+                            throws java.io.IOException {
+          getSerializedSize();
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            output.writeUInt32(1, hostPort_);
+          }
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            output.writeUInt32(2, containerPort_);
+          }
+          if (((bitField0_ & 0x00000004) == 0x00000004)) {
+            output.writeBytes(3, getProtocolBytes());
+          }
+          getUnknownFields().writeTo(output);
+        }
+
+        private int memoizedSerializedSize = -1;
+        public int getSerializedSize() {
+          int size = memoizedSerializedSize;
+          if (size != -1) return size;
+
+          size = 0;
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeUInt32Size(1, hostPort_);
+          }
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeUInt32Size(2, containerPort_);
+          }
+          if (((bitField0_ & 0x00000004) == 0x00000004)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeBytesSize(3, getProtocolBytes());
+          }
+          size += getUnknownFields().getSerializedSize();
+          memoizedSerializedSize = size;
+          return size;
+        }
+
+        private static final long serialVersionUID = 0L;
+        @java.lang.Override
+        protected java.lang.Object writeReplace()
+            throws java.io.ObjectStreamException {
+          return super.writeReplace();
+        }
+
+        public static org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping parseFrom(
+            com.google.protobuf.ByteString data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping parseFrom(
+            com.google.protobuf.ByteString data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping parseFrom(byte[] data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping parseFrom(
+            byte[] data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping parseFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping parseFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping parseDelimitedFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input);
+        }
+        public static org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping parseDelimitedFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping parseFrom(
+            com.google.protobuf.CodedInputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping parseFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+
+        public static Builder newBuilder() { return Builder.create(); }
+        public Builder newBuilderForType() { return newBuilder(); }
+        public static Builder newBuilder(org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping prototype) {
+          return newBuilder().mergeFrom(prototype);
+        }
+        public Builder toBuilder() { return newBuilder(this); }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          Builder builder = new Builder(parent);
+          return builder;
+        }
+        /**
+         * Protobuf type {@code mesos.ContainerInfo.DockerInfo.PortMapping}
+         */
+        public static final class Builder extends
+            com.google.protobuf.GeneratedMessage.Builder<Builder>
+           implements org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMappingOrBuilder {
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.Protos.internal_static_mesos_ContainerInfo_DockerInfo_PortMapping_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.Protos.internal_static_mesos_ContainerInfo_DockerInfo_PortMapping_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping.class, org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping.Builder.class);
+          }
+
+          // Construct using org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping.newBuilder()
+          private Builder() {
+            maybeForceBuilderInitialization();
+          }
+
+          private Builder(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            super(parent);
+            maybeForceBuilderInitialization();
+          }
+          private void maybeForceBuilderInitialization() {
+            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            }
+          }
+          private static Builder create() {
+            return new Builder();
+          }
+
+          public Builder clear() {
+            super.clear();
+            hostPort_ = 0;
+            bitField0_ = (bitField0_ & ~0x00000001);
+            containerPort_ = 0;
+            bitField0_ = (bitField0_ & ~0x00000002);
+            protocol_ = "";
+            bitField0_ = (bitField0_ & ~0x00000004);
+            return this;
+          }
+
+          public Builder clone() {
+            return create().mergeFrom(buildPartial());
+          }
+
+          public com.google.protobuf.Descriptors.Descriptor
+              getDescriptorForType() {
+            return org.apache.mesos.Protos.internal_static_mesos_ContainerInfo_DockerInfo_PortMapping_descriptor;
+          }
+
+          public org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping getDefaultInstanceForType() {
+            return org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping.getDefaultInstance();
+          }
+
+          public org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping build() {
+            org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping result = buildPartial();
+            if (!result.isInitialized()) {
+              throw newUninitializedMessageException(result);
+            }
+            return result;
+          }
+
+          public org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping buildPartial() {
+            org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping result = new org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping(this);
+            int from_bitField0_ = bitField0_;
+            int to_bitField0_ = 0;
+            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+              to_bitField0_ |= 0x00000001;
+            }
+            result.hostPort_ = hostPort_;
+            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+              to_bitField0_ |= 0x00000002;
+            }
+            result.containerPort_ = containerPort_;
+            if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+              to_bitField0_ |= 0x00000004;
+            }
+            result.protocol_ = protocol_;
+            result.bitField0_ = to_bitField0_;
+            onBuilt();
+            return result;
+          }
+
+          public Builder mergeFrom(com.google.protobuf.Message other) {
+            if (other instanceof org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping) {
+              return mergeFrom((org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping)other);
+            } else {
+              super.mergeFrom(other);
+              return this;
+            }
+          }
+
+          public Builder mergeFrom(org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping other) {
+            if (other == org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping.getDefaultInstance()) return this;
+            if (other.hasHostPort()) {
+              setHostPort(other.getHostPort());
+            }
+            if (other.hasContainerPort()) {
+              setContainerPort(other.getContainerPort());
+            }
+            if (other.hasProtocol()) {
+              bitField0_ |= 0x00000004;
+              protocol_ = other.protocol_;
+              onChanged();
+            }
+            this.mergeUnknownFields(other.getUnknownFields());
+            return this;
+          }
+
+          public final boolean isInitialized() {
+            if (!hasHostPort()) {
+              
+              return false;
+            }
+            if (!hasContainerPort()) {
+              
+              return false;
+            }
+            return true;
+          }
+
+          public Builder mergeFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping parsedMessage = null;
+            try {
+              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              parsedMessage = (org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping) e.getUnfinishedMessage();
+              throw e;
+            } finally {
+              if (parsedMessage != null) {
+                mergeFrom(parsedMessage);
+              }
+            }
+            return this;
+          }
+          private int bitField0_;
+
+          // required uint32 host_port = 1;
+          private int hostPort_ ;
+          /**
+           * <code>required uint32 host_port = 1;</code>
+           */
+          public boolean hasHostPort() {
+            return ((bitField0_ & 0x00000001) == 0x00000001);
+          }
+          /**
+           * <code>required uint32 host_port = 1;</code>
+           */
+          public int getHostPort() {
+            return hostPort_;
+          }
+          /**
+           * <code>required uint32 host_port = 1;</code>
+           */
+          public Builder setHostPort(int value) {
+            bitField0_ |= 0x00000001;
+            hostPort_ = value;
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>required uint32 host_port = 1;</code>
+           */
+          public Builder clearHostPort() {
+            bitField0_ = (bitField0_ & ~0x00000001);
+            hostPort_ = 0;
+            onChanged();
+            return this;
+          }
+
+          // required uint32 container_port = 2;
+          private int containerPort_ ;
+          /**
+           * <code>required uint32 container_port = 2;</code>
+           */
+          public boolean hasContainerPort() {
+            return ((bitField0_ & 0x00000002) == 0x00000002);
+          }
+          /**
+           * <code>required uint32 container_port = 2;</code>
+           */
+          public int getContainerPort() {
+            return containerPort_;
+          }
+          /**
+           * <code>required uint32 container_port = 2;</code>
+           */
+          public Builder setContainerPort(int value) {
+            bitField0_ |= 0x00000002;
+            containerPort_ = value;
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>required uint32 container_port = 2;</code>
+           */
+          public Builder clearContainerPort() {
+            bitField0_ = (bitField0_ & ~0x00000002);
+            containerPort_ = 0;
+            onChanged();
+            return this;
+          }
+
+          // optional string protocol = 3;
+          private java.lang.Object protocol_ = "";
+          /**
+           * <code>optional string protocol = 3;</code>
+           *
+           * <pre>
+           * Protocol to expose as (ie: tcp, udp).
+           * </pre>
+           */
+          public boolean hasProtocol() {
+            return ((bitField0_ & 0x00000004) == 0x00000004);
+          }
+          /**
+           * <code>optional string protocol = 3;</code>
+           *
+           * <pre>
+           * Protocol to expose as (ie: tcp, udp).
+           * </pre>
+           */
+          public java.lang.String getProtocol() {
+            java.lang.Object ref = protocol_;
+            if (!(ref instanceof java.lang.String)) {
+              java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                  .toStringUtf8();
+              protocol_ = s;
+              return s;
+            } else {
+              return (java.lang.String) ref;
+            }
+          }
+          /**
+           * <code>optional string protocol = 3;</code>
+           *
+           * <pre>
+           * Protocol to expose as (ie: tcp, udp).
+           * </pre>
+           */
+          public com.google.protobuf.ByteString
+              getProtocolBytes() {
+            java.lang.Object ref = protocol_;
+            if (ref instanceof String) {
+              com.google.protobuf.ByteString b = 
+                  com.google.protobuf.ByteString.copyFromUtf8(
+                      (java.lang.String) ref);
+              protocol_ = b;
+              return b;
+            } else {
+              return (com.google.protobuf.ByteString) ref;
+            }
+          }
+          /**
+           * <code>optional string protocol = 3;</code>
+           *
+           * <pre>
+           * Protocol to expose as (ie: tcp, udp).
+           * </pre>
+           */
+          public Builder setProtocol(
+              java.lang.String value) {
+            if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+            protocol_ = value;
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>optional string protocol = 3;</code>
+           *
+           * <pre>
+           * Protocol to expose as (ie: tcp, udp).
+           * </pre>
+           */
+          public Builder clearProtocol() {
+            bitField0_ = (bitField0_ & ~0x00000004);
+            protocol_ = getDefaultInstance().getProtocol();
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>optional string protocol = 3;</code>
+           *
+           * <pre>
+           * Protocol to expose as (ie: tcp, udp).
+           * </pre>
+           */
+          public Builder setProtocolBytes(
+              com.google.protobuf.ByteString value) {
+            if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+            protocol_ = value;
+            onChanged();
+            return this;
+          }
+
+          // @@protoc_insertion_point(builder_scope:mesos.ContainerInfo.DockerInfo.PortMapping)
+        }
+
+        static {
+          defaultInstance = new PortMapping(true);
+          defaultInstance.initFields();
+        }
+
+        // @@protoc_insertion_point(class_scope:mesos.ContainerInfo.DockerInfo.PortMapping)
+      }
+
+      private int bitField0_;
+      // required string image = 1;
+      public static final int IMAGE_FIELD_NUMBER = 1;
+      private java.lang.Object image_;
+      /**
+       * <code>required string image = 1;</code>
+       *
+       * <pre>
+       * The docker image that is going to be passed to the registry.
+       * </pre>
+       */
+      public boolean hasImage() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string image = 1;</code>
+       *
+       * <pre>
+       * The docker image that is going to be passed to the registry.
+       * </pre>
+       */
+      public java.lang.String getImage() {
+        java.lang.Object ref = image_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            image_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>required string image = 1;</code>
+       *
+       * <pre>
+       * The docker image that is going to be passed to the registry.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getImageBytes() {
+        java.lang.Object ref = image_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          image_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      // optional .mesos.ContainerInfo.DockerInfo.Network network = 2 [default = HOST];
+      public static final int NETWORK_FIELD_NUMBER = 2;
+      private org.apache.mesos.Protos.ContainerInfo.DockerInfo.Network network_;
+      /**
+       * <code>optional .mesos.ContainerInfo.DockerInfo.Network network = 2 [default = HOST];</code>
+       */
+      public boolean hasNetwork() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.ContainerInfo.DockerInfo.Network network = 2 [default = HOST];</code>
+       */
+      public org.apache.mesos.Protos.ContainerInfo.DockerInfo.Network getNetwork() {
+        return network_;
+      }
+
+      // repeated .mesos.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;
+      public static final int PORT_MAPPINGS_FIELD_NUMBER = 3;
+      private java.util.List<org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping> portMappings_;
+      /**
+       * <code>repeated .mesos.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping> getPortMappingsList() {
+        return portMappings_;
+      }
+      /**
+       * <code>repeated .mesos.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMappingOrBuilder> 
+          getPortMappingsOrBuilderList() {
+        return portMappings_;
+      }
+      /**
+       * <code>repeated .mesos.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+       */
+      public int getPortMappingsCount() {
+        return portMappings_.size();
+      }
+      /**
+       * <code>repeated .mesos.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+       */
+      public org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping getPortMappings(int index) {
+        return portMappings_.get(index);
+      }
+      /**
+       * <code>repeated .mesos.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+       */
+      public org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMappingOrBuilder getPortMappingsOrBuilder(
+          int index) {
+        return portMappings_.get(index);
+      }
+
+      // optional bool privileged = 4 [default = false];
+      public static final int PRIVILEGED_FIELD_NUMBER = 4;
+      private boolean privileged_;
+      /**
+       * <code>optional bool privileged = 4 [default = false];</code>
+       */
+      public boolean hasPrivileged() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional bool privileged = 4 [default = false];</code>
+       */
+      public boolean getPrivileged() {
+        return privileged_;
+      }
+
+      // repeated .mesos.Parameter parameters = 5;
+      public static final int PARAMETERS_FIELD_NUMBER = 5;
+      private java.util.List<org.apache.mesos.Protos.Parameter> parameters_;
+      /**
+       * <code>repeated .mesos.Parameter parameters = 5;</code>
+       *
+       * <pre>
+       * Allowing arbitrary parameters to be passed to docker CLI.
+       * Note that anything passed to this field is not guaranteed
+       * to be supported moving forward, as we might move away from
+       * the docker CLI.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.Protos.Parameter> getParametersList() {
+        return parameters_;
+      }
+      /**
+       * <code>repeated .mesos.Parameter parameters = 5;</code>
+       *
+       * <pre>
+       * Allowing arbitrary parameters to be passed to docker CLI.
+       * Note that anything passed to this field is not guaranteed
+       * to be supported moving forward, as we might move away from
+       * the docker CLI.
+       * </pre>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.ParameterOrBuilder> 
+          getParametersOrBuilderList() {
+        return parameters_;
+      }
+      /**
+       * <code>repeated .mesos.Parameter parameters = 5;</code>
+       *
+       * <pre>
+       * Allowing arbitrary parameters to be passed to docker CLI.
+       * Note that anything passed to this field is not guaranteed
+       * to be supported moving forward, as we might move away from
+       * the docker CLI.
+       * </pre>
+       */
+      public int getParametersCount() {
+        return parameters_.size();
+      }
+      /**
+       * <code>repeated .mesos.Parameter parameters = 5;</code>
+       *
+       * <pre>
+       * Allowing arbitrary parameters to be passed to docker CLI.
+       * Note that anything passed to this field is not guaranteed
+       * to be supported moving forward, as we might move away from
+       * the docker CLI.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Parameter getParameters(int index) {
+        return parameters_.get(index);
+      }
+      /**
+       * <code>repeated .mesos.Parameter parameters = 5;</code>
+       *
+       * <pre>
+       * Allowing arbitrary parameters to be passed to docker CLI.
+       * Note that anything passed to this field is not guaranteed
+       * to be supported moving forward, as we might move away from
+       * the docker CLI.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.ParameterOrBuilder getParametersOrBuilder(
+          int index) {
+        return parameters_.get(index);
+      }
+
+      // optional bool force_pull_image = 6;
+      public static final int FORCE_PULL_IMAGE_FIELD_NUMBER = 6;
+      private boolean forcePullImage_;
+      /**
+       * <code>optional bool force_pull_image = 6;</code>
+       *
+       * <pre>
+       * With this flag set to true, the docker containerizer will
+       * pull the docker image from the registry even if the image
+       * is already downloaded on the slave.
+       * </pre>
+       */
+      public boolean hasForcePullImage() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional bool force_pull_image = 6;</code>
+       *
+       * <pre>
+       * With this flag set to true, the docker containerizer will
+       * pull the docker image from the registry even if the image
+       * is already downloaded on the slave.
+       * </pre>
+       */
+      public boolean getForcePullImage() {
+        return forcePullImage_;
+      }
+
+      // optional string volume_driver = 7 [deprecated = true];
+      public static final int VOLUME_DRIVER_FIELD_NUMBER = 7;
+      private java.lang.Object volumeDriver_;
+      /**
+       * <code>optional string volume_driver = 7 [deprecated = true];</code>
+       *
+       * <pre>
+       * The name of volume driver plugin.
+       * </pre>
+       */
+      @java.lang.Deprecated public boolean hasVolumeDriver() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional string volume_driver = 7 [deprecated = true];</code>
+       *
+       * <pre>
+       * The name of volume driver plugin.
+       * </pre>
+       */
+      @java.lang.Deprecated public java.lang.String getVolumeDriver() {
+        java.lang.Object ref = volumeDriver_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            volumeDriver_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>optional string volume_driver = 7 [deprecated = true];</code>
+       *
+       * <pre>
+       * The name of volume driver plugin.
+       * </pre>
+       */
+      @java.lang.Deprecated public com.google.protobuf.ByteString
+          getVolumeDriverBytes() {
+        java.lang.Object ref = volumeDriver_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          volumeDriver_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      private void initFields() {
+        image_ = "";
+        network_ = org.apache.mesos.Protos.ContainerInfo.DockerInfo.Network.HOST;
+        portMappings_ = java.util.Collections.emptyList();
+        privileged_ = false;
+        parameters_ = java.util.Collections.emptyList();
+        forcePullImage_ = false;
+        volumeDriver_ = "";
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasImage()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        for (int i = 0; i < getPortMappingsCount(); i++) {
+          if (!getPortMappings(i).isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        for (int i = 0; i < getParametersCount(); i++) {
+          if (!getParameters(i).isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeBytes(1, getImageBytes());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeEnum(2, network_.getNumber());
+        }
+        for (int i = 0; i < portMappings_.size(); i++) {
+          output.writeMessage(3, portMappings_.get(i));
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeBool(4, privileged_);
+        }
+        for (int i = 0; i < parameters_.size(); i++) {
+          output.writeMessage(5, parameters_.get(i));
+        }
+        if (((bitField0_ & 0x00000008) == 0x00000008)) {
+          output.writeBool(6, forcePullImage_);
+        }
+        if (((bitField0_ & 0x00000010) == 0x00000010)) {
+          output.writeBytes(7, getVolumeDriverBytes());
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(1, getImageBytes());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeEnumSize(2, network_.getNumber());
+        }
+        for (int i = 0; i < portMappings_.size(); i++) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(3, portMappings_.get(i));
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBoolSize(4, privileged_);
+        }
+        for (int i = 0; i < parameters_.size(); i++) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(5, parameters_.get(i));
+        }
+        if (((bitField0_ & 0x00000008) == 0x00000008)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBoolSize(6, forcePullImage_);
+        }
+        if (((bitField0_ & 0x00000010) == 0x00000010)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(7, getVolumeDriverBytes());
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.Protos.ContainerInfo.DockerInfo parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.ContainerInfo.DockerInfo parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.ContainerInfo.DockerInfo parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.ContainerInfo.DockerInfo parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.ContainerInfo.DockerInfo parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.ContainerInfo.DockerInfo parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.ContainerInfo.DockerInfo parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.Protos.ContainerInfo.DockerInfo parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.ContainerInfo.DockerInfo parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.ContainerInfo.DockerInfo parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.Protos.ContainerInfo.DockerInfo prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.ContainerInfo.DockerInfo}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.Protos.ContainerInfo.DockerInfoOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_ContainerInfo_DockerInfo_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_ContainerInfo_DockerInfo_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.ContainerInfo.DockerInfo.class, org.apache.mesos.Protos.ContainerInfo.DockerInfo.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.Protos.ContainerInfo.DockerInfo.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getPortMappingsFieldBuilder();
+            getParametersFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          image_ = "";
+          bitField0_ = (bitField0_ & ~0x00000001);
+          network_ = org.apache.mesos.Protos.ContainerInfo.DockerInfo.Network.HOST;
+          bitField0_ = (bitField0_ & ~0x00000002);
+          if (portMappingsBuilder_ == null) {
+            portMappings_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000004);
+          } else {
+            portMappingsBuilder_.clear();
+          }
+          privileged_ = false;
+          bitField0_ = (bitField0_ & ~0x00000008);
+          if (parametersBuilder_ == null) {
+            parameters_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000010);
+          } else {
+            parametersBuilder_.clear();
+          }
+          forcePullImage_ = false;
+          bitField0_ = (bitField0_ & ~0x00000020);
+          volumeDriver_ = "";
+          bitField0_ = (bitField0_ & ~0x00000040);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.Protos.internal_static_mesos_ContainerInfo_DockerInfo_descriptor;
+        }
+
+        public org.apache.mesos.Protos.ContainerInfo.DockerInfo getDefaultInstanceForType() {
+          return org.apache.mesos.Protos.ContainerInfo.DockerInfo.getDefaultInstance();
+        }
+
+        public org.apache.mesos.Protos.ContainerInfo.DockerInfo build() {
+          org.apache.mesos.Protos.ContainerInfo.DockerInfo result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.Protos.ContainerInfo.DockerInfo buildPartial() {
+          org.apache.mesos.Protos.ContainerInfo.DockerInfo result = new org.apache.mesos.Protos.ContainerInfo.DockerInfo(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.image_ = image_;
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          result.network_ = network_;
+          if (portMappingsBuilder_ == null) {
+            if (((bitField0_ & 0x00000004) == 0x00000004)) {
+              portMappings_ = java.util.Collections.unmodifiableList(portMappings_);
+              bitField0_ = (bitField0_ & ~0x00000004);
+            }
+            result.portMappings_ = portMappings_;
+          } else {
+            result.portMappings_ = portMappingsBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          result.privileged_ = privileged_;
+          if (parametersBuilder_ == null) {
+            if (((bitField0_ & 0x00000010) == 0x00000010)) {
+              parameters_ = java.util.Collections.unmodifiableList(parameters_);
+              bitField0_ = (bitField0_ & ~0x00000010);
+            }
+            result.parameters_ = parameters_;
+          } else {
+            result.parameters_ = parametersBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+            to_bitField0_ |= 0x00000008;
+          }
+          result.forcePullImage_ = forcePullImage_;
+          if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+            to_bitField0_ |= 0x00000010;
+          }
+          result.volumeDriver_ = volumeDriver_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.Protos.ContainerInfo.DockerInfo) {
+            return mergeFrom((org.apache.mesos.Protos.ContainerInfo.DockerInfo)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.Protos.ContainerInfo.DockerInfo other) {
+          if (other == org.apache.mesos.Protos.ContainerInfo.DockerInfo.getDefaultInstance()) return this;
+          if (other.hasImage()) {
+            bitField0_ |= 0x00000001;
+            image_ = other.image_;
+            onChanged();
+          }
+          if (other.hasNetwork()) {
+            setNetwork(other.getNetwork());
+          }
+          if (portMappingsBuilder_ == null) {
+            if (!other.portMappings_.isEmpty()) {
+              if (portMappings_.isEmpty()) {
+                portMappings_ = other.portMappings_;
+                bitField0_ = (bitField0_ & ~0x00000004);
+              } else {
+                ensurePortMappingsIsMutable();
+                portMappings_.addAll(other.portMappings_);
+              }
+              onChanged();
+            }
+          } else {
+            if (!other.portMappings_.isEmpty()) {
+              if (portMappingsBuilder_.isEmpty()) {
+                portMappingsBuilder_.dispose();
+                portMappingsBuilder_ = null;
+                portMappings_ = other.portMappings_;
+                bitField0_ = (bitField0_ & ~0x00000004);
+                portMappingsBuilder_ = 
+                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                     getPortMappingsFieldBuilder() : null;
+              } else {
+                portMappingsBuilder_.addAllMessages(other.portMappings_);
+              }
+            }
+          }
+          if (other.hasPrivileged()) {
+            setPrivileged(other.getPrivileged());
+          }
+          if (parametersBuilder_ == null) {
+            if (!other.parameters_.isEmpty()) {
+              if (parameters_.isEmpty()) {
+                parameters_ = other.parameters_;
+                bitField0_ = (bitField0_ & ~0x00000010);
+              } else {
+                ensureParametersIsMutable();
+                parameters_.addAll(other.parameters_);
+              }
+              onChanged();
+            }
+          } else {
+            if (!other.parameters_.isEmpty()) {
+              if (parametersBuilder_.isEmpty()) {
+                parametersBuilder_.dispose();
+                parametersBuilder_ = null;
+                parameters_ = other.parameters_;
+                bitField0_ = (bitField0_ & ~0x00000010);
+                parametersBuilder_ = 
+                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                     getParametersFieldBuilder() : null;
+              } else {
+                parametersBuilder_.addAllMessages(other.parameters_);
+              }
+            }
+          }
+          if (other.hasForcePullImage()) {
+            setForcePullImage(other.getForcePullImage());
+          }
+          if (other.hasVolumeDriver()) {
+            bitField0_ |= 0x00000040;
+            volumeDriver_ = other.volumeDriver_;
+            onChanged();
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasImage()) {
+            
+            return false;
+          }
+          for (int i = 0; i < getPortMappingsCount(); i++) {
+            if (!getPortMappings(i).isInitialized()) {
+              
+              return false;
+            }
+          }
+          for (int i = 0; i < getParametersCount(); i++) {
+            if (!getParameters(i).isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.Protos.ContainerInfo.DockerInfo parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.Protos.ContainerInfo.DockerInfo) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required string image = 1;
+        private java.lang.Object image_ = "";
+        /**
+         * <code>required string image = 1;</code>
+         *
+         * <pre>
+         * The docker image that is going to be passed to the registry.
+         * </pre>
+         */
+        public boolean hasImage() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required string image = 1;</code>
+         *
+         * <pre>
+         * The docker image that is going to be passed to the registry.
+         * </pre>
+         */
+        public java.lang.String getImage() {
+          java.lang.Object ref = image_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            image_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>required string image = 1;</code>
+         *
+         * <pre>
+         * The docker image that is going to be passed to the registry.
+         * </pre>
+         */
+        public com.google.protobuf.ByteString
+            getImageBytes() {
+          java.lang.Object ref = image_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            image_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>required string image = 1;</code>
+         *
+         * <pre>
+         * The docker image that is going to be passed to the registry.
+         * </pre>
+         */
+        public Builder setImage(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          image_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required string image = 1;</code>
+         *
+         * <pre>
+         * The docker image that is going to be passed to the registry.
+         * </pre>
+         */
+        public Builder clearImage() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          image_ = getDefaultInstance().getImage();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required string image = 1;</code>
+         *
+         * <pre>
+         * The docker image that is going to be passed to the registry.
+         * </pre>
+         */
+        public Builder setImageBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          image_ = value;
+          onChanged();
+          return this;
+        }
+
+        // optional .mesos.ContainerInfo.DockerInfo.Network network = 2 [default = HOST];
+        private org.apache.mesos.Protos.ContainerInfo.DockerInfo.Network network_ = org.apache.mesos.Protos.ContainerInfo.DockerInfo.Network.HOST;
+        /**
+         * <code>optional .mesos.ContainerInfo.DockerInfo.Network network = 2 [default = HOST];</code>
+         */
+        public boolean hasNetwork() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional .mesos.ContainerInfo.DockerInfo.Network network = 2 [default = HOST];</code>
+         */
+        public org.apache.mesos.Protos.ContainerInfo.DockerInfo.Network getNetwork() {
+          return network_;
+        }
+        /**
+         * <code>optional .mesos.ContainerInfo.DockerInfo.Network network = 2 [default = HOST];</code>
+         */
+        public Builder setNetwork(org.apache.mesos.Protos.ContainerInfo.DockerInfo.Network value) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          bitField0_ |= 0x00000002;
+          network_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional .mesos.ContainerInfo.DockerInfo.Network network = 2 [default = HOST];</code>
+         */
+        public Builder clearNetwork() {
+          bitField0_ = (bitField0_ & ~0x00000002);
+          network_ = org.apache.mesos.Protos.ContainerInfo.DockerInfo.Network.HOST;
+          onChanged();
+          return this;
+        }
+
+        // repeated .mesos.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;
+        private java.util.List<org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping> portMappings_ =
+          java.util.Collections.emptyList();
+        private void ensurePortMappingsIsMutable() {
+          if (!((bitField0_ & 0x00000004) == 0x00000004)) {
+            portMappings_ = new java.util.ArrayList<org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping>(portMappings_);
+            bitField0_ |= 0x00000004;
+           }
+        }
+
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping, org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping.Builder, org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMappingOrBuilder> portMappingsBuilder_;
+
+        /**
+         * <code>repeated .mesos.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+         */
+        public java.util.List<org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping> getPortMappingsList() {
+          if (portMappingsBuilder_ == null) {
+            return java.util.Collections.unmodifiableList(portMappings_);
+          } else {
+            return portMappingsBuilder_.getMessageList();
+          }
+        }
+        /**
+         * <code>repeated .mesos.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+         */
+        public int getPortMappingsCount() {
+          if (portMappingsBuilder_ == null) {
+            return portMappings_.size();
+          } else {
+            return portMappingsBuilder_.getCount();
+          }
+        }
+        /**
+         * <code>repeated .mesos.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+         */
+        public org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping getPortMappings(int index) {
+          if (portMappingsBuilder_ == null) {
+            return portMappings_.get(index);
+          } else {
+            return portMappingsBuilder_.getMessage(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+         */
+        public Builder setPortMappings(
+            int index, org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping value) {
+          if (portMappingsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensurePortMappingsIsMutable();
+            portMappings_.set(index, value);
+            onChanged();
+          } else {
+            portMappingsBuilder_.setMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+         */
+        public Builder setPortMappings(
+            int index, org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping.Builder builderForValue) {
+          if (portMappingsBuilder_ == null) {
+            ensurePortMappingsIsMutable();
+            portMappings_.set(index, builderForValue.build());
+            onChanged();
+          } else {
+            portMappingsBuilder_.setMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+         */
+        public Builder addPortMappings(org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping value) {
+          if (portMappingsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensurePortMappingsIsMutable();
+            portMappings_.add(value);
+            onChanged();
+          } else {
+            portMappingsBuilder_.addMessage(value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+         */
+        public Builder addPortMappings(
+            int index, org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping value) {
+          if (portMappingsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensurePortMappingsIsMutable();
+            portMappings_.add(index, value);
+            onChanged();
+          } else {
+            portMappingsBuilder_.addMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+         */
+        public Builder addPortMappings(
+            org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping.Builder builderForValue) {
+          if (portMappingsBuilder_ == null) {
+            ensurePortMappingsIsMutable();
+            portMappings_.add(builderForValue.build());
+            onChanged();
+          } else {
+            portMappingsBuilder_.addMessage(builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+         */
+        public Builder addPortMappings(
+            int index, org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping.Builder builderForValue) {
+          if (portMappingsBuilder_ == null) {
+            ensurePortMappingsIsMutable();
+            portMappings_.add(index, builderForValue.build());
+            onChanged();
+          } else {
+            portMappingsBuilder_.addMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+         */
+        public Builder addAllPortMappings(
+            java.lang.Iterable<? extends org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping> values) {
+          if (portMappingsBuilder_ == null) {
+            ensurePortMappingsIsMutable();
+            super.addAll(values, portMappings_);
+            onChanged();
+          } else {
+            portMappingsBuilder_.addAllMessages(values);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+         */
+        public Builder clearPortMappings() {
+          if (portMappingsBuilder_ == null) {
+            portMappings_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000004);
+            onChanged();
+          } else {
+            portMappingsBuilder_.clear();
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+         */
+        public Builder removePortMappings(int index) {
+          if (portMappingsBuilder_ == null) {
+            ensurePortMappingsIsMutable();
+            portMappings_.remove(index);
+            onChanged();
+          } else {
+            portMappingsBuilder_.remove(index);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+         */
+        public org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping.Builder getPortMappingsBuilder(
+            int index) {
+          return getPortMappingsFieldBuilder().getBuilder(index);
+        }
+        /**
+         * <code>repeated .mesos.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+         */
+        public org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMappingOrBuilder getPortMappingsOrBuilder(
+            int index) {
+          if (portMappingsBuilder_ == null) {
+            return portMappings_.get(index);  } else {
+            return portMappingsBuilder_.getMessageOrBuilder(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMappingOrBuilder> 
+             getPortMappingsOrBuilderList() {
+          if (portMappingsBuilder_ != null) {
+            return portMappingsBuilder_.getMessageOrBuilderList();
+          } else {
+            return java.util.Collections.unmodifiableList(portMappings_);
+          }
+        }
+        /**
+         * <code>repeated .mesos.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+         */
+        public org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping.Builder addPortMappingsBuilder() {
+          return getPortMappingsFieldBuilder().addBuilder(
+              org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+         */
+        public org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping.Builder addPortMappingsBuilder(
+            int index) {
+          return getPortMappingsFieldBuilder().addBuilder(
+              index, org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+         */
+        public java.util.List<org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping.Builder> 
+             getPortMappingsBuilderList() {
+          return getPortMappingsFieldBuilder().getBuilderList();
+        }
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping, org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping.Builder, org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMappingOrBuilder> 
+            getPortMappingsFieldBuilder() {
+          if (portMappingsBuilder_ == null) {
+            portMappingsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping, org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMapping.Builder, org.apache.mesos.Protos.ContainerInfo.DockerInfo.PortMappingOrBuilder>(
+                    portMappings_,
+                    ((bitField0_ & 0x00000004) == 0x00000004),
+                    getParentForChildren(),
+                    isClean());
+            portMappings_ = null;
+          }
+          return portMappingsBuilder_;
+        }
+
+        // optional bool privileged = 4 [default = false];
+        private boolean privileged_ ;
+        /**
+         * <code>optional bool privileged = 4 [default = false];</code>
+         */
+        public boolean hasPrivileged() {
+          return ((bitField0_ & 0x00000008) == 0x00000008);
+        }
+        /**
+         * <code>optional bool privileged = 4 [default = false];</code>
+         */
+        public boolean getPrivileged() {
+          return privileged_;
+        }
+        /**
+         * <code>optional bool privileged = 4 [default = false];</code>
+         */
+        public Builder setPrivileged(boolean value) {
+          bitField0_ |= 0x00000008;
+          privileged_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional bool privileged = 4 [default = false];</code>
+         */
+        public Builder clearPrivileged() {
+          bitField0_ = (bitField0_ & ~0x00000008);
+          privileged_ = false;
+          onChanged();
+          return this;
+        }
+
+        // repeated .mesos.Parameter parameters = 5;
+        private java.util.List<org.apache.mesos.Protos.Parameter> parameters_ =
+          java.util.Collections.emptyList();
+        private void ensureParametersIsMutable() {
+          if (!((bitField0_ & 0x00000010) == 0x00000010)) {
+            parameters_ = new java.util.ArrayList<org.apache.mesos.Protos.Parameter>(parameters_);
+            bitField0_ |= 0x00000010;
+           }
+        }
+
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.Protos.Parameter, org.apache.mesos.Protos.Parameter.Builder, org.apache.mesos.Protos.ParameterOrBuilder> parametersBuilder_;
+
+        /**
+         * <code>repeated .mesos.Parameter parameters = 5;</code>
+         *
+         * <pre>
+         * Allowing arbitrary parameters to be passed to docker CLI.
+         * Note that anything passed to this field is not guaranteed
+         * to be supported moving forward, as we might move away from
+         * the docker CLI.
+         * </pre>
+         */
+        public java.util.List<org.apache.mesos.Protos.Parameter> getParametersList() {
+          if (parametersBuilder_ == null) {
+            return java.util.Collections.unmodifiableList(parameters_);
+          } else {
+            return parametersBuilder_.getMessageList();
+          }
+        }
+        /**
+         * <code>repeated .mesos.Parameter parameters = 5;</code>
+         *
+         * <pre>
+         * Allowing arbitrary parameters to be passed to docker CLI.
+         * Note that anything passed to this field is not guaranteed
+         * to be supported moving forward, as we might move away from
+         * the docker CLI.
+         * </pre>
+         */
+        public int getParametersCount() {
+          if (parametersBuilder_ == null) {
+            return parameters_.size();
+          } else {
+            return parametersBuilder_.getCount();
+          }
+        }
+        /**
+         * <code>repeated .mesos.Parameter parameters = 5;</code>
+         *
+         * <pre>
+         * Allowing arbitrary parameters to be passed to docker CLI.
+         * Note that anything passed to this field is not guaranteed
+         * to be supported moving forward, as we might move away from
+         * the docker CLI.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.Parameter getParameters(int index) {
+          if (parametersBuilder_ == null) {
+            return parameters_.get(index);
+          } else {
+            return parametersBuilder_.getMessage(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.Parameter parameters = 5;</code>
+         *
+         * <pre>
+         * Allowing arbitrary parameters to be passed to docker CLI.
+         * Note that anything passed to this field is not guaranteed
+         * to be supported moving forward, as we might move away from
+         * the docker CLI.
+         * </pre>
+         */
+        public Builder setParameters(
+            int index, org.apache.mesos.Protos.Parameter value) {
+          if (parametersBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureParametersIsMutable();
+            parameters_.set(index, value);
+            onChanged();
+          } else {
+            parametersBuilder_.setMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Parameter parameters = 5;</code>
+         *
+         * <pre>
+         * Allowing arbitrary parameters to be passed to docker CLI.
+         * Note that anything passed to this field is not guaranteed
+         * to be supported moving forward, as we might move away from
+         * the docker CLI.
+         * </pre>
+         */
+        public Builder setParameters(
+            int index, org.apache.mesos.Protos.Parameter.Builder builderForValue) {
+          if (parametersBuilder_ == null) {
+            ensureParametersIsMutable();
+            parameters_.set(index, builderForValue.build());
+            onChanged();
+          } else {
+            parametersBuilder_.setMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Parameter parameters = 5;</code>
+         *
+         * <pre>
+         * Allowing arbitrary parameters to be passed to docker CLI.
+         * Note that anything passed to this field is not guaranteed
+         * to be supported moving forward, as we might move away from
+         * the docker CLI.
+         * </pre>
+         */
+        public Builder addParameters(org.apache.mesos.Protos.Parameter value) {
+          if (parametersBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureParametersIsMutable();
+            parameters_.add(value);
+            onChanged();
+          } else {
+            parametersBuilder_.addMessage(value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Parameter parameters = 5;</code>
+         *
+         * <pre>
+         * Allowing arbitrary parameters to be passed to docker CLI.
+         * Note that anything passed to this field is not guaranteed
+         * to be supported moving forward, as we might move away from
+         * the docker CLI.
+         * </pre>
+         */
+        public Builder addParameters(
+            int index, org.apache.mesos.Protos.Parameter value) {
+          if (parametersBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureParametersIsMutable();
+            parameters_.add(index, value);
+            onChanged();
+          } else {
+            parametersBuilder_.addMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Parameter parameters = 5;</code>
+         *
+         * <pre>
+         * Allowing arbitrary parameters to be passed to docker CLI.
+         * Note that anything passed to this field is not guaranteed
+         * to be supported moving forward, as we might move away from
+         * the docker CLI.
+         * </pre>
+         */
+        public Builder addParameters(
+            org.apache.mesos.Protos.Parameter.Builder builderForValue) {
+          if (parametersBuilder_ == null) {
+            ensureParametersIsMutable();
+            parameters_.add(builderForValue.build());
+            onChanged();
+          } else {
+            parametersBuilder_.addMessage(builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Parameter parameters = 5;</code>
+         *
+         * <pre>
+         * Allowing arbitrary parameters to be passed to docker CLI.
+         * Note that anything passed to this field is not guaranteed
+         * to be supported moving forward, as we might move away from
+         * the docker CLI.
+         * </pre>
+         */
+        public Builder addParameters(
+            int index, org.apache.mesos.Protos.Parameter.Builder builderForValue) {
+          if (parametersBuilder_ == null) {
+            ensureParametersIsMutable();
+            parameters_.add(index, builderForValue.build());
+            onChanged();
+          } else {
+            parametersBuilder_.addMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Parameter parameters = 5;</code>
+         *
+         * <pre>
+         * Allowing arbitrary parameters to be passed to docker CLI.
+         * Note that anything passed to this field is not guaranteed
+         * to be supported moving forward, as we might move away from
+         * the docker CLI.
+         * </pre>
+         */
+        public Builder addAllParameters(
+            java.lang.Iterable<? extends org.apache.mesos.Protos.Parameter> values) {
+          if (parametersBuilder_ == null) {
+            ensureParametersIsMutable();
+            super.addAll(values, parameters_);
+            onChanged();
+          } else {
+            parametersBuilder_.addAllMessages(values);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Parameter parameters = 5;</code>
+         *
+         * <pre>
+         * Allowing arbitrary parameters to be passed to docker CLI.
+         * Note that anything passed to this field is not guaranteed
+         * to be supported moving forward, as we might move away from
+         * the docker CLI.
+         * </pre>
+         */
+        public Builder clearParameters() {
+          if (parametersBuilder_ == null) {
+            parameters_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000010);
+            onChanged();
+          } else {
+            parametersBuilder_.clear();
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Parameter parameters = 5;</code>
+         *
+         * <pre>
+         * Allowing arbitrary parameters to be passed to docker CLI.
+         * Note that anything passed to this field is not guaranteed
+         * to be supported moving forward, as we might move away from
+         * the docker CLI.
+         * </pre>
+         */
+        public Builder removeParameters(int index) {
+          if (parametersBuilder_ == null) {
+            ensureParametersIsMutable();
+            parameters_.remove(index);
+            onChanged();
+          } else {
+            parametersBuilder_.remove(index);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Parameter parameters = 5;</code>
+         *
+         * <pre>
+         * Allowing arbitrary parameters to be passed to docker CLI.
+         * Note that anything passed to this field is not guaranteed
+         * to be supported moving forward, as we might move away from
+         * the docker CLI.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.Parameter.Builder getParametersBuilder(
+            int index) {
+          return getParametersFieldBuilder().getBuilder(index);
+        }
+        /**
+         * <code>repeated .mesos.Parameter parameters = 5;</code>
+         *
+         * <pre>
+         * Allowing arbitrary parameters to be passed to docker CLI.
+         * Note that anything passed to this field is not guaranteed
+         * to be supported moving forward, as we might move away from
+         * the docker CLI.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.ParameterOrBuilder getParametersOrBuilder(
+            int index) {
+          if (parametersBuilder_ == null) {
+            return parameters_.get(index);  } else {
+            return parametersBuilder_.getMessageOrBuilder(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.Parameter parameters = 5;</code>
+         *
+         * <pre>
+         * Allowing arbitrary parameters to be passed to docker CLI.
+         * Note that anything passed to this field is not guaranteed
+         * to be supported moving forward, as we might move away from
+         * the docker CLI.
+         * </pre>
+         */
+        public java.util.List<? extends org.apache.mesos.Protos.ParameterOrBuilder> 
+             getParametersOrBuilderList() {
+          if (parametersBuilder_ != null) {
+            return parametersBuilder_.getMessageOrBuilderList();
+          } else {
+            return java.util.Collections.unmodifiableList(parameters_);
+          }
+        }
+        /**
+         * <code>repeated .mesos.Parameter parameters = 5;</code>
+         *
+         * <pre>
+         * Allowing arbitrary parameters to be passed to docker CLI.
+         * Note that anything passed to this field is not guaranteed
+         * to be supported moving forward, as we might move away from
+         * the docker CLI.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.Parameter.Builder addParametersBuilder() {
+          return getParametersFieldBuilder().addBuilder(
+              org.apache.mesos.Protos.Parameter.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.Parameter parameters = 5;</code>
+         *
+         * <pre>
+         * Allowing arbitrary parameters to be passed to docker CLI.
+         * Note that anything passed to this field is not guaranteed
+         * to be supported moving forward, as we might move away from
+         * the docker CLI.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.Parameter.Builder addParametersBuilder(
+            int index) {
+          return getParametersFieldBuilder().addBuilder(
+              index, org.apache.mesos.Protos.Parameter.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.Parameter parameters = 5;</code>
+         *
+         * <pre>
+         * Allowing arbitrary parameters to be passed to docker CLI.
+         * Note that anything passed to this field is not guaranteed
+         * to be supported moving forward, as we might move away from
+         * the docker CLI.
+         * </pre>
+         */
+        public java.util.List<org.apache.mesos.Protos.Parameter.Builder> 
+             getParametersBuilderList() {
+          return getParametersFieldBuilder().getBuilderList();
+        }
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.Protos.Parameter, org.apache.mesos.Protos.Parameter.Builder, org.apache.mesos.Protos.ParameterOrBuilder> 
+            getParametersFieldBuilder() {
+          if (parametersBuilder_ == null) {
+            parametersBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.Protos.Parameter, org.apache.mesos.Protos.Parameter.Builder, org.apache.mesos.Protos.ParameterOrBuilder>(
+                    parameters_,
+                    ((bitField0_ & 0x00000010) == 0x00000010),
+                    getParentForChildren(),
+                    isClean());
+            parameters_ = null;
+          }
+          return parametersBuilder_;
+        }
+
+        // optional bool force_pull_image = 6;
+        private boolean forcePullImage_ ;
+        /**
+         * <code>optional bool force_pull_image = 6;</code>
+         *
+         * <pre>
+         * With this flag set to true, the docker containerizer will
+         * pull the docker image from the registry even if the image
+         * is already downloaded on the slave.
+         * </pre>
+         */
+        public boolean hasForcePullImage() {
+          return ((bitField0_ & 0x00000020) == 0x00000020);
+        }
+        /**
+         * <code>optional bool force_pull_image = 6;</code>
+         *
+         * <pre>
+         * With this flag set to true, the docker containerizer will
+         * pull the docker image from the registry even if the image
+         * is already downloaded on the slave.
+         * </pre>
+         */
+        public boolean getForcePullImage() {
+          return forcePullImage_;
+        }
+        /**
+         * <code>optional bool force_pull_image = 6;</code>
+         *
+         * <pre>
+         * With this flag set to true, the docker containerizer will
+         * pull the docker image from the registry even if the image
+         * is already downloaded on the slave.
+         * </pre>
+         */
+        public Builder setForcePullImage(boolean value) {
+          bitField0_ |= 0x00000020;
+          forcePullImage_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional bool force_pull_image = 6;</code>
+         *
+         * <pre>
+         * With this flag set to true, the docker containerizer will
+         * pull the docker image from the registry even if the image
+         * is already downloaded on the slave.
+         * </pre>
+         */
+        public Builder clearForcePullImage() {
+          bitField0_ = (bitField0_ & ~0x00000020);
+          forcePullImage_ = false;
+          onChanged();
+          return this;
+        }
+
+        // optional string volume_driver = 7 [deprecated = true];
+        private java.lang.Object volumeDriver_ = "";
+        /**
+         * <code>optional string volume_driver = 7 [deprecated = true];</code>
+         *
+         * <pre>
+         * The name of volume driver plugin.
+         * </pre>
+         */
+        @java.lang.Deprecated public boolean hasVolumeDriver() {
+          return ((bitField0_ & 0x00000040) == 0x00000040);
+        }
+        /**
+         * <code>optional string volume_driver = 7 [deprecated = true];</code>
+         *
+         * <pre>
+         * The name of volume driver plugin.
+         * </pre>
+         */
+        @java.lang.Deprecated public java.lang.String getVolumeDriver() {
+          java.lang.Object ref = volumeDriver_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            volumeDriver_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>optional string volume_driver = 7 [deprecated = true];</code>
+         *
+         * <pre>
+         * The name of volume driver plugin.
+         * </pre>
+         */
+        @java.lang.Deprecated public com.google.protobuf.ByteString
+            getVolumeDriverBytes() {
+          java.lang.Object ref = volumeDriver_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            volumeDriver_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>optional string volume_driver = 7 [deprecated = true];</code>
+         *
+         * <pre>
+         * The name of volume driver plugin.
+         * </pre>
+         */
+        @java.lang.Deprecated public Builder setVolumeDriver(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000040;
+          volumeDriver_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string volume_driver = 7 [deprecated = true];</code>
+         *
+         * <pre>
+         * The name of volume driver plugin.
+         * </pre>
+         */
+        @java.lang.Deprecated public Builder clearVolumeDriver() {
+          bitField0_ = (bitField0_ & ~0x00000040);
+          volumeDriver_ = getDefaultInstance().getVolumeDriver();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string volume_driver = 7 [deprecated = true];</code>
+         *
+         * <pre>
+         * The name of volume driver plugin.
+         * </pre>
+         */
+        @java.lang.Deprecated public Builder setVolumeDriverBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000040;
+          volumeDriver_ = value;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.ContainerInfo.DockerInfo)
+      }
+
+      static {
+        defaultInstance = new DockerInfo(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.ContainerInfo.DockerInfo)
+    }
+
+    public interface MesosInfoOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // optional .mesos.Image image = 1;
+      /**
+       * <code>optional .mesos.Image image = 1;</code>
+       */
+      boolean hasImage();
+      /**
+       * <code>optional .mesos.Image image = 1;</code>
+       */
+      org.apache.mesos.Protos.Image getImage();
+      /**
+       * <code>optional .mesos.Image image = 1;</code>
+       */
+      org.apache.mesos.Protos.ImageOrBuilder getImageOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.ContainerInfo.MesosInfo}
+     */
+    public static final class MesosInfo extends
+        com.google.protobuf.GeneratedMessage
+        implements MesosInfoOrBuilder {
+      // Use MesosInfo.newBuilder() to construct.
+      private MesosInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private MesosInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final MesosInfo defaultInstance;
+      public static MesosInfo getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public MesosInfo getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private MesosInfo(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.Protos.Image.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = image_.toBuilder();
+                }
+                image_ = input.readMessage(org.apache.mesos.Protos.Image.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(image_);
+                  image_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_ContainerInfo_MesosInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_ContainerInfo_MesosInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.ContainerInfo.MesosInfo.class, org.apache.mesos.Protos.ContainerInfo.MesosInfo.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<MesosInfo> PARSER =
+          new com.google.protobuf.AbstractParser<MesosInfo>() {
+        public MesosInfo parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new MesosInfo(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<MesosInfo> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // optional .mesos.Image image = 1;
+      public static final int IMAGE_FIELD_NUMBER = 1;
+      private org.apache.mesos.Protos.Image image_;
+      /**
+       * <code>optional .mesos.Image image = 1;</code>
+       */
+      public boolean hasImage() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.Image image = 1;</code>
+       */
+      public org.apache.mesos.Protos.Image getImage() {
+        return image_;
+      }
+      /**
+       * <code>optional .mesos.Image image = 1;</code>
+       */
+      public org.apache.mesos.Protos.ImageOrBuilder getImageOrBuilder() {
+        return image_;
+      }
+
+      private void initFields() {
+        image_ = org.apache.mesos.Protos.Image.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (hasImage()) {
+          if (!getImage().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, image_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, image_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.Protos.ContainerInfo.MesosInfo parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.ContainerInfo.MesosInfo parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.ContainerInfo.MesosInfo parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.ContainerInfo.MesosInfo parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.ContainerInfo.MesosInfo parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.ContainerInfo.MesosInfo parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.ContainerInfo.MesosInfo parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.Protos.ContainerInfo.MesosInfo parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.ContainerInfo.MesosInfo parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.ContainerInfo.MesosInfo parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.Protos.ContainerInfo.MesosInfo prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.ContainerInfo.MesosInfo}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.Protos.ContainerInfo.MesosInfoOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_ContainerInfo_MesosInfo_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_ContainerInfo_MesosInfo_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.ContainerInfo.MesosInfo.class, org.apache.mesos.Protos.ContainerInfo.MesosInfo.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.Protos.ContainerInfo.MesosInfo.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getImageFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (imageBuilder_ == null) {
+            image_ = org.apache.mesos.Protos.Image.getDefaultInstance();
+          } else {
+            imageBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.Protos.internal_static_mesos_ContainerInfo_MesosInfo_descriptor;
+        }
+
+        public org.apache.mesos.Protos.ContainerInfo.MesosInfo getDefaultInstanceForType() {
+          return org.apache.mesos.Protos.ContainerInfo.MesosInfo.getDefaultInstance();
+        }
+
+        public org.apache.mesos.Protos.ContainerInfo.MesosInfo build() {
+          org.apache.mesos.Protos.ContainerInfo.MesosInfo result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.Protos.ContainerInfo.MesosInfo buildPartial() {
+          org.apache.mesos.Protos.ContainerInfo.MesosInfo result = new org.apache.mesos.Protos.ContainerInfo.MesosInfo(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (imageBuilder_ == null) {
+            result.image_ = image_;
+          } else {
+            result.image_ = imageBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.Protos.ContainerInfo.MesosInfo) {
+            return mergeFrom((org.apache.mesos.Protos.ContainerInfo.MesosInfo)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.Protos.ContainerInfo.MesosInfo other) {
+          if (other == org.apache.mesos.Protos.ContainerInfo.MesosInfo.getDefaultInstance()) return this;
+          if (other.hasImage()) {
+            mergeImage(other.getImage());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (hasImage()) {
+            if (!getImage().isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.Protos.ContainerInfo.MesosInfo parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.Protos.ContainerInfo.MesosInfo) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // optional .mesos.Image image = 1;
+        private org.apache.mesos.Protos.Image image_ = org.apache.mesos.Protos.Image.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Image, org.apache.mesos.Protos.Image.Builder, org.apache.mesos.Protos.ImageOrBuilder> imageBuilder_;
+        /**
+         * <code>optional .mesos.Image image = 1;</code>
+         */
+        public boolean hasImage() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional .mesos.Image image = 1;</code>
+         */
+        public org.apache.mesos.Protos.Image getImage() {
+          if (imageBuilder_ == null) {
+            return image_;
+          } else {
+            return imageBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.Image image = 1;</code>
+         */
+        public Builder setImage(org.apache.mesos.Protos.Image value) {
+          if (imageBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            image_ = value;
+            onChanged();
+          } else {
+            imageBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Image image = 1;</code>
+         */
+        public Builder setImage(
+            org.apache.mesos.Protos.Image.Builder builderForValue) {
+          if (imageBuilder_ == null) {
+            image_ = builderForValue.build();
+            onChanged();
+          } else {
+            imageBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Image image = 1;</code>
+         */
+        public Builder mergeImage(org.apache.mesos.Protos.Image value) {
+          if (imageBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                image_ != org.apache.mesos.Protos.Image.getDefaultInstance()) {
+              image_ =
+                org.apache.mesos.Protos.Image.newBuilder(image_).mergeFrom(value).buildPartial();
+            } else {
+              image_ = value;
+            }
+            onChanged();
+          } else {
+            imageBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Image image = 1;</code>
+         */
+        public Builder clearImage() {
+          if (imageBuilder_ == null) {
+            image_ = org.apache.mesos.Protos.Image.getDefaultInstance();
+            onChanged();
+          } else {
+            imageBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Image image = 1;</code>
+         */
+        public org.apache.mesos.Protos.Image.Builder getImageBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getImageFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.Image image = 1;</code>
+         */
+        public org.apache.mesos.Protos.ImageOrBuilder getImageOrBuilder() {
+          if (imageBuilder_ != null) {
+            return imageBuilder_.getMessageOrBuilder();
+          } else {
+            return image_;
+          }
+        }
+        /**
+         * <code>optional .mesos.Image image = 1;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Image, org.apache.mesos.Protos.Image.Builder, org.apache.mesos.Protos.ImageOrBuilder> 
+            getImageFieldBuilder() {
+          if (imageBuilder_ == null) {
+            imageBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.Image, org.apache.mesos.Protos.Image.Builder, org.apache.mesos.Protos.ImageOrBuilder>(
+                    image_,
+                    getParentForChildren(),
+                    isClean());
+            image_ = null;
+          }
+          return imageBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.ContainerInfo.MesosInfo)
+      }
+
+      static {
+        defaultInstance = new MesosInfo(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.ContainerInfo.MesosInfo)
+    }
+
+    private int bitField0_;
+    // required .mesos.ContainerInfo.Type type = 1;
+    public static final int TYPE_FIELD_NUMBER = 1;
+    private org.apache.mesos.Protos.ContainerInfo.Type type_;
+    /**
+     * <code>required .mesos.ContainerInfo.Type type = 1;</code>
+     */
+    public boolean hasType() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required .mesos.ContainerInfo.Type type = 1;</code>
+     */
+    public org.apache.mesos.Protos.ContainerInfo.Type getType() {
+      return type_;
+    }
+
+    // repeated .mesos.Volume volumes = 2;
+    public static final int VOLUMES_FIELD_NUMBER = 2;
+    private java.util.List<org.apache.mesos.Protos.Volume> volumes_;
+    /**
+     * <code>repeated .mesos.Volume volumes = 2;</code>
+     */
+    public java.util.List<org.apache.mesos.Protos.Volume> getVolumesList() {
+      return volumes_;
+    }
+    /**
+     * <code>repeated .mesos.Volume volumes = 2;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.Protos.VolumeOrBuilder> 
+        getVolumesOrBuilderList() {
+      return volumes_;
+    }
+    /**
+     * <code>repeated .mesos.Volume volumes = 2;</code>
+     */
+    public int getVolumesCount() {
+      return volumes_.size();
+    }
+    /**
+     * <code>repeated .mesos.Volume volumes = 2;</code>
+     */
+    public org.apache.mesos.Protos.Volume getVolumes(int index) {
+      return volumes_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.Volume volumes = 2;</code>
+     */
+    public org.apache.mesos.Protos.VolumeOrBuilder getVolumesOrBuilder(
+        int index) {
+      return volumes_.get(index);
+    }
+
+    // optional string hostname = 4;
+    public static final int HOSTNAME_FIELD_NUMBER = 4;
+    private java.lang.Object hostname_;
+    /**
+     * <code>optional string hostname = 4;</code>
+     */
+    public boolean hasHostname() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional string hostname = 4;</code>
+     */
+    public java.lang.String getHostname() {
+      java.lang.Object ref = hostname_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          hostname_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string hostname = 4;</code>
+     */
+    public com.google.protobuf.ByteString
+        getHostnameBytes() {
+      java.lang.Object ref = hostname_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        hostname_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional .mesos.ContainerInfo.DockerInfo docker = 3;
+    public static final int DOCKER_FIELD_NUMBER = 3;
+    private org.apache.mesos.Protos.ContainerInfo.DockerInfo docker_;
+    /**
+     * <code>optional .mesos.ContainerInfo.DockerInfo docker = 3;</code>
+     *
+     * <pre>
+     * Only one of the following *Info messages should be set to match
+     * the type.
+     * </pre>
+     */
+    public boolean hasDocker() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional .mesos.ContainerInfo.DockerInfo docker = 3;</code>
+     *
+     * <pre>
+     * Only one of the following *Info messages should be set to match
+     * the type.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.ContainerInfo.DockerInfo getDocker() {
+      return docker_;
+    }
+    /**
+     * <code>optional .mesos.ContainerInfo.DockerInfo docker = 3;</code>
+     *
+     * <pre>
+     * Only one of the following *Info messages should be set to match
+     * the type.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.ContainerInfo.DockerInfoOrBuilder getDockerOrBuilder() {
+      return docker_;
+    }
+
+    // optional .mesos.ContainerInfo.MesosInfo mesos = 5;
+    public static final int MESOS_FIELD_NUMBER = 5;
+    private org.apache.mesos.Protos.ContainerInfo.MesosInfo mesos_;
+    /**
+     * <code>optional .mesos.ContainerInfo.MesosInfo mesos = 5;</code>
+     */
+    public boolean hasMesos() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional .mesos.ContainerInfo.MesosInfo mesos = 5;</code>
+     */
+    public org.apache.mesos.Protos.ContainerInfo.MesosInfo getMesos() {
+      return mesos_;
+    }
+    /**
+     * <code>optional .mesos.ContainerInfo.MesosInfo mesos = 5;</code>
+     */
+    public org.apache.mesos.Protos.ContainerInfo.MesosInfoOrBuilder getMesosOrBuilder() {
+      return mesos_;
+    }
+
+    // repeated .mesos.NetworkInfo network_infos = 7;
+    public static final int NETWORK_INFOS_FIELD_NUMBER = 7;
+    private java.util.List<org.apache.mesos.Protos.NetworkInfo> networkInfos_;
+    /**
+     * <code>repeated .mesos.NetworkInfo network_infos = 7;</code>
+     *
+     * <pre>
+     * A list of network requests. A framework can request multiple IP addresses
+     * for the container.
+     * </pre>
+     */
+    public java.util.List<org.apache.mesos.Protos.NetworkInfo> getNetworkInfosList() {
+      return networkInfos_;
+    }
+    /**
+     * <code>repeated .mesos.NetworkInfo network_infos = 7;</code>
+     *
+     * <pre>
+     * A list of network requests. A framework can request multiple IP addresses
+     * for the container.
+     * </pre>
+     */
+    public java.util.List<? extends org.apache.mesos.Protos.NetworkInfoOrBuilder> 
+        getNetworkInfosOrBuilderList() {
+      return networkInfos_;
+    }
+    /**
+     * <code>repeated .mesos.NetworkInfo network_infos = 7;</code>
+     *
+     * <pre>
+     * A list of network requests. A framework can request multiple IP addresses
+     * for the container.
+     * </pre>
+     */
+    public int getNetworkInfosCount() {
+      return networkInfos_.size();
+    }
+    /**
+     * <code>repeated .mesos.NetworkInfo network_infos = 7;</code>
+     *
+     * <pre>
+     * A list of network requests. A framework can request multiple IP addresses
+     * for the container.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.NetworkInfo getNetworkInfos(int index) {
+      return networkInfos_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.NetworkInfo network_infos = 7;</code>
+     *
+     * <pre>
+     * A list of network requests. A framework can request multiple IP addresses
+     * for the container.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.NetworkInfoOrBuilder getNetworkInfosOrBuilder(
+        int index) {
+      return networkInfos_.get(index);
+    }
+
+    // optional .mesos.LinuxInfo linux_info = 8;
+    public static final int LINUX_INFO_FIELD_NUMBER = 8;
+    private org.apache.mesos.Protos.LinuxInfo linuxInfo_;
+    /**
+     * <code>optional .mesos.LinuxInfo linux_info = 8;</code>
+     *
+     * <pre>
+     * Linux specific information for the container.
+     * </pre>
+     */
+    public boolean hasLinuxInfo() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional .mesos.LinuxInfo linux_info = 8;</code>
+     *
+     * <pre>
+     * Linux specific information for the container.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.LinuxInfo getLinuxInfo() {
+      return linuxInfo_;
+    }
+    /**
+     * <code>optional .mesos.LinuxInfo linux_info = 8;</code>
+     *
+     * <pre>
+     * Linux specific information for the container.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.LinuxInfoOrBuilder getLinuxInfoOrBuilder() {
+      return linuxInfo_;
+    }
+
+    // optional .mesos.RLimitInfo rlimit_info = 9;
+    public static final int RLIMIT_INFO_FIELD_NUMBER = 9;
+    private org.apache.mesos.Protos.RLimitInfo rlimitInfo_;
+    /**
+     * <code>optional .mesos.RLimitInfo rlimit_info = 9;</code>
+     *
+     * <pre>
+     * (POSIX only) rlimits of the container.
+     * </pre>
+     */
+    public boolean hasRlimitInfo() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional .mesos.RLimitInfo rlimit_info = 9;</code>
+     *
+     * <pre>
+     * (POSIX only) rlimits of the container.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.RLimitInfo getRlimitInfo() {
+      return rlimitInfo_;
+    }
+    /**
+     * <code>optional .mesos.RLimitInfo rlimit_info = 9;</code>
+     *
+     * <pre>
+     * (POSIX only) rlimits of the container.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.RLimitInfoOrBuilder getRlimitInfoOrBuilder() {
+      return rlimitInfo_;
+    }
+
+    // optional .mesos.TTYInfo tty_info = 10;
+    public static final int TTY_INFO_FIELD_NUMBER = 10;
+    private org.apache.mesos.Protos.TTYInfo ttyInfo_;
+    /**
+     * <code>optional .mesos.TTYInfo tty_info = 10;</code>
+     *
+     * <pre>
+     * If specified a tty will be attached to the container entrypoint.
+     * </pre>
+     */
+    public boolean hasTtyInfo() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional .mesos.TTYInfo tty_info = 10;</code>
+     *
+     * <pre>
+     * If specified a tty will be attached to the container entrypoint.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.TTYInfo getTtyInfo() {
+      return ttyInfo_;
+    }
+    /**
+     * <code>optional .mesos.TTYInfo tty_info = 10;</code>
+     *
+     * <pre>
+     * If specified a tty will be attached to the container entrypoint.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.TTYInfoOrBuilder getTtyInfoOrBuilder() {
+      return ttyInfo_;
+    }
+
+    private void initFields() {
+      type_ = org.apache.mesos.Protos.ContainerInfo.Type.DOCKER;
+      volumes_ = java.util.Collections.emptyList();
+      hostname_ = "";
+      docker_ = org.apache.mesos.Protos.ContainerInfo.DockerInfo.getDefaultInstance();
+      mesos_ = org.apache.mesos.Protos.ContainerInfo.MesosInfo.getDefaultInstance();
+      networkInfos_ = java.util.Collections.emptyList();
+      linuxInfo_ = org.apache.mesos.Protos.LinuxInfo.getDefaultInstance();
+      rlimitInfo_ = org.apache.mesos.Protos.RLimitInfo.getDefaultInstance();
+      ttyInfo_ = org.apache.mesos.Protos.TTYInfo.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasType()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      for (int i = 0; i < getVolumesCount(); i++) {
+        if (!getVolumes(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasDocker()) {
+        if (!getDocker().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasMesos()) {
+        if (!getMesos().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      for (int i = 0; i < getNetworkInfosCount(); i++) {
+        if (!getNetworkInfos(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasTtyInfo()) {
+        if (!getTtyInfo().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeEnum(1, type_.getNumber());
+      }
+      for (int i = 0; i < volumes_.size(); i++) {
+        output.writeMessage(2, volumes_.get(i));
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeMessage(3, docker_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(4, getHostnameBytes());
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeMessage(5, mesos_);
+      }
+      for (int i = 0; i < networkInfos_.size(); i++) {
+        output.writeMessage(7, networkInfos_.get(i));
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeMessage(8, linuxInfo_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeMessage(9, rlimitInfo_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeMessage(10, ttyInfo_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(1, type_.getNumber());
+      }
+      for (int i = 0; i < volumes_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, volumes_.get(i));
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, docker_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(4, getHostnameBytes());
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(5, mesos_);
+      }
+      for (int i = 0; i < networkInfos_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(7, networkInfos_.get(i));
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(8, linuxInfo_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(9, rlimitInfo_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(10, ttyInfo_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.ContainerInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.ContainerInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.ContainerInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.ContainerInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.ContainerInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.ContainerInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.ContainerInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.ContainerInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.ContainerInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.ContainerInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.ContainerInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.ContainerInfo}
+     *
+     * <pre>
+     **
+     * Describes a container configuration and allows extensible
+     * configurations for different container implementations.
+     *
+     * NOTE: `ContainerInfo` may be specified, e.g., by a task, even if no
+     * container image is provided. In this case neither `MesosInfo` nor
+     * `DockerInfo` is set, the required `type` must be `MESOS`. This is to
+     * address a case when a task without an image, e.g., a shell script
+     * with URIs, wants to use features originally designed for containers,
+     * for example custom network isolation via `NetworkInfo`.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.ContainerInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_ContainerInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_ContainerInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.ContainerInfo.class, org.apache.mesos.Protos.ContainerInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.ContainerInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getVolumesFieldBuilder();
+          getDockerFieldBuilder();
+          getMesosFieldBuilder();
+          getNetworkInfosFieldBuilder();
+          getLinuxInfoFieldBuilder();
+          getRlimitInfoFieldBuilder();
+          getTtyInfoFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        type_ = org.apache.mesos.Protos.ContainerInfo.Type.DOCKER;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (volumesBuilder_ == null) {
+          volumes_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000002);
+        } else {
+          volumesBuilder_.clear();
+        }
+        hostname_ = "";
+        bitField0_ = (bitField0_ & ~0x00000004);
+        if (dockerBuilder_ == null) {
+          docker_ = org.apache.mesos.Protos.ContainerInfo.DockerInfo.getDefaultInstance();
+        } else {
+          dockerBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        if (mesosBuilder_ == null) {
+          mesos_ = org.apache.mesos.Protos.ContainerInfo.MesosInfo.getDefaultInstance();
+        } else {
+          mesosBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        if (networkInfosBuilder_ == null) {
+          networkInfos_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000020);
+        } else {
+          networkInfosBuilder_.clear();
+        }
+        if (linuxInfoBuilder_ == null) {
+          linuxInfo_ = org.apache.mesos.Protos.LinuxInfo.getDefaultInstance();
+        } else {
+          linuxInfoBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000040);
+        if (rlimitInfoBuilder_ == null) {
+          rlimitInfo_ = org.apache.mesos.Protos.RLimitInfo.getDefaultInstance();
+        } else {
+          rlimitInfoBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000080);
+        if (ttyInfoBuilder_ == null) {
+          ttyInfo_ = org.apache.mesos.Protos.TTYInfo.getDefaultInstance();
+        } else {
+          ttyInfoBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000100);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_ContainerInfo_descriptor;
+      }
+
+      public org.apache.mesos.Protos.ContainerInfo getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.ContainerInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.ContainerInfo build() {
+        org.apache.mesos.Protos.ContainerInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.ContainerInfo buildPartial() {
+        org.apache.mesos.Protos.ContainerInfo result = new org.apache.mesos.Protos.ContainerInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.type_ = type_;
+        if (volumesBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            volumes_ = java.util.Collections.unmodifiableList(volumes_);
+            bitField0_ = (bitField0_ & ~0x00000002);
+          }
+          result.volumes_ = volumes_;
+        } else {
+          result.volumes_ = volumesBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.hostname_ = hostname_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        if (dockerBuilder_ == null) {
+          result.docker_ = docker_;
+        } else {
+          result.docker_ = dockerBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        if (mesosBuilder_ == null) {
+          result.mesos_ = mesos_;
+        } else {
+          result.mesos_ = mesosBuilder_.build();
+        }
+        if (networkInfosBuilder_ == null) {
+          if (((bitField0_ & 0x00000020) == 0x00000020)) {
+            networkInfos_ = java.util.Collections.unmodifiableList(networkInfos_);
+            bitField0_ = (bitField0_ & ~0x00000020);
+          }
+          result.networkInfos_ = networkInfos_;
+        } else {
+          result.networkInfos_ = networkInfosBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        if (linuxInfoBuilder_ == null) {
+          result.linuxInfo_ = linuxInfo_;
+        } else {
+          result.linuxInfo_ = linuxInfoBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        if (rlimitInfoBuilder_ == null) {
+          result.rlimitInfo_ = rlimitInfo_;
+        } else {
+          result.rlimitInfo_ = rlimitInfoBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        if (ttyInfoBuilder_ == null) {
+          result.ttyInfo_ = ttyInfo_;
+        } else {
+          result.ttyInfo_ = ttyInfoBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.ContainerInfo) {
+          return mergeFrom((org.apache.mesos.Protos.ContainerInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.ContainerInfo other) {
+        if (other == org.apache.mesos.Protos.ContainerInfo.getDefaultInstance()) return this;
+        if (other.hasType()) {
+          setType(other.getType());
+        }
+        if (volumesBuilder_ == null) {
+          if (!other.volumes_.isEmpty()) {
+            if (volumes_.isEmpty()) {
+              volumes_ = other.volumes_;
+              bitField0_ = (bitField0_ & ~0x00000002);
+            } else {
+              ensureVolumesIsMutable();
+              volumes_.addAll(other.volumes_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.volumes_.isEmpty()) {
+            if (volumesBuilder_.isEmpty()) {
+              volumesBuilder_.dispose();
+              volumesBuilder_ = null;
+              volumes_ = other.volumes_;
+              bitField0_ = (bitField0_ & ~0x00000002);
+              volumesBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getVolumesFieldBuilder() : null;
+            } else {
+              volumesBuilder_.addAllMessages(other.volumes_);
+            }
+          }
+        }
+        if (other.hasHostname()) {
+          bitField0_ |= 0x00000004;
+          hostname_ = other.hostname_;
+          onChanged();
+        }
+        if (other.hasDocker()) {
+          mergeDocker(other.getDocker());
+        }
+        if (other.hasMesos()) {
+          mergeMesos(other.getMesos());
+        }
+        if (networkInfosBuilder_ == null) {
+          if (!other.networkInfos_.isEmpty()) {
+            if (networkInfos_.isEmpty()) {
+              networkInfos_ = other.networkInfos_;
+              bitField0_ = (bitField0_ & ~0x00000020);
+            } else {
+              ensureNetworkInfosIsMutable();
+              networkInfos_.addAll(other.networkInfos_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.networkInfos_.isEmpty()) {
+            if (networkInfosBuilder_.isEmpty()) {
+              networkInfosBuilder_.dispose();
+              networkInfosBuilder_ = null;
+              networkInfos_ = other.networkInfos_;
+              bitField0_ = (bitField0_ & ~0x00000020);
+              networkInfosBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getNetworkInfosFieldBuilder() : null;
+            } else {
+              networkInfosBuilder_.addAllMessages(other.networkInfos_);
+            }
+          }
+        }
+        if (other.hasLinuxInfo()) {
+          mergeLinuxInfo(other.getLinuxInfo());
+        }
+        if (other.hasRlimitInfo()) {
+          mergeRlimitInfo(other.getRlimitInfo());
+        }
+        if (other.hasTtyInfo()) {
+          mergeTtyInfo(other.getTtyInfo());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasType()) {
+          
+          return false;
+        }
+        for (int i = 0; i < getVolumesCount(); i++) {
+          if (!getVolumes(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasDocker()) {
+          if (!getDocker().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasMesos()) {
+          if (!getMesos().isInitialized()) {
+            
+            return false;
+          }
+        }
+        for (int i = 0; i < getNetworkInfosCount(); i++) {
+          if (!getNetworkInfos(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasTtyInfo()) {
+          if (!getTtyInfo().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.ContainerInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.ContainerInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required .mesos.ContainerInfo.Type type = 1;
+      private org.apache.mesos.Protos.ContainerInfo.Type type_ = org.apache.mesos.Protos.ContainerInfo.Type.DOCKER;
+      /**
+       * <code>required .mesos.ContainerInfo.Type type = 1;</code>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.ContainerInfo.Type type = 1;</code>
+       */
+      public org.apache.mesos.Protos.ContainerInfo.Type getType() {
+        return type_;
+      }
+      /**
+       * <code>required .mesos.ContainerInfo.Type type = 1;</code>
+       */
+      public Builder setType(org.apache.mesos.Protos.ContainerInfo.Type value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000001;
+        type_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required .mesos.ContainerInfo.Type type = 1;</code>
+       */
+      public Builder clearType() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        type_ = org.apache.mesos.Protos.ContainerInfo.Type.DOCKER;
+        onChanged();
+        return this;
+      }
+
+      // repeated .mesos.Volume volumes = 2;
+      private java.util.List<org.apache.mesos.Protos.Volume> volumes_ =
+        java.util.Collections.emptyList();
+      private void ensureVolumesIsMutable() {
+        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
+          volumes_ = new java.util.ArrayList<org.apache.mesos.Protos.Volume>(volumes_);
+          bitField0_ |= 0x00000002;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.Volume, org.apache.mesos.Protos.Volume.Builder, org.apache.mesos.Protos.VolumeOrBuilder> volumesBuilder_;
+
+      /**
+       * <code>repeated .mesos.Volume volumes = 2;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.Volume> getVolumesList() {
+        if (volumesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(volumes_);
+        } else {
+          return volumesBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.Volume volumes = 2;</code>
+       */
+      public int getVolumesCount() {
+        if (volumesBuilder_ == null) {
+          return volumes_.size();
+        } else {
+          return volumesBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.Volume volumes = 2;</code>
+       */
+      public org.apache.mesos.Protos.Volume getVolumes(int index) {
+        if (volumesBuilder_ == null) {
+          return volumes_.get(index);
+        } else {
+          return volumesBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Volume volumes = 2;</code>
+       */
+      public Builder setVolumes(
+          int index, org.apache.mesos.Protos.Volume value) {
+        if (volumesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureVolumesIsMutable();
+          volumes_.set(index, value);
+          onChanged();
+        } else {
+          volumesBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Volume volumes = 2;</code>
+       */
+      public Builder setVolumes(
+          int index, org.apache.mesos.Protos.Volume.Builder builderForValue) {
+        if (volumesBuilder_ == null) {
+          ensureVolumesIsMutable();
+          volumes_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          volumesBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Volume volumes = 2;</code>
+       */
+      public Builder addVolumes(org.apache.mesos.Protos.Volume value) {
+        if (volumesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureVolumesIsMutable();
+          volumes_.add(value);
+          onChanged();
+        } else {
+          volumesBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Volume volumes = 2;</code>
+       */
+      public Builder addVolumes(
+          int index, org.apache.mesos.Protos.Volume value) {
+        if (volumesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureVolumesIsMutable();
+          volumes_.add(index, value);
+          onChanged();
+        } else {
+          volumesBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Volume volumes = 2;</code>
+       */
+      public Builder addVolumes(
+          org.apache.mesos.Protos.Volume.Builder builderForValue) {
+        if (volumesBuilder_ == null) {
+          ensureVolumesIsMutable();
+          volumes_.add(builderForValue.build());
+          onChanged();
+        } else {
+          volumesBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Volume volumes = 2;</code>
+       */
+      public Builder addVolumes(
+          int index, org.apache.mesos.Protos.Volume.Builder builderForValue) {
+        if (volumesBuilder_ == null) {
+          ensureVolumesIsMutable();
+          volumes_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          volumesBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Volume volumes = 2;</code>
+       */
+      public Builder addAllVolumes(
+          java.lang.Iterable<? extends org.apache.mesos.Protos.Volume> values) {
+        if (volumesBuilder_ == null) {
+          ensureVolumesIsMutable();
+          super.addAll(values, volumes_);
+          onChanged();
+        } else {
+          volumesBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Volume volumes = 2;</code>
+       */
+      public Builder clearVolumes() {
+        if (volumesBuilder_ == null) {
+          volumes_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000002);
+          onChanged();
+        } else {
+          volumesBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Volume volumes = 2;</code>
+       */
+      public Builder removeVolumes(int index) {
+        if (volumesBuilder_ == null) {
+          ensureVolumesIsMutable();
+          volumes_.remove(index);
+          onChanged();
+        } else {
+          volumesBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Volume volumes = 2;</code>
+       */
+      public org.apache.mesos.Protos.Volume.Builder getVolumesBuilder(
+          int index) {
+        return getVolumesFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.Volume volumes = 2;</code>
+       */
+      public org.apache.mesos.Protos.VolumeOrBuilder getVolumesOrBuilder(
+          int index) {
+        if (volumesBuilder_ == null) {
+          return volumes_.get(index);  } else {
+          return volumesBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Volume volumes = 2;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.VolumeOrBuilder> 
+           getVolumesOrBuilderList() {
+        if (volumesBuilder_ != null) {
+          return volumesBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(volumes_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Volume volumes = 2;</code>
+       */
+      public org.apache.mesos.Protos.Volume.Builder addVolumesBuilder() {
+        return getVolumesFieldBuilder().addBuilder(
+            org.apache.mesos.Protos.Volume.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.Volume volumes = 2;</code>
+       */
+      public org.apache.mesos.Protos.Volume.Builder addVolumesBuilder(
+          int index) {
+        return getVolumesFieldBuilder().addBuilder(
+            index, org.apache.mesos.Protos.Volume.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.Volume volumes = 2;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.Volume.Builder> 
+           getVolumesBuilderList() {
+        return getVolumesFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.Volume, org.apache.mesos.Protos.Volume.Builder, org.apache.mesos.Protos.VolumeOrBuilder> 
+          getVolumesFieldBuilder() {
+        if (volumesBuilder_ == null) {
+          volumesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.Volume, org.apache.mesos.Protos.Volume.Builder, org.apache.mesos.Protos.VolumeOrBuilder>(
+                  volumes_,
+                  ((bitField0_ & 0x00000002) == 0x00000002),
+                  getParentForChildren(),
+                  isClean());
+          volumes_ = null;
+        }
+        return volumesBuilder_;
+      }
+
+      // optional string hostname = 4;
+      private java.lang.Object hostname_ = "";
+      /**
+       * <code>optional string hostname = 4;</code>
+       */
+      public boolean hasHostname() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional string hostname = 4;</code>
+       */
+      public java.lang.String getHostname() {
+        java.lang.Object ref = hostname_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          hostname_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string hostname = 4;</code>
+       */
+      public com.google.protobuf.ByteString
+          getHostnameBytes() {
+        java.lang.Object ref = hostname_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          hostname_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string hostname = 4;</code>
+       */
+      public Builder setHostname(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        hostname_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string hostname = 4;</code>
+       */
+      public Builder clearHostname() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        hostname_ = getDefaultInstance().getHostname();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string hostname = 4;</code>
+       */
+      public Builder setHostnameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        hostname_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.ContainerInfo.DockerInfo docker = 3;
+      private org.apache.mesos.Protos.ContainerInfo.DockerInfo docker_ = org.apache.mesos.Protos.ContainerInfo.DockerInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.ContainerInfo.DockerInfo, org.apache.mesos.Protos.ContainerInfo.DockerInfo.Builder, org.apache.mesos.Protos.ContainerInfo.DockerInfoOrBuilder> dockerBuilder_;
+      /**
+       * <code>optional .mesos.ContainerInfo.DockerInfo docker = 3;</code>
+       *
+       * <pre>
+       * Only one of the following *Info messages should be set to match
+       * the type.
+       * </pre>
+       */
+      public boolean hasDocker() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.ContainerInfo.DockerInfo docker = 3;</code>
+       *
+       * <pre>
+       * Only one of the following *Info messages should be set to match
+       * the type.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.ContainerInfo.DockerInfo getDocker() {
+        if (dockerBuilder_ == null) {
+          return docker_;
+        } else {
+          return dockerBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.ContainerInfo.DockerInfo docker = 3;</code>
+       *
+       * <pre>
+       * Only one of the following *Info messages should be set to match
+       * the type.
+       * </pre>
+       */
+      public Builder setDocker(org.apache.mesos.Protos.ContainerInfo.DockerInfo value) {
+        if (dockerBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          docker_ = value;
+          onChanged();
+        } else {
+          dockerBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ContainerInfo.DockerInfo docker = 3;</code>
+       *
+       * <pre>
+       * Only one of the following *Info messages should be set to match
+       * the type.
+       * </pre>
+       */
+      public Builder setDocker(
+          org.apache.mesos.Protos.ContainerInfo.DockerInfo.Builder builderForValue) {
+        if (dockerBuilder_ == null) {
+          docker_ = builderForValue.build();
+          onChanged();
+        } else {
+          dockerBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ContainerInfo.DockerInfo docker = 3;</code>
+       *
+       * <pre>
+       * Only one of the following *Info messages should be set to match
+       * the type.
+       * </pre>
+       */
+      public Builder mergeDocker(org.apache.mesos.Protos.ContainerInfo.DockerInfo value) {
+        if (dockerBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008) &&
+              docker_ != org.apache.mesos.Protos.ContainerInfo.DockerInfo.getDefaultInstance()) {
+            docker_ =
+              org.apache.mesos.Protos.ContainerInfo.DockerInfo.newBuilder(docker_).mergeFrom(value).buildPartial();
+          } else {
+            docker_ = value;
+          }
+          onChanged();
+        } else {
+          dockerBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ContainerInfo.DockerInfo docker = 3;</code>
+       *
+       * <pre>
+       * Only one of the following *Info messages should be set to match
+       * the type.
+       * </pre>
+       */
+      public Builder clearDocker() {
+        if (dockerBuilder_ == null) {
+          docker_ = org.apache.mesos.Protos.ContainerInfo.DockerInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          dockerBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ContainerInfo.DockerInfo docker = 3;</code>
+       *
+       * <pre>
+       * Only one of the following *Info messages should be set to match
+       * the type.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.ContainerInfo.DockerInfo.Builder getDockerBuilder() {
+        bitField0_ |= 0x00000008;
+        onChanged();
+        return getDockerFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.ContainerInfo.DockerInfo docker = 3;</code>
+       *
+       * <pre>
+       * Only one of the following *Info messages should be set to match
+       * the type.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.ContainerInfo.DockerInfoOrBuilder getDockerOrBuilder() {
+        if (dockerBuilder_ != null) {
+          return dockerBuilder_.getMessageOrBuilder();
+        } else {
+          return docker_;
+        }
+      }
+      /**
+       * <code>optional .mesos.ContainerInfo.DockerInfo docker = 3;</code>
+       *
+       * <pre>
+       * Only one of the following *Info messages should be set to match
+       * the type.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.ContainerInfo.DockerInfo, org.apache.mesos.Protos.ContainerInfo.DockerInfo.Builder, org.apache.mesos.Protos.ContainerInfo.DockerInfoOrBuilder> 
+          getDockerFieldBuilder() {
+        if (dockerBuilder_ == null) {
+          dockerBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.ContainerInfo.DockerInfo, org.apache.mesos.Protos.ContainerInfo.DockerInfo.Builder, org.apache.mesos.Protos.ContainerInfo.DockerInfoOrBuilder>(
+                  docker_,
+                  getParentForChildren(),
+                  isClean());
+          docker_ = null;
+        }
+        return dockerBuilder_;
+      }
+
+      // optional .mesos.ContainerInfo.MesosInfo mesos = 5;
+      private org.apache.mesos.Protos.ContainerInfo.MesosInfo mesos_ = org.apache.mesos.Protos.ContainerInfo.MesosInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.ContainerInfo.MesosInfo, org.apache.mesos.Protos.ContainerInfo.MesosInfo.Builder, org.apache.mesos.Protos.ContainerInfo.MesosInfoOrBuilder> mesosBuilder_;
+      /**
+       * <code>optional .mesos.ContainerInfo.MesosInfo mesos = 5;</code>
+       */
+      public boolean hasMesos() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional .mesos.ContainerInfo.MesosInfo mesos = 5;</code>
+       */
+      public org.apache.mesos.Protos.ContainerInfo.MesosInfo getMesos() {
+        if (mesosBuilder_ == null) {
+          return mesos_;
+        } else {
+          return mesosBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.ContainerInfo.MesosInfo mesos = 5;</code>
+       */
+      public Builder setMesos(org.apache.mesos.Protos.ContainerInfo.MesosInfo value) {
+        if (mesosBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          mesos_ = value;
+          onChanged();
+        } else {
+          mesosBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ContainerInfo.MesosInfo mesos = 5;</code>
+       */
+      public Builder setMesos(
+          org.apache.mesos.Protos.ContainerInfo.MesosInfo.Builder builderForValue) {
+        if (mesosBuilder_ == null) {
+          mesos_ = builderForValue.build();
+          onChanged();
+        } else {
+          mesosBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ContainerInfo.MesosInfo mesos = 5;</code>
+       */
+      public Builder mergeMesos(org.apache.mesos.Protos.ContainerInfo.MesosInfo value) {
+        if (mesosBuilder_ == null) {
+          if (((bitField0_ & 0x00000010) == 0x00000010) &&
+              mesos_ != org.apache.mesos.Protos.ContainerInfo.MesosInfo.getDefaultInstance()) {
+            mesos_ =
+              org.apache.mesos.Protos.ContainerInfo.MesosInfo.newBuilder(mesos_).mergeFrom(value).buildPartial();
+          } else {
+            mesos_ = value;
+          }
+          onChanged();
+        } else {
+          mesosBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ContainerInfo.MesosInfo mesos = 5;</code>
+       */
+      public Builder clearMesos() {
+        if (mesosBuilder_ == null) {
+          mesos_ = org.apache.mesos.Protos.ContainerInfo.MesosInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          mesosBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ContainerInfo.MesosInfo mesos = 5;</code>
+       */
+      public org.apache.mesos.Protos.ContainerInfo.MesosInfo.Builder getMesosBuilder() {
+        bitField0_ |= 0x00000010;
+        onChanged();
+        return getMesosFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.ContainerInfo.MesosInfo mesos = 5;</code>
+       */
+      public org.apache.mesos.Protos.ContainerInfo.MesosInfoOrBuilder getMesosOrBuilder() {
+        if (mesosBuilder_ != null) {
+          return mesosBuilder_.getMessageOrBuilder();
+        } else {
+          return mesos_;
+        }
+      }
+      /**
+       * <code>optional .mesos.ContainerInfo.MesosInfo mesos = 5;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.ContainerInfo.MesosInfo, org.apache.mesos.Protos.ContainerInfo.MesosInfo.Builder, org.apache.mesos.Protos.ContainerInfo.MesosInfoOrBuilder> 
+          getMesosFieldBuilder() {
+        if (mesosBuilder_ == null) {
+          mesosBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.ContainerInfo.MesosInfo, org.apache.mesos.Protos.ContainerInfo.MesosInfo.Builder, org.apache.mesos.Protos.ContainerInfo.MesosInfoOrBuilder>(
+                  mesos_,
+                  getParentForChildren(),
+                  isClean());
+          mesos_ = null;
+        }
+        return mesosBuilder_;
+      }
+
+      // repeated .mesos.NetworkInfo network_infos = 7;
+      private java.util.List<org.apache.mesos.Protos.NetworkInfo> networkInfos_ =
+        java.util.Collections.emptyList();
+      private void ensureNetworkInfosIsMutable() {
+        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
+          networkInfos_ = new java.util.ArrayList<org.apache.mesos.Protos.NetworkInfo>(networkInfos_);
+          bitField0_ |= 0x00000020;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.NetworkInfo, org.apache.mesos.Protos.NetworkInfo.Builder, org.apache.mesos.Protos.NetworkInfoOrBuilder> networkInfosBuilder_;
+
+      /**
+       * <code>repeated .mesos.NetworkInfo network_infos = 7;</code>
+       *
+       * <pre>
+       * A list of network requests. A framework can request multiple IP addresses
+       * for the container.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.Protos.NetworkInfo> getNetworkInfosList() {
+        if (networkInfosBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(networkInfos_);
+        } else {
+          return networkInfosBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo network_infos = 7;</code>
+       *
+       * <pre>
+       * A list of network requests. A framework can request multiple IP addresses
+       * for the container.
+       * </pre>
+       */
+      public int getNetworkInfosCount() {
+        if (networkInfosBuilder_ == null) {
+          return networkInfos_.size();
+        } else {
+          return networkInfosBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo network_infos = 7;</code>
+       *
+       * <pre>
+       * A list of network requests. A framework can request multiple IP addresses
+       * for the container.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.NetworkInfo getNetworkInfos(int index) {
+        if (networkInfosBuilder_ == null) {
+          return networkInfos_.get(index);
+        } else {
+          return networkInfosBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo network_infos = 7;</code>
+       *
+       * <pre>
+       * A list of network requests. A framework can request multiple IP addresses
+       * for the container.
+       * </pre>
+       */
+      public Builder setNetworkInfos(
+          int index, org.apache.mesos.Protos.NetworkInfo value) {
+        if (networkInfosBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureNetworkInfosIsMutable();
+          networkInfos_.set(index, value);
+          onChanged();
+        } else {
+          networkInfosBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo network_infos = 7;</code>
+       *
+       * <pre>
+       * A list of network requests. A framework can request multiple IP addresses
+       * for the container.
+       * </pre>
+       */
+      public Builder setNetworkInfos(
+          int index, org.apache.mesos.Protos.NetworkInfo.Builder builderForValue) {
+        if (networkInfosBuilder_ == null) {
+          ensureNetworkInfosIsMutable();
+          networkInfos_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          networkInfosBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo network_infos = 7;</code>
+       *
+       * <pre>
+       * A list of network requests. A framework can request multiple IP addresses
+       * for the container.
+       * </pre>
+       */
+      public Builder addNetworkInfos(org.apache.mesos.Protos.NetworkInfo value) {
+        if (networkInfosBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureNetworkInfosIsMutable();
+          networkInfos_.add(value);
+          onChanged();
+        } else {
+          networkInfosBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo network_infos = 7;</code>
+       *
+       * <pre>
+       * A list of network requests. A framework can request multiple IP addresses
+       * for the container.
+       * </pre>
+       */
+      public Builder addNetworkInfos(
+          int index, org.apache.mesos.Protos.NetworkInfo value) {
+        if (networkInfosBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureNetworkInfosIsMutable();
+          networkInfos_.add(index, value);
+          onChanged();
+        } else {
+          networkInfosBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo network_infos = 7;</code>
+       *
+       * <pre>
+       * A list of network requests. A framework can request multiple IP addresses
+       * for the container.
+       * </pre>
+       */
+      public Builder addNetworkInfos(
+          org.apache.mesos.Protos.NetworkInfo.Builder builderForValue) {
+        if (networkInfosBuilder_ == null) {
+          ensureNetworkInfosIsMutable();
+          networkInfos_.add(builderForValue.build());
+          onChanged();
+        } else {
+          networkInfosBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo network_infos = 7;</code>
+       *
+       * <pre>
+       * A list of network requests. A framework can request multiple IP addresses
+       * for the container.
+       * </pre>
+       */
+      public Builder addNetworkInfos(
+          int index, org.apache.mesos.Protos.NetworkInfo.Builder builderForValue) {
+        if (networkInfosBuilder_ == null) {
+          ensureNetworkInfosIsMutable();
+          networkInfos_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          networkInfosBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo network_infos = 7;</code>
+       *
+       * <pre>
+       * A list of network requests. A framework can request multiple IP addresses
+       * for the container.
+       * </pre>
+       */
+      public Builder addAllNetworkInfos(
+          java.lang.Iterable<? extends org.apache.mesos.Protos.NetworkInfo> values) {
+        if (networkInfosBuilder_ == null) {
+          ensureNetworkInfosIsMutable();
+          super.addAll(values, networkInfos_);
+          onChanged();
+        } else {
+          networkInfosBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo network_infos = 7;</code>
+       *
+       * <pre>
+       * A list of network requests. A framework can request multiple IP addresses
+       * for the container.
+       * </pre>
+       */
+      public Builder clearNetworkInfos() {
+        if (networkInfosBuilder_ == null) {
+          networkInfos_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000020);
+          onChanged();
+        } else {
+          networkInfosBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo network_infos = 7;</code>
+       *
+       * <pre>
+       * A list of network requests. A framework can request multiple IP addresses
+       * for the container.
+       * </pre>
+       */
+      public Builder removeNetworkInfos(int index) {
+        if (networkInfosBuilder_ == null) {
+          ensureNetworkInfosIsMutable();
+          networkInfos_.remove(index);
+          onChanged();
+        } else {
+          networkInfosBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo network_infos = 7;</code>
+       *
+       * <pre>
+       * A list of network requests. A framework can request multiple IP addresses
+       * for the container.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.NetworkInfo.Builder getNetworkInfosBuilder(
+          int index) {
+        return getNetworkInfosFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo network_infos = 7;</code>
+       *
+       * <pre>
+       * A list of network requests. A framework can request multiple IP addresses
+       * for the container.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.NetworkInfoOrBuilder getNetworkInfosOrBuilder(
+          int index) {
+        if (networkInfosBuilder_ == null) {
+          return networkInfos_.get(index);  } else {
+          return networkInfosBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo network_infos = 7;</code>
+       *
+       * <pre>
+       * A list of network requests. A framework can request multiple IP addresses
+       * for the container.
+       * </pre>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.NetworkInfoOrBuilder> 
+           getNetworkInfosOrBuilderList() {
+        if (networkInfosBuilder_ != null) {
+          return networkInfosBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(networkInfos_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo network_infos = 7;</code>
+       *
+       * <pre>
+       * A list of network requests. A framework can request multiple IP addresses
+       * for the container.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.NetworkInfo.Builder addNetworkInfosBuilder() {
+        return getNetworkInfosFieldBuilder().addBuilder(
+            org.apache.mesos.Protos.NetworkInfo.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo network_infos = 7;</code>
+       *
+       * <pre>
+       * A list of network requests. A framework can request multiple IP addresses
+       * for the container.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.NetworkInfo.Builder addNetworkInfosBuilder(
+          int index) {
+        return getNetworkInfosFieldBuilder().addBuilder(
+            index, org.apache.mesos.Protos.NetworkInfo.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo network_infos = 7;</code>
+       *
+       * <pre>
+       * A list of network requests. A framework can request multiple IP addresses
+       * for the container.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.Protos.NetworkInfo.Builder> 
+           getNetworkInfosBuilderList() {
+        return getNetworkInfosFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.NetworkInfo, org.apache.mesos.Protos.NetworkInfo.Builder, org.apache.mesos.Protos.NetworkInfoOrBuilder> 
+          getNetworkInfosFieldBuilder() {
+        if (networkInfosBuilder_ == null) {
+          networkInfosBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.NetworkInfo, org.apache.mesos.Protos.NetworkInfo.Builder, org.apache.mesos.Protos.NetworkInfoOrBuilder>(
+                  networkInfos_,
+                  ((bitField0_ & 0x00000020) == 0x00000020),
+                  getParentForChildren(),
+                  isClean());
+          networkInfos_ = null;
+        }
+        return networkInfosBuilder_;
+      }
+
+      // optional .mesos.LinuxInfo linux_info = 8;
+      private org.apache.mesos.Protos.LinuxInfo linuxInfo_ = org.apache.mesos.Protos.LinuxInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.LinuxInfo, org.apache.mesos.Protos.LinuxInfo.Builder, org.apache.mesos.Protos.LinuxInfoOrBuilder> linuxInfoBuilder_;
+      /**
+       * <code>optional .mesos.LinuxInfo linux_info = 8;</code>
+       *
+       * <pre>
+       * Linux specific information for the container.
+       * </pre>
+       */
+      public boolean hasLinuxInfo() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional .mesos.LinuxInfo linux_info = 8;</code>
+       *
+       * <pre>
+       * Linux specific information for the container.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.LinuxInfo getLinuxInfo() {
+        if (linuxInfoBuilder_ == null) {
+          return linuxInfo_;
+        } else {
+          return linuxInfoBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.LinuxInfo linux_info = 8;</code>
+       *
+       * <pre>
+       * Linux specific information for the container.
+       * </pre>
+       */
+      public Builder setLinuxInfo(org.apache.mesos.Protos.LinuxInfo value) {
+        if (linuxInfoBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          linuxInfo_ = value;
+          onChanged();
+        } else {
+          linuxInfoBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.LinuxInfo linux_info = 8;</code>
+       *
+       * <pre>
+       * Linux specific information for the container.
+       * </pre>
+       */
+      public Builder setLinuxInfo(
+          org.apache.mesos.Protos.LinuxInfo.Builder builderForValue) {
+        if (linuxInfoBuilder_ == null) {
+          linuxInfo_ = builderForValue.build();
+          onChanged();
+        } else {
+          linuxInfoBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.LinuxInfo linux_info = 8;</code>
+       *
+       * <pre>
+       * Linux specific information for the container.
+       * </pre>
+       */
+      public Builder mergeLinuxInfo(org.apache.mesos.Protos.LinuxInfo value) {
+        if (linuxInfoBuilder_ == null) {
+          if (((bitField0_ & 0x00000040) == 0x00000040) &&
+              linuxInfo_ != org.apache.mesos.Protos.LinuxInfo.getDefaultInstance()) {
+            linuxInfo_ =
+              org.apache.mesos.Protos.LinuxInfo.newBuilder(linuxInfo_).mergeFrom(value).buildPartial();
+          } else {
+            linuxInfo_ = value;
+          }
+          onChanged();
+        } else {
+          linuxInfoBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.LinuxInfo linux_info = 8;</code>
+       *
+       * <pre>
+       * Linux specific information for the container.
+       * </pre>
+       */
+      public Builder clearLinuxInfo() {
+        if (linuxInfoBuilder_ == null) {
+          linuxInfo_ = org.apache.mesos.Protos.LinuxInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          linuxInfoBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000040);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.LinuxInfo linux_info = 8;</code>
+       *
+       * <pre>
+       * Linux specific information for the container.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.LinuxInfo.Builder getLinuxInfoBuilder() {
+        bitField0_ |= 0x00000040;
+        onChanged();
+        return getLinuxInfoFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.LinuxInfo linux_info = 8;</code>
+       *
+       * <pre>
+       * Linux specific information for the container.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.LinuxInfoOrBuilder getLinuxInfoOrBuilder() {
+        if (linuxInfoBuilder_ != null) {
+          return linuxInfoBuilder_.getMessageOrBuilder();
+        } else {
+          return linuxInfo_;
+        }
+      }
+      /**
+       * <code>optional .mesos.LinuxInfo linux_info = 8;</code>
+       *
+       * <pre>
+       * Linux specific information for the container.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.LinuxInfo, org.apache.mesos.Protos.LinuxInfo.Builder, org.apache.mesos.Protos.LinuxInfoOrBuilder> 
+          getLinuxInfoFieldBuilder() {
+        if (linuxInfoBuilder_ == null) {
+          linuxInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.LinuxInfo, org.apache.mesos.Protos.LinuxInfo.Builder, org.apache.mesos.Protos.LinuxInfoOrBuilder>(
+                  linuxInfo_,
+                  getParentForChildren(),
+                  isClean());
+          linuxInfo_ = null;
+        }
+        return linuxInfoBuilder_;
+      }
+
+      // optional .mesos.RLimitInfo rlimit_info = 9;
+      private org.apache.mesos.Protos.RLimitInfo rlimitInfo_ = org.apache.mesos.Protos.RLimitInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.RLimitInfo, org.apache.mesos.Protos.RLimitInfo.Builder, org.apache.mesos.Protos.RLimitInfoOrBuilder> rlimitInfoBuilder_;
+      /**
+       * <code>optional .mesos.RLimitInfo rlimit_info = 9;</code>
+       *
+       * <pre>
+       * (POSIX only) rlimits of the container.
+       * </pre>
+       */
+      public boolean hasRlimitInfo() {
+        return ((bitField0_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional .mesos.RLimitInfo rlimit_info = 9;</code>
+       *
+       * <pre>
+       * (POSIX only) rlimits of the container.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.RLimitInfo getRlimitInfo() {
+        if (rlimitInfoBuilder_ == null) {
+          return rlimitInfo_;
+        } else {
+          return rlimitInfoBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.RLimitInfo rlimit_info = 9;</code>
+       *
+       * <pre>
+       * (POSIX only) rlimits of the container.
+       * </pre>
+       */
+      public Builder setRlimitInfo(org.apache.mesos.Protos.RLimitInfo value) {
+        if (rlimitInfoBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          rlimitInfo_ = value;
+          onChanged();
+        } else {
+          rlimitInfoBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.RLimitInfo rlimit_info = 9;</code>
+       *
+       * <pre>
+       * (POSIX only) rlimits of the container.
+       * </pre>
+       */
+      public Builder setRlimitInfo(
+          org.apache.mesos.Protos.RLimitInfo.Builder builderForValue) {
+        if (rlimitInfoBuilder_ == null) {
+          rlimitInfo_ = builderForValue.build();
+          onChanged();
+        } else {
+          rlimitInfoBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.RLimitInfo rlimit_info = 9;</code>
+       *
+       * <pre>
+       * (POSIX only) rlimits of the container.
+       * </pre>
+       */
+      public Builder mergeRlimitInfo(org.apache.mesos.Protos.RLimitInfo value) {
+        if (rlimitInfoBuilder_ == null) {
+          if (((bitField0_ & 0x00000080) == 0x00000080) &&
+              rlimitInfo_ != org.apache.mesos.Protos.RLimitInfo.getDefaultInstance()) {
+            rlimitInfo_ =
+              org.apache.mesos.Protos.RLimitInfo.newBuilder(rlimitInfo_).mergeFrom(value).buildPartial();
+          } else {
+            rlimitInfo_ = value;
+          }
+          onChanged();
+        } else {
+          rlimitInfoBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.RLimitInfo rlimit_info = 9;</code>
+       *
+       * <pre>
+       * (POSIX only) rlimits of the container.
+       * </pre>
+       */
+      public Builder clearRlimitInfo() {
+        if (rlimitInfoBuilder_ == null) {
+          rlimitInfo_ = org.apache.mesos.Protos.RLimitInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          rlimitInfoBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000080);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.RLimitInfo rlimit_info = 9;</code>
+       *
+       * <pre>
+       * (POSIX only) rlimits of the container.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.RLimitInfo.Builder getRlimitInfoBuilder() {
+        bitField0_ |= 0x00000080;
+        onChanged();
+        return getRlimitInfoFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.RLimitInfo rlimit_info = 9;</code>
+       *
+       * <pre>
+       * (POSIX only) rlimits of the container.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.RLimitInfoOrBuilder getRlimitInfoOrBuilder() {
+        if (rlimitInfoBuilder_ != null) {
+          return rlimitInfoBuilder_.getMessageOrBuilder();
+        } else {
+          return rlimitInfo_;
+        }
+      }
+      /**
+       * <code>optional .mesos.RLimitInfo rlimit_info = 9;</code>
+       *
+       * <pre>
+       * (POSIX only) rlimits of the container.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.RLimitInfo, org.apache.mesos.Protos.RLimitInfo.Builder, org.apache.mesos.Protos.RLimitInfoOrBuilder> 
+          getRlimitInfoFieldBuilder() {
+        if (rlimitInfoBuilder_ == null) {
+          rlimitInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.RLimitInfo, org.apache.mesos.Protos.RLimitInfo.Builder, org.apache.mesos.Protos.RLimitInfoOrBuilder>(
+                  rlimitInfo_,
+                  getParentForChildren(),
+                  isClean());
+          rlimitInfo_ = null;
+        }
+        return rlimitInfoBuilder_;
+      }
+
+      // optional .mesos.TTYInfo tty_info = 10;
+      private org.apache.mesos.Protos.TTYInfo ttyInfo_ = org.apache.mesos.Protos.TTYInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.TTYInfo, org.apache.mesos.Protos.TTYInfo.Builder, org.apache.mesos.Protos.TTYInfoOrBuilder> ttyInfoBuilder_;
+      /**
+       * <code>optional .mesos.TTYInfo tty_info = 10;</code>
+       *
+       * <pre>
+       * If specified a tty will be attached to the container entrypoint.
+       * </pre>
+       */
+      public boolean hasTtyInfo() {
+        return ((bitField0_ & 0x00000100) == 0x00000100);
+      }
+      /**
+       * <code>optional .mesos.TTYInfo tty_info = 10;</code>
+       *
+       * <pre>
+       * If specified a tty will be attached to the container entrypoint.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.TTYInfo getTtyInfo() {
+        if (ttyInfoBuilder_ == null) {
+          return ttyInfo_;
+        } else {
+          return ttyInfoBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.TTYInfo tty_info = 10;</code>
+       *
+       * <pre>
+       * If specified a tty will be attached to the container entrypoint.
+       * </pre>
+       */
+      public Builder setTtyInfo(org.apache.mesos.Protos.TTYInfo value) {
+        if (ttyInfoBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ttyInfo_ = value;
+          onChanged();
+        } else {
+          ttyInfoBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000100;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.TTYInfo tty_info = 10;</code>
+       *
+       * <pre>
+       * If specified a tty will be attached to the container entrypoint.
+       * </pre>
+       */
+      public Builder setTtyInfo(
+          org.apache.mesos.Protos.TTYInfo.Builder builderForValue) {
+        if (ttyInfoBuilder_ == null) {
+          ttyInfo_ = builderForValue.build();
+          onChanged();
+        } else {
+          ttyInfoBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000100;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.TTYInfo tty_info = 10;</code>
+       *
+       * <pre>
+       * If specified a tty will be attached to the container entrypoint.
+       * </pre>
+       */
+      public Builder mergeTtyInfo(org.apache.mesos.Protos.TTYInfo value) {
+        if (ttyInfoBuilder_ == null) {
+          if (((bitField0_ & 0x00000100) == 0x00000100) &&
+              ttyInfo_ != org.apache.mesos.Protos.TTYInfo.getDefaultInstance()) {
+            ttyInfo_ =
+              org.apache.mesos.Protos.TTYInfo.newBuilder(ttyInfo_).mergeFrom(value).buildPartial();
+          } else {
+            ttyInfo_ = value;
+          }
+          onChanged();
+        } else {
+          ttyInfoBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000100;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.TTYInfo tty_info = 10;</code>
+       *
+       * <pre>
+       * If specified a tty will be attached to the container entrypoint.
+       * </pre>
+       */
+      public Builder clearTtyInfo() {
+        if (ttyInfoBuilder_ == null) {
+          ttyInfo_ = org.apache.mesos.Protos.TTYInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          ttyInfoBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000100);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.TTYInfo tty_info = 10;</code>
+       *
+       * <pre>
+       * If specified a tty will be attached to the container entrypoint.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.TTYInfo.Builder getTtyInfoBuilder() {
+        bitField0_ |= 0x00000100;
+        onChanged();
+        return getTtyInfoFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.TTYInfo tty_info = 10;</code>
+       *
+       * <pre>
+       * If specified a tty will be attached to the container entrypoint.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.TTYInfoOrBuilder getTtyInfoOrBuilder() {
+        if (ttyInfoBuilder_ != null) {
+          return ttyInfoBuilder_.getMessageOrBuilder();
+        } else {
+          return ttyInfo_;
+        }
+      }
+      /**
+       * <code>optional .mesos.TTYInfo tty_info = 10;</code>
+       *
+       * <pre>
+       * If specified a tty will be attached to the container entrypoint.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.TTYInfo, org.apache.mesos.Protos.TTYInfo.Builder, org.apache.mesos.Protos.TTYInfoOrBuilder> 
+          getTtyInfoFieldBuilder() {
+        if (ttyInfoBuilder_ == null) {
+          ttyInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.TTYInfo, org.apache.mesos.Protos.TTYInfo.Builder, org.apache.mesos.Protos.TTYInfoOrBuilder>(
+                  ttyInfo_,
+                  getParentForChildren(),
+                  isClean());
+          ttyInfo_ = null;
+        }
+        return ttyInfoBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.ContainerInfo)
+    }
+
+    static {
+      defaultInstance = new ContainerInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.ContainerInfo)
+  }
+
+  public interface ContainerStatusOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional .mesos.ContainerID container_id = 4;
+    /**
+     * <code>optional .mesos.ContainerID container_id = 4;</code>
+     */
+    boolean hasContainerId();
+    /**
+     * <code>optional .mesos.ContainerID container_id = 4;</code>
+     */
+    org.apache.mesos.Protos.ContainerID getContainerId();
+    /**
+     * <code>optional .mesos.ContainerID container_id = 4;</code>
+     */
+    org.apache.mesos.Protos.ContainerIDOrBuilder getContainerIdOrBuilder();
+
+    // repeated .mesos.NetworkInfo network_infos = 1;
+    /**
+     * <code>repeated .mesos.NetworkInfo network_infos = 1;</code>
+     *
+     * <pre>
+     * This field can be reliably used to identify the container IP address.
+     * </pre>
+     */
+    java.util.List<org.apache.mesos.Protos.NetworkInfo> 
+        getNetworkInfosList();
+    /**
+     * <code>repeated .mesos.NetworkInfo network_infos = 1;</code>
+     *
+     * <pre>
+     * This field can be reliably used to identify the container IP address.
+     * </pre>
+     */
+    org.apache.mesos.Protos.NetworkInfo getNetworkInfos(int index);
+    /**
+     * <code>repeated .mesos.NetworkInfo network_infos = 1;</code>
+     *
+     * <pre>
+     * This field can be reliably used to identify the container IP address.
+     * </pre>
+     */
+    int getNetworkInfosCount();
+    /**
+     * <code>repeated .mesos.NetworkInfo network_infos = 1;</code>
+     *
+     * <pre>
+     * This field can be reliably used to identify the container IP address.
+     * </pre>
+     */
+    java.util.List<? extends org.apache.mesos.Protos.NetworkInfoOrBuilder> 
+        getNetworkInfosOrBuilderList();
+    /**
+     * <code>repeated .mesos.NetworkInfo network_infos = 1;</code>
+     *
+     * <pre>
+     * This field can be reliably used to identify the container IP address.
+     * </pre>
+     */
+    org.apache.mesos.Protos.NetworkInfoOrBuilder getNetworkInfosOrBuilder(
+        int index);
+
+    // optional .mesos.CgroupInfo cgroup_info = 2;
+    /**
+     * <code>optional .mesos.CgroupInfo cgroup_info = 2;</code>
+     *
+     * <pre>
+     * Information about Linux control group (cgroup).
+     * </pre>
+     */
+    boolean hasCgroupInfo();
+    /**
+     * <code>optional .mesos.CgroupInfo cgroup_info = 2;</code>
+     *
+     * <pre>
+     * Information about Linux control group (cgroup).
+     * </pre>
+     */
+    org.apache.mesos.Protos.CgroupInfo getCgroupInfo();
+    /**
+     * <code>optional .mesos.CgroupInfo cgroup_info = 2;</code>
+     *
+     * <pre>
+     * Information about Linux control group (cgroup).
+     * </pre>
+     */
+    org.apache.mesos.Protos.CgroupInfoOrBuilder getCgroupInfoOrBuilder();
+
+    // optional uint32 executor_pid = 3;
+    /**
+     * <code>optional uint32 executor_pid = 3;</code>
+     *
+     * <pre>
+     * Information about Executor PID.
+     * </pre>
+     */
+    boolean hasExecutorPid();
+    /**
+     * <code>optional uint32 executor_pid = 3;</code>
+     *
+     * <pre>
+     * Information about Executor PID.
+     * </pre>
+     */
+    int getExecutorPid();
+  }
+  /**
+   * Protobuf type {@code mesos.ContainerStatus}
+   *
+   * <pre>
+   **
+   * Container related information that is resolved during container
+   * setup. The information is sent back to the framework as part of the
+   * TaskStatus message.
+   * </pre>
+   */
+  public static final class ContainerStatus extends
+      com.google.protobuf.GeneratedMessage
+      implements ContainerStatusOrBuilder {
+    // Use ContainerStatus.newBuilder() to construct.
+    private ContainerStatus(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private ContainerStatus(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final ContainerStatus defaultInstance;
+    public static ContainerStatus getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public ContainerStatus getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private ContainerStatus(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+                networkInfos_ = new java.util.ArrayList<org.apache.mesos.Protos.NetworkInfo>();
+                mutable_bitField0_ |= 0x00000002;
+              }
+              networkInfos_.add(input.readMessage(org.apache.mesos.Protos.NetworkInfo.PARSER, extensionRegistry));
+              break;
+            }
+            case 18: {
+              org.apache.mesos.Protos.CgroupInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = cgroupInfo_.toBuilder();
+              }
+              cgroupInfo_ = input.readMessage(org.apache.mesos.Protos.CgroupInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(cgroupInfo_);
+                cgroupInfo_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+            case 24: {
+              bitField0_ |= 0x00000004;
+              executorPid_ = input.readUInt32();
+              break;
+            }
+            case 34: {
+              org.apache.mesos.Protos.ContainerID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                subBuilder = containerId_.toBuilder();
+              }
+              containerId_ = input.readMessage(org.apache.mesos.Protos.ContainerID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(containerId_);
+                containerId_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+          networkInfos_ = java.util.Collections.unmodifiableList(networkInfos_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_ContainerStatus_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_ContainerStatus_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.ContainerStatus.class, org.apache.mesos.Protos.ContainerStatus.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<ContainerStatus> PARSER =
+        new com.google.protobuf.AbstractParser<ContainerStatus>() {
+      public ContainerStatus parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new ContainerStatus(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<ContainerStatus> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // optional .mesos.ContainerID container_id = 4;
+    public static final int CONTAINER_ID_FIELD_NUMBER = 4;
+    private org.apache.mesos.Protos.ContainerID containerId_;
+    /**
+     * <code>optional .mesos.ContainerID container_id = 4;</code>
+     */
+    public boolean hasContainerId() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional .mesos.ContainerID container_id = 4;</code>
+     */
+    public org.apache.mesos.Protos.ContainerID getContainerId() {
+      return containerId_;
+    }
+    /**
+     * <code>optional .mesos.ContainerID container_id = 4;</code>
+     */
+    public org.apache.mesos.Protos.ContainerIDOrBuilder getContainerIdOrBuilder() {
+      return containerId_;
+    }
+
+    // repeated .mesos.NetworkInfo network_infos = 1;
+    public static final int NETWORK_INFOS_FIELD_NUMBER = 1;
+    private java.util.List<org.apache.mesos.Protos.NetworkInfo> networkInfos_;
+    /**
+     * <code>repeated .mesos.NetworkInfo network_infos = 1;</code>
+     *
+     * <pre>
+     * This field can be reliably used to identify the container IP address.
+     * </pre>
+     */
+    public java.util.List<org.apache.mesos.Protos.NetworkInfo> getNetworkInfosList() {
+      return networkInfos_;
+    }
+    /**
+     * <code>repeated .mesos.NetworkInfo network_infos = 1;</code>
+     *
+     * <pre>
+     * This field can be reliably used to identify the container IP address.
+     * </pre>
+     */
+    public java.util.List<? extends org.apache.mesos.Protos.NetworkInfoOrBuilder> 
+        getNetworkInfosOrBuilderList() {
+      return networkInfos_;
+    }
+    /**
+     * <code>repeated .mesos.NetworkInfo network_infos = 1;</code>
+     *
+     * <pre>
+     * This field can be reliably used to identify the container IP address.
+     * </pre>
+     */
+    public int getNetworkInfosCount() {
+      return networkInfos_.size();
+    }
+    /**
+     * <code>repeated .mesos.NetworkInfo network_infos = 1;</code>
+     *
+     * <pre>
+     * This field can be reliably used to identify the container IP address.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.NetworkInfo getNetworkInfos(int index) {
+      return networkInfos_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.NetworkInfo network_infos = 1;</code>
+     *
+     * <pre>
+     * This field can be reliably used to identify the container IP address.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.NetworkInfoOrBuilder getNetworkInfosOrBuilder(
+        int index) {
+      return networkInfos_.get(index);
+    }
+
+    // optional .mesos.CgroupInfo cgroup_info = 2;
+    public static final int CGROUP_INFO_FIELD_NUMBER = 2;
+    private org.apache.mesos.Protos.CgroupInfo cgroupInfo_;
+    /**
+     * <code>optional .mesos.CgroupInfo cgroup_info = 2;</code>
+     *
+     * <pre>
+     * Information about Linux control group (cgroup).
+     * </pre>
+     */
+    public boolean hasCgroupInfo() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional .mesos.CgroupInfo cgroup_info = 2;</code>
+     *
+     * <pre>
+     * Information about Linux control group (cgroup).
+     * </pre>
+     */
+    public org.apache.mesos.Protos.CgroupInfo getCgroupInfo() {
+      return cgroupInfo_;
+    }
+    /**
+     * <code>optional .mesos.CgroupInfo cgroup_info = 2;</code>
+     *
+     * <pre>
+     * Information about Linux control group (cgroup).
+     * </pre>
+     */
+    public org.apache.mesos.Protos.CgroupInfoOrBuilder getCgroupInfoOrBuilder() {
+      return cgroupInfo_;
+    }
+
+    // optional uint32 executor_pid = 3;
+    public static final int EXECUTOR_PID_FIELD_NUMBER = 3;
+    private int executorPid_;
+    /**
+     * <code>optional uint32 executor_pid = 3;</code>
+     *
+     * <pre>
+     * Information about Executor PID.
+     * </pre>
+     */
+    public boolean hasExecutorPid() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional uint32 executor_pid = 3;</code>
+     *
+     * <pre>
+     * Information about Executor PID.
+     * </pre>
+     */
+    public int getExecutorPid() {
+      return executorPid_;
+    }
+
+    private void initFields() {
+      containerId_ = org.apache.mesos.Protos.ContainerID.getDefaultInstance();
+      networkInfos_ = java.util.Collections.emptyList();
+      cgroupInfo_ = org.apache.mesos.Protos.CgroupInfo.getDefaultInstance();
+      executorPid_ = 0;
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (hasContainerId()) {
+        if (!getContainerId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      for (int i = 0; i < getNetworkInfosCount(); i++) {
+        if (!getNetworkInfos(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      for (int i = 0; i < networkInfos_.size(); i++) {
+        output.writeMessage(1, networkInfos_.get(i));
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(2, cgroupInfo_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeUInt32(3, executorPid_);
+      }
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeMessage(4, containerId_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      for (int i = 0; i < networkInfos_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, networkInfos_.get(i));
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, cgroupInfo_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(3, executorPid_);
+      }
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, containerId_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.ContainerStatus parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.ContainerStatus parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.ContainerStatus parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.ContainerStatus parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.ContainerStatus parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.ContainerStatus parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.ContainerStatus parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.ContainerStatus parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.ContainerStatus parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.ContainerStatus parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.ContainerStatus prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.ContainerStatus}
+     *
+     * <pre>
+     **
+     * Container related information that is resolved during container
+     * setup. The information is sent back to the framework as part of the
+     * TaskStatus message.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.ContainerStatusOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_ContainerStatus_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_ContainerStatus_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.ContainerStatus.class, org.apache.mesos.Protos.ContainerStatus.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.ContainerStatus.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getContainerIdFieldBuilder();
+          getNetworkInfosFieldBuilder();
+          getCgroupInfoFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (containerIdBuilder_ == null) {
+          containerId_ = org.apache.mesos.Protos.ContainerID.getDefaultInstance();
+        } else {
+          containerIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (networkInfosBuilder_ == null) {
+          networkInfos_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000002);
+        } else {
+          networkInfosBuilder_.clear();
+        }
+        if (cgroupInfoBuilder_ == null) {
+          cgroupInfo_ = org.apache.mesos.Protos.CgroupInfo.getDefaultInstance();
+        } else {
+          cgroupInfoBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        executorPid_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_ContainerStatus_descriptor;
+      }
+
+      public org.apache.mesos.Protos.ContainerStatus getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.ContainerStatus.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.ContainerStatus build() {
+        org.apache.mesos.Protos.ContainerStatus result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.ContainerStatus buildPartial() {
+        org.apache.mesos.Protos.ContainerStatus result = new org.apache.mesos.Protos.ContainerStatus(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        if (containerIdBuilder_ == null) {
+          result.containerId_ = containerId_;
+        } else {
+          result.containerId_ = containerIdBuilder_.build();
+        }
+        if (networkInfosBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            networkInfos_ = java.util.Collections.unmodifiableList(networkInfos_);
+            bitField0_ = (bitField0_ & ~0x00000002);
+          }
+          result.networkInfos_ = networkInfos_;
+        } else {
+          result.networkInfos_ = networkInfosBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (cgroupInfoBuilder_ == null) {
+          result.cgroupInfo_ = cgroupInfo_;
+        } else {
+          result.cgroupInfo_ = cgroupInfoBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.executorPid_ = executorPid_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.ContainerStatus) {
+          return mergeFrom((org.apache.mesos.Protos.ContainerStatus)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.ContainerStatus other) {
+        if (other == org.apache.mesos.Protos.ContainerStatus.getDefaultInstance()) return this;
+        if (other.hasContainerId()) {
+          mergeContainerId(other.getContainerId());
+        }
+        if (networkInfosBuilder_ == null) {
+          if (!other.networkInfos_.isEmpty()) {
+            if (networkInfos_.isEmpty()) {
+              networkInfos_ = other.networkInfos_;
+              bitField0_ = (bitField0_ & ~0x00000002);
+            } else {
+              ensureNetworkInfosIsMutable();
+              networkInfos_.addAll(other.networkInfos_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.networkInfos_.isEmpty()) {
+            if (networkInfosBuilder_.isEmpty()) {
+              networkInfosBuilder_.dispose();
+              networkInfosBuilder_ = null;
+              networkInfos_ = other.networkInfos_;
+              bitField0_ = (bitField0_ & ~0x00000002);
+              networkInfosBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getNetworkInfosFieldBuilder() : null;
+            } else {
+              networkInfosBuilder_.addAllMessages(other.networkInfos_);
+            }
+          }
+        }
+        if (other.hasCgroupInfo()) {
+          mergeCgroupInfo(other.getCgroupInfo());
+        }
+        if (other.hasExecutorPid()) {
+          setExecutorPid(other.getExecutorPid());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (hasContainerId()) {
+          if (!getContainerId().isInitialized()) {
+            
+            return false;
+          }
+        }
+        for (int i = 0; i < getNetworkInfosCount(); i++) {
+          if (!getNetworkInfos(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.ContainerStatus parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.ContainerStatus) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional .mesos.ContainerID container_id = 4;
+      private org.apache.mesos.Protos.ContainerID containerId_ = org.apache.mesos.Protos.ContainerID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.ContainerID, org.apache.mesos.Protos.ContainerID.Builder, org.apache.mesos.Protos.ContainerIDOrBuilder> containerIdBuilder_;
+      /**
+       * <code>optional .mesos.ContainerID container_id = 4;</code>
+       */
+      public boolean hasContainerId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.ContainerID container_id = 4;</code>
+       */
+      public org.apache.mesos.Protos.ContainerID getContainerId() {
+        if (containerIdBuilder_ == null) {
+          return containerId_;
+        } else {
+          return containerIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.ContainerID container_id = 4;</code>
+       */
+      public Builder setContainerId(org.apache.mesos.Protos.ContainerID value) {
+        if (containerIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          containerId_ = value;
+          onChanged();
+        } else {
+          containerIdBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ContainerID container_id = 4;</code>
+       */
+      public Builder setContainerId(
+          org.apache.mesos.Protos.ContainerID.Builder builderForValue) {
+        if (containerIdBuilder_ == null) {
+          containerId_ = builderForValue.build();
+          onChanged();
+        } else {
+          containerIdBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ContainerID container_id = 4;</code>
+       */
+      public Builder mergeContainerId(org.apache.mesos.Protos.ContainerID value) {
+        if (containerIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001) &&
+              containerId_ != org.apache.mesos.Protos.ContainerID.getDefaultInstance()) {
+            containerId_ =
+              org.apache.mesos.Protos.ContainerID.newBuilder(containerId_).mergeFrom(value).buildPartial();
+          } else {
+            containerId_ = value;
+          }
+          onChanged();
+        } else {
+          containerIdBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ContainerID container_id = 4;</code>
+       */
+      public Builder clearContainerId() {
+        if (containerIdBuilder_ == null) {
+          containerId_ = org.apache.mesos.Protos.ContainerID.getDefaultInstance();
+          onChanged();
+        } else {
+          containerIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.ContainerID container_id = 4;</code>
+       */
+      public org.apache.mesos.Protos.ContainerID.Builder getContainerIdBuilder() {
+        bitField0_ |= 0x00000001;
+        onChanged();
+        return getContainerIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.ContainerID container_id = 4;</code>
+       */
+      public org.apache.mesos.Protos.ContainerIDOrBuilder getContainerIdOrBuilder() {
+        if (containerIdBuilder_ != null) {
+          return containerIdBuilder_.getMessageOrBuilder();
+        } else {
+          return containerId_;
+        }
+      }
+      /**
+       * <code>optional .mesos.ContainerID container_id = 4;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.ContainerID, org.apache.mesos.Protos.ContainerID.Builder, org.apache.mesos.Protos.ContainerIDOrBuilder> 
+          getContainerIdFieldBuilder() {
+        if (containerIdBuilder_ == null) {
+          containerIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.ContainerID, org.apache.mesos.Protos.ContainerID.Builder, org.apache.mesos.Protos.ContainerIDOrBuilder>(
+                  containerId_,
+                  getParentForChildren(),
+                  isClean());
+          containerId_ = null;
+        }
+        return containerIdBuilder_;
+      }
+
+      // repeated .mesos.NetworkInfo network_infos = 1;
+      private java.util.List<org.apache.mesos.Protos.NetworkInfo> networkInfos_ =
+        java.util.Collections.emptyList();
+      private void ensureNetworkInfosIsMutable() {
+        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
+          networkInfos_ = new java.util.ArrayList<org.apache.mesos.Protos.NetworkInfo>(networkInfos_);
+          bitField0_ |= 0x00000002;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.NetworkInfo, org.apache.mesos.Protos.NetworkInfo.Builder, org.apache.mesos.Protos.NetworkInfoOrBuilder> networkInfosBuilder_;
+
+      /**
+       * <code>repeated .mesos.NetworkInfo network_infos = 1;</code>
+       *
+       * <pre>
+       * This field can be reliably used to identify the container IP address.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.Protos.NetworkInfo> getNetworkInfosList() {
+        if (networkInfosBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(networkInfos_);
+        } else {
+          return networkInfosBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo network_infos = 1;</code>
+       *
+       * <pre>
+       * This field can be reliably used to identify the container IP address.
+       * </pre>
+       */
+      public int getNetworkInfosCount() {
+        if (networkInfosBuilder_ == null) {
+          return networkInfos_.size();
+        } else {
+          return networkInfosBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo network_infos = 1;</code>
+       *
+       * <pre>
+       * This field can be reliably used to identify the container IP address.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.NetworkInfo getNetworkInfos(int index) {
+        if (networkInfosBuilder_ == null) {
+          return networkInfos_.get(index);
+        } else {
+          return networkInfosBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo network_infos = 1;</code>
+       *
+       * <pre>
+       * This field can be reliably used to identify the container IP address.
+       * </pre>
+       */
+      public Builder setNetworkInfos(
+          int index, org.apache.mesos.Protos.NetworkInfo value) {
+        if (networkInfosBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureNetworkInfosIsMutable();
+          networkInfos_.set(index, value);
+          onChanged();
+        } else {
+          networkInfosBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo network_infos = 1;</code>
+       *
+       * <pre>
+       * This field can be reliably used to identify the container IP address.
+       * </pre>
+       */
+      public Builder setNetworkInfos(
+          int index, org.apache.mesos.Protos.NetworkInfo.Builder builderForValue) {
+        if (networkInfosBuilder_ == null) {
+          ensureNetworkInfosIsMutable();
+          networkInfos_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          networkInfosBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo network_infos = 1;</code>
+       *
+       * <pre>
+       * This field can be reliably used to identify the container IP address.
+       * </pre>
+       */
+      public Builder addNetworkInfos(org.apache.mesos.Protos.NetworkInfo value) {
+        if (networkInfosBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureNetworkInfosIsMutable();
+          networkInfos_.add(value);
+          onChanged();
+        } else {
+          networkInfosBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo network_infos = 1;</code>
+       *
+       * <pre>
+       * This field can be reliably used to identify the container IP address.
+       * </pre>
+       */
+      public Builder addNetworkInfos(
+          int index, org.apache.mesos.Protos.NetworkInfo value) {
+        if (networkInfosBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureNetworkInfosIsMutable();
+          networkInfos_.add(index, value);
+          onChanged();
+        } else {
+          networkInfosBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo network_infos = 1;</code>
+       *
+       * <pre>
+       * This field can be reliably used to identify the container IP address.
+       * </pre>
+       */
+      public Builder addNetworkInfos(
+          org.apache.mesos.Protos.NetworkInfo.Builder builderForValue) {
+        if (networkInfosBuilder_ == null) {
+          ensureNetworkInfosIsMutable();
+          networkInfos_.add(builderForValue.build());
+          onChanged();
+        } else {
+          networkInfosBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo network_infos = 1;</code>
+       *
+       * <pre>
+       * This field can be reliably used to identify the container IP address.
+       * </pre>
+       */
+      public Builder addNetworkInfos(
+          int index, org.apache.mesos.Protos.NetworkInfo.Builder builderForValue) {
+        if (networkInfosBuilder_ == null) {
+          ensureNetworkInfosIsMutable();
+          networkInfos_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          networkInfosBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo network_infos = 1;</code>
+       *
+       * <pre>
+       * This field can be reliably used to identify the container IP address.
+       * </pre>
+       */
+      public Builder addAllNetworkInfos(
+          java.lang.Iterable<? extends org.apache.mesos.Protos.NetworkInfo> values) {
+        if (networkInfosBuilder_ == null) {
+          ensureNetworkInfosIsMutable();
+          super.addAll(values, networkInfos_);
+          onChanged();
+        } else {
+          networkInfosBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo network_infos = 1;</code>
+       *
+       * <pre>
+       * This field can be reliably used to identify the container IP address.
+       * </pre>
+       */
+      public Builder clearNetworkInfos() {
+        if (networkInfosBuilder_ == null) {
+          networkInfos_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000002);
+          onChanged();
+        } else {
+          networkInfosBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo network_infos = 1;</code>
+       *
+       * <pre>
+       * This field can be reliably used to identify the container IP address.
+       * </pre>
+       */
+      public Builder removeNetworkInfos(int index) {
+        if (networkInfosBuilder_ == null) {
+          ensureNetworkInfosIsMutable();
+          networkInfos_.remove(index);
+          onChanged();
+        } else {
+          networkInfosBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo network_infos = 1;</code>
+       *
+       * <pre>
+       * This field can be reliably used to identify the container IP address.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.NetworkInfo.Builder getNetworkInfosBuilder(
+          int index) {
+        return getNetworkInfosFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo network_infos = 1;</code>
+       *
+       * <pre>
+       * This field can be reliably used to identify the container IP address.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.NetworkInfoOrBuilder getNetworkInfosOrBuilder(
+          int index) {
+        if (networkInfosBuilder_ == null) {
+          return networkInfos_.get(index);  } else {
+          return networkInfosBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo network_infos = 1;</code>
+       *
+       * <pre>
+       * This field can be reliably used to identify the container IP address.
+       * </pre>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.NetworkInfoOrBuilder> 
+           getNetworkInfosOrBuilderList() {
+        if (networkInfosBuilder_ != null) {
+          return networkInfosBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(networkInfos_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo network_infos = 1;</code>
+       *
+       * <pre>
+       * This field can be reliably used to identify the container IP address.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.NetworkInfo.Builder addNetworkInfosBuilder() {
+        return getNetworkInfosFieldBuilder().addBuilder(
+            org.apache.mesos.Protos.NetworkInfo.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo network_infos = 1;</code>
+       *
+       * <pre>
+       * This field can be reliably used to identify the container IP address.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.NetworkInfo.Builder addNetworkInfosBuilder(
+          int index) {
+        return getNetworkInfosFieldBuilder().addBuilder(
+            index, org.apache.mesos.Protos.NetworkInfo.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.NetworkInfo network_infos = 1;</code>
+       *
+       * <pre>
+       * This field can be reliably used to identify the container IP address.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.Protos.NetworkInfo.Builder> 
+           getNetworkInfosBuilderList() {
+        return getNetworkInfosFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.NetworkInfo, org.apache.mesos.Protos.NetworkInfo.Builder, org.apache.mesos.Protos.NetworkInfoOrBuilder> 
+          getNetworkInfosFieldBuilder() {
+        if (networkInfosBuilder_ == null) {
+          networkInfosBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.NetworkInfo, org.apache.mesos.Protos.NetworkInfo.Builder, org.apache.mesos.Protos.NetworkInfoOrBuilder>(
+                  networkInfos_,
+                  ((bitField0_ & 0x00000002) == 0x00000002),
+                  getParentForChildren(),
+                  isClean());
+          networkInfos_ = null;
+        }
+        return networkInfosBuilder_;
+      }
+
+      // optional .mesos.CgroupInfo cgroup_info = 2;
+      private org.apache.mesos.Protos.CgroupInfo cgroupInfo_ = org.apache.mesos.Protos.CgroupInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.CgroupInfo, org.apache.mesos.Protos.CgroupInfo.Builder, org.apache.mesos.Protos.CgroupInfoOrBuilder> cgroupInfoBuilder_;
+      /**
+       * <code>optional .mesos.CgroupInfo cgroup_info = 2;</code>
+       *
+       * <pre>
+       * Information about Linux control group (cgroup).
+       * </pre>
+       */
+      public boolean hasCgroupInfo() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.CgroupInfo cgroup_info = 2;</code>
+       *
+       * <pre>
+       * Information about Linux control group (cgroup).
+       * </pre>
+       */
+      public org.apache.mesos.Protos.CgroupInfo getCgroupInfo() {
+        if (cgroupInfoBuilder_ == null) {
+          return cgroupInfo_;
+        } else {
+          return cgroupInfoBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.CgroupInfo cgroup_info = 2;</code>
+       *
+       * <pre>
+       * Information about Linux control group (cgroup).
+       * </pre>
+       */
+      public Builder setCgroupInfo(org.apache.mesos.Protos.CgroupInfo value) {
+        if (cgroupInfoBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          cgroupInfo_ = value;
+          onChanged();
+        } else {
+          cgroupInfoBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CgroupInfo cgroup_info = 2;</code>
+       *
+       * <pre>
+       * Information about Linux control group (cgroup).
+       * </pre>
+       */
+      public Builder setCgroupInfo(
+          org.apache.mesos.Protos.CgroupInfo.Builder builderForValue) {
+        if (cgroupInfoBuilder_ == null) {
+          cgroupInfo_ = builderForValue.build();
+          onChanged();
+        } else {
+          cgroupInfoBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CgroupInfo cgroup_info = 2;</code>
+       *
+       * <pre>
+       * Information about Linux control group (cgroup).
+       * </pre>
+       */
+      public Builder mergeCgroupInfo(org.apache.mesos.Protos.CgroupInfo value) {
+        if (cgroupInfoBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) == 0x00000004) &&
+              cgroupInfo_ != org.apache.mesos.Protos.CgroupInfo.getDefaultInstance()) {
+            cgroupInfo_ =
+              org.apache.mesos.Protos.CgroupInfo.newBuilder(cgroupInfo_).mergeFrom(value).buildPartial();
+          } else {
+            cgroupInfo_ = value;
+          }
+          onChanged();
+        } else {
+          cgroupInfoBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CgroupInfo cgroup_info = 2;</code>
+       *
+       * <pre>
+       * Information about Linux control group (cgroup).
+       * </pre>
+       */
+      public Builder clearCgroupInfo() {
+        if (cgroupInfoBuilder_ == null) {
+          cgroupInfo_ = org.apache.mesos.Protos.CgroupInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          cgroupInfoBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CgroupInfo cgroup_info = 2;</code>
+       *
+       * <pre>
+       * Information about Linux control group (cgroup).
+       * </pre>
+       */
+      public org.apache.mesos.Protos.CgroupInfo.Builder getCgroupInfoBuilder() {
+        bitField0_ |= 0x00000004;
+        onChanged();
+        return getCgroupInfoFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.CgroupInfo cgroup_info = 2;</code>
+       *
+       * <pre>
+       * Information about Linux control group (cgroup).
+       * </pre>
+       */
+      public org.apache.mesos.Protos.CgroupInfoOrBuilder getCgroupInfoOrBuilder() {
+        if (cgroupInfoBuilder_ != null) {
+          return cgroupInfoBuilder_.getMessageOrBuilder();
+        } else {
+          return cgroupInfo_;
+        }
+      }
+      /**
+       * <code>optional .mesos.CgroupInfo cgroup_info = 2;</code>
+       *
+       * <pre>
+       * Information about Linux control group (cgroup).
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.CgroupInfo, org.apache.mesos.Protos.CgroupInfo.Builder, org.apache.mesos.Protos.CgroupInfoOrBuilder> 
+          getCgroupInfoFieldBuilder() {
+        if (cgroupInfoBuilder_ == null) {
+          cgroupInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.CgroupInfo, org.apache.mesos.Protos.CgroupInfo.Builder, org.apache.mesos.Protos.CgroupInfoOrBuilder>(
+                  cgroupInfo_,
+                  getParentForChildren(),
+                  isClean());
+          cgroupInfo_ = null;
+        }
+        return cgroupInfoBuilder_;
+      }
+
+      // optional uint32 executor_pid = 3;
+      private int executorPid_ ;
+      /**
+       * <code>optional uint32 executor_pid = 3;</code>
+       *
+       * <pre>
+       * Information about Executor PID.
+       * </pre>
+       */
+      public boolean hasExecutorPid() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional uint32 executor_pid = 3;</code>
+       *
+       * <pre>
+       * Information about Executor PID.
+       * </pre>
+       */
+      public int getExecutorPid() {
+        return executorPid_;
+      }
+      /**
+       * <code>optional uint32 executor_pid = 3;</code>
+       *
+       * <pre>
+       * Information about Executor PID.
+       * </pre>
+       */
+      public Builder setExecutorPid(int value) {
+        bitField0_ |= 0x00000008;
+        executorPid_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint32 executor_pid = 3;</code>
+       *
+       * <pre>
+       * Information about Executor PID.
+       * </pre>
+       */
+      public Builder clearExecutorPid() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        executorPid_ = 0;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.ContainerStatus)
+    }
+
+    static {
+      defaultInstance = new ContainerStatus(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.ContainerStatus)
+  }
+
+  public interface CgroupInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional .mesos.CgroupInfo.NetCls net_cls = 1;
+    /**
+     * <code>optional .mesos.CgroupInfo.NetCls net_cls = 1;</code>
+     */
+    boolean hasNetCls();
+    /**
+     * <code>optional .mesos.CgroupInfo.NetCls net_cls = 1;</code>
+     */
+    org.apache.mesos.Protos.CgroupInfo.NetCls getNetCls();
+    /**
+     * <code>optional .mesos.CgroupInfo.NetCls net_cls = 1;</code>
+     */
+    org.apache.mesos.Protos.CgroupInfo.NetClsOrBuilder getNetClsOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.CgroupInfo}
+   *
+   * <pre>
+   **
+   * Linux control group (cgroup) information.
+   * </pre>
+   */
+  public static final class CgroupInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements CgroupInfoOrBuilder {
+    // Use CgroupInfo.newBuilder() to construct.
+    private CgroupInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private CgroupInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final CgroupInfo defaultInstance;
+    public static CgroupInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public CgroupInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private CgroupInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              org.apache.mesos.Protos.CgroupInfo.NetCls.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                subBuilder = netCls_.toBuilder();
+              }
+              netCls_ = input.readMessage(org.apache.mesos.Protos.CgroupInfo.NetCls.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(netCls_);
+                netCls_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.CgroupInfo.class, org.apache.mesos.Protos.CgroupInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<CgroupInfo> PARSER =
+        new com.google.protobuf.AbstractParser<CgroupInfo>() {
+      public CgroupInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new CgroupInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<CgroupInfo> getParserForType() {
+      return PARSER;
+    }
+
+    public interface BlkioOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+    }
+    /**
+     * Protobuf type {@code mesos.CgroupInfo.Blkio}
+     *
+     * <pre>
+     * Configuration of a blkio cgroup subsystem.
+     * </pre>
+     */
+    public static final class Blkio extends
+        com.google.protobuf.GeneratedMessage
+        implements BlkioOrBuilder {
+      // Use Blkio.newBuilder() to construct.
+      private Blkio(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Blkio(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Blkio defaultInstance;
+      public static Blkio getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Blkio getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Blkio(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_Blkio_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_Blkio_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.CgroupInfo.Blkio.class, org.apache.mesos.Protos.CgroupInfo.Blkio.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Blkio> PARSER =
+          new com.google.protobuf.AbstractParser<Blkio>() {
+        public Blkio parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Blkio(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Blkio> getParserForType() {
+        return PARSER;
+      }
+
+      /**
+       * Protobuf enum {@code mesos.CgroupInfo.Blkio.Operation}
+       */
+      public enum Operation
+          implements com.google.protobuf.ProtocolMessageEnum {
+        /**
+         * <code>UNKNOWN = 0;</code>
+         */
+        UNKNOWN(0, 0),
+        /**
+         * <code>TOTAL = 1;</code>
+         */
+        TOTAL(1, 1),
+        /**
+         * <code>READ = 2;</code>
+         */
+        READ(2, 2),
+        /**
+         * <code>WRITE = 3;</code>
+         */
+        WRITE(3, 3),
+        /**
+         * <code>SYNC = 4;</code>
+         */
+        SYNC(4, 4),
+        /**
+         * <code>ASYNC = 5;</code>
+         */
+        ASYNC(5, 5),
+        ;
+
+        /**
+         * <code>UNKNOWN = 0;</code>
+         */
+        public static final int UNKNOWN_VALUE = 0;
+        /**
+         * <code>TOTAL = 1;</code>
+         */
+        public static final int TOTAL_VALUE = 1;
+        /**
+         * <code>READ = 2;</code>
+         */
+        public static final int READ_VALUE = 2;
+        /**
+         * <code>WRITE = 3;</code>
+         */
+        public static final int WRITE_VALUE = 3;
+        /**
+         * <code>SYNC = 4;</code>
+         */
+        public static final int SYNC_VALUE = 4;
+        /**
+         * <code>ASYNC = 5;</code>
+         */
+        public static final int ASYNC_VALUE = 5;
+
+
+        public final int getNumber() { return value; }
+
+        public static Operation valueOf(int value) {
+          switch (value) {
+            case 0: return UNKNOWN;
+            case 1: return TOTAL;
+            case 2: return READ;
+            case 3: return WRITE;
+            case 4: return SYNC;
+            case 5: return ASYNC;
+            default: return null;
+          }
+        }
+
+        public static com.google.protobuf.Internal.EnumLiteMap<Operation>
+            internalGetValueMap() {
+          return internalValueMap;
+        }
+        private static com.google.protobuf.Internal.EnumLiteMap<Operation>
+            internalValueMap =
+              new com.google.protobuf.Internal.EnumLiteMap<Operation>() {
+                public Operation findValueByNumber(int number) {
+                  return Operation.valueOf(number);
+                }
+              };
+
+        public final com.google.protobuf.Descriptors.EnumValueDescriptor
+            getValueDescriptor() {
+          return getDescriptor().getValues().get(index);
+        }
+        public final com.google.protobuf.Descriptors.EnumDescriptor
+            getDescriptorForType() {
+          return getDescriptor();
+        }
+        public static final com.google.protobuf.Descriptors.EnumDescriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.CgroupInfo.Blkio.getDescriptor().getEnumTypes().get(0);
+        }
+
+        private static final Operation[] VALUES = values();
+
+        public static Operation valueOf(
+            com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+          if (desc.getType() != getDescriptor()) {
+            throw new java.lang.IllegalArgumentException(
+              "EnumValueDescriptor is not for this type.");
+          }
+          return VALUES[desc.getIndex()];
+        }
+
+        private final int index;
+        private final int value;
+
+        private Operation(int index, int value) {
+          this.index = index;
+          this.value = value;
+        }
+
+        // @@protoc_insertion_point(enum_scope:mesos.CgroupInfo.Blkio.Operation)
+      }
+
+      public interface ValueOrBuilder
+          extends com.google.protobuf.MessageOrBuilder {
+
+        // optional .mesos.CgroupInfo.Blkio.Operation op = 1;
+        /**
+         * <code>optional .mesos.CgroupInfo.Blkio.Operation op = 1;</code>
+         *
+         * <pre>
+         * Required.
+         * </pre>
+         */
+        boolean hasOp();
+        /**
+         * <code>optional .mesos.CgroupInfo.Blkio.Operation op = 1;</code>
+         *
+         * <pre>
+         * Required.
+         * </pre>
+         */
+        org.apache.mesos.Protos.CgroupInfo.Blkio.Operation getOp();
+
+        // optional uint64 value = 2;
+        /**
+         * <code>optional uint64 value = 2;</code>
+         *
+         * <pre>
+         * Required.
+         * </pre>
+         */
+        boolean hasValue();
+        /**
+         * <code>optional uint64 value = 2;</code>
+         *
+         * <pre>
+         * Required.
+         * </pre>
+         */
+        long getValue();
+      }
+      /**
+       * Protobuf type {@code mesos.CgroupInfo.Blkio.Value}
+       *
+       * <pre>
+       * Describes a stat value without the device descriptor part.
+       * </pre>
+       */
+      public static final class Value extends
+          com.google.protobuf.GeneratedMessage
+          implements ValueOrBuilder {
+        // Use Value.newBuilder() to construct.
+        private Value(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+          super(builder);
+          this.unknownFields = builder.getUnknownFields();
+        }
+        private Value(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+        private static final Value defaultInstance;
+        public static Value getDefaultInstance() {
+          return defaultInstance;
+        }
+
+        public Value getDefaultInstanceForType() {
+          return defaultInstance;
+        }
+
+        private final com.google.protobuf.UnknownFieldSet unknownFields;
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet
+            getUnknownFields() {
+          return this.unknownFields;
+        }
+        private Value(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          initFields();
+          int mutable_bitField0_ = 0;
+          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+              com.google.protobuf.UnknownFieldSet.newBuilder();
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(input, unknownFields,
+                                         extensionRegistry, tag)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 8: {
+                  int rawValue = input.readEnum();
+                  org.apache.mesos.Protos.CgroupInfo.Blkio.Operation value = org.apache.mesos.Protos.CgroupInfo.Blkio.Operation.valueOf(rawValue);
+                  if (value == null) {
+                    unknownFields.mergeVarintField(1, rawValue);
+                  } else {
+                    bitField0_ |= 0x00000001;
+                    op_ = value;
+                  }
+                  break;
+                }
+                case 16: {
+                  bitField0_ |= 0x00000002;
+                  value_ = input.readUInt64();
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw e.setUnfinishedMessage(this);
+          } catch (java.io.IOException e) {
+            throw new com.google.protobuf.InvalidProtocolBufferException(
+                e.getMessage()).setUnfinishedMessage(this);
+          } finally {
+            this.unknownFields = unknownFields.build();
+            makeExtensionsImmutable();
+          }
+        }
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_Blkio_Value_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_Blkio_Value_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.CgroupInfo.Blkio.Value.class, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder.class);
+        }
+
+        public static com.google.protobuf.Parser<Value> PARSER =
+            new com.google.protobuf.AbstractParser<Value>() {
+          public Value parsePartialFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return new Value(input, extensionRegistry);
+          }
+        };
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<Value> getParserForType() {
+          return PARSER;
+        }
+
+        private int bitField0_;
+        // optional .mesos.CgroupInfo.Blkio.Operation op = 1;
+        public static final int OP_FIELD_NUMBER = 1;
+        private org.apache.mesos.Protos.CgroupInfo.Blkio.Operation op_;
+        /**
+         * <code>optional .mesos.CgroupInfo.Blkio.Operation op = 1;</code>
+         *
+         * <pre>
+         * Required.
+         * </pre>
+         */
+        public boolean hasOp() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional .mesos.CgroupInfo.Blkio.Operation op = 1;</code>
+         *
+         * <pre>
+         * Required.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.CgroupInfo.Blkio.Operation getOp() {
+          return op_;
+        }
+
+        // optional uint64 value = 2;
+        public static final int VALUE_FIELD_NUMBER = 2;
+        private long value_;
+        /**
+         * <code>optional uint64 value = 2;</code>
+         *
+         * <pre>
+         * Required.
+         * </pre>
+         */
+        public boolean hasValue() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional uint64 value = 2;</code>
+         *
+         * <pre>
+         * Required.
+         * </pre>
+         */
+        public long getValue() {
+          return value_;
+        }
+
+        private void initFields() {
+          op_ = org.apache.mesos.Protos.CgroupInfo.Blkio.Operation.UNKNOWN;
+          value_ = 0L;
+        }
+        private byte memoizedIsInitialized = -1;
+        public final boolean isInitialized() {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized != -1) return isInitialized == 1;
+
+          memoizedIsInitialized = 1;
+          return true;
+        }
+
+        public void writeTo(com.google.protobuf.CodedOutputStream output)
+                            throws java.io.IOException {
+          getSerializedSize();
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            output.writeEnum(1, op_.getNumber());
+          }
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            output.writeUInt64(2, value_);
+          }
+          getUnknownFields().writeTo(output);
+        }
+
+        private int memoizedSerializedSize = -1;
+        public int getSerializedSize() {
+          int size = memoizedSerializedSize;
+          if (size != -1) return size;
+
+          size = 0;
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeEnumSize(1, op_.getNumber());
+          }
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeUInt64Size(2, value_);
+          }
+          size += getUnknownFields().getSerializedSize();
+          memoizedSerializedSize = size;
+          return size;
+        }
+
+        private static final long serialVersionUID = 0L;
+        @java.lang.Override
+        protected java.lang.Object writeReplace()
+            throws java.io.ObjectStreamException {
+          return super.writeReplace();
+        }
+
+        public static org.apache.mesos.Protos.CgroupInfo.Blkio.Value parseFrom(
+            com.google.protobuf.ByteString data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.Protos.CgroupInfo.Blkio.Value parseFrom(
+            com.google.protobuf.ByteString data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.CgroupInfo.Blkio.Value parseFrom(byte[] data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.Protos.CgroupInfo.Blkio.Value parseFrom(
+            byte[] data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.CgroupInfo.Blkio.Value parseFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.Protos.CgroupInfo.Blkio.Value parseFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.CgroupInfo.Blkio.Value parseDelimitedFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input);
+        }
+        public static org.apache.mesos.Protos.CgroupInfo.Blkio.Value parseDelimitedFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.CgroupInfo.Blkio.Value parseFrom(
+            com.google.protobuf.CodedInputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.Protos.CgroupInfo.Blkio.Value parseFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+
+        public static Builder newBuilder() { return Builder.create(); }
+        public Builder newBuilderForType() { return newBuilder(); }
+        public static Builder newBuilder(org.apache.mesos.Protos.CgroupInfo.Blkio.Value prototype) {
+          return newBuilder().mergeFrom(prototype);
+        }
+        public Builder toBuilder() { return newBuilder(this); }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          Builder builder = new Builder(parent);
+          return builder;
+        }
+        /**
+         * Protobuf type {@code mesos.CgroupInfo.Blkio.Value}
+         *
+         * <pre>
+         * Describes a stat value without the device descriptor part.
+         * </pre>
+         */
+        public static final class Builder extends
+            com.google.protobuf.GeneratedMessage.Builder<Builder>
+           implements org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder {
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_Blkio_Value_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_Blkio_Value_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.Protos.CgroupInfo.Blkio.Value.class, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder.class);
+          }
+
+          // Construct using org.apache.mesos.Protos.CgroupInfo.Blkio.Value.newBuilder()
+          private Builder() {
+            maybeForceBuilderInitialization();
+          }
+
+          private Builder(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            super(parent);
+            maybeForceBuilderInitialization();
+          }
+          private void maybeForceBuilderInitialization() {
+            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            }
+          }
+          private static Builder create() {
+            return new Builder();
+          }
+
+          public Builder clear() {
+            super.clear();
+            op_ = org.apache.mesos.Protos.CgroupInfo.Blkio.Operation.UNKNOWN;
+            bitField0_ = (bitField0_ & ~0x00000001);
+            value_ = 0L;
+            bitField0_ = (bitField0_ & ~0x00000002);
+            return this;
+          }
+
+          public Builder clone() {
+            return create().mergeFrom(buildPartial());
+          }
+
+          public com.google.protobuf.Descriptors.Descriptor
+              getDescriptorForType() {
+            return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_Blkio_Value_descriptor;
+          }
+
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.Value getDefaultInstanceForType() {
+            return org.apache.mesos.Protos.CgroupInfo.Blkio.Value.getDefaultInstance();
+          }
+
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.Value build() {
+            org.apache.mesos.Protos.CgroupInfo.Blkio.Value result = buildPartial();
+            if (!result.isInitialized()) {
+              throw newUninitializedMessageException(result);
+            }
+            return result;
+          }
+
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.Value buildPartial() {
+            org.apache.mesos.Protos.CgroupInfo.Blkio.Value result = new org.apache.mesos.Protos.CgroupInfo.Blkio.Value(this);
+            int from_bitField0_ = bitField0_;
+            int to_bitField0_ = 0;
+            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+              to_bitField0_ |= 0x00000001;
+            }
+            result.op_ = op_;
+            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+              to_bitField0_ |= 0x00000002;
+            }
+            result.value_ = value_;
+            result.bitField0_ = to_bitField0_;
+            onBuilt();
+            return result;
+          }
+
+          public Builder mergeFrom(com.google.protobuf.Message other) {
+            if (other instanceof org.apache.mesos.Protos.CgroupInfo.Blkio.Value) {
+              return mergeFrom((org.apache.mesos.Protos.CgroupInfo.Blkio.Value)other);
+            } else {
+              super.mergeFrom(other);
+              return this;
+            }
+          }
+
+          public Builder mergeFrom(org.apache.mesos.Protos.CgroupInfo.Blkio.Value other) {
+            if (other == org.apache.mesos.Protos.CgroupInfo.Blkio.Value.getDefaultInstance()) return this;
+            if (other.hasOp()) {
+              setOp(other.getOp());
+            }
+            if (other.hasValue()) {
+              setValue(other.getValue());
+            }
+            this.mergeUnknownFields(other.getUnknownFields());
+            return this;
+          }
+
+          public final boolean isInitialized() {
+            return true;
+          }
+
+          public Builder mergeFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            org.apache.mesos.Protos.CgroupInfo.Blkio.Value parsedMessage = null;
+            try {
+              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              parsedMessage = (org.apache.mesos.Protos.CgroupInfo.Blkio.Value) e.getUnfinishedMessage();
+              throw e;
+            } finally {
+              if (parsedMessage != null) {
+                mergeFrom(parsedMessage);
+              }
+            }
+            return this;
+          }
+          private int bitField0_;
+
+          // optional .mesos.CgroupInfo.Blkio.Operation op = 1;
+          private org.apache.mesos.Protos.CgroupInfo.Blkio.Operation op_ = org.apache.mesos.Protos.CgroupInfo.Blkio.Operation.UNKNOWN;
+          /**
+           * <code>optional .mesos.CgroupInfo.Blkio.Operation op = 1;</code>
+           *
+           * <pre>
+           * Required.
+           * </pre>
+           */
+          public boolean hasOp() {
+            return ((bitField0_ & 0x00000001) == 0x00000001);
+          }
+          /**
+           * <code>optional .mesos.CgroupInfo.Blkio.Operation op = 1;</code>
+           *
+           * <pre>
+           * Required.
+           * </pre>
+           */
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.Operation getOp() {
+            return op_;
+          }
+          /**
+           * <code>optional .mesos.CgroupInfo.Blkio.Operation op = 1;</code>
+           *
+           * <pre>
+           * Required.
+           * </pre>
+           */
+          public Builder setOp(org.apache.mesos.Protos.CgroupInfo.Blkio.Operation value) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            bitField0_ |= 0x00000001;
+            op_ = value;
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>optional .mesos.CgroupInfo.Blkio.Operation op = 1;</code>
+           *
+           * <pre>
+           * Required.
+           * </pre>
+           */
+          public Builder clearOp() {
+            bitField0_ = (bitField0_ & ~0x00000001);
+            op_ = org.apache.mesos.Protos.CgroupInfo.Blkio.Operation.UNKNOWN;
+            onChanged();
+            return this;
+          }
+
+          // optional uint64 value = 2;
+          private long value_ ;
+          /**
+           * <code>optional uint64 value = 2;</code>
+           *
+           * <pre>
+           * Required.
+           * </pre>
+           */
+          public boolean hasValue() {
+            return ((bitField0_ & 0x00000002) == 0x00000002);
+          }
+          /**
+           * <code>optional uint64 value = 2;</code>
+           *
+           * <pre>
+           * Required.
+           * </pre>
+           */
+          public long getValue() {
+            return value_;
+          }
+          /**
+           * <code>optional uint64 value = 2;</code>
+           *
+           * <pre>
+           * Required.
+           * </pre>
+           */
+          public Builder setValue(long value) {
+            bitField0_ |= 0x00000002;
+            value_ = value;
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>optional uint64 value = 2;</code>
+           *
+           * <pre>
+           * Required.
+           * </pre>
+           */
+          public Builder clearValue() {
+            bitField0_ = (bitField0_ & ~0x00000002);
+            value_ = 0L;
+            onChanged();
+            return this;
+          }
+
+          // @@protoc_insertion_point(builder_scope:mesos.CgroupInfo.Blkio.Value)
+        }
+
+        static {
+          defaultInstance = new Value(true);
+          defaultInstance.initFields();
+        }
+
+        // @@protoc_insertion_point(class_scope:mesos.CgroupInfo.Blkio.Value)
+      }
+
+      public interface CFQOrBuilder
+          extends com.google.protobuf.MessageOrBuilder {
+      }
+      /**
+       * Protobuf type {@code mesos.CgroupInfo.Blkio.CFQ}
+       */
+      public static final class CFQ extends
+          com.google.protobuf.GeneratedMessage
+          implements CFQOrBuilder {
+        // Use CFQ.newBuilder() to construct.
+        private CFQ(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+          super(builder);
+          this.unknownFields = builder.getUnknownFields();
+        }
+        private CFQ(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+        private static final CFQ defaultInstance;
+        public static CFQ getDefaultInstance() {
+          return defaultInstance;
+        }
+
+        public CFQ getDefaultInstanceForType() {
+          return defaultInstance;
+        }
+
+        private final com.google.protobuf.UnknownFieldSet unknownFields;
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet
+            getUnknownFields() {
+          return this.unknownFields;
+        }
+        private CFQ(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          initFields();
+          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+              com.google.protobuf.UnknownFieldSet.newBuilder();
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(input, unknownFields,
+                                         extensionRegistry, tag)) {
+                    done = true;
+                  }
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw e.setUnfinishedMessage(this);
+          } catch (java.io.IOException e) {
+            throw new com.google.protobuf.InvalidProtocolBufferException(
+                e.getMessage()).setUnfinishedMessage(this);
+          } finally {
+            this.unknownFields = unknownFields.build();
+            makeExtensionsImmutable();
+          }
+        }
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_Blkio_CFQ_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_Blkio_CFQ_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.class, org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Builder.class);
+        }
+
+        public static com.google.protobuf.Parser<CFQ> PARSER =
+            new com.google.protobuf.AbstractParser<CFQ>() {
+          public CFQ parsePartialFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return new CFQ(input, extensionRegistry);
+          }
+        };
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<CFQ> getParserForType() {
+          return PARSER;
+        }
+
+        public interface StatisticsOrBuilder
+            extends com.google.protobuf.MessageOrBuilder {
+
+          // optional .mesos.Device.Number device = 1;
+          /**
+           * <code>optional .mesos.Device.Number device = 1;</code>
+           *
+           * <pre>
+           * Stats are grouped by block devices. If `device` is not
+           * set, it represents `Total`.
+           * </pre>
+           */
+          boolean hasDevice();
+          /**
+           * <code>optional .mesos.Device.Number device = 1;</code>
+           *
+           * <pre>
+           * Stats are grouped by block devices. If `device` is not
+           * set, it represents `Total`.
+           * </pre>
+           */
+          org.apache.mesos.Protos.Device.Number getDevice();
+          /**
+           * <code>optional .mesos.Device.Number device = 1;</code>
+           *
+           * <pre>
+           * Stats are grouped by block devices. If `device` is not
+           * set, it represents `Total`.
+           * </pre>
+           */
+          org.apache.mesos.Protos.Device.NumberOrBuilder getDeviceOrBuilder();
+
+          // optional uint64 sectors = 2;
+          /**
+           * <code>optional uint64 sectors = 2;</code>
+           *
+           * <pre>
+           * blkio.sectors
+           * </pre>
+           */
+          boolean hasSectors();
+          /**
+           * <code>optional uint64 sectors = 2;</code>
+           *
+           * <pre>
+           * blkio.sectors
+           * </pre>
+           */
+          long getSectors();
+
+          // optional uint64 time = 3;
+          /**
+           * <code>optional uint64 time = 3;</code>
+           *
+           * <pre>
+           * blkio.time
+           * </pre>
+           */
+          boolean hasTime();
+          /**
+           * <code>optional uint64 time = 3;</code>
+           *
+           * <pre>
+           * blkio.time
+           * </pre>
+           */
+          long getTime();
+
+          // repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 4;
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+           *
+           * <pre>
+           * blkio.io_serviced
+           * </pre>
+           */
+          java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value> 
+              getIoServicedList();
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+           *
+           * <pre>
+           * blkio.io_serviced
+           * </pre>
+           */
+          org.apache.mesos.Protos.CgroupInfo.Blkio.Value getIoServiced(int index);
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+           *
+           * <pre>
+           * blkio.io_serviced
+           * </pre>
+           */
+          int getIoServicedCount();
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+           *
+           * <pre>
+           * blkio.io_serviced
+           * </pre>
+           */
+          java.util.List<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+              getIoServicedOrBuilderList();
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+           *
+           * <pre>
+           * blkio.io_serviced
+           * </pre>
+           */
+          org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoServicedOrBuilder(
+              int index);
+
+          // repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 5;
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+           *
+           * <pre>
+           * blkio.io_service_bytes
+           * </pre>
+           */
+          java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value> 
+              getIoServiceBytesList();
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+           *
+           * <pre>
+           * blkio.io_service_bytes
+           * </pre>
+           */
+          org.apache.mesos.Protos.CgroupInfo.Blkio.Value getIoServiceBytes(int index);
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+           *
+           * <pre>
+           * blkio.io_service_bytes
+           * </pre>
+           */
+          int getIoServiceBytesCount();
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+           *
+           * <pre>
+           * blkio.io_service_bytes
+           * </pre>
+           */
+          java.util.List<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+              getIoServiceBytesOrBuilderList();
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+           *
+           * <pre>
+           * blkio.io_service_bytes
+           * </pre>
+           */
+          org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoServiceBytesOrBuilder(
+              int index);
+
+          // repeated .mesos.CgroupInfo.Blkio.Value io_service_time = 6;
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+           *
+           * <pre>
+           * blkio.io_service_time
+           * </pre>
+           */
+          java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value> 
+              getIoServiceTimeList();
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+           *
+           * <pre>
+           * blkio.io_service_time
+           * </pre>
+           */
+          org.apache.mesos.Protos.CgroupInfo.Blkio.Value getIoServiceTime(int index);
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+           *
+           * <pre>
+           * blkio.io_service_time
+           * </pre>
+           */
+          int getIoServiceTimeCount();
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+           *
+           * <pre>
+           * blkio.io_service_time
+           * </pre>
+           */
+          java.util.List<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+              getIoServiceTimeOrBuilderList();
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+           *
+           * <pre>
+           * blkio.io_service_time
+           * </pre>
+           */
+          org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoServiceTimeOrBuilder(
+              int index);
+
+          // repeated .mesos.CgroupInfo.Blkio.Value io_wait_time = 7;
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+           *
+           * <pre>
+           * blkio.io_wait_time
+           * </pre>
+           */
+          java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value> 
+              getIoWaitTimeList();
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+           *
+           * <pre>
+           * blkio.io_wait_time
+           * </pre>
+           */
+          org.apache.mesos.Protos.CgroupInfo.Blkio.Value getIoWaitTime(int index);
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+           *
+           * <pre>
+           * blkio.io_wait_time
+           * </pre>
+           */
+          int getIoWaitTimeCount();
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+           *
+           * <pre>
+           * blkio.io_wait_time
+           * </pre>
+           */
+          java.util.List<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+              getIoWaitTimeOrBuilderList();
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+           *
+           * <pre>
+           * blkio.io_wait_time
+           * </pre>
+           */
+          org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoWaitTimeOrBuilder(
+              int index);
+
+          // repeated .mesos.CgroupInfo.Blkio.Value io_merged = 8;
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_merged = 8;</code>
+           *
+           * <pre>
+           * blkio.io_merged
+           * </pre>
+           */
+          java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value> 
+              getIoMergedList();
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_merged = 8;</code>
+           *
+           * <pre>
+           * blkio.io_merged
+           * </pre>
+           */
+          org.apache.mesos.Protos.CgroupInfo.Blkio.Value getIoMerged(int index);
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_merged = 8;</code>
+           *
+           * <pre>
+           * blkio.io_merged
+           * </pre>
+           */
+          int getIoMergedCount();
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_merged = 8;</code>
+           *
+           * <pre>
+           * blkio.io_merged
+           * </pre>
+           */
+          java.util.List<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+              getIoMergedOrBuilderList();
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_merged = 8;</code>
+           *
+           * <pre>
+           * blkio.io_merged
+           * </pre>
+           */
+          org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoMergedOrBuilder(
+              int index);
+
+          // repeated .mesos.CgroupInfo.Blkio.Value io_queued = 9;
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_queued = 9;</code>
+           *
+           * <pre>
+           * blkio.io_queued
+           * </pre>
+           */
+          java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value> 
+              getIoQueuedList();
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_queued = 9;</code>
+           *
+           * <pre>
+           * blkio.io_queued
+           * </pre>
+           */
+          org.apache.mesos.Protos.CgroupInfo.Blkio.Value getIoQueued(int index);
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_queued = 9;</code>
+           *
+           * <pre>
+           * blkio.io_queued
+           * </pre>
+           */
+          int getIoQueuedCount();
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_queued = 9;</code>
+           *
+           * <pre>
+           * blkio.io_queued
+           * </pre>
+           */
+          java.util.List<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+              getIoQueuedOrBuilderList();
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_queued = 9;</code>
+           *
+           * <pre>
+           * blkio.io_queued
+           * </pre>
+           */
+          org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoQueuedOrBuilder(
+              int index);
+        }
+        /**
+         * Protobuf type {@code mesos.CgroupInfo.Blkio.CFQ.Statistics}
+         */
+        public static final class Statistics extends
+            com.google.protobuf.GeneratedMessage
+            implements StatisticsOrBuilder {
+          // Use Statistics.newBuilder() to construct.
+          private Statistics(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+            super(builder);
+            this.unknownFields = builder.getUnknownFields();
+          }
+          private Statistics(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+          private static final Statistics defaultInstance;
+          public static Statistics getDefaultInstance() {
+            return defaultInstance;
+          }
+
+          public Statistics getDefaultInstanceForType() {
+            return defaultInstance;
+          }
+
+          private final com.google.protobuf.UnknownFieldSet unknownFields;
+          @java.lang.Override
+          public final com.google.protobuf.UnknownFieldSet
+              getUnknownFields() {
+            return this.unknownFields;
+          }
+          private Statistics(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            initFields();
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+                com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+              boolean done = false;
+              while (!done) {
+                int tag = input.readTag();
+                switch (tag) {
+                  case 0:
+                    done = true;
+                    break;
+                  default: {
+                    if (!parseUnknownField(input, unknownFields,
+                                           extensionRegistry, tag)) {
+                      done = true;
+                    }
+                    break;
+                  }
+                  case 10: {
+                    org.apache.mesos.Protos.Device.Number.Builder subBuilder = null;
+                    if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                      subBuilder = device_.toBuilder();
+                    }
+                    device_ = input.readMessage(org.apache.mesos.Protos.Device.Number.PARSER, extensionRegistry);
+                    if (subBuilder != null) {
+                      subBuilder.mergeFrom(device_);
+                      device_ = subBuilder.buildPartial();
+                    }
+                    bitField0_ |= 0x00000001;
+                    break;
+                  }
+                  case 16: {
+                    bitField0_ |= 0x00000002;
+                    sectors_ = input.readUInt64();
+                    break;
+                  }
+                  case 24: {
+                    bitField0_ |= 0x00000004;
+                    time_ = input.readUInt64();
+                    break;
+                  }
+                  case 34: {
+                    if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
+                      ioServiced_ = new java.util.ArrayList<org.apache.mesos.Protos.CgroupInfo.Blkio.Value>();
+                      mutable_bitField0_ |= 0x00000008;
+                    }
+                    ioServiced_.add(input.readMessage(org.apache.mesos.Protos.CgroupInfo.Blkio.Value.PARSER, extensionRegistry));
+                    break;
+                  }
+                  case 42: {
+                    if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
+                      ioServiceBytes_ = new java.util.ArrayList<org.apache.mesos.Protos.CgroupInfo.Blkio.Value>();
+                      mutable_bitField0_ |= 0x00000010;
+                    }
+                    ioServiceBytes_.add(input.readMessage(org.apache.mesos.Protos.CgroupInfo.Blkio.Value.PARSER, extensionRegistry));
+                    break;
+                  }
+                  case 50: {
+                    if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
+                      ioServiceTime_ = new java.util.ArrayList<org.apache.mesos.Protos.CgroupInfo.Blkio.Value>();
+                      mutable_bitField0_ |= 0x00000020;
+                    }
+                    ioServiceTime_.add(input.readMessage(org.apache.mesos.Protos.CgroupInfo.Blkio.Value.PARSER, extensionRegistry));
+                    break;
+                  }
+                  case 58: {
+                    if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
+                      ioWaitTime_ = new java.util.ArrayList<org.apache.mesos.Protos.CgroupInfo.Blkio.Value>();
+                      mutable_bitField0_ |= 0x00000040;
+                    }
+                    ioWaitTime_.add(input.readMessage(org.apache.mesos.Protos.CgroupInfo.Blkio.Value.PARSER, extensionRegistry));
+                    break;
+                  }
+                  case 66: {
+                    if (!((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
+                      ioMerged_ = new java.util.ArrayList<org.apache.mesos.Protos.CgroupInfo.Blkio.Value>();
+                      mutable_bitField0_ |= 0x00000080;
+                    }
+                    ioMerged_.add(input.readMessage(org.apache.mesos.Protos.CgroupInfo.Blkio.Value.PARSER, extensionRegistry));
+                    break;
+                  }
+                  case 74: {
+                    if (!((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
+                      ioQueued_ = new java.util.ArrayList<org.apache.mesos.Protos.CgroupInfo.Blkio.Value>();
+                      mutable_bitField0_ |= 0x00000100;
+                    }
+                    ioQueued_.add(input.readMessage(org.apache.mesos.Protos.CgroupInfo.Blkio.Value.PARSER, extensionRegistry));
+                    break;
+                  }
+                }
+              }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+              throw new com.google.protobuf.InvalidProtocolBufferException(
+                  e.getMessage()).setUnfinishedMessage(this);
+            } finally {
+              if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
+                ioServiced_ = java.util.Collections.unmodifiableList(ioServiced_);
+              }
+              if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
+                ioServiceBytes_ = java.util.Collections.unmodifiableList(ioServiceBytes_);
+              }
+              if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
+                ioServiceTime_ = java.util.Collections.unmodifiableList(ioServiceTime_);
+              }
+              if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
+                ioWaitTime_ = java.util.Collections.unmodifiableList(ioWaitTime_);
+              }
+              if (((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
+                ioMerged_ = java.util.Collections.unmodifiableList(ioMerged_);
+              }
+              if (((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
+                ioQueued_ = java.util.Collections.unmodifiableList(ioQueued_);
+              }
+              this.unknownFields = unknownFields.build();
+              makeExtensionsImmutable();
+            }
+          }
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_Blkio_CFQ_Statistics_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_Blkio_CFQ_Statistics_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics.class, org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder.class);
+          }
+
+          public static com.google.protobuf.Parser<Statistics> PARSER =
+              new com.google.protobuf.AbstractParser<Statistics>() {
+            public Statistics parsePartialFrom(
+                com.google.protobuf.CodedInputStream input,
+                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+                throws com.google.protobuf.InvalidProtocolBufferException {
+              return new Statistics(input, extensionRegistry);
+            }
+          };
+
+          @java.lang.Override
+          public com.google.protobuf.Parser<Statistics> getParserForType() {
+            return PARSER;
+          }
+
+          private int bitField0_;
+          // optional .mesos.Device.Number device = 1;
+          public static final int DEVICE_FIELD_NUMBER = 1;
+          private org.apache.mesos.Protos.Device.Number device_;
+          /**
+           * <code>optional .mesos.Device.Number device = 1;</code>
+           *
+           * <pre>
+           * Stats are grouped by block devices. If `device` is not
+           * set, it represents `Total`.
+           * </pre>
+           */
+          public boolean hasDevice() {
+            return ((bitField0_ & 0x00000001) == 0x00000001);
+          }
+          /**
+           * <code>optional .mesos.Device.Number device = 1;</code>
+           *
+           * <pre>
+           * Stats are grouped by block devices. If `device` is not
+           * set, it represents `Total`.
+           * </pre>
+           */
+          public org.apache.mesos.Protos.Device.Number getDevice() {
+            return device_;
+          }
+          /**
+           * <code>optional .mesos.Device.Number device = 1;</code>
+           *
+           * <pre>
+           * Stats are grouped by block devices. If `device` is not
+           * set, it represents `Total`.
+           * </pre>
+           */
+          public org.apache.mesos.Protos.Device.NumberOrBuilder getDeviceOrBuilder() {
+            return device_;
+          }
+
+          // optional uint64 sectors = 2;
+          public static final int SECTORS_FIELD_NUMBER = 2;
+          private long sectors_;
+          /**
+           * <code>optional uint64 sectors = 2;</code>
+           *
+           * <pre>
+           * blkio.sectors
+           * </pre>
+           */
+          public boolean hasSectors() {
+            return ((bitField0_ & 0x00000002) == 0x00000002);
+          }
+          /**
+           * <code>optional uint64 sectors = 2;</code>
+           *
+           * <pre>
+           * blkio.sectors
+           * </pre>
+           */
+          public long getSectors() {
+            return sectors_;
+          }
+
+          // optional uint64 time = 3;
+          public static final int TIME_FIELD_NUMBER = 3;
+          private long time_;
+          /**
+           * <code>optional uint64 time = 3;</code>
+           *
+           * <pre>
+           * blkio.time
+           * </pre>
+           */
+          public boolean hasTime() {
+            return ((bitField0_ & 0x00000004) == 0x00000004);
+          }
+          /**
+           * <code>optional uint64 time = 3;</code>
+           *
+           * <pre>
+           * blkio.time
+           * </pre>
+           */
+          public long getTime() {
+            return time_;
+          }
+
+          // repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 4;
+          public static final int IO_SERVICED_FIELD_NUMBER = 4;
+          private java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value> ioServiced_;
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+           *
+           * <pre>
+           * blkio.io_serviced
+           * </pre>
+           */
+          public java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value> getIoServicedList() {
+            return ioServiced_;
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+           *
+           * <pre>
+           * blkio.io_serviced
+           * </pre>
+           */
+          public java.util.List<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+              getIoServicedOrBuilderList() {
+            return ioServiced_;
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+           *
+           * <pre>
+           * blkio.io_serviced
+           * </pre>
+           */
+          public int getIoServicedCount() {
+            return ioServiced_.size();
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+           *
+           * <pre>
+           * blkio.io_serviced
+           * </pre>
+           */
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.Value getIoServiced(int index) {
+            return ioServiced_.get(index);
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+           *
+           * <pre>
+           * blkio.io_serviced
+           * </pre>
+           */
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoServicedOrBuilder(
+              int index) {
+            return ioServiced_.get(index);
+          }
+
+          // repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 5;
+          public static final int IO_SERVICE_BYTES_FIELD_NUMBER = 5;
+          private java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value> ioServiceBytes_;
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+           *
+           * <pre>
+           * blkio.io_service_bytes
+           * </pre>
+           */
+          public java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value> getIoServiceBytesList() {
+            return ioServiceBytes_;
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+           *
+           * <pre>
+           * blkio.io_service_bytes
+           * </pre>
+           */
+          public java.util.List<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+              getIoServiceBytesOrBuilderList() {
+            return ioServiceBytes_;
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+           *
+           * <pre>
+           * blkio.io_service_bytes
+           * </pre>
+           */
+          public int getIoServiceBytesCount() {
+            return ioServiceBytes_.size();
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+           *
+           * <pre>
+           * blkio.io_service_bytes
+           * </pre>
+           */
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.Value getIoServiceBytes(int index) {
+            return ioServiceBytes_.get(index);
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+           *
+           * <pre>
+           * blkio.io_service_bytes
+           * </pre>
+           */
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoServiceBytesOrBuilder(
+              int index) {
+            return ioServiceBytes_.get(index);
+          }
+
+          // repeated .mesos.CgroupInfo.Blkio.Value io_service_time = 6;
+          public static final int IO_SERVICE_TIME_FIELD_NUMBER = 6;
+          private java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value> ioServiceTime_;
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+           *
+           * <pre>
+           * blkio.io_service_time
+           * </pre>
+           */
+          public java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value> getIoServiceTimeList() {
+            return ioServiceTime_;
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+           *
+           * <pre>
+           * blkio.io_service_time
+           * </pre>
+           */
+          public java.util.List<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+              getIoServiceTimeOrBuilderList() {
+            return ioServiceTime_;
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+           *
+           * <pre>
+           * blkio.io_service_time
+           * </pre>
+           */
+          public int getIoServiceTimeCount() {
+            return ioServiceTime_.size();
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+           *
+           * <pre>
+           * blkio.io_service_time
+           * </pre>
+           */
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.Value getIoServiceTime(int index) {
+            return ioServiceTime_.get(index);
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+           *
+           * <pre>
+           * blkio.io_service_time
+           * </pre>
+           */
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoServiceTimeOrBuilder(
+              int index) {
+            return ioServiceTime_.get(index);
+          }
+
+          // repeated .mesos.CgroupInfo.Blkio.Value io_wait_time = 7;
+          public static final int IO_WAIT_TIME_FIELD_NUMBER = 7;
+          private java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value> ioWaitTime_;
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+           *
+           * <pre>
+           * blkio.io_wait_time
+           * </pre>
+           */
+          public java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value> getIoWaitTimeList() {
+            return ioWaitTime_;
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+           *
+           * <pre>
+           * blkio.io_wait_time
+           * </pre>
+           */
+          public java.util.List<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+              getIoWaitTimeOrBuilderList() {
+            return ioWaitTime_;
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+           *
+           * <pre>
+           * blkio.io_wait_time
+           * </pre>
+           */
+          public int getIoWaitTimeCount() {
+            return ioWaitTime_.size();
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+           *
+           * <pre>
+           * blkio.io_wait_time
+           * </pre>
+           */
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.Value getIoWaitTime(int index) {
+            return ioWaitTime_.get(index);
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+           *
+           * <pre>
+           * blkio.io_wait_time
+           * </pre>
+           */
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoWaitTimeOrBuilder(
+              int index) {
+            return ioWaitTime_.get(index);
+          }
+
+          // repeated .mesos.CgroupInfo.Blkio.Value io_merged = 8;
+          public static final int IO_MERGED_FIELD_NUMBER = 8;
+          private java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value> ioMerged_;
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_merged = 8;</code>
+           *
+           * <pre>
+           * blkio.io_merged
+           * </pre>
+           */
+          public java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value> getIoMergedList() {
+            return ioMerged_;
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_merged = 8;</code>
+           *
+           * <pre>
+           * blkio.io_merged
+           * </pre>
+           */
+          public java.util.List<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+              getIoMergedOrBuilderList() {
+            return ioMerged_;
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_merged = 8;</code>
+           *
+           * <pre>
+           * blkio.io_merged
+           * </pre>
+           */
+          public int getIoMergedCount() {
+            return ioMerged_.size();
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_merged = 8;</code>
+           *
+           * <pre>
+           * blkio.io_merged
+           * </pre>
+           */
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.Value getIoMerged(int index) {
+            return ioMerged_.get(index);
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_merged = 8;</code>
+           *
+           * <pre>
+           * blkio.io_merged
+           * </pre>
+           */
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoMergedOrBuilder(
+              int index) {
+            return ioMerged_.get(index);
+          }
+
+          // repeated .mesos.CgroupInfo.Blkio.Value io_queued = 9;
+          public static final int IO_QUEUED_FIELD_NUMBER = 9;
+          private java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value> ioQueued_;
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_queued = 9;</code>
+           *
+           * <pre>
+           * blkio.io_queued
+           * </pre>
+           */
+          public java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value> getIoQueuedList() {
+            return ioQueued_;
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_queued = 9;</code>
+           *
+           * <pre>
+           * blkio.io_queued
+           * </pre>
+           */
+          public java.util.List<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+              getIoQueuedOrBuilderList() {
+            return ioQueued_;
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_queued = 9;</code>
+           *
+           * <pre>
+           * blkio.io_queued
+           * </pre>
+           */
+          public int getIoQueuedCount() {
+            return ioQueued_.size();
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_queued = 9;</code>
+           *
+           * <pre>
+           * blkio.io_queued
+           * </pre>
+           */
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.Value getIoQueued(int index) {
+            return ioQueued_.get(index);
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_queued = 9;</code>
+           *
+           * <pre>
+           * blkio.io_queued
+           * </pre>
+           */
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoQueuedOrBuilder(
+              int index) {
+            return ioQueued_.get(index);
+          }
+
+          private void initFields() {
+            device_ = org.apache.mesos.Protos.Device.Number.getDefaultInstance();
+            sectors_ = 0L;
+            time_ = 0L;
+            ioServiced_ = java.util.Collections.emptyList();
+            ioServiceBytes_ = java.util.Collections.emptyList();
+            ioServiceTime_ = java.util.Collections.emptyList();
+            ioWaitTime_ = java.util.Collections.emptyList();
+            ioMerged_ = java.util.Collections.emptyList();
+            ioQueued_ = java.util.Collections.emptyList();
+          }
+          private byte memoizedIsInitialized = -1;
+          public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized != -1) return isInitialized == 1;
+
+            if (hasDevice()) {
+              if (!getDevice().isInitialized()) {
+                memoizedIsInitialized = 0;
+                return false;
+              }
+            }
+            memoizedIsInitialized = 1;
+            return true;
+          }
+
+          public void writeTo(com.google.protobuf.CodedOutputStream output)
+                              throws java.io.IOException {
+            getSerializedSize();
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              output.writeMessage(1, device_);
+            }
+            if (((bitField0_ & 0x00000002) == 0x00000002)) {
+              output.writeUInt64(2, sectors_);
+            }
+            if (((bitField0_ & 0x00000004) == 0x00000004)) {
+              output.writeUInt64(3, time_);
+            }
+            for (int i = 0; i < ioServiced_.size(); i++) {
+              output.writeMessage(4, ioServiced_.get(i));
+            }
+            for (int i = 0; i < ioServiceBytes_.size(); i++) {
+              output.writeMessage(5, ioServiceBytes_.get(i));
+            }
+            for (int i = 0; i < ioServiceTime_.size(); i++) {
+              output.writeMessage(6, ioServiceTime_.get(i));
+            }
+            for (int i = 0; i < ioWaitTime_.size(); i++) {
+              output.writeMessage(7, ioWaitTime_.get(i));
+            }
+            for (int i = 0; i < ioMerged_.size(); i++) {
+              output.writeMessage(8, ioMerged_.get(i));
+            }
+            for (int i = 0; i < ioQueued_.size(); i++) {
+              output.writeMessage(9, ioQueued_.get(i));
+            }
+            getUnknownFields().writeTo(output);
+          }
+
+          private int memoizedSerializedSize = -1;
+          public int getSerializedSize() {
+            int size = memoizedSerializedSize;
+            if (size != -1) return size;
+
+            size = 0;
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              size += com.google.protobuf.CodedOutputStream
+                .computeMessageSize(1, device_);
+            }
+            if (((bitField0_ & 0x00000002) == 0x00000002)) {
+              size += com.google.protobuf.CodedOutputStream
+                .computeUInt64Size(2, sectors_);
+            }
+            if (((bitField0_ & 0x00000004) == 0x00000004)) {
+              size += com.google.protobuf.CodedOutputStream
+                .computeUInt64Size(3, time_);
+            }
+            for (int i = 0; i < ioServiced_.size(); i++) {
+              size += com.google.protobuf.CodedOutputStream
+                .computeMessageSize(4, ioServiced_.get(i));
+            }
+            for (int i = 0; i < ioServiceBytes_.size(); i++) {
+              size += com.google.protobuf.CodedOutputStream
+                .computeMessageSize(5, ioServiceBytes_.get(i));
+            }
+            for (int i = 0; i < ioServiceTime_.size(); i++) {
+              size += com.google.protobuf.CodedOutputStream
+                .computeMessageSize(6, ioServiceTime_.get(i));
+            }
+            for (int i = 0; i < ioWaitTime_.size(); i++) {
+              size += com.google.protobuf.CodedOutputStream
+                .computeMessageSize(7, ioWaitTime_.get(i));
+            }
+            for (int i = 0; i < ioMerged_.size(); i++) {
+              size += com.google.protobuf.CodedOutputStream
+                .computeMessageSize(8, ioMerged_.get(i));
+            }
+            for (int i = 0; i < ioQueued_.size(); i++) {
+              size += com.google.protobuf.CodedOutputStream
+                .computeMessageSize(9, ioQueued_.get(i));
+            }
+            size += getUnknownFields().getSerializedSize();
+            memoizedSerializedSize = size;
+            return size;
+          }
+
+          private static final long serialVersionUID = 0L;
+          @java.lang.Override
+          protected java.lang.Object writeReplace()
+              throws java.io.ObjectStreamException {
+            return super.writeReplace();
+          }
+
+          public static org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics parseFrom(
+              com.google.protobuf.ByteString data)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+          }
+          public static org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics parseFrom(
+              com.google.protobuf.ByteString data,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+          }
+          public static org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics parseFrom(byte[] data)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+          }
+          public static org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics parseFrom(
+              byte[] data,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+          }
+          public static org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics parseFrom(java.io.InputStream input)
+              throws java.io.IOException {
+            return PARSER.parseFrom(input);
+          }
+          public static org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics parseFrom(
+              java.io.InputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            return PARSER.parseFrom(input, extensionRegistry);
+          }
+          public static org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics parseDelimitedFrom(java.io.InputStream input)
+              throws java.io.IOException {
+            return PARSER.parseDelimitedFrom(input);
+          }
+          public static org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics parseDelimitedFrom(
+              java.io.InputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            return PARSER.parseDelimitedFrom(input, extensionRegistry);
+          }
+          public static org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics parseFrom(
+              com.google.protobuf.CodedInputStream input)
+              throws java.io.IOException {
+            return PARSER.parseFrom(input);
+          }
+          public static org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics parseFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            return PARSER.parseFrom(input, extensionRegistry);
+          }
+
+          public static Builder newBuilder() { return Builder.create(); }
+          public Builder newBuilderForType() { return newBuilder(); }
+          public static Builder newBuilder(org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics prototype) {
+            return newBuilder().mergeFrom(prototype);
+          }
+          public Builder toBuilder() { return newBuilder(this); }
+
+          @java.lang.Override
+          protected Builder newBuilderForType(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+          }
+          /**
+           * Protobuf type {@code mesos.CgroupInfo.Blkio.CFQ.Statistics}
+           */
+          public static final class Builder extends
+              com.google.protobuf.GeneratedMessage.Builder<Builder>
+             implements org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.StatisticsOrBuilder {
+            public static final com.google.protobuf.Descriptors.Descriptor
+                getDescriptor() {
+              return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_Blkio_CFQ_Statistics_descriptor;
+            }
+
+            protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+                internalGetFieldAccessorTable() {
+              return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_Blkio_CFQ_Statistics_fieldAccessorTable
+                  .ensureFieldAccessorsInitialized(
+                      org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics.class, org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder.class);
+            }
+
+            // Construct using org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics.newBuilder()
+            private Builder() {
+              maybeForceBuilderInitialization();
+            }
+
+            private Builder(
+                com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+              super(parent);
+              maybeForceBuilderInitialization();
+            }
+            private void maybeForceBuilderInitialization() {
+              if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+                getDeviceFieldBuilder();
+                getIoServicedFieldBuilder();
+                getIoServiceBytesFieldBuilder();
+                getIoServiceTimeFieldBuilder();
+                getIoWaitTimeFieldBuilder();
+                getIoMergedFieldBuilder();
+                getIoQueuedFieldBuilder();
+              }
+            }
+            private static Builder create() {
+              return new Builder();
+            }
+
+            public Builder clear() {
+              super.clear();
+              if (deviceBuilder_ == null) {
+                device_ = org.apache.mesos.Protos.Device.Number.getDefaultInstance();
+              } else {
+                deviceBuilder_.clear();
+              }
+              bitField0_ = (bitField0_ & ~0x00000001);
+              sectors_ = 0L;
+              bitField0_ = (bitField0_ & ~0x00000002);
+              time_ = 0L;
+              bitField0_ = (bitField0_ & ~0x00000004);
+              if (ioServicedBuilder_ == null) {
+                ioServiced_ = java.util.Collections.emptyList();
+                bitField0_ = (bitField0_ & ~0x00000008);
+              } else {
+                ioServicedBuilder_.clear();
+              }
+              if (ioServiceBytesBuilder_ == null) {
+                ioServiceBytes_ = java.util.Collections.emptyList();
+                bitField0_ = (bitField0_ & ~0x00000010);
+              } else {
+                ioServiceBytesBuilder_.clear();
+              }
+              if (ioServiceTimeBuilder_ == null) {
+                ioServiceTime_ = java.util.Collections.emptyList();
+                bitField0_ = (bitField0_ & ~0x00000020);
+              } else {
+                ioServiceTimeBuilder_.clear();
+              }
+              if (ioWaitTimeBuilder_ == null) {
+                ioWaitTime_ = java.util.Collections.emptyList();
+                bitField0_ = (bitField0_ & ~0x00000040);
+              } else {
+                ioWaitTimeBuilder_.clear();
+              }
+              if (ioMergedBuilder_ == null) {
+                ioMerged_ = java.util.Collections.emptyList();
+                bitField0_ = (bitField0_ & ~0x00000080);
+              } else {
+                ioMergedBuilder_.clear();
+              }
+              if (ioQueuedBuilder_ == null) {
+                ioQueued_ = java.util.Collections.emptyList();
+                bitField0_ = (bitField0_ & ~0x00000100);
+              } else {
+                ioQueuedBuilder_.clear();
+              }
+              return this;
+            }
+
+            public Builder clone() {
+              return create().mergeFrom(buildPartial());
+            }
+
+            public com.google.protobuf.Descriptors.Descriptor
+                getDescriptorForType() {
+              return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_Blkio_CFQ_Statistics_descriptor;
+            }
+
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics getDefaultInstanceForType() {
+              return org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics.getDefaultInstance();
+            }
+
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics build() {
+              org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics result = buildPartial();
+              if (!result.isInitialized()) {
+                throw newUninitializedMessageException(result);
+              }
+              return result;
+            }
+
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics buildPartial() {
+              org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics result = new org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics(this);
+              int from_bitField0_ = bitField0_;
+              int to_bitField0_ = 0;
+              if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+                to_bitField0_ |= 0x00000001;
+              }
+              if (deviceBuilder_ == null) {
+                result.device_ = device_;
+              } else {
+                result.device_ = deviceBuilder_.build();
+              }
+              if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+                to_bitField0_ |= 0x00000002;
+              }
+              result.sectors_ = sectors_;
+              if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+                to_bitField0_ |= 0x00000004;
+              }
+              result.time_ = time_;
+              if (ioServicedBuilder_ == null) {
+                if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                  ioServiced_ = java.util.Collections.unmodifiableList(ioServiced_);
+                  bitField0_ = (bitField0_ & ~0x00000008);
+                }
+                result.ioServiced_ = ioServiced_;
+              } else {
+                result.ioServiced_ = ioServicedBuilder_.build();
+              }
+              if (ioServiceBytesBuilder_ == null) {
+                if (((bitField0_ & 0x00000010) == 0x00000010)) {
+                  ioServiceBytes_ = java.util.Collections.unmodifiableList(ioServiceBytes_);
+                  bitField0_ = (bitField0_ & ~0x00000010);
+                }
+                result.ioServiceBytes_ = ioServiceBytes_;
+              } else {
+                result.ioServiceBytes_ = ioServiceBytesBuilder_.build();
+              }
+              if (ioServiceTimeBuilder_ == null) {
+                if (((bitField0_ & 0x00000020) == 0x00000020)) {
+                  ioServiceTime_ = java.util.Collections.unmodifiableList(ioServiceTime_);
+                  bitField0_ = (bitField0_ & ~0x00000020);
+                }
+                result.ioServiceTime_ = ioServiceTime_;
+              } else {
+                result.ioServiceTime_ = ioServiceTimeBuilder_.build();
+              }
+              if (ioWaitTimeBuilder_ == null) {
+                if (((bitField0_ & 0x00000040) == 0x00000040)) {
+                  ioWaitTime_ = java.util.Collections.unmodifiableList(ioWaitTime_);
+                  bitField0_ = (bitField0_ & ~0x00000040);
+                }
+                result.ioWaitTime_ = ioWaitTime_;
+              } else {
+                result.ioWaitTime_ = ioWaitTimeBuilder_.build();
+              }
+              if (ioMergedBuilder_ == null) {
+                if (((bitField0_ & 0x00000080) == 0x00000080)) {
+                  ioMerged_ = java.util.Collections.unmodifiableList(ioMerged_);
+                  bitField0_ = (bitField0_ & ~0x00000080);
+                }
+                result.ioMerged_ = ioMerged_;
+              } else {
+                result.ioMerged_ = ioMergedBuilder_.build();
+              }
+              if (ioQueuedBuilder_ == null) {
+                if (((bitField0_ & 0x00000100) == 0x00000100)) {
+                  ioQueued_ = java.util.Collections.unmodifiableList(ioQueued_);
+                  bitField0_ = (bitField0_ & ~0x00000100);
+                }
+                result.ioQueued_ = ioQueued_;
+              } else {
+                result.ioQueued_ = ioQueuedBuilder_.build();
+              }
+              result.bitField0_ = to_bitField0_;
+              onBuilt();
+              return result;
+            }
+
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+              if (other instanceof org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics) {
+                return mergeFrom((org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics)other);
+              } else {
+                super.mergeFrom(other);
+                return this;
+              }
+            }
+
+            public Builder mergeFrom(org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics other) {
+              if (other == org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics.getDefaultInstance()) return this;
+              if (other.hasDevice()) {
+                mergeDevice(other.getDevice());
+              }
+              if (other.hasSectors()) {
+                setSectors(other.getSectors());
+              }
+              if (other.hasTime()) {
+                setTime(other.getTime());
+              }
+              if (ioServicedBuilder_ == null) {
+                if (!other.ioServiced_.isEmpty()) {
+                  if (ioServiced_.isEmpty()) {
+                    ioServiced_ = other.ioServiced_;
+                    bitField0_ = (bitField0_ & ~0x00000008);
+                  } else {
+                    ensureIoServicedIsMutable();
+                    ioServiced_.addAll(other.ioServiced_);
+                  }
+                  onChanged();
+                }
+              } else {
+                if (!other.ioServiced_.isEmpty()) {
+                  if (ioServicedBuilder_.isEmpty()) {
+                    ioServicedBuilder_.dispose();
+                    ioServicedBuilder_ = null;
+                    ioServiced_ = other.ioServiced_;
+                    bitField0_ = (bitField0_ & ~0x00000008);
+                    ioServicedBuilder_ = 
+                      com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                         getIoServicedFieldBuilder() : null;
+                  } else {
+                    ioServicedBuilder_.addAllMessages(other.ioServiced_);
+                  }
+                }
+              }
+              if (ioServiceBytesBuilder_ == null) {
+                if (!other.ioServiceBytes_.isEmpty()) {
+                  if (ioServiceBytes_.isEmpty()) {
+                    ioServiceBytes_ = other.ioServiceBytes_;
+                    bitField0_ = (bitField0_ & ~0x00000010);
+                  } else {
+                    ensureIoServiceBytesIsMutable();
+                    ioServiceBytes_.addAll(other.ioServiceBytes_);
+                  }
+                  onChanged();
+                }
+              } else {
+                if (!other.ioServiceBytes_.isEmpty()) {
+                  if (ioServiceBytesBuilder_.isEmpty()) {
+                    ioServiceBytesBuilder_.dispose();
+                    ioServiceBytesBuilder_ = null;
+                    ioServiceBytes_ = other.ioServiceBytes_;
+                    bitField0_ = (bitField0_ & ~0x00000010);
+                    ioServiceBytesBuilder_ = 
+                      com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                         getIoServiceBytesFieldBuilder() : null;
+                  } else {
+                    ioServiceBytesBuilder_.addAllMessages(other.ioServiceBytes_);
+                  }
+                }
+              }
+              if (ioServiceTimeBuilder_ == null) {
+                if (!other.ioServiceTime_.isEmpty()) {
+                  if (ioServiceTime_.isEmpty()) {
+                    ioServiceTime_ = other.ioServiceTime_;
+                    bitField0_ = (bitField0_ & ~0x00000020);
+                  } else {
+                    ensureIoServiceTimeIsMutable();
+                    ioServiceTime_.addAll(other.ioServiceTime_);
+                  }
+                  onChanged();
+                }
+              } else {
+                if (!other.ioServiceTime_.isEmpty()) {
+                  if (ioServiceTimeBuilder_.isEmpty()) {
+                    ioServiceTimeBuilder_.dispose();
+                    ioServiceTimeBuilder_ = null;
+                    ioServiceTime_ = other.ioServiceTime_;
+                    bitField0_ = (bitField0_ & ~0x00000020);
+                    ioServiceTimeBuilder_ = 
+                      com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                         getIoServiceTimeFieldBuilder() : null;
+                  } else {
+                    ioServiceTimeBuilder_.addAllMessages(other.ioServiceTime_);
+                  }
+                }
+              }
+              if (ioWaitTimeBuilder_ == null) {
+                if (!other.ioWaitTime_.isEmpty()) {
+                  if (ioWaitTime_.isEmpty()) {
+                    ioWaitTime_ = other.ioWaitTime_;
+                    bitField0_ = (bitField0_ & ~0x00000040);
+                  } else {
+                    ensureIoWaitTimeIsMutable();
+                    ioWaitTime_.addAll(other.ioWaitTime_);
+                  }
+                  onChanged();
+                }
+              } else {
+                if (!other.ioWaitTime_.isEmpty()) {
+                  if (ioWaitTimeBuilder_.isEmpty()) {
+                    ioWaitTimeBuilder_.dispose();
+                    ioWaitTimeBuilder_ = null;
+                    ioWaitTime_ = other.ioWaitTime_;
+                    bitField0_ = (bitField0_ & ~0x00000040);
+                    ioWaitTimeBuilder_ = 
+                      com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                         getIoWaitTimeFieldBuilder() : null;
+                  } else {
+                    ioWaitTimeBuilder_.addAllMessages(other.ioWaitTime_);
+                  }
+                }
+              }
+              if (ioMergedBuilder_ == null) {
+                if (!other.ioMerged_.isEmpty()) {
+                  if (ioMerged_.isEmpty()) {
+                    ioMerged_ = other.ioMerged_;
+                    bitField0_ = (bitField0_ & ~0x00000080);
+                  } else {
+                    ensureIoMergedIsMutable();
+                    ioMerged_.addAll(other.ioMerged_);
+                  }
+                  onChanged();
+                }
+              } else {
+                if (!other.ioMerged_.isEmpty()) {
+                  if (ioMergedBuilder_.isEmpty()) {
+                    ioMergedBuilder_.dispose();
+                    ioMergedBuilder_ = null;
+                    ioMerged_ = other.ioMerged_;
+                    bitField0_ = (bitField0_ & ~0x00000080);
+                    ioMergedBuilder_ = 
+                      com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                         getIoMergedFieldBuilder() : null;
+                  } else {
+                    ioMergedBuilder_.addAllMessages(other.ioMerged_);
+                  }
+                }
+              }
+              if (ioQueuedBuilder_ == null) {
+                if (!other.ioQueued_.isEmpty()) {
+                  if (ioQueued_.isEmpty()) {
+                    ioQueued_ = other.ioQueued_;
+                    bitField0_ = (bitField0_ & ~0x00000100);
+                  } else {
+                    ensureIoQueuedIsMutable();
+                    ioQueued_.addAll(other.ioQueued_);
+                  }
+                  onChanged();
+                }
+              } else {
+                if (!other.ioQueued_.isEmpty()) {
+                  if (ioQueuedBuilder_.isEmpty()) {
+                    ioQueuedBuilder_.dispose();
+                    ioQueuedBuilder_ = null;
+                    ioQueued_ = other.ioQueued_;
+                    bitField0_ = (bitField0_ & ~0x00000100);
+                    ioQueuedBuilder_ = 
+                      com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                         getIoQueuedFieldBuilder() : null;
+                  } else {
+                    ioQueuedBuilder_.addAllMessages(other.ioQueued_);
+                  }
+                }
+              }
+              this.mergeUnknownFields(other.getUnknownFields());
+              return this;
+            }
+
+            public final boolean isInitialized() {
+              if (hasDevice()) {
+                if (!getDevice().isInitialized()) {
+                  
+                  return false;
+                }
+              }
+              return true;
+            }
+
+            public Builder mergeFrom(
+                com.google.protobuf.CodedInputStream input,
+                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+                throws java.io.IOException {
+              org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics parsedMessage = null;
+              try {
+                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+              } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                parsedMessage = (org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics) e.getUnfinishedMessage();
+                throw e;
+              } finally {
+                if (parsedMessage != null) {
+                  mergeFrom(parsedMessage);
+                }
+              }
+              return this;
+            }
+            private int bitField0_;
+
+            // optional .mesos.Device.Number device = 1;
+            private org.apache.mesos.Protos.Device.Number device_ = org.apache.mesos.Protos.Device.Number.getDefaultInstance();
+            private com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.Device.Number, org.apache.mesos.Protos.Device.Number.Builder, org.apache.mesos.Protos.Device.NumberOrBuilder> deviceBuilder_;
+            /**
+             * <code>optional .mesos.Device.Number device = 1;</code>
+             *
+             * <pre>
+             * Stats are grouped by block devices. If `device` is not
+             * set, it represents `Total`.
+             * </pre>
+             */
+            public boolean hasDevice() {
+              return ((bitField0_ & 0x00000001) == 0x00000001);
+            }
+            /**
+             * <code>optional .mesos.Device.Number device = 1;</code>
+             *
+             * <pre>
+             * Stats are grouped by block devices. If `device` is not
+             * set, it represents `Total`.
+             * </pre>
+             */
+            public org.apache.mesos.Protos.Device.Number getDevice() {
+              if (deviceBuilder_ == null) {
+                return device_;
+              } else {
+                return deviceBuilder_.getMessage();
+              }
+            }
+            /**
+             * <code>optional .mesos.Device.Number device = 1;</code>
+             *
+             * <pre>
+             * Stats are grouped by block devices. If `device` is not
+             * set, it represents `Total`.
+             * </pre>
+             */
+            public Builder setDevice(org.apache.mesos.Protos.Device.Number value) {
+              if (deviceBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                device_ = value;
+                onChanged();
+              } else {
+                deviceBuilder_.setMessage(value);
+              }
+              bitField0_ |= 0x00000001;
+              return this;
+            }
+            /**
+             * <code>optional .mesos.Device.Number device = 1;</code>
+             *
+             * <pre>
+             * Stats are grouped by block devices. If `device` is not
+             * set, it represents `Total`.
+             * </pre>
+             */
+            public Builder setDevice(
+                org.apache.mesos.Protos.Device.Number.Builder builderForValue) {
+              if (deviceBuilder_ == null) {
+                device_ = builderForValue.build();
+                onChanged();
+              } else {
+                deviceBuilder_.setMessage(builderForValue.build());
+              }
+              bitField0_ |= 0x00000001;
+              return this;
+            }
+            /**
+             * <code>optional .mesos.Device.Number device = 1;</code>
+             *
+             * <pre>
+             * Stats are grouped by block devices. If `device` is not
+             * set, it represents `Total`.
+             * </pre>
+             */
+            public Builder mergeDevice(org.apache.mesos.Protos.Device.Number value) {
+              if (deviceBuilder_ == null) {
+                if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                    device_ != org.apache.mesos.Protos.Device.Number.getDefaultInstance()) {
+                  device_ =
+                    org.apache.mesos.Protos.Device.Number.newBuilder(device_).mergeFrom(value).buildPartial();
+                } else {
+                  device_ = value;
+                }
+                onChanged();
+              } else {
+                deviceBuilder_.mergeFrom(value);
+              }
+              bitField0_ |= 0x00000001;
+              return this;
+            }
+            /**
+             * <code>optional .mesos.Device.Number device = 1;</code>
+             *
+             * <pre>
+             * Stats are grouped by block devices. If `device` is not
+             * set, it represents `Total`.
+             * </pre>
+             */
+            public Builder clearDevice() {
+              if (deviceBuilder_ == null) {
+                device_ = org.apache.mesos.Protos.Device.Number.getDefaultInstance();
+                onChanged();
+              } else {
+                deviceBuilder_.clear();
+              }
+              bitField0_ = (bitField0_ & ~0x00000001);
+              return this;
+            }
+            /**
+             * <code>optional .mesos.Device.Number device = 1;</code>
+             *
+             * <pre>
+             * Stats are grouped by block devices. If `device` is not
+             * set, it represents `Total`.
+             * </pre>
+             */
+            public org.apache.mesos.Protos.Device.Number.Builder getDeviceBuilder() {
+              bitField0_ |= 0x00000001;
+              onChanged();
+              return getDeviceFieldBuilder().getBuilder();
+            }
+            /**
+             * <code>optional .mesos.Device.Number device = 1;</code>
+             *
+             * <pre>
+             * Stats are grouped by block devices. If `device` is not
+             * set, it represents `Total`.
+             * </pre>
+             */
+            public org.apache.mesos.Protos.Device.NumberOrBuilder getDeviceOrBuilder() {
+              if (deviceBuilder_ != null) {
+                return deviceBuilder_.getMessageOrBuilder();
+              } else {
+                return device_;
+              }
+            }
+            /**
+             * <code>optional .mesos.Device.Number device = 1;</code>
+             *
+             * <pre>
+             * Stats are grouped by block devices. If `device` is not
+             * set, it represents `Total`.
+             * </pre>
+             */
+            private com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.Device.Number, org.apache.mesos.Protos.Device.Number.Builder, org.apache.mesos.Protos.Device.NumberOrBuilder> 
+                getDeviceFieldBuilder() {
+              if (deviceBuilder_ == null) {
+                deviceBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                    org.apache.mesos.Protos.Device.Number, org.apache.mesos.Protos.Device.Number.Builder, org.apache.mesos.Protos.Device.NumberOrBuilder>(
+                        device_,
+                        getParentForChildren(),
+                        isClean());
+                device_ = null;
+              }
+              return deviceBuilder_;
+            }
+
+            // optional uint64 sectors = 2;
+            private long sectors_ ;
+            /**
+             * <code>optional uint64 sectors = 2;</code>
+             *
+             * <pre>
+             * blkio.sectors
+             * </pre>
+             */
+            public boolean hasSectors() {
+              return ((bitField0_ & 0x00000002) == 0x00000002);
+            }
+            /**
+             * <code>optional uint64 sectors = 2;</code>
+             *
+             * <pre>
+             * blkio.sectors
+             * </pre>
+             */
+            public long getSectors() {
+              return sectors_;
+            }
+            /**
+             * <code>optional uint64 sectors = 2;</code>
+             *
+             * <pre>
+             * blkio.sectors
+             * </pre>
+             */
+            public Builder setSectors(long value) {
+              bitField0_ |= 0x00000002;
+              sectors_ = value;
+              onChanged();
+              return this;
+            }
+            /**
+             * <code>optional uint64 sectors = 2;</code>
+             *
+             * <pre>
+             * blkio.sectors
+             * </pre>
+             */
+            public Builder clearSectors() {
+              bitField0_ = (bitField0_ & ~0x00000002);
+              sectors_ = 0L;
+              onChanged();
+              return this;
+            }
+
+            // optional uint64 time = 3;
+            private long time_ ;
+            /**
+             * <code>optional uint64 time = 3;</code>
+             *
+             * <pre>
+             * blkio.time
+             * </pre>
+             */
+            public boolean hasTime() {
+              return ((bitField0_ & 0x00000004) == 0x00000004);
+            }
+            /**
+             * <code>optional uint64 time = 3;</code>
+             *
+             * <pre>
+             * blkio.time
+             * </pre>
+             */
+            public long getTime() {
+              return time_;
+            }
+            /**
+             * <code>optional uint64 time = 3;</code>
+             *
+             * <pre>
+             * blkio.time
+             * </pre>
+             */
+            public Builder setTime(long value) {
+              bitField0_ |= 0x00000004;
+              time_ = value;
+              onChanged();
+              return this;
+            }
+            /**
+             * <code>optional uint64 time = 3;</code>
+             *
+             * <pre>
+             * blkio.time
+             * </pre>
+             */
+            public Builder clearTime() {
+              bitField0_ = (bitField0_ & ~0x00000004);
+              time_ = 0L;
+              onChanged();
+              return this;
+            }
+
+            // repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 4;
+            private java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value> ioServiced_ =
+              java.util.Collections.emptyList();
+            private void ensureIoServicedIsMutable() {
+              if (!((bitField0_ & 0x00000008) == 0x00000008)) {
+                ioServiced_ = new java.util.ArrayList<org.apache.mesos.Protos.CgroupInfo.Blkio.Value>(ioServiced_);
+                bitField0_ |= 0x00000008;
+               }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder> ioServicedBuilder_;
+
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+             *
+             * <pre>
+             * blkio.io_serviced
+             * </pre>
+             */
+            public java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value> getIoServicedList() {
+              if (ioServicedBuilder_ == null) {
+                return java.util.Collections.unmodifiableList(ioServiced_);
+              } else {
+                return ioServicedBuilder_.getMessageList();
+              }
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+             *
+             * <pre>
+             * blkio.io_serviced
+             * </pre>
+             */
+            public int getIoServicedCount() {
+              if (ioServicedBuilder_ == null) {
+                return ioServiced_.size();
+              } else {
+                return ioServicedBuilder_.getCount();
+              }
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+             *
+             * <pre>
+             * blkio.io_serviced
+             * </pre>
+             */
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.Value getIoServiced(int index) {
+              if (ioServicedBuilder_ == null) {
+                return ioServiced_.get(index);
+              } else {
+                return ioServicedBuilder_.getMessage(index);
+              }
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+             *
+             * <pre>
+             * blkio.io_serviced
+             * </pre>
+             */
+            public Builder setIoServiced(
+                int index, org.apache.mesos.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioServicedBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoServicedIsMutable();
+                ioServiced_.set(index, value);
+                onChanged();
+              } else {
+                ioServicedBuilder_.setMessage(index, value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+             *
+             * <pre>
+             * blkio.io_serviced
+             * </pre>
+             */
+            public Builder setIoServiced(
+                int index, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioServicedBuilder_ == null) {
+                ensureIoServicedIsMutable();
+                ioServiced_.set(index, builderForValue.build());
+                onChanged();
+              } else {
+                ioServicedBuilder_.setMessage(index, builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+             *
+             * <pre>
+             * blkio.io_serviced
+             * </pre>
+             */
+            public Builder addIoServiced(org.apache.mesos.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioServicedBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoServicedIsMutable();
+                ioServiced_.add(value);
+                onChanged();
+              } else {
+                ioServicedBuilder_.addMessage(value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+             *
+             * <pre>
+             * blkio.io_serviced
+             * </pre>
+             */
+            public Builder addIoServiced(
+                int index, org.apache.mesos.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioServicedBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoServicedIsMutable();
+                ioServiced_.add(index, value);
+                onChanged();
+              } else {
+                ioServicedBuilder_.addMessage(index, value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+             *
+             * <pre>
+             * blkio.io_serviced
+             * </pre>
+             */
+            public Builder addIoServiced(
+                org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioServicedBuilder_ == null) {
+                ensureIoServicedIsMutable();
+                ioServiced_.add(builderForValue.build());
+                onChanged();
+              } else {
+                ioServicedBuilder_.addMessage(builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+             *
+             * <pre>
+             * blkio.io_serviced
+             * </pre>
+             */
+            public Builder addIoServiced(
+                int index, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioServicedBuilder_ == null) {
+                ensureIoServicedIsMutable();
+                ioServiced_.add(index, builderForValue.build());
+                onChanged();
+              } else {
+                ioServicedBuilder_.addMessage(index, builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+             *
+             * <pre>
+             * blkio.io_serviced
+             * </pre>
+             */
+            public Builder addAllIoServiced(
+                java.lang.Iterable<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.Value> values) {
+              if (ioServicedBuilder_ == null) {
+                ensureIoServicedIsMutable();
+                super.addAll(values, ioServiced_);
+                onChanged();
+              } else {
+                ioServicedBuilder_.addAllMessages(values);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+             *
+             * <pre>
+             * blkio.io_serviced
+             * </pre>
+             */
+            public Builder clearIoServiced() {
+              if (ioServicedBuilder_ == null) {
+                ioServiced_ = java.util.Collections.emptyList();
+                bitField0_ = (bitField0_ & ~0x00000008);
+                onChanged();
+              } else {
+                ioServicedBuilder_.clear();
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+             *
+             * <pre>
+             * blkio.io_serviced
+             * </pre>
+             */
+            public Builder removeIoServiced(int index) {
+              if (ioServicedBuilder_ == null) {
+                ensureIoServicedIsMutable();
+                ioServiced_.remove(index);
+                onChanged();
+              } else {
+                ioServicedBuilder_.remove(index);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+             *
+             * <pre>
+             * blkio.io_serviced
+             * </pre>
+             */
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder getIoServicedBuilder(
+                int index) {
+              return getIoServicedFieldBuilder().getBuilder(index);
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+             *
+             * <pre>
+             * blkio.io_serviced
+             * </pre>
+             */
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoServicedOrBuilder(
+                int index) {
+              if (ioServicedBuilder_ == null) {
+                return ioServiced_.get(index);  } else {
+                return ioServicedBuilder_.getMessageOrBuilder(index);
+              }
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+             *
+             * <pre>
+             * blkio.io_serviced
+             * </pre>
+             */
+            public java.util.List<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+                 getIoServicedOrBuilderList() {
+              if (ioServicedBuilder_ != null) {
+                return ioServicedBuilder_.getMessageOrBuilderList();
+              } else {
+                return java.util.Collections.unmodifiableList(ioServiced_);
+              }
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+             *
+             * <pre>
+             * blkio.io_serviced
+             * </pre>
+             */
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder addIoServicedBuilder() {
+              return getIoServicedFieldBuilder().addBuilder(
+                  org.apache.mesos.Protos.CgroupInfo.Blkio.Value.getDefaultInstance());
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+             *
+             * <pre>
+             * blkio.io_serviced
+             * </pre>
+             */
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder addIoServicedBuilder(
+                int index) {
+              return getIoServicedFieldBuilder().addBuilder(
+                  index, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.getDefaultInstance());
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+             *
+             * <pre>
+             * blkio.io_serviced
+             * </pre>
+             */
+            public java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder> 
+                 getIoServicedBuilderList() {
+              return getIoServicedFieldBuilder().getBuilderList();
+            }
+            private com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+                getIoServicedFieldBuilder() {
+              if (ioServicedBuilder_ == null) {
+                ioServicedBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                    org.apache.mesos.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder>(
+                        ioServiced_,
+                        ((bitField0_ & 0x00000008) == 0x00000008),
+                        getParentForChildren(),
+                        isClean());
+                ioServiced_ = null;
+              }
+              return ioServicedBuilder_;
+            }
+
+            // repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 5;
+            private java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value> ioServiceBytes_ =
+              java.util.Collections.emptyList();
+            private void ensureIoServiceBytesIsMutable() {
+              if (!((bitField0_ & 0x00000010) == 0x00000010)) {
+                ioServiceBytes_ = new java.util.ArrayList<org.apache.mesos.Protos.CgroupInfo.Blkio.Value>(ioServiceBytes_);
+                bitField0_ |= 0x00000010;
+               }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder> ioServiceBytesBuilder_;
+
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+             *
+             * <pre>
+             * blkio.io_service_bytes
+             * </pre>
+             */
+            public java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value> getIoServiceBytesList() {
+              if (ioServiceBytesBuilder_ == null) {
+                return java.util.Collections.unmodifiableList(ioServiceBytes_);
+              } else {
+                return ioServiceBytesBuilder_.getMessageList();
+              }
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+             *
+             * <pre>
+             * blkio.io_service_bytes
+             * </pre>
+             */
+            public int getIoServiceBytesCount() {
+              if (ioServiceBytesBuilder_ == null) {
+                return ioServiceBytes_.size();
+              } else {
+                return ioServiceBytesBuilder_.getCount();
+              }
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+             *
+             * <pre>
+             * blkio.io_service_bytes
+             * </pre>
+             */
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.Value getIoServiceBytes(int index) {
+              if (ioServiceBytesBuilder_ == null) {
+                return ioServiceBytes_.get(index);
+              } else {
+                return ioServiceBytesBuilder_.getMessage(index);
+              }
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+             *
+             * <pre>
+             * blkio.io_service_bytes
+             * </pre>
+             */
+            public Builder setIoServiceBytes(
+                int index, org.apache.mesos.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioServiceBytesBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoServiceBytesIsMutable();
+                ioServiceBytes_.set(index, value);
+                onChanged();
+              } else {
+                ioServiceBytesBuilder_.setMessage(index, value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+             *
+             * <pre>
+             * blkio.io_service_bytes
+             * </pre>
+             */
+            public Builder setIoServiceBytes(
+                int index, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioServiceBytesBuilder_ == null) {
+                ensureIoServiceBytesIsMutable();
+                ioServiceBytes_.set(index, builderForValue.build());
+                onChanged();
+              } else {
+                ioServiceBytesBuilder_.setMessage(index, builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+             *
+             * <pre>
+             * blkio.io_service_bytes
+             * </pre>
+             */
+            public Builder addIoServiceBytes(org.apache.mesos.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioServiceBytesBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoServiceBytesIsMutable();
+                ioServiceBytes_.add(value);
+                onChanged();
+              } else {
+                ioServiceBytesBuilder_.addMessage(value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+             *
+             * <pre>
+             * blkio.io_service_bytes
+             * </pre>
+             */
+            public Builder addIoServiceBytes(
+                int index, org.apache.mesos.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioServiceBytesBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoServiceBytesIsMutable();
+                ioServiceBytes_.add(index, value);
+                onChanged();
+              } else {
+                ioServiceBytesBuilder_.addMessage(index, value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+             *
+             * <pre>
+             * blkio.io_service_bytes
+             * </pre>
+             */
+            public Builder addIoServiceBytes(
+                org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioServiceBytesBuilder_ == null) {
+                ensureIoServiceBytesIsMutable();
+                ioServiceBytes_.add(builderForValue.build());
+                onChanged();
+              } else {
+                ioServiceBytesBuilder_.addMessage(builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+             *
+             * <pre>
+             * blkio.io_service_bytes
+             * </pre>
+             */
+            public Builder addIoServiceBytes(
+                int index, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioServiceBytesBuilder_ == null) {
+                ensureIoServiceBytesIsMutable();
+                ioServiceBytes_.add(index, builderForValue.build());
+                onChanged();
+              } else {
+                ioServiceBytesBuilder_.addMessage(index, builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+             *
+             * <pre>
+             * blkio.io_service_bytes
+             * </pre>
+             */
+            public Builder addAllIoServiceBytes(
+                java.lang.Iterable<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.Value> values) {
+              if (ioServiceBytesBuilder_ == null) {
+                ensureIoServiceBytesIsMutable();
+                super.addAll(values, ioServiceBytes_);
+                onChanged();
+              } else {
+                ioServiceBytesBuilder_.addAllMessages(values);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+             *
+             * <pre>
+             * blkio.io_service_bytes
+             * </pre>
+             */
+            public Builder clearIoServiceBytes() {
+              if (ioServiceBytesBuilder_ == null) {
+                ioServiceBytes_ = java.util.Collections.emptyList();
+                bitField0_ = (bitField0_ & ~0x00000010);
+                onChanged();
+              } else {
+                ioServiceBytesBuilder_.clear();
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+             *
+             * <pre>
+             * blkio.io_service_bytes
+             * </pre>
+             */
+            public Builder removeIoServiceBytes(int index) {
+              if (ioServiceBytesBuilder_ == null) {
+                ensureIoServiceBytesIsMutable();
+                ioServiceBytes_.remove(index);
+                onChanged();
+              } else {
+                ioServiceBytesBuilder_.remove(index);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+             *
+             * <pre>
+             * blkio.io_service_bytes
+             * </pre>
+             */
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder getIoServiceBytesBuilder(
+                int index) {
+              return getIoServiceBytesFieldBuilder().getBuilder(index);
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+             *
+             * <pre>
+             * blkio.io_service_bytes
+             * </pre>
+             */
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoServiceBytesOrBuilder(
+                int index) {
+              if (ioServiceBytesBuilder_ == null) {
+                return ioServiceBytes_.get(index);  } else {
+                return ioServiceBytesBuilder_.getMessageOrBuilder(index);
+              }
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+             *
+             * <pre>
+             * blkio.io_service_bytes
+             * </pre>
+             */
+            public java.util.List<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+                 getIoServiceBytesOrBuilderList() {
+              if (ioServiceBytesBuilder_ != null) {
+                return ioServiceBytesBuilder_.getMessageOrBuilderList();
+              } else {
+                return java.util.Collections.unmodifiableList(ioServiceBytes_);
+              }
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+             *
+             * <pre>
+             * blkio.io_service_bytes
+             * </pre>
+             */
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder addIoServiceBytesBuilder() {
+              return getIoServiceBytesFieldBuilder().addBuilder(
+                  org.apache.mesos.Protos.CgroupInfo.Blkio.Value.getDefaultInstance());
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+             *
+             * <pre>
+             * blkio.io_service_bytes
+             * </pre>
+             */
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder addIoServiceBytesBuilder(
+                int index) {
+              return getIoServiceBytesFieldBuilder().addBuilder(
+                  index, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.getDefaultInstance());
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+             *
+             * <pre>
+             * blkio.io_service_bytes
+             * </pre>
+             */
+            public java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder> 
+                 getIoServiceBytesBuilderList() {
+              return getIoServiceBytesFieldBuilder().getBuilderList();
+            }
+            private com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+                getIoServiceBytesFieldBuilder() {
+              if (ioServiceBytesBuilder_ == null) {
+                ioServiceBytesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                    org.apache.mesos.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder>(
+                        ioServiceBytes_,
+                        ((bitField0_ & 0x00000010) == 0x00000010),
+                        getParentForChildren(),
+                        isClean());
+                ioServiceBytes_ = null;
+              }
+              return ioServiceBytesBuilder_;
+            }
+
+            // repeated .mesos.CgroupInfo.Blkio.Value io_service_time = 6;
+            private java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value> ioServiceTime_ =
+              java.util.Collections.emptyList();
+            private void ensureIoServiceTimeIsMutable() {
+              if (!((bitField0_ & 0x00000020) == 0x00000020)) {
+                ioServiceTime_ = new java.util.ArrayList<org.apache.mesos.Protos.CgroupInfo.Blkio.Value>(ioServiceTime_);
+                bitField0_ |= 0x00000020;
+               }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder> ioServiceTimeBuilder_;
+
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+             *
+             * <pre>
+             * blkio.io_service_time
+             * </pre>
+             */
+            public java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value> getIoServiceTimeList() {
+              if (ioServiceTimeBuilder_ == null) {
+                return java.util.Collections.unmodifiableList(ioServiceTime_);
+              } else {
+                return ioServiceTimeBuilder_.getMessageList();
+              }
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+             *
+             * <pre>
+             * blkio.io_service_time
+             * </pre>
+             */
+            public int getIoServiceTimeCount() {
+              if (ioServiceTimeBuilder_ == null) {
+                return ioServiceTime_.size();
+              } else {
+                return ioServiceTimeBuilder_.getCount();
+              }
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+             *
+             * <pre>
+             * blkio.io_service_time
+             * </pre>
+             */
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.Value getIoServiceTime(int index) {
+              if (ioServiceTimeBuilder_ == null) {
+                return ioServiceTime_.get(index);
+              } else {
+                return ioServiceTimeBuilder_.getMessage(index);
+              }
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+             *
+             * <pre>
+             * blkio.io_service_time
+             * </pre>
+             */
+            public Builder setIoServiceTime(
+                int index, org.apache.mesos.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioServiceTimeBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoServiceTimeIsMutable();
+                ioServiceTime_.set(index, value);
+                onChanged();
+              } else {
+                ioServiceTimeBuilder_.setMessage(index, value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+             *
+             * <pre>
+             * blkio.io_service_time
+             * </pre>
+             */
+            public Builder setIoServiceTime(
+                int index, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioServiceTimeBuilder_ == null) {
+                ensureIoServiceTimeIsMutable();
+                ioServiceTime_.set(index, builderForValue.build());
+                onChanged();
+              } else {
+                ioServiceTimeBuilder_.setMessage(index, builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+             *
+             * <pre>
+             * blkio.io_service_time
+             * </pre>
+             */
+            public Builder addIoServiceTime(org.apache.mesos.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioServiceTimeBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoServiceTimeIsMutable();
+                ioServiceTime_.add(value);
+                onChanged();
+              } else {
+                ioServiceTimeBuilder_.addMessage(value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+             *
+             * <pre>
+             * blkio.io_service_time
+             * </pre>
+             */
+            public Builder addIoServiceTime(
+                int index, org.apache.mesos.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioServiceTimeBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoServiceTimeIsMutable();
+                ioServiceTime_.add(index, value);
+                onChanged();
+              } else {
+                ioServiceTimeBuilder_.addMessage(index, value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+             *
+             * <pre>
+             * blkio.io_service_time
+             * </pre>
+             */
+            public Builder addIoServiceTime(
+                org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioServiceTimeBuilder_ == null) {
+                ensureIoServiceTimeIsMutable();
+                ioServiceTime_.add(builderForValue.build());
+                onChanged();
+              } else {
+                ioServiceTimeBuilder_.addMessage(builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+             *
+             * <pre>
+             * blkio.io_service_time
+             * </pre>
+             */
+            public Builder addIoServiceTime(
+                int index, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioServiceTimeBuilder_ == null) {
+                ensureIoServiceTimeIsMutable();
+                ioServiceTime_.add(index, builderForValue.build());
+                onChanged();
+              } else {
+                ioServiceTimeBuilder_.addMessage(index, builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+             *
+             * <pre>
+             * blkio.io_service_time
+             * </pre>
+             */
+            public Builder addAllIoServiceTime(
+                java.lang.Iterable<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.Value> values) {
+              if (ioServiceTimeBuilder_ == null) {
+                ensureIoServiceTimeIsMutable();
+                super.addAll(values, ioServiceTime_);
+                onChanged();
+              } else {
+                ioServiceTimeBuilder_.addAllMessages(values);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+             *
+             * <pre>
+             * blkio.io_service_time
+             * </pre>
+             */
+            public Builder clearIoServiceTime() {
+              if (ioServiceTimeBuilder_ == null) {
+                ioServiceTime_ = java.util.Collections.emptyList();
+                bitField0_ = (bitField0_ & ~0x00000020);
+                onChanged();
+              } else {
+                ioServiceTimeBuilder_.clear();
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+             *
+             * <pre>
+             * blkio.io_service_time
+             * </pre>
+             */
+            public Builder removeIoServiceTime(int index) {
+              if (ioServiceTimeBuilder_ == null) {
+                ensureIoServiceTimeIsMutable();
+                ioServiceTime_.remove(index);
+                onChanged();
+              } else {
+                ioServiceTimeBuilder_.remove(index);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+             *
+             * <pre>
+             * blkio.io_service_time
+             * </pre>
+             */
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder getIoServiceTimeBuilder(
+                int index) {
+              return getIoServiceTimeFieldBuilder().getBuilder(index);
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+             *
+             * <pre>
+             * blkio.io_service_time
+             * </pre>
+             */
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoServiceTimeOrBuilder(
+                int index) {
+              if (ioServiceTimeBuilder_ == null) {
+                return ioServiceTime_.get(index);  } else {
+                return ioServiceTimeBuilder_.getMessageOrBuilder(index);
+              }
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+             *
+             * <pre>
+             * blkio.io_service_time
+             * </pre>
+             */
+            public java.util.List<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+                 getIoServiceTimeOrBuilderList() {
+              if (ioServiceTimeBuilder_ != null) {
+                return ioServiceTimeBuilder_.getMessageOrBuilderList();
+              } else {
+                return java.util.Collections.unmodifiableList(ioServiceTime_);
+              }
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+             *
+             * <pre>
+             * blkio.io_service_time
+             * </pre>
+             */
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder addIoServiceTimeBuilder() {
+              return getIoServiceTimeFieldBuilder().addBuilder(
+                  org.apache.mesos.Protos.CgroupInfo.Blkio.Value.getDefaultInstance());
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+             *
+             * <pre>
+             * blkio.io_service_time
+             * </pre>
+             */
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder addIoServiceTimeBuilder(
+                int index) {
+              return getIoServiceTimeFieldBuilder().addBuilder(
+                  index, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.getDefaultInstance());
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+             *
+             * <pre>
+             * blkio.io_service_time
+             * </pre>
+             */
+            public java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder> 
+                 getIoServiceTimeBuilderList() {
+              return getIoServiceTimeFieldBuilder().getBuilderList();
+            }
+            private com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+                getIoServiceTimeFieldBuilder() {
+              if (ioServiceTimeBuilder_ == null) {
+                ioServiceTimeBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                    org.apache.mesos.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder>(
+                        ioServiceTime_,
+                        ((bitField0_ & 0x00000020) == 0x00000020),
+                        getParentForChildren(),
+                        isClean());
+                ioServiceTime_ = null;
+              }
+              return ioServiceTimeBuilder_;
+            }
+
+            // repeated .mesos.CgroupInfo.Blkio.Value io_wait_time = 7;
+            private java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value> ioWaitTime_ =
+              java.util.Collections.emptyList();
+            private void ensureIoWaitTimeIsMutable() {
+              if (!((bitField0_ & 0x00000040) == 0x00000040)) {
+                ioWaitTime_ = new java.util.ArrayList<org.apache.mesos.Protos.CgroupInfo.Blkio.Value>(ioWaitTime_);
+                bitField0_ |= 0x00000040;
+               }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder> ioWaitTimeBuilder_;
+
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+             *
+             * <pre>
+             * blkio.io_wait_time
+             * </pre>
+             */
+            public java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value> getIoWaitTimeList() {
+              if (ioWaitTimeBuilder_ == null) {
+                return java.util.Collections.unmodifiableList(ioWaitTime_);
+              } else {
+                return ioWaitTimeBuilder_.getMessageList();
+              }
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+             *
+             * <pre>
+             * blkio.io_wait_time
+             * </pre>
+             */
+            public int getIoWaitTimeCount() {
+              if (ioWaitTimeBuilder_ == null) {
+                return ioWaitTime_.size();
+              } else {
+                return ioWaitTimeBuilder_.getCount();
+              }
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+             *
+             * <pre>
+             * blkio.io_wait_time
+             * </pre>
+             */
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.Value getIoWaitTime(int index) {
+              if (ioWaitTimeBuilder_ == null) {
+                return ioWaitTime_.get(index);
+              } else {
+                return ioWaitTimeBuilder_.getMessage(index);
+              }
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+             *
+             * <pre>
+             * blkio.io_wait_time
+             * </pre>
+             */
+            public Builder setIoWaitTime(
+                int index, org.apache.mesos.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioWaitTimeBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoWaitTimeIsMutable();
+                ioWaitTime_.set(index, value);
+                onChanged();
+              } else {
+                ioWaitTimeBuilder_.setMessage(index, value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+             *
+             * <pre>
+             * blkio.io_wait_time
+             * </pre>
+             */
+            public Builder setIoWaitTime(
+                int index, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioWaitTimeBuilder_ == null) {
+                ensureIoWaitTimeIsMutable();
+                ioWaitTime_.set(index, builderForValue.build());
+                onChanged();
+              } else {
+                ioWaitTimeBuilder_.setMessage(index, builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+             *
+             * <pre>
+             * blkio.io_wait_time
+             * </pre>
+             */
+            public Builder addIoWaitTime(org.apache.mesos.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioWaitTimeBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoWaitTimeIsMutable();
+                ioWaitTime_.add(value);
+                onChanged();
+              } else {
+                ioWaitTimeBuilder_.addMessage(value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+             *
+             * <pre>
+             * blkio.io_wait_time
+             * </pre>
+             */
+            public Builder addIoWaitTime(
+                int index, org.apache.mesos.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioWaitTimeBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoWaitTimeIsMutable();
+                ioWaitTime_.add(index, value);
+                onChanged();
+              } else {
+                ioWaitTimeBuilder_.addMessage(index, value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+             *
+             * <pre>
+             * blkio.io_wait_time
+             * </pre>
+             */
+            public Builder addIoWaitTime(
+                org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioWaitTimeBuilder_ == null) {
+                ensureIoWaitTimeIsMutable();
+                ioWaitTime_.add(builderForValue.build());
+                onChanged();
+              } else {
+                ioWaitTimeBuilder_.addMessage(builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+             *
+             * <pre>
+             * blkio.io_wait_time
+             * </pre>
+             */
+            public Builder addIoWaitTime(
+                int index, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioWaitTimeBuilder_ == null) {
+                ensureIoWaitTimeIsMutable();
+                ioWaitTime_.add(index, builderForValue.build());
+                onChanged();
+              } else {
+                ioWaitTimeBuilder_.addMessage(index, builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+             *
+             * <pre>
+             * blkio.io_wait_time
+             * </pre>
+             */
+            public Builder addAllIoWaitTime(
+                java.lang.Iterable<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.Value> values) {
+              if (ioWaitTimeBuilder_ == null) {
+                ensureIoWaitTimeIsMutable();
+                super.addAll(values, ioWaitTime_);
+                onChanged();
+              } else {
+                ioWaitTimeBuilder_.addAllMessages(values);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+             *
+             * <pre>
+             * blkio.io_wait_time
+             * </pre>
+             */
+            public Builder clearIoWaitTime() {
+              if (ioWaitTimeBuilder_ == null) {
+                ioWaitTime_ = java.util.Collections.emptyList();
+                bitField0_ = (bitField0_ & ~0x00000040);
+                onChanged();
+              } else {
+                ioWaitTimeBuilder_.clear();
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+             *
+             * <pre>
+             * blkio.io_wait_time
+             * </pre>
+             */
+            public Builder removeIoWaitTime(int index) {
+              if (ioWaitTimeBuilder_ == null) {
+                ensureIoWaitTimeIsMutable();
+                ioWaitTime_.remove(index);
+                onChanged();
+              } else {
+                ioWaitTimeBuilder_.remove(index);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+             *
+             * <pre>
+             * blkio.io_wait_time
+             * </pre>
+             */
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder getIoWaitTimeBuilder(
+                int index) {
+              return getIoWaitTimeFieldBuilder().getBuilder(index);
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+             *
+             * <pre>
+             * blkio.io_wait_time
+             * </pre>
+             */
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoWaitTimeOrBuilder(
+                int index) {
+              if (ioWaitTimeBuilder_ == null) {
+                return ioWaitTime_.get(index);  } else {
+                return ioWaitTimeBuilder_.getMessageOrBuilder(index);
+              }
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+             *
+             * <pre>
+             * blkio.io_wait_time
+             * </pre>
+             */
+            public java.util.List<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+                 getIoWaitTimeOrBuilderList() {
+              if (ioWaitTimeBuilder_ != null) {
+                return ioWaitTimeBuilder_.getMessageOrBuilderList();
+              } else {
+                return java.util.Collections.unmodifiableList(ioWaitTime_);
+              }
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+             *
+             * <pre>
+             * blkio.io_wait_time
+             * </pre>
+             */
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder addIoWaitTimeBuilder() {
+              return getIoWaitTimeFieldBuilder().addBuilder(
+                  org.apache.mesos.Protos.CgroupInfo.Blkio.Value.getDefaultInstance());
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+             *
+             * <pre>
+             * blkio.io_wait_time
+             * </pre>
+             */
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder addIoWaitTimeBuilder(
+                int index) {
+              return getIoWaitTimeFieldBuilder().addBuilder(
+                  index, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.getDefaultInstance());
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+             *
+             * <pre>
+             * blkio.io_wait_time
+             * </pre>
+             */
+            public java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder> 
+                 getIoWaitTimeBuilderList() {
+              return getIoWaitTimeFieldBuilder().getBuilderList();
+            }
+            private com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+                getIoWaitTimeFieldBuilder() {
+              if (ioWaitTimeBuilder_ == null) {
+                ioWaitTimeBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                    org.apache.mesos.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder>(
+                        ioWaitTime_,
+                        ((bitField0_ & 0x00000040) == 0x00000040),
+                        getParentForChildren(),
+                        isClean());
+                ioWaitTime_ = null;
+              }
+              return ioWaitTimeBuilder_;
+            }
+
+            // repeated .mesos.CgroupInfo.Blkio.Value io_merged = 8;
+            private java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value> ioMerged_ =
+              java.util.Collections.emptyList();
+            private void ensureIoMergedIsMutable() {
+              if (!((bitField0_ & 0x00000080) == 0x00000080)) {
+                ioMerged_ = new java.util.ArrayList<org.apache.mesos.Protos.CgroupInfo.Blkio.Value>(ioMerged_);
+                bitField0_ |= 0x00000080;
+               }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder> ioMergedBuilder_;
+
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_merged = 8;</code>
+             *
+             * <pre>
+             * blkio.io_merged
+             * </pre>
+             */
+            public java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value> getIoMergedList() {
+              if (ioMergedBuilder_ == null) {
+                return java.util.Collections.unmodifiableList(ioMerged_);
+              } else {
+                return ioMergedBuilder_.getMessageList();
+              }
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_merged = 8;</code>
+             *
+             * <pre>
+             * blkio.io_merged
+             * </pre>
+             */
+            public int getIoMergedCount() {
+              if (ioMergedBuilder_ == null) {
+                return ioMerged_.size();
+              } else {
+                return ioMergedBuilder_.getCount();
+              }
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_merged = 8;</code>
+             *
+             * <pre>
+             * blkio.io_merged
+             * </pre>
+             */
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.Value getIoMerged(int index) {
+              if (ioMergedBuilder_ == null) {
+                return ioMerged_.get(index);
+              } else {
+                return ioMergedBuilder_.getMessage(index);
+              }
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_merged = 8;</code>
+             *
+             * <pre>
+             * blkio.io_merged
+             * </pre>
+             */
+            public Builder setIoMerged(
+                int index, org.apache.mesos.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioMergedBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoMergedIsMutable();
+                ioMerged_.set(index, value);
+                onChanged();
+              } else {
+                ioMergedBuilder_.setMessage(index, value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_merged = 8;</code>
+             *
+             * <pre>
+             * blkio.io_merged
+             * </pre>
+             */
+            public Builder setIoMerged(
+                int index, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioMergedBuilder_ == null) {
+                ensureIoMergedIsMutable();
+                ioMerged_.set(index, builderForValue.build());
+                onChanged();
+              } else {
+                ioMergedBuilder_.setMessage(index, builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_merged = 8;</code>
+             *
+             * <pre>
+             * blkio.io_merged
+             * </pre>
+             */
+            public Builder addIoMerged(org.apache.mesos.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioMergedBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoMergedIsMutable();
+                ioMerged_.add(value);
+                onChanged();
+              } else {
+                ioMergedBuilder_.addMessage(value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_merged = 8;</code>
+             *
+             * <pre>
+             * blkio.io_merged
+             * </pre>
+             */
+            public Builder addIoMerged(
+                int index, org.apache.mesos.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioMergedBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoMergedIsMutable();
+                ioMerged_.add(index, value);
+                onChanged();
+              } else {
+                ioMergedBuilder_.addMessage(index, value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_merged = 8;</code>
+             *
+             * <pre>
+             * blkio.io_merged
+             * </pre>
+             */
+            public Builder addIoMerged(
+                org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioMergedBuilder_ == null) {
+                ensureIoMergedIsMutable();
+                ioMerged_.add(builderForValue.build());
+                onChanged();
+              } else {
+                ioMergedBuilder_.addMessage(builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_merged = 8;</code>
+             *
+             * <pre>
+             * blkio.io_merged
+             * </pre>
+             */
+            public Builder addIoMerged(
+                int index, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioMergedBuilder_ == null) {
+                ensureIoMergedIsMutable();
+                ioMerged_.add(index, builderForValue.build());
+                onChanged();
+              } else {
+                ioMergedBuilder_.addMessage(index, builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_merged = 8;</code>
+             *
+             * <pre>
+             * blkio.io_merged
+             * </pre>
+             */
+            public Builder addAllIoMerged(
+                java.lang.Iterable<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.Value> values) {
+              if (ioMergedBuilder_ == null) {
+                ensureIoMergedIsMutable();
+                super.addAll(values, ioMerged_);
+                onChanged();
+              } else {
+                ioMergedBuilder_.addAllMessages(values);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_merged = 8;</code>
+             *
+             * <pre>
+             * blkio.io_merged
+             * </pre>
+             */
+            public Builder clearIoMerged() {
+              if (ioMergedBuilder_ == null) {
+                ioMerged_ = java.util.Collections.emptyList();
+                bitField0_ = (bitField0_ & ~0x00000080);
+                onChanged();
+              } else {
+                ioMergedBuilder_.clear();
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_merged = 8;</code>
+             *
+             * <pre>
+             * blkio.io_merged
+             * </pre>
+             */
+            public Builder removeIoMerged(int index) {
+              if (ioMergedBuilder_ == null) {
+                ensureIoMergedIsMutable();
+                ioMerged_.remove(index);
+                onChanged();
+              } else {
+                ioMergedBuilder_.remove(index);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_merged = 8;</code>
+             *
+             * <pre>
+             * blkio.io_merged
+             * </pre>
+             */
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder getIoMergedBuilder(
+                int index) {
+              return getIoMergedFieldBuilder().getBuilder(index);
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_merged = 8;</code>
+             *
+             * <pre>
+             * blkio.io_merged
+             * </pre>
+             */
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoMergedOrBuilder(
+                int index) {
+              if (ioMergedBuilder_ == null) {
+                return ioMerged_.get(index);  } else {
+                return ioMergedBuilder_.getMessageOrBuilder(index);
+              }
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_merged = 8;</code>
+             *
+             * <pre>
+             * blkio.io_merged
+             * </pre>
+             */
+            public java.util.List<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+                 getIoMergedOrBuilderList() {
+              if (ioMergedBuilder_ != null) {
+                return ioMergedBuilder_.getMessageOrBuilderList();
+              } else {
+                return java.util.Collections.unmodifiableList(ioMerged_);
+              }
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_merged = 8;</code>
+             *
+             * <pre>
+             * blkio.io_merged
+             * </pre>
+             */
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder addIoMergedBuilder() {
+              return getIoMergedFieldBuilder().addBuilder(
+                  org.apache.mesos.Protos.CgroupInfo.Blkio.Value.getDefaultInstance());
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_merged = 8;</code>
+             *
+             * <pre>
+             * blkio.io_merged
+             * </pre>
+             */
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder addIoMergedBuilder(
+                int index) {
+              return getIoMergedFieldBuilder().addBuilder(
+                  index, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.getDefaultInstance());
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_merged = 8;</code>
+             *
+             * <pre>
+             * blkio.io_merged
+             * </pre>
+             */
+            public java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder> 
+                 getIoMergedBuilderList() {
+              return getIoMergedFieldBuilder().getBuilderList();
+            }
+            private com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+                getIoMergedFieldBuilder() {
+              if (ioMergedBuilder_ == null) {
+                ioMergedBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                    org.apache.mesos.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder>(
+                        ioMerged_,
+                        ((bitField0_ & 0x00000080) == 0x00000080),
+                        getParentForChildren(),
+                        isClean());
+                ioMerged_ = null;
+              }
+              return ioMergedBuilder_;
+            }
+
+            // repeated .mesos.CgroupInfo.Blkio.Value io_queued = 9;
+            private java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value> ioQueued_ =
+              java.util.Collections.emptyList();
+            private void ensureIoQueuedIsMutable() {
+              if (!((bitField0_ & 0x00000100) == 0x00000100)) {
+                ioQueued_ = new java.util.ArrayList<org.apache.mesos.Protos.CgroupInfo.Blkio.Value>(ioQueued_);
+                bitField0_ |= 0x00000100;
+               }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder> ioQueuedBuilder_;
+
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_queued = 9;</code>
+             *
+             * <pre>
+             * blkio.io_queued
+             * </pre>
+             */
+            public java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value> getIoQueuedList() {
+              if (ioQueuedBuilder_ == null) {
+                return java.util.Collections.unmodifiableList(ioQueued_);
+              } else {
+                return ioQueuedBuilder_.getMessageList();
+              }
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_queued = 9;</code>
+             *
+             * <pre>
+             * blkio.io_queued
+             * </pre>
+             */
+            public int getIoQueuedCount() {
+              if (ioQueuedBuilder_ == null) {
+                return ioQueued_.size();
+              } else {
+                return ioQueuedBuilder_.getCount();
+              }
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_queued = 9;</code>
+             *
+             * <pre>
+             * blkio.io_queued
+             * </pre>
+             */
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.Value getIoQueued(int index) {
+              if (ioQueuedBuilder_ == null) {
+                return ioQueued_.get(index);
+              } else {
+                return ioQueuedBuilder_.getMessage(index);
+              }
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_queued = 9;</code>
+             *
+             * <pre>
+             * blkio.io_queued
+             * </pre>
+             */
+            public Builder setIoQueued(
+                int index, org.apache.mesos.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioQueuedBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoQueuedIsMutable();
+                ioQueued_.set(index, value);
+                onChanged();
+              } else {
+                ioQueuedBuilder_.setMessage(index, value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_queued = 9;</code>
+             *
+             * <pre>
+             * blkio.io_queued
+             * </pre>
+             */
+            public Builder setIoQueued(
+                int index, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioQueuedBuilder_ == null) {
+                ensureIoQueuedIsMutable();
+                ioQueued_.set(index, builderForValue.build());
+                onChanged();
+              } else {
+                ioQueuedBuilder_.setMessage(index, builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_queued = 9;</code>
+             *
+             * <pre>
+             * blkio.io_queued
+             * </pre>
+             */
+            public Builder addIoQueued(org.apache.mesos.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioQueuedBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoQueuedIsMutable();
+                ioQueued_.add(value);
+                onChanged();
+              } else {
+                ioQueuedBuilder_.addMessage(value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_queued = 9;</code>
+             *
+             * <pre>
+             * blkio.io_queued
+             * </pre>
+             */
+            public Builder addIoQueued(
+                int index, org.apache.mesos.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioQueuedBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoQueuedIsMutable();
+                ioQueued_.add(index, value);
+                onChanged();
+              } else {
+                ioQueuedBuilder_.addMessage(index, value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_queued = 9;</code>
+             *
+             * <pre>
+             * blkio.io_queued
+             * </pre>
+             */
+            public Builder addIoQueued(
+                org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioQueuedBuilder_ == null) {
+                ensureIoQueuedIsMutable();
+                ioQueued_.add(builderForValue.build());
+                onChanged();
+              } else {
+                ioQueuedBuilder_.addMessage(builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_queued = 9;</code>
+             *
+             * <pre>
+             * blkio.io_queued
+             * </pre>
+             */
+            public Builder addIoQueued(
+                int index, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioQueuedBuilder_ == null) {
+                ensureIoQueuedIsMutable();
+                ioQueued_.add(index, builderForValue.build());
+                onChanged();
+              } else {
+                ioQueuedBuilder_.addMessage(index, builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_queued = 9;</code>
+             *
+             * <pre>
+             * blkio.io_queued
+             * </pre>
+             */
+            public Builder addAllIoQueued(
+                java.lang.Iterable<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.Value> values) {
+              if (ioQueuedBuilder_ == null) {
+                ensureIoQueuedIsMutable();
+                super.addAll(values, ioQueued_);
+                onChanged();
+              } else {
+                ioQueuedBuilder_.addAllMessages(values);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_queued = 9;</code>
+             *
+             * <pre>
+             * blkio.io_queued
+             * </pre>
+             */
+            public Builder clearIoQueued() {
+              if (ioQueuedBuilder_ == null) {
+                ioQueued_ = java.util.Collections.emptyList();
+                bitField0_ = (bitField0_ & ~0x00000100);
+                onChanged();
+              } else {
+                ioQueuedBuilder_.clear();
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_queued = 9;</code>
+             *
+             * <pre>
+             * blkio.io_queued
+             * </pre>
+             */
+            public Builder removeIoQueued(int index) {
+              if (ioQueuedBuilder_ == null) {
+                ensureIoQueuedIsMutable();
+                ioQueued_.remove(index);
+                onChanged();
+              } else {
+                ioQueuedBuilder_.remove(index);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_queued = 9;</code>
+             *
+             * <pre>
+             * blkio.io_queued
+             * </pre>
+             */
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder getIoQueuedBuilder(
+                int index) {
+              return getIoQueuedFieldBuilder().getBuilder(index);
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_queued = 9;</code>
+             *
+             * <pre>
+             * blkio.io_queued
+             * </pre>
+             */
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoQueuedOrBuilder(
+                int index) {
+              if (ioQueuedBuilder_ == null) {
+                return ioQueued_.get(index);  } else {
+                return ioQueuedBuilder_.getMessageOrBuilder(index);
+              }
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_queued = 9;</code>
+             *
+             * <pre>
+             * blkio.io_queued
+             * </pre>
+             */
+            public java.util.List<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+                 getIoQueuedOrBuilderList() {
+              if (ioQueuedBuilder_ != null) {
+                return ioQueuedBuilder_.getMessageOrBuilderList();
+              } else {
+                return java.util.Collections.unmodifiableList(ioQueued_);
+              }
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_queued = 9;</code>
+             *
+             * <pre>
+             * blkio.io_queued
+             * </pre>
+             */
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder addIoQueuedBuilder() {
+              return getIoQueuedFieldBuilder().addBuilder(
+                  org.apache.mesos.Protos.CgroupInfo.Blkio.Value.getDefaultInstance());
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_queued = 9;</code>
+             *
+             * <pre>
+             * blkio.io_queued
+             * </pre>
+             */
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder addIoQueuedBuilder(
+                int index) {
+              return getIoQueuedFieldBuilder().addBuilder(
+                  index, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.getDefaultInstance());
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_queued = 9;</code>
+             *
+             * <pre>
+             * blkio.io_queued
+             * </pre>
+             */
+            public java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder> 
+                 getIoQueuedBuilderList() {
+              return getIoQueuedFieldBuilder().getBuilderList();
+            }
+            private com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+                getIoQueuedFieldBuilder() {
+              if (ioQueuedBuilder_ == null) {
+                ioQueuedBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                    org.apache.mesos.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder>(
+                        ioQueued_,
+                        ((bitField0_ & 0x00000100) == 0x00000100),
+                        getParentForChildren(),
+                        isClean());
+                ioQueued_ = null;
+              }
+              return ioQueuedBuilder_;
+            }
+
+            // @@protoc_insertion_point(builder_scope:mesos.CgroupInfo.Blkio.CFQ.Statistics)
+          }
+
+          static {
+            defaultInstance = new Statistics(true);
+            defaultInstance.initFields();
+          }
+
+          // @@protoc_insertion_point(class_scope:mesos.CgroupInfo.Blkio.CFQ.Statistics)
+        }
+
+        private void initFields() {
+        }
+        private byte memoizedIsInitialized = -1;
+        public final boolean isInitialized() {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized != -1) return isInitialized == 1;
+
+          memoizedIsInitialized = 1;
+          return true;
+        }
+
+        public void writeTo(com.google.protobuf.CodedOutputStream output)
+                            throws java.io.IOException {
+          getSerializedSize();
+          getUnknownFields().writeTo(output);
+        }
+
+        private int memoizedSerializedSize = -1;
+        public int getSerializedSize() {
+          int size = memoizedSerializedSize;
+          if (size != -1) return size;
+
+          size = 0;
+          size += getUnknownFields().getSerializedSize();
+          memoizedSerializedSize = size;
+          return size;
+        }
+
+        private static final long serialVersionUID = 0L;
+        @java.lang.Override
+        protected java.lang.Object writeReplace()
+            throws java.io.ObjectStreamException {
+          return super.writeReplace();
+        }
+
+        public static org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ parseFrom(
+            com.google.protobuf.ByteString data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ parseFrom(
+            com.google.protobuf.ByteString data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ parseFrom(byte[] data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ parseFrom(
+            byte[] data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ parseFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ parseFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ parseDelimitedFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input);
+        }
+        public static org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ parseDelimitedFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ parseFrom(
+            com.google.protobuf.CodedInputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ parseFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+
+        public static Builder newBuilder() { return Builder.create(); }
+        public Builder newBuilderForType() { return newBuilder(); }
+        public static Builder newBuilder(org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ prototype) {
+          return newBuilder().mergeFrom(prototype);
+        }
+        public Builder toBuilder() { return newBuilder(this); }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          Builder builder = new Builder(parent);
+          return builder;
+        }
+        /**
+         * Protobuf type {@code mesos.CgroupInfo.Blkio.CFQ}
+         */
+        public static final class Builder extends
+            com.google.protobuf.GeneratedMessage.Builder<Builder>
+           implements org.apache.mesos.Protos.CgroupInfo.Blkio.CFQOrBuilder {
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_Blkio_CFQ_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_Blkio_CFQ_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.class, org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Builder.class);
+          }
+
+          // Construct using org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.newBuilder()
+          private Builder() {
+            maybeForceBuilderInitialization();
+          }
+
+          private Builder(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            super(parent);
+            maybeForceBuilderInitialization();
+          }
+          private void maybeForceBuilderInitialization() {
+            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            }
+          }
+          private static Builder create() {
+            return new Builder();
+          }
+
+          public Builder clear() {
+            super.clear();
+            return this;
+          }
+
+          public Builder clone() {
+            return create().mergeFrom(buildPartial());
+          }
+
+          public com.google.protobuf.Descriptors.Descriptor
+              getDescriptorForType() {
+            return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_Blkio_CFQ_descriptor;
+          }
+
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ getDefaultInstanceForType() {
+            return org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.getDefaultInstance();
+          }
+
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ build() {
+            org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ result = buildPartial();
+            if (!result.isInitialized()) {
+              throw newUninitializedMessageException(result);
+            }
+            return result;
+          }
+
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ buildPartial() {
+            org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ result = new org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ(this);
+            onBuilt();
+            return result;
+          }
+
+          public Builder mergeFrom(com.google.protobuf.Message other) {
+            if (other instanceof org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ) {
+              return mergeFrom((org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ)other);
+            } else {
+              super.mergeFrom(other);
+              return this;
+            }
+          }
+
+          public Builder mergeFrom(org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ other) {
+            if (other == org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.getDefaultInstance()) return this;
+            this.mergeUnknownFields(other.getUnknownFields());
+            return this;
+          }
+
+          public final boolean isInitialized() {
+            return true;
+          }
+
+          public Builder mergeFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ parsedMessage = null;
+            try {
+              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              parsedMessage = (org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ) e.getUnfinishedMessage();
+              throw e;
+            } finally {
+              if (parsedMessage != null) {
+                mergeFrom(parsedMessage);
+              }
+            }
+            return this;
+          }
+
+          // @@protoc_insertion_point(builder_scope:mesos.CgroupInfo.Blkio.CFQ)
+        }
+
+        static {
+          defaultInstance = new CFQ(true);
+          defaultInstance.initFields();
+        }
+
+        // @@protoc_insertion_point(class_scope:mesos.CgroupInfo.Blkio.CFQ)
+      }
+
+      public interface ThrottlingOrBuilder
+          extends com.google.protobuf.MessageOrBuilder {
+      }
+      /**
+       * Protobuf type {@code mesos.CgroupInfo.Blkio.Throttling}
+       */
+      public static final class Throttling extends
+          com.google.protobuf.GeneratedMessage
+          implements ThrottlingOrBuilder {
+        // Use Throttling.newBuilder() to construct.
+        private Throttling(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+          super(builder);
+          this.unknownFields = builder.getUnknownFields();
+        }
+        private Throttling(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+        private static final Throttling defaultInstance;
+        public static Throttling getDefaultInstance() {
+          return defaultInstance;
+        }
+
+        public Throttling getDefaultInstanceForType() {
+          return defaultInstance;
+        }
+
+        private final com.google.protobuf.UnknownFieldSet unknownFields;
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet
+            getUnknownFields() {
+          return this.unknownFields;
+        }
+        private Throttling(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          initFields();
+          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+              com.google.protobuf.UnknownFieldSet.newBuilder();
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(input, unknownFields,
+                                         extensionRegistry, tag)) {
+                    done = true;
+                  }
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw e.setUnfinishedMessage(this);
+          } catch (java.io.IOException e) {
+            throw new com.google.protobuf.InvalidProtocolBufferException(
+                e.getMessage()).setUnfinishedMessage(this);
+          } finally {
+            this.unknownFields = unknownFields.build();
+            makeExtensionsImmutable();
+          }
+        }
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_Blkio_Throttling_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_Blkio_Throttling_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.class, org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Builder.class);
+        }
+
+        public static com.google.protobuf.Parser<Throttling> PARSER =
+            new com.google.protobuf.AbstractParser<Throttling>() {
+          public Throttling parsePartialFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return new Throttling(input, extensionRegistry);
+          }
+        };
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<Throttling> getParserForType() {
+          return PARSER;
+        }
+
+        public interface StatisticsOrBuilder
+            extends com.google.protobuf.MessageOrBuilder {
+
+          // optional .mesos.Device.Number device = 1;
+          /**
+           * <code>optional .mesos.Device.Number device = 1;</code>
+           *
+           * <pre>
+           * Stats are grouped by block devices. If `device` is not
+           * set, it represents `Total`.
+           * </pre>
+           */
+          boolean hasDevice();
+          /**
+           * <code>optional .mesos.Device.Number device = 1;</code>
+           *
+           * <pre>
+           * Stats are grouped by block devices. If `device` is not
+           * set, it represents `Total`.
+           * </pre>
+           */
+          org.apache.mesos.Protos.Device.Number getDevice();
+          /**
+           * <code>optional .mesos.Device.Number device = 1;</code>
+           *
+           * <pre>
+           * Stats are grouped by block devices. If `device` is not
+           * set, it represents `Total`.
+           * </pre>
+           */
+          org.apache.mesos.Protos.Device.NumberOrBuilder getDeviceOrBuilder();
+
+          // repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 2;
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+           *
+           * <pre>
+           * blkio.throttle.io_serviced
+           * </pre>
+           */
+          java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value> 
+              getIoServicedList();
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+           *
+           * <pre>
+           * blkio.throttle.io_serviced
+           * </pre>
+           */
+          org.apache.mesos.Protos.CgroupInfo.Blkio.Value getIoServiced(int index);
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+           *
+           * <pre>
+           * blkio.throttle.io_serviced
+           * </pre>
+           */
+          int getIoServicedCount();
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+           *
+           * <pre>
+           * blkio.throttle.io_serviced
+           * </pre>
+           */
+          java.util.List<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+              getIoServicedOrBuilderList();
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+           *
+           * <pre>
+           * blkio.throttle.io_serviced
+           * </pre>
+           */
+          org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoServicedOrBuilder(
+              int index);
+
+          // repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 3;
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+           *
+           * <pre>
+           * blkio.throttle.io_service_bytes
+           * </pre>
+           */
+          java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value> 
+              getIoServiceBytesList();
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+           *
+           * <pre>
+           * blkio.throttle.io_service_bytes
+           * </pre>
+           */
+          org.apache.mesos.Protos.CgroupInfo.Blkio.Value getIoServiceBytes(int index);
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+           *
+           * <pre>
+           * blkio.throttle.io_service_bytes
+           * </pre>
+           */
+          int getIoServiceBytesCount();
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+           *
+           * <pre>
+           * blkio.throttle.io_service_bytes
+           * </pre>
+           */
+          java.util.List<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+              getIoServiceBytesOrBuilderList();
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+           *
+           * <pre>
+           * blkio.throttle.io_service_bytes
+           * </pre>
+           */
+          org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoServiceBytesOrBuilder(
+              int index);
+        }
+        /**
+         * Protobuf type {@code mesos.CgroupInfo.Blkio.Throttling.Statistics}
+         */
+        public static final class Statistics extends
+            com.google.protobuf.GeneratedMessage
+            implements StatisticsOrBuilder {
+          // Use Statistics.newBuilder() to construct.
+          private Statistics(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+            super(builder);
+            this.unknownFields = builder.getUnknownFields();
+          }
+          private Statistics(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+          private static final Statistics defaultInstance;
+          public static Statistics getDefaultInstance() {
+            return defaultInstance;
+          }
+
+          public Statistics getDefaultInstanceForType() {
+            return defaultInstance;
+          }
+
+          private final com.google.protobuf.UnknownFieldSet unknownFields;
+          @java.lang.Override
+          public final com.google.protobuf.UnknownFieldSet
+              getUnknownFields() {
+            return this.unknownFields;
+          }
+          private Statistics(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            initFields();
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+                com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+              boolean done = false;
+              while (!done) {
+                int tag = input.readTag();
+                switch (tag) {
+                  case 0:
+                    done = true;
+                    break;
+                  default: {
+                    if (!parseUnknownField(input, unknownFields,
+                                           extensionRegistry, tag)) {
+                      done = true;
+                    }
+                    break;
+                  }
+                  case 10: {
+                    org.apache.mesos.Protos.Device.Number.Builder subBuilder = null;
+                    if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                      subBuilder = device_.toBuilder();
+                    }
+                    device_ = input.readMessage(org.apache.mesos.Protos.Device.Number.PARSER, extensionRegistry);
+                    if (subBuilder != null) {
+                      subBuilder.mergeFrom(device_);
+                      device_ = subBuilder.buildPartial();
+                    }
+                    bitField0_ |= 0x00000001;
+                    break;
+                  }
+                  case 18: {
+                    if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+                      ioServiced_ = new java.util.ArrayList<org.apache.mesos.Protos.CgroupInfo.Blkio.Value>();
+                      mutable_bitField0_ |= 0x00000002;
+                    }
+                    ioServiced_.add(input.readMessage(org.apache.mesos.Protos.CgroupInfo.Blkio.Value.PARSER, extensionRegistry));
+                    break;
+                  }
+                  case 26: {
+                    if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
+                      ioServiceBytes_ = new java.util.ArrayList<org.apache.mesos.Protos.CgroupInfo.Blkio.Value>();
+                      mutable_bitField0_ |= 0x00000004;
+                    }
+                    ioServiceBytes_.add(input.readMessage(org.apache.mesos.Protos.CgroupInfo.Blkio.Value.PARSER, extensionRegistry));
+                    break;
+                  }
+                }
+              }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+              throw new com.google.protobuf.InvalidProtocolBufferException(
+                  e.getMessage()).setUnfinishedMessage(this);
+            } finally {
+              if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+                ioServiced_ = java.util.Collections.unmodifiableList(ioServiced_);
+              }
+              if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
+                ioServiceBytes_ = java.util.Collections.unmodifiableList(ioServiceBytes_);
+              }
+              this.unknownFields = unknownFields.build();
+              makeExtensionsImmutable();
+            }
+          }
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_Blkio_Throttling_Statistics_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_Blkio_Throttling_Statistics_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics.class, org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics.Builder.class);
+          }
+
+          public static com.google.protobuf.Parser<Statistics> PARSER =
+              new com.google.protobuf.AbstractParser<Statistics>() {
+            public Statistics parsePartialFrom(
+                com.google.protobuf.CodedInputStream input,
+                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+                throws com.google.protobuf.InvalidProtocolBufferException {
+              return new Statistics(input, extensionRegistry);
+            }
+          };
+
+          @java.lang.Override
+          public com.google.protobuf.Parser<Statistics> getParserForType() {
+            return PARSER;
+          }
+
+          private int bitField0_;
+          // optional .mesos.Device.Number device = 1;
+          public static final int DEVICE_FIELD_NUMBER = 1;
+          private org.apache.mesos.Protos.Device.Number device_;
+          /**
+           * <code>optional .mesos.Device.Number device = 1;</code>
+           *
+           * <pre>
+           * Stats are grouped by block devices. If `device` is not
+           * set, it represents `Total`.
+           * </pre>
+           */
+          public boolean hasDevice() {
+            return ((bitField0_ & 0x00000001) == 0x00000001);
+          }
+          /**
+           * <code>optional .mesos.Device.Number device = 1;</code>
+           *
+           * <pre>
+           * Stats are grouped by block devices. If `device` is not
+           * set, it represents `Total`.
+           * </pre>
+           */
+          public org.apache.mesos.Protos.Device.Number getDevice() {
+            return device_;
+          }
+          /**
+           * <code>optional .mesos.Device.Number device = 1;</code>
+           *
+           * <pre>
+           * Stats are grouped by block devices. If `device` is not
+           * set, it represents `Total`.
+           * </pre>
+           */
+          public org.apache.mesos.Protos.Device.NumberOrBuilder getDeviceOrBuilder() {
+            return device_;
+          }
+
+          // repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 2;
+          public static final int IO_SERVICED_FIELD_NUMBER = 2;
+          private java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value> ioServiced_;
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+           *
+           * <pre>
+           * blkio.throttle.io_serviced
+           * </pre>
+           */
+          public java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value> getIoServicedList() {
+            return ioServiced_;
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+           *
+           * <pre>
+           * blkio.throttle.io_serviced
+           * </pre>
+           */
+          public java.util.List<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+              getIoServicedOrBuilderList() {
+            return ioServiced_;
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+           *
+           * <pre>
+           * blkio.throttle.io_serviced
+           * </pre>
+           */
+          public int getIoServicedCount() {
+            return ioServiced_.size();
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+           *
+           * <pre>
+           * blkio.throttle.io_serviced
+           * </pre>
+           */
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.Value getIoServiced(int index) {
+            return ioServiced_.get(index);
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+           *
+           * <pre>
+           * blkio.throttle.io_serviced
+           * </pre>
+           */
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoServicedOrBuilder(
+              int index) {
+            return ioServiced_.get(index);
+          }
+
+          // repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 3;
+          public static final int IO_SERVICE_BYTES_FIELD_NUMBER = 3;
+          private java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value> ioServiceBytes_;
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+           *
+           * <pre>
+           * blkio.throttle.io_service_bytes
+           * </pre>
+           */
+          public java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value> getIoServiceBytesList() {
+            return ioServiceBytes_;
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+           *
+           * <pre>
+           * blkio.throttle.io_service_bytes
+           * </pre>
+           */
+          public java.util.List<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+              getIoServiceBytesOrBuilderList() {
+            return ioServiceBytes_;
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+           *
+           * <pre>
+           * blkio.throttle.io_service_bytes
+           * </pre>
+           */
+          public int getIoServiceBytesCount() {
+            return ioServiceBytes_.size();
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+           *
+           * <pre>
+           * blkio.throttle.io_service_bytes
+           * </pre>
+           */
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.Value getIoServiceBytes(int index) {
+            return ioServiceBytes_.get(index);
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+           *
+           * <pre>
+           * blkio.throttle.io_service_bytes
+           * </pre>
+           */
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoServiceBytesOrBuilder(
+              int index) {
+            return ioServiceBytes_.get(index);
+          }
+
+          private void initFields() {
+            device_ = org.apache.mesos.Protos.Device.Number.getDefaultInstance();
+            ioServiced_ = java.util.Collections.emptyList();
+            ioServiceBytes_ = java.util.Collections.emptyList();
+          }
+          private byte memoizedIsInitialized = -1;
+          public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized != -1) return isInitialized == 1;
+
+            if (hasDevice()) {
+              if (!getDevice().isInitialized()) {
+                memoizedIsInitialized = 0;
+                return false;
+              }
+            }
+            memoizedIsInitialized = 1;
+            return true;
+          }
+
+          public void writeTo(com.google.protobuf.CodedOutputStream output)
+                              throws java.io.IOException {
+            getSerializedSize();
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              output.writeMessage(1, device_);
+            }
+            for (int i = 0; i < ioServiced_.size(); i++) {
+              output.writeMessage(2, ioServiced_.get(i));
+            }
+            for (int i = 0; i < ioServiceBytes_.size(); i++) {
+              output.writeMessage(3, ioServiceBytes_.get(i));
+            }
+            getUnknownFields().writeTo(output);
+          }
+
+          private int memoizedSerializedSize = -1;
+          public int getSerializedSize() {
+            int size = memoizedSerializedSize;
+            if (size != -1) return size;
+
+            size = 0;
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              size += com.google.protobuf.CodedOutputStream
+                .computeMessageSize(1, device_);
+            }
+            for (int i = 0; i < ioServiced_.size(); i++) {
+              size += com.google.protobuf.CodedOutputStream
+                .computeMessageSize(2, ioServiced_.get(i));
+            }
+            for (int i = 0; i < ioServiceBytes_.size(); i++) {
+              size += com.google.protobuf.CodedOutputStream
+                .computeMessageSize(3, ioServiceBytes_.get(i));
+            }
+            size += getUnknownFields().getSerializedSize();
+            memoizedSerializedSize = size;
+            return size;
+          }
+
+          private static final long serialVersionUID = 0L;
+          @java.lang.Override
+          protected java.lang.Object writeReplace()
+              throws java.io.ObjectStreamException {
+            return super.writeReplace();
+          }
+
+          public static org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics parseFrom(
+              com.google.protobuf.ByteString data)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+          }
+          public static org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics parseFrom(
+              com.google.protobuf.ByteString data,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+          }
+          public static org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics parseFrom(byte[] data)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+          }
+          public static org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics parseFrom(
+              byte[] data,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+          }
+          public static org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics parseFrom(java.io.InputStream input)
+              throws java.io.IOException {
+            return PARSER.parseFrom(input);
+          }
+          public static org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics parseFrom(
+              java.io.InputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            return PARSER.parseFrom(input, extensionRegistry);
+          }
+          public static org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics parseDelimitedFrom(java.io.InputStream input)
+              throws java.io.IOException {
+            return PARSER.parseDelimitedFrom(input);
+          }
+          public static org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics parseDelimitedFrom(
+              java.io.InputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            return PARSER.parseDelimitedFrom(input, extensionRegistry);
+          }
+          public static org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics parseFrom(
+              com.google.protobuf.CodedInputStream input)
+              throws java.io.IOException {
+            return PARSER.parseFrom(input);
+          }
+          public static org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics parseFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            return PARSER.parseFrom(input, extensionRegistry);
+          }
+
+          public static Builder newBuilder() { return Builder.create(); }
+          public Builder newBuilderForType() { return newBuilder(); }
+          public static Builder newBuilder(org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics prototype) {
+            return newBuilder().mergeFrom(prototype);
+          }
+          public Builder toBuilder() { return newBuilder(this); }
+
+          @java.lang.Override
+          protected Builder newBuilderForType(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+          }
+          /**
+           * Protobuf type {@code mesos.CgroupInfo.Blkio.Throttling.Statistics}
+           */
+          public static final class Builder extends
+              com.google.protobuf.GeneratedMessage.Builder<Builder>
+             implements org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.StatisticsOrBuilder {
+            public static final com.google.protobuf.Descriptors.Descriptor
+                getDescriptor() {
+              return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_Blkio_Throttling_Statistics_descriptor;
+            }
+
+            protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+                internalGetFieldAccessorTable() {
+              return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_Blkio_Throttling_Statistics_fieldAccessorTable
+                  .ensureFieldAccessorsInitialized(
+                      org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics.class, org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics.Builder.class);
+            }
+
+            // Construct using org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics.newBuilder()
+            private Builder() {
+              maybeForceBuilderInitialization();
+            }
+
+            private Builder(
+                com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+              super(parent);
+              maybeForceBuilderInitialization();
+            }
+            private void maybeForceBuilderInitialization() {
+              if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+                getDeviceFieldBuilder();
+                getIoServicedFieldBuilder();
+                getIoServiceBytesFieldBuilder();
+              }
+            }
+            private static Builder create() {
+              return new Builder();
+            }
+
+            public Builder clear() {
+              super.clear();
+              if (deviceBuilder_ == null) {
+                device_ = org.apache.mesos.Protos.Device.Number.getDefaultInstance();
+              } else {
+                deviceBuilder_.clear();
+              }
+              bitField0_ = (bitField0_ & ~0x00000001);
+              if (ioServicedBuilder_ == null) {
+                ioServiced_ = java.util.Collections.emptyList();
+                bitField0_ = (bitField0_ & ~0x00000002);
+              } else {
+                ioServicedBuilder_.clear();
+              }
+              if (ioServiceBytesBuilder_ == null) {
+                ioServiceBytes_ = java.util.Collections.emptyList();
+                bitField0_ = (bitField0_ & ~0x00000004);
+              } else {
+                ioServiceBytesBuilder_.clear();
+              }
+              return this;
+            }
+
+            public Builder clone() {
+              return create().mergeFrom(buildPartial());
+            }
+
+            public com.google.protobuf.Descriptors.Descriptor
+                getDescriptorForType() {
+              return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_Blkio_Throttling_Statistics_descriptor;
+            }
+
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics getDefaultInstanceForType() {
+              return org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics.getDefaultInstance();
+            }
+
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics build() {
+              org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics result = buildPartial();
+              if (!result.isInitialized()) {
+                throw newUninitializedMessageException(result);
+              }
+              return result;
+            }
+
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics buildPartial() {
+              org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics result = new org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics(this);
+              int from_bitField0_ = bitField0_;
+              int to_bitField0_ = 0;
+              if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+                to_bitField0_ |= 0x00000001;
+              }
+              if (deviceBuilder_ == null) {
+                result.device_ = device_;
+              } else {
+                result.device_ = deviceBuilder_.build();
+              }
+              if (ioServicedBuilder_ == null) {
+                if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                  ioServiced_ = java.util.Collections.unmodifiableList(ioServiced_);
+                  bitField0_ = (bitField0_ & ~0x00000002);
+                }
+                result.ioServiced_ = ioServiced_;
+              } else {
+                result.ioServiced_ = ioServicedBuilder_.build();
+              }
+              if (ioServiceBytesBuilder_ == null) {
+                if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                  ioServiceBytes_ = java.util.Collections.unmodifiableList(ioServiceBytes_);
+                  bitField0_ = (bitField0_ & ~0x00000004);
+                }
+                result.ioServiceBytes_ = ioServiceBytes_;
+              } else {
+                result.ioServiceBytes_ = ioServiceBytesBuilder_.build();
+              }
+              result.bitField0_ = to_bitField0_;
+              onBuilt();
+              return result;
+            }
+
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+              if (other instanceof org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics) {
+                return mergeFrom((org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics)other);
+              } else {
+                super.mergeFrom(other);
+                return this;
+              }
+            }
+
+            public Builder mergeFrom(org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics other) {
+              if (other == org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics.getDefaultInstance()) return this;
+              if (other.hasDevice()) {
+                mergeDevice(other.getDevice());
+              }
+              if (ioServicedBuilder_ == null) {
+                if (!other.ioServiced_.isEmpty()) {
+                  if (ioServiced_.isEmpty()) {
+                    ioServiced_ = other.ioServiced_;
+                    bitField0_ = (bitField0_ & ~0x00000002);
+                  } else {
+                    ensureIoServicedIsMutable();
+                    ioServiced_.addAll(other.ioServiced_);
+                  }
+                  onChanged();
+                }
+              } else {
+                if (!other.ioServiced_.isEmpty()) {
+                  if (ioServicedBuilder_.isEmpty()) {
+                    ioServicedBuilder_.dispose();
+                    ioServicedBuilder_ = null;
+                    ioServiced_ = other.ioServiced_;
+                    bitField0_ = (bitField0_ & ~0x00000002);
+                    ioServicedBuilder_ = 
+                      com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                         getIoServicedFieldBuilder() : null;
+                  } else {
+                    ioServicedBuilder_.addAllMessages(other.ioServiced_);
+                  }
+                }
+              }
+              if (ioServiceBytesBuilder_ == null) {
+                if (!other.ioServiceBytes_.isEmpty()) {
+                  if (ioServiceBytes_.isEmpty()) {
+                    ioServiceBytes_ = other.ioServiceBytes_;
+                    bitField0_ = (bitField0_ & ~0x00000004);
+                  } else {
+                    ensureIoServiceBytesIsMutable();
+                    ioServiceBytes_.addAll(other.ioServiceBytes_);
+                  }
+                  onChanged();
+                }
+              } else {
+                if (!other.ioServiceBytes_.isEmpty()) {
+                  if (ioServiceBytesBuilder_.isEmpty()) {
+                    ioServiceBytesBuilder_.dispose();
+                    ioServiceBytesBuilder_ = null;
+                    ioServiceBytes_ = other.ioServiceBytes_;
+                    bitField0_ = (bitField0_ & ~0x00000004);
+                    ioServiceBytesBuilder_ = 
+                      com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                         getIoServiceBytesFieldBuilder() : null;
+                  } else {
+                    ioServiceBytesBuilder_.addAllMessages(other.ioServiceBytes_);
+                  }
+                }
+              }
+              this.mergeUnknownFields(other.getUnknownFields());
+              return this;
+            }
+
+            public final boolean isInitialized() {
+              if (hasDevice()) {
+                if (!getDevice().isInitialized()) {
+                  
+                  return false;
+                }
+              }
+              return true;
+            }
+
+            public Builder mergeFrom(
+                com.google.protobuf.CodedInputStream input,
+                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+                throws java.io.IOException {
+              org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics parsedMessage = null;
+              try {
+                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+              } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                parsedMessage = (org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics) e.getUnfinishedMessage();
+                throw e;
+              } finally {
+                if (parsedMessage != null) {
+                  mergeFrom(parsedMessage);
+                }
+              }
+              return this;
+            }
+            private int bitField0_;
+
+            // optional .mesos.Device.Number device = 1;
+            private org.apache.mesos.Protos.Device.Number device_ = org.apache.mesos.Protos.Device.Number.getDefaultInstance();
+            private com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.Device.Number, org.apache.mesos.Protos.Device.Number.Builder, org.apache.mesos.Protos.Device.NumberOrBuilder> deviceBuilder_;
+            /**
+             * <code>optional .mesos.Device.Number device = 1;</code>
+             *
+             * <pre>
+             * Stats are grouped by block devices. If `device` is not
+             * set, it represents `Total`.
+             * </pre>
+             */
+            public boolean hasDevice() {
+              return ((bitField0_ & 0x00000001) == 0x00000001);
+            }
+            /**
+             * <code>optional .mesos.Device.Number device = 1;</code>
+             *
+             * <pre>
+             * Stats are grouped by block devices. If `device` is not
+             * set, it represents `Total`.
+             * </pre>
+             */
+            public org.apache.mesos.Protos.Device.Number getDevice() {
+              if (deviceBuilder_ == null) {
+                return device_;
+              } else {
+                return deviceBuilder_.getMessage();
+              }
+            }
+            /**
+             * <code>optional .mesos.Device.Number device = 1;</code>
+             *
+             * <pre>
+             * Stats are grouped by block devices. If `device` is not
+             * set, it represents `Total`.
+             * </pre>
+             */
+            public Builder setDevice(org.apache.mesos.Protos.Device.Number value) {
+              if (deviceBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                device_ = value;
+                onChanged();
+              } else {
+                deviceBuilder_.setMessage(value);
+              }
+              bitField0_ |= 0x00000001;
+              return this;
+            }
+            /**
+             * <code>optional .mesos.Device.Number device = 1;</code>
+             *
+             * <pre>
+             * Stats are grouped by block devices. If `device` is not
+             * set, it represents `Total`.
+             * </pre>
+             */
+            public Builder setDevice(
+                org.apache.mesos.Protos.Device.Number.Builder builderForValue) {
+              if (deviceBuilder_ == null) {
+                device_ = builderForValue.build();
+                onChanged();
+              } else {
+                deviceBuilder_.setMessage(builderForValue.build());
+              }
+              bitField0_ |= 0x00000001;
+              return this;
+            }
+            /**
+             * <code>optional .mesos.Device.Number device = 1;</code>
+             *
+             * <pre>
+             * Stats are grouped by block devices. If `device` is not
+             * set, it represents `Total`.
+             * </pre>
+             */
+            public Builder mergeDevice(org.apache.mesos.Protos.Device.Number value) {
+              if (deviceBuilder_ == null) {
+                if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                    device_ != org.apache.mesos.Protos.Device.Number.getDefaultInstance()) {
+                  device_ =
+                    org.apache.mesos.Protos.Device.Number.newBuilder(device_).mergeFrom(value).buildPartial();
+                } else {
+                  device_ = value;
+                }
+                onChanged();
+              } else {
+                deviceBuilder_.mergeFrom(value);
+              }
+              bitField0_ |= 0x00000001;
+              return this;
+            }
+            /**
+             * <code>optional .mesos.Device.Number device = 1;</code>
+             *
+             * <pre>
+             * Stats are grouped by block devices. If `device` is not
+             * set, it represents `Total`.
+             * </pre>
+             */
+            public Builder clearDevice() {
+              if (deviceBuilder_ == null) {
+                device_ = org.apache.mesos.Protos.Device.Number.getDefaultInstance();
+                onChanged();
+              } else {
+                deviceBuilder_.clear();
+              }
+              bitField0_ = (bitField0_ & ~0x00000001);
+              return this;
+            }
+            /**
+             * <code>optional .mesos.Device.Number device = 1;</code>
+             *
+             * <pre>
+             * Stats are grouped by block devices. If `device` is not
+             * set, it represents `Total`.
+             * </pre>
+             */
+            public org.apache.mesos.Protos.Device.Number.Builder getDeviceBuilder() {
+              bitField0_ |= 0x00000001;
+              onChanged();
+              return getDeviceFieldBuilder().getBuilder();
+            }
+            /**
+             * <code>optional .mesos.Device.Number device = 1;</code>
+             *
+             * <pre>
+             * Stats are grouped by block devices. If `device` is not
+             * set, it represents `Total`.
+             * </pre>
+             */
+            public org.apache.mesos.Protos.Device.NumberOrBuilder getDeviceOrBuilder() {
+              if (deviceBuilder_ != null) {
+                return deviceBuilder_.getMessageOrBuilder();
+              } else {
+                return device_;
+              }
+            }
+            /**
+             * <code>optional .mesos.Device.Number device = 1;</code>
+             *
+             * <pre>
+             * Stats are grouped by block devices. If `device` is not
+             * set, it represents `Total`.
+             * </pre>
+             */
+            private com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.Device.Number, org.apache.mesos.Protos.Device.Number.Builder, org.apache.mesos.Protos.Device.NumberOrBuilder> 
+                getDeviceFieldBuilder() {
+              if (deviceBuilder_ == null) {
+                deviceBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                    org.apache.mesos.Protos.Device.Number, org.apache.mesos.Protos.Device.Number.Builder, org.apache.mesos.Protos.Device.NumberOrBuilder>(
+                        device_,
+                        getParentForChildren(),
+                        isClean());
+                device_ = null;
+              }
+              return deviceBuilder_;
+            }
+
+            // repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 2;
+            private java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value> ioServiced_ =
+              java.util.Collections.emptyList();
+            private void ensureIoServicedIsMutable() {
+              if (!((bitField0_ & 0x00000002) == 0x00000002)) {
+                ioServiced_ = new java.util.ArrayList<org.apache.mesos.Protos.CgroupInfo.Blkio.Value>(ioServiced_);
+                bitField0_ |= 0x00000002;
+               }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder> ioServicedBuilder_;
+
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_serviced
+             * </pre>
+             */
+            public java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value> getIoServicedList() {
+              if (ioServicedBuilder_ == null) {
+                return java.util.Collections.unmodifiableList(ioServiced_);
+              } else {
+                return ioServicedBuilder_.getMessageList();
+              }
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_serviced
+             * </pre>
+             */
+            public int getIoServicedCount() {
+              if (ioServicedBuilder_ == null) {
+                return ioServiced_.size();
+              } else {
+                return ioServicedBuilder_.getCount();
+              }
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_serviced
+             * </pre>
+             */
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.Value getIoServiced(int index) {
+              if (ioServicedBuilder_ == null) {
+                return ioServiced_.get(index);
+              } else {
+                return ioServicedBuilder_.getMessage(index);
+              }
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_serviced
+             * </pre>
+             */
+            public Builder setIoServiced(
+                int index, org.apache.mesos.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioServicedBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoServicedIsMutable();
+                ioServiced_.set(index, value);
+                onChanged();
+              } else {
+                ioServicedBuilder_.setMessage(index, value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_serviced
+             * </pre>
+             */
+            public Builder setIoServiced(
+                int index, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioServicedBuilder_ == null) {
+                ensureIoServicedIsMutable();
+                ioServiced_.set(index, builderForValue.build());
+                onChanged();
+              } else {
+                ioServicedBuilder_.setMessage(index, builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_serviced
+             * </pre>
+             */
+            public Builder addIoServiced(org.apache.mesos.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioServicedBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoServicedIsMutable();
+                ioServiced_.add(value);
+                onChanged();
+              } else {
+                ioServicedBuilder_.addMessage(value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_serviced
+             * </pre>
+             */
+            public Builder addIoServiced(
+                int index, org.apache.mesos.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioServicedBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoServicedIsMutable();
+                ioServiced_.add(index, value);
+                onChanged();
+              } else {
+                ioServicedBuilder_.addMessage(index, value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_serviced
+             * </pre>
+             */
+            public Builder addIoServiced(
+                org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioServicedBuilder_ == null) {
+                ensureIoServicedIsMutable();
+                ioServiced_.add(builderForValue.build());
+                onChanged();
+              } else {
+                ioServicedBuilder_.addMessage(builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_serviced
+             * </pre>
+             */
+            public Builder addIoServiced(
+                int index, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioServicedBuilder_ == null) {
+                ensureIoServicedIsMutable();
+                ioServiced_.add(index, builderForValue.build());
+                onChanged();
+              } else {
+                ioServicedBuilder_.addMessage(index, builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_serviced
+             * </pre>
+             */
+            public Builder addAllIoServiced(
+                java.lang.Iterable<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.Value> values) {
+              if (ioServicedBuilder_ == null) {
+                ensureIoServicedIsMutable();
+                super.addAll(values, ioServiced_);
+                onChanged();
+              } else {
+                ioServicedBuilder_.addAllMessages(values);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_serviced
+             * </pre>
+             */
+            public Builder clearIoServiced() {
+              if (ioServicedBuilder_ == null) {
+                ioServiced_ = java.util.Collections.emptyList();
+                bitField0_ = (bitField0_ & ~0x00000002);
+                onChanged();
+              } else {
+                ioServicedBuilder_.clear();
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_serviced
+             * </pre>
+             */
+            public Builder removeIoServiced(int index) {
+              if (ioServicedBuilder_ == null) {
+                ensureIoServicedIsMutable();
+                ioServiced_.remove(index);
+                onChanged();
+              } else {
+                ioServicedBuilder_.remove(index);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_serviced
+             * </pre>
+             */
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder getIoServicedBuilder(
+                int index) {
+              return getIoServicedFieldBuilder().getBuilder(index);
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_serviced
+             * </pre>
+             */
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoServicedOrBuilder(
+                int index) {
+              if (ioServicedBuilder_ == null) {
+                return ioServiced_.get(index);  } else {
+                return ioServicedBuilder_.getMessageOrBuilder(index);
+              }
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_serviced
+             * </pre>
+             */
+            public java.util.List<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+                 getIoServicedOrBuilderList() {
+              if (ioServicedBuilder_ != null) {
+                return ioServicedBuilder_.getMessageOrBuilderList();
+              } else {
+                return java.util.Collections.unmodifiableList(ioServiced_);
+              }
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_serviced
+             * </pre>
+             */
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder addIoServicedBuilder() {
+              return getIoServicedFieldBuilder().addBuilder(
+                  org.apache.mesos.Protos.CgroupInfo.Blkio.Value.getDefaultInstance());
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_serviced
+             * </pre>
+             */
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder addIoServicedBuilder(
+                int index) {
+              return getIoServicedFieldBuilder().addBuilder(
+                  index, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.getDefaultInstance());
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_serviced
+             * </pre>
+             */
+            public java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder> 
+                 getIoServicedBuilderList() {
+              return getIoServicedFieldBuilder().getBuilderList();
+            }
+            private com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+                getIoServicedFieldBuilder() {
+              if (ioServicedBuilder_ == null) {
+                ioServicedBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                    org.apache.mesos.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder>(
+                        ioServiced_,
+                        ((bitField0_ & 0x00000002) == 0x00000002),
+                        getParentForChildren(),
+                        isClean());
+                ioServiced_ = null;
+              }
+              return ioServicedBuilder_;
+            }
+
+            // repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 3;
+            private java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value> ioServiceBytes_ =
+              java.util.Collections.emptyList();
+            private void ensureIoServiceBytesIsMutable() {
+              if (!((bitField0_ & 0x00000004) == 0x00000004)) {
+                ioServiceBytes_ = new java.util.ArrayList<org.apache.mesos.Protos.CgroupInfo.Blkio.Value>(ioServiceBytes_);
+                bitField0_ |= 0x00000004;
+               }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder> ioServiceBytesBuilder_;
+
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_service_bytes
+             * </pre>
+             */
+            public java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value> getIoServiceBytesList() {
+              if (ioServiceBytesBuilder_ == null) {
+                return java.util.Collections.unmodifiableList(ioServiceBytes_);
+              } else {
+                return ioServiceBytesBuilder_.getMessageList();
+              }
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_service_bytes
+             * </pre>
+             */
+            public int getIoServiceBytesCount() {
+              if (ioServiceBytesBuilder_ == null) {
+                return ioServiceBytes_.size();
+              } else {
+                return ioServiceBytesBuilder_.getCount();
+              }
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_service_bytes
+             * </pre>
+             */
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.Value getIoServiceBytes(int index) {
+              if (ioServiceBytesBuilder_ == null) {
+                return ioServiceBytes_.get(index);
+              } else {
+                return ioServiceBytesBuilder_.getMessage(index);
+              }
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_service_bytes
+             * </pre>
+             */
+            public Builder setIoServiceBytes(
+                int index, org.apache.mesos.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioServiceBytesBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoServiceBytesIsMutable();
+                ioServiceBytes_.set(index, value);
+                onChanged();
+              } else {
+                ioServiceBytesBuilder_.setMessage(index, value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_service_bytes
+             * </pre>
+             */
+            public Builder setIoServiceBytes(
+                int index, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioServiceBytesBuilder_ == null) {
+                ensureIoServiceBytesIsMutable();
+                ioServiceBytes_.set(index, builderForValue.build());
+                onChanged();
+              } else {
+                ioServiceBytesBuilder_.setMessage(index, builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_service_bytes
+             * </pre>
+             */
+            public Builder addIoServiceBytes(org.apache.mesos.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioServiceBytesBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoServiceBytesIsMutable();
+                ioServiceBytes_.add(value);
+                onChanged();
+              } else {
+                ioServiceBytesBuilder_.addMessage(value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_service_bytes
+             * </pre>
+             */
+            public Builder addIoServiceBytes(
+                int index, org.apache.mesos.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioServiceBytesBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoServiceBytesIsMutable();
+                ioServiceBytes_.add(index, value);
+                onChanged();
+              } else {
+                ioServiceBytesBuilder_.addMessage(index, value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_service_bytes
+             * </pre>
+             */
+            public Builder addIoServiceBytes(
+                org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioServiceBytesBuilder_ == null) {
+                ensureIoServiceBytesIsMutable();
+                ioServiceBytes_.add(builderForValue.build());
+                onChanged();
+              } else {
+                ioServiceBytesBuilder_.addMessage(builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_service_bytes
+             * </pre>
+             */
+            public Builder addIoServiceBytes(
+                int index, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioServiceBytesBuilder_ == null) {
+                ensureIoServiceBytesIsMutable();
+                ioServiceBytes_.add(index, builderForValue.build());
+                onChanged();
+              } else {
+                ioServiceBytesBuilder_.addMessage(index, builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_service_bytes
+             * </pre>
+             */
+            public Builder addAllIoServiceBytes(
+                java.lang.Iterable<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.Value> values) {
+              if (ioServiceBytesBuilder_ == null) {
+                ensureIoServiceBytesIsMutable();
+                super.addAll(values, ioServiceBytes_);
+                onChanged();
+              } else {
+                ioServiceBytesBuilder_.addAllMessages(values);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_service_bytes
+             * </pre>
+             */
+            public Builder clearIoServiceBytes() {
+              if (ioServiceBytesBuilder_ == null) {
+                ioServiceBytes_ = java.util.Collections.emptyList();
+                bitField0_ = (bitField0_ & ~0x00000004);
+                onChanged();
+              } else {
+                ioServiceBytesBuilder_.clear();
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_service_bytes
+             * </pre>
+             */
+            public Builder removeIoServiceBytes(int index) {
+              if (ioServiceBytesBuilder_ == null) {
+                ensureIoServiceBytesIsMutable();
+                ioServiceBytes_.remove(index);
+                onChanged();
+              } else {
+                ioServiceBytesBuilder_.remove(index);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_service_bytes
+             * </pre>
+             */
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder getIoServiceBytesBuilder(
+                int index) {
+              return getIoServiceBytesFieldBuilder().getBuilder(index);
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_service_bytes
+             * </pre>
+             */
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoServiceBytesOrBuilder(
+                int index) {
+              if (ioServiceBytesBuilder_ == null) {
+                return ioServiceBytes_.get(index);  } else {
+                return ioServiceBytesBuilder_.getMessageOrBuilder(index);
+              }
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_service_bytes
+             * </pre>
+             */
+            public java.util.List<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+                 getIoServiceBytesOrBuilderList() {
+              if (ioServiceBytesBuilder_ != null) {
+                return ioServiceBytesBuilder_.getMessageOrBuilderList();
+              } else {
+                return java.util.Collections.unmodifiableList(ioServiceBytes_);
+              }
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_service_bytes
+             * </pre>
+             */
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder addIoServiceBytesBuilder() {
+              return getIoServiceBytesFieldBuilder().addBuilder(
+                  org.apache.mesos.Protos.CgroupInfo.Blkio.Value.getDefaultInstance());
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_service_bytes
+             * </pre>
+             */
+            public org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder addIoServiceBytesBuilder(
+                int index) {
+              return getIoServiceBytesFieldBuilder().addBuilder(
+                  index, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.getDefaultInstance());
+            }
+            /**
+             * <code>repeated .mesos.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_service_bytes
+             * </pre>
+             */
+            public java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder> 
+                 getIoServiceBytesBuilderList() {
+              return getIoServiceBytesFieldBuilder().getBuilderList();
+            }
+            private com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+                getIoServiceBytesFieldBuilder() {
+              if (ioServiceBytesBuilder_ == null) {
+                ioServiceBytesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                    org.apache.mesos.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.Protos.CgroupInfo.Blkio.ValueOrBuilder>(
+                        ioServiceBytes_,
+                        ((bitField0_ & 0x00000004) == 0x00000004),
+                        getParentForChildren(),
+                        isClean());
+                ioServiceBytes_ = null;
+              }
+              return ioServiceBytesBuilder_;
+            }
+
+            // @@protoc_insertion_point(builder_scope:mesos.CgroupInfo.Blkio.Throttling.Statistics)
+          }
+
+          static {
+            defaultInstance = new Statistics(true);
+            defaultInstance.initFields();
+          }
+
+          // @@protoc_insertion_point(class_scope:mesos.CgroupInfo.Blkio.Throttling.Statistics)
+        }
+
+        private void initFields() {
+        }
+        private byte memoizedIsInitialized = -1;
+        public final boolean isInitialized() {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized != -1) return isInitialized == 1;
+
+          memoizedIsInitialized = 1;
+          return true;
+        }
+
+        public void writeTo(com.google.protobuf.CodedOutputStream output)
+                            throws java.io.IOException {
+          getSerializedSize();
+          getUnknownFields().writeTo(output);
+        }
+
+        private int memoizedSerializedSize = -1;
+        public int getSerializedSize() {
+          int size = memoizedSerializedSize;
+          if (size != -1) return size;
+
+          size = 0;
+          size += getUnknownFields().getSerializedSize();
+          memoizedSerializedSize = size;
+          return size;
+        }
+
+        private static final long serialVersionUID = 0L;
+        @java.lang.Override
+        protected java.lang.Object writeReplace()
+            throws java.io.ObjectStreamException {
+          return super.writeReplace();
+        }
+
+        public static org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling parseFrom(
+            com.google.protobuf.ByteString data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling parseFrom(
+            com.google.protobuf.ByteString data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling parseFrom(byte[] data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling parseFrom(
+            byte[] data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling parseFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling parseFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling parseDelimitedFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input);
+        }
+        public static org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling parseDelimitedFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling parseFrom(
+            com.google.protobuf.CodedInputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling parseFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+
+        public static Builder newBuilder() { return Builder.create(); }
+        public Builder newBuilderForType() { return newBuilder(); }
+        public static Builder newBuilder(org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling prototype) {
+          return newBuilder().mergeFrom(prototype);
+        }
+        public Builder toBuilder() { return newBuilder(this); }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          Builder builder = new Builder(parent);
+          return builder;
+        }
+        /**
+         * Protobuf type {@code mesos.CgroupInfo.Blkio.Throttling}
+         */
+        public static final class Builder extends
+            com.google.protobuf.GeneratedMessage.Builder<Builder>
+           implements org.apache.mesos.Protos.CgroupInfo.Blkio.ThrottlingOrBuilder {
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_Blkio_Throttling_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_Blkio_Throttling_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.class, org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Builder.class);
+          }
+
+          // Construct using org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.newBuilder()
+          private Builder() {
+            maybeForceBuilderInitialization();
+          }
+
+          private Builder(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            super(parent);
+            maybeForceBuilderInitialization();
+          }
+          private void maybeForceBuilderInitialization() {
+            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            }
+          }
+          private static Builder create() {
+            return new Builder();
+          }
+
+          public Builder clear() {
+            super.clear();
+            return this;
+          }
+
+          public Builder clone() {
+            return create().mergeFrom(buildPartial());
+          }
+
+          public com.google.protobuf.Descriptors.Descriptor
+              getDescriptorForType() {
+            return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_Blkio_Throttling_descriptor;
+          }
+
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling getDefaultInstanceForType() {
+            return org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.getDefaultInstance();
+          }
+
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling build() {
+            org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling result = buildPartial();
+            if (!result.isInitialized()) {
+              throw newUninitializedMessageException(result);
+            }
+            return result;
+          }
+
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling buildPartial() {
+            org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling result = new org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling(this);
+            onBuilt();
+            return result;
+          }
+
+          public Builder mergeFrom(com.google.protobuf.Message other) {
+            if (other instanceof org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling) {
+              return mergeFrom((org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling)other);
+            } else {
+              super.mergeFrom(other);
+              return this;
+            }
+          }
+
+          public Builder mergeFrom(org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling other) {
+            if (other == org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.getDefaultInstance()) return this;
+            this.mergeUnknownFields(other.getUnknownFields());
+            return this;
+          }
+
+          public final boolean isInitialized() {
+            return true;
+          }
+
+          public Builder mergeFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling parsedMessage = null;
+            try {
+              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              parsedMessage = (org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling) e.getUnfinishedMessage();
+              throw e;
+            } finally {
+              if (parsedMessage != null) {
+                mergeFrom(parsedMessage);
+              }
+            }
+            return this;
+          }
+
+          // @@protoc_insertion_point(builder_scope:mesos.CgroupInfo.Blkio.Throttling)
+        }
+
+        static {
+          defaultInstance = new Throttling(true);
+          defaultInstance.initFields();
+        }
+
+        // @@protoc_insertion_point(class_scope:mesos.CgroupInfo.Blkio.Throttling)
+      }
+
+      public interface StatisticsOrBuilder
+          extends com.google.protobuf.MessageOrBuilder {
+
+        // repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;
+        /**
+         * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+         */
+        java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics> 
+            getCfqList();
+        /**
+         * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+         */
+        org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics getCfq(int index);
+        /**
+         * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+         */
+        int getCfqCount();
+        /**
+         * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+         */
+        java.util.List<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.StatisticsOrBuilder> 
+            getCfqOrBuilderList();
+        /**
+         * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+         */
+        org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.StatisticsOrBuilder getCfqOrBuilder(
+            int index);
+
+        // repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;
+        /**
+         * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+         */
+        java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics> 
+            getCfqRecursiveList();
+        /**
+         * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+         */
+        org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics getCfqRecursive(int index);
+        /**
+         * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+         */
+        int getCfqRecursiveCount();
+        /**
+         * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+         */
+        java.util.List<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.StatisticsOrBuilder> 
+            getCfqRecursiveOrBuilderList();
+        /**
+         * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+         */
+        org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.StatisticsOrBuilder getCfqRecursiveOrBuilder(
+            int index);
+
+        // repeated .mesos.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;
+        /**
+         * <code>repeated .mesos.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+         */
+        java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics> 
+            getThrottlingList();
+        /**
+         * <code>repeated .mesos.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+         */
+        org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics getThrottling(int index);
+        /**
+         * <code>repeated .mesos.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+         */
+        int getThrottlingCount();
+        /**
+         * <code>repeated .mesos.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+         */
+        java.util.List<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.StatisticsOrBuilder> 
+            getThrottlingOrBuilderList();
+        /**
+         * <code>repeated .mesos.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+         */
+        org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.StatisticsOrBuilder getThrottlingOrBuilder(
+            int index);
+      }
+      /**
+       * Protobuf type {@code mesos.CgroupInfo.Blkio.Statistics}
+       */
+      public static final class Statistics extends
+          com.google.protobuf.GeneratedMessage
+          implements StatisticsOrBuilder {
+        // Use Statistics.newBuilder() to construct.
+        private Statistics(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+          super(builder);
+          this.unknownFields = builder.getUnknownFields();
+        }
+        private Statistics(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+        private static final Statistics defaultInstance;
+        public static Statistics getDefaultInstance() {
+          return defaultInstance;
+        }
+
+        public Statistics getDefaultInstanceForType() {
+          return defaultInstance;
+        }
+
+        private final com.google.protobuf.UnknownFieldSet unknownFields;
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet
+            getUnknownFields() {
+          return this.unknownFields;
+        }
+        private Statistics(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          initFields();
+          int mutable_bitField0_ = 0;
+          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+              com.google.protobuf.UnknownFieldSet.newBuilder();
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(input, unknownFields,
+                                         extensionRegistry, tag)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 10: {
+                  if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                    cfq_ = new java.util.ArrayList<org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics>();
+                    mutable_bitField0_ |= 0x00000001;
+                  }
+                  cfq_.add(input.readMessage(org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics.PARSER, extensionRegistry));
+                  break;
+                }
+                case 18: {
+                  if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+                    cfqRecursive_ = new java.util.ArrayList<org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics>();
+                    mutable_bitField0_ |= 0x00000002;
+                  }
+                  cfqRecursive_.add(input.readMessage(org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics.PARSER, extensionRegistry));
+                  break;
+                }
+                case 26: {
+                  if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
+                    throttling_ = new java.util.ArrayList<org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics>();
+                    mutable_bitField0_ |= 0x00000004;
+                  }
+                  throttling_.add(input.readMessage(org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics.PARSER, extensionRegistry));
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw e.setUnfinishedMessage(this);
+          } catch (java.io.IOException e) {
+            throw new com.google.protobuf.InvalidProtocolBufferException(
+                e.getMessage()).setUnfinishedMessage(this);
+          } finally {
+            if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+              cfq_ = java.util.Collections.unmodifiableList(cfq_);
+            }
+            if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+              cfqRecursive_ = java.util.Collections.unmodifiableList(cfqRecursive_);
+            }
+            if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
+              throttling_ = java.util.Collections.unmodifiableList(throttling_);
+            }
+            this.unknownFields = unknownFields.build();
+            makeExtensionsImmutable();
+          }
+        }
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_Blkio_Statistics_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_Blkio_Statistics_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics.class, org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics.Builder.class);
+        }
+
+        public static com.google.protobuf.Parser<Statistics> PARSER =
+            new com.google.protobuf.AbstractParser<Statistics>() {
+          public Statistics parsePartialFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return new Statistics(input, extensionRegistry);
+          }
+        };
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<Statistics> getParserForType() {
+          return PARSER;
+        }
+
+        // repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;
+        public static final int CFQ_FIELD_NUMBER = 1;
+        private java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics> cfq_;
+        /**
+         * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics> getCfqList() {
+          return cfq_;
+        }
+        /**
+         * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.StatisticsOrBuilder> 
+            getCfqOrBuilderList() {
+          return cfq_;
+        }
+        /**
+         * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+         */
+        public int getCfqCount() {
+          return cfq_.size();
+        }
+        /**
+         * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+         */
+        public org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics getCfq(int index) {
+          return cfq_.get(index);
+        }
+        /**
+         * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+         */
+        public org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.StatisticsOrBuilder getCfqOrBuilder(
+            int index) {
+          return cfq_.get(index);
+        }
+
+        // repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;
+        public static final int CFQ_RECURSIVE_FIELD_NUMBER = 2;
+        private java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics> cfqRecursive_;
+        /**
+         * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+         */
+        public java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics> getCfqRecursiveList() {
+          return cfqRecursive_;
+        }
+        /**
+         * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.StatisticsOrBuilder> 
+            getCfqRecursiveOrBuilderList() {
+          return cfqRecursive_;
+        }
+        /**
+         * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+         */
+        public int getCfqRecursiveCount() {
+          return cfqRecursive_.size();
+        }
+        /**
+         * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+         */
+        public org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics getCfqRecursive(int index) {
+          return cfqRecursive_.get(index);
+        }
+        /**
+         * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+         */
+        public org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.StatisticsOrBuilder getCfqRecursiveOrBuilder(
+            int index) {
+          return cfqRecursive_.get(index);
+        }
+
+        // repeated .mesos.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;
+        public static final int THROTTLING_FIELD_NUMBER = 3;
+        private java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics> throttling_;
+        /**
+         * <code>repeated .mesos.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+         */
+        public java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics> getThrottlingList() {
+          return throttling_;
+        }
+        /**
+         * <code>repeated .mesos.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.StatisticsOrBuilder> 
+            getThrottlingOrBuilderList() {
+          return throttling_;
+        }
+        /**
+         * <code>repeated .mesos.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+         */
+        public int getThrottlingCount() {
+          return throttling_.size();
+        }
+        /**
+         * <code>repeated .mesos.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+         */
+        public org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics getThrottling(int index) {
+          return throttling_.get(index);
+        }
+        /**
+         * <code>repeated .mesos.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+         */
+        public org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.StatisticsOrBuilder getThrottlingOrBuilder(
+            int index) {
+          return throttling_.get(index);
+        }
+
+        private void initFields() {
+          cfq_ = java.util.Collections.emptyList();
+          cfqRecursive_ = java.util.Collections.emptyList();
+          throttling_ = java.util.Collections.emptyList();
+        }
+        private byte memoizedIsInitialized = -1;
+        public final boolean isInitialized() {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized != -1) return isInitialized == 1;
+
+          for (int i = 0; i < getCfqCount(); i++) {
+            if (!getCfq(i).isInitialized()) {
+              memoizedIsInitialized = 0;
+              return false;
+            }
+          }
+          for (int i = 0; i < getCfqRecursiveCount(); i++) {
+            if (!getCfqRecursive(i).isInitialized()) {
+              memoizedIsInitialized = 0;
+              return false;
+            }
+          }
+          for (int i = 0; i < getThrottlingCount(); i++) {
+            if (!getThrottling(i).isInitialized()) {
+              memoizedIsInitialized = 0;
+              return false;
+            }
+          }
+          memoizedIsInitialized = 1;
+          return true;
+        }
+
+        public void writeTo(com.google.protobuf.CodedOutputStream output)
+                            throws java.io.IOException {
+          getSerializedSize();
+          for (int i = 0; i < cfq_.size(); i++) {
+            output.writeMessage(1, cfq_.get(i));
+          }
+          for (int i = 0; i < cfqRecursive_.size(); i++) {
+            output.writeMessage(2, cfqRecursive_.get(i));
+          }
+          for (int i = 0; i < throttling_.size(); i++) {
+            output.writeMessage(3, throttling_.get(i));
+          }
+          getUnknownFields().writeTo(output);
+        }
+
+        private int memoizedSerializedSize = -1;
+        public int getSerializedSize() {
+          int size = memoizedSerializedSize;
+          if (size != -1) return size;
+
+          size = 0;
+          for (int i = 0; i < cfq_.size(); i++) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeMessageSize(1, cfq_.get(i));
+          }
+          for (int i = 0; i < cfqRecursive_.size(); i++) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeMessageSize(2, cfqRecursive_.get(i));
+          }
+          for (int i = 0; i < throttling_.size(); i++) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeMessageSize(3, throttling_.get(i));
+          }
+          size += getUnknownFields().getSerializedSize();
+          memoizedSerializedSize = size;
+          return size;
+        }
+
+        private static final long serialVersionUID = 0L;
+        @java.lang.Override
+        protected java.lang.Object writeReplace()
+            throws java.io.ObjectStreamException {
+          return super.writeReplace();
+        }
+
+        public static org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics parseFrom(
+            com.google.protobuf.ByteString data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics parseFrom(
+            com.google.protobuf.ByteString data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics parseFrom(byte[] data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics parseFrom(
+            byte[] data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics parseFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics parseFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics parseDelimitedFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input);
+        }
+        public static org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics parseDelimitedFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics parseFrom(
+            com.google.protobuf.CodedInputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics parseFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+
+        public static Builder newBuilder() { return Builder.create(); }
+        public Builder newBuilderForType() { return newBuilder(); }
+        public static Builder newBuilder(org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics prototype) {
+          return newBuilder().mergeFrom(prototype);
+        }
+        public Builder toBuilder() { return newBuilder(this); }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          Builder builder = new Builder(parent);
+          return builder;
+        }
+        /**
+         * Protobuf type {@code mesos.CgroupInfo.Blkio.Statistics}
+         */
+        public static final class Builder extends
+            com.google.protobuf.GeneratedMessage.Builder<Builder>
+           implements org.apache.mesos.Protos.CgroupInfo.Blkio.StatisticsOrBuilder {
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_Blkio_Statistics_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_Blkio_Statistics_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics.class, org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics.Builder.class);
+          }
+
+          // Construct using org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics.newBuilder()
+          private Builder() {
+            maybeForceBuilderInitialization();
+          }
+
+          private Builder(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            super(parent);
+            maybeForceBuilderInitialization();
+          }
+          private void maybeForceBuilderInitialization() {
+            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+              getCfqFieldBuilder();
+              getCfqRecursiveFieldBuilder();
+              getThrottlingFieldBuilder();
+            }
+          }
+          private static Builder create() {
+            return new Builder();
+          }
+
+          public Builder clear() {
+            super.clear();
+            if (cfqBuilder_ == null) {
+              cfq_ = java.util.Collections.emptyList();
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              cfqBuilder_.clear();
+            }
+            if (cfqRecursiveBuilder_ == null) {
+              cfqRecursive_ = java.util.Collections.emptyList();
+              bitField0_ = (bitField0_ & ~0x00000002);
+            } else {
+              cfqRecursiveBuilder_.clear();
+            }
+            if (throttlingBuilder_ == null) {
+              throttling_ = java.util.Collections.emptyList();
+              bitField0_ = (bitField0_ & ~0x00000004);
+            } else {
+              throttlingBuilder_.clear();
+            }
+            return this;
+          }
+
+          public Builder clone() {
+            return create().mergeFrom(buildPartial());
+          }
+
+          public com.google.protobuf.Descriptors.Descriptor
+              getDescriptorForType() {
+            return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_Blkio_Statistics_descriptor;
+          }
+
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics getDefaultInstanceForType() {
+            return org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics.getDefaultInstance();
+          }
+
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics build() {
+            org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics result = buildPartial();
+            if (!result.isInitialized()) {
+              throw newUninitializedMessageException(result);
+            }
+            return result;
+          }
+
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics buildPartial() {
+            org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics result = new org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics(this);
+            int from_bitField0_ = bitField0_;
+            if (cfqBuilder_ == null) {
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                cfq_ = java.util.Collections.unmodifiableList(cfq_);
+                bitField0_ = (bitField0_ & ~0x00000001);
+              }
+              result.cfq_ = cfq_;
+            } else {
+              result.cfq_ = cfqBuilder_.build();
+            }
+            if (cfqRecursiveBuilder_ == null) {
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                cfqRecursive_ = java.util.Collections.unmodifiableList(cfqRecursive_);
+                bitField0_ = (bitField0_ & ~0x00000002);
+              }
+              result.cfqRecursive_ = cfqRecursive_;
+            } else {
+              result.cfqRecursive_ = cfqRecursiveBuilder_.build();
+            }
+            if (throttlingBuilder_ == null) {
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                throttling_ = java.util.Collections.unmodifiableList(throttling_);
+                bitField0_ = (bitField0_ & ~0x00000004);
+              }
+              result.throttling_ = throttling_;
+            } else {
+              result.throttling_ = throttlingBuilder_.build();
+            }
+            onBuilt();
+            return result;
+          }
+
+          public Builder mergeFrom(com.google.protobuf.Message other) {
+            if (other instanceof org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics) {
+              return mergeFrom((org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics)other);
+            } else {
+              super.mergeFrom(other);
+              return this;
+            }
+          }
+
+          public Builder mergeFrom(org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics other) {
+            if (other == org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics.getDefaultInstance()) return this;
+            if (cfqBuilder_ == null) {
+              if (!other.cfq_.isEmpty()) {
+                if (cfq_.isEmpty()) {
+                  cfq_ = other.cfq_;
+                  bitField0_ = (bitField0_ & ~0x00000001);
+                } else {
+                  ensureCfqIsMutable();
+                  cfq_.addAll(other.cfq_);
+                }
+                onChanged();
+              }
+            } else {
+              if (!other.cfq_.isEmpty()) {
+                if (cfqBuilder_.isEmpty()) {
+                  cfqBuilder_.dispose();
+                  cfqBuilder_ = null;
+                  cfq_ = other.cfq_;
+                  bitField0_ = (bitField0_ & ~0x00000001);
+                  cfqBuilder_ = 
+                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                       getCfqFieldBuilder() : null;
+                } else {
+                  cfqBuilder_.addAllMessages(other.cfq_);
+                }
+              }
+            }
+            if (cfqRecursiveBuilder_ == null) {
+              if (!other.cfqRecursive_.isEmpty()) {
+                if (cfqRecursive_.isEmpty()) {
+                  cfqRecursive_ = other.cfqRecursive_;
+                  bitField0_ = (bitField0_ & ~0x00000002);
+                } else {
+                  ensureCfqRecursiveIsMutable();
+                  cfqRecursive_.addAll(other.cfqRecursive_);
+                }
+                onChanged();
+              }
+            } else {
+              if (!other.cfqRecursive_.isEmpty()) {
+                if (cfqRecursiveBuilder_.isEmpty()) {
+                  cfqRecursiveBuilder_.dispose();
+                  cfqRecursiveBuilder_ = null;
+                  cfqRecursive_ = other.cfqRecursive_;
+                  bitField0_ = (bitField0_ & ~0x00000002);
+                  cfqRecursiveBuilder_ = 
+                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                       getCfqRecursiveFieldBuilder() : null;
+                } else {
+                  cfqRecursiveBuilder_.addAllMessages(other.cfqRecursive_);
+                }
+              }
+            }
+            if (throttlingBuilder_ == null) {
+              if (!other.throttling_.isEmpty()) {
+                if (throttling_.isEmpty()) {
+                  throttling_ = other.throttling_;
+                  bitField0_ = (bitField0_ & ~0x00000004);
+                } else {
+                  ensureThrottlingIsMutable();
+                  throttling_.addAll(other.throttling_);
+                }
+                onChanged();
+              }
+            } else {
+              if (!other.throttling_.isEmpty()) {
+                if (throttlingBuilder_.isEmpty()) {
+                  throttlingBuilder_.dispose();
+                  throttlingBuilder_ = null;
+                  throttling_ = other.throttling_;
+                  bitField0_ = (bitField0_ & ~0x00000004);
+                  throttlingBuilder_ = 
+                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                       getThrottlingFieldBuilder() : null;
+                } else {
+                  throttlingBuilder_.addAllMessages(other.throttling_);
+                }
+              }
+            }
+            this.mergeUnknownFields(other.getUnknownFields());
+            return this;
+          }
+
+          public final boolean isInitialized() {
+            for (int i = 0; i < getCfqCount(); i++) {
+              if (!getCfq(i).isInitialized()) {
+                
+                return false;
+              }
+            }
+            for (int i = 0; i < getCfqRecursiveCount(); i++) {
+              if (!getCfqRecursive(i).isInitialized()) {
+                
+                return false;
+              }
+            }
+            for (int i = 0; i < getThrottlingCount(); i++) {
+              if (!getThrottling(i).isInitialized()) {
+                
+                return false;
+              }
+            }
+            return true;
+          }
+
+          public Builder mergeFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics parsedMessage = null;
+            try {
+              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              parsedMessage = (org.apache.mesos.Protos.CgroupInfo.Blkio.Statistics) e.getUnfinishedMessage();
+              throw e;
+            } finally {
+              if (parsedMessage != null) {
+                mergeFrom(parsedMessage);
+              }
+            }
+            return this;
+          }
+          private int bitField0_;
+
+          // repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;
+          private java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics> cfq_ =
+            java.util.Collections.emptyList();
+          private void ensureCfqIsMutable() {
+            if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+              cfq_ = new java.util.ArrayList<org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics>(cfq_);
+              bitField0_ |= 0x00000001;
+             }
+          }
+
+          private com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics, org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder, org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.StatisticsOrBuilder> cfqBuilder_;
+
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+           */
+          public java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics> getCfqList() {
+            if (cfqBuilder_ == null) {
+              return java.util.Collections.unmodifiableList(cfq_);
+            } else {
+              return cfqBuilder_.getMessageList();
+            }
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+           */
+          public int getCfqCount() {
+            if (cfqBuilder_ == null) {
+              return cfq_.size();
+            } else {
+              return cfqBuilder_.getCount();
+            }
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+           */
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics getCfq(int index) {
+            if (cfqBuilder_ == null) {
+              return cfq_.get(index);
+            } else {
+              return cfqBuilder_.getMessage(index);
+            }
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+           */
+          public Builder setCfq(
+              int index, org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics value) {
+            if (cfqBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureCfqIsMutable();
+              cfq_.set(index, value);
+              onChanged();
+            } else {
+              cfqBuilder_.setMessage(index, value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+           */
+          public Builder setCfq(
+              int index, org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder builderForValue) {
+            if (cfqBuilder_ == null) {
+              ensureCfqIsMutable();
+              cfq_.set(index, builderForValue.build());
+              onChanged();
+            } else {
+              cfqBuilder_.setMessage(index, builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+           */
+          public Builder addCfq(org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics value) {
+            if (cfqBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureCfqIsMutable();
+              cfq_.add(value);
+              onChanged();
+            } else {
+              cfqBuilder_.addMessage(value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+           */
+          public Builder addCfq(
+              int index, org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics value) {
+            if (cfqBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureCfqIsMutable();
+              cfq_.add(index, value);
+              onChanged();
+            } else {
+              cfqBuilder_.addMessage(index, value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+           */
+          public Builder addCfq(
+              org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder builderForValue) {
+            if (cfqBuilder_ == null) {
+              ensureCfqIsMutable();
+              cfq_.add(builderForValue.build());
+              onChanged();
+            } else {
+              cfqBuilder_.addMessage(builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+           */
+          public Builder addCfq(
+              int index, org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder builderForValue) {
+            if (cfqBuilder_ == null) {
+              ensureCfqIsMutable();
+              cfq_.add(index, builderForValue.build());
+              onChanged();
+            } else {
+              cfqBuilder_.addMessage(index, builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+           */
+          public Builder addAllCfq(
+              java.lang.Iterable<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics> values) {
+            if (cfqBuilder_ == null) {
+              ensureCfqIsMutable();
+              super.addAll(values, cfq_);
+              onChanged();
+            } else {
+              cfqBuilder_.addAllMessages(values);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+           */
+          public Builder clearCfq() {
+            if (cfqBuilder_ == null) {
+              cfq_ = java.util.Collections.emptyList();
+              bitField0_ = (bitField0_ & ~0x00000001);
+              onChanged();
+            } else {
+              cfqBuilder_.clear();
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+           */
+          public Builder removeCfq(int index) {
+            if (cfqBuilder_ == null) {
+              ensureCfqIsMutable();
+              cfq_.remove(index);
+              onChanged();
+            } else {
+              cfqBuilder_.remove(index);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+           */
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder getCfqBuilder(
+              int index) {
+            return getCfqFieldBuilder().getBuilder(index);
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+           */
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.StatisticsOrBuilder getCfqOrBuilder(
+              int index) {
+            if (cfqBuilder_ == null) {
+              return cfq_.get(index);  } else {
+              return cfqBuilder_.getMessageOrBuilder(index);
+            }
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+           */
+          public java.util.List<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.StatisticsOrBuilder> 
+               getCfqOrBuilderList() {
+            if (cfqBuilder_ != null) {
+              return cfqBuilder_.getMessageOrBuilderList();
+            } else {
+              return java.util.Collections.unmodifiableList(cfq_);
+            }
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+           */
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder addCfqBuilder() {
+            return getCfqFieldBuilder().addBuilder(
+                org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics.getDefaultInstance());
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+           */
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder addCfqBuilder(
+              int index) {
+            return getCfqFieldBuilder().addBuilder(
+                index, org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics.getDefaultInstance());
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+           */
+          public java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder> 
+               getCfqBuilderList() {
+            return getCfqFieldBuilder().getBuilderList();
+          }
+          private com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics, org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder, org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.StatisticsOrBuilder> 
+              getCfqFieldBuilder() {
+            if (cfqBuilder_ == null) {
+              cfqBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                  org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics, org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder, org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.StatisticsOrBuilder>(
+                      cfq_,
+                      ((bitField0_ & 0x00000001) == 0x00000001),
+                      getParentForChildren(),
+                      isClean());
+              cfq_ = null;
+            }
+            return cfqBuilder_;
+          }
+
+          // repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;
+          private java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics> cfqRecursive_ =
+            java.util.Collections.emptyList();
+          private void ensureCfqRecursiveIsMutable() {
+            if (!((bitField0_ & 0x00000002) == 0x00000002)) {
+              cfqRecursive_ = new java.util.ArrayList<org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics>(cfqRecursive_);
+              bitField0_ |= 0x00000002;
+             }
+          }
+
+          private com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics, org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder, org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.StatisticsOrBuilder> cfqRecursiveBuilder_;
+
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+           */
+          public java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics> getCfqRecursiveList() {
+            if (cfqRecursiveBuilder_ == null) {
+              return java.util.Collections.unmodifiableList(cfqRecursive_);
+            } else {
+              return cfqRecursiveBuilder_.getMessageList();
+            }
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+           */
+          public int getCfqRecursiveCount() {
+            if (cfqRecursiveBuilder_ == null) {
+              return cfqRecursive_.size();
+            } else {
+              return cfqRecursiveBuilder_.getCount();
+            }
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+           */
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics getCfqRecursive(int index) {
+            if (cfqRecursiveBuilder_ == null) {
+              return cfqRecursive_.get(index);
+            } else {
+              return cfqRecursiveBuilder_.getMessage(index);
+            }
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+           */
+          public Builder setCfqRecursive(
+              int index, org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics value) {
+            if (cfqRecursiveBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureCfqRecursiveIsMutable();
+              cfqRecursive_.set(index, value);
+              onChanged();
+            } else {
+              cfqRecursiveBuilder_.setMessage(index, value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+           */
+          public Builder setCfqRecursive(
+              int index, org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder builderForValue) {
+            if (cfqRecursiveBuilder_ == null) {
+              ensureCfqRecursiveIsMutable();
+              cfqRecursive_.set(index, builderForValue.build());
+              onChanged();
+            } else {
+              cfqRecursiveBuilder_.setMessage(index, builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+           */
+          public Builder addCfqRecursive(org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics value) {
+            if (cfqRecursiveBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureCfqRecursiveIsMutable();
+              cfqRecursive_.add(value);
+              onChanged();
+            } else {
+              cfqRecursiveBuilder_.addMessage(value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+           */
+          public Builder addCfqRecursive(
+              int index, org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics value) {
+            if (cfqRecursiveBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureCfqRecursiveIsMutable();
+              cfqRecursive_.add(index, value);
+              onChanged();
+            } else {
+              cfqRecursiveBuilder_.addMessage(index, value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+           */
+          public Builder addCfqRecursive(
+              org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder builderForValue) {
+            if (cfqRecursiveBuilder_ == null) {
+              ensureCfqRecursiveIsMutable();
+              cfqRecursive_.add(builderForValue.build());
+              onChanged();
+            } else {
+              cfqRecursiveBuilder_.addMessage(builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+           */
+          public Builder addCfqRecursive(
+              int index, org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder builderForValue) {
+            if (cfqRecursiveBuilder_ == null) {
+              ensureCfqRecursiveIsMutable();
+              cfqRecursive_.add(index, builderForValue.build());
+              onChanged();
+            } else {
+              cfqRecursiveBuilder_.addMessage(index, builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+           */
+          public Builder addAllCfqRecursive(
+              java.lang.Iterable<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics> values) {
+            if (cfqRecursiveBuilder_ == null) {
+              ensureCfqRecursiveIsMutable();
+              super.addAll(values, cfqRecursive_);
+              onChanged();
+            } else {
+              cfqRecursiveBuilder_.addAllMessages(values);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+           */
+          public Builder clearCfqRecursive() {
+            if (cfqRecursiveBuilder_ == null) {
+              cfqRecursive_ = java.util.Collections.emptyList();
+              bitField0_ = (bitField0_ & ~0x00000002);
+              onChanged();
+            } else {
+              cfqRecursiveBuilder_.clear();
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+           */
+          public Builder removeCfqRecursive(int index) {
+            if (cfqRecursiveBuilder_ == null) {
+              ensureCfqRecursiveIsMutable();
+              cfqRecursive_.remove(index);
+              onChanged();
+            } else {
+              cfqRecursiveBuilder_.remove(index);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+           */
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder getCfqRecursiveBuilder(
+              int index) {
+            return getCfqRecursiveFieldBuilder().getBuilder(index);
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+           */
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.StatisticsOrBuilder getCfqRecursiveOrBuilder(
+              int index) {
+            if (cfqRecursiveBuilder_ == null) {
+              return cfqRecursive_.get(index);  } else {
+              return cfqRecursiveBuilder_.getMessageOrBuilder(index);
+            }
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+           */
+          public java.util.List<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.StatisticsOrBuilder> 
+               getCfqRecursiveOrBuilderList() {
+            if (cfqRecursiveBuilder_ != null) {
+              return cfqRecursiveBuilder_.getMessageOrBuilderList();
+            } else {
+              return java.util.Collections.unmodifiableList(cfqRecursive_);
+            }
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+           */
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder addCfqRecursiveBuilder() {
+            return getCfqRecursiveFieldBuilder().addBuilder(
+                org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics.getDefaultInstance());
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+           */
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder addCfqRecursiveBuilder(
+              int index) {
+            return getCfqRecursiveFieldBuilder().addBuilder(
+                index, org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics.getDefaultInstance());
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+           */
+          public java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder> 
+               getCfqRecursiveBuilderList() {
+            return getCfqRecursiveFieldBuilder().getBuilderList();
+          }
+          private com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics, org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder, org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.StatisticsOrBuilder> 
+              getCfqRecursiveFieldBuilder() {
+            if (cfqRecursiveBuilder_ == null) {
+              cfqRecursiveBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                  org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics, org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder, org.apache.mesos.Protos.CgroupInfo.Blkio.CFQ.StatisticsOrBuilder>(
+                      cfqRecursive_,
+                      ((bitField0_ & 0x00000002) == 0x00000002),
+                      getParentForChildren(),
+                      isClean());
+              cfqRecursive_ = null;
+            }
+            return cfqRecursiveBuilder_;
+          }
+
+          // repeated .mesos.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;
+          private java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics> throttling_ =
+            java.util.Collections.emptyList();
+          private void ensureThrottlingIsMutable() {
+            if (!((bitField0_ & 0x00000004) == 0x00000004)) {
+              throttling_ = new java.util.ArrayList<org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics>(throttling_);
+              bitField0_ |= 0x00000004;
+             }
+          }
+
+          private com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics, org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics.Builder, org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.StatisticsOrBuilder> throttlingBuilder_;
+
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+           */
+          public java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics> getThrottlingList() {
+            if (throttlingBuilder_ == null) {
+              return java.util.Collections.unmodifiableList(throttling_);
+            } else {
+              return throttlingBuilder_.getMessageList();
+            }
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+           */
+          public int getThrottlingCount() {
+            if (throttlingBuilder_ == null) {
+              return throttling_.size();
+            } else {
+              return throttlingBuilder_.getCount();
+            }
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+           */
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics getThrottling(int index) {
+            if (throttlingBuilder_ == null) {
+              return throttling_.get(index);
+            } else {
+              return throttlingBuilder_.getMessage(index);
+            }
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+           */
+          public Builder setThrottling(
+              int index, org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics value) {
+            if (throttlingBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureThrottlingIsMutable();
+              throttling_.set(index, value);
+              onChanged();
+            } else {
+              throttlingBuilder_.setMessage(index, value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+           */
+          public Builder setThrottling(
+              int index, org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics.Builder builderForValue) {
+            if (throttlingBuilder_ == null) {
+              ensureThrottlingIsMutable();
+              throttling_.set(index, builderForValue.build());
+              onChanged();
+            } else {
+              throttlingBuilder_.setMessage(index, builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+           */
+          public Builder addThrottling(org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics value) {
+            if (throttlingBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureThrottlingIsMutable();
+              throttling_.add(value);
+              onChanged();
+            } else {
+              throttlingBuilder_.addMessage(value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+           */
+          public Builder addThrottling(
+              int index, org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics value) {
+            if (throttlingBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureThrottlingIsMutable();
+              throttling_.add(index, value);
+              onChanged();
+            } else {
+              throttlingBuilder_.addMessage(index, value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+           */
+          public Builder addThrottling(
+              org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics.Builder builderForValue) {
+            if (throttlingBuilder_ == null) {
+              ensureThrottlingIsMutable();
+              throttling_.add(builderForValue.build());
+              onChanged();
+            } else {
+              throttlingBuilder_.addMessage(builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+           */
+          public Builder addThrottling(
+              int index, org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics.Builder builderForValue) {
+            if (throttlingBuilder_ == null) {
+              ensureThrottlingIsMutable();
+              throttling_.add(index, builderForValue.build());
+              onChanged();
+            } else {
+              throttlingBuilder_.addMessage(index, builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+           */
+          public Builder addAllThrottling(
+              java.lang.Iterable<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics> values) {
+            if (throttlingBuilder_ == null) {
+              ensureThrottlingIsMutable();
+              super.addAll(values, throttling_);
+              onChanged();
+            } else {
+              throttlingBuilder_.addAllMessages(values);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+           */
+          public Builder clearThrottling() {
+            if (throttlingBuilder_ == null) {
+              throttling_ = java.util.Collections.emptyList();
+              bitField0_ = (bitField0_ & ~0x00000004);
+              onChanged();
+            } else {
+              throttlingBuilder_.clear();
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+           */
+          public Builder removeThrottling(int index) {
+            if (throttlingBuilder_ == null) {
+              ensureThrottlingIsMutable();
+              throttling_.remove(index);
+              onChanged();
+            } else {
+              throttlingBuilder_.remove(index);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+           */
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics.Builder getThrottlingBuilder(
+              int index) {
+            return getThrottlingFieldBuilder().getBuilder(index);
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+           */
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.StatisticsOrBuilder getThrottlingOrBuilder(
+              int index) {
+            if (throttlingBuilder_ == null) {
+              return throttling_.get(index);  } else {
+              return throttlingBuilder_.getMessageOrBuilder(index);
+            }
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+           */
+          public java.util.List<? extends org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.StatisticsOrBuilder> 
+               getThrottlingOrBuilderList() {
+            if (throttlingBuilder_ != null) {
+              return throttlingBuilder_.getMessageOrBuilderList();
+            } else {
+              return java.util.Collections.unmodifiableList(throttling_);
+            }
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+           */
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics.Builder addThrottlingBuilder() {
+            return getThrottlingFieldBuilder().addBuilder(
+                org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics.getDefaultInstance());
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+           */
+          public org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics.Builder addThrottlingBuilder(
+              int index) {
+            return getThrottlingFieldBuilder().addBuilder(
+                index, org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics.getDefaultInstance());
+          }
+          /**
+           * <code>repeated .mesos.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+           */
+          public java.util.List<org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics.Builder> 
+               getThrottlingBuilderList() {
+            return getThrottlingFieldBuilder().getBuilderList();
+          }
+          private com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics, org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics.Builder, org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.StatisticsOrBuilder> 
+              getThrottlingFieldBuilder() {
+            if (throttlingBuilder_ == null) {
+              throttlingBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                  org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics, org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.Statistics.Builder, org.apache.mesos.Protos.CgroupInfo.Blkio.Throttling.StatisticsOrBuilder>(
+                      throttling_,
+                      ((bitField0_ & 0x00000004) == 0x00000004),
+                      getParentForChildren(),
+                      isClean());
+              throttling_ = null;
+            }
+            return throttlingBuilder_;
+          }
+
+          // @@protoc_insertion_point(builder_scope:mesos.CgroupInfo.Blkio.Statistics)
+        }
+
+        static {
+          defaultInstance = new Statistics(true);
+          defaultInstance.initFields();
+        }
+
+        // @@protoc_insertion_point(class_scope:mesos.CgroupInfo.Blkio.Statistics)
+      }
+
+      private void initFields() {
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.Protos.CgroupInfo.Blkio parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.CgroupInfo.Blkio parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.CgroupInfo.Blkio parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.CgroupInfo.Blkio parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.CgroupInfo.Blkio parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.CgroupInfo.Blkio parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.CgroupInfo.Blkio parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.Protos.CgroupInfo.Blkio parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.CgroupInfo.Blkio parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.CgroupInfo.Blkio parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.Protos.CgroupInfo.Blkio prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.CgroupInfo.Blkio}
+       *
+       * <pre>
+       * Configuration of a blkio cgroup subsystem.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.Protos.CgroupInfo.BlkioOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_Blkio_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_Blkio_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.CgroupInfo.Blkio.class, org.apache.mesos.Protos.CgroupInfo.Blkio.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.Protos.CgroupInfo.Blkio.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_Blkio_descriptor;
+        }
+
+        public org.apache.mesos.Protos.CgroupInfo.Blkio getDefaultInstanceForType() {
+          return org.apache.mesos.Protos.CgroupInfo.Blkio.getDefaultInstance();
+        }
+
+        public org.apache.mesos.Protos.CgroupInfo.Blkio build() {
+          org.apache.mesos.Protos.CgroupInfo.Blkio result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.Protos.CgroupInfo.Blkio buildPartial() {
+          org.apache.mesos.Protos.CgroupInfo.Blkio result = new org.apache.mesos.Protos.CgroupInfo.Blkio(this);
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.Protos.CgroupInfo.Blkio) {
+            return mergeFrom((org.apache.mesos.Protos.CgroupInfo.Blkio)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.Protos.CgroupInfo.Blkio other) {
+          if (other == org.apache.mesos.Protos.CgroupInfo.Blkio.getDefaultInstance()) return this;
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.Protos.CgroupInfo.Blkio parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.Protos.CgroupInfo.Blkio) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.CgroupInfo.Blkio)
+      }
+
+      static {
+        defaultInstance = new Blkio(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.CgroupInfo.Blkio)
+    }
+
+    public interface NetClsOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // optional uint32 classid = 1;
+      /**
+       * <code>optional uint32 classid = 1;</code>
+       *
+       * <pre>
+       * The 32-bit classid consists of two parts, a 16 bit major handle
+       * and a 16-bit minor handle. The major and minor handle are
+       * represented using the format 0xAAAABBBB, where 0xAAAA is the
+       * 16-bit major handle and 0xBBBB is the 16-bit minor handle.
+       * </pre>
+       */
+      boolean hasClassid();
+      /**
+       * <code>optional uint32 classid = 1;</code>
+       *
+       * <pre>
+       * The 32-bit classid consists of two parts, a 16 bit major handle
+       * and a 16-bit minor handle. The major and minor handle are
+       * represented using the format 0xAAAABBBB, where 0xAAAA is the
+       * 16-bit major handle and 0xBBBB is the 16-bit minor handle.
+       * </pre>
+       */
+      int getClassid();
+    }
+    /**
+     * Protobuf type {@code mesos.CgroupInfo.NetCls}
+     *
+     * <pre>
+     * Configuration of a net_cls cgroup subsystem.
+     * </pre>
+     */
+    public static final class NetCls extends
+        com.google.protobuf.GeneratedMessage
+        implements NetClsOrBuilder {
+      // Use NetCls.newBuilder() to construct.
+      private NetCls(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private NetCls(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final NetCls defaultInstance;
+      public static NetCls getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public NetCls getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private NetCls(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 8: {
+                bitField0_ |= 0x00000001;
+                classid_ = input.readUInt32();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_NetCls_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_NetCls_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.CgroupInfo.NetCls.class, org.apache.mesos.Protos.CgroupInfo.NetCls.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<NetCls> PARSER =
+          new com.google.protobuf.AbstractParser<NetCls>() {
+        public NetCls parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new NetCls(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<NetCls> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // optional uint32 classid = 1;
+      public static final int CLASSID_FIELD_NUMBER = 1;
+      private int classid_;
+      /**
+       * <code>optional uint32 classid = 1;</code>
+       *
+       * <pre>
+       * The 32-bit classid consists of two parts, a 16 bit major handle
+       * and a 16-bit minor handle. The major and minor handle are
+       * represented using the format 0xAAAABBBB, where 0xAAAA is the
+       * 16-bit major handle and 0xBBBB is the 16-bit minor handle.
+       * </pre>
+       */
+      public boolean hasClassid() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional uint32 classid = 1;</code>
+       *
+       * <pre>
+       * The 32-bit classid consists of two parts, a 16 bit major handle
+       * and a 16-bit minor handle. The major and minor handle are
+       * represented using the format 0xAAAABBBB, where 0xAAAA is the
+       * 16-bit major handle and 0xBBBB is the 16-bit minor handle.
+       * </pre>
+       */
+      public int getClassid() {
+        return classid_;
+      }
+
+      private void initFields() {
+        classid_ = 0;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeUInt32(1, classid_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeUInt32Size(1, classid_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.Protos.CgroupInfo.NetCls parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.CgroupInfo.NetCls parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.CgroupInfo.NetCls parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.CgroupInfo.NetCls parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.CgroupInfo.NetCls parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.CgroupInfo.NetCls parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.CgroupInfo.NetCls parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.Protos.CgroupInfo.NetCls parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.CgroupInfo.NetCls parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.CgroupInfo.NetCls parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.Protos.CgroupInfo.NetCls prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.CgroupInfo.NetCls}
+       *
+       * <pre>
+       * Configuration of a net_cls cgroup subsystem.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.Protos.CgroupInfo.NetClsOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_NetCls_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_NetCls_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.CgroupInfo.NetCls.class, org.apache.mesos.Protos.CgroupInfo.NetCls.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.Protos.CgroupInfo.NetCls.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          classid_ = 0;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_NetCls_descriptor;
+        }
+
+        public org.apache.mesos.Protos.CgroupInfo.NetCls getDefaultInstanceForType() {
+          return org.apache.mesos.Protos.CgroupInfo.NetCls.getDefaultInstance();
+        }
+
+        public org.apache.mesos.Protos.CgroupInfo.NetCls build() {
+          org.apache.mesos.Protos.CgroupInfo.NetCls result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.Protos.CgroupInfo.NetCls buildPartial() {
+          org.apache.mesos.Protos.CgroupInfo.NetCls result = new org.apache.mesos.Protos.CgroupInfo.NetCls(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.classid_ = classid_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.Protos.CgroupInfo.NetCls) {
+            return mergeFrom((org.apache.mesos.Protos.CgroupInfo.NetCls)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.Protos.CgroupInfo.NetCls other) {
+          if (other == org.apache.mesos.Protos.CgroupInfo.NetCls.getDefaultInstance()) return this;
+          if (other.hasClassid()) {
+            setClassid(other.getClassid());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.Protos.CgroupInfo.NetCls parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.Protos.CgroupInfo.NetCls) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // optional uint32 classid = 1;
+        private int classid_ ;
+        /**
+         * <code>optional uint32 classid = 1;</code>
+         *
+         * <pre>
+         * The 32-bit classid consists of two parts, a 16 bit major handle
+         * and a 16-bit minor handle. The major and minor handle are
+         * represented using the format 0xAAAABBBB, where 0xAAAA is the
+         * 16-bit major handle and 0xBBBB is the 16-bit minor handle.
+         * </pre>
+         */
+        public boolean hasClassid() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional uint32 classid = 1;</code>
+         *
+         * <pre>
+         * The 32-bit classid consists of two parts, a 16 bit major handle
+         * and a 16-bit minor handle. The major and minor handle are
+         * represented using the format 0xAAAABBBB, where 0xAAAA is the
+         * 16-bit major handle and 0xBBBB is the 16-bit minor handle.
+         * </pre>
+         */
+        public int getClassid() {
+          return classid_;
+        }
+        /**
+         * <code>optional uint32 classid = 1;</code>
+         *
+         * <pre>
+         * The 32-bit classid consists of two parts, a 16 bit major handle
+         * and a 16-bit minor handle. The major and minor handle are
+         * represented using the format 0xAAAABBBB, where 0xAAAA is the
+         * 16-bit major handle and 0xBBBB is the 16-bit minor handle.
+         * </pre>
+         */
+        public Builder setClassid(int value) {
+          bitField0_ |= 0x00000001;
+          classid_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional uint32 classid = 1;</code>
+         *
+         * <pre>
+         * The 32-bit classid consists of two parts, a 16 bit major handle
+         * and a 16-bit minor handle. The major and minor handle are
+         * represented using the format 0xAAAABBBB, where 0xAAAA is the
+         * 16-bit major handle and 0xBBBB is the 16-bit minor handle.
+         * </pre>
+         */
+        public Builder clearClassid() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          classid_ = 0;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.CgroupInfo.NetCls)
+      }
+
+      static {
+        defaultInstance = new NetCls(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.CgroupInfo.NetCls)
+    }
+
+    private int bitField0_;
+    // optional .mesos.CgroupInfo.NetCls net_cls = 1;
+    public static final int NET_CLS_FIELD_NUMBER = 1;
+    private org.apache.mesos.Protos.CgroupInfo.NetCls netCls_;
+    /**
+     * <code>optional .mesos.CgroupInfo.NetCls net_cls = 1;</code>
+     */
+    public boolean hasNetCls() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional .mesos.CgroupInfo.NetCls net_cls = 1;</code>
+     */
+    public org.apache.mesos.Protos.CgroupInfo.NetCls getNetCls() {
+      return netCls_;
+    }
+    /**
+     * <code>optional .mesos.CgroupInfo.NetCls net_cls = 1;</code>
+     */
+    public org.apache.mesos.Protos.CgroupInfo.NetClsOrBuilder getNetClsOrBuilder() {
+      return netCls_;
+    }
+
+    private void initFields() {
+      netCls_ = org.apache.mesos.Protos.CgroupInfo.NetCls.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeMessage(1, netCls_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, netCls_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.CgroupInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.CgroupInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.CgroupInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.CgroupInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.CgroupInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.CgroupInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.CgroupInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.CgroupInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.CgroupInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.CgroupInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.CgroupInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.CgroupInfo}
+     *
+     * <pre>
+     **
+     * Linux control group (cgroup) information.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.CgroupInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.CgroupInfo.class, org.apache.mesos.Protos.CgroupInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.CgroupInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getNetClsFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (netClsBuilder_ == null) {
+          netCls_ = org.apache.mesos.Protos.CgroupInfo.NetCls.getDefaultInstance();
+        } else {
+          netClsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_CgroupInfo_descriptor;
+      }
+
+      public org.apache.mesos.Protos.CgroupInfo getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.CgroupInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.CgroupInfo build() {
+        org.apache.mesos.Protos.CgroupInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.CgroupInfo buildPartial() {
+        org.apache.mesos.Protos.CgroupInfo result = new org.apache.mesos.Protos.CgroupInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        if (netClsBuilder_ == null) {
+          result.netCls_ = netCls_;
+        } else {
+          result.netCls_ = netClsBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.CgroupInfo) {
+          return mergeFrom((org.apache.mesos.Protos.CgroupInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.CgroupInfo other) {
+        if (other == org.apache.mesos.Protos.CgroupInfo.getDefaultInstance()) return this;
+        if (other.hasNetCls()) {
+          mergeNetCls(other.getNetCls());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.CgroupInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.CgroupInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional .mesos.CgroupInfo.NetCls net_cls = 1;
+      private org.apache.mesos.Protos.CgroupInfo.NetCls netCls_ = org.apache.mesos.Protos.CgroupInfo.NetCls.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.CgroupInfo.NetCls, org.apache.mesos.Protos.CgroupInfo.NetCls.Builder, org.apache.mesos.Protos.CgroupInfo.NetClsOrBuilder> netClsBuilder_;
+      /**
+       * <code>optional .mesos.CgroupInfo.NetCls net_cls = 1;</code>
+       */
+      public boolean hasNetCls() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.CgroupInfo.NetCls net_cls = 1;</code>
+       */
+      public org.apache.mesos.Protos.CgroupInfo.NetCls getNetCls() {
+        if (netClsBuilder_ == null) {
+          return netCls_;
+        } else {
+          return netClsBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.CgroupInfo.NetCls net_cls = 1;</code>
+       */
+      public Builder setNetCls(org.apache.mesos.Protos.CgroupInfo.NetCls value) {
+        if (netClsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          netCls_ = value;
+          onChanged();
+        } else {
+          netClsBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CgroupInfo.NetCls net_cls = 1;</code>
+       */
+      public Builder setNetCls(
+          org.apache.mesos.Protos.CgroupInfo.NetCls.Builder builderForValue) {
+        if (netClsBuilder_ == null) {
+          netCls_ = builderForValue.build();
+          onChanged();
+        } else {
+          netClsBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CgroupInfo.NetCls net_cls = 1;</code>
+       */
+      public Builder mergeNetCls(org.apache.mesos.Protos.CgroupInfo.NetCls value) {
+        if (netClsBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001) &&
+              netCls_ != org.apache.mesos.Protos.CgroupInfo.NetCls.getDefaultInstance()) {
+            netCls_ =
+              org.apache.mesos.Protos.CgroupInfo.NetCls.newBuilder(netCls_).mergeFrom(value).buildPartial();
+          } else {
+            netCls_ = value;
+          }
+          onChanged();
+        } else {
+          netClsBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CgroupInfo.NetCls net_cls = 1;</code>
+       */
+      public Builder clearNetCls() {
+        if (netClsBuilder_ == null) {
+          netCls_ = org.apache.mesos.Protos.CgroupInfo.NetCls.getDefaultInstance();
+          onChanged();
+        } else {
+          netClsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.CgroupInfo.NetCls net_cls = 1;</code>
+       */
+      public org.apache.mesos.Protos.CgroupInfo.NetCls.Builder getNetClsBuilder() {
+        bitField0_ |= 0x00000001;
+        onChanged();
+        return getNetClsFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.CgroupInfo.NetCls net_cls = 1;</code>
+       */
+      public org.apache.mesos.Protos.CgroupInfo.NetClsOrBuilder getNetClsOrBuilder() {
+        if (netClsBuilder_ != null) {
+          return netClsBuilder_.getMessageOrBuilder();
+        } else {
+          return netCls_;
+        }
+      }
+      /**
+       * <code>optional .mesos.CgroupInfo.NetCls net_cls = 1;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.CgroupInfo.NetCls, org.apache.mesos.Protos.CgroupInfo.NetCls.Builder, org.apache.mesos.Protos.CgroupInfo.NetClsOrBuilder> 
+          getNetClsFieldBuilder() {
+        if (netClsBuilder_ == null) {
+          netClsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.CgroupInfo.NetCls, org.apache.mesos.Protos.CgroupInfo.NetCls.Builder, org.apache.mesos.Protos.CgroupInfo.NetClsOrBuilder>(
+                  netCls_,
+                  getParentForChildren(),
+                  isClean());
+          netCls_ = null;
+        }
+        return netClsBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.CgroupInfo)
+    }
+
+    static {
+      defaultInstance = new CgroupInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.CgroupInfo)
+  }
+
+  public interface LabelsOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // repeated .mesos.Label labels = 1;
+    /**
+     * <code>repeated .mesos.Label labels = 1;</code>
+     */
+    java.util.List<org.apache.mesos.Protos.Label> 
+        getLabelsList();
+    /**
+     * <code>repeated .mesos.Label labels = 1;</code>
+     */
+    org.apache.mesos.Protos.Label getLabels(int index);
+    /**
+     * <code>repeated .mesos.Label labels = 1;</code>
+     */
+    int getLabelsCount();
+    /**
+     * <code>repeated .mesos.Label labels = 1;</code>
+     */
+    java.util.List<? extends org.apache.mesos.Protos.LabelOrBuilder> 
+        getLabelsOrBuilderList();
+    /**
+     * <code>repeated .mesos.Label labels = 1;</code>
+     */
+    org.apache.mesos.Protos.LabelOrBuilder getLabelsOrBuilder(
+        int index);
+  }
+  /**
+   * Protobuf type {@code mesos.Labels}
+   *
+   * <pre>
+   **
+   * Collection of labels. Labels should not contain duplicate key-value
+   * pairs.
+   * </pre>
+   */
+  public static final class Labels extends
+      com.google.protobuf.GeneratedMessage
+      implements LabelsOrBuilder {
+    // Use Labels.newBuilder() to construct.
+    private Labels(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Labels(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Labels defaultInstance;
+    public static Labels getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Labels getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Labels(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                labels_ = new java.util.ArrayList<org.apache.mesos.Protos.Label>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              labels_.add(input.readMessage(org.apache.mesos.Protos.Label.PARSER, extensionRegistry));
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+          labels_ = java.util.Collections.unmodifiableList(labels_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_Labels_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_Labels_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.Labels.class, org.apache.mesos.Protos.Labels.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Labels> PARSER =
+        new com.google.protobuf.AbstractParser<Labels>() {
+      public Labels parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Labels(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Labels> getParserForType() {
+      return PARSER;
+    }
+
+    // repeated .mesos.Label labels = 1;
+    public static final int LABELS_FIELD_NUMBER = 1;
+    private java.util.List<org.apache.mesos.Protos.Label> labels_;
+    /**
+     * <code>repeated .mesos.Label labels = 1;</code>
+     */
+    public java.util.List<org.apache.mesos.Protos.Label> getLabelsList() {
+      return labels_;
+    }
+    /**
+     * <code>repeated .mesos.Label labels = 1;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.Protos.LabelOrBuilder> 
+        getLabelsOrBuilderList() {
+      return labels_;
+    }
+    /**
+     * <code>repeated .mesos.Label labels = 1;</code>
+     */
+    public int getLabelsCount() {
+      return labels_.size();
+    }
+    /**
+     * <code>repeated .mesos.Label labels = 1;</code>
+     */
+    public org.apache.mesos.Protos.Label getLabels(int index) {
+      return labels_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.Label labels = 1;</code>
+     */
+    public org.apache.mesos.Protos.LabelOrBuilder getLabelsOrBuilder(
+        int index) {
+      return labels_.get(index);
+    }
+
+    private void initFields() {
+      labels_ = java.util.Collections.emptyList();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      for (int i = 0; i < getLabelsCount(); i++) {
+        if (!getLabels(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      for (int i = 0; i < labels_.size(); i++) {
+        output.writeMessage(1, labels_.get(i));
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      for (int i = 0; i < labels_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, labels_.get(i));
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.Labels parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Labels parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Labels parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Labels parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Labels parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Labels parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Labels parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.Labels parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Labels parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Labels parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.Labels prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.Labels}
+     *
+     * <pre>
+     **
+     * Collection of labels. Labels should not contain duplicate key-value
+     * pairs.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.LabelsOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_Labels_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_Labels_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.Labels.class, org.apache.mesos.Protos.Labels.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.Labels.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getLabelsFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (labelsBuilder_ == null) {
+          labels_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+        } else {
+          labelsBuilder_.clear();
+        }
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_Labels_descriptor;
+      }
+
+      public org.apache.mesos.Protos.Labels getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.Labels.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.Labels build() {
+        org.apache.mesos.Protos.Labels result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.Labels buildPartial() {
+        org.apache.mesos.Protos.Labels result = new org.apache.mesos.Protos.Labels(this);
+        int from_bitField0_ = bitField0_;
+        if (labelsBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            labels_ = java.util.Collections.unmodifiableList(labels_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.labels_ = labels_;
+        } else {
+          result.labels_ = labelsBuilder_.build();
+        }
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.Labels) {
+          return mergeFrom((org.apache.mesos.Protos.Labels)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.Labels other) {
+        if (other == org.apache.mesos.Protos.Labels.getDefaultInstance()) return this;
+        if (labelsBuilder_ == null) {
+          if (!other.labels_.isEmpty()) {
+            if (labels_.isEmpty()) {
+              labels_ = other.labels_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureLabelsIsMutable();
+              labels_.addAll(other.labels_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.labels_.isEmpty()) {
+            if (labelsBuilder_.isEmpty()) {
+              labelsBuilder_.dispose();
+              labelsBuilder_ = null;
+              labels_ = other.labels_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              labelsBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getLabelsFieldBuilder() : null;
+            } else {
+              labelsBuilder_.addAllMessages(other.labels_);
+            }
+          }
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        for (int i = 0; i < getLabelsCount(); i++) {
+          if (!getLabels(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.Labels parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.Labels) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // repeated .mesos.Label labels = 1;
+      private java.util.List<org.apache.mesos.Protos.Label> labels_ =
+        java.util.Collections.emptyList();
+      private void ensureLabelsIsMutable() {
+        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+          labels_ = new java.util.ArrayList<org.apache.mesos.Protos.Label>(labels_);
+          bitField0_ |= 0x00000001;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.Label, org.apache.mesos.Protos.Label.Builder, org.apache.mesos.Protos.LabelOrBuilder> labelsBuilder_;
+
+      /**
+       * <code>repeated .mesos.Label labels = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.Label> getLabelsList() {
+        if (labelsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(labels_);
+        } else {
+          return labelsBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.Label labels = 1;</code>
+       */
+      public int getLabelsCount() {
+        if (labelsBuilder_ == null) {
+          return labels_.size();
+        } else {
+          return labelsBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.Label labels = 1;</code>
+       */
+      public org.apache.mesos.Protos.Label getLabels(int index) {
+        if (labelsBuilder_ == null) {
+          return labels_.get(index);
+        } else {
+          return labelsBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Label labels = 1;</code>
+       */
+      public Builder setLabels(
+          int index, org.apache.mesos.Protos.Label value) {
+        if (labelsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureLabelsIsMutable();
+          labels_.set(index, value);
+          onChanged();
+        } else {
+          labelsBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Label labels = 1;</code>
+       */
+      public Builder setLabels(
+          int index, org.apache.mesos.Protos.Label.Builder builderForValue) {
+        if (labelsBuilder_ == null) {
+          ensureLabelsIsMutable();
+          labels_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          labelsBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Label labels = 1;</code>
+       */
+      public Builder addLabels(org.apache.mesos.Protos.Label value) {
+        if (labelsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureLabelsIsMutable();
+          labels_.add(value);
+          onChanged();
+        } else {
+          labelsBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Label labels = 1;</code>
+       */
+      public Builder addLabels(
+          int index, org.apache.mesos.Protos.Label value) {
+        if (labelsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureLabelsIsMutable();
+          labels_.add(index, value);
+          onChanged();
+        } else {
+          labelsBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Label labels = 1;</code>
+       */
+      public Builder addLabels(
+          org.apache.mesos.Protos.Label.Builder builderForValue) {
+        if (labelsBuilder_ == null) {
+          ensureLabelsIsMutable();
+          labels_.add(builderForValue.build());
+          onChanged();
+        } else {
+          labelsBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Label labels = 1;</code>
+       */
+      public Builder addLabels(
+          int index, org.apache.mesos.Protos.Label.Builder builderForValue) {
+        if (labelsBuilder_ == null) {
+          ensureLabelsIsMutable();
+          labels_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          labelsBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Label labels = 1;</code>
+       */
+      public Builder addAllLabels(
+          java.lang.Iterable<? extends org.apache.mesos.Protos.Label> values) {
+        if (labelsBuilder_ == null) {
+          ensureLabelsIsMutable();
+          super.addAll(values, labels_);
+          onChanged();
+        } else {
+          labelsBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Label labels = 1;</code>
+       */
+      public Builder clearLabels() {
+        if (labelsBuilder_ == null) {
+          labels_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+        } else {
+          labelsBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Label labels = 1;</code>
+       */
+      public Builder removeLabels(int index) {
+        if (labelsBuilder_ == null) {
+          ensureLabelsIsMutable();
+          labels_.remove(index);
+          onChanged();
+        } else {
+          labelsBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Label labels = 1;</code>
+       */
+      public org.apache.mesos.Protos.Label.Builder getLabelsBuilder(
+          int index) {
+        return getLabelsFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.Label labels = 1;</code>
+       */
+      public org.apache.mesos.Protos.LabelOrBuilder getLabelsOrBuilder(
+          int index) {
+        if (labelsBuilder_ == null) {
+          return labels_.get(index);  } else {
+          return labelsBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Label labels = 1;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.LabelOrBuilder> 
+           getLabelsOrBuilderList() {
+        if (labelsBuilder_ != null) {
+          return labelsBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(labels_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Label labels = 1;</code>
+       */
+      public org.apache.mesos.Protos.Label.Builder addLabelsBuilder() {
+        return getLabelsFieldBuilder().addBuilder(
+            org.apache.mesos.Protos.Label.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.Label labels = 1;</code>
+       */
+      public org.apache.mesos.Protos.Label.Builder addLabelsBuilder(
+          int index) {
+        return getLabelsFieldBuilder().addBuilder(
+            index, org.apache.mesos.Protos.Label.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.Label labels = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.Label.Builder> 
+           getLabelsBuilderList() {
+        return getLabelsFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.Label, org.apache.mesos.Protos.Label.Builder, org.apache.mesos.Protos.LabelOrBuilder> 
+          getLabelsFieldBuilder() {
+        if (labelsBuilder_ == null) {
+          labelsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.Label, org.apache.mesos.Protos.Label.Builder, org.apache.mesos.Protos.LabelOrBuilder>(
+                  labels_,
+                  ((bitField0_ & 0x00000001) == 0x00000001),
+                  getParentForChildren(),
+                  isClean());
+          labels_ = null;
+        }
+        return labelsBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.Labels)
+    }
+
+    static {
+      defaultInstance = new Labels(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.Labels)
+  }
+
+  public interface LabelOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string key = 1;
+    /**
+     * <code>required string key = 1;</code>
+     */
+    boolean hasKey();
+    /**
+     * <code>required string key = 1;</code>
+     */
+    java.lang.String getKey();
+    /**
+     * <code>required string key = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getKeyBytes();
+
+    // optional string value = 2;
+    /**
+     * <code>optional string value = 2;</code>
+     */
+    boolean hasValue();
+    /**
+     * <code>optional string value = 2;</code>
+     */
+    java.lang.String getValue();
+    /**
+     * <code>optional string value = 2;</code>
+     */
+    com.google.protobuf.ByteString
+        getValueBytes();
+  }
+  /**
+   * Protobuf type {@code mesos.Label}
+   *
+   * <pre>
+   **
+   * Key, value pair used to store free form user-data.
+   * </pre>
+   */
+  public static final class Label extends
+      com.google.protobuf.GeneratedMessage
+      implements LabelOrBuilder {
+    // Use Label.newBuilder() to construct.
+    private Label(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Label(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Label defaultInstance;
+    public static Label getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Label getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Label(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              key_ = input.readBytes();
+              break;
+            }
+            case 18: {
+              bitField0_ |= 0x00000002;
+              value_ = input.readBytes();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_Label_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_Label_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.Label.class, org.apache.mesos.Protos.Label.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Label> PARSER =
+        new com.google.protobuf.AbstractParser<Label>() {
+      public Label parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Label(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Label> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string key = 1;
+    public static final int KEY_FIELD_NUMBER = 1;
+    private java.lang.Object key_;
+    /**
+     * <code>required string key = 1;</code>
+     */
+    public boolean hasKey() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string key = 1;</code>
+     */
+    public java.lang.String getKey() {
+      java.lang.Object ref = key_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          key_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string key = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getKeyBytes() {
+      java.lang.Object ref = key_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        key_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional string value = 2;
+    public static final int VALUE_FIELD_NUMBER = 2;
+    private java.lang.Object value_;
+    /**
+     * <code>optional string value = 2;</code>
+     */
+    public boolean hasValue() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional string value = 2;</code>
+     */
+    public java.lang.String getValue() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          value_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string value = 2;</code>
+     */
+    public com.google.protobuf.ByteString
+        getValueBytes() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        value_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      key_ = "";
+      value_ = "";
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasKey()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getKeyBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(2, getValueBytes());
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getKeyBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(2, getValueBytes());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.Label parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Label parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Label parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Label parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Label parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Label parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Label parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.Label parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Label parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Label parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.Label prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.Label}
+     *
+     * <pre>
+     **
+     * Key, value pair used to store free form user-data.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.LabelOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_Label_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_Label_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.Label.class, org.apache.mesos.Protos.Label.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.Label.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        key_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        value_ = "";
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_Label_descriptor;
+      }
+
+      public org.apache.mesos.Protos.Label getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.Label.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.Label build() {
+        org.apache.mesos.Protos.Label result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.Label buildPartial() {
+        org.apache.mesos.Protos.Label result = new org.apache.mesos.Protos.Label(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.key_ = key_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.value_ = value_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.Label) {
+          return mergeFrom((org.apache.mesos.Protos.Label)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.Label other) {
+        if (other == org.apache.mesos.Protos.Label.getDefaultInstance()) return this;
+        if (other.hasKey()) {
+          bitField0_ |= 0x00000001;
+          key_ = other.key_;
+          onChanged();
+        }
+        if (other.hasValue()) {
+          bitField0_ |= 0x00000002;
+          value_ = other.value_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasKey()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.Label parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.Label) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string key = 1;
+      private java.lang.Object key_ = "";
+      /**
+       * <code>required string key = 1;</code>
+       */
+      public boolean hasKey() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string key = 1;</code>
+       */
+      public java.lang.String getKey() {
+        java.lang.Object ref = key_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          key_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string key = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getKeyBytes() {
+        java.lang.Object ref = key_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          key_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string key = 1;</code>
+       */
+      public Builder setKey(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        key_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string key = 1;</code>
+       */
+      public Builder clearKey() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        key_ = getDefaultInstance().getKey();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string key = 1;</code>
+       */
+      public Builder setKeyBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        key_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional string value = 2;
+      private java.lang.Object value_ = "";
+      /**
+       * <code>optional string value = 2;</code>
+       */
+      public boolean hasValue() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional string value = 2;</code>
+       */
+      public java.lang.String getValue() {
+        java.lang.Object ref = value_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          value_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string value = 2;</code>
+       */
+      public com.google.protobuf.ByteString
+          getValueBytes() {
+        java.lang.Object ref = value_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          value_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string value = 2;</code>
+       */
+      public Builder setValue(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string value = 2;</code>
+       */
+      public Builder clearValue() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        value_ = getDefaultInstance().getValue();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string value = 2;</code>
+       */
+      public Builder setValueBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.Label)
+    }
+
+    static {
+      defaultInstance = new Label(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.Label)
+  }
+
+  public interface PortOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required uint32 number = 1;
+    /**
+     * <code>required uint32 number = 1;</code>
+     *
+     * <pre>
+     * Port number on which the framework exposes a service.
+     * </pre>
+     */
+    boolean hasNumber();
+    /**
+     * <code>required uint32 number = 1;</code>
+     *
+     * <pre>
+     * Port number on which the framework exposes a service.
+     * </pre>
+     */
+    int getNumber();
+
+    // optional string name = 2;
+    /**
+     * <code>optional string name = 2;</code>
+     *
+     * <pre>
+     * Name of the service hosted on this port.
+     * </pre>
+     */
+    boolean hasName();
+    /**
+     * <code>optional string name = 2;</code>
+     *
+     * <pre>
+     * Name of the service hosted on this port.
+     * </pre>
+     */
+    java.lang.String getName();
+    /**
+     * <code>optional string name = 2;</code>
+     *
+     * <pre>
+     * Name of the service hosted on this port.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getNameBytes();
+
+    // optional string protocol = 3;
+    /**
+     * <code>optional string protocol = 3;</code>
+     *
+     * <pre>
+     * Layer 4-7 protocol on which the framework exposes its services.
+     * </pre>
+     */
+    boolean hasProtocol();
+    /**
+     * <code>optional string protocol = 3;</code>
+     *
+     * <pre>
+     * Layer 4-7 protocol on which the framework exposes its services.
+     * </pre>
+     */
+    java.lang.String getProtocol();
+    /**
+     * <code>optional string protocol = 3;</code>
+     *
+     * <pre>
+     * Layer 4-7 protocol on which the framework exposes its services.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getProtocolBytes();
+
+    // optional .mesos.DiscoveryInfo.Visibility visibility = 4;
+    /**
+     * <code>optional .mesos.DiscoveryInfo.Visibility visibility = 4;</code>
+     *
+     * <pre>
+     * This field restricts discovery within a framework (FRAMEWORK),
+     * within a Mesos cluster (CLUSTER), or places no restrictions (EXTERNAL).
+     * The visibility setting for a Port overrides the general visibility setting
+     * in the DiscoveryInfo.
+     * </pre>
+     */
+    boolean hasVisibility();
+    /**
+     * <code>optional .mesos.DiscoveryInfo.Visibility visibility = 4;</code>
+     *
+     * <pre>
+     * This field restricts discovery within a framework (FRAMEWORK),
+     * within a Mesos cluster (CLUSTER), or places no restrictions (EXTERNAL).
+     * The visibility setting for a Port overrides the general visibility setting
+     * in the DiscoveryInfo.
+     * </pre>
+     */
+    org.apache.mesos.Protos.DiscoveryInfo.Visibility getVisibility();
+
+    // optional .mesos.Labels labels = 5;
+    /**
+     * <code>optional .mesos.Labels labels = 5;</code>
+     *
+     * <pre>
+     * This can be used to decorate the message with metadata to be
+     * interpreted by external applications such as firewalls.
+     * </pre>
+     */
+    boolean hasLabels();
+    /**
+     * <code>optional .mesos.Labels labels = 5;</code>
+     *
+     * <pre>
+     * This can be used to decorate the message with metadata to be
+     * interpreted by external applications such as firewalls.
+     * </pre>
+     */
+    org.apache.mesos.Protos.Labels getLabels();
+    /**
+     * <code>optional .mesos.Labels labels = 5;</code>
+     *
+     * <pre>
+     * This can be used to decorate the message with metadata to be
+     * interpreted by external applications such as firewalls.
+     * </pre>
+     */
+    org.apache.mesos.Protos.LabelsOrBuilder getLabelsOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.Port}
+   *
+   * <pre>
+   **
+   * Named port used for service discovery.
+   * </pre>
+   */
+  public static final class Port extends
+      com.google.protobuf.GeneratedMessage
+      implements PortOrBuilder {
+    // Use Port.newBuilder() to construct.
+    private Port(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Port(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Port defaultInstance;
+    public static Port getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Port getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Port(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 8: {
+              bitField0_ |= 0x00000001;
+              number_ = input.readUInt32();
+              break;
+            }
+            case 18: {
+              bitField0_ |= 0x00000002;
+              name_ = input.readBytes();
+              break;
+            }
+            case 26: {
+              bitField0_ |= 0x00000004;
+              protocol_ = input.readBytes();
+              break;
+            }
+            case 32: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.Protos.DiscoveryInfo.Visibility value = org.apache.mesos.Protos.DiscoveryInfo.Visibility.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(4, rawValue);
+              } else {
+                bitField0_ |= 0x00000008;
+                visibility_ = value;
+              }
+              break;
+            }
+            case 42: {
+              org.apache.mesos.Protos.Labels.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000010) == 0x00000010)) {
+                subBuilder = labels_.toBuilder();
+              }
+              labels_ = input.readMessage(org.apache.mesos.Protos.Labels.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(labels_);
+                labels_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000010;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_Port_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_Port_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.Port.class, org.apache.mesos.Protos.Port.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Port> PARSER =
+        new com.google.protobuf.AbstractParser<Port>() {
+      public Port parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Port(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Port> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required uint32 number = 1;
+    public static final int NUMBER_FIELD_NUMBER = 1;
+    private int number_;
+    /**
+     * <code>required uint32 number = 1;</code>
+     *
+     * <pre>
+     * Port number on which the framework exposes a service.
+     * </pre>
+     */
+    public boolean hasNumber() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required uint32 number = 1;</code>
+     *
+     * <pre>
+     * Port number on which the framework exposes a service.
+     * </pre>
+     */
+    public int getNumber() {
+      return number_;
+    }
+
+    // optional string name = 2;
+    public static final int NAME_FIELD_NUMBER = 2;
+    private java.lang.Object name_;
+    /**
+     * <code>optional string name = 2;</code>
+     *
+     * <pre>
+     * Name of the service hosted on this port.
+     * </pre>
+     */
+    public boolean hasName() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional string name = 2;</code>
+     *
+     * <pre>
+     * Name of the service hosted on this port.
+     * </pre>
+     */
+    public java.lang.String getName() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          name_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string name = 2;</code>
+     *
+     * <pre>
+     * Name of the service hosted on this port.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getNameBytes() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        name_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional string protocol = 3;
+    public static final int PROTOCOL_FIELD_NUMBER = 3;
+    private java.lang.Object protocol_;
+    /**
+     * <code>optional string protocol = 3;</code>
+     *
+     * <pre>
+     * Layer 4-7 protocol on which the framework exposes its services.
+     * </pre>
+     */
+    public boolean hasProtocol() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional string protocol = 3;</code>
+     *
+     * <pre>
+     * Layer 4-7 protocol on which the framework exposes its services.
+     * </pre>
+     */
+    public java.lang.String getProtocol() {
+      java.lang.Object ref = protocol_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          protocol_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string protocol = 3;</code>
+     *
+     * <pre>
+     * Layer 4-7 protocol on which the framework exposes its services.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getProtocolBytes() {
+      java.lang.Object ref = protocol_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        protocol_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional .mesos.DiscoveryInfo.Visibility visibility = 4;
+    public static final int VISIBILITY_FIELD_NUMBER = 4;
+    private org.apache.mesos.Protos.DiscoveryInfo.Visibility visibility_;
+    /**
+     * <code>optional .mesos.DiscoveryInfo.Visibility visibility = 4;</code>
+     *
+     * <pre>
+     * This field restricts discovery within a framework (FRAMEWORK),
+     * within a Mesos cluster (CLUSTER), or places no restrictions (EXTERNAL).
+     * The visibility setting for a Port overrides the general visibility setting
+     * in the DiscoveryInfo.
+     * </pre>
+     */
+    public boolean hasVisibility() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional .mesos.DiscoveryInfo.Visibility visibility = 4;</code>
+     *
+     * <pre>
+     * This field restricts discovery within a framework (FRAMEWORK),
+     * within a Mesos cluster (CLUSTER), or places no restrictions (EXTERNAL).
+     * The visibility setting for a Port overrides the general visibility setting
+     * in the DiscoveryInfo.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.DiscoveryInfo.Visibility getVisibility() {
+      return visibility_;
+    }
+
+    // optional .mesos.Labels labels = 5;
+    public static final int LABELS_FIELD_NUMBER = 5;
+    private org.apache.mesos.Protos.Labels labels_;
+    /**
+     * <code>optional .mesos.Labels labels = 5;</code>
+     *
+     * <pre>
+     * This can be used to decorate the message with metadata to be
+     * interpreted by external applications such as firewalls.
+     * </pre>
+     */
+    public boolean hasLabels() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional .mesos.Labels labels = 5;</code>
+     *
+     * <pre>
+     * This can be used to decorate the message with metadata to be
+     * interpreted by external applications such as firewalls.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.Labels getLabels() {
+      return labels_;
+    }
+    /**
+     * <code>optional .mesos.Labels labels = 5;</code>
+     *
+     * <pre>
+     * This can be used to decorate the message with metadata to be
+     * interpreted by external applications such as firewalls.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+      return labels_;
+    }
+
+    private void initFields() {
+      number_ = 0;
+      name_ = "";
+      protocol_ = "";
+      visibility_ = org.apache.mesos.Protos.DiscoveryInfo.Visibility.FRAMEWORK;
+      labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasNumber()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (hasLabels()) {
+        if (!getLabels().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeUInt32(1, number_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(2, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeBytes(3, getProtocolBytes());
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeEnum(4, visibility_.getNumber());
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeMessage(5, labels_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(1, number_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(2, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(3, getProtocolBytes());
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(4, visibility_.getNumber());
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(5, labels_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.Port parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Port parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Port parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Port parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Port parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Port parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Port parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.Port parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Port parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Port parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.Port prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.Port}
+     *
+     * <pre>
+     **
+     * Named port used for service discovery.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.PortOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_Port_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_Port_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.Port.class, org.apache.mesos.Protos.Port.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.Port.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getLabelsFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        number_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        name_ = "";
+        bitField0_ = (bitField0_ & ~0x00000002);
+        protocol_ = "";
+        bitField0_ = (bitField0_ & ~0x00000004);
+        visibility_ = org.apache.mesos.Protos.DiscoveryInfo.Visibility.FRAMEWORK;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        if (labelsBuilder_ == null) {
+          labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+        } else {
+          labelsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_Port_descriptor;
+      }
+
+      public org.apache.mesos.Protos.Port getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.Port.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.Port build() {
+        org.apache.mesos.Protos.Port result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.Port buildPartial() {
+        org.apache.mesos.Protos.Port result = new org.apache.mesos.Protos.Port(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.number_ = number_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.name_ = name_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.protocol_ = protocol_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.visibility_ = visibility_;
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        if (labelsBuilder_ == null) {
+          result.labels_ = labels_;
+        } else {
+          result.labels_ = labelsBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.Port) {
+          return mergeFrom((org.apache.mesos.Protos.Port)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.Port other) {
+        if (other == org.apache.mesos.Protos.Port.getDefaultInstance()) return this;
+        if (other.hasNumber()) {
+          setNumber(other.getNumber());
+        }
+        if (other.hasName()) {
+          bitField0_ |= 0x00000002;
+          name_ = other.name_;
+          onChanged();
+        }
+        if (other.hasProtocol()) {
+          bitField0_ |= 0x00000004;
+          protocol_ = other.protocol_;
+          onChanged();
+        }
+        if (other.hasVisibility()) {
+          setVisibility(other.getVisibility());
+        }
+        if (other.hasLabels()) {
+          mergeLabels(other.getLabels());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasNumber()) {
+          
+          return false;
+        }
+        if (hasLabels()) {
+          if (!getLabels().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.Port parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.Port) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required uint32 number = 1;
+      private int number_ ;
+      /**
+       * <code>required uint32 number = 1;</code>
+       *
+       * <pre>
+       * Port number on which the framework exposes a service.
+       * </pre>
+       */
+      public boolean hasNumber() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required uint32 number = 1;</code>
+       *
+       * <pre>
+       * Port number on which the framework exposes a service.
+       * </pre>
+       */
+      public int getNumber() {
+        return number_;
+      }
+      /**
+       * <code>required uint32 number = 1;</code>
+       *
+       * <pre>
+       * Port number on which the framework exposes a service.
+       * </pre>
+       */
+      public Builder setNumber(int value) {
+        bitField0_ |= 0x00000001;
+        number_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required uint32 number = 1;</code>
+       *
+       * <pre>
+       * Port number on which the framework exposes a service.
+       * </pre>
+       */
+      public Builder clearNumber() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        number_ = 0;
+        onChanged();
+        return this;
+      }
+
+      // optional string name = 2;
+      private java.lang.Object name_ = "";
+      /**
+       * <code>optional string name = 2;</code>
+       *
+       * <pre>
+       * Name of the service hosted on this port.
+       * </pre>
+       */
+      public boolean hasName() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional string name = 2;</code>
+       *
+       * <pre>
+       * Name of the service hosted on this port.
+       * </pre>
+       */
+      public java.lang.String getName() {
+        java.lang.Object ref = name_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          name_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string name = 2;</code>
+       *
+       * <pre>
+       * Name of the service hosted on this port.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        java.lang.Object ref = name_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          name_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string name = 2;</code>
+       *
+       * <pre>
+       * Name of the service hosted on this port.
+       * </pre>
+       */
+      public Builder setName(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string name = 2;</code>
+       *
+       * <pre>
+       * Name of the service hosted on this port.
+       * </pre>
+       */
+      public Builder clearName() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        name_ = getDefaultInstance().getName();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string name = 2;</code>
+       *
+       * <pre>
+       * Name of the service hosted on this port.
+       * </pre>
+       */
+      public Builder setNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional string protocol = 3;
+      private java.lang.Object protocol_ = "";
+      /**
+       * <code>optional string protocol = 3;</code>
+       *
+       * <pre>
+       * Layer 4-7 protocol on which the framework exposes its services.
+       * </pre>
+       */
+      public boolean hasProtocol() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional string protocol = 3;</code>
+       *
+       * <pre>
+       * Layer 4-7 protocol on which the framework exposes its services.
+       * </pre>
+       */
+      public java.lang.String getProtocol() {
+        java.lang.Object ref = protocol_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          protocol_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string protocol = 3;</code>
+       *
+       * <pre>
+       * Layer 4-7 protocol on which the framework exposes its services.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getProtocolBytes() {
+        java.lang.Object ref = protocol_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          protocol_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string protocol = 3;</code>
+       *
+       * <pre>
+       * Layer 4-7 protocol on which the framework exposes its services.
+       * </pre>
+       */
+      public Builder setProtocol(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        protocol_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string protocol = 3;</code>
+       *
+       * <pre>
+       * Layer 4-7 protocol on which the framework exposes its services.
+       * </pre>
+       */
+      public Builder clearProtocol() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        protocol_ = getDefaultInstance().getProtocol();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string protocol = 3;</code>
+       *
+       * <pre>
+       * Layer 4-7 protocol on which the framework exposes its services.
+       * </pre>
+       */
+      public Builder setProtocolBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        protocol_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.DiscoveryInfo.Visibility visibility = 4;
+      private org.apache.mesos.Protos.DiscoveryInfo.Visibility visibility_ = org.apache.mesos.Protos.DiscoveryInfo.Visibility.FRAMEWORK;
+      /**
+       * <code>optional .mesos.DiscoveryInfo.Visibility visibility = 4;</code>
+       *
+       * <pre>
+       * This field restricts discovery within a framework (FRAMEWORK),
+       * within a Mesos cluster (CLUSTER), or places no restrictions (EXTERNAL).
+       * The visibility setting for a Port overrides the general visibility setting
+       * in the DiscoveryInfo.
+       * </pre>
+       */
+      public boolean hasVisibility() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.DiscoveryInfo.Visibility visibility = 4;</code>
+       *
+       * <pre>
+       * This field restricts discovery within a framework (FRAMEWORK),
+       * within a Mesos cluster (CLUSTER), or places no restrictions (EXTERNAL).
+       * The visibility setting for a Port overrides the general visibility setting
+       * in the DiscoveryInfo.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.DiscoveryInfo.Visibility getVisibility() {
+        return visibility_;
+      }
+      /**
+       * <code>optional .mesos.DiscoveryInfo.Visibility visibility = 4;</code>
+       *
+       * <pre>
+       * This field restricts discovery within a framework (FRAMEWORK),
+       * within a Mesos cluster (CLUSTER), or places no restrictions (EXTERNAL).
+       * The visibility setting for a Port overrides the general visibility setting
+       * in the DiscoveryInfo.
+       * </pre>
+       */
+      public Builder setVisibility(org.apache.mesos.Protos.DiscoveryInfo.Visibility value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000008;
+        visibility_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional .mesos.DiscoveryInfo.Visibility visibility = 4;</code>
+       *
+       * <pre>
+       * This field restricts discovery within a framework (FRAMEWORK),
+       * within a Mesos cluster (CLUSTER), or places no restrictions (EXTERNAL).
+       * The visibility setting for a Port overrides the general visibility setting
+       * in the DiscoveryInfo.
+       * </pre>
+       */
+      public Builder clearVisibility() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        visibility_ = org.apache.mesos.Protos.DiscoveryInfo.Visibility.FRAMEWORK;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.Labels labels = 5;
+      private org.apache.mesos.Protos.Labels labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Labels, org.apache.mesos.Protos.Labels.Builder, org.apache.mesos.Protos.LabelsOrBuilder> labelsBuilder_;
+      /**
+       * <code>optional .mesos.Labels labels = 5;</code>
+       *
+       * <pre>
+       * This can be used to decorate the message with metadata to be
+       * interpreted by external applications such as firewalls.
+       * </pre>
+       */
+      public boolean hasLabels() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 5;</code>
+       *
+       * <pre>
+       * This can be used to decorate the message with metadata to be
+       * interpreted by external applications such as firewalls.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Labels getLabels() {
+        if (labelsBuilder_ == null) {
+          return labels_;
+        } else {
+          return labelsBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 5;</code>
+       *
+       * <pre>
+       * This can be used to decorate the message with metadata to be
+       * interpreted by external applications such as firewalls.
+       * </pre>
+       */
+      public Builder setLabels(org.apache.mesos.Protos.Labels value) {
+        if (labelsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          labels_ = value;
+          onChanged();
+        } else {
+          labelsBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 5;</code>
+       *
+       * <pre>
+       * This can be used to decorate the message with metadata to be
+       * interpreted by external applications such as firewalls.
+       * </pre>
+       */
+      public Builder setLabels(
+          org.apache.mesos.Protos.Labels.Builder builderForValue) {
+        if (labelsBuilder_ == null) {
+          labels_ = builderForValue.build();
+          onChanged();
+        } else {
+          labelsBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 5;</code>
+       *
+       * <pre>
+       * This can be used to decorate the message with metadata to be
+       * interpreted by external applications such as firewalls.
+       * </pre>
+       */
+      public Builder mergeLabels(org.apache.mesos.Protos.Labels value) {
+        if (labelsBuilder_ == null) {
+          if (((bitField0_ & 0x00000010) == 0x00000010) &&
+              labels_ != org.apache.mesos.Protos.Labels.getDefaultInstance()) {
+            labels_ =
+              org.apache.mesos.Protos.Labels.newBuilder(labels_).mergeFrom(value).buildPartial();
+          } else {
+            labels_ = value;
+          }
+          onChanged();
+        } else {
+          labelsBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 5;</code>
+       *
+       * <pre>
+       * This can be used to decorate the message with metadata to be
+       * interpreted by external applications such as firewalls.
+       * </pre>
+       */
+      public Builder clearLabels() {
+        if (labelsBuilder_ == null) {
+          labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+          onChanged();
+        } else {
+          labelsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 5;</code>
+       *
+       * <pre>
+       * This can be used to decorate the message with metadata to be
+       * interpreted by external applications such as firewalls.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.Labels.Builder getLabelsBuilder() {
+        bitField0_ |= 0x00000010;
+        onChanged();
+        return getLabelsFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 5;</code>
+       *
+       * <pre>
+       * This can be used to decorate the message with metadata to be
+       * interpreted by external applications such as firewalls.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+        if (labelsBuilder_ != null) {
+          return labelsBuilder_.getMessageOrBuilder();
+        } else {
+          return labels_;
+        }
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 5;</code>
+       *
+       * <pre>
+       * This can be used to decorate the message with metadata to be
+       * interpreted by external applications such as firewalls.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Labels, org.apache.mesos.Protos.Labels.Builder, org.apache.mesos.Protos.LabelsOrBuilder> 
+          getLabelsFieldBuilder() {
+        if (labelsBuilder_ == null) {
+          labelsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Labels, org.apache.mesos.Protos.Labels.Builder, org.apache.mesos.Protos.LabelsOrBuilder>(
+                  labels_,
+                  getParentForChildren(),
+                  isClean());
+          labels_ = null;
+        }
+        return labelsBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.Port)
+    }
+
+    static {
+      defaultInstance = new Port(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.Port)
+  }
+
+  public interface PortsOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // repeated .mesos.Port ports = 1;
+    /**
+     * <code>repeated .mesos.Port ports = 1;</code>
+     */
+    java.util.List<org.apache.mesos.Protos.Port> 
+        getPortsList();
+    /**
+     * <code>repeated .mesos.Port ports = 1;</code>
+     */
+    org.apache.mesos.Protos.Port getPorts(int index);
+    /**
+     * <code>repeated .mesos.Port ports = 1;</code>
+     */
+    int getPortsCount();
+    /**
+     * <code>repeated .mesos.Port ports = 1;</code>
+     */
+    java.util.List<? extends org.apache.mesos.Protos.PortOrBuilder> 
+        getPortsOrBuilderList();
+    /**
+     * <code>repeated .mesos.Port ports = 1;</code>
+     */
+    org.apache.mesos.Protos.PortOrBuilder getPortsOrBuilder(
+        int index);
+  }
+  /**
+   * Protobuf type {@code mesos.Ports}
+   *
+   * <pre>
+   **
+   * Collection of ports.
+   * </pre>
+   */
+  public static final class Ports extends
+      com.google.protobuf.GeneratedMessage
+      implements PortsOrBuilder {
+    // Use Ports.newBuilder() to construct.
+    private Ports(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Ports(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Ports defaultInstance;
+    public static Ports getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Ports getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Ports(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                ports_ = new java.util.ArrayList<org.apache.mesos.Protos.Port>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              ports_.add(input.readMessage(org.apache.mesos.Protos.Port.PARSER, extensionRegistry));
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+          ports_ = java.util.Collections.unmodifiableList(ports_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_Ports_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_Ports_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.Ports.class, org.apache.mesos.Protos.Ports.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Ports> PARSER =
+        new com.google.protobuf.AbstractParser<Ports>() {
+      public Ports parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Ports(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Ports> getParserForType() {
+      return PARSER;
+    }
+
+    // repeated .mesos.Port ports = 1;
+    public static final int PORTS_FIELD_NUMBER = 1;
+    private java.util.List<org.apache.mesos.Protos.Port> ports_;
+    /**
+     * <code>repeated .mesos.Port ports = 1;</code>
+     */
+    public java.util.List<org.apache.mesos.Protos.Port> getPortsList() {
+      return ports_;
+    }
+    /**
+     * <code>repeated .mesos.Port ports = 1;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.Protos.PortOrBuilder> 
+        getPortsOrBuilderList() {
+      return ports_;
+    }
+    /**
+     * <code>repeated .mesos.Port ports = 1;</code>
+     */
+    public int getPortsCount() {
+      return ports_.size();
+    }
+    /**
+     * <code>repeated .mesos.Port ports = 1;</code>
+     */
+    public org.apache.mesos.Protos.Port getPorts(int index) {
+      return ports_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.Port ports = 1;</code>
+     */
+    public org.apache.mesos.Protos.PortOrBuilder getPortsOrBuilder(
+        int index) {
+      return ports_.get(index);
+    }
+
+    private void initFields() {
+      ports_ = java.util.Collections.emptyList();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      for (int i = 0; i < getPortsCount(); i++) {
+        if (!getPorts(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      for (int i = 0; i < ports_.size(); i++) {
+        output.writeMessage(1, ports_.get(i));
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      for (int i = 0; i < ports_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, ports_.get(i));
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.Ports parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Ports parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Ports parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Ports parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Ports parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Ports parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Ports parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.Ports parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Ports parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Ports parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.Ports prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.Ports}
+     *
+     * <pre>
+     **
+     * Collection of ports.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.PortsOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_Ports_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_Ports_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.Ports.class, org.apache.mesos.Protos.Ports.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.Ports.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getPortsFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (portsBuilder_ == null) {
+          ports_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+        } else {
+          portsBuilder_.clear();
+        }
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_Ports_descriptor;
+      }
+
+      public org.apache.mesos.Protos.Ports getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.Ports.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.Ports build() {
+        org.apache.mesos.Protos.Ports result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.Ports buildPartial() {
+        org.apache.mesos.Protos.Ports result = new org.apache.mesos.Protos.Ports(this);
+        int from_bitField0_ = bitField0_;
+        if (portsBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            ports_ = java.util.Collections.unmodifiableList(ports_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.ports_ = ports_;
+        } else {
+          result.ports_ = portsBuilder_.build();
+        }
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.Ports) {
+          return mergeFrom((org.apache.mesos.Protos.Ports)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.Ports other) {
+        if (other == org.apache.mesos.Protos.Ports.getDefaultInstance()) return this;
+        if (portsBuilder_ == null) {
+          if (!other.ports_.isEmpty()) {
+            if (ports_.isEmpty()) {
+              ports_ = other.ports_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensurePortsIsMutable();
+              ports_.addAll(other.ports_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.ports_.isEmpty()) {
+            if (portsBuilder_.isEmpty()) {
+              portsBuilder_.dispose();
+              portsBuilder_ = null;
+              ports_ = other.ports_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              portsBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getPortsFieldBuilder() : null;
+            } else {
+              portsBuilder_.addAllMessages(other.ports_);
+            }
+          }
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        for (int i = 0; i < getPortsCount(); i++) {
+          if (!getPorts(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.Ports parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.Ports) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // repeated .mesos.Port ports = 1;
+      private java.util.List<org.apache.mesos.Protos.Port> ports_ =
+        java.util.Collections.emptyList();
+      private void ensurePortsIsMutable() {
+        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+          ports_ = new java.util.ArrayList<org.apache.mesos.Protos.Port>(ports_);
+          bitField0_ |= 0x00000001;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.Port, org.apache.mesos.Protos.Port.Builder, org.apache.mesos.Protos.PortOrBuilder> portsBuilder_;
+
+      /**
+       * <code>repeated .mesos.Port ports = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.Port> getPortsList() {
+        if (portsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(ports_);
+        } else {
+          return portsBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.Port ports = 1;</code>
+       */
+      public int getPortsCount() {
+        if (portsBuilder_ == null) {
+          return ports_.size();
+        } else {
+          return portsBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.Port ports = 1;</code>
+       */
+      public org.apache.mesos.Protos.Port getPorts(int index) {
+        if (portsBuilder_ == null) {
+          return ports_.get(index);
+        } else {
+          return portsBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Port ports = 1;</code>
+       */
+      public Builder setPorts(
+          int index, org.apache.mesos.Protos.Port value) {
+        if (portsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensurePortsIsMutable();
+          ports_.set(index, value);
+          onChanged();
+        } else {
+          portsBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Port ports = 1;</code>
+       */
+      public Builder setPorts(
+          int index, org.apache.mesos.Protos.Port.Builder builderForValue) {
+        if (portsBuilder_ == null) {
+          ensurePortsIsMutable();
+          ports_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          portsBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Port ports = 1;</code>
+       */
+      public Builder addPorts(org.apache.mesos.Protos.Port value) {
+        if (portsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensurePortsIsMutable();
+          ports_.add(value);
+          onChanged();
+        } else {
+          portsBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Port ports = 1;</code>
+       */
+      public Builder addPorts(
+          int index, org.apache.mesos.Protos.Port value) {
+        if (portsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensurePortsIsMutable();
+          ports_.add(index, value);
+          onChanged();
+        } else {
+          portsBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Port ports = 1;</code>
+       */
+      public Builder addPorts(
+          org.apache.mesos.Protos.Port.Builder builderForValue) {
+        if (portsBuilder_ == null) {
+          ensurePortsIsMutable();
+          ports_.add(builderForValue.build());
+          onChanged();
+        } else {
+          portsBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Port ports = 1;</code>
+       */
+      public Builder addPorts(
+          int index, org.apache.mesos.Protos.Port.Builder builderForValue) {
+        if (portsBuilder_ == null) {
+          ensurePortsIsMutable();
+          ports_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          portsBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Port ports = 1;</code>
+       */
+      public Builder addAllPorts(
+          java.lang.Iterable<? extends org.apache.mesos.Protos.Port> values) {
+        if (portsBuilder_ == null) {
+          ensurePortsIsMutable();
+          super.addAll(values, ports_);
+          onChanged();
+        } else {
+          portsBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Port ports = 1;</code>
+       */
+      public Builder clearPorts() {
+        if (portsBuilder_ == null) {
+          ports_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+        } else {
+          portsBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Port ports = 1;</code>
+       */
+      public Builder removePorts(int index) {
+        if (portsBuilder_ == null) {
+          ensurePortsIsMutable();
+          ports_.remove(index);
+          onChanged();
+        } else {
+          portsBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Port ports = 1;</code>
+       */
+      public org.apache.mesos.Protos.Port.Builder getPortsBuilder(
+          int index) {
+        return getPortsFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.Port ports = 1;</code>
+       */
+      public org.apache.mesos.Protos.PortOrBuilder getPortsOrBuilder(
+          int index) {
+        if (portsBuilder_ == null) {
+          return ports_.get(index);  } else {
+          return portsBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Port ports = 1;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.PortOrBuilder> 
+           getPortsOrBuilderList() {
+        if (portsBuilder_ != null) {
+          return portsBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(ports_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Port ports = 1;</code>
+       */
+      public org.apache.mesos.Protos.Port.Builder addPortsBuilder() {
+        return getPortsFieldBuilder().addBuilder(
+            org.apache.mesos.Protos.Port.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.Port ports = 1;</code>
+       */
+      public org.apache.mesos.Protos.Port.Builder addPortsBuilder(
+          int index) {
+        return getPortsFieldBuilder().addBuilder(
+            index, org.apache.mesos.Protos.Port.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.Port ports = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.Port.Builder> 
+           getPortsBuilderList() {
+        return getPortsFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.Port, org.apache.mesos.Protos.Port.Builder, org.apache.mesos.Protos.PortOrBuilder> 
+          getPortsFieldBuilder() {
+        if (portsBuilder_ == null) {
+          portsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.Port, org.apache.mesos.Protos.Port.Builder, org.apache.mesos.Protos.PortOrBuilder>(
+                  ports_,
+                  ((bitField0_ & 0x00000001) == 0x00000001),
+                  getParentForChildren(),
+                  isClean());
+          ports_ = null;
+        }
+        return portsBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.Ports)
+    }
+
+    static {
+      defaultInstance = new Ports(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.Ports)
+  }
+
+  public interface DiscoveryInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required .mesos.DiscoveryInfo.Visibility visibility = 1;
+    /**
+     * <code>required .mesos.DiscoveryInfo.Visibility visibility = 1;</code>
+     */
+    boolean hasVisibility();
+    /**
+     * <code>required .mesos.DiscoveryInfo.Visibility visibility = 1;</code>
+     */
+    org.apache.mesos.Protos.DiscoveryInfo.Visibility getVisibility();
+
+    // optional string name = 2;
+    /**
+     * <code>optional string name = 2;</code>
+     */
+    boolean hasName();
+    /**
+     * <code>optional string name = 2;</code>
+     */
+    java.lang.String getName();
+    /**
+     * <code>optional string name = 2;</code>
+     */
+    com.google.protobuf.ByteString
+        getNameBytes();
+
+    // optional string environment = 3;
+    /**
+     * <code>optional string environment = 3;</code>
+     */
+    boolean hasEnvironment();
+    /**
+     * <code>optional string environment = 3;</code>
+     */
+    java.lang.String getEnvironment();
+    /**
+     * <code>optional string environment = 3;</code>
+     */
+    com.google.protobuf.ByteString
+        getEnvironmentBytes();
+
+    // optional string location = 4;
+    /**
+     * <code>optional string location = 4;</code>
+     */
+    boolean hasLocation();
+    /**
+     * <code>optional string location = 4;</code>
+     */
+    java.lang.String getLocation();
+    /**
+     * <code>optional string location = 4;</code>
+     */
+    com.google.protobuf.ByteString
+        getLocationBytes();
+
+    // optional string version = 5;
+    /**
+     * <code>optional string version = 5;</code>
+     */
+    boolean hasVersion();
+    /**
+     * <code>optional string version = 5;</code>
+     */
+    java.lang.String getVersion();
+    /**
+     * <code>optional string version = 5;</code>
+     */
+    com.google.protobuf.ByteString
+        getVersionBytes();
+
+    // optional .mesos.Ports ports = 6;
+    /**
+     * <code>optional .mesos.Ports ports = 6;</code>
+     */
+    boolean hasPorts();
+    /**
+     * <code>optional .mesos.Ports ports = 6;</code>
+     */
+    org.apache.mesos.Protos.Ports getPorts();
+    /**
+     * <code>optional .mesos.Ports ports = 6;</code>
+     */
+    org.apache.mesos.Protos.PortsOrBuilder getPortsOrBuilder();
+
+    // optional .mesos.Labels labels = 7;
+    /**
+     * <code>optional .mesos.Labels labels = 7;</code>
+     */
+    boolean hasLabels();
+    /**
+     * <code>optional .mesos.Labels labels = 7;</code>
+     */
+    org.apache.mesos.Protos.Labels getLabels();
+    /**
+     * <code>optional .mesos.Labels labels = 7;</code>
+     */
+    org.apache.mesos.Protos.LabelsOrBuilder getLabelsOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.DiscoveryInfo}
+   *
+   * <pre>
+   **
+   * Service discovery information.
+   * The visibility field restricts discovery within a framework (FRAMEWORK),
+   * within a Mesos cluster (CLUSTER), or places no restrictions (EXTERNAL).
+   * Each port in the ports field also has an optional visibility field.
+   * If visibility is specified for a port, it overrides the default service-wide
+   * DiscoveryInfo.visibility for that port.
+   * The environment, location, and version fields provide first class support for
+   * common attributes used to differentiate between similar services. The
+   * environment may receive values such as PROD/QA/DEV, the location field may
+   * receive values like EAST-US/WEST-US/EUROPE/AMEA, and the version field may
+   * receive values like v2.0/v0.9. The exact use of these fields is up to each
+   * service discovery system.
+   * </pre>
+   */
+  public static final class DiscoveryInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements DiscoveryInfoOrBuilder {
+    // Use DiscoveryInfo.newBuilder() to construct.
+    private DiscoveryInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private DiscoveryInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final DiscoveryInfo defaultInstance;
+    public static DiscoveryInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public DiscoveryInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private DiscoveryInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 8: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.Protos.DiscoveryInfo.Visibility value = org.apache.mesos.Protos.DiscoveryInfo.Visibility.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(1, rawValue);
+              } else {
+                bitField0_ |= 0x00000001;
+                visibility_ = value;
+              }
+              break;
+            }
+            case 18: {
+              bitField0_ |= 0x00000002;
+              name_ = input.readBytes();
+              break;
+            }
+            case 26: {
+              bitField0_ |= 0x00000004;
+              environment_ = input.readBytes();
+              break;
+            }
+            case 34: {
+              bitField0_ |= 0x00000008;
+              location_ = input.readBytes();
+              break;
+            }
+            case 42: {
+              bitField0_ |= 0x00000010;
+              version_ = input.readBytes();
+              break;
+            }
+            case 50: {
+              org.apache.mesos.Protos.Ports.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000020) == 0x00000020)) {
+                subBuilder = ports_.toBuilder();
+              }
+              ports_ = input.readMessage(org.apache.mesos.Protos.Ports.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(ports_);
+                ports_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000020;
+              break;
+            }
+            case 58: {
+              org.apache.mesos.Protos.Labels.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000040) == 0x00000040)) {
+                subBuilder = labels_.toBuilder();
+              }
+              labels_ = input.readMessage(org.apache.mesos.Protos.Labels.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(labels_);
+                labels_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000040;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_DiscoveryInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_DiscoveryInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.DiscoveryInfo.class, org.apache.mesos.Protos.DiscoveryInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<DiscoveryInfo> PARSER =
+        new com.google.protobuf.AbstractParser<DiscoveryInfo>() {
+      public DiscoveryInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new DiscoveryInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<DiscoveryInfo> getParserForType() {
+      return PARSER;
+    }
+
+    /**
+     * Protobuf enum {@code mesos.DiscoveryInfo.Visibility}
+     */
+    public enum Visibility
+        implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>FRAMEWORK = 0;</code>
+       */
+      FRAMEWORK(0, 0),
+      /**
+       * <code>CLUSTER = 1;</code>
+       */
+      CLUSTER(1, 1),
+      /**
+       * <code>EXTERNAL = 2;</code>
+       */
+      EXTERNAL(2, 2),
+      ;
+
+      /**
+       * <code>FRAMEWORK = 0;</code>
+       */
+      public static final int FRAMEWORK_VALUE = 0;
+      /**
+       * <code>CLUSTER = 1;</code>
+       */
+      public static final int CLUSTER_VALUE = 1;
+      /**
+       * <code>EXTERNAL = 2;</code>
+       */
+      public static final int EXTERNAL_VALUE = 2;
+
+
+      public final int getNumber() { return value; }
+
+      public static Visibility valueOf(int value) {
+        switch (value) {
+          case 0: return FRAMEWORK;
+          case 1: return CLUSTER;
+          case 2: return EXTERNAL;
+          default: return null;
+        }
+      }
+
+      public static com.google.protobuf.Internal.EnumLiteMap<Visibility>
+          internalGetValueMap() {
+        return internalValueMap;
+      }
+      private static com.google.protobuf.Internal.EnumLiteMap<Visibility>
+          internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap<Visibility>() {
+              public Visibility findValueByNumber(int number) {
+                return Visibility.valueOf(number);
+              }
+            };
+
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
+          getValueDescriptor() {
+        return getDescriptor().getValues().get(index);
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptorForType() {
+        return getDescriptor();
+      }
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.DiscoveryInfo.getDescriptor().getEnumTypes().get(0);
+      }
+
+      private static final Visibility[] VALUES = values();
+
+      public static Visibility valueOf(
+          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+        if (desc.getType() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "EnumValueDescriptor is not for this type.");
+        }
+        return VALUES[desc.getIndex()];
+      }
+
+      private final int index;
+      private final int value;
+
+      private Visibility(int index, int value) {
+        this.index = index;
+        this.value = value;
+      }
+
+      // @@protoc_insertion_point(enum_scope:mesos.DiscoveryInfo.Visibility)
+    }
+
+    private int bitField0_;
+    // required .mesos.DiscoveryInfo.Visibility visibility = 1;
+    public static final int VISIBILITY_FIELD_NUMBER = 1;
+    private org.apache.mesos.Protos.DiscoveryInfo.Visibility visibility_;
+    /**
+     * <code>required .mesos.DiscoveryInfo.Visibility visibility = 1;</code>
+     */
+    public boolean hasVisibility() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required .mesos.DiscoveryInfo.Visibility visibility = 1;</code>
+     */
+    public org.apache.mesos.Protos.DiscoveryInfo.Visibility getVisibility() {
+      return visibility_;
+    }
+
+    // optional string name = 2;
+    public static final int NAME_FIELD_NUMBER = 2;
+    private java.lang.Object name_;
+    /**
+     * <code>optional string name = 2;</code>
+     */
+    public boolean hasName() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional string name = 2;</code>
+     */
+    public java.lang.String getName() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          name_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string name = 2;</code>
+     */
+    public com.google.protobuf.ByteString
+        getNameBytes() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        name_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional string environment = 3;
+    public static final int ENVIRONMENT_FIELD_NUMBER = 3;
+    private java.lang.Object environment_;
+    /**
+     * <code>optional string environment = 3;</code>
+     */
+    public boolean hasEnvironment() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional string environment = 3;</code>
+     */
+    public java.lang.String getEnvironment() {
+      java.lang.Object ref = environment_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          environment_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string environment = 3;</code>
+     */
+    public com.google.protobuf.ByteString
+        getEnvironmentBytes() {
+      java.lang.Object ref = environment_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        environment_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional string location = 4;
+    public static final int LOCATION_FIELD_NUMBER = 4;
+    private java.lang.Object location_;
+    /**
+     * <code>optional string location = 4;</code>
+     */
+    public boolean hasLocation() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional string location = 4;</code>
+     */
+    public java.lang.String getLocation() {
+      java.lang.Object ref = location_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          location_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string location = 4;</code>
+     */
+    public com.google.protobuf.ByteString
+        getLocationBytes() {
+      java.lang.Object ref = location_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        location_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional string version = 5;
+    public static final int VERSION_FIELD_NUMBER = 5;
+    private java.lang.Object version_;
+    /**
+     * <code>optional string version = 5;</code>
+     */
+    public boolean hasVersion() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional string version = 5;</code>
+     */
+    public java.lang.String getVersion() {
+      java.lang.Object ref = version_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          version_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string version = 5;</code>
+     */
+    public com.google.protobuf.ByteString
+        getVersionBytes() {
+      java.lang.Object ref = version_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        version_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional .mesos.Ports ports = 6;
+    public static final int PORTS_FIELD_NUMBER = 6;
+    private org.apache.mesos.Protos.Ports ports_;
+    /**
+     * <code>optional .mesos.Ports ports = 6;</code>
+     */
+    public boolean hasPorts() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional .mesos.Ports ports = 6;</code>
+     */
+    public org.apache.mesos.Protos.Ports getPorts() {
+      return ports_;
+    }
+    /**
+     * <code>optional .mesos.Ports ports = 6;</code>
+     */
+    public org.apache.mesos.Protos.PortsOrBuilder getPortsOrBuilder() {
+      return ports_;
+    }
+
+    // optional .mesos.Labels labels = 7;
+    public static final int LABELS_FIELD_NUMBER = 7;
+    private org.apache.mesos.Protos.Labels labels_;
+    /**
+     * <code>optional .mesos.Labels labels = 7;</code>
+     */
+    public boolean hasLabels() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional .mesos.Labels labels = 7;</code>
+     */
+    public org.apache.mesos.Protos.Labels getLabels() {
+      return labels_;
+    }
+    /**
+     * <code>optional .mesos.Labels labels = 7;</code>
+     */
+    public org.apache.mesos.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+      return labels_;
+    }
+
+    private void initFields() {
+      visibility_ = org.apache.mesos.Protos.DiscoveryInfo.Visibility.FRAMEWORK;
+      name_ = "";
+      environment_ = "";
+      location_ = "";
+      version_ = "";
+      ports_ = org.apache.mesos.Protos.Ports.getDefaultInstance();
+      labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasVisibility()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (hasPorts()) {
+        if (!getPorts().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasLabels()) {
+        if (!getLabels().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeEnum(1, visibility_.getNumber());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(2, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeBytes(3, getEnvironmentBytes());
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeBytes(4, getLocationBytes());
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeBytes(5, getVersionBytes());
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeMessage(6, ports_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeMessage(7, labels_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(1, visibility_.getNumber());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(2, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(3, getEnvironmentBytes());
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(4, getLocationBytes());
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(5, getVersionBytes());
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(6, ports_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(7, labels_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.DiscoveryInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.DiscoveryInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.DiscoveryInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.DiscoveryInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.DiscoveryInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.DiscoveryInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.DiscoveryInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.DiscoveryInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.DiscoveryInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.DiscoveryInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.DiscoveryInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.DiscoveryInfo}
+     *
+     * <pre>
+     **
+     * Service discovery information.
+     * The visibility field restricts discovery within a framework (FRAMEWORK),
+     * within a Mesos cluster (CLUSTER), or places no restrictions (EXTERNAL).
+     * Each port in the ports field also has an optional visibility field.
+     * If visibility is specified for a port, it overrides the default service-wide
+     * DiscoveryInfo.visibility for that port.
+     * The environment, location, and version fields provide first class support for
+     * common attributes used to differentiate between similar services. The
+     * environment may receive values such as PROD/QA/DEV, the location field may
+     * receive values like EAST-US/WEST-US/EUROPE/AMEA, and the version field may
+     * receive values like v2.0/v0.9. The exact use of these fields is up to each
+     * service discovery system.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.DiscoveryInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_DiscoveryInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_DiscoveryInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.DiscoveryInfo.class, org.apache.mesos.Protos.DiscoveryInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.DiscoveryInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getPortsFieldBuilder();
+          getLabelsFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        visibility_ = org.apache.mesos.Protos.DiscoveryInfo.Visibility.FRAMEWORK;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        name_ = "";
+        bitField0_ = (bitField0_ & ~0x00000002);
+        environment_ = "";
+        bitField0_ = (bitField0_ & ~0x00000004);
+        location_ = "";
+        bitField0_ = (bitField0_ & ~0x00000008);
+        version_ = "";
+        bitField0_ = (bitField0_ & ~0x00000010);
+        if (portsBuilder_ == null) {
+          ports_ = org.apache.mesos.Protos.Ports.getDefaultInstance();
+        } else {
+          portsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
+        if (labelsBuilder_ == null) {
+          labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+        } else {
+          labelsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000040);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_DiscoveryInfo_descriptor;
+      }
+
+      public org.apache.mesos.Protos.DiscoveryInfo getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.DiscoveryInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.DiscoveryInfo build() {
+        org.apache.mesos.Protos.DiscoveryInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.DiscoveryInfo buildPartial() {
+        org.apache.mesos.Protos.DiscoveryInfo result = new org.apache.mesos.Protos.DiscoveryInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.visibility_ = visibility_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.name_ = name_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.environment_ = environment_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.location_ = location_;
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.version_ = version_;
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        if (portsBuilder_ == null) {
+          result.ports_ = ports_;
+        } else {
+          result.ports_ = portsBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        if (labelsBuilder_ == null) {
+          result.labels_ = labels_;
+        } else {
+          result.labels_ = labelsBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.DiscoveryInfo) {
+          return mergeFrom((org.apache.mesos.Protos.DiscoveryInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.DiscoveryInfo other) {
+        if (other == org.apache.mesos.Protos.DiscoveryInfo.getDefaultInstance()) return this;
+        if (other.hasVisibility()) {
+          setVisibility(other.getVisibility());
+        }
+        if (other.hasName()) {
+          bitField0_ |= 0x00000002;
+          name_ = other.name_;
+          onChanged();
+        }
+        if (other.hasEnvironment()) {
+          bitField0_ |= 0x00000004;
+          environment_ = other.environment_;
+          onChanged();
+        }
+        if (other.hasLocation()) {
+          bitField0_ |= 0x00000008;
+          location_ = other.location_;
+          onChanged();
+        }
+        if (other.hasVersion()) {
+          bitField0_ |= 0x00000010;
+          version_ = other.version_;
+          onChanged();
+        }
+        if (other.hasPorts()) {
+          mergePorts(other.getPorts());
+        }
+        if (other.hasLabels()) {
+          mergeLabels(other.getLabels());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasVisibility()) {
+          
+          return false;
+        }
+        if (hasPorts()) {
+          if (!getPorts().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasLabels()) {
+          if (!getLabels().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.DiscoveryInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.DiscoveryInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required .mesos.DiscoveryInfo.Visibility visibility = 1;
+      private org.apache.mesos.Protos.DiscoveryInfo.Visibility visibility_ = org.apache.mesos.Protos.DiscoveryInfo.Visibility.FRAMEWORK;
+      /**
+       * <code>required .mesos.DiscoveryInfo.Visibility visibility = 1;</code>
+       */
+      public boolean hasVisibility() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.DiscoveryInfo.Visibility visibility = 1;</code>
+       */
+      public org.apache.mesos.Protos.DiscoveryInfo.Visibility getVisibility() {
+        return visibility_;
+      }
+      /**
+       * <code>required .mesos.DiscoveryInfo.Visibility visibility = 1;</code>
+       */
+      public Builder setVisibility(org.apache.mesos.Protos.DiscoveryInfo.Visibility value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000001;
+        visibility_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required .mesos.DiscoveryInfo.Visibility visibility = 1;</code>
+       */
+      public Builder clearVisibility() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        visibility_ = org.apache.mesos.Protos.DiscoveryInfo.Visibility.FRAMEWORK;
+        onChanged();
+        return this;
+      }
+
+      // optional string name = 2;
+      private java.lang.Object name_ = "";
+      /**
+       * <code>optional string name = 2;</code>
+       */
+      public boolean hasName() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional string name = 2;</code>
+       */
+      public java.lang.String getName() {
+        java.lang.Object ref = name_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          name_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string name = 2;</code>
+       */
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        java.lang.Object ref = name_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          name_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string name = 2;</code>
+       */
+      public Builder setName(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string name = 2;</code>
+       */
+      public Builder clearName() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        name_ = getDefaultInstance().getName();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string name = 2;</code>
+       */
+      public Builder setNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional string environment = 3;
+      private java.lang.Object environment_ = "";
+      /**
+       * <code>optional string environment = 3;</code>
+       */
+      public boolean hasEnvironment() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional string environment = 3;</code>
+       */
+      public java.lang.String getEnvironment() {
+        java.lang.Object ref = environment_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          environment_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string environment = 3;</code>
+       */
+      public com.google.protobuf.ByteString
+          getEnvironmentBytes() {
+        java.lang.Object ref = environment_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          environment_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string environment = 3;</code>
+       */
+      public Builder setEnvironment(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        environment_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string environment = 3;</code>
+       */
+      public Builder clearEnvironment() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        environment_ = getDefaultInstance().getEnvironment();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string environment = 3;</code>
+       */
+      public Builder setEnvironmentBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        environment_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional string location = 4;
+      private java.lang.Object location_ = "";
+      /**
+       * <code>optional string location = 4;</code>
+       */
+      public boolean hasLocation() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional string location = 4;</code>
+       */
+      public java.lang.String getLocation() {
+        java.lang.Object ref = location_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          location_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string location = 4;</code>
+       */
+      public com.google.protobuf.ByteString
+          getLocationBytes() {
+        java.lang.Object ref = location_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          location_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string location = 4;</code>
+       */
+      public Builder setLocation(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+        location_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string location = 4;</code>
+       */
+      public Builder clearLocation() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        location_ = getDefaultInstance().getLocation();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string location = 4;</code>
+       */
+      public Builder setLocationBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+        location_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional string version = 5;
+      private java.lang.Object version_ = "";
+      /**
+       * <code>optional string version = 5;</code>
+       */
+      public boolean hasVersion() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional string version = 5;</code>
+       */
+      public java.lang.String getVersion() {
+        java.lang.Object ref = version_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          version_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string version = 5;</code>
+       */
+      public com.google.protobuf.ByteString
+          getVersionBytes() {
+        java.lang.Object ref = version_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          version_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string version = 5;</code>
+       */
+      public Builder setVersion(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000010;
+        version_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string version = 5;</code>
+       */
+      public Builder clearVersion() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        version_ = getDefaultInstance().getVersion();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string version = 5;</code>
+       */
+      public Builder setVersionBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000010;
+        version_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.Ports ports = 6;
+      private org.apache.mesos.Protos.Ports ports_ = org.apache.mesos.Protos.Ports.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Ports, org.apache.mesos.Protos.Ports.Builder, org.apache.mesos.Protos.PortsOrBuilder> portsBuilder_;
+      /**
+       * <code>optional .mesos.Ports ports = 6;</code>
+       */
+      public boolean hasPorts() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional .mesos.Ports ports = 6;</code>
+       */
+      public org.apache.mesos.Protos.Ports getPorts() {
+        if (portsBuilder_ == null) {
+          return ports_;
+        } else {
+          return portsBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.Ports ports = 6;</code>
+       */
+      public Builder setPorts(org.apache.mesos.Protos.Ports value) {
+        if (portsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ports_ = value;
+          onChanged();
+        } else {
+          portsBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Ports ports = 6;</code>
+       */
+      public Builder setPorts(
+          org.apache.mesos.Protos.Ports.Builder builderForValue) {
+        if (portsBuilder_ == null) {
+          ports_ = builderForValue.build();
+          onChanged();
+        } else {
+          portsBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Ports ports = 6;</code>
+       */
+      public Builder mergePorts(org.apache.mesos.Protos.Ports value) {
+        if (portsBuilder_ == null) {
+          if (((bitField0_ & 0x00000020) == 0x00000020) &&
+              ports_ != org.apache.mesos.Protos.Ports.getDefaultInstance()) {
+            ports_ =
+              org.apache.mesos.Protos.Ports.newBuilder(ports_).mergeFrom(value).buildPartial();
+          } else {
+            ports_ = value;
+          }
+          onChanged();
+        } else {
+          portsBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Ports ports = 6;</code>
+       */
+      public Builder clearPorts() {
+        if (portsBuilder_ == null) {
+          ports_ = org.apache.mesos.Protos.Ports.getDefaultInstance();
+          onChanged();
+        } else {
+          portsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Ports ports = 6;</code>
+       */
+      public org.apache.mesos.Protos.Ports.Builder getPortsBuilder() {
+        bitField0_ |= 0x00000020;
+        onChanged();
+        return getPortsFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.Ports ports = 6;</code>
+       */
+      public org.apache.mesos.Protos.PortsOrBuilder getPortsOrBuilder() {
+        if (portsBuilder_ != null) {
+          return portsBuilder_.getMessageOrBuilder();
+        } else {
+          return ports_;
+        }
+      }
+      /**
+       * <code>optional .mesos.Ports ports = 6;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Ports, org.apache.mesos.Protos.Ports.Builder, org.apache.mesos.Protos.PortsOrBuilder> 
+          getPortsFieldBuilder() {
+        if (portsBuilder_ == null) {
+          portsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Ports, org.apache.mesos.Protos.Ports.Builder, org.apache.mesos.Protos.PortsOrBuilder>(
+                  ports_,
+                  getParentForChildren(),
+                  isClean());
+          ports_ = null;
+        }
+        return portsBuilder_;
+      }
+
+      // optional .mesos.Labels labels = 7;
+      private org.apache.mesos.Protos.Labels labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Labels, org.apache.mesos.Protos.Labels.Builder, org.apache.mesos.Protos.LabelsOrBuilder> labelsBuilder_;
+      /**
+       * <code>optional .mesos.Labels labels = 7;</code>
+       */
+      public boolean hasLabels() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 7;</code>
+       */
+      public org.apache.mesos.Protos.Labels getLabels() {
+        if (labelsBuilder_ == null) {
+          return labels_;
+        } else {
+          return labelsBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 7;</code>
+       */
+      public Builder setLabels(org.apache.mesos.Protos.Labels value) {
+        if (labelsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          labels_ = value;
+          onChanged();
+        } else {
+          labelsBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 7;</code>
+       */
+      public Builder setLabels(
+          org.apache.mesos.Protos.Labels.Builder builderForValue) {
+        if (labelsBuilder_ == null) {
+          labels_ = builderForValue.build();
+          onChanged();
+        } else {
+          labelsBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 7;</code>
+       */
+      public Builder mergeLabels(org.apache.mesos.Protos.Labels value) {
+        if (labelsBuilder_ == null) {
+          if (((bitField0_ & 0x00000040) == 0x00000040) &&
+              labels_ != org.apache.mesos.Protos.Labels.getDefaultInstance()) {
+            labels_ =
+              org.apache.mesos.Protos.Labels.newBuilder(labels_).mergeFrom(value).buildPartial();
+          } else {
+            labels_ = value;
+          }
+          onChanged();
+        } else {
+          labelsBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 7;</code>
+       */
+      public Builder clearLabels() {
+        if (labelsBuilder_ == null) {
+          labels_ = org.apache.mesos.Protos.Labels.getDefaultInstance();
+          onChanged();
+        } else {
+          labelsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000040);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 7;</code>
+       */
+      public org.apache.mesos.Protos.Labels.Builder getLabelsBuilder() {
+        bitField0_ |= 0x00000040;
+        onChanged();
+        return getLabelsFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 7;</code>
+       */
+      public org.apache.mesos.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+        if (labelsBuilder_ != null) {
+          return labelsBuilder_.getMessageOrBuilder();
+        } else {
+          return labels_;
+        }
+      }
+      /**
+       * <code>optional .mesos.Labels labels = 7;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Labels, org.apache.mesos.Protos.Labels.Builder, org.apache.mesos.Protos.LabelsOrBuilder> 
+          getLabelsFieldBuilder() {
+        if (labelsBuilder_ == null) {
+          labelsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Labels, org.apache.mesos.Protos.Labels.Builder, org.apache.mesos.Protos.LabelsOrBuilder>(
+                  labels_,
+                  getParentForChildren(),
+                  isClean());
+          labels_ = null;
+        }
+        return labelsBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.DiscoveryInfo)
+    }
+
+    static {
+      defaultInstance = new DiscoveryInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.DiscoveryInfo)
+  }
+
+  public interface WeightInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required double weight = 1;
+    /**
+     * <code>required double weight = 1;</code>
+     */
+    boolean hasWeight();
+    /**
+     * <code>required double weight = 1;</code>
+     */
+    double getWeight();
+
+    // optional string role = 2;
+    /**
+     * <code>optional string role = 2;</code>
+     *
+     * <pre>
+     * Related role name.
+     * </pre>
+     */
+    boolean hasRole();
+    /**
+     * <code>optional string role = 2;</code>
+     *
+     * <pre>
+     * Related role name.
+     * </pre>
+     */
+    java.lang.String getRole();
+    /**
+     * <code>optional string role = 2;</code>
+     *
+     * <pre>
+     * Related role name.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getRoleBytes();
+  }
+  /**
+   * Protobuf type {@code mesos.WeightInfo}
+   *
+   * <pre>
+   **
+   * Named WeightInfo to indicate resource allocation
+   * priority between the different roles.
+   * </pre>
+   */
+  public static final class WeightInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements WeightInfoOrBuilder {
+    // Use WeightInfo.newBuilder() to construct.
+    private WeightInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private WeightInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final WeightInfo defaultInstance;
+    public static WeightInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public WeightInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private WeightInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 9: {
+              bitField0_ |= 0x00000001;
+              weight_ = input.readDouble();
+              break;
+            }
+            case 18: {
+              bitField0_ |= 0x00000002;
+              role_ = input.readBytes();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_WeightInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_WeightInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.WeightInfo.class, org.apache.mesos.Protos.WeightInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<WeightInfo> PARSER =
+        new com.google.protobuf.AbstractParser<WeightInfo>() {
+      public WeightInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new WeightInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<WeightInfo> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required double weight = 1;
+    public static final int WEIGHT_FIELD_NUMBER = 1;
+    private double weight_;
+    /**
+     * <code>required double weight = 1;</code>
+     */
+    public boolean hasWeight() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required double weight = 1;</code>
+     */
+    public double getWeight() {
+      return weight_;
+    }
+
+    // optional string role = 2;
+    public static final int ROLE_FIELD_NUMBER = 2;
+    private java.lang.Object role_;
+    /**
+     * <code>optional string role = 2;</code>
+     *
+     * <pre>
+     * Related role name.
+     * </pre>
+     */
+    public boolean hasRole() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional string role = 2;</code>
+     *
+     * <pre>
+     * Related role name.
+     * </pre>
+     */
+    public java.lang.String getRole() {
+      java.lang.Object ref = role_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          role_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string role = 2;</code>
+     *
+     * <pre>
+     * Related role name.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getRoleBytes() {
+      java.lang.Object ref = role_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        role_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      weight_ = 0D;
+      role_ = "";
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasWeight()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeDouble(1, weight_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(2, getRoleBytes());
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(1, weight_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(2, getRoleBytes());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.WeightInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.WeightInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.WeightInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.WeightInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.WeightInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.WeightInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.WeightInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.WeightInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.WeightInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.WeightInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.WeightInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.WeightInfo}
+     *
+     * <pre>
+     **
+     * Named WeightInfo to indicate resource allocation
+     * priority between the different roles.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.WeightInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_WeightInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_WeightInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.WeightInfo.class, org.apache.mesos.Protos.WeightInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.WeightInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        weight_ = 0D;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        role_ = "";
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_WeightInfo_descriptor;
+      }
+
+      public org.apache.mesos.Protos.WeightInfo getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.WeightInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.WeightInfo build() {
+        org.apache.mesos.Protos.WeightInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.WeightInfo buildPartial() {
+        org.apache.mesos.Protos.WeightInfo result = new org.apache.mesos.Protos.WeightInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.weight_ = weight_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.role_ = role_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.WeightInfo) {
+          return mergeFrom((org.apache.mesos.Protos.WeightInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.WeightInfo other) {
+        if (other == org.apache.mesos.Protos.WeightInfo.getDefaultInstance()) return this;
+        if (other.hasWeight()) {
+          setWeight(other.getWeight());
+        }
+        if (other.hasRole()) {
+          bitField0_ |= 0x00000002;
+          role_ = other.role_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasWeight()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.WeightInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.WeightInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required double weight = 1;
+      private double weight_ ;
+      /**
+       * <code>required double weight = 1;</code>
+       */
+      public boolean hasWeight() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required double weight = 1;</code>
+       */
+      public double getWeight() {
+        return weight_;
+      }
+      /**
+       * <code>required double weight = 1;</code>
+       */
+      public Builder setWeight(double value) {
+        bitField0_ |= 0x00000001;
+        weight_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required double weight = 1;</code>
+       */
+      public Builder clearWeight() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        weight_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // optional string role = 2;
+      private java.lang.Object role_ = "";
+      /**
+       * <code>optional string role = 2;</code>
+       *
+       * <pre>
+       * Related role name.
+       * </pre>
+       */
+      public boolean hasRole() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional string role = 2;</code>
+       *
+       * <pre>
+       * Related role name.
+       * </pre>
+       */
+      public java.lang.String getRole() {
+        java.lang.Object ref = role_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          role_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string role = 2;</code>
+       *
+       * <pre>
+       * Related role name.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getRoleBytes() {
+        java.lang.Object ref = role_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          role_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string role = 2;</code>
+       *
+       * <pre>
+       * Related role name.
+       * </pre>
+       */
+      public Builder setRole(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        role_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string role = 2;</code>
+       *
+       * <pre>
+       * Related role name.
+       * </pre>
+       */
+      public Builder clearRole() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        role_ = getDefaultInstance().getRole();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string role = 2;</code>
+       *
+       * <pre>
+       * Related role name.
+       * </pre>
+       */
+      public Builder setRoleBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        role_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.WeightInfo)
+    }
+
+    static {
+      defaultInstance = new WeightInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.WeightInfo)
+  }
+
+  public interface VersionInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string version = 1;
+    /**
+     * <code>required string version = 1;</code>
+     */
+    boolean hasVersion();
+    /**
+     * <code>required string version = 1;</code>
+     */
+    java.lang.String getVersion();
+    /**
+     * <code>required string version = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getVersionBytes();
+
+    // optional string build_date = 2;
+    /**
+     * <code>optional string build_date = 2;</code>
+     */
+    boolean hasBuildDate();
+    /**
+     * <code>optional string build_date = 2;</code>
+     */
+    java.lang.String getBuildDate();
+    /**
+     * <code>optional string build_date = 2;</code>
+     */
+    com.google.protobuf.ByteString
+        getBuildDateBytes();
+
+    // optional double build_time = 3;
+    /**
+     * <code>optional double build_time = 3;</code>
+     */
+    boolean hasBuildTime();
+    /**
+     * <code>optional double build_time = 3;</code>
+     */
+    double getBuildTime();
+
+    // optional string build_user = 4;
+    /**
+     * <code>optional string build_user = 4;</code>
+     */
+    boolean hasBuildUser();
+    /**
+     * <code>optional string build_user = 4;</code>
+     */
+    java.lang.String getBuildUser();
+    /**
+     * <code>optional string build_user = 4;</code>
+     */
+    com.google.protobuf.ByteString
+        getBuildUserBytes();
+
+    // optional string git_sha = 5;
+    /**
+     * <code>optional string git_sha = 5;</code>
+     */
+    boolean hasGitSha();
+    /**
+     * <code>optional string git_sha = 5;</code>
+     */
+    java.lang.String getGitSha();
+    /**
+     * <code>optional string git_sha = 5;</code>
+     */
+    com.google.protobuf.ByteString
+        getGitShaBytes();
+
+    // optional string git_branch = 6;
+    /**
+     * <code>optional string git_branch = 6;</code>
+     */
+    boolean hasGitBranch();
+    /**
+     * <code>optional string git_branch = 6;</code>
+     */
+    java.lang.String getGitBranch();
+    /**
+     * <code>optional string git_branch = 6;</code>
+     */
+    com.google.protobuf.ByteString
+        getGitBranchBytes();
+
+    // optional string git_tag = 7;
+    /**
+     * <code>optional string git_tag = 7;</code>
+     */
+    boolean hasGitTag();
+    /**
+     * <code>optional string git_tag = 7;</code>
+     */
+    java.lang.String getGitTag();
+    /**
+     * <code>optional string git_tag = 7;</code>
+     */
+    com.google.protobuf.ByteString
+        getGitTagBytes();
+  }
+  /**
+   * Protobuf type {@code mesos.VersionInfo}
+   *
+   * <pre>
+   **
+   * Version information of a component.
+   * </pre>
+   */
+  public static final class VersionInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements VersionInfoOrBuilder {
+    // Use VersionInfo.newBuilder() to construct.
+    private VersionInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private VersionInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final VersionInfo defaultInstance;
+    public static VersionInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public VersionInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private VersionInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              version_ = input.readBytes();
+              break;
+            }
+            case 18: {
+              bitField0_ |= 0x00000002;
+              buildDate_ = input.readBytes();
+              break;
+            }
+            case 25: {
+              bitField0_ |= 0x00000004;
+              buildTime_ = input.readDouble();
+              break;
+            }
+            case 34: {
+              bitField0_ |= 0x00000008;
+              buildUser_ = input.readBytes();
+              break;
+            }
+            case 42: {
+              bitField0_ |= 0x00000010;
+              gitSha_ = input.readBytes();
+              break;
+            }
+            case 50: {
+              bitField0_ |= 0x00000020;
+              gitBranch_ = input.readBytes();
+              break;
+            }
+            case 58: {
+              bitField0_ |= 0x00000040;
+              gitTag_ = input.readBytes();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_VersionInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_VersionInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.VersionInfo.class, org.apache.mesos.Protos.VersionInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<VersionInfo> PARSER =
+        new com.google.protobuf.AbstractParser<VersionInfo>() {
+      public VersionInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new VersionInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<VersionInfo> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string version = 1;
+    public static final int VERSION_FIELD_NUMBER = 1;
+    private java.lang.Object version_;
+    /**
+     * <code>required string version = 1;</code>
+     */
+    public boolean hasVersion() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string version = 1;</code>
+     */
+    public java.lang.String getVersion() {
+      java.lang.Object ref = version_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          version_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string version = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getVersionBytes() {
+      java.lang.Object ref = version_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        version_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional string build_date = 2;
+    public static final int BUILD_DATE_FIELD_NUMBER = 2;
+    private java.lang.Object buildDate_;
+    /**
+     * <code>optional string build_date = 2;</code>
+     */
+    public boolean hasBuildDate() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional string build_date = 2;</code>
+     */
+    public java.lang.String getBuildDate() {
+      java.lang.Object ref = buildDate_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          buildDate_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string build_date = 2;</code>
+     */
+    public com.google.protobuf.ByteString
+        getBuildDateBytes() {
+      java.lang.Object ref = buildDate_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        buildDate_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional double build_time = 3;
+    public static final int BUILD_TIME_FIELD_NUMBER = 3;
+    private double buildTime_;
+    /**
+     * <code>optional double build_time = 3;</code>
+     */
+    public boolean hasBuildTime() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional double build_time = 3;</code>
+     */
+    public double getBuildTime() {
+      return buildTime_;
+    }
+
+    // optional string build_user = 4;
+    public static final int BUILD_USER_FIELD_NUMBER = 4;
+    private java.lang.Object buildUser_;
+    /**
+     * <code>optional string build_user = 4;</code>
+     */
+    public boolean hasBuildUser() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional string build_user = 4;</code>
+     */
+    public java.lang.String getBuildUser() {
+      java.lang.Object ref = buildUser_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          buildUser_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string build_user = 4;</code>
+     */
+    public com.google.protobuf.ByteString
+        getBuildUserBytes() {
+      java.lang.Object ref = buildUser_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        buildUser_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional string git_sha = 5;
+    public static final int GIT_SHA_FIELD_NUMBER = 5;
+    private java.lang.Object gitSha_;
+    /**
+     * <code>optional string git_sha = 5;</code>
+     */
+    public boolean hasGitSha() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional string git_sha = 5;</code>
+     */
+    public java.lang.String getGitSha() {
+      java.lang.Object ref = gitSha_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          gitSha_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string git_sha = 5;</code>
+     */
+    public com.google.protobuf.ByteString
+        getGitShaBytes() {
+      java.lang.Object ref = gitSha_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        gitSha_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional string git_branch = 6;
+    public static final int GIT_BRANCH_FIELD_NUMBER = 6;
+    private java.lang.Object gitBranch_;
+    /**
+     * <code>optional string git_branch = 6;</code>
+     */
+    public boolean hasGitBranch() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional string git_branch = 6;</code>
+     */
+    public java.lang.String getGitBranch() {
+      java.lang.Object ref = gitBranch_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          gitBranch_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string git_branch = 6;</code>
+     */
+    public com.google.protobuf.ByteString
+        getGitBranchBytes() {
+      java.lang.Object ref = gitBranch_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        gitBranch_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional string git_tag = 7;
+    public static final int GIT_TAG_FIELD_NUMBER = 7;
+    private java.lang.Object gitTag_;
+    /**
+     * <code>optional string git_tag = 7;</code>
+     */
+    public boolean hasGitTag() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional string git_tag = 7;</code>
+     */
+    public java.lang.String getGitTag() {
+      java.lang.Object ref = gitTag_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          gitTag_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string git_tag = 7;</code>
+     */
+    public com.google.protobuf.ByteString
+        getGitTagBytes() {
+      java.lang.Object ref = gitTag_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        gitTag_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      version_ = "";
+      buildDate_ = "";
+      buildTime_ = 0D;
+      buildUser_ = "";
+      gitSha_ = "";
+      gitBranch_ = "";
+      gitTag_ = "";
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasVersion()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getVersionBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(2, getBuildDateBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeDouble(3, buildTime_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeBytes(4, getBuildUserBytes());
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeBytes(5, getGitShaBytes());
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeBytes(6, getGitBranchBytes());
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeBytes(7, getGitTagBytes());
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getVersionBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(2, getBuildDateBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(3, buildTime_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(4, getBuildUserBytes());
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(5, getGitShaBytes());
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(6, getGitBranchBytes());
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(7, getGitTagBytes());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.VersionInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.VersionInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.VersionInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.VersionInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.VersionInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.VersionInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.VersionInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.VersionInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.VersionInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.VersionInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.VersionInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.VersionInfo}
+     *
+     * <pre>
+     **
+     * Version information of a component.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.VersionInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_VersionInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_VersionInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.VersionInfo.class, org.apache.mesos.Protos.VersionInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.VersionInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        version_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        buildDate_ = "";
+        bitField0_ = (bitField0_ & ~0x00000002);
+        buildTime_ = 0D;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        buildUser_ = "";
+        bitField0_ = (bitField0_ & ~0x00000008);
+        gitSha_ = "";
+        bitField0_ = (bitField0_ & ~0x00000010);
+        gitBranch_ = "";
+        bitField0_ = (bitField0_ & ~0x00000020);
+        gitTag_ = "";
+        bitField0_ = (bitField0_ & ~0x00000040);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_VersionInfo_descriptor;
+      }
+
+      public org.apache.mesos.Protos.VersionInfo getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.VersionInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.VersionInfo build() {
+        org.apache.mesos.Protos.VersionInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.VersionInfo buildPartial() {
+        org.apache.mesos.Protos.VersionInfo result = new org.apache.mesos.Protos.VersionInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.version_ = version_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.buildDate_ = buildDate_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.buildTime_ = buildTime_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.buildUser_ = buildUser_;
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.gitSha_ = gitSha_;
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        result.gitBranch_ = gitBranch_;
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        result.gitTag_ = gitTag_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.VersionInfo) {
+          return mergeFrom((org.apache.mesos.Protos.VersionInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.VersionInfo other) {
+        if (other == org.apache.mesos.Protos.VersionInfo.getDefaultInstance()) return this;
+        if (other.hasVersion()) {
+          bitField0_ |= 0x00000001;
+          version_ = other.version_;
+          onChanged();
+        }
+        if (other.hasBuildDate()) {
+          bitField0_ |= 0x00000002;
+          buildDate_ = other.buildDate_;
+          onChanged();
+        }
+        if (other.hasBuildTime()) {
+          setBuildTime(other.getBuildTime());
+        }
+        if (other.hasBuildUser()) {
+          bitField0_ |= 0x00000008;
+          buildUser_ = other.buildUser_;
+          onChanged();
+        }
+        if (other.hasGitSha()) {
+          bitField0_ |= 0x00000010;
+          gitSha_ = other.gitSha_;
+          onChanged();
+        }
+        if (other.hasGitBranch()) {
+          bitField0_ |= 0x00000020;
+          gitBranch_ = other.gitBranch_;
+          onChanged();
+        }
+        if (other.hasGitTag()) {
+          bitField0_ |= 0x00000040;
+          gitTag_ = other.gitTag_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasVersion()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.VersionInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.VersionInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string version = 1;
+      private java.lang.Object version_ = "";
+      /**
+       * <code>required string version = 1;</code>
+       */
+      public boolean hasVersion() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string version = 1;</code>
+       */
+      public java.lang.String getVersion() {
+        java.lang.Object ref = version_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          version_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string version = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getVersionBytes() {
+        java.lang.Object ref = version_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          version_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string version = 1;</code>
+       */
+      public Builder setVersion(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        version_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string version = 1;</code>
+       */
+      public Builder clearVersion() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        version_ = getDefaultInstance().getVersion();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string version = 1;</code>
+       */
+      public Builder setVersionBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        version_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional string build_date = 2;
+      private java.lang.Object buildDate_ = "";
+      /**
+       * <code>optional string build_date = 2;</code>
+       */
+      public boolean hasBuildDate() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional string build_date = 2;</code>
+       */
+      public java.lang.String getBuildDate() {
+        java.lang.Object ref = buildDate_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          buildDate_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string build_date = 2;</code>
+       */
+      public com.google.protobuf.ByteString
+          getBuildDateBytes() {
+        java.lang.Object ref = buildDate_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          buildDate_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string build_date = 2;</code>
+       */
+      public Builder setBuildDate(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        buildDate_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string build_date = 2;</code>
+       */
+      public Builder clearBuildDate() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        buildDate_ = getDefaultInstance().getBuildDate();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string build_date = 2;</code>
+       */
+      public Builder setBuildDateBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        buildDate_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional double build_time = 3;
+      private double buildTime_ ;
+      /**
+       * <code>optional double build_time = 3;</code>
+       */
+      public boolean hasBuildTime() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional double build_time = 3;</code>
+       */
+      public double getBuildTime() {
+        return buildTime_;
+      }
+      /**
+       * <code>optional double build_time = 3;</code>
+       */
+      public Builder setBuildTime(double value) {
+        bitField0_ |= 0x00000004;
+        buildTime_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double build_time = 3;</code>
+       */
+      public Builder clearBuildTime() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        buildTime_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // optional string build_user = 4;
+      private java.lang.Object buildUser_ = "";
+      /**
+       * <code>optional string build_user = 4;</code>
+       */
+      public boolean hasBuildUser() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional string build_user = 4;</code>
+       */
+      public java.lang.String getBuildUser() {
+        java.lang.Object ref = buildUser_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          buildUser_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string build_user = 4;</code>
+       */
+      public com.google.protobuf.ByteString
+          getBuildUserBytes() {
+        java.lang.Object ref = buildUser_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          buildUser_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string build_user = 4;</code>
+       */
+      public Builder setBuildUser(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+        buildUser_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string build_user = 4;</code>
+       */
+      public Builder clearBuildUser() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        buildUser_ = getDefaultInstance().getBuildUser();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string build_user = 4;</code>
+       */
+      public Builder setBuildUserBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+        buildUser_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional string git_sha = 5;
+      private java.lang.Object gitSha_ = "";
+      /**
+       * <code>optional string git_sha = 5;</code>
+       */
+      public boolean hasGitSha() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional string git_sha = 5;</code>
+       */
+      public java.lang.String getGitSha() {
+        java.lang.Object ref = gitSha_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          gitSha_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string git_sha = 5;</code>
+       */
+      public com.google.protobuf.ByteString
+          getGitShaBytes() {
+        java.lang.Object ref = gitSha_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          gitSha_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string git_sha = 5;</code>
+       */
+      public Builder setGitSha(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000010;
+        gitSha_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string git_sha = 5;</code>
+       */
+      public Builder clearGitSha() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        gitSha_ = getDefaultInstance().getGitSha();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string git_sha = 5;</code>
+       */
+      public Builder setGitShaBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000010;
+        gitSha_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional string git_branch = 6;
+      private java.lang.Object gitBranch_ = "";
+      /**
+       * <code>optional string git_branch = 6;</code>
+       */
+      public boolean hasGitBranch() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional string git_branch = 6;</code>
+       */
+      public java.lang.String getGitBranch() {
+        java.lang.Object ref = gitBranch_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          gitBranch_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string git_branch = 6;</code>
+       */
+      public com.google.protobuf.ByteString
+          getGitBranchBytes() {
+        java.lang.Object ref = gitBranch_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          gitBranch_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string git_branch = 6;</code>
+       */
+      public Builder setGitBranch(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000020;
+        gitBranch_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string git_branch = 6;</code>
+       */
+      public Builder clearGitBranch() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        gitBranch_ = getDefaultInstance().getGitBranch();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string git_branch = 6;</code>
+       */
+      public Builder setGitBranchBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000020;
+        gitBranch_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional string git_tag = 7;
+      private java.lang.Object gitTag_ = "";
+      /**
+       * <code>optional string git_tag = 7;</code>
+       */
+      public boolean hasGitTag() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional string git_tag = 7;</code>
+       */
+      public java.lang.String getGitTag() {
+        java.lang.Object ref = gitTag_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          gitTag_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string git_tag = 7;</code>
+       */
+      public com.google.protobuf.ByteString
+          getGitTagBytes() {
+        java.lang.Object ref = gitTag_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          gitTag_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string git_tag = 7;</code>
+       */
+      public Builder setGitTag(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000040;
+        gitTag_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string git_tag = 7;</code>
+       */
+      public Builder clearGitTag() {
+        bitField0_ = (bitField0_ & ~0x00000040);
+        gitTag_ = getDefaultInstance().getGitTag();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string git_tag = 7;</code>
+       */
+      public Builder setGitTagBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000040;
+        gitTag_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.VersionInfo)
+    }
+
+    static {
+      defaultInstance = new VersionInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.VersionInfo)
+  }
+
+  public interface FlagOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string name = 1;
+    /**
+     * <code>required string name = 1;</code>
+     */
+    boolean hasName();
+    /**
+     * <code>required string name = 1;</code>
+     */
+    java.lang.String getName();
+    /**
+     * <code>required string name = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getNameBytes();
+
+    // optional string value = 2;
+    /**
+     * <code>optional string value = 2;</code>
+     */
+    boolean hasValue();
+    /**
+     * <code>optional string value = 2;</code>
+     */
+    java.lang.String getValue();
+    /**
+     * <code>optional string value = 2;</code>
+     */
+    com.google.protobuf.ByteString
+        getValueBytes();
+  }
+  /**
+   * Protobuf type {@code mesos.Flag}
+   *
+   * <pre>
+   **
+   * Flag consists of a name and optionally its value.
+   * </pre>
+   */
+  public static final class Flag extends
+      com.google.protobuf.GeneratedMessage
+      implements FlagOrBuilder {
+    // Use Flag.newBuilder() to construct.
+    private Flag(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Flag(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Flag defaultInstance;
+    public static Flag getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Flag getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Flag(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              name_ = input.readBytes();
+              break;
+            }
+            case 18: {
+              bitField0_ |= 0x00000002;
+              value_ = input.readBytes();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_Flag_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_Flag_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.Flag.class, org.apache.mesos.Protos.Flag.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Flag> PARSER =
+        new com.google.protobuf.AbstractParser<Flag>() {
+      public Flag parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Flag(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Flag> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string name = 1;
+    public static final int NAME_FIELD_NUMBER = 1;
+    private java.lang.Object name_;
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public boolean hasName() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public java.lang.String getName() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          name_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getNameBytes() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        name_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional string value = 2;
+    public static final int VALUE_FIELD_NUMBER = 2;
+    private java.lang.Object value_;
+    /**
+     * <code>optional string value = 2;</code>
+     */
+    public boolean hasValue() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional string value = 2;</code>
+     */
+    public java.lang.String getValue() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          value_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string value = 2;</code>
+     */
+    public com.google.protobuf.ByteString
+        getValueBytes() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        value_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      name_ = "";
+      value_ = "";
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasName()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(2, getValueBytes());
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(2, getValueBytes());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.Flag parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Flag parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Flag parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Flag parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Flag parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Flag parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Flag parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.Flag parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Flag parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Flag parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.Flag prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.Flag}
+     *
+     * <pre>
+     **
+     * Flag consists of a name and optionally its value.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.FlagOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_Flag_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_Flag_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.Flag.class, org.apache.mesos.Protos.Flag.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.Flag.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        name_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        value_ = "";
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_Flag_descriptor;
+      }
+
+      public org.apache.mesos.Protos.Flag getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.Flag.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.Flag build() {
+        org.apache.mesos.Protos.Flag result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.Flag buildPartial() {
+        org.apache.mesos.Protos.Flag result = new org.apache.mesos.Protos.Flag(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.name_ = name_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.value_ = value_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.Flag) {
+          return mergeFrom((org.apache.mesos.Protos.Flag)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.Flag other) {
+        if (other == org.apache.mesos.Protos.Flag.getDefaultInstance()) return this;
+        if (other.hasName()) {
+          bitField0_ |= 0x00000001;
+          name_ = other.name_;
+          onChanged();
+        }
+        if (other.hasValue()) {
+          bitField0_ |= 0x00000002;
+          value_ = other.value_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasName()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.Flag parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.Flag) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string name = 1;
+      private java.lang.Object name_ = "";
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public boolean hasName() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public java.lang.String getName() {
+        java.lang.Object ref = name_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          name_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        java.lang.Object ref = name_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          name_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder setName(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder clearName() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        name_ = getDefaultInstance().getName();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder setNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional string value = 2;
+      private java.lang.Object value_ = "";
+      /**
+       * <code>optional string value = 2;</code>
+       */
+      public boolean hasValue() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional string value = 2;</code>
+       */
+      public java.lang.String getValue() {
+        java.lang.Object ref = value_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          value_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string value = 2;</code>
+       */
+      public com.google.protobuf.ByteString
+          getValueBytes() {
+        java.lang.Object ref = value_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          value_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string value = 2;</code>
+       */
+      public Builder setValue(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string value = 2;</code>
+       */
+      public Builder clearValue() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        value_ = getDefaultInstance().getValue();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string value = 2;</code>
+       */
+      public Builder setValueBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.Flag)
+    }
+
+    static {
+      defaultInstance = new Flag(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.Flag)
+  }
+
+  public interface RoleOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string name = 1;
+    /**
+     * <code>required string name = 1;</code>
+     */
+    boolean hasName();
+    /**
+     * <code>required string name = 1;</code>
+     */
+    java.lang.String getName();
+    /**
+     * <code>required string name = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getNameBytes();
+
+    // required double weight = 2;
+    /**
+     * <code>required double weight = 2;</code>
+     */
+    boolean hasWeight();
+    /**
+     * <code>required double weight = 2;</code>
+     */
+    double getWeight();
+
+    // repeated .mesos.FrameworkID frameworks = 3;
+    /**
+     * <code>repeated .mesos.FrameworkID frameworks = 3;</code>
+     */
+    java.util.List<org.apache.mesos.Protos.FrameworkID> 
+        getFrameworksList();
+    /**
+     * <code>repeated .mesos.FrameworkID frameworks = 3;</code>
+     */
+    org.apache.mesos.Protos.FrameworkID getFrameworks(int index);
+    /**
+     * <code>repeated .mesos.FrameworkID frameworks = 3;</code>
+     */
+    int getFrameworksCount();
+    /**
+     * <code>repeated .mesos.FrameworkID frameworks = 3;</code>
+     */
+    java.util.List<? extends org.apache.mesos.Protos.FrameworkIDOrBuilder> 
+        getFrameworksOrBuilderList();
+    /**
+     * <code>repeated .mesos.FrameworkID frameworks = 3;</code>
+     */
+    org.apache.mesos.Protos.FrameworkIDOrBuilder getFrameworksOrBuilder(
+        int index);
+
+    // repeated .mesos.Resource resources = 4;
+    /**
+     * <code>repeated .mesos.Resource resources = 4;</code>
+     */
+    java.util.List<org.apache.mesos.Protos.Resource> 
+        getResourcesList();
+    /**
+     * <code>repeated .mesos.Resource resources = 4;</code>
+     */
+    org.apache.mesos.Protos.Resource getResources(int index);
+    /**
+     * <code>repeated .mesos.Resource resources = 4;</code>
+     */
+    int getResourcesCount();
+    /**
+     * <code>repeated .mesos.Resource resources = 4;</code>
+     */
+    java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+        getResourcesOrBuilderList();
+    /**
+     * <code>repeated .mesos.Resource resources = 4;</code>
+     */
+    org.apache.mesos.Protos.ResourceOrBuilder getResourcesOrBuilder(
+        int index);
+  }
+  /**
+   * Protobuf type {@code mesos.Role}
+   *
+   * <pre>
+   **
+   * Describes a Role. Roles can be used to specify that certain resources are
+   * reserved for the use of one or more frameworks.
+   * </pre>
+   */
+  public static final class Role extends
+      com.google.protobuf.GeneratedMessage
+      implements RoleOrBuilder {
+    // Use Role.newBuilder() to construct.
+    private Role(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Role(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Role defaultInstance;
+    public static Role getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Role getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Role(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              name_ = input.readBytes();
+              break;
+            }
+            case 17: {
+              bitField0_ |= 0x00000002;
+              weight_ = input.readDouble();
+              break;
+            }
+            case 26: {
+              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
+                frameworks_ = new java.util.ArrayList<org.apache.mesos.Protos.FrameworkID>();
+                mutable_bitField0_ |= 0x00000004;
+              }
+              frameworks_.add(input.readMessage(org.apache.mesos.Protos.FrameworkID.PARSER, extensionRegistry));
+              break;
+            }
+            case 34: {
+              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
+                resources_ = new java.util.ArrayList<org.apache.mesos.Protos.Resource>();
+                mutable_bitField0_ |= 0x00000008;
+              }
+              resources_.add(input.readMessage(org.apache.mesos.Protos.Resource.PARSER, extensionRegistry));
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
+          frameworks_ = java.util.Collections.unmodifiableList(frameworks_);
+        }
+        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
+          resources_ = java.util.Collections.unmodifiableList(resources_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_Role_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_Role_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.Role.class, org.apache.mesos.Protos.Role.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Role> PARSER =
+        new com.google.protobuf.AbstractParser<Role>() {
+      public Role parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Role(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Role> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string name = 1;
+    public static final int NAME_FIELD_NUMBER = 1;
+    private java.lang.Object name_;
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public boolean hasName() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public java.lang.String getName() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          name_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getNameBytes() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        name_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // required double weight = 2;
+    public static final int WEIGHT_FIELD_NUMBER = 2;
+    private double weight_;
+    /**
+     * <code>required double weight = 2;</code>
+     */
+    public boolean hasWeight() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>required double weight = 2;</code>
+     */
+    public double getWeight() {
+      return weight_;
+    }
+
+    // repeated .mesos.FrameworkID frameworks = 3;
+    public static final int FRAMEWORKS_FIELD_NUMBER = 3;
+    private java.util.List<org.apache.mesos.Protos.FrameworkID> frameworks_;
+    /**
+     * <code>repeated .mesos.FrameworkID frameworks = 3;</code>
+     */
+    public java.util.List<org.apache.mesos.Protos.FrameworkID> getFrameworksList() {
+      return frameworks_;
+    }
+    /**
+     * <code>repeated .mesos.FrameworkID frameworks = 3;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.Protos.FrameworkIDOrBuilder> 
+        getFrameworksOrBuilderList() {
+      return frameworks_;
+    }
+    /**
+     * <code>repeated .mesos.FrameworkID frameworks = 3;</code>
+     */
+    public int getFrameworksCount() {
+      return frameworks_.size();
+    }
+    /**
+     * <code>repeated .mesos.FrameworkID frameworks = 3;</code>
+     */
+    public org.apache.mesos.Protos.FrameworkID getFrameworks(int index) {
+      return frameworks_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.FrameworkID frameworks = 3;</code>
+     */
+    public org.apache.mesos.Protos.FrameworkIDOrBuilder getFrameworksOrBuilder(
+        int index) {
+      return frameworks_.get(index);
+    }
+
+    // repeated .mesos.Resource resources = 4;
+    public static final int RESOURCES_FIELD_NUMBER = 4;
+    private java.util.List<org.apache.mesos.Protos.Resource> resources_;
+    /**
+     * <code>repeated .mesos.Resource resources = 4;</code>
+     */
+    public java.util.List<org.apache.mesos.Protos.Resource> getResourcesList() {
+      return resources_;
+    }
+    /**
+     * <code>repeated .mesos.Resource resources = 4;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+        getResourcesOrBuilderList() {
+      return resources_;
+    }
+    /**
+     * <code>repeated .mesos.Resource resources = 4;</code>
+     */
+    public int getResourcesCount() {
+      return resources_.size();
+    }
+    /**
+     * <code>repeated .mesos.Resource resources = 4;</code>
+     */
+    public org.apache.mesos.Protos.Resource getResources(int index) {
+      return resources_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.Resource resources = 4;</code>
+     */
+    public org.apache.mesos.Protos.ResourceOrBuilder getResourcesOrBuilder(
+        int index) {
+      return resources_.get(index);
+    }
+
+    private void initFields() {
+      name_ = "";
+      weight_ = 0D;
+      frameworks_ = java.util.Collections.emptyList();
+      resources_ = java.util.Collections.emptyList();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasName()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasWeight()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      for (int i = 0; i < getFrameworksCount(); i++) {
+        if (!getFrameworks(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      for (int i = 0; i < getResourcesCount(); i++) {
+        if (!getResources(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeDouble(2, weight_);
+      }
+      for (int i = 0; i < frameworks_.size(); i++) {
+        output.writeMessage(3, frameworks_.get(i));
+      }
+      for (int i = 0; i < resources_.size(); i++) {
+        output.writeMessage(4, resources_.get(i));
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(2, weight_);
+      }
+      for (int i = 0; i < frameworks_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, frameworks_.get(i));
+      }
+      for (int i = 0; i < resources_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, resources_.get(i));
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.Role parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Role parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Role parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Role parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Role parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Role parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Role parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.Role parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Role parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Role parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.Role prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.Role}
+     *
+     * <pre>
+     **
+     * Describes a Role. Roles can be used to specify that certain resources are
+     * reserved for the use of one or more frameworks.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.RoleOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_Role_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_Role_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.Role.class, org.apache.mesos.Protos.Role.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.Role.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getFrameworksFieldBuilder();
+          getResourcesFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        name_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        weight_ = 0D;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        if (frameworksBuilder_ == null) {
+          frameworks_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000004);
+        } else {
+          frameworksBuilder_.clear();
+        }
+        if (resourcesBuilder_ == null) {
+          resources_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000008);
+        } else {
+          resourcesBuilder_.clear();
+        }
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_Role_descriptor;
+      }
+
+      public org.apache.mesos.Protos.Role getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.Role.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.Role build() {
+        org.apache.mesos.Protos.Role result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.Role buildPartial() {
+        org.apache.mesos.Protos.Role result = new org.apache.mesos.Protos.Role(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.name_ = name_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.weight_ = weight_;
+        if (frameworksBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) == 0x00000004)) {
+            frameworks_ = java.util.Collections.unmodifiableList(frameworks_);
+            bitField0_ = (bitField0_ & ~0x00000004);
+          }
+          result.frameworks_ = frameworks_;
+        } else {
+          result.frameworks_ = frameworksBuilder_.build();
+        }
+        if (resourcesBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008)) {
+            resources_ = java.util.Collections.unmodifiableList(resources_);
+            bitField0_ = (bitField0_ & ~0x00000008);
+          }
+          result.resources_ = resources_;
+        } else {
+          result.resources_ = resourcesBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.Role) {
+          return mergeFrom((org.apache.mesos.Protos.Role)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.Role other) {
+        if (other == org.apache.mesos.Protos.Role.getDefaultInstance()) return this;
+        if (other.hasName()) {
+          bitField0_ |= 0x00000001;
+          name_ = other.name_;
+          onChanged();
+        }
+        if (other.hasWeight()) {
+          setWeight(other.getWeight());
+        }
+        if (frameworksBuilder_ == null) {
+          if (!other.frameworks_.isEmpty()) {
+            if (frameworks_.isEmpty()) {
+              frameworks_ = other.frameworks_;
+              bitField0_ = (bitField0_ & ~0x00000004);
+            } else {
+              ensureFrameworksIsMutable();
+              frameworks_.addAll(other.frameworks_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.frameworks_.isEmpty()) {
+            if (frameworksBuilder_.isEmpty()) {
+              frameworksBuilder_.dispose();
+              frameworksBuilder_ = null;
+              frameworks_ = other.frameworks_;
+              bitField0_ = (bitField0_ & ~0x00000004);
+              frameworksBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getFrameworksFieldBuilder() : null;
+            } else {
+              frameworksBuilder_.addAllMessages(other.frameworks_);
+            }
+          }
+        }
+        if (resourcesBuilder_ == null) {
+          if (!other.resources_.isEmpty()) {
+            if (resources_.isEmpty()) {
+              resources_ = other.resources_;
+              bitField0_ = (bitField0_ & ~0x00000008);
+            } else {
+              ensureResourcesIsMutable();
+              resources_.addAll(other.resources_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.resources_.isEmpty()) {
+            if (resourcesBuilder_.isEmpty()) {
+              resourcesBuilder_.dispose();
+              resourcesBuilder_ = null;
+              resources_ = other.resources_;
+              bitField0_ = (bitField0_ & ~0x00000008);
+              resourcesBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getResourcesFieldBuilder() : null;
+            } else {
+              resourcesBuilder_.addAllMessages(other.resources_);
+            }
+          }
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasName()) {
+          
+          return false;
+        }
+        if (!hasWeight()) {
+          
+          return false;
+        }
+        for (int i = 0; i < getFrameworksCount(); i++) {
+          if (!getFrameworks(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        for (int i = 0; i < getResourcesCount(); i++) {
+          if (!getResources(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.Role parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.Role) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string name = 1;
+      private java.lang.Object name_ = "";
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public boolean hasName() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public java.lang.String getName() {
+        java.lang.Object ref = name_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          name_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        java.lang.Object ref = name_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          name_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder setName(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder clearName() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        name_ = getDefaultInstance().getName();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder setNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+
+      // required double weight = 2;
+      private double weight_ ;
+      /**
+       * <code>required double weight = 2;</code>
+       */
+      public boolean hasWeight() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required double weight = 2;</code>
+       */
+      public double getWeight() {
+        return weight_;
+      }
+      /**
+       * <code>required double weight = 2;</code>
+       */
+      public Builder setWeight(double value) {
+        bitField0_ |= 0x00000002;
+        weight_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required double weight = 2;</code>
+       */
+      public Builder clearWeight() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        weight_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // repeated .mesos.FrameworkID frameworks = 3;
+      private java.util.List<org.apache.mesos.Protos.FrameworkID> frameworks_ =
+        java.util.Collections.emptyList();
+      private void ensureFrameworksIsMutable() {
+        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
+          frameworks_ = new java.util.ArrayList<org.apache.mesos.Protos.FrameworkID>(frameworks_);
+          bitField0_ |= 0x00000004;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.FrameworkID, org.apache.mesos.Protos.FrameworkID.Builder, org.apache.mesos.Protos.FrameworkIDOrBuilder> frameworksBuilder_;
+
+      /**
+       * <code>repeated .mesos.FrameworkID frameworks = 3;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.FrameworkID> getFrameworksList() {
+        if (frameworksBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(frameworks_);
+        } else {
+          return frameworksBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.FrameworkID frameworks = 3;</code>
+       */
+      public int getFrameworksCount() {
+        if (frameworksBuilder_ == null) {
+          return frameworks_.size();
+        } else {
+          return frameworksBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.FrameworkID frameworks = 3;</code>
+       */
+      public org.apache.mesos.Protos.FrameworkID getFrameworks(int index) {
+        if (frameworksBuilder_ == null) {
+          return frameworks_.get(index);
+        } else {
+          return frameworksBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.FrameworkID frameworks = 3;</code>
+       */
+      public Builder setFrameworks(
+          int index, org.apache.mesos.Protos.FrameworkID value) {
+        if (frameworksBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureFrameworksIsMutable();
+          frameworks_.set(index, value);
+          onChanged();
+        } else {
+          frameworksBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.FrameworkID frameworks = 3;</code>
+       */
+      public Builder setFrameworks(
+          int index, org.apache.mesos.Protos.FrameworkID.Builder builderForValue) {
+        if (frameworksBuilder_ == null) {
+          ensureFrameworksIsMutable();
+          frameworks_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          frameworksBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.FrameworkID frameworks = 3;</code>
+       */
+      public Builder addFrameworks(org.apache.mesos.Protos.FrameworkID value) {
+        if (frameworksBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureFrameworksIsMutable();
+          frameworks_.add(value);
+          onChanged();
+        } else {
+          frameworksBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.FrameworkID frameworks = 3;</code>
+       */
+      public Builder addFrameworks(
+          int index, org.apache.mesos.Protos.FrameworkID value) {
+        if (frameworksBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureFrameworksIsMutable();
+          frameworks_.add(index, value);
+          onChanged();
+        } else {
+          frameworksBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.FrameworkID frameworks = 3;</code>
+       */
+      public Builder addFrameworks(
+          org.apache.mesos.Protos.FrameworkID.Builder builderForValue) {
+        if (frameworksBuilder_ == null) {
+          ensureFrameworksIsMutable();
+          frameworks_.add(builderForValue.build());
+          onChanged();
+        } else {
+          frameworksBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.FrameworkID frameworks = 3;</code>
+       */
+      public Builder addFrameworks(
+          int index, org.apache.mesos.Protos.FrameworkID.Builder builderForValue) {
+        if (frameworksBuilder_ == null) {
+          ensureFrameworksIsMutable();
+          frameworks_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          frameworksBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.FrameworkID frameworks = 3;</code>
+       */
+      public Builder addAllFrameworks(
+          java.lang.Iterable<? extends org.apache.mesos.Protos.FrameworkID> values) {
+        if (frameworksBuilder_ == null) {
+          ensureFrameworksIsMutable();
+          super.addAll(values, frameworks_);
+          onChanged();
+        } else {
+          frameworksBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.FrameworkID frameworks = 3;</code>
+       */
+      public Builder clearFrameworks() {
+        if (frameworksBuilder_ == null) {
+          frameworks_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000004);
+          onChanged();
+        } else {
+          frameworksBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.FrameworkID frameworks = 3;</code>
+       */
+      public Builder removeFrameworks(int index) {
+        if (frameworksBuilder_ == null) {
+          ensureFrameworksIsMutable();
+          frameworks_.remove(index);
+          onChanged();
+        } else {
+          frameworksBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.FrameworkID frameworks = 3;</code>
+       */
+      public org.apache.mesos.Protos.FrameworkID.Builder getFrameworksBuilder(
+          int index) {
+        return getFrameworksFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.FrameworkID frameworks = 3;</code>
+       */
+      public org.apache.mesos.Protos.FrameworkIDOrBuilder getFrameworksOrBuilder(
+          int index) {
+        if (frameworksBuilder_ == null) {
+          return frameworks_.get(index);  } else {
+          return frameworksBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.FrameworkID frameworks = 3;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.FrameworkIDOrBuilder> 
+           getFrameworksOrBuilderList() {
+        if (frameworksBuilder_ != null) {
+          return frameworksBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(frameworks_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.FrameworkID frameworks = 3;</code>
+       */
+      public org.apache.mesos.Protos.FrameworkID.Builder addFrameworksBuilder() {
+        return getFrameworksFieldBuilder().addBuilder(
+            org.apache.mesos.Protos.FrameworkID.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.FrameworkID frameworks = 3;</code>
+       */
+      public org.apache.mesos.Protos.FrameworkID.Builder addFrameworksBuilder(
+          int index) {
+        return getFrameworksFieldBuilder().addBuilder(
+            index, org.apache.mesos.Protos.FrameworkID.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.FrameworkID frameworks = 3;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.FrameworkID.Builder> 
+           getFrameworksBuilderList() {
+        return getFrameworksFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.FrameworkID, org.apache.mesos.Protos.FrameworkID.Builder, org.apache.mesos.Protos.FrameworkIDOrBuilder> 
+          getFrameworksFieldBuilder() {
+        if (frameworksBuilder_ == null) {
+          frameworksBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.FrameworkID, org.apache.mesos.Protos.FrameworkID.Builder, org.apache.mesos.Protos.FrameworkIDOrBuilder>(
+                  frameworks_,
+                  ((bitField0_ & 0x00000004) == 0x00000004),
+                  getParentForChildren(),
+                  isClean());
+          frameworks_ = null;
+        }
+        return frameworksBuilder_;
+      }
+
+      // repeated .mesos.Resource resources = 4;
+      private java.util.List<org.apache.mesos.Protos.Resource> resources_ =
+        java.util.Collections.emptyList();
+      private void ensureResourcesIsMutable() {
+        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
+          resources_ = new java.util.ArrayList<org.apache.mesos.Protos.Resource>(resources_);
+          bitField0_ |= 0x00000008;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder> resourcesBuilder_;
+
+      /**
+       * <code>repeated .mesos.Resource resources = 4;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.Resource> getResourcesList() {
+        if (resourcesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(resources_);
+        } else {
+          return resourcesBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 4;</code>
+       */
+      public int getResourcesCount() {
+        if (resourcesBuilder_ == null) {
+          return resources_.size();
+        } else {
+          return resourcesBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 4;</code>
+       */
+      public org.apache.mesos.Protos.Resource getResources(int index) {
+        if (resourcesBuilder_ == null) {
+          return resources_.get(index);
+        } else {
+          return resourcesBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 4;</code>
+       */
+      public Builder setResources(
+          int index, org.apache.mesos.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.set(index, value);
+          onChanged();
+        } else {
+          resourcesBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 4;</code>
+       */
+      public Builder setResources(
+          int index, org.apache.mesos.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 4;</code>
+       */
+      public Builder addResources(org.apache.mesos.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.add(value);
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 4;</code>
+       */
+      public Builder addResources(
+          int index, org.apache.mesos.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.add(index, value);
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 4;</code>
+       */
+      public Builder addResources(
+          org.apache.mesos.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.add(builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 4;</code>
+       */
+      public Builder addResources(
+          int index, org.apache.mesos.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 4;</code>
+       */
+      public Builder addAllResources(
+          java.lang.Iterable<? extends org.apache.mesos.Protos.Resource> values) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          super.addAll(values, resources_);
+          onChanged();
+        } else {
+          resourcesBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 4;</code>
+       */
+      public Builder clearResources() {
+        if (resourcesBuilder_ == null) {
+          resources_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000008);
+          onChanged();
+        } else {
+          resourcesBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 4;</code>
+       */
+      public Builder removeResources(int index) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.remove(index);
+          onChanged();
+        } else {
+          resourcesBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 4;</code>
+       */
+      public org.apache.mesos.Protos.Resource.Builder getResourcesBuilder(
+          int index) {
+        return getResourcesFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 4;</code>
+       */
+      public org.apache.mesos.Protos.ResourceOrBuilder getResourcesOrBuilder(
+          int index) {
+        if (resourcesBuilder_ == null) {
+          return resources_.get(index);  } else {
+          return resourcesBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 4;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.ResourceOrBuilder> 
+           getResourcesOrBuilderList() {
+        if (resourcesBuilder_ != null) {
+          return resourcesBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(resources_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 4;</code>
+       */
+      public org.apache.mesos.Protos.Resource.Builder addResourcesBuilder() {
+        return getResourcesFieldBuilder().addBuilder(
+            org.apache.mesos.Protos.Resource.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 4;</code>
+       */
+      public org.apache.mesos.Protos.Resource.Builder addResourcesBuilder(
+          int index) {
+        return getResourcesFieldBuilder().addBuilder(
+            index, org.apache.mesos.Protos.Resource.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.Resource resources = 4;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.Resource.Builder> 
+           getResourcesBuilderList() {
+        return getResourcesFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder> 
+          getResourcesFieldBuilder() {
+        if (resourcesBuilder_ == null) {
+          resourcesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.Resource, org.apache.mesos.Protos.Resource.Builder, org.apache.mesos.Protos.ResourceOrBuilder>(
+                  resources_,
+                  ((bitField0_ & 0x00000008) == 0x00000008),
+                  getParentForChildren(),
+                  isClean());
+          resources_ = null;
+        }
+        return resourcesBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.Role)
+    }
+
+    static {
+      defaultInstance = new Role(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.Role)
+  }
+
+  public interface MetricOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string name = 1;
+    /**
+     * <code>required string name = 1;</code>
+     */
+    boolean hasName();
+    /**
+     * <code>required string name = 1;</code>
+     */
+    java.lang.String getName();
+    /**
+     * <code>required string name = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getNameBytes();
+
+    // optional double value = 2;
+    /**
+     * <code>optional double value = 2;</code>
+     */
+    boolean hasValue();
+    /**
+     * <code>optional double value = 2;</code>
+     */
+    double getValue();
+  }
+  /**
+   * Protobuf type {@code mesos.Metric}
+   *
+   * <pre>
+   **
+   * Metric consists of a name and optionally its value.
+   * </pre>
+   */
+  public static final class Metric extends
+      com.google.protobuf.GeneratedMessage
+      implements MetricOrBuilder {
+    // Use Metric.newBuilder() to construct.
+    private Metric(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Metric(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Metric defaultInstance;
+    public static Metric getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Metric getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Metric(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              name_ = input.readBytes();
+              break;
+            }
+            case 17: {
+              bitField0_ |= 0x00000002;
+              value_ = input.readDouble();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_Metric_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_Metric_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.Metric.class, org.apache.mesos.Protos.Metric.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Metric> PARSER =
+        new com.google.protobuf.AbstractParser<Metric>() {
+      public Metric parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Metric(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Metric> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string name = 1;
+    public static final int NAME_FIELD_NUMBER = 1;
+    private java.lang.Object name_;
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public boolean hasName() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public java.lang.String getName() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          name_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getNameBytes() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        name_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional double value = 2;
+    public static final int VALUE_FIELD_NUMBER = 2;
+    private double value_;
+    /**
+     * <code>optional double value = 2;</code>
+     */
+    public boolean hasValue() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional double value = 2;</code>
+     */
+    public double getValue() {
+      return value_;
+    }
+
+    private void initFields() {
+      name_ = "";
+      value_ = 0D;
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasName()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeDouble(2, value_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(2, value_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.Metric parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Metric parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Metric parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Metric parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Metric parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Metric parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Metric parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.Metric parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Metric parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Metric parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.Metric prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.Metric}
+     *
+     * <pre>
+     **
+     * Metric consists of a name and optionally its value.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.MetricOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_Metric_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_Metric_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.Metric.class, org.apache.mesos.Protos.Metric.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.Metric.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        name_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        value_ = 0D;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_Metric_descriptor;
+      }
+
+      public org.apache.mesos.Protos.Metric getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.Metric.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.Metric build() {
+        org.apache.mesos.Protos.Metric result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.Metric buildPartial() {
+        org.apache.mesos.Protos.Metric result = new org.apache.mesos.Protos.Metric(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.name_ = name_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.value_ = value_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.Metric) {
+          return mergeFrom((org.apache.mesos.Protos.Metric)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.Metric other) {
+        if (other == org.apache.mesos.Protos.Metric.getDefaultInstance()) return this;
+        if (other.hasName()) {
+          bitField0_ |= 0x00000001;
+          name_ = other.name_;
+          onChanged();
+        }
+        if (other.hasValue()) {
+          setValue(other.getValue());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasName()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.Metric parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.Metric) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string name = 1;
+      private java.lang.Object name_ = "";
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public boolean hasName() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public java.lang.String getName() {
+        java.lang.Object ref = name_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          name_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        java.lang.Object ref = name_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          name_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder setName(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder clearName() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        name_ = getDefaultInstance().getName();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder setNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional double value = 2;
+      private double value_ ;
+      /**
+       * <code>optional double value = 2;</code>
+       */
+      public boolean hasValue() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional double value = 2;</code>
+       */
+      public double getValue() {
+        return value_;
+      }
+      /**
+       * <code>optional double value = 2;</code>
+       */
+      public Builder setValue(double value) {
+        bitField0_ |= 0x00000002;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double value = 2;</code>
+       */
+      public Builder clearValue() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        value_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.Metric)
+    }
+
+    static {
+      defaultInstance = new Metric(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.Metric)
+  }
+
+  public interface FileInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string path = 1;
+    /**
+     * <code>required string path = 1;</code>
+     *
+     * <pre>
+     * Absolute path to the file.
+     * </pre>
+     */
+    boolean hasPath();
+    /**
+     * <code>required string path = 1;</code>
+     *
+     * <pre>
+     * Absolute path to the file.
+     * </pre>
+     */
+    java.lang.String getPath();
+    /**
+     * <code>required string path = 1;</code>
+     *
+     * <pre>
+     * Absolute path to the file.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getPathBytes();
+
+    // optional int32 nlink = 2;
+    /**
+     * <code>optional int32 nlink = 2;</code>
+     *
+     * <pre>
+     * Number of hard links.
+     * </pre>
+     */
+    boolean hasNlink();
+    /**
+     * <code>optional int32 nlink = 2;</code>
+     *
+     * <pre>
+     * Number of hard links.
+     * </pre>
+     */
+    int getNlink();
+
+    // optional uint64 size = 3;
+    /**
+     * <code>optional uint64 size = 3;</code>
+     *
+     * <pre>
+     * Total size in bytes.
+     * </pre>
+     */
+    boolean hasSize();
+    /**
+     * <code>optional uint64 size = 3;</code>
+     *
+     * <pre>
+     * Total size in bytes.
+     * </pre>
+     */
+    long getSize();
+
+    // optional .mesos.TimeInfo mtime = 4;
+    /**
+     * <code>optional .mesos.TimeInfo mtime = 4;</code>
+     *
+     * <pre>
+     * Last modification time.
+     * </pre>
+     */
+    boolean hasMtime();
+    /**
+     * <code>optional .mesos.TimeInfo mtime = 4;</code>
+     *
+     * <pre>
+     * Last modification time.
+     * </pre>
+     */
+    org.apache.mesos.Protos.TimeInfo getMtime();
+    /**
+     * <code>optional .mesos.TimeInfo mtime = 4;</code>
+     *
+     * <pre>
+     * Last modification time.
+     * </pre>
+     */
+    org.apache.mesos.Protos.TimeInfoOrBuilder getMtimeOrBuilder();
+
+    // optional uint32 mode = 5;
+    /**
+     * <code>optional uint32 mode = 5;</code>
+     *
+     * <pre>
+     * Represents a file's mode and permission bits. The bits have the same
+     * definition on all systems and is portable.
+     * </pre>
+     */
+    boolean hasMode();
+    /**
+     * <code>optional uint32 mode = 5;</code>
+     *
+     * <pre>
+     * Represents a file's mode and permission bits. The bits have the same
+     * definition on all systems and is portable.
+     * </pre>
+     */
+    int getMode();
+
+    // optional string uid = 6;
+    /**
+     * <code>optional string uid = 6;</code>
+     *
+     * <pre>
+     * User ID of owner.
+     * </pre>
+     */
+    boolean hasUid();
+    /**
+     * <code>optional string uid = 6;</code>
+     *
+     * <pre>
+     * User ID of owner.
+     * </pre>
+     */
+    java.lang.String getUid();
+    /**
+     * <code>optional string uid = 6;</code>
+     *
+     * <pre>
+     * User ID of owner.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getUidBytes();
+
+    // optional string gid = 7;
+    /**
+     * <code>optional string gid = 7;</code>
+     *
+     * <pre>
+     * Group ID of owner.
+     * </pre>
+     */
+    boolean hasGid();
+    /**
+     * <code>optional string gid = 7;</code>
+     *
+     * <pre>
+     * Group ID of owner.
+     * </pre>
+     */
+    java.lang.String getGid();
+    /**
+     * <code>optional string gid = 7;</code>
+     *
+     * <pre>
+     * Group ID of owner.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getGidBytes();
+  }
+  /**
+   * Protobuf type {@code mesos.FileInfo}
+   *
+   * <pre>
+   **
+   * Describes a File.
+   * </pre>
+   */
+  public static final class FileInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements FileInfoOrBuilder {
+    // Use FileInfo.newBuilder() to construct.
+    private FileInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private FileInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final FileInfo defaultInstance;
+    public static FileInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public FileInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private FileInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              path_ = input.readBytes();
+              break;
+            }
+            case 16: {
+              bitField0_ |= 0x00000002;
+              nlink_ = input.readInt32();
+              break;
+            }
+            case 24: {
+              bitField0_ |= 0x00000004;
+              size_ = input.readUInt64();
+              break;
+            }
+            case 34: {
+              org.apache.mesos.Protos.TimeInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                subBuilder = mtime_.toBuilder();
+              }
+              mtime_ = input.readMessage(org.apache.mesos.Protos.TimeInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(mtime_);
+                mtime_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000008;
+              break;
+            }
+            case 40: {
+              bitField0_ |= 0x00000010;
+              mode_ = input.readUInt32();
+              break;
+            }
+            case 50: {
+              bitField0_ |= 0x00000020;
+              uid_ = input.readBytes();
+              break;
+            }
+            case 58: {
+              bitField0_ |= 0x00000040;
+              gid_ = input.readBytes();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_FileInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_FileInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.FileInfo.class, org.apache.mesos.Protos.FileInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<FileInfo> PARSER =
+        new com.google.protobuf.AbstractParser<FileInfo>() {
+      public FileInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new FileInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<FileInfo> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string path = 1;
+    public static final int PATH_FIELD_NUMBER = 1;
+    private java.lang.Object path_;
+    /**
+     * <code>required string path = 1;</code>
+     *
+     * <pre>
+     * Absolute path to the file.
+     * </pre>
+     */
+    public boolean hasPath() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string path = 1;</code>
+     *
+     * <pre>
+     * Absolute path to the file.
+     * </pre>
+     */
+    public java.lang.String getPath() {
+      java.lang.Object ref = path_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          path_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string path = 1;</code>
+     *
+     * <pre>
+     * Absolute path to the file.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getPathBytes() {
+      java.lang.Object ref = path_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        path_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional int32 nlink = 2;
+    public static final int NLINK_FIELD_NUMBER = 2;
+    private int nlink_;
+    /**
+     * <code>optional int32 nlink = 2;</code>
+     *
+     * <pre>
+     * Number of hard links.
+     * </pre>
+     */
+    public boolean hasNlink() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional int32 nlink = 2;</code>
+     *
+     * <pre>
+     * Number of hard links.
+     * </pre>
+     */
+    public int getNlink() {
+      return nlink_;
+    }
+
+    // optional uint64 size = 3;
+    public static final int SIZE_FIELD_NUMBER = 3;
+    private long size_;
+    /**
+     * <code>optional uint64 size = 3;</code>
+     *
+     * <pre>
+     * Total size in bytes.
+     * </pre>
+     */
+    public boolean hasSize() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional uint64 size = 3;</code>
+     *
+     * <pre>
+     * Total size in bytes.
+     * </pre>
+     */
+    public long getSize() {
+      return size_;
+    }
+
+    // optional .mesos.TimeInfo mtime = 4;
+    public static final int MTIME_FIELD_NUMBER = 4;
+    private org.apache.mesos.Protos.TimeInfo mtime_;
+    /**
+     * <code>optional .mesos.TimeInfo mtime = 4;</code>
+     *
+     * <pre>
+     * Last modification time.
+     * </pre>
+     */
+    public boolean hasMtime() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional .mesos.TimeInfo mtime = 4;</code>
+     *
+     * <pre>
+     * Last modification time.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.TimeInfo getMtime() {
+      return mtime_;
+    }
+    /**
+     * <code>optional .mesos.TimeInfo mtime = 4;</code>
+     *
+     * <pre>
+     * Last modification time.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.TimeInfoOrBuilder getMtimeOrBuilder() {
+      return mtime_;
+    }
+
+    // optional uint32 mode = 5;
+    public static final int MODE_FIELD_NUMBER = 5;
+    private int mode_;
+    /**
+     * <code>optional uint32 mode = 5;</code>
+     *
+     * <pre>
+     * Represents a file's mode and permission bits. The bits have the same
+     * definition on all systems and is portable.
+     * </pre>
+     */
+    public boolean hasMode() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional uint32 mode = 5;</code>
+     *
+     * <pre>
+     * Represents a file's mode and permission bits. The bits have the same
+     * definition on all systems and is portable.
+     * </pre>
+     */
+    public int getMode() {
+      return mode_;
+    }
+
+    // optional string uid = 6;
+    public static final int UID_FIELD_NUMBER = 6;
+    private java.lang.Object uid_;
+    /**
+     * <code>optional string uid = 6;</code>
+     *
+     * <pre>
+     * User ID of owner.
+     * </pre>
+     */
+    public boolean hasUid() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional string uid = 6;</code>
+     *
+     * <pre>
+     * User ID of owner.
+     * </pre>
+     */
+    public java.lang.String getUid() {
+      java.lang.Object ref = uid_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          uid_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string uid = 6;</code>
+     *
+     * <pre>
+     * User ID of owner.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getUidBytes() {
+      java.lang.Object ref = uid_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        uid_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional string gid = 7;
+    public static final int GID_FIELD_NUMBER = 7;
+    private java.lang.Object gid_;
+    /**
+     * <code>optional string gid = 7;</code>
+     *
+     * <pre>
+     * Group ID of owner.
+     * </pre>
+     */
+    public boolean hasGid() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional string gid = 7;</code>
+     *
+     * <pre>
+     * Group ID of owner.
+     * </pre>
+     */
+    public java.lang.String getGid() {
+      java.lang.Object ref = gid_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          gid_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string gid = 7;</code>
+     *
+     * <pre>
+     * Group ID of owner.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getGidBytes() {
+      java.lang.Object ref = gid_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        gid_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      path_ = "";
+      nlink_ = 0;
+      size_ = 0L;
+      mtime_ = org.apache.mesos.Protos.TimeInfo.getDefaultInstance();
+      mode_ = 0;
+      uid_ = "";
+      gid_ = "";
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasPath()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (hasMtime()) {
+        if (!getMtime().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getPathBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeInt32(2, nlink_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeUInt64(3, size_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeMessage(4, mtime_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeUInt32(5, mode_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeBytes(6, getUidBytes());
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeBytes(7, getGidBytes());
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getPathBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt32Size(2, nlink_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(3, size_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, mtime_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(5, mode_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(6, getUidBytes());
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(7, getGidBytes());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.FileInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.FileInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.FileInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.FileInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.FileInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.FileInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.FileInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.FileInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.FileInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.FileInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.FileInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.FileInfo}
+     *
+     * <pre>
+     **
+     * Describes a File.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.FileInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_FileInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_FileInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.FileInfo.class, org.apache.mesos.Protos.FileInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.FileInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getMtimeFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        path_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        nlink_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        size_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        if (mtimeBuilder_ == null) {
+          mtime_ = org.apache.mesos.Protos.TimeInfo.getDefaultInstance();
+        } else {
+          mtimeBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        mode_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000010);
+        uid_ = "";
+        bitField0_ = (bitField0_ & ~0x00000020);
+        gid_ = "";
+        bitField0_ = (bitField0_ & ~0x00000040);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_FileInfo_descriptor;
+      }
+
+      public org.apache.mesos.Protos.FileInfo getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.FileInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.FileInfo build() {
+        org.apache.mesos.Protos.FileInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.FileInfo buildPartial() {
+        org.apache.mesos.Protos.FileInfo result = new org.apache.mesos.Protos.FileInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.path_ = path_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.nlink_ = nlink_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.size_ = size_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        if (mtimeBuilder_ == null) {
+          result.mtime_ = mtime_;
+        } else {
+          result.mtime_ = mtimeBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.mode_ = mode_;
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        result.uid_ = uid_;
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        result.gid_ = gid_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.FileInfo) {
+          return mergeFrom((org.apache.mesos.Protos.FileInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.FileInfo other) {
+        if (other == org.apache.mesos.Protos.FileInfo.getDefaultInstance()) return this;
+        if (other.hasPath()) {
+          bitField0_ |= 0x00000001;
+          path_ = other.path_;
+          onChanged();
+        }
+        if (other.hasNlink()) {
+          setNlink(other.getNlink());
+        }
+        if (other.hasSize()) {
+          setSize(other.getSize());
+        }
+        if (other.hasMtime()) {
+          mergeMtime(other.getMtime());
+        }
+        if (other.hasMode()) {
+          setMode(other.getMode());
+        }
+        if (other.hasUid()) {
+          bitField0_ |= 0x00000020;
+          uid_ = other.uid_;
+          onChanged();
+        }
+        if (other.hasGid()) {
+          bitField0_ |= 0x00000040;
+          gid_ = other.gid_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasPath()) {
+          
+          return false;
+        }
+        if (hasMtime()) {
+          if (!getMtime().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.FileInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.FileInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string path = 1;
+      private java.lang.Object path_ = "";
+      /**
+       * <code>required string path = 1;</code>
+       *
+       * <pre>
+       * Absolute path to the file.
+       * </pre>
+       */
+      public boolean hasPath() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string path = 1;</code>
+       *
+       * <pre>
+       * Absolute path to the file.
+       * </pre>
+       */
+      public java.lang.String getPath() {
+        java.lang.Object ref = path_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          path_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string path = 1;</code>
+       *
+       * <pre>
+       * Absolute path to the file.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getPathBytes() {
+        java.lang.Object ref = path_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          path_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string path = 1;</code>
+       *
+       * <pre>
+       * Absolute path to the file.
+       * </pre>
+       */
+      public Builder setPath(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        path_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string path = 1;</code>
+       *
+       * <pre>
+       * Absolute path to the file.
+       * </pre>
+       */
+      public Builder clearPath() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        path_ = getDefaultInstance().getPath();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string path = 1;</code>
+       *
+       * <pre>
+       * Absolute path to the file.
+       * </pre>
+       */
+      public Builder setPathBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        path_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional int32 nlink = 2;
+      private int nlink_ ;
+      /**
+       * <code>optional int32 nlink = 2;</code>
+       *
+       * <pre>
+       * Number of hard links.
+       * </pre>
+       */
+      public boolean hasNlink() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional int32 nlink = 2;</code>
+       *
+       * <pre>
+       * Number of hard links.
+       * </pre>
+       */
+      public int getNlink() {
+        return nlink_;
+      }
+      /**
+       * <code>optional int32 nlink = 2;</code>
+       *
+       * <pre>
+       * Number of hard links.
+       * </pre>
+       */
+      public Builder setNlink(int value) {
+        bitField0_ |= 0x00000002;
+        nlink_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int32 nlink = 2;</code>
+       *
+       * <pre>
+       * Number of hard links.
+       * </pre>
+       */
+      public Builder clearNlink() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        nlink_ = 0;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 size = 3;
+      private long size_ ;
+      /**
+       * <code>optional uint64 size = 3;</code>
+       *
+       * <pre>
+       * Total size in bytes.
+       * </pre>
+       */
+      public boolean hasSize() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional uint64 size = 3;</code>
+       *
+       * <pre>
+       * Total size in bytes.
+       * </pre>
+       */
+      public long getSize() {
+        return size_;
+      }
+      /**
+       * <code>optional uint64 size = 3;</code>
+       *
+       * <pre>
+       * Total size in bytes.
+       * </pre>
+       */
+      public Builder setSize(long value) {
+        bitField0_ |= 0x00000004;
+        size_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 size = 3;</code>
+       *
+       * <pre>
+       * Total size in bytes.
+       * </pre>
+       */
+      public Builder clearSize() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        size_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.TimeInfo mtime = 4;
+      private org.apache.mesos.Protos.TimeInfo mtime_ = org.apache.mesos.Protos.TimeInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.TimeInfo, org.apache.mesos.Protos.TimeInfo.Builder, org.apache.mesos.Protos.TimeInfoOrBuilder> mtimeBuilder_;
+      /**
+       * <code>optional .mesos.TimeInfo mtime = 4;</code>
+       *
+       * <pre>
+       * Last modification time.
+       * </pre>
+       */
+      public boolean hasMtime() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.TimeInfo mtime = 4;</code>
+       *
+       * <pre>
+       * Last modification time.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.TimeInfo getMtime() {
+        if (mtimeBuilder_ == null) {
+          return mtime_;
+        } else {
+          return mtimeBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.TimeInfo mtime = 4;</code>
+       *
+       * <pre>
+       * Last modification time.
+       * </pre>
+       */
+      public Builder setMtime(org.apache.mesos.Protos.TimeInfo value) {
+        if (mtimeBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          mtime_ = value;
+          onChanged();
+        } else {
+          mtimeBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.TimeInfo mtime = 4;</code>
+       *
+       * <pre>
+       * Last modification time.
+       * </pre>
+       */
+      public Builder setMtime(
+          org.apache.mesos.Protos.TimeInfo.Builder builderForValue) {
+        if (mtimeBuilder_ == null) {
+          mtime_ = builderForValue.build();
+          onChanged();
+        } else {
+          mtimeBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.TimeInfo mtime = 4;</code>
+       *
+       * <pre>
+       * Last modification time.
+       * </pre>
+       */
+      public Builder mergeMtime(org.apache.mesos.Protos.TimeInfo value) {
+        if (mtimeBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008) &&
+              mtime_ != org.apache.mesos.Protos.TimeInfo.getDefaultInstance()) {
+            mtime_ =
+              org.apache.mesos.Protos.TimeInfo.newBuilder(mtime_).mergeFrom(value).buildPartial();
+          } else {
+            mtime_ = value;
+          }
+          onChanged();
+        } else {
+          mtimeBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.TimeInfo mtime = 4;</code>
+       *
+       * <pre>
+       * Last modification time.
+       * </pre>
+       */
+      public Builder clearMtime() {
+        if (mtimeBuilder_ == null) {
+          mtime_ = org.apache.mesos.Protos.TimeInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          mtimeBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.TimeInfo mtime = 4;</code>
+       *
+       * <pre>
+       * Last modification time.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.TimeInfo.Builder getMtimeBuilder() {
+        bitField0_ |= 0x00000008;
+        onChanged();
+        return getMtimeFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.TimeInfo mtime = 4;</code>
+       *
+       * <pre>
+       * Last modification time.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.TimeInfoOrBuilder getMtimeOrBuilder() {
+        if (mtimeBuilder_ != null) {
+          return mtimeBuilder_.getMessageOrBuilder();
+        } else {
+          return mtime_;
+        }
+      }
+      /**
+       * <code>optional .mesos.TimeInfo mtime = 4;</code>
+       *
+       * <pre>
+       * Last modification time.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.TimeInfo, org.apache.mesos.Protos.TimeInfo.Builder, org.apache.mesos.Protos.TimeInfoOrBuilder> 
+          getMtimeFieldBuilder() {
+        if (mtimeBuilder_ == null) {
+          mtimeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.TimeInfo, org.apache.mesos.Protos.TimeInfo.Builder, org.apache.mesos.Protos.TimeInfoOrBuilder>(
+                  mtime_,
+                  getParentForChildren(),
+                  isClean());
+          mtime_ = null;
+        }
+        return mtimeBuilder_;
+      }
+
+      // optional uint32 mode = 5;
+      private int mode_ ;
+      /**
+       * <code>optional uint32 mode = 5;</code>
+       *
+       * <pre>
+       * Represents a file's mode and permission bits. The bits have the same
+       * definition on all systems and is portable.
+       * </pre>
+       */
+      public boolean hasMode() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional uint32 mode = 5;</code>
+       *
+       * <pre>
+       * Represents a file's mode and permission bits. The bits have the same
+       * definition on all systems and is portable.
+       * </pre>
+       */
+      public int getMode() {
+        return mode_;
+      }
+      /**
+       * <code>optional uint32 mode = 5;</code>
+       *
+       * <pre>
+       * Represents a file's mode and permission bits. The bits have the same
+       * definition on all systems and is portable.
+       * </pre>
+       */
+      public Builder setMode(int value) {
+        bitField0_ |= 0x00000010;
+        mode_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint32 mode = 5;</code>
+       *
+       * <pre>
+       * Represents a file's mode and permission bits. The bits have the same
+       * definition on all systems and is portable.
+       * </pre>
+       */
+      public Builder clearMode() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        mode_ = 0;
+        onChanged();
+        return this;
+      }
+
+      // optional string uid = 6;
+      private java.lang.Object uid_ = "";
+      /**
+       * <code>optional string uid = 6;</code>
+       *
+       * <pre>
+       * User ID of owner.
+       * </pre>
+       */
+      public boolean hasUid() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional string uid = 6;</code>
+       *
+       * <pre>
+       * User ID of owner.
+       * </pre>
+       */
+      public java.lang.String getUid() {
+        java.lang.Object ref = uid_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          uid_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string uid = 6;</code>
+       *
+       * <pre>
+       * User ID of owner.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getUidBytes() {
+        java.lang.Object ref = uid_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          uid_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string uid = 6;</code>
+       *
+       * <pre>
+       * User ID of owner.
+       * </pre>
+       */
+      public Builder setUid(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000020;
+        uid_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string uid = 6;</code>
+       *
+       * <pre>
+       * User ID of owner.
+       * </pre>
+       */
+      public Builder clearUid() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        uid_ = getDefaultInstance().getUid();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string uid = 6;</code>
+       *
+       * <pre>
+       * User ID of owner.
+       * </pre>
+       */
+      public Builder setUidBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000020;
+        uid_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional string gid = 7;
+      private java.lang.Object gid_ = "";
+      /**
+       * <code>optional string gid = 7;</code>
+       *
+       * <pre>
+       * Group ID of owner.
+       * </pre>
+       */
+      public boolean hasGid() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional string gid = 7;</code>
+       *
+       * <pre>
+       * Group ID of owner.
+       * </pre>
+       */
+      public java.lang.String getGid() {
+        java.lang.Object ref = gid_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          gid_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string gid = 7;</code>
+       *
+       * <pre>
+       * Group ID of owner.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getGidBytes() {
+        java.lang.Object ref = gid_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          gid_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string gid = 7;</code>
+       *
+       * <pre>
+       * Group ID of owner.
+       * </pre>
+       */
+      public Builder setGid(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000040;
+        gid_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string gid = 7;</code>
+       *
+       * <pre>
+       * Group ID of owner.
+       * </pre>
+       */
+      public Builder clearGid() {
+        bitField0_ = (bitField0_ & ~0x00000040);
+        gid_ = getDefaultInstance().getGid();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string gid = 7;</code>
+       *
+       * <pre>
+       * Group ID of owner.
+       * </pre>
+       */
+      public Builder setGidBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000040;
+        gid_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.FileInfo)
+    }
+
+    static {
+      defaultInstance = new FileInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.FileInfo)
+  }
+
+  public interface DeviceOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional string path = 1;
+    /**
+     * <code>optional string path = 1;</code>
+     */
+    boolean hasPath();
+    /**
+     * <code>optional string path = 1;</code>
+     */
+    java.lang.String getPath();
+    /**
+     * <code>optional string path = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getPathBytes();
+
+    // optional .mesos.Device.Number number = 2;
+    /**
+     * <code>optional .mesos.Device.Number number = 2;</code>
+     */
+    boolean hasNumber();
+    /**
+     * <code>optional .mesos.Device.Number number = 2;</code>
+     */
+    org.apache.mesos.Protos.Device.Number getNumber();
+    /**
+     * <code>optional .mesos.Device.Number number = 2;</code>
+     */
+    org.apache.mesos.Protos.Device.NumberOrBuilder getNumberOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.Device}
+   *
+   * <pre>
+   **
+   * Describes information abount a device.
+   * </pre>
+   */
+  public static final class Device extends
+      com.google.protobuf.GeneratedMessage
+      implements DeviceOrBuilder {
+    // Use Device.newBuilder() to construct.
+    private Device(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Device(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Device defaultInstance;
+    public static Device getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Device getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Device(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              path_ = input.readBytes();
+              break;
+            }
+            case 18: {
+              org.apache.mesos.Protos.Device.Number.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = number_.toBuilder();
+              }
+              number_ = input.readMessage(org.apache.mesos.Protos.Device.Number.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(number_);
+                number_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_Device_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_Device_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.Device.class, org.apache.mesos.Protos.Device.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Device> PARSER =
+        new com.google.protobuf.AbstractParser<Device>() {
+      public Device parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Device(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Device> getParserForType() {
+      return PARSER;
+    }
+
+    public interface NumberOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required uint64 major_number = 1;
+      /**
+       * <code>required uint64 major_number = 1;</code>
+       */
+      boolean hasMajorNumber();
+      /**
+       * <code>required uint64 major_number = 1;</code>
+       */
+      long getMajorNumber();
+
+      // required uint64 minor_number = 2;
+      /**
+       * <code>required uint64 minor_number = 2;</code>
+       */
+      boolean hasMinorNumber();
+      /**
+       * <code>required uint64 minor_number = 2;</code>
+       */
+      long getMinorNumber();
+    }
+    /**
+     * Protobuf type {@code mesos.Device.Number}
+     */
+    public static final class Number extends
+        com.google.protobuf.GeneratedMessage
+        implements NumberOrBuilder {
+      // Use Number.newBuilder() to construct.
+      private Number(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Number(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Number defaultInstance;
+      public static Number getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Number getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Number(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 8: {
+                bitField0_ |= 0x00000001;
+                majorNumber_ = input.readUInt64();
+                break;
+              }
+              case 16: {
+                bitField0_ |= 0x00000002;
+                minorNumber_ = input.readUInt64();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_Device_Number_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_Device_Number_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.Device.Number.class, org.apache.mesos.Protos.Device.Number.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Number> PARSER =
+          new com.google.protobuf.AbstractParser<Number>() {
+        public Number parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Number(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Number> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required uint64 major_number = 1;
+      public static final int MAJOR_NUMBER_FIELD_NUMBER = 1;
+      private long majorNumber_;
+      /**
+       * <code>required uint64 major_number = 1;</code>
+       */
+      public boolean hasMajorNumber() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required uint64 major_number = 1;</code>
+       */
+      public long getMajorNumber() {
+        return majorNumber_;
+      }
+
+      // required uint64 minor_number = 2;
+      public static final int MINOR_NUMBER_FIELD_NUMBER = 2;
+      private long minorNumber_;
+      /**
+       * <code>required uint64 minor_number = 2;</code>
+       */
+      public boolean hasMinorNumber() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required uint64 minor_number = 2;</code>
+       */
+      public long getMinorNumber() {
+        return minorNumber_;
+      }
+
+      private void initFields() {
+        majorNumber_ = 0L;
+        minorNumber_ = 0L;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasMajorNumber()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!hasMinorNumber()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeUInt64(1, majorNumber_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeUInt64(2, minorNumber_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeUInt64Size(1, majorNumber_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeUInt64Size(2, minorNumber_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.Protos.Device.Number parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.Device.Number parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Device.Number parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.Device.Number parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Device.Number parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.Device.Number parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Device.Number parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.Protos.Device.Number parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.Device.Number parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.Device.Number parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.Protos.Device.Number prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.Device.Number}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.Protos.Device.NumberOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_Device_Number_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_Device_Number_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.Device.Number.class, org.apache.mesos.Protos.Device.Number.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.Protos.Device.Number.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          majorNumber_ = 0L;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          minorNumber_ = 0L;
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.Protos.internal_static_mesos_Device_Number_descriptor;
+        }
+
+        public org.apache.mesos.Protos.Device.Number getDefaultInstanceForType() {
+          return org.apache.mesos.Protos.Device.Number.getDefaultInstance();
+        }
+
+        public org.apache.mesos.Protos.Device.Number build() {
+          org.apache.mesos.Protos.Device.Number result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.Protos.Device.Number buildPartial() {
+          org.apache.mesos.Protos.Device.Number result = new org.apache.mesos.Protos.Device.Number(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.majorNumber_ = majorNumber_;
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          result.minorNumber_ = minorNumber_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.Protos.Device.Number) {
+            return mergeFrom((org.apache.mesos.Protos.Device.Number)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.Protos.Device.Number other) {
+          if (other == org.apache.mesos.Protos.Device.Number.getDefaultInstance()) return this;
+          if (other.hasMajorNumber()) {
+            setMajorNumber(other.getMajorNumber());
+          }
+          if (other.hasMinorNumber()) {
+            setMinorNumber(other.getMinorNumber());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasMajorNumber()) {
+            
+            return false;
+          }
+          if (!hasMinorNumber()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.Protos.Device.Number parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.Protos.Device.Number) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required uint64 major_number = 1;
+        private long majorNumber_ ;
+        /**
+         * <code>required uint64 major_number = 1;</code>
+         */
+        public boolean hasMajorNumber() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required uint64 major_number = 1;</code>
+         */
+        public long getMajorNumber() {
+          return majorNumber_;
+        }
+        /**
+         * <code>required uint64 major_number = 1;</code>
+         */
+        public Builder setMajorNumber(long value) {
+          bitField0_ |= 0x00000001;
+          majorNumber_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required uint64 major_number = 1;</code>
+         */
+        public Builder clearMajorNumber() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          majorNumber_ = 0L;
+          onChanged();
+          return this;
+        }
+
+        // required uint64 minor_number = 2;
+        private long minorNumber_ ;
+        /**
+         * <code>required uint64 minor_number = 2;</code>
+         */
+        public boolean hasMinorNumber() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>required uint64 minor_number = 2;</code>
+         */
+        public long getMinorNumber() {
+          return minorNumber_;
+        }
+        /**
+         * <code>required uint64 minor_number = 2;</code>
+         */
+        public Builder setMinorNumber(long value) {
+          bitField0_ |= 0x00000002;
+          minorNumber_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required uint64 minor_number = 2;</code>
+         */
+        public Builder clearMinorNumber() {
+          bitField0_ = (bitField0_ & ~0x00000002);
+          minorNumber_ = 0L;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.Device.Number)
+      }
+
+      static {
+        defaultInstance = new Number(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.Device.Number)
+    }
+
+    private int bitField0_;
+    // optional string path = 1;
+    public static final int PATH_FIELD_NUMBER = 1;
+    private java.lang.Object path_;
+    /**
+     * <code>optional string path = 1;</code>
+     */
+    public boolean hasPath() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional string path = 1;</code>
+     */
+    public java.lang.String getPath() {
+      java.lang.Object ref = path_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          path_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string path = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getPathBytes() {
+      java.lang.Object ref = path_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        path_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional .mesos.Device.Number number = 2;
+    public static final int NUMBER_FIELD_NUMBER = 2;
+    private org.apache.mesos.Protos.Device.Number number_;
+    /**
+     * <code>optional .mesos.Device.Number number = 2;</code>
+     */
+    public boolean hasNumber() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional .mesos.Device.Number number = 2;</code>
+     */
+    public org.apache.mesos.Protos.Device.Number getNumber() {
+      return number_;
+    }
+    /**
+     * <code>optional .mesos.Device.Number number = 2;</code>
+     */
+    public org.apache.mesos.Protos.Device.NumberOrBuilder getNumberOrBuilder() {
+      return number_;
+    }
+
+    private void initFields() {
+      path_ = "";
+      number_ = org.apache.mesos.Protos.Device.Number.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (hasNumber()) {
+        if (!getNumber().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getPathBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(2, number_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getPathBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, number_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.Device parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Device parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Device parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.Device parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Device parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Device parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Device parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.Device parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.Device parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.Device parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.Device prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.Device}
+     *
+     * <pre>
+     **
+     * Describes information abount a device.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.DeviceOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_Device_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_Device_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.Device.class, org.apache.mesos.Protos.Device.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.Device.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getNumberFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        path_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (numberBuilder_ == null) {
+          number_ = org.apache.mesos.Protos.Device.Number.getDefaultInstance();
+        } else {
+          numberBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_Device_descriptor;
+      }
+
+      public org.apache.mesos.Protos.Device getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.Device.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.Device build() {
+        org.apache.mesos.Protos.Device result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.Device buildPartial() {
+        org.apache.mesos.Protos.Device result = new org.apache.mesos.Protos.Device(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.path_ = path_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (numberBuilder_ == null) {
+          result.number_ = number_;
+        } else {
+          result.number_ = numberBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.Device) {
+          return mergeFrom((org.apache.mesos.Protos.Device)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.Device other) {
+        if (other == org.apache.mesos.Protos.Device.getDefaultInstance()) return this;
+        if (other.hasPath()) {
+          bitField0_ |= 0x00000001;
+          path_ = other.path_;
+          onChanged();
+        }
+        if (other.hasNumber()) {
+          mergeNumber(other.getNumber());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (hasNumber()) {
+          if (!getNumber().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.Device parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.Device) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional string path = 1;
+      private java.lang.Object path_ = "";
+      /**
+       * <code>optional string path = 1;</code>
+       */
+      public boolean hasPath() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional string path = 1;</code>
+       */
+      public java.lang.String getPath() {
+        java.lang.Object ref = path_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          path_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string path = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getPathBytes() {
+        java.lang.Object ref = path_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          path_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string path = 1;</code>
+       */
+      public Builder setPath(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        path_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string path = 1;</code>
+       */
+      public Builder clearPath() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        path_ = getDefaultInstance().getPath();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string path = 1;</code>
+       */
+      public Builder setPathBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        path_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.Device.Number number = 2;
+      private org.apache.mesos.Protos.Device.Number number_ = org.apache.mesos.Protos.Device.Number.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Device.Number, org.apache.mesos.Protos.Device.Number.Builder, org.apache.mesos.Protos.Device.NumberOrBuilder> numberBuilder_;
+      /**
+       * <code>optional .mesos.Device.Number number = 2;</code>
+       */
+      public boolean hasNumber() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.Device.Number number = 2;</code>
+       */
+      public org.apache.mesos.Protos.Device.Number getNumber() {
+        if (numberBuilder_ == null) {
+          return number_;
+        } else {
+          return numberBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.Device.Number number = 2;</code>
+       */
+      public Builder setNumber(org.apache.mesos.Protos.Device.Number value) {
+        if (numberBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          number_ = value;
+          onChanged();
+        } else {
+          numberBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Device.Number number = 2;</code>
+       */
+      public Builder setNumber(
+          org.apache.mesos.Protos.Device.Number.Builder builderForValue) {
+        if (numberBuilder_ == null) {
+          number_ = builderForValue.build();
+          onChanged();
+        } else {
+          numberBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Device.Number number = 2;</code>
+       */
+      public Builder mergeNumber(org.apache.mesos.Protos.Device.Number value) {
+        if (numberBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              number_ != org.apache.mesos.Protos.Device.Number.getDefaultInstance()) {
+            number_ =
+              org.apache.mesos.Protos.Device.Number.newBuilder(number_).mergeFrom(value).buildPartial();
+          } else {
+            number_ = value;
+          }
+          onChanged();
+        } else {
+          numberBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Device.Number number = 2;</code>
+       */
+      public Builder clearNumber() {
+        if (numberBuilder_ == null) {
+          number_ = org.apache.mesos.Protos.Device.Number.getDefaultInstance();
+          onChanged();
+        } else {
+          numberBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.Device.Number number = 2;</code>
+       */
+      public org.apache.mesos.Protos.Device.Number.Builder getNumberBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getNumberFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.Device.Number number = 2;</code>
+       */
+      public org.apache.mesos.Protos.Device.NumberOrBuilder getNumberOrBuilder() {
+        if (numberBuilder_ != null) {
+          return numberBuilder_.getMessageOrBuilder();
+        } else {
+          return number_;
+        }
+      }
+      /**
+       * <code>optional .mesos.Device.Number number = 2;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Device.Number, org.apache.mesos.Protos.Device.Number.Builder, org.apache.mesos.Protos.Device.NumberOrBuilder> 
+          getNumberFieldBuilder() {
+        if (numberBuilder_ == null) {
+          numberBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Device.Number, org.apache.mesos.Protos.Device.Number.Builder, org.apache.mesos.Protos.Device.NumberOrBuilder>(
+                  number_,
+                  getParentForChildren(),
+                  isClean());
+          number_ = null;
+        }
+        return numberBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.Device)
+    }
+
+    static {
+      defaultInstance = new Device(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.Device)
+  }
+
+  public interface DeviceAccessOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required .mesos.Device device = 1;
+    /**
+     * <code>required .mesos.Device device = 1;</code>
+     */
+    boolean hasDevice();
+    /**
+     * <code>required .mesos.Device device = 1;</code>
+     */
+    org.apache.mesos.Protos.Device getDevice();
+    /**
+     * <code>required .mesos.Device device = 1;</code>
+     */
+    org.apache.mesos.Protos.DeviceOrBuilder getDeviceOrBuilder();
+
+    // required .mesos.DeviceAccess.Access access = 2;
+    /**
+     * <code>required .mesos.DeviceAccess.Access access = 2;</code>
+     */
+    boolean hasAccess();
+    /**
+     * <code>required .mesos.DeviceAccess.Access access = 2;</code>
+     */
+    org.apache.mesos.Protos.DeviceAccess.Access getAccess();
+    /**
+     * <code>required .mesos.DeviceAccess.Access access = 2;</code>
+     */
+    org.apache.mesos.Protos.DeviceAccess.AccessOrBuilder getAccessOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.DeviceAccess}
+   *
+   * <pre>
+   **
+   * Describes a device whitelist entry that expose from host to container.
+   * </pre>
+   */
+  public static final class DeviceAccess extends
+      com.google.protobuf.GeneratedMessage
+      implements DeviceAccessOrBuilder {
+    // Use DeviceAccess.newBuilder() to construct.
+    private DeviceAccess(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private DeviceAccess(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final DeviceAccess defaultInstance;
+    public static DeviceAccess getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public DeviceAccess getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private DeviceAccess(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              org.apache.mesos.Protos.Device.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                subBuilder = device_.toBuilder();
+              }
+              device_ = input.readMessage(org.apache.mesos.Protos.Device.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(device_);
+                device_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+            case 18: {
+              org.apache.mesos.Protos.DeviceAccess.Access.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = access_.toBuilder();
+              }
+              access_ = input.readMessage(org.apache.mesos.Protos.DeviceAccess.Access.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(access_);
+                access_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_DeviceAccess_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_DeviceAccess_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.DeviceAccess.class, org.apache.mesos.Protos.DeviceAccess.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<DeviceAccess> PARSER =
+        new com.google.protobuf.AbstractParser<DeviceAccess>() {
+      public DeviceAccess parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new DeviceAccess(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<DeviceAccess> getParserForType() {
+      return PARSER;
+    }
+
+    public interface AccessOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // optional bool read = 1;
+      /**
+       * <code>optional bool read = 1;</code>
+       */
+      boolean hasRead();
+      /**
+       * <code>optional bool read = 1;</code>
+       */
+      boolean getRead();
+
+      // optional bool write = 2;
+      /**
+       * <code>optional bool write = 2;</code>
+       */
+      boolean hasWrite();
+      /**
+       * <code>optional bool write = 2;</code>
+       */
+      boolean getWrite();
+
+      // optional bool mknod = 3;
+      /**
+       * <code>optional bool mknod = 3;</code>
+       */
+      boolean hasMknod();
+      /**
+       * <code>optional bool mknod = 3;</code>
+       */
+      boolean getMknod();
+    }
+    /**
+     * Protobuf type {@code mesos.DeviceAccess.Access}
+     */
+    public static final class Access extends
+        com.google.protobuf.GeneratedMessage
+        implements AccessOrBuilder {
+      // Use Access.newBuilder() to construct.
+      private Access(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Access(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Access defaultInstance;
+      public static Access getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Access getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Access(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 8: {
+                bitField0_ |= 0x00000001;
+                read_ = input.readBool();
+                break;
+              }
+              case 16: {
+                bitField0_ |= 0x00000002;
+                write_ = input.readBool();
+                break;
+              }
+              case 24: {
+                bitField0_ |= 0x00000004;
+                mknod_ = input.readBool();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_DeviceAccess_Access_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_DeviceAccess_Access_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.DeviceAccess.Access.class, org.apache.mesos.Protos.DeviceAccess.Access.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Access> PARSER =
+          new com.google.protobuf.AbstractParser<Access>() {
+        public Access parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Access(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Access> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // optional bool read = 1;
+      public static final int READ_FIELD_NUMBER = 1;
+      private boolean read_;
+      /**
+       * <code>optional bool read = 1;</code>
+       */
+      public boolean hasRead() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional bool read = 1;</code>
+       */
+      public boolean getRead() {
+        return read_;
+      }
+
+      // optional bool write = 2;
+      public static final int WRITE_FIELD_NUMBER = 2;
+      private boolean write_;
+      /**
+       * <code>optional bool write = 2;</code>
+       */
+      public boolean hasWrite() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional bool write = 2;</code>
+       */
+      public boolean getWrite() {
+        return write_;
+      }
+
+      // optional bool mknod = 3;
+      public static final int MKNOD_FIELD_NUMBER = 3;
+      private boolean mknod_;
+      /**
+       * <code>optional bool mknod = 3;</code>
+       */
+      public boolean hasMknod() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional bool mknod = 3;</code>
+       */
+      public boolean getMknod() {
+        return mknod_;
+      }
+
+      private void initFields() {
+        read_ = false;
+        write_ = false;
+        mknod_ = false;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeBool(1, read_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeBool(2, write_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeBool(3, mknod_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBoolSize(1, read_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBoolSize(2, write_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBoolSize(3, mknod_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.Protos.DeviceAccess.Access parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.DeviceAccess.Access parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.DeviceAccess.Access parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.Protos.DeviceAccess.Access parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.DeviceAccess.Access parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.DeviceAccess.Access parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.DeviceAccess.Access parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.Protos.DeviceAccess.Access parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.Protos.DeviceAccess.Access parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.Protos.DeviceAccess.Access parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.Protos.DeviceAccess.Access prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.DeviceAccess.Access}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.Protos.DeviceAccess.AccessOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.Protos.internal_static_mesos_DeviceAccess_Access_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.Protos.internal_static_mesos_DeviceAccess_Access_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.Protos.DeviceAccess.Access.class, org.apache.mesos.Protos.DeviceAccess.Access.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.Protos.DeviceAccess.Access.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          read_ = false;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          write_ = false;
+          bitField0_ = (bitField0_ & ~0x00000002);
+          mknod_ = false;
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.Protos.internal_static_mesos_DeviceAccess_Access_descriptor;
+        }
+
+        public org.apache.mesos.Protos.DeviceAccess.Access getDefaultInstanceForType() {
+          return org.apache.mesos.Protos.DeviceAccess.Access.getDefaultInstance();
+        }
+
+        public org.apache.mesos.Protos.DeviceAccess.Access build() {
+          org.apache.mesos.Protos.DeviceAccess.Access result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.Protos.DeviceAccess.Access buildPartial() {
+          org.apache.mesos.Protos.DeviceAccess.Access result = new org.apache.mesos.Protos.DeviceAccess.Access(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.read_ = read_;
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          result.write_ = write_;
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          result.mknod_ = mknod_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.Protos.DeviceAccess.Access) {
+            return mergeFrom((org.apache.mesos.Protos.DeviceAccess.Access)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.Protos.DeviceAccess.Access other) {
+          if (other == org.apache.mesos.Protos.DeviceAccess.Access.getDefaultInstance()) return this;
+          if (other.hasRead()) {
+            setRead(other.getRead());
+          }
+          if (other.hasWrite()) {
+            setWrite(other.getWrite());
+          }
+          if (other.hasMknod()) {
+            setMknod(other.getMknod());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.Protos.DeviceAccess.Access parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.Protos.DeviceAccess.Access) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // optional bool read = 1;
+        private boolean read_ ;
+        /**
+         * <code>optional bool read = 1;</code>
+         */
+        public boolean hasRead() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional bool read = 1;</code>
+         */
+        public boolean getRead() {
+          return read_;
+        }
+        /**
+         * <code>optional bool read = 1;</code>
+         */
+        public Builder setRead(boolean value) {
+          bitField0_ |= 0x00000001;
+          read_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional bool read = 1;</code>
+         */
+        public Builder clearRead() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          read_ = false;
+          onChanged();
+          return this;
+        }
+
+        // optional bool write = 2;
+        private boolean write_ ;
+        /**
+         * <code>optional bool write = 2;</code>
+         */
+        public boolean hasWrite() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional bool write = 2;</code>
+         */
+        public boolean getWrite() {
+          return write_;
+        }
+        /**
+         * <code>optional bool write = 2;</code>
+         */
+        public Builder setWrite(boolean value) {
+          bitField0_ |= 0x00000002;
+          write_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional bool write = 2;</code>
+         */
+        public Builder clearWrite() {
+          bitField0_ = (bitField0_ & ~0x00000002);
+          write_ = false;
+          onChanged();
+          return this;
+        }
+
+        // optional bool mknod = 3;
+        private boolean mknod_ ;
+        /**
+         * <code>optional bool mknod = 3;</code>
+         */
+        public boolean hasMknod() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional bool mknod = 3;</code>
+         */
+        public boolean getMknod() {
+          return mknod_;
+        }
+        /**
+         * <code>optional bool mknod = 3;</code>
+         */
+        public Builder setMknod(boolean value) {
+          bitField0_ |= 0x00000004;
+          mknod_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional bool mknod = 3;</code>
+         */
+        public Builder clearMknod() {
+          bitField0_ = (bitField0_ & ~0x00000004);
+          mknod_ = false;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.DeviceAccess.Access)
+      }
+
+      static {
+        defaultInstance = new Access(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.DeviceAccess.Access)
+    }
+
+    private int bitField0_;
+    // required .mesos.Device device = 1;
+    public static final int DEVICE_FIELD_NUMBER = 1;
+    private org.apache.mesos.Protos.Device device_;
+    /**
+     * <code>required .mesos.Device device = 1;</code>
+     */
+    public boolean hasDevice() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required .mesos.Device device = 1;</code>
+     */
+    public org.apache.mesos.Protos.Device getDevice() {
+      return device_;
+    }
+    /**
+     * <code>required .mesos.Device device = 1;</code>
+     */
+    public org.apache.mesos.Protos.DeviceOrBuilder getDeviceOrBuilder() {
+      return device_;
+    }
+
+    // required .mesos.DeviceAccess.Access access = 2;
+    public static final int ACCESS_FIELD_NUMBER = 2;
+    private org.apache.mesos.Protos.DeviceAccess.Access access_;
+    /**
+     * <code>required .mesos.DeviceAccess.Access access = 2;</code>
+     */
+    public boolean hasAccess() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>required .mesos.DeviceAccess.Access access = 2;</code>
+     */
+    public org.apache.mesos.Protos.DeviceAccess.Access getAccess() {
+      return access_;
+    }
+    /**
+     * <code>required .mesos.DeviceAccess.Access access = 2;</code>
+     */
+    public org.apache.mesos.Protos.DeviceAccess.AccessOrBuilder getAccessOrBuilder() {
+      return access_;
+    }
+
+    private void initFields() {
+      device_ = org.apache.mesos.Protos.Device.getDefaultInstance();
+      access_ = org.apache.mesos.Protos.DeviceAccess.Access.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasDevice()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasAccess()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!getDevice().isInitialized()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeMessage(1, device_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(2, access_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, device_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, access_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.DeviceAccess parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.DeviceAccess parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.DeviceAccess parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.DeviceAccess parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.DeviceAccess parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.DeviceAccess parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.DeviceAccess parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.DeviceAccess parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.DeviceAccess parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.DeviceAccess parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.DeviceAccess prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.DeviceAccess}
+     *
+     * <pre>
+     **
+     * Describes a device whitelist entry that expose from host to container.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.DeviceAccessOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_DeviceAccess_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_DeviceAccess_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.DeviceAccess.class, org.apache.mesos.Protos.DeviceAccess.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.DeviceAccess.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getDeviceFieldBuilder();
+          getAccessFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (deviceBuilder_ == null) {
+          device_ = org.apache.mesos.Protos.Device.getDefaultInstance();
+        } else {
+          deviceBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (accessBuilder_ == null) {
+          access_ = org.apache.mesos.Protos.DeviceAccess.Access.getDefaultInstance();
+        } else {
+          accessBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_DeviceAccess_descriptor;
+      }
+
+      public org.apache.mesos.Protos.DeviceAccess getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.DeviceAccess.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.DeviceAccess build() {
+        org.apache.mesos.Protos.DeviceAccess result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.DeviceAccess buildPartial() {
+        org.apache.mesos.Protos.DeviceAccess result = new org.apache.mesos.Protos.DeviceAccess(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        if (deviceBuilder_ == null) {
+          result.device_ = device_;
+        } else {
+          result.device_ = deviceBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (accessBuilder_ == null) {
+          result.access_ = access_;
+        } else {
+          result.access_ = accessBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.DeviceAccess) {
+          return mergeFrom((org.apache.mesos.Protos.DeviceAccess)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.DeviceAccess other) {
+        if (other == org.apache.mesos.Protos.DeviceAccess.getDefaultInstance()) return this;
+        if (other.hasDevice()) {
+          mergeDevice(other.getDevice());
+        }
+        if (other.hasAccess()) {
+          mergeAccess(other.getAccess());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasDevice()) {
+          
+          return false;
+        }
+        if (!hasAccess()) {
+          
+          return false;
+        }
+        if (!getDevice().isInitialized()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.DeviceAccess parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.DeviceAccess) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required .mesos.Device device = 1;
+      private org.apache.mesos.Protos.Device device_ = org.apache.mesos.Protos.Device.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Device, org.apache.mesos.Protos.Device.Builder, org.apache.mesos.Protos.DeviceOrBuilder> deviceBuilder_;
+      /**
+       * <code>required .mesos.Device device = 1;</code>
+       */
+      public boolean hasDevice() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.Device device = 1;</code>
+       */
+      public org.apache.mesos.Protos.Device getDevice() {
+        if (deviceBuilder_ == null) {
+          return device_;
+        } else {
+          return deviceBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>required .mesos.Device device = 1;</code>
+       */
+      public Builder setDevice(org.apache.mesos.Protos.Device value) {
+        if (deviceBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          device_ = value;
+          onChanged();
+        } else {
+          deviceBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .mesos.Device device = 1;</code>
+       */
+      public Builder setDevice(
+          org.apache.mesos.Protos.Device.Builder builderForValue) {
+        if (deviceBuilder_ == null) {
+          device_ = builderForValue.build();
+          onChanged();
+        } else {
+          deviceBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .mesos.Device device = 1;</code>
+       */
+      public Builder mergeDevice(org.apache.mesos.Protos.Device value) {
+        if (deviceBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001) &&
+              device_ != org.apache.mesos.Protos.Device.getDefaultInstance()) {
+            device_ =
+              org.apache.mesos.Protos.Device.newBuilder(device_).mergeFrom(value).buildPartial();
+          } else {
+            device_ = value;
+          }
+          onChanged();
+        } else {
+          deviceBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .mesos.Device device = 1;</code>
+       */
+      public Builder clearDevice() {
+        if (deviceBuilder_ == null) {
+          device_ = org.apache.mesos.Protos.Device.getDefaultInstance();
+          onChanged();
+        } else {
+          deviceBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+      /**
+       * <code>required .mesos.Device device = 1;</code>
+       */
+      public org.apache.mesos.Protos.Device.Builder getDeviceBuilder() {
+        bitField0_ |= 0x00000001;
+        onChanged();
+        return getDeviceFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>required .mesos.Device device = 1;</code>
+       */
+      public org.apache.mesos.Protos.DeviceOrBuilder getDeviceOrBuilder() {
+        if (deviceBuilder_ != null) {
+          return deviceBuilder_.getMessageOrBuilder();
+        } else {
+          return device_;
+        }
+      }
+      /**
+       * <code>required .mesos.Device device = 1;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.Device, org.apache.mesos.Protos.Device.Builder, org.apache.mesos.Protos.DeviceOrBuilder> 
+          getDeviceFieldBuilder() {
+        if (deviceBuilder_ == null) {
+          deviceBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.Device, org.apache.mesos.Protos.Device.Builder, org.apache.mesos.Protos.DeviceOrBuilder>(
+                  device_,
+                  getParentForChildren(),
+                  isClean());
+          device_ = null;
+        }
+        return deviceBuilder_;
+      }
+
+      // required .mesos.DeviceAccess.Access access = 2;
+      private org.apache.mesos.Protos.DeviceAccess.Access access_ = org.apache.mesos.Protos.DeviceAccess.Access.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.DeviceAccess.Access, org.apache.mesos.Protos.DeviceAccess.Access.Builder, org.apache.mesos.Protos.DeviceAccess.AccessOrBuilder> accessBuilder_;
+      /**
+       * <code>required .mesos.DeviceAccess.Access access = 2;</code>
+       */
+      public boolean hasAccess() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required .mesos.DeviceAccess.Access access = 2;</code>
+       */
+      public org.apache.mesos.Protos.DeviceAccess.Access getAccess() {
+        if (accessBuilder_ == null) {
+          return access_;
+        } else {
+          return accessBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>required .mesos.DeviceAccess.Access access = 2;</code>
+       */
+      public Builder setAccess(org.apache.mesos.Protos.DeviceAccess.Access value) {
+        if (accessBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          access_ = value;
+          onChanged();
+        } else {
+          accessBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.DeviceAccess.Access access = 2;</code>
+       */
+      public Builder setAccess(
+          org.apache.mesos.Protos.DeviceAccess.Access.Builder builderForValue) {
+        if (accessBuilder_ == null) {
+          access_ = builderForValue.build();
+          onChanged();
+        } else {
+          accessBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.DeviceAccess.Access access = 2;</code>
+       */
+      public Builder mergeAccess(org.apache.mesos.Protos.DeviceAccess.Access value) {
+        if (accessBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              access_ != org.apache.mesos.Protos.DeviceAccess.Access.getDefaultInstance()) {
+            access_ =
+              org.apache.mesos.Protos.DeviceAccess.Access.newBuilder(access_).mergeFrom(value).buildPartial();
+          } else {
+            access_ = value;
+          }
+          onChanged();
+        } else {
+          accessBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.DeviceAccess.Access access = 2;</code>
+       */
+      public Builder clearAccess() {
+        if (accessBuilder_ == null) {
+          access_ = org.apache.mesos.Protos.DeviceAccess.Access.getDefaultInstance();
+          onChanged();
+        } else {
+          accessBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>required .mesos.DeviceAccess.Access access = 2;</code>
+       */
+      public org.apache.mesos.Protos.DeviceAccess.Access.Builder getAccessBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getAccessFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>required .mesos.DeviceAccess.Access access = 2;</code>
+       */
+      public org.apache.mesos.Protos.DeviceAccess.AccessOrBuilder getAccessOrBuilder() {
+        if (accessBuilder_ != null) {
+          return accessBuilder_.getMessageOrBuilder();
+        } else {
+          return access_;
+        }
+      }
+      /**
+       * <code>required .mesos.DeviceAccess.Access access = 2;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.DeviceAccess.Access, org.apache.mesos.Protos.DeviceAccess.Access.Builder, org.apache.mesos.Protos.DeviceAccess.AccessOrBuilder> 
+          getAccessFieldBuilder() {
+        if (accessBuilder_ == null) {
+          accessBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.DeviceAccess.Access, org.apache.mesos.Protos.DeviceAccess.Access.Builder, org.apache.mesos.Protos.DeviceAccess.AccessOrBuilder>(
+                  access_,
+                  getParentForChildren(),
+                  isClean());
+          access_ = null;
+        }
+        return accessBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.DeviceAccess)
+    }
+
+    static {
+      defaultInstance = new DeviceAccess(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.DeviceAccess)
+  }
+
+  public interface DeviceWhitelistOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // repeated .mesos.DeviceAccess allowed_devices = 1;
+    /**
+     * <code>repeated .mesos.DeviceAccess allowed_devices = 1;</code>
+     */
+    java.util.List<org.apache.mesos.Protos.DeviceAccess> 
+        getAllowedDevicesList();
+    /**
+     * <code>repeated .mesos.DeviceAccess allowed_devices = 1;</code>
+     */
+    org.apache.mesos.Protos.DeviceAccess getAllowedDevices(int index);
+    /**
+     * <code>repeated .mesos.DeviceAccess allowed_devices = 1;</code>
+     */
+    int getAllowedDevicesCount();
+    /**
+     * <code>repeated .mesos.DeviceAccess allowed_devices = 1;</code>
+     */
+    java.util.List<? extends org.apache.mesos.Protos.DeviceAccessOrBuilder> 
+        getAllowedDevicesOrBuilderList();
+    /**
+     * <code>repeated .mesos.DeviceAccess allowed_devices = 1;</code>
+     */
+    org.apache.mesos.Protos.DeviceAccessOrBuilder getAllowedDevicesOrBuilder(
+        int index);
+  }
+  /**
+   * Protobuf type {@code mesos.DeviceWhitelist}
+   */
+  public static final class DeviceWhitelist extends
+      com.google.protobuf.GeneratedMessage
+      implements DeviceWhitelistOrBuilder {
+    // Use DeviceWhitelist.newBuilder() to construct.
+    private DeviceWhitelist(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private DeviceWhitelist(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final DeviceWhitelist defaultInstance;
+    public static DeviceWhitelist getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public DeviceWhitelist getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private DeviceWhitelist(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                allowedDevices_ = new java.util.ArrayList<org.apache.mesos.Protos.DeviceAccess>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              allowedDevices_.add(input.readMessage(org.apache.mesos.Protos.DeviceAccess.PARSER, extensionRegistry));
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+          allowedDevices_ = java.util.Collections.unmodifiableList(allowedDevices_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.Protos.internal_static_mesos_DeviceWhitelist_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.Protos.internal_static_mesos_DeviceWhitelist_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.Protos.DeviceWhitelist.class, org.apache.mesos.Protos.DeviceWhitelist.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<DeviceWhitelist> PARSER =
+        new com.google.protobuf.AbstractParser<DeviceWhitelist>() {
+      public DeviceWhitelist parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new DeviceWhitelist(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<DeviceWhitelist> getParserForType() {
+      return PARSER;
+    }
+
+    // repeated .mesos.DeviceAccess allowed_devices = 1;
+    public static final int ALLOWED_DEVICES_FIELD_NUMBER = 1;
+    private java.util.List<org.apache.mesos.Protos.DeviceAccess> allowedDevices_;
+    /**
+     * <code>repeated .mesos.DeviceAccess allowed_devices = 1;</code>
+     */
+    public java.util.List<org.apache.mesos.Protos.DeviceAccess> getAllowedDevicesList() {
+      return allowedDevices_;
+    }
+    /**
+     * <code>repeated .mesos.DeviceAccess allowed_devices = 1;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.Protos.DeviceAccessOrBuilder> 
+        getAllowedDevicesOrBuilderList() {
+      return allowedDevices_;
+    }
+    /**
+     * <code>repeated .mesos.DeviceAccess allowed_devices = 1;</code>
+     */
+    public int getAllowedDevicesCount() {
+      return allowedDevices_.size();
+    }
+    /**
+     * <code>repeated .mesos.DeviceAccess allowed_devices = 1;</code>
+     */
+    public org.apache.mesos.Protos.DeviceAccess getAllowedDevices(int index) {
+      return allowedDevices_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.DeviceAccess allowed_devices = 1;</code>
+     */
+    public org.apache.mesos.Protos.DeviceAccessOrBuilder getAllowedDevicesOrBuilder(
+        int index) {
+      return allowedDevices_.get(index);
+    }
+
+    private void initFields() {
+      allowedDevices_ = java.util.Collections.emptyList();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      for (int i = 0; i < getAllowedDevicesCount(); i++) {
+        if (!getAllowedDevices(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      for (int i = 0; i < allowedDevices_.size(); i++) {
+        output.writeMessage(1, allowedDevices_.get(i));
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      for (int i = 0; i < allowedDevices_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, allowedDevices_.get(i));
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.Protos.DeviceWhitelist parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.DeviceWhitelist parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.DeviceWhitelist parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.Protos.DeviceWhitelist parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.DeviceWhitelist parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.DeviceWhitelist parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.DeviceWhitelist parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.Protos.DeviceWhitelist parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.Protos.DeviceWhitelist parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.Protos.DeviceWhitelist parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.Protos.DeviceWhitelist prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.DeviceWhitelist}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.Protos.DeviceWhitelistOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.Protos.internal_static_mesos_DeviceWhitelist_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.Protos.internal_static_mesos_DeviceWhitelist_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.Protos.DeviceWhitelist.class, org.apache.mesos.Protos.DeviceWhitelist.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.Protos.DeviceWhitelist.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getAllowedDevicesFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (allowedDevicesBuilder_ == null) {
+          allowedDevices_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+        } else {
+          allowedDevicesBuilder_.clear();
+        }
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.Protos.internal_static_mesos_DeviceWhitelist_descriptor;
+      }
+
+      public org.apache.mesos.Protos.DeviceWhitelist getDefaultInstanceForType() {
+        return org.apache.mesos.Protos.DeviceWhitelist.getDefaultInstance();
+      }
+
+      public org.apache.mesos.Protos.DeviceWhitelist build() {
+        org.apache.mesos.Protos.DeviceWhitelist result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.Protos.DeviceWhitelist buildPartial() {
+        org.apache.mesos.Protos.DeviceWhitelist result = new org.apache.mesos.Protos.DeviceWhitelist(this);
+        int from_bitField0_ = bitField0_;
+        if (allowedDevicesBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            allowedDevices_ = java.util.Collections.unmodifiableList(allowedDevices_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.allowedDevices_ = allowedDevices_;
+        } else {
+          result.allowedDevices_ = allowedDevicesBuilder_.build();
+        }
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.Protos.DeviceWhitelist) {
+          return mergeFrom((org.apache.mesos.Protos.DeviceWhitelist)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.Protos.DeviceWhitelist other) {
+        if (other == org.apache.mesos.Protos.DeviceWhitelist.getDefaultInstance()) return this;
+        if (allowedDevicesBuilder_ == null) {
+          if (!other.allowedDevices_.isEmpty()) {
+            if (allowedDevices_.isEmpty()) {
+              allowedDevices_ = other.allowedDevices_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureAllowedDevicesIsMutable();
+              allowedDevices_.addAll(other.allowedDevices_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.allowedDevices_.isEmpty()) {
+            if (allowedDevicesBuilder_.isEmpty()) {
+              allowedDevicesBuilder_.dispose();
+              allowedDevicesBuilder_ = null;
+              allowedDevices_ = other.allowedDevices_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              allowedDevicesBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getAllowedDevicesFieldBuilder() : null;
+            } else {
+              allowedDevicesBuilder_.addAllMessages(other.allowedDevices_);
+            }
+          }
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        for (int i = 0; i < getAllowedDevicesCount(); i++) {
+          if (!getAllowedDevices(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.Protos.DeviceWhitelist parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.Protos.DeviceWhitelist) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // repeated .mesos.DeviceAccess allowed_devices = 1;
+      private java.util.List<org.apache.mesos.Protos.DeviceAccess> allowedDevices_ =
+        java.util.Collections.emptyList();
+      private void ensureAllowedDevicesIsMutable() {
+        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+          allowedDevices_ = new java.util.ArrayList<org.apache.mesos.Protos.DeviceAccess>(allowedDevices_);
+          bitField0_ |= 0x00000001;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.DeviceAccess, org.apache.mesos.Protos.DeviceAccess.Builder, org.apache.mesos.Protos.DeviceAccessOrBuilder> allowedDevicesBuilder_;
+
+      /**
+       * <code>repeated .mesos.DeviceAccess allowed_devices = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.DeviceAccess> getAllowedDevicesList() {
+        if (allowedDevicesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(allowedDevices_);
+        } else {
+          return allowedDevicesBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.DeviceAccess allowed_devices = 1;</code>
+       */
+      public int getAllowedDevicesCount() {
+        if (allowedDevicesBuilder_ == null) {
+          return allowedDevices_.size();
+        } else {
+          return allowedDevicesBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.DeviceAccess allowed_devices = 1;</code>
+       */
+      public org.apache.mesos.Protos.DeviceAccess getAllowedDevices(int index) {
+        if (allowedDevicesBuilder_ == null) {
+          return allowedDevices_.get(index);
+        } else {
+          return allowedDevicesBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.DeviceAccess allowed_devices = 1;</code>
+       */
+      public Builder setAllowedDevices(
+          int index, org.apache.mesos.Protos.DeviceAccess value) {
+        if (allowedDevicesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureAllowedDevicesIsMutable();
+          allowedDevices_.set(index, value);
+          onChanged();
+        } else {
+          allowedDevicesBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.DeviceAccess allowed_devices = 1;</code>
+       */
+      public Builder setAllowedDevices(
+          int index, org.apache.mesos.Protos.DeviceAccess.Builder builderForValue) {
+        if (allowedDevicesBuilder_ == null) {
+          ensureAllowedDevicesIsMutable();
+          allowedDevices_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          allowedDevicesBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.DeviceAccess allowed_devices = 1;</code>
+       */
+      public Builder addAllowedDevices(org.apache.mesos.Protos.DeviceAccess value) {
+        if (allowedDevicesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureAllowedDevicesIsMutable();
+          allowedDevices_.add(value);
+          onChanged();
+        } else {
+          allowedDevicesBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.DeviceAccess allowed_devices = 1;</code>
+       */
+      public Builder addAllowedDevices(
+          int index, org.apache.mesos.Protos.DeviceAccess value) {
+        if (allowedDevicesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureAllowedDevicesIsMutable();
+          allowedDevices_.add(index, value);
+          onChanged();
+        } else {
+          allowedDevicesBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.DeviceAccess allowed_devices = 1;</code>
+       */
+      public Builder addAllowedDevices(
+          org.apache.mesos.Protos.DeviceAccess.Builder builderForValue) {
+        if (allowedDevicesBuilder_ == null) {
+          ensureAllowedDevicesIsMutable();
+          allowedDevices_.add(builderForValue.build());
+          onChanged();
+        } else {
+          allowedDevicesBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.DeviceAccess allowed_devices = 1;</code>
+       */
+      public Builder addAllowedDevices(
+          int index, org.apache.mesos.Protos.DeviceAccess.Builder builderForValue) {
+        if (allowedDevicesBuilder_ == null) {
+          ensureAllowedDevicesIsMutable();
+          allowedDevices_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          allowedDevicesBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.DeviceAccess allowed_devices = 1;</code>
+       */
+      public Builder addAllAllowedDevices(
+          java.lang.Iterable<? extends org.apache.mesos.Protos.DeviceAccess> values) {
+        if (allowedDevicesBuilder_ == null) {
+          ensureAllowedDevicesIsMutable();
+          super.addAll(values, allowedDevices_);
+          onChanged();
+        } else {
+          allowedDevicesBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.DeviceAccess allowed_devices = 1;</code>
+       */
+      public Builder clearAllowedDevices() {
+        if (allowedDevicesBuilder_ == null) {
+          allowedDevices_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+        } else {
+          allowedDevicesBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.DeviceAccess allowed_devices = 1;</code>
+       */
+      public Builder removeAllowedDevices(int index) {
+        if (allowedDevicesBuilder_ == null) {
+          ensureAllowedDevicesIsMutable();
+          allowedDevices_.remove(index);
+          onChanged();
+        } else {
+          allowedDevicesBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.DeviceAccess allowed_devices = 1;</code>
+       */
+      public org.apache.mesos.Protos.DeviceAccess.Builder getAllowedDevicesBuilder(
+          int index) {
+        return getAllowedDevicesFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.DeviceAccess allowed_devices = 1;</code>
+       */
+      public org.apache.mesos.Protos.DeviceAccessOrBuilder getAllowedDevicesOrBuilder(
+          int index) {
+        if (allowedDevicesBuilder_ == null) {
+          return allowedDevices_.get(index);  } else {
+          return allowedDevicesBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.DeviceAccess allowed_devices = 1;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.DeviceAccessOrBuilder> 
+           getAllowedDevicesOrBuilderList() {
+        if (allowedDevicesBuilder_ != null) {
+          return allowedDevicesBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(allowedDevices_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.DeviceAccess allowed_devices = 1;</code>
+       */
+      public org.apache.mesos.Protos.DeviceAccess.Builder addAllowedDevicesBuilder() {
+        return getAllowedDevicesFieldBuilder().addBuilder(
+            org.apache.mesos.Protos.DeviceAccess.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.DeviceAccess allowed_devices = 1;</code>
+       */
+      public org.apache.mesos.Protos.DeviceAccess.Builder addAllowedDevicesBuilder(
+          int index) {
+        return getAllowedDevicesFieldBuilder().addBuilder(
+            index, org.apache.mesos.Protos.DeviceAccess.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.DeviceAccess allowed_devices = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.DeviceAccess.Builder> 
+           getAllowedDevicesBuilderList() {
+        return getAllowedDevicesFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.Protos.DeviceAccess, org.apache.mesos.Protos.DeviceAccess.Builder, org.apache.mesos.Protos.DeviceAccessOrBuilder> 
+          getAllowedDevicesFieldBuilder() {
+        if (allowedDevicesBuilder_ == null) {
+          allowedDevicesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.Protos.DeviceAccess, org.apache.mesos.Protos.DeviceAccess.Builder, org.apache.mesos.Protos.DeviceAccessOrBuilder>(
+                  allowedDevices_,
+                  ((bitField0_ & 0x00000001) == 0x00000001),
+                  getParentForChildren(),
+                  isClean());
+          allowedDevices_ = null;
+        }
+        return allowedDevicesBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.DeviceWhitelist)
+    }
+
+    static {
+      defaultInstance = new DeviceWhitelist(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.DeviceWhitelist)
+  }
+
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_FrameworkID_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_FrameworkID_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_OfferID_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_OfferID_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_SlaveID_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_SlaveID_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_TaskID_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_TaskID_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_ExecutorID_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_ExecutorID_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_ContainerID_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_ContainerID_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_ResourceProviderID_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_ResourceProviderID_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_TimeInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_TimeInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_DurationInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_DurationInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Address_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Address_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_URL_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_URL_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Unavailability_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Unavailability_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_MachineID_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_MachineID_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_MachineInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_MachineInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_FrameworkInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_FrameworkInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_FrameworkInfo_Capability_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_FrameworkInfo_Capability_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_CheckInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_CheckInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_CheckInfo_Command_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_CheckInfo_Command_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_CheckInfo_Http_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_CheckInfo_Http_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_CheckInfo_Tcp_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_CheckInfo_Tcp_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_HealthCheck_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_HealthCheck_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_HealthCheck_HTTPCheckInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_HealthCheck_HTTPCheckInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_HealthCheck_TCPCheckInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_HealthCheck_TCPCheckInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_KillPolicy_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_KillPolicy_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_CommandInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_CommandInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_CommandInfo_URI_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_CommandInfo_URI_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_ExecutorInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_ExecutorInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_DomainInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_DomainInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_DomainInfo_FaultDomain_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_DomainInfo_FaultDomain_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_DomainInfo_FaultDomain_RegionInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_DomainInfo_FaultDomain_RegionInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_DomainInfo_FaultDomain_ZoneInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_DomainInfo_FaultDomain_ZoneInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_MasterInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_MasterInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_SlaveInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_SlaveInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_SlaveInfo_Capability_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_SlaveInfo_Capability_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_ResourceProviderInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_ResourceProviderInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Value_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Value_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Value_Scalar_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Value_Scalar_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Value_Range_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Value_Range_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Value_Ranges_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Value_Ranges_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Value_Set_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Value_Set_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Value_Text_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Value_Text_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Attribute_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Attribute_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Resource_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Resource_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Resource_AllocationInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Resource_AllocationInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Resource_ReservationInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Resource_ReservationInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Resource_DiskInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Resource_DiskInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Resource_DiskInfo_Persistence_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Resource_DiskInfo_Persistence_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Resource_DiskInfo_Source_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Resource_DiskInfo_Source_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Resource_DiskInfo_Source_Path_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Resource_DiskInfo_Source_Path_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Resource_DiskInfo_Source_Mount_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Resource_DiskInfo_Source_Mount_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Resource_RevocableInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Resource_RevocableInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Resource_SharedInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Resource_SharedInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_TrafficControlStatistics_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_TrafficControlStatistics_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_IpStatistics_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_IpStatistics_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_IcmpStatistics_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_IcmpStatistics_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_TcpStatistics_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_TcpStatistics_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_UdpStatistics_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_UdpStatistics_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_SNMPStatistics_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_SNMPStatistics_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_DiskStatistics_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_DiskStatistics_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_ResourceStatistics_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_ResourceStatistics_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_ResourceUsage_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_ResourceUsage_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_ResourceUsage_Executor_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_ResourceUsage_Executor_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_ResourceUsage_Executor_Task_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_ResourceUsage_Executor_Task_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_PerfStatistics_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_PerfStatistics_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Request_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Request_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Offer_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Offer_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Offer_Operation_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Offer_Operation_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Offer_Operation_Launch_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Offer_Operation_Launch_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Offer_Operation_LaunchGroup_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Offer_Operation_LaunchGroup_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Offer_Operation_Reserve_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Offer_Operation_Reserve_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Offer_Operation_Unreserve_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Offer_Operation_Unreserve_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Offer_Operation_Create_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Offer_Operation_Create_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Offer_Operation_Destroy_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Offer_Operation_Destroy_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_InverseOffer_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_InverseOffer_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_TaskInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_TaskInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_TaskGroupInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_TaskGroupInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Task_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Task_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_CheckStatusInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_CheckStatusInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_CheckStatusInfo_Command_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_CheckStatusInfo_Command_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_CheckStatusInfo_Http_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_CheckStatusInfo_Http_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_CheckStatusInfo_Tcp_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_CheckStatusInfo_Tcp_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_TaskStatus_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_TaskStatus_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Filters_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Filters_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Environment_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Environment_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Environment_Variable_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Environment_Variable_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Parameter_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Parameter_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Parameters_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Parameters_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Credential_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Credential_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Credentials_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Credentials_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Secret_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Secret_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Secret_Reference_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Secret_Reference_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Secret_Value_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Secret_Value_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_RateLimit_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_RateLimit_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_RateLimits_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_RateLimits_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Image_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Image_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Image_Appc_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Image_Appc_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Image_Docker_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Image_Docker_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Volume_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Volume_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Volume_Source_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Volume_Source_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Volume_Source_DockerVolume_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Volume_Source_DockerVolume_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Volume_Source_SandboxPath_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Volume_Source_SandboxPath_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_NetworkInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_NetworkInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_NetworkInfo_IPAddress_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_NetworkInfo_IPAddress_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_NetworkInfo_PortMapping_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_NetworkInfo_PortMapping_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_CapabilityInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_CapabilityInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_LinuxInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_LinuxInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_RLimitInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_RLimitInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_RLimitInfo_RLimit_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_RLimitInfo_RLimit_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_TTYInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_TTYInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_TTYInfo_WindowSize_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_TTYInfo_WindowSize_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_ContainerInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_ContainerInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_ContainerInfo_DockerInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_ContainerInfo_DockerInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_ContainerInfo_DockerInfo_PortMapping_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_ContainerInfo_DockerInfo_PortMapping_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_ContainerInfo_MesosInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_ContainerInfo_MesosInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_ContainerStatus_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_ContainerStatus_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_CgroupInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_CgroupInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_CgroupInfo_Blkio_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_CgroupInfo_Blkio_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_CgroupInfo_Blkio_Value_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_CgroupInfo_Blkio_Value_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_CgroupInfo_Blkio_CFQ_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_CgroupInfo_Blkio_CFQ_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_CgroupInfo_Blkio_CFQ_Statistics_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_CgroupInfo_Blkio_CFQ_Statistics_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_CgroupInfo_Blkio_Throttling_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_CgroupInfo_Blkio_Throttling_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_CgroupInfo_Blkio_Throttling_Statistics_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_CgroupInfo_Blkio_Throttling_Statistics_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_CgroupInfo_Blkio_Statistics_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_CgroupInfo_Blkio_Statistics_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_CgroupInfo_NetCls_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_CgroupInfo_NetCls_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Labels_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Labels_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Label_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Label_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Port_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Port_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Ports_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Ports_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_DiscoveryInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_DiscoveryInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_WeightInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_WeightInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_VersionInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_VersionInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Flag_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Flag_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Role_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Role_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Metric_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Metric_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_FileInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_FileInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Device_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Device_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_Device_Number_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_Device_Number_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_DeviceAccess_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_DeviceAccess_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_DeviceAccess_Access_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_DeviceAccess_Access_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_DeviceWhitelist_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_DeviceWhitelist_fieldAccessorTable;
+
+  public static com.google.protobuf.Descriptors.FileDescriptor
+      getDescriptor() {
+    return descriptor;
+  }
+  private static com.google.protobuf.Descriptors.FileDescriptor
+      descriptor;
+  static {
+    java.lang.String[] descriptorData = {
+      "\n\021mesos/mesos.proto\022\005mesos\"\034\n\013FrameworkI" +
+      "D\022\r\n\005value\030\001 \002(\t\"\030\n\007OfferID\022\r\n\005value\030\001 \002" +
+      "(\t\"\030\n\007SlaveID\022\r\n\005value\030\001 \002(\t\"\027\n\006TaskID\022\r" +
+      "\n\005value\030\001 \002(\t\"\033\n\nExecutorID\022\r\n\005value\030\001 \002" +
+      "(\t\"@\n\013ContainerID\022\r\n\005value\030\001 \002(\t\022\"\n\006pare" +
+      "nt\030\002 \001(\0132\022.mesos.ContainerID\"#\n\022Resource" +
+      "ProviderID\022\r\n\005value\030\001 \002(\t\"\037\n\010TimeInfo\022\023\n" +
+      "\013nanoseconds\030\001 \002(\003\"#\n\014DurationInfo\022\023\n\013na" +
+      "noseconds\030\001 \002(\003\"5\n\007Address\022\020\n\010hostname\030\001" +
+      " \001(\t\022\n\n\002ip\030\002 \001(\t\022\014\n\004port\030\003 \002(\005\"w\n\003URL\022\016\n",
+      "\006scheme\030\001 \002(\t\022\037\n\007address\030\002 \002(\0132\016.mesos.A" +
+      "ddress\022\014\n\004path\030\003 \001(\t\022\037\n\005query\030\004 \003(\0132\020.me" +
+      "sos.Parameter\022\020\n\010fragment\030\005 \001(\t\"W\n\016Unava" +
+      "ilability\022\036\n\005start\030\001 \002(\0132\017.mesos.TimeInf" +
+      "o\022%\n\010duration\030\002 \001(\0132\023.mesos.DurationInfo" +
+      "\")\n\tMachineID\022\020\n\010hostname\030\001 \001(\t\022\n\n\002ip\030\002 " +
+      "\001(\t\"\251\001\n\013MachineInfo\022\034\n\002id\030\001 \002(\0132\020.mesos." +
+      "MachineID\022%\n\004mode\030\002 \001(\0162\027.mesos.MachineI" +
+      "nfo.Mode\022-\n\016unavailability\030\003 \001(\0132\025.mesos" +
+      ".Unavailability\"&\n\004Mode\022\006\n\002UP\020\001\022\014\n\010DRAIN",
+      "ING\020\002\022\010\n\004DOWN\020\003\"\273\004\n\rFrameworkInfo\022\014\n\004use" +
+      "r\030\001 \002(\t\022\014\n\004name\030\002 \002(\t\022\036\n\002id\030\003 \001(\0132\022.meso" +
+      "s.FrameworkID\022\033\n\020failover_timeout\030\004 \001(\001:" +
+      "\0010\022\031\n\ncheckpoint\030\005 \001(\010:\005false\022\023\n\004role\030\006 " +
+      "\001(\t:\001*B\002\030\001\022\r\n\005roles\030\014 \003(\t\022\020\n\010hostname\030\007 " +
+      "\001(\t\022\021\n\tprincipal\030\010 \001(\t\022\021\n\twebui_url\030\t \001(" +
+      "\t\0225\n\014capabilities\030\n \003(\0132\037.mesos.Framewor" +
+      "kInfo.Capability\022\035\n\006labels\030\013 \001(\0132\r.mesos" +
+      ".Labels\032\203\002\n\nCapability\0222\n\004type\030\001 \001(\0162$.m" +
+      "esos.FrameworkInfo.Capability.Type\"\300\001\n\004T",
+      "ype\022\013\n\007UNKNOWN\020\000\022\027\n\023REVOCABLE_RESOURCES\020" +
+      "\001\022\026\n\022TASK_KILLING_STATE\020\002\022\021\n\rGPU_RESOURC" +
+      "ES\020\003\022\024\n\020SHARED_RESOURCES\020\004\022\023\n\017PARTITION_" +
+      "AWARE\020\005\022\016\n\nMULTI_ROLE\020\006\022\032\n\026RESERVATION_R" +
+      "EFINEMENT\020\007\022\020\n\014REGION_AWARE\020\010\"\227\003\n\tCheckI" +
+      "nfo\022#\n\004type\030\001 \001(\0162\025.mesos.CheckInfo.Type" +
+      "\022)\n\007command\030\002 \001(\0132\030.mesos.CheckInfo.Comm" +
+      "and\022#\n\004http\030\003 \001(\0132\025.mesos.CheckInfo.Http" +
+      "\022!\n\003tcp\030\007 \001(\0132\024.mesos.CheckInfo.Tcp\022\031\n\rd" +
+      "elay_seconds\030\004 \001(\001:\00215\022\034\n\020interval_secon",
+      "ds\030\005 \001(\001:\00210\022\033\n\017timeout_seconds\030\006 \001(\001:\0022" +
+      "0\032.\n\007Command\022#\n\007command\030\001 \002(\0132\022.mesos.Co" +
+      "mmandInfo\032\"\n\004Http\022\014\n\004port\030\001 \002(\r\022\014\n\004path\030" +
+      "\002 \001(\t\032\023\n\003Tcp\022\014\n\004port\030\001 \002(\r\"3\n\004Type\022\013\n\007UN" +
+      "KNOWN\020\000\022\013\n\007COMMAND\020\001\022\010\n\004HTTP\020\002\022\007\n\003TCP\020\003\"" +
+      "\362\003\n\013HealthCheck\022\031\n\rdelay_seconds\030\002 \001(\001:\002" +
+      "15\022\034\n\020interval_seconds\030\003 \001(\001:\00210\022\033\n\017time" +
+      "out_seconds\030\004 \001(\001:\00220\022\037\n\024consecutive_fai" +
+      "lures\030\005 \001(\r:\0013\022 \n\024grace_period_seconds\030\006" +
+      " \001(\001:\00210\022%\n\004type\030\010 \001(\0162\027.mesos.HealthChe",
+      "ck.Type\022#\n\007command\030\007 \001(\0132\022.mesos.Command" +
+      "Info\022.\n\004http\030\001 \001(\0132 .mesos.HealthCheck.H" +
+      "TTPCheckInfo\022,\n\003tcp\030\t \001(\0132\037.mesos.Health" +
+      "Check.TCPCheckInfo\032M\n\rHTTPCheckInfo\022\016\n\006s" +
+      "cheme\030\003 \001(\t\022\014\n\004port\030\001 \002(\r\022\014\n\004path\030\002 \001(\t\022" +
+      "\020\n\010statuses\030\004 \003(\r\032\034\n\014TCPCheckInfo\022\014\n\004por" +
+      "t\030\001 \002(\r\"3\n\004Type\022\013\n\007UNKNOWN\020\000\022\013\n\007COMMAND\020" +
+      "\001\022\010\n\004HTTP\020\002\022\007\n\003TCP\020\003\"7\n\nKillPolicy\022)\n\014gr" +
+      "ace_period\030\001 \001(\0132\023.mesos.DurationInfo\"\206\002" +
+      "\n\013CommandInfo\022$\n\004uris\030\001 \003(\0132\026.mesos.Comm",
+      "andInfo.URI\022\'\n\013environment\030\002 \001(\0132\022.mesos" +
+      ".Environment\022\023\n\005shell\030\006 \001(\010:\004true\022\r\n\005val" +
+      "ue\030\003 \001(\t\022\021\n\targuments\030\007 \003(\t\022\014\n\004user\030\005 \001(" +
+      "\t\032c\n\003URI\022\r\n\005value\030\001 \002(\t\022\022\n\nexecutable\030\002 " +
+      "\001(\010\022\025\n\007extract\030\003 \001(\010:\004true\022\r\n\005cache\030\004 \001(" +
+      "\010\022\023\n\013output_file\030\005 \001(\t\"\324\003\n\014ExecutorInfo\022" +
+      "&\n\004type\030\017 \001(\0162\030.mesos.ExecutorInfo.Type\022" +
+      "&\n\013executor_id\030\001 \002(\0132\021.mesos.ExecutorID\022" +
+      "(\n\014framework_id\030\010 \001(\0132\022.mesos.FrameworkI" +
+      "D\022#\n\007command\030\007 \001(\0132\022.mesos.CommandInfo\022\'",
+      "\n\tcontainer\030\013 \001(\0132\024.mesos.ContainerInfo\022" +
+      "\"\n\tresources\030\005 \003(\0132\017.mesos.Resource\022\014\n\004n" +
+      "ame\030\t \001(\t\022\022\n\006source\030\n \001(\tB\002\030\001\022\014\n\004data\030\004 " +
+      "\001(\014\022\'\n\tdiscovery\030\014 \001(\0132\024.mesos.Discovery" +
+      "Info\0222\n\025shutdown_grace_period\030\r \001(\0132\023.me" +
+      "sos.DurationInfo\022\035\n\006labels\030\016 \001(\0132\r.mesos" +
+      ".Labels\",\n\004Type\022\013\n\007UNKNOWN\020\000\022\013\n\007DEFAULT\020" +
+      "\001\022\n\n\006CUSTOM\020\002\"\367\001\n\nDomainInfo\0223\n\014fault_do" +
+      "main\030\001 \001(\0132\035.mesos.DomainInfo.FaultDomai" +
+      "n\032\263\001\n\013FaultDomain\0228\n\006region\030\001 \002(\0132(.meso",
+      "s.DomainInfo.FaultDomain.RegionInfo\0224\n\004z" +
+      "one\030\002 \002(\0132&.mesos.DomainInfo.FaultDomain" +
+      ".ZoneInfo\032\032\n\nRegionInfo\022\014\n\004name\030\001 \002(\t\032\030\n" +
+      "\010ZoneInfo\022\014\n\004name\030\001 \002(\t\"\254\001\n\nMasterInfo\022\n" +
+      "\n\002id\030\001 \002(\t\022\n\n\002ip\030\002 \002(\r\022\022\n\004port\030\003 \002(\r:\00450" +
+      "50\022\013\n\003pid\030\004 \001(\t\022\020\n\010hostname\030\005 \001(\t\022\017\n\007ver" +
+      "sion\030\006 \001(\t\022\037\n\007address\030\007 \001(\0132\016.mesos.Addr" +
+      "ess\022!\n\006domain\030\010 \001(\0132\021.mesos.DomainInfo\"\354" +
+      "\002\n\tSlaveInfo\022\020\n\010hostname\030\001 \002(\t\022\022\n\004port\030\010" +
+      " \001(\005:\0045051\022\"\n\tresources\030\003 \003(\0132\017.mesos.Re",
+      "source\022$\n\nattributes\030\005 \003(\0132\020.mesos.Attri" +
+      "bute\022\032\n\002id\030\006 \001(\0132\016.mesos.SlaveID\022!\n\006doma" +
+      "in\030\n \001(\0132\021.mesos.DomainInfo\022\031\n\ncheckpoin" +
+      "t\030\007 \001(\010:\005false\032\224\001\n\nCapability\022.\n\004type\030\001 " +
+      "\001(\0162 .mesos.SlaveInfo.Capability.Type\"V\n" +
+      "\004Type\022\013\n\007UNKNOWN\020\000\022\016\n\nMULTI_ROLE\020\001\022\025\n\021HI" +
+      "ERARCHICAL_ROLE\020\002\022\032\n\026RESERVATION_REFINEM" +
+      "ENT\020\003\"\177\n\024ResourceProviderInfo\022%\n\002id\030\001 \001(" +
+      "\0132\031.mesos.ResourceProviderID\022$\n\nattribut" +
+      "es\030\002 \003(\0132\020.mesos.Attribute\022\014\n\004type\030\003 \002(\t",
+      "\022\014\n\004name\030\004 \002(\t\"\374\002\n\005Value\022\037\n\004type\030\001 \002(\0162\021" +
+      ".mesos.Value.Type\022#\n\006scalar\030\002 \001(\0132\023.meso" +
+      "s.Value.Scalar\022#\n\006ranges\030\003 \001(\0132\023.mesos.V" +
+      "alue.Ranges\022\035\n\003set\030\004 \001(\0132\020.mesos.Value.S" +
+      "et\022\037\n\004text\030\005 \001(\0132\021.mesos.Value.Text\032\027\n\006S" +
+      "calar\022\r\n\005value\030\001 \002(\001\032#\n\005Range\022\r\n\005begin\030\001" +
+      " \002(\004\022\013\n\003end\030\002 \002(\004\032+\n\006Ranges\022!\n\005range\030\001 \003" +
+      "(\0132\022.mesos.Value.Range\032\023\n\003Set\022\014\n\004item\030\001 " +
+      "\003(\t\032\025\n\004Text\022\r\n\005value\030\001 \002(\t\"1\n\004Type\022\n\n\006SC" +
+      "ALAR\020\000\022\n\n\006RANGES\020\001\022\007\n\003SET\020\002\022\010\n\004TEXT\020\003\"\304\001",
+      "\n\tAttribute\022\014\n\004name\030\001 \002(\t\022\037\n\004type\030\002 \002(\0162" +
+      "\021.mesos.Value.Type\022#\n\006scalar\030\003 \001(\0132\023.mes" +
+      "os.Value.Scalar\022#\n\006ranges\030\004 \001(\0132\023.mesos." +
+      "Value.Ranges\022\035\n\003set\030\006 \001(\0132\020.mesos.Value." +
+      "Set\022\037\n\004text\030\005 \001(\0132\021.mesos.Value.Text\"\316\t\n" +
+      "\010Resource\022.\n\013provider_id\030\014 \001(\0132\031.mesos.R" +
+      "esourceProviderID\022\014\n\004name\030\001 \002(\t\022\037\n\004type\030" +
+      "\002 \002(\0162\021.mesos.Value.Type\022#\n\006scalar\030\003 \001(\013" +
+      "2\023.mesos.Value.Scalar\022#\n\006ranges\030\004 \001(\0132\023." +
+      "mesos.Value.Ranges\022\035\n\003set\030\005 \001(\0132\020.mesos.",
+      "Value.Set\022\023\n\004role\030\006 \001(\t:\001*B\002\030\001\0227\n\017alloca" +
+      "tion_info\030\013 \001(\0132\036.mesos.Resource.Allocat" +
+      "ionInfo\0224\n\013reservation\030\010 \001(\0132\037.mesos.Res" +
+      "ource.ReservationInfo\0225\n\014reservations\030\r " +
+      "\003(\0132\037.mesos.Resource.ReservationInfo\022&\n\004" +
+      "disk\030\007 \001(\0132\030.mesos.Resource.DiskInfo\0220\n\t" +
+      "revocable\030\t \001(\0132\035.mesos.Resource.Revocab" +
+      "leInfo\022*\n\006shared\030\n \001(\0132\032.mesos.Resource." +
+      "SharedInfo\032\036\n\016AllocationInfo\022\014\n\004role\030\001 \001" +
+      "(\t\032\263\001\n\017ReservationInfo\0222\n\004type\030\004 \001(\0162$.m",
+      "esos.Resource.ReservationInfo.Type\022\014\n\004ro" +
+      "le\030\003 \001(\t\022\021\n\tprincipal\030\001 \001(\t\022\035\n\006labels\030\002 " +
+      "\001(\0132\r.mesos.Labels\",\n\004Type\022\013\n\007UNKNOWN\020\000\022" +
+      "\n\n\006STATIC\020\001\022\013\n\007DYNAMIC\020\002\032\303\003\n\010DiskInfo\0229\n" +
+      "\013persistence\030\001 \001(\0132$.mesos.Resource.Disk" +
+      "Info.Persistence\022\035\n\006volume\030\002 \001(\0132\r.mesos" +
+      ".Volume\022/\n\006source\030\003 \001(\0132\037.mesos.Resource" +
+      ".DiskInfo.Source\032,\n\013Persistence\022\n\n\002id\030\001 " +
+      "\002(\t\022\021\n\tprincipal\030\002 \001(\t\032\375\001\n\006Source\0222\n\004typ" +
+      "e\030\001 \002(\0162$.mesos.Resource.DiskInfo.Source",
+      ".Type\0222\n\004path\030\002 \001(\0132$.mesos.Resource.Dis" +
+      "kInfo.Source.Path\0224\n\005mount\030\003 \001(\0132%.mesos" +
+      ".Resource.DiskInfo.Source.Mount\032\024\n\004Path\022" +
+      "\014\n\004root\030\001 \001(\t\032\025\n\005Mount\022\014\n\004root\030\001 \001(\t\"(\n\004" +
+      "Type\022\013\n\007UNKNOWN\020\000\022\010\n\004PATH\020\001\022\t\n\005MOUNT\020\002\032\017" +
+      "\n\rRevocableInfo\032\014\n\nSharedInfo\"\274\001\n\030Traffi" +
+      "cControlStatistics\022\n\n\002id\030\001 \002(\t\022\017\n\007backlo" +
+      "g\030\002 \001(\004\022\r\n\005bytes\030\003 \001(\004\022\r\n\005drops\030\004 \001(\004\022\022\n" +
+      "\noverlimits\030\005 \001(\004\022\017\n\007packets\030\006 \001(\004\022\014\n\004ql" +
+      "en\030\007 \001(\004\022\017\n\007ratebps\030\010 \001(\004\022\017\n\007ratepps\030\t \001",
+      "(\004\022\020\n\010requeues\030\n \001(\004\"\225\003\n\014IpStatistics\022\022\n" +
+      "\nForwarding\030\001 \001(\003\022\022\n\nDefaultTTL\030\002 \001(\003\022\022\n" +
+      "\nInReceives\030\003 \001(\003\022\023\n\013InHdrErrors\030\004 \001(\003\022\024" +
+      "\n\014InAddrErrors\030\005 \001(\003\022\025\n\rForwDatagrams\030\006 " +
+      "\001(\003\022\027\n\017InUnknownProtos\030\007 \001(\003\022\022\n\nInDiscar" +
+      "ds\030\010 \001(\003\022\022\n\nInDelivers\030\t \001(\003\022\023\n\013OutReque" +
+      "sts\030\n \001(\003\022\023\n\013OutDiscards\030\013 \001(\003\022\023\n\013OutNoR" +
+      "outes\030\014 \001(\003\022\024\n\014ReasmTimeout\030\r \001(\003\022\022\n\nRea" +
+      "smReqds\030\016 \001(\003\022\020\n\010ReasmOKs\030\017 \001(\003\022\022\n\nReasm" +
+      "Fails\030\020 \001(\003\022\017\n\007FragOKs\030\021 \001(\003\022\021\n\tFragFail",
+      "s\030\022 \001(\003\022\023\n\013FragCreates\030\023 \001(\003\"\323\004\n\016IcmpSta" +
+      "tistics\022\016\n\006InMsgs\030\001 \001(\003\022\020\n\010InErrors\030\002 \001(" +
+      "\003\022\024\n\014InCsumErrors\030\003 \001(\003\022\026\n\016InDestUnreach" +
+      "s\030\004 \001(\003\022\023\n\013InTimeExcds\030\005 \001(\003\022\023\n\013InParmPr" +
+      "obs\030\006 \001(\003\022\024\n\014InSrcQuenchs\030\007 \001(\003\022\023\n\013InRed" +
+      "irects\030\010 \001(\003\022\017\n\007InEchos\030\t \001(\003\022\022\n\nInEchoR" +
+      "eps\030\n \001(\003\022\024\n\014InTimestamps\030\013 \001(\003\022\027\n\017InTim" +
+      "estampReps\030\014 \001(\003\022\023\n\013InAddrMasks\030\r \001(\003\022\026\n" +
+      "\016InAddrMaskReps\030\016 \001(\003\022\017\n\007OutMsgs\030\017 \001(\003\022\021" +
+      "\n\tOutErrors\030\020 \001(\003\022\027\n\017OutDestUnreachs\030\021 \001",
+      "(\003\022\024\n\014OutTimeExcds\030\022 \001(\003\022\024\n\014OutParmProbs" +
+      "\030\023 \001(\003\022\025\n\rOutSrcQuenchs\030\024 \001(\003\022\024\n\014OutRedi" +
+      "rects\030\025 \001(\003\022\020\n\010OutEchos\030\026 \001(\003\022\023\n\013OutEcho" +
+      "Reps\030\027 \001(\003\022\025\n\rOutTimestamps\030\030 \001(\003\022\030\n\020Out" +
+      "TimestampReps\030\031 \001(\003\022\024\n\014OutAddrMasks\030\032 \001(" +
+      "\003\022\027\n\017OutAddrMaskReps\030\033 \001(\003\"\254\002\n\rTcpStatis" +
+      "tics\022\024\n\014RtoAlgorithm\030\001 \001(\003\022\016\n\006RtoMin\030\002 \001" +
+      "(\003\022\016\n\006RtoMax\030\003 \001(\003\022\017\n\007MaxConn\030\004 \001(\003\022\023\n\013A" +
+      "ctiveOpens\030\005 \001(\003\022\024\n\014PassiveOpens\030\006 \001(\003\022\024" +
+      "\n\014AttemptFails\030\007 \001(\003\022\023\n\013EstabResets\030\010 \001(",
+      "\003\022\021\n\tCurrEstab\030\t \001(\003\022\016\n\006InSegs\030\n \001(\003\022\017\n\007" +
+      "OutSegs\030\013 \001(\003\022\023\n\013RetransSegs\030\014 \001(\003\022\016\n\006In" +
+      "Errs\030\r \001(\003\022\017\n\007OutRsts\030\016 \001(\003\022\024\n\014InCsumErr" +
+      "ors\030\017 \001(\003\"\265\001\n\rUdpStatistics\022\023\n\013InDatagra" +
+      "ms\030\001 \001(\003\022\017\n\007NoPorts\030\002 \001(\003\022\020\n\010InErrors\030\003 " +
+      "\001(\003\022\024\n\014OutDatagrams\030\004 \001(\003\022\024\n\014RcvbufError" +
+      "s\030\005 \001(\003\022\024\n\014SndbufErrors\030\006 \001(\003\022\024\n\014InCsumE" +
+      "rrors\030\007 \001(\003\022\024\n\014IgnoredMulti\030\010 \001(\003\"\264\001\n\016SN" +
+      "MPStatistics\022%\n\010ip_stats\030\001 \001(\0132\023.mesos.I" +
+      "pStatistics\022)\n\nicmp_stats\030\002 \001(\0132\025.mesos.",
+      "IcmpStatistics\022\'\n\ttcp_stats\030\003 \001(\0132\024.meso" +
+      "s.TcpStatistics\022\'\n\tudp_stats\030\004 \001(\0132\024.mes" +
+      "os.UdpStatistics\"\245\001\n\016DiskStatistics\022/\n\006s" +
+      "ource\030\001 \001(\0132\037.mesos.Resource.DiskInfo.So" +
+      "urce\0229\n\013persistence\030\002 \001(\0132$.mesos.Resour" +
+      "ce.DiskInfo.Persistence\022\023\n\013limit_bytes\030\003" +
+      " \001(\004\022\022\n\nused_bytes\030\004 \001(\004\"\330\n\n\022ResourceSta" +
+      "tistics\022\021\n\ttimestamp\030\001 \002(\001\022\021\n\tprocesses\030" +
+      "\036 \001(\r\022\017\n\007threads\030\037 \001(\r\022\033\n\023cpus_user_time" +
+      "_secs\030\002 \001(\001\022\035\n\025cpus_system_time_secs\030\003 \001",
+      "(\001\022\022\n\ncpus_limit\030\004 \001(\001\022\027\n\017cpus_nr_period" +
+      "s\030\007 \001(\r\022\031\n\021cpus_nr_throttled\030\010 \001(\r\022 \n\030cp" +
+      "us_throttled_time_secs\030\t \001(\001\022\027\n\017mem_tota" +
+      "l_bytes\030$ \001(\004\022\035\n\025mem_total_memsw_bytes\030%" +
+      " \001(\004\022\027\n\017mem_limit_bytes\030\006 \001(\004\022\034\n\024mem_sof" +
+      "t_limit_bytes\030& \001(\004\022\026\n\016mem_file_bytes\030\n " +
+      "\001(\004\022\026\n\016mem_anon_bytes\030\013 \001(\004\022\027\n\017mem_cache" +
+      "_bytes\030\' \001(\004\022\025\n\rmem_rss_bytes\030\005 \001(\004\022\035\n\025m" +
+      "em_mapped_file_bytes\030\014 \001(\004\022\026\n\016mem_swap_b" +
+      "ytes\030( \001(\004\022\035\n\025mem_unevictable_bytes\030) \001(",
+      "\004\022 \n\030mem_low_pressure_counter\030  \001(\004\022#\n\033m" +
+      "em_medium_pressure_counter\030! \001(\004\022%\n\035mem_" +
+      "critical_pressure_counter\030\" \001(\004\022\030\n\020disk_" +
+      "limit_bytes\030\032 \001(\004\022\027\n\017disk_used_bytes\030\033 \001" +
+      "(\004\022.\n\017disk_statistics\030+ \003(\0132\025.mesos.Disk" +
+      "Statistics\022<\n\020blkio_statistics\030, \001(\0132\".m" +
+      "esos.CgroupInfo.Blkio.Statistics\022#\n\004perf" +
+      "\030\r \001(\0132\025.mesos.PerfStatistics\022\026\n\016net_rx_" +
+      "packets\030\016 \001(\004\022\024\n\014net_rx_bytes\030\017 \001(\004\022\025\n\rn" +
+      "et_rx_errors\030\020 \001(\004\022\026\n\016net_rx_dropped\030\021 \001",
+      "(\004\022\026\n\016net_tx_packets\030\022 \001(\004\022\024\n\014net_tx_byt" +
+      "es\030\023 \001(\004\022\025\n\rnet_tx_errors\030\024 \001(\004\022\026\n\016net_t" +
+      "x_dropped\030\025 \001(\004\022!\n\031net_tcp_rtt_microsecs" +
+      "_p50\030\026 \001(\001\022!\n\031net_tcp_rtt_microsecs_p90\030" +
+      "\027 \001(\001\022!\n\031net_tcp_rtt_microsecs_p95\030\030 \001(\001" +
+      "\022!\n\031net_tcp_rtt_microsecs_p99\030\031 \001(\001\022\"\n\032n" +
+      "et_tcp_active_connections\030\034 \001(\001\022%\n\035net_t" +
+      "cp_time_wait_connections\030\035 \001(\001\022G\n\036net_tr" +
+      "affic_control_statistics\030# \003(\0132\037.mesos.T" +
+      "rafficControlStatistics\0222\n\023net_snmp_stat",
+      "istics\030* \001(\0132\025.mesos.SNMPStatistics\"\276\003\n\r" +
+      "ResourceUsage\0220\n\texecutors\030\001 \003(\0132\035.mesos" +
+      ".ResourceUsage.Executor\022\036\n\005total\030\002 \003(\0132\017" +
+      ".mesos.Resource\032\332\002\n\010Executor\022*\n\rexecutor" +
+      "_info\030\001 \002(\0132\023.mesos.ExecutorInfo\022\"\n\tallo" +
+      "cated\030\002 \003(\0132\017.mesos.Resource\022-\n\nstatisti" +
+      "cs\030\003 \001(\0132\031.mesos.ResourceStatistics\022(\n\014c" +
+      "ontainer_id\030\004 \002(\0132\022.mesos.ContainerID\0221\n" +
+      "\005tasks\030\005 \003(\0132\".mesos.ResourceUsage.Execu" +
+      "tor.Task\032r\n\004Task\022\014\n\004name\030\001 \002(\t\022\031\n\002id\030\002 \002",
+      "(\0132\r.mesos.TaskID\022\"\n\tresources\030\003 \003(\0132\017.m" +
+      "esos.Resource\022\035\n\006labels\030\004 \001(\0132\r.mesos.La" +
+      "bels\"\260\n\n\016PerfStatistics\022\021\n\ttimestamp\030\001 \002" +
+      "(\001\022\020\n\010duration\030\002 \002(\001\022\016\n\006cycles\030\003 \001(\004\022\037\n\027" +
+      "stalled_cycles_frontend\030\004 \001(\004\022\036\n\026stalled" +
+      "_cycles_backend\030\005 \001(\004\022\024\n\014instructions\030\006 " +
+      "\001(\004\022\030\n\020cache_references\030\007 \001(\004\022\024\n\014cache_m" +
+      "isses\030\010 \001(\004\022\020\n\010branches\030\t \001(\004\022\025\n\rbranch_" +
+      "misses\030\n \001(\004\022\022\n\nbus_cycles\030\013 \001(\004\022\022\n\nref_" +
+      "cycles\030\014 \001(\004\022\021\n\tcpu_clock\030\r \001(\001\022\022\n\ntask_",
+      "clock\030\016 \001(\001\022\023\n\013page_faults\030\017 \001(\004\022\024\n\014mino" +
+      "r_faults\030\020 \001(\004\022\024\n\014major_faults\030\021 \001(\004\022\030\n\020" +
+      "context_switches\030\022 \001(\004\022\026\n\016cpu_migrations" +
+      "\030\023 \001(\004\022\030\n\020alignment_faults\030\024 \001(\004\022\030\n\020emul" +
+      "ation_faults\030\025 \001(\004\022\027\n\017l1_dcache_loads\030\026 " +
+      "\001(\004\022\035\n\025l1_dcache_load_misses\030\027 \001(\004\022\030\n\020l1" +
+      "_dcache_stores\030\030 \001(\004\022\036\n\026l1_dcache_store_" +
+      "misses\030\031 \001(\004\022\034\n\024l1_dcache_prefetches\030\032 \001" +
+      "(\004\022!\n\031l1_dcache_prefetch_misses\030\033 \001(\004\022\027\n" +
+      "\017l1_icache_loads\030\034 \001(\004\022\035\n\025l1_icache_load",
+      "_misses\030\035 \001(\004\022\034\n\024l1_icache_prefetches\030\036 " +
+      "\001(\004\022!\n\031l1_icache_prefetch_misses\030\037 \001(\004\022\021" +
+      "\n\tllc_loads\030  \001(\004\022\027\n\017llc_load_misses\030! \001" +
+      "(\004\022\022\n\nllc_stores\030\" \001(\004\022\030\n\020llc_store_miss" +
+      "es\030# \001(\004\022\026\n\016llc_prefetches\030$ \001(\004\022\033\n\023llc_" +
+      "prefetch_misses\030% \001(\004\022\022\n\ndtlb_loads\030& \001(" +
+      "\004\022\030\n\020dtlb_load_misses\030\' \001(\004\022\023\n\013dtlb_stor" +
+      "es\030( \001(\004\022\031\n\021dtlb_store_misses\030) \001(\004\022\027\n\017d" +
+      "tlb_prefetches\030* \001(\004\022\034\n\024dtlb_prefetch_mi" +
+      "sses\030+ \001(\004\022\022\n\nitlb_loads\030, \001(\004\022\030\n\020itlb_l",
+      "oad_misses\030- \001(\004\022\024\n\014branch_loads\030. \001(\004\022\032" +
+      "\n\022branch_load_misses\030/ \001(\004\022\022\n\nnode_loads" +
+      "\0300 \001(\004\022\030\n\020node_load_misses\0301 \001(\004\022\023\n\013node" +
+      "_stores\0302 \001(\004\022\031\n\021node_store_misses\0303 \001(\004" +
+      "\022\027\n\017node_prefetches\0304 \001(\004\022\034\n\024node_prefet" +
+      "ch_misses\0305 \001(\004\"O\n\007Request\022 \n\010slave_id\030\001" +
+      " \001(\0132\016.mesos.SlaveID\022\"\n\tresources\030\002 \003(\0132" +
+      "\017.mesos.Resource\"\260\t\n\005Offer\022\032\n\002id\030\001 \002(\0132\016" +
+      ".mesos.OfferID\022(\n\014framework_id\030\002 \002(\0132\022.m" +
+      "esos.FrameworkID\022 \n\010slave_id\030\003 \002(\0132\016.mes",
+      "os.SlaveID\022\020\n\010hostname\030\004 \002(\t\022\027\n\003url\030\010 \001(" +
+      "\0132\n.mesos.URL\022!\n\006domain\030\013 \001(\0132\021.mesos.Do" +
+      "mainInfo\022\"\n\tresources\030\005 \003(\0132\017.mesos.Reso" +
+      "urce\022$\n\nattributes\030\007 \003(\0132\020.mesos.Attribu" +
+      "te\022\'\n\014executor_ids\030\006 \003(\0132\021.mesos.Executo" +
+      "rID\022-\n\016unavailability\030\t \001(\0132\025.mesos.Unav" +
+      "ailability\0227\n\017allocation_info\030\n \001(\0132\036.me" +
+      "sos.Resource.AllocationInfo\032\225\006\n\tOperatio" +
+      "n\022)\n\004type\030\001 \001(\0162\033.mesos.Offer.Operation." +
+      "Type\022-\n\006launch\030\002 \001(\0132\035.mesos.Offer.Opera",
+      "tion.Launch\0228\n\014launch_group\030\007 \001(\0132\".meso" +
+      "s.Offer.Operation.LaunchGroup\022/\n\007reserve" +
+      "\030\003 \001(\0132\036.mesos.Offer.Operation.Reserve\0223" +
+      "\n\tunreserve\030\004 \001(\0132 .mesos.Offer.Operatio" +
+      "n.Unreserve\022-\n\006create\030\005 \001(\0132\035.mesos.Offe" +
+      "r.Operation.Create\022/\n\007destroy\030\006 \001(\0132\036.me" +
+      "sos.Offer.Operation.Destroy\032-\n\006Launch\022#\n" +
+      "\ntask_infos\030\001 \003(\0132\017.mesos.TaskInfo\032^\n\013La" +
+      "unchGroup\022%\n\010executor\030\001 \002(\0132\023.mesos.Exec" +
+      "utorInfo\022(\n\ntask_group\030\002 \002(\0132\024.mesos.Tas",
+      "kGroupInfo\032-\n\007Reserve\022\"\n\tresources\030\001 \003(\013" +
+      "2\017.mesos.Resource\032/\n\tUnreserve\022\"\n\tresour" +
+      "ces\030\001 \003(\0132\017.mesos.Resource\032*\n\006Create\022 \n\007" +
+      "volumes\030\001 \003(\0132\017.mesos.Resource\032+\n\007Destro" +
+      "y\022 \n\007volumes\030\001 \003(\0132\017.mesos.Resource\"f\n\004T" +
+      "ype\022\013\n\007UNKNOWN\020\000\022\n\n\006LAUNCH\020\001\022\020\n\014LAUNCH_G" +
+      "ROUP\020\006\022\013\n\007RESERVE\020\002\022\r\n\tUNRESERVE\020\003\022\n\n\006CR" +
+      "EATE\020\004\022\013\n\007DESTROY\020\005\"\342\001\n\014InverseOffer\022\032\n\002" +
+      "id\030\001 \002(\0132\016.mesos.OfferID\022\027\n\003url\030\002 \001(\0132\n." +
+      "mesos.URL\022(\n\014framework_id\030\003 \002(\0132\022.mesos.",
+      "FrameworkID\022 \n\010slave_id\030\004 \001(\0132\016.mesos.Sl" +
+      "aveID\022-\n\016unavailability\030\005 \002(\0132\025.mesos.Un" +
+      "availability\022\"\n\tresources\030\006 \003(\0132\017.mesos." +
+      "Resource\"\274\003\n\010TaskInfo\022\014\n\004name\030\001 \002(\t\022\036\n\007t" +
+      "ask_id\030\002 \002(\0132\r.mesos.TaskID\022 \n\010slave_id\030" +
+      "\003 \002(\0132\016.mesos.SlaveID\022\"\n\tresources\030\004 \003(\013" +
+      "2\017.mesos.Resource\022%\n\010executor\030\005 \001(\0132\023.me" +
+      "sos.ExecutorInfo\022#\n\007command\030\007 \001(\0132\022.meso" +
+      "s.CommandInfo\022\'\n\tcontainer\030\t \001(\0132\024.mesos" +
+      ".ContainerInfo\022(\n\014health_check\030\010 \001(\0132\022.m",
+      "esos.HealthCheck\022\037\n\005check\030\r \001(\0132\020.mesos." +
+      "CheckInfo\022&\n\013kill_policy\030\014 \001(\0132\021.mesos.K" +
+      "illPolicy\022\014\n\004data\030\006 \001(\014\022\035\n\006labels\030\n \001(\0132" +
+      "\r.mesos.Labels\022\'\n\tdiscovery\030\013 \001(\0132\024.meso" +
+      "s.DiscoveryInfo\"/\n\rTaskGroupInfo\022\036\n\005task" +
+      "s\030\001 \003(\0132\017.mesos.TaskInfo\"\334\003\n\004Task\022\014\n\004nam" +
+      "e\030\001 \002(\t\022\036\n\007task_id\030\002 \002(\0132\r.mesos.TaskID\022" +
+      "(\n\014framework_id\030\003 \002(\0132\022.mesos.FrameworkI" +
+      "D\022&\n\013executor_id\030\004 \001(\0132\021.mesos.ExecutorI" +
+      "D\022 \n\010slave_id\030\005 \002(\0132\016.mesos.SlaveID\022\037\n\005s",
+      "tate\030\006 \002(\0162\020.mesos.TaskState\022\"\n\tresource" +
+      "s\030\007 \003(\0132\017.mesos.Resource\022#\n\010statuses\030\010 \003" +
+      "(\0132\021.mesos.TaskStatus\022-\n\023status_update_s" +
+      "tate\030\t \001(\0162\020.mesos.TaskState\022\032\n\022status_u" +
+      "pdate_uuid\030\n \001(\014\022\035\n\006labels\030\013 \001(\0132\r.mesos" +
+      ".Labels\022\'\n\tdiscovery\030\014 \001(\0132\024.mesos.Disco" +
+      "veryInfo\022\'\n\tcontainer\030\r \001(\0132\024.mesos.Cont" +
+      "ainerInfo\022\014\n\004user\030\016 \001(\t\"\220\002\n\017CheckStatusI" +
+      "nfo\022#\n\004type\030\001 \001(\0162\025.mesos.CheckInfo.Type" +
+      "\022/\n\007command\030\002 \001(\0132\036.mesos.CheckStatusInf",
+      "o.Command\022)\n\004http\030\003 \001(\0132\033.mesos.CheckSta" +
+      "tusInfo.Http\022\'\n\003tcp\030\004 \001(\0132\032.mesos.CheckS" +
+      "tatusInfo.Tcp\032\034\n\007Command\022\021\n\texit_code\030\001 " +
+      "\001(\005\032\033\n\004Http\022\023\n\013status_code\030\001 \001(\r\032\030\n\003Tcp\022" +
+      "\021\n\tsucceeded\030\001 \001(\010\"\254\014\n\nTaskStatus\022\036\n\007tas" +
+      "k_id\030\001 \002(\0132\r.mesos.TaskID\022\037\n\005state\030\002 \002(\016" +
+      "2\020.mesos.TaskState\022\017\n\007message\030\004 \001(\t\022(\n\006s" +
+      "ource\030\t \001(\0162\030.mesos.TaskStatus.Source\022(\n" +
+      "\006reason\030\n \001(\0162\030.mesos.TaskStatus.Reason\022" +
+      "\014\n\004data\030\003 \001(\014\022 \n\010slave_id\030\005 \001(\0132\016.mesos.",
+      "SlaveID\022&\n\013executor_id\030\007 \001(\0132\021.mesos.Exe" +
+      "cutorID\022\021\n\ttimestamp\030\006 \001(\001\022\014\n\004uuid\030\013 \001(\014" +
+      "\022\017\n\007healthy\030\010 \001(\010\022,\n\014check_status\030\017 \001(\0132" +
+      "\026.mesos.CheckStatusInfo\022\035\n\006labels\030\014 \001(\0132" +
+      "\r.mesos.Labels\0220\n\020container_status\030\r \001(\013" +
+      "2\026.mesos.ContainerStatus\022)\n\020unreachable_" +
+      "time\030\016 \001(\0132\017.mesos.TimeInfo\"B\n\006Source\022\021\n" +
+      "\rSOURCE_MASTER\020\000\022\020\n\014SOURCE_SLAVE\020\001\022\023\n\017SO" +
+      "URCE_EXECUTOR\020\002\"\377\007\n\006Reason\022\"\n\036REASON_COM" +
+      "MAND_EXECUTOR_FAILED\020\000\022\"\n\036REASON_CONTAIN",
+      "ER_LAUNCH_FAILED\020\025\022\037\n\033REASON_CONTAINER_L" +
+      "IMITATION\020\023\022$\n REASON_CONTAINER_LIMITATI" +
+      "ON_DISK\020\024\022&\n\"REASON_CONTAINER_LIMITATION" +
+      "_MEMORY\020\010\022\036\n\032REASON_CONTAINER_PREEMPTED\020" +
+      "\021\022\"\n\036REASON_CONTAINER_UPDATE_FAILED\020\026\022(\n" +
+      "$REASON_EXECUTOR_REGISTRATION_TIMEOUT\020\027\022" +
+      "*\n&REASON_EXECUTOR_REREGISTRATION_TIMEOU" +
+      "T\020\030\022\036\n\032REASON_EXECUTOR_TERMINATED\020\001\022 \n\034R" +
+      "EASON_EXECUTOR_UNREGISTERED\020\002\022\034\n\030REASON_" +
+      "FRAMEWORK_REMOVED\020\003\022\023\n\017REASON_GC_ERROR\020\004",
+      "\022\036\n\032REASON_INVALID_FRAMEWORKID\020\005\022\031\n\025REAS" +
+      "ON_INVALID_OFFERS\020\006\022 \n\034REASON_IO_SWITCHB" +
+      "OARD_EXITED\020\033\022\036\n\032REASON_MASTER_DISCONNEC" +
+      "TED\020\007\022\031\n\025REASON_RECONCILIATION\020\t\022\034\n\030REAS" +
+      "ON_RESOURCES_UNKNOWN\020\022\022\035\n\031REASON_SLAVE_D" +
+      "ISCONNECTED\020\n\022\030\n\024REASON_SLAVE_REMOVED\020\013\022" +
+      "\032\n\026REASON_SLAVE_RESTARTED\020\014\022\030\n\024REASON_SL" +
+      "AVE_UNKNOWN\020\r\022$\n REASON_TASK_KILLED_DURI" +
+      "NG_LAUNCH\020\036\022$\n REASON_TASK_CHECK_STATUS_" +
+      "UPDATED\020\034\022+\n\'REASON_TASK_HEALTH_CHECK_ST",
+      "ATUS_UPDATED\020\035\022\035\n\031REASON_TASK_GROUP_INVA" +
+      "LID\020\031\022\"\n\036REASON_TASK_GROUP_UNAUTHORIZED\020" +
+      "\032\022\027\n\023REASON_TASK_INVALID\020\016\022\034\n\030REASON_TAS" +
+      "K_UNAUTHORIZED\020\017\022\027\n\023REASON_TASK_UNKNOWN\020" +
+      "\020\"$\n\007Filters\022\031\n\016refuse_seconds\030\001 \001(\001:\0015\"" +
+      "\351\001\n\013Environment\022.\n\tvariables\030\001 \003(\0132\033.mes" +
+      "os.Environment.Variable\032\251\001\n\010Variable\022\014\n\004" +
+      "name\030\001 \002(\t\0225\n\004type\030\003 \001(\0162 .mesos.Environ" +
+      "ment.Variable.Type:\005VALUE\022\r\n\005value\030\002 \001(\t" +
+      "\022\035\n\006secret\030\004 \001(\0132\r.mesos.Secret\"*\n\004Type\022",
+      "\013\n\007UNKNOWN\020\000\022\t\n\005VALUE\020\001\022\n\n\006SECRET\020\002\"\'\n\tP" +
+      "arameter\022\013\n\003key\030\001 \002(\t\022\r\n\005value\030\002 \002(\t\"1\n\n" +
+      "Parameters\022#\n\tparameter\030\001 \003(\0132\020.mesos.Pa" +
+      "rameter\"/\n\nCredential\022\021\n\tprincipal\030\001 \002(\t" +
+      "\022\016\n\006secret\030\002 \001(\t\"5\n\013Credentials\022&\n\013crede" +
+      "ntials\030\001 \003(\0132\021.mesos.Credential\"\350\001\n\006Secr" +
+      "et\022 \n\004type\030\001 \001(\0162\022.mesos.Secret.Type\022*\n\t" +
+      "reference\030\002 \001(\0132\027.mesos.Secret.Reference" +
+      "\022\"\n\005value\030\003 \001(\0132\023.mesos.Secret.Value\032&\n\t" +
+      "Reference\022\014\n\004name\030\001 \002(\t\022\013\n\003key\030\002 \001(\t\032\025\n\005",
+      "Value\022\014\n\004data\030\001 \002(\014\"-\n\004Type\022\013\n\007UNKNOWN\020\000" +
+      "\022\r\n\tREFERENCE\020\001\022\t\n\005VALUE\020\002\"=\n\tRateLimit\022" +
+      "\013\n\003qps\030\001 \001(\001\022\021\n\tprincipal\030\002 \002(\t\022\020\n\010capac" +
+      "ity\030\003 \001(\004\"q\n\nRateLimits\022 \n\006limits\030\001 \003(\0132" +
+      "\020.mesos.RateLimit\022\035\n\025aggregate_default_q" +
+      "ps\030\002 \001(\001\022\"\n\032aggregate_default_capacity\030\003" +
+      " \001(\004\"\305\002\n\005Image\022\037\n\004type\030\001 \002(\0162\021.mesos.Ima" +
+      "ge.Type\022\037\n\004appc\030\002 \001(\0132\021.mesos.Image.Appc" +
+      "\022#\n\006docker\030\003 \001(\0132\023.mesos.Image.Docker\022\024\n" +
+      "\006cached\030\004 \001(\010:\004true\032?\n\004Appc\022\014\n\004name\030\001 \002(",
+      "\t\022\n\n\002id\030\002 \001(\t\022\035\n\006labels\030\003 \001(\0132\r.mesos.La" +
+      "bels\032`\n\006Docker\022\014\n\004name\030\001 \002(\t\022)\n\ncredenti" +
+      "al\030\002 \001(\0132\021.mesos.CredentialB\002\030\001\022\035\n\006confi" +
+      "g\030\003 \001(\0132\r.mesos.Secret\"\034\n\004Type\022\010\n\004APPC\020\001" +
+      "\022\n\n\006DOCKER\020\002\"\221\005\n\006Volume\022 \n\004mode\030\003 \002(\0162\022." +
+      "mesos.Volume.Mode\022\026\n\016container_path\030\001 \002(" +
+      "\t\022\021\n\thost_path\030\002 \001(\t\022\033\n\005image\030\004 \001(\0132\014.me" +
+      "sos.Image\022$\n\006source\030\005 \001(\0132\024.mesos.Volume" +
+      ".Source\032\336\003\n\006Source\022\'\n\004type\030\001 \001(\0162\031.mesos" +
+      ".Volume.Source.Type\0228\n\rdocker_volume\030\002 \001",
+      "(\0132!.mesos.Volume.Source.DockerVolume\0226\n" +
+      "\014sandbox_path\030\003 \001(\0132 .mesos.Volume.Sourc" +
+      "e.SandboxPath\022\035\n\006secret\030\004 \001(\0132\r.mesos.Se" +
+      "cret\032W\n\014DockerVolume\022\016\n\006driver\030\001 \001(\t\022\014\n\004" +
+      "name\030\002 \002(\t\022)\n\016driver_options\030\003 \001(\0132\021.mes" +
+      "os.Parameters\032{\n\013SandboxPath\0223\n\004type\030\001 \001" +
+      "(\0162%.mesos.Volume.Source.SandboxPath.Typ" +
+      "e\022\014\n\004path\030\002 \002(\t\")\n\004Type\022\013\n\007UNKNOWN\020\000\022\010\n\004" +
+      "SELF\020\001\022\n\n\006PARENT\020\002\"D\n\004Type\022\013\n\007UNKNOWN\020\000\022" +
+      "\021\n\rDOCKER_VOLUME\020\001\022\020\n\014SANDBOX_PATH\020\002\022\n\n\006",
+      "SECRET\020\003\"\026\n\004Mode\022\006\n\002RW\020\001\022\006\n\002RO\020\002\"\367\002\n\013Net" +
+      "workInfo\0222\n\014ip_addresses\030\005 \003(\0132\034.mesos.N" +
+      "etworkInfo.IPAddress\022\014\n\004name\030\006 \001(\t\022\016\n\006gr" +
+      "oups\030\003 \003(\t\022\035\n\006labels\030\004 \001(\0132\r.mesos.Label" +
+      "s\0225\n\rport_mappings\030\007 \003(\0132\036.mesos.Network" +
+      "Info.PortMapping\032T\n\tIPAddress\0223\n\010protoco" +
+      "l\030\001 \001(\0162\033.mesos.NetworkInfo.Protocol:\004IP" +
+      "v4\022\022\n\nip_address\030\002 \001(\t\032J\n\013PortMapping\022\021\n" +
+      "\thost_port\030\001 \002(\r\022\026\n\016container_port\030\002 \002(\r" +
+      "\022\020\n\010protocol\030\003 \001(\t\"\036\n\010Protocol\022\010\n\004IPv4\020\001",
+      "\022\010\n\004IPv6\020\002\"\316\005\n\016CapabilityInfo\0226\n\014capabil" +
+      "ities\030\001 \003(\0162 .mesos.CapabilityInfo.Capab" +
+      "ility\"\203\005\n\nCapability\022\013\n\007UNKNOWN\020\000\022\n\n\005CHO" +
+      "WN\020\350\007\022\021\n\014DAC_OVERRIDE\020\351\007\022\024\n\017DAC_READ_SEA" +
+      "RCH\020\352\007\022\013\n\006FOWNER\020\353\007\022\013\n\006FSETID\020\354\007\022\t\n\004KILL" +
+      "\020\355\007\022\013\n\006SETGID\020\356\007\022\013\n\006SETUID\020\357\007\022\014\n\007SETPCAP" +
+      "\020\360\007\022\024\n\017LINUX_IMMUTABLE\020\361\007\022\025\n\020NET_BIND_SE" +
+      "RVICE\020\362\007\022\022\n\rNET_BROADCAST\020\363\007\022\016\n\tNET_ADMI" +
+      "N\020\364\007\022\014\n\007NET_RAW\020\365\007\022\r\n\010IPC_LOCK\020\366\007\022\016\n\tIPC" +
+      "_OWNER\020\367\007\022\017\n\nSYS_MODULE\020\370\007\022\016\n\tSYS_RAWIO\020",
+      "\371\007\022\017\n\nSYS_CHROOT\020\372\007\022\017\n\nSYS_PTRACE\020\373\007\022\016\n\t" +
+      "SYS_PACCT\020\374\007\022\016\n\tSYS_ADMIN\020\375\007\022\r\n\010SYS_BOOT" +
+      "\020\376\007\022\r\n\010SYS_NICE\020\377\007\022\021\n\014SYS_RESOURCE\020\200\010\022\r\n" +
+      "\010SYS_TIME\020\201\010\022\023\n\016SYS_TTY_CONFIG\020\202\010\022\n\n\005MKN" +
+      "OD\020\203\010\022\n\n\005LEASE\020\204\010\022\020\n\013AUDIT_WRITE\020\205\010\022\022\n\rA" +
+      "UDIT_CONTROL\020\206\010\022\014\n\007SETFCAP\020\207\010\022\021\n\014MAC_OVE" +
+      "RRIDE\020\210\010\022\016\n\tMAC_ADMIN\020\211\010\022\013\n\006SYSLOG\020\212\010\022\017\n" +
+      "\nWAKE_ALARM\020\213\010\022\022\n\rBLOCK_SUSPEND\020\214\010\022\017\n\nAU" +
+      "DIT_READ\020\215\010\"\311\001\n\tLinuxInfo\0222\n\017capability_" +
+      "info\030\001 \001(\0132\025.mesos.CapabilityInfoB\002\030\001\0224\n",
+      "\025bounding_capabilities\030\002 \001(\0132\025.mesos.Cap" +
+      "abilityInfo\0225\n\026effective_capabilities\030\003 " +
+      "\001(\0132\025.mesos.CapabilityInfo\022\033\n\023share_pid_" +
+      "namespace\030\004 \001(\010\"\244\003\n\nRLimitInfo\022)\n\007rlimit" +
+      "s\030\001 \003(\0132\030.mesos.RLimitInfo.RLimit\032\352\002\n\006RL" +
+      "imit\022+\n\004type\030\001 \001(\0162\035.mesos.RLimitInfo.RL" +
+      "imit.Type\022\014\n\004hard\030\002 \001(\004\022\014\n\004soft\030\003 \001(\004\"\226\002" +
+      "\n\004Type\022\013\n\007UNKNOWN\020\000\022\013\n\007RLMT_AS\020\001\022\r\n\tRLMT" +
+      "_CORE\020\002\022\014\n\010RLMT_CPU\020\003\022\r\n\tRLMT_DATA\020\004\022\016\n\n" +
+      "RLMT_FSIZE\020\005\022\016\n\nRLMT_LOCKS\020\006\022\020\n\014RLMT_MEM",
+      "LOCK\020\007\022\021\n\rRLMT_MSGQUEUE\020\010\022\r\n\tRLMT_NICE\020\t" +
+      "\022\017\n\013RLMT_NOFILE\020\n\022\016\n\nRLMT_NPROC\020\013\022\014\n\010RLM" +
+      "T_RSS\020\014\022\017\n\013RLMT_RTPRIO\020\r\022\017\n\013RLMT_RTTIME\020" +
+      "\016\022\023\n\017RLMT_SIGPENDING\020\017\022\016\n\nRLMT_STACK\020\020\"f" +
+      "\n\007TTYInfo\022.\n\013window_size\030\001 \001(\0132\031.mesos.T" +
+      "TYInfo.WindowSize\032+\n\nWindowSize\022\014\n\004rows\030" +
+      "\001 \002(\r\022\017\n\007columns\030\002 \002(\r\"\307\006\n\rContainerInfo" +
+      "\022\'\n\004type\030\001 \002(\0162\031.mesos.ContainerInfo.Typ" +
+      "e\022\036\n\007volumes\030\002 \003(\0132\r.mesos.Volume\022\020\n\010hos" +
+      "tname\030\004 \001(\t\022/\n\006docker\030\003 \001(\0132\037.mesos.Cont",
+      "ainerInfo.DockerInfo\022-\n\005mesos\030\005 \001(\0132\036.me" +
+      "sos.ContainerInfo.MesosInfo\022)\n\rnetwork_i" +
+      "nfos\030\007 \003(\0132\022.mesos.NetworkInfo\022$\n\nlinux_" +
+      "info\030\010 \001(\0132\020.mesos.LinuxInfo\022&\n\013rlimit_i" +
+      "nfo\030\t \001(\0132\021.mesos.RLimitInfo\022 \n\010tty_info" +
+      "\030\n \001(\0132\016.mesos.TTYInfo\032\226\003\n\nDockerInfo\022\r\n" +
+      "\005image\030\001 \002(\t\022>\n\007network\030\002 \001(\0162\'.mesos.Co" +
+      "ntainerInfo.DockerInfo.Network:\004HOST\022B\n\r" +
+      "port_mappings\030\003 \003(\0132+.mesos.ContainerInf" +
+      "o.DockerInfo.PortMapping\022\031\n\nprivileged\030\004",
+      " \001(\010:\005false\022$\n\nparameters\030\005 \003(\0132\020.mesos." +
+      "Parameter\022\030\n\020force_pull_image\030\006 \001(\010\022\031\n\rv" +
+      "olume_driver\030\007 \001(\tB\002\030\001\032J\n\013PortMapping\022\021\n" +
+      "\thost_port\030\001 \002(\r\022\026\n\016container_port\030\002 \002(\r" +
+      "\022\020\n\010protocol\030\003 \001(\t\"3\n\007Network\022\010\n\004HOST\020\001\022" +
+      "\n\n\006BRIDGE\020\002\022\010\n\004NONE\020\003\022\010\n\004USER\020\004\032(\n\tMesos" +
+      "Info\022\033\n\005image\030\001 \001(\0132\014.mesos.Image\"\035\n\004Typ" +
+      "e\022\n\n\006DOCKER\020\001\022\t\n\005MESOS\020\002\"\244\001\n\017ContainerSt" +
+      "atus\022(\n\014container_id\030\004 \001(\0132\022.mesos.Conta" +
+      "inerID\022)\n\rnetwork_infos\030\001 \003(\0132\022.mesos.Ne",
+      "tworkInfo\022&\n\013cgroup_info\030\002 \001(\0132\021.mesos.C" +
+      "groupInfo\022\024\n\014executor_pid\030\003 \001(\r\"\203\010\n\nCgro" +
+      "upInfo\022)\n\007net_cls\030\001 \001(\0132\030.mesos.CgroupIn" +
+      "fo.NetCls\032\256\007\n\005Blkio\032E\n\005Value\022-\n\002op\030\001 \001(\016" +
+      "2!.mesos.CgroupInfo.Blkio.Operation\022\r\n\005v" +
+      "alue\030\002 \001(\004\032\227\003\n\003CFQ\032\217\003\n\nStatistics\022$\n\006dev" +
+      "ice\030\001 \001(\0132\024.mesos.Device.Number\022\017\n\007secto" +
+      "rs\030\002 \001(\004\022\014\n\004time\030\003 \001(\004\0222\n\013io_serviced\030\004 " +
+      "\003(\0132\035.mesos.CgroupInfo.Blkio.Value\0227\n\020io" +
+      "_service_bytes\030\005 \003(\0132\035.mesos.CgroupInfo.",
+      "Blkio.Value\0226\n\017io_service_time\030\006 \003(\0132\035.m" +
+      "esos.CgroupInfo.Blkio.Value\0223\n\014io_wait_t" +
+      "ime\030\007 \003(\0132\035.mesos.CgroupInfo.Blkio.Value" +
+      "\0220\n\tio_merged\030\010 \003(\0132\035.mesos.CgroupInfo.B" +
+      "lkio.Value\0220\n\tio_queued\030\t \003(\0132\035.mesos.Cg" +
+      "roupInfo.Blkio.Value\032\256\001\n\nThrottling\032\237\001\n\n" +
+      "Statistics\022$\n\006device\030\001 \001(\0132\024.mesos.Devic" +
+      "e.Number\0222\n\013io_serviced\030\002 \003(\0132\035.mesos.Cg" +
+      "roupInfo.Blkio.Value\0227\n\020io_service_bytes" +
+      "\030\003 \003(\0132\035.mesos.CgroupInfo.Blkio.Value\032\303\001",
+      "\n\nStatistics\0223\n\003cfq\030\001 \003(\0132&.mesos.Cgroup" +
+      "Info.Blkio.CFQ.Statistics\022=\n\rcfq_recursi" +
+      "ve\030\002 \003(\0132&.mesos.CgroupInfo.Blkio.CFQ.St" +
+      "atistics\022A\n\nthrottling\030\003 \003(\0132-.mesos.Cgr" +
+      "oupInfo.Blkio.Throttling.Statistics\"M\n\tO" +
+      "peration\022\013\n\007UNKNOWN\020\000\022\t\n\005TOTAL\020\001\022\010\n\004READ" +
+      "\020\002\022\t\n\005WRITE\020\003\022\010\n\004SYNC\020\004\022\t\n\005ASYNC\020\005\032\031\n\006Ne" +
+      "tCls\022\017\n\007classid\030\001 \001(\r\"&\n\006Labels\022\034\n\006label" +
+      "s\030\001 \003(\0132\014.mesos.Label\"#\n\005Label\022\013\n\003key\030\001 " +
+      "\002(\t\022\r\n\005value\030\002 \001(\t\"\212\001\n\004Port\022\016\n\006number\030\001 ",
+      "\002(\r\022\014\n\004name\030\002 \001(\t\022\020\n\010protocol\030\003 \001(\t\0223\n\nv" +
+      "isibility\030\004 \001(\0162\037.mesos.DiscoveryInfo.Vi" +
+      "sibility\022\035\n\006labels\030\005 \001(\0132\r.mesos.Labels\"" +
+      "#\n\005Ports\022\032\n\005ports\030\001 \003(\0132\013.mesos.Port\"\376\001\n" +
+      "\rDiscoveryInfo\0223\n\nvisibility\030\001 \002(\0162\037.mes" +
+      "os.DiscoveryInfo.Visibility\022\014\n\004name\030\002 \001(" +
+      "\t\022\023\n\013environment\030\003 \001(\t\022\020\n\010location\030\004 \001(\t" +
+      "\022\017\n\007version\030\005 \001(\t\022\033\n\005ports\030\006 \001(\0132\014.mesos" +
+      ".Ports\022\035\n\006labels\030\007 \001(\0132\r.mesos.Labels\"6\n" +
+      "\nVisibility\022\r\n\tFRAMEWORK\020\000\022\013\n\007CLUSTER\020\001\022",
+      "\014\n\010EXTERNAL\020\002\"*\n\nWeightInfo\022\016\n\006weight\030\001 " +
+      "\002(\001\022\014\n\004role\030\002 \001(\t\"\220\001\n\013VersionInfo\022\017\n\007ver" +
+      "sion\030\001 \002(\t\022\022\n\nbuild_date\030\002 \001(\t\022\022\n\nbuild_" +
+      "time\030\003 \001(\001\022\022\n\nbuild_user\030\004 \001(\t\022\017\n\007git_sh" +
+      "a\030\005 \001(\t\022\022\n\ngit_branch\030\006 \001(\t\022\017\n\007git_tag\030\007" +
+      " \001(\t\"#\n\004Flag\022\014\n\004name\030\001 \002(\t\022\r\n\005value\030\002 \001(" +
+      "\t\"p\n\004Role\022\014\n\004name\030\001 \002(\t\022\016\n\006weight\030\002 \002(\001\022" +
+      "&\n\nframeworks\030\003 \003(\0132\022.mesos.FrameworkID\022" +
+      "\"\n\tresources\030\004 \003(\0132\017.mesos.Resource\"%\n\006M" +
+      "etric\022\014\n\004name\030\001 \002(\t\022\r\n\005value\030\002 \001(\001\"}\n\010Fi",
+      "leInfo\022\014\n\004path\030\001 \002(\t\022\r\n\005nlink\030\002 \001(\005\022\014\n\004s" +
+      "ize\030\003 \001(\004\022\036\n\005mtime\030\004 \001(\0132\017.mesos.TimeInf" +
+      "o\022\014\n\004mode\030\005 \001(\r\022\013\n\003uid\030\006 \001(\t\022\013\n\003gid\030\007 \001(" +
+      "\t\"r\n\006Device\022\014\n\004path\030\001 \001(\t\022$\n\006number\030\002 \001(" +
+      "\0132\024.mesos.Device.Number\0324\n\006Number\022\024\n\014maj" +
+      "or_number\030\001 \002(\004\022\024\n\014minor_number\030\002 \002(\004\"\217\001" +
+      "\n\014DeviceAccess\022\035\n\006device\030\001 \002(\0132\r.mesos.D" +
+      "evice\022*\n\006access\030\002 \002(\0132\032.mesos.DeviceAcce" +
+      "ss.Access\0324\n\006Access\022\014\n\004read\030\001 \001(\010\022\r\n\005wri" +
+      "te\030\002 \001(\010\022\r\n\005mknod\030\003 \001(\010\"?\n\017DeviceWhiteli",
+      "st\022,\n\017allowed_devices\030\001 \003(\0132\023.mesos.Devi" +
+      "ceAccess*\\\n\006Status\022\026\n\022DRIVER_NOT_STARTED" +
+      "\020\001\022\022\n\016DRIVER_RUNNING\020\002\022\022\n\016DRIVER_ABORTED" +
+      "\020\003\022\022\n\016DRIVER_STOPPED\020\004*\214\002\n\tTaskState\022\020\n\014" +
+      "TASK_STAGING\020\006\022\021\n\rTASK_STARTING\020\000\022\020\n\014TAS" +
+      "K_RUNNING\020\001\022\020\n\014TASK_KILLING\020\010\022\021\n\rTASK_FI" +
+      "NISHED\020\002\022\017\n\013TASK_FAILED\020\003\022\017\n\013TASK_KILLED" +
+      "\020\004\022\016\n\nTASK_ERROR\020\007\022\r\n\tTASK_LOST\020\005\022\020\n\014TAS" +
+      "K_DROPPED\020\t\022\024\n\020TASK_UNREACHABLE\020\n\022\r\n\tTAS" +
+      "K_GONE\020\013\022\031\n\025TASK_GONE_BY_OPERATOR\020\014\022\020\n\014T",
+      "ASK_UNKNOWN\020\rB\032\n\020org.apache.mesosB\006Proto" +
+      "s"
+    };
+    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
+      new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
+        public com.google.protobuf.ExtensionRegistry assignDescriptors(
+            com.google.protobuf.Descriptors.FileDescriptor root) {
+          descriptor = root;
+          internal_static_mesos_FrameworkID_descriptor =
+            getDescriptor().getMessageTypes().get(0);
+          internal_static_mesos_FrameworkID_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_FrameworkID_descriptor,
+              new java.lang.String[] { "Value", });
+          internal_static_mesos_OfferID_descriptor =
+            getDescriptor().getMessageTypes().get(1);
+          internal_static_mesos_OfferID_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_OfferID_descriptor,
+              new java.lang.String[] { "Value", });
+          internal_static_mesos_SlaveID_descriptor =
+            getDescriptor().getMessageTypes().get(2);
+          internal_static_mesos_SlaveID_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_SlaveID_descriptor,
+              new java.lang.String[] { "Value", });
+          internal_static_mesos_TaskID_descriptor =
+            getDescriptor().getMessageTypes().get(3);
+          internal_static_mesos_TaskID_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_TaskID_descriptor,
+              new java.lang.String[] { "Value", });
+          internal_static_mesos_ExecutorID_descriptor =
+            getDescriptor().getMessageTypes().get(4);
+          internal_static_mesos_ExecutorID_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_ExecutorID_descriptor,
+              new java.lang.String[] { "Value", });
+          internal_static_mesos_ContainerID_descriptor =
+            getDescriptor().getMessageTypes().get(5);
+          internal_static_mesos_ContainerID_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_ContainerID_descriptor,
+              new java.lang.String[] { "Value", "Parent", });
+          internal_static_mesos_ResourceProviderID_descriptor =
+            getDescriptor().getMessageTypes().get(6);
+          internal_static_mesos_ResourceProviderID_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_ResourceProviderID_descriptor,
+              new java.lang.String[] { "Value", });
+          internal_static_mesos_TimeInfo_descriptor =
+            getDescriptor().getMessageTypes().get(7);
+          internal_static_mesos_TimeInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_TimeInfo_descriptor,
+              new java.lang.String[] { "Nanoseconds", });
+          internal_static_mesos_DurationInfo_descriptor =
+            getDescriptor().getMessageTypes().get(8);
+          internal_static_mesos_DurationInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_DurationInfo_descriptor,
+              new java.lang.String[] { "Nanoseconds", });
+          internal_static_mesos_Address_descriptor =
+            getDescriptor().getMessageTypes().get(9);
+          internal_static_mesos_Address_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Address_descriptor,
+              new java.lang.String[] { "Hostname", "Ip", "Port", });
+          internal_static_mesos_URL_descriptor =
+            getDescriptor().getMessageTypes().get(10);
+          internal_static_mesos_URL_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_URL_descriptor,
+              new java.lang.String[] { "Scheme", "Address", "Path", "Query", "Fragment", });
+          internal_static_mesos_Unavailability_descriptor =
+            getDescriptor().getMessageTypes().get(11);
+          internal_static_mesos_Unavailability_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Unavailability_descriptor,
+              new java.lang.String[] { "Start", "Duration", });
+          internal_static_mesos_MachineID_descriptor =
+            getDescriptor().getMessageTypes().get(12);
+          internal_static_mesos_MachineID_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_MachineID_descriptor,
+              new java.lang.String[] { "Hostname", "Ip", });
+          internal_static_mesos_MachineInfo_descriptor =
+            getDescriptor().getMessageTypes().get(13);
+          internal_static_mesos_MachineInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_MachineInfo_descriptor,
+              new java.lang.String[] { "Id", "Mode", "Unavailability", });
+          internal_static_mesos_FrameworkInfo_descriptor =
+            getDescriptor().getMessageTypes().get(14);
+          internal_static_mesos_FrameworkInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_FrameworkInfo_descriptor,
+              new java.lang.String[] { "User", "Name", "Id", "FailoverTimeout", "Checkpoint", "Role", "Roles", "Hostname", "Principal", "WebuiUrl", "Capabilities", "Labels", });
+          internal_static_mesos_FrameworkInfo_Capability_descriptor =
+            internal_static_mesos_FrameworkInfo_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_FrameworkInfo_Capability_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_FrameworkInfo_Capability_descriptor,
+              new java.lang.String[] { "Type", });
+          internal_static_mesos_CheckInfo_descriptor =
+            getDescriptor().getMessageTypes().get(15);
+          internal_static_mesos_CheckInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_CheckInfo_descriptor,
+              new java.lang.String[] { "Type", "Command", "Http", "Tcp", "DelaySeconds", "IntervalSeconds", "TimeoutSeconds", });
+          internal_static_mesos_CheckInfo_Command_descriptor =
+            internal_static_mesos_CheckInfo_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_CheckInfo_Command_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_CheckInfo_Command_descriptor,
+              new java.lang.String[] { "Command", });
+          internal_static_mesos_CheckInfo_Http_descriptor =
+            internal_static_mesos_CheckInfo_descriptor.getNestedTypes().get(1);
+          internal_static_mesos_CheckInfo_Http_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_CheckInfo_Http_descriptor,
+              new java.lang.String[] { "Port", "Path", });
+          internal_static_mesos_CheckInfo_Tcp_descriptor =
+            internal_static_mesos_CheckInfo_descriptor.getNestedTypes().get(2);
+          internal_static_mesos_CheckInfo_Tcp_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_CheckInfo_Tcp_descriptor,
+              new java.lang.String[] { "Port", });
+          internal_static_mesos_HealthCheck_descriptor =
+            getDescriptor().getMessageTypes().get(16);
+          internal_static_mesos_HealthCheck_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_HealthCheck_descriptor,
+              new java.lang.String[] { "DelaySeconds", "IntervalSeconds", "TimeoutSeconds", "ConsecutiveFailures", "GracePeriodSeconds", "Type", "Command", "Http", "Tcp", });
+          internal_static_mesos_HealthCheck_HTTPCheckInfo_descriptor =
+            internal_static_mesos_HealthCheck_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_HealthCheck_HTTPCheckInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_HealthCheck_HTTPCheckInfo_descriptor,
+              new java.lang.String[] { "Scheme", "Port", "Path", "Statuses", });
+          internal_static_mesos_HealthCheck_TCPCheckInfo_descriptor =
+            internal_static_mesos_HealthCheck_descriptor.getNestedTypes().get(1);
+          internal_static_mesos_HealthCheck_TCPCheckInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_HealthCheck_TCPCheckInfo_descriptor,
+              new java.lang.String[] { "Port", });
+          internal_static_mesos_KillPolicy_descriptor =
+            getDescriptor().getMessageTypes().get(17);
+          internal_static_mesos_KillPolicy_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_KillPolicy_descriptor,
+              new java.lang.String[] { "GracePeriod", });
+          internal_static_mesos_CommandInfo_descriptor =
+            getDescriptor().getMessageTypes().get(18);
+          internal_static_mesos_CommandInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_CommandInfo_descriptor,
+              new java.lang.String[] { "Uris", "Environment", "Shell", "Value", "Arguments", "User", });
+          internal_static_mesos_CommandInfo_URI_descriptor =
+            internal_static_mesos_CommandInfo_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_CommandInfo_URI_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_CommandInfo_URI_descriptor,
+              new java.lang.String[] { "Value", "Executable", "Extract", "Cache", "OutputFile", });
+          internal_static_mesos_ExecutorInfo_descriptor =
+            getDescriptor().getMessageTypes().get(19);
+          internal_static_mesos_ExecutorInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_ExecutorInfo_descriptor,
+              new java.lang.String[] { "Type", "ExecutorId", "FrameworkId", "Command", "Container", "Resources", "Name", "Source", "Data", "Discovery", "ShutdownGracePeriod", "Labels", });
+          internal_static_mesos_DomainInfo_descriptor =
+            getDescriptor().getMessageTypes().get(20);
+          internal_static_mesos_DomainInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_DomainInfo_descriptor,
+              new java.lang.String[] { "FaultDomain", });
+          internal_static_mesos_DomainInfo_FaultDomain_descriptor =
+            internal_static_mesos_DomainInfo_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_DomainInfo_FaultDomain_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_DomainInfo_FaultDomain_descriptor,
+              new java.lang.String[] { "Region", "Zone", });
+          internal_static_mesos_DomainInfo_FaultDomain_RegionInfo_descriptor =
+            internal_static_mesos_DomainInfo_FaultDomain_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_DomainInfo_FaultDomain_RegionInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_DomainInfo_FaultDomain_RegionInfo_descriptor,
+              new java.lang.String[] { "Name", });
+          internal_static_mesos_DomainInfo_FaultDomain_ZoneInfo_descriptor =
+            internal_static_mesos_DomainInfo_FaultDomain_descriptor.getNestedTypes().get(1);
+          internal_static_mesos_DomainInfo_FaultDomain_ZoneInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_DomainInfo_FaultDomain_ZoneInfo_descriptor,
+              new java.lang.String[] { "Name", });
+          internal_static_mesos_MasterInfo_descriptor =
+            getDescriptor().getMessageTypes().get(21);
+          internal_static_mesos_MasterInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_MasterInfo_descriptor,
+              new java.lang.String[] { "Id", "Ip", "Port", "Pid", "Hostname", "Version", "Address", "Domain", });
+          internal_static_mesos_SlaveInfo_descriptor =
+            getDescriptor().getMessageTypes().get(22);
+          internal_static_mesos_SlaveInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_SlaveInfo_descriptor,
+              new java.lang.String[] { "Hostname", "Port", "Resources", "Attributes", "Id", "Domain", "Checkpoint", });
+          internal_static_mesos_SlaveInfo_Capability_descriptor =
+            internal_static_mesos_SlaveInfo_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_SlaveInfo_Capability_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_SlaveInfo_Capability_descriptor,
+              new java.lang.String[] { "Type", });
+          internal_static_mesos_ResourceProviderInfo_descriptor =
+            getDescriptor().getMessageTypes().get(23);
+          internal_static_mesos_ResourceProviderInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_ResourceProviderInfo_descriptor,
+              new java.lang.String[] { "Id", "Attributes", "Type", "Name", });
+          internal_static_mesos_Value_descriptor =
+            getDescriptor().getMessageTypes().get(24);
+          internal_static_mesos_Value_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Value_descriptor,
+              new java.lang.String[] { "Type", "Scalar", "Ranges", "Set", "Text", });
+          internal_static_mesos_Value_Scalar_descriptor =
+            internal_static_mesos_Value_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_Value_Scalar_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Value_Scalar_descriptor,
+              new java.lang.String[] { "Value", });
+          internal_static_mesos_Value_Range_descriptor =
+            internal_static_mesos_Value_descriptor.getNestedTypes().get(1);
+          internal_static_mesos_Value_Range_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Value_Range_descriptor,
+              new java.lang.String[] { "Begin", "End", });
+          internal_static_mesos_Value_Ranges_descriptor =
+            internal_static_mesos_Value_descriptor.getNestedTypes().get(2);
+          internal_static_mesos_Value_Ranges_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Value_Ranges_descriptor,
+              new java.lang.String[] { "Range", });
+          internal_static_mesos_Value_Set_descriptor =
+            internal_static_mesos_Value_descriptor.getNestedTypes().get(3);
+          internal_static_mesos_Value_Set_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Value_Set_descriptor,
+              new java.lang.String[] { "Item", });
+          internal_static_mesos_Value_Text_descriptor =
+            internal_static_mesos_Value_descriptor.getNestedTypes().get(4);
+          internal_static_mesos_Value_Text_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Value_Text_descriptor,
+              new java.lang.String[] { "Value", });
+          internal_static_mesos_Attribute_descriptor =
+            getDescriptor().getMessageTypes().get(25);
+          internal_static_mesos_Attribute_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Attribute_descriptor,
+              new java.lang.String[] { "Name", "Type", "Scalar", "Ranges", "Set", "Text", });
+          internal_static_mesos_Resource_descriptor =
+            getDescriptor().getMessageTypes().get(26);
+          internal_static_mesos_Resource_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Resource_descriptor,
+              new java.lang.String[] { "ProviderId", "Name", "Type", "Scalar", "Ranges", "Set", "Role", "AllocationInfo", "Reservation", "Reservations", "Disk", "Revocable", "Shared", });
+          internal_static_mesos_Resource_AllocationInfo_descriptor =
+            internal_static_mesos_Resource_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_Resource_AllocationInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Resource_AllocationInfo_descriptor,
+              new java.lang.String[] { "Role", });
+          internal_static_mesos_Resource_ReservationInfo_descriptor =
+            internal_static_mesos_Resource_descriptor.getNestedTypes().get(1);
+          internal_static_mesos_Resource_ReservationInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Resource_ReservationInfo_descriptor,
+              new java.lang.String[] { "Type", "Role", "Principal", "Labels", });
+          internal_static_mesos_Resource_DiskInfo_descriptor =
+            internal_static_mesos_Resource_descriptor.getNestedTypes().get(2);
+          internal_static_mesos_Resource_DiskInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Resource_DiskInfo_descriptor,
+              new java.lang.String[] { "Persistence", "Volume", "Source", });
+          internal_static_mesos_Resource_DiskInfo_Persistence_descriptor =
+            internal_static_mesos_Resource_DiskInfo_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_Resource_DiskInfo_Persistence_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Resource_DiskInfo_Persistence_descriptor,
+              new java.lang.String[] { "Id", "Principal", });
+          internal_static_mesos_Resource_DiskInfo_Source_descriptor =
+            internal_static_mesos_Resource_DiskInfo_descriptor.getNestedTypes().get(1);
+          internal_static_mesos_Resource_DiskInfo_Source_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Resource_DiskInfo_Source_descriptor,
+              new java.lang.String[] { "Type", "Path", "Mount", });
+          internal_static_mesos_Resource_DiskInfo_Source_Path_descriptor =
+            internal_static_mesos_Resource_DiskInfo_Source_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_Resource_DiskInfo_Source_Path_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Resource_DiskInfo_Source_Path_descriptor,
+              new java.lang.String[] { "Root", });
+          internal_static_mesos_Resource_DiskInfo_Source_Mount_descriptor =
+            internal_static_mesos_Resource_DiskInfo_Source_descriptor.getNestedTypes().get(1);
+          internal_static_mesos_Resource_DiskInfo_Source_Mount_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Resource_DiskInfo_Source_Mount_descriptor,
+              new java.lang.String[] { "Root", });
+          internal_static_mesos_Resource_RevocableInfo_descriptor =
+            internal_static_mesos_Resource_descriptor.getNestedTypes().get(3);
+          internal_static_mesos_Resource_RevocableInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Resource_RevocableInfo_descriptor,
+              new java.lang.String[] { });
+          internal_static_mesos_Resource_SharedInfo_descriptor =
+            internal_static_mesos_Resource_descriptor.getNestedTypes().get(4);
+          internal_static_mesos_Resource_SharedInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Resource_SharedInfo_descriptor,
+              new java.lang.String[] { });
+          internal_static_mesos_TrafficControlStatistics_descriptor =
+            getDescriptor().getMessageTypes().get(27);
+          internal_static_mesos_TrafficControlStatistics_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_TrafficControlStatistics_descriptor,
+              new java.lang.String[] { "Id", "Backlog", "Bytes", "Drops", "Overlimits", "Packets", "Qlen", "Ratebps", "Ratepps", "Requeues", });
+          internal_static_mesos_IpStatistics_descriptor =
+            getDescriptor().getMessageTypes().get(28);
+          internal_static_mesos_IpStatistics_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_IpStatistics_descriptor,
+              new java.lang.String[] { "Forwarding", "DefaultTTL", "InReceives", "InHdrErrors", "InAddrErrors", "ForwDatagrams", "InUnknownProtos", "InDiscards", "InDelivers", "OutRequests", "OutDiscards", "OutNoRoutes", "ReasmTimeout", "ReasmReqds", "ReasmOKs", "ReasmFails", "FragOKs", "FragFails", "FragCreates", });
+          internal_static_mesos_IcmpStatistics_descriptor =
+            getDescriptor().getMessageTypes().get(29);
+          internal_static_mesos_IcmpStatistics_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_IcmpStatistics_descriptor,
+              new java.lang.String[] { "InMsgs", "InErrors", "InCsumErrors", "InDestUnreachs", "InTimeExcds", "InParmProbs", "InSrcQuenchs", "InRedirects", "InEchos", "InEchoReps", "InTimestamps", "InTimestampReps", "InAddrMasks", "InAddrMaskReps", "OutMsgs", "OutErrors", "OutDestUnreachs", "OutTimeExcds", "OutParmProbs", "OutSrcQuenchs", "OutRedirects", "OutEchos", "OutEchoReps", "OutTimestamps", "OutTimestampReps", "OutAddrMasks", "OutAddrMaskReps", });
+          internal_static_mesos_TcpStatistics_descriptor =
+            getDescriptor().getMessageTypes().get(30);
+          internal_static_mesos_TcpStatistics_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_TcpStatistics_descriptor,
+              new java.lang.String[] { "RtoAlgorithm", "RtoMin", "RtoMax", "MaxConn", "ActiveOpens", "PassiveOpens", "AttemptFails", "EstabResets", "CurrEstab", "InSegs", "OutSegs", "RetransSegs", "InErrs", "OutRsts", "InCsumErrors", });
+          internal_static_mesos_UdpStatistics_descriptor =
+            getDescriptor().getMessageTypes().get(31);
+          internal_static_mesos_UdpStatistics_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_UdpStatistics_descriptor,
+              new java.lang.String[] { "InDatagrams", "NoPorts", "InErrors", "OutDatagrams", "RcvbufErrors", "SndbufErrors", "InCsumErrors", "IgnoredMulti", });
+          internal_static_mesos_SNMPStatistics_descriptor =
+            getDescriptor().getMessageTypes().get(32);
+          internal_static_mesos_SNMPStatistics_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_SNMPStatistics_descriptor,
+              new java.lang.String[] { "IpStats", "IcmpStats", "TcpStats", "UdpStats", });
+          internal_static_mesos_DiskStatistics_descriptor =
+            getDescriptor().getMessageTypes().get(33);
+          internal_static_mesos_DiskStatistics_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_DiskStatistics_descriptor,
+              new java.lang.String[] { "Source", "Persistence", "LimitBytes", "UsedBytes", });
+          internal_static_mesos_ResourceStatistics_descriptor =
+            getDescriptor().getMessageTypes().get(34);
+          internal_static_mesos_ResourceStatistics_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_ResourceStatistics_descriptor,
+              new java.lang.String[] { "Timestamp", "Processes", "Threads", "CpusUserTimeSecs", "CpusSystemTimeSecs", "CpusLimit", "CpusNrPeriods", "CpusNrThrottled", "CpusThrottledTimeSecs", "MemTotalBytes", "MemTotalMemswBytes", "MemLimitBytes", "MemSoftLimitBytes", "MemFileBytes", "MemAnonBytes", "MemCacheBytes", "MemRssBytes", "MemMappedFileBytes", "MemSwapBytes", "MemUnevictableBytes", "MemLowPressureCounter", "MemMediumPressureCounter", "MemCriticalPressureCounter", "DiskLimitBytes", "DiskUsedBytes", "DiskStatistics", "BlkioStatistics", "Perf", "NetRxPackets", "NetRxBytes", "NetRxErrors", "NetRxDropped", "NetTxPackets", "NetTxBytes", "NetTxErrors", "NetTxDropped", "NetTcpRttMicrosecsP50", "NetTcpRttMicrosecsP90", "NetTcpRttMicrosecsP95", "NetTcpRttMicrosecsP99", "NetTcpActiveConnections", "NetTcpTimeWaitConnections", "NetTrafficControlStatistics", "NetSnmpStatistics", });
+          internal_static_mesos_ResourceUsage_descriptor =
+            getDescriptor().getMessageTypes().get(35);
+          internal_static_mesos_ResourceUsage_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_ResourceUsage_descriptor,
+              new java.lang.String[] { "Executors", "Total", });
+          internal_static_mesos_ResourceUsage_Executor_descriptor =
+            internal_static_mesos_ResourceUsage_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_ResourceUsage_Executor_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_ResourceUsage_Executor_descriptor,
+              new java.lang.String[] { "ExecutorInfo", "Allocated", "Statistics", "ContainerId", "Tasks", });
+          internal_static_mesos_ResourceUsage_Executor_Task_descriptor =
+            internal_static_mesos_ResourceUsage_Executor_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_ResourceUsage_Executor_Task_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_ResourceUsage_Executor_Task_descriptor,
+              new java.lang.String[] { "Name", "Id", "Resources", "Labels", });
+          internal_static_mesos_PerfStatistics_descriptor =
+            getDescriptor().getMessageTypes().get(36);
+          internal_static_mesos_PerfStatistics_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_PerfStatistics_descriptor,
+              new java.lang.String[] { "Timestamp", "Duration", "Cycles", "StalledCyclesFrontend", "StalledCyclesBackend", "Instructions", "CacheReferences", "CacheMisses", "Branches", "BranchMisses", "BusCycles", "RefCycles", "CpuClock", "TaskClock", "PageFaults", "MinorFaults", "MajorFaults", "ContextSwitches", "CpuMigrations", "AlignmentFaults", "EmulationFaults", "L1DcacheLoads", "L1DcacheLoadMisses", "L1DcacheStores", "L1DcacheStoreMisses", "L1DcachePrefetches", "L1DcachePrefetchMisses", "L1IcacheLoads", "L1IcacheLoadMisses", "L1IcachePrefetches", "L1IcachePrefetchMisses", "LlcLoads", "LlcLoadMisses", "LlcStores", "LlcStoreMisses", "LlcPrefetches", "LlcPrefetchMisses", "DtlbLoads", "DtlbLoadMisses", "DtlbStores", "DtlbStoreMisses", "DtlbPrefetches", "DtlbPrefetchMisses", "ItlbLoads", "ItlbLoadMisses", "BranchLoads", "BranchLoadMisses", "NodeLoads", "NodeLoadMisses", "NodeStores", "NodeStoreMisses", "NodePrefetches", "NodePrefetchMisses", });
+          internal_static_mesos_Request_descriptor =
+            getDescriptor().getMessageTypes().get(37);
+          internal_static_mesos_Request_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Request_descriptor,
+              new java.lang.String[] { "SlaveId", "Resources", });
+          internal_static_mesos_Offer_descriptor =
+            getDescriptor().getMessageTypes().get(38);
+          internal_static_mesos_Offer_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Offer_descriptor,
+              new java.lang.String[] { "Id", "FrameworkId", "SlaveId", "Hostname", "Url", "Domain", "Resources", "Attributes", "ExecutorIds", "Unavailability", "AllocationInfo", });
+          internal_static_mesos_Offer_Operation_descriptor =
+            internal_static_mesos_Offer_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_Offer_Operation_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Offer_Operation_descriptor,
+              new java.lang.String[] { "Type", "Launch", "LaunchGroup", "Reserve", "Unreserve", "Create", "Destroy", });
+          internal_static_mesos_Offer_Operation_Launch_descriptor =
+            internal_static_mesos_Offer_Operation_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_Offer_Operation_Launch_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Offer_Operation_Launch_descriptor,
+              new java.lang.String[] { "TaskInfos", });
+          internal_static_mesos_Offer_Operation_LaunchGroup_descriptor =
+            internal_static_mesos_Offer_Operation_descriptor.getNestedTypes().get(1);
+          internal_static_mesos_Offer_Operation_LaunchGroup_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Offer_Operation_LaunchGroup_descriptor,
+              new java.lang.String[] { "Executor", "TaskGroup", });
+          internal_static_mesos_Offer_Operation_Reserve_descriptor =
+            internal_static_mesos_Offer_Operation_descriptor.getNestedTypes().get(2);
+          internal_static_mesos_Offer_Operation_Reserve_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Offer_Operation_Reserve_descriptor,
+              new java.lang.String[] { "Resources", });
+          internal_static_mesos_Offer_Operation_Unreserve_descriptor =
+            internal_static_mesos_Offer_Operation_descriptor.getNestedTypes().get(3);
+          internal_static_mesos_Offer_Operation_Unreserve_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Offer_Operation_Unreserve_descriptor,
+              new java.lang.String[] { "Resources", });
+          internal_static_mesos_Offer_Operation_Create_descriptor =
+            internal_static_mesos_Offer_Operation_descriptor.getNestedTypes().get(4);
+          internal_static_mesos_Offer_Operation_Create_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Offer_Operation_Create_descriptor,
+              new java.lang.String[] { "Volumes", });
+          internal_static_mesos_Offer_Operation_Destroy_descriptor =
+            internal_static_mesos_Offer_Operation_descriptor.getNestedTypes().get(5);
+          internal_static_mesos_Offer_Operation_Destroy_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Offer_Operation_Destroy_descriptor,
+              new java.lang.String[] { "Volumes", });
+          internal_static_mesos_InverseOffer_descriptor =
+            getDescriptor().getMessageTypes().get(39);
+          internal_static_mesos_InverseOffer_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_InverseOffer_descriptor,
+              new java.lang.String[] { "Id", "Url", "FrameworkId", "SlaveId", "Unavailability", "Resources", });
+          internal_static_mesos_TaskInfo_descriptor =
+            getDescriptor().getMessageTypes().get(40);
+          internal_static_mesos_TaskInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_TaskInfo_descriptor,
+              new java.lang.String[] { "Name", "TaskId", "SlaveId", "Resources", "Executor", "Command", "Container", "HealthCheck", "Check", "KillPolicy", "Data", "Labels", "Discovery", });
+          internal_static_mesos_TaskGroupInfo_descriptor =
+            getDescriptor().getMessageTypes().get(41);
+          internal_static_mesos_TaskGroupInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_TaskGroupInfo_descriptor,
+              new java.lang.String[] { "Tasks", });
+          internal_static_mesos_Task_descriptor =
+            getDescriptor().getMessageTypes().get(42);
+          internal_static_mesos_Task_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Task_descriptor,
+              new java.lang.String[] { "Name", "TaskId", "FrameworkId", "ExecutorId", "SlaveId", "State", "Resources", "Statuses", "StatusUpdateState", "StatusUpdateUuid", "Labels", "Discovery", "Container", "User", });
+          internal_static_mesos_CheckStatusInfo_descriptor =
+            getDescriptor().getMessageTypes().get(43);
+          internal_static_mesos_CheckStatusInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_CheckStatusInfo_descriptor,
+              new java.lang.String[] { "Type", "Command", "Http", "Tcp", });
+          internal_static_mesos_CheckStatusInfo_Command_descriptor =
+            internal_static_mesos_CheckStatusInfo_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_CheckStatusInfo_Command_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_CheckStatusInfo_Command_descriptor,
+              new java.lang.String[] { "ExitCode", });
+          internal_static_mesos_CheckStatusInfo_Http_descriptor =
+            internal_static_mesos_CheckStatusInfo_descriptor.getNestedTypes().get(1);
+          internal_static_mesos_CheckStatusInfo_Http_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_CheckStatusInfo_Http_descriptor,
+              new java.lang.String[] { "StatusCode", });
+          internal_static_mesos_CheckStatusInfo_Tcp_descriptor =
+            internal_static_mesos_CheckStatusInfo_descriptor.getNestedTypes().get(2);
+          internal_static_mesos_CheckStatusInfo_Tcp_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_CheckStatusInfo_Tcp_descriptor,
+              new java.lang.String[] { "Succeeded", });
+          internal_static_mesos_TaskStatus_descriptor =
+            getDescriptor().getMessageTypes().get(44);
+          internal_static_mesos_TaskStatus_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_TaskStatus_descriptor,
+              new java.lang.String[] { "TaskId", "State", "Message", "Source", "Reason", "Data", "SlaveId", "ExecutorId", "Timestamp", "Uuid", "Healthy", "CheckStatus", "Labels", "ContainerStatus", "UnreachableTime", });
+          internal_static_mesos_Filters_descriptor =
+            getDescriptor().getMessageTypes().get(45);
+          internal_static_mesos_Filters_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Filters_descriptor,
+              new java.lang.String[] { "RefuseSeconds", });
+          internal_static_mesos_Environment_descriptor =
+            getDescriptor().getMessageTypes().get(46);
+          internal_static_mesos_Environment_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Environment_descriptor,
+              new java.lang.String[] { "Variables", });
+          internal_static_mesos_Environment_Variable_descriptor =
+            internal_static_mesos_Environment_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_Environment_Variable_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Environment_Variable_descriptor,
+              new java.lang.String[] { "Name", "Type", "Value", "Secret", });
+          internal_static_mesos_Parameter_descriptor =
+            getDescriptor().getMessageTypes().get(47);
+          internal_static_mesos_Parameter_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Parameter_descriptor,
+              new java.lang.String[] { "Key", "Value", });
+          internal_static_mesos_Parameters_descriptor =
+            getDescriptor().getMessageTypes().get(48);
+          internal_static_mesos_Parameters_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Parameters_descriptor,
+              new java.lang.String[] { "Parameter", });
+          internal_static_mesos_Credential_descriptor =
+            getDescriptor().getMessageTypes().get(49);
+          internal_static_mesos_Credential_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Credential_descriptor,
+              new java.lang.String[] { "Principal", "Secret", });
+          internal_static_mesos_Credentials_descriptor =
+            getDescriptor().getMessageTypes().get(50);
+          internal_static_mesos_Credentials_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Credentials_descriptor,
+              new java.lang.String[] { "Credentials", });
+          internal_static_mesos_Secret_descriptor =
+            getDescriptor().getMessageTypes().get(51);
+          internal_static_mesos_Secret_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Secret_descriptor,
+              new java.lang.String[] { "Type", "Reference", "Value", });
+          internal_static_mesos_Secret_Reference_descriptor =
+            internal_static_mesos_Secret_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_Secret_Reference_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Secret_Reference_descriptor,
+              new java.lang.String[] { "Name", "Key", });
+          internal_static_mesos_Secret_Value_descriptor =
+            internal_static_mesos_Secret_descriptor.getNestedTypes().get(1);
+          internal_static_mesos_Secret_Value_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Secret_Value_descriptor,
+              new java.lang.String[] { "Data", });
+          internal_static_mesos_RateLimit_descriptor =
+            getDescriptor().getMessageTypes().get(52);
+          internal_static_mesos_RateLimit_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_RateLimit_descriptor,
+              new java.lang.String[] { "Qps", "Principal", "Capacity", });
+          internal_static_mesos_RateLimits_descriptor =
+            getDescriptor().getMessageTypes().get(53);
+          internal_static_mesos_RateLimits_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_RateLimits_descriptor,
+              new java.lang.String[] { "Limits", "AggregateDefaultQps", "AggregateDefaultCapacity", });
+          internal_static_mesos_Image_descriptor =
+            getDescriptor().getMessageTypes().get(54);
+          internal_static_mesos_Image_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Image_descriptor,
+              new java.lang.String[] { "Type", "Appc", "Docker", "Cached", });
+          internal_static_mesos_Image_Appc_descriptor =
+            internal_static_mesos_Image_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_Image_Appc_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Image_Appc_descriptor,
+              new java.lang.String[] { "Name", "Id", "Labels", });
+          internal_static_mesos_Image_Docker_descriptor =
+            internal_static_mesos_Image_descriptor.getNestedTypes().get(1);
+          internal_static_mesos_Image_Docker_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Image_Docker_descriptor,
+              new java.lang.String[] { "Name", "Credential", "Config", });
+          internal_static_mesos_Volume_descriptor =
+            getDescriptor().getMessageTypes().get(55);
+          internal_static_mesos_Volume_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Volume_descriptor,
+              new java.lang.String[] { "Mode", "ContainerPath", "HostPath", "Image", "Source", });
+          internal_static_mesos_Volume_Source_descriptor =
+            internal_static_mesos_Volume_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_Volume_Source_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Volume_Source_descriptor,
+              new java.lang.String[] { "Type", "DockerVolume", "SandboxPath", "Secret", });
+          internal_static_mesos_Volume_Source_DockerVolume_descriptor =
+            internal_static_mesos_Volume_Source_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_Volume_Source_DockerVolume_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Volume_Source_DockerVolume_descriptor,
+              new java.lang.String[] { "Driver", "Name", "DriverOptions", });
+          internal_static_mesos_Volume_Source_SandboxPath_descriptor =
+            internal_static_mesos_Volume_Source_descriptor.getNestedTypes().get(1);
+          internal_static_mesos_Volume_Source_SandboxPath_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Volume_Source_SandboxPath_descriptor,
+              new java.lang.String[] { "Type", "Path", });
+          internal_static_mesos_NetworkInfo_descriptor =
+            getDescriptor().getMessageTypes().get(56);
+          internal_static_mesos_NetworkInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_NetworkInfo_descriptor,
+              new java.lang.String[] { "IpAddresses", "Name", "Groups", "Labels", "PortMappings", });
+          internal_static_mesos_NetworkInfo_IPAddress_descriptor =
+            internal_static_mesos_NetworkInfo_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_NetworkInfo_IPAddress_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_NetworkInfo_IPAddress_descriptor,
+              new java.lang.String[] { "Protocol", "IpAddress", });
+          internal_static_mesos_NetworkInfo_PortMapping_descriptor =
+            internal_static_mesos_NetworkInfo_descriptor.getNestedTypes().get(1);
+          internal_static_mesos_NetworkInfo_PortMapping_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_NetworkInfo_PortMapping_descriptor,
+              new java.lang.String[] { "HostPort", "ContainerPort", "Protocol", });
+          internal_static_mesos_CapabilityInfo_descriptor =
+            getDescriptor().getMessageTypes().get(57);
+          internal_static_mesos_CapabilityInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_CapabilityInfo_descriptor,
+              new java.lang.String[] { "Capabilities", });
+          internal_static_mesos_LinuxInfo_descriptor =
+            getDescriptor().getMessageTypes().get(58);
+          internal_static_mesos_LinuxInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_LinuxInfo_descriptor,
+              new java.lang.String[] { "CapabilityInfo", "BoundingCapabilities", "EffectiveCapabilities", "SharePidNamespace", });
+          internal_static_mesos_RLimitInfo_descriptor =
+            getDescriptor().getMessageTypes().get(59);
+          internal_static_mesos_RLimitInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_RLimitInfo_descriptor,
+              new java.lang.String[] { "Rlimits", });
+          internal_static_mesos_RLimitInfo_RLimit_descriptor =
+            internal_static_mesos_RLimitInfo_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_RLimitInfo_RLimit_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_RLimitInfo_RLimit_descriptor,
+              new java.lang.String[] { "Type", "Hard", "Soft", });
+          internal_static_mesos_TTYInfo_descriptor =
+            getDescriptor().getMessageTypes().get(60);
+          internal_static_mesos_TTYInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_TTYInfo_descriptor,
+              new java.lang.String[] { "WindowSize", });
+          internal_static_mesos_TTYInfo_WindowSize_descriptor =
+            internal_static_mesos_TTYInfo_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_TTYInfo_WindowSize_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_TTYInfo_WindowSize_descriptor,
+              new java.lang.String[] { "Rows", "Columns", });
+          internal_static_mesos_ContainerInfo_descriptor =
+            getDescriptor().getMessageTypes().get(61);
+          internal_static_mesos_ContainerInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_ContainerInfo_descriptor,
+              new java.lang.String[] { "Type", "Volumes", "Hostname", "Docker", "Mesos", "NetworkInfos", "LinuxInfo", "RlimitInfo", "TtyInfo", });
+          internal_static_mesos_ContainerInfo_DockerInfo_descriptor =
+            internal_static_mesos_ContainerInfo_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_ContainerInfo_DockerInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_ContainerInfo_DockerInfo_descriptor,
+              new java.lang.String[] { "Image", "Network", "PortMappings", "Privileged", "Parameters", "ForcePullImage", "VolumeDriver", });
+          internal_static_mesos_ContainerInfo_DockerInfo_PortMapping_descriptor =
+            internal_static_mesos_ContainerInfo_DockerInfo_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_ContainerInfo_DockerInfo_PortMapping_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_ContainerInfo_DockerInfo_PortMapping_descriptor,
+              new java.lang.String[] { "HostPort", "ContainerPort", "Protocol", });
+          internal_static_mesos_ContainerInfo_MesosInfo_descriptor =
+            internal_static_mesos_ContainerInfo_descriptor.getNestedTypes().get(1);
+          internal_static_mesos_ContainerInfo_MesosInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_ContainerInfo_MesosInfo_descriptor,
+              new java.lang.String[] { "Image", });
+          internal_static_mesos_ContainerStatus_descriptor =
+            getDescriptor().getMessageTypes().get(62);
+          internal_static_mesos_ContainerStatus_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_ContainerStatus_descriptor,
+              new java.lang.String[] { "ContainerId", "NetworkInfos", "CgroupInfo", "ExecutorPid", });
+          internal_static_mesos_CgroupInfo_descriptor =
+            getDescriptor().getMessageTypes().get(63);
+          internal_static_mesos_CgroupInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_CgroupInfo_descriptor,
+              new java.lang.String[] { "NetCls", });
+          internal_static_mesos_CgroupInfo_Blkio_descriptor =
+            internal_static_mesos_CgroupInfo_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_CgroupInfo_Blkio_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_CgroupInfo_Blkio_descriptor,
+              new java.lang.String[] { });
+          internal_static_mesos_CgroupInfo_Blkio_Value_descriptor =
+            internal_static_mesos_CgroupInfo_Blkio_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_CgroupInfo_Blkio_Value_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_CgroupInfo_Blkio_Value_descriptor,
+              new java.lang.String[] { "Op", "Value", });
+          internal_static_mesos_CgroupInfo_Blkio_CFQ_descriptor =
+            internal_static_mesos_CgroupInfo_Blkio_descriptor.getNestedTypes().get(1);
+          internal_static_mesos_CgroupInfo_Blkio_CFQ_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_CgroupInfo_Blkio_CFQ_descriptor,
+              new java.lang.String[] { });
+          internal_static_mesos_CgroupInfo_Blkio_CFQ_Statistics_descriptor =
+            internal_static_mesos_CgroupInfo_Blkio_CFQ_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_CgroupInfo_Blkio_CFQ_Statistics_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_CgroupInfo_Blkio_CFQ_Statistics_descriptor,
+              new java.lang.String[] { "Device", "Sectors", "Time", "IoServiced", "IoServiceBytes", "IoServiceTime", "IoWaitTime", "IoMerged", "IoQueued", });
+          internal_static_mesos_CgroupInfo_Blkio_Throttling_descriptor =
+            internal_static_mesos_CgroupInfo_Blkio_descriptor.getNestedTypes().get(2);
+          internal_static_mesos_CgroupInfo_Blkio_Throttling_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_CgroupInfo_Blkio_Throttling_descriptor,
+              new java.lang.String[] { });
+          internal_static_mesos_CgroupInfo_Blkio_Throttling_Statistics_descriptor =
+            internal_static_mesos_CgroupInfo_Blkio_Throttling_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_CgroupInfo_Blkio_Throttling_Statistics_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_CgroupInfo_Blkio_Throttling_Statistics_descriptor,
+              new java.lang.String[] { "Device", "IoServiced", "IoServiceBytes", });
+          internal_static_mesos_CgroupInfo_Blkio_Statistics_descriptor =
+            internal_static_mesos_CgroupInfo_Blkio_descriptor.getNestedTypes().get(3);
+          internal_static_mesos_CgroupInfo_Blkio_Statistics_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_CgroupInfo_Blkio_Statistics_descriptor,
+              new java.lang.String[] { "Cfq", "CfqRecursive", "Throttling", });
+          internal_static_mesos_CgroupInfo_NetCls_descriptor =
+            internal_static_mesos_CgroupInfo_descriptor.getNestedTypes().get(1);
+          internal_static_mesos_CgroupInfo_NetCls_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_CgroupInfo_NetCls_descriptor,
+              new java.lang.String[] { "Classid", });
+          internal_static_mesos_Labels_descriptor =
+            getDescriptor().getMessageTypes().get(64);
+          internal_static_mesos_Labels_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Labels_descriptor,
+              new java.lang.String[] { "Labels", });
+          internal_static_mesos_Label_descriptor =
+            getDescriptor().getMessageTypes().get(65);
+          internal_static_mesos_Label_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Label_descriptor,
+              new java.lang.String[] { "Key", "Value", });
+          internal_static_mesos_Port_descriptor =
+            getDescriptor().getMessageTypes().get(66);
+          internal_static_mesos_Port_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Port_descriptor,
+              new java.lang.String[] { "Number", "Name", "Protocol", "Visibility", "Labels", });
+          internal_static_mesos_Ports_descriptor =
+            getDescriptor().getMessageTypes().get(67);
+          internal_static_mesos_Ports_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Ports_descriptor,
+              new java.lang.String[] { "Ports", });
+          internal_static_mesos_DiscoveryInfo_descriptor =
+            getDescriptor().getMessageTypes().get(68);
+          internal_static_mesos_DiscoveryInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_DiscoveryInfo_descriptor,
+              new java.lang.String[] { "Visibility", "Name", "Environment", "Location", "Version", "Ports", "Labels", });
+          internal_static_mesos_WeightInfo_descriptor =
+            getDescriptor().getMessageTypes().get(69);
+          internal_static_mesos_WeightInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_WeightInfo_descriptor,
+              new java.lang.String[] { "Weight", "Role", });
+          internal_static_mesos_VersionInfo_descriptor =
+            getDescriptor().getMessageTypes().get(70);
+          internal_static_mesos_VersionInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_VersionInfo_descriptor,
+              new java.lang.String[] { "Version", "BuildDate", "BuildTime", "BuildUser", "GitSha", "GitBranch", "GitTag", });
+          internal_static_mesos_Flag_descriptor =
+            getDescriptor().getMessageTypes().get(71);
+          internal_static_mesos_Flag_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Flag_descriptor,
+              new java.lang.String[] { "Name", "Value", });
+          internal_static_mesos_Role_descriptor =
+            getDescriptor().getMessageTypes().get(72);
+          internal_static_mesos_Role_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Role_descriptor,
+              new java.lang.String[] { "Name", "Weight", "Frameworks", "Resources", });
+          internal_static_mesos_Metric_descriptor =
+            getDescriptor().getMessageTypes().get(73);
+          internal_static_mesos_Metric_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Metric_descriptor,
+              new java.lang.String[] { "Name", "Value", });
+          internal_static_mesos_FileInfo_descriptor =
+            getDescriptor().getMessageTypes().get(74);
+          internal_static_mesos_FileInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_FileInfo_descriptor,
+              new java.lang.String[] { "Path", "Nlink", "Size", "Mtime", "Mode", "Uid", "Gid", });
+          internal_static_mesos_Device_descriptor =
+            getDescriptor().getMessageTypes().get(75);
+          internal_static_mesos_Device_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Device_descriptor,
+              new java.lang.String[] { "Path", "Number", });
+          internal_static_mesos_Device_Number_descriptor =
+            internal_static_mesos_Device_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_Device_Number_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_Device_Number_descriptor,
+              new java.lang.String[] { "MajorNumber", "MinorNumber", });
+          internal_static_mesos_DeviceAccess_descriptor =
+            getDescriptor().getMessageTypes().get(76);
+          internal_static_mesos_DeviceAccess_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_DeviceAccess_descriptor,
+              new java.lang.String[] { "Device", "Access", });
+          internal_static_mesos_DeviceAccess_Access_descriptor =
+            internal_static_mesos_DeviceAccess_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_DeviceAccess_Access_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_DeviceAccess_Access_descriptor,
+              new java.lang.String[] { "Read", "Write", "Mknod", });
+          internal_static_mesos_DeviceWhitelist_descriptor =
+            getDescriptor().getMessageTypes().get(77);
+          internal_static_mesos_DeviceWhitelist_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_DeviceWhitelist_descriptor,
+              new java.lang.String[] { "AllowedDevices", });
+          return null;
+        }
+      };
+    com.google.protobuf.Descriptors.FileDescriptor
+      .internalBuildGeneratedFileFrom(descriptorData,
+        new com.google.protobuf.Descriptors.FileDescriptor[] {
+        }, assigner);
+  }
+
+  // @@protoc_insertion_point(outer_class_scope)
+}
diff --git a/myriad-commons/src/main/java/org/apache/mesos/Scheduler.java b/myriad-commons/src/main/java/org/apache/mesos/Scheduler.java
new file mode 100644
index 0000000..da65116
--- /dev/null
+++ b/myriad-commons/src/main/java/org/apache/mesos/Scheduler.java
@@ -0,0 +1,211 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.mesos;
+
+import java.util.List;
+
+import org.apache.mesos.Protos.*;
+/**
+ * Callback interface to be implemented by frameworks'
+ * schedulers. Note that only one callback will be invoked at a time,
+ * so it is not recommended that you block within a callback because
+ * it may cause a deadlock.
+ * <p>
+ * Each callback includes a reference to the scheduler driver that was
+ * used to run this scheduler. The reference will not change for the
+ * duration of a scheduler (i.e., from the point you do {@link
+ * SchedulerDriver#start} to the point that {@link
+ * SchedulerDriver#join} returns). This is intended for convenience so
+ * that a scheduler doesn't need to store a reference to the driver
+ * itself.
+ */
+public interface Scheduler {
+    /**
+     * Invoked when the scheduler successfully registers with a Mesos
+     * master. A unique ID (generated by the master) used for
+     * distinguishing this framework from others and MasterInfo
+     * with the IP and port of the current master are provided as arguments.
+     *
+     * @param driver      The scheduler driver that was registered.
+     * @param frameworkId The framework ID generated by the master.
+     * @param masterInfo  Info about the current master, including IP and port.
+     *
+     * @see SchedulerDriver
+     * @see FrameworkID
+     * @see MasterInfo
+     */
+    void registered(SchedulerDriver driver,
+                    FrameworkID frameworkId,
+                    MasterInfo masterInfo);
+
+    /**
+     * Invoked when the scheduler re-registers with a newly elected Mesos master.
+     * This is only called when the scheduler has previously been registered.
+     * MasterInfo containing the updated information about the elected master
+     * is provided as an argument.
+     *
+     * @param driver      The driver that was re-registered.
+     * @param masterInfo  The updated information about the elected master.
+     *
+     * @see SchedulerDriver
+     * @see MasterInfo
+     */
+    void reregistered(SchedulerDriver driver, MasterInfo masterInfo);
+
+    /**
+     * Invoked when resources have been offered to this framework. A
+     * single offer will only contain resources from a single slave.
+     * Resources associated with an offer will not be re-offered to
+     * _this_ framework until either (a) this framework has rejected
+     * those resources (see {@link SchedulerDriver#launchTasks}) or (b)
+     * those resources have been rescinded (see {@link Scheduler#offerRescinded}).
+     * Note that resources may be concurrently offered to more than one
+     * framework at a time (depending on the allocator being used). In
+     * that case, the first framework to launch tasks using those
+     * resources will be able to use them while the other frameworks
+     * will have those resources rescinded (or if a framework has
+     * already launched tasks with those resources then those tasks will
+     * fail with a TASK_LOST status and a message saying as much).
+     *
+     * @param driver  The driver that was used to run this scheduler.
+     * @param offers  The resources offered to this framework.
+     *
+     * @see SchedulerDriver
+     * @see Offer
+     */
+    void resourceOffers(SchedulerDriver driver, List<Offer> offers);
+
+    /**
+     * Invoked when an offer is no longer valid (e.g., the slave was
+     * lost or another framework used resources in the offer). If for
+     * whatever reason an offer is never rescinded (e.g., dropped
+     * message, failing over framework, etc.), a framework that attempts
+     * to launch tasks using an invalid offer will receive TASK_LOST
+     * status updates for those tasks (see {@link #resourceOffers}).
+     *
+     * @param driver  The driver that was used to run this scheduler.
+     * @param offerId The ID of the offer that was rescinded.
+     *
+     * @see SchedulerDriver
+     * @see OfferID
+     */
+    void offerRescinded(SchedulerDriver driver, OfferID offerId);
+
+    /**
+     * Invoked when the status of a task has changed (e.g., a slave is
+     * lost and so the task is lost, a task finishes and an executor
+     * sends a status update saying so, etc). If implicit
+     * acknowledgements are being used, then returning from this
+     * callback _acknowledges_ receipt of this status update! If for
+     * whatever reason the scheduler aborts during this callback (or
+     * the process exits) another status update will be delivered (note,
+     * however, that this is currently not true if the slave sending the
+     * status update is lost/fails during that time). If explicit
+     * acknowledgements are in use, the scheduler must acknowledge this
+     * status on the driver.
+     *
+     * @param driver The driver that was used to run this scheduler.
+     * @param status The status update, which includes the task ID and status.
+     *
+     * @see SchedulerDriver
+     * @see TaskStatus
+     */
+    void statusUpdate(SchedulerDriver driver, TaskStatus status);
+
+    /**
+     * Invoked when an executor sends a message. These messages are best
+     * effort; do not expect a framework message to be retransmitted in
+     * any reliable fashion.
+     *
+     * @param driver      The driver that received the message.
+     * @param executorId  The ID of the executor that sent the message.
+     * @param slaveId     The ID of the slave that launched the executor.
+     * @param data        The message payload.
+     *
+     * @see SchedulerDriver
+     * @see ExecutorID
+     * @see SlaveID
+     */
+    void frameworkMessage(SchedulerDriver driver,
+                          ExecutorID executorId,
+                          SlaveID slaveId,
+                          byte[] data);
+
+    /**
+     * Invoked when the scheduler becomes "disconnected" from the master
+     * (e.g., the master fails and another is taking over).
+     *
+     * @param driver  The driver that was used to run this scheduler.
+     *
+     * @see SchedulerDriver
+     */
+    void disconnected(SchedulerDriver driver);
+
+    /**
+     * Invoked when a slave has been determined unreachable (e.g.,
+     * machine failure, network partition). Most frameworks will need to
+     * reschedule any tasks launched on this slave on a new slave.
+     *
+     * NOTE: This callback is not reliably delivered. If a host or
+     * network failure causes messages between the master and the
+     * scheduler to be dropped, this callback may not be invoked.
+     *
+     * @param driver  The driver that was used to run this scheduler.
+     * @param slaveId The ID of the slave that was lost.
+     *
+     * @see SchedulerDriver
+     * @see SlaveID
+     */
+    void slaveLost(SchedulerDriver driver, SlaveID slaveId);
+
+    /**
+     * Invoked when an executor has exited/terminated. Note that any
+     * tasks running will have TASK_LOST status updates automagically
+     * generated.
+     *
+     * NOTE: This callback is not reliably delivered. If a host or
+     * network failure causes messages between the master and the
+     * scheduler to be dropped, this callback may not be invoked.
+     *
+     * @param driver      The driver that was used to run this scheduler.
+     * @param executorId  The ID of the executor that was lost.
+     * @param slaveId     The ID of the slave that launched the executor.
+     * @param status      The exit status of the executor.
+     *
+     * @see SchedulerDriver
+     * @see ExecutorID
+     * @see SlaveID
+     * @see Status
+     */
+    void executorLost(SchedulerDriver driver,
+                      ExecutorID executorId,
+                      SlaveID slaveId,
+                      int status);
+
+    /**
+     * Invoked when there is an unrecoverable error in the scheduler or
+     * driver. The driver will be aborted BEFORE invoking this callback.
+     *
+     * @param driver  The driver that was used to run this scheduler.
+     * @param message The error message.
+     *
+     * @see SchedulerDriver
+     */
+    void error(SchedulerDriver driver, String message);
+}
diff --git a/myriad-commons/src/main/java/org/apache/mesos/SchedulerDriver.java b/myriad-commons/src/main/java/org/apache/mesos/SchedulerDriver.java
new file mode 100644
index 0000000..7de5515
--- /dev/null
+++ b/myriad-commons/src/main/java/org/apache/mesos/SchedulerDriver.java
@@ -0,0 +1,323 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.mesos;
+
+import java.util.Collection;
+
+import org.apache.mesos.Protos.*;
+/**
+ * Abstract interface for connecting a scheduler to Mesos. This
+ * interface is used both to manage the scheduler's lifecycle (start
+ * it, stop it, or wait for it to finish) and to interact with Mesos
+ * (e.g., launch tasks, kill tasks, etc.).
+ */
+public interface SchedulerDriver {
+    /**
+     * Starts the scheduler driver. This needs to be called before any
+     * other driver calls are made.
+     *
+     * @return    The state of the driver after the call.
+     *
+     * @see Status
+     */
+    Status start();
+
+    /**
+     * Stops the scheduler driver. If the 'failover' flag is set to
+     * false then it is expected that this framework will never
+     * reconnect to Mesos. So Mesos will unregister the framework
+     * and shutdown all its tasks and executors. If 'failover' is true,
+     * all executors and tasks will remain running (for some framework
+     * specific failover timeout) allowing the scheduler to reconnect
+     * (possibly in the same process, or from a different process, for
+     * example, on a different machine).
+     *
+     * @param failover    Whether framework failover is expected.
+     *
+     * @return            The state of the driver after the call.
+     *
+     * @see Status
+     */
+    Status stop(boolean failover);
+
+    /**
+     * Stops the scheduler driver assuming no failover. This will
+     * cause Mesos to unregister the framework and shutdown all
+     * its tasks and executors. Please see {@link #stop(boolean)}
+     * for more details.
+     *
+     * @return The state of the driver after the call.
+     */
+    Status stop();
+
+    /**
+     * Aborts the driver so that no more callbacks can be made to the
+     * scheduler. The semantics of abort and stop have deliberately been
+     * separated so that code can detect an aborted driver (i.e., via
+     * the return status of {@link #join}, see below), and instantiate
+     * and start another driver if desired (from within the same
+     * process).
+     *
+     * @return The state of the driver after the call.
+     */
+    Status abort();
+
+    /**
+     * Waits for the driver to be stopped or aborted, possibly
+     * <i>blocking</i> the current thread indefinitely. The return status of
+     * this function can be used to determine if the driver was aborted
+     * (see mesos.proto for a description of Status).
+     *
+     * @return The state of the driver after the call.
+     */
+    Status join();
+
+    /**
+     * Starts and immediately joins (i.e., blocks on) the driver.
+     *
+     * @return The state of the driver after the call.
+     */
+    Status run();
+
+    /**
+     * Requests resources from Mesos (see mesos.proto for a description
+     * of Request and how, for example, to request resources
+     * from specific slaves). Any resources available are offered to the
+     * framework via {@link Scheduler#resourceOffers} callback,
+     * asynchronously.
+     *
+     * @param requests    The resource requests.
+     *
+     * @return            The state of the driver after the call.
+     *
+     * @see Request
+     * @see Status
+     */
+    Status requestResources(Collection<Request> requests);
+
+    /**
+     * Launches the given set of tasks. Any remaining resources (i.e.,
+     * those that are not used by the launched tasks or their executors)
+     * will be considered declined. Note that this includes resources
+     * used by tasks that the framework attempted to launch but failed
+     * (with TASK_ERROR) due to a malformed task description. The
+     * specified filters are applied on all unused resources (see
+     * mesos.proto for a description of Filters). Available resources
+     * are aggregated when multiple offers are provided. Note that all
+     * offers must belong to the same slave. Invoking this function with
+     * an empty collection of tasks declines offers in their entirety
+     * (see {@link #declineOffer}).
+     *
+     * @param offerIds    The collection of offer IDs.
+     * @param tasks       The collection of tasks to be launched.
+     * @param filters     The filters to set for any remaining resources.
+     *
+     * @return            The state of the driver after the call.
+     *
+     * @see OfferID
+     * @see TaskInfo
+     * @see Filters
+     * @see Status
+     */
+    Status launchTasks(Collection<OfferID> offerIds,
+                       Collection<TaskInfo> tasks,
+                       Filters filters);
+
+    /**
+     * Launches the given set of tasks. See above for details.
+     * Note that this may add a default filter (see mesos.proto)
+     * for the remaining resources. Notably the MesosSchedulerDriver
+     * does so.
+     *
+     *
+     * @param offerIds    The collection of offer IDs.
+     * @param tasks       The collection of tasks to be launched.
+     *
+     * @return            The state of the driver after the call.
+     */
+    Status launchTasks(Collection<OfferID> offerIds, Collection<TaskInfo> tasks);
+
+    /**
+     * @deprecated Use {@link #launchTasks(Collection, Collection, Filters)} instead.
+     *
+     * @param offerId The offer ID.
+     * @param tasks   The collection of tasks to be launched.
+     * @param filters The filters to set for any remaining resources.
+     *
+     * @return        The state of the driver after the call.
+     */
+    Status launchTasks(OfferID offerId,
+                       Collection<TaskInfo> tasks,
+                       Filters filters);
+
+    /**
+     * @deprecated Use {@link #launchTasks(Collection, Collection)} instead.
+     * Note that this may add a default filter (see mesos.proto)
+     * for the remaining resources. Notably the MesosSchedulerDriver
+     * does so.
+     *
+     * @param offerId The offer ID.
+     * @param tasks   The collection of tasks to be launched.
+     *
+     * @return        The state of the driver after the call.
+     */
+    Status launchTasks(OfferID offerId, Collection<TaskInfo> tasks);
+
+    /**
+     * Kills the specified task. Note that attempting to kill a task is
+     * currently not reliable. If, for example, a scheduler fails over
+     * while it was attempting to kill a task it will need to retry in
+     * the future Likewise, if unregistered / disconnected, the request
+     * will be dropped (these semantics may be changed in the future).
+     *
+     * @param taskId  The ID of the task to be killed.
+     *
+     * @return        The state of the driver after the call.
+     */
+    Status killTask(TaskID taskId);
+
+    /**
+     * Accepts the given offers and performs a sequence of operations on
+     * those accepted offers. See Offer.Operation in mesos.proto for the
+     * set of available operations. Any remaining resources (i.e., those
+     * that are not used by the launched tasks or their executors) will
+     * be considered declined. Note that this includes resources used by
+     * tasks that the framework attempted to launch but failed (with
+     * TASK_ERROR) due to a malformed task description. The specified
+     * filters are applied on all unused resources (see mesos.proto for
+     * a description of Filters). Available resources are aggregated
+     * when multiple offers are provided. Note that all offers must
+     * belong to the same slave.
+     *
+     * @param offerIds    The collection of offer IDs.
+     * @param operations  The collection of offer operations to perform.
+     * @param filters     The filters to set for any remaining resources.
+     *
+     * @return            The state of the driver after the call.
+     *
+     * @see OfferID
+     * @see Offer.Operation
+     * @see Filters
+     * @see Status
+     */
+    Status acceptOffers(Collection<OfferID> offerIds,
+                        Collection<Offer.Operation> operations,
+                        Filters filters);
+
+    /**
+     * Declines an offer in its entirety and applies the specified
+     * filters on the resources (see mesos.proto for a description of
+     * Filters). Note that this can be done at any time, it is not
+     * necessary to do this within the {@link Scheduler#resourceOffers}
+     * callback.
+     *
+     * @param offerId The ID of the offer to be declined.
+     * @param filters The filters to set for any remaining resources.
+     *
+     * @return        The state of the driver after the call.
+     *
+     * @see OfferID
+     * @see Filters
+     * @see Status
+     */
+    Status declineOffer(OfferID offerId, Filters filters);
+
+    /**
+     * Declines an offer in its entirety. See above for details.
+     *
+     * @param offerId The ID of the offer to be declined.
+     *
+     * @return        The state of the driver after the call.
+     *
+     * @see OfferID
+     * @see Status
+     */
+    Status declineOffer(OfferID offerId);
+
+    /**
+     * Removes all filters, previously set by the framework (via {@link
+     * #launchTasks}). This enables the framework to receive offers
+     * from those filtered slaves.
+     *
+     * @return    The state of the driver after the call.
+     *
+     * @see Status
+     */
+    Status reviveOffers();
+
+    /**
+     * Inform Mesos master to stop sending offers to the framework. The
+     * scheduler should call reviveOffers() to resume getting offers.
+     *
+     * @return    The state of the driver after the call.
+     *
+     * @see Status
+     */
+    Status suppressOffers();
+
+    /**
+     * Acknowledges the status update. This should only be called
+     * once the status update is processed durably by the scheduler.
+     * Not that explicit acknowledgements must be requested via the
+     * constructor argument, otherwise a call to this method will
+     * cause the driver to crash.
+     *
+     * @param status  The status to acknowledge.
+     *
+     * @return        The state of the driver after the call.
+     *
+     * @see TaskStatus
+     */
+    Status acknowledgeStatusUpdate(TaskStatus status);
+
+    /**
+     * Sends a message from the framework to one of its executors. These
+     * messages are best effort; do not expect a framework message to be
+     * retransmitted in any reliable fashion.
+     *
+     * @param executorId  The ID of the executor to send the message to.
+     * @param slaveId     The ID of the slave that is running the executor.
+     * @param data        The message.
+     *
+     * @return            The state of the driver after the call.
+     *
+     * @see ExecutorID
+     * @see SlaveID
+     */
+    Status sendFrameworkMessage(ExecutorID executorId,
+                                SlaveID slaveId,
+                                byte[] data);
+
+    /**
+     * Allows the framework to query the status for non-terminal tasks.
+     * This causes the master to send back the latest task status for
+     * each task in 'statuses', if possible. Tasks that are no longer
+     * known will result in a TASK_LOST update. If statuses is empty,
+     * then the master will send the latest status for each task
+     * currently known.
+     *
+     * @param statuses    The collection of non-terminal TaskStatuses to reconcile.
+     *
+     * @return            The state of the driver after the call.
+     *
+     * @see TaskStatus
+     * @see SlaveID
+     */
+    Status reconcileTasks(Collection<TaskStatus> statuses);
+}
diff --git a/myriad-commons/src/main/java/org/apache/mesos/executor/Protos.java b/myriad-commons/src/main/java/org/apache/mesos/executor/Protos.java
new file mode 100644
index 0000000..3ef8253
--- /dev/null
+++ b/myriad-commons/src/main/java/org/apache/mesos/executor/Protos.java
@@ -0,0 +1,10759 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: mesos/executor.proto
+
+package org.apache.mesos.executor;
+
+public final class Protos {
+  private Protos() {}
+  public static void registerAllExtensions(
+      com.google.protobuf.ExtensionRegistry registry) {
+  }
+  public interface EventOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional .mesos.executor.Event.Type type = 1;
+    /**
+     * <code>optional .mesos.executor.Event.Type type = 1;</code>
+     *
+     * <pre>
+     * Type of the event, indicates which optional field below should be
+     * present if that type has a nested message definition.
+     * Enum fields should be optional, see: MESOS-4997.
+     * </pre>
+     */
+    boolean hasType();
+    /**
+     * <code>optional .mesos.executor.Event.Type type = 1;</code>
+     *
+     * <pre>
+     * Type of the event, indicates which optional field below should be
+     * present if that type has a nested message definition.
+     * Enum fields should be optional, see: MESOS-4997.
+     * </pre>
+     */
+    org.apache.mesos.executor.Protos.Event.Type getType();
+
+    // optional .mesos.executor.Event.Subscribed subscribed = 2;
+    /**
+     * <code>optional .mesos.executor.Event.Subscribed subscribed = 2;</code>
+     */
+    boolean hasSubscribed();
+    /**
+     * <code>optional .mesos.executor.Event.Subscribed subscribed = 2;</code>
+     */
+    org.apache.mesos.executor.Protos.Event.Subscribed getSubscribed();
+    /**
+     * <code>optional .mesos.executor.Event.Subscribed subscribed = 2;</code>
+     */
+    org.apache.mesos.executor.Protos.Event.SubscribedOrBuilder getSubscribedOrBuilder();
+
+    // optional .mesos.executor.Event.Acknowledged acknowledged = 3;
+    /**
+     * <code>optional .mesos.executor.Event.Acknowledged acknowledged = 3;</code>
+     */
+    boolean hasAcknowledged();
+    /**
+     * <code>optional .mesos.executor.Event.Acknowledged acknowledged = 3;</code>
+     */
+    org.apache.mesos.executor.Protos.Event.Acknowledged getAcknowledged();
+    /**
+     * <code>optional .mesos.executor.Event.Acknowledged acknowledged = 3;</code>
+     */
+    org.apache.mesos.executor.Protos.Event.AcknowledgedOrBuilder getAcknowledgedOrBuilder();
+
+    // optional .mesos.executor.Event.Launch launch = 4;
+    /**
+     * <code>optional .mesos.executor.Event.Launch launch = 4;</code>
+     */
+    boolean hasLaunch();
+    /**
+     * <code>optional .mesos.executor.Event.Launch launch = 4;</code>
+     */
+    org.apache.mesos.executor.Protos.Event.Launch getLaunch();
+    /**
+     * <code>optional .mesos.executor.Event.Launch launch = 4;</code>
+     */
+    org.apache.mesos.executor.Protos.Event.LaunchOrBuilder getLaunchOrBuilder();
+
+    // optional .mesos.executor.Event.LaunchGroup launch_group = 8;
+    /**
+     * <code>optional .mesos.executor.Event.LaunchGroup launch_group = 8;</code>
+     */
+    boolean hasLaunchGroup();
+    /**
+     * <code>optional .mesos.executor.Event.LaunchGroup launch_group = 8;</code>
+     */
+    org.apache.mesos.executor.Protos.Event.LaunchGroup getLaunchGroup();
+    /**
+     * <code>optional .mesos.executor.Event.LaunchGroup launch_group = 8;</code>
+     */
+    org.apache.mesos.executor.Protos.Event.LaunchGroupOrBuilder getLaunchGroupOrBuilder();
+
+    // optional .mesos.executor.Event.Kill kill = 5;
+    /**
+     * <code>optional .mesos.executor.Event.Kill kill = 5;</code>
+     */
+    boolean hasKill();
+    /**
+     * <code>optional .mesos.executor.Event.Kill kill = 5;</code>
+     */
+    org.apache.mesos.executor.Protos.Event.Kill getKill();
+    /**
+     * <code>optional .mesos.executor.Event.Kill kill = 5;</code>
+     */
+    org.apache.mesos.executor.Protos.Event.KillOrBuilder getKillOrBuilder();
+
+    // optional .mesos.executor.Event.Message message = 6;
+    /**
+     * <code>optional .mesos.executor.Event.Message message = 6;</code>
+     */
+    boolean hasMessage();
+    /**
+     * <code>optional .mesos.executor.Event.Message message = 6;</code>
+     */
+    org.apache.mesos.executor.Protos.Event.Message getMessage();
+    /**
+     * <code>optional .mesos.executor.Event.Message message = 6;</code>
+     */
+    org.apache.mesos.executor.Protos.Event.MessageOrBuilder getMessageOrBuilder();
+
+    // optional .mesos.executor.Event.Error error = 7;
+    /**
+     * <code>optional .mesos.executor.Event.Error error = 7;</code>
+     */
+    boolean hasError();
+    /**
+     * <code>optional .mesos.executor.Event.Error error = 7;</code>
+     */
+    org.apache.mesos.executor.Protos.Event.Error getError();
+    /**
+     * <code>optional .mesos.executor.Event.Error error = 7;</code>
+     */
+    org.apache.mesos.executor.Protos.Event.ErrorOrBuilder getErrorOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.executor.Event}
+   *
+   * <pre>
+   **
+   * Executor event API.
+   *
+   * An event is described using the standard protocol buffer "union"
+   * trick, see https://developers.google.com/protocol-buffers/docs/techniques#union.
+   * </pre>
+   */
+  public static final class Event extends
+      com.google.protobuf.GeneratedMessage
+      implements EventOrBuilder {
+    // Use Event.newBuilder() to construct.
+    private Event(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Event(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Event defaultInstance;
+    public static Event getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Event getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Event(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 8: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.executor.Protos.Event.Type value = org.apache.mesos.executor.Protos.Event.Type.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(1, rawValue);
+              } else {
+                bitField0_ |= 0x00000001;
+                type_ = value;
+              }
+              break;
+            }
+            case 18: {
+              org.apache.mesos.executor.Protos.Event.Subscribed.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = subscribed_.toBuilder();
+              }
+              subscribed_ = input.readMessage(org.apache.mesos.executor.Protos.Event.Subscribed.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(subscribed_);
+                subscribed_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+            case 26: {
+              org.apache.mesos.executor.Protos.Event.Acknowledged.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                subBuilder = acknowledged_.toBuilder();
+              }
+              acknowledged_ = input.readMessage(org.apache.mesos.executor.Protos.Event.Acknowledged.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(acknowledged_);
+                acknowledged_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000004;
+              break;
+            }
+            case 34: {
+              org.apache.mesos.executor.Protos.Event.Launch.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                subBuilder = launch_.toBuilder();
+              }
+              launch_ = input.readMessage(org.apache.mesos.executor.Protos.Event.Launch.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(launch_);
+                launch_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000008;
+              break;
+            }
+            case 42: {
+              org.apache.mesos.executor.Protos.Event.Kill.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000020) == 0x00000020)) {
+                subBuilder = kill_.toBuilder();
+              }
+              kill_ = input.readMessage(org.apache.mesos.executor.Protos.Event.Kill.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(kill_);
+                kill_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000020;
+              break;
+            }
+            case 50: {
+              org.apache.mesos.executor.Protos.Event.Message.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000040) == 0x00000040)) {
+                subBuilder = message_.toBuilder();
+              }
+              message_ = input.readMessage(org.apache.mesos.executor.Protos.Event.Message.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(message_);
+                message_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000040;
+              break;
+            }
+            case 58: {
+              org.apache.mesos.executor.Protos.Event.Error.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000080) == 0x00000080)) {
+                subBuilder = error_.toBuilder();
+              }
+              error_ = input.readMessage(org.apache.mesos.executor.Protos.Event.Error.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(error_);
+                error_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000080;
+              break;
+            }
+            case 66: {
+              org.apache.mesos.executor.Protos.Event.LaunchGroup.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000010) == 0x00000010)) {
+                subBuilder = launchGroup_.toBuilder();
+              }
+              launchGroup_ = input.readMessage(org.apache.mesos.executor.Protos.Event.LaunchGroup.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(launchGroup_);
+                launchGroup_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000010;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Event_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Event_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.executor.Protos.Event.class, org.apache.mesos.executor.Protos.Event.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Event> PARSER =
+        new com.google.protobuf.AbstractParser<Event>() {
+      public Event parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Event(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Event> getParserForType() {
+      return PARSER;
+    }
+
+    /**
+     * Protobuf enum {@code mesos.executor.Event.Type}
+     *
+     * <pre>
+     * Possible event types, followed by message definitions if
+     * applicable.
+     * </pre>
+     */
+    public enum Type
+        implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>UNKNOWN = 0;</code>
+       *
+       * <pre>
+       * This must be the first enum value in this list, to
+       * ensure that if 'type' is not set, the default value
+       * is UNKNOWN. This enables enum values to be added
+       * in a backwards-compatible way. See: MESOS-4997.
+       * </pre>
+       */
+      UNKNOWN(0, 0),
+      /**
+       * <code>SUBSCRIBED = 1;</code>
+       *
+       * <pre>
+       * See 'Subscribed' below.
+       * </pre>
+       */
+      SUBSCRIBED(1, 1),
+      /**
+       * <code>LAUNCH = 2;</code>
+       *
+       * <pre>
+       * See 'Launch' below.
+       * </pre>
+       */
+      LAUNCH(2, 2),
+      /**
+       * <code>LAUNCH_GROUP = 8;</code>
+       *
+       * <pre>
+       * See 'LaunchGroup' below.
+       * </pre>
+       */
+      LAUNCH_GROUP(3, 8),
+      /**
+       * <code>KILL = 3;</code>
+       *
+       * <pre>
+       * See 'Kill' below.
+       * </pre>
+       */
+      KILL(4, 3),
+      /**
+       * <code>ACKNOWLEDGED = 4;</code>
+       *
+       * <pre>
+       * See 'Acknowledged' below.
+       * </pre>
+       */
+      ACKNOWLEDGED(5, 4),
+      /**
+       * <code>MESSAGE = 5;</code>
+       *
+       * <pre>
+       * See 'Message' below.
+       * </pre>
+       */
+      MESSAGE(6, 5),
+      /**
+       * <code>ERROR = 6;</code>
+       *
+       * <pre>
+       * See 'Error' below.
+       * </pre>
+       */
+      ERROR(7, 6),
+      /**
+       * <code>SHUTDOWN = 7;</code>
+       *
+       * <pre>
+       * Received when the agent asks the executor to shutdown/kill itself.
+       * The executor is then required to kill all its active tasks, send
+       * `TASK_KILLED` status updates and gracefully exit. The executor
+       * should terminate within a `MESOS_EXECUTOR_SHUTDOWN_GRACE_PERIOD`
+       * (an environment variable set by the agent upon executor startup);
+       * it can be configured via `ExecutorInfo.shutdown_grace_period`. If
+       * the executor fails to do so, the agent will forcefully destroy the
+       * container where the executor is running. The agent would then send
+       * `TASK_LOST` updates for any remaining active tasks of this executor.
+       *
+       * NOTE: The executor must not assume that it will always be allotted
+       * the full grace period, as the agent may decide to allot a shorter
+       * period and failures / forcible terminations may occur.
+       *
+       * TODO(alexr): Consider adding a duration field into the `Shutdown`
+       * message so that the agent can communicate when a shorter period
+       * has been allotted.
+       * </pre>
+       */
+      SHUTDOWN(8, 7),
+      ;
+
+      /**
+       * <code>UNKNOWN = 0;</code>
+       *
+       * <pre>
+       * This must be the first enum value in this list, to
+       * ensure that if 'type' is not set, the default value
+       * is UNKNOWN. This enables enum values to be added
+       * in a backwards-compatible way. See: MESOS-4997.
+       * </pre>
+       */
+      public static final int UNKNOWN_VALUE = 0;
+      /**
+       * <code>SUBSCRIBED = 1;</code>
+       *
+       * <pre>
+       * See 'Subscribed' below.
+       * </pre>
+       */
+      public static final int SUBSCRIBED_VALUE = 1;
+      /**
+       * <code>LAUNCH = 2;</code>
+       *
+       * <pre>
+       * See 'Launch' below.
+       * </pre>
+       */
+      public static final int LAUNCH_VALUE = 2;
+      /**
+       * <code>LAUNCH_GROUP = 8;</code>
+       *
+       * <pre>
+       * See 'LaunchGroup' below.
+       * </pre>
+       */
+      public static final int LAUNCH_GROUP_VALUE = 8;
+      /**
+       * <code>KILL = 3;</code>
+       *
+       * <pre>
+       * See 'Kill' below.
+       * </pre>
+       */
+      public static final int KILL_VALUE = 3;
+      /**
+       * <code>ACKNOWLEDGED = 4;</code>
+       *
+       * <pre>
+       * See 'Acknowledged' below.
+       * </pre>
+       */
+      public static final int ACKNOWLEDGED_VALUE = 4;
+      /**
+       * <code>MESSAGE = 5;</code>
+       *
+       * <pre>
+       * See 'Message' below.
+       * </pre>
+       */
+      public static final int MESSAGE_VALUE = 5;
+      /**
+       * <code>ERROR = 6;</code>
+       *
+       * <pre>
+       * See 'Error' below.
+       * </pre>
+       */
+      public static final int ERROR_VALUE = 6;
+      /**
+       * <code>SHUTDOWN = 7;</code>
+       *
+       * <pre>
+       * Received when the agent asks the executor to shutdown/kill itself.
+       * The executor is then required to kill all its active tasks, send
+       * `TASK_KILLED` status updates and gracefully exit. The executor
+       * should terminate within a `MESOS_EXECUTOR_SHUTDOWN_GRACE_PERIOD`
+       * (an environment variable set by the agent upon executor startup);
+       * it can be configured via `ExecutorInfo.shutdown_grace_period`. If
+       * the executor fails to do so, the agent will forcefully destroy the
+       * container where the executor is running. The agent would then send
+       * `TASK_LOST` updates for any remaining active tasks of this executor.
+       *
+       * NOTE: The executor must not assume that it will always be allotted
+       * the full grace period, as the agent may decide to allot a shorter
+       * period and failures / forcible terminations may occur.
+       *
+       * TODO(alexr): Consider adding a duration field into the `Shutdown`
+       * message so that the agent can communicate when a shorter period
+       * has been allotted.
+       * </pre>
+       */
+      public static final int SHUTDOWN_VALUE = 7;
+
+
+      public final int getNumber() { return value; }
+
+      public static Type valueOf(int value) {
+        switch (value) {
+          case 0: return UNKNOWN;
+          case 1: return SUBSCRIBED;
+          case 2: return LAUNCH;
+          case 8: return LAUNCH_GROUP;
+          case 3: return KILL;
+          case 4: return ACKNOWLEDGED;
+          case 5: return MESSAGE;
+          case 6: return ERROR;
+          case 7: return SHUTDOWN;
+          default: return null;
+        }
+      }
+
+      public static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalGetValueMap() {
+        return internalValueMap;
+      }
+      private static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap<Type>() {
+              public Type findValueByNumber(int number) {
+                return Type.valueOf(number);
+              }
+            };
+
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
+          getValueDescriptor() {
+        return getDescriptor().getValues().get(index);
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptorForType() {
+        return getDescriptor();
+      }
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptor() {
+        return org.apache.mesos.executor.Protos.Event.getDescriptor().getEnumTypes().get(0);
+      }
+
+      private static final Type[] VALUES = values();
+
+      public static Type valueOf(
+          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+        if (desc.getType() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "EnumValueDescriptor is not for this type.");
+        }
+        return VALUES[desc.getIndex()];
+      }
+
+      private final int index;
+      private final int value;
+
+      private Type(int index, int value) {
+        this.index = index;
+        this.value = value;
+      }
+
+      // @@protoc_insertion_point(enum_scope:mesos.executor.Event.Type)
+    }
+
+    public interface SubscribedOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required .mesos.ExecutorInfo executor_info = 1;
+      /**
+       * <code>required .mesos.ExecutorInfo executor_info = 1;</code>
+       */
+      boolean hasExecutorInfo();
+      /**
+       * <code>required .mesos.ExecutorInfo executor_info = 1;</code>
+       */
+      org.apache.mesos.Protos.ExecutorInfo getExecutorInfo();
+      /**
+       * <code>required .mesos.ExecutorInfo executor_info = 1;</code>
+       */
+      org.apache.mesos.Protos.ExecutorInfoOrBuilder getExecutorInfoOrBuilder();
+
+      // required .mesos.FrameworkInfo framework_info = 2;
+      /**
+       * <code>required .mesos.FrameworkInfo framework_info = 2;</code>
+       */
+      boolean hasFrameworkInfo();
+      /**
+       * <code>required .mesos.FrameworkInfo framework_info = 2;</code>
+       */
+      org.apache.mesos.Protos.FrameworkInfo getFrameworkInfo();
+      /**
+       * <code>required .mesos.FrameworkInfo framework_info = 2;</code>
+       */
+      org.apache.mesos.Protos.FrameworkInfoOrBuilder getFrameworkInfoOrBuilder();
+
+      // required .mesos.SlaveInfo slave_info = 3;
+      /**
+       * <code>required .mesos.SlaveInfo slave_info = 3;</code>
+       */
+      boolean hasSlaveInfo();
+      /**
+       * <code>required .mesos.SlaveInfo slave_info = 3;</code>
+       */
+      org.apache.mesos.Protos.SlaveInfo getSlaveInfo();
+      /**
+       * <code>required .mesos.SlaveInfo slave_info = 3;</code>
+       */
+      org.apache.mesos.Protos.SlaveInfoOrBuilder getSlaveInfoOrBuilder();
+
+      // optional .mesos.ContainerID container_id = 4;
+      /**
+       * <code>optional .mesos.ContainerID container_id = 4;</code>
+       *
+       * <pre>
+       * Uniquely identifies the container of an executor run.
+       * </pre>
+       */
+      boolean hasContainerId();
+      /**
+       * <code>optional .mesos.ContainerID container_id = 4;</code>
+       *
+       * <pre>
+       * Uniquely identifies the container of an executor run.
+       * </pre>
+       */
+      org.apache.mesos.Protos.ContainerID getContainerId();
+      /**
+       * <code>optional .mesos.ContainerID container_id = 4;</code>
+       *
+       * <pre>
+       * Uniquely identifies the container of an executor run.
+       * </pre>
+       */
+      org.apache.mesos.Protos.ContainerIDOrBuilder getContainerIdOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.executor.Event.Subscribed}
+     *
+     * <pre>
+     * First event received when the executor subscribes.
+     * The 'id' field in the 'framework_info' will be set.
+     * </pre>
+     */
+    public static final class Subscribed extends
+        com.google.protobuf.GeneratedMessage
+        implements SubscribedOrBuilder {
+      // Use Subscribed.newBuilder() to construct.
+      private Subscribed(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Subscribed(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Subscribed defaultInstance;
+      public static Subscribed getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Subscribed getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Subscribed(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.Protos.ExecutorInfo.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = executorInfo_.toBuilder();
+                }
+                executorInfo_ = input.readMessage(org.apache.mesos.Protos.ExecutorInfo.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(executorInfo_);
+                  executorInfo_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+              case 18: {
+                org.apache.mesos.Protos.FrameworkInfo.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                  subBuilder = frameworkInfo_.toBuilder();
+                }
+                frameworkInfo_ = input.readMessage(org.apache.mesos.Protos.FrameworkInfo.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(frameworkInfo_);
+                  frameworkInfo_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000002;
+                break;
+              }
+              case 26: {
+                org.apache.mesos.Protos.SlaveInfo.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                  subBuilder = slaveInfo_.toBuilder();
+                }
+                slaveInfo_ = input.readMessage(org.apache.mesos.Protos.SlaveInfo.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(slaveInfo_);
+                  slaveInfo_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000004;
+                break;
+              }
+              case 34: {
+                org.apache.mesos.Protos.ContainerID.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                  subBuilder = containerId_.toBuilder();
+                }
+                containerId_ = input.readMessage(org.apache.mesos.Protos.ContainerID.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(containerId_);
+                  containerId_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000008;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Event_Subscribed_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Event_Subscribed_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.executor.Protos.Event.Subscribed.class, org.apache.mesos.executor.Protos.Event.Subscribed.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Subscribed> PARSER =
+          new com.google.protobuf.AbstractParser<Subscribed>() {
+        public Subscribed parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Subscribed(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Subscribed> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required .mesos.ExecutorInfo executor_info = 1;
+      public static final int EXECUTOR_INFO_FIELD_NUMBER = 1;
+      private org.apache.mesos.Protos.ExecutorInfo executorInfo_;
+      /**
+       * <code>required .mesos.ExecutorInfo executor_info = 1;</code>
+       */
+      public boolean hasExecutorInfo() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.ExecutorInfo executor_info = 1;</code>
+       */
+      public org.apache.mesos.Protos.ExecutorInfo getExecutorInfo() {
+        return executorInfo_;
+      }
+      /**
+       * <code>required .mesos.ExecutorInfo executor_info = 1;</code>
+       */
+      public org.apache.mesos.Protos.ExecutorInfoOrBuilder getExecutorInfoOrBuilder() {
+        return executorInfo_;
+      }
+
+      // required .mesos.FrameworkInfo framework_info = 2;
+      public static final int FRAMEWORK_INFO_FIELD_NUMBER = 2;
+      private org.apache.mesos.Protos.FrameworkInfo frameworkInfo_;
+      /**
+       * <code>required .mesos.FrameworkInfo framework_info = 2;</code>
+       */
+      public boolean hasFrameworkInfo() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required .mesos.FrameworkInfo framework_info = 2;</code>
+       */
+      public org.apache.mesos.Protos.FrameworkInfo getFrameworkInfo() {
+        return frameworkInfo_;
+      }
+      /**
+       * <code>required .mesos.FrameworkInfo framework_info = 2;</code>
+       */
+      public org.apache.mesos.Protos.FrameworkInfoOrBuilder getFrameworkInfoOrBuilder() {
+        return frameworkInfo_;
+      }
+
+      // required .mesos.SlaveInfo slave_info = 3;
+      public static final int SLAVE_INFO_FIELD_NUMBER = 3;
+      private org.apache.mesos.Protos.SlaveInfo slaveInfo_;
+      /**
+       * <code>required .mesos.SlaveInfo slave_info = 3;</code>
+       */
+      public boolean hasSlaveInfo() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>required .mesos.SlaveInfo slave_info = 3;</code>
+       */
+      public org.apache.mesos.Protos.SlaveInfo getSlaveInfo() {
+        return slaveInfo_;
+      }
+      /**
+       * <code>required .mesos.SlaveInfo slave_info = 3;</code>
+       */
+      public org.apache.mesos.Protos.SlaveInfoOrBuilder getSlaveInfoOrBuilder() {
+        return slaveInfo_;
+      }
+
+      // optional .mesos.ContainerID container_id = 4;
+      public static final int CONTAINER_ID_FIELD_NUMBER = 4;
+      private org.apache.mesos.Protos.ContainerID containerId_;
+      /**
+       * <code>optional .mesos.ContainerID container_id = 4;</code>
+       *
+       * <pre>
+       * Uniquely identifies the container of an executor run.
+       * </pre>
+       */
+      public boolean hasContainerId() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.ContainerID container_id = 4;</code>
+       *
+       * <pre>
+       * Uniquely identifies the container of an executor run.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.ContainerID getContainerId() {
+        return containerId_;
+      }
+      /**
+       * <code>optional .mesos.ContainerID container_id = 4;</code>
+       *
+       * <pre>
+       * Uniquely identifies the container of an executor run.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.ContainerIDOrBuilder getContainerIdOrBuilder() {
+        return containerId_;
+      }
+
+      private void initFields() {
+        executorInfo_ = org.apache.mesos.Protos.ExecutorInfo.getDefaultInstance();
+        frameworkInfo_ = org.apache.mesos.Protos.FrameworkInfo.getDefaultInstance();
+        slaveInfo_ = org.apache.mesos.Protos.SlaveInfo.getDefaultInstance();
+        containerId_ = org.apache.mesos.Protos.ContainerID.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasExecutorInfo()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!hasFrameworkInfo()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!hasSlaveInfo()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getExecutorInfo().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getFrameworkInfo().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getSlaveInfo().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (hasContainerId()) {
+          if (!getContainerId().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, executorInfo_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeMessage(2, frameworkInfo_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeMessage(3, slaveInfo_);
+        }
+        if (((bitField0_ & 0x00000008) == 0x00000008)) {
+          output.writeMessage(4, containerId_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, executorInfo_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(2, frameworkInfo_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(3, slaveInfo_);
+        }
+        if (((bitField0_ & 0x00000008) == 0x00000008)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(4, containerId_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.executor.Protos.Event.Subscribed parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Subscribed parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Subscribed parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Subscribed parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Subscribed parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Subscribed parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Subscribed parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Subscribed parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Subscribed parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Subscribed parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.executor.Protos.Event.Subscribed prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.executor.Event.Subscribed}
+       *
+       * <pre>
+       * First event received when the executor subscribes.
+       * The 'id' field in the 'framework_info' will be set.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.executor.Protos.Event.SubscribedOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Event_Subscribed_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Event_Subscribed_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.executor.Protos.Event.Subscribed.class, org.apache.mesos.executor.Protos.Event.Subscribed.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.executor.Protos.Event.Subscribed.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getExecutorInfoFieldBuilder();
+            getFrameworkInfoFieldBuilder();
+            getSlaveInfoFieldBuilder();
+            getContainerIdFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (executorInfoBuilder_ == null) {
+            executorInfo_ = org.apache.mesos.Protos.ExecutorInfo.getDefaultInstance();
+          } else {
+            executorInfoBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          if (frameworkInfoBuilder_ == null) {
+            frameworkInfo_ = org.apache.mesos.Protos.FrameworkInfo.getDefaultInstance();
+          } else {
+            frameworkInfoBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          if (slaveInfoBuilder_ == null) {
+            slaveInfo_ = org.apache.mesos.Protos.SlaveInfo.getDefaultInstance();
+          } else {
+            slaveInfoBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
+          if (containerIdBuilder_ == null) {
+            containerId_ = org.apache.mesos.Protos.ContainerID.getDefaultInstance();
+          } else {
+            containerIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000008);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Event_Subscribed_descriptor;
+        }
+
+        public org.apache.mesos.executor.Protos.Event.Subscribed getDefaultInstanceForType() {
+          return org.apache.mesos.executor.Protos.Event.Subscribed.getDefaultInstance();
+        }
+
+        public org.apache.mesos.executor.Protos.Event.Subscribed build() {
+          org.apache.mesos.executor.Protos.Event.Subscribed result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.executor.Protos.Event.Subscribed buildPartial() {
+          org.apache.mesos.executor.Protos.Event.Subscribed result = new org.apache.mesos.executor.Protos.Event.Subscribed(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (executorInfoBuilder_ == null) {
+            result.executorInfo_ = executorInfo_;
+          } else {
+            result.executorInfo_ = executorInfoBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          if (frameworkInfoBuilder_ == null) {
+            result.frameworkInfo_ = frameworkInfo_;
+          } else {
+            result.frameworkInfo_ = frameworkInfoBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          if (slaveInfoBuilder_ == null) {
+            result.slaveInfo_ = slaveInfo_;
+          } else {
+            result.slaveInfo_ = slaveInfoBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+            to_bitField0_ |= 0x00000008;
+          }
+          if (containerIdBuilder_ == null) {
+            result.containerId_ = containerId_;
+          } else {
+            result.containerId_ = containerIdBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.executor.Protos.Event.Subscribed) {
+            return mergeFrom((org.apache.mesos.executor.Protos.Event.Subscribed)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.executor.Protos.Event.Subscribed other) {
+          if (other == org.apache.mesos.executor.Protos.Event.Subscribed.getDefaultInstance()) return this;
+          if (other.hasExecutorInfo()) {
+            mergeExecutorInfo(other.getExecutorInfo());
+          }
+          if (other.hasFrameworkInfo()) {
+            mergeFrameworkInfo(other.getFrameworkInfo());
+          }
+          if (other.hasSlaveInfo()) {
+            mergeSlaveInfo(other.getSlaveInfo());
+          }
+          if (other.hasContainerId()) {
+            mergeContainerId(other.getContainerId());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasExecutorInfo()) {
+            
+            return false;
+          }
+          if (!hasFrameworkInfo()) {
+            
+            return false;
+          }
+          if (!hasSlaveInfo()) {
+            
+            return false;
+          }
+          if (!getExecutorInfo().isInitialized()) {
+            
+            return false;
+          }
+          if (!getFrameworkInfo().isInitialized()) {
+            
+            return false;
+          }
+          if (!getSlaveInfo().isInitialized()) {
+            
+            return false;
+          }
+          if (hasContainerId()) {
+            if (!getContainerId().isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.executor.Protos.Event.Subscribed parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.executor.Protos.Event.Subscribed) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required .mesos.ExecutorInfo executor_info = 1;
+        private org.apache.mesos.Protos.ExecutorInfo executorInfo_ = org.apache.mesos.Protos.ExecutorInfo.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.ExecutorInfo, org.apache.mesos.Protos.ExecutorInfo.Builder, org.apache.mesos.Protos.ExecutorInfoOrBuilder> executorInfoBuilder_;
+        /**
+         * <code>required .mesos.ExecutorInfo executor_info = 1;</code>
+         */
+        public boolean hasExecutorInfo() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.ExecutorInfo executor_info = 1;</code>
+         */
+        public org.apache.mesos.Protos.ExecutorInfo getExecutorInfo() {
+          if (executorInfoBuilder_ == null) {
+            return executorInfo_;
+          } else {
+            return executorInfoBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.ExecutorInfo executor_info = 1;</code>
+         */
+        public Builder setExecutorInfo(org.apache.mesos.Protos.ExecutorInfo value) {
+          if (executorInfoBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            executorInfo_ = value;
+            onChanged();
+          } else {
+            executorInfoBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.ExecutorInfo executor_info = 1;</code>
+         */
+        public Builder setExecutorInfo(
+            org.apache.mesos.Protos.ExecutorInfo.Builder builderForValue) {
+          if (executorInfoBuilder_ == null) {
+            executorInfo_ = builderForValue.build();
+            onChanged();
+          } else {
+            executorInfoBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.ExecutorInfo executor_info = 1;</code>
+         */
+        public Builder mergeExecutorInfo(org.apache.mesos.Protos.ExecutorInfo value) {
+          if (executorInfoBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                executorInfo_ != org.apache.mesos.Protos.ExecutorInfo.getDefaultInstance()) {
+              executorInfo_ =
+                org.apache.mesos.Protos.ExecutorInfo.newBuilder(executorInfo_).mergeFrom(value).buildPartial();
+            } else {
+              executorInfo_ = value;
+            }
+            onChanged();
+          } else {
+            executorInfoBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.ExecutorInfo executor_info = 1;</code>
+         */
+        public Builder clearExecutorInfo() {
+          if (executorInfoBuilder_ == null) {
+            executorInfo_ = org.apache.mesos.Protos.ExecutorInfo.getDefaultInstance();
+            onChanged();
+          } else {
+            executorInfoBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>required .mesos.ExecutorInfo executor_info = 1;</code>
+         */
+        public org.apache.mesos.Protos.ExecutorInfo.Builder getExecutorInfoBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getExecutorInfoFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.ExecutorInfo executor_info = 1;</code>
+         */
+        public org.apache.mesos.Protos.ExecutorInfoOrBuilder getExecutorInfoOrBuilder() {
+          if (executorInfoBuilder_ != null) {
+            return executorInfoBuilder_.getMessageOrBuilder();
+          } else {
+            return executorInfo_;
+          }
+        }
+        /**
+         * <code>required .mesos.ExecutorInfo executor_info = 1;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.ExecutorInfo, org.apache.mesos.Protos.ExecutorInfo.Builder, org.apache.mesos.Protos.ExecutorInfoOrBuilder> 
+            getExecutorInfoFieldBuilder() {
+          if (executorInfoBuilder_ == null) {
+            executorInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.ExecutorInfo, org.apache.mesos.Protos.ExecutorInfo.Builder, org.apache.mesos.Protos.ExecutorInfoOrBuilder>(
+                    executorInfo_,
+                    getParentForChildren(),
+                    isClean());
+            executorInfo_ = null;
+          }
+          return executorInfoBuilder_;
+        }
+
+        // required .mesos.FrameworkInfo framework_info = 2;
+        private org.apache.mesos.Protos.FrameworkInfo frameworkInfo_ = org.apache.mesos.Protos.FrameworkInfo.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.FrameworkInfo, org.apache.mesos.Protos.FrameworkInfo.Builder, org.apache.mesos.Protos.FrameworkInfoOrBuilder> frameworkInfoBuilder_;
+        /**
+         * <code>required .mesos.FrameworkInfo framework_info = 2;</code>
+         */
+        public boolean hasFrameworkInfo() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>required .mesos.FrameworkInfo framework_info = 2;</code>
+         */
+        public org.apache.mesos.Protos.FrameworkInfo getFrameworkInfo() {
+          if (frameworkInfoBuilder_ == null) {
+            return frameworkInfo_;
+          } else {
+            return frameworkInfoBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.FrameworkInfo framework_info = 2;</code>
+         */
+        public Builder setFrameworkInfo(org.apache.mesos.Protos.FrameworkInfo value) {
+          if (frameworkInfoBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            frameworkInfo_ = value;
+            onChanged();
+          } else {
+            frameworkInfoBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>required .mesos.FrameworkInfo framework_info = 2;</code>
+         */
+        public Builder setFrameworkInfo(
+            org.apache.mesos.Protos.FrameworkInfo.Builder builderForValue) {
+          if (frameworkInfoBuilder_ == null) {
+            frameworkInfo_ = builderForValue.build();
+            onChanged();
+          } else {
+            frameworkInfoBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>required .mesos.FrameworkInfo framework_info = 2;</code>
+         */
+        public Builder mergeFrameworkInfo(org.apache.mesos.Protos.FrameworkInfo value) {
+          if (frameworkInfoBuilder_ == null) {
+            if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                frameworkInfo_ != org.apache.mesos.Protos.FrameworkInfo.getDefaultInstance()) {
+              frameworkInfo_ =
+                org.apache.mesos.Protos.FrameworkInfo.newBuilder(frameworkInfo_).mergeFrom(value).buildPartial();
+            } else {
+              frameworkInfo_ = value;
+            }
+            onChanged();
+          } else {
+            frameworkInfoBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>required .mesos.FrameworkInfo framework_info = 2;</code>
+         */
+        public Builder clearFrameworkInfo() {
+          if (frameworkInfoBuilder_ == null) {
+            frameworkInfo_ = org.apache.mesos.Protos.FrameworkInfo.getDefaultInstance();
+            onChanged();
+          } else {
+            frameworkInfoBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+        /**
+         * <code>required .mesos.FrameworkInfo framework_info = 2;</code>
+         */
+        public org.apache.mesos.Protos.FrameworkInfo.Builder getFrameworkInfoBuilder() {
+          bitField0_ |= 0x00000002;
+          onChanged();
+          return getFrameworkInfoFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.FrameworkInfo framework_info = 2;</code>
+         */
+        public org.apache.mesos.Protos.FrameworkInfoOrBuilder getFrameworkInfoOrBuilder() {
+          if (frameworkInfoBuilder_ != null) {
+            return frameworkInfoBuilder_.getMessageOrBuilder();
+          } else {
+            return frameworkInfo_;
+          }
+        }
+        /**
+         * <code>required .mesos.FrameworkInfo framework_info = 2;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.FrameworkInfo, org.apache.mesos.Protos.FrameworkInfo.Builder, org.apache.mesos.Protos.FrameworkInfoOrBuilder> 
+            getFrameworkInfoFieldBuilder() {
+          if (frameworkInfoBuilder_ == null) {
+            frameworkInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.FrameworkInfo, org.apache.mesos.Protos.FrameworkInfo.Builder, org.apache.mesos.Protos.FrameworkInfoOrBuilder>(
+                    frameworkInfo_,
+                    getParentForChildren(),
+                    isClean());
+            frameworkInfo_ = null;
+          }
+          return frameworkInfoBuilder_;
+        }
+
+        // required .mesos.SlaveInfo slave_info = 3;
+        private org.apache.mesos.Protos.SlaveInfo slaveInfo_ = org.apache.mesos.Protos.SlaveInfo.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.SlaveInfo, org.apache.mesos.Protos.SlaveInfo.Builder, org.apache.mesos.Protos.SlaveInfoOrBuilder> slaveInfoBuilder_;
+        /**
+         * <code>required .mesos.SlaveInfo slave_info = 3;</code>
+         */
+        public boolean hasSlaveInfo() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>required .mesos.SlaveInfo slave_info = 3;</code>
+         */
+        public org.apache.mesos.Protos.SlaveInfo getSlaveInfo() {
+          if (slaveInfoBuilder_ == null) {
+            return slaveInfo_;
+          } else {
+            return slaveInfoBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.SlaveInfo slave_info = 3;</code>
+         */
+        public Builder setSlaveInfo(org.apache.mesos.Protos.SlaveInfo value) {
+          if (slaveInfoBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            slaveInfo_ = value;
+            onChanged();
+          } else {
+            slaveInfoBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>required .mesos.SlaveInfo slave_info = 3;</code>
+         */
+        public Builder setSlaveInfo(
+            org.apache.mesos.Protos.SlaveInfo.Builder builderForValue) {
+          if (slaveInfoBuilder_ == null) {
+            slaveInfo_ = builderForValue.build();
+            onChanged();
+          } else {
+            slaveInfoBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>required .mesos.SlaveInfo slave_info = 3;</code>
+         */
+        public Builder mergeSlaveInfo(org.apache.mesos.Protos.SlaveInfo value) {
+          if (slaveInfoBuilder_ == null) {
+            if (((bitField0_ & 0x00000004) == 0x00000004) &&
+                slaveInfo_ != org.apache.mesos.Protos.SlaveInfo.getDefaultInstance()) {
+              slaveInfo_ =
+                org.apache.mesos.Protos.SlaveInfo.newBuilder(slaveInfo_).mergeFrom(value).buildPartial();
+            } else {
+              slaveInfo_ = value;
+            }
+            onChanged();
+          } else {
+            slaveInfoBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>required .mesos.SlaveInfo slave_info = 3;</code>
+         */
+        public Builder clearSlaveInfo() {
+          if (slaveInfoBuilder_ == null) {
+            slaveInfo_ = org.apache.mesos.Protos.SlaveInfo.getDefaultInstance();
+            onChanged();
+          } else {
+            slaveInfoBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+        /**
+         * <code>required .mesos.SlaveInfo slave_info = 3;</code>
+         */
+        public org.apache.mesos.Protos.SlaveInfo.Builder getSlaveInfoBuilder() {
+          bitField0_ |= 0x00000004;
+          onChanged();
+          return getSlaveInfoFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.SlaveInfo slave_info = 3;</code>
+         */
+        public org.apache.mesos.Protos.SlaveInfoOrBuilder getSlaveInfoOrBuilder() {
+          if (slaveInfoBuilder_ != null) {
+            return slaveInfoBuilder_.getMessageOrBuilder();
+          } else {
+            return slaveInfo_;
+          }
+        }
+        /**
+         * <code>required .mesos.SlaveInfo slave_info = 3;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.SlaveInfo, org.apache.mesos.Protos.SlaveInfo.Builder, org.apache.mesos.Protos.SlaveInfoOrBuilder> 
+            getSlaveInfoFieldBuilder() {
+          if (slaveInfoBuilder_ == null) {
+            slaveInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.SlaveInfo, org.apache.mesos.Protos.SlaveInfo.Builder, org.apache.mesos.Protos.SlaveInfoOrBuilder>(
+                    slaveInfo_,
+                    getParentForChildren(),
+                    isClean());
+            slaveInfo_ = null;
+          }
+          return slaveInfoBuilder_;
+        }
+
+        // optional .mesos.ContainerID container_id = 4;
+        private org.apache.mesos.Protos.ContainerID containerId_ = org.apache.mesos.Protos.ContainerID.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.ContainerID, org.apache.mesos.Protos.ContainerID.Builder, org.apache.mesos.Protos.ContainerIDOrBuilder> containerIdBuilder_;
+        /**
+         * <code>optional .mesos.ContainerID container_id = 4;</code>
+         *
+         * <pre>
+         * Uniquely identifies the container of an executor run.
+         * </pre>
+         */
+        public boolean hasContainerId() {
+          return ((bitField0_ & 0x00000008) == 0x00000008);
+        }
+        /**
+         * <code>optional .mesos.ContainerID container_id = 4;</code>
+         *
+         * <pre>
+         * Uniquely identifies the container of an executor run.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.ContainerID getContainerId() {
+          if (containerIdBuilder_ == null) {
+            return containerId_;
+          } else {
+            return containerIdBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.ContainerID container_id = 4;</code>
+         *
+         * <pre>
+         * Uniquely identifies the container of an executor run.
+         * </pre>
+         */
+        public Builder setContainerId(org.apache.mesos.Protos.ContainerID value) {
+          if (containerIdBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            containerId_ = value;
+            onChanged();
+          } else {
+            containerIdBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000008;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.ContainerID container_id = 4;</code>
+         *
+         * <pre>
+         * Uniquely identifies the container of an executor run.
+         * </pre>
+         */
+        public Builder setContainerId(
+            org.apache.mesos.Protos.ContainerID.Builder builderForValue) {
+          if (containerIdBuilder_ == null) {
+            containerId_ = builderForValue.build();
+            onChanged();
+          } else {
+            containerIdBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000008;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.ContainerID container_id = 4;</code>
+         *
+         * <pre>
+         * Uniquely identifies the container of an executor run.
+         * </pre>
+         */
+        public Builder mergeContainerId(org.apache.mesos.Protos.ContainerID value) {
+          if (containerIdBuilder_ == null) {
+            if (((bitField0_ & 0x00000008) == 0x00000008) &&
+                containerId_ != org.apache.mesos.Protos.ContainerID.getDefaultInstance()) {
+              containerId_ =
+                org.apache.mesos.Protos.ContainerID.newBuilder(containerId_).mergeFrom(value).buildPartial();
+            } else {
+              containerId_ = value;
+            }
+            onChanged();
+          } else {
+            containerIdBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000008;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.ContainerID container_id = 4;</code>
+         *
+         * <pre>
+         * Uniquely identifies the container of an executor run.
+         * </pre>
+         */
+        public Builder clearContainerId() {
+          if (containerIdBuilder_ == null) {
+            containerId_ = org.apache.mesos.Protos.ContainerID.getDefaultInstance();
+            onChanged();
+          } else {
+            containerIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000008);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.ContainerID container_id = 4;</code>
+         *
+         * <pre>
+         * Uniquely identifies the container of an executor run.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.ContainerID.Builder getContainerIdBuilder() {
+          bitField0_ |= 0x00000008;
+          onChanged();
+          return getContainerIdFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.ContainerID container_id = 4;</code>
+         *
+         * <pre>
+         * Uniquely identifies the container of an executor run.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.ContainerIDOrBuilder getContainerIdOrBuilder() {
+          if (containerIdBuilder_ != null) {
+            return containerIdBuilder_.getMessageOrBuilder();
+          } else {
+            return containerId_;
+          }
+        }
+        /**
+         * <code>optional .mesos.ContainerID container_id = 4;</code>
+         *
+         * <pre>
+         * Uniquely identifies the container of an executor run.
+         * </pre>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.ContainerID, org.apache.mesos.Protos.ContainerID.Builder, org.apache.mesos.Protos.ContainerIDOrBuilder> 
+            getContainerIdFieldBuilder() {
+          if (containerIdBuilder_ == null) {
+            containerIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.ContainerID, org.apache.mesos.Protos.ContainerID.Builder, org.apache.mesos.Protos.ContainerIDOrBuilder>(
+                    containerId_,
+                    getParentForChildren(),
+                    isClean());
+            containerId_ = null;
+          }
+          return containerIdBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.executor.Event.Subscribed)
+      }
+
+      static {
+        defaultInstance = new Subscribed(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.executor.Event.Subscribed)
+    }
+
+    public interface LaunchOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required .mesos.TaskInfo task = 1;
+      /**
+       * <code>required .mesos.TaskInfo task = 1;</code>
+       */
+      boolean hasTask();
+      /**
+       * <code>required .mesos.TaskInfo task = 1;</code>
+       */
+      org.apache.mesos.Protos.TaskInfo getTask();
+      /**
+       * <code>required .mesos.TaskInfo task = 1;</code>
+       */
+      org.apache.mesos.Protos.TaskInfoOrBuilder getTaskOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.executor.Event.Launch}
+     *
+     * <pre>
+     * Received when the framework attempts to launch a task. Once
+     * the task is successfuly launched, the executor must respond with
+     * a TASK_RUNNING update (See TaskState in mesos.proto).
+     * </pre>
+     */
+    public static final class Launch extends
+        com.google.protobuf.GeneratedMessage
+        implements LaunchOrBuilder {
+      // Use Launch.newBuilder() to construct.
+      private Launch(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Launch(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Launch defaultInstance;
+      public static Launch getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Launch getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Launch(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.Protos.TaskInfo.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = task_.toBuilder();
+                }
+                task_ = input.readMessage(org.apache.mesos.Protos.TaskInfo.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(task_);
+                  task_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Event_Launch_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Event_Launch_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.executor.Protos.Event.Launch.class, org.apache.mesos.executor.Protos.Event.Launch.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Launch> PARSER =
+          new com.google.protobuf.AbstractParser<Launch>() {
+        public Launch parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Launch(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Launch> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required .mesos.TaskInfo task = 1;
+      public static final int TASK_FIELD_NUMBER = 1;
+      private org.apache.mesos.Protos.TaskInfo task_;
+      /**
+       * <code>required .mesos.TaskInfo task = 1;</code>
+       */
+      public boolean hasTask() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.TaskInfo task = 1;</code>
+       */
+      public org.apache.mesos.Protos.TaskInfo getTask() {
+        return task_;
+      }
+      /**
+       * <code>required .mesos.TaskInfo task = 1;</code>
+       */
+      public org.apache.mesos.Protos.TaskInfoOrBuilder getTaskOrBuilder() {
+        return task_;
+      }
+
+      private void initFields() {
+        task_ = org.apache.mesos.Protos.TaskInfo.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasTask()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getTask().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, task_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, task_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.executor.Protos.Event.Launch parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Launch parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Launch parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Launch parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Launch parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Launch parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Launch parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Launch parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Launch parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Launch parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.executor.Protos.Event.Launch prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.executor.Event.Launch}
+       *
+       * <pre>
+       * Received when the framework attempts to launch a task. Once
+       * the task is successfuly launched, the executor must respond with
+       * a TASK_RUNNING update (See TaskState in mesos.proto).
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.executor.Protos.Event.LaunchOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Event_Launch_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Event_Launch_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.executor.Protos.Event.Launch.class, org.apache.mesos.executor.Protos.Event.Launch.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.executor.Protos.Event.Launch.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getTaskFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (taskBuilder_ == null) {
+            task_ = org.apache.mesos.Protos.TaskInfo.getDefaultInstance();
+          } else {
+            taskBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Event_Launch_descriptor;
+        }
+
+        public org.apache.mesos.executor.Protos.Event.Launch getDefaultInstanceForType() {
+          return org.apache.mesos.executor.Protos.Event.Launch.getDefaultInstance();
+        }
+
+        public org.apache.mesos.executor.Protos.Event.Launch build() {
+          org.apache.mesos.executor.Protos.Event.Launch result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.executor.Protos.Event.Launch buildPartial() {
+          org.apache.mesos.executor.Protos.Event.Launch result = new org.apache.mesos.executor.Protos.Event.Launch(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (taskBuilder_ == null) {
+            result.task_ = task_;
+          } else {
+            result.task_ = taskBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.executor.Protos.Event.Launch) {
+            return mergeFrom((org.apache.mesos.executor.Protos.Event.Launch)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.executor.Protos.Event.Launch other) {
+          if (other == org.apache.mesos.executor.Protos.Event.Launch.getDefaultInstance()) return this;
+          if (other.hasTask()) {
+            mergeTask(other.getTask());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasTask()) {
+            
+            return false;
+          }
+          if (!getTask().isInitialized()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.executor.Protos.Event.Launch parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.executor.Protos.Event.Launch) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required .mesos.TaskInfo task = 1;
+        private org.apache.mesos.Protos.TaskInfo task_ = org.apache.mesos.Protos.TaskInfo.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.TaskInfo, org.apache.mesos.Protos.TaskInfo.Builder, org.apache.mesos.Protos.TaskInfoOrBuilder> taskBuilder_;
+        /**
+         * <code>required .mesos.TaskInfo task = 1;</code>
+         */
+        public boolean hasTask() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.TaskInfo task = 1;</code>
+         */
+        public org.apache.mesos.Protos.TaskInfo getTask() {
+          if (taskBuilder_ == null) {
+            return task_;
+          } else {
+            return taskBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.TaskInfo task = 1;</code>
+         */
+        public Builder setTask(org.apache.mesos.Protos.TaskInfo value) {
+          if (taskBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            task_ = value;
+            onChanged();
+          } else {
+            taskBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.TaskInfo task = 1;</code>
+         */
+        public Builder setTask(
+            org.apache.mesos.Protos.TaskInfo.Builder builderForValue) {
+          if (taskBuilder_ == null) {
+            task_ = builderForValue.build();
+            onChanged();
+          } else {
+            taskBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.TaskInfo task = 1;</code>
+         */
+        public Builder mergeTask(org.apache.mesos.Protos.TaskInfo value) {
+          if (taskBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                task_ != org.apache.mesos.Protos.TaskInfo.getDefaultInstance()) {
+              task_ =
+                org.apache.mesos.Protos.TaskInfo.newBuilder(task_).mergeFrom(value).buildPartial();
+            } else {
+              task_ = value;
+            }
+            onChanged();
+          } else {
+            taskBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.TaskInfo task = 1;</code>
+         */
+        public Builder clearTask() {
+          if (taskBuilder_ == null) {
+            task_ = org.apache.mesos.Protos.TaskInfo.getDefaultInstance();
+            onChanged();
+          } else {
+            taskBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>required .mesos.TaskInfo task = 1;</code>
+         */
+        public org.apache.mesos.Protos.TaskInfo.Builder getTaskBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getTaskFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.TaskInfo task = 1;</code>
+         */
+        public org.apache.mesos.Protos.TaskInfoOrBuilder getTaskOrBuilder() {
+          if (taskBuilder_ != null) {
+            return taskBuilder_.getMessageOrBuilder();
+          } else {
+            return task_;
+          }
+        }
+        /**
+         * <code>required .mesos.TaskInfo task = 1;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.TaskInfo, org.apache.mesos.Protos.TaskInfo.Builder, org.apache.mesos.Protos.TaskInfoOrBuilder> 
+            getTaskFieldBuilder() {
+          if (taskBuilder_ == null) {
+            taskBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.TaskInfo, org.apache.mesos.Protos.TaskInfo.Builder, org.apache.mesos.Protos.TaskInfoOrBuilder>(
+                    task_,
+                    getParentForChildren(),
+                    isClean());
+            task_ = null;
+          }
+          return taskBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.executor.Event.Launch)
+      }
+
+      static {
+        defaultInstance = new Launch(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.executor.Event.Launch)
+    }
+
+    public interface LaunchGroupOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required .mesos.TaskGroupInfo task_group = 1;
+      /**
+       * <code>required .mesos.TaskGroupInfo task_group = 1;</code>
+       */
+      boolean hasTaskGroup();
+      /**
+       * <code>required .mesos.TaskGroupInfo task_group = 1;</code>
+       */
+      org.apache.mesos.Protos.TaskGroupInfo getTaskGroup();
+      /**
+       * <code>required .mesos.TaskGroupInfo task_group = 1;</code>
+       */
+      org.apache.mesos.Protos.TaskGroupInfoOrBuilder getTaskGroupOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.executor.Event.LaunchGroup}
+     *
+     * <pre>
+     * Received when the framework attempts to launch a group of tasks atomically.
+     * Similar to `Launch` above the executor must send TASK_RUNNING updates for
+     * tasks that are successfully launched.
+     * </pre>
+     */
+    public static final class LaunchGroup extends
+        com.google.protobuf.GeneratedMessage
+        implements LaunchGroupOrBuilder {
+      // Use LaunchGroup.newBuilder() to construct.
+      private LaunchGroup(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private LaunchGroup(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final LaunchGroup defaultInstance;
+      public static LaunchGroup getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public LaunchGroup getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private LaunchGroup(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.Protos.TaskGroupInfo.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = taskGroup_.toBuilder();
+                }
+                taskGroup_ = input.readMessage(org.apache.mesos.Protos.TaskGroupInfo.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(taskGroup_);
+                  taskGroup_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Event_LaunchGroup_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Event_LaunchGroup_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.executor.Protos.Event.LaunchGroup.class, org.apache.mesos.executor.Protos.Event.LaunchGroup.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<LaunchGroup> PARSER =
+          new com.google.protobuf.AbstractParser<LaunchGroup>() {
+        public LaunchGroup parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new LaunchGroup(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<LaunchGroup> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required .mesos.TaskGroupInfo task_group = 1;
+      public static final int TASK_GROUP_FIELD_NUMBER = 1;
+      private org.apache.mesos.Protos.TaskGroupInfo taskGroup_;
+      /**
+       * <code>required .mesos.TaskGroupInfo task_group = 1;</code>
+       */
+      public boolean hasTaskGroup() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.TaskGroupInfo task_group = 1;</code>
+       */
+      public org.apache.mesos.Protos.TaskGroupInfo getTaskGroup() {
+        return taskGroup_;
+      }
+      /**
+       * <code>required .mesos.TaskGroupInfo task_group = 1;</code>
+       */
+      public org.apache.mesos.Protos.TaskGroupInfoOrBuilder getTaskGroupOrBuilder() {
+        return taskGroup_;
+      }
+
+      private void initFields() {
+        taskGroup_ = org.apache.mesos.Protos.TaskGroupInfo.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasTaskGroup()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getTaskGroup().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, taskGroup_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, taskGroup_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.executor.Protos.Event.LaunchGroup parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.executor.Protos.Event.LaunchGroup parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.executor.Protos.Event.LaunchGroup parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.executor.Protos.Event.LaunchGroup parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.executor.Protos.Event.LaunchGroup parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.executor.Protos.Event.LaunchGroup parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.executor.Protos.Event.LaunchGroup parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.executor.Protos.Event.LaunchGroup parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.executor.Protos.Event.LaunchGroup parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.executor.Protos.Event.LaunchGroup parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.executor.Protos.Event.LaunchGroup prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.executor.Event.LaunchGroup}
+       *
+       * <pre>
+       * Received when the framework attempts to launch a group of tasks atomically.
+       * Similar to `Launch` above the executor must send TASK_RUNNING updates for
+       * tasks that are successfully launched.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.executor.Protos.Event.LaunchGroupOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Event_LaunchGroup_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Event_LaunchGroup_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.executor.Protos.Event.LaunchGroup.class, org.apache.mesos.executor.Protos.Event.LaunchGroup.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.executor.Protos.Event.LaunchGroup.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getTaskGroupFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (taskGroupBuilder_ == null) {
+            taskGroup_ = org.apache.mesos.Protos.TaskGroupInfo.getDefaultInstance();
+          } else {
+            taskGroupBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Event_LaunchGroup_descriptor;
+        }
+
+        public org.apache.mesos.executor.Protos.Event.LaunchGroup getDefaultInstanceForType() {
+          return org.apache.mesos.executor.Protos.Event.LaunchGroup.getDefaultInstance();
+        }
+
+        public org.apache.mesos.executor.Protos.Event.LaunchGroup build() {
+          org.apache.mesos.executor.Protos.Event.LaunchGroup result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.executor.Protos.Event.LaunchGroup buildPartial() {
+          org.apache.mesos.executor.Protos.Event.LaunchGroup result = new org.apache.mesos.executor.Protos.Event.LaunchGroup(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (taskGroupBuilder_ == null) {
+            result.taskGroup_ = taskGroup_;
+          } else {
+            result.taskGroup_ = taskGroupBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.executor.Protos.Event.LaunchGroup) {
+            return mergeFrom((org.apache.mesos.executor.Protos.Event.LaunchGroup)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.executor.Protos.Event.LaunchGroup other) {
+          if (other == org.apache.mesos.executor.Protos.Event.LaunchGroup.getDefaultInstance()) return this;
+          if (other.hasTaskGroup()) {
+            mergeTaskGroup(other.getTaskGroup());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasTaskGroup()) {
+            
+            return false;
+          }
+          if (!getTaskGroup().isInitialized()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.executor.Protos.Event.LaunchGroup parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.executor.Protos.Event.LaunchGroup) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required .mesos.TaskGroupInfo task_group = 1;
+        private org.apache.mesos.Protos.TaskGroupInfo taskGroup_ = org.apache.mesos.Protos.TaskGroupInfo.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.TaskGroupInfo, org.apache.mesos.Protos.TaskGroupInfo.Builder, org.apache.mesos.Protos.TaskGroupInfoOrBuilder> taskGroupBuilder_;
+        /**
+         * <code>required .mesos.TaskGroupInfo task_group = 1;</code>
+         */
+        public boolean hasTaskGroup() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.TaskGroupInfo task_group = 1;</code>
+         */
+        public org.apache.mesos.Protos.TaskGroupInfo getTaskGroup() {
+          if (taskGroupBuilder_ == null) {
+            return taskGroup_;
+          } else {
+            return taskGroupBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.TaskGroupInfo task_group = 1;</code>
+         */
+        public Builder setTaskGroup(org.apache.mesos.Protos.TaskGroupInfo value) {
+          if (taskGroupBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            taskGroup_ = value;
+            onChanged();
+          } else {
+            taskGroupBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.TaskGroupInfo task_group = 1;</code>
+         */
+        public Builder setTaskGroup(
+            org.apache.mesos.Protos.TaskGroupInfo.Builder builderForValue) {
+          if (taskGroupBuilder_ == null) {
+            taskGroup_ = builderForValue.build();
+            onChanged();
+          } else {
+            taskGroupBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.TaskGroupInfo task_group = 1;</code>
+         */
+        public Builder mergeTaskGroup(org.apache.mesos.Protos.TaskGroupInfo value) {
+          if (taskGroupBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                taskGroup_ != org.apache.mesos.Protos.TaskGroupInfo.getDefaultInstance()) {
+              taskGroup_ =
+                org.apache.mesos.Protos.TaskGroupInfo.newBuilder(taskGroup_).mergeFrom(value).buildPartial();
+            } else {
+              taskGroup_ = value;
+            }
+            onChanged();
+          } else {
+            taskGroupBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.TaskGroupInfo task_group = 1;</code>
+         */
+        public Builder clearTaskGroup() {
+          if (taskGroupBuilder_ == null) {
+            taskGroup_ = org.apache.mesos.Protos.TaskGroupInfo.getDefaultInstance();
+            onChanged();
+          } else {
+            taskGroupBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>required .mesos.TaskGroupInfo task_group = 1;</code>
+         */
+        public org.apache.mesos.Protos.TaskGroupInfo.Builder getTaskGroupBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getTaskGroupFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.TaskGroupInfo task_group = 1;</code>
+         */
+        public org.apache.mesos.Protos.TaskGroupInfoOrBuilder getTaskGroupOrBuilder() {
+          if (taskGroupBuilder_ != null) {
+            return taskGroupBuilder_.getMessageOrBuilder();
+          } else {
+            return taskGroup_;
+          }
+        }
+        /**
+         * <code>required .mesos.TaskGroupInfo task_group = 1;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.TaskGroupInfo, org.apache.mesos.Protos.TaskGroupInfo.Builder, org.apache.mesos.Protos.TaskGroupInfoOrBuilder> 
+            getTaskGroupFieldBuilder() {
+          if (taskGroupBuilder_ == null) {
+            taskGroupBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.TaskGroupInfo, org.apache.mesos.Protos.TaskGroupInfo.Builder, org.apache.mesos.Protos.TaskGroupInfoOrBuilder>(
+                    taskGroup_,
+                    getParentForChildren(),
+                    isClean());
+            taskGroup_ = null;
+          }
+          return taskGroupBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.executor.Event.LaunchGroup)
+      }
+
+      static {
+        defaultInstance = new LaunchGroup(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.executor.Event.LaunchGroup)
+    }
+
+    public interface KillOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required .mesos.TaskID task_id = 1;
+      /**
+       * <code>required .mesos.TaskID task_id = 1;</code>
+       */
+      boolean hasTaskId();
+      /**
+       * <code>required .mesos.TaskID task_id = 1;</code>
+       */
+      org.apache.mesos.Protos.TaskID getTaskId();
+      /**
+       * <code>required .mesos.TaskID task_id = 1;</code>
+       */
+      org.apache.mesos.Protos.TaskIDOrBuilder getTaskIdOrBuilder();
+
+      // optional .mesos.KillPolicy kill_policy = 2;
+      /**
+       * <code>optional .mesos.KillPolicy kill_policy = 2;</code>
+       *
+       * <pre>
+       * If set, overrides any previously specified kill policy for this task.
+       * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+       * </pre>
+       */
+      boolean hasKillPolicy();
+      /**
+       * <code>optional .mesos.KillPolicy kill_policy = 2;</code>
+       *
+       * <pre>
+       * If set, overrides any previously specified kill policy for this task.
+       * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+       * </pre>
+       */
+      org.apache.mesos.Protos.KillPolicy getKillPolicy();
+      /**
+       * <code>optional .mesos.KillPolicy kill_policy = 2;</code>
+       *
+       * <pre>
+       * If set, overrides any previously specified kill policy for this task.
+       * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+       * </pre>
+       */
+      org.apache.mesos.Protos.KillPolicyOrBuilder getKillPolicyOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.executor.Event.Kill}
+     *
+     * <pre>
+     * Received when the scheduler wants to kill a specific task. Once
+     * the task is terminated, the executor should send a TASK_KILLED
+     * (or TASK_FAILED) update. The terminal update is necessary so
+     * Mesos can release the resources associated with the task.
+     * </pre>
+     */
+    public static final class Kill extends
+        com.google.protobuf.GeneratedMessage
+        implements KillOrBuilder {
+      // Use Kill.newBuilder() to construct.
+      private Kill(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Kill(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Kill defaultInstance;
+      public static Kill getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Kill getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Kill(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.Protos.TaskID.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = taskId_.toBuilder();
+                }
+                taskId_ = input.readMessage(org.apache.mesos.Protos.TaskID.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(taskId_);
+                  taskId_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+              case 18: {
+                org.apache.mesos.Protos.KillPolicy.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                  subBuilder = killPolicy_.toBuilder();
+                }
+                killPolicy_ = input.readMessage(org.apache.mesos.Protos.KillPolicy.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(killPolicy_);
+                  killPolicy_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000002;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Event_Kill_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Event_Kill_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.executor.Protos.Event.Kill.class, org.apache.mesos.executor.Protos.Event.Kill.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Kill> PARSER =
+          new com.google.protobuf.AbstractParser<Kill>() {
+        public Kill parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Kill(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Kill> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required .mesos.TaskID task_id = 1;
+      public static final int TASK_ID_FIELD_NUMBER = 1;
+      private org.apache.mesos.Protos.TaskID taskId_;
+      /**
+       * <code>required .mesos.TaskID task_id = 1;</code>
+       */
+      public boolean hasTaskId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.TaskID task_id = 1;</code>
+       */
+      public org.apache.mesos.Protos.TaskID getTaskId() {
+        return taskId_;
+      }
+      /**
+       * <code>required .mesos.TaskID task_id = 1;</code>
+       */
+      public org.apache.mesos.Protos.TaskIDOrBuilder getTaskIdOrBuilder() {
+        return taskId_;
+      }
+
+      // optional .mesos.KillPolicy kill_policy = 2;
+      public static final int KILL_POLICY_FIELD_NUMBER = 2;
+      private org.apache.mesos.Protos.KillPolicy killPolicy_;
+      /**
+       * <code>optional .mesos.KillPolicy kill_policy = 2;</code>
+       *
+       * <pre>
+       * If set, overrides any previously specified kill policy for this task.
+       * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+       * </pre>
+       */
+      public boolean hasKillPolicy() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.KillPolicy kill_policy = 2;</code>
+       *
+       * <pre>
+       * If set, overrides any previously specified kill policy for this task.
+       * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.KillPolicy getKillPolicy() {
+        return killPolicy_;
+      }
+      /**
+       * <code>optional .mesos.KillPolicy kill_policy = 2;</code>
+       *
+       * <pre>
+       * If set, overrides any previously specified kill policy for this task.
+       * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.KillPolicyOrBuilder getKillPolicyOrBuilder() {
+        return killPolicy_;
+      }
+
+      private void initFields() {
+        taskId_ = org.apache.mesos.Protos.TaskID.getDefaultInstance();
+        killPolicy_ = org.apache.mesos.Protos.KillPolicy.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasTaskId()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getTaskId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (hasKillPolicy()) {
+          if (!getKillPolicy().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, taskId_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeMessage(2, killPolicy_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, taskId_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(2, killPolicy_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.executor.Protos.Event.Kill parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Kill parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Kill parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Kill parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Kill parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Kill parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Kill parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Kill parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Kill parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Kill parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.executor.Protos.Event.Kill prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.executor.Event.Kill}
+       *
+       * <pre>
+       * Received when the scheduler wants to kill a specific task. Once
+       * the task is terminated, the executor should send a TASK_KILLED
+       * (or TASK_FAILED) update. The terminal update is necessary so
+       * Mesos can release the resources associated with the task.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.executor.Protos.Event.KillOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Event_Kill_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Event_Kill_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.executor.Protos.Event.Kill.class, org.apache.mesos.executor.Protos.Event.Kill.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.executor.Protos.Event.Kill.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getTaskIdFieldBuilder();
+            getKillPolicyFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (taskIdBuilder_ == null) {
+            taskId_ = org.apache.mesos.Protos.TaskID.getDefaultInstance();
+          } else {
+            taskIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          if (killPolicyBuilder_ == null) {
+            killPolicy_ = org.apache.mesos.Protos.KillPolicy.getDefaultInstance();
+          } else {
+            killPolicyBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Event_Kill_descriptor;
+        }
+
+        public org.apache.mesos.executor.Protos.Event.Kill getDefaultInstanceForType() {
+          return org.apache.mesos.executor.Protos.Event.Kill.getDefaultInstance();
+        }
+
+        public org.apache.mesos.executor.Protos.Event.Kill build() {
+          org.apache.mesos.executor.Protos.Event.Kill result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.executor.Protos.Event.Kill buildPartial() {
+          org.apache.mesos.executor.Protos.Event.Kill result = new org.apache.mesos.executor.Protos.Event.Kill(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (taskIdBuilder_ == null) {
+            result.taskId_ = taskId_;
+          } else {
+            result.taskId_ = taskIdBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          if (killPolicyBuilder_ == null) {
+            result.killPolicy_ = killPolicy_;
+          } else {
+            result.killPolicy_ = killPolicyBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.executor.Protos.Event.Kill) {
+            return mergeFrom((org.apache.mesos.executor.Protos.Event.Kill)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.executor.Protos.Event.Kill other) {
+          if (other == org.apache.mesos.executor.Protos.Event.Kill.getDefaultInstance()) return this;
+          if (other.hasTaskId()) {
+            mergeTaskId(other.getTaskId());
+          }
+          if (other.hasKillPolicy()) {
+            mergeKillPolicy(other.getKillPolicy());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasTaskId()) {
+            
+            return false;
+          }
+          if (!getTaskId().isInitialized()) {
+            
+            return false;
+          }
+          if (hasKillPolicy()) {
+            if (!getKillPolicy().isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.executor.Protos.Event.Kill parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.executor.Protos.Event.Kill) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required .mesos.TaskID task_id = 1;
+        private org.apache.mesos.Protos.TaskID taskId_ = org.apache.mesos.Protos.TaskID.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.TaskID, org.apache.mesos.Protos.TaskID.Builder, org.apache.mesos.Protos.TaskIDOrBuilder> taskIdBuilder_;
+        /**
+         * <code>required .mesos.TaskID task_id = 1;</code>
+         */
+        public boolean hasTaskId() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.TaskID task_id = 1;</code>
+         */
+        public org.apache.mesos.Protos.TaskID getTaskId() {
+          if (taskIdBuilder_ == null) {
+            return taskId_;
+          } else {
+            return taskIdBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.TaskID task_id = 1;</code>
+         */
+        public Builder setTaskId(org.apache.mesos.Protos.TaskID value) {
+          if (taskIdBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            taskId_ = value;
+            onChanged();
+          } else {
+            taskIdBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.TaskID task_id = 1;</code>
+         */
+        public Builder setTaskId(
+            org.apache.mesos.Protos.TaskID.Builder builderForValue) {
+          if (taskIdBuilder_ == null) {
+            taskId_ = builderForValue.build();
+            onChanged();
+          } else {
+            taskIdBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.TaskID task_id = 1;</code>
+         */
+        public Builder mergeTaskId(org.apache.mesos.Protos.TaskID value) {
+          if (taskIdBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                taskId_ != org.apache.mesos.Protos.TaskID.getDefaultInstance()) {
+              taskId_ =
+                org.apache.mesos.Protos.TaskID.newBuilder(taskId_).mergeFrom(value).buildPartial();
+            } else {
+              taskId_ = value;
+            }
+            onChanged();
+          } else {
+            taskIdBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.TaskID task_id = 1;</code>
+         */
+        public Builder clearTaskId() {
+          if (taskIdBuilder_ == null) {
+            taskId_ = org.apache.mesos.Protos.TaskID.getDefaultInstance();
+            onChanged();
+          } else {
+            taskIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>required .mesos.TaskID task_id = 1;</code>
+         */
+        public org.apache.mesos.Protos.TaskID.Builder getTaskIdBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getTaskIdFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.TaskID task_id = 1;</code>
+         */
+        public org.apache.mesos.Protos.TaskIDOrBuilder getTaskIdOrBuilder() {
+          if (taskIdBuilder_ != null) {
+            return taskIdBuilder_.getMessageOrBuilder();
+          } else {
+            return taskId_;
+          }
+        }
+        /**
+         * <code>required .mesos.TaskID task_id = 1;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.TaskID, org.apache.mesos.Protos.TaskID.Builder, org.apache.mesos.Protos.TaskIDOrBuilder> 
+            getTaskIdFieldBuilder() {
+          if (taskIdBuilder_ == null) {
+            taskIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.TaskID, org.apache.mesos.Protos.TaskID.Builder, org.apache.mesos.Protos.TaskIDOrBuilder>(
+                    taskId_,
+                    getParentForChildren(),
+                    isClean());
+            taskId_ = null;
+          }
+          return taskIdBuilder_;
+        }
+
+        // optional .mesos.KillPolicy kill_policy = 2;
+        private org.apache.mesos.Protos.KillPolicy killPolicy_ = org.apache.mesos.Protos.KillPolicy.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.KillPolicy, org.apache.mesos.Protos.KillPolicy.Builder, org.apache.mesos.Protos.KillPolicyOrBuilder> killPolicyBuilder_;
+        /**
+         * <code>optional .mesos.KillPolicy kill_policy = 2;</code>
+         *
+         * <pre>
+         * If set, overrides any previously specified kill policy for this task.
+         * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+         * </pre>
+         */
+        public boolean hasKillPolicy() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional .mesos.KillPolicy kill_policy = 2;</code>
+         *
+         * <pre>
+         * If set, overrides any previously specified kill policy for this task.
+         * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.KillPolicy getKillPolicy() {
+          if (killPolicyBuilder_ == null) {
+            return killPolicy_;
+          } else {
+            return killPolicyBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.KillPolicy kill_policy = 2;</code>
+         *
+         * <pre>
+         * If set, overrides any previously specified kill policy for this task.
+         * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+         * </pre>
+         */
+        public Builder setKillPolicy(org.apache.mesos.Protos.KillPolicy value) {
+          if (killPolicyBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            killPolicy_ = value;
+            onChanged();
+          } else {
+            killPolicyBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.KillPolicy kill_policy = 2;</code>
+         *
+         * <pre>
+         * If set, overrides any previously specified kill policy for this task.
+         * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+         * </pre>
+         */
+        public Builder setKillPolicy(
+            org.apache.mesos.Protos.KillPolicy.Builder builderForValue) {
+          if (killPolicyBuilder_ == null) {
+            killPolicy_ = builderForValue.build();
+            onChanged();
+          } else {
+            killPolicyBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.KillPolicy kill_policy = 2;</code>
+         *
+         * <pre>
+         * If set, overrides any previously specified kill policy for this task.
+         * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+         * </pre>
+         */
+        public Builder mergeKillPolicy(org.apache.mesos.Protos.KillPolicy value) {
+          if (killPolicyBuilder_ == null) {
+            if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                killPolicy_ != org.apache.mesos.Protos.KillPolicy.getDefaultInstance()) {
+              killPolicy_ =
+                org.apache.mesos.Protos.KillPolicy.newBuilder(killPolicy_).mergeFrom(value).buildPartial();
+            } else {
+              killPolicy_ = value;
+            }
+            onChanged();
+          } else {
+            killPolicyBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.KillPolicy kill_policy = 2;</code>
+         *
+         * <pre>
+         * If set, overrides any previously specified kill policy for this task.
+         * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+         * </pre>
+         */
+        public Builder clearKillPolicy() {
+          if (killPolicyBuilder_ == null) {
+            killPolicy_ = org.apache.mesos.Protos.KillPolicy.getDefaultInstance();
+            onChanged();
+          } else {
+            killPolicyBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.KillPolicy kill_policy = 2;</code>
+         *
+         * <pre>
+         * If set, overrides any previously specified kill policy for this task.
+         * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.KillPolicy.Builder getKillPolicyBuilder() {
+          bitField0_ |= 0x00000002;
+          onChanged();
+          return getKillPolicyFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.KillPolicy kill_policy = 2;</code>
+         *
+         * <pre>
+         * If set, overrides any previously specified kill policy for this task.
+         * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.KillPolicyOrBuilder getKillPolicyOrBuilder() {
+          if (killPolicyBuilder_ != null) {
+            return killPolicyBuilder_.getMessageOrBuilder();
+          } else {
+            return killPolicy_;
+          }
+        }
+        /**
+         * <code>optional .mesos.KillPolicy kill_policy = 2;</code>
+         *
+         * <pre>
+         * If set, overrides any previously specified kill policy for this task.
+         * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+         * </pre>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.KillPolicy, org.apache.mesos.Protos.KillPolicy.Builder, org.apache.mesos.Protos.KillPolicyOrBuilder> 
+            getKillPolicyFieldBuilder() {
+          if (killPolicyBuilder_ == null) {
+            killPolicyBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.KillPolicy, org.apache.mesos.Protos.KillPolicy.Builder, org.apache.mesos.Protos.KillPolicyOrBuilder>(
+                    killPolicy_,
+                    getParentForChildren(),
+                    isClean());
+            killPolicy_ = null;
+          }
+          return killPolicyBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.executor.Event.Kill)
+      }
+
+      static {
+        defaultInstance = new Kill(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.executor.Event.Kill)
+    }
+
+    public interface AcknowledgedOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required .mesos.TaskID task_id = 1;
+      /**
+       * <code>required .mesos.TaskID task_id = 1;</code>
+       */
+      boolean hasTaskId();
+      /**
+       * <code>required .mesos.TaskID task_id = 1;</code>
+       */
+      org.apache.mesos.Protos.TaskID getTaskId();
+      /**
+       * <code>required .mesos.TaskID task_id = 1;</code>
+       */
+      org.apache.mesos.Protos.TaskIDOrBuilder getTaskIdOrBuilder();
+
+      // required bytes uuid = 2;
+      /**
+       * <code>required bytes uuid = 2;</code>
+       */
+      boolean hasUuid();
+      /**
+       * <code>required bytes uuid = 2;</code>
+       */
+      com.google.protobuf.ByteString getUuid();
+    }
+    /**
+     * Protobuf type {@code mesos.executor.Event.Acknowledged}
+     *
+     * <pre>
+     * Received when the slave acknowledges the receipt of status
+     * update. Schedulers are responsible for explicitly acknowledging
+     * the receipt of status updates that have 'update.status().uuid()'
+     * field set. Unacknowledged updates can be retried by the executor.
+     * They should also be sent by the executor whenever it
+     * re-subscribes.
+     * </pre>
+     */
+    public static final class Acknowledged extends
+        com.google.protobuf.GeneratedMessage
+        implements AcknowledgedOrBuilder {
+      // Use Acknowledged.newBuilder() to construct.
+      private Acknowledged(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Acknowledged(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Acknowledged defaultInstance;
+      public static Acknowledged getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Acknowledged getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Acknowledged(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.Protos.TaskID.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = taskId_.toBuilder();
+                }
+                taskId_ = input.readMessage(org.apache.mesos.Protos.TaskID.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(taskId_);
+                  taskId_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+              case 18: {
+                bitField0_ |= 0x00000002;
+                uuid_ = input.readBytes();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Event_Acknowledged_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Event_Acknowledged_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.executor.Protos.Event.Acknowledged.class, org.apache.mesos.executor.Protos.Event.Acknowledged.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Acknowledged> PARSER =
+          new com.google.protobuf.AbstractParser<Acknowledged>() {
+        public Acknowledged parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Acknowledged(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Acknowledged> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required .mesos.TaskID task_id = 1;
+      public static final int TASK_ID_FIELD_NUMBER = 1;
+      private org.apache.mesos.Protos.TaskID taskId_;
+      /**
+       * <code>required .mesos.TaskID task_id = 1;</code>
+       */
+      public boolean hasTaskId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.TaskID task_id = 1;</code>
+       */
+      public org.apache.mesos.Protos.TaskID getTaskId() {
+        return taskId_;
+      }
+      /**
+       * <code>required .mesos.TaskID task_id = 1;</code>
+       */
+      public org.apache.mesos.Protos.TaskIDOrBuilder getTaskIdOrBuilder() {
+        return taskId_;
+      }
+
+      // required bytes uuid = 2;
+      public static final int UUID_FIELD_NUMBER = 2;
+      private com.google.protobuf.ByteString uuid_;
+      /**
+       * <code>required bytes uuid = 2;</code>
+       */
+      public boolean hasUuid() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required bytes uuid = 2;</code>
+       */
+      public com.google.protobuf.ByteString getUuid() {
+        return uuid_;
+      }
+
+      private void initFields() {
+        taskId_ = org.apache.mesos.Protos.TaskID.getDefaultInstance();
+        uuid_ = com.google.protobuf.ByteString.EMPTY;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasTaskId()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!hasUuid()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getTaskId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, taskId_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeBytes(2, uuid_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, taskId_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(2, uuid_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.executor.Protos.Event.Acknowledged parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Acknowledged parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Acknowledged parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Acknowledged parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Acknowledged parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Acknowledged parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Acknowledged parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Acknowledged parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Acknowledged parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Acknowledged parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.executor.Protos.Event.Acknowledged prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.executor.Event.Acknowledged}
+       *
+       * <pre>
+       * Received when the slave acknowledges the receipt of status
+       * update. Schedulers are responsible for explicitly acknowledging
+       * the receipt of status updates that have 'update.status().uuid()'
+       * field set. Unacknowledged updates can be retried by the executor.
+       * They should also be sent by the executor whenever it
+       * re-subscribes.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.executor.Protos.Event.AcknowledgedOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Event_Acknowledged_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Event_Acknowledged_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.executor.Protos.Event.Acknowledged.class, org.apache.mesos.executor.Protos.Event.Acknowledged.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.executor.Protos.Event.Acknowledged.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getTaskIdFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (taskIdBuilder_ == null) {
+            taskId_ = org.apache.mesos.Protos.TaskID.getDefaultInstance();
+          } else {
+            taskIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          uuid_ = com.google.protobuf.ByteString.EMPTY;
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Event_Acknowledged_descriptor;
+        }
+
+        public org.apache.mesos.executor.Protos.Event.Acknowledged getDefaultInstanceForType() {
+          return org.apache.mesos.executor.Protos.Event.Acknowledged.getDefaultInstance();
+        }
+
+        public org.apache.mesos.executor.Protos.Event.Acknowledged build() {
+          org.apache.mesos.executor.Protos.Event.Acknowledged result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.executor.Protos.Event.Acknowledged buildPartial() {
+          org.apache.mesos.executor.Protos.Event.Acknowledged result = new org.apache.mesos.executor.Protos.Event.Acknowledged(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (taskIdBuilder_ == null) {
+            result.taskId_ = taskId_;
+          } else {
+            result.taskId_ = taskIdBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          result.uuid_ = uuid_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.executor.Protos.Event.Acknowledged) {
+            return mergeFrom((org.apache.mesos.executor.Protos.Event.Acknowledged)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.executor.Protos.Event.Acknowledged other) {
+          if (other == org.apache.mesos.executor.Protos.Event.Acknowledged.getDefaultInstance()) return this;
+          if (other.hasTaskId()) {
+            mergeTaskId(other.getTaskId());
+          }
+          if (other.hasUuid()) {
+            setUuid(other.getUuid());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasTaskId()) {
+            
+            return false;
+          }
+          if (!hasUuid()) {
+            
+            return false;
+          }
+          if (!getTaskId().isInitialized()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.executor.Protos.Event.Acknowledged parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.executor.Protos.Event.Acknowledged) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required .mesos.TaskID task_id = 1;
+        private org.apache.mesos.Protos.TaskID taskId_ = org.apache.mesos.Protos.TaskID.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.TaskID, org.apache.mesos.Protos.TaskID.Builder, org.apache.mesos.Protos.TaskIDOrBuilder> taskIdBuilder_;
+        /**
+         * <code>required .mesos.TaskID task_id = 1;</code>
+         */
+        public boolean hasTaskId() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.TaskID task_id = 1;</code>
+         */
+        public org.apache.mesos.Protos.TaskID getTaskId() {
+          if (taskIdBuilder_ == null) {
+            return taskId_;
+          } else {
+            return taskIdBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.TaskID task_id = 1;</code>
+         */
+        public Builder setTaskId(org.apache.mesos.Protos.TaskID value) {
+          if (taskIdBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            taskId_ = value;
+            onChanged();
+          } else {
+            taskIdBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.TaskID task_id = 1;</code>
+         */
+        public Builder setTaskId(
+            org.apache.mesos.Protos.TaskID.Builder builderForValue) {
+          if (taskIdBuilder_ == null) {
+            taskId_ = builderForValue.build();
+            onChanged();
+          } else {
+            taskIdBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.TaskID task_id = 1;</code>
+         */
+        public Builder mergeTaskId(org.apache.mesos.Protos.TaskID value) {
+          if (taskIdBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                taskId_ != org.apache.mesos.Protos.TaskID.getDefaultInstance()) {
+              taskId_ =
+                org.apache.mesos.Protos.TaskID.newBuilder(taskId_).mergeFrom(value).buildPartial();
+            } else {
+              taskId_ = value;
+            }
+            onChanged();
+          } else {
+            taskIdBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.TaskID task_id = 1;</code>
+         */
+        public Builder clearTaskId() {
+          if (taskIdBuilder_ == null) {
+            taskId_ = org.apache.mesos.Protos.TaskID.getDefaultInstance();
+            onChanged();
+          } else {
+            taskIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>required .mesos.TaskID task_id = 1;</code>
+         */
+        public org.apache.mesos.Protos.TaskID.Builder getTaskIdBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getTaskIdFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.TaskID task_id = 1;</code>
+         */
+        public org.apache.mesos.Protos.TaskIDOrBuilder getTaskIdOrBuilder() {
+          if (taskIdBuilder_ != null) {
+            return taskIdBuilder_.getMessageOrBuilder();
+          } else {
+            return taskId_;
+          }
+        }
+        /**
+         * <code>required .mesos.TaskID task_id = 1;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.TaskID, org.apache.mesos.Protos.TaskID.Builder, org.apache.mesos.Protos.TaskIDOrBuilder> 
+            getTaskIdFieldBuilder() {
+          if (taskIdBuilder_ == null) {
+            taskIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.TaskID, org.apache.mesos.Protos.TaskID.Builder, org.apache.mesos.Protos.TaskIDOrBuilder>(
+                    taskId_,
+                    getParentForChildren(),
+                    isClean());
+            taskId_ = null;
+          }
+          return taskIdBuilder_;
+        }
+
+        // required bytes uuid = 2;
+        private com.google.protobuf.ByteString uuid_ = com.google.protobuf.ByteString.EMPTY;
+        /**
+         * <code>required bytes uuid = 2;</code>
+         */
+        public boolean hasUuid() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>required bytes uuid = 2;</code>
+         */
+        public com.google.protobuf.ByteString getUuid() {
+          return uuid_;
+        }
+        /**
+         * <code>required bytes uuid = 2;</code>
+         */
+        public Builder setUuid(com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+          uuid_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required bytes uuid = 2;</code>
+         */
+        public Builder clearUuid() {
+          bitField0_ = (bitField0_ & ~0x00000002);
+          uuid_ = getDefaultInstance().getUuid();
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.executor.Event.Acknowledged)
+      }
+
+      static {
+        defaultInstance = new Acknowledged(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.executor.Event.Acknowledged)
+    }
+
+    public interface MessageOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required bytes data = 1;
+      /**
+       * <code>required bytes data = 1;</code>
+       */
+      boolean hasData();
+      /**
+       * <code>required bytes data = 1;</code>
+       */
+      com.google.protobuf.ByteString getData();
+    }
+    /**
+     * Protobuf type {@code mesos.executor.Event.Message}
+     *
+     * <pre>
+     * Received when a custom message generated by the scheduler is
+     * forwarded by the slave. Note that this message is not
+     * interpreted by Mesos and is only forwarded (without reliability
+     * guarantees) to the executor. It is up to the scheduler to retry
+     * if the message is dropped for any reason.
+     * </pre>
+     */
+    public static final class Message extends
+        com.google.protobuf.GeneratedMessage
+        implements MessageOrBuilder {
+      // Use Message.newBuilder() to construct.
+      private Message(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Message(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Message defaultInstance;
+      public static Message getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Message getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Message(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                bitField0_ |= 0x00000001;
+                data_ = input.readBytes();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Event_Message_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Event_Message_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.executor.Protos.Event.Message.class, org.apache.mesos.executor.Protos.Event.Message.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Message> PARSER =
+          new com.google.protobuf.AbstractParser<Message>() {
+        public Message parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Message(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Message> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required bytes data = 1;
+      public static final int DATA_FIELD_NUMBER = 1;
+      private com.google.protobuf.ByteString data_;
+      /**
+       * <code>required bytes data = 1;</code>
+       */
+      public boolean hasData() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required bytes data = 1;</code>
+       */
+      public com.google.protobuf.ByteString getData() {
+        return data_;
+      }
+
+      private void initFields() {
+        data_ = com.google.protobuf.ByteString.EMPTY;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasData()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeBytes(1, data_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(1, data_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.executor.Protos.Event.Message parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Message parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Message parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Message parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Message parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Message parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Message parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Message parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Message parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Message parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.executor.Protos.Event.Message prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.executor.Event.Message}
+       *
+       * <pre>
+       * Received when a custom message generated by the scheduler is
+       * forwarded by the slave. Note that this message is not
+       * interpreted by Mesos and is only forwarded (without reliability
+       * guarantees) to the executor. It is up to the scheduler to retry
+       * if the message is dropped for any reason.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.executor.Protos.Event.MessageOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Event_Message_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Event_Message_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.executor.Protos.Event.Message.class, org.apache.mesos.executor.Protos.Event.Message.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.executor.Protos.Event.Message.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          data_ = com.google.protobuf.ByteString.EMPTY;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Event_Message_descriptor;
+        }
+
+        public org.apache.mesos.executor.Protos.Event.Message getDefaultInstanceForType() {
+          return org.apache.mesos.executor.Protos.Event.Message.getDefaultInstance();
+        }
+
+        public org.apache.mesos.executor.Protos.Event.Message build() {
+          org.apache.mesos.executor.Protos.Event.Message result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.executor.Protos.Event.Message buildPartial() {
+          org.apache.mesos.executor.Protos.Event.Message result = new org.apache.mesos.executor.Protos.Event.Message(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.data_ = data_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.executor.Protos.Event.Message) {
+            return mergeFrom((org.apache.mesos.executor.Protos.Event.Message)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.executor.Protos.Event.Message other) {
+          if (other == org.apache.mesos.executor.Protos.Event.Message.getDefaultInstance()) return this;
+          if (other.hasData()) {
+            setData(other.getData());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasData()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.executor.Protos.Event.Message parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.executor.Protos.Event.Message) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required bytes data = 1;
+        private com.google.protobuf.ByteString data_ = com.google.protobuf.ByteString.EMPTY;
+        /**
+         * <code>required bytes data = 1;</code>
+         */
+        public boolean hasData() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required bytes data = 1;</code>
+         */
+        public com.google.protobuf.ByteString getData() {
+          return data_;
+        }
+        /**
+         * <code>required bytes data = 1;</code>
+         */
+        public Builder setData(com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          data_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required bytes data = 1;</code>
+         */
+        public Builder clearData() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          data_ = getDefaultInstance().getData();
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.executor.Event.Message)
+      }
+
+      static {
+        defaultInstance = new Message(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.executor.Event.Message)
+    }
+
+    public interface ErrorOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required string message = 1;
+      /**
+       * <code>required string message = 1;</code>
+       */
+      boolean hasMessage();
+      /**
+       * <code>required string message = 1;</code>
+       */
+      java.lang.String getMessage();
+      /**
+       * <code>required string message = 1;</code>
+       */
+      com.google.protobuf.ByteString
+          getMessageBytes();
+    }
+    /**
+     * Protobuf type {@code mesos.executor.Event.Error}
+     *
+     * <pre>
+     * Received in case the executor sends invalid calls (e.g.,
+     * required values not set).
+     * TODO(arojas): Remove this once the old executor driver is no
+     * longer supported. With HTTP API all errors will be signaled via
+     * HTTP response codes.
+     * </pre>
+     */
+    public static final class Error extends
+        com.google.protobuf.GeneratedMessage
+        implements ErrorOrBuilder {
+      // Use Error.newBuilder() to construct.
+      private Error(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Error(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Error defaultInstance;
+      public static Error getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Error getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Error(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                bitField0_ |= 0x00000001;
+                message_ = input.readBytes();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Event_Error_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Event_Error_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.executor.Protos.Event.Error.class, org.apache.mesos.executor.Protos.Event.Error.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Error> PARSER =
+          new com.google.protobuf.AbstractParser<Error>() {
+        public Error parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Error(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Error> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required string message = 1;
+      public static final int MESSAGE_FIELD_NUMBER = 1;
+      private java.lang.Object message_;
+      /**
+       * <code>required string message = 1;</code>
+       */
+      public boolean hasMessage() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string message = 1;</code>
+       */
+      public java.lang.String getMessage() {
+        java.lang.Object ref = message_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            message_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>required string message = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getMessageBytes() {
+        java.lang.Object ref = message_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          message_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      private void initFields() {
+        message_ = "";
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasMessage()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeBytes(1, getMessageBytes());
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(1, getMessageBytes());
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.executor.Protos.Event.Error parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Error parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Error parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Error parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Error parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Error parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Error parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Error parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Error parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.executor.Protos.Event.Error parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.executor.Protos.Event.Error prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.executor.Event.Error}
+       *
+       * <pre>
+       * Received in case the executor sends invalid calls (e.g.,
+       * required values not set).
+       * TODO(arojas): Remove this once the old executor driver is no
+       * longer supported. With HTTP API all errors will be signaled via
+       * HTTP response codes.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.executor.Protos.Event.ErrorOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Event_Error_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Event_Error_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.executor.Protos.Event.Error.class, org.apache.mesos.executor.Protos.Event.Error.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.executor.Protos.Event.Error.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          message_ = "";
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Event_Error_descriptor;
+        }
+
+        public org.apache.mesos.executor.Protos.Event.Error getDefaultInstanceForType() {
+          return org.apache.mesos.executor.Protos.Event.Error.getDefaultInstance();
+        }
+
+        public org.apache.mesos.executor.Protos.Event.Error build() {
+          org.apache.mesos.executor.Protos.Event.Error result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.executor.Protos.Event.Error buildPartial() {
+          org.apache.mesos.executor.Protos.Event.Error result = new org.apache.mesos.executor.Protos.Event.Error(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.message_ = message_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.executor.Protos.Event.Error) {
+            return mergeFrom((org.apache.mesos.executor.Protos.Event.Error)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.executor.Protos.Event.Error other) {
+          if (other == org.apache.mesos.executor.Protos.Event.Error.getDefaultInstance()) return this;
+          if (other.hasMessage()) {
+            bitField0_ |= 0x00000001;
+            message_ = other.message_;
+            onChanged();
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasMessage()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.executor.Protos.Event.Error parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.executor.Protos.Event.Error) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required string message = 1;
+        private java.lang.Object message_ = "";
+        /**
+         * <code>required string message = 1;</code>
+         */
+        public boolean hasMessage() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required string message = 1;</code>
+         */
+        public java.lang.String getMessage() {
+          java.lang.Object ref = message_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            message_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>required string message = 1;</code>
+         */
+        public com.google.protobuf.ByteString
+            getMessageBytes() {
+          java.lang.Object ref = message_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            message_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>required string message = 1;</code>
+         */
+        public Builder setMessage(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          message_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required string message = 1;</code>
+         */
+        public Builder clearMessage() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          message_ = getDefaultInstance().getMessage();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required string message = 1;</code>
+         */
+        public Builder setMessageBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          message_ = value;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.executor.Event.Error)
+      }
+
+      static {
+        defaultInstance = new Error(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.executor.Event.Error)
+    }
+
+    private int bitField0_;
+    // optional .mesos.executor.Event.Type type = 1;
+    public static final int TYPE_FIELD_NUMBER = 1;
+    private org.apache.mesos.executor.Protos.Event.Type type_;
+    /**
+     * <code>optional .mesos.executor.Event.Type type = 1;</code>
+     *
+     * <pre>
+     * Type of the event, indicates which optional field below should be
+     * present if that type has a nested message definition.
+     * Enum fields should be optional, see: MESOS-4997.
+     * </pre>
+     */
+    public boolean hasType() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional .mesos.executor.Event.Type type = 1;</code>
+     *
+     * <pre>
+     * Type of the event, indicates which optional field below should be
+     * present if that type has a nested message definition.
+     * Enum fields should be optional, see: MESOS-4997.
+     * </pre>
+     */
+    public org.apache.mesos.executor.Protos.Event.Type getType() {
+      return type_;
+    }
+
+    // optional .mesos.executor.Event.Subscribed subscribed = 2;
+    public static final int SUBSCRIBED_FIELD_NUMBER = 2;
+    private org.apache.mesos.executor.Protos.Event.Subscribed subscribed_;
+    /**
+     * <code>optional .mesos.executor.Event.Subscribed subscribed = 2;</code>
+     */
+    public boolean hasSubscribed() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional .mesos.executor.Event.Subscribed subscribed = 2;</code>
+     */
+    public org.apache.mesos.executor.Protos.Event.Subscribed getSubscribed() {
+      return subscribed_;
+    }
+    /**
+     * <code>optional .mesos.executor.Event.Subscribed subscribed = 2;</code>
+     */
+    public org.apache.mesos.executor.Protos.Event.SubscribedOrBuilder getSubscribedOrBuilder() {
+      return subscribed_;
+    }
+
+    // optional .mesos.executor.Event.Acknowledged acknowledged = 3;
+    public static final int ACKNOWLEDGED_FIELD_NUMBER = 3;
+    private org.apache.mesos.executor.Protos.Event.Acknowledged acknowledged_;
+    /**
+     * <code>optional .mesos.executor.Event.Acknowledged acknowledged = 3;</code>
+     */
+    public boolean hasAcknowledged() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional .mesos.executor.Event.Acknowledged acknowledged = 3;</code>
+     */
+    public org.apache.mesos.executor.Protos.Event.Acknowledged getAcknowledged() {
+      return acknowledged_;
+    }
+    /**
+     * <code>optional .mesos.executor.Event.Acknowledged acknowledged = 3;</code>
+     */
+    public org.apache.mesos.executor.Protos.Event.AcknowledgedOrBuilder getAcknowledgedOrBuilder() {
+      return acknowledged_;
+    }
+
+    // optional .mesos.executor.Event.Launch launch = 4;
+    public static final int LAUNCH_FIELD_NUMBER = 4;
+    private org.apache.mesos.executor.Protos.Event.Launch launch_;
+    /**
+     * <code>optional .mesos.executor.Event.Launch launch = 4;</code>
+     */
+    public boolean hasLaunch() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional .mesos.executor.Event.Launch launch = 4;</code>
+     */
+    public org.apache.mesos.executor.Protos.Event.Launch getLaunch() {
+      return launch_;
+    }
+    /**
+     * <code>optional .mesos.executor.Event.Launch launch = 4;</code>
+     */
+    public org.apache.mesos.executor.Protos.Event.LaunchOrBuilder getLaunchOrBuilder() {
+      return launch_;
+    }
+
+    // optional .mesos.executor.Event.LaunchGroup launch_group = 8;
+    public static final int LAUNCH_GROUP_FIELD_NUMBER = 8;
+    private org.apache.mesos.executor.Protos.Event.LaunchGroup launchGroup_;
+    /**
+     * <code>optional .mesos.executor.Event.LaunchGroup launch_group = 8;</code>
+     */
+    public boolean hasLaunchGroup() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional .mesos.executor.Event.LaunchGroup launch_group = 8;</code>
+     */
+    public org.apache.mesos.executor.Protos.Event.LaunchGroup getLaunchGroup() {
+      return launchGroup_;
+    }
+    /**
+     * <code>optional .mesos.executor.Event.LaunchGroup launch_group = 8;</code>
+     */
+    public org.apache.mesos.executor.Protos.Event.LaunchGroupOrBuilder getLaunchGroupOrBuilder() {
+      return launchGroup_;
+    }
+
+    // optional .mesos.executor.Event.Kill kill = 5;
+    public static final int KILL_FIELD_NUMBER = 5;
+    private org.apache.mesos.executor.Protos.Event.Kill kill_;
+    /**
+     * <code>optional .mesos.executor.Event.Kill kill = 5;</code>
+     */
+    public boolean hasKill() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional .mesos.executor.Event.Kill kill = 5;</code>
+     */
+    public org.apache.mesos.executor.Protos.Event.Kill getKill() {
+      return kill_;
+    }
+    /**
+     * <code>optional .mesos.executor.Event.Kill kill = 5;</code>
+     */
+    public org.apache.mesos.executor.Protos.Event.KillOrBuilder getKillOrBuilder() {
+      return kill_;
+    }
+
+    // optional .mesos.executor.Event.Message message = 6;
+    public static final int MESSAGE_FIELD_NUMBER = 6;
+    private org.apache.mesos.executor.Protos.Event.Message message_;
+    /**
+     * <code>optional .mesos.executor.Event.Message message = 6;</code>
+     */
+    public boolean hasMessage() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional .mesos.executor.Event.Message message = 6;</code>
+     */
+    public org.apache.mesos.executor.Protos.Event.Message getMessage() {
+      return message_;
+    }
+    /**
+     * <code>optional .mesos.executor.Event.Message message = 6;</code>
+     */
+    public org.apache.mesos.executor.Protos.Event.MessageOrBuilder getMessageOrBuilder() {
+      return message_;
+    }
+
+    // optional .mesos.executor.Event.Error error = 7;
+    public static final int ERROR_FIELD_NUMBER = 7;
+    private org.apache.mesos.executor.Protos.Event.Error error_;
+    /**
+     * <code>optional .mesos.executor.Event.Error error = 7;</code>
+     */
+    public boolean hasError() {
+      return ((bitField0_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional .mesos.executor.Event.Error error = 7;</code>
+     */
+    public org.apache.mesos.executor.Protos.Event.Error getError() {
+      return error_;
+    }
+    /**
+     * <code>optional .mesos.executor.Event.Error error = 7;</code>
+     */
+    public org.apache.mesos.executor.Protos.Event.ErrorOrBuilder getErrorOrBuilder() {
+      return error_;
+    }
+
+    private void initFields() {
+      type_ = org.apache.mesos.executor.Protos.Event.Type.UNKNOWN;
+      subscribed_ = org.apache.mesos.executor.Protos.Event.Subscribed.getDefaultInstance();
+      acknowledged_ = org.apache.mesos.executor.Protos.Event.Acknowledged.getDefaultInstance();
+      launch_ = org.apache.mesos.executor.Protos.Event.Launch.getDefaultInstance();
+      launchGroup_ = org.apache.mesos.executor.Protos.Event.LaunchGroup.getDefaultInstance();
+      kill_ = org.apache.mesos.executor.Protos.Event.Kill.getDefaultInstance();
+      message_ = org.apache.mesos.executor.Protos.Event.Message.getDefaultInstance();
+      error_ = org.apache.mesos.executor.Protos.Event.Error.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (hasSubscribed()) {
+        if (!getSubscribed().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasAcknowledged()) {
+        if (!getAcknowledged().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasLaunch()) {
+        if (!getLaunch().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasLaunchGroup()) {
+        if (!getLaunchGroup().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasKill()) {
+        if (!getKill().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasMessage()) {
+        if (!getMessage().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasError()) {
+        if (!getError().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeEnum(1, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(2, subscribed_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeMessage(3, acknowledged_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeMessage(4, launch_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeMessage(5, kill_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeMessage(6, message_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        output.writeMessage(7, error_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeMessage(8, launchGroup_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(1, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, subscribed_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, acknowledged_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, launch_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(5, kill_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(6, message_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(7, error_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(8, launchGroup_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.executor.Protos.Event parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.executor.Protos.Event parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.executor.Protos.Event parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.executor.Protos.Event parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.executor.Protos.Event parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.executor.Protos.Event parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.executor.Protos.Event parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.executor.Protos.Event parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.executor.Protos.Event parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.executor.Protos.Event parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.executor.Protos.Event prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.executor.Event}
+     *
+     * <pre>
+     **
+     * Executor event API.
+     *
+     * An event is described using the standard protocol buffer "union"
+     * trick, see https://developers.google.com/protocol-buffers/docs/techniques#union.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.executor.Protos.EventOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Event_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Event_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.executor.Protos.Event.class, org.apache.mesos.executor.Protos.Event.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.executor.Protos.Event.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getSubscribedFieldBuilder();
+          getAcknowledgedFieldBuilder();
+          getLaunchFieldBuilder();
+          getLaunchGroupFieldBuilder();
+          getKillFieldBuilder();
+          getMessageFieldBuilder();
+          getErrorFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        type_ = org.apache.mesos.executor.Protos.Event.Type.UNKNOWN;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (subscribedBuilder_ == null) {
+          subscribed_ = org.apache.mesos.executor.Protos.Event.Subscribed.getDefaultInstance();
+        } else {
+          subscribedBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        if (acknowledgedBuilder_ == null) {
+          acknowledged_ = org.apache.mesos.executor.Protos.Event.Acknowledged.getDefaultInstance();
+        } else {
+          acknowledgedBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        if (launchBuilder_ == null) {
+          launch_ = org.apache.mesos.executor.Protos.Event.Launch.getDefaultInstance();
+        } else {
+          launchBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        if (launchGroupBuilder_ == null) {
+          launchGroup_ = org.apache.mesos.executor.Protos.Event.LaunchGroup.getDefaultInstance();
+        } else {
+          launchGroupBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        if (killBuilder_ == null) {
+          kill_ = org.apache.mesos.executor.Protos.Event.Kill.getDefaultInstance();
+        } else {
+          killBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
+        if (messageBuilder_ == null) {
+          message_ = org.apache.mesos.executor.Protos.Event.Message.getDefaultInstance();
+        } else {
+          messageBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000040);
+        if (errorBuilder_ == null) {
+          error_ = org.apache.mesos.executor.Protos.Event.Error.getDefaultInstance();
+        } else {
+          errorBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000080);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Event_descriptor;
+      }
+
+      public org.apache.mesos.executor.Protos.Event getDefaultInstanceForType() {
+        return org.apache.mesos.executor.Protos.Event.getDefaultInstance();
+      }
+
+      public org.apache.mesos.executor.Protos.Event build() {
+        org.apache.mesos.executor.Protos.Event result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.executor.Protos.Event buildPartial() {
+        org.apache.mesos.executor.Protos.Event result = new org.apache.mesos.executor.Protos.Event(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.type_ = type_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (subscribedBuilder_ == null) {
+          result.subscribed_ = subscribed_;
+        } else {
+          result.subscribed_ = subscribedBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        if (acknowledgedBuilder_ == null) {
+          result.acknowledged_ = acknowledged_;
+        } else {
+          result.acknowledged_ = acknowledgedBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        if (launchBuilder_ == null) {
+          result.launch_ = launch_;
+        } else {
+          result.launch_ = launchBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        if (launchGroupBuilder_ == null) {
+          result.launchGroup_ = launchGroup_;
+        } else {
+          result.launchGroup_ = launchGroupBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        if (killBuilder_ == null) {
+          result.kill_ = kill_;
+        } else {
+          result.kill_ = killBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        if (messageBuilder_ == null) {
+          result.message_ = message_;
+        } else {
+          result.message_ = messageBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+          to_bitField0_ |= 0x00000080;
+        }
+        if (errorBuilder_ == null) {
+          result.error_ = error_;
+        } else {
+          result.error_ = errorBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.executor.Protos.Event) {
+          return mergeFrom((org.apache.mesos.executor.Protos.Event)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.executor.Protos.Event other) {
+        if (other == org.apache.mesos.executor.Protos.Event.getDefaultInstance()) return this;
+        if (other.hasType()) {
+          setType(other.getType());
+        }
+        if (other.hasSubscribed()) {
+          mergeSubscribed(other.getSubscribed());
+        }
+        if (other.hasAcknowledged()) {
+          mergeAcknowledged(other.getAcknowledged());
+        }
+        if (other.hasLaunch()) {
+          mergeLaunch(other.getLaunch());
+        }
+        if (other.hasLaunchGroup()) {
+          mergeLaunchGroup(other.getLaunchGroup());
+        }
+        if (other.hasKill()) {
+          mergeKill(other.getKill());
+        }
+        if (other.hasMessage()) {
+          mergeMessage(other.getMessage());
+        }
+        if (other.hasError()) {
+          mergeError(other.getError());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (hasSubscribed()) {
+          if (!getSubscribed().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasAcknowledged()) {
+          if (!getAcknowledged().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasLaunch()) {
+          if (!getLaunch().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasLaunchGroup()) {
+          if (!getLaunchGroup().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasKill()) {
+          if (!getKill().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasMessage()) {
+          if (!getMessage().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasError()) {
+          if (!getError().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.executor.Protos.Event parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.executor.Protos.Event) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional .mesos.executor.Event.Type type = 1;
+      private org.apache.mesos.executor.Protos.Event.Type type_ = org.apache.mesos.executor.Protos.Event.Type.UNKNOWN;
+      /**
+       * <code>optional .mesos.executor.Event.Type type = 1;</code>
+       *
+       * <pre>
+       * Type of the event, indicates which optional field below should be
+       * present if that type has a nested message definition.
+       * Enum fields should be optional, see: MESOS-4997.
+       * </pre>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Type type = 1;</code>
+       *
+       * <pre>
+       * Type of the event, indicates which optional field below should be
+       * present if that type has a nested message definition.
+       * Enum fields should be optional, see: MESOS-4997.
+       * </pre>
+       */
+      public org.apache.mesos.executor.Protos.Event.Type getType() {
+        return type_;
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Type type = 1;</code>
+       *
+       * <pre>
+       * Type of the event, indicates which optional field below should be
+       * present if that type has a nested message definition.
+       * Enum fields should be optional, see: MESOS-4997.
+       * </pre>
+       */
+      public Builder setType(org.apache.mesos.executor.Protos.Event.Type value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000001;
+        type_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Type type = 1;</code>
+       *
+       * <pre>
+       * Type of the event, indicates which optional field below should be
+       * present if that type has a nested message definition.
+       * Enum fields should be optional, see: MESOS-4997.
+       * </pre>
+       */
+      public Builder clearType() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        type_ = org.apache.mesos.executor.Protos.Event.Type.UNKNOWN;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.executor.Event.Subscribed subscribed = 2;
+      private org.apache.mesos.executor.Protos.Event.Subscribed subscribed_ = org.apache.mesos.executor.Protos.Event.Subscribed.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.executor.Protos.Event.Subscribed, org.apache.mesos.executor.Protos.Event.Subscribed.Builder, org.apache.mesos.executor.Protos.Event.SubscribedOrBuilder> subscribedBuilder_;
+      /**
+       * <code>optional .mesos.executor.Event.Subscribed subscribed = 2;</code>
+       */
+      public boolean hasSubscribed() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Subscribed subscribed = 2;</code>
+       */
+      public org.apache.mesos.executor.Protos.Event.Subscribed getSubscribed() {
+        if (subscribedBuilder_ == null) {
+          return subscribed_;
+        } else {
+          return subscribedBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Subscribed subscribed = 2;</code>
+       */
+      public Builder setSubscribed(org.apache.mesos.executor.Protos.Event.Subscribed value) {
+        if (subscribedBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          subscribed_ = value;
+          onChanged();
+        } else {
+          subscribedBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Subscribed subscribed = 2;</code>
+       */
+      public Builder setSubscribed(
+          org.apache.mesos.executor.Protos.Event.Subscribed.Builder builderForValue) {
+        if (subscribedBuilder_ == null) {
+          subscribed_ = builderForValue.build();
+          onChanged();
+        } else {
+          subscribedBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Subscribed subscribed = 2;</code>
+       */
+      public Builder mergeSubscribed(org.apache.mesos.executor.Protos.Event.Subscribed value) {
+        if (subscribedBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              subscribed_ != org.apache.mesos.executor.Protos.Event.Subscribed.getDefaultInstance()) {
+            subscribed_ =
+              org.apache.mesos.executor.Protos.Event.Subscribed.newBuilder(subscribed_).mergeFrom(value).buildPartial();
+          } else {
+            subscribed_ = value;
+          }
+          onChanged();
+        } else {
+          subscribedBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Subscribed subscribed = 2;</code>
+       */
+      public Builder clearSubscribed() {
+        if (subscribedBuilder_ == null) {
+          subscribed_ = org.apache.mesos.executor.Protos.Event.Subscribed.getDefaultInstance();
+          onChanged();
+        } else {
+          subscribedBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Subscribed subscribed = 2;</code>
+       */
+      public org.apache.mesos.executor.Protos.Event.Subscribed.Builder getSubscribedBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getSubscribedFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Subscribed subscribed = 2;</code>
+       */
+      public org.apache.mesos.executor.Protos.Event.SubscribedOrBuilder getSubscribedOrBuilder() {
+        if (subscribedBuilder_ != null) {
+          return subscribedBuilder_.getMessageOrBuilder();
+        } else {
+          return subscribed_;
+        }
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Subscribed subscribed = 2;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.executor.Protos.Event.Subscribed, org.apache.mesos.executor.Protos.Event.Subscribed.Builder, org.apache.mesos.executor.Protos.Event.SubscribedOrBuilder> 
+          getSubscribedFieldBuilder() {
+        if (subscribedBuilder_ == null) {
+          subscribedBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.executor.Protos.Event.Subscribed, org.apache.mesos.executor.Protos.Event.Subscribed.Builder, org.apache.mesos.executor.Protos.Event.SubscribedOrBuilder>(
+                  subscribed_,
+                  getParentForChildren(),
+                  isClean());
+          subscribed_ = null;
+        }
+        return subscribedBuilder_;
+      }
+
+      // optional .mesos.executor.Event.Acknowledged acknowledged = 3;
+      private org.apache.mesos.executor.Protos.Event.Acknowledged acknowledged_ = org.apache.mesos.executor.Protos.Event.Acknowledged.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.executor.Protos.Event.Acknowledged, org.apache.mesos.executor.Protos.Event.Acknowledged.Builder, org.apache.mesos.executor.Protos.Event.AcknowledgedOrBuilder> acknowledgedBuilder_;
+      /**
+       * <code>optional .mesos.executor.Event.Acknowledged acknowledged = 3;</code>
+       */
+      public boolean hasAcknowledged() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Acknowledged acknowledged = 3;</code>
+       */
+      public org.apache.mesos.executor.Protos.Event.Acknowledged getAcknowledged() {
+        if (acknowledgedBuilder_ == null) {
+          return acknowledged_;
+        } else {
+          return acknowledgedBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Acknowledged acknowledged = 3;</code>
+       */
+      public Builder setAcknowledged(org.apache.mesos.executor.Protos.Event.Acknowledged value) {
+        if (acknowledgedBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          acknowledged_ = value;
+          onChanged();
+        } else {
+          acknowledgedBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Acknowledged acknowledged = 3;</code>
+       */
+      public Builder setAcknowledged(
+          org.apache.mesos.executor.Protos.Event.Acknowledged.Builder builderForValue) {
+        if (acknowledgedBuilder_ == null) {
+          acknowledged_ = builderForValue.build();
+          onChanged();
+        } else {
+          acknowledgedBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Acknowledged acknowledged = 3;</code>
+       */
+      public Builder mergeAcknowledged(org.apache.mesos.executor.Protos.Event.Acknowledged value) {
+        if (acknowledgedBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) == 0x00000004) &&
+              acknowledged_ != org.apache.mesos.executor.Protos.Event.Acknowledged.getDefaultInstance()) {
+            acknowledged_ =
+              org.apache.mesos.executor.Protos.Event.Acknowledged.newBuilder(acknowledged_).mergeFrom(value).buildPartial();
+          } else {
+            acknowledged_ = value;
+          }
+          onChanged();
+        } else {
+          acknowledgedBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Acknowledged acknowledged = 3;</code>
+       */
+      public Builder clearAcknowledged() {
+        if (acknowledgedBuilder_ == null) {
+          acknowledged_ = org.apache.mesos.executor.Protos.Event.Acknowledged.getDefaultInstance();
+          onChanged();
+        } else {
+          acknowledgedBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Acknowledged acknowledged = 3;</code>
+       */
+      public org.apache.mesos.executor.Protos.Event.Acknowledged.Builder getAcknowledgedBuilder() {
+        bitField0_ |= 0x00000004;
+        onChanged();
+        return getAcknowledgedFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Acknowledged acknowledged = 3;</code>
+       */
+      public org.apache.mesos.executor.Protos.Event.AcknowledgedOrBuilder getAcknowledgedOrBuilder() {
+        if (acknowledgedBuilder_ != null) {
+          return acknowledgedBuilder_.getMessageOrBuilder();
+        } else {
+          return acknowledged_;
+        }
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Acknowledged acknowledged = 3;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.executor.Protos.Event.Acknowledged, org.apache.mesos.executor.Protos.Event.Acknowledged.Builder, org.apache.mesos.executor.Protos.Event.AcknowledgedOrBuilder> 
+          getAcknowledgedFieldBuilder() {
+        if (acknowledgedBuilder_ == null) {
+          acknowledgedBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.executor.Protos.Event.Acknowledged, org.apache.mesos.executor.Protos.Event.Acknowledged.Builder, org.apache.mesos.executor.Protos.Event.AcknowledgedOrBuilder>(
+                  acknowledged_,
+                  getParentForChildren(),
+                  isClean());
+          acknowledged_ = null;
+        }
+        return acknowledgedBuilder_;
+      }
+
+      // optional .mesos.executor.Event.Launch launch = 4;
+      private org.apache.mesos.executor.Protos.Event.Launch launch_ = org.apache.mesos.executor.Protos.Event.Launch.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.executor.Protos.Event.Launch, org.apache.mesos.executor.Protos.Event.Launch.Builder, org.apache.mesos.executor.Protos.Event.LaunchOrBuilder> launchBuilder_;
+      /**
+       * <code>optional .mesos.executor.Event.Launch launch = 4;</code>
+       */
+      public boolean hasLaunch() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Launch launch = 4;</code>
+       */
+      public org.apache.mesos.executor.Protos.Event.Launch getLaunch() {
+        if (launchBuilder_ == null) {
+          return launch_;
+        } else {
+          return launchBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Launch launch = 4;</code>
+       */
+      public Builder setLaunch(org.apache.mesos.executor.Protos.Event.Launch value) {
+        if (launchBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          launch_ = value;
+          onChanged();
+        } else {
+          launchBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Launch launch = 4;</code>
+       */
+      public Builder setLaunch(
+          org.apache.mesos.executor.Protos.Event.Launch.Builder builderForValue) {
+        if (launchBuilder_ == null) {
+          launch_ = builderForValue.build();
+          onChanged();
+        } else {
+          launchBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Launch launch = 4;</code>
+       */
+      public Builder mergeLaunch(org.apache.mesos.executor.Protos.Event.Launch value) {
+        if (launchBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008) &&
+              launch_ != org.apache.mesos.executor.Protos.Event.Launch.getDefaultInstance()) {
+            launch_ =
+              org.apache.mesos.executor.Protos.Event.Launch.newBuilder(launch_).mergeFrom(value).buildPartial();
+          } else {
+            launch_ = value;
+          }
+          onChanged();
+        } else {
+          launchBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Launch launch = 4;</code>
+       */
+      public Builder clearLaunch() {
+        if (launchBuilder_ == null) {
+          launch_ = org.apache.mesos.executor.Protos.Event.Launch.getDefaultInstance();
+          onChanged();
+        } else {
+          launchBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Launch launch = 4;</code>
+       */
+      public org.apache.mesos.executor.Protos.Event.Launch.Builder getLaunchBuilder() {
+        bitField0_ |= 0x00000008;
+        onChanged();
+        return getLaunchFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Launch launch = 4;</code>
+       */
+      public org.apache.mesos.executor.Protos.Event.LaunchOrBuilder getLaunchOrBuilder() {
+        if (launchBuilder_ != null) {
+          return launchBuilder_.getMessageOrBuilder();
+        } else {
+          return launch_;
+        }
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Launch launch = 4;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.executor.Protos.Event.Launch, org.apache.mesos.executor.Protos.Event.Launch.Builder, org.apache.mesos.executor.Protos.Event.LaunchOrBuilder> 
+          getLaunchFieldBuilder() {
+        if (launchBuilder_ == null) {
+          launchBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.executor.Protos.Event.Launch, org.apache.mesos.executor.Protos.Event.Launch.Builder, org.apache.mesos.executor.Protos.Event.LaunchOrBuilder>(
+                  launch_,
+                  getParentForChildren(),
+                  isClean());
+          launch_ = null;
+        }
+        return launchBuilder_;
+      }
+
+      // optional .mesos.executor.Event.LaunchGroup launch_group = 8;
+      private org.apache.mesos.executor.Protos.Event.LaunchGroup launchGroup_ = org.apache.mesos.executor.Protos.Event.LaunchGroup.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.executor.Protos.Event.LaunchGroup, org.apache.mesos.executor.Protos.Event.LaunchGroup.Builder, org.apache.mesos.executor.Protos.Event.LaunchGroupOrBuilder> launchGroupBuilder_;
+      /**
+       * <code>optional .mesos.executor.Event.LaunchGroup launch_group = 8;</code>
+       */
+      public boolean hasLaunchGroup() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional .mesos.executor.Event.LaunchGroup launch_group = 8;</code>
+       */
+      public org.apache.mesos.executor.Protos.Event.LaunchGroup getLaunchGroup() {
+        if (launchGroupBuilder_ == null) {
+          return launchGroup_;
+        } else {
+          return launchGroupBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.executor.Event.LaunchGroup launch_group = 8;</code>
+       */
+      public Builder setLaunchGroup(org.apache.mesos.executor.Protos.Event.LaunchGroup value) {
+        if (launchGroupBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          launchGroup_ = value;
+          onChanged();
+        } else {
+          launchGroupBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.executor.Event.LaunchGroup launch_group = 8;</code>
+       */
+      public Builder setLaunchGroup(
+          org.apache.mesos.executor.Protos.Event.LaunchGroup.Builder builderForValue) {
+        if (launchGroupBuilder_ == null) {
+          launchGroup_ = builderForValue.build();
+          onChanged();
+        } else {
+          launchGroupBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.executor.Event.LaunchGroup launch_group = 8;</code>
+       */
+      public Builder mergeLaunchGroup(org.apache.mesos.executor.Protos.Event.LaunchGroup value) {
+        if (launchGroupBuilder_ == null) {
+          if (((bitField0_ & 0x00000010) == 0x00000010) &&
+              launchGroup_ != org.apache.mesos.executor.Protos.Event.LaunchGroup.getDefaultInstance()) {
+            launchGroup_ =
+              org.apache.mesos.executor.Protos.Event.LaunchGroup.newBuilder(launchGroup_).mergeFrom(value).buildPartial();
+          } else {
+            launchGroup_ = value;
+          }
+          onChanged();
+        } else {
+          launchGroupBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.executor.Event.LaunchGroup launch_group = 8;</code>
+       */
+      public Builder clearLaunchGroup() {
+        if (launchGroupBuilder_ == null) {
+          launchGroup_ = org.apache.mesos.executor.Protos.Event.LaunchGroup.getDefaultInstance();
+          onChanged();
+        } else {
+          launchGroupBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.executor.Event.LaunchGroup launch_group = 8;</code>
+       */
+      public org.apache.mesos.executor.Protos.Event.LaunchGroup.Builder getLaunchGroupBuilder() {
+        bitField0_ |= 0x00000010;
+        onChanged();
+        return getLaunchGroupFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.executor.Event.LaunchGroup launch_group = 8;</code>
+       */
+      public org.apache.mesos.executor.Protos.Event.LaunchGroupOrBuilder getLaunchGroupOrBuilder() {
+        if (launchGroupBuilder_ != null) {
+          return launchGroupBuilder_.getMessageOrBuilder();
+        } else {
+          return launchGroup_;
+        }
+      }
+      /**
+       * <code>optional .mesos.executor.Event.LaunchGroup launch_group = 8;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.executor.Protos.Event.LaunchGroup, org.apache.mesos.executor.Protos.Event.LaunchGroup.Builder, org.apache.mesos.executor.Protos.Event.LaunchGroupOrBuilder> 
+          getLaunchGroupFieldBuilder() {
+        if (launchGroupBuilder_ == null) {
+          launchGroupBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.executor.Protos.Event.LaunchGroup, org.apache.mesos.executor.Protos.Event.LaunchGroup.Builder, org.apache.mesos.executor.Protos.Event.LaunchGroupOrBuilder>(
+                  launchGroup_,
+                  getParentForChildren(),
+                  isClean());
+          launchGroup_ = null;
+        }
+        return launchGroupBuilder_;
+      }
+
+      // optional .mesos.executor.Event.Kill kill = 5;
+      private org.apache.mesos.executor.Protos.Event.Kill kill_ = org.apache.mesos.executor.Protos.Event.Kill.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.executor.Protos.Event.Kill, org.apache.mesos.executor.Protos.Event.Kill.Builder, org.apache.mesos.executor.Protos.Event.KillOrBuilder> killBuilder_;
+      /**
+       * <code>optional .mesos.executor.Event.Kill kill = 5;</code>
+       */
+      public boolean hasKill() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Kill kill = 5;</code>
+       */
+      public org.apache.mesos.executor.Protos.Event.Kill getKill() {
+        if (killBuilder_ == null) {
+          return kill_;
+        } else {
+          return killBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Kill kill = 5;</code>
+       */
+      public Builder setKill(org.apache.mesos.executor.Protos.Event.Kill value) {
+        if (killBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          kill_ = value;
+          onChanged();
+        } else {
+          killBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Kill kill = 5;</code>
+       */
+      public Builder setKill(
+          org.apache.mesos.executor.Protos.Event.Kill.Builder builderForValue) {
+        if (killBuilder_ == null) {
+          kill_ = builderForValue.build();
+          onChanged();
+        } else {
+          killBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Kill kill = 5;</code>
+       */
+      public Builder mergeKill(org.apache.mesos.executor.Protos.Event.Kill value) {
+        if (killBuilder_ == null) {
+          if (((bitField0_ & 0x00000020) == 0x00000020) &&
+              kill_ != org.apache.mesos.executor.Protos.Event.Kill.getDefaultInstance()) {
+            kill_ =
+              org.apache.mesos.executor.Protos.Event.Kill.newBuilder(kill_).mergeFrom(value).buildPartial();
+          } else {
+            kill_ = value;
+          }
+          onChanged();
+        } else {
+          killBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Kill kill = 5;</code>
+       */
+      public Builder clearKill() {
+        if (killBuilder_ == null) {
+          kill_ = org.apache.mesos.executor.Protos.Event.Kill.getDefaultInstance();
+          onChanged();
+        } else {
+          killBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Kill kill = 5;</code>
+       */
+      public org.apache.mesos.executor.Protos.Event.Kill.Builder getKillBuilder() {
+        bitField0_ |= 0x00000020;
+        onChanged();
+        return getKillFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Kill kill = 5;</code>
+       */
+      public org.apache.mesos.executor.Protos.Event.KillOrBuilder getKillOrBuilder() {
+        if (killBuilder_ != null) {
+          return killBuilder_.getMessageOrBuilder();
+        } else {
+          return kill_;
+        }
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Kill kill = 5;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.executor.Protos.Event.Kill, org.apache.mesos.executor.Protos.Event.Kill.Builder, org.apache.mesos.executor.Protos.Event.KillOrBuilder> 
+          getKillFieldBuilder() {
+        if (killBuilder_ == null) {
+          killBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.executor.Protos.Event.Kill, org.apache.mesos.executor.Protos.Event.Kill.Builder, org.apache.mesos.executor.Protos.Event.KillOrBuilder>(
+                  kill_,
+                  getParentForChildren(),
+                  isClean());
+          kill_ = null;
+        }
+        return killBuilder_;
+      }
+
+      // optional .mesos.executor.Event.Message message = 6;
+      private org.apache.mesos.executor.Protos.Event.Message message_ = org.apache.mesos.executor.Protos.Event.Message.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.executor.Protos.Event.Message, org.apache.mesos.executor.Protos.Event.Message.Builder, org.apache.mesos.executor.Protos.Event.MessageOrBuilder> messageBuilder_;
+      /**
+       * <code>optional .mesos.executor.Event.Message message = 6;</code>
+       */
+      public boolean hasMessage() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Message message = 6;</code>
+       */
+      public org.apache.mesos.executor.Protos.Event.Message getMessage() {
+        if (messageBuilder_ == null) {
+          return message_;
+        } else {
+          return messageBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Message message = 6;</code>
+       */
+      public Builder setMessage(org.apache.mesos.executor.Protos.Event.Message value) {
+        if (messageBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          message_ = value;
+          onChanged();
+        } else {
+          messageBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Message message = 6;</code>
+       */
+      public Builder setMessage(
+          org.apache.mesos.executor.Protos.Event.Message.Builder builderForValue) {
+        if (messageBuilder_ == null) {
+          message_ = builderForValue.build();
+          onChanged();
+        } else {
+          messageBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Message message = 6;</code>
+       */
+      public Builder mergeMessage(org.apache.mesos.executor.Protos.Event.Message value) {
+        if (messageBuilder_ == null) {
+          if (((bitField0_ & 0x00000040) == 0x00000040) &&
+              message_ != org.apache.mesos.executor.Protos.Event.Message.getDefaultInstance()) {
+            message_ =
+              org.apache.mesos.executor.Protos.Event.Message.newBuilder(message_).mergeFrom(value).buildPartial();
+          } else {
+            message_ = value;
+          }
+          onChanged();
+        } else {
+          messageBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Message message = 6;</code>
+       */
+      public Builder clearMessage() {
+        if (messageBuilder_ == null) {
+          message_ = org.apache.mesos.executor.Protos.Event.Message.getDefaultInstance();
+          onChanged();
+        } else {
+          messageBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000040);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Message message = 6;</code>
+       */
+      public org.apache.mesos.executor.Protos.Event.Message.Builder getMessageBuilder() {
+        bitField0_ |= 0x00000040;
+        onChanged();
+        return getMessageFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Message message = 6;</code>
+       */
+      public org.apache.mesos.executor.Protos.Event.MessageOrBuilder getMessageOrBuilder() {
+        if (messageBuilder_ != null) {
+          return messageBuilder_.getMessageOrBuilder();
+        } else {
+          return message_;
+        }
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Message message = 6;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.executor.Protos.Event.Message, org.apache.mesos.executor.Protos.Event.Message.Builder, org.apache.mesos.executor.Protos.Event.MessageOrBuilder> 
+          getMessageFieldBuilder() {
+        if (messageBuilder_ == null) {
+          messageBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.executor.Protos.Event.Message, org.apache.mesos.executor.Protos.Event.Message.Builder, org.apache.mesos.executor.Protos.Event.MessageOrBuilder>(
+                  message_,
+                  getParentForChildren(),
+                  isClean());
+          message_ = null;
+        }
+        return messageBuilder_;
+      }
+
+      // optional .mesos.executor.Event.Error error = 7;
+      private org.apache.mesos.executor.Protos.Event.Error error_ = org.apache.mesos.executor.Protos.Event.Error.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.executor.Protos.Event.Error, org.apache.mesos.executor.Protos.Event.Error.Builder, org.apache.mesos.executor.Protos.Event.ErrorOrBuilder> errorBuilder_;
+      /**
+       * <code>optional .mesos.executor.Event.Error error = 7;</code>
+       */
+      public boolean hasError() {
+        return ((bitField0_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Error error = 7;</code>
+       */
+      public org.apache.mesos.executor.Protos.Event.Error getError() {
+        if (errorBuilder_ == null) {
+          return error_;
+        } else {
+          return errorBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Error error = 7;</code>
+       */
+      public Builder setError(org.apache.mesos.executor.Protos.Event.Error value) {
+        if (errorBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          error_ = value;
+          onChanged();
+        } else {
+          errorBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Error error = 7;</code>
+       */
+      public Builder setError(
+          org.apache.mesos.executor.Protos.Event.Error.Builder builderForValue) {
+        if (errorBuilder_ == null) {
+          error_ = builderForValue.build();
+          onChanged();
+        } else {
+          errorBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Error error = 7;</code>
+       */
+      public Builder mergeError(org.apache.mesos.executor.Protos.Event.Error value) {
+        if (errorBuilder_ == null) {
+          if (((bitField0_ & 0x00000080) == 0x00000080) &&
+              error_ != org.apache.mesos.executor.Protos.Event.Error.getDefaultInstance()) {
+            error_ =
+              org.apache.mesos.executor.Protos.Event.Error.newBuilder(error_).mergeFrom(value).buildPartial();
+          } else {
+            error_ = value;
+          }
+          onChanged();
+        } else {
+          errorBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Error error = 7;</code>
+       */
+      public Builder clearError() {
+        if (errorBuilder_ == null) {
+          error_ = org.apache.mesos.executor.Protos.Event.Error.getDefaultInstance();
+          onChanged();
+        } else {
+          errorBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000080);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Error error = 7;</code>
+       */
+      public org.apache.mesos.executor.Protos.Event.Error.Builder getErrorBuilder() {
+        bitField0_ |= 0x00000080;
+        onChanged();
+        return getErrorFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Error error = 7;</code>
+       */
+      public org.apache.mesos.executor.Protos.Event.ErrorOrBuilder getErrorOrBuilder() {
+        if (errorBuilder_ != null) {
+          return errorBuilder_.getMessageOrBuilder();
+        } else {
+          return error_;
+        }
+      }
+      /**
+       * <code>optional .mesos.executor.Event.Error error = 7;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.executor.Protos.Event.Error, org.apache.mesos.executor.Protos.Event.Error.Builder, org.apache.mesos.executor.Protos.Event.ErrorOrBuilder> 
+          getErrorFieldBuilder() {
+        if (errorBuilder_ == null) {
+          errorBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.executor.Protos.Event.Error, org.apache.mesos.executor.Protos.Event.Error.Builder, org.apache.mesos.executor.Protos.Event.ErrorOrBuilder>(
+                  error_,
+                  getParentForChildren(),
+                  isClean());
+          error_ = null;
+        }
+        return errorBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.executor.Event)
+    }
+
+    static {
+      defaultInstance = new Event(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.executor.Event)
+  }
+
+  public interface CallOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required .mesos.ExecutorID executor_id = 1;
+    /**
+     * <code>required .mesos.ExecutorID executor_id = 1;</code>
+     *
+     * <pre>
+     * Identifies the executor which generated this call.
+     * </pre>
+     */
+    boolean hasExecutorId();
+    /**
+     * <code>required .mesos.ExecutorID executor_id = 1;</code>
+     *
+     * <pre>
+     * Identifies the executor which generated this call.
+     * </pre>
+     */
+    org.apache.mesos.Protos.ExecutorID getExecutorId();
+    /**
+     * <code>required .mesos.ExecutorID executor_id = 1;</code>
+     *
+     * <pre>
+     * Identifies the executor which generated this call.
+     * </pre>
+     */
+    org.apache.mesos.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder();
+
+    // required .mesos.FrameworkID framework_id = 2;
+    /**
+     * <code>required .mesos.FrameworkID framework_id = 2;</code>
+     */
+    boolean hasFrameworkId();
+    /**
+     * <code>required .mesos.FrameworkID framework_id = 2;</code>
+     */
+    org.apache.mesos.Protos.FrameworkID getFrameworkId();
+    /**
+     * <code>required .mesos.FrameworkID framework_id = 2;</code>
+     */
+    org.apache.mesos.Protos.FrameworkIDOrBuilder getFrameworkIdOrBuilder();
+
+    // optional .mesos.executor.Call.Type type = 3;
+    /**
+     * <code>optional .mesos.executor.Call.Type type = 3;</code>
+     *
+     * <pre>
+     * Type of the call, indicates which optional field below should be
+     * present if that type has a nested message definition.
+     * In case type is SUBSCRIBED, no message needs to be set.
+     * See comments on `Event::Type` above on the reasoning behind this field being optional.
+     * </pre>
+     */
+    boolean hasType();
+    /**
+     * <code>optional .mesos.executor.Call.Type type = 3;</code>
+     *
+     * <pre>
+     * Type of the call, indicates which optional field below should be
+     * present if that type has a nested message definition.
+     * In case type is SUBSCRIBED, no message needs to be set.
+     * See comments on `Event::Type` above on the reasoning behind this field being optional.
+     * </pre>
+     */
+    org.apache.mesos.executor.Protos.Call.Type getType();
+
+    // optional .mesos.executor.Call.Subscribe subscribe = 4;
+    /**
+     * <code>optional .mesos.executor.Call.Subscribe subscribe = 4;</code>
+     */
+    boolean hasSubscribe();
+    /**
+     * <code>optional .mesos.executor.Call.Subscribe subscribe = 4;</code>
+     */
+    org.apache.mesos.executor.Protos.Call.Subscribe getSubscribe();
+    /**
+     * <code>optional .mesos.executor.Call.Subscribe subscribe = 4;</code>
+     */
+    org.apache.mesos.executor.Protos.Call.SubscribeOrBuilder getSubscribeOrBuilder();
+
+    // optional .mesos.executor.Call.Update update = 5;
+    /**
+     * <code>optional .mesos.executor.Call.Update update = 5;</code>
+     */
+    boolean hasUpdate();
+    /**
+     * <code>optional .mesos.executor.Call.Update update = 5;</code>
+     */
+    org.apache.mesos.executor.Protos.Call.Update getUpdate();
+    /**
+     * <code>optional .mesos.executor.Call.Update update = 5;</code>
+     */
+    org.apache.mesos.executor.Protos.Call.UpdateOrBuilder getUpdateOrBuilder();
+
+    // optional .mesos.executor.Call.Message message = 6;
+    /**
+     * <code>optional .mesos.executor.Call.Message message = 6;</code>
+     */
+    boolean hasMessage();
+    /**
+     * <code>optional .mesos.executor.Call.Message message = 6;</code>
+     */
+    org.apache.mesos.executor.Protos.Call.Message getMessage();
+    /**
+     * <code>optional .mesos.executor.Call.Message message = 6;</code>
+     */
+    org.apache.mesos.executor.Protos.Call.MessageOrBuilder getMessageOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.executor.Call}
+   *
+   * <pre>
+   **
+   * Executor call API.
+   *
+   * Like Event, a Call is described using the standard protocol buffer
+   * "union" trick (see above).
+   * </pre>
+   */
+  public static final class Call extends
+      com.google.protobuf.GeneratedMessage
+      implements CallOrBuilder {
+    // Use Call.newBuilder() to construct.
+    private Call(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Call(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Call defaultInstance;
+    public static Call getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Call getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Call(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              org.apache.mesos.Protos.ExecutorID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                subBuilder = executorId_.toBuilder();
+              }
+              executorId_ = input.readMessage(org.apache.mesos.Protos.ExecutorID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(executorId_);
+                executorId_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+            case 18: {
+              org.apache.mesos.Protos.FrameworkID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = frameworkId_.toBuilder();
+              }
+              frameworkId_ = input.readMessage(org.apache.mesos.Protos.FrameworkID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(frameworkId_);
+                frameworkId_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+            case 24: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.executor.Protos.Call.Type value = org.apache.mesos.executor.Protos.Call.Type.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(3, rawValue);
+              } else {
+                bitField0_ |= 0x00000004;
+                type_ = value;
+              }
+              break;
+            }
+            case 34: {
+              org.apache.mesos.executor.Protos.Call.Subscribe.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                subBuilder = subscribe_.toBuilder();
+              }
+              subscribe_ = input.readMessage(org.apache.mesos.executor.Protos.Call.Subscribe.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(subscribe_);
+                subscribe_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000008;
+              break;
+            }
+            case 42: {
+              org.apache.mesos.executor.Protos.Call.Update.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000010) == 0x00000010)) {
+                subBuilder = update_.toBuilder();
+              }
+              update_ = input.readMessage(org.apache.mesos.executor.Protos.Call.Update.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(update_);
+                update_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000010;
+              break;
+            }
+            case 50: {
+              org.apache.mesos.executor.Protos.Call.Message.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000020) == 0x00000020)) {
+                subBuilder = message_.toBuilder();
+              }
+              message_ = input.readMessage(org.apache.mesos.executor.Protos.Call.Message.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(message_);
+                message_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000020;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Call_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Call_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.executor.Protos.Call.class, org.apache.mesos.executor.Protos.Call.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Call> PARSER =
+        new com.google.protobuf.AbstractParser<Call>() {
+      public Call parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Call(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Call> getParserForType() {
+      return PARSER;
+    }
+
+    /**
+     * Protobuf enum {@code mesos.executor.Call.Type}
+     *
+     * <pre>
+     * Possible call types, followed by message definitions if
+     * applicable.
+     * </pre>
+     */
+    public enum Type
+        implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>UNKNOWN = 0;</code>
+       *
+       * <pre>
+       * See comments above on `Event::Type` for more details on this enum value.
+       * </pre>
+       */
+      UNKNOWN(0, 0),
+      /**
+       * <code>SUBSCRIBE = 1;</code>
+       *
+       * <pre>
+       * See 'Subscribe' below.
+       * </pre>
+       */
+      SUBSCRIBE(1, 1),
+      /**
+       * <code>UPDATE = 2;</code>
+       *
+       * <pre>
+       * See 'Update' below.
+       * </pre>
+       */
+      UPDATE(2, 2),
+      /**
+       * <code>MESSAGE = 3;</code>
+       *
+       * <pre>
+       * See 'Message' below.
+       * </pre>
+       */
+      MESSAGE(3, 3),
+      ;
+
+      /**
+       * <code>UNKNOWN = 0;</code>
+       *
+       * <pre>
+       * See comments above on `Event::Type` for more details on this enum value.
+       * </pre>
+       */
+      public static final int UNKNOWN_VALUE = 0;
+      /**
+       * <code>SUBSCRIBE = 1;</code>
+       *
+       * <pre>
+       * See 'Subscribe' below.
+       * </pre>
+       */
+      public static final int SUBSCRIBE_VALUE = 1;
+      /**
+       * <code>UPDATE = 2;</code>
+       *
+       * <pre>
+       * See 'Update' below.
+       * </pre>
+       */
+      public static final int UPDATE_VALUE = 2;
+      /**
+       * <code>MESSAGE = 3;</code>
+       *
+       * <pre>
+       * See 'Message' below.
+       * </pre>
+       */
+      public static final int MESSAGE_VALUE = 3;
+
+
+      public final int getNumber() { return value; }
+
+      public static Type valueOf(int value) {
+        switch (value) {
+          case 0: return UNKNOWN;
+          case 1: return SUBSCRIBE;
+          case 2: return UPDATE;
+          case 3: return MESSAGE;
+          default: return null;
+        }
+      }
+
+      public static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalGetValueMap() {
+        return internalValueMap;
+      }
+      private static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap<Type>() {
+              public Type findValueByNumber(int number) {
+                return Type.valueOf(number);
+              }
+            };
+
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
+          getValueDescriptor() {
+        return getDescriptor().getValues().get(index);
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptorForType() {
+        return getDescriptor();
+      }
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptor() {
+        return org.apache.mesos.executor.Protos.Call.getDescriptor().getEnumTypes().get(0);
+      }
+
+      private static final Type[] VALUES = values();
+
+      public static Type valueOf(
+          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+        if (desc.getType() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "EnumValueDescriptor is not for this type.");
+        }
+        return VALUES[desc.getIndex()];
+      }
+
+      private final int index;
+      private final int value;
+
+      private Type(int index, int value) {
+        this.index = index;
+        this.value = value;
+      }
+
+      // @@protoc_insertion_point(enum_scope:mesos.executor.Call.Type)
+    }
+
+    public interface SubscribeOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // repeated .mesos.TaskInfo unacknowledged_tasks = 1;
+      /**
+       * <code>repeated .mesos.TaskInfo unacknowledged_tasks = 1;</code>
+       */
+      java.util.List<org.apache.mesos.Protos.TaskInfo> 
+          getUnacknowledgedTasksList();
+      /**
+       * <code>repeated .mesos.TaskInfo unacknowledged_tasks = 1;</code>
+       */
+      org.apache.mesos.Protos.TaskInfo getUnacknowledgedTasks(int index);
+      /**
+       * <code>repeated .mesos.TaskInfo unacknowledged_tasks = 1;</code>
+       */
+      int getUnacknowledgedTasksCount();
+      /**
+       * <code>repeated .mesos.TaskInfo unacknowledged_tasks = 1;</code>
+       */
+      java.util.List<? extends org.apache.mesos.Protos.TaskInfoOrBuilder> 
+          getUnacknowledgedTasksOrBuilderList();
+      /**
+       * <code>repeated .mesos.TaskInfo unacknowledged_tasks = 1;</code>
+       */
+      org.apache.mesos.Protos.TaskInfoOrBuilder getUnacknowledgedTasksOrBuilder(
+          int index);
+
+      // repeated .mesos.executor.Call.Update unacknowledged_updates = 2;
+      /**
+       * <code>repeated .mesos.executor.Call.Update unacknowledged_updates = 2;</code>
+       */
+      java.util.List<org.apache.mesos.executor.Protos.Call.Update> 
+          getUnacknowledgedUpdatesList();
+      /**
+       * <code>repeated .mesos.executor.Call.Update unacknowledged_updates = 2;</code>
+       */
+      org.apache.mesos.executor.Protos.Call.Update getUnacknowledgedUpdates(int index);
+      /**
+       * <code>repeated .mesos.executor.Call.Update unacknowledged_updates = 2;</code>
+       */
+      int getUnacknowledgedUpdatesCount();
+      /**
+       * <code>repeated .mesos.executor.Call.Update unacknowledged_updates = 2;</code>
+       */
+      java.util.List<? extends org.apache.mesos.executor.Protos.Call.UpdateOrBuilder> 
+          getUnacknowledgedUpdatesOrBuilderList();
+      /**
+       * <code>repeated .mesos.executor.Call.Update unacknowledged_updates = 2;</code>
+       */
+      org.apache.mesos.executor.Protos.Call.UpdateOrBuilder getUnacknowledgedUpdatesOrBuilder(
+          int index);
+    }
+    /**
+     * Protobuf type {@code mesos.executor.Call.Subscribe}
+     *
+     * <pre>
+     * Request to subscribe with the slave. If subscribing after a disconnection,
+     * it must include a list of all the tasks and updates which haven't been
+     * acknowledged by the scheduler.
+     * </pre>
+     */
+    public static final class Subscribe extends
+        com.google.protobuf.GeneratedMessage
+        implements SubscribeOrBuilder {
+      // Use Subscribe.newBuilder() to construct.
+      private Subscribe(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Subscribe(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Subscribe defaultInstance;
+      public static Subscribe getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Subscribe getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Subscribe(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                  unacknowledgedTasks_ = new java.util.ArrayList<org.apache.mesos.Protos.TaskInfo>();
+                  mutable_bitField0_ |= 0x00000001;
+                }
+                unacknowledgedTasks_.add(input.readMessage(org.apache.mesos.Protos.TaskInfo.PARSER, extensionRegistry));
+                break;
+              }
+              case 18: {
+                if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+                  unacknowledgedUpdates_ = new java.util.ArrayList<org.apache.mesos.executor.Protos.Call.Update>();
+                  mutable_bitField0_ |= 0x00000002;
+                }
+                unacknowledgedUpdates_.add(input.readMessage(org.apache.mesos.executor.Protos.Call.Update.PARSER, extensionRegistry));
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+            unacknowledgedTasks_ = java.util.Collections.unmodifiableList(unacknowledgedTasks_);
+          }
+          if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+            unacknowledgedUpdates_ = java.util.Collections.unmodifiableList(unacknowledgedUpdates_);
+          }
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Call_Subscribe_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Call_Subscribe_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.executor.Protos.Call.Subscribe.class, org.apache.mesos.executor.Protos.Call.Subscribe.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Subscribe> PARSER =
+          new com.google.protobuf.AbstractParser<Subscribe>() {
+        public Subscribe parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Subscribe(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Subscribe> getParserForType() {
+        return PARSER;
+      }
+
+      // repeated .mesos.TaskInfo unacknowledged_tasks = 1;
+      public static final int UNACKNOWLEDGED_TASKS_FIELD_NUMBER = 1;
+      private java.util.List<org.apache.mesos.Protos.TaskInfo> unacknowledgedTasks_;
+      /**
+       * <code>repeated .mesos.TaskInfo unacknowledged_tasks = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.TaskInfo> getUnacknowledgedTasksList() {
+        return unacknowledgedTasks_;
+      }
+      /**
+       * <code>repeated .mesos.TaskInfo unacknowledged_tasks = 1;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.TaskInfoOrBuilder> 
+          getUnacknowledgedTasksOrBuilderList() {
+        return unacknowledgedTasks_;
+      }
+      /**
+       * <code>repeated .mesos.TaskInfo unacknowledged_tasks = 1;</code>
+       */
+      public int getUnacknowledgedTasksCount() {
+        return unacknowledgedTasks_.size();
+      }
+      /**
+       * <code>repeated .mesos.TaskInfo unacknowledged_tasks = 1;</code>
+       */
+      public org.apache.mesos.Protos.TaskInfo getUnacknowledgedTasks(int index) {
+        return unacknowledgedTasks_.get(index);
+      }
+      /**
+       * <code>repeated .mesos.TaskInfo unacknowledged_tasks = 1;</code>
+       */
+      public org.apache.mesos.Protos.TaskInfoOrBuilder getUnacknowledgedTasksOrBuilder(
+          int index) {
+        return unacknowledgedTasks_.get(index);
+      }
+
+      // repeated .mesos.executor.Call.Update unacknowledged_updates = 2;
+      public static final int UNACKNOWLEDGED_UPDATES_FIELD_NUMBER = 2;
+      private java.util.List<org.apache.mesos.executor.Protos.Call.Update> unacknowledgedUpdates_;
+      /**
+       * <code>repeated .mesos.executor.Call.Update unacknowledged_updates = 2;</code>
+       */
+      public java.util.List<org.apache.mesos.executor.Protos.Call.Update> getUnacknowledgedUpdatesList() {
+        return unacknowledgedUpdates_;
+      }
+      /**
+       * <code>repeated .mesos.executor.Call.Update unacknowledged_updates = 2;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.executor.Protos.Call.UpdateOrBuilder> 
+          getUnacknowledgedUpdatesOrBuilderList() {
+        return unacknowledgedUpdates_;
+      }
+      /**
+       * <code>repeated .mesos.executor.Call.Update unacknowledged_updates = 2;</code>
+       */
+      public int getUnacknowledgedUpdatesCount() {
+        return unacknowledgedUpdates_.size();
+      }
+      /**
+       * <code>repeated .mesos.executor.Call.Update unacknowledged_updates = 2;</code>
+       */
+      public org.apache.mesos.executor.Protos.Call.Update getUnacknowledgedUpdates(int index) {
+        return unacknowledgedUpdates_.get(index);
+      }
+      /**
+       * <code>repeated .mesos.executor.Call.Update unacknowledged_updates = 2;</code>
+       */
+      public org.apache.mesos.executor.Protos.Call.UpdateOrBuilder getUnacknowledgedUpdatesOrBuilder(
+          int index) {
+        return unacknowledgedUpdates_.get(index);
+      }
+
+      private void initFields() {
+        unacknowledgedTasks_ = java.util.Collections.emptyList();
+        unacknowledgedUpdates_ = java.util.Collections.emptyList();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        for (int i = 0; i < getUnacknowledgedTasksCount(); i++) {
+          if (!getUnacknowledgedTasks(i).isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        for (int i = 0; i < getUnacknowledgedUpdatesCount(); i++) {
+          if (!getUnacknowledgedUpdates(i).isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        for (int i = 0; i < unacknowledgedTasks_.size(); i++) {
+          output.writeMessage(1, unacknowledgedTasks_.get(i));
+        }
+        for (int i = 0; i < unacknowledgedUpdates_.size(); i++) {
+          output.writeMessage(2, unacknowledgedUpdates_.get(i));
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        for (int i = 0; i < unacknowledgedTasks_.size(); i++) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, unacknowledgedTasks_.get(i));
+        }
+        for (int i = 0; i < unacknowledgedUpdates_.size(); i++) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(2, unacknowledgedUpdates_.get(i));
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.executor.Protos.Call.Subscribe parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.executor.Protos.Call.Subscribe parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.executor.Protos.Call.Subscribe parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.executor.Protos.Call.Subscribe parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.executor.Protos.Call.Subscribe parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.executor.Protos.Call.Subscribe parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.executor.Protos.Call.Subscribe parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.executor.Protos.Call.Subscribe parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.executor.Protos.Call.Subscribe parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.executor.Protos.Call.Subscribe parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.executor.Protos.Call.Subscribe prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.executor.Call.Subscribe}
+       *
+       * <pre>
+       * Request to subscribe with the slave. If subscribing after a disconnection,
+       * it must include a list of all the tasks and updates which haven't been
+       * acknowledged by the scheduler.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.executor.Protos.Call.SubscribeOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Call_Subscribe_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Call_Subscribe_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.executor.Protos.Call.Subscribe.class, org.apache.mesos.executor.Protos.Call.Subscribe.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.executor.Protos.Call.Subscribe.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getUnacknowledgedTasksFieldBuilder();
+            getUnacknowledgedUpdatesFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (unacknowledgedTasksBuilder_ == null) {
+            unacknowledgedTasks_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000001);
+          } else {
+            unacknowledgedTasksBuilder_.clear();
+          }
+          if (unacknowledgedUpdatesBuilder_ == null) {
+            unacknowledgedUpdates_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000002);
+          } else {
+            unacknowledgedUpdatesBuilder_.clear();
+          }
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Call_Subscribe_descriptor;
+        }
+
+        public org.apache.mesos.executor.Protos.Call.Subscribe getDefaultInstanceForType() {
+          return org.apache.mesos.executor.Protos.Call.Subscribe.getDefaultInstance();
+        }
+
+        public org.apache.mesos.executor.Protos.Call.Subscribe build() {
+          org.apache.mesos.executor.Protos.Call.Subscribe result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.executor.Protos.Call.Subscribe buildPartial() {
+          org.apache.mesos.executor.Protos.Call.Subscribe result = new org.apache.mesos.executor.Protos.Call.Subscribe(this);
+          int from_bitField0_ = bitField0_;
+          if (unacknowledgedTasksBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              unacknowledgedTasks_ = java.util.Collections.unmodifiableList(unacknowledgedTasks_);
+              bitField0_ = (bitField0_ & ~0x00000001);
+            }
+            result.unacknowledgedTasks_ = unacknowledgedTasks_;
+          } else {
+            result.unacknowledgedTasks_ = unacknowledgedTasksBuilder_.build();
+          }
+          if (unacknowledgedUpdatesBuilder_ == null) {
+            if (((bitField0_ & 0x00000002) == 0x00000002)) {
+              unacknowledgedUpdates_ = java.util.Collections.unmodifiableList(unacknowledgedUpdates_);
+              bitField0_ = (bitField0_ & ~0x00000002);
+            }
+            result.unacknowledgedUpdates_ = unacknowledgedUpdates_;
+          } else {
+            result.unacknowledgedUpdates_ = unacknowledgedUpdatesBuilder_.build();
+          }
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.executor.Protos.Call.Subscribe) {
+            return mergeFrom((org.apache.mesos.executor.Protos.Call.Subscribe)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.executor.Protos.Call.Subscribe other) {
+          if (other == org.apache.mesos.executor.Protos.Call.Subscribe.getDefaultInstance()) return this;
+          if (unacknowledgedTasksBuilder_ == null) {
+            if (!other.unacknowledgedTasks_.isEmpty()) {
+              if (unacknowledgedTasks_.isEmpty()) {
+                unacknowledgedTasks_ = other.unacknowledgedTasks_;
+                bitField0_ = (bitField0_ & ~0x00000001);
+              } else {
+                ensureUnacknowledgedTasksIsMutable();
+                unacknowledgedTasks_.addAll(other.unacknowledgedTasks_);
+              }
+              onChanged();
+            }
+          } else {
+            if (!other.unacknowledgedTasks_.isEmpty()) {
+              if (unacknowledgedTasksBuilder_.isEmpty()) {
+                unacknowledgedTasksBuilder_.dispose();
+                unacknowledgedTasksBuilder_ = null;
+                unacknowledgedTasks_ = other.unacknowledgedTasks_;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                unacknowledgedTasksBuilder_ = 
+                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                     getUnacknowledgedTasksFieldBuilder() : null;
+              } else {
+                unacknowledgedTasksBuilder_.addAllMessages(other.unacknowledgedTasks_);
+              }
+            }
+          }
+          if (unacknowledgedUpdatesBuilder_ == null) {
+            if (!other.unacknowledgedUpdates_.isEmpty()) {
+              if (unacknowledgedUpdates_.isEmpty()) {
+                unacknowledgedUpdates_ = other.unacknowledgedUpdates_;
+                bitField0_ = (bitField0_ & ~0x00000002);
+              } else {
+                ensureUnacknowledgedUpdatesIsMutable();
+                unacknowledgedUpdates_.addAll(other.unacknowledgedUpdates_);
+              }
+              onChanged();
+            }
+          } else {
+            if (!other.unacknowledgedUpdates_.isEmpty()) {
+              if (unacknowledgedUpdatesBuilder_.isEmpty()) {
+                unacknowledgedUpdatesBuilder_.dispose();
+                unacknowledgedUpdatesBuilder_ = null;
+                unacknowledgedUpdates_ = other.unacknowledgedUpdates_;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                unacknowledgedUpdatesBuilder_ = 
+                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                     getUnacknowledgedUpdatesFieldBuilder() : null;
+              } else {
+                unacknowledgedUpdatesBuilder_.addAllMessages(other.unacknowledgedUpdates_);
+              }
+            }
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          for (int i = 0; i < getUnacknowledgedTasksCount(); i++) {
+            if (!getUnacknowledgedTasks(i).isInitialized()) {
+              
+              return false;
+            }
+          }
+          for (int i = 0; i < getUnacknowledgedUpdatesCount(); i++) {
+            if (!getUnacknowledgedUpdates(i).isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.executor.Protos.Call.Subscribe parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.executor.Protos.Call.Subscribe) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // repeated .mesos.TaskInfo unacknowledged_tasks = 1;
+        private java.util.List<org.apache.mesos.Protos.TaskInfo> unacknowledgedTasks_ =
+          java.util.Collections.emptyList();
+        private void ensureUnacknowledgedTasksIsMutable() {
+          if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+            unacknowledgedTasks_ = new java.util.ArrayList<org.apache.mesos.Protos.TaskInfo>(unacknowledgedTasks_);
+            bitField0_ |= 0x00000001;
+           }
+        }
+
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.Protos.TaskInfo, org.apache.mesos.Protos.TaskInfo.Builder, org.apache.mesos.Protos.TaskInfoOrBuilder> unacknowledgedTasksBuilder_;
+
+        /**
+         * <code>repeated .mesos.TaskInfo unacknowledged_tasks = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.Protos.TaskInfo> getUnacknowledgedTasksList() {
+          if (unacknowledgedTasksBuilder_ == null) {
+            return java.util.Collections.unmodifiableList(unacknowledgedTasks_);
+          } else {
+            return unacknowledgedTasksBuilder_.getMessageList();
+          }
+        }
+        /**
+         * <code>repeated .mesos.TaskInfo unacknowledged_tasks = 1;</code>
+         */
+        public int getUnacknowledgedTasksCount() {
+          if (unacknowledgedTasksBuilder_ == null) {
+            return unacknowledgedTasks_.size();
+          } else {
+            return unacknowledgedTasksBuilder_.getCount();
+          }
+        }
+        /**
+         * <code>repeated .mesos.TaskInfo unacknowledged_tasks = 1;</code>
+         */
+        public org.apache.mesos.Protos.TaskInfo getUnacknowledgedTasks(int index) {
+          if (unacknowledgedTasksBuilder_ == null) {
+            return unacknowledgedTasks_.get(index);
+          } else {
+            return unacknowledgedTasksBuilder_.getMessage(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.TaskInfo unacknowledged_tasks = 1;</code>
+         */
+        public Builder setUnacknowledgedTasks(
+            int index, org.apache.mesos.Protos.TaskInfo value) {
+          if (unacknowledgedTasksBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureUnacknowledgedTasksIsMutable();
+            unacknowledgedTasks_.set(index, value);
+            onChanged();
+          } else {
+            unacknowledgedTasksBuilder_.setMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.TaskInfo unacknowledged_tasks = 1;</code>
+         */
+        public Builder setUnacknowledgedTasks(
+            int index, org.apache.mesos.Protos.TaskInfo.Builder builderForValue) {
+          if (unacknowledgedTasksBuilder_ == null) {
+            ensureUnacknowledgedTasksIsMutable();
+            unacknowledgedTasks_.set(index, builderForValue.build());
+            onChanged();
+          } else {
+            unacknowledgedTasksBuilder_.setMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.TaskInfo unacknowledged_tasks = 1;</code>
+         */
+        public Builder addUnacknowledgedTasks(org.apache.mesos.Protos.TaskInfo value) {
+          if (unacknowledgedTasksBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureUnacknowledgedTasksIsMutable();
+            unacknowledgedTasks_.add(value);
+            onChanged();
+          } else {
+            unacknowledgedTasksBuilder_.addMessage(value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.TaskInfo unacknowledged_tasks = 1;</code>
+         */
+        public Builder addUnacknowledgedTasks(
+            int index, org.apache.mesos.Protos.TaskInfo value) {
+          if (unacknowledgedTasksBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureUnacknowledgedTasksIsMutable();
+            unacknowledgedTasks_.add(index, value);
+            onChanged();
+          } else {
+            unacknowledgedTasksBuilder_.addMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.TaskInfo unacknowledged_tasks = 1;</code>
+         */
+        public Builder addUnacknowledgedTasks(
+            org.apache.mesos.Protos.TaskInfo.Builder builderForValue) {
+          if (unacknowledgedTasksBuilder_ == null) {
+            ensureUnacknowledgedTasksIsMutable();
+            unacknowledgedTasks_.add(builderForValue.build());
+            onChanged();
+          } else {
+            unacknowledgedTasksBuilder_.addMessage(builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.TaskInfo unacknowledged_tasks = 1;</code>
+         */
+        public Builder addUnacknowledgedTasks(
+            int index, org.apache.mesos.Protos.TaskInfo.Builder builderForValue) {
+          if (unacknowledgedTasksBuilder_ == null) {
+            ensureUnacknowledgedTasksIsMutable();
+            unacknowledgedTasks_.add(index, builderForValue.build());
+            onChanged();
+          } else {
+            unacknowledgedTasksBuilder_.addMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.TaskInfo unacknowledged_tasks = 1;</code>
+         */
+        public Builder addAllUnacknowledgedTasks(
+            java.lang.Iterable<? extends org.apache.mesos.Protos.TaskInfo> values) {
+          if (unacknowledgedTasksBuilder_ == null) {
+            ensureUnacknowledgedTasksIsMutable();
+            super.addAll(values, unacknowledgedTasks_);
+            onChanged();
+          } else {
+            unacknowledgedTasksBuilder_.addAllMessages(values);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.TaskInfo unacknowledged_tasks = 1;</code>
+         */
+        public Builder clearUnacknowledgedTasks() {
+          if (unacknowledgedTasksBuilder_ == null) {
+            unacknowledgedTasks_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000001);
+            onChanged();
+          } else {
+            unacknowledgedTasksBuilder_.clear();
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.TaskInfo unacknowledged_tasks = 1;</code>
+         */
+        public Builder removeUnacknowledgedTasks(int index) {
+          if (unacknowledgedTasksBuilder_ == null) {
+            ensureUnacknowledgedTasksIsMutable();
+            unacknowledgedTasks_.remove(index);
+            onChanged();
+          } else {
+            unacknowledgedTasksBuilder_.remove(index);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.TaskInfo unacknowledged_tasks = 1;</code>
+         */
+        public org.apache.mesos.Protos.TaskInfo.Builder getUnacknowledgedTasksBuilder(
+            int index) {
+          return getUnacknowledgedTasksFieldBuilder().getBuilder(index);
+        }
+        /**
+         * <code>repeated .mesos.TaskInfo unacknowledged_tasks = 1;</code>
+         */
+        public org.apache.mesos.Protos.TaskInfoOrBuilder getUnacknowledgedTasksOrBuilder(
+            int index) {
+          if (unacknowledgedTasksBuilder_ == null) {
+            return unacknowledgedTasks_.get(index);  } else {
+            return unacknowledgedTasksBuilder_.getMessageOrBuilder(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.TaskInfo unacknowledged_tasks = 1;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.Protos.TaskInfoOrBuilder> 
+             getUnacknowledgedTasksOrBuilderList() {
+          if (unacknowledgedTasksBuilder_ != null) {
+            return unacknowledgedTasksBuilder_.getMessageOrBuilderList();
+          } else {
+            return java.util.Collections.unmodifiableList(unacknowledgedTasks_);
+          }
+        }
+        /**
+         * <code>repeated .mesos.TaskInfo unacknowledged_tasks = 1;</code>
+         */
+        public org.apache.mesos.Protos.TaskInfo.Builder addUnacknowledgedTasksBuilder() {
+          return getUnacknowledgedTasksFieldBuilder().addBuilder(
+              org.apache.mesos.Protos.TaskInfo.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.TaskInfo unacknowledged_tasks = 1;</code>
+         */
+        public org.apache.mesos.Protos.TaskInfo.Builder addUnacknowledgedTasksBuilder(
+            int index) {
+          return getUnacknowledgedTasksFieldBuilder().addBuilder(
+              index, org.apache.mesos.Protos.TaskInfo.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.TaskInfo unacknowledged_tasks = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.Protos.TaskInfo.Builder> 
+             getUnacknowledgedTasksBuilderList() {
+          return getUnacknowledgedTasksFieldBuilder().getBuilderList();
+        }
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.Protos.TaskInfo, org.apache.mesos.Protos.TaskInfo.Builder, org.apache.mesos.Protos.TaskInfoOrBuilder> 
+            getUnacknowledgedTasksFieldBuilder() {
+          if (unacknowledgedTasksBuilder_ == null) {
+            unacknowledgedTasksBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.Protos.TaskInfo, org.apache.mesos.Protos.TaskInfo.Builder, org.apache.mesos.Protos.TaskInfoOrBuilder>(
+                    unacknowledgedTasks_,
+                    ((bitField0_ & 0x00000001) == 0x00000001),
+                    getParentForChildren(),
+                    isClean());
+            unacknowledgedTasks_ = null;
+          }
+          return unacknowledgedTasksBuilder_;
+        }
+
+        // repeated .mesos.executor.Call.Update unacknowledged_updates = 2;
+        private java.util.List<org.apache.mesos.executor.Protos.Call.Update> unacknowledgedUpdates_ =
+          java.util.Collections.emptyList();
+        private void ensureUnacknowledgedUpdatesIsMutable() {
+          if (!((bitField0_ & 0x00000002) == 0x00000002)) {
+            unacknowledgedUpdates_ = new java.util.ArrayList<org.apache.mesos.executor.Protos.Call.Update>(unacknowledgedUpdates_);
+            bitField0_ |= 0x00000002;
+           }
+        }
+
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.executor.Protos.Call.Update, org.apache.mesos.executor.Protos.Call.Update.Builder, org.apache.mesos.executor.Protos.Call.UpdateOrBuilder> unacknowledgedUpdatesBuilder_;
+
+        /**
+         * <code>repeated .mesos.executor.Call.Update unacknowledged_updates = 2;</code>
+         */
+        public java.util.List<org.apache.mesos.executor.Protos.Call.Update> getUnacknowledgedUpdatesList() {
+          if (unacknowledgedUpdatesBuilder_ == null) {
+            return java.util.Collections.unmodifiableList(unacknowledgedUpdates_);
+          } else {
+            return unacknowledgedUpdatesBuilder_.getMessageList();
+          }
+        }
+        /**
+         * <code>repeated .mesos.executor.Call.Update unacknowledged_updates = 2;</code>
+         */
+        public int getUnacknowledgedUpdatesCount() {
+          if (unacknowledgedUpdatesBuilder_ == null) {
+            return unacknowledgedUpdates_.size();
+          } else {
+            return unacknowledgedUpdatesBuilder_.getCount();
+          }
+        }
+        /**
+         * <code>repeated .mesos.executor.Call.Update unacknowledged_updates = 2;</code>
+         */
+        public org.apache.mesos.executor.Protos.Call.Update getUnacknowledgedUpdates(int index) {
+          if (unacknowledgedUpdatesBuilder_ == null) {
+            return unacknowledgedUpdates_.get(index);
+          } else {
+            return unacknowledgedUpdatesBuilder_.getMessage(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.executor.Call.Update unacknowledged_updates = 2;</code>
+         */
+        public Builder setUnacknowledgedUpdates(
+            int index, org.apache.mesos.executor.Protos.Call.Update value) {
+          if (unacknowledgedUpdatesBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureUnacknowledgedUpdatesIsMutable();
+            unacknowledgedUpdates_.set(index, value);
+            onChanged();
+          } else {
+            unacknowledgedUpdatesBuilder_.setMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.executor.Call.Update unacknowledged_updates = 2;</code>
+         */
+        public Builder setUnacknowledgedUpdates(
+            int index, org.apache.mesos.executor.Protos.Call.Update.Builder builderForValue) {
+          if (unacknowledgedUpdatesBuilder_ == null) {
+            ensureUnacknowledgedUpdatesIsMutable();
+            unacknowledgedUpdates_.set(index, builderForValue.build());
+            onChanged();
+          } else {
+            unacknowledgedUpdatesBuilder_.setMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.executor.Call.Update unacknowledged_updates = 2;</code>
+         */
+        public Builder addUnacknowledgedUpdates(org.apache.mesos.executor.Protos.Call.Update value) {
+          if (unacknowledgedUpdatesBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureUnacknowledgedUpdatesIsMutable();
+            unacknowledgedUpdates_.add(value);
+            onChanged();
+          } else {
+            unacknowledgedUpdatesBuilder_.addMessage(value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.executor.Call.Update unacknowledged_updates = 2;</code>
+         */
+        public Builder addUnacknowledgedUpdates(
+            int index, org.apache.mesos.executor.Protos.Call.Update value) {
+          if (unacknowledgedUpdatesBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureUnacknowledgedUpdatesIsMutable();
+            unacknowledgedUpdates_.add(index, value);
+            onChanged();
+          } else {
+            unacknowledgedUpdatesBuilder_.addMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.executor.Call.Update unacknowledged_updates = 2;</code>
+         */
+        public Builder addUnacknowledgedUpdates(
+            org.apache.mesos.executor.Protos.Call.Update.Builder builderForValue) {
+          if (unacknowledgedUpdatesBuilder_ == null) {
+            ensureUnacknowledgedUpdatesIsMutable();
+            unacknowledgedUpdates_.add(builderForValue.build());
+            onChanged();
+          } else {
+            unacknowledgedUpdatesBuilder_.addMessage(builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.executor.Call.Update unacknowledged_updates = 2;</code>
+         */
+        public Builder addUnacknowledgedUpdates(
+            int index, org.apache.mesos.executor.Protos.Call.Update.Builder builderForValue) {
+          if (unacknowledgedUpdatesBuilder_ == null) {
+            ensureUnacknowledgedUpdatesIsMutable();
+            unacknowledgedUpdates_.add(index, builderForValue.build());
+            onChanged();
+          } else {
+            unacknowledgedUpdatesBuilder_.addMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.executor.Call.Update unacknowledged_updates = 2;</code>
+         */
+        public Builder addAllUnacknowledgedUpdates(
+            java.lang.Iterable<? extends org.apache.mesos.executor.Protos.Call.Update> values) {
+          if (unacknowledgedUpdatesBuilder_ == null) {
+            ensureUnacknowledgedUpdatesIsMutable();
+            super.addAll(values, unacknowledgedUpdates_);
+            onChanged();
+          } else {
+            unacknowledgedUpdatesBuilder_.addAllMessages(values);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.executor.Call.Update unacknowledged_updates = 2;</code>
+         */
+        public Builder clearUnacknowledgedUpdates() {
+          if (unacknowledgedUpdatesBuilder_ == null) {
+            unacknowledgedUpdates_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000002);
+            onChanged();
+          } else {
+            unacknowledgedUpdatesBuilder_.clear();
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.executor.Call.Update unacknowledged_updates = 2;</code>
+         */
+        public Builder removeUnacknowledgedUpdates(int index) {
+          if (unacknowledgedUpdatesBuilder_ == null) {
+            ensureUnacknowledgedUpdatesIsMutable();
+            unacknowledgedUpdates_.remove(index);
+            onChanged();
+          } else {
+            unacknowledgedUpdatesBuilder_.remove(index);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.executor.Call.Update unacknowledged_updates = 2;</code>
+         */
+        public org.apache.mesos.executor.Protos.Call.Update.Builder getUnacknowledgedUpdatesBuilder(
+            int index) {
+          return getUnacknowledgedUpdatesFieldBuilder().getBuilder(index);
+        }
+        /**
+         * <code>repeated .mesos.executor.Call.Update unacknowledged_updates = 2;</code>
+         */
+        public org.apache.mesos.executor.Protos.Call.UpdateOrBuilder getUnacknowledgedUpdatesOrBuilder(
+            int index) {
+          if (unacknowledgedUpdatesBuilder_ == null) {
+            return unacknowledgedUpdates_.get(index);  } else {
+            return unacknowledgedUpdatesBuilder_.getMessageOrBuilder(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.executor.Call.Update unacknowledged_updates = 2;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.executor.Protos.Call.UpdateOrBuilder> 
+             getUnacknowledgedUpdatesOrBuilderList() {
+          if (unacknowledgedUpdatesBuilder_ != null) {
+            return unacknowledgedUpdatesBuilder_.getMessageOrBuilderList();
+          } else {
+            return java.util.Collections.unmodifiableList(unacknowledgedUpdates_);
+          }
+        }
+        /**
+         * <code>repeated .mesos.executor.Call.Update unacknowledged_updates = 2;</code>
+         */
+        public org.apache.mesos.executor.Protos.Call.Update.Builder addUnacknowledgedUpdatesBuilder() {
+          return getUnacknowledgedUpdatesFieldBuilder().addBuilder(
+              org.apache.mesos.executor.Protos.Call.Update.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.executor.Call.Update unacknowledged_updates = 2;</code>
+         */
+        public org.apache.mesos.executor.Protos.Call.Update.Builder addUnacknowledgedUpdatesBuilder(
+            int index) {
+          return getUnacknowledgedUpdatesFieldBuilder().addBuilder(
+              index, org.apache.mesos.executor.Protos.Call.Update.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.executor.Call.Update unacknowledged_updates = 2;</code>
+         */
+        public java.util.List<org.apache.mesos.executor.Protos.Call.Update.Builder> 
+             getUnacknowledgedUpdatesBuilderList() {
+          return getUnacknowledgedUpdatesFieldBuilder().getBuilderList();
+        }
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.executor.Protos.Call.Update, org.apache.mesos.executor.Protos.Call.Update.Builder, org.apache.mesos.executor.Protos.Call.UpdateOrBuilder> 
+            getUnacknowledgedUpdatesFieldBuilder() {
+          if (unacknowledgedUpdatesBuilder_ == null) {
+            unacknowledgedUpdatesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.executor.Protos.Call.Update, org.apache.mesos.executor.Protos.Call.Update.Builder, org.apache.mesos.executor.Protos.Call.UpdateOrBuilder>(
+                    unacknowledgedUpdates_,
+                    ((bitField0_ & 0x00000002) == 0x00000002),
+                    getParentForChildren(),
+                    isClean());
+            unacknowledgedUpdates_ = null;
+          }
+          return unacknowledgedUpdatesBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.executor.Call.Subscribe)
+      }
+
+      static {
+        defaultInstance = new Subscribe(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.executor.Call.Subscribe)
+    }
+
+    public interface UpdateOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required .mesos.TaskStatus status = 1;
+      /**
+       * <code>required .mesos.TaskStatus status = 1;</code>
+       */
+      boolean hasStatus();
+      /**
+       * <code>required .mesos.TaskStatus status = 1;</code>
+       */
+      org.apache.mesos.Protos.TaskStatus getStatus();
+      /**
+       * <code>required .mesos.TaskStatus status = 1;</code>
+       */
+      org.apache.mesos.Protos.TaskStatusOrBuilder getStatusOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.executor.Call.Update}
+     *
+     * <pre>
+     * Notifies the scheduler that a task has transitioned from one
+     * state to another. Status updates should be used by executors
+     * to reliably communicate the status of the tasks that they
+     * manage. It is crucial that a terminal update (see TaskState
+     * in mesos.proto) is sent to the scheduler as soon as the task
+     * terminates, in order for Mesos to release the resources allocated
+     * to the task. It is the responsibility of the scheduler to
+     * explicitly acknowledge the receipt of a status update. See
+     * 'Acknowledged' in the 'Events' section above for the semantics.
+     * </pre>
+     */
+    public static final class Update extends
+        com.google.protobuf.GeneratedMessage
+        implements UpdateOrBuilder {
+      // Use Update.newBuilder() to construct.
+      private Update(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Update(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Update defaultInstance;
+      public static Update getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Update getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Update(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.Protos.TaskStatus.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = status_.toBuilder();
+                }
+                status_ = input.readMessage(org.apache.mesos.Protos.TaskStatus.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(status_);
+                  status_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Call_Update_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Call_Update_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.executor.Protos.Call.Update.class, org.apache.mesos.executor.Protos.Call.Update.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Update> PARSER =
+          new com.google.protobuf.AbstractParser<Update>() {
+        public Update parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Update(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Update> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required .mesos.TaskStatus status = 1;
+      public static final int STATUS_FIELD_NUMBER = 1;
+      private org.apache.mesos.Protos.TaskStatus status_;
+      /**
+       * <code>required .mesos.TaskStatus status = 1;</code>
+       */
+      public boolean hasStatus() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.TaskStatus status = 1;</code>
+       */
+      public org.apache.mesos.Protos.TaskStatus getStatus() {
+        return status_;
+      }
+      /**
+       * <code>required .mesos.TaskStatus status = 1;</code>
+       */
+      public org.apache.mesos.Protos.TaskStatusOrBuilder getStatusOrBuilder() {
+        return status_;
+      }
+
+      private void initFields() {
+        status_ = org.apache.mesos.Protos.TaskStatus.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasStatus()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getStatus().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, status_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, status_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.executor.Protos.Call.Update parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.executor.Protos.Call.Update parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.executor.Protos.Call.Update parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.executor.Protos.Call.Update parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.executor.Protos.Call.Update parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.executor.Protos.Call.Update parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.executor.Protos.Call.Update parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.executor.Protos.Call.Update parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.executor.Protos.Call.Update parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.executor.Protos.Call.Update parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.executor.Protos.Call.Update prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.executor.Call.Update}
+       *
+       * <pre>
+       * Notifies the scheduler that a task has transitioned from one
+       * state to another. Status updates should be used by executors
+       * to reliably communicate the status of the tasks that they
+       * manage. It is crucial that a terminal update (see TaskState
+       * in mesos.proto) is sent to the scheduler as soon as the task
+       * terminates, in order for Mesos to release the resources allocated
+       * to the task. It is the responsibility of the scheduler to
+       * explicitly acknowledge the receipt of a status update. See
+       * 'Acknowledged' in the 'Events' section above for the semantics.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.executor.Protos.Call.UpdateOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Call_Update_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Call_Update_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.executor.Protos.Call.Update.class, org.apache.mesos.executor.Protos.Call.Update.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.executor.Protos.Call.Update.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getStatusFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (statusBuilder_ == null) {
+            status_ = org.apache.mesos.Protos.TaskStatus.getDefaultInstance();
+          } else {
+            statusBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Call_Update_descriptor;
+        }
+
+        public org.apache.mesos.executor.Protos.Call.Update getDefaultInstanceForType() {
+          return org.apache.mesos.executor.Protos.Call.Update.getDefaultInstance();
+        }
+
+        public org.apache.mesos.executor.Protos.Call.Update build() {
+          org.apache.mesos.executor.Protos.Call.Update result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.executor.Protos.Call.Update buildPartial() {
+          org.apache.mesos.executor.Protos.Call.Update result = new org.apache.mesos.executor.Protos.Call.Update(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (statusBuilder_ == null) {
+            result.status_ = status_;
+          } else {
+            result.status_ = statusBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.executor.Protos.Call.Update) {
+            return mergeFrom((org.apache.mesos.executor.Protos.Call.Update)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.executor.Protos.Call.Update other) {
+          if (other == org.apache.mesos.executor.Protos.Call.Update.getDefaultInstance()) return this;
+          if (other.hasStatus()) {
+            mergeStatus(other.getStatus());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasStatus()) {
+            
+            return false;
+          }
+          if (!getStatus().isInitialized()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.executor.Protos.Call.Update parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.executor.Protos.Call.Update) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required .mesos.TaskStatus status = 1;
+        private org.apache.mesos.Protos.TaskStatus status_ = org.apache.mesos.Protos.TaskStatus.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.TaskStatus, org.apache.mesos.Protos.TaskStatus.Builder, org.apache.mesos.Protos.TaskStatusOrBuilder> statusBuilder_;
+        /**
+         * <code>required .mesos.TaskStatus status = 1;</code>
+         */
+        public boolean hasStatus() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.TaskStatus status = 1;</code>
+         */
+        public org.apache.mesos.Protos.TaskStatus getStatus() {
+          if (statusBuilder_ == null) {
+            return status_;
+          } else {
+            return statusBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.TaskStatus status = 1;</code>
+         */
+        public Builder setStatus(org.apache.mesos.Protos.TaskStatus value) {
+          if (statusBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            status_ = value;
+            onChanged();
+          } else {
+            statusBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.TaskStatus status = 1;</code>
+         */
+        public Builder setStatus(
+            org.apache.mesos.Protos.TaskStatus.Builder builderForValue) {
+          if (statusBuilder_ == null) {
+            status_ = builderForValue.build();
+            onChanged();
+          } else {
+            statusBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.TaskStatus status = 1;</code>
+         */
+        public Builder mergeStatus(org.apache.mesos.Protos.TaskStatus value) {
+          if (statusBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                status_ != org.apache.mesos.Protos.TaskStatus.getDefaultInstance()) {
+              status_ =
+                org.apache.mesos.Protos.TaskStatus.newBuilder(status_).mergeFrom(value).buildPartial();
+            } else {
+              status_ = value;
+            }
+            onChanged();
+          } else {
+            statusBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.TaskStatus status = 1;</code>
+         */
+        public Builder clearStatus() {
+          if (statusBuilder_ == null) {
+            status_ = org.apache.mesos.Protos.TaskStatus.getDefaultInstance();
+            onChanged();
+          } else {
+            statusBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>required .mesos.TaskStatus status = 1;</code>
+         */
+        public org.apache.mesos.Protos.TaskStatus.Builder getStatusBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getStatusFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.TaskStatus status = 1;</code>
+         */
+        public org.apache.mesos.Protos.TaskStatusOrBuilder getStatusOrBuilder() {
+          if (statusBuilder_ != null) {
+            return statusBuilder_.getMessageOrBuilder();
+          } else {
+            return status_;
+          }
+        }
+        /**
+         * <code>required .mesos.TaskStatus status = 1;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.TaskStatus, org.apache.mesos.Protos.TaskStatus.Builder, org.apache.mesos.Protos.TaskStatusOrBuilder> 
+            getStatusFieldBuilder() {
+          if (statusBuilder_ == null) {
+            statusBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.TaskStatus, org.apache.mesos.Protos.TaskStatus.Builder, org.apache.mesos.Protos.TaskStatusOrBuilder>(
+                    status_,
+                    getParentForChildren(),
+                    isClean());
+            status_ = null;
+          }
+          return statusBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.executor.Call.Update)
+      }
+
+      static {
+        defaultInstance = new Update(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.executor.Call.Update)
+    }
+
+    public interface MessageOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required bytes data = 2;
+      /**
+       * <code>required bytes data = 2;</code>
+       */
+      boolean hasData();
+      /**
+       * <code>required bytes data = 2;</code>
+       */
+      com.google.protobuf.ByteString getData();
+    }
+    /**
+     * Protobuf type {@code mesos.executor.Call.Message}
+     *
+     * <pre>
+     * Sends arbitrary binary data to the scheduler. Note that Mesos
+     * neither interprets this data nor makes any guarantees about the
+     * delivery of this message to the scheduler.
+     * See 'Message' in the 'Events' section.
+     * </pre>
+     */
+    public static final class Message extends
+        com.google.protobuf.GeneratedMessage
+        implements MessageOrBuilder {
+      // Use Message.newBuilder() to construct.
+      private Message(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Message(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Message defaultInstance;
+      public static Message getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Message getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Message(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 18: {
+                bitField0_ |= 0x00000001;
+                data_ = input.readBytes();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Call_Message_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Call_Message_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.executor.Protos.Call.Message.class, org.apache.mesos.executor.Protos.Call.Message.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Message> PARSER =
+          new com.google.protobuf.AbstractParser<Message>() {
+        public Message parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Message(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Message> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required bytes data = 2;
+      public static final int DATA_FIELD_NUMBER = 2;
+      private com.google.protobuf.ByteString data_;
+      /**
+       * <code>required bytes data = 2;</code>
+       */
+      public boolean hasData() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required bytes data = 2;</code>
+       */
+      public com.google.protobuf.ByteString getData() {
+        return data_;
+      }
+
+      private void initFields() {
+        data_ = com.google.protobuf.ByteString.EMPTY;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasData()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeBytes(2, data_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(2, data_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.executor.Protos.Call.Message parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.executor.Protos.Call.Message parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.executor.Protos.Call.Message parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.executor.Protos.Call.Message parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.executor.Protos.Call.Message parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.executor.Protos.Call.Message parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.executor.Protos.Call.Message parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.executor.Protos.Call.Message parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.executor.Protos.Call.Message parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.executor.Protos.Call.Message parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.executor.Protos.Call.Message prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.executor.Call.Message}
+       *
+       * <pre>
+       * Sends arbitrary binary data to the scheduler. Note that Mesos
+       * neither interprets this data nor makes any guarantees about the
+       * delivery of this message to the scheduler.
+       * See 'Message' in the 'Events' section.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.executor.Protos.Call.MessageOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Call_Message_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Call_Message_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.executor.Protos.Call.Message.class, org.apache.mesos.executor.Protos.Call.Message.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.executor.Protos.Call.Message.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          data_ = com.google.protobuf.ByteString.EMPTY;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Call_Message_descriptor;
+        }
+
+        public org.apache.mesos.executor.Protos.Call.Message getDefaultInstanceForType() {
+          return org.apache.mesos.executor.Protos.Call.Message.getDefaultInstance();
+        }
+
+        public org.apache.mesos.executor.Protos.Call.Message build() {
+          org.apache.mesos.executor.Protos.Call.Message result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.executor.Protos.Call.Message buildPartial() {
+          org.apache.mesos.executor.Protos.Call.Message result = new org.apache.mesos.executor.Protos.Call.Message(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.data_ = data_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.executor.Protos.Call.Message) {
+            return mergeFrom((org.apache.mesos.executor.Protos.Call.Message)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.executor.Protos.Call.Message other) {
+          if (other == org.apache.mesos.executor.Protos.Call.Message.getDefaultInstance()) return this;
+          if (other.hasData()) {
+            setData(other.getData());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasData()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.executor.Protos.Call.Message parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.executor.Protos.Call.Message) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required bytes data = 2;
+        private com.google.protobuf.ByteString data_ = com.google.protobuf.ByteString.EMPTY;
+        /**
+         * <code>required bytes data = 2;</code>
+         */
+        public boolean hasData() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required bytes data = 2;</code>
+         */
+        public com.google.protobuf.ByteString getData() {
+          return data_;
+        }
+        /**
+         * <code>required bytes data = 2;</code>
+         */
+        public Builder setData(com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          data_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required bytes data = 2;</code>
+         */
+        public Builder clearData() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          data_ = getDefaultInstance().getData();
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.executor.Call.Message)
+      }
+
+      static {
+        defaultInstance = new Message(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.executor.Call.Message)
+    }
+
+    private int bitField0_;
+    // required .mesos.ExecutorID executor_id = 1;
+    public static final int EXECUTOR_ID_FIELD_NUMBER = 1;
+    private org.apache.mesos.Protos.ExecutorID executorId_;
+    /**
+     * <code>required .mesos.ExecutorID executor_id = 1;</code>
+     *
+     * <pre>
+     * Identifies the executor which generated this call.
+     * </pre>
+     */
+    public boolean hasExecutorId() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required .mesos.ExecutorID executor_id = 1;</code>
+     *
+     * <pre>
+     * Identifies the executor which generated this call.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.ExecutorID getExecutorId() {
+      return executorId_;
+    }
+    /**
+     * <code>required .mesos.ExecutorID executor_id = 1;</code>
+     *
+     * <pre>
+     * Identifies the executor which generated this call.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder() {
+      return executorId_;
+    }
+
+    // required .mesos.FrameworkID framework_id = 2;
+    public static final int FRAMEWORK_ID_FIELD_NUMBER = 2;
+    private org.apache.mesos.Protos.FrameworkID frameworkId_;
+    /**
+     * <code>required .mesos.FrameworkID framework_id = 2;</code>
+     */
+    public boolean hasFrameworkId() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>required .mesos.FrameworkID framework_id = 2;</code>
+     */
+    public org.apache.mesos.Protos.FrameworkID getFrameworkId() {
+      return frameworkId_;
+    }
+    /**
+     * <code>required .mesos.FrameworkID framework_id = 2;</code>
+     */
+    public org.apache.mesos.Protos.FrameworkIDOrBuilder getFrameworkIdOrBuilder() {
+      return frameworkId_;
+    }
+
+    // optional .mesos.executor.Call.Type type = 3;
+    public static final int TYPE_FIELD_NUMBER = 3;
+    private org.apache.mesos.executor.Protos.Call.Type type_;
+    /**
+     * <code>optional .mesos.executor.Call.Type type = 3;</code>
+     *
+     * <pre>
+     * Type of the call, indicates which optional field below should be
+     * present if that type has a nested message definition.
+     * In case type is SUBSCRIBED, no message needs to be set.
+     * See comments on `Event::Type` above on the reasoning behind this field being optional.
+     * </pre>
+     */
+    public boolean hasType() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional .mesos.executor.Call.Type type = 3;</code>
+     *
+     * <pre>
+     * Type of the call, indicates which optional field below should be
+     * present if that type has a nested message definition.
+     * In case type is SUBSCRIBED, no message needs to be set.
+     * See comments on `Event::Type` above on the reasoning behind this field being optional.
+     * </pre>
+     */
+    public org.apache.mesos.executor.Protos.Call.Type getType() {
+      return type_;
+    }
+
+    // optional .mesos.executor.Call.Subscribe subscribe = 4;
+    public static final int SUBSCRIBE_FIELD_NUMBER = 4;
+    private org.apache.mesos.executor.Protos.Call.Subscribe subscribe_;
+    /**
+     * <code>optional .mesos.executor.Call.Subscribe subscribe = 4;</code>
+     */
+    public boolean hasSubscribe() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional .mesos.executor.Call.Subscribe subscribe = 4;</code>
+     */
+    public org.apache.mesos.executor.Protos.Call.Subscribe getSubscribe() {
+      return subscribe_;
+    }
+    /**
+     * <code>optional .mesos.executor.Call.Subscribe subscribe = 4;</code>
+     */
+    public org.apache.mesos.executor.Protos.Call.SubscribeOrBuilder getSubscribeOrBuilder() {
+      return subscribe_;
+    }
+
+    // optional .mesos.executor.Call.Update update = 5;
+    public static final int UPDATE_FIELD_NUMBER = 5;
+    private org.apache.mesos.executor.Protos.Call.Update update_;
+    /**
+     * <code>optional .mesos.executor.Call.Update update = 5;</code>
+     */
+    public boolean hasUpdate() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional .mesos.executor.Call.Update update = 5;</code>
+     */
+    public org.apache.mesos.executor.Protos.Call.Update getUpdate() {
+      return update_;
+    }
+    /**
+     * <code>optional .mesos.executor.Call.Update update = 5;</code>
+     */
+    public org.apache.mesos.executor.Protos.Call.UpdateOrBuilder getUpdateOrBuilder() {
+      return update_;
+    }
+
+    // optional .mesos.executor.Call.Message message = 6;
+    public static final int MESSAGE_FIELD_NUMBER = 6;
+    private org.apache.mesos.executor.Protos.Call.Message message_;
+    /**
+     * <code>optional .mesos.executor.Call.Message message = 6;</code>
+     */
+    public boolean hasMessage() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional .mesos.executor.Call.Message message = 6;</code>
+     */
+    public org.apache.mesos.executor.Protos.Call.Message getMessage() {
+      return message_;
+    }
+    /**
+     * <code>optional .mesos.executor.Call.Message message = 6;</code>
+     */
+    public org.apache.mesos.executor.Protos.Call.MessageOrBuilder getMessageOrBuilder() {
+      return message_;
+    }
+
+    private void initFields() {
+      executorId_ = org.apache.mesos.Protos.ExecutorID.getDefaultInstance();
+      frameworkId_ = org.apache.mesos.Protos.FrameworkID.getDefaultInstance();
+      type_ = org.apache.mesos.executor.Protos.Call.Type.UNKNOWN;
+      subscribe_ = org.apache.mesos.executor.Protos.Call.Subscribe.getDefaultInstance();
+      update_ = org.apache.mesos.executor.Protos.Call.Update.getDefaultInstance();
+      message_ = org.apache.mesos.executor.Protos.Call.Message.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasExecutorId()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasFrameworkId()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!getExecutorId().isInitialized()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!getFrameworkId().isInitialized()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (hasSubscribe()) {
+        if (!getSubscribe().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasUpdate()) {
+        if (!getUpdate().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasMessage()) {
+        if (!getMessage().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeMessage(1, executorId_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(2, frameworkId_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeEnum(3, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeMessage(4, subscribe_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeMessage(5, update_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeMessage(6, message_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, executorId_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, frameworkId_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(3, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, subscribe_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(5, update_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(6, message_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.executor.Protos.Call parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.executor.Protos.Call parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.executor.Protos.Call parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.executor.Protos.Call parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.executor.Protos.Call parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.executor.Protos.Call parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.executor.Protos.Call parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.executor.Protos.Call parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.executor.Protos.Call parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.executor.Protos.Call parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.executor.Protos.Call prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.executor.Call}
+     *
+     * <pre>
+     **
+     * Executor call API.
+     *
+     * Like Event, a Call is described using the standard protocol buffer
+     * "union" trick (see above).
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.executor.Protos.CallOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Call_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Call_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.executor.Protos.Call.class, org.apache.mesos.executor.Protos.Call.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.executor.Protos.Call.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getExecutorIdFieldBuilder();
+          getFrameworkIdFieldBuilder();
+          getSubscribeFieldBuilder();
+          getUpdateFieldBuilder();
+          getMessageFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (executorIdBuilder_ == null) {
+          executorId_ = org.apache.mesos.Protos.ExecutorID.getDefaultInstance();
+        } else {
+          executorIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (frameworkIdBuilder_ == null) {
+          frameworkId_ = org.apache.mesos.Protos.FrameworkID.getDefaultInstance();
+        } else {
+          frameworkIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        type_ = org.apache.mesos.executor.Protos.Call.Type.UNKNOWN;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        if (subscribeBuilder_ == null) {
+          subscribe_ = org.apache.mesos.executor.Protos.Call.Subscribe.getDefaultInstance();
+        } else {
+          subscribeBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        if (updateBuilder_ == null) {
+          update_ = org.apache.mesos.executor.Protos.Call.Update.getDefaultInstance();
+        } else {
+          updateBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        if (messageBuilder_ == null) {
+          message_ = org.apache.mesos.executor.Protos.Call.Message.getDefaultInstance();
+        } else {
+          messageBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.executor.Protos.internal_static_mesos_executor_Call_descriptor;
+      }
+
+      public org.apache.mesos.executor.Protos.Call getDefaultInstanceForType() {
+        return org.apache.mesos.executor.Protos.Call.getDefaultInstance();
+      }
+
+      public org.apache.mesos.executor.Protos.Call build() {
+        org.apache.mesos.executor.Protos.Call result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.executor.Protos.Call buildPartial() {
+        org.apache.mesos.executor.Protos.Call result = new org.apache.mesos.executor.Protos.Call(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        if (executorIdBuilder_ == null) {
+          result.executorId_ = executorId_;
+        } else {
+          result.executorId_ = executorIdBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (frameworkIdBuilder_ == null) {
+          result.frameworkId_ = frameworkId_;
+        } else {
+          result.frameworkId_ = frameworkIdBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.type_ = type_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        if (subscribeBuilder_ == null) {
+          result.subscribe_ = subscribe_;
+        } else {
+          result.subscribe_ = subscribeBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        if (updateBuilder_ == null) {
+          result.update_ = update_;
+        } else {
+          result.update_ = updateBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        if (messageBuilder_ == null) {
+          result.message_ = message_;
+        } else {
+          result.message_ = messageBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.executor.Protos.Call) {
+          return mergeFrom((org.apache.mesos.executor.Protos.Call)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.executor.Protos.Call other) {
+        if (other == org.apache.mesos.executor.Protos.Call.getDefaultInstance()) return this;
+        if (other.hasExecutorId()) {
+          mergeExecutorId(other.getExecutorId());
+        }
+        if (other.hasFrameworkId()) {
+          mergeFrameworkId(other.getFrameworkId());
+        }
+        if (other.hasType()) {
+          setType(other.getType());
+        }
+        if (other.hasSubscribe()) {
+          mergeSubscribe(other.getSubscribe());
+        }
+        if (other.hasUpdate()) {
+          mergeUpdate(other.getUpdate());
+        }
+        if (other.hasMessage()) {
+          mergeMessage(other.getMessage());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasExecutorId()) {
+          
+          return false;
+        }
+        if (!hasFrameworkId()) {
+          
+          return false;
+        }
+        if (!getExecutorId().isInitialized()) {
+          
+          return false;
+        }
+        if (!getFrameworkId().isInitialized()) {
+          
+          return false;
+        }
+        if (hasSubscribe()) {
+          if (!getSubscribe().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasUpdate()) {
+          if (!getUpdate().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasMessage()) {
+          if (!getMessage().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.executor.Protos.Call parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.executor.Protos.Call) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required .mesos.ExecutorID executor_id = 1;
+      private org.apache.mesos.Protos.ExecutorID executorId_ = org.apache.mesos.Protos.ExecutorID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.ExecutorID, org.apache.mesos.Protos.ExecutorID.Builder, org.apache.mesos.Protos.ExecutorIDOrBuilder> executorIdBuilder_;
+      /**
+       * <code>required .mesos.ExecutorID executor_id = 1;</code>
+       *
+       * <pre>
+       * Identifies the executor which generated this call.
+       * </pre>
+       */
+      public boolean hasExecutorId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.ExecutorID executor_id = 1;</code>
+       *
+       * <pre>
+       * Identifies the executor which generated this call.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.ExecutorID getExecutorId() {
+        if (executorIdBuilder_ == null) {
+          return executorId_;
+        } else {
+          return executorIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>required .mesos.ExecutorID executor_id = 1;</code>
+       *
+       * <pre>
+       * Identifies the executor which generated this call.
+       * </pre>
+       */
+      public Builder setExecutorId(org.apache.mesos.Protos.ExecutorID value) {
+        if (executorIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          executorId_ = value;
+          onChanged();
+        } else {
+          executorIdBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .mesos.ExecutorID executor_id = 1;</code>
+       *
+       * <pre>
+       * Identifies the executor which generated this call.
+       * </pre>
+       */
+      public Builder setExecutorId(
+          org.apache.mesos.Protos.ExecutorID.Builder builderForValue) {
+        if (executorIdBuilder_ == null) {
+          executorId_ = builderForValue.build();
+          onChanged();
+        } else {
+          executorIdBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .mesos.ExecutorID executor_id = 1;</code>
+       *
+       * <pre>
+       * Identifies the executor which generated this call.
+       * </pre>
+       */
+      public Builder mergeExecutorId(org.apache.mesos.Protos.ExecutorID value) {
+        if (executorIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001) &&
+              executorId_ != org.apache.mesos.Protos.ExecutorID.getDefaultInstance()) {
+            executorId_ =
+              org.apache.mesos.Protos.ExecutorID.newBuilder(executorId_).mergeFrom(value).buildPartial();
+          } else {
+            executorId_ = value;
+          }
+          onChanged();
+        } else {
+          executorIdBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .mesos.ExecutorID executor_id = 1;</code>
+       *
+       * <pre>
+       * Identifies the executor which generated this call.
+       * </pre>
+       */
+      public Builder clearExecutorId() {
+        if (executorIdBuilder_ == null) {
+          executorId_ = org.apache.mesos.Protos.ExecutorID.getDefaultInstance();
+          onChanged();
+        } else {
+          executorIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+      /**
+       * <code>required .mesos.ExecutorID executor_id = 1;</code>
+       *
+       * <pre>
+       * Identifies the executor which generated this call.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.ExecutorID.Builder getExecutorIdBuilder() {
+        bitField0_ |= 0x00000001;
+        onChanged();
+        return getExecutorIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>required .mesos.ExecutorID executor_id = 1;</code>
+       *
+       * <pre>
+       * Identifies the executor which generated this call.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder() {
+        if (executorIdBuilder_ != null) {
+          return executorIdBuilder_.getMessageOrBuilder();
+        } else {
+          return executorId_;
+        }
+      }
+      /**
+       * <code>required .mesos.ExecutorID executor_id = 1;</code>
+       *
+       * <pre>
+       * Identifies the executor which generated this call.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.ExecutorID, org.apache.mesos.Protos.ExecutorID.Builder, org.apache.mesos.Protos.ExecutorIDOrBuilder> 
+          getExecutorIdFieldBuilder() {
+        if (executorIdBuilder_ == null) {
+          executorIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.ExecutorID, org.apache.mesos.Protos.ExecutorID.Builder, org.apache.mesos.Protos.ExecutorIDOrBuilder>(
+                  executorId_,
+                  getParentForChildren(),
+                  isClean());
+          executorId_ = null;
+        }
+        return executorIdBuilder_;
+      }
+
+      // required .mesos.FrameworkID framework_id = 2;
+      private org.apache.mesos.Protos.FrameworkID frameworkId_ = org.apache.mesos.Protos.FrameworkID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.FrameworkID, org.apache.mesos.Protos.FrameworkID.Builder, org.apache.mesos.Protos.FrameworkIDOrBuilder> frameworkIdBuilder_;
+      /**
+       * <code>required .mesos.FrameworkID framework_id = 2;</code>
+       */
+      public boolean hasFrameworkId() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required .mesos.FrameworkID framework_id = 2;</code>
+       */
+      public org.apache.mesos.Protos.FrameworkID getFrameworkId() {
+        if (frameworkIdBuilder_ == null) {
+          return frameworkId_;
+        } else {
+          return frameworkIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>required .mesos.FrameworkID framework_id = 2;</code>
+       */
+      public Builder setFrameworkId(org.apache.mesos.Protos.FrameworkID value) {
+        if (frameworkIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          frameworkId_ = value;
+          onChanged();
+        } else {
+          frameworkIdBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.FrameworkID framework_id = 2;</code>
+       */
+      public Builder setFrameworkId(
+          org.apache.mesos.Protos.FrameworkID.Builder builderForValue) {
+        if (frameworkIdBuilder_ == null) {
+          frameworkId_ = builderForValue.build();
+          onChanged();
+        } else {
+          frameworkIdBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.FrameworkID framework_id = 2;</code>
+       */
+      public Builder mergeFrameworkId(org.apache.mesos.Protos.FrameworkID value) {
+        if (frameworkIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              frameworkId_ != org.apache.mesos.Protos.FrameworkID.getDefaultInstance()) {
+            frameworkId_ =
+              org.apache.mesos.Protos.FrameworkID.newBuilder(frameworkId_).mergeFrom(value).buildPartial();
+          } else {
+            frameworkId_ = value;
+          }
+          onChanged();
+        } else {
+          frameworkIdBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.FrameworkID framework_id = 2;</code>
+       */
+      public Builder clearFrameworkId() {
+        if (frameworkIdBuilder_ == null) {
+          frameworkId_ = org.apache.mesos.Protos.FrameworkID.getDefaultInstance();
+          onChanged();
+        } else {
+          frameworkIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>required .mesos.FrameworkID framework_id = 2;</code>
+       */
+      public org.apache.mesos.Protos.FrameworkID.Builder getFrameworkIdBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getFrameworkIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>required .mesos.FrameworkID framework_id = 2;</code>
+       */
+      public org.apache.mesos.Protos.FrameworkIDOrBuilder getFrameworkIdOrBuilder() {
+        if (frameworkIdBuilder_ != null) {
+          return frameworkIdBuilder_.getMessageOrBuilder();
+        } else {
+          return frameworkId_;
+        }
+      }
+      /**
+       * <code>required .mesos.FrameworkID framework_id = 2;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.FrameworkID, org.apache.mesos.Protos.FrameworkID.Builder, org.apache.mesos.Protos.FrameworkIDOrBuilder> 
+          getFrameworkIdFieldBuilder() {
+        if (frameworkIdBuilder_ == null) {
+          frameworkIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.FrameworkID, org.apache.mesos.Protos.FrameworkID.Builder, org.apache.mesos.Protos.FrameworkIDOrBuilder>(
+                  frameworkId_,
+                  getParentForChildren(),
+                  isClean());
+          frameworkId_ = null;
+        }
+        return frameworkIdBuilder_;
+      }
+
+      // optional .mesos.executor.Call.Type type = 3;
+      private org.apache.mesos.executor.Protos.Call.Type type_ = org.apache.mesos.executor.Protos.Call.Type.UNKNOWN;
+      /**
+       * <code>optional .mesos.executor.Call.Type type = 3;</code>
+       *
+       * <pre>
+       * Type of the call, indicates which optional field below should be
+       * present if that type has a nested message definition.
+       * In case type is SUBSCRIBED, no message needs to be set.
+       * See comments on `Event::Type` above on the reasoning behind this field being optional.
+       * </pre>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.executor.Call.Type type = 3;</code>
+       *
+       * <pre>
+       * Type of the call, indicates which optional field below should be
+       * present if that type has a nested message definition.
+       * In case type is SUBSCRIBED, no message needs to be set.
+       * See comments on `Event::Type` above on the reasoning behind this field being optional.
+       * </pre>
+       */
+      public org.apache.mesos.executor.Protos.Call.Type getType() {
+        return type_;
+      }
+      /**
+       * <code>optional .mesos.executor.Call.Type type = 3;</code>
+       *
+       * <pre>
+       * Type of the call, indicates which optional field below should be
+       * present if that type has a nested message definition.
+       * In case type is SUBSCRIBED, no message needs to be set.
+       * See comments on `Event::Type` above on the reasoning behind this field being optional.
+       * </pre>
+       */
+      public Builder setType(org.apache.mesos.executor.Protos.Call.Type value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000004;
+        type_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional .mesos.executor.Call.Type type = 3;</code>
+       *
+       * <pre>
+       * Type of the call, indicates which optional field below should be
+       * present if that type has a nested message definition.
+       * In case type is SUBSCRIBED, no message needs to be set.
+       * See comments on `Event::Type` above on the reasoning behind this field being optional.
+       * </pre>
+       */
+      public Builder clearType() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        type_ = org.apache.mesos.executor.Protos.Call.Type.UNKNOWN;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.executor.Call.Subscribe subscribe = 4;
+      private org.apache.mesos.executor.Protos.Call.Subscribe subscribe_ = org.apache.mesos.executor.Protos.Call.Subscribe.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.executor.Protos.Call.Subscribe, org.apache.mesos.executor.Protos.Call.Subscribe.Builder, org.apache.mesos.executor.Protos.Call.SubscribeOrBuilder> subscribeBuilder_;
+      /**
+       * <code>optional .mesos.executor.Call.Subscribe subscribe = 4;</code>
+       */
+      public boolean hasSubscribe() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.executor.Call.Subscribe subscribe = 4;</code>
+       */
+      public org.apache.mesos.executor.Protos.Call.Subscribe getSubscribe() {
+        if (subscribeBuilder_ == null) {
+          return subscribe_;
+        } else {
+          return subscribeBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.executor.Call.Subscribe subscribe = 4;</code>
+       */
+      public Builder setSubscribe(org.apache.mesos.executor.Protos.Call.Subscribe value) {
+        if (subscribeBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          subscribe_ = value;
+          onChanged();
+        } else {
+          subscribeBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.executor.Call.Subscribe subscribe = 4;</code>
+       */
+      public Builder setSubscribe(
+          org.apache.mesos.executor.Protos.Call.Subscribe.Builder builderForValue) {
+        if (subscribeBuilder_ == null) {
+          subscribe_ = builderForValue.build();
+          onChanged();
+        } else {
+          subscribeBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.executor.Call.Subscribe subscribe = 4;</code>
+       */
+      public Builder mergeSubscribe(org.apache.mesos.executor.Protos.Call.Subscribe value) {
+        if (subscribeBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008) &&
+              subscribe_ != org.apache.mesos.executor.Protos.Call.Subscribe.getDefaultInstance()) {
+            subscribe_ =
+              org.apache.mesos.executor.Protos.Call.Subscribe.newBuilder(subscribe_).mergeFrom(value).buildPartial();
+          } else {
+            subscribe_ = value;
+          }
+          onChanged();
+        } else {
+          subscribeBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.executor.Call.Subscribe subscribe = 4;</code>
+       */
+      public Builder clearSubscribe() {
+        if (subscribeBuilder_ == null) {
+          subscribe_ = org.apache.mesos.executor.Protos.Call.Subscribe.getDefaultInstance();
+          onChanged();
+        } else {
+          subscribeBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.executor.Call.Subscribe subscribe = 4;</code>
+       */
+      public org.apache.mesos.executor.Protos.Call.Subscribe.Builder getSubscribeBuilder() {
+        bitField0_ |= 0x00000008;
+        onChanged();
+        return getSubscribeFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.executor.Call.Subscribe subscribe = 4;</code>
+       */
+      public org.apache.mesos.executor.Protos.Call.SubscribeOrBuilder getSubscribeOrBuilder() {
+        if (subscribeBuilder_ != null) {
+          return subscribeBuilder_.getMessageOrBuilder();
+        } else {
+          return subscribe_;
+        }
+      }
+      /**
+       * <code>optional .mesos.executor.Call.Subscribe subscribe = 4;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.executor.Protos.Call.Subscribe, org.apache.mesos.executor.Protos.Call.Subscribe.Builder, org.apache.mesos.executor.Protos.Call.SubscribeOrBuilder> 
+          getSubscribeFieldBuilder() {
+        if (subscribeBuilder_ == null) {
+          subscribeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.executor.Protos.Call.Subscribe, org.apache.mesos.executor.Protos.Call.Subscribe.Builder, org.apache.mesos.executor.Protos.Call.SubscribeOrBuilder>(
+                  subscribe_,
+                  getParentForChildren(),
+                  isClean());
+          subscribe_ = null;
+        }
+        return subscribeBuilder_;
+      }
+
+      // optional .mesos.executor.Call.Update update = 5;
+      private org.apache.mesos.executor.Protos.Call.Update update_ = org.apache.mesos.executor.Protos.Call.Update.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.executor.Protos.Call.Update, org.apache.mesos.executor.Protos.Call.Update.Builder, org.apache.mesos.executor.Protos.Call.UpdateOrBuilder> updateBuilder_;
+      /**
+       * <code>optional .mesos.executor.Call.Update update = 5;</code>
+       */
+      public boolean hasUpdate() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional .mesos.executor.Call.Update update = 5;</code>
+       */
+      public org.apache.mesos.executor.Protos.Call.Update getUpdate() {
+        if (updateBuilder_ == null) {
+          return update_;
+        } else {
+          return updateBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.executor.Call.Update update = 5;</code>
+       */
+      public Builder setUpdate(org.apache.mesos.executor.Protos.Call.Update value) {
+        if (updateBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          update_ = value;
+          onChanged();
+        } else {
+          updateBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.executor.Call.Update update = 5;</code>
+       */
+      public Builder setUpdate(
+          org.apache.mesos.executor.Protos.Call.Update.Builder builderForValue) {
+        if (updateBuilder_ == null) {
+          update_ = builderForValue.build();
+          onChanged();
+        } else {
+          updateBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.executor.Call.Update update = 5;</code>
+       */
+      public Builder mergeUpdate(org.apache.mesos.executor.Protos.Call.Update value) {
+        if (updateBuilder_ == null) {
+          if (((bitField0_ & 0x00000010) == 0x00000010) &&
+              update_ != org.apache.mesos.executor.Protos.Call.Update.getDefaultInstance()) {
+            update_ =
+              org.apache.mesos.executor.Protos.Call.Update.newBuilder(update_).mergeFrom(value).buildPartial();
+          } else {
+            update_ = value;
+          }
+          onChanged();
+        } else {
+          updateBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.executor.Call.Update update = 5;</code>
+       */
+      public Builder clearUpdate() {
+        if (updateBuilder_ == null) {
+          update_ = org.apache.mesos.executor.Protos.Call.Update.getDefaultInstance();
+          onChanged();
+        } else {
+          updateBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.executor.Call.Update update = 5;</code>
+       */
+      public org.apache.mesos.executor.Protos.Call.Update.Builder getUpdateBuilder() {
+        bitField0_ |= 0x00000010;
+        onChanged();
+        return getUpdateFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.executor.Call.Update update = 5;</code>
+       */
+      public org.apache.mesos.executor.Protos.Call.UpdateOrBuilder getUpdateOrBuilder() {
+        if (updateBuilder_ != null) {
+          return updateBuilder_.getMessageOrBuilder();
+        } else {
+          return update_;
+        }
+      }
+      /**
+       * <code>optional .mesos.executor.Call.Update update = 5;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.executor.Protos.Call.Update, org.apache.mesos.executor.Protos.Call.Update.Builder, org.apache.mesos.executor.Protos.Call.UpdateOrBuilder> 
+          getUpdateFieldBuilder() {
+        if (updateBuilder_ == null) {
+          updateBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.executor.Protos.Call.Update, org.apache.mesos.executor.Protos.Call.Update.Builder, org.apache.mesos.executor.Protos.Call.UpdateOrBuilder>(
+                  update_,
+                  getParentForChildren(),
+                  isClean());
+          update_ = null;
+        }
+        return updateBuilder_;
+      }
+
+      // optional .mesos.executor.Call.Message message = 6;
+      private org.apache.mesos.executor.Protos.Call.Message message_ = org.apache.mesos.executor.Protos.Call.Message.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.executor.Protos.Call.Message, org.apache.mesos.executor.Protos.Call.Message.Builder, org.apache.mesos.executor.Protos.Call.MessageOrBuilder> messageBuilder_;
+      /**
+       * <code>optional .mesos.executor.Call.Message message = 6;</code>
+       */
+      public boolean hasMessage() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional .mesos.executor.Call.Message message = 6;</code>
+       */
+      public org.apache.mesos.executor.Protos.Call.Message getMessage() {
+        if (messageBuilder_ == null) {
+          return message_;
+        } else {
+          return messageBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.executor.Call.Message message = 6;</code>
+       */
+      public Builder setMessage(org.apache.mesos.executor.Protos.Call.Message value) {
+        if (messageBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          message_ = value;
+          onChanged();
+        } else {
+          messageBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.executor.Call.Message message = 6;</code>
+       */
+      public Builder setMessage(
+          org.apache.mesos.executor.Protos.Call.Message.Builder builderForValue) {
+        if (messageBuilder_ == null) {
+          message_ = builderForValue.build();
+          onChanged();
+        } else {
+          messageBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.executor.Call.Message message = 6;</code>
+       */
+      public Builder mergeMessage(org.apache.mesos.executor.Protos.Call.Message value) {
+        if (messageBuilder_ == null) {
+          if (((bitField0_ & 0x00000020) == 0x00000020) &&
+              message_ != org.apache.mesos.executor.Protos.Call.Message.getDefaultInstance()) {
+            message_ =
+              org.apache.mesos.executor.Protos.Call.Message.newBuilder(message_).mergeFrom(value).buildPartial();
+          } else {
+            message_ = value;
+          }
+          onChanged();
+        } else {
+          messageBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.executor.Call.Message message = 6;</code>
+       */
+      public Builder clearMessage() {
+        if (messageBuilder_ == null) {
+          message_ = org.apache.mesos.executor.Protos.Call.Message.getDefaultInstance();
+          onChanged();
+        } else {
+          messageBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.executor.Call.Message message = 6;</code>
+       */
+      public org.apache.mesos.executor.Protos.Call.Message.Builder getMessageBuilder() {
+        bitField0_ |= 0x00000020;
+        onChanged();
+        return getMessageFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.executor.Call.Message message = 6;</code>
+       */
+      public org.apache.mesos.executor.Protos.Call.MessageOrBuilder getMessageOrBuilder() {
+        if (messageBuilder_ != null) {
+          return messageBuilder_.getMessageOrBuilder();
+        } else {
+          return message_;
+        }
+      }
+      /**
+       * <code>optional .mesos.executor.Call.Message message = 6;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.executor.Protos.Call.Message, org.apache.mesos.executor.Protos.Call.Message.Builder, org.apache.mesos.executor.Protos.Call.MessageOrBuilder> 
+          getMessageFieldBuilder() {
+        if (messageBuilder_ == null) {
+          messageBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.executor.Protos.Call.Message, org.apache.mesos.executor.Protos.Call.Message.Builder, org.apache.mesos.executor.Protos.Call.MessageOrBuilder>(
+                  message_,
+                  getParentForChildren(),
+                  isClean());
+          message_ = null;
+        }
+        return messageBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.executor.Call)
+    }
+
+    static {
+      defaultInstance = new Call(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.executor.Call)
+  }
+
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_executor_Event_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_executor_Event_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_executor_Event_Subscribed_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_executor_Event_Subscribed_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_executor_Event_Launch_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_executor_Event_Launch_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_executor_Event_LaunchGroup_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_executor_Event_LaunchGroup_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_executor_Event_Kill_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_executor_Event_Kill_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_executor_Event_Acknowledged_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_executor_Event_Acknowledged_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_executor_Event_Message_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_executor_Event_Message_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_executor_Event_Error_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_executor_Event_Error_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_executor_Call_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_executor_Call_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_executor_Call_Subscribe_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_executor_Call_Subscribe_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_executor_Call_Update_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_executor_Call_Update_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_executor_Call_Message_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_executor_Call_Message_fieldAccessorTable;
+
+  public static com.google.protobuf.Descriptors.FileDescriptor
+      getDescriptor() {
+    return descriptor;
+  }
+  private static com.google.protobuf.Descriptors.FileDescriptor
+      descriptor;
+  static {
+    java.lang.String[] descriptorData = {
+      "\n\024mesos/executor.proto\022\016mesos.executor\032\021" +
+      "mesos/mesos.proto\"\360\007\n\005Event\022(\n\004type\030\001 \001(" +
+      "\0162\032.mesos.executor.Event.Type\0224\n\nsubscri" +
+      "bed\030\002 \001(\0132 .mesos.executor.Event.Subscri" +
+      "bed\0228\n\014acknowledged\030\003 \001(\0132\".mesos.execut" +
+      "or.Event.Acknowledged\022,\n\006launch\030\004 \001(\0132\034." +
+      "mesos.executor.Event.Launch\0227\n\014launch_gr" +
+      "oup\030\010 \001(\0132!.mesos.executor.Event.LaunchG" +
+      "roup\022(\n\004kill\030\005 \001(\0132\032.mesos.executor.Even" +
+      "t.Kill\022.\n\007message\030\006 \001(\0132\035.mesos.executor",
+      ".Event.Message\022*\n\005error\030\007 \001(\0132\033.mesos.ex" +
+      "ecutor.Event.Error\032\266\001\n\nSubscribed\022*\n\rexe" +
+      "cutor_info\030\001 \002(\0132\023.mesos.ExecutorInfo\022,\n" +
+      "\016framework_info\030\002 \002(\0132\024.mesos.FrameworkI" +
+      "nfo\022$\n\nslave_info\030\003 \002(\0132\020.mesos.SlaveInf" +
+      "o\022(\n\014container_id\030\004 \001(\0132\022.mesos.Containe" +
+      "rID\032\'\n\006Launch\022\035\n\004task\030\001 \002(\0132\017.mesos.Task" +
+      "Info\0327\n\013LaunchGroup\022(\n\ntask_group\030\001 \002(\0132" +
+      "\024.mesos.TaskGroupInfo\032N\n\004Kill\022\036\n\007task_id" +
+      "\030\001 \002(\0132\r.mesos.TaskID\022&\n\013kill_policy\030\002 \001",
+      "(\0132\021.mesos.KillPolicy\032<\n\014Acknowledged\022\036\n" +
+      "\007task_id\030\001 \002(\0132\r.mesos.TaskID\022\014\n\004uuid\030\002 " +
+      "\002(\014\032\027\n\007Message\022\014\n\004data\030\001 \002(\014\032\030\n\005Error\022\017\n" +
+      "\007message\030\001 \002(\t\"\203\001\n\004Type\022\013\n\007UNKNOWN\020\000\022\016\n\n" +
+      "SUBSCRIBED\020\001\022\n\n\006LAUNCH\020\002\022\020\n\014LAUNCH_GROUP" +
+      "\020\010\022\010\n\004KILL\020\003\022\020\n\014ACKNOWLEDGED\020\004\022\013\n\007MESSAG" +
+      "E\020\005\022\t\n\005ERROR\020\006\022\014\n\010SHUTDOWN\020\007\"\214\004\n\004Call\022&\n" +
+      "\013executor_id\030\001 \002(\0132\021.mesos.ExecutorID\022(\n" +
+      "\014framework_id\030\002 \002(\0132\022.mesos.FrameworkID\022" +
+      "\'\n\004type\030\003 \001(\0162\031.mesos.executor.Call.Type",
+      "\0221\n\tsubscribe\030\004 \001(\0132\036.mesos.executor.Cal" +
+      "l.Subscribe\022+\n\006update\030\005 \001(\0132\033.mesos.exec" +
+      "utor.Call.Update\022-\n\007message\030\006 \001(\0132\034.meso" +
+      "s.executor.Call.Message\032w\n\tSubscribe\022-\n\024" +
+      "unacknowledged_tasks\030\001 \003(\0132\017.mesos.TaskI" +
+      "nfo\022;\n\026unacknowledged_updates\030\002 \003(\0132\033.me" +
+      "sos.executor.Call.Update\032+\n\006Update\022!\n\006st" +
+      "atus\030\001 \002(\0132\021.mesos.TaskStatus\032\027\n\007Message" +
+      "\022\014\n\004data\030\002 \002(\014\";\n\004Type\022\013\n\007UNKNOWN\020\000\022\r\n\tS" +
+      "UBSCRIBE\020\001\022\n\n\006UPDATE\020\002\022\013\n\007MESSAGE\020\003B#\n\031o",
+      "rg.apache.mesos.executorB\006Protos"
+    };
+    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
+      new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
+        public com.google.protobuf.ExtensionRegistry assignDescriptors(
+            com.google.protobuf.Descriptors.FileDescriptor root) {
+          descriptor = root;
+          internal_static_mesos_executor_Event_descriptor =
+            getDescriptor().getMessageTypes().get(0);
+          internal_static_mesos_executor_Event_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_executor_Event_descriptor,
+              new java.lang.String[] { "Type", "Subscribed", "Acknowledged", "Launch", "LaunchGroup", "Kill", "Message", "Error", });
+          internal_static_mesos_executor_Event_Subscribed_descriptor =
+            internal_static_mesos_executor_Event_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_executor_Event_Subscribed_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_executor_Event_Subscribed_descriptor,
+              new java.lang.String[] { "ExecutorInfo", "FrameworkInfo", "SlaveInfo", "ContainerId", });
+          internal_static_mesos_executor_Event_Launch_descriptor =
+            internal_static_mesos_executor_Event_descriptor.getNestedTypes().get(1);
+          internal_static_mesos_executor_Event_Launch_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_executor_Event_Launch_descriptor,
+              new java.lang.String[] { "Task", });
+          internal_static_mesos_executor_Event_LaunchGroup_descriptor =
+            internal_static_mesos_executor_Event_descriptor.getNestedTypes().get(2);
+          internal_static_mesos_executor_Event_LaunchGroup_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_executor_Event_LaunchGroup_descriptor,
+              new java.lang.String[] { "TaskGroup", });
+          internal_static_mesos_executor_Event_Kill_descriptor =
+            internal_static_mesos_executor_Event_descriptor.getNestedTypes().get(3);
+          internal_static_mesos_executor_Event_Kill_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_executor_Event_Kill_descriptor,
+              new java.lang.String[] { "TaskId", "KillPolicy", });
+          internal_static_mesos_executor_Event_Acknowledged_descriptor =
+            internal_static_mesos_executor_Event_descriptor.getNestedTypes().get(4);
+          internal_static_mesos_executor_Event_Acknowledged_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_executor_Event_Acknowledged_descriptor,
+              new java.lang.String[] { "TaskId", "Uuid", });
+          internal_static_mesos_executor_Event_Message_descriptor =
+            internal_static_mesos_executor_Event_descriptor.getNestedTypes().get(5);
+          internal_static_mesos_executor_Event_Message_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_executor_Event_Message_descriptor,
+              new java.lang.String[] { "Data", });
+          internal_static_mesos_executor_Event_Error_descriptor =
+            internal_static_mesos_executor_Event_descriptor.getNestedTypes().get(6);
+          internal_static_mesos_executor_Event_Error_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_executor_Event_Error_descriptor,
+              new java.lang.String[] { "Message", });
+          internal_static_mesos_executor_Call_descriptor =
+            getDescriptor().getMessageTypes().get(1);
+          internal_static_mesos_executor_Call_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_executor_Call_descriptor,
+              new java.lang.String[] { "ExecutorId", "FrameworkId", "Type", "Subscribe", "Update", "Message", });
+          internal_static_mesos_executor_Call_Subscribe_descriptor =
+            internal_static_mesos_executor_Call_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_executor_Call_Subscribe_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_executor_Call_Subscribe_descriptor,
+              new java.lang.String[] { "UnacknowledgedTasks", "UnacknowledgedUpdates", });
+          internal_static_mesos_executor_Call_Update_descriptor =
+            internal_static_mesos_executor_Call_descriptor.getNestedTypes().get(1);
+          internal_static_mesos_executor_Call_Update_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_executor_Call_Update_descriptor,
+              new java.lang.String[] { "Status", });
+          internal_static_mesos_executor_Call_Message_descriptor =
+            internal_static_mesos_executor_Call_descriptor.getNestedTypes().get(2);
+          internal_static_mesos_executor_Call_Message_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_executor_Call_Message_descriptor,
+              new java.lang.String[] { "Data", });
+          return null;
+        }
+      };
+    com.google.protobuf.Descriptors.FileDescriptor
+      .internalBuildGeneratedFileFrom(descriptorData,
+        new com.google.protobuf.Descriptors.FileDescriptor[] {
+          org.apache.mesos.Protos.getDescriptor(),
+        }, assigner);
+  }
+
+  // @@protoc_insertion_point(outer_class_scope)
+}
diff --git a/myriad-commons/src/main/java/org/apache/mesos/scheduler/Protos.java b/myriad-commons/src/main/java/org/apache/mesos/scheduler/Protos.java
new file mode 100644
index 0000000..bda044a
--- /dev/null
+++ b/myriad-commons/src/main/java/org/apache/mesos/scheduler/Protos.java
@@ -0,0 +1,24780 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: mesos/scheduler.proto
+
+package org.apache.mesos.scheduler;
+
+public final class Protos {
+  private Protos() {}
+  public static void registerAllExtensions(
+      com.google.protobuf.ExtensionRegistry registry) {
+  }
+  public interface EventOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional .mesos.scheduler.Event.Type type = 1;
+    /**
+     * <code>optional .mesos.scheduler.Event.Type type = 1;</code>
+     *
+     * <pre>
+     * Type of the event, indicates which optional field below should be
+     * present if that type has a nested message definition.
+     * Enum fields should be optional, see: MESOS-4997.
+     * </pre>
+     */
+    boolean hasType();
+    /**
+     * <code>optional .mesos.scheduler.Event.Type type = 1;</code>
+     *
+     * <pre>
+     * Type of the event, indicates which optional field below should be
+     * present if that type has a nested message definition.
+     * Enum fields should be optional, see: MESOS-4997.
+     * </pre>
+     */
+    org.apache.mesos.scheduler.Protos.Event.Type getType();
+
+    // optional .mesos.scheduler.Event.Subscribed subscribed = 2;
+    /**
+     * <code>optional .mesos.scheduler.Event.Subscribed subscribed = 2;</code>
+     */
+    boolean hasSubscribed();
+    /**
+     * <code>optional .mesos.scheduler.Event.Subscribed subscribed = 2;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Event.Subscribed getSubscribed();
+    /**
+     * <code>optional .mesos.scheduler.Event.Subscribed subscribed = 2;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Event.SubscribedOrBuilder getSubscribedOrBuilder();
+
+    // optional .mesos.scheduler.Event.Offers offers = 3;
+    /**
+     * <code>optional .mesos.scheduler.Event.Offers offers = 3;</code>
+     */
+    boolean hasOffers();
+    /**
+     * <code>optional .mesos.scheduler.Event.Offers offers = 3;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Event.Offers getOffers();
+    /**
+     * <code>optional .mesos.scheduler.Event.Offers offers = 3;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Event.OffersOrBuilder getOffersOrBuilder();
+
+    // optional .mesos.scheduler.Event.InverseOffers inverse_offers = 9;
+    /**
+     * <code>optional .mesos.scheduler.Event.InverseOffers inverse_offers = 9;</code>
+     */
+    boolean hasInverseOffers();
+    /**
+     * <code>optional .mesos.scheduler.Event.InverseOffers inverse_offers = 9;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Event.InverseOffers getInverseOffers();
+    /**
+     * <code>optional .mesos.scheduler.Event.InverseOffers inverse_offers = 9;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Event.InverseOffersOrBuilder getInverseOffersOrBuilder();
+
+    // optional .mesos.scheduler.Event.Rescind rescind = 4;
+    /**
+     * <code>optional .mesos.scheduler.Event.Rescind rescind = 4;</code>
+     */
+    boolean hasRescind();
+    /**
+     * <code>optional .mesos.scheduler.Event.Rescind rescind = 4;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Event.Rescind getRescind();
+    /**
+     * <code>optional .mesos.scheduler.Event.Rescind rescind = 4;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Event.RescindOrBuilder getRescindOrBuilder();
+
+    // optional .mesos.scheduler.Event.RescindInverseOffer rescind_inverse_offer = 10;
+    /**
+     * <code>optional .mesos.scheduler.Event.RescindInverseOffer rescind_inverse_offer = 10;</code>
+     */
+    boolean hasRescindInverseOffer();
+    /**
+     * <code>optional .mesos.scheduler.Event.RescindInverseOffer rescind_inverse_offer = 10;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer getRescindInverseOffer();
+    /**
+     * <code>optional .mesos.scheduler.Event.RescindInverseOffer rescind_inverse_offer = 10;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Event.RescindInverseOfferOrBuilder getRescindInverseOfferOrBuilder();
+
+    // optional .mesos.scheduler.Event.Update update = 5;
+    /**
+     * <code>optional .mesos.scheduler.Event.Update update = 5;</code>
+     */
+    boolean hasUpdate();
+    /**
+     * <code>optional .mesos.scheduler.Event.Update update = 5;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Event.Update getUpdate();
+    /**
+     * <code>optional .mesos.scheduler.Event.Update update = 5;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Event.UpdateOrBuilder getUpdateOrBuilder();
+
+    // optional .mesos.scheduler.Event.Message message = 6;
+    /**
+     * <code>optional .mesos.scheduler.Event.Message message = 6;</code>
+     */
+    boolean hasMessage();
+    /**
+     * <code>optional .mesos.scheduler.Event.Message message = 6;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Event.Message getMessage();
+    /**
+     * <code>optional .mesos.scheduler.Event.Message message = 6;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Event.MessageOrBuilder getMessageOrBuilder();
+
+    // optional .mesos.scheduler.Event.Failure failure = 7;
+    /**
+     * <code>optional .mesos.scheduler.Event.Failure failure = 7;</code>
+     */
+    boolean hasFailure();
+    /**
+     * <code>optional .mesos.scheduler.Event.Failure failure = 7;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Event.Failure getFailure();
+    /**
+     * <code>optional .mesos.scheduler.Event.Failure failure = 7;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Event.FailureOrBuilder getFailureOrBuilder();
+
+    // optional .mesos.scheduler.Event.Error error = 8;
+    /**
+     * <code>optional .mesos.scheduler.Event.Error error = 8;</code>
+     */
+    boolean hasError();
+    /**
+     * <code>optional .mesos.scheduler.Event.Error error = 8;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Event.Error getError();
+    /**
+     * <code>optional .mesos.scheduler.Event.Error error = 8;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Event.ErrorOrBuilder getErrorOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.scheduler.Event}
+   *
+   * <pre>
+   **
+   * Scheduler event API.
+   *
+   * An event is described using the standard protocol buffer "union"
+   * trick, see:
+   * https://developers.google.com/protocol-buffers/docs/techniques#union.
+   * </pre>
+   */
+  public static final class Event extends
+      com.google.protobuf.GeneratedMessage
+      implements EventOrBuilder {
+    // Use Event.newBuilder() to construct.
+    private Event(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Event(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Event defaultInstance;
+    public static Event getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Event getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Event(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 8: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.scheduler.Protos.Event.Type value = org.apache.mesos.scheduler.Protos.Event.Type.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(1, rawValue);
+              } else {
+                bitField0_ |= 0x00000001;
+                type_ = value;
+              }
+              break;
+            }
+            case 18: {
+              org.apache.mesos.scheduler.Protos.Event.Subscribed.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = subscribed_.toBuilder();
+              }
+              subscribed_ = input.readMessage(org.apache.mesos.scheduler.Protos.Event.Subscribed.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(subscribed_);
+                subscribed_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+            case 26: {
+              org.apache.mesos.scheduler.Protos.Event.Offers.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                subBuilder = offers_.toBuilder();
+              }
+              offers_ = input.readMessage(org.apache.mesos.scheduler.Protos.Event.Offers.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(offers_);
+                offers_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000004;
+              break;
+            }
+            case 34: {
+              org.apache.mesos.scheduler.Protos.Event.Rescind.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000010) == 0x00000010)) {
+                subBuilder = rescind_.toBuilder();
+              }
+              rescind_ = input.readMessage(org.apache.mesos.scheduler.Protos.Event.Rescind.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(rescind_);
+                rescind_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000010;
+              break;
+            }
+            case 42: {
+              org.apache.mesos.scheduler.Protos.Event.Update.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000040) == 0x00000040)) {
+                subBuilder = update_.toBuilder();
+              }
+              update_ = input.readMessage(org.apache.mesos.scheduler.Protos.Event.Update.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(update_);
+                update_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000040;
+              break;
+            }
+            case 50: {
+              org.apache.mesos.scheduler.Protos.Event.Message.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000080) == 0x00000080)) {
+                subBuilder = message_.toBuilder();
+              }
+              message_ = input.readMessage(org.apache.mesos.scheduler.Protos.Event.Message.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(message_);
+                message_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000080;
+              break;
+            }
+            case 58: {
+              org.apache.mesos.scheduler.Protos.Event.Failure.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000100) == 0x00000100)) {
+                subBuilder = failure_.toBuilder();
+              }
+              failure_ = input.readMessage(org.apache.mesos.scheduler.Protos.Event.Failure.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(failure_);
+                failure_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000100;
+              break;
+            }
+            case 66: {
+              org.apache.mesos.scheduler.Protos.Event.Error.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000200) == 0x00000200)) {
+                subBuilder = error_.toBuilder();
+              }
+              error_ = input.readMessage(org.apache.mesos.scheduler.Protos.Event.Error.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(error_);
+                error_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000200;
+              break;
+            }
+            case 74: {
+              org.apache.mesos.scheduler.Protos.Event.InverseOffers.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                subBuilder = inverseOffers_.toBuilder();
+              }
+              inverseOffers_ = input.readMessage(org.apache.mesos.scheduler.Protos.Event.InverseOffers.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(inverseOffers_);
+                inverseOffers_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000008;
+              break;
+            }
+            case 82: {
+              org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000020) == 0x00000020)) {
+                subBuilder = rescindInverseOffer_.toBuilder();
+              }
+              rescindInverseOffer_ = input.readMessage(org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(rescindInverseOffer_);
+                rescindInverseOffer_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000020;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.scheduler.Protos.Event.class, org.apache.mesos.scheduler.Protos.Event.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Event> PARSER =
+        new com.google.protobuf.AbstractParser<Event>() {
+      public Event parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Event(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Event> getParserForType() {
+      return PARSER;
+    }
+
+    /**
+     * Protobuf enum {@code mesos.scheduler.Event.Type}
+     *
+     * <pre>
+     * Possible event types, followed by message definitions if
+     * applicable.
+     * </pre>
+     */
+    public enum Type
+        implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>UNKNOWN = 0;</code>
+       *
+       * <pre>
+       * This must be the first enum value in this list, to
+       * ensure that if 'type' is not set, the default value
+       * is UNKNOWN. This enables enum values to be added
+       * in a backwards-compatible way. See: MESOS-4997.
+       * </pre>
+       */
+      UNKNOWN(0, 0),
+      /**
+       * <code>SUBSCRIBED = 1;</code>
+       *
+       * <pre>
+       * See 'Subscribed' below.
+       * </pre>
+       */
+      SUBSCRIBED(1, 1),
+      /**
+       * <code>OFFERS = 2;</code>
+       *
+       * <pre>
+       * See 'Offers' below.
+       * </pre>
+       */
+      OFFERS(2, 2),
+      /**
+       * <code>INVERSE_OFFERS = 9;</code>
+       *
+       * <pre>
+       * See 'InverseOffers' below.
+       * </pre>
+       */
+      INVERSE_OFFERS(3, 9),
+      /**
+       * <code>RESCIND = 3;</code>
+       *
+       * <pre>
+       * See 'Rescind' below.
+       * </pre>
+       */
+      RESCIND(4, 3),
+      /**
+       * <code>RESCIND_INVERSE_OFFER = 10;</code>
+       *
+       * <pre>
+       * See 'RescindInverseOffer' below.
+       * </pre>
+       */
+      RESCIND_INVERSE_OFFER(5, 10),
+      /**
+       * <code>UPDATE = 4;</code>
+       *
+       * <pre>
+       * See 'Update' below.
+       * </pre>
+       */
+      UPDATE(6, 4),
+      /**
+       * <code>MESSAGE = 5;</code>
+       *
+       * <pre>
+       * See 'Message' below.
+       * </pre>
+       */
+      MESSAGE(7, 5),
+      /**
+       * <code>FAILURE = 6;</code>
+       *
+       * <pre>
+       * See 'Failure' below.
+       * </pre>
+       */
+      FAILURE(8, 6),
+      /**
+       * <code>ERROR = 7;</code>
+       *
+       * <pre>
+       * See 'Error' below.
+       * </pre>
+       */
+      ERROR(9, 7),
+      /**
+       * <code>HEARTBEAT = 8;</code>
+       *
+       * <pre>
+       * Periodic message sent by the Mesos master according to
+       * 'Subscribed.heartbeat_interval_seconds'. If the scheduler does
+       * not receive any events (including heartbeats) for an extended
+       * period of time (e.g., 5 x heartbeat_interval_seconds), there is
+       * likely a network partition. In such a case the scheduler should
+       * close the existing subscription connection and resubscribe
+       * using a backoff strategy.
+       * </pre>
+       */
+      HEARTBEAT(10, 8),
+      ;
+
+      /**
+       * <code>UNKNOWN = 0;</code>
+       *
+       * <pre>
+       * This must be the first enum value in this list, to
+       * ensure that if 'type' is not set, the default value
+       * is UNKNOWN. This enables enum values to be added
+       * in a backwards-compatible way. See: MESOS-4997.
+       * </pre>
+       */
+      public static final int UNKNOWN_VALUE = 0;
+      /**
+       * <code>SUBSCRIBED = 1;</code>
+       *
+       * <pre>
+       * See 'Subscribed' below.
+       * </pre>
+       */
+      public static final int SUBSCRIBED_VALUE = 1;
+      /**
+       * <code>OFFERS = 2;</code>
+       *
+       * <pre>
+       * See 'Offers' below.
+       * </pre>
+       */
+      public static final int OFFERS_VALUE = 2;
+      /**
+       * <code>INVERSE_OFFERS = 9;</code>
+       *
+       * <pre>
+       * See 'InverseOffers' below.
+       * </pre>
+       */
+      public static final int INVERSE_OFFERS_VALUE = 9;
+      /**
+       * <code>RESCIND = 3;</code>
+       *
+       * <pre>
+       * See 'Rescind' below.
+       * </pre>
+       */
+      public static final int RESCIND_VALUE = 3;
+      /**
+       * <code>RESCIND_INVERSE_OFFER = 10;</code>
+       *
+       * <pre>
+       * See 'RescindInverseOffer' below.
+       * </pre>
+       */
+      public static final int RESCIND_INVERSE_OFFER_VALUE = 10;
+      /**
+       * <code>UPDATE = 4;</code>
+       *
+       * <pre>
+       * See 'Update' below.
+       * </pre>
+       */
+      public static final int UPDATE_VALUE = 4;
+      /**
+       * <code>MESSAGE = 5;</code>
+       *
+       * <pre>
+       * See 'Message' below.
+       * </pre>
+       */
+      public static final int MESSAGE_VALUE = 5;
+      /**
+       * <code>FAILURE = 6;</code>
+       *
+       * <pre>
+       * See 'Failure' below.
+       * </pre>
+       */
+      public static final int FAILURE_VALUE = 6;
+      /**
+       * <code>ERROR = 7;</code>
+       *
+       * <pre>
+       * See 'Error' below.
+       * </pre>
+       */
+      public static final int ERROR_VALUE = 7;
+      /**
+       * <code>HEARTBEAT = 8;</code>
+       *
+       * <pre>
+       * Periodic message sent by the Mesos master according to
+       * 'Subscribed.heartbeat_interval_seconds'. If the scheduler does
+       * not receive any events (including heartbeats) for an extended
+       * period of time (e.g., 5 x heartbeat_interval_seconds), there is
+       * likely a network partition. In such a case the scheduler should
+       * close the existing subscription connection and resubscribe
+       * using a backoff strategy.
+       * </pre>
+       */
+      public static final int HEARTBEAT_VALUE = 8;
+
+
+      public final int getNumber() { return value; }
+
+      public static Type valueOf(int value) {
+        switch (value) {
+          case 0: return UNKNOWN;
+          case 1: return SUBSCRIBED;
+          case 2: return OFFERS;
+          case 9: return INVERSE_OFFERS;
+          case 3: return RESCIND;
+          case 10: return RESCIND_INVERSE_OFFER;
+          case 4: return UPDATE;
+          case 5: return MESSAGE;
+          case 6: return FAILURE;
+          case 7: return ERROR;
+          case 8: return HEARTBEAT;
+          default: return null;
+        }
+      }
+
+      public static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalGetValueMap() {
+        return internalValueMap;
+      }
+      private static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap<Type>() {
+              public Type findValueByNumber(int number) {
+                return Type.valueOf(number);
+              }
+            };
+
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
+          getValueDescriptor() {
+        return getDescriptor().getValues().get(index);
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptorForType() {
+        return getDescriptor();
+      }
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptor() {
+        return org.apache.mesos.scheduler.Protos.Event.getDescriptor().getEnumTypes().get(0);
+      }
+
+      private static final Type[] VALUES = values();
+
+      public static Type valueOf(
+          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+        if (desc.getType() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "EnumValueDescriptor is not for this type.");
+        }
+        return VALUES[desc.getIndex()];
+      }
+
+      private final int index;
+      private final int value;
+
+      private Type(int index, int value) {
+        this.index = index;
+        this.value = value;
+      }
+
+      // @@protoc_insertion_point(enum_scope:mesos.scheduler.Event.Type)
+    }
+
+    public interface SubscribedOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required .mesos.FrameworkID framework_id = 1;
+      /**
+       * <code>required .mesos.FrameworkID framework_id = 1;</code>
+       */
+      boolean hasFrameworkId();
+      /**
+       * <code>required .mesos.FrameworkID framework_id = 1;</code>
+       */
+      org.apache.mesos.Protos.FrameworkID getFrameworkId();
+      /**
+       * <code>required .mesos.FrameworkID framework_id = 1;</code>
+       */
+      org.apache.mesos.Protos.FrameworkIDOrBuilder getFrameworkIdOrBuilder();
+
+      // optional double heartbeat_interval_seconds = 2;
+      /**
+       * <code>optional double heartbeat_interval_seconds = 2;</code>
+       *
+       * <pre>
+       * This value will be set if the master is sending heartbeats. See
+       * the comment above on 'HEARTBEAT' for more details.
+       * </pre>
+       */
+      boolean hasHeartbeatIntervalSeconds();
+      /**
+       * <code>optional double heartbeat_interval_seconds = 2;</code>
+       *
+       * <pre>
+       * This value will be set if the master is sending heartbeats. See
+       * the comment above on 'HEARTBEAT' for more details.
+       * </pre>
+       */
+      double getHeartbeatIntervalSeconds();
+
+      // optional .mesos.MasterInfo master_info = 3;
+      /**
+       * <code>optional .mesos.MasterInfo master_info = 3;</code>
+       *
+       * <pre>
+       * Since Mesos 1.1.
+       * </pre>
+       */
+      boolean hasMasterInfo();
+      /**
+       * <code>optional .mesos.MasterInfo master_info = 3;</code>
+       *
+       * <pre>
+       * Since Mesos 1.1.
+       * </pre>
+       */
+      org.apache.mesos.Protos.MasterInfo getMasterInfo();
+      /**
+       * <code>optional .mesos.MasterInfo master_info = 3;</code>
+       *
+       * <pre>
+       * Since Mesos 1.1.
+       * </pre>
+       */
+      org.apache.mesos.Protos.MasterInfoOrBuilder getMasterInfoOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.scheduler.Event.Subscribed}
+     *
+     * <pre>
+     * First event received when the scheduler subscribes.
+     * </pre>
+     */
+    public static final class Subscribed extends
+        com.google.protobuf.GeneratedMessage
+        implements SubscribedOrBuilder {
+      // Use Subscribed.newBuilder() to construct.
+      private Subscribed(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Subscribed(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Subscribed defaultInstance;
+      public static Subscribed getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Subscribed getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Subscribed(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.Protos.FrameworkID.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = frameworkId_.toBuilder();
+                }
+                frameworkId_ = input.readMessage(org.apache.mesos.Protos.FrameworkID.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(frameworkId_);
+                  frameworkId_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+              case 17: {
+                bitField0_ |= 0x00000002;
+                heartbeatIntervalSeconds_ = input.readDouble();
+                break;
+              }
+              case 26: {
+                org.apache.mesos.Protos.MasterInfo.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                  subBuilder = masterInfo_.toBuilder();
+                }
+                masterInfo_ = input.readMessage(org.apache.mesos.Protos.MasterInfo.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(masterInfo_);
+                  masterInfo_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000004;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_Subscribed_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_Subscribed_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.scheduler.Protos.Event.Subscribed.class, org.apache.mesos.scheduler.Protos.Event.Subscribed.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Subscribed> PARSER =
+          new com.google.protobuf.AbstractParser<Subscribed>() {
+        public Subscribed parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Subscribed(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Subscribed> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required .mesos.FrameworkID framework_id = 1;
+      public static final int FRAMEWORK_ID_FIELD_NUMBER = 1;
+      private org.apache.mesos.Protos.FrameworkID frameworkId_;
+      /**
+       * <code>required .mesos.FrameworkID framework_id = 1;</code>
+       */
+      public boolean hasFrameworkId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.FrameworkID framework_id = 1;</code>
+       */
+      public org.apache.mesos.Protos.FrameworkID getFrameworkId() {
+        return frameworkId_;
+      }
+      /**
+       * <code>required .mesos.FrameworkID framework_id = 1;</code>
+       */
+      public org.apache.mesos.Protos.FrameworkIDOrBuilder getFrameworkIdOrBuilder() {
+        return frameworkId_;
+      }
+
+      // optional double heartbeat_interval_seconds = 2;
+      public static final int HEARTBEAT_INTERVAL_SECONDS_FIELD_NUMBER = 2;
+      private double heartbeatIntervalSeconds_;
+      /**
+       * <code>optional double heartbeat_interval_seconds = 2;</code>
+       *
+       * <pre>
+       * This value will be set if the master is sending heartbeats. See
+       * the comment above on 'HEARTBEAT' for more details.
+       * </pre>
+       */
+      public boolean hasHeartbeatIntervalSeconds() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional double heartbeat_interval_seconds = 2;</code>
+       *
+       * <pre>
+       * This value will be set if the master is sending heartbeats. See
+       * the comment above on 'HEARTBEAT' for more details.
+       * </pre>
+       */
+      public double getHeartbeatIntervalSeconds() {
+        return heartbeatIntervalSeconds_;
+      }
+
+      // optional .mesos.MasterInfo master_info = 3;
+      public static final int MASTER_INFO_FIELD_NUMBER = 3;
+      private org.apache.mesos.Protos.MasterInfo masterInfo_;
+      /**
+       * <code>optional .mesos.MasterInfo master_info = 3;</code>
+       *
+       * <pre>
+       * Since Mesos 1.1.
+       * </pre>
+       */
+      public boolean hasMasterInfo() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.MasterInfo master_info = 3;</code>
+       *
+       * <pre>
+       * Since Mesos 1.1.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.MasterInfo getMasterInfo() {
+        return masterInfo_;
+      }
+      /**
+       * <code>optional .mesos.MasterInfo master_info = 3;</code>
+       *
+       * <pre>
+       * Since Mesos 1.1.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.MasterInfoOrBuilder getMasterInfoOrBuilder() {
+        return masterInfo_;
+      }
+
+      private void initFields() {
+        frameworkId_ = org.apache.mesos.Protos.FrameworkID.getDefaultInstance();
+        heartbeatIntervalSeconds_ = 0D;
+        masterInfo_ = org.apache.mesos.Protos.MasterInfo.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasFrameworkId()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getFrameworkId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (hasMasterInfo()) {
+          if (!getMasterInfo().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, frameworkId_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeDouble(2, heartbeatIntervalSeconds_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeMessage(3, masterInfo_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, frameworkId_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeDoubleSize(2, heartbeatIntervalSeconds_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(3, masterInfo_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.scheduler.Protos.Event.Subscribed parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Subscribed parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Subscribed parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Subscribed parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Subscribed parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Subscribed parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Subscribed parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Subscribed parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Subscribed parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Subscribed parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.scheduler.Protos.Event.Subscribed prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.scheduler.Event.Subscribed}
+       *
+       * <pre>
+       * First event received when the scheduler subscribes.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.scheduler.Protos.Event.SubscribedOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_Subscribed_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_Subscribed_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.scheduler.Protos.Event.Subscribed.class, org.apache.mesos.scheduler.Protos.Event.Subscribed.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.scheduler.Protos.Event.Subscribed.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getFrameworkIdFieldBuilder();
+            getMasterInfoFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (frameworkIdBuilder_ == null) {
+            frameworkId_ = org.apache.mesos.Protos.FrameworkID.getDefaultInstance();
+          } else {
+            frameworkIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          heartbeatIntervalSeconds_ = 0D;
+          bitField0_ = (bitField0_ & ~0x00000002);
+          if (masterInfoBuilder_ == null) {
+            masterInfo_ = org.apache.mesos.Protos.MasterInfo.getDefaultInstance();
+          } else {
+            masterInfoBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_Subscribed_descriptor;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Event.Subscribed getDefaultInstanceForType() {
+          return org.apache.mesos.scheduler.Protos.Event.Subscribed.getDefaultInstance();
+        }
+
+        public org.apache.mesos.scheduler.Protos.Event.Subscribed build() {
+          org.apache.mesos.scheduler.Protos.Event.Subscribed result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Event.Subscribed buildPartial() {
+          org.apache.mesos.scheduler.Protos.Event.Subscribed result = new org.apache.mesos.scheduler.Protos.Event.Subscribed(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (frameworkIdBuilder_ == null) {
+            result.frameworkId_ = frameworkId_;
+          } else {
+            result.frameworkId_ = frameworkIdBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          result.heartbeatIntervalSeconds_ = heartbeatIntervalSeconds_;
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          if (masterInfoBuilder_ == null) {
+            result.masterInfo_ = masterInfo_;
+          } else {
+            result.masterInfo_ = masterInfoBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.scheduler.Protos.Event.Subscribed) {
+            return mergeFrom((org.apache.mesos.scheduler.Protos.Event.Subscribed)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.scheduler.Protos.Event.Subscribed other) {
+          if (other == org.apache.mesos.scheduler.Protos.Event.Subscribed.getDefaultInstance()) return this;
+          if (other.hasFrameworkId()) {
+            mergeFrameworkId(other.getFrameworkId());
+          }
+          if (other.hasHeartbeatIntervalSeconds()) {
+            setHeartbeatIntervalSeconds(other.getHeartbeatIntervalSeconds());
+          }
+          if (other.hasMasterInfo()) {
+            mergeMasterInfo(other.getMasterInfo());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasFrameworkId()) {
+            
+            return false;
+          }
+          if (!getFrameworkId().isInitialized()) {
+            
+            return false;
+          }
+          if (hasMasterInfo()) {
+            if (!getMasterInfo().isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.scheduler.Protos.Event.Subscribed parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.scheduler.Protos.Event.Subscribed) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required .mesos.FrameworkID framework_id = 1;
+        private org.apache.mesos.Protos.FrameworkID frameworkId_ = org.apache.mesos.Protos.FrameworkID.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.FrameworkID, org.apache.mesos.Protos.FrameworkID.Builder, org.apache.mesos.Protos.FrameworkIDOrBuilder> frameworkIdBuilder_;
+        /**
+         * <code>required .mesos.FrameworkID framework_id = 1;</code>
+         */
+        public boolean hasFrameworkId() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.FrameworkID framework_id = 1;</code>
+         */
+        public org.apache.mesos.Protos.FrameworkID getFrameworkId() {
+          if (frameworkIdBuilder_ == null) {
+            return frameworkId_;
+          } else {
+            return frameworkIdBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.FrameworkID framework_id = 1;</code>
+         */
+        public Builder setFrameworkId(org.apache.mesos.Protos.FrameworkID value) {
+          if (frameworkIdBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            frameworkId_ = value;
+            onChanged();
+          } else {
+            frameworkIdBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.FrameworkID framework_id = 1;</code>
+         */
+        public Builder setFrameworkId(
+            org.apache.mesos.Protos.FrameworkID.Builder builderForValue) {
+          if (frameworkIdBuilder_ == null) {
+            frameworkId_ = builderForValue.build();
+            onChanged();
+          } else {
+            frameworkIdBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.FrameworkID framework_id = 1;</code>
+         */
+        public Builder mergeFrameworkId(org.apache.mesos.Protos.FrameworkID value) {
+          if (frameworkIdBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                frameworkId_ != org.apache.mesos.Protos.FrameworkID.getDefaultInstance()) {
+              frameworkId_ =
+                org.apache.mesos.Protos.FrameworkID.newBuilder(frameworkId_).mergeFrom(value).buildPartial();
+            } else {
+              frameworkId_ = value;
+            }
+            onChanged();
+          } else {
+            frameworkIdBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.FrameworkID framework_id = 1;</code>
+         */
+        public Builder clearFrameworkId() {
+          if (frameworkIdBuilder_ == null) {
+            frameworkId_ = org.apache.mesos.Protos.FrameworkID.getDefaultInstance();
+            onChanged();
+          } else {
+            frameworkIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>required .mesos.FrameworkID framework_id = 1;</code>
+         */
+        public org.apache.mesos.Protos.FrameworkID.Builder getFrameworkIdBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getFrameworkIdFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.FrameworkID framework_id = 1;</code>
+         */
+        public org.apache.mesos.Protos.FrameworkIDOrBuilder getFrameworkIdOrBuilder() {
+          if (frameworkIdBuilder_ != null) {
+            return frameworkIdBuilder_.getMessageOrBuilder();
+          } else {
+            return frameworkId_;
+          }
+        }
+        /**
+         * <code>required .mesos.FrameworkID framework_id = 1;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.FrameworkID, org.apache.mesos.Protos.FrameworkID.Builder, org.apache.mesos.Protos.FrameworkIDOrBuilder> 
+            getFrameworkIdFieldBuilder() {
+          if (frameworkIdBuilder_ == null) {
+            frameworkIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.FrameworkID, org.apache.mesos.Protos.FrameworkID.Builder, org.apache.mesos.Protos.FrameworkIDOrBuilder>(
+                    frameworkId_,
+                    getParentForChildren(),
+                    isClean());
+            frameworkId_ = null;
+          }
+          return frameworkIdBuilder_;
+        }
+
+        // optional double heartbeat_interval_seconds = 2;
+        private double heartbeatIntervalSeconds_ ;
+        /**
+         * <code>optional double heartbeat_interval_seconds = 2;</code>
+         *
+         * <pre>
+         * This value will be set if the master is sending heartbeats. See
+         * the comment above on 'HEARTBEAT' for more details.
+         * </pre>
+         */
+        public boolean hasHeartbeatIntervalSeconds() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional double heartbeat_interval_seconds = 2;</code>
+         *
+         * <pre>
+         * This value will be set if the master is sending heartbeats. See
+         * the comment above on 'HEARTBEAT' for more details.
+         * </pre>
+         */
+        public double getHeartbeatIntervalSeconds() {
+          return heartbeatIntervalSeconds_;
+        }
+        /**
+         * <code>optional double heartbeat_interval_seconds = 2;</code>
+         *
+         * <pre>
+         * This value will be set if the master is sending heartbeats. See
+         * the comment above on 'HEARTBEAT' for more details.
+         * </pre>
+         */
+        public Builder setHeartbeatIntervalSeconds(double value) {
+          bitField0_ |= 0x00000002;
+          heartbeatIntervalSeconds_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional double heartbeat_interval_seconds = 2;</code>
+         *
+         * <pre>
+         * This value will be set if the master is sending heartbeats. See
+         * the comment above on 'HEARTBEAT' for more details.
+         * </pre>
+         */
+        public Builder clearHeartbeatIntervalSeconds() {
+          bitField0_ = (bitField0_ & ~0x00000002);
+          heartbeatIntervalSeconds_ = 0D;
+          onChanged();
+          return this;
+        }
+
+        // optional .mesos.MasterInfo master_info = 3;
+        private org.apache.mesos.Protos.MasterInfo masterInfo_ = org.apache.mesos.Protos.MasterInfo.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.MasterInfo, org.apache.mesos.Protos.MasterInfo.Builder, org.apache.mesos.Protos.MasterInfoOrBuilder> masterInfoBuilder_;
+        /**
+         * <code>optional .mesos.MasterInfo master_info = 3;</code>
+         *
+         * <pre>
+         * Since Mesos 1.1.
+         * </pre>
+         */
+        public boolean hasMasterInfo() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional .mesos.MasterInfo master_info = 3;</code>
+         *
+         * <pre>
+         * Since Mesos 1.1.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.MasterInfo getMasterInfo() {
+          if (masterInfoBuilder_ == null) {
+            return masterInfo_;
+          } else {
+            return masterInfoBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.MasterInfo master_info = 3;</code>
+         *
+         * <pre>
+         * Since Mesos 1.1.
+         * </pre>
+         */
+        public Builder setMasterInfo(org.apache.mesos.Protos.MasterInfo value) {
+          if (masterInfoBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            masterInfo_ = value;
+            onChanged();
+          } else {
+            masterInfoBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.MasterInfo master_info = 3;</code>
+         *
+         * <pre>
+         * Since Mesos 1.1.
+         * </pre>
+         */
+        public Builder setMasterInfo(
+            org.apache.mesos.Protos.MasterInfo.Builder builderForValue) {
+          if (masterInfoBuilder_ == null) {
+            masterInfo_ = builderForValue.build();
+            onChanged();
+          } else {
+            masterInfoBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.MasterInfo master_info = 3;</code>
+         *
+         * <pre>
+         * Since Mesos 1.1.
+         * </pre>
+         */
+        public Builder mergeMasterInfo(org.apache.mesos.Protos.MasterInfo value) {
+          if (masterInfoBuilder_ == null) {
+            if (((bitField0_ & 0x00000004) == 0x00000004) &&
+                masterInfo_ != org.apache.mesos.Protos.MasterInfo.getDefaultInstance()) {
+              masterInfo_ =
+                org.apache.mesos.Protos.MasterInfo.newBuilder(masterInfo_).mergeFrom(value).buildPartial();
+            } else {
+              masterInfo_ = value;
+            }
+            onChanged();
+          } else {
+            masterInfoBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.MasterInfo master_info = 3;</code>
+         *
+         * <pre>
+         * Since Mesos 1.1.
+         * </pre>
+         */
+        public Builder clearMasterInfo() {
+          if (masterInfoBuilder_ == null) {
+            masterInfo_ = org.apache.mesos.Protos.MasterInfo.getDefaultInstance();
+            onChanged();
+          } else {
+            masterInfoBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.MasterInfo master_info = 3;</code>
+         *
+         * <pre>
+         * Since Mesos 1.1.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.MasterInfo.Builder getMasterInfoBuilder() {
+          bitField0_ |= 0x00000004;
+          onChanged();
+          return getMasterInfoFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.MasterInfo master_info = 3;</code>
+         *
+         * <pre>
+         * Since Mesos 1.1.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.MasterInfoOrBuilder getMasterInfoOrBuilder() {
+          if (masterInfoBuilder_ != null) {
+            return masterInfoBuilder_.getMessageOrBuilder();
+          } else {
+            return masterInfo_;
+          }
+        }
+        /**
+         * <code>optional .mesos.MasterInfo master_info = 3;</code>
+         *
+         * <pre>
+         * Since Mesos 1.1.
+         * </pre>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.MasterInfo, org.apache.mesos.Protos.MasterInfo.Builder, org.apache.mesos.Protos.MasterInfoOrBuilder> 
+            getMasterInfoFieldBuilder() {
+          if (masterInfoBuilder_ == null) {
+            masterInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.MasterInfo, org.apache.mesos.Protos.MasterInfo.Builder, org.apache.mesos.Protos.MasterInfoOrBuilder>(
+                    masterInfo_,
+                    getParentForChildren(),
+                    isClean());
+            masterInfo_ = null;
+          }
+          return masterInfoBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.scheduler.Event.Subscribed)
+      }
+
+      static {
+        defaultInstance = new Subscribed(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.scheduler.Event.Subscribed)
+    }
+
+    public interface OffersOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // repeated .mesos.Offer offers = 1;
+      /**
+       * <code>repeated .mesos.Offer offers = 1;</code>
+       */
+      java.util.List<org.apache.mesos.Protos.Offer> 
+          getOffersList();
+      /**
+       * <code>repeated .mesos.Offer offers = 1;</code>
+       */
+      org.apache.mesos.Protos.Offer getOffers(int index);
+      /**
+       * <code>repeated .mesos.Offer offers = 1;</code>
+       */
+      int getOffersCount();
+      /**
+       * <code>repeated .mesos.Offer offers = 1;</code>
+       */
+      java.util.List<? extends org.apache.mesos.Protos.OfferOrBuilder> 
+          getOffersOrBuilderList();
+      /**
+       * <code>repeated .mesos.Offer offers = 1;</code>
+       */
+      org.apache.mesos.Protos.OfferOrBuilder getOffersOrBuilder(
+          int index);
+    }
+    /**
+     * Protobuf type {@code mesos.scheduler.Event.Offers}
+     *
+     * <pre>
+     * Received whenever there are new resources that are offered to the
+     * scheduler. Each offer corresponds to a set of resources on an
+     * agent. Until the scheduler accepts or declines an offer the
+     * resources are considered allocated to the scheduler.
+     * </pre>
+     */
+    public static final class Offers extends
+        com.google.protobuf.GeneratedMessage
+        implements OffersOrBuilder {
+      // Use Offers.newBuilder() to construct.
+      private Offers(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Offers(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Offers defaultInstance;
+      public static Offers getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Offers getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Offers(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                  offers_ = new java.util.ArrayList<org.apache.mesos.Protos.Offer>();
+                  mutable_bitField0_ |= 0x00000001;
+                }
+                offers_.add(input.readMessage(org.apache.mesos.Protos.Offer.PARSER, extensionRegistry));
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+            offers_ = java.util.Collections.unmodifiableList(offers_);
+          }
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_Offers_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_Offers_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.scheduler.Protos.Event.Offers.class, org.apache.mesos.scheduler.Protos.Event.Offers.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Offers> PARSER =
+          new com.google.protobuf.AbstractParser<Offers>() {
+        public Offers parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Offers(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Offers> getParserForType() {
+        return PARSER;
+      }
+
+      // repeated .mesos.Offer offers = 1;
+      public static final int OFFERS_FIELD_NUMBER = 1;
+      private java.util.List<org.apache.mesos.Protos.Offer> offers_;
+      /**
+       * <code>repeated .mesos.Offer offers = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.Offer> getOffersList() {
+        return offers_;
+      }
+      /**
+       * <code>repeated .mesos.Offer offers = 1;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.OfferOrBuilder> 
+          getOffersOrBuilderList() {
+        return offers_;
+      }
+      /**
+       * <code>repeated .mesos.Offer offers = 1;</code>
+       */
+      public int getOffersCount() {
+        return offers_.size();
+      }
+      /**
+       * <code>repeated .mesos.Offer offers = 1;</code>
+       */
+      public org.apache.mesos.Protos.Offer getOffers(int index) {
+        return offers_.get(index);
+      }
+      /**
+       * <code>repeated .mesos.Offer offers = 1;</code>
+       */
+      public org.apache.mesos.Protos.OfferOrBuilder getOffersOrBuilder(
+          int index) {
+        return offers_.get(index);
+      }
+
+      private void initFields() {
+        offers_ = java.util.Collections.emptyList();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        for (int i = 0; i < getOffersCount(); i++) {
+          if (!getOffers(i).isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        for (int i = 0; i < offers_.size(); i++) {
+          output.writeMessage(1, offers_.get(i));
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        for (int i = 0; i < offers_.size(); i++) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, offers_.get(i));
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.scheduler.Protos.Event.Offers parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Offers parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Offers parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Offers parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Offers parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Offers parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Offers parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Offers parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Offers parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Offers parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.scheduler.Protos.Event.Offers prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.scheduler.Event.Offers}
+       *
+       * <pre>
+       * Received whenever there are new resources that are offered to the
+       * scheduler. Each offer corresponds to a set of resources on an
+       * agent. Until the scheduler accepts or declines an offer the
+       * resources are considered allocated to the scheduler.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.scheduler.Protos.Event.OffersOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_Offers_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_Offers_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.scheduler.Protos.Event.Offers.class, org.apache.mesos.scheduler.Protos.Event.Offers.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.scheduler.Protos.Event.Offers.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getOffersFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (offersBuilder_ == null) {
+            offers_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000001);
+          } else {
+            offersBuilder_.clear();
+          }
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_Offers_descriptor;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Event.Offers getDefaultInstanceForType() {
+          return org.apache.mesos.scheduler.Protos.Event.Offers.getDefaultInstance();
+        }
+
+        public org.apache.mesos.scheduler.Protos.Event.Offers build() {
+          org.apache.mesos.scheduler.Protos.Event.Offers result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Event.Offers buildPartial() {
+          org.apache.mesos.scheduler.Protos.Event.Offers result = new org.apache.mesos.scheduler.Protos.Event.Offers(this);
+          int from_bitField0_ = bitField0_;
+          if (offersBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              offers_ = java.util.Collections.unmodifiableList(offers_);
+              bitField0_ = (bitField0_ & ~0x00000001);
+            }
+            result.offers_ = offers_;
+          } else {
+            result.offers_ = offersBuilder_.build();
+          }
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.scheduler.Protos.Event.Offers) {
+            return mergeFrom((org.apache.mesos.scheduler.Protos.Event.Offers)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.scheduler.Protos.Event.Offers other) {
+          if (other == org.apache.mesos.scheduler.Protos.Event.Offers.getDefaultInstance()) return this;
+          if (offersBuilder_ == null) {
+            if (!other.offers_.isEmpty()) {
+              if (offers_.isEmpty()) {
+                offers_ = other.offers_;
+                bitField0_ = (bitField0_ & ~0x00000001);
+              } else {
+                ensureOffersIsMutable();
+                offers_.addAll(other.offers_);
+              }
+              onChanged();
+            }
+          } else {
+            if (!other.offers_.isEmpty()) {
+              if (offersBuilder_.isEmpty()) {
+                offersBuilder_.dispose();
+                offersBuilder_ = null;
+                offers_ = other.offers_;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                offersBuilder_ = 
+                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                     getOffersFieldBuilder() : null;
+              } else {
+                offersBuilder_.addAllMessages(other.offers_);
+              }
+            }
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          for (int i = 0; i < getOffersCount(); i++) {
+            if (!getOffers(i).isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.scheduler.Protos.Event.Offers parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.scheduler.Protos.Event.Offers) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // repeated .mesos.Offer offers = 1;
+        private java.util.List<org.apache.mesos.Protos.Offer> offers_ =
+          java.util.Collections.emptyList();
+        private void ensureOffersIsMutable() {
+          if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+            offers_ = new java.util.ArrayList<org.apache.mesos.Protos.Offer>(offers_);
+            bitField0_ |= 0x00000001;
+           }
+        }
+
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.Protos.Offer, org.apache.mesos.Protos.Offer.Builder, org.apache.mesos.Protos.OfferOrBuilder> offersBuilder_;
+
+        /**
+         * <code>repeated .mesos.Offer offers = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.Protos.Offer> getOffersList() {
+          if (offersBuilder_ == null) {
+            return java.util.Collections.unmodifiableList(offers_);
+          } else {
+            return offersBuilder_.getMessageList();
+          }
+        }
+        /**
+         * <code>repeated .mesos.Offer offers = 1;</code>
+         */
+        public int getOffersCount() {
+          if (offersBuilder_ == null) {
+            return offers_.size();
+          } else {
+            return offersBuilder_.getCount();
+          }
+        }
+        /**
+         * <code>repeated .mesos.Offer offers = 1;</code>
+         */
+        public org.apache.mesos.Protos.Offer getOffers(int index) {
+          if (offersBuilder_ == null) {
+            return offers_.get(index);
+          } else {
+            return offersBuilder_.getMessage(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.Offer offers = 1;</code>
+         */
+        public Builder setOffers(
+            int index, org.apache.mesos.Protos.Offer value) {
+          if (offersBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureOffersIsMutable();
+            offers_.set(index, value);
+            onChanged();
+          } else {
+            offersBuilder_.setMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Offer offers = 1;</code>
+         */
+        public Builder setOffers(
+            int index, org.apache.mesos.Protos.Offer.Builder builderForValue) {
+          if (offersBuilder_ == null) {
+            ensureOffersIsMutable();
+            offers_.set(index, builderForValue.build());
+            onChanged();
+          } else {
+            offersBuilder_.setMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Offer offers = 1;</code>
+         */
+        public Builder addOffers(org.apache.mesos.Protos.Offer value) {
+          if (offersBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureOffersIsMutable();
+            offers_.add(value);
+            onChanged();
+          } else {
+            offersBuilder_.addMessage(value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Offer offers = 1;</code>
+         */
+        public Builder addOffers(
+            int index, org.apache.mesos.Protos.Offer value) {
+          if (offersBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureOffersIsMutable();
+            offers_.add(index, value);
+            onChanged();
+          } else {
+            offersBuilder_.addMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Offer offers = 1;</code>
+         */
+        public Builder addOffers(
+            org.apache.mesos.Protos.Offer.Builder builderForValue) {
+          if (offersBuilder_ == null) {
+            ensureOffersIsMutable();
+            offers_.add(builderForValue.build());
+            onChanged();
+          } else {
+            offersBuilder_.addMessage(builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Offer offers = 1;</code>
+         */
+        public Builder addOffers(
+            int index, org.apache.mesos.Protos.Offer.Builder builderForValue) {
+          if (offersBuilder_ == null) {
+            ensureOffersIsMutable();
+            offers_.add(index, builderForValue.build());
+            onChanged();
+          } else {
+            offersBuilder_.addMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Offer offers = 1;</code>
+         */
+        public Builder addAllOffers(
+            java.lang.Iterable<? extends org.apache.mesos.Protos.Offer> values) {
+          if (offersBuilder_ == null) {
+            ensureOffersIsMutable();
+            super.addAll(values, offers_);
+            onChanged();
+          } else {
+            offersBuilder_.addAllMessages(values);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Offer offers = 1;</code>
+         */
+        public Builder clearOffers() {
+          if (offersBuilder_ == null) {
+            offers_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000001);
+            onChanged();
+          } else {
+            offersBuilder_.clear();
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Offer offers = 1;</code>
+         */
+        public Builder removeOffers(int index) {
+          if (offersBuilder_ == null) {
+            ensureOffersIsMutable();
+            offers_.remove(index);
+            onChanged();
+          } else {
+            offersBuilder_.remove(index);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Offer offers = 1;</code>
+         */
+        public org.apache.mesos.Protos.Offer.Builder getOffersBuilder(
+            int index) {
+          return getOffersFieldBuilder().getBuilder(index);
+        }
+        /**
+         * <code>repeated .mesos.Offer offers = 1;</code>
+         */
+        public org.apache.mesos.Protos.OfferOrBuilder getOffersOrBuilder(
+            int index) {
+          if (offersBuilder_ == null) {
+            return offers_.get(index);  } else {
+            return offersBuilder_.getMessageOrBuilder(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.Offer offers = 1;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.Protos.OfferOrBuilder> 
+             getOffersOrBuilderList() {
+          if (offersBuilder_ != null) {
+            return offersBuilder_.getMessageOrBuilderList();
+          } else {
+            return java.util.Collections.unmodifiableList(offers_);
+          }
+        }
+        /**
+         * <code>repeated .mesos.Offer offers = 1;</code>
+         */
+        public org.apache.mesos.Protos.Offer.Builder addOffersBuilder() {
+          return getOffersFieldBuilder().addBuilder(
+              org.apache.mesos.Protos.Offer.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.Offer offers = 1;</code>
+         */
+        public org.apache.mesos.Protos.Offer.Builder addOffersBuilder(
+            int index) {
+          return getOffersFieldBuilder().addBuilder(
+              index, org.apache.mesos.Protos.Offer.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.Offer offers = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.Protos.Offer.Builder> 
+             getOffersBuilderList() {
+          return getOffersFieldBuilder().getBuilderList();
+        }
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.Protos.Offer, org.apache.mesos.Protos.Offer.Builder, org.apache.mesos.Protos.OfferOrBuilder> 
+            getOffersFieldBuilder() {
+          if (offersBuilder_ == null) {
+            offersBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.Protos.Offer, org.apache.mesos.Protos.Offer.Builder, org.apache.mesos.Protos.OfferOrBuilder>(
+                    offers_,
+                    ((bitField0_ & 0x00000001) == 0x00000001),
+                    getParentForChildren(),
+                    isClean());
+            offers_ = null;
+          }
+          return offersBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.scheduler.Event.Offers)
+      }
+
+      static {
+        defaultInstance = new Offers(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.scheduler.Event.Offers)
+    }
+
+    public interface InverseOffersOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // repeated .mesos.InverseOffer inverse_offers = 1;
+      /**
+       * <code>repeated .mesos.InverseOffer inverse_offers = 1;</code>
+       */
+      java.util.List<org.apache.mesos.Protos.InverseOffer> 
+          getInverseOffersList();
+      /**
+       * <code>repeated .mesos.InverseOffer inverse_offers = 1;</code>
+       */
+      org.apache.mesos.Protos.InverseOffer getInverseOffers(int index);
+      /**
+       * <code>repeated .mesos.InverseOffer inverse_offers = 1;</code>
+       */
+      int getInverseOffersCount();
+      /**
+       * <code>repeated .mesos.InverseOffer inverse_offers = 1;</code>
+       */
+      java.util.List<? extends org.apache.mesos.Protos.InverseOfferOrBuilder> 
+          getInverseOffersOrBuilderList();
+      /**
+       * <code>repeated .mesos.InverseOffer inverse_offers = 1;</code>
+       */
+      org.apache.mesos.Protos.InverseOfferOrBuilder getInverseOffersOrBuilder(
+          int index);
+    }
+    /**
+     * Protobuf type {@code mesos.scheduler.Event.InverseOffers}
+     *
+     * <pre>
+     * Received whenever there are resources requested back from the
+     * scheduler. Each inverse offer specifies the agent, and
+     * optionally specific resources. Accepting or Declining an inverse
+     * offer informs the allocator of the scheduler's ability to release
+     * the specified resources without violating an SLA. If no resources
+     * are specified then all resources on the agent are requested to be
+     * released.
+     * </pre>
+     */
+    public static final class InverseOffers extends
+        com.google.protobuf.GeneratedMessage
+        implements InverseOffersOrBuilder {
+      // Use InverseOffers.newBuilder() to construct.
+      private InverseOffers(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private InverseOffers(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final InverseOffers defaultInstance;
+      public static InverseOffers getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public InverseOffers getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private InverseOffers(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                  inverseOffers_ = new java.util.ArrayList<org.apache.mesos.Protos.InverseOffer>();
+                  mutable_bitField0_ |= 0x00000001;
+                }
+                inverseOffers_.add(input.readMessage(org.apache.mesos.Protos.InverseOffer.PARSER, extensionRegistry));
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+            inverseOffers_ = java.util.Collections.unmodifiableList(inverseOffers_);
+          }
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_InverseOffers_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_InverseOffers_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.scheduler.Protos.Event.InverseOffers.class, org.apache.mesos.scheduler.Protos.Event.InverseOffers.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<InverseOffers> PARSER =
+          new com.google.protobuf.AbstractParser<InverseOffers>() {
+        public InverseOffers parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new InverseOffers(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<InverseOffers> getParserForType() {
+        return PARSER;
+      }
+
+      // repeated .mesos.InverseOffer inverse_offers = 1;
+      public static final int INVERSE_OFFERS_FIELD_NUMBER = 1;
+      private java.util.List<org.apache.mesos.Protos.InverseOffer> inverseOffers_;
+      /**
+       * <code>repeated .mesos.InverseOffer inverse_offers = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.InverseOffer> getInverseOffersList() {
+        return inverseOffers_;
+      }
+      /**
+       * <code>repeated .mesos.InverseOffer inverse_offers = 1;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.InverseOfferOrBuilder> 
+          getInverseOffersOrBuilderList() {
+        return inverseOffers_;
+      }
+      /**
+       * <code>repeated .mesos.InverseOffer inverse_offers = 1;</code>
+       */
+      public int getInverseOffersCount() {
+        return inverseOffers_.size();
+      }
+      /**
+       * <code>repeated .mesos.InverseOffer inverse_offers = 1;</code>
+       */
+      public org.apache.mesos.Protos.InverseOffer getInverseOffers(int index) {
+        return inverseOffers_.get(index);
+      }
+      /**
+       * <code>repeated .mesos.InverseOffer inverse_offers = 1;</code>
+       */
+      public org.apache.mesos.Protos.InverseOfferOrBuilder getInverseOffersOrBuilder(
+          int index) {
+        return inverseOffers_.get(index);
+      }
+
+      private void initFields() {
+        inverseOffers_ = java.util.Collections.emptyList();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        for (int i = 0; i < getInverseOffersCount(); i++) {
+          if (!getInverseOffers(i).isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        for (int i = 0; i < inverseOffers_.size(); i++) {
+          output.writeMessage(1, inverseOffers_.get(i));
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        for (int i = 0; i < inverseOffers_.size(); i++) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, inverseOffers_.get(i));
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.scheduler.Protos.Event.InverseOffers parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.InverseOffers parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.InverseOffers parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.InverseOffers parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.InverseOffers parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.InverseOffers parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.InverseOffers parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.InverseOffers parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.InverseOffers parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.InverseOffers parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.scheduler.Protos.Event.InverseOffers prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.scheduler.Event.InverseOffers}
+       *
+       * <pre>
+       * Received whenever there are resources requested back from the
+       * scheduler. Each inverse offer specifies the agent, and
+       * optionally specific resources. Accepting or Declining an inverse
+       * offer informs the allocator of the scheduler's ability to release
+       * the specified resources without violating an SLA. If no resources
+       * are specified then all resources on the agent are requested to be
+       * released.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.scheduler.Protos.Event.InverseOffersOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_InverseOffers_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_InverseOffers_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.scheduler.Protos.Event.InverseOffers.class, org.apache.mesos.scheduler.Protos.Event.InverseOffers.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.scheduler.Protos.Event.InverseOffers.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getInverseOffersFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (inverseOffersBuilder_ == null) {
+            inverseOffers_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000001);
+          } else {
+            inverseOffersBuilder_.clear();
+          }
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_InverseOffers_descriptor;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Event.InverseOffers getDefaultInstanceForType() {
+          return org.apache.mesos.scheduler.Protos.Event.InverseOffers.getDefaultInstance();
+        }
+
+        public org.apache.mesos.scheduler.Protos.Event.InverseOffers build() {
+          org.apache.mesos.scheduler.Protos.Event.InverseOffers result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Event.InverseOffers buildPartial() {
+          org.apache.mesos.scheduler.Protos.Event.InverseOffers result = new org.apache.mesos.scheduler.Protos.Event.InverseOffers(this);
+          int from_bitField0_ = bitField0_;
+          if (inverseOffersBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              inverseOffers_ = java.util.Collections.unmodifiableList(inverseOffers_);
+              bitField0_ = (bitField0_ & ~0x00000001);
+            }
+            result.inverseOffers_ = inverseOffers_;
+          } else {
+            result.inverseOffers_ = inverseOffersBuilder_.build();
+          }
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.scheduler.Protos.Event.InverseOffers) {
+            return mergeFrom((org.apache.mesos.scheduler.Protos.Event.InverseOffers)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.scheduler.Protos.Event.InverseOffers other) {
+          if (other == org.apache.mesos.scheduler.Protos.Event.InverseOffers.getDefaultInstance()) return this;
+          if (inverseOffersBuilder_ == null) {
+            if (!other.inverseOffers_.isEmpty()) {
+              if (inverseOffers_.isEmpty()) {
+                inverseOffers_ = other.inverseOffers_;
+                bitField0_ = (bitField0_ & ~0x00000001);
+              } else {
+                ensureInverseOffersIsMutable();
+                inverseOffers_.addAll(other.inverseOffers_);
+              }
+              onChanged();
+            }
+          } else {
+            if (!other.inverseOffers_.isEmpty()) {
+              if (inverseOffersBuilder_.isEmpty()) {
+                inverseOffersBuilder_.dispose();
+                inverseOffersBuilder_ = null;
+                inverseOffers_ = other.inverseOffers_;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                inverseOffersBuilder_ = 
+                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                     getInverseOffersFieldBuilder() : null;
+              } else {
+                inverseOffersBuilder_.addAllMessages(other.inverseOffers_);
+              }
+            }
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          for (int i = 0; i < getInverseOffersCount(); i++) {
+            if (!getInverseOffers(i).isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.scheduler.Protos.Event.InverseOffers parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.scheduler.Protos.Event.InverseOffers) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // repeated .mesos.InverseOffer inverse_offers = 1;
+        private java.util.List<org.apache.mesos.Protos.InverseOffer> inverseOffers_ =
+          java.util.Collections.emptyList();
+        private void ensureInverseOffersIsMutable() {
+          if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+            inverseOffers_ = new java.util.ArrayList<org.apache.mesos.Protos.InverseOffer>(inverseOffers_);
+            bitField0_ |= 0x00000001;
+           }
+        }
+
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.Protos.InverseOffer, org.apache.mesos.Protos.InverseOffer.Builder, org.apache.mesos.Protos.InverseOfferOrBuilder> inverseOffersBuilder_;
+
+        /**
+         * <code>repeated .mesos.InverseOffer inverse_offers = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.Protos.InverseOffer> getInverseOffersList() {
+          if (inverseOffersBuilder_ == null) {
+            return java.util.Collections.unmodifiableList(inverseOffers_);
+          } else {
+            return inverseOffersBuilder_.getMessageList();
+          }
+        }
+        /**
+         * <code>repeated .mesos.InverseOffer inverse_offers = 1;</code>
+         */
+        public int getInverseOffersCount() {
+          if (inverseOffersBuilder_ == null) {
+            return inverseOffers_.size();
+          } else {
+            return inverseOffersBuilder_.getCount();
+          }
+        }
+        /**
+         * <code>repeated .mesos.InverseOffer inverse_offers = 1;</code>
+         */
+        public org.apache.mesos.Protos.InverseOffer getInverseOffers(int index) {
+          if (inverseOffersBuilder_ == null) {
+            return inverseOffers_.get(index);
+          } else {
+            return inverseOffersBuilder_.getMessage(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.InverseOffer inverse_offers = 1;</code>
+         */
+        public Builder setInverseOffers(
+            int index, org.apache.mesos.Protos.InverseOffer value) {
+          if (inverseOffersBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureInverseOffersIsMutable();
+            inverseOffers_.set(index, value);
+            onChanged();
+          } else {
+            inverseOffersBuilder_.setMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.InverseOffer inverse_offers = 1;</code>
+         */
+        public Builder setInverseOffers(
+            int index, org.apache.mesos.Protos.InverseOffer.Builder builderForValue) {
+          if (inverseOffersBuilder_ == null) {
+            ensureInverseOffersIsMutable();
+            inverseOffers_.set(index, builderForValue.build());
+            onChanged();
+          } else {
+            inverseOffersBuilder_.setMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.InverseOffer inverse_offers = 1;</code>
+         */
+        public Builder addInverseOffers(org.apache.mesos.Protos.InverseOffer value) {
+          if (inverseOffersBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureInverseOffersIsMutable();
+            inverseOffers_.add(value);
+            onChanged();
+          } else {
+            inverseOffersBuilder_.addMessage(value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.InverseOffer inverse_offers = 1;</code>
+         */
+        public Builder addInverseOffers(
+            int index, org.apache.mesos.Protos.InverseOffer value) {
+          if (inverseOffersBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureInverseOffersIsMutable();
+            inverseOffers_.add(index, value);
+            onChanged();
+          } else {
+            inverseOffersBuilder_.addMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.InverseOffer inverse_offers = 1;</code>
+         */
+        public Builder addInverseOffers(
+            org.apache.mesos.Protos.InverseOffer.Builder builderForValue) {
+          if (inverseOffersBuilder_ == null) {
+            ensureInverseOffersIsMutable();
+            inverseOffers_.add(builderForValue.build());
+            onChanged();
+          } else {
+            inverseOffersBuilder_.addMessage(builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.InverseOffer inverse_offers = 1;</code>
+         */
+        public Builder addInverseOffers(
+            int index, org.apache.mesos.Protos.InverseOffer.Builder builderForValue) {
+          if (inverseOffersBuilder_ == null) {
+            ensureInverseOffersIsMutable();
+            inverseOffers_.add(index, builderForValue.build());
+            onChanged();
+          } else {
+            inverseOffersBuilder_.addMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.InverseOffer inverse_offers = 1;</code>
+         */
+        public Builder addAllInverseOffers(
+            java.lang.Iterable<? extends org.apache.mesos.Protos.InverseOffer> values) {
+          if (inverseOffersBuilder_ == null) {
+            ensureInverseOffersIsMutable();
+            super.addAll(values, inverseOffers_);
+            onChanged();
+          } else {
+            inverseOffersBuilder_.addAllMessages(values);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.InverseOffer inverse_offers = 1;</code>
+         */
+        public Builder clearInverseOffers() {
+          if (inverseOffersBuilder_ == null) {
+            inverseOffers_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000001);
+            onChanged();
+          } else {
+            inverseOffersBuilder_.clear();
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.InverseOffer inverse_offers = 1;</code>
+         */
+        public Builder removeInverseOffers(int index) {
+          if (inverseOffersBuilder_ == null) {
+            ensureInverseOffersIsMutable();
+            inverseOffers_.remove(index);
+            onChanged();
+          } else {
+            inverseOffersBuilder_.remove(index);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.InverseOffer inverse_offers = 1;</code>
+         */
+        public org.apache.mesos.Protos.InverseOffer.Builder getInverseOffersBuilder(
+            int index) {
+          return getInverseOffersFieldBuilder().getBuilder(index);
+        }
+        /**
+         * <code>repeated .mesos.InverseOffer inverse_offers = 1;</code>
+         */
+        public org.apache.mesos.Protos.InverseOfferOrBuilder getInverseOffersOrBuilder(
+            int index) {
+          if (inverseOffersBuilder_ == null) {
+            return inverseOffers_.get(index);  } else {
+            return inverseOffersBuilder_.getMessageOrBuilder(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.InverseOffer inverse_offers = 1;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.Protos.InverseOfferOrBuilder> 
+             getInverseOffersOrBuilderList() {
+          if (inverseOffersBuilder_ != null) {
+            return inverseOffersBuilder_.getMessageOrBuilderList();
+          } else {
+            return java.util.Collections.unmodifiableList(inverseOffers_);
+          }
+        }
+        /**
+         * <code>repeated .mesos.InverseOffer inverse_offers = 1;</code>
+         */
+        public org.apache.mesos.Protos.InverseOffer.Builder addInverseOffersBuilder() {
+          return getInverseOffersFieldBuilder().addBuilder(
+              org.apache.mesos.Protos.InverseOffer.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.InverseOffer inverse_offers = 1;</code>
+         */
+        public org.apache.mesos.Protos.InverseOffer.Builder addInverseOffersBuilder(
+            int index) {
+          return getInverseOffersFieldBuilder().addBuilder(
+              index, org.apache.mesos.Protos.InverseOffer.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.InverseOffer inverse_offers = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.Protos.InverseOffer.Builder> 
+             getInverseOffersBuilderList() {
+          return getInverseOffersFieldBuilder().getBuilderList();
+        }
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.Protos.InverseOffer, org.apache.mesos.Protos.InverseOffer.Builder, org.apache.mesos.Protos.InverseOfferOrBuilder> 
+            getInverseOffersFieldBuilder() {
+          if (inverseOffersBuilder_ == null) {
+            inverseOffersBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.Protos.InverseOffer, org.apache.mesos.Protos.InverseOffer.Builder, org.apache.mesos.Protos.InverseOfferOrBuilder>(
+                    inverseOffers_,
+                    ((bitField0_ & 0x00000001) == 0x00000001),
+                    getParentForChildren(),
+                    isClean());
+            inverseOffers_ = null;
+          }
+          return inverseOffersBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.scheduler.Event.InverseOffers)
+      }
+
+      static {
+        defaultInstance = new InverseOffers(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.scheduler.Event.InverseOffers)
+    }
+
+    public interface RescindOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required .mesos.OfferID offer_id = 1;
+      /**
+       * <code>required .mesos.OfferID offer_id = 1;</code>
+       */
+      boolean hasOfferId();
+      /**
+       * <code>required .mesos.OfferID offer_id = 1;</code>
+       */
+      org.apache.mesos.Protos.OfferID getOfferId();
+      /**
+       * <code>required .mesos.OfferID offer_id = 1;</code>
+       */
+      org.apache.mesos.Protos.OfferIDOrBuilder getOfferIdOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.scheduler.Event.Rescind}
+     *
+     * <pre>
+     * Received when a particular offer is no longer valid (e.g., the
+     * slave corresponding to the offer has been removed) and hence
+     * needs to be rescinded. Any future calls ('Accept' / 'Decline') made
+     * by the scheduler regarding this offer will be invalid.
+     * </pre>
+     */
+    public static final class Rescind extends
+        com.google.protobuf.GeneratedMessage
+        implements RescindOrBuilder {
+      // Use Rescind.newBuilder() to construct.
+      private Rescind(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Rescind(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Rescind defaultInstance;
+      public static Rescind getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Rescind getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Rescind(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.Protos.OfferID.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = offerId_.toBuilder();
+                }
+                offerId_ = input.readMessage(org.apache.mesos.Protos.OfferID.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(offerId_);
+                  offerId_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_Rescind_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_Rescind_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.scheduler.Protos.Event.Rescind.class, org.apache.mesos.scheduler.Protos.Event.Rescind.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Rescind> PARSER =
+          new com.google.protobuf.AbstractParser<Rescind>() {
+        public Rescind parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Rescind(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Rescind> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required .mesos.OfferID offer_id = 1;
+      public static final int OFFER_ID_FIELD_NUMBER = 1;
+      private org.apache.mesos.Protos.OfferID offerId_;
+      /**
+       * <code>required .mesos.OfferID offer_id = 1;</code>
+       */
+      public boolean hasOfferId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.OfferID offer_id = 1;</code>
+       */
+      public org.apache.mesos.Protos.OfferID getOfferId() {
+        return offerId_;
+      }
+      /**
+       * <code>required .mesos.OfferID offer_id = 1;</code>
+       */
+      public org.apache.mesos.Protos.OfferIDOrBuilder getOfferIdOrBuilder() {
+        return offerId_;
+      }
+
+      private void initFields() {
+        offerId_ = org.apache.mesos.Protos.OfferID.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasOfferId()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getOfferId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, offerId_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, offerId_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.scheduler.Protos.Event.Rescind parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Rescind parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Rescind parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Rescind parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Rescind parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Rescind parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Rescind parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Rescind parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Rescind parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Rescind parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.scheduler.Protos.Event.Rescind prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.scheduler.Event.Rescind}
+       *
+       * <pre>
+       * Received when a particular offer is no longer valid (e.g., the
+       * slave corresponding to the offer has been removed) and hence
+       * needs to be rescinded. Any future calls ('Accept' / 'Decline') made
+       * by the scheduler regarding this offer will be invalid.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.scheduler.Protos.Event.RescindOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_Rescind_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_Rescind_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.scheduler.Protos.Event.Rescind.class, org.apache.mesos.scheduler.Protos.Event.Rescind.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.scheduler.Protos.Event.Rescind.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getOfferIdFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (offerIdBuilder_ == null) {
+            offerId_ = org.apache.mesos.Protos.OfferID.getDefaultInstance();
+          } else {
+            offerIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_Rescind_descriptor;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Event.Rescind getDefaultInstanceForType() {
+          return org.apache.mesos.scheduler.Protos.Event.Rescind.getDefaultInstance();
+        }
+
+        public org.apache.mesos.scheduler.Protos.Event.Rescind build() {
+          org.apache.mesos.scheduler.Protos.Event.Rescind result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Event.Rescind buildPartial() {
+          org.apache.mesos.scheduler.Protos.Event.Rescind result = new org.apache.mesos.scheduler.Protos.Event.Rescind(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (offerIdBuilder_ == null) {
+            result.offerId_ = offerId_;
+          } else {
+            result.offerId_ = offerIdBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.scheduler.Protos.Event.Rescind) {
+            return mergeFrom((org.apache.mesos.scheduler.Protos.Event.Rescind)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.scheduler.Protos.Event.Rescind other) {
+          if (other == org.apache.mesos.scheduler.Protos.Event.Rescind.getDefaultInstance()) return this;
+          if (other.hasOfferId()) {
+            mergeOfferId(other.getOfferId());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasOfferId()) {
+            
+            return false;
+          }
+          if (!getOfferId().isInitialized()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.scheduler.Protos.Event.Rescind parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.scheduler.Protos.Event.Rescind) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required .mesos.OfferID offer_id = 1;
+        private org.apache.mesos.Protos.OfferID offerId_ = org.apache.mesos.Protos.OfferID.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.OfferID, org.apache.mesos.Protos.OfferID.Builder, org.apache.mesos.Protos.OfferIDOrBuilder> offerIdBuilder_;
+        /**
+         * <code>required .mesos.OfferID offer_id = 1;</code>
+         */
+        public boolean hasOfferId() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.OfferID offer_id = 1;</code>
+         */
+        public org.apache.mesos.Protos.OfferID getOfferId() {
+          if (offerIdBuilder_ == null) {
+            return offerId_;
+          } else {
+            return offerIdBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.OfferID offer_id = 1;</code>
+         */
+        public Builder setOfferId(org.apache.mesos.Protos.OfferID value) {
+          if (offerIdBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            offerId_ = value;
+            onChanged();
+          } else {
+            offerIdBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.OfferID offer_id = 1;</code>
+         */
+        public Builder setOfferId(
+            org.apache.mesos.Protos.OfferID.Builder builderForValue) {
+          if (offerIdBuilder_ == null) {
+            offerId_ = builderForValue.build();
+            onChanged();
+          } else {
+            offerIdBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.OfferID offer_id = 1;</code>
+         */
+        public Builder mergeOfferId(org.apache.mesos.Protos.OfferID value) {
+          if (offerIdBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                offerId_ != org.apache.mesos.Protos.OfferID.getDefaultInstance()) {
+              offerId_ =
+                org.apache.mesos.Protos.OfferID.newBuilder(offerId_).mergeFrom(value).buildPartial();
+            } else {
+              offerId_ = value;
+            }
+            onChanged();
+          } else {
+            offerIdBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.OfferID offer_id = 1;</code>
+         */
+        public Builder clearOfferId() {
+          if (offerIdBuilder_ == null) {
+            offerId_ = org.apache.mesos.Protos.OfferID.getDefaultInstance();
+            onChanged();
+          } else {
+            offerIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>required .mesos.OfferID offer_id = 1;</code>
+         */
+        public org.apache.mesos.Protos.OfferID.Builder getOfferIdBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getOfferIdFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.OfferID offer_id = 1;</code>
+         */
+        public org.apache.mesos.Protos.OfferIDOrBuilder getOfferIdOrBuilder() {
+          if (offerIdBuilder_ != null) {
+            return offerIdBuilder_.getMessageOrBuilder();
+          } else {
+            return offerId_;
+          }
+        }
+        /**
+         * <code>required .mesos.OfferID offer_id = 1;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.OfferID, org.apache.mesos.Protos.OfferID.Builder, org.apache.mesos.Protos.OfferIDOrBuilder> 
+            getOfferIdFieldBuilder() {
+          if (offerIdBuilder_ == null) {
+            offerIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.OfferID, org.apache.mesos.Protos.OfferID.Builder, org.apache.mesos.Protos.OfferIDOrBuilder>(
+                    offerId_,
+                    getParentForChildren(),
+                    isClean());
+            offerId_ = null;
+          }
+          return offerIdBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.scheduler.Event.Rescind)
+      }
+
+      static {
+        defaultInstance = new Rescind(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.scheduler.Event.Rescind)
+    }
+
+    public interface RescindInverseOfferOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required .mesos.OfferID inverse_offer_id = 1;
+      /**
+       * <code>required .mesos.OfferID inverse_offer_id = 1;</code>
+       */
+      boolean hasInverseOfferId();
+      /**
+       * <code>required .mesos.OfferID inverse_offer_id = 1;</code>
+       */
+      org.apache.mesos.Protos.OfferID getInverseOfferId();
+      /**
+       * <code>required .mesos.OfferID inverse_offer_id = 1;</code>
+       */
+      org.apache.mesos.Protos.OfferIDOrBuilder getInverseOfferIdOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.scheduler.Event.RescindInverseOffer}
+     *
+     * <pre>
+     * Received when a particular inverse offer is no longer valid
+     * (e.g., the agent corresponding to the offer has been removed)
+     * and hence needs to be rescinded. Any future calls ('Accept' /
+     * 'Decline') made by the scheduler regarding this inverse offer
+     * will be invalid.
+     * </pre>
+     */
+    public static final class RescindInverseOffer extends
+        com.google.protobuf.GeneratedMessage
+        implements RescindInverseOfferOrBuilder {
+      // Use RescindInverseOffer.newBuilder() to construct.
+      private RescindInverseOffer(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private RescindInverseOffer(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final RescindInverseOffer defaultInstance;
+      public static RescindInverseOffer getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public RescindInverseOffer getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private RescindInverseOffer(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.Protos.OfferID.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = inverseOfferId_.toBuilder();
+                }
+                inverseOfferId_ = input.readMessage(org.apache.mesos.Protos.OfferID.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(inverseOfferId_);
+                  inverseOfferId_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_RescindInverseOffer_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_RescindInverseOffer_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer.class, org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<RescindInverseOffer> PARSER =
+          new com.google.protobuf.AbstractParser<RescindInverseOffer>() {
+        public RescindInverseOffer parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new RescindInverseOffer(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<RescindInverseOffer> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required .mesos.OfferID inverse_offer_id = 1;
+      public static final int INVERSE_OFFER_ID_FIELD_NUMBER = 1;
+      private org.apache.mesos.Protos.OfferID inverseOfferId_;
+      /**
+       * <code>required .mesos.OfferID inverse_offer_id = 1;</code>
+       */
+      public boolean hasInverseOfferId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.OfferID inverse_offer_id = 1;</code>
+       */
+      public org.apache.mesos.Protos.OfferID getInverseOfferId() {
+        return inverseOfferId_;
+      }
+      /**
+       * <code>required .mesos.OfferID inverse_offer_id = 1;</code>
+       */
+      public org.apache.mesos.Protos.OfferIDOrBuilder getInverseOfferIdOrBuilder() {
+        return inverseOfferId_;
+      }
+
+      private void initFields() {
+        inverseOfferId_ = org.apache.mesos.Protos.OfferID.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasInverseOfferId()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getInverseOfferId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, inverseOfferId_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, inverseOfferId_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.scheduler.Event.RescindInverseOffer}
+       *
+       * <pre>
+       * Received when a particular inverse offer is no longer valid
+       * (e.g., the agent corresponding to the offer has been removed)
+       * and hence needs to be rescinded. Any future calls ('Accept' /
+       * 'Decline') made by the scheduler regarding this inverse offer
+       * will be invalid.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.scheduler.Protos.Event.RescindInverseOfferOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_RescindInverseOffer_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_RescindInverseOffer_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer.class, org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getInverseOfferIdFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (inverseOfferIdBuilder_ == null) {
+            inverseOfferId_ = org.apache.mesos.Protos.OfferID.getDefaultInstance();
+          } else {
+            inverseOfferIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_RescindInverseOffer_descriptor;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer getDefaultInstanceForType() {
+          return org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer.getDefaultInstance();
+        }
+
+        public org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer build() {
+          org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer buildPartial() {
+          org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer result = new org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (inverseOfferIdBuilder_ == null) {
+            result.inverseOfferId_ = inverseOfferId_;
+          } else {
+            result.inverseOfferId_ = inverseOfferIdBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer) {
+            return mergeFrom((org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer other) {
+          if (other == org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer.getDefaultInstance()) return this;
+          if (other.hasInverseOfferId()) {
+            mergeInverseOfferId(other.getInverseOfferId());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasInverseOfferId()) {
+            
+            return false;
+          }
+          if (!getInverseOfferId().isInitialized()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required .mesos.OfferID inverse_offer_id = 1;
+        private org.apache.mesos.Protos.OfferID inverseOfferId_ = org.apache.mesos.Protos.OfferID.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.OfferID, org.apache.mesos.Protos.OfferID.Builder, org.apache.mesos.Protos.OfferIDOrBuilder> inverseOfferIdBuilder_;
+        /**
+         * <code>required .mesos.OfferID inverse_offer_id = 1;</code>
+         */
+        public boolean hasInverseOfferId() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.OfferID inverse_offer_id = 1;</code>
+         */
+        public org.apache.mesos.Protos.OfferID getInverseOfferId() {
+          if (inverseOfferIdBuilder_ == null) {
+            return inverseOfferId_;
+          } else {
+            return inverseOfferIdBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.OfferID inverse_offer_id = 1;</code>
+         */
+        public Builder setInverseOfferId(org.apache.mesos.Protos.OfferID value) {
+          if (inverseOfferIdBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            inverseOfferId_ = value;
+            onChanged();
+          } else {
+            inverseOfferIdBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.OfferID inverse_offer_id = 1;</code>
+         */
+        public Builder setInverseOfferId(
+            org.apache.mesos.Protos.OfferID.Builder builderForValue) {
+          if (inverseOfferIdBuilder_ == null) {
+            inverseOfferId_ = builderForValue.build();
+            onChanged();
+          } else {
+            inverseOfferIdBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.OfferID inverse_offer_id = 1;</code>
+         */
+        public Builder mergeInverseOfferId(org.apache.mesos.Protos.OfferID value) {
+          if (inverseOfferIdBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                inverseOfferId_ != org.apache.mesos.Protos.OfferID.getDefaultInstance()) {
+              inverseOfferId_ =
+                org.apache.mesos.Protos.OfferID.newBuilder(inverseOfferId_).mergeFrom(value).buildPartial();
+            } else {
+              inverseOfferId_ = value;
+            }
+            onChanged();
+          } else {
+            inverseOfferIdBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.OfferID inverse_offer_id = 1;</code>
+         */
+        public Builder clearInverseOfferId() {
+          if (inverseOfferIdBuilder_ == null) {
+            inverseOfferId_ = org.apache.mesos.Protos.OfferID.getDefaultInstance();
+            onChanged();
+          } else {
+            inverseOfferIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>required .mesos.OfferID inverse_offer_id = 1;</code>
+         */
+        public org.apache.mesos.Protos.OfferID.Builder getInverseOfferIdBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getInverseOfferIdFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.OfferID inverse_offer_id = 1;</code>
+         */
+        public org.apache.mesos.Protos.OfferIDOrBuilder getInverseOfferIdOrBuilder() {
+          if (inverseOfferIdBuilder_ != null) {
+            return inverseOfferIdBuilder_.getMessageOrBuilder();
+          } else {
+            return inverseOfferId_;
+          }
+        }
+        /**
+         * <code>required .mesos.OfferID inverse_offer_id = 1;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.OfferID, org.apache.mesos.Protos.OfferID.Builder, org.apache.mesos.Protos.OfferIDOrBuilder> 
+            getInverseOfferIdFieldBuilder() {
+          if (inverseOfferIdBuilder_ == null) {
+            inverseOfferIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.OfferID, org.apache.mesos.Protos.OfferID.Builder, org.apache.mesos.Protos.OfferIDOrBuilder>(
+                    inverseOfferId_,
+                    getParentForChildren(),
+                    isClean());
+            inverseOfferId_ = null;
+          }
+          return inverseOfferIdBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.scheduler.Event.RescindInverseOffer)
+      }
+
+      static {
+        defaultInstance = new RescindInverseOffer(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.scheduler.Event.RescindInverseOffer)
+    }
+
+    public interface UpdateOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required .mesos.TaskStatus status = 1;
+      /**
+       * <code>required .mesos.TaskStatus status = 1;</code>
+       */
+      boolean hasStatus();
+      /**
+       * <code>required .mesos.TaskStatus status = 1;</code>
+       */
+      org.apache.mesos.Protos.TaskStatus getStatus();
+      /**
+       * <code>required .mesos.TaskStatus status = 1;</code>
+       */
+      org.apache.mesos.Protos.TaskStatusOrBuilder getStatusOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.scheduler.Event.Update}
+     *
+     * <pre>
+     * Received whenever there is a status update that is generated by
+     * the executor or slave or master. Status updates should be used by
+     * executors to reliably communicate the status of the tasks that
+     * they manage. It is crucial that a terminal update (see TaskState
+     * in mesos.proto) is sent by the executor as soon as the task
+     * terminates, in order for Mesos to release the resources allocated
+     * to the task. It is also the responsibility of the scheduler to
+     * explicitly acknowledge the receipt of a status update. See
+     * 'Acknowledge' in the 'Call' section below for the semantics.
+     *
+     * A task status update may be used for guaranteed delivery of some
+     * task-related information, e.g., task's health update. Such
+     * information may be shadowed by subsequent task status updates, that
+     * do not preserve fields of the previously sent message.
+     * </pre>
+     */
+    public static final class Update extends
+        com.google.protobuf.GeneratedMessage
+        implements UpdateOrBuilder {
+      // Use Update.newBuilder() to construct.
+      private Update(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Update(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Update defaultInstance;
+      public static Update getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Update getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Update(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.Protos.TaskStatus.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = status_.toBuilder();
+                }
+                status_ = input.readMessage(org.apache.mesos.Protos.TaskStatus.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(status_);
+                  status_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_Update_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_Update_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.scheduler.Protos.Event.Update.class, org.apache.mesos.scheduler.Protos.Event.Update.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Update> PARSER =
+          new com.google.protobuf.AbstractParser<Update>() {
+        public Update parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Update(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Update> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required .mesos.TaskStatus status = 1;
+      public static final int STATUS_FIELD_NUMBER = 1;
+      private org.apache.mesos.Protos.TaskStatus status_;
+      /**
+       * <code>required .mesos.TaskStatus status = 1;</code>
+       */
+      public boolean hasStatus() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.TaskStatus status = 1;</code>
+       */
+      public org.apache.mesos.Protos.TaskStatus getStatus() {
+        return status_;
+      }
+      /**
+       * <code>required .mesos.TaskStatus status = 1;</code>
+       */
+      public org.apache.mesos.Protos.TaskStatusOrBuilder getStatusOrBuilder() {
+        return status_;
+      }
+
+      private void initFields() {
+        status_ = org.apache.mesos.Protos.TaskStatus.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasStatus()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getStatus().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, status_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, status_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.scheduler.Protos.Event.Update parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Update parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Update parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Update parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Update parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Update parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Update parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Update parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Update parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Update parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.scheduler.Protos.Event.Update prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.scheduler.Event.Update}
+       *
+       * <pre>
+       * Received whenever there is a status update that is generated by
+       * the executor or slave or master. Status updates should be used by
+       * executors to reliably communicate the status of the tasks that
+       * they manage. It is crucial that a terminal update (see TaskState
+       * in mesos.proto) is sent by the executor as soon as the task
+       * terminates, in order for Mesos to release the resources allocated
+       * to the task. It is also the responsibility of the scheduler to
+       * explicitly acknowledge the receipt of a status update. See
+       * 'Acknowledge' in the 'Call' section below for the semantics.
+       *
+       * A task status update may be used for guaranteed delivery of some
+       * task-related information, e.g., task's health update. Such
+       * information may be shadowed by subsequent task status updates, that
+       * do not preserve fields of the previously sent message.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.scheduler.Protos.Event.UpdateOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_Update_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_Update_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.scheduler.Protos.Event.Update.class, org.apache.mesos.scheduler.Protos.Event.Update.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.scheduler.Protos.Event.Update.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getStatusFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (statusBuilder_ == null) {
+            status_ = org.apache.mesos.Protos.TaskStatus.getDefaultInstance();
+          } else {
+            statusBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_Update_descriptor;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Event.Update getDefaultInstanceForType() {
+          return org.apache.mesos.scheduler.Protos.Event.Update.getDefaultInstance();
+        }
+
+        public org.apache.mesos.scheduler.Protos.Event.Update build() {
+          org.apache.mesos.scheduler.Protos.Event.Update result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Event.Update buildPartial() {
+          org.apache.mesos.scheduler.Protos.Event.Update result = new org.apache.mesos.scheduler.Protos.Event.Update(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (statusBuilder_ == null) {
+            result.status_ = status_;
+          } else {
+            result.status_ = statusBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.scheduler.Protos.Event.Update) {
+            return mergeFrom((org.apache.mesos.scheduler.Protos.Event.Update)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.scheduler.Protos.Event.Update other) {
+          if (other == org.apache.mesos.scheduler.Protos.Event.Update.getDefaultInstance()) return this;
+          if (other.hasStatus()) {
+            mergeStatus(other.getStatus());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasStatus()) {
+            
+            return false;
+          }
+          if (!getStatus().isInitialized()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.scheduler.Protos.Event.Update parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.scheduler.Protos.Event.Update) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required .mesos.TaskStatus status = 1;
+        private org.apache.mesos.Protos.TaskStatus status_ = org.apache.mesos.Protos.TaskStatus.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.TaskStatus, org.apache.mesos.Protos.TaskStatus.Builder, org.apache.mesos.Protos.TaskStatusOrBuilder> statusBuilder_;
+        /**
+         * <code>required .mesos.TaskStatus status = 1;</code>
+         */
+        public boolean hasStatus() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.TaskStatus status = 1;</code>
+         */
+        public org.apache.mesos.Protos.TaskStatus getStatus() {
+          if (statusBuilder_ == null) {
+            return status_;
+          } else {
+            return statusBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.TaskStatus status = 1;</code>
+         */
+        public Builder setStatus(org.apache.mesos.Protos.TaskStatus value) {
+          if (statusBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            status_ = value;
+            onChanged();
+          } else {
+            statusBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.TaskStatus status = 1;</code>
+         */
+        public Builder setStatus(
+            org.apache.mesos.Protos.TaskStatus.Builder builderForValue) {
+          if (statusBuilder_ == null) {
+            status_ = builderForValue.build();
+            onChanged();
+          } else {
+            statusBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.TaskStatus status = 1;</code>
+         */
+        public Builder mergeStatus(org.apache.mesos.Protos.TaskStatus value) {
+          if (statusBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                status_ != org.apache.mesos.Protos.TaskStatus.getDefaultInstance()) {
+              status_ =
+                org.apache.mesos.Protos.TaskStatus.newBuilder(status_).mergeFrom(value).buildPartial();
+            } else {
+              status_ = value;
+            }
+            onChanged();
+          } else {
+            statusBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.TaskStatus status = 1;</code>
+         */
+        public Builder clearStatus() {
+          if (statusBuilder_ == null) {
+            status_ = org.apache.mesos.Protos.TaskStatus.getDefaultInstance();
+            onChanged();
+          } else {
+            statusBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>required .mesos.TaskStatus status = 1;</code>
+         */
+        public org.apache.mesos.Protos.TaskStatus.Builder getStatusBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getStatusFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.TaskStatus status = 1;</code>
+         */
+        public org.apache.mesos.Protos.TaskStatusOrBuilder getStatusOrBuilder() {
+          if (statusBuilder_ != null) {
+            return statusBuilder_.getMessageOrBuilder();
+          } else {
+            return status_;
+          }
+        }
+        /**
+         * <code>required .mesos.TaskStatus status = 1;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.TaskStatus, org.apache.mesos.Protos.TaskStatus.Builder, org.apache.mesos.Protos.TaskStatusOrBuilder> 
+            getStatusFieldBuilder() {
+          if (statusBuilder_ == null) {
+            statusBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.TaskStatus, org.apache.mesos.Protos.TaskStatus.Builder, org.apache.mesos.Protos.TaskStatusOrBuilder>(
+                    status_,
+                    getParentForChildren(),
+                    isClean());
+            status_ = null;
+          }
+          return statusBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.scheduler.Event.Update)
+      }
+
+      static {
+        defaultInstance = new Update(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.scheduler.Event.Update)
+    }
+
+    public interface MessageOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required .mesos.SlaveID slave_id = 1;
+      /**
+       * <code>required .mesos.SlaveID slave_id = 1;</code>
+       */
+      boolean hasSlaveId();
+      /**
+       * <code>required .mesos.SlaveID slave_id = 1;</code>
+       */
+      org.apache.mesos.Protos.SlaveID getSlaveId();
+      /**
+       * <code>required .mesos.SlaveID slave_id = 1;</code>
+       */
+      org.apache.mesos.Protos.SlaveIDOrBuilder getSlaveIdOrBuilder();
+
+      // required .mesos.ExecutorID executor_id = 2;
+      /**
+       * <code>required .mesos.ExecutorID executor_id = 2;</code>
+       */
+      boolean hasExecutorId();
+      /**
+       * <code>required .mesos.ExecutorID executor_id = 2;</code>
+       */
+      org.apache.mesos.Protos.ExecutorID getExecutorId();
+      /**
+       * <code>required .mesos.ExecutorID executor_id = 2;</code>
+       */
+      org.apache.mesos.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder();
+
+      // required bytes data = 3;
+      /**
+       * <code>required bytes data = 3;</code>
+       */
+      boolean hasData();
+      /**
+       * <code>required bytes data = 3;</code>
+       */
+      com.google.protobuf.ByteString getData();
+    }
+    /**
+     * Protobuf type {@code mesos.scheduler.Event.Message}
+     *
+     * <pre>
+     * Received when a custom message generated by the executor is
+     * forwarded by the master. Note that this message is not
+     * interpreted by Mesos and is only forwarded (without reliability
+     * guarantees) to the scheduler. It is up to the executor to retry
+     * if the message is dropped for any reason.
+     * </pre>
+     */
+    public static final class Message extends
+        com.google.protobuf.GeneratedMessage
+        implements MessageOrBuilder {
+      // Use Message.newBuilder() to construct.
+      private Message(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Message(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Message defaultInstance;
+      public static Message getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Message getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Message(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.Protos.SlaveID.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = slaveId_.toBuilder();
+                }
+                slaveId_ = input.readMessage(org.apache.mesos.Protos.SlaveID.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(slaveId_);
+                  slaveId_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+              case 18: {
+                org.apache.mesos.Protos.ExecutorID.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                  subBuilder = executorId_.toBuilder();
+                }
+                executorId_ = input.readMessage(org.apache.mesos.Protos.ExecutorID.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(executorId_);
+                  executorId_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000002;
+                break;
+              }
+              case 26: {
+                bitField0_ |= 0x00000004;
+                data_ = input.readBytes();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_Message_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_Message_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.scheduler.Protos.Event.Message.class, org.apache.mesos.scheduler.Protos.Event.Message.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Message> PARSER =
+          new com.google.protobuf.AbstractParser<Message>() {
+        public Message parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Message(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Message> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required .mesos.SlaveID slave_id = 1;
+      public static final int SLAVE_ID_FIELD_NUMBER = 1;
+      private org.apache.mesos.Protos.SlaveID slaveId_;
+      /**
+       * <code>required .mesos.SlaveID slave_id = 1;</code>
+       */
+      public boolean hasSlaveId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.SlaveID slave_id = 1;</code>
+       */
+      public org.apache.mesos.Protos.SlaveID getSlaveId() {
+        return slaveId_;
+      }
+      /**
+       * <code>required .mesos.SlaveID slave_id = 1;</code>
+       */
+      public org.apache.mesos.Protos.SlaveIDOrBuilder getSlaveIdOrBuilder() {
+        return slaveId_;
+      }
+
+      // required .mesos.ExecutorID executor_id = 2;
+      public static final int EXECUTOR_ID_FIELD_NUMBER = 2;
+      private org.apache.mesos.Protos.ExecutorID executorId_;
+      /**
+       * <code>required .mesos.ExecutorID executor_id = 2;</code>
+       */
+      public boolean hasExecutorId() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required .mesos.ExecutorID executor_id = 2;</code>
+       */
+      public org.apache.mesos.Protos.ExecutorID getExecutorId() {
+        return executorId_;
+      }
+      /**
+       * <code>required .mesos.ExecutorID executor_id = 2;</code>
+       */
+      public org.apache.mesos.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder() {
+        return executorId_;
+      }
+
+      // required bytes data = 3;
+      public static final int DATA_FIELD_NUMBER = 3;
+      private com.google.protobuf.ByteString data_;
+      /**
+       * <code>required bytes data = 3;</code>
+       */
+      public boolean hasData() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>required bytes data = 3;</code>
+       */
+      public com.google.protobuf.ByteString getData() {
+        return data_;
+      }
+
+      private void initFields() {
+        slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+        executorId_ = org.apache.mesos.Protos.ExecutorID.getDefaultInstance();
+        data_ = com.google.protobuf.ByteString.EMPTY;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasSlaveId()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!hasExecutorId()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!hasData()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getSlaveId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getExecutorId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, slaveId_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeMessage(2, executorId_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeBytes(3, data_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, slaveId_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(2, executorId_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(3, data_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.scheduler.Protos.Event.Message parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Message parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Message parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Message parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Message parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Message parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Message parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Message parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Message parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Message parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.scheduler.Protos.Event.Message prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.scheduler.Event.Message}
+       *
+       * <pre>
+       * Received when a custom message generated by the executor is
+       * forwarded by the master. Note that this message is not
+       * interpreted by Mesos and is only forwarded (without reliability
+       * guarantees) to the scheduler. It is up to the executor to retry
+       * if the message is dropped for any reason.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.scheduler.Protos.Event.MessageOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_Message_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_Message_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.scheduler.Protos.Event.Message.class, org.apache.mesos.scheduler.Protos.Event.Message.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.scheduler.Protos.Event.Message.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getSlaveIdFieldBuilder();
+            getExecutorIdFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (slaveIdBuilder_ == null) {
+            slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+          } else {
+            slaveIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          if (executorIdBuilder_ == null) {
+            executorId_ = org.apache.mesos.Protos.ExecutorID.getDefaultInstance();
+          } else {
+            executorIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          data_ = com.google.protobuf.ByteString.EMPTY;
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_Message_descriptor;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Event.Message getDefaultInstanceForType() {
+          return org.apache.mesos.scheduler.Protos.Event.Message.getDefaultInstance();
+        }
+
+        public org.apache.mesos.scheduler.Protos.Event.Message build() {
+          org.apache.mesos.scheduler.Protos.Event.Message result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Event.Message buildPartial() {
+          org.apache.mesos.scheduler.Protos.Event.Message result = new org.apache.mesos.scheduler.Protos.Event.Message(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (slaveIdBuilder_ == null) {
+            result.slaveId_ = slaveId_;
+          } else {
+            result.slaveId_ = slaveIdBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          if (executorIdBuilder_ == null) {
+            result.executorId_ = executorId_;
+          } else {
+            result.executorId_ = executorIdBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          result.data_ = data_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.scheduler.Protos.Event.Message) {
+            return mergeFrom((org.apache.mesos.scheduler.Protos.Event.Message)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.scheduler.Protos.Event.Message other) {
+          if (other == org.apache.mesos.scheduler.Protos.Event.Message.getDefaultInstance()) return this;
+          if (other.hasSlaveId()) {
+            mergeSlaveId(other.getSlaveId());
+          }
+          if (other.hasExecutorId()) {
+            mergeExecutorId(other.getExecutorId());
+          }
+          if (other.hasData()) {
+            setData(other.getData());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasSlaveId()) {
+            
+            return false;
+          }
+          if (!hasExecutorId()) {
+            
+            return false;
+          }
+          if (!hasData()) {
+            
+            return false;
+          }
+          if (!getSlaveId().isInitialized()) {
+            
+            return false;
+          }
+          if (!getExecutorId().isInitialized()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.scheduler.Protos.Event.Message parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.scheduler.Protos.Event.Message) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required .mesos.SlaveID slave_id = 1;
+        private org.apache.mesos.Protos.SlaveID slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.SlaveID, org.apache.mesos.Protos.SlaveID.Builder, org.apache.mesos.Protos.SlaveIDOrBuilder> slaveIdBuilder_;
+        /**
+         * <code>required .mesos.SlaveID slave_id = 1;</code>
+         */
+        public boolean hasSlaveId() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.SlaveID slave_id = 1;</code>
+         */
+        public org.apache.mesos.Protos.SlaveID getSlaveId() {
+          if (slaveIdBuilder_ == null) {
+            return slaveId_;
+          } else {
+            return slaveIdBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.SlaveID slave_id = 1;</code>
+         */
+        public Builder setSlaveId(org.apache.mesos.Protos.SlaveID value) {
+          if (slaveIdBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            slaveId_ = value;
+            onChanged();
+          } else {
+            slaveIdBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.SlaveID slave_id = 1;</code>
+         */
+        public Builder setSlaveId(
+            org.apache.mesos.Protos.SlaveID.Builder builderForValue) {
+          if (slaveIdBuilder_ == null) {
+            slaveId_ = builderForValue.build();
+            onChanged();
+          } else {
+            slaveIdBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.SlaveID slave_id = 1;</code>
+         */
+        public Builder mergeSlaveId(org.apache.mesos.Protos.SlaveID value) {
+          if (slaveIdBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                slaveId_ != org.apache.mesos.Protos.SlaveID.getDefaultInstance()) {
+              slaveId_ =
+                org.apache.mesos.Protos.SlaveID.newBuilder(slaveId_).mergeFrom(value).buildPartial();
+            } else {
+              slaveId_ = value;
+            }
+            onChanged();
+          } else {
+            slaveIdBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.SlaveID slave_id = 1;</code>
+         */
+        public Builder clearSlaveId() {
+          if (slaveIdBuilder_ == null) {
+            slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+            onChanged();
+          } else {
+            slaveIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>required .mesos.SlaveID slave_id = 1;</code>
+         */
+        public org.apache.mesos.Protos.SlaveID.Builder getSlaveIdBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getSlaveIdFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.SlaveID slave_id = 1;</code>
+         */
+        public org.apache.mesos.Protos.SlaveIDOrBuilder getSlaveIdOrBuilder() {
+          if (slaveIdBuilder_ != null) {
+            return slaveIdBuilder_.getMessageOrBuilder();
+          } else {
+            return slaveId_;
+          }
+        }
+        /**
+         * <code>required .mesos.SlaveID slave_id = 1;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.SlaveID, org.apache.mesos.Protos.SlaveID.Builder, org.apache.mesos.Protos.SlaveIDOrBuilder> 
+            getSlaveIdFieldBuilder() {
+          if (slaveIdBuilder_ == null) {
+            slaveIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.SlaveID, org.apache.mesos.Protos.SlaveID.Builder, org.apache.mesos.Protos.SlaveIDOrBuilder>(
+                    slaveId_,
+                    getParentForChildren(),
+                    isClean());
+            slaveId_ = null;
+          }
+          return slaveIdBuilder_;
+        }
+
+        // required .mesos.ExecutorID executor_id = 2;
+        private org.apache.mesos.Protos.ExecutorID executorId_ = org.apache.mesos.Protos.ExecutorID.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.ExecutorID, org.apache.mesos.Protos.ExecutorID.Builder, org.apache.mesos.Protos.ExecutorIDOrBuilder> executorIdBuilder_;
+        /**
+         * <code>required .mesos.ExecutorID executor_id = 2;</code>
+         */
+        public boolean hasExecutorId() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>required .mesos.ExecutorID executor_id = 2;</code>
+         */
+        public org.apache.mesos.Protos.ExecutorID getExecutorId() {
+          if (executorIdBuilder_ == null) {
+            return executorId_;
+          } else {
+            return executorIdBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.ExecutorID executor_id = 2;</code>
+         */
+        public Builder setExecutorId(org.apache.mesos.Protos.ExecutorID value) {
+          if (executorIdBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            executorId_ = value;
+            onChanged();
+          } else {
+            executorIdBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>required .mesos.ExecutorID executor_id = 2;</code>
+         */
+        public Builder setExecutorId(
+            org.apache.mesos.Protos.ExecutorID.Builder builderForValue) {
+          if (executorIdBuilder_ == null) {
+            executorId_ = builderForValue.build();
+            onChanged();
+          } else {
+            executorIdBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>required .mesos.ExecutorID executor_id = 2;</code>
+         */
+        public Builder mergeExecutorId(org.apache.mesos.Protos.ExecutorID value) {
+          if (executorIdBuilder_ == null) {
+            if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                executorId_ != org.apache.mesos.Protos.ExecutorID.getDefaultInstance()) {
+              executorId_ =
+                org.apache.mesos.Protos.ExecutorID.newBuilder(executorId_).mergeFrom(value).buildPartial();
+            } else {
+              executorId_ = value;
+            }
+            onChanged();
+          } else {
+            executorIdBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>required .mesos.ExecutorID executor_id = 2;</code>
+         */
+        public Builder clearExecutorId() {
+          if (executorIdBuilder_ == null) {
+            executorId_ = org.apache.mesos.Protos.ExecutorID.getDefaultInstance();
+            onChanged();
+          } else {
+            executorIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+        /**
+         * <code>required .mesos.ExecutorID executor_id = 2;</code>
+         */
+        public org.apache.mesos.Protos.ExecutorID.Builder getExecutorIdBuilder() {
+          bitField0_ |= 0x00000002;
+          onChanged();
+          return getExecutorIdFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.ExecutorID executor_id = 2;</code>
+         */
+        public org.apache.mesos.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder() {
+          if (executorIdBuilder_ != null) {
+            return executorIdBuilder_.getMessageOrBuilder();
+          } else {
+            return executorId_;
+          }
+        }
+        /**
+         * <code>required .mesos.ExecutorID executor_id = 2;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.ExecutorID, org.apache.mesos.Protos.ExecutorID.Builder, org.apache.mesos.Protos.ExecutorIDOrBuilder> 
+            getExecutorIdFieldBuilder() {
+          if (executorIdBuilder_ == null) {
+            executorIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.ExecutorID, org.apache.mesos.Protos.ExecutorID.Builder, org.apache.mesos.Protos.ExecutorIDOrBuilder>(
+                    executorId_,
+                    getParentForChildren(),
+                    isClean());
+            executorId_ = null;
+          }
+          return executorIdBuilder_;
+        }
+
+        // required bytes data = 3;
+        private com.google.protobuf.ByteString data_ = com.google.protobuf.ByteString.EMPTY;
+        /**
+         * <code>required bytes data = 3;</code>
+         */
+        public boolean hasData() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>required bytes data = 3;</code>
+         */
+        public com.google.protobuf.ByteString getData() {
+          return data_;
+        }
+        /**
+         * <code>required bytes data = 3;</code>
+         */
+        public Builder setData(com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+          data_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required bytes data = 3;</code>
+         */
+        public Builder clearData() {
+          bitField0_ = (bitField0_ & ~0x00000004);
+          data_ = getDefaultInstance().getData();
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.scheduler.Event.Message)
+      }
+
+      static {
+        defaultInstance = new Message(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.scheduler.Event.Message)
+    }
+
+    public interface FailureOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // optional .mesos.SlaveID slave_id = 1;
+      /**
+       * <code>optional .mesos.SlaveID slave_id = 1;</code>
+       */
+      boolean hasSlaveId();
+      /**
+       * <code>optional .mesos.SlaveID slave_id = 1;</code>
+       */
+      org.apache.mesos.Protos.SlaveID getSlaveId();
+      /**
+       * <code>optional .mesos.SlaveID slave_id = 1;</code>
+       */
+      org.apache.mesos.Protos.SlaveIDOrBuilder getSlaveIdOrBuilder();
+
+      // optional .mesos.ExecutorID executor_id = 2;
+      /**
+       * <code>optional .mesos.ExecutorID executor_id = 2;</code>
+       *
+       * <pre>
+       * If this was just a failure of an executor on a slave then
+       * 'executor_id' will be set and possibly 'status' (if we were
+       * able to determine the exit status).
+       * </pre>
+       */
+      boolean hasExecutorId();
+      /**
+       * <code>optional .mesos.ExecutorID executor_id = 2;</code>
+       *
+       * <pre>
+       * If this was just a failure of an executor on a slave then
+       * 'executor_id' will be set and possibly 'status' (if we were
+       * able to determine the exit status).
+       * </pre>
+       */
+      org.apache.mesos.Protos.ExecutorID getExecutorId();
+      /**
+       * <code>optional .mesos.ExecutorID executor_id = 2;</code>
+       *
+       * <pre>
+       * If this was just a failure of an executor on a slave then
+       * 'executor_id' will be set and possibly 'status' (if we were
+       * able to determine the exit status).
+       * </pre>
+       */
+      org.apache.mesos.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder();
+
+      // optional int32 status = 3;
+      /**
+       * <code>optional int32 status = 3;</code>
+       *
+       * <pre>
+       * On Posix, `status` corresponds to termination information in the
+       * `stat_loc` area returned from a `waitpid` call. On Windows, `status`
+       * is obtained via calling the `GetExitCodeProcess()` function. For
+       * messages coming from Posix agents, schedulers need to apply
+       * `WEXITSTATUS` family macros or equivalent transformations to obtain
+       * exit codes.
+       *
+       * TODO(alexr): Consider unifying Windows and Posix behavior by returning
+       * exit code here, see MESOS-7241.
+       * </pre>
+       */
+      boolean hasStatus();
+      /**
+       * <code>optional int32 status = 3;</code>
+       *
+       * <pre>
+       * On Posix, `status` corresponds to termination information in the
+       * `stat_loc` area returned from a `waitpid` call. On Windows, `status`
+       * is obtained via calling the `GetExitCodeProcess()` function. For
+       * messages coming from Posix agents, schedulers need to apply
+       * `WEXITSTATUS` family macros or equivalent transformations to obtain
+       * exit codes.
+       *
+       * TODO(alexr): Consider unifying Windows and Posix behavior by returning
+       * exit code here, see MESOS-7241.
+       * </pre>
+       */
+      int getStatus();
+    }
+    /**
+     * Protobuf type {@code mesos.scheduler.Event.Failure}
+     *
+     * <pre>
+     * Received when a slave is removed from the cluster (e.g., failed
+     * health checks) or when an executor is terminated. Note that, this
+     * event coincides with receipt of terminal UPDATE events for any
+     * active tasks belonging to the slave or executor and receipt of
+     * 'Rescind' events for any outstanding offers belonging to the
+     * slave. Note that there is no guaranteed order between the
+     * 'Failure', 'Update' and 'Rescind' events when a slave or executor
+     * is removed.
+     * TODO(vinod): Consider splitting the lost slave and terminated
+     * executor into separate events and ensure it's reliably generated.
+     * </pre>
+     */
+    public static final class Failure extends
+        com.google.protobuf.GeneratedMessage
+        implements FailureOrBuilder {
+      // Use Failure.newBuilder() to construct.
+      private Failure(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Failure(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Failure defaultInstance;
+      public static Failure getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Failure getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Failure(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.Protos.SlaveID.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = slaveId_.toBuilder();
+                }
+                slaveId_ = input.readMessage(org.apache.mesos.Protos.SlaveID.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(slaveId_);
+                  slaveId_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+              case 18: {
+                org.apache.mesos.Protos.ExecutorID.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                  subBuilder = executorId_.toBuilder();
+                }
+                executorId_ = input.readMessage(org.apache.mesos.Protos.ExecutorID.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(executorId_);
+                  executorId_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000002;
+                break;
+              }
+              case 24: {
+                bitField0_ |= 0x00000004;
+                status_ = input.readInt32();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_Failure_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_Failure_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.scheduler.Protos.Event.Failure.class, org.apache.mesos.scheduler.Protos.Event.Failure.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Failure> PARSER =
+          new com.google.protobuf.AbstractParser<Failure>() {
+        public Failure parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Failure(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Failure> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // optional .mesos.SlaveID slave_id = 1;
+      public static final int SLAVE_ID_FIELD_NUMBER = 1;
+      private org.apache.mesos.Protos.SlaveID slaveId_;
+      /**
+       * <code>optional .mesos.SlaveID slave_id = 1;</code>
+       */
+      public boolean hasSlaveId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.SlaveID slave_id = 1;</code>
+       */
+      public org.apache.mesos.Protos.SlaveID getSlaveId() {
+        return slaveId_;
+      }
+      /**
+       * <code>optional .mesos.SlaveID slave_id = 1;</code>
+       */
+      public org.apache.mesos.Protos.SlaveIDOrBuilder getSlaveIdOrBuilder() {
+        return slaveId_;
+      }
+
+      // optional .mesos.ExecutorID executor_id = 2;
+      public static final int EXECUTOR_ID_FIELD_NUMBER = 2;
+      private org.apache.mesos.Protos.ExecutorID executorId_;
+      /**
+       * <code>optional .mesos.ExecutorID executor_id = 2;</code>
+       *
+       * <pre>
+       * If this was just a failure of an executor on a slave then
+       * 'executor_id' will be set and possibly 'status' (if we were
+       * able to determine the exit status).
+       * </pre>
+       */
+      public boolean hasExecutorId() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.ExecutorID executor_id = 2;</code>
+       *
+       * <pre>
+       * If this was just a failure of an executor on a slave then
+       * 'executor_id' will be set and possibly 'status' (if we were
+       * able to determine the exit status).
+       * </pre>
+       */
+      public org.apache.mesos.Protos.ExecutorID getExecutorId() {
+        return executorId_;
+      }
+      /**
+       * <code>optional .mesos.ExecutorID executor_id = 2;</code>
+       *
+       * <pre>
+       * If this was just a failure of an executor on a slave then
+       * 'executor_id' will be set and possibly 'status' (if we were
+       * able to determine the exit status).
+       * </pre>
+       */
+      public org.apache.mesos.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder() {
+        return executorId_;
+      }
+
+      // optional int32 status = 3;
+      public static final int STATUS_FIELD_NUMBER = 3;
+      private int status_;
+      /**
+       * <code>optional int32 status = 3;</code>
+       *
+       * <pre>
+       * On Posix, `status` corresponds to termination information in the
+       * `stat_loc` area returned from a `waitpid` call. On Windows, `status`
+       * is obtained via calling the `GetExitCodeProcess()` function. For
+       * messages coming from Posix agents, schedulers need to apply
+       * `WEXITSTATUS` family macros or equivalent transformations to obtain
+       * exit codes.
+       *
+       * TODO(alexr): Consider unifying Windows and Posix behavior by returning
+       * exit code here, see MESOS-7241.
+       * </pre>
+       */
+      public boolean hasStatus() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional int32 status = 3;</code>
+       *
+       * <pre>
+       * On Posix, `status` corresponds to termination information in the
+       * `stat_loc` area returned from a `waitpid` call. On Windows, `status`
+       * is obtained via calling the `GetExitCodeProcess()` function. For
+       * messages coming from Posix agents, schedulers need to apply
+       * `WEXITSTATUS` family macros or equivalent transformations to obtain
+       * exit codes.
+       *
+       * TODO(alexr): Consider unifying Windows and Posix behavior by returning
+       * exit code here, see MESOS-7241.
+       * </pre>
+       */
+      public int getStatus() {
+        return status_;
+      }
+
+      private void initFields() {
+        slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+        executorId_ = org.apache.mesos.Protos.ExecutorID.getDefaultInstance();
+        status_ = 0;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (hasSlaveId()) {
+          if (!getSlaveId().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        if (hasExecutorId()) {
+          if (!getExecutorId().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, slaveId_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeMessage(2, executorId_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeInt32(3, status_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, slaveId_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(2, executorId_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeInt32Size(3, status_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.scheduler.Protos.Event.Failure parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Failure parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Failure parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Failure parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Failure parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Failure parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Failure parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Failure parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Failure parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Failure parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.scheduler.Protos.Event.Failure prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.scheduler.Event.Failure}
+       *
+       * <pre>
+       * Received when a slave is removed from the cluster (e.g., failed
+       * health checks) or when an executor is terminated. Note that, this
+       * event coincides with receipt of terminal UPDATE events for any
+       * active tasks belonging to the slave or executor and receipt of
+       * 'Rescind' events for any outstanding offers belonging to the
+       * slave. Note that there is no guaranteed order between the
+       * 'Failure', 'Update' and 'Rescind' events when a slave or executor
+       * is removed.
+       * TODO(vinod): Consider splitting the lost slave and terminated
+       * executor into separate events and ensure it's reliably generated.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.scheduler.Protos.Event.FailureOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_Failure_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_Failure_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.scheduler.Protos.Event.Failure.class, org.apache.mesos.scheduler.Protos.Event.Failure.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.scheduler.Protos.Event.Failure.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getSlaveIdFieldBuilder();
+            getExecutorIdFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (slaveIdBuilder_ == null) {
+            slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+          } else {
+            slaveIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          if (executorIdBuilder_ == null) {
+            executorId_ = org.apache.mesos.Protos.ExecutorID.getDefaultInstance();
+          } else {
+            executorIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          status_ = 0;
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_Failure_descriptor;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Event.Failure getDefaultInstanceForType() {
+          return org.apache.mesos.scheduler.Protos.Event.Failure.getDefaultInstance();
+        }
+
+        public org.apache.mesos.scheduler.Protos.Event.Failure build() {
+          org.apache.mesos.scheduler.Protos.Event.Failure result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Event.Failure buildPartial() {
+          org.apache.mesos.scheduler.Protos.Event.Failure result = new org.apache.mesos.scheduler.Protos.Event.Failure(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (slaveIdBuilder_ == null) {
+            result.slaveId_ = slaveId_;
+          } else {
+            result.slaveId_ = slaveIdBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          if (executorIdBuilder_ == null) {
+            result.executorId_ = executorId_;
+          } else {
+            result.executorId_ = executorIdBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          result.status_ = status_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.scheduler.Protos.Event.Failure) {
+            return mergeFrom((org.apache.mesos.scheduler.Protos.Event.Failure)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.scheduler.Protos.Event.Failure other) {
+          if (other == org.apache.mesos.scheduler.Protos.Event.Failure.getDefaultInstance()) return this;
+          if (other.hasSlaveId()) {
+            mergeSlaveId(other.getSlaveId());
+          }
+          if (other.hasExecutorId()) {
+            mergeExecutorId(other.getExecutorId());
+          }
+          if (other.hasStatus()) {
+            setStatus(other.getStatus());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (hasSlaveId()) {
+            if (!getSlaveId().isInitialized()) {
+              
+              return false;
+            }
+          }
+          if (hasExecutorId()) {
+            if (!getExecutorId().isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.scheduler.Protos.Event.Failure parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.scheduler.Protos.Event.Failure) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // optional .mesos.SlaveID slave_id = 1;
+        private org.apache.mesos.Protos.SlaveID slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.SlaveID, org.apache.mesos.Protos.SlaveID.Builder, org.apache.mesos.Protos.SlaveIDOrBuilder> slaveIdBuilder_;
+        /**
+         * <code>optional .mesos.SlaveID slave_id = 1;</code>
+         */
+        public boolean hasSlaveId() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional .mesos.SlaveID slave_id = 1;</code>
+         */
+        public org.apache.mesos.Protos.SlaveID getSlaveId() {
+          if (slaveIdBuilder_ == null) {
+            return slaveId_;
+          } else {
+            return slaveIdBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.SlaveID slave_id = 1;</code>
+         */
+        public Builder setSlaveId(org.apache.mesos.Protos.SlaveID value) {
+          if (slaveIdBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            slaveId_ = value;
+            onChanged();
+          } else {
+            slaveIdBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.SlaveID slave_id = 1;</code>
+         */
+        public Builder setSlaveId(
+            org.apache.mesos.Protos.SlaveID.Builder builderForValue) {
+          if (slaveIdBuilder_ == null) {
+            slaveId_ = builderForValue.build();
+            onChanged();
+          } else {
+            slaveIdBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.SlaveID slave_id = 1;</code>
+         */
+        public Builder mergeSlaveId(org.apache.mesos.Protos.SlaveID value) {
+          if (slaveIdBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                slaveId_ != org.apache.mesos.Protos.SlaveID.getDefaultInstance()) {
+              slaveId_ =
+                org.apache.mesos.Protos.SlaveID.newBuilder(slaveId_).mergeFrom(value).buildPartial();
+            } else {
+              slaveId_ = value;
+            }
+            onChanged();
+          } else {
+            slaveIdBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.SlaveID slave_id = 1;</code>
+         */
+        public Builder clearSlaveId() {
+          if (slaveIdBuilder_ == null) {
+            slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+            onChanged();
+          } else {
+            slaveIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.SlaveID slave_id = 1;</code>
+         */
+        public org.apache.mesos.Protos.SlaveID.Builder getSlaveIdBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getSlaveIdFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.SlaveID slave_id = 1;</code>
+         */
+        public org.apache.mesos.Protos.SlaveIDOrBuilder getSlaveIdOrBuilder() {
+          if (slaveIdBuilder_ != null) {
+            return slaveIdBuilder_.getMessageOrBuilder();
+          } else {
+            return slaveId_;
+          }
+        }
+        /**
+         * <code>optional .mesos.SlaveID slave_id = 1;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.SlaveID, org.apache.mesos.Protos.SlaveID.Builder, org.apache.mesos.Protos.SlaveIDOrBuilder> 
+            getSlaveIdFieldBuilder() {
+          if (slaveIdBuilder_ == null) {
+            slaveIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.SlaveID, org.apache.mesos.Protos.SlaveID.Builder, org.apache.mesos.Protos.SlaveIDOrBuilder>(
+                    slaveId_,
+                    getParentForChildren(),
+                    isClean());
+            slaveId_ = null;
+          }
+          return slaveIdBuilder_;
+        }
+
+        // optional .mesos.ExecutorID executor_id = 2;
+        private org.apache.mesos.Protos.ExecutorID executorId_ = org.apache.mesos.Protos.ExecutorID.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.ExecutorID, org.apache.mesos.Protos.ExecutorID.Builder, org.apache.mesos.Protos.ExecutorIDOrBuilder> executorIdBuilder_;
+        /**
+         * <code>optional .mesos.ExecutorID executor_id = 2;</code>
+         *
+         * <pre>
+         * If this was just a failure of an executor on a slave then
+         * 'executor_id' will be set and possibly 'status' (if we were
+         * able to determine the exit status).
+         * </pre>
+         */
+        public boolean hasExecutorId() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional .mesos.ExecutorID executor_id = 2;</code>
+         *
+         * <pre>
+         * If this was just a failure of an executor on a slave then
+         * 'executor_id' will be set and possibly 'status' (if we were
+         * able to determine the exit status).
+         * </pre>
+         */
+        public org.apache.mesos.Protos.ExecutorID getExecutorId() {
+          if (executorIdBuilder_ == null) {
+            return executorId_;
+          } else {
+            return executorIdBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.ExecutorID executor_id = 2;</code>
+         *
+         * <pre>
+         * If this was just a failure of an executor on a slave then
+         * 'executor_id' will be set and possibly 'status' (if we were
+         * able to determine the exit status).
+         * </pre>
+         */
+        public Builder setExecutorId(org.apache.mesos.Protos.ExecutorID value) {
+          if (executorIdBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            executorId_ = value;
+            onChanged();
+          } else {
+            executorIdBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.ExecutorID executor_id = 2;</code>
+         *
+         * <pre>
+         * If this was just a failure of an executor on a slave then
+         * 'executor_id' will be set and possibly 'status' (if we were
+         * able to determine the exit status).
+         * </pre>
+         */
+        public Builder setExecutorId(
+            org.apache.mesos.Protos.ExecutorID.Builder builderForValue) {
+          if (executorIdBuilder_ == null) {
+            executorId_ = builderForValue.build();
+            onChanged();
+          } else {
+            executorIdBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.ExecutorID executor_id = 2;</code>
+         *
+         * <pre>
+         * If this was just a failure of an executor on a slave then
+         * 'executor_id' will be set and possibly 'status' (if we were
+         * able to determine the exit status).
+         * </pre>
+         */
+        public Builder mergeExecutorId(org.apache.mesos.Protos.ExecutorID value) {
+          if (executorIdBuilder_ == null) {
+            if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                executorId_ != org.apache.mesos.Protos.ExecutorID.getDefaultInstance()) {
+              executorId_ =
+                org.apache.mesos.Protos.ExecutorID.newBuilder(executorId_).mergeFrom(value).buildPartial();
+            } else {
+              executorId_ = value;
+            }
+            onChanged();
+          } else {
+            executorIdBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.ExecutorID executor_id = 2;</code>
+         *
+         * <pre>
+         * If this was just a failure of an executor on a slave then
+         * 'executor_id' will be set and possibly 'status' (if we were
+         * able to determine the exit status).
+         * </pre>
+         */
+        public Builder clearExecutorId() {
+          if (executorIdBuilder_ == null) {
+            executorId_ = org.apache.mesos.Protos.ExecutorID.getDefaultInstance();
+            onChanged();
+          } else {
+            executorIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.ExecutorID executor_id = 2;</code>
+         *
+         * <pre>
+         * If this was just a failure of an executor on a slave then
+         * 'executor_id' will be set and possibly 'status' (if we were
+         * able to determine the exit status).
+         * </pre>
+         */
+        public org.apache.mesos.Protos.ExecutorID.Builder getExecutorIdBuilder() {
+          bitField0_ |= 0x00000002;
+          onChanged();
+          return getExecutorIdFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.ExecutorID executor_id = 2;</code>
+         *
+         * <pre>
+         * If this was just a failure of an executor on a slave then
+         * 'executor_id' will be set and possibly 'status' (if we were
+         * able to determine the exit status).
+         * </pre>
+         */
+        public org.apache.mesos.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder() {
+          if (executorIdBuilder_ != null) {
+            return executorIdBuilder_.getMessageOrBuilder();
+          } else {
+            return executorId_;
+          }
+        }
+        /**
+         * <code>optional .mesos.ExecutorID executor_id = 2;</code>
+         *
+         * <pre>
+         * If this was just a failure of an executor on a slave then
+         * 'executor_id' will be set and possibly 'status' (if we were
+         * able to determine the exit status).
+         * </pre>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.ExecutorID, org.apache.mesos.Protos.ExecutorID.Builder, org.apache.mesos.Protos.ExecutorIDOrBuilder> 
+            getExecutorIdFieldBuilder() {
+          if (executorIdBuilder_ == null) {
+            executorIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.ExecutorID, org.apache.mesos.Protos.ExecutorID.Builder, org.apache.mesos.Protos.ExecutorIDOrBuilder>(
+                    executorId_,
+                    getParentForChildren(),
+                    isClean());
+            executorId_ = null;
+          }
+          return executorIdBuilder_;
+        }
+
+        // optional int32 status = 3;
+        private int status_ ;
+        /**
+         * <code>optional int32 status = 3;</code>
+         *
+         * <pre>
+         * On Posix, `status` corresponds to termination information in the
+         * `stat_loc` area returned from a `waitpid` call. On Windows, `status`
+         * is obtained via calling the `GetExitCodeProcess()` function. For
+         * messages coming from Posix agents, schedulers need to apply
+         * `WEXITSTATUS` family macros or equivalent transformations to obtain
+         * exit codes.
+         *
+         * TODO(alexr): Consider unifying Windows and Posix behavior by returning
+         * exit code here, see MESOS-7241.
+         * </pre>
+         */
+        public boolean hasStatus() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional int32 status = 3;</code>
+         *
+         * <pre>
+         * On Posix, `status` corresponds to termination information in the
+         * `stat_loc` area returned from a `waitpid` call. On Windows, `status`
+         * is obtained via calling the `GetExitCodeProcess()` function. For
+         * messages coming from Posix agents, schedulers need to apply
+         * `WEXITSTATUS` family macros or equivalent transformations to obtain
+         * exit codes.
+         *
+         * TODO(alexr): Consider unifying Windows and Posix behavior by returning
+         * exit code here, see MESOS-7241.
+         * </pre>
+         */
+        public int getStatus() {
+          return status_;
+        }
+        /**
+         * <code>optional int32 status = 3;</code>
+         *
+         * <pre>
+         * On Posix, `status` corresponds to termination information in the
+         * `stat_loc` area returned from a `waitpid` call. On Windows, `status`
+         * is obtained via calling the `GetExitCodeProcess()` function. For
+         * messages coming from Posix agents, schedulers need to apply
+         * `WEXITSTATUS` family macros or equivalent transformations to obtain
+         * exit codes.
+         *
+         * TODO(alexr): Consider unifying Windows and Posix behavior by returning
+         * exit code here, see MESOS-7241.
+         * </pre>
+         */
+        public Builder setStatus(int value) {
+          bitField0_ |= 0x00000004;
+          status_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional int32 status = 3;</code>
+         *
+         * <pre>
+         * On Posix, `status` corresponds to termination information in the
+         * `stat_loc` area returned from a `waitpid` call. On Windows, `status`
+         * is obtained via calling the `GetExitCodeProcess()` function. For
+         * messages coming from Posix agents, schedulers need to apply
+         * `WEXITSTATUS` family macros or equivalent transformations to obtain
+         * exit codes.
+         *
+         * TODO(alexr): Consider unifying Windows and Posix behavior by returning
+         * exit code here, see MESOS-7241.
+         * </pre>
+         */
+        public Builder clearStatus() {
+          bitField0_ = (bitField0_ & ~0x00000004);
+          status_ = 0;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.scheduler.Event.Failure)
+      }
+
+      static {
+        defaultInstance = new Failure(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.scheduler.Event.Failure)
+    }
+
+    public interface ErrorOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required string message = 1;
+      /**
+       * <code>required string message = 1;</code>
+       */
+      boolean hasMessage();
+      /**
+       * <code>required string message = 1;</code>
+       */
+      java.lang.String getMessage();
+      /**
+       * <code>required string message = 1;</code>
+       */
+      com.google.protobuf.ByteString
+          getMessageBytes();
+    }
+    /**
+     * Protobuf type {@code mesos.scheduler.Event.Error}
+     *
+     * <pre>
+     * Received when there is an unrecoverable error in the scheduler (e.g.,
+     * scheduler failed over, rate limiting, authorization errors etc.). The
+     * scheduler should abort on receiving this event.
+     * </pre>
+     */
+    public static final class Error extends
+        com.google.protobuf.GeneratedMessage
+        implements ErrorOrBuilder {
+      // Use Error.newBuilder() to construct.
+      private Error(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Error(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Error defaultInstance;
+      public static Error getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Error getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Error(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                bitField0_ |= 0x00000001;
+                message_ = input.readBytes();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_Error_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_Error_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.scheduler.Protos.Event.Error.class, org.apache.mesos.scheduler.Protos.Event.Error.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Error> PARSER =
+          new com.google.protobuf.AbstractParser<Error>() {
+        public Error parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Error(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Error> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required string message = 1;
+      public static final int MESSAGE_FIELD_NUMBER = 1;
+      private java.lang.Object message_;
+      /**
+       * <code>required string message = 1;</code>
+       */
+      public boolean hasMessage() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string message = 1;</code>
+       */
+      public java.lang.String getMessage() {
+        java.lang.Object ref = message_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            message_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>required string message = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getMessageBytes() {
+        java.lang.Object ref = message_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          message_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      private void initFields() {
+        message_ = "";
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasMessage()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeBytes(1, getMessageBytes());
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(1, getMessageBytes());
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.scheduler.Protos.Event.Error parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Error parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Error parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Error parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Error parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Error parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Error parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Error parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Error parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Event.Error parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.scheduler.Protos.Event.Error prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.scheduler.Event.Error}
+       *
+       * <pre>
+       * Received when there is an unrecoverable error in the scheduler (e.g.,
+       * scheduler failed over, rate limiting, authorization errors etc.). The
+       * scheduler should abort on receiving this event.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.scheduler.Protos.Event.ErrorOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_Error_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_Error_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.scheduler.Protos.Event.Error.class, org.apache.mesos.scheduler.Protos.Event.Error.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.scheduler.Protos.Event.Error.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          message_ = "";
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_Error_descriptor;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Event.Error getDefaultInstanceForType() {
+          return org.apache.mesos.scheduler.Protos.Event.Error.getDefaultInstance();
+        }
+
+        public org.apache.mesos.scheduler.Protos.Event.Error build() {
+          org.apache.mesos.scheduler.Protos.Event.Error result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Event.Error buildPartial() {
+          org.apache.mesos.scheduler.Protos.Event.Error result = new org.apache.mesos.scheduler.Protos.Event.Error(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.message_ = message_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.scheduler.Protos.Event.Error) {
+            return mergeFrom((org.apache.mesos.scheduler.Protos.Event.Error)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.scheduler.Protos.Event.Error other) {
+          if (other == org.apache.mesos.scheduler.Protos.Event.Error.getDefaultInstance()) return this;
+          if (other.hasMessage()) {
+            bitField0_ |= 0x00000001;
+            message_ = other.message_;
+            onChanged();
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasMessage()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.scheduler.Protos.Event.Error parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.scheduler.Protos.Event.Error) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required string message = 1;
+        private java.lang.Object message_ = "";
+        /**
+         * <code>required string message = 1;</code>
+         */
+        public boolean hasMessage() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required string message = 1;</code>
+         */
+        public java.lang.String getMessage() {
+          java.lang.Object ref = message_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            message_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>required string message = 1;</code>
+         */
+        public com.google.protobuf.ByteString
+            getMessageBytes() {
+          java.lang.Object ref = message_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            message_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>required string message = 1;</code>
+         */
+        public Builder setMessage(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          message_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required string message = 1;</code>
+         */
+        public Builder clearMessage() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          message_ = getDefaultInstance().getMessage();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required string message = 1;</code>
+         */
+        public Builder setMessageBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          message_ = value;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.scheduler.Event.Error)
+      }
+
+      static {
+        defaultInstance = new Error(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.scheduler.Event.Error)
+    }
+
+    private int bitField0_;
+    // optional .mesos.scheduler.Event.Type type = 1;
+    public static final int TYPE_FIELD_NUMBER = 1;
+    private org.apache.mesos.scheduler.Protos.Event.Type type_;
+    /**
+     * <code>optional .mesos.scheduler.Event.Type type = 1;</code>
+     *
+     * <pre>
+     * Type of the event, indicates which optional field below should be
+     * present if that type has a nested message definition.
+     * Enum fields should be optional, see: MESOS-4997.
+     * </pre>
+     */
+    public boolean hasType() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional .mesos.scheduler.Event.Type type = 1;</code>
+     *
+     * <pre>
+     * Type of the event, indicates which optional field below should be
+     * present if that type has a nested message definition.
+     * Enum fields should be optional, see: MESOS-4997.
+     * </pre>
+     */
+    public org.apache.mesos.scheduler.Protos.Event.Type getType() {
+      return type_;
+    }
+
+    // optional .mesos.scheduler.Event.Subscribed subscribed = 2;
+    public static final int SUBSCRIBED_FIELD_NUMBER = 2;
+    private org.apache.mesos.scheduler.Protos.Event.Subscribed subscribed_;
+    /**
+     * <code>optional .mesos.scheduler.Event.Subscribed subscribed = 2;</code>
+     */
+    public boolean hasSubscribed() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional .mesos.scheduler.Event.Subscribed subscribed = 2;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Event.Subscribed getSubscribed() {
+      return subscribed_;
+    }
+    /**
+     * <code>optional .mesos.scheduler.Event.Subscribed subscribed = 2;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Event.SubscribedOrBuilder getSubscribedOrBuilder() {
+      return subscribed_;
+    }
+
+    // optional .mesos.scheduler.Event.Offers offers = 3;
+    public static final int OFFERS_FIELD_NUMBER = 3;
+    private org.apache.mesos.scheduler.Protos.Event.Offers offers_;
+    /**
+     * <code>optional .mesos.scheduler.Event.Offers offers = 3;</code>
+     */
+    public boolean hasOffers() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional .mesos.scheduler.Event.Offers offers = 3;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Event.Offers getOffers() {
+      return offers_;
+    }
+    /**
+     * <code>optional .mesos.scheduler.Event.Offers offers = 3;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Event.OffersOrBuilder getOffersOrBuilder() {
+      return offers_;
+    }
+
+    // optional .mesos.scheduler.Event.InverseOffers inverse_offers = 9;
+    public static final int INVERSE_OFFERS_FIELD_NUMBER = 9;
+    private org.apache.mesos.scheduler.Protos.Event.InverseOffers inverseOffers_;
+    /**
+     * <code>optional .mesos.scheduler.Event.InverseOffers inverse_offers = 9;</code>
+     */
+    public boolean hasInverseOffers() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional .mesos.scheduler.Event.InverseOffers inverse_offers = 9;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Event.InverseOffers getInverseOffers() {
+      return inverseOffers_;
+    }
+    /**
+     * <code>optional .mesos.scheduler.Event.InverseOffers inverse_offers = 9;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Event.InverseOffersOrBuilder getInverseOffersOrBuilder() {
+      return inverseOffers_;
+    }
+
+    // optional .mesos.scheduler.Event.Rescind rescind = 4;
+    public static final int RESCIND_FIELD_NUMBER = 4;
+    private org.apache.mesos.scheduler.Protos.Event.Rescind rescind_;
+    /**
+     * <code>optional .mesos.scheduler.Event.Rescind rescind = 4;</code>
+     */
+    public boolean hasRescind() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional .mesos.scheduler.Event.Rescind rescind = 4;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Event.Rescind getRescind() {
+      return rescind_;
+    }
+    /**
+     * <code>optional .mesos.scheduler.Event.Rescind rescind = 4;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Event.RescindOrBuilder getRescindOrBuilder() {
+      return rescind_;
+    }
+
+    // optional .mesos.scheduler.Event.RescindInverseOffer rescind_inverse_offer = 10;
+    public static final int RESCIND_INVERSE_OFFER_FIELD_NUMBER = 10;
+    private org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer rescindInverseOffer_;
+    /**
+     * <code>optional .mesos.scheduler.Event.RescindInverseOffer rescind_inverse_offer = 10;</code>
+     */
+    public boolean hasRescindInverseOffer() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional .mesos.scheduler.Event.RescindInverseOffer rescind_inverse_offer = 10;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer getRescindInverseOffer() {
+      return rescindInverseOffer_;
+    }
+    /**
+     * <code>optional .mesos.scheduler.Event.RescindInverseOffer rescind_inverse_offer = 10;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Event.RescindInverseOfferOrBuilder getRescindInverseOfferOrBuilder() {
+      return rescindInverseOffer_;
+    }
+
+    // optional .mesos.scheduler.Event.Update update = 5;
+    public static final int UPDATE_FIELD_NUMBER = 5;
+    private org.apache.mesos.scheduler.Protos.Event.Update update_;
+    /**
+     * <code>optional .mesos.scheduler.Event.Update update = 5;</code>
+     */
+    public boolean hasUpdate() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional .mesos.scheduler.Event.Update update = 5;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Event.Update getUpdate() {
+      return update_;
+    }
+    /**
+     * <code>optional .mesos.scheduler.Event.Update update = 5;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Event.UpdateOrBuilder getUpdateOrBuilder() {
+      return update_;
+    }
+
+    // optional .mesos.scheduler.Event.Message message = 6;
+    public static final int MESSAGE_FIELD_NUMBER = 6;
+    private org.apache.mesos.scheduler.Protos.Event.Message message_;
+    /**
+     * <code>optional .mesos.scheduler.Event.Message message = 6;</code>
+     */
+    public boolean hasMessage() {
+      return ((bitField0_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional .mesos.scheduler.Event.Message message = 6;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Event.Message getMessage() {
+      return message_;
+    }
+    /**
+     * <code>optional .mesos.scheduler.Event.Message message = 6;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Event.MessageOrBuilder getMessageOrBuilder() {
+      return message_;
+    }
+
+    // optional .mesos.scheduler.Event.Failure failure = 7;
+    public static final int FAILURE_FIELD_NUMBER = 7;
+    private org.apache.mesos.scheduler.Protos.Event.Failure failure_;
+    /**
+     * <code>optional .mesos.scheduler.Event.Failure failure = 7;</code>
+     */
+    public boolean hasFailure() {
+      return ((bitField0_ & 0x00000100) == 0x00000100);
+    }
+    /**
+     * <code>optional .mesos.scheduler.Event.Failure failure = 7;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Event.Failure getFailure() {
+      return failure_;
+    }
+    /**
+     * <code>optional .mesos.scheduler.Event.Failure failure = 7;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Event.FailureOrBuilder getFailureOrBuilder() {
+      return failure_;
+    }
+
+    // optional .mesos.scheduler.Event.Error error = 8;
+    public static final int ERROR_FIELD_NUMBER = 8;
+    private org.apache.mesos.scheduler.Protos.Event.Error error_;
+    /**
+     * <code>optional .mesos.scheduler.Event.Error error = 8;</code>
+     */
+    public boolean hasError() {
+      return ((bitField0_ & 0x00000200) == 0x00000200);
+    }
+    /**
+     * <code>optional .mesos.scheduler.Event.Error error = 8;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Event.Error getError() {
+      return error_;
+    }
+    /**
+     * <code>optional .mesos.scheduler.Event.Error error = 8;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Event.ErrorOrBuilder getErrorOrBuilder() {
+      return error_;
+    }
+
+    private void initFields() {
+      type_ = org.apache.mesos.scheduler.Protos.Event.Type.UNKNOWN;
+      subscribed_ = org.apache.mesos.scheduler.Protos.Event.Subscribed.getDefaultInstance();
+      offers_ = org.apache.mesos.scheduler.Protos.Event.Offers.getDefaultInstance();
+      inverseOffers_ = org.apache.mesos.scheduler.Protos.Event.InverseOffers.getDefaultInstance();
+      rescind_ = org.apache.mesos.scheduler.Protos.Event.Rescind.getDefaultInstance();
+      rescindInverseOffer_ = org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer.getDefaultInstance();
+      update_ = org.apache.mesos.scheduler.Protos.Event.Update.getDefaultInstance();
+      message_ = org.apache.mesos.scheduler.Protos.Event.Message.getDefaultInstance();
+      failure_ = org.apache.mesos.scheduler.Protos.Event.Failure.getDefaultInstance();
+      error_ = org.apache.mesos.scheduler.Protos.Event.Error.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (hasSubscribed()) {
+        if (!getSubscribed().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasOffers()) {
+        if (!getOffers().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasInverseOffers()) {
+        if (!getInverseOffers().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasRescind()) {
+        if (!getRescind().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasRescindInverseOffer()) {
+        if (!getRescindInverseOffer().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasUpdate()) {
+        if (!getUpdate().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasMessage()) {
+        if (!getMessage().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasFailure()) {
+        if (!getFailure().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasError()) {
+        if (!getError().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeEnum(1, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(2, subscribed_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeMessage(3, offers_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeMessage(4, rescind_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeMessage(5, update_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        output.writeMessage(6, message_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        output.writeMessage(7, failure_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        output.writeMessage(8, error_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeMessage(9, inverseOffers_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeMessage(10, rescindInverseOffer_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(1, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, subscribed_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, offers_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, rescind_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(5, update_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(6, message_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(7, failure_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(8, error_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(9, inverseOffers_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(10, rescindInverseOffer_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.scheduler.Protos.Event parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.scheduler.Protos.Event parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.scheduler.Protos.Event parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.scheduler.Protos.Event parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.scheduler.Protos.Event parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.scheduler.Protos.Event parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.scheduler.Protos.Event parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.scheduler.Protos.Event parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.scheduler.Protos.Event parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.scheduler.Protos.Event parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.scheduler.Protos.Event prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.scheduler.Event}
+     *
+     * <pre>
+     **
+     * Scheduler event API.
+     *
+     * An event is described using the standard protocol buffer "union"
+     * trick, see:
+     * https://developers.google.com/protocol-buffers/docs/techniques#union.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.scheduler.Protos.EventOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.scheduler.Protos.Event.class, org.apache.mesos.scheduler.Protos.Event.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.scheduler.Protos.Event.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getSubscribedFieldBuilder();
+          getOffersFieldBuilder();
+          getInverseOffersFieldBuilder();
+          getRescindFieldBuilder();
+          getRescindInverseOfferFieldBuilder();
+          getUpdateFieldBuilder();
+          getMessageFieldBuilder();
+          getFailureFieldBuilder();
+          getErrorFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        type_ = org.apache.mesos.scheduler.Protos.Event.Type.UNKNOWN;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (subscribedBuilder_ == null) {
+          subscribed_ = org.apache.mesos.scheduler.Protos.Event.Subscribed.getDefaultInstance();
+        } else {
+          subscribedBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        if (offersBuilder_ == null) {
+          offers_ = org.apache.mesos.scheduler.Protos.Event.Offers.getDefaultInstance();
+        } else {
+          offersBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        if (inverseOffersBuilder_ == null) {
+          inverseOffers_ = org.apache.mesos.scheduler.Protos.Event.InverseOffers.getDefaultInstance();
+        } else {
+          inverseOffersBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        if (rescindBuilder_ == null) {
+          rescind_ = org.apache.mesos.scheduler.Protos.Event.Rescind.getDefaultInstance();
+        } else {
+          rescindBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        if (rescindInverseOfferBuilder_ == null) {
+          rescindInverseOffer_ = org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer.getDefaultInstance();
+        } else {
+          rescindInverseOfferBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
+        if (updateBuilder_ == null) {
+          update_ = org.apache.mesos.scheduler.Protos.Event.Update.getDefaultInstance();
+        } else {
+          updateBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000040);
+        if (messageBuilder_ == null) {
+          message_ = org.apache.mesos.scheduler.Protos.Event.Message.getDefaultInstance();
+        } else {
+          messageBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000080);
+        if (failureBuilder_ == null) {
+          failure_ = org.apache.mesos.scheduler.Protos.Event.Failure.getDefaultInstance();
+        } else {
+          failureBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000100);
+        if (errorBuilder_ == null) {
+          error_ = org.apache.mesos.scheduler.Protos.Event.Error.getDefaultInstance();
+        } else {
+          errorBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000200);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Event_descriptor;
+      }
+
+      public org.apache.mesos.scheduler.Protos.Event getDefaultInstanceForType() {
+        return org.apache.mesos.scheduler.Protos.Event.getDefaultInstance();
+      }
+
+      public org.apache.mesos.scheduler.Protos.Event build() {
+        org.apache.mesos.scheduler.Protos.Event result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.scheduler.Protos.Event buildPartial() {
+        org.apache.mesos.scheduler.Protos.Event result = new org.apache.mesos.scheduler.Protos.Event(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.type_ = type_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (subscribedBuilder_ == null) {
+          result.subscribed_ = subscribed_;
+        } else {
+          result.subscribed_ = subscribedBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        if (offersBuilder_ == null) {
+          result.offers_ = offers_;
+        } else {
+          result.offers_ = offersBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        if (inverseOffersBuilder_ == null) {
+          result.inverseOffers_ = inverseOffers_;
+        } else {
+          result.inverseOffers_ = inverseOffersBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        if (rescindBuilder_ == null) {
+          result.rescind_ = rescind_;
+        } else {
+          result.rescind_ = rescindBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        if (rescindInverseOfferBuilder_ == null) {
+          result.rescindInverseOffer_ = rescindInverseOffer_;
+        } else {
+          result.rescindInverseOffer_ = rescindInverseOfferBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        if (updateBuilder_ == null) {
+          result.update_ = update_;
+        } else {
+          result.update_ = updateBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+          to_bitField0_ |= 0x00000080;
+        }
+        if (messageBuilder_ == null) {
+          result.message_ = message_;
+        } else {
+          result.message_ = messageBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
+          to_bitField0_ |= 0x00000100;
+        }
+        if (failureBuilder_ == null) {
+          result.failure_ = failure_;
+        } else {
+          result.failure_ = failureBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
+          to_bitField0_ |= 0x00000200;
+        }
+        if (errorBuilder_ == null) {
+          result.error_ = error_;
+        } else {
+          result.error_ = errorBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.scheduler.Protos.Event) {
+          return mergeFrom((org.apache.mesos.scheduler.Protos.Event)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.scheduler.Protos.Event other) {
+        if (other == org.apache.mesos.scheduler.Protos.Event.getDefaultInstance()) return this;
+        if (other.hasType()) {
+          setType(other.getType());
+        }
+        if (other.hasSubscribed()) {
+          mergeSubscribed(other.getSubscribed());
+        }
+        if (other.hasOffers()) {
+          mergeOffers(other.getOffers());
+        }
+        if (other.hasInverseOffers()) {
+          mergeInverseOffers(other.getInverseOffers());
+        }
+        if (other.hasRescind()) {
+          mergeRescind(other.getRescind());
+        }
+        if (other.hasRescindInverseOffer()) {
+          mergeRescindInverseOffer(other.getRescindInverseOffer());
+        }
+        if (other.hasUpdate()) {
+          mergeUpdate(other.getUpdate());
+        }
+        if (other.hasMessage()) {
+          mergeMessage(other.getMessage());
+        }
+        if (other.hasFailure()) {
+          mergeFailure(other.getFailure());
+        }
+        if (other.hasError()) {
+          mergeError(other.getError());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (hasSubscribed()) {
+          if (!getSubscribed().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasOffers()) {
+          if (!getOffers().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasInverseOffers()) {
+          if (!getInverseOffers().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasRescind()) {
+          if (!getRescind().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasRescindInverseOffer()) {
+          if (!getRescindInverseOffer().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasUpdate()) {
+          if (!getUpdate().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasMessage()) {
+          if (!getMessage().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasFailure()) {
+          if (!getFailure().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasError()) {
+          if (!getError().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.scheduler.Protos.Event parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.scheduler.Protos.Event) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional .mesos.scheduler.Event.Type type = 1;
+      private org.apache.mesos.scheduler.Protos.Event.Type type_ = org.apache.mesos.scheduler.Protos.Event.Type.UNKNOWN;
+      /**
+       * <code>optional .mesos.scheduler.Event.Type type = 1;</code>
+       *
+       * <pre>
+       * Type of the event, indicates which optional field below should be
+       * present if that type has a nested message definition.
+       * Enum fields should be optional, see: MESOS-4997.
+       * </pre>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Type type = 1;</code>
+       *
+       * <pre>
+       * Type of the event, indicates which optional field below should be
+       * present if that type has a nested message definition.
+       * Enum fields should be optional, see: MESOS-4997.
+       * </pre>
+       */
+      public org.apache.mesos.scheduler.Protos.Event.Type getType() {
+        return type_;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Type type = 1;</code>
+       *
+       * <pre>
+       * Type of the event, indicates which optional field below should be
+       * present if that type has a nested message definition.
+       * Enum fields should be optional, see: MESOS-4997.
+       * </pre>
+       */
+      public Builder setType(org.apache.mesos.scheduler.Protos.Event.Type value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000001;
+        type_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Type type = 1;</code>
+       *
+       * <pre>
+       * Type of the event, indicates which optional field below should be
+       * present if that type has a nested message definition.
+       * Enum fields should be optional, see: MESOS-4997.
+       * </pre>
+       */
+      public Builder clearType() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        type_ = org.apache.mesos.scheduler.Protos.Event.Type.UNKNOWN;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.scheduler.Event.Subscribed subscribed = 2;
+      private org.apache.mesos.scheduler.Protos.Event.Subscribed subscribed_ = org.apache.mesos.scheduler.Protos.Event.Subscribed.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Event.Subscribed, org.apache.mesos.scheduler.Protos.Event.Subscribed.Builder, org.apache.mesos.scheduler.Protos.Event.SubscribedOrBuilder> subscribedBuilder_;
+      /**
+       * <code>optional .mesos.scheduler.Event.Subscribed subscribed = 2;</code>
+       */
+      public boolean hasSubscribed() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Subscribed subscribed = 2;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Event.Subscribed getSubscribed() {
+        if (subscribedBuilder_ == null) {
+          return subscribed_;
+        } else {
+          return subscribedBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Subscribed subscribed = 2;</code>
+       */
+      public Builder setSubscribed(org.apache.mesos.scheduler.Protos.Event.Subscribed value) {
+        if (subscribedBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          subscribed_ = value;
+          onChanged();
+        } else {
+          subscribedBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Subscribed subscribed = 2;</code>
+       */
+      public Builder setSubscribed(
+          org.apache.mesos.scheduler.Protos.Event.Subscribed.Builder builderForValue) {
+        if (subscribedBuilder_ == null) {
+          subscribed_ = builderForValue.build();
+          onChanged();
+        } else {
+          subscribedBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Subscribed subscribed = 2;</code>
+       */
+      public Builder mergeSubscribed(org.apache.mesos.scheduler.Protos.Event.Subscribed value) {
+        if (subscribedBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              subscribed_ != org.apache.mesos.scheduler.Protos.Event.Subscribed.getDefaultInstance()) {
+            subscribed_ =
+              org.apache.mesos.scheduler.Protos.Event.Subscribed.newBuilder(subscribed_).mergeFrom(value).buildPartial();
+          } else {
+            subscribed_ = value;
+          }
+          onChanged();
+        } else {
+          subscribedBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Subscribed subscribed = 2;</code>
+       */
+      public Builder clearSubscribed() {
+        if (subscribedBuilder_ == null) {
+          subscribed_ = org.apache.mesos.scheduler.Protos.Event.Subscribed.getDefaultInstance();
+          onChanged();
+        } else {
+          subscribedBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Subscribed subscribed = 2;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Event.Subscribed.Builder getSubscribedBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getSubscribedFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Subscribed subscribed = 2;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Event.SubscribedOrBuilder getSubscribedOrBuilder() {
+        if (subscribedBuilder_ != null) {
+          return subscribedBuilder_.getMessageOrBuilder();
+        } else {
+          return subscribed_;
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Subscribed subscribed = 2;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Event.Subscribed, org.apache.mesos.scheduler.Protos.Event.Subscribed.Builder, org.apache.mesos.scheduler.Protos.Event.SubscribedOrBuilder> 
+          getSubscribedFieldBuilder() {
+        if (subscribedBuilder_ == null) {
+          subscribedBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.scheduler.Protos.Event.Subscribed, org.apache.mesos.scheduler.Protos.Event.Subscribed.Builder, org.apache.mesos.scheduler.Protos.Event.SubscribedOrBuilder>(
+                  subscribed_,
+                  getParentForChildren(),
+                  isClean());
+          subscribed_ = null;
+        }
+        return subscribedBuilder_;
+      }
+
+      // optional .mesos.scheduler.Event.Offers offers = 3;
+      private org.apache.mesos.scheduler.Protos.Event.Offers offers_ = org.apache.mesos.scheduler.Protos.Event.Offers.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Event.Offers, org.apache.mesos.scheduler.Protos.Event.Offers.Builder, org.apache.mesos.scheduler.Protos.Event.OffersOrBuilder> offersBuilder_;
+      /**
+       * <code>optional .mesos.scheduler.Event.Offers offers = 3;</code>
+       */
+      public boolean hasOffers() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Offers offers = 3;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Event.Offers getOffers() {
+        if (offersBuilder_ == null) {
+          return offers_;
+        } else {
+          return offersBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Offers offers = 3;</code>
+       */
+      public Builder setOffers(org.apache.mesos.scheduler.Protos.Event.Offers value) {
+        if (offersBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          offers_ = value;
+          onChanged();
+        } else {
+          offersBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Offers offers = 3;</code>
+       */
+      public Builder setOffers(
+          org.apache.mesos.scheduler.Protos.Event.Offers.Builder builderForValue) {
+        if (offersBuilder_ == null) {
+          offers_ = builderForValue.build();
+          onChanged();
+        } else {
+          offersBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Offers offers = 3;</code>
+       */
+      public Builder mergeOffers(org.apache.mesos.scheduler.Protos.Event.Offers value) {
+        if (offersBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) == 0x00000004) &&
+              offers_ != org.apache.mesos.scheduler.Protos.Event.Offers.getDefaultInstance()) {
+            offers_ =
+              org.apache.mesos.scheduler.Protos.Event.Offers.newBuilder(offers_).mergeFrom(value).buildPartial();
+          } else {
+            offers_ = value;
+          }
+          onChanged();
+        } else {
+          offersBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Offers offers = 3;</code>
+       */
+      public Builder clearOffers() {
+        if (offersBuilder_ == null) {
+          offers_ = org.apache.mesos.scheduler.Protos.Event.Offers.getDefaultInstance();
+          onChanged();
+        } else {
+          offersBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Offers offers = 3;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Event.Offers.Builder getOffersBuilder() {
+        bitField0_ |= 0x00000004;
+        onChanged();
+        return getOffersFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Offers offers = 3;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Event.OffersOrBuilder getOffersOrBuilder() {
+        if (offersBuilder_ != null) {
+          return offersBuilder_.getMessageOrBuilder();
+        } else {
+          return offers_;
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Offers offers = 3;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Event.Offers, org.apache.mesos.scheduler.Protos.Event.Offers.Builder, org.apache.mesos.scheduler.Protos.Event.OffersOrBuilder> 
+          getOffersFieldBuilder() {
+        if (offersBuilder_ == null) {
+          offersBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.scheduler.Protos.Event.Offers, org.apache.mesos.scheduler.Protos.Event.Offers.Builder, org.apache.mesos.scheduler.Protos.Event.OffersOrBuilder>(
+                  offers_,
+                  getParentForChildren(),
+                  isClean());
+          offers_ = null;
+        }
+        return offersBuilder_;
+      }
+
+      // optional .mesos.scheduler.Event.InverseOffers inverse_offers = 9;
+      private org.apache.mesos.scheduler.Protos.Event.InverseOffers inverseOffers_ = org.apache.mesos.scheduler.Protos.Event.InverseOffers.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Event.InverseOffers, org.apache.mesos.scheduler.Protos.Event.InverseOffers.Builder, org.apache.mesos.scheduler.Protos.Event.InverseOffersOrBuilder> inverseOffersBuilder_;
+      /**
+       * <code>optional .mesos.scheduler.Event.InverseOffers inverse_offers = 9;</code>
+       */
+      public boolean hasInverseOffers() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.InverseOffers inverse_offers = 9;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Event.InverseOffers getInverseOffers() {
+        if (inverseOffersBuilder_ == null) {
+          return inverseOffers_;
+        } else {
+          return inverseOffersBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.InverseOffers inverse_offers = 9;</code>
+       */
+      public Builder setInverseOffers(org.apache.mesos.scheduler.Protos.Event.InverseOffers value) {
+        if (inverseOffersBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          inverseOffers_ = value;
+          onChanged();
+        } else {
+          inverseOffersBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.InverseOffers inverse_offers = 9;</code>
+       */
+      public Builder setInverseOffers(
+          org.apache.mesos.scheduler.Protos.Event.InverseOffers.Builder builderForValue) {
+        if (inverseOffersBuilder_ == null) {
+          inverseOffers_ = builderForValue.build();
+          onChanged();
+        } else {
+          inverseOffersBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.InverseOffers inverse_offers = 9;</code>
+       */
+      public Builder mergeInverseOffers(org.apache.mesos.scheduler.Protos.Event.InverseOffers value) {
+        if (inverseOffersBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008) &&
+              inverseOffers_ != org.apache.mesos.scheduler.Protos.Event.InverseOffers.getDefaultInstance()) {
+            inverseOffers_ =
+              org.apache.mesos.scheduler.Protos.Event.InverseOffers.newBuilder(inverseOffers_).mergeFrom(value).buildPartial();
+          } else {
+            inverseOffers_ = value;
+          }
+          onChanged();
+        } else {
+          inverseOffersBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.InverseOffers inverse_offers = 9;</code>
+       */
+      public Builder clearInverseOffers() {
+        if (inverseOffersBuilder_ == null) {
+          inverseOffers_ = org.apache.mesos.scheduler.Protos.Event.InverseOffers.getDefaultInstance();
+          onChanged();
+        } else {
+          inverseOffersBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.InverseOffers inverse_offers = 9;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Event.InverseOffers.Builder getInverseOffersBuilder() {
+        bitField0_ |= 0x00000008;
+        onChanged();
+        return getInverseOffersFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.InverseOffers inverse_offers = 9;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Event.InverseOffersOrBuilder getInverseOffersOrBuilder() {
+        if (inverseOffersBuilder_ != null) {
+          return inverseOffersBuilder_.getMessageOrBuilder();
+        } else {
+          return inverseOffers_;
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.InverseOffers inverse_offers = 9;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Event.InverseOffers, org.apache.mesos.scheduler.Protos.Event.InverseOffers.Builder, org.apache.mesos.scheduler.Protos.Event.InverseOffersOrBuilder> 
+          getInverseOffersFieldBuilder() {
+        if (inverseOffersBuilder_ == null) {
+          inverseOffersBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.scheduler.Protos.Event.InverseOffers, org.apache.mesos.scheduler.Protos.Event.InverseOffers.Builder, org.apache.mesos.scheduler.Protos.Event.InverseOffersOrBuilder>(
+                  inverseOffers_,
+                  getParentForChildren(),
+                  isClean());
+          inverseOffers_ = null;
+        }
+        return inverseOffersBuilder_;
+      }
+
+      // optional .mesos.scheduler.Event.Rescind rescind = 4;
+      private org.apache.mesos.scheduler.Protos.Event.Rescind rescind_ = org.apache.mesos.scheduler.Protos.Event.Rescind.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Event.Rescind, org.apache.mesos.scheduler.Protos.Event.Rescind.Builder, org.apache.mesos.scheduler.Protos.Event.RescindOrBuilder> rescindBuilder_;
+      /**
+       * <code>optional .mesos.scheduler.Event.Rescind rescind = 4;</code>
+       */
+      public boolean hasRescind() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Rescind rescind = 4;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Event.Rescind getRescind() {
+        if (rescindBuilder_ == null) {
+          return rescind_;
+        } else {
+          return rescindBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Rescind rescind = 4;</code>
+       */
+      public Builder setRescind(org.apache.mesos.scheduler.Protos.Event.Rescind value) {
+        if (rescindBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          rescind_ = value;
+          onChanged();
+        } else {
+          rescindBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Rescind rescind = 4;</code>
+       */
+      public Builder setRescind(
+          org.apache.mesos.scheduler.Protos.Event.Rescind.Builder builderForValue) {
+        if (rescindBuilder_ == null) {
+          rescind_ = builderForValue.build();
+          onChanged();
+        } else {
+          rescindBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Rescind rescind = 4;</code>
+       */
+      public Builder mergeRescind(org.apache.mesos.scheduler.Protos.Event.Rescind value) {
+        if (rescindBuilder_ == null) {
+          if (((bitField0_ & 0x00000010) == 0x00000010) &&
+              rescind_ != org.apache.mesos.scheduler.Protos.Event.Rescind.getDefaultInstance()) {
+            rescind_ =
+              org.apache.mesos.scheduler.Protos.Event.Rescind.newBuilder(rescind_).mergeFrom(value).buildPartial();
+          } else {
+            rescind_ = value;
+          }
+          onChanged();
+        } else {
+          rescindBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Rescind rescind = 4;</code>
+       */
+      public Builder clearRescind() {
+        if (rescindBuilder_ == null) {
+          rescind_ = org.apache.mesos.scheduler.Protos.Event.Rescind.getDefaultInstance();
+          onChanged();
+        } else {
+          rescindBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Rescind rescind = 4;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Event.Rescind.Builder getRescindBuilder() {
+        bitField0_ |= 0x00000010;
+        onChanged();
+        return getRescindFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Rescind rescind = 4;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Event.RescindOrBuilder getRescindOrBuilder() {
+        if (rescindBuilder_ != null) {
+          return rescindBuilder_.getMessageOrBuilder();
+        } else {
+          return rescind_;
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Rescind rescind = 4;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Event.Rescind, org.apache.mesos.scheduler.Protos.Event.Rescind.Builder, org.apache.mesos.scheduler.Protos.Event.RescindOrBuilder> 
+          getRescindFieldBuilder() {
+        if (rescindBuilder_ == null) {
+          rescindBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.scheduler.Protos.Event.Rescind, org.apache.mesos.scheduler.Protos.Event.Rescind.Builder, org.apache.mesos.scheduler.Protos.Event.RescindOrBuilder>(
+                  rescind_,
+                  getParentForChildren(),
+                  isClean());
+          rescind_ = null;
+        }
+        return rescindBuilder_;
+      }
+
+      // optional .mesos.scheduler.Event.RescindInverseOffer rescind_inverse_offer = 10;
+      private org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer rescindInverseOffer_ = org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer, org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer.Builder, org.apache.mesos.scheduler.Protos.Event.RescindInverseOfferOrBuilder> rescindInverseOfferBuilder_;
+      /**
+       * <code>optional .mesos.scheduler.Event.RescindInverseOffer rescind_inverse_offer = 10;</code>
+       */
+      public boolean hasRescindInverseOffer() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.RescindInverseOffer rescind_inverse_offer = 10;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer getRescindInverseOffer() {
+        if (rescindInverseOfferBuilder_ == null) {
+          return rescindInverseOffer_;
+        } else {
+          return rescindInverseOfferBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.RescindInverseOffer rescind_inverse_offer = 10;</code>
+       */
+      public Builder setRescindInverseOffer(org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer value) {
+        if (rescindInverseOfferBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          rescindInverseOffer_ = value;
+          onChanged();
+        } else {
+          rescindInverseOfferBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.RescindInverseOffer rescind_inverse_offer = 10;</code>
+       */
+      public Builder setRescindInverseOffer(
+          org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer.Builder builderForValue) {
+        if (rescindInverseOfferBuilder_ == null) {
+          rescindInverseOffer_ = builderForValue.build();
+          onChanged();
+        } else {
+          rescindInverseOfferBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.RescindInverseOffer rescind_inverse_offer = 10;</code>
+       */
+      public Builder mergeRescindInverseOffer(org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer value) {
+        if (rescindInverseOfferBuilder_ == null) {
+          if (((bitField0_ & 0x00000020) == 0x00000020) &&
+              rescindInverseOffer_ != org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer.getDefaultInstance()) {
+            rescindInverseOffer_ =
+              org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer.newBuilder(rescindInverseOffer_).mergeFrom(value).buildPartial();
+          } else {
+            rescindInverseOffer_ = value;
+          }
+          onChanged();
+        } else {
+          rescindInverseOfferBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.RescindInverseOffer rescind_inverse_offer = 10;</code>
+       */
+      public Builder clearRescindInverseOffer() {
+        if (rescindInverseOfferBuilder_ == null) {
+          rescindInverseOffer_ = org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer.getDefaultInstance();
+          onChanged();
+        } else {
+          rescindInverseOfferBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.RescindInverseOffer rescind_inverse_offer = 10;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer.Builder getRescindInverseOfferBuilder() {
+        bitField0_ |= 0x00000020;
+        onChanged();
+        return getRescindInverseOfferFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.RescindInverseOffer rescind_inverse_offer = 10;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Event.RescindInverseOfferOrBuilder getRescindInverseOfferOrBuilder() {
+        if (rescindInverseOfferBuilder_ != null) {
+          return rescindInverseOfferBuilder_.getMessageOrBuilder();
+        } else {
+          return rescindInverseOffer_;
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.RescindInverseOffer rescind_inverse_offer = 10;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer, org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer.Builder, org.apache.mesos.scheduler.Protos.Event.RescindInverseOfferOrBuilder> 
+          getRescindInverseOfferFieldBuilder() {
+        if (rescindInverseOfferBuilder_ == null) {
+          rescindInverseOfferBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer, org.apache.mesos.scheduler.Protos.Event.RescindInverseOffer.Builder, org.apache.mesos.scheduler.Protos.Event.RescindInverseOfferOrBuilder>(
+                  rescindInverseOffer_,
+                  getParentForChildren(),
+                  isClean());
+          rescindInverseOffer_ = null;
+        }
+        return rescindInverseOfferBuilder_;
+      }
+
+      // optional .mesos.scheduler.Event.Update update = 5;
+      private org.apache.mesos.scheduler.Protos.Event.Update update_ = org.apache.mesos.scheduler.Protos.Event.Update.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Event.Update, org.apache.mesos.scheduler.Protos.Event.Update.Builder, org.apache.mesos.scheduler.Protos.Event.UpdateOrBuilder> updateBuilder_;
+      /**
+       * <code>optional .mesos.scheduler.Event.Update update = 5;</code>
+       */
+      public boolean hasUpdate() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Update update = 5;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Event.Update getUpdate() {
+        if (updateBuilder_ == null) {
+          return update_;
+        } else {
+          return updateBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Update update = 5;</code>
+       */
+      public Builder setUpdate(org.apache.mesos.scheduler.Protos.Event.Update value) {
+        if (updateBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          update_ = value;
+          onChanged();
+        } else {
+          updateBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Update update = 5;</code>
+       */
+      public Builder setUpdate(
+          org.apache.mesos.scheduler.Protos.Event.Update.Builder builderForValue) {
+        if (updateBuilder_ == null) {
+          update_ = builderForValue.build();
+          onChanged();
+        } else {
+          updateBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Update update = 5;</code>
+       */
+      public Builder mergeUpdate(org.apache.mesos.scheduler.Protos.Event.Update value) {
+        if (updateBuilder_ == null) {
+          if (((bitField0_ & 0x00000040) == 0x00000040) &&
+              update_ != org.apache.mesos.scheduler.Protos.Event.Update.getDefaultInstance()) {
+            update_ =
+              org.apache.mesos.scheduler.Protos.Event.Update.newBuilder(update_).mergeFrom(value).buildPartial();
+          } else {
+            update_ = value;
+          }
+          onChanged();
+        } else {
+          updateBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Update update = 5;</code>
+       */
+      public Builder clearUpdate() {
+        if (updateBuilder_ == null) {
+          update_ = org.apache.mesos.scheduler.Protos.Event.Update.getDefaultInstance();
+          onChanged();
+        } else {
+          updateBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000040);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Update update = 5;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Event.Update.Builder getUpdateBuilder() {
+        bitField0_ |= 0x00000040;
+        onChanged();
+        return getUpdateFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Update update = 5;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Event.UpdateOrBuilder getUpdateOrBuilder() {
+        if (updateBuilder_ != null) {
+          return updateBuilder_.getMessageOrBuilder();
+        } else {
+          return update_;
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Update update = 5;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Event.Update, org.apache.mesos.scheduler.Protos.Event.Update.Builder, org.apache.mesos.scheduler.Protos.Event.UpdateOrBuilder> 
+          getUpdateFieldBuilder() {
+        if (updateBuilder_ == null) {
+          updateBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.scheduler.Protos.Event.Update, org.apache.mesos.scheduler.Protos.Event.Update.Builder, org.apache.mesos.scheduler.Protos.Event.UpdateOrBuilder>(
+                  update_,
+                  getParentForChildren(),
+                  isClean());
+          update_ = null;
+        }
+        return updateBuilder_;
+      }
+
+      // optional .mesos.scheduler.Event.Message message = 6;
+      private org.apache.mesos.scheduler.Protos.Event.Message message_ = org.apache.mesos.scheduler.Protos.Event.Message.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Event.Message, org.apache.mesos.scheduler.Protos.Event.Message.Builder, org.apache.mesos.scheduler.Protos.Event.MessageOrBuilder> messageBuilder_;
+      /**
+       * <code>optional .mesos.scheduler.Event.Message message = 6;</code>
+       */
+      public boolean hasMessage() {
+        return ((bitField0_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Message message = 6;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Event.Message getMessage() {
+        if (messageBuilder_ == null) {
+          return message_;
+        } else {
+          return messageBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Message message = 6;</code>
+       */
+      public Builder setMessage(org.apache.mesos.scheduler.Protos.Event.Message value) {
+        if (messageBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          message_ = value;
+          onChanged();
+        } else {
+          messageBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Message message = 6;</code>
+       */
+      public Builder setMessage(
+          org.apache.mesos.scheduler.Protos.Event.Message.Builder builderForValue) {
+        if (messageBuilder_ == null) {
+          message_ = builderForValue.build();
+          onChanged();
+        } else {
+          messageBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Message message = 6;</code>
+       */
+      public Builder mergeMessage(org.apache.mesos.scheduler.Protos.Event.Message value) {
+        if (messageBuilder_ == null) {
+          if (((bitField0_ & 0x00000080) == 0x00000080) &&
+              message_ != org.apache.mesos.scheduler.Protos.Event.Message.getDefaultInstance()) {
+            message_ =
+              org.apache.mesos.scheduler.Protos.Event.Message.newBuilder(message_).mergeFrom(value).buildPartial();
+          } else {
+            message_ = value;
+          }
+          onChanged();
+        } else {
+          messageBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Message message = 6;</code>
+       */
+      public Builder clearMessage() {
+        if (messageBuilder_ == null) {
+          message_ = org.apache.mesos.scheduler.Protos.Event.Message.getDefaultInstance();
+          onChanged();
+        } else {
+          messageBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000080);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Message message = 6;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Event.Message.Builder getMessageBuilder() {
+        bitField0_ |= 0x00000080;
+        onChanged();
+        return getMessageFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Message message = 6;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Event.MessageOrBuilder getMessageOrBuilder() {
+        if (messageBuilder_ != null) {
+          return messageBuilder_.getMessageOrBuilder();
+        } else {
+          return message_;
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Message message = 6;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Event.Message, org.apache.mesos.scheduler.Protos.Event.Message.Builder, org.apache.mesos.scheduler.Protos.Event.MessageOrBuilder> 
+          getMessageFieldBuilder() {
+        if (messageBuilder_ == null) {
+          messageBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.scheduler.Protos.Event.Message, org.apache.mesos.scheduler.Protos.Event.Message.Builder, org.apache.mesos.scheduler.Protos.Event.MessageOrBuilder>(
+                  message_,
+                  getParentForChildren(),
+                  isClean());
+          message_ = null;
+        }
+        return messageBuilder_;
+      }
+
+      // optional .mesos.scheduler.Event.Failure failure = 7;
+      private org.apache.mesos.scheduler.Protos.Event.Failure failure_ = org.apache.mesos.scheduler.Protos.Event.Failure.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Event.Failure, org.apache.mesos.scheduler.Protos.Event.Failure.Builder, org.apache.mesos.scheduler.Protos.Event.FailureOrBuilder> failureBuilder_;
+      /**
+       * <code>optional .mesos.scheduler.Event.Failure failure = 7;</code>
+       */
+      public boolean hasFailure() {
+        return ((bitField0_ & 0x00000100) == 0x00000100);
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Failure failure = 7;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Event.Failure getFailure() {
+        if (failureBuilder_ == null) {
+          return failure_;
+        } else {
+          return failureBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Failure failure = 7;</code>
+       */
+      public Builder setFailure(org.apache.mesos.scheduler.Protos.Event.Failure value) {
+        if (failureBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          failure_ = value;
+          onChanged();
+        } else {
+          failureBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000100;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Failure failure = 7;</code>
+       */
+      public Builder setFailure(
+          org.apache.mesos.scheduler.Protos.Event.Failure.Builder builderForValue) {
+        if (failureBuilder_ == null) {
+          failure_ = builderForValue.build();
+          onChanged();
+        } else {
+          failureBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000100;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Failure failure = 7;</code>
+       */
+      public Builder mergeFailure(org.apache.mesos.scheduler.Protos.Event.Failure value) {
+        if (failureBuilder_ == null) {
+          if (((bitField0_ & 0x00000100) == 0x00000100) &&
+              failure_ != org.apache.mesos.scheduler.Protos.Event.Failure.getDefaultInstance()) {
+            failure_ =
+              org.apache.mesos.scheduler.Protos.Event.Failure.newBuilder(failure_).mergeFrom(value).buildPartial();
+          } else {
+            failure_ = value;
+          }
+          onChanged();
+        } else {
+          failureBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000100;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Failure failure = 7;</code>
+       */
+      public Builder clearFailure() {
+        if (failureBuilder_ == null) {
+          failure_ = org.apache.mesos.scheduler.Protos.Event.Failure.getDefaultInstance();
+          onChanged();
+        } else {
+          failureBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000100);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Failure failure = 7;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Event.Failure.Builder getFailureBuilder() {
+        bitField0_ |= 0x00000100;
+        onChanged();
+        return getFailureFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Failure failure = 7;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Event.FailureOrBuilder getFailureOrBuilder() {
+        if (failureBuilder_ != null) {
+          return failureBuilder_.getMessageOrBuilder();
+        } else {
+          return failure_;
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Failure failure = 7;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Event.Failure, org.apache.mesos.scheduler.Protos.Event.Failure.Builder, org.apache.mesos.scheduler.Protos.Event.FailureOrBuilder> 
+          getFailureFieldBuilder() {
+        if (failureBuilder_ == null) {
+          failureBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.scheduler.Protos.Event.Failure, org.apache.mesos.scheduler.Protos.Event.Failure.Builder, org.apache.mesos.scheduler.Protos.Event.FailureOrBuilder>(
+                  failure_,
+                  getParentForChildren(),
+                  isClean());
+          failure_ = null;
+        }
+        return failureBuilder_;
+      }
+
+      // optional .mesos.scheduler.Event.Error error = 8;
+      private org.apache.mesos.scheduler.Protos.Event.Error error_ = org.apache.mesos.scheduler.Protos.Event.Error.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Event.Error, org.apache.mesos.scheduler.Protos.Event.Error.Builder, org.apache.mesos.scheduler.Protos.Event.ErrorOrBuilder> errorBuilder_;
+      /**
+       * <code>optional .mesos.scheduler.Event.Error error = 8;</code>
+       */
+      public boolean hasError() {
+        return ((bitField0_ & 0x00000200) == 0x00000200);
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Error error = 8;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Event.Error getError() {
+        if (errorBuilder_ == null) {
+          return error_;
+        } else {
+          return errorBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Error error = 8;</code>
+       */
+      public Builder setError(org.apache.mesos.scheduler.Protos.Event.Error value) {
+        if (errorBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          error_ = value;
+          onChanged();
+        } else {
+          errorBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000200;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Error error = 8;</code>
+       */
+      public Builder setError(
+          org.apache.mesos.scheduler.Protos.Event.Error.Builder builderForValue) {
+        if (errorBuilder_ == null) {
+          error_ = builderForValue.build();
+          onChanged();
+        } else {
+          errorBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000200;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Error error = 8;</code>
+       */
+      public Builder mergeError(org.apache.mesos.scheduler.Protos.Event.Error value) {
+        if (errorBuilder_ == null) {
+          if (((bitField0_ & 0x00000200) == 0x00000200) &&
+              error_ != org.apache.mesos.scheduler.Protos.Event.Error.getDefaultInstance()) {
+            error_ =
+              org.apache.mesos.scheduler.Protos.Event.Error.newBuilder(error_).mergeFrom(value).buildPartial();
+          } else {
+            error_ = value;
+          }
+          onChanged();
+        } else {
+          errorBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000200;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Error error = 8;</code>
+       */
+      public Builder clearError() {
+        if (errorBuilder_ == null) {
+          error_ = org.apache.mesos.scheduler.Protos.Event.Error.getDefaultInstance();
+          onChanged();
+        } else {
+          errorBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000200);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Error error = 8;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Event.Error.Builder getErrorBuilder() {
+        bitField0_ |= 0x00000200;
+        onChanged();
+        return getErrorFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Error error = 8;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Event.ErrorOrBuilder getErrorOrBuilder() {
+        if (errorBuilder_ != null) {
+          return errorBuilder_.getMessageOrBuilder();
+        } else {
+          return error_;
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Event.Error error = 8;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Event.Error, org.apache.mesos.scheduler.Protos.Event.Error.Builder, org.apache.mesos.scheduler.Protos.Event.ErrorOrBuilder> 
+          getErrorFieldBuilder() {
+        if (errorBuilder_ == null) {
+          errorBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.scheduler.Protos.Event.Error, org.apache.mesos.scheduler.Protos.Event.Error.Builder, org.apache.mesos.scheduler.Protos.Event.ErrorOrBuilder>(
+                  error_,
+                  getParentForChildren(),
+                  isClean());
+          error_ = null;
+        }
+        return errorBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.scheduler.Event)
+    }
+
+    static {
+      defaultInstance = new Event(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.scheduler.Event)
+  }
+
+  public interface CallOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional .mesos.FrameworkID framework_id = 1;
+    /**
+     * <code>optional .mesos.FrameworkID framework_id = 1;</code>
+     *
+     * <pre>
+     * Identifies who generated this call. Master assigns a framework id
+     * when a new scheduler subscribes for the first time. Once assigned,
+     * the scheduler must set the 'framework_id' here and within its
+     * FrameworkInfo (in any further 'Subscribe' calls). This allows the
+     * master to identify a scheduler correctly across disconnections,
+     * failovers, etc.
+     * </pre>
+     */
+    boolean hasFrameworkId();
+    /**
+     * <code>optional .mesos.FrameworkID framework_id = 1;</code>
+     *
+     * <pre>
+     * Identifies who generated this call. Master assigns a framework id
+     * when a new scheduler subscribes for the first time. Once assigned,
+     * the scheduler must set the 'framework_id' here and within its
+     * FrameworkInfo (in any further 'Subscribe' calls). This allows the
+     * master to identify a scheduler correctly across disconnections,
+     * failovers, etc.
+     * </pre>
+     */
+    org.apache.mesos.Protos.FrameworkID getFrameworkId();
+    /**
+     * <code>optional .mesos.FrameworkID framework_id = 1;</code>
+     *
+     * <pre>
+     * Identifies who generated this call. Master assigns a framework id
+     * when a new scheduler subscribes for the first time. Once assigned,
+     * the scheduler must set the 'framework_id' here and within its
+     * FrameworkInfo (in any further 'Subscribe' calls). This allows the
+     * master to identify a scheduler correctly across disconnections,
+     * failovers, etc.
+     * </pre>
+     */
+    org.apache.mesos.Protos.FrameworkIDOrBuilder getFrameworkIdOrBuilder();
+
+    // optional .mesos.scheduler.Call.Type type = 2;
+    /**
+     * <code>optional .mesos.scheduler.Call.Type type = 2;</code>
+     *
+     * <pre>
+     * Type of the call, indicates which optional field below should be
+     * present if that type has a nested message definition.
+     * See comments on `Event::Type` above on the reasoning behind this field being optional.
+     * </pre>
+     */
+    boolean hasType();
+    /**
+     * <code>optional .mesos.scheduler.Call.Type type = 2;</code>
+     *
+     * <pre>
+     * Type of the call, indicates which optional field below should be
+     * present if that type has a nested message definition.
+     * See comments on `Event::Type` above on the reasoning behind this field being optional.
+     * </pre>
+     */
+    org.apache.mesos.scheduler.Protos.Call.Type getType();
+
+    // optional .mesos.scheduler.Call.Subscribe subscribe = 3;
+    /**
+     * <code>optional .mesos.scheduler.Call.Subscribe subscribe = 3;</code>
+     */
+    boolean hasSubscribe();
+    /**
+     * <code>optional .mesos.scheduler.Call.Subscribe subscribe = 3;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Call.Subscribe getSubscribe();
+    /**
+     * <code>optional .mesos.scheduler.Call.Subscribe subscribe = 3;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Call.SubscribeOrBuilder getSubscribeOrBuilder();
+
+    // optional .mesos.scheduler.Call.Accept accept = 4;
+    /**
+     * <code>optional .mesos.scheduler.Call.Accept accept = 4;</code>
+     */
+    boolean hasAccept();
+    /**
+     * <code>optional .mesos.scheduler.Call.Accept accept = 4;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Call.Accept getAccept();
+    /**
+     * <code>optional .mesos.scheduler.Call.Accept accept = 4;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Call.AcceptOrBuilder getAcceptOrBuilder();
+
+    // optional .mesos.scheduler.Call.Decline decline = 5;
+    /**
+     * <code>optional .mesos.scheduler.Call.Decline decline = 5;</code>
+     */
+    boolean hasDecline();
+    /**
+     * <code>optional .mesos.scheduler.Call.Decline decline = 5;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Call.Decline getDecline();
+    /**
+     * <code>optional .mesos.scheduler.Call.Decline decline = 5;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Call.DeclineOrBuilder getDeclineOrBuilder();
+
+    // optional .mesos.scheduler.Call.AcceptInverseOffers accept_inverse_offers = 13;
+    /**
+     * <code>optional .mesos.scheduler.Call.AcceptInverseOffers accept_inverse_offers = 13;</code>
+     */
+    boolean hasAcceptInverseOffers();
+    /**
+     * <code>optional .mesos.scheduler.Call.AcceptInverseOffers accept_inverse_offers = 13;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers getAcceptInverseOffers();
+    /**
+     * <code>optional .mesos.scheduler.Call.AcceptInverseOffers accept_inverse_offers = 13;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffersOrBuilder getAcceptInverseOffersOrBuilder();
+
+    // optional .mesos.scheduler.Call.DeclineInverseOffers decline_inverse_offers = 14;
+    /**
+     * <code>optional .mesos.scheduler.Call.DeclineInverseOffers decline_inverse_offers = 14;</code>
+     */
+    boolean hasDeclineInverseOffers();
+    /**
+     * <code>optional .mesos.scheduler.Call.DeclineInverseOffers decline_inverse_offers = 14;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers getDeclineInverseOffers();
+    /**
+     * <code>optional .mesos.scheduler.Call.DeclineInverseOffers decline_inverse_offers = 14;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffersOrBuilder getDeclineInverseOffersOrBuilder();
+
+    // optional .mesos.scheduler.Call.Revive revive = 15;
+    /**
+     * <code>optional .mesos.scheduler.Call.Revive revive = 15;</code>
+     */
+    boolean hasRevive();
+    /**
+     * <code>optional .mesos.scheduler.Call.Revive revive = 15;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Call.Revive getRevive();
+    /**
+     * <code>optional .mesos.scheduler.Call.Revive revive = 15;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Call.ReviveOrBuilder getReviveOrBuilder();
+
+    // optional .mesos.scheduler.Call.Kill kill = 6;
+    /**
+     * <code>optional .mesos.scheduler.Call.Kill kill = 6;</code>
+     */
+    boolean hasKill();
+    /**
+     * <code>optional .mesos.scheduler.Call.Kill kill = 6;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Call.Kill getKill();
+    /**
+     * <code>optional .mesos.scheduler.Call.Kill kill = 6;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Call.KillOrBuilder getKillOrBuilder();
+
+    // optional .mesos.scheduler.Call.Shutdown shutdown = 7;
+    /**
+     * <code>optional .mesos.scheduler.Call.Shutdown shutdown = 7;</code>
+     */
+    boolean hasShutdown();
+    /**
+     * <code>optional .mesos.scheduler.Call.Shutdown shutdown = 7;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Call.Shutdown getShutdown();
+    /**
+     * <code>optional .mesos.scheduler.Call.Shutdown shutdown = 7;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Call.ShutdownOrBuilder getShutdownOrBuilder();
+
+    // optional .mesos.scheduler.Call.Acknowledge acknowledge = 8;
+    /**
+     * <code>optional .mesos.scheduler.Call.Acknowledge acknowledge = 8;</code>
+     */
+    boolean hasAcknowledge();
+    /**
+     * <code>optional .mesos.scheduler.Call.Acknowledge acknowledge = 8;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Call.Acknowledge getAcknowledge();
+    /**
+     * <code>optional .mesos.scheduler.Call.Acknowledge acknowledge = 8;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Call.AcknowledgeOrBuilder getAcknowledgeOrBuilder();
+
+    // optional .mesos.scheduler.Call.Reconcile reconcile = 9;
+    /**
+     * <code>optional .mesos.scheduler.Call.Reconcile reconcile = 9;</code>
+     */
+    boolean hasReconcile();
+    /**
+     * <code>optional .mesos.scheduler.Call.Reconcile reconcile = 9;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Call.Reconcile getReconcile();
+    /**
+     * <code>optional .mesos.scheduler.Call.Reconcile reconcile = 9;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Call.ReconcileOrBuilder getReconcileOrBuilder();
+
+    // optional .mesos.scheduler.Call.Message message = 10;
+    /**
+     * <code>optional .mesos.scheduler.Call.Message message = 10;</code>
+     */
+    boolean hasMessage();
+    /**
+     * <code>optional .mesos.scheduler.Call.Message message = 10;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Call.Message getMessage();
+    /**
+     * <code>optional .mesos.scheduler.Call.Message message = 10;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Call.MessageOrBuilder getMessageOrBuilder();
+
+    // optional .mesos.scheduler.Call.Request request = 11;
+    /**
+     * <code>optional .mesos.scheduler.Call.Request request = 11;</code>
+     */
+    boolean hasRequest();
+    /**
+     * <code>optional .mesos.scheduler.Call.Request request = 11;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Call.Request getRequest();
+    /**
+     * <code>optional .mesos.scheduler.Call.Request request = 11;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Call.RequestOrBuilder getRequestOrBuilder();
+
+    // optional .mesos.scheduler.Call.Suppress suppress = 16;
+    /**
+     * <code>optional .mesos.scheduler.Call.Suppress suppress = 16;</code>
+     */
+    boolean hasSuppress();
+    /**
+     * <code>optional .mesos.scheduler.Call.Suppress suppress = 16;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Call.Suppress getSuppress();
+    /**
+     * <code>optional .mesos.scheduler.Call.Suppress suppress = 16;</code>
+     */
+    org.apache.mesos.scheduler.Protos.Call.SuppressOrBuilder getSuppressOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.scheduler.Call}
+   *
+   * <pre>
+   **
+   * Scheduler call API.
+   *
+   * Like Event, a Call is described using the standard protocol buffer
+   * "union" trick (see above).
+   * </pre>
+   */
+  public static final class Call extends
+      com.google.protobuf.GeneratedMessage
+      implements CallOrBuilder {
+    // Use Call.newBuilder() to construct.
+    private Call(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Call(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Call defaultInstance;
+    public static Call getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Call getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Call(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              org.apache.mesos.Protos.FrameworkID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                subBuilder = frameworkId_.toBuilder();
+              }
+              frameworkId_ = input.readMessage(org.apache.mesos.Protos.FrameworkID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(frameworkId_);
+                frameworkId_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+            case 16: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.scheduler.Protos.Call.Type value = org.apache.mesos.scheduler.Protos.Call.Type.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(2, rawValue);
+              } else {
+                bitField0_ |= 0x00000002;
+                type_ = value;
+              }
+              break;
+            }
+            case 26: {
+              org.apache.mesos.scheduler.Protos.Call.Subscribe.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                subBuilder = subscribe_.toBuilder();
+              }
+              subscribe_ = input.readMessage(org.apache.mesos.scheduler.Protos.Call.Subscribe.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(subscribe_);
+                subscribe_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000004;
+              break;
+            }
+            case 34: {
+              org.apache.mesos.scheduler.Protos.Call.Accept.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                subBuilder = accept_.toBuilder();
+              }
+              accept_ = input.readMessage(org.apache.mesos.scheduler.Protos.Call.Accept.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(accept_);
+                accept_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000008;
+              break;
+            }
+            case 42: {
+              org.apache.mesos.scheduler.Protos.Call.Decline.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000010) == 0x00000010)) {
+                subBuilder = decline_.toBuilder();
+              }
+              decline_ = input.readMessage(org.apache.mesos.scheduler.Protos.Call.Decline.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(decline_);
+                decline_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000010;
+              break;
+            }
+            case 50: {
+              org.apache.mesos.scheduler.Protos.Call.Kill.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000100) == 0x00000100)) {
+                subBuilder = kill_.toBuilder();
+              }
+              kill_ = input.readMessage(org.apache.mesos.scheduler.Protos.Call.Kill.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(kill_);
+                kill_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000100;
+              break;
+            }
+            case 58: {
+              org.apache.mesos.scheduler.Protos.Call.Shutdown.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000200) == 0x00000200)) {
+                subBuilder = shutdown_.toBuilder();
+              }
+              shutdown_ = input.readMessage(org.apache.mesos.scheduler.Protos.Call.Shutdown.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(shutdown_);
+                shutdown_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000200;
+              break;
+            }
+            case 66: {
+              org.apache.mesos.scheduler.Protos.Call.Acknowledge.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000400) == 0x00000400)) {
+                subBuilder = acknowledge_.toBuilder();
+              }
+              acknowledge_ = input.readMessage(org.apache.mesos.scheduler.Protos.Call.Acknowledge.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(acknowledge_);
+                acknowledge_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000400;
+              break;
+            }
+            case 74: {
+              org.apache.mesos.scheduler.Protos.Call.Reconcile.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000800) == 0x00000800)) {
+                subBuilder = reconcile_.toBuilder();
+              }
+              reconcile_ = input.readMessage(org.apache.mesos.scheduler.Protos.Call.Reconcile.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(reconcile_);
+                reconcile_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000800;
+              break;
+            }
+            case 82: {
+              org.apache.mesos.scheduler.Protos.Call.Message.Builder subBuilder = null;
+              if (((bitField0_ & 0x00001000) == 0x00001000)) {
+                subBuilder = message_.toBuilder();
+              }
+              message_ = input.readMessage(org.apache.mesos.scheduler.Protos.Call.Message.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(message_);
+                message_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00001000;
+              break;
+            }
+            case 90: {
+              org.apache.mesos.scheduler.Protos.Call.Request.Builder subBuilder = null;
+              if (((bitField0_ & 0x00002000) == 0x00002000)) {
+                subBuilder = request_.toBuilder();
+              }
+              request_ = input.readMessage(org.apache.mesos.scheduler.Protos.Call.Request.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(request_);
+                request_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00002000;
+              break;
+            }
+            case 106: {
+              org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000020) == 0x00000020)) {
+                subBuilder = acceptInverseOffers_.toBuilder();
+              }
+              acceptInverseOffers_ = input.readMessage(org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(acceptInverseOffers_);
+                acceptInverseOffers_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000020;
+              break;
+            }
+            case 114: {
+              org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000040) == 0x00000040)) {
+                subBuilder = declineInverseOffers_.toBuilder();
+              }
+              declineInverseOffers_ = input.readMessage(org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(declineInverseOffers_);
+                declineInverseOffers_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000040;
+              break;
+            }
+            case 122: {
+              org.apache.mesos.scheduler.Protos.Call.Revive.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000080) == 0x00000080)) {
+                subBuilder = revive_.toBuilder();
+              }
+              revive_ = input.readMessage(org.apache.mesos.scheduler.Protos.Call.Revive.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(revive_);
+                revive_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000080;
+              break;
+            }
+            case 130: {
+              org.apache.mesos.scheduler.Protos.Call.Suppress.Builder subBuilder = null;
+              if (((bitField0_ & 0x00004000) == 0x00004000)) {
+                subBuilder = suppress_.toBuilder();
+              }
+              suppress_ = input.readMessage(org.apache.mesos.scheduler.Protos.Call.Suppress.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(suppress_);
+                suppress_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00004000;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.scheduler.Protos.Call.class, org.apache.mesos.scheduler.Protos.Call.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Call> PARSER =
+        new com.google.protobuf.AbstractParser<Call>() {
+      public Call parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Call(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Call> getParserForType() {
+      return PARSER;
+    }
+
+    /**
+     * Protobuf enum {@code mesos.scheduler.Call.Type}
+     *
+     * <pre>
+     * Possible call types, followed by message definitions if
+     * applicable.
+     * </pre>
+     */
+    public enum Type
+        implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>UNKNOWN = 0;</code>
+       *
+       * <pre>
+       * See comments above on `Event::Type` for more details on this enum value.
+       * </pre>
+       */
+      UNKNOWN(0, 0),
+      /**
+       * <code>SUBSCRIBE = 1;</code>
+       *
+       * <pre>
+       * See 'Subscribe' below.
+       * </pre>
+       */
+      SUBSCRIBE(1, 1),
+      /**
+       * <code>TEARDOWN = 2;</code>
+       *
+       * <pre>
+       * Shuts down all tasks/executors and removes framework.
+       * </pre>
+       */
+      TEARDOWN(2, 2),
+      /**
+       * <code>ACCEPT = 3;</code>
+       *
+       * <pre>
+       * See 'Accept' below.
+       * </pre>
+       */
+      ACCEPT(3, 3),
+      /**
+       * <code>DECLINE = 4;</code>
+       *
+       * <pre>
+       * See 'Decline' below.
+       * </pre>
+       */
+      DECLINE(4, 4),
+      /**
+       * <code>ACCEPT_INVERSE_OFFERS = 13;</code>
+       *
+       * <pre>
+       * See 'AcceptInverseOffers' below.
+       * </pre>
+       */
+      ACCEPT_INVERSE_OFFERS(5, 13),
+      /**
+       * <code>DECLINE_INVERSE_OFFERS = 14;</code>
+       *
+       * <pre>
+       * See 'DeclineInverseOffers' below.
+       * </pre>
+       */
+      DECLINE_INVERSE_OFFERS(6, 14),
+      /**
+       * <code>REVIVE = 5;</code>
+       *
+       * <pre>
+       * Removes any previous filters set via ACCEPT or DECLINE.
+       * </pre>
+       */
+      REVIVE(7, 5),
+      /**
+       * <code>KILL = 6;</code>
+       *
+       * <pre>
+       * See 'Kill' below.
+       * </pre>
+       */
+      KILL(8, 6),
+      /**
+       * <code>SHUTDOWN = 7;</code>
+       *
+       * <pre>
+       * See 'Shutdown' below.
+       * </pre>
+       */
+      SHUTDOWN(9, 7),
+      /**
+       * <code>ACKNOWLEDGE = 8;</code>
+       *
+       * <pre>
+       * See 'Acknowledge' below.
+       * </pre>
+       */
+      ACKNOWLEDGE(10, 8),
+      /**
+       * <code>RECONCILE = 9;</code>
+       *
+       * <pre>
+       * See 'Reconcile' below.
+       * </pre>
+       */
+      RECONCILE(11, 9),
+      /**
+       * <code>MESSAGE = 10;</code>
+       *
+       * <pre>
+       * See 'Message' below.
+       * </pre>
+       */
+      MESSAGE(12, 10),
+      /**
+       * <code>REQUEST = 11;</code>
+       *
+       * <pre>
+       * See 'Request' below.
+       * </pre>
+       */
+      REQUEST(13, 11),
+      /**
+       * <code>SUPPRESS = 12;</code>
+       *
+       * <pre>
+       * Inform master to stop sending offers to the framework.
+       * </pre>
+       */
+      SUPPRESS(14, 12),
+      ;
+
+      /**
+       * <code>UNKNOWN = 0;</code>
+       *
+       * <pre>
+       * See comments above on `Event::Type` for more details on this enum value.
+       * </pre>
+       */
+      public static final int UNKNOWN_VALUE = 0;
+      /**
+       * <code>SUBSCRIBE = 1;</code>
+       *
+       * <pre>
+       * See 'Subscribe' below.
+       * </pre>
+       */
+      public static final int SUBSCRIBE_VALUE = 1;
+      /**
+       * <code>TEARDOWN = 2;</code>
+       *
+       * <pre>
+       * Shuts down all tasks/executors and removes framework.
+       * </pre>
+       */
+      public static final int TEARDOWN_VALUE = 2;
+      /**
+       * <code>ACCEPT = 3;</code>
+       *
+       * <pre>
+       * See 'Accept' below.
+       * </pre>
+       */
+      public static final int ACCEPT_VALUE = 3;
+      /**
+       * <code>DECLINE = 4;</code>
+       *
+       * <pre>
+       * See 'Decline' below.
+       * </pre>
+       */
+      public static final int DECLINE_VALUE = 4;
+      /**
+       * <code>ACCEPT_INVERSE_OFFERS = 13;</code>
+       *
+       * <pre>
+       * See 'AcceptInverseOffers' below.
+       * </pre>
+       */
+      public static final int ACCEPT_INVERSE_OFFERS_VALUE = 13;
+      /**
+       * <code>DECLINE_INVERSE_OFFERS = 14;</code>
+       *
+       * <pre>
+       * See 'DeclineInverseOffers' below.
+       * </pre>
+       */
+      public static final int DECLINE_INVERSE_OFFERS_VALUE = 14;
+      /**
+       * <code>REVIVE = 5;</code>
+       *
+       * <pre>
+       * Removes any previous filters set via ACCEPT or DECLINE.
+       * </pre>
+       */
+      public static final int REVIVE_VALUE = 5;
+      /**
+       * <code>KILL = 6;</code>
+       *
+       * <pre>
+       * See 'Kill' below.
+       * </pre>
+       */
+      public static final int KILL_VALUE = 6;
+      /**
+       * <code>SHUTDOWN = 7;</code>
+       *
+       * <pre>
+       * See 'Shutdown' below.
+       * </pre>
+       */
+      public static final int SHUTDOWN_VALUE = 7;
+      /**
+       * <code>ACKNOWLEDGE = 8;</code>
+       *
+       * <pre>
+       * See 'Acknowledge' below.
+       * </pre>
+       */
+      public static final int ACKNOWLEDGE_VALUE = 8;
+      /**
+       * <code>RECONCILE = 9;</code>
+       *
+       * <pre>
+       * See 'Reconcile' below.
+       * </pre>
+       */
+      public static final int RECONCILE_VALUE = 9;
+      /**
+       * <code>MESSAGE = 10;</code>
+       *
+       * <pre>
+       * See 'Message' below.
+       * </pre>
+       */
+      public static final int MESSAGE_VALUE = 10;
+      /**
+       * <code>REQUEST = 11;</code>
+       *
+       * <pre>
+       * See 'Request' below.
+       * </pre>
+       */
+      public static final int REQUEST_VALUE = 11;
+      /**
+       * <code>SUPPRESS = 12;</code>
+       *
+       * <pre>
+       * Inform master to stop sending offers to the framework.
+       * </pre>
+       */
+      public static final int SUPPRESS_VALUE = 12;
+
+
+      public final int getNumber() { return value; }
+
+      public static Type valueOf(int value) {
+        switch (value) {
+          case 0: return UNKNOWN;
+          case 1: return SUBSCRIBE;
+          case 2: return TEARDOWN;
+          case 3: return ACCEPT;
+          case 4: return DECLINE;
+          case 13: return ACCEPT_INVERSE_OFFERS;
+          case 14: return DECLINE_INVERSE_OFFERS;
+          case 5: return REVIVE;
+          case 6: return KILL;
+          case 7: return SHUTDOWN;
+          case 8: return ACKNOWLEDGE;
+          case 9: return RECONCILE;
+          case 10: return MESSAGE;
+          case 11: return REQUEST;
+          case 12: return SUPPRESS;
+          default: return null;
+        }
+      }
+
+      public static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalGetValueMap() {
+        return internalValueMap;
+      }
+      private static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap<Type>() {
+              public Type findValueByNumber(int number) {
+                return Type.valueOf(number);
+              }
+            };
+
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
+          getValueDescriptor() {
+        return getDescriptor().getValues().get(index);
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptorForType() {
+        return getDescriptor();
+      }
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptor() {
+        return org.apache.mesos.scheduler.Protos.Call.getDescriptor().getEnumTypes().get(0);
+      }
+
+      private static final Type[] VALUES = values();
+
+      public static Type valueOf(
+          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+        if (desc.getType() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "EnumValueDescriptor is not for this type.");
+        }
+        return VALUES[desc.getIndex()];
+      }
+
+      private final int index;
+      private final int value;
+
+      private Type(int index, int value) {
+        this.index = index;
+        this.value = value;
+      }
+
+      // @@protoc_insertion_point(enum_scope:mesos.scheduler.Call.Type)
+    }
+
+    public interface SubscribeOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required .mesos.FrameworkInfo framework_info = 1;
+      /**
+       * <code>required .mesos.FrameworkInfo framework_info = 1;</code>
+       *
+       * <pre>
+       * See the comments below on 'framework_id' on the semantics for
+       * 'framework_info.id'.
+       * </pre>
+       */
+      boolean hasFrameworkInfo();
+      /**
+       * <code>required .mesos.FrameworkInfo framework_info = 1;</code>
+       *
+       * <pre>
+       * See the comments below on 'framework_id' on the semantics for
+       * 'framework_info.id'.
+       * </pre>
+       */
+      org.apache.mesos.Protos.FrameworkInfo getFrameworkInfo();
+      /**
+       * <code>required .mesos.FrameworkInfo framework_info = 1;</code>
+       *
+       * <pre>
+       * See the comments below on 'framework_id' on the semantics for
+       * 'framework_info.id'.
+       * </pre>
+       */
+      org.apache.mesos.Protos.FrameworkInfoOrBuilder getFrameworkInfoOrBuilder();
+
+      // optional bool force = 2;
+      /**
+       * <code>optional bool force = 2;</code>
+       *
+       * <pre>
+       * NOTE: 'force' field is not present in v1/scheduler.proto because it is
+       * only used by the scheduler driver. The driver sets it to true when the
+       * scheduler re-registers for the first time after a failover. Once
+       * re-registered all subsequent re-registration attempts (e.g., due to ZK
+       * blip) will have 'force' set to false. This is important because master
+       * uses this field to know when it needs to send FrameworkRegisteredMessage
+       * vs FrameworkReregisteredMessage.
+       * </pre>
+       */
+      boolean hasForce();
+      /**
+       * <code>optional bool force = 2;</code>
+       *
+       * <pre>
+       * NOTE: 'force' field is not present in v1/scheduler.proto because it is
+       * only used by the scheduler driver. The driver sets it to true when the
+       * scheduler re-registers for the first time after a failover. Once
+       * re-registered all subsequent re-registration attempts (e.g., due to ZK
+       * blip) will have 'force' set to false. This is important because master
+       * uses this field to know when it needs to send FrameworkRegisteredMessage
+       * vs FrameworkReregisteredMessage.
+       * </pre>
+       */
+      boolean getForce();
+
+      // repeated string suppressed_roles = 3;
+      /**
+       * <code>repeated string suppressed_roles = 3;</code>
+       *
+       * <pre>
+       * List of suppressed roles for which the framework does not wish to be
+       * offered resources. The framework can decide to suppress all or a subset
+       * of roles the framework (re)registers as.
+       *
+       * Note: This field is not set by scheduler driver, so will always be
+       * empty. It is added here for transformation from `v1::Call::Subscribe`.
+       * </pre>
+       */
+      java.util.List<java.lang.String>
+      getSuppressedRolesList();
+      /**
+       * <code>repeated string suppressed_roles = 3;</code>
+       *
+       * <pre>
+       * List of suppressed roles for which the framework does not wish to be
+       * offered resources. The framework can decide to suppress all or a subset
+       * of roles the framework (re)registers as.
+       *
+       * Note: This field is not set by scheduler driver, so will always be
+       * empty. It is added here for transformation from `v1::Call::Subscribe`.
+       * </pre>
+       */
+      int getSuppressedRolesCount();
+      /**
+       * <code>repeated string suppressed_roles = 3;</code>
+       *
+       * <pre>
+       * List of suppressed roles for which the framework does not wish to be
+       * offered resources. The framework can decide to suppress all or a subset
+       * of roles the framework (re)registers as.
+       *
+       * Note: This field is not set by scheduler driver, so will always be
+       * empty. It is added here for transformation from `v1::Call::Subscribe`.
+       * </pre>
+       */
+      java.lang.String getSuppressedRoles(int index);
+      /**
+       * <code>repeated string suppressed_roles = 3;</code>
+       *
+       * <pre>
+       * List of suppressed roles for which the framework does not wish to be
+       * offered resources. The framework can decide to suppress all or a subset
+       * of roles the framework (re)registers as.
+       *
+       * Note: This field is not set by scheduler driver, so will always be
+       * empty. It is added here for transformation from `v1::Call::Subscribe`.
+       * </pre>
+       */
+      com.google.protobuf.ByteString
+          getSuppressedRolesBytes(int index);
+    }
+    /**
+     * Protobuf type {@code mesos.scheduler.Call.Subscribe}
+     *
+     * <pre>
+     * Subscribes the scheduler with the master to receive events. A
+     * scheduler must send other calls only after it has received the
+     * SUBCRIBED event.
+     * </pre>
+     */
+    public static final class Subscribe extends
+        com.google.protobuf.GeneratedMessage
+        implements SubscribeOrBuilder {
+      // Use Subscribe.newBuilder() to construct.
+      private Subscribe(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Subscribe(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Subscribe defaultInstance;
+      public static Subscribe getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Subscribe getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Subscribe(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.Protos.FrameworkInfo.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = frameworkInfo_.toBuilder();
+                }
+                frameworkInfo_ = input.readMessage(org.apache.mesos.Protos.FrameworkInfo.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(frameworkInfo_);
+                  frameworkInfo_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+              case 16: {
+                bitField0_ |= 0x00000002;
+                force_ = input.readBool();
+                break;
+              }
+              case 26: {
+                if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
+                  suppressedRoles_ = new com.google.protobuf.LazyStringArrayList();
+                  mutable_bitField0_ |= 0x00000004;
+                }
+                suppressedRoles_.add(input.readBytes());
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
+            suppressedRoles_ = new com.google.protobuf.UnmodifiableLazyStringList(suppressedRoles_);
+          }
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Subscribe_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Subscribe_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.scheduler.Protos.Call.Subscribe.class, org.apache.mesos.scheduler.Protos.Call.Subscribe.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Subscribe> PARSER =
+          new com.google.protobuf.AbstractParser<Subscribe>() {
+        public Subscribe parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Subscribe(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Subscribe> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required .mesos.FrameworkInfo framework_info = 1;
+      public static final int FRAMEWORK_INFO_FIELD_NUMBER = 1;
+      private org.apache.mesos.Protos.FrameworkInfo frameworkInfo_;
+      /**
+       * <code>required .mesos.FrameworkInfo framework_info = 1;</code>
+       *
+       * <pre>
+       * See the comments below on 'framework_id' on the semantics for
+       * 'framework_info.id'.
+       * </pre>
+       */
+      public boolean hasFrameworkInfo() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.FrameworkInfo framework_info = 1;</code>
+       *
+       * <pre>
+       * See the comments below on 'framework_id' on the semantics for
+       * 'framework_info.id'.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.FrameworkInfo getFrameworkInfo() {
+        return frameworkInfo_;
+      }
+      /**
+       * <code>required .mesos.FrameworkInfo framework_info = 1;</code>
+       *
+       * <pre>
+       * See the comments below on 'framework_id' on the semantics for
+       * 'framework_info.id'.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.FrameworkInfoOrBuilder getFrameworkInfoOrBuilder() {
+        return frameworkInfo_;
+      }
+
+      // optional bool force = 2;
+      public static final int FORCE_FIELD_NUMBER = 2;
+      private boolean force_;
+      /**
+       * <code>optional bool force = 2;</code>
+       *
+       * <pre>
+       * NOTE: 'force' field is not present in v1/scheduler.proto because it is
+       * only used by the scheduler driver. The driver sets it to true when the
+       * scheduler re-registers for the first time after a failover. Once
+       * re-registered all subsequent re-registration attempts (e.g., due to ZK
+       * blip) will have 'force' set to false. This is important because master
+       * uses this field to know when it needs to send FrameworkRegisteredMessage
+       * vs FrameworkReregisteredMessage.
+       * </pre>
+       */
+      public boolean hasForce() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional bool force = 2;</code>
+       *
+       * <pre>
+       * NOTE: 'force' field is not present in v1/scheduler.proto because it is
+       * only used by the scheduler driver. The driver sets it to true when the
+       * scheduler re-registers for the first time after a failover. Once
+       * re-registered all subsequent re-registration attempts (e.g., due to ZK
+       * blip) will have 'force' set to false. This is important because master
+       * uses this field to know when it needs to send FrameworkRegisteredMessage
+       * vs FrameworkReregisteredMessage.
+       * </pre>
+       */
+      public boolean getForce() {
+        return force_;
+      }
+
+      // repeated string suppressed_roles = 3;
+      public static final int SUPPRESSED_ROLES_FIELD_NUMBER = 3;
+      private com.google.protobuf.LazyStringList suppressedRoles_;
+      /**
+       * <code>repeated string suppressed_roles = 3;</code>
+       *
+       * <pre>
+       * List of suppressed roles for which the framework does not wish to be
+       * offered resources. The framework can decide to suppress all or a subset
+       * of roles the framework (re)registers as.
+       *
+       * Note: This field is not set by scheduler driver, so will always be
+       * empty. It is added here for transformation from `v1::Call::Subscribe`.
+       * </pre>
+       */
+      public java.util.List<java.lang.String>
+          getSuppressedRolesList() {
+        return suppressedRoles_;
+      }
+      /**
+       * <code>repeated string suppressed_roles = 3;</code>
+       *
+       * <pre>
+       * List of suppressed roles for which the framework does not wish to be
+       * offered resources. The framework can decide to suppress all or a subset
+       * of roles the framework (re)registers as.
+       *
+       * Note: This field is not set by scheduler driver, so will always be
+       * empty. It is added here for transformation from `v1::Call::Subscribe`.
+       * </pre>
+       */
+      public int getSuppressedRolesCount() {
+        return suppressedRoles_.size();
+      }
+      /**
+       * <code>repeated string suppressed_roles = 3;</code>
+       *
+       * <pre>
+       * List of suppressed roles for which the framework does not wish to be
+       * offered resources. The framework can decide to suppress all or a subset
+       * of roles the framework (re)registers as.
+       *
+       * Note: This field is not set by scheduler driver, so will always be
+       * empty. It is added here for transformation from `v1::Call::Subscribe`.
+       * </pre>
+       */
+      public java.lang.String getSuppressedRoles(int index) {
+        return suppressedRoles_.get(index);
+      }
+      /**
+       * <code>repeated string suppressed_roles = 3;</code>
+       *
+       * <pre>
+       * List of suppressed roles for which the framework does not wish to be
+       * offered resources. The framework can decide to suppress all or a subset
+       * of roles the framework (re)registers as.
+       *
+       * Note: This field is not set by scheduler driver, so will always be
+       * empty. It is added here for transformation from `v1::Call::Subscribe`.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getSuppressedRolesBytes(int index) {
+        return suppressedRoles_.getByteString(index);
+      }
+
+      private void initFields() {
+        frameworkInfo_ = org.apache.mesos.Protos.FrameworkInfo.getDefaultInstance();
+        force_ = false;
+        suppressedRoles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasFrameworkInfo()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getFrameworkInfo().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, frameworkInfo_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeBool(2, force_);
+        }
+        for (int i = 0; i < suppressedRoles_.size(); i++) {
+          output.writeBytes(3, suppressedRoles_.getByteString(i));
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, frameworkInfo_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBoolSize(2, force_);
+        }
+        {
+          int dataSize = 0;
+          for (int i = 0; i < suppressedRoles_.size(); i++) {
+            dataSize += com.google.protobuf.CodedOutputStream
+              .computeBytesSizeNoTag(suppressedRoles_.getByteString(i));
+          }
+          size += dataSize;
+          size += 1 * getSuppressedRolesList().size();
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.scheduler.Protos.Call.Subscribe parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Subscribe parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Subscribe parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Subscribe parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Subscribe parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Subscribe parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Subscribe parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Subscribe parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Subscribe parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Subscribe parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.scheduler.Protos.Call.Subscribe prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.scheduler.Call.Subscribe}
+       *
+       * <pre>
+       * Subscribes the scheduler with the master to receive events. A
+       * scheduler must send other calls only after it has received the
+       * SUBCRIBED event.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.scheduler.Protos.Call.SubscribeOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Subscribe_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Subscribe_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.scheduler.Protos.Call.Subscribe.class, org.apache.mesos.scheduler.Protos.Call.Subscribe.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.scheduler.Protos.Call.Subscribe.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getFrameworkInfoFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (frameworkInfoBuilder_ == null) {
+            frameworkInfo_ = org.apache.mesos.Protos.FrameworkInfo.getDefaultInstance();
+          } else {
+            frameworkInfoBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          force_ = false;
+          bitField0_ = (bitField0_ & ~0x00000002);
+          suppressedRoles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Subscribe_descriptor;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Call.Subscribe getDefaultInstanceForType() {
+          return org.apache.mesos.scheduler.Protos.Call.Subscribe.getDefaultInstance();
+        }
+
+        public org.apache.mesos.scheduler.Protos.Call.Subscribe build() {
+          org.apache.mesos.scheduler.Protos.Call.Subscribe result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Call.Subscribe buildPartial() {
+          org.apache.mesos.scheduler.Protos.Call.Subscribe result = new org.apache.mesos.scheduler.Protos.Call.Subscribe(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (frameworkInfoBuilder_ == null) {
+            result.frameworkInfo_ = frameworkInfo_;
+          } else {
+            result.frameworkInfo_ = frameworkInfoBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          result.force_ = force_;
+          if (((bitField0_ & 0x00000004) == 0x00000004)) {
+            suppressedRoles_ = new com.google.protobuf.UnmodifiableLazyStringList(
+                suppressedRoles_);
+            bitField0_ = (bitField0_ & ~0x00000004);
+          }
+          result.suppressedRoles_ = suppressedRoles_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.scheduler.Protos.Call.Subscribe) {
+            return mergeFrom((org.apache.mesos.scheduler.Protos.Call.Subscribe)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.scheduler.Protos.Call.Subscribe other) {
+          if (other == org.apache.mesos.scheduler.Protos.Call.Subscribe.getDefaultInstance()) return this;
+          if (other.hasFrameworkInfo()) {
+            mergeFrameworkInfo(other.getFrameworkInfo());
+          }
+          if (other.hasForce()) {
+            setForce(other.getForce());
+          }
+          if (!other.suppressedRoles_.isEmpty()) {
+            if (suppressedRoles_.isEmpty()) {
+              suppressedRoles_ = other.suppressedRoles_;
+              bitField0_ = (bitField0_ & ~0x00000004);
+            } else {
+              ensureSuppressedRolesIsMutable();
+              suppressedRoles_.addAll(other.suppressedRoles_);
+            }
+            onChanged();
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasFrameworkInfo()) {
+            
+            return false;
+          }
+          if (!getFrameworkInfo().isInitialized()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.scheduler.Protos.Call.Subscribe parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.scheduler.Protos.Call.Subscribe) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required .mesos.FrameworkInfo framework_info = 1;
+        private org.apache.mesos.Protos.FrameworkInfo frameworkInfo_ = org.apache.mesos.Protos.FrameworkInfo.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.FrameworkInfo, org.apache.mesos.Protos.FrameworkInfo.Builder, org.apache.mesos.Protos.FrameworkInfoOrBuilder> frameworkInfoBuilder_;
+        /**
+         * <code>required .mesos.FrameworkInfo framework_info = 1;</code>
+         *
+         * <pre>
+         * See the comments below on 'framework_id' on the semantics for
+         * 'framework_info.id'.
+         * </pre>
+         */
+        public boolean hasFrameworkInfo() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.FrameworkInfo framework_info = 1;</code>
+         *
+         * <pre>
+         * See the comments below on 'framework_id' on the semantics for
+         * 'framework_info.id'.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.FrameworkInfo getFrameworkInfo() {
+          if (frameworkInfoBuilder_ == null) {
+            return frameworkInfo_;
+          } else {
+            return frameworkInfoBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.FrameworkInfo framework_info = 1;</code>
+         *
+         * <pre>
+         * See the comments below on 'framework_id' on the semantics for
+         * 'framework_info.id'.
+         * </pre>
+         */
+        public Builder setFrameworkInfo(org.apache.mesos.Protos.FrameworkInfo value) {
+          if (frameworkInfoBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            frameworkInfo_ = value;
+            onChanged();
+          } else {
+            frameworkInfoBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.FrameworkInfo framework_info = 1;</code>
+         *
+         * <pre>
+         * See the comments below on 'framework_id' on the semantics for
+         * 'framework_info.id'.
+         * </pre>
+         */
+        public Builder setFrameworkInfo(
+            org.apache.mesos.Protos.FrameworkInfo.Builder builderForValue) {
+          if (frameworkInfoBuilder_ == null) {
+            frameworkInfo_ = builderForValue.build();
+            onChanged();
+          } else {
+            frameworkInfoBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.FrameworkInfo framework_info = 1;</code>
+         *
+         * <pre>
+         * See the comments below on 'framework_id' on the semantics for
+         * 'framework_info.id'.
+         * </pre>
+         */
+        public Builder mergeFrameworkInfo(org.apache.mesos.Protos.FrameworkInfo value) {
+          if (frameworkInfoBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                frameworkInfo_ != org.apache.mesos.Protos.FrameworkInfo.getDefaultInstance()) {
+              frameworkInfo_ =
+                org.apache.mesos.Protos.FrameworkInfo.newBuilder(frameworkInfo_).mergeFrom(value).buildPartial();
+            } else {
+              frameworkInfo_ = value;
+            }
+            onChanged();
+          } else {
+            frameworkInfoBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.FrameworkInfo framework_info = 1;</code>
+         *
+         * <pre>
+         * See the comments below on 'framework_id' on the semantics for
+         * 'framework_info.id'.
+         * </pre>
+         */
+        public Builder clearFrameworkInfo() {
+          if (frameworkInfoBuilder_ == null) {
+            frameworkInfo_ = org.apache.mesos.Protos.FrameworkInfo.getDefaultInstance();
+            onChanged();
+          } else {
+            frameworkInfoBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>required .mesos.FrameworkInfo framework_info = 1;</code>
+         *
+         * <pre>
+         * See the comments below on 'framework_id' on the semantics for
+         * 'framework_info.id'.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.FrameworkInfo.Builder getFrameworkInfoBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getFrameworkInfoFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.FrameworkInfo framework_info = 1;</code>
+         *
+         * <pre>
+         * See the comments below on 'framework_id' on the semantics for
+         * 'framework_info.id'.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.FrameworkInfoOrBuilder getFrameworkInfoOrBuilder() {
+          if (frameworkInfoBuilder_ != null) {
+            return frameworkInfoBuilder_.getMessageOrBuilder();
+          } else {
+            return frameworkInfo_;
+          }
+        }
+        /**
+         * <code>required .mesos.FrameworkInfo framework_info = 1;</code>
+         *
+         * <pre>
+         * See the comments below on 'framework_id' on the semantics for
+         * 'framework_info.id'.
+         * </pre>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.FrameworkInfo, org.apache.mesos.Protos.FrameworkInfo.Builder, org.apache.mesos.Protos.FrameworkInfoOrBuilder> 
+            getFrameworkInfoFieldBuilder() {
+          if (frameworkInfoBuilder_ == null) {
+            frameworkInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.FrameworkInfo, org.apache.mesos.Protos.FrameworkInfo.Builder, org.apache.mesos.Protos.FrameworkInfoOrBuilder>(
+                    frameworkInfo_,
+                    getParentForChildren(),
+                    isClean());
+            frameworkInfo_ = null;
+          }
+          return frameworkInfoBuilder_;
+        }
+
+        // optional bool force = 2;
+        private boolean force_ ;
+        /**
+         * <code>optional bool force = 2;</code>
+         *
+         * <pre>
+         * NOTE: 'force' field is not present in v1/scheduler.proto because it is
+         * only used by the scheduler driver. The driver sets it to true when the
+         * scheduler re-registers for the first time after a failover. Once
+         * re-registered all subsequent re-registration attempts (e.g., due to ZK
+         * blip) will have 'force' set to false. This is important because master
+         * uses this field to know when it needs to send FrameworkRegisteredMessage
+         * vs FrameworkReregisteredMessage.
+         * </pre>
+         */
+        public boolean hasForce() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional bool force = 2;</code>
+         *
+         * <pre>
+         * NOTE: 'force' field is not present in v1/scheduler.proto because it is
+         * only used by the scheduler driver. The driver sets it to true when the
+         * scheduler re-registers for the first time after a failover. Once
+         * re-registered all subsequent re-registration attempts (e.g., due to ZK
+         * blip) will have 'force' set to false. This is important because master
+         * uses this field to know when it needs to send FrameworkRegisteredMessage
+         * vs FrameworkReregisteredMessage.
+         * </pre>
+         */
+        public boolean getForce() {
+          return force_;
+        }
+        /**
+         * <code>optional bool force = 2;</code>
+         *
+         * <pre>
+         * NOTE: 'force' field is not present in v1/scheduler.proto because it is
+         * only used by the scheduler driver. The driver sets it to true when the
+         * scheduler re-registers for the first time after a failover. Once
+         * re-registered all subsequent re-registration attempts (e.g., due to ZK
+         * blip) will have 'force' set to false. This is important because master
+         * uses this field to know when it needs to send FrameworkRegisteredMessage
+         * vs FrameworkReregisteredMessage.
+         * </pre>
+         */
+        public Builder setForce(boolean value) {
+          bitField0_ |= 0x00000002;
+          force_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional bool force = 2;</code>
+         *
+         * <pre>
+         * NOTE: 'force' field is not present in v1/scheduler.proto because it is
+         * only used by the scheduler driver. The driver sets it to true when the
+         * scheduler re-registers for the first time after a failover. Once
+         * re-registered all subsequent re-registration attempts (e.g., due to ZK
+         * blip) will have 'force' set to false. This is important because master
+         * uses this field to know when it needs to send FrameworkRegisteredMessage
+         * vs FrameworkReregisteredMessage.
+         * </pre>
+         */
+        public Builder clearForce() {
+          bitField0_ = (bitField0_ & ~0x00000002);
+          force_ = false;
+          onChanged();
+          return this;
+        }
+
+        // repeated string suppressed_roles = 3;
+        private com.google.protobuf.LazyStringList suppressedRoles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+        private void ensureSuppressedRolesIsMutable() {
+          if (!((bitField0_ & 0x00000004) == 0x00000004)) {
+            suppressedRoles_ = new com.google.protobuf.LazyStringArrayList(suppressedRoles_);
+            bitField0_ |= 0x00000004;
+           }
+        }
+        /**
+         * <code>repeated string suppressed_roles = 3;</code>
+         *
+         * <pre>
+         * List of suppressed roles for which the framework does not wish to be
+         * offered resources. The framework can decide to suppress all or a subset
+         * of roles the framework (re)registers as.
+         *
+         * Note: This field is not set by scheduler driver, so will always be
+         * empty. It is added here for transformation from `v1::Call::Subscribe`.
+         * </pre>
+         */
+        public java.util.List<java.lang.String>
+            getSuppressedRolesList() {
+          return java.util.Collections.unmodifiableList(suppressedRoles_);
+        }
+        /**
+         * <code>repeated string suppressed_roles = 3;</code>
+         *
+         * <pre>
+         * List of suppressed roles for which the framework does not wish to be
+         * offered resources. The framework can decide to suppress all or a subset
+         * of roles the framework (re)registers as.
+         *
+         * Note: This field is not set by scheduler driver, so will always be
+         * empty. It is added here for transformation from `v1::Call::Subscribe`.
+         * </pre>
+         */
+        public int getSuppressedRolesCount() {
+          return suppressedRoles_.size();
+        }
+        /**
+         * <code>repeated string suppressed_roles = 3;</code>
+         *
+         * <pre>
+         * List of suppressed roles for which the framework does not wish to be
+         * offered resources. The framework can decide to suppress all or a subset
+         * of roles the framework (re)registers as.
+         *
+         * Note: This field is not set by scheduler driver, so will always be
+         * empty. It is added here for transformation from `v1::Call::Subscribe`.
+         * </pre>
+         */
+        public java.lang.String getSuppressedRoles(int index) {
+          return suppressedRoles_.get(index);
+        }
+        /**
+         * <code>repeated string suppressed_roles = 3;</code>
+         *
+         * <pre>
+         * List of suppressed roles for which the framework does not wish to be
+         * offered resources. The framework can decide to suppress all or a subset
+         * of roles the framework (re)registers as.
+         *
+         * Note: This field is not set by scheduler driver, so will always be
+         * empty. It is added here for transformation from `v1::Call::Subscribe`.
+         * </pre>
+         */
+        public com.google.protobuf.ByteString
+            getSuppressedRolesBytes(int index) {
+          return suppressedRoles_.getByteString(index);
+        }
+        /**
+         * <code>repeated string suppressed_roles = 3;</code>
+         *
+         * <pre>
+         * List of suppressed roles for which the framework does not wish to be
+         * offered resources. The framework can decide to suppress all or a subset
+         * of roles the framework (re)registers as.
+         *
+         * Note: This field is not set by scheduler driver, so will always be
+         * empty. It is added here for transformation from `v1::Call::Subscribe`.
+         * </pre>
+         */
+        public Builder setSuppressedRoles(
+            int index, java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureSuppressedRolesIsMutable();
+          suppressedRoles_.set(index, value);
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>repeated string suppressed_roles = 3;</code>
+         *
+         * <pre>
+         * List of suppressed roles for which the framework does not wish to be
+         * offered resources. The framework can decide to suppress all or a subset
+         * of roles the framework (re)registers as.
+         *
+         * Note: This field is not set by scheduler driver, so will always be
+         * empty. It is added here for transformation from `v1::Call::Subscribe`.
+         * </pre>
+         */
+        public Builder addSuppressedRoles(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureSuppressedRolesIsMutable();
+          suppressedRoles_.add(value);
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>repeated string suppressed_roles = 3;</code>
+         *
+         * <pre>
+         * List of suppressed roles for which the framework does not wish to be
+         * offered resources. The framework can decide to suppress all or a subset
+         * of roles the framework (re)registers as.
+         *
+         * Note: This field is not set by scheduler driver, so will always be
+         * empty. It is added here for transformation from `v1::Call::Subscribe`.
+         * </pre>
+         */
+        public Builder addAllSuppressedRoles(
+            java.lang.Iterable<java.lang.String> values) {
+          ensureSuppressedRolesIsMutable();
+          super.addAll(values, suppressedRoles_);
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>repeated string suppressed_roles = 3;</code>
+         *
+         * <pre>
+         * List of suppressed roles for which the framework does not wish to be
+         * offered resources. The framework can decide to suppress all or a subset
+         * of roles the framework (re)registers as.
+         *
+         * Note: This field is not set by scheduler driver, so will always be
+         * empty. It is added here for transformation from `v1::Call::Subscribe`.
+         * </pre>
+         */
+        public Builder clearSuppressedRoles() {
+          suppressedRoles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+          bitField0_ = (bitField0_ & ~0x00000004);
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>repeated string suppressed_roles = 3;</code>
+         *
+         * <pre>
+         * List of suppressed roles for which the framework does not wish to be
+         * offered resources. The framework can decide to suppress all or a subset
+         * of roles the framework (re)registers as.
+         *
+         * Note: This field is not set by scheduler driver, so will always be
+         * empty. It is added here for transformation from `v1::Call::Subscribe`.
+         * </pre>
+         */
+        public Builder addSuppressedRolesBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureSuppressedRolesIsMutable();
+          suppressedRoles_.add(value);
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.scheduler.Call.Subscribe)
+      }
+
+      static {
+        defaultInstance = new Subscribe(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.scheduler.Call.Subscribe)
+    }
+
+    public interface AcceptOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // repeated .mesos.OfferID offer_ids = 1;
+      /**
+       * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+       */
+      java.util.List<org.apache.mesos.Protos.OfferID> 
+          getOfferIdsList();
+      /**
+       * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+       */
+      org.apache.mesos.Protos.OfferID getOfferIds(int index);
+      /**
+       * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+       */
+      int getOfferIdsCount();
+      /**
+       * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+       */
+      java.util.List<? extends org.apache.mesos.Protos.OfferIDOrBuilder> 
+          getOfferIdsOrBuilderList();
+      /**
+       * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+       */
+      org.apache.mesos.Protos.OfferIDOrBuilder getOfferIdsOrBuilder(
+          int index);
+
+      // repeated .mesos.Offer.Operation operations = 2;
+      /**
+       * <code>repeated .mesos.Offer.Operation operations = 2;</code>
+       */
+      java.util.List<org.apache.mesos.Protos.Offer.Operation> 
+          getOperationsList();
+      /**
+       * <code>repeated .mesos.Offer.Operation operations = 2;</code>
+       */
+      org.apache.mesos.Protos.Offer.Operation getOperations(int index);
+      /**
+       * <code>repeated .mesos.Offer.Operation operations = 2;</code>
+       */
+      int getOperationsCount();
+      /**
+       * <code>repeated .mesos.Offer.Operation operations = 2;</code>
+       */
+      java.util.List<? extends org.apache.mesos.Protos.Offer.OperationOrBuilder> 
+          getOperationsOrBuilderList();
+      /**
+       * <code>repeated .mesos.Offer.Operation operations = 2;</code>
+       */
+      org.apache.mesos.Protos.Offer.OperationOrBuilder getOperationsOrBuilder(
+          int index);
+
+      // optional .mesos.Filters filters = 3;
+      /**
+       * <code>optional .mesos.Filters filters = 3;</code>
+       */
+      boolean hasFilters();
+      /**
+       * <code>optional .mesos.Filters filters = 3;</code>
+       */
+      org.apache.mesos.Protos.Filters getFilters();
+      /**
+       * <code>optional .mesos.Filters filters = 3;</code>
+       */
+      org.apache.mesos.Protos.FiltersOrBuilder getFiltersOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.scheduler.Call.Accept}
+     *
+     * <pre>
+     * Accepts an offer, performing the specified operations
+     * in a sequential manner.
+     *
+     * E.g. Launch a task with a newly reserved persistent volume:
+     *
+     *   Accept {
+     *     offer_ids: [ ... ]
+     *     operations: [
+     *       { type: RESERVE,
+     *         reserve: { resources: [ disk(role):2 ] } }
+     *       { type: CREATE,
+     *         create: { volumes: [ disk(role):1+persistence ] } }
+     *       { type: LAUNCH,
+     *         launch: { task_infos ... disk(role):1;disk(role):1+persistence } }
+     *     ]
+     *   }
+     *
+     * NOTE: Any of the offer’s resources not used in the `Accept` call
+     * (e.g., to launch a task) are considered unused and might be
+     * reoffered to other frameworks. In other words, the same `OfferID`
+     * cannot be used in more than one `Accept` call.
+     * NOTE: All offers must belong to the same agent.
+     * </pre>
+     */
+    public static final class Accept extends
+        com.google.protobuf.GeneratedMessage
+        implements AcceptOrBuilder {
+      // Use Accept.newBuilder() to construct.
+      private Accept(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Accept(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Accept defaultInstance;
+      public static Accept getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Accept getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Accept(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                  offerIds_ = new java.util.ArrayList<org.apache.mesos.Protos.OfferID>();
+                  mutable_bitField0_ |= 0x00000001;
+                }
+                offerIds_.add(input.readMessage(org.apache.mesos.Protos.OfferID.PARSER, extensionRegistry));
+                break;
+              }
+              case 18: {
+                if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+                  operations_ = new java.util.ArrayList<org.apache.mesos.Protos.Offer.Operation>();
+                  mutable_bitField0_ |= 0x00000002;
+                }
+                operations_.add(input.readMessage(org.apache.mesos.Protos.Offer.Operation.PARSER, extensionRegistry));
+                break;
+              }
+              case 26: {
+                org.apache.mesos.Protos.Filters.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = filters_.toBuilder();
+                }
+                filters_ = input.readMessage(org.apache.mesos.Protos.Filters.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(filters_);
+                  filters_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+            offerIds_ = java.util.Collections.unmodifiableList(offerIds_);
+          }
+          if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+            operations_ = java.util.Collections.unmodifiableList(operations_);
+          }
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Accept_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Accept_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.scheduler.Protos.Call.Accept.class, org.apache.mesos.scheduler.Protos.Call.Accept.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Accept> PARSER =
+          new com.google.protobuf.AbstractParser<Accept>() {
+        public Accept parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Accept(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Accept> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // repeated .mesos.OfferID offer_ids = 1;
+      public static final int OFFER_IDS_FIELD_NUMBER = 1;
+      private java.util.List<org.apache.mesos.Protos.OfferID> offerIds_;
+      /**
+       * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.OfferID> getOfferIdsList() {
+        return offerIds_;
+      }
+      /**
+       * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.OfferIDOrBuilder> 
+          getOfferIdsOrBuilderList() {
+        return offerIds_;
+      }
+      /**
+       * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+       */
+      public int getOfferIdsCount() {
+        return offerIds_.size();
+      }
+      /**
+       * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+       */
+      public org.apache.mesos.Protos.OfferID getOfferIds(int index) {
+        return offerIds_.get(index);
+      }
+      /**
+       * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+       */
+      public org.apache.mesos.Protos.OfferIDOrBuilder getOfferIdsOrBuilder(
+          int index) {
+        return offerIds_.get(index);
+      }
+
+      // repeated .mesos.Offer.Operation operations = 2;
+      public static final int OPERATIONS_FIELD_NUMBER = 2;
+      private java.util.List<org.apache.mesos.Protos.Offer.Operation> operations_;
+      /**
+       * <code>repeated .mesos.Offer.Operation operations = 2;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.Offer.Operation> getOperationsList() {
+        return operations_;
+      }
+      /**
+       * <code>repeated .mesos.Offer.Operation operations = 2;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.Offer.OperationOrBuilder> 
+          getOperationsOrBuilderList() {
+        return operations_;
+      }
+      /**
+       * <code>repeated .mesos.Offer.Operation operations = 2;</code>
+       */
+      public int getOperationsCount() {
+        return operations_.size();
+      }
+      /**
+       * <code>repeated .mesos.Offer.Operation operations = 2;</code>
+       */
+      public org.apache.mesos.Protos.Offer.Operation getOperations(int index) {
+        return operations_.get(index);
+      }
+      /**
+       * <code>repeated .mesos.Offer.Operation operations = 2;</code>
+       */
+      public org.apache.mesos.Protos.Offer.OperationOrBuilder getOperationsOrBuilder(
+          int index) {
+        return operations_.get(index);
+      }
+
+      // optional .mesos.Filters filters = 3;
+      public static final int FILTERS_FIELD_NUMBER = 3;
+      private org.apache.mesos.Protos.Filters filters_;
+      /**
+       * <code>optional .mesos.Filters filters = 3;</code>
+       */
+      public boolean hasFilters() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.Filters filters = 3;</code>
+       */
+      public org.apache.mesos.Protos.Filters getFilters() {
+        return filters_;
+      }
+      /**
+       * <code>optional .mesos.Filters filters = 3;</code>
+       */
+      public org.apache.mesos.Protos.FiltersOrBuilder getFiltersOrBuilder() {
+        return filters_;
+      }
+
+      private void initFields() {
+        offerIds_ = java.util.Collections.emptyList();
+        operations_ = java.util.Collections.emptyList();
+        filters_ = org.apache.mesos.Protos.Filters.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        for (int i = 0; i < getOfferIdsCount(); i++) {
+          if (!getOfferIds(i).isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        for (int i = 0; i < getOperationsCount(); i++) {
+          if (!getOperations(i).isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        for (int i = 0; i < offerIds_.size(); i++) {
+          output.writeMessage(1, offerIds_.get(i));
+        }
+        for (int i = 0; i < operations_.size(); i++) {
+          output.writeMessage(2, operations_.get(i));
+        }
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(3, filters_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        for (int i = 0; i < offerIds_.size(); i++) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, offerIds_.get(i));
+        }
+        for (int i = 0; i < operations_.size(); i++) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(2, operations_.get(i));
+        }
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(3, filters_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.scheduler.Protos.Call.Accept parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Accept parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Accept parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Accept parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Accept parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Accept parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Accept parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Accept parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Accept parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Accept parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.scheduler.Protos.Call.Accept prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.scheduler.Call.Accept}
+       *
+       * <pre>
+       * Accepts an offer, performing the specified operations
+       * in a sequential manner.
+       *
+       * E.g. Launch a task with a newly reserved persistent volume:
+       *
+       *   Accept {
+       *     offer_ids: [ ... ]
+       *     operations: [
+       *       { type: RESERVE,
+       *         reserve: { resources: [ disk(role):2 ] } }
+       *       { type: CREATE,
+       *         create: { volumes: [ disk(role):1+persistence ] } }
+       *       { type: LAUNCH,
+       *         launch: { task_infos ... disk(role):1;disk(role):1+persistence } }
+       *     ]
+       *   }
+       *
+       * NOTE: Any of the offer’s resources not used in the `Accept` call
+       * (e.g., to launch a task) are considered unused and might be
+       * reoffered to other frameworks. In other words, the same `OfferID`
+       * cannot be used in more than one `Accept` call.
+       * NOTE: All offers must belong to the same agent.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.scheduler.Protos.Call.AcceptOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Accept_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Accept_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.scheduler.Protos.Call.Accept.class, org.apache.mesos.scheduler.Protos.Call.Accept.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.scheduler.Protos.Call.Accept.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getOfferIdsFieldBuilder();
+            getOperationsFieldBuilder();
+            getFiltersFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (offerIdsBuilder_ == null) {
+            offerIds_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000001);
+          } else {
+            offerIdsBuilder_.clear();
+          }
+          if (operationsBuilder_ == null) {
+            operations_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000002);
+          } else {
+            operationsBuilder_.clear();
+          }
+          if (filtersBuilder_ == null) {
+            filters_ = org.apache.mesos.Protos.Filters.getDefaultInstance();
+          } else {
+            filtersBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Accept_descriptor;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Call.Accept getDefaultInstanceForType() {
+          return org.apache.mesos.scheduler.Protos.Call.Accept.getDefaultInstance();
+        }
+
+        public org.apache.mesos.scheduler.Protos.Call.Accept build() {
+          org.apache.mesos.scheduler.Protos.Call.Accept result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Call.Accept buildPartial() {
+          org.apache.mesos.scheduler.Protos.Call.Accept result = new org.apache.mesos.scheduler.Protos.Call.Accept(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (offerIdsBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              offerIds_ = java.util.Collections.unmodifiableList(offerIds_);
+              bitField0_ = (bitField0_ & ~0x00000001);
+            }
+            result.offerIds_ = offerIds_;
+          } else {
+            result.offerIds_ = offerIdsBuilder_.build();
+          }
+          if (operationsBuilder_ == null) {
+            if (((bitField0_ & 0x00000002) == 0x00000002)) {
+              operations_ = java.util.Collections.unmodifiableList(operations_);
+              bitField0_ = (bitField0_ & ~0x00000002);
+            }
+            result.operations_ = operations_;
+          } else {
+            result.operations_ = operationsBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (filtersBuilder_ == null) {
+            result.filters_ = filters_;
+          } else {
+            result.filters_ = filtersBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.scheduler.Protos.Call.Accept) {
+            return mergeFrom((org.apache.mesos.scheduler.Protos.Call.Accept)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.scheduler.Protos.Call.Accept other) {
+          if (other == org.apache.mesos.scheduler.Protos.Call.Accept.getDefaultInstance()) return this;
+          if (offerIdsBuilder_ == null) {
+            if (!other.offerIds_.isEmpty()) {
+              if (offerIds_.isEmpty()) {
+                offerIds_ = other.offerIds_;
+                bitField0_ = (bitField0_ & ~0x00000001);
+              } else {
+                ensureOfferIdsIsMutable();
+                offerIds_.addAll(other.offerIds_);
+              }
+              onChanged();
+            }
+          } else {
+            if (!other.offerIds_.isEmpty()) {
+              if (offerIdsBuilder_.isEmpty()) {
+                offerIdsBuilder_.dispose();
+                offerIdsBuilder_ = null;
+                offerIds_ = other.offerIds_;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                offerIdsBuilder_ = 
+                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                     getOfferIdsFieldBuilder() : null;
+              } else {
+                offerIdsBuilder_.addAllMessages(other.offerIds_);
+              }
+            }
+          }
+          if (operationsBuilder_ == null) {
+            if (!other.operations_.isEmpty()) {
+              if (operations_.isEmpty()) {
+                operations_ = other.operations_;
+                bitField0_ = (bitField0_ & ~0x00000002);
+              } else {
+                ensureOperationsIsMutable();
+                operations_.addAll(other.operations_);
+              }
+              onChanged();
+            }
+          } else {
+            if (!other.operations_.isEmpty()) {
+              if (operationsBuilder_.isEmpty()) {
+                operationsBuilder_.dispose();
+                operationsBuilder_ = null;
+                operations_ = other.operations_;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                operationsBuilder_ = 
+                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                     getOperationsFieldBuilder() : null;
+              } else {
+                operationsBuilder_.addAllMessages(other.operations_);
+              }
+            }
+          }
+          if (other.hasFilters()) {
+            mergeFilters(other.getFilters());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          for (int i = 0; i < getOfferIdsCount(); i++) {
+            if (!getOfferIds(i).isInitialized()) {
+              
+              return false;
+            }
+          }
+          for (int i = 0; i < getOperationsCount(); i++) {
+            if (!getOperations(i).isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.scheduler.Protos.Call.Accept parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.scheduler.Protos.Call.Accept) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // repeated .mesos.OfferID offer_ids = 1;
+        private java.util.List<org.apache.mesos.Protos.OfferID> offerIds_ =
+          java.util.Collections.emptyList();
+        private void ensureOfferIdsIsMutable() {
+          if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+            offerIds_ = new java.util.ArrayList<org.apache.mesos.Protos.OfferID>(offerIds_);
+            bitField0_ |= 0x00000001;
+           }
+        }
+
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.Protos.OfferID, org.apache.mesos.Protos.OfferID.Builder, org.apache.mesos.Protos.OfferIDOrBuilder> offerIdsBuilder_;
+
+        /**
+         * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.Protos.OfferID> getOfferIdsList() {
+          if (offerIdsBuilder_ == null) {
+            return java.util.Collections.unmodifiableList(offerIds_);
+          } else {
+            return offerIdsBuilder_.getMessageList();
+          }
+        }
+        /**
+         * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+         */
+        public int getOfferIdsCount() {
+          if (offerIdsBuilder_ == null) {
+            return offerIds_.size();
+          } else {
+            return offerIdsBuilder_.getCount();
+          }
+        }
+        /**
+         * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+         */
+        public org.apache.mesos.Protos.OfferID getOfferIds(int index) {
+          if (offerIdsBuilder_ == null) {
+            return offerIds_.get(index);
+          } else {
+            return offerIdsBuilder_.getMessage(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+         */
+        public Builder setOfferIds(
+            int index, org.apache.mesos.Protos.OfferID value) {
+          if (offerIdsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureOfferIdsIsMutable();
+            offerIds_.set(index, value);
+            onChanged();
+          } else {
+            offerIdsBuilder_.setMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+         */
+        public Builder setOfferIds(
+            int index, org.apache.mesos.Protos.OfferID.Builder builderForValue) {
+          if (offerIdsBuilder_ == null) {
+            ensureOfferIdsIsMutable();
+            offerIds_.set(index, builderForValue.build());
+            onChanged();
+          } else {
+            offerIdsBuilder_.setMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+         */
+        public Builder addOfferIds(org.apache.mesos.Protos.OfferID value) {
+          if (offerIdsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureOfferIdsIsMutable();
+            offerIds_.add(value);
+            onChanged();
+          } else {
+            offerIdsBuilder_.addMessage(value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+         */
+        public Builder addOfferIds(
+            int index, org.apache.mesos.Protos.OfferID value) {
+          if (offerIdsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureOfferIdsIsMutable();
+            offerIds_.add(index, value);
+            onChanged();
+          } else {
+            offerIdsBuilder_.addMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+         */
+        public Builder addOfferIds(
+            org.apache.mesos.Protos.OfferID.Builder builderForValue) {
+          if (offerIdsBuilder_ == null) {
+            ensureOfferIdsIsMutable();
+            offerIds_.add(builderForValue.build());
+            onChanged();
+          } else {
+            offerIdsBuilder_.addMessage(builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+         */
+        public Builder addOfferIds(
+            int index, org.apache.mesos.Protos.OfferID.Builder builderForValue) {
+          if (offerIdsBuilder_ == null) {
+            ensureOfferIdsIsMutable();
+            offerIds_.add(index, builderForValue.build());
+            onChanged();
+          } else {
+            offerIdsBuilder_.addMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+         */
+        public Builder addAllOfferIds(
+            java.lang.Iterable<? extends org.apache.mesos.Protos.OfferID> values) {
+          if (offerIdsBuilder_ == null) {
+            ensureOfferIdsIsMutable();
+            super.addAll(values, offerIds_);
+            onChanged();
+          } else {
+            offerIdsBuilder_.addAllMessages(values);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+         */
+        public Builder clearOfferIds() {
+          if (offerIdsBuilder_ == null) {
+            offerIds_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000001);
+            onChanged();
+          } else {
+            offerIdsBuilder_.clear();
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+         */
+        public Builder removeOfferIds(int index) {
+          if (offerIdsBuilder_ == null) {
+            ensureOfferIdsIsMutable();
+            offerIds_.remove(index);
+            onChanged();
+          } else {
+            offerIdsBuilder_.remove(index);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+         */
+        public org.apache.mesos.Protos.OfferID.Builder getOfferIdsBuilder(
+            int index) {
+          return getOfferIdsFieldBuilder().getBuilder(index);
+        }
+        /**
+         * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+         */
+        public org.apache.mesos.Protos.OfferIDOrBuilder getOfferIdsOrBuilder(
+            int index) {
+          if (offerIdsBuilder_ == null) {
+            return offerIds_.get(index);  } else {
+            return offerIdsBuilder_.getMessageOrBuilder(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.Protos.OfferIDOrBuilder> 
+             getOfferIdsOrBuilderList() {
+          if (offerIdsBuilder_ != null) {
+            return offerIdsBuilder_.getMessageOrBuilderList();
+          } else {
+            return java.util.Collections.unmodifiableList(offerIds_);
+          }
+        }
+        /**
+         * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+         */
+        public org.apache.mesos.Protos.OfferID.Builder addOfferIdsBuilder() {
+          return getOfferIdsFieldBuilder().addBuilder(
+              org.apache.mesos.Protos.OfferID.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+         */
+        public org.apache.mesos.Protos.OfferID.Builder addOfferIdsBuilder(
+            int index) {
+          return getOfferIdsFieldBuilder().addBuilder(
+              index, org.apache.mesos.Protos.OfferID.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.Protos.OfferID.Builder> 
+             getOfferIdsBuilderList() {
+          return getOfferIdsFieldBuilder().getBuilderList();
+        }
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.Protos.OfferID, org.apache.mesos.Protos.OfferID.Builder, org.apache.mesos.Protos.OfferIDOrBuilder> 
+            getOfferIdsFieldBuilder() {
+          if (offerIdsBuilder_ == null) {
+            offerIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.Protos.OfferID, org.apache.mesos.Protos.OfferID.Builder, org.apache.mesos.Protos.OfferIDOrBuilder>(
+                    offerIds_,
+                    ((bitField0_ & 0x00000001) == 0x00000001),
+                    getParentForChildren(),
+                    isClean());
+            offerIds_ = null;
+          }
+          return offerIdsBuilder_;
+        }
+
+        // repeated .mesos.Offer.Operation operations = 2;
+        private java.util.List<org.apache.mesos.Protos.Offer.Operation> operations_ =
+          java.util.Collections.emptyList();
+        private void ensureOperationsIsMutable() {
+          if (!((bitField0_ & 0x00000002) == 0x00000002)) {
+            operations_ = new java.util.ArrayList<org.apache.mesos.Protos.Offer.Operation>(operations_);
+            bitField0_ |= 0x00000002;
+           }
+        }
+
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.Protos.Offer.Operation, org.apache.mesos.Protos.Offer.Operation.Builder, org.apache.mesos.Protos.Offer.OperationOrBuilder> operationsBuilder_;
+
+        /**
+         * <code>repeated .mesos.Offer.Operation operations = 2;</code>
+         */
+        public java.util.List<org.apache.mesos.Protos.Offer.Operation> getOperationsList() {
+          if (operationsBuilder_ == null) {
+            return java.util.Collections.unmodifiableList(operations_);
+          } else {
+            return operationsBuilder_.getMessageList();
+          }
+        }
+        /**
+         * <code>repeated .mesos.Offer.Operation operations = 2;</code>
+         */
+        public int getOperationsCount() {
+          if (operationsBuilder_ == null) {
+            return operations_.size();
+          } else {
+            return operationsBuilder_.getCount();
+          }
+        }
+        /**
+         * <code>repeated .mesos.Offer.Operation operations = 2;</code>
+         */
+        public org.apache.mesos.Protos.Offer.Operation getOperations(int index) {
+          if (operationsBuilder_ == null) {
+            return operations_.get(index);
+          } else {
+            return operationsBuilder_.getMessage(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.Offer.Operation operations = 2;</code>
+         */
+        public Builder setOperations(
+            int index, org.apache.mesos.Protos.Offer.Operation value) {
+          if (operationsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureOperationsIsMutable();
+            operations_.set(index, value);
+            onChanged();
+          } else {
+            operationsBuilder_.setMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Offer.Operation operations = 2;</code>
+         */
+        public Builder setOperations(
+            int index, org.apache.mesos.Protos.Offer.Operation.Builder builderForValue) {
+          if (operationsBuilder_ == null) {
+            ensureOperationsIsMutable();
+            operations_.set(index, builderForValue.build());
+            onChanged();
+          } else {
+            operationsBuilder_.setMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Offer.Operation operations = 2;</code>
+         */
+        public Builder addOperations(org.apache.mesos.Protos.Offer.Operation value) {
+          if (operationsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureOperationsIsMutable();
+            operations_.add(value);
+            onChanged();
+          } else {
+            operationsBuilder_.addMessage(value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Offer.Operation operations = 2;</code>
+         */
+        public Builder addOperations(
+            int index, org.apache.mesos.Protos.Offer.Operation value) {
+          if (operationsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureOperationsIsMutable();
+            operations_.add(index, value);
+            onChanged();
+          } else {
+            operationsBuilder_.addMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Offer.Operation operations = 2;</code>
+         */
+        public Builder addOperations(
+            org.apache.mesos.Protos.Offer.Operation.Builder builderForValue) {
+          if (operationsBuilder_ == null) {
+            ensureOperationsIsMutable();
+            operations_.add(builderForValue.build());
+            onChanged();
+          } else {
+            operationsBuilder_.addMessage(builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Offer.Operation operations = 2;</code>
+         */
+        public Builder addOperations(
+            int index, org.apache.mesos.Protos.Offer.Operation.Builder builderForValue) {
+          if (operationsBuilder_ == null) {
+            ensureOperationsIsMutable();
+            operations_.add(index, builderForValue.build());
+            onChanged();
+          } else {
+            operationsBuilder_.addMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Offer.Operation operations = 2;</code>
+         */
+        public Builder addAllOperations(
+            java.lang.Iterable<? extends org.apache.mesos.Protos.Offer.Operation> values) {
+          if (operationsBuilder_ == null) {
+            ensureOperationsIsMutable();
+            super.addAll(values, operations_);
+            onChanged();
+          } else {
+            operationsBuilder_.addAllMessages(values);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Offer.Operation operations = 2;</code>
+         */
+        public Builder clearOperations() {
+          if (operationsBuilder_ == null) {
+            operations_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000002);
+            onChanged();
+          } else {
+            operationsBuilder_.clear();
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Offer.Operation operations = 2;</code>
+         */
+        public Builder removeOperations(int index) {
+          if (operationsBuilder_ == null) {
+            ensureOperationsIsMutable();
+            operations_.remove(index);
+            onChanged();
+          } else {
+            operationsBuilder_.remove(index);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Offer.Operation operations = 2;</code>
+         */
+        public org.apache.mesos.Protos.Offer.Operation.Builder getOperationsBuilder(
+            int index) {
+          return getOperationsFieldBuilder().getBuilder(index);
+        }
+        /**
+         * <code>repeated .mesos.Offer.Operation operations = 2;</code>
+         */
+        public org.apache.mesos.Protos.Offer.OperationOrBuilder getOperationsOrBuilder(
+            int index) {
+          if (operationsBuilder_ == null) {
+            return operations_.get(index);  } else {
+            return operationsBuilder_.getMessageOrBuilder(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.Offer.Operation operations = 2;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.Protos.Offer.OperationOrBuilder> 
+             getOperationsOrBuilderList() {
+          if (operationsBuilder_ != null) {
+            return operationsBuilder_.getMessageOrBuilderList();
+          } else {
+            return java.util.Collections.unmodifiableList(operations_);
+          }
+        }
+        /**
+         * <code>repeated .mesos.Offer.Operation operations = 2;</code>
+         */
+        public org.apache.mesos.Protos.Offer.Operation.Builder addOperationsBuilder() {
+          return getOperationsFieldBuilder().addBuilder(
+              org.apache.mesos.Protos.Offer.Operation.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.Offer.Operation operations = 2;</code>
+         */
+        public org.apache.mesos.Protos.Offer.Operation.Builder addOperationsBuilder(
+            int index) {
+          return getOperationsFieldBuilder().addBuilder(
+              index, org.apache.mesos.Protos.Offer.Operation.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.Offer.Operation operations = 2;</code>
+         */
+        public java.util.List<org.apache.mesos.Protos.Offer.Operation.Builder> 
+             getOperationsBuilderList() {
+          return getOperationsFieldBuilder().getBuilderList();
+        }
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.Protos.Offer.Operation, org.apache.mesos.Protos.Offer.Operation.Builder, org.apache.mesos.Protos.Offer.OperationOrBuilder> 
+            getOperationsFieldBuilder() {
+          if (operationsBuilder_ == null) {
+            operationsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.Protos.Offer.Operation, org.apache.mesos.Protos.Offer.Operation.Builder, org.apache.mesos.Protos.Offer.OperationOrBuilder>(
+                    operations_,
+                    ((bitField0_ & 0x00000002) == 0x00000002),
+                    getParentForChildren(),
+                    isClean());
+            operations_ = null;
+          }
+          return operationsBuilder_;
+        }
+
+        // optional .mesos.Filters filters = 3;
+        private org.apache.mesos.Protos.Filters filters_ = org.apache.mesos.Protos.Filters.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Filters, org.apache.mesos.Protos.Filters.Builder, org.apache.mesos.Protos.FiltersOrBuilder> filtersBuilder_;
+        /**
+         * <code>optional .mesos.Filters filters = 3;</code>
+         */
+        public boolean hasFilters() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional .mesos.Filters filters = 3;</code>
+         */
+        public org.apache.mesos.Protos.Filters getFilters() {
+          if (filtersBuilder_ == null) {
+            return filters_;
+          } else {
+            return filtersBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.Filters filters = 3;</code>
+         */
+        public Builder setFilters(org.apache.mesos.Protos.Filters value) {
+          if (filtersBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            filters_ = value;
+            onChanged();
+          } else {
+            filtersBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Filters filters = 3;</code>
+         */
+        public Builder setFilters(
+            org.apache.mesos.Protos.Filters.Builder builderForValue) {
+          if (filtersBuilder_ == null) {
+            filters_ = builderForValue.build();
+            onChanged();
+          } else {
+            filtersBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Filters filters = 3;</code>
+         */
+        public Builder mergeFilters(org.apache.mesos.Protos.Filters value) {
+          if (filtersBuilder_ == null) {
+            if (((bitField0_ & 0x00000004) == 0x00000004) &&
+                filters_ != org.apache.mesos.Protos.Filters.getDefaultInstance()) {
+              filters_ =
+                org.apache.mesos.Protos.Filters.newBuilder(filters_).mergeFrom(value).buildPartial();
+            } else {
+              filters_ = value;
+            }
+            onChanged();
+          } else {
+            filtersBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Filters filters = 3;</code>
+         */
+        public Builder clearFilters() {
+          if (filtersBuilder_ == null) {
+            filters_ = org.apache.mesos.Protos.Filters.getDefaultInstance();
+            onChanged();
+          } else {
+            filtersBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Filters filters = 3;</code>
+         */
+        public org.apache.mesos.Protos.Filters.Builder getFiltersBuilder() {
+          bitField0_ |= 0x00000004;
+          onChanged();
+          return getFiltersFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.Filters filters = 3;</code>
+         */
+        public org.apache.mesos.Protos.FiltersOrBuilder getFiltersOrBuilder() {
+          if (filtersBuilder_ != null) {
+            return filtersBuilder_.getMessageOrBuilder();
+          } else {
+            return filters_;
+          }
+        }
+        /**
+         * <code>optional .mesos.Filters filters = 3;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Filters, org.apache.mesos.Protos.Filters.Builder, org.apache.mesos.Protos.FiltersOrBuilder> 
+            getFiltersFieldBuilder() {
+          if (filtersBuilder_ == null) {
+            filtersBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.Filters, org.apache.mesos.Protos.Filters.Builder, org.apache.mesos.Protos.FiltersOrBuilder>(
+                    filters_,
+                    getParentForChildren(),
+                    isClean());
+            filters_ = null;
+          }
+          return filtersBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.scheduler.Call.Accept)
+      }
+
+      static {
+        defaultInstance = new Accept(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.scheduler.Call.Accept)
+    }
+
+    public interface DeclineOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // repeated .mesos.OfferID offer_ids = 1;
+      /**
+       * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+       */
+      java.util.List<org.apache.mesos.Protos.OfferID> 
+          getOfferIdsList();
+      /**
+       * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+       */
+      org.apache.mesos.Protos.OfferID getOfferIds(int index);
+      /**
+       * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+       */
+      int getOfferIdsCount();
+      /**
+       * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+       */
+      java.util.List<? extends org.apache.mesos.Protos.OfferIDOrBuilder> 
+          getOfferIdsOrBuilderList();
+      /**
+       * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+       */
+      org.apache.mesos.Protos.OfferIDOrBuilder getOfferIdsOrBuilder(
+          int index);
+
+      // optional .mesos.Filters filters = 2;
+      /**
+       * <code>optional .mesos.Filters filters = 2;</code>
+       */
+      boolean hasFilters();
+      /**
+       * <code>optional .mesos.Filters filters = 2;</code>
+       */
+      org.apache.mesos.Protos.Filters getFilters();
+      /**
+       * <code>optional .mesos.Filters filters = 2;</code>
+       */
+      org.apache.mesos.Protos.FiltersOrBuilder getFiltersOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.scheduler.Call.Decline}
+     *
+     * <pre>
+     * Declines an offer, signaling the master to potentially reoffer
+     * the resources to a different framework. Note that this is same
+     * as sending an Accept call with no operations. See comments on
+     * top of 'Accept' for semantics.
+     * </pre>
+     */
+    public static final class Decline extends
+        com.google.protobuf.GeneratedMessage
+        implements DeclineOrBuilder {
+      // Use Decline.newBuilder() to construct.
+      private Decline(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Decline(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Decline defaultInstance;
+      public static Decline getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Decline getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Decline(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                  offerIds_ = new java.util.ArrayList<org.apache.mesos.Protos.OfferID>();
+                  mutable_bitField0_ |= 0x00000001;
+                }
+                offerIds_.add(input.readMessage(org.apache.mesos.Protos.OfferID.PARSER, extensionRegistry));
+                break;
+              }
+              case 18: {
+                org.apache.mesos.Protos.Filters.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = filters_.toBuilder();
+                }
+                filters_ = input.readMessage(org.apache.mesos.Protos.Filters.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(filters_);
+                  filters_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+            offerIds_ = java.util.Collections.unmodifiableList(offerIds_);
+          }
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Decline_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Decline_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.scheduler.Protos.Call.Decline.class, org.apache.mesos.scheduler.Protos.Call.Decline.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Decline> PARSER =
+          new com.google.protobuf.AbstractParser<Decline>() {
+        public Decline parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Decline(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Decline> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // repeated .mesos.OfferID offer_ids = 1;
+      public static final int OFFER_IDS_FIELD_NUMBER = 1;
+      private java.util.List<org.apache.mesos.Protos.OfferID> offerIds_;
+      /**
+       * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.OfferID> getOfferIdsList() {
+        return offerIds_;
+      }
+      /**
+       * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.OfferIDOrBuilder> 
+          getOfferIdsOrBuilderList() {
+        return offerIds_;
+      }
+      /**
+       * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+       */
+      public int getOfferIdsCount() {
+        return offerIds_.size();
+      }
+      /**
+       * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+       */
+      public org.apache.mesos.Protos.OfferID getOfferIds(int index) {
+        return offerIds_.get(index);
+      }
+      /**
+       * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+       */
+      public org.apache.mesos.Protos.OfferIDOrBuilder getOfferIdsOrBuilder(
+          int index) {
+        return offerIds_.get(index);
+      }
+
+      // optional .mesos.Filters filters = 2;
+      public static final int FILTERS_FIELD_NUMBER = 2;
+      private org.apache.mesos.Protos.Filters filters_;
+      /**
+       * <code>optional .mesos.Filters filters = 2;</code>
+       */
+      public boolean hasFilters() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.Filters filters = 2;</code>
+       */
+      public org.apache.mesos.Protos.Filters getFilters() {
+        return filters_;
+      }
+      /**
+       * <code>optional .mesos.Filters filters = 2;</code>
+       */
+      public org.apache.mesos.Protos.FiltersOrBuilder getFiltersOrBuilder() {
+        return filters_;
+      }
+
+      private void initFields() {
+        offerIds_ = java.util.Collections.emptyList();
+        filters_ = org.apache.mesos.Protos.Filters.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        for (int i = 0; i < getOfferIdsCount(); i++) {
+          if (!getOfferIds(i).isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        for (int i = 0; i < offerIds_.size(); i++) {
+          output.writeMessage(1, offerIds_.get(i));
+        }
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(2, filters_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        for (int i = 0; i < offerIds_.size(); i++) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, offerIds_.get(i));
+        }
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(2, filters_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.scheduler.Protos.Call.Decline parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Decline parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Decline parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Decline parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Decline parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Decline parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Decline parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Decline parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Decline parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Decline parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.scheduler.Protos.Call.Decline prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.scheduler.Call.Decline}
+       *
+       * <pre>
+       * Declines an offer, signaling the master to potentially reoffer
+       * the resources to a different framework. Note that this is same
+       * as sending an Accept call with no operations. See comments on
+       * top of 'Accept' for semantics.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.scheduler.Protos.Call.DeclineOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Decline_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Decline_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.scheduler.Protos.Call.Decline.class, org.apache.mesos.scheduler.Protos.Call.Decline.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.scheduler.Protos.Call.Decline.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getOfferIdsFieldBuilder();
+            getFiltersFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (offerIdsBuilder_ == null) {
+            offerIds_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000001);
+          } else {
+            offerIdsBuilder_.clear();
+          }
+          if (filtersBuilder_ == null) {
+            filters_ = org.apache.mesos.Protos.Filters.getDefaultInstance();
+          } else {
+            filtersBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Decline_descriptor;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Call.Decline getDefaultInstanceForType() {
+          return org.apache.mesos.scheduler.Protos.Call.Decline.getDefaultInstance();
+        }
+
+        public org.apache.mesos.scheduler.Protos.Call.Decline build() {
+          org.apache.mesos.scheduler.Protos.Call.Decline result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Call.Decline buildPartial() {
+          org.apache.mesos.scheduler.Protos.Call.Decline result = new org.apache.mesos.scheduler.Protos.Call.Decline(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (offerIdsBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              offerIds_ = java.util.Collections.unmodifiableList(offerIds_);
+              bitField0_ = (bitField0_ & ~0x00000001);
+            }
+            result.offerIds_ = offerIds_;
+          } else {
+            result.offerIds_ = offerIdsBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (filtersBuilder_ == null) {
+            result.filters_ = filters_;
+          } else {
+            result.filters_ = filtersBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.scheduler.Protos.Call.Decline) {
+            return mergeFrom((org.apache.mesos.scheduler.Protos.Call.Decline)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.scheduler.Protos.Call.Decline other) {
+          if (other == org.apache.mesos.scheduler.Protos.Call.Decline.getDefaultInstance()) return this;
+          if (offerIdsBuilder_ == null) {
+            if (!other.offerIds_.isEmpty()) {
+              if (offerIds_.isEmpty()) {
+                offerIds_ = other.offerIds_;
+                bitField0_ = (bitField0_ & ~0x00000001);
+              } else {
+                ensureOfferIdsIsMutable();
+                offerIds_.addAll(other.offerIds_);
+              }
+              onChanged();
+            }
+          } else {
+            if (!other.offerIds_.isEmpty()) {
+              if (offerIdsBuilder_.isEmpty()) {
+                offerIdsBuilder_.dispose();
+                offerIdsBuilder_ = null;
+                offerIds_ = other.offerIds_;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                offerIdsBuilder_ = 
+                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                     getOfferIdsFieldBuilder() : null;
+              } else {
+                offerIdsBuilder_.addAllMessages(other.offerIds_);
+              }
+            }
+          }
+          if (other.hasFilters()) {
+            mergeFilters(other.getFilters());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          for (int i = 0; i < getOfferIdsCount(); i++) {
+            if (!getOfferIds(i).isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.scheduler.Protos.Call.Decline parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.scheduler.Protos.Call.Decline) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // repeated .mesos.OfferID offer_ids = 1;
+        private java.util.List<org.apache.mesos.Protos.OfferID> offerIds_ =
+          java.util.Collections.emptyList();
+        private void ensureOfferIdsIsMutable() {
+          if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+            offerIds_ = new java.util.ArrayList<org.apache.mesos.Protos.OfferID>(offerIds_);
+            bitField0_ |= 0x00000001;
+           }
+        }
+
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.Protos.OfferID, org.apache.mesos.Protos.OfferID.Builder, org.apache.mesos.Protos.OfferIDOrBuilder> offerIdsBuilder_;
+
+        /**
+         * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.Protos.OfferID> getOfferIdsList() {
+          if (offerIdsBuilder_ == null) {
+            return java.util.Collections.unmodifiableList(offerIds_);
+          } else {
+            return offerIdsBuilder_.getMessageList();
+          }
+        }
+        /**
+         * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+         */
+        public int getOfferIdsCount() {
+          if (offerIdsBuilder_ == null) {
+            return offerIds_.size();
+          } else {
+            return offerIdsBuilder_.getCount();
+          }
+        }
+        /**
+         * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+         */
+        public org.apache.mesos.Protos.OfferID getOfferIds(int index) {
+          if (offerIdsBuilder_ == null) {
+            return offerIds_.get(index);
+          } else {
+            return offerIdsBuilder_.getMessage(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+         */
+        public Builder setOfferIds(
+            int index, org.apache.mesos.Protos.OfferID value) {
+          if (offerIdsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureOfferIdsIsMutable();
+            offerIds_.set(index, value);
+            onChanged();
+          } else {
+            offerIdsBuilder_.setMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+         */
+        public Builder setOfferIds(
+            int index, org.apache.mesos.Protos.OfferID.Builder builderForValue) {
+          if (offerIdsBuilder_ == null) {
+            ensureOfferIdsIsMutable();
+            offerIds_.set(index, builderForValue.build());
+            onChanged();
+          } else {
+            offerIdsBuilder_.setMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+         */
+        public Builder addOfferIds(org.apache.mesos.Protos.OfferID value) {
+          if (offerIdsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureOfferIdsIsMutable();
+            offerIds_.add(value);
+            onChanged();
+          } else {
+            offerIdsBuilder_.addMessage(value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+         */
+        public Builder addOfferIds(
+            int index, org.apache.mesos.Protos.OfferID value) {
+          if (offerIdsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureOfferIdsIsMutable();
+            offerIds_.add(index, value);
+            onChanged();
+          } else {
+            offerIdsBuilder_.addMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+         */
+        public Builder addOfferIds(
+            org.apache.mesos.Protos.OfferID.Builder builderForValue) {
+          if (offerIdsBuilder_ == null) {
+            ensureOfferIdsIsMutable();
+            offerIds_.add(builderForValue.build());
+            onChanged();
+          } else {
+            offerIdsBuilder_.addMessage(builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+         */
+        public Builder addOfferIds(
+            int index, org.apache.mesos.Protos.OfferID.Builder builderForValue) {
+          if (offerIdsBuilder_ == null) {
+            ensureOfferIdsIsMutable();
+            offerIds_.add(index, builderForValue.build());
+            onChanged();
+          } else {
+            offerIdsBuilder_.addMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+         */
+        public Builder addAllOfferIds(
+            java.lang.Iterable<? extends org.apache.mesos.Protos.OfferID> values) {
+          if (offerIdsBuilder_ == null) {
+            ensureOfferIdsIsMutable();
+            super.addAll(values, offerIds_);
+            onChanged();
+          } else {
+            offerIdsBuilder_.addAllMessages(values);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+         */
+        public Builder clearOfferIds() {
+          if (offerIdsBuilder_ == null) {
+            offerIds_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000001);
+            onChanged();
+          } else {
+            offerIdsBuilder_.clear();
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+         */
+        public Builder removeOfferIds(int index) {
+          if (offerIdsBuilder_ == null) {
+            ensureOfferIdsIsMutable();
+            offerIds_.remove(index);
+            onChanged();
+          } else {
+            offerIdsBuilder_.remove(index);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+         */
+        public org.apache.mesos.Protos.OfferID.Builder getOfferIdsBuilder(
+            int index) {
+          return getOfferIdsFieldBuilder().getBuilder(index);
+        }
+        /**
+         * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+         */
+        public org.apache.mesos.Protos.OfferIDOrBuilder getOfferIdsOrBuilder(
+            int index) {
+          if (offerIdsBuilder_ == null) {
+            return offerIds_.get(index);  } else {
+            return offerIdsBuilder_.getMessageOrBuilder(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.Protos.OfferIDOrBuilder> 
+             getOfferIdsOrBuilderList() {
+          if (offerIdsBuilder_ != null) {
+            return offerIdsBuilder_.getMessageOrBuilderList();
+          } else {
+            return java.util.Collections.unmodifiableList(offerIds_);
+          }
+        }
+        /**
+         * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+         */
+        public org.apache.mesos.Protos.OfferID.Builder addOfferIdsBuilder() {
+          return getOfferIdsFieldBuilder().addBuilder(
+              org.apache.mesos.Protos.OfferID.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+         */
+        public org.apache.mesos.Protos.OfferID.Builder addOfferIdsBuilder(
+            int index) {
+          return getOfferIdsFieldBuilder().addBuilder(
+              index, org.apache.mesos.Protos.OfferID.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.OfferID offer_ids = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.Protos.OfferID.Builder> 
+             getOfferIdsBuilderList() {
+          return getOfferIdsFieldBuilder().getBuilderList();
+        }
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.Protos.OfferID, org.apache.mesos.Protos.OfferID.Builder, org.apache.mesos.Protos.OfferIDOrBuilder> 
+            getOfferIdsFieldBuilder() {
+          if (offerIdsBuilder_ == null) {
+            offerIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.Protos.OfferID, org.apache.mesos.Protos.OfferID.Builder, org.apache.mesos.Protos.OfferIDOrBuilder>(
+                    offerIds_,
+                    ((bitField0_ & 0x00000001) == 0x00000001),
+                    getParentForChildren(),
+                    isClean());
+            offerIds_ = null;
+          }
+          return offerIdsBuilder_;
+        }
+
+        // optional .mesos.Filters filters = 2;
+        private org.apache.mesos.Protos.Filters filters_ = org.apache.mesos.Protos.Filters.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Filters, org.apache.mesos.Protos.Filters.Builder, org.apache.mesos.Protos.FiltersOrBuilder> filtersBuilder_;
+        /**
+         * <code>optional .mesos.Filters filters = 2;</code>
+         */
+        public boolean hasFilters() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional .mesos.Filters filters = 2;</code>
+         */
+        public org.apache.mesos.Protos.Filters getFilters() {
+          if (filtersBuilder_ == null) {
+            return filters_;
+          } else {
+            return filtersBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.Filters filters = 2;</code>
+         */
+        public Builder setFilters(org.apache.mesos.Protos.Filters value) {
+          if (filtersBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            filters_ = value;
+            onChanged();
+          } else {
+            filtersBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Filters filters = 2;</code>
+         */
+        public Builder setFilters(
+            org.apache.mesos.Protos.Filters.Builder builderForValue) {
+          if (filtersBuilder_ == null) {
+            filters_ = builderForValue.build();
+            onChanged();
+          } else {
+            filtersBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Filters filters = 2;</code>
+         */
+        public Builder mergeFilters(org.apache.mesos.Protos.Filters value) {
+          if (filtersBuilder_ == null) {
+            if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                filters_ != org.apache.mesos.Protos.Filters.getDefaultInstance()) {
+              filters_ =
+                org.apache.mesos.Protos.Filters.newBuilder(filters_).mergeFrom(value).buildPartial();
+            } else {
+              filters_ = value;
+            }
+            onChanged();
+          } else {
+            filtersBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Filters filters = 2;</code>
+         */
+        public Builder clearFilters() {
+          if (filtersBuilder_ == null) {
+            filters_ = org.apache.mesos.Protos.Filters.getDefaultInstance();
+            onChanged();
+          } else {
+            filtersBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Filters filters = 2;</code>
+         */
+        public org.apache.mesos.Protos.Filters.Builder getFiltersBuilder() {
+          bitField0_ |= 0x00000002;
+          onChanged();
+          return getFiltersFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.Filters filters = 2;</code>
+         */
+        public org.apache.mesos.Protos.FiltersOrBuilder getFiltersOrBuilder() {
+          if (filtersBuilder_ != null) {
+            return filtersBuilder_.getMessageOrBuilder();
+          } else {
+            return filters_;
+          }
+        }
+        /**
+         * <code>optional .mesos.Filters filters = 2;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Filters, org.apache.mesos.Protos.Filters.Builder, org.apache.mesos.Protos.FiltersOrBuilder> 
+            getFiltersFieldBuilder() {
+          if (filtersBuilder_ == null) {
+            filtersBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.Filters, org.apache.mesos.Protos.Filters.Builder, org.apache.mesos.Protos.FiltersOrBuilder>(
+                    filters_,
+                    getParentForChildren(),
+                    isClean());
+            filters_ = null;
+          }
+          return filtersBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.scheduler.Call.Decline)
+      }
+
+      static {
+        defaultInstance = new Decline(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.scheduler.Call.Decline)
+    }
+
+    public interface AcceptInverseOffersOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // repeated .mesos.OfferID inverse_offer_ids = 1;
+      /**
+       * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+       */
+      java.util.List<org.apache.mesos.Protos.OfferID> 
+          getInverseOfferIdsList();
+      /**
+       * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+       */
+      org.apache.mesos.Protos.OfferID getInverseOfferIds(int index);
+      /**
+       * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+       */
+      int getInverseOfferIdsCount();
+      /**
+       * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+       */
+      java.util.List<? extends org.apache.mesos.Protos.OfferIDOrBuilder> 
+          getInverseOfferIdsOrBuilderList();
+      /**
+       * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+       */
+      org.apache.mesos.Protos.OfferIDOrBuilder getInverseOfferIdsOrBuilder(
+          int index);
+
+      // optional .mesos.Filters filters = 2;
+      /**
+       * <code>optional .mesos.Filters filters = 2;</code>
+       */
+      boolean hasFilters();
+      /**
+       * <code>optional .mesos.Filters filters = 2;</code>
+       */
+      org.apache.mesos.Protos.Filters getFilters();
+      /**
+       * <code>optional .mesos.Filters filters = 2;</code>
+       */
+      org.apache.mesos.Protos.FiltersOrBuilder getFiltersOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.scheduler.Call.AcceptInverseOffers}
+     *
+     * <pre>
+     * Accepts an inverse offer. Inverse offers should only be accepted
+     * if the resources in the offer can be safely evacuated before the
+     * provided unavailability.
+     * </pre>
+     */
+    public static final class AcceptInverseOffers extends
+        com.google.protobuf.GeneratedMessage
+        implements AcceptInverseOffersOrBuilder {
+      // Use AcceptInverseOffers.newBuilder() to construct.
+      private AcceptInverseOffers(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private AcceptInverseOffers(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final AcceptInverseOffers defaultInstance;
+      public static AcceptInverseOffers getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public AcceptInverseOffers getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private AcceptInverseOffers(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                  inverseOfferIds_ = new java.util.ArrayList<org.apache.mesos.Protos.OfferID>();
+                  mutable_bitField0_ |= 0x00000001;
+                }
+                inverseOfferIds_.add(input.readMessage(org.apache.mesos.Protos.OfferID.PARSER, extensionRegistry));
+                break;
+              }
+              case 18: {
+                org.apache.mesos.Protos.Filters.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = filters_.toBuilder();
+                }
+                filters_ = input.readMessage(org.apache.mesos.Protos.Filters.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(filters_);
+                  filters_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+            inverseOfferIds_ = java.util.Collections.unmodifiableList(inverseOfferIds_);
+          }
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_AcceptInverseOffers_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_AcceptInverseOffers_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers.class, org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<AcceptInverseOffers> PARSER =
+          new com.google.protobuf.AbstractParser<AcceptInverseOffers>() {
+        public AcceptInverseOffers parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new AcceptInverseOffers(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<AcceptInverseOffers> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // repeated .mesos.OfferID inverse_offer_ids = 1;
+      public static final int INVERSE_OFFER_IDS_FIELD_NUMBER = 1;
+      private java.util.List<org.apache.mesos.Protos.OfferID> inverseOfferIds_;
+      /**
+       * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.OfferID> getInverseOfferIdsList() {
+        return inverseOfferIds_;
+      }
+      /**
+       * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.OfferIDOrBuilder> 
+          getInverseOfferIdsOrBuilderList() {
+        return inverseOfferIds_;
+      }
+      /**
+       * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+       */
+      public int getInverseOfferIdsCount() {
+        return inverseOfferIds_.size();
+      }
+      /**
+       * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+       */
+      public org.apache.mesos.Protos.OfferID getInverseOfferIds(int index) {
+        return inverseOfferIds_.get(index);
+      }
+      /**
+       * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+       */
+      public org.apache.mesos.Protos.OfferIDOrBuilder getInverseOfferIdsOrBuilder(
+          int index) {
+        return inverseOfferIds_.get(index);
+      }
+
+      // optional .mesos.Filters filters = 2;
+      public static final int FILTERS_FIELD_NUMBER = 2;
+      private org.apache.mesos.Protos.Filters filters_;
+      /**
+       * <code>optional .mesos.Filters filters = 2;</code>
+       */
+      public boolean hasFilters() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.Filters filters = 2;</code>
+       */
+      public org.apache.mesos.Protos.Filters getFilters() {
+        return filters_;
+      }
+      /**
+       * <code>optional .mesos.Filters filters = 2;</code>
+       */
+      public org.apache.mesos.Protos.FiltersOrBuilder getFiltersOrBuilder() {
+        return filters_;
+      }
+
+      private void initFields() {
+        inverseOfferIds_ = java.util.Collections.emptyList();
+        filters_ = org.apache.mesos.Protos.Filters.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        for (int i = 0; i < getInverseOfferIdsCount(); i++) {
+          if (!getInverseOfferIds(i).isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        for (int i = 0; i < inverseOfferIds_.size(); i++) {
+          output.writeMessage(1, inverseOfferIds_.get(i));
+        }
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(2, filters_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        for (int i = 0; i < inverseOfferIds_.size(); i++) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, inverseOfferIds_.get(i));
+        }
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(2, filters_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.scheduler.Call.AcceptInverseOffers}
+       *
+       * <pre>
+       * Accepts an inverse offer. Inverse offers should only be accepted
+       * if the resources in the offer can be safely evacuated before the
+       * provided unavailability.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffersOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_AcceptInverseOffers_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_AcceptInverseOffers_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers.class, org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getInverseOfferIdsFieldBuilder();
+            getFiltersFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (inverseOfferIdsBuilder_ == null) {
+            inverseOfferIds_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000001);
+          } else {
+            inverseOfferIdsBuilder_.clear();
+          }
+          if (filtersBuilder_ == null) {
+            filters_ = org.apache.mesos.Protos.Filters.getDefaultInstance();
+          } else {
+            filtersBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_AcceptInverseOffers_descriptor;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers getDefaultInstanceForType() {
+          return org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers.getDefaultInstance();
+        }
+
+        public org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers build() {
+          org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers buildPartial() {
+          org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers result = new org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (inverseOfferIdsBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              inverseOfferIds_ = java.util.Collections.unmodifiableList(inverseOfferIds_);
+              bitField0_ = (bitField0_ & ~0x00000001);
+            }
+            result.inverseOfferIds_ = inverseOfferIds_;
+          } else {
+            result.inverseOfferIds_ = inverseOfferIdsBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (filtersBuilder_ == null) {
+            result.filters_ = filters_;
+          } else {
+            result.filters_ = filtersBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers) {
+            return mergeFrom((org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers other) {
+          if (other == org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers.getDefaultInstance()) return this;
+          if (inverseOfferIdsBuilder_ == null) {
+            if (!other.inverseOfferIds_.isEmpty()) {
+              if (inverseOfferIds_.isEmpty()) {
+                inverseOfferIds_ = other.inverseOfferIds_;
+                bitField0_ = (bitField0_ & ~0x00000001);
+              } else {
+                ensureInverseOfferIdsIsMutable();
+                inverseOfferIds_.addAll(other.inverseOfferIds_);
+              }
+              onChanged();
+            }
+          } else {
+            if (!other.inverseOfferIds_.isEmpty()) {
+              if (inverseOfferIdsBuilder_.isEmpty()) {
+                inverseOfferIdsBuilder_.dispose();
+                inverseOfferIdsBuilder_ = null;
+                inverseOfferIds_ = other.inverseOfferIds_;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                inverseOfferIdsBuilder_ = 
+                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                     getInverseOfferIdsFieldBuilder() : null;
+              } else {
+                inverseOfferIdsBuilder_.addAllMessages(other.inverseOfferIds_);
+              }
+            }
+          }
+          if (other.hasFilters()) {
+            mergeFilters(other.getFilters());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          for (int i = 0; i < getInverseOfferIdsCount(); i++) {
+            if (!getInverseOfferIds(i).isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // repeated .mesos.OfferID inverse_offer_ids = 1;
+        private java.util.List<org.apache.mesos.Protos.OfferID> inverseOfferIds_ =
+          java.util.Collections.emptyList();
+        private void ensureInverseOfferIdsIsMutable() {
+          if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+            inverseOfferIds_ = new java.util.ArrayList<org.apache.mesos.Protos.OfferID>(inverseOfferIds_);
+            bitField0_ |= 0x00000001;
+           }
+        }
+
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.Protos.OfferID, org.apache.mesos.Protos.OfferID.Builder, org.apache.mesos.Protos.OfferIDOrBuilder> inverseOfferIdsBuilder_;
+
+        /**
+         * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.Protos.OfferID> getInverseOfferIdsList() {
+          if (inverseOfferIdsBuilder_ == null) {
+            return java.util.Collections.unmodifiableList(inverseOfferIds_);
+          } else {
+            return inverseOfferIdsBuilder_.getMessageList();
+          }
+        }
+        /**
+         * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+         */
+        public int getInverseOfferIdsCount() {
+          if (inverseOfferIdsBuilder_ == null) {
+            return inverseOfferIds_.size();
+          } else {
+            return inverseOfferIdsBuilder_.getCount();
+          }
+        }
+        /**
+         * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+         */
+        public org.apache.mesos.Protos.OfferID getInverseOfferIds(int index) {
+          if (inverseOfferIdsBuilder_ == null) {
+            return inverseOfferIds_.get(index);
+          } else {
+            return inverseOfferIdsBuilder_.getMessage(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+         */
+        public Builder setInverseOfferIds(
+            int index, org.apache.mesos.Protos.OfferID value) {
+          if (inverseOfferIdsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureInverseOfferIdsIsMutable();
+            inverseOfferIds_.set(index, value);
+            onChanged();
+          } else {
+            inverseOfferIdsBuilder_.setMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+         */
+        public Builder setInverseOfferIds(
+            int index, org.apache.mesos.Protos.OfferID.Builder builderForValue) {
+          if (inverseOfferIdsBuilder_ == null) {
+            ensureInverseOfferIdsIsMutable();
+            inverseOfferIds_.set(index, builderForValue.build());
+            onChanged();
+          } else {
+            inverseOfferIdsBuilder_.setMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+         */
+        public Builder addInverseOfferIds(org.apache.mesos.Protos.OfferID value) {
+          if (inverseOfferIdsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureInverseOfferIdsIsMutable();
+            inverseOfferIds_.add(value);
+            onChanged();
+          } else {
+            inverseOfferIdsBuilder_.addMessage(value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+         */
+        public Builder addInverseOfferIds(
+            int index, org.apache.mesos.Protos.OfferID value) {
+          if (inverseOfferIdsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureInverseOfferIdsIsMutable();
+            inverseOfferIds_.add(index, value);
+            onChanged();
+          } else {
+            inverseOfferIdsBuilder_.addMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+         */
+        public Builder addInverseOfferIds(
+            org.apache.mesos.Protos.OfferID.Builder builderForValue) {
+          if (inverseOfferIdsBuilder_ == null) {
+            ensureInverseOfferIdsIsMutable();
+            inverseOfferIds_.add(builderForValue.build());
+            onChanged();
+          } else {
+            inverseOfferIdsBuilder_.addMessage(builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+         */
+        public Builder addInverseOfferIds(
+            int index, org.apache.mesos.Protos.OfferID.Builder builderForValue) {
+          if (inverseOfferIdsBuilder_ == null) {
+            ensureInverseOfferIdsIsMutable();
+            inverseOfferIds_.add(index, builderForValue.build());
+            onChanged();
+          } else {
+            inverseOfferIdsBuilder_.addMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+         */
+        public Builder addAllInverseOfferIds(
+            java.lang.Iterable<? extends org.apache.mesos.Protos.OfferID> values) {
+          if (inverseOfferIdsBuilder_ == null) {
+            ensureInverseOfferIdsIsMutable();
+            super.addAll(values, inverseOfferIds_);
+            onChanged();
+          } else {
+            inverseOfferIdsBuilder_.addAllMessages(values);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+         */
+        public Builder clearInverseOfferIds() {
+          if (inverseOfferIdsBuilder_ == null) {
+            inverseOfferIds_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000001);
+            onChanged();
+          } else {
+            inverseOfferIdsBuilder_.clear();
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+         */
+        public Builder removeInverseOfferIds(int index) {
+          if (inverseOfferIdsBuilder_ == null) {
+            ensureInverseOfferIdsIsMutable();
+            inverseOfferIds_.remove(index);
+            onChanged();
+          } else {
+            inverseOfferIdsBuilder_.remove(index);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+         */
+        public org.apache.mesos.Protos.OfferID.Builder getInverseOfferIdsBuilder(
+            int index) {
+          return getInverseOfferIdsFieldBuilder().getBuilder(index);
+        }
+        /**
+         * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+         */
+        public org.apache.mesos.Protos.OfferIDOrBuilder getInverseOfferIdsOrBuilder(
+            int index) {
+          if (inverseOfferIdsBuilder_ == null) {
+            return inverseOfferIds_.get(index);  } else {
+            return inverseOfferIdsBuilder_.getMessageOrBuilder(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.Protos.OfferIDOrBuilder> 
+             getInverseOfferIdsOrBuilderList() {
+          if (inverseOfferIdsBuilder_ != null) {
+            return inverseOfferIdsBuilder_.getMessageOrBuilderList();
+          } else {
+            return java.util.Collections.unmodifiableList(inverseOfferIds_);
+          }
+        }
+        /**
+         * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+         */
+        public org.apache.mesos.Protos.OfferID.Builder addInverseOfferIdsBuilder() {
+          return getInverseOfferIdsFieldBuilder().addBuilder(
+              org.apache.mesos.Protos.OfferID.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+         */
+        public org.apache.mesos.Protos.OfferID.Builder addInverseOfferIdsBuilder(
+            int index) {
+          return getInverseOfferIdsFieldBuilder().addBuilder(
+              index, org.apache.mesos.Protos.OfferID.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.Protos.OfferID.Builder> 
+             getInverseOfferIdsBuilderList() {
+          return getInverseOfferIdsFieldBuilder().getBuilderList();
+        }
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.Protos.OfferID, org.apache.mesos.Protos.OfferID.Builder, org.apache.mesos.Protos.OfferIDOrBuilder> 
+            getInverseOfferIdsFieldBuilder() {
+          if (inverseOfferIdsBuilder_ == null) {
+            inverseOfferIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.Protos.OfferID, org.apache.mesos.Protos.OfferID.Builder, org.apache.mesos.Protos.OfferIDOrBuilder>(
+                    inverseOfferIds_,
+                    ((bitField0_ & 0x00000001) == 0x00000001),
+                    getParentForChildren(),
+                    isClean());
+            inverseOfferIds_ = null;
+          }
+          return inverseOfferIdsBuilder_;
+        }
+
+        // optional .mesos.Filters filters = 2;
+        private org.apache.mesos.Protos.Filters filters_ = org.apache.mesos.Protos.Filters.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Filters, org.apache.mesos.Protos.Filters.Builder, org.apache.mesos.Protos.FiltersOrBuilder> filtersBuilder_;
+        /**
+         * <code>optional .mesos.Filters filters = 2;</code>
+         */
+        public boolean hasFilters() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional .mesos.Filters filters = 2;</code>
+         */
+        public org.apache.mesos.Protos.Filters getFilters() {
+          if (filtersBuilder_ == null) {
+            return filters_;
+          } else {
+            return filtersBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.Filters filters = 2;</code>
+         */
+        public Builder setFilters(org.apache.mesos.Protos.Filters value) {
+          if (filtersBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            filters_ = value;
+            onChanged();
+          } else {
+            filtersBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Filters filters = 2;</code>
+         */
+        public Builder setFilters(
+            org.apache.mesos.Protos.Filters.Builder builderForValue) {
+          if (filtersBuilder_ == null) {
+            filters_ = builderForValue.build();
+            onChanged();
+          } else {
+            filtersBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Filters filters = 2;</code>
+         */
+        public Builder mergeFilters(org.apache.mesos.Protos.Filters value) {
+          if (filtersBuilder_ == null) {
+            if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                filters_ != org.apache.mesos.Protos.Filters.getDefaultInstance()) {
+              filters_ =
+                org.apache.mesos.Protos.Filters.newBuilder(filters_).mergeFrom(value).buildPartial();
+            } else {
+              filters_ = value;
+            }
+            onChanged();
+          } else {
+            filtersBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Filters filters = 2;</code>
+         */
+        public Builder clearFilters() {
+          if (filtersBuilder_ == null) {
+            filters_ = org.apache.mesos.Protos.Filters.getDefaultInstance();
+            onChanged();
+          } else {
+            filtersBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Filters filters = 2;</code>
+         */
+        public org.apache.mesos.Protos.Filters.Builder getFiltersBuilder() {
+          bitField0_ |= 0x00000002;
+          onChanged();
+          return getFiltersFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.Filters filters = 2;</code>
+         */
+        public org.apache.mesos.Protos.FiltersOrBuilder getFiltersOrBuilder() {
+          if (filtersBuilder_ != null) {
+            return filtersBuilder_.getMessageOrBuilder();
+          } else {
+            return filters_;
+          }
+        }
+        /**
+         * <code>optional .mesos.Filters filters = 2;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Filters, org.apache.mesos.Protos.Filters.Builder, org.apache.mesos.Protos.FiltersOrBuilder> 
+            getFiltersFieldBuilder() {
+          if (filtersBuilder_ == null) {
+            filtersBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.Filters, org.apache.mesos.Protos.Filters.Builder, org.apache.mesos.Protos.FiltersOrBuilder>(
+                    filters_,
+                    getParentForChildren(),
+                    isClean());
+            filters_ = null;
+          }
+          return filtersBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.scheduler.Call.AcceptInverseOffers)
+      }
+
+      static {
+        defaultInstance = new AcceptInverseOffers(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.scheduler.Call.AcceptInverseOffers)
+    }
+
+    public interface DeclineInverseOffersOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // repeated .mesos.OfferID inverse_offer_ids = 1;
+      /**
+       * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+       */
+      java.util.List<org.apache.mesos.Protos.OfferID> 
+          getInverseOfferIdsList();
+      /**
+       * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+       */
+      org.apache.mesos.Protos.OfferID getInverseOfferIds(int index);
+      /**
+       * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+       */
+      int getInverseOfferIdsCount();
+      /**
+       * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+       */
+      java.util.List<? extends org.apache.mesos.Protos.OfferIDOrBuilder> 
+          getInverseOfferIdsOrBuilderList();
+      /**
+       * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+       */
+      org.apache.mesos.Protos.OfferIDOrBuilder getInverseOfferIdsOrBuilder(
+          int index);
+
+      // optional .mesos.Filters filters = 2;
+      /**
+       * <code>optional .mesos.Filters filters = 2;</code>
+       */
+      boolean hasFilters();
+      /**
+       * <code>optional .mesos.Filters filters = 2;</code>
+       */
+      org.apache.mesos.Protos.Filters getFilters();
+      /**
+       * <code>optional .mesos.Filters filters = 2;</code>
+       */
+      org.apache.mesos.Protos.FiltersOrBuilder getFiltersOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.scheduler.Call.DeclineInverseOffers}
+     *
+     * <pre>
+     * Declines an inverse offer. Inverse offers should be declined if
+     * the resources in the offer might not be safely evacuated before
+     * the provided unavailability.
+     * </pre>
+     */
+    public static final class DeclineInverseOffers extends
+        com.google.protobuf.GeneratedMessage
+        implements DeclineInverseOffersOrBuilder {
+      // Use DeclineInverseOffers.newBuilder() to construct.
+      private DeclineInverseOffers(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private DeclineInverseOffers(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final DeclineInverseOffers defaultInstance;
+      public static DeclineInverseOffers getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public DeclineInverseOffers getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private DeclineInverseOffers(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                  inverseOfferIds_ = new java.util.ArrayList<org.apache.mesos.Protos.OfferID>();
+                  mutable_bitField0_ |= 0x00000001;
+                }
+                inverseOfferIds_.add(input.readMessage(org.apache.mesos.Protos.OfferID.PARSER, extensionRegistry));
+                break;
+              }
+              case 18: {
+                org.apache.mesos.Protos.Filters.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = filters_.toBuilder();
+                }
+                filters_ = input.readMessage(org.apache.mesos.Protos.Filters.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(filters_);
+                  filters_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+            inverseOfferIds_ = java.util.Collections.unmodifiableList(inverseOfferIds_);
+          }
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_DeclineInverseOffers_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_DeclineInverseOffers_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers.class, org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<DeclineInverseOffers> PARSER =
+          new com.google.protobuf.AbstractParser<DeclineInverseOffers>() {
+        public DeclineInverseOffers parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new DeclineInverseOffers(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<DeclineInverseOffers> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // repeated .mesos.OfferID inverse_offer_ids = 1;
+      public static final int INVERSE_OFFER_IDS_FIELD_NUMBER = 1;
+      private java.util.List<org.apache.mesos.Protos.OfferID> inverseOfferIds_;
+      /**
+       * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.OfferID> getInverseOfferIdsList() {
+        return inverseOfferIds_;
+      }
+      /**
+       * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.OfferIDOrBuilder> 
+          getInverseOfferIdsOrBuilderList() {
+        return inverseOfferIds_;
+      }
+      /**
+       * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+       */
+      public int getInverseOfferIdsCount() {
+        return inverseOfferIds_.size();
+      }
+      /**
+       * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+       */
+      public org.apache.mesos.Protos.OfferID getInverseOfferIds(int index) {
+        return inverseOfferIds_.get(index);
+      }
+      /**
+       * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+       */
+      public org.apache.mesos.Protos.OfferIDOrBuilder getInverseOfferIdsOrBuilder(
+          int index) {
+        return inverseOfferIds_.get(index);
+      }
+
+      // optional .mesos.Filters filters = 2;
+      public static final int FILTERS_FIELD_NUMBER = 2;
+      private org.apache.mesos.Protos.Filters filters_;
+      /**
+       * <code>optional .mesos.Filters filters = 2;</code>
+       */
+      public boolean hasFilters() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.Filters filters = 2;</code>
+       */
+      public org.apache.mesos.Protos.Filters getFilters() {
+        return filters_;
+      }
+      /**
+       * <code>optional .mesos.Filters filters = 2;</code>
+       */
+      public org.apache.mesos.Protos.FiltersOrBuilder getFiltersOrBuilder() {
+        return filters_;
+      }
+
+      private void initFields() {
+        inverseOfferIds_ = java.util.Collections.emptyList();
+        filters_ = org.apache.mesos.Protos.Filters.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        for (int i = 0; i < getInverseOfferIdsCount(); i++) {
+          if (!getInverseOfferIds(i).isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        for (int i = 0; i < inverseOfferIds_.size(); i++) {
+          output.writeMessage(1, inverseOfferIds_.get(i));
+        }
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(2, filters_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        for (int i = 0; i < inverseOfferIds_.size(); i++) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, inverseOfferIds_.get(i));
+        }
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(2, filters_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.scheduler.Call.DeclineInverseOffers}
+       *
+       * <pre>
+       * Declines an inverse offer. Inverse offers should be declined if
+       * the resources in the offer might not be safely evacuated before
+       * the provided unavailability.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffersOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_DeclineInverseOffers_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_DeclineInverseOffers_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers.class, org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getInverseOfferIdsFieldBuilder();
+            getFiltersFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (inverseOfferIdsBuilder_ == null) {
+            inverseOfferIds_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000001);
+          } else {
+            inverseOfferIdsBuilder_.clear();
+          }
+          if (filtersBuilder_ == null) {
+            filters_ = org.apache.mesos.Protos.Filters.getDefaultInstance();
+          } else {
+            filtersBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_DeclineInverseOffers_descriptor;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers getDefaultInstanceForType() {
+          return org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers.getDefaultInstance();
+        }
+
+        public org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers build() {
+          org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers buildPartial() {
+          org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers result = new org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (inverseOfferIdsBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              inverseOfferIds_ = java.util.Collections.unmodifiableList(inverseOfferIds_);
+              bitField0_ = (bitField0_ & ~0x00000001);
+            }
+            result.inverseOfferIds_ = inverseOfferIds_;
+          } else {
+            result.inverseOfferIds_ = inverseOfferIdsBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (filtersBuilder_ == null) {
+            result.filters_ = filters_;
+          } else {
+            result.filters_ = filtersBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers) {
+            return mergeFrom((org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers other) {
+          if (other == org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers.getDefaultInstance()) return this;
+          if (inverseOfferIdsBuilder_ == null) {
+            if (!other.inverseOfferIds_.isEmpty()) {
+              if (inverseOfferIds_.isEmpty()) {
+                inverseOfferIds_ = other.inverseOfferIds_;
+                bitField0_ = (bitField0_ & ~0x00000001);
+              } else {
+                ensureInverseOfferIdsIsMutable();
+                inverseOfferIds_.addAll(other.inverseOfferIds_);
+              }
+              onChanged();
+            }
+          } else {
+            if (!other.inverseOfferIds_.isEmpty()) {
+              if (inverseOfferIdsBuilder_.isEmpty()) {
+                inverseOfferIdsBuilder_.dispose();
+                inverseOfferIdsBuilder_ = null;
+                inverseOfferIds_ = other.inverseOfferIds_;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                inverseOfferIdsBuilder_ = 
+                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                     getInverseOfferIdsFieldBuilder() : null;
+              } else {
+                inverseOfferIdsBuilder_.addAllMessages(other.inverseOfferIds_);
+              }
+            }
+          }
+          if (other.hasFilters()) {
+            mergeFilters(other.getFilters());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          for (int i = 0; i < getInverseOfferIdsCount(); i++) {
+            if (!getInverseOfferIds(i).isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // repeated .mesos.OfferID inverse_offer_ids = 1;
+        private java.util.List<org.apache.mesos.Protos.OfferID> inverseOfferIds_ =
+          java.util.Collections.emptyList();
+        private void ensureInverseOfferIdsIsMutable() {
+          if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+            inverseOfferIds_ = new java.util.ArrayList<org.apache.mesos.Protos.OfferID>(inverseOfferIds_);
+            bitField0_ |= 0x00000001;
+           }
+        }
+
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.Protos.OfferID, org.apache.mesos.Protos.OfferID.Builder, org.apache.mesos.Protos.OfferIDOrBuilder> inverseOfferIdsBuilder_;
+
+        /**
+         * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.Protos.OfferID> getInverseOfferIdsList() {
+          if (inverseOfferIdsBuilder_ == null) {
+            return java.util.Collections.unmodifiableList(inverseOfferIds_);
+          } else {
+            return inverseOfferIdsBuilder_.getMessageList();
+          }
+        }
+        /**
+         * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+         */
+        public int getInverseOfferIdsCount() {
+          if (inverseOfferIdsBuilder_ == null) {
+            return inverseOfferIds_.size();
+          } else {
+            return inverseOfferIdsBuilder_.getCount();
+          }
+        }
+        /**
+         * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+         */
+        public org.apache.mesos.Protos.OfferID getInverseOfferIds(int index) {
+          if (inverseOfferIdsBuilder_ == null) {
+            return inverseOfferIds_.get(index);
+          } else {
+            return inverseOfferIdsBuilder_.getMessage(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+         */
+        public Builder setInverseOfferIds(
+            int index, org.apache.mesos.Protos.OfferID value) {
+          if (inverseOfferIdsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureInverseOfferIdsIsMutable();
+            inverseOfferIds_.set(index, value);
+            onChanged();
+          } else {
+            inverseOfferIdsBuilder_.setMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+         */
+        public Builder setInverseOfferIds(
+            int index, org.apache.mesos.Protos.OfferID.Builder builderForValue) {
+          if (inverseOfferIdsBuilder_ == null) {
+            ensureInverseOfferIdsIsMutable();
+            inverseOfferIds_.set(index, builderForValue.build());
+            onChanged();
+          } else {
+            inverseOfferIdsBuilder_.setMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+         */
+        public Builder addInverseOfferIds(org.apache.mesos.Protos.OfferID value) {
+          if (inverseOfferIdsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureInverseOfferIdsIsMutable();
+            inverseOfferIds_.add(value);
+            onChanged();
+          } else {
+            inverseOfferIdsBuilder_.addMessage(value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+         */
+        public Builder addInverseOfferIds(
+            int index, org.apache.mesos.Protos.OfferID value) {
+          if (inverseOfferIdsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureInverseOfferIdsIsMutable();
+            inverseOfferIds_.add(index, value);
+            onChanged();
+          } else {
+            inverseOfferIdsBuilder_.addMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+         */
+        public Builder addInverseOfferIds(
+            org.apache.mesos.Protos.OfferID.Builder builderForValue) {
+          if (inverseOfferIdsBuilder_ == null) {
+            ensureInverseOfferIdsIsMutable();
+            inverseOfferIds_.add(builderForValue.build());
+            onChanged();
+          } else {
+            inverseOfferIdsBuilder_.addMessage(builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+         */
+        public Builder addInverseOfferIds(
+            int index, org.apache.mesos.Protos.OfferID.Builder builderForValue) {
+          if (inverseOfferIdsBuilder_ == null) {
+            ensureInverseOfferIdsIsMutable();
+            inverseOfferIds_.add(index, builderForValue.build());
+            onChanged();
+          } else {
+            inverseOfferIdsBuilder_.addMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+         */
+        public Builder addAllInverseOfferIds(
+            java.lang.Iterable<? extends org.apache.mesos.Protos.OfferID> values) {
+          if (inverseOfferIdsBuilder_ == null) {
+            ensureInverseOfferIdsIsMutable();
+            super.addAll(values, inverseOfferIds_);
+            onChanged();
+          } else {
+            inverseOfferIdsBuilder_.addAllMessages(values);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+         */
+        public Builder clearInverseOfferIds() {
+          if (inverseOfferIdsBuilder_ == null) {
+            inverseOfferIds_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000001);
+            onChanged();
+          } else {
+            inverseOfferIdsBuilder_.clear();
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+         */
+        public Builder removeInverseOfferIds(int index) {
+          if (inverseOfferIdsBuilder_ == null) {
+            ensureInverseOfferIdsIsMutable();
+            inverseOfferIds_.remove(index);
+            onChanged();
+          } else {
+            inverseOfferIdsBuilder_.remove(index);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+         */
+        public org.apache.mesos.Protos.OfferID.Builder getInverseOfferIdsBuilder(
+            int index) {
+          return getInverseOfferIdsFieldBuilder().getBuilder(index);
+        }
+        /**
+         * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+         */
+        public org.apache.mesos.Protos.OfferIDOrBuilder getInverseOfferIdsOrBuilder(
+            int index) {
+          if (inverseOfferIdsBuilder_ == null) {
+            return inverseOfferIds_.get(index);  } else {
+            return inverseOfferIdsBuilder_.getMessageOrBuilder(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.Protos.OfferIDOrBuilder> 
+             getInverseOfferIdsOrBuilderList() {
+          if (inverseOfferIdsBuilder_ != null) {
+            return inverseOfferIdsBuilder_.getMessageOrBuilderList();
+          } else {
+            return java.util.Collections.unmodifiableList(inverseOfferIds_);
+          }
+        }
+        /**
+         * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+         */
+        public org.apache.mesos.Protos.OfferID.Builder addInverseOfferIdsBuilder() {
+          return getInverseOfferIdsFieldBuilder().addBuilder(
+              org.apache.mesos.Protos.OfferID.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+         */
+        public org.apache.mesos.Protos.OfferID.Builder addInverseOfferIdsBuilder(
+            int index) {
+          return getInverseOfferIdsFieldBuilder().addBuilder(
+              index, org.apache.mesos.Protos.OfferID.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.OfferID inverse_offer_ids = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.Protos.OfferID.Builder> 
+             getInverseOfferIdsBuilderList() {
+          return getInverseOfferIdsFieldBuilder().getBuilderList();
+        }
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.Protos.OfferID, org.apache.mesos.Protos.OfferID.Builder, org.apache.mesos.Protos.OfferIDOrBuilder> 
+            getInverseOfferIdsFieldBuilder() {
+          if (inverseOfferIdsBuilder_ == null) {
+            inverseOfferIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.Protos.OfferID, org.apache.mesos.Protos.OfferID.Builder, org.apache.mesos.Protos.OfferIDOrBuilder>(
+                    inverseOfferIds_,
+                    ((bitField0_ & 0x00000001) == 0x00000001),
+                    getParentForChildren(),
+                    isClean());
+            inverseOfferIds_ = null;
+          }
+          return inverseOfferIdsBuilder_;
+        }
+
+        // optional .mesos.Filters filters = 2;
+        private org.apache.mesos.Protos.Filters filters_ = org.apache.mesos.Protos.Filters.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Filters, org.apache.mesos.Protos.Filters.Builder, org.apache.mesos.Protos.FiltersOrBuilder> filtersBuilder_;
+        /**
+         * <code>optional .mesos.Filters filters = 2;</code>
+         */
+        public boolean hasFilters() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional .mesos.Filters filters = 2;</code>
+         */
+        public org.apache.mesos.Protos.Filters getFilters() {
+          if (filtersBuilder_ == null) {
+            return filters_;
+          } else {
+            return filtersBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.Filters filters = 2;</code>
+         */
+        public Builder setFilters(org.apache.mesos.Protos.Filters value) {
+          if (filtersBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            filters_ = value;
+            onChanged();
+          } else {
+            filtersBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Filters filters = 2;</code>
+         */
+        public Builder setFilters(
+            org.apache.mesos.Protos.Filters.Builder builderForValue) {
+          if (filtersBuilder_ == null) {
+            filters_ = builderForValue.build();
+            onChanged();
+          } else {
+            filtersBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Filters filters = 2;</code>
+         */
+        public Builder mergeFilters(org.apache.mesos.Protos.Filters value) {
+          if (filtersBuilder_ == null) {
+            if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                filters_ != org.apache.mesos.Protos.Filters.getDefaultInstance()) {
+              filters_ =
+                org.apache.mesos.Protos.Filters.newBuilder(filters_).mergeFrom(value).buildPartial();
+            } else {
+              filters_ = value;
+            }
+            onChanged();
+          } else {
+            filtersBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Filters filters = 2;</code>
+         */
+        public Builder clearFilters() {
+          if (filtersBuilder_ == null) {
+            filters_ = org.apache.mesos.Protos.Filters.getDefaultInstance();
+            onChanged();
+          } else {
+            filtersBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.Filters filters = 2;</code>
+         */
+        public org.apache.mesos.Protos.Filters.Builder getFiltersBuilder() {
+          bitField0_ |= 0x00000002;
+          onChanged();
+          return getFiltersFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.Filters filters = 2;</code>
+         */
+        public org.apache.mesos.Protos.FiltersOrBuilder getFiltersOrBuilder() {
+          if (filtersBuilder_ != null) {
+            return filtersBuilder_.getMessageOrBuilder();
+          } else {
+            return filters_;
+          }
+        }
+        /**
+         * <code>optional .mesos.Filters filters = 2;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.Filters, org.apache.mesos.Protos.Filters.Builder, org.apache.mesos.Protos.FiltersOrBuilder> 
+            getFiltersFieldBuilder() {
+          if (filtersBuilder_ == null) {
+            filtersBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.Filters, org.apache.mesos.Protos.Filters.Builder, org.apache.mesos.Protos.FiltersOrBuilder>(
+                    filters_,
+                    getParentForChildren(),
+                    isClean());
+            filters_ = null;
+          }
+          return filtersBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.scheduler.Call.DeclineInverseOffers)
+      }
+
+      static {
+        defaultInstance = new DeclineInverseOffers(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.scheduler.Call.DeclineInverseOffers)
+    }
+
+    public interface ReviveOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // repeated string roles = 1;
+      /**
+       * <code>repeated string roles = 1;</code>
+       */
+      java.util.List<java.lang.String>
+      getRolesList();
+      /**
+       * <code>repeated string roles = 1;</code>
+       */
+      int getRolesCount();
+      /**
+       * <code>repeated string roles = 1;</code>
+       */
+      java.lang.String getRoles(int index);
+      /**
+       * <code>repeated string roles = 1;</code>
+       */
+      com.google.protobuf.ByteString
+          getRolesBytes(int index);
+    }
+    /**
+     * Protobuf type {@code mesos.scheduler.Call.Revive}
+     *
+     * <pre>
+     * Revive offers for the specified roles. If `roles` is empty,
+     * the `REVIVE` call will revive offers for all of the roles
+     * the framework is currently subscribed to.
+     * </pre>
+     */
+    public static final class Revive extends
+        com.google.protobuf.GeneratedMessage
+        implements ReviveOrBuilder {
+      // Use Revive.newBuilder() to construct.
+      private Revive(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Revive(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Revive defaultInstance;
+      public static Revive getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Revive getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Revive(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                  roles_ = new com.google.protobuf.LazyStringArrayList();
+                  mutable_bitField0_ |= 0x00000001;
+                }
+                roles_.add(input.readBytes());
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+            roles_ = new com.google.protobuf.UnmodifiableLazyStringList(roles_);
+          }
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Revive_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Revive_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.scheduler.Protos.Call.Revive.class, org.apache.mesos.scheduler.Protos.Call.Revive.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Revive> PARSER =
+          new com.google.protobuf.AbstractParser<Revive>() {
+        public Revive parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Revive(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Revive> getParserForType() {
+        return PARSER;
+      }
+
+      // repeated string roles = 1;
+      public static final int ROLES_FIELD_NUMBER = 1;
+      private com.google.protobuf.LazyStringList roles_;
+      /**
+       * <code>repeated string roles = 1;</code>
+       */
+      public java.util.List<java.lang.String>
+          getRolesList() {
+        return roles_;
+      }
+      /**
+       * <code>repeated string roles = 1;</code>
+       */
+      public int getRolesCount() {
+        return roles_.size();
+      }
+      /**
+       * <code>repeated string roles = 1;</code>
+       */
+      public java.lang.String getRoles(int index) {
+        return roles_.get(index);
+      }
+      /**
+       * <code>repeated string roles = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getRolesBytes(int index) {
+        return roles_.getByteString(index);
+      }
+
+      private void initFields() {
+        roles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        for (int i = 0; i < roles_.size(); i++) {
+          output.writeBytes(1, roles_.getByteString(i));
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        {
+          int dataSize = 0;
+          for (int i = 0; i < roles_.size(); i++) {
+            dataSize += com.google.protobuf.CodedOutputStream
+              .computeBytesSizeNoTag(roles_.getByteString(i));
+          }
+          size += dataSize;
+          size += 1 * getRolesList().size();
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.scheduler.Protos.Call.Revive parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Revive parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Revive parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Revive parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Revive parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Revive parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Revive parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Revive parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Revive parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Revive parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.scheduler.Protos.Call.Revive prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.scheduler.Call.Revive}
+       *
+       * <pre>
+       * Revive offers for the specified roles. If `roles` is empty,
+       * the `REVIVE` call will revive offers for all of the roles
+       * the framework is currently subscribed to.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.scheduler.Protos.Call.ReviveOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Revive_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Revive_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.scheduler.Protos.Call.Revive.class, org.apache.mesos.scheduler.Protos.Call.Revive.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.scheduler.Protos.Call.Revive.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          roles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Revive_descriptor;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Call.Revive getDefaultInstanceForType() {
+          return org.apache.mesos.scheduler.Protos.Call.Revive.getDefaultInstance();
+        }
+
+        public org.apache.mesos.scheduler.Protos.Call.Revive build() {
+          org.apache.mesos.scheduler.Protos.Call.Revive result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Call.Revive buildPartial() {
+          org.apache.mesos.scheduler.Protos.Call.Revive result = new org.apache.mesos.scheduler.Protos.Call.Revive(this);
+          int from_bitField0_ = bitField0_;
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            roles_ = new com.google.protobuf.UnmodifiableLazyStringList(
+                roles_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.roles_ = roles_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.scheduler.Protos.Call.Revive) {
+            return mergeFrom((org.apache.mesos.scheduler.Protos.Call.Revive)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.scheduler.Protos.Call.Revive other) {
+          if (other == org.apache.mesos.scheduler.Protos.Call.Revive.getDefaultInstance()) return this;
+          if (!other.roles_.isEmpty()) {
+            if (roles_.isEmpty()) {
+              roles_ = other.roles_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureRolesIsMutable();
+              roles_.addAll(other.roles_);
+            }
+            onChanged();
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.scheduler.Protos.Call.Revive parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.scheduler.Protos.Call.Revive) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // repeated string roles = 1;
+        private com.google.protobuf.LazyStringList roles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+        private void ensureRolesIsMutable() {
+          if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+            roles_ = new com.google.protobuf.LazyStringArrayList(roles_);
+            bitField0_ |= 0x00000001;
+           }
+        }
+        /**
+         * <code>repeated string roles = 1;</code>
+         */
+        public java.util.List<java.lang.String>
+            getRolesList() {
+          return java.util.Collections.unmodifiableList(roles_);
+        }
+        /**
+         * <code>repeated string roles = 1;</code>
+         */
+        public int getRolesCount() {
+          return roles_.size();
+        }
+        /**
+         * <code>repeated string roles = 1;</code>
+         */
+        public java.lang.String getRoles(int index) {
+          return roles_.get(index);
+        }
+        /**
+         * <code>repeated string roles = 1;</code>
+         */
+        public com.google.protobuf.ByteString
+            getRolesBytes(int index) {
+          return roles_.getByteString(index);
+        }
+        /**
+         * <code>repeated string roles = 1;</code>
+         */
+        public Builder setRoles(
+            int index, java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureRolesIsMutable();
+          roles_.set(index, value);
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>repeated string roles = 1;</code>
+         */
+        public Builder addRoles(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureRolesIsMutable();
+          roles_.add(value);
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>repeated string roles = 1;</code>
+         */
+        public Builder addAllRoles(
+            java.lang.Iterable<java.lang.String> values) {
+          ensureRolesIsMutable();
+          super.addAll(values, roles_);
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>repeated string roles = 1;</code>
+         */
+        public Builder clearRoles() {
+          roles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>repeated string roles = 1;</code>
+         */
+        public Builder addRolesBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureRolesIsMutable();
+          roles_.add(value);
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.scheduler.Call.Revive)
+      }
+
+      static {
+        defaultInstance = new Revive(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.scheduler.Call.Revive)
+    }
+
+    public interface KillOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required .mesos.TaskID task_id = 1;
+      /**
+       * <code>required .mesos.TaskID task_id = 1;</code>
+       */
+      boolean hasTaskId();
+      /**
+       * <code>required .mesos.TaskID task_id = 1;</code>
+       */
+      org.apache.mesos.Protos.TaskID getTaskId();
+      /**
+       * <code>required .mesos.TaskID task_id = 1;</code>
+       */
+      org.apache.mesos.Protos.TaskIDOrBuilder getTaskIdOrBuilder();
+
+      // optional .mesos.SlaveID slave_id = 2;
+      /**
+       * <code>optional .mesos.SlaveID slave_id = 2;</code>
+       */
+      boolean hasSlaveId();
+      /**
+       * <code>optional .mesos.SlaveID slave_id = 2;</code>
+       */
+      org.apache.mesos.Protos.SlaveID getSlaveId();
+      /**
+       * <code>optional .mesos.SlaveID slave_id = 2;</code>
+       */
+      org.apache.mesos.Protos.SlaveIDOrBuilder getSlaveIdOrBuilder();
+
+      // optional .mesos.KillPolicy kill_policy = 3;
+      /**
+       * <code>optional .mesos.KillPolicy kill_policy = 3;</code>
+       *
+       * <pre>
+       * If set, overrides any previously specified kill policy for this task.
+       * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+       * Can be used to forcefully kill a task which is already being killed.
+       * </pre>
+       */
+      boolean hasKillPolicy();
+      /**
+       * <code>optional .mesos.KillPolicy kill_policy = 3;</code>
+       *
+       * <pre>
+       * If set, overrides any previously specified kill policy for this task.
+       * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+       * Can be used to forcefully kill a task which is already being killed.
+       * </pre>
+       */
+      org.apache.mesos.Protos.KillPolicy getKillPolicy();
+      /**
+       * <code>optional .mesos.KillPolicy kill_policy = 3;</code>
+       *
+       * <pre>
+       * If set, overrides any previously specified kill policy for this task.
+       * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+       * Can be used to forcefully kill a task which is already being killed.
+       * </pre>
+       */
+      org.apache.mesos.Protos.KillPolicyOrBuilder getKillPolicyOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.scheduler.Call.Kill}
+     *
+     * <pre>
+     * Kills a specific task. If the scheduler has a custom executor,
+     * the kill is forwarded to the executor and it is up to the
+     * executor to kill the task and send a TASK_KILLED (or TASK_FAILED)
+     * update. Note that Mesos releases the resources for a task once it
+     * receives a terminal update (See TaskState in mesos.proto) for it.
+     * If the task is unknown to the master, a TASK_LOST update is
+     * generated.
+     *
+     * If a task within a task group is killed before the group is
+     * delivered to the executor, all tasks in the task group are
+     * killed. When a task group has been delivered to the executor,
+     * it is up to the executor to decide how to deal with the kill.
+     * Note The default Mesos executor will currently kill all the
+     * tasks in the task group if it gets a kill for any task.
+     * </pre>
+     */
+    public static final class Kill extends
+        com.google.protobuf.GeneratedMessage
+        implements KillOrBuilder {
+      // Use Kill.newBuilder() to construct.
+      private Kill(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Kill(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Kill defaultInstance;
+      public static Kill getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Kill getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Kill(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.Protos.TaskID.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = taskId_.toBuilder();
+                }
+                taskId_ = input.readMessage(org.apache.mesos.Protos.TaskID.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(taskId_);
+                  taskId_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+              case 18: {
+                org.apache.mesos.Protos.SlaveID.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                  subBuilder = slaveId_.toBuilder();
+                }
+                slaveId_ = input.readMessage(org.apache.mesos.Protos.SlaveID.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(slaveId_);
+                  slaveId_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000002;
+                break;
+              }
+              case 26: {
+                org.apache.mesos.Protos.KillPolicy.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                  subBuilder = killPolicy_.toBuilder();
+                }
+                killPolicy_ = input.readMessage(org.apache.mesos.Protos.KillPolicy.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(killPolicy_);
+                  killPolicy_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000004;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Kill_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Kill_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.scheduler.Protos.Call.Kill.class, org.apache.mesos.scheduler.Protos.Call.Kill.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Kill> PARSER =
+          new com.google.protobuf.AbstractParser<Kill>() {
+        public Kill parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Kill(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Kill> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required .mesos.TaskID task_id = 1;
+      public static final int TASK_ID_FIELD_NUMBER = 1;
+      private org.apache.mesos.Protos.TaskID taskId_;
+      /**
+       * <code>required .mesos.TaskID task_id = 1;</code>
+       */
+      public boolean hasTaskId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.TaskID task_id = 1;</code>
+       */
+      public org.apache.mesos.Protos.TaskID getTaskId() {
+        return taskId_;
+      }
+      /**
+       * <code>required .mesos.TaskID task_id = 1;</code>
+       */
+      public org.apache.mesos.Protos.TaskIDOrBuilder getTaskIdOrBuilder() {
+        return taskId_;
+      }
+
+      // optional .mesos.SlaveID slave_id = 2;
+      public static final int SLAVE_ID_FIELD_NUMBER = 2;
+      private org.apache.mesos.Protos.SlaveID slaveId_;
+      /**
+       * <code>optional .mesos.SlaveID slave_id = 2;</code>
+       */
+      public boolean hasSlaveId() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.SlaveID slave_id = 2;</code>
+       */
+      public org.apache.mesos.Protos.SlaveID getSlaveId() {
+        return slaveId_;
+      }
+      /**
+       * <code>optional .mesos.SlaveID slave_id = 2;</code>
+       */
+      public org.apache.mesos.Protos.SlaveIDOrBuilder getSlaveIdOrBuilder() {
+        return slaveId_;
+      }
+
+      // optional .mesos.KillPolicy kill_policy = 3;
+      public static final int KILL_POLICY_FIELD_NUMBER = 3;
+      private org.apache.mesos.Protos.KillPolicy killPolicy_;
+      /**
+       * <code>optional .mesos.KillPolicy kill_policy = 3;</code>
+       *
+       * <pre>
+       * If set, overrides any previously specified kill policy for this task.
+       * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+       * Can be used to forcefully kill a task which is already being killed.
+       * </pre>
+       */
+      public boolean hasKillPolicy() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.KillPolicy kill_policy = 3;</code>
+       *
+       * <pre>
+       * If set, overrides any previously specified kill policy for this task.
+       * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+       * Can be used to forcefully kill a task which is already being killed.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.KillPolicy getKillPolicy() {
+        return killPolicy_;
+      }
+      /**
+       * <code>optional .mesos.KillPolicy kill_policy = 3;</code>
+       *
+       * <pre>
+       * If set, overrides any previously specified kill policy for this task.
+       * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+       * Can be used to forcefully kill a task which is already being killed.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.KillPolicyOrBuilder getKillPolicyOrBuilder() {
+        return killPolicy_;
+      }
+
+      private void initFields() {
+        taskId_ = org.apache.mesos.Protos.TaskID.getDefaultInstance();
+        slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+        killPolicy_ = org.apache.mesos.Protos.KillPolicy.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasTaskId()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getTaskId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (hasSlaveId()) {
+          if (!getSlaveId().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        if (hasKillPolicy()) {
+          if (!getKillPolicy().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, taskId_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeMessage(2, slaveId_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeMessage(3, killPolicy_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, taskId_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(2, slaveId_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(3, killPolicy_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.scheduler.Protos.Call.Kill parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Kill parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Kill parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Kill parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Kill parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Kill parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Kill parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Kill parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Kill parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Kill parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.scheduler.Protos.Call.Kill prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.scheduler.Call.Kill}
+       *
+       * <pre>
+       * Kills a specific task. If the scheduler has a custom executor,
+       * the kill is forwarded to the executor and it is up to the
+       * executor to kill the task and send a TASK_KILLED (or TASK_FAILED)
+       * update. Note that Mesos releases the resources for a task once it
+       * receives a terminal update (See TaskState in mesos.proto) for it.
+       * If the task is unknown to the master, a TASK_LOST update is
+       * generated.
+       *
+       * If a task within a task group is killed before the group is
+       * delivered to the executor, all tasks in the task group are
+       * killed. When a task group has been delivered to the executor,
+       * it is up to the executor to decide how to deal with the kill.
+       * Note The default Mesos executor will currently kill all the
+       * tasks in the task group if it gets a kill for any task.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.scheduler.Protos.Call.KillOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Kill_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Kill_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.scheduler.Protos.Call.Kill.class, org.apache.mesos.scheduler.Protos.Call.Kill.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.scheduler.Protos.Call.Kill.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getTaskIdFieldBuilder();
+            getSlaveIdFieldBuilder();
+            getKillPolicyFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (taskIdBuilder_ == null) {
+            taskId_ = org.apache.mesos.Protos.TaskID.getDefaultInstance();
+          } else {
+            taskIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          if (slaveIdBuilder_ == null) {
+            slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+          } else {
+            slaveIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          if (killPolicyBuilder_ == null) {
+            killPolicy_ = org.apache.mesos.Protos.KillPolicy.getDefaultInstance();
+          } else {
+            killPolicyBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Kill_descriptor;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Call.Kill getDefaultInstanceForType() {
+          return org.apache.mesos.scheduler.Protos.Call.Kill.getDefaultInstance();
+        }
+
+        public org.apache.mesos.scheduler.Protos.Call.Kill build() {
+          org.apache.mesos.scheduler.Protos.Call.Kill result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Call.Kill buildPartial() {
+          org.apache.mesos.scheduler.Protos.Call.Kill result = new org.apache.mesos.scheduler.Protos.Call.Kill(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (taskIdBuilder_ == null) {
+            result.taskId_ = taskId_;
+          } else {
+            result.taskId_ = taskIdBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          if (slaveIdBuilder_ == null) {
+            result.slaveId_ = slaveId_;
+          } else {
+            result.slaveId_ = slaveIdBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          if (killPolicyBuilder_ == null) {
+            result.killPolicy_ = killPolicy_;
+          } else {
+            result.killPolicy_ = killPolicyBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.scheduler.Protos.Call.Kill) {
+            return mergeFrom((org.apache.mesos.scheduler.Protos.Call.Kill)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.scheduler.Protos.Call.Kill other) {
+          if (other == org.apache.mesos.scheduler.Protos.Call.Kill.getDefaultInstance()) return this;
+          if (other.hasTaskId()) {
+            mergeTaskId(other.getTaskId());
+          }
+          if (other.hasSlaveId()) {
+            mergeSlaveId(other.getSlaveId());
+          }
+          if (other.hasKillPolicy()) {
+            mergeKillPolicy(other.getKillPolicy());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasTaskId()) {
+            
+            return false;
+          }
+          if (!getTaskId().isInitialized()) {
+            
+            return false;
+          }
+          if (hasSlaveId()) {
+            if (!getSlaveId().isInitialized()) {
+              
+              return false;
+            }
+          }
+          if (hasKillPolicy()) {
+            if (!getKillPolicy().isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.scheduler.Protos.Call.Kill parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.scheduler.Protos.Call.Kill) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required .mesos.TaskID task_id = 1;
+        private org.apache.mesos.Protos.TaskID taskId_ = org.apache.mesos.Protos.TaskID.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.TaskID, org.apache.mesos.Protos.TaskID.Builder, org.apache.mesos.Protos.TaskIDOrBuilder> taskIdBuilder_;
+        /**
+         * <code>required .mesos.TaskID task_id = 1;</code>
+         */
+        public boolean hasTaskId() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.TaskID task_id = 1;</code>
+         */
+        public org.apache.mesos.Protos.TaskID getTaskId() {
+          if (taskIdBuilder_ == null) {
+            return taskId_;
+          } else {
+            return taskIdBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.TaskID task_id = 1;</code>
+         */
+        public Builder setTaskId(org.apache.mesos.Protos.TaskID value) {
+          if (taskIdBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            taskId_ = value;
+            onChanged();
+          } else {
+            taskIdBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.TaskID task_id = 1;</code>
+         */
+        public Builder setTaskId(
+            org.apache.mesos.Protos.TaskID.Builder builderForValue) {
+          if (taskIdBuilder_ == null) {
+            taskId_ = builderForValue.build();
+            onChanged();
+          } else {
+            taskIdBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.TaskID task_id = 1;</code>
+         */
+        public Builder mergeTaskId(org.apache.mesos.Protos.TaskID value) {
+          if (taskIdBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                taskId_ != org.apache.mesos.Protos.TaskID.getDefaultInstance()) {
+              taskId_ =
+                org.apache.mesos.Protos.TaskID.newBuilder(taskId_).mergeFrom(value).buildPartial();
+            } else {
+              taskId_ = value;
+            }
+            onChanged();
+          } else {
+            taskIdBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.TaskID task_id = 1;</code>
+         */
+        public Builder clearTaskId() {
+          if (taskIdBuilder_ == null) {
+            taskId_ = org.apache.mesos.Protos.TaskID.getDefaultInstance();
+            onChanged();
+          } else {
+            taskIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>required .mesos.TaskID task_id = 1;</code>
+         */
+        public org.apache.mesos.Protos.TaskID.Builder getTaskIdBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getTaskIdFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.TaskID task_id = 1;</code>
+         */
+        public org.apache.mesos.Protos.TaskIDOrBuilder getTaskIdOrBuilder() {
+          if (taskIdBuilder_ != null) {
+            return taskIdBuilder_.getMessageOrBuilder();
+          } else {
+            return taskId_;
+          }
+        }
+        /**
+         * <code>required .mesos.TaskID task_id = 1;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.TaskID, org.apache.mesos.Protos.TaskID.Builder, org.apache.mesos.Protos.TaskIDOrBuilder> 
+            getTaskIdFieldBuilder() {
+          if (taskIdBuilder_ == null) {
+            taskIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.TaskID, org.apache.mesos.Protos.TaskID.Builder, org.apache.mesos.Protos.TaskIDOrBuilder>(
+                    taskId_,
+                    getParentForChildren(),
+                    isClean());
+            taskId_ = null;
+          }
+          return taskIdBuilder_;
+        }
+
+        // optional .mesos.SlaveID slave_id = 2;
+        private org.apache.mesos.Protos.SlaveID slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.SlaveID, org.apache.mesos.Protos.SlaveID.Builder, org.apache.mesos.Protos.SlaveIDOrBuilder> slaveIdBuilder_;
+        /**
+         * <code>optional .mesos.SlaveID slave_id = 2;</code>
+         */
+        public boolean hasSlaveId() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional .mesos.SlaveID slave_id = 2;</code>
+         */
+        public org.apache.mesos.Protos.SlaveID getSlaveId() {
+          if (slaveIdBuilder_ == null) {
+            return slaveId_;
+          } else {
+            return slaveIdBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.SlaveID slave_id = 2;</code>
+         */
+        public Builder setSlaveId(org.apache.mesos.Protos.SlaveID value) {
+          if (slaveIdBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            slaveId_ = value;
+            onChanged();
+          } else {
+            slaveIdBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.SlaveID slave_id = 2;</code>
+         */
+        public Builder setSlaveId(
+            org.apache.mesos.Protos.SlaveID.Builder builderForValue) {
+          if (slaveIdBuilder_ == null) {
+            slaveId_ = builderForValue.build();
+            onChanged();
+          } else {
+            slaveIdBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.SlaveID slave_id = 2;</code>
+         */
+        public Builder mergeSlaveId(org.apache.mesos.Protos.SlaveID value) {
+          if (slaveIdBuilder_ == null) {
+            if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                slaveId_ != org.apache.mesos.Protos.SlaveID.getDefaultInstance()) {
+              slaveId_ =
+                org.apache.mesos.Protos.SlaveID.newBuilder(slaveId_).mergeFrom(value).buildPartial();
+            } else {
+              slaveId_ = value;
+            }
+            onChanged();
+          } else {
+            slaveIdBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.SlaveID slave_id = 2;</code>
+         */
+        public Builder clearSlaveId() {
+          if (slaveIdBuilder_ == null) {
+            slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+            onChanged();
+          } else {
+            slaveIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.SlaveID slave_id = 2;</code>
+         */
+        public org.apache.mesos.Protos.SlaveID.Builder getSlaveIdBuilder() {
+          bitField0_ |= 0x00000002;
+          onChanged();
+          return getSlaveIdFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.SlaveID slave_id = 2;</code>
+         */
+        public org.apache.mesos.Protos.SlaveIDOrBuilder getSlaveIdOrBuilder() {
+          if (slaveIdBuilder_ != null) {
+            return slaveIdBuilder_.getMessageOrBuilder();
+          } else {
+            return slaveId_;
+          }
+        }
+        /**
+         * <code>optional .mesos.SlaveID slave_id = 2;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.SlaveID, org.apache.mesos.Protos.SlaveID.Builder, org.apache.mesos.Protos.SlaveIDOrBuilder> 
+            getSlaveIdFieldBuilder() {
+          if (slaveIdBuilder_ == null) {
+            slaveIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.SlaveID, org.apache.mesos.Protos.SlaveID.Builder, org.apache.mesos.Protos.SlaveIDOrBuilder>(
+                    slaveId_,
+                    getParentForChildren(),
+                    isClean());
+            slaveId_ = null;
+          }
+          return slaveIdBuilder_;
+        }
+
+        // optional .mesos.KillPolicy kill_policy = 3;
+        private org.apache.mesos.Protos.KillPolicy killPolicy_ = org.apache.mesos.Protos.KillPolicy.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.KillPolicy, org.apache.mesos.Protos.KillPolicy.Builder, org.apache.mesos.Protos.KillPolicyOrBuilder> killPolicyBuilder_;
+        /**
+         * <code>optional .mesos.KillPolicy kill_policy = 3;</code>
+         *
+         * <pre>
+         * If set, overrides any previously specified kill policy for this task.
+         * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+         * Can be used to forcefully kill a task which is already being killed.
+         * </pre>
+         */
+        public boolean hasKillPolicy() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional .mesos.KillPolicy kill_policy = 3;</code>
+         *
+         * <pre>
+         * If set, overrides any previously specified kill policy for this task.
+         * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+         * Can be used to forcefully kill a task which is already being killed.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.KillPolicy getKillPolicy() {
+          if (killPolicyBuilder_ == null) {
+            return killPolicy_;
+          } else {
+            return killPolicyBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.KillPolicy kill_policy = 3;</code>
+         *
+         * <pre>
+         * If set, overrides any previously specified kill policy for this task.
+         * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+         * Can be used to forcefully kill a task which is already being killed.
+         * </pre>
+         */
+        public Builder setKillPolicy(org.apache.mesos.Protos.KillPolicy value) {
+          if (killPolicyBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            killPolicy_ = value;
+            onChanged();
+          } else {
+            killPolicyBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.KillPolicy kill_policy = 3;</code>
+         *
+         * <pre>
+         * If set, overrides any previously specified kill policy for this task.
+         * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+         * Can be used to forcefully kill a task which is already being killed.
+         * </pre>
+         */
+        public Builder setKillPolicy(
+            org.apache.mesos.Protos.KillPolicy.Builder builderForValue) {
+          if (killPolicyBuilder_ == null) {
+            killPolicy_ = builderForValue.build();
+            onChanged();
+          } else {
+            killPolicyBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.KillPolicy kill_policy = 3;</code>
+         *
+         * <pre>
+         * If set, overrides any previously specified kill policy for this task.
+         * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+         * Can be used to forcefully kill a task which is already being killed.
+         * </pre>
+         */
+        public Builder mergeKillPolicy(org.apache.mesos.Protos.KillPolicy value) {
+          if (killPolicyBuilder_ == null) {
+            if (((bitField0_ & 0x00000004) == 0x00000004) &&
+                killPolicy_ != org.apache.mesos.Protos.KillPolicy.getDefaultInstance()) {
+              killPolicy_ =
+                org.apache.mesos.Protos.KillPolicy.newBuilder(killPolicy_).mergeFrom(value).buildPartial();
+            } else {
+              killPolicy_ = value;
+            }
+            onChanged();
+          } else {
+            killPolicyBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.KillPolicy kill_policy = 3;</code>
+         *
+         * <pre>
+         * If set, overrides any previously specified kill policy for this task.
+         * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+         * Can be used to forcefully kill a task which is already being killed.
+         * </pre>
+         */
+        public Builder clearKillPolicy() {
+          if (killPolicyBuilder_ == null) {
+            killPolicy_ = org.apache.mesos.Protos.KillPolicy.getDefaultInstance();
+            onChanged();
+          } else {
+            killPolicyBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.KillPolicy kill_policy = 3;</code>
+         *
+         * <pre>
+         * If set, overrides any previously specified kill policy for this task.
+         * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+         * Can be used to forcefully kill a task which is already being killed.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.KillPolicy.Builder getKillPolicyBuilder() {
+          bitField0_ |= 0x00000004;
+          onChanged();
+          return getKillPolicyFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.KillPolicy kill_policy = 3;</code>
+         *
+         * <pre>
+         * If set, overrides any previously specified kill policy for this task.
+         * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+         * Can be used to forcefully kill a task which is already being killed.
+         * </pre>
+         */
+        public org.apache.mesos.Protos.KillPolicyOrBuilder getKillPolicyOrBuilder() {
+          if (killPolicyBuilder_ != null) {
+            return killPolicyBuilder_.getMessageOrBuilder();
+          } else {
+            return killPolicy_;
+          }
+        }
+        /**
+         * <code>optional .mesos.KillPolicy kill_policy = 3;</code>
+         *
+         * <pre>
+         * If set, overrides any previously specified kill policy for this task.
+         * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+         * Can be used to forcefully kill a task which is already being killed.
+         * </pre>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.KillPolicy, org.apache.mesos.Protos.KillPolicy.Builder, org.apache.mesos.Protos.KillPolicyOrBuilder> 
+            getKillPolicyFieldBuilder() {
+          if (killPolicyBuilder_ == null) {
+            killPolicyBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.KillPolicy, org.apache.mesos.Protos.KillPolicy.Builder, org.apache.mesos.Protos.KillPolicyOrBuilder>(
+                    killPolicy_,
+                    getParentForChildren(),
+                    isClean());
+            killPolicy_ = null;
+          }
+          return killPolicyBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.scheduler.Call.Kill)
+      }
+
+      static {
+        defaultInstance = new Kill(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.scheduler.Call.Kill)
+    }
+
+    public interface ShutdownOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required .mesos.ExecutorID executor_id = 1;
+      /**
+       * <code>required .mesos.ExecutorID executor_id = 1;</code>
+       */
+      boolean hasExecutorId();
+      /**
+       * <code>required .mesos.ExecutorID executor_id = 1;</code>
+       */
+      org.apache.mesos.Protos.ExecutorID getExecutorId();
+      /**
+       * <code>required .mesos.ExecutorID executor_id = 1;</code>
+       */
+      org.apache.mesos.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder();
+
+      // required .mesos.SlaveID slave_id = 2;
+      /**
+       * <code>required .mesos.SlaveID slave_id = 2;</code>
+       */
+      boolean hasSlaveId();
+      /**
+       * <code>required .mesos.SlaveID slave_id = 2;</code>
+       */
+      org.apache.mesos.Protos.SlaveID getSlaveId();
+      /**
+       * <code>required .mesos.SlaveID slave_id = 2;</code>
+       */
+      org.apache.mesos.Protos.SlaveIDOrBuilder getSlaveIdOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.scheduler.Call.Shutdown}
+     *
+     * <pre>
+     * Shuts down a custom executor. When the executor gets a shutdown
+     * event, it is expected to kill all its tasks (and send TASK_KILLED
+     * updates) and terminate. If the executor doesn’t terminate within
+     * a certain timeout (configurable via
+     * '--executor_shutdown_grace_period' slave flag), the slave will
+     * forcefully destroy the container (executor and its tasks) and
+     * transition its active tasks to TASK_LOST.
+     * </pre>
+     */
+    public static final class Shutdown extends
+        com.google.protobuf.GeneratedMessage
+        implements ShutdownOrBuilder {
+      // Use Shutdown.newBuilder() to construct.
+      private Shutdown(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Shutdown(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Shutdown defaultInstance;
+      public static Shutdown getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Shutdown getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Shutdown(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.Protos.ExecutorID.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = executorId_.toBuilder();
+                }
+                executorId_ = input.readMessage(org.apache.mesos.Protos.ExecutorID.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(executorId_);
+                  executorId_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+              case 18: {
+                org.apache.mesos.Protos.SlaveID.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                  subBuilder = slaveId_.toBuilder();
+                }
+                slaveId_ = input.readMessage(org.apache.mesos.Protos.SlaveID.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(slaveId_);
+                  slaveId_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000002;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Shutdown_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Shutdown_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.scheduler.Protos.Call.Shutdown.class, org.apache.mesos.scheduler.Protos.Call.Shutdown.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Shutdown> PARSER =
+          new com.google.protobuf.AbstractParser<Shutdown>() {
+        public Shutdown parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Shutdown(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Shutdown> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required .mesos.ExecutorID executor_id = 1;
+      public static final int EXECUTOR_ID_FIELD_NUMBER = 1;
+      private org.apache.mesos.Protos.ExecutorID executorId_;
+      /**
+       * <code>required .mesos.ExecutorID executor_id = 1;</code>
+       */
+      public boolean hasExecutorId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.ExecutorID executor_id = 1;</code>
+       */
+      public org.apache.mesos.Protos.ExecutorID getExecutorId() {
+        return executorId_;
+      }
+      /**
+       * <code>required .mesos.ExecutorID executor_id = 1;</code>
+       */
+      public org.apache.mesos.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder() {
+        return executorId_;
+      }
+
+      // required .mesos.SlaveID slave_id = 2;
+      public static final int SLAVE_ID_FIELD_NUMBER = 2;
+      private org.apache.mesos.Protos.SlaveID slaveId_;
+      /**
+       * <code>required .mesos.SlaveID slave_id = 2;</code>
+       */
+      public boolean hasSlaveId() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required .mesos.SlaveID slave_id = 2;</code>
+       */
+      public org.apache.mesos.Protos.SlaveID getSlaveId() {
+        return slaveId_;
+      }
+      /**
+       * <code>required .mesos.SlaveID slave_id = 2;</code>
+       */
+      public org.apache.mesos.Protos.SlaveIDOrBuilder getSlaveIdOrBuilder() {
+        return slaveId_;
+      }
+
+      private void initFields() {
+        executorId_ = org.apache.mesos.Protos.ExecutorID.getDefaultInstance();
+        slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasExecutorId()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!hasSlaveId()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getExecutorId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getSlaveId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, executorId_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeMessage(2, slaveId_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, executorId_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(2, slaveId_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.scheduler.Protos.Call.Shutdown parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Shutdown parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Shutdown parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Shutdown parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Shutdown parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Shutdown parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Shutdown parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Shutdown parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Shutdown parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Shutdown parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.scheduler.Protos.Call.Shutdown prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.scheduler.Call.Shutdown}
+       *
+       * <pre>
+       * Shuts down a custom executor. When the executor gets a shutdown
+       * event, it is expected to kill all its tasks (and send TASK_KILLED
+       * updates) and terminate. If the executor doesn’t terminate within
+       * a certain timeout (configurable via
+       * '--executor_shutdown_grace_period' slave flag), the slave will
+       * forcefully destroy the container (executor and its tasks) and
+       * transition its active tasks to TASK_LOST.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.scheduler.Protos.Call.ShutdownOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Shutdown_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Shutdown_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.scheduler.Protos.Call.Shutdown.class, org.apache.mesos.scheduler.Protos.Call.Shutdown.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.scheduler.Protos.Call.Shutdown.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getExecutorIdFieldBuilder();
+            getSlaveIdFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (executorIdBuilder_ == null) {
+            executorId_ = org.apache.mesos.Protos.ExecutorID.getDefaultInstance();
+          } else {
+            executorIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          if (slaveIdBuilder_ == null) {
+            slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+          } else {
+            slaveIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Shutdown_descriptor;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Call.Shutdown getDefaultInstanceForType() {
+          return org.apache.mesos.scheduler.Protos.Call.Shutdown.getDefaultInstance();
+        }
+
+        public org.apache.mesos.scheduler.Protos.Call.Shutdown build() {
+          org.apache.mesos.scheduler.Protos.Call.Shutdown result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Call.Shutdown buildPartial() {
+          org.apache.mesos.scheduler.Protos.Call.Shutdown result = new org.apache.mesos.scheduler.Protos.Call.Shutdown(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (executorIdBuilder_ == null) {
+            result.executorId_ = executorId_;
+          } else {
+            result.executorId_ = executorIdBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          if (slaveIdBuilder_ == null) {
+            result.slaveId_ = slaveId_;
+          } else {
+            result.slaveId_ = slaveIdBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.scheduler.Protos.Call.Shutdown) {
+            return mergeFrom((org.apache.mesos.scheduler.Protos.Call.Shutdown)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.scheduler.Protos.Call.Shutdown other) {
+          if (other == org.apache.mesos.scheduler.Protos.Call.Shutdown.getDefaultInstance()) return this;
+          if (other.hasExecutorId()) {
+            mergeExecutorId(other.getExecutorId());
+          }
+          if (other.hasSlaveId()) {
+            mergeSlaveId(other.getSlaveId());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasExecutorId()) {
+            
+            return false;
+          }
+          if (!hasSlaveId()) {
+            
+            return false;
+          }
+          if (!getExecutorId().isInitialized()) {
+            
+            return false;
+          }
+          if (!getSlaveId().isInitialized()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.scheduler.Protos.Call.Shutdown parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.scheduler.Protos.Call.Shutdown) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required .mesos.ExecutorID executor_id = 1;
+        private org.apache.mesos.Protos.ExecutorID executorId_ = org.apache.mesos.Protos.ExecutorID.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.ExecutorID, org.apache.mesos.Protos.ExecutorID.Builder, org.apache.mesos.Protos.ExecutorIDOrBuilder> executorIdBuilder_;
+        /**
+         * <code>required .mesos.ExecutorID executor_id = 1;</code>
+         */
+        public boolean hasExecutorId() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.ExecutorID executor_id = 1;</code>
+         */
+        public org.apache.mesos.Protos.ExecutorID getExecutorId() {
+          if (executorIdBuilder_ == null) {
+            return executorId_;
+          } else {
+            return executorIdBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.ExecutorID executor_id = 1;</code>
+         */
+        public Builder setExecutorId(org.apache.mesos.Protos.ExecutorID value) {
+          if (executorIdBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            executorId_ = value;
+            onChanged();
+          } else {
+            executorIdBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.ExecutorID executor_id = 1;</code>
+         */
+        public Builder setExecutorId(
+            org.apache.mesos.Protos.ExecutorID.Builder builderForValue) {
+          if (executorIdBuilder_ == null) {
+            executorId_ = builderForValue.build();
+            onChanged();
+          } else {
+            executorIdBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.ExecutorID executor_id = 1;</code>
+         */
+        public Builder mergeExecutorId(org.apache.mesos.Protos.ExecutorID value) {
+          if (executorIdBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                executorId_ != org.apache.mesos.Protos.ExecutorID.getDefaultInstance()) {
+              executorId_ =
+                org.apache.mesos.Protos.ExecutorID.newBuilder(executorId_).mergeFrom(value).buildPartial();
+            } else {
+              executorId_ = value;
+            }
+            onChanged();
+          } else {
+            executorIdBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.ExecutorID executor_id = 1;</code>
+         */
+        public Builder clearExecutorId() {
+          if (executorIdBuilder_ == null) {
+            executorId_ = org.apache.mesos.Protos.ExecutorID.getDefaultInstance();
+            onChanged();
+          } else {
+            executorIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>required .mesos.ExecutorID executor_id = 1;</code>
+         */
+        public org.apache.mesos.Protos.ExecutorID.Builder getExecutorIdBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getExecutorIdFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.ExecutorID executor_id = 1;</code>
+         */
+        public org.apache.mesos.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder() {
+          if (executorIdBuilder_ != null) {
+            return executorIdBuilder_.getMessageOrBuilder();
+          } else {
+            return executorId_;
+          }
+        }
+        /**
+         * <code>required .mesos.ExecutorID executor_id = 1;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.ExecutorID, org.apache.mesos.Protos.ExecutorID.Builder, org.apache.mesos.Protos.ExecutorIDOrBuilder> 
+            getExecutorIdFieldBuilder() {
+          if (executorIdBuilder_ == null) {
+            executorIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.ExecutorID, org.apache.mesos.Protos.ExecutorID.Builder, org.apache.mesos.Protos.ExecutorIDOrBuilder>(
+                    executorId_,
+                    getParentForChildren(),
+                    isClean());
+            executorId_ = null;
+          }
+          return executorIdBuilder_;
+        }
+
+        // required .mesos.SlaveID slave_id = 2;
+        private org.apache.mesos.Protos.SlaveID slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.SlaveID, org.apache.mesos.Protos.SlaveID.Builder, org.apache.mesos.Protos.SlaveIDOrBuilder> slaveIdBuilder_;
+        /**
+         * <code>required .mesos.SlaveID slave_id = 2;</code>
+         */
+        public boolean hasSlaveId() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>required .mesos.SlaveID slave_id = 2;</code>
+         */
+        public org.apache.mesos.Protos.SlaveID getSlaveId() {
+          if (slaveIdBuilder_ == null) {
+            return slaveId_;
+          } else {
+            return slaveIdBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.SlaveID slave_id = 2;</code>
+         */
+        public Builder setSlaveId(org.apache.mesos.Protos.SlaveID value) {
+          if (slaveIdBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            slaveId_ = value;
+            onChanged();
+          } else {
+            slaveIdBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>required .mesos.SlaveID slave_id = 2;</code>
+         */
+        public Builder setSlaveId(
+            org.apache.mesos.Protos.SlaveID.Builder builderForValue) {
+          if (slaveIdBuilder_ == null) {
+            slaveId_ = builderForValue.build();
+            onChanged();
+          } else {
+            slaveIdBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>required .mesos.SlaveID slave_id = 2;</code>
+         */
+        public Builder mergeSlaveId(org.apache.mesos.Protos.SlaveID value) {
+          if (slaveIdBuilder_ == null) {
+            if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                slaveId_ != org.apache.mesos.Protos.SlaveID.getDefaultInstance()) {
+              slaveId_ =
+                org.apache.mesos.Protos.SlaveID.newBuilder(slaveId_).mergeFrom(value).buildPartial();
+            } else {
+              slaveId_ = value;
+            }
+            onChanged();
+          } else {
+            slaveIdBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>required .mesos.SlaveID slave_id = 2;</code>
+         */
+        public Builder clearSlaveId() {
+          if (slaveIdBuilder_ == null) {
+            slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+            onChanged();
+          } else {
+            slaveIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+        /**
+         * <code>required .mesos.SlaveID slave_id = 2;</code>
+         */
+        public org.apache.mesos.Protos.SlaveID.Builder getSlaveIdBuilder() {
+          bitField0_ |= 0x00000002;
+          onChanged();
+          return getSlaveIdFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.SlaveID slave_id = 2;</code>
+         */
+        public org.apache.mesos.Protos.SlaveIDOrBuilder getSlaveIdOrBuilder() {
+          if (slaveIdBuilder_ != null) {
+            return slaveIdBuilder_.getMessageOrBuilder();
+          } else {
+            return slaveId_;
+          }
+        }
+        /**
+         * <code>required .mesos.SlaveID slave_id = 2;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.SlaveID, org.apache.mesos.Protos.SlaveID.Builder, org.apache.mesos.Protos.SlaveIDOrBuilder> 
+            getSlaveIdFieldBuilder() {
+          if (slaveIdBuilder_ == null) {
+            slaveIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.SlaveID, org.apache.mesos.Protos.SlaveID.Builder, org.apache.mesos.Protos.SlaveIDOrBuilder>(
+                    slaveId_,
+                    getParentForChildren(),
+                    isClean());
+            slaveId_ = null;
+          }
+          return slaveIdBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.scheduler.Call.Shutdown)
+      }
+
+      static {
+        defaultInstance = new Shutdown(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.scheduler.Call.Shutdown)
+    }
+
+    public interface AcknowledgeOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required .mesos.SlaveID slave_id = 1;
+      /**
+       * <code>required .mesos.SlaveID slave_id = 1;</code>
+       */
+      boolean hasSlaveId();
+      /**
+       * <code>required .mesos.SlaveID slave_id = 1;</code>
+       */
+      org.apache.mesos.Protos.SlaveID getSlaveId();
+      /**
+       * <code>required .mesos.SlaveID slave_id = 1;</code>
+       */
+      org.apache.mesos.Protos.SlaveIDOrBuilder getSlaveIdOrBuilder();
+
+      // required .mesos.TaskID task_id = 2;
+      /**
+       * <code>required .mesos.TaskID task_id = 2;</code>
+       */
+      boolean hasTaskId();
+      /**
+       * <code>required .mesos.TaskID task_id = 2;</code>
+       */
+      org.apache.mesos.Protos.TaskID getTaskId();
+      /**
+       * <code>required .mesos.TaskID task_id = 2;</code>
+       */
+      org.apache.mesos.Protos.TaskIDOrBuilder getTaskIdOrBuilder();
+
+      // required bytes uuid = 3;
+      /**
+       * <code>required bytes uuid = 3;</code>
+       */
+      boolean hasUuid();
+      /**
+       * <code>required bytes uuid = 3;</code>
+       */
+      com.google.protobuf.ByteString getUuid();
+    }
+    /**
+     * Protobuf type {@code mesos.scheduler.Call.Acknowledge}
+     *
+     * <pre>
+     * Acknowledges the receipt of status update. Schedulers are
+     * responsible for explicitly acknowledging the receipt of status
+     * updates that have 'Update.status().uuid()' field set. Such status
+     * updates are retried by the slave until they are acknowledged by
+     * the scheduler.
+     * </pre>
+     */
+    public static final class Acknowledge extends
+        com.google.protobuf.GeneratedMessage
+        implements AcknowledgeOrBuilder {
+      // Use Acknowledge.newBuilder() to construct.
+      private Acknowledge(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Acknowledge(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Acknowledge defaultInstance;
+      public static Acknowledge getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Acknowledge getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Acknowledge(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.Protos.SlaveID.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = slaveId_.toBuilder();
+                }
+                slaveId_ = input.readMessage(org.apache.mesos.Protos.SlaveID.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(slaveId_);
+                  slaveId_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+              case 18: {
+                org.apache.mesos.Protos.TaskID.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                  subBuilder = taskId_.toBuilder();
+                }
+                taskId_ = input.readMessage(org.apache.mesos.Protos.TaskID.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(taskId_);
+                  taskId_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000002;
+                break;
+              }
+              case 26: {
+                bitField0_ |= 0x00000004;
+                uuid_ = input.readBytes();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Acknowledge_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Acknowledge_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.scheduler.Protos.Call.Acknowledge.class, org.apache.mesos.scheduler.Protos.Call.Acknowledge.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Acknowledge> PARSER =
+          new com.google.protobuf.AbstractParser<Acknowledge>() {
+        public Acknowledge parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Acknowledge(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Acknowledge> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required .mesos.SlaveID slave_id = 1;
+      public static final int SLAVE_ID_FIELD_NUMBER = 1;
+      private org.apache.mesos.Protos.SlaveID slaveId_;
+      /**
+       * <code>required .mesos.SlaveID slave_id = 1;</code>
+       */
+      public boolean hasSlaveId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.SlaveID slave_id = 1;</code>
+       */
+      public org.apache.mesos.Protos.SlaveID getSlaveId() {
+        return slaveId_;
+      }
+      /**
+       * <code>required .mesos.SlaveID slave_id = 1;</code>
+       */
+      public org.apache.mesos.Protos.SlaveIDOrBuilder getSlaveIdOrBuilder() {
+        return slaveId_;
+      }
+
+      // required .mesos.TaskID task_id = 2;
+      public static final int TASK_ID_FIELD_NUMBER = 2;
+      private org.apache.mesos.Protos.TaskID taskId_;
+      /**
+       * <code>required .mesos.TaskID task_id = 2;</code>
+       */
+      public boolean hasTaskId() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required .mesos.TaskID task_id = 2;</code>
+       */
+      public org.apache.mesos.Protos.TaskID getTaskId() {
+        return taskId_;
+      }
+      /**
+       * <code>required .mesos.TaskID task_id = 2;</code>
+       */
+      public org.apache.mesos.Protos.TaskIDOrBuilder getTaskIdOrBuilder() {
+        return taskId_;
+      }
+
+      // required bytes uuid = 3;
+      public static final int UUID_FIELD_NUMBER = 3;
+      private com.google.protobuf.ByteString uuid_;
+      /**
+       * <code>required bytes uuid = 3;</code>
+       */
+      public boolean hasUuid() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>required bytes uuid = 3;</code>
+       */
+      public com.google.protobuf.ByteString getUuid() {
+        return uuid_;
+      }
+
+      private void initFields() {
+        slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+        taskId_ = org.apache.mesos.Protos.TaskID.getDefaultInstance();
+        uuid_ = com.google.protobuf.ByteString.EMPTY;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasSlaveId()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!hasTaskId()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!hasUuid()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getSlaveId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getTaskId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, slaveId_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeMessage(2, taskId_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeBytes(3, uuid_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, slaveId_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(2, taskId_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(3, uuid_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.scheduler.Protos.Call.Acknowledge parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Acknowledge parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Acknowledge parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Acknowledge parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Acknowledge parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Acknowledge parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Acknowledge parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Acknowledge parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Acknowledge parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Acknowledge parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.scheduler.Protos.Call.Acknowledge prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.scheduler.Call.Acknowledge}
+       *
+       * <pre>
+       * Acknowledges the receipt of status update. Schedulers are
+       * responsible for explicitly acknowledging the receipt of status
+       * updates that have 'Update.status().uuid()' field set. Such status
+       * updates are retried by the slave until they are acknowledged by
+       * the scheduler.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.scheduler.Protos.Call.AcknowledgeOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Acknowledge_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Acknowledge_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.scheduler.Protos.Call.Acknowledge.class, org.apache.mesos.scheduler.Protos.Call.Acknowledge.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.scheduler.Protos.Call.Acknowledge.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getSlaveIdFieldBuilder();
+            getTaskIdFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (slaveIdBuilder_ == null) {
+            slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+          } else {
+            slaveIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          if (taskIdBuilder_ == null) {
+            taskId_ = org.apache.mesos.Protos.TaskID.getDefaultInstance();
+          } else {
+            taskIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          uuid_ = com.google.protobuf.ByteString.EMPTY;
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Acknowledge_descriptor;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Call.Acknowledge getDefaultInstanceForType() {
+          return org.apache.mesos.scheduler.Protos.Call.Acknowledge.getDefaultInstance();
+        }
+
+        public org.apache.mesos.scheduler.Protos.Call.Acknowledge build() {
+          org.apache.mesos.scheduler.Protos.Call.Acknowledge result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Call.Acknowledge buildPartial() {
+          org.apache.mesos.scheduler.Protos.Call.Acknowledge result = new org.apache.mesos.scheduler.Protos.Call.Acknowledge(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (slaveIdBuilder_ == null) {
+            result.slaveId_ = slaveId_;
+          } else {
+            result.slaveId_ = slaveIdBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          if (taskIdBuilder_ == null) {
+            result.taskId_ = taskId_;
+          } else {
+            result.taskId_ = taskIdBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          result.uuid_ = uuid_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.scheduler.Protos.Call.Acknowledge) {
+            return mergeFrom((org.apache.mesos.scheduler.Protos.Call.Acknowledge)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.scheduler.Protos.Call.Acknowledge other) {
+          if (other == org.apache.mesos.scheduler.Protos.Call.Acknowledge.getDefaultInstance()) return this;
+          if (other.hasSlaveId()) {
+            mergeSlaveId(other.getSlaveId());
+          }
+          if (other.hasTaskId()) {
+            mergeTaskId(other.getTaskId());
+          }
+          if (other.hasUuid()) {
+            setUuid(other.getUuid());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasSlaveId()) {
+            
+            return false;
+          }
+          if (!hasTaskId()) {
+            
+            return false;
+          }
+          if (!hasUuid()) {
+            
+            return false;
+          }
+          if (!getSlaveId().isInitialized()) {
+            
+            return false;
+          }
+          if (!getTaskId().isInitialized()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.scheduler.Protos.Call.Acknowledge parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.scheduler.Protos.Call.Acknowledge) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required .mesos.SlaveID slave_id = 1;
+        private org.apache.mesos.Protos.SlaveID slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.SlaveID, org.apache.mesos.Protos.SlaveID.Builder, org.apache.mesos.Protos.SlaveIDOrBuilder> slaveIdBuilder_;
+        /**
+         * <code>required .mesos.SlaveID slave_id = 1;</code>
+         */
+        public boolean hasSlaveId() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.SlaveID slave_id = 1;</code>
+         */
+        public org.apache.mesos.Protos.SlaveID getSlaveId() {
+          if (slaveIdBuilder_ == null) {
+            return slaveId_;
+          } else {
+            return slaveIdBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.SlaveID slave_id = 1;</code>
+         */
+        public Builder setSlaveId(org.apache.mesos.Protos.SlaveID value) {
+          if (slaveIdBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            slaveId_ = value;
+            onChanged();
+          } else {
+            slaveIdBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.SlaveID slave_id = 1;</code>
+         */
+        public Builder setSlaveId(
+            org.apache.mesos.Protos.SlaveID.Builder builderForValue) {
+          if (slaveIdBuilder_ == null) {
+            slaveId_ = builderForValue.build();
+            onChanged();
+          } else {
+            slaveIdBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.SlaveID slave_id = 1;</code>
+         */
+        public Builder mergeSlaveId(org.apache.mesos.Protos.SlaveID value) {
+          if (slaveIdBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                slaveId_ != org.apache.mesos.Protos.SlaveID.getDefaultInstance()) {
+              slaveId_ =
+                org.apache.mesos.Protos.SlaveID.newBuilder(slaveId_).mergeFrom(value).buildPartial();
+            } else {
+              slaveId_ = value;
+            }
+            onChanged();
+          } else {
+            slaveIdBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.SlaveID slave_id = 1;</code>
+         */
+        public Builder clearSlaveId() {
+          if (slaveIdBuilder_ == null) {
+            slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+            onChanged();
+          } else {
+            slaveIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>required .mesos.SlaveID slave_id = 1;</code>
+         */
+        public org.apache.mesos.Protos.SlaveID.Builder getSlaveIdBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getSlaveIdFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.SlaveID slave_id = 1;</code>
+         */
+        public org.apache.mesos.Protos.SlaveIDOrBuilder getSlaveIdOrBuilder() {
+          if (slaveIdBuilder_ != null) {
+            return slaveIdBuilder_.getMessageOrBuilder();
+          } else {
+            return slaveId_;
+          }
+        }
+        /**
+         * <code>required .mesos.SlaveID slave_id = 1;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.SlaveID, org.apache.mesos.Protos.SlaveID.Builder, org.apache.mesos.Protos.SlaveIDOrBuilder> 
+            getSlaveIdFieldBuilder() {
+          if (slaveIdBuilder_ == null) {
+            slaveIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.SlaveID, org.apache.mesos.Protos.SlaveID.Builder, org.apache.mesos.Protos.SlaveIDOrBuilder>(
+                    slaveId_,
+                    getParentForChildren(),
+                    isClean());
+            slaveId_ = null;
+          }
+          return slaveIdBuilder_;
+        }
+
+        // required .mesos.TaskID task_id = 2;
+        private org.apache.mesos.Protos.TaskID taskId_ = org.apache.mesos.Protos.TaskID.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.TaskID, org.apache.mesos.Protos.TaskID.Builder, org.apache.mesos.Protos.TaskIDOrBuilder> taskIdBuilder_;
+        /**
+         * <code>required .mesos.TaskID task_id = 2;</code>
+         */
+        public boolean hasTaskId() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>required .mesos.TaskID task_id = 2;</code>
+         */
+        public org.apache.mesos.Protos.TaskID getTaskId() {
+          if (taskIdBuilder_ == null) {
+            return taskId_;
+          } else {
+            return taskIdBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.TaskID task_id = 2;</code>
+         */
+        public Builder setTaskId(org.apache.mesos.Protos.TaskID value) {
+          if (taskIdBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            taskId_ = value;
+            onChanged();
+          } else {
+            taskIdBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>required .mesos.TaskID task_id = 2;</code>
+         */
+        public Builder setTaskId(
+            org.apache.mesos.Protos.TaskID.Builder builderForValue) {
+          if (taskIdBuilder_ == null) {
+            taskId_ = builderForValue.build();
+            onChanged();
+          } else {
+            taskIdBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>required .mesos.TaskID task_id = 2;</code>
+         */
+        public Builder mergeTaskId(org.apache.mesos.Protos.TaskID value) {
+          if (taskIdBuilder_ == null) {
+            if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                taskId_ != org.apache.mesos.Protos.TaskID.getDefaultInstance()) {
+              taskId_ =
+                org.apache.mesos.Protos.TaskID.newBuilder(taskId_).mergeFrom(value).buildPartial();
+            } else {
+              taskId_ = value;
+            }
+            onChanged();
+          } else {
+            taskIdBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>required .mesos.TaskID task_id = 2;</code>
+         */
+        public Builder clearTaskId() {
+          if (taskIdBuilder_ == null) {
+            taskId_ = org.apache.mesos.Protos.TaskID.getDefaultInstance();
+            onChanged();
+          } else {
+            taskIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+        /**
+         * <code>required .mesos.TaskID task_id = 2;</code>
+         */
+        public org.apache.mesos.Protos.TaskID.Builder getTaskIdBuilder() {
+          bitField0_ |= 0x00000002;
+          onChanged();
+          return getTaskIdFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.TaskID task_id = 2;</code>
+         */
+        public org.apache.mesos.Protos.TaskIDOrBuilder getTaskIdOrBuilder() {
+          if (taskIdBuilder_ != null) {
+            return taskIdBuilder_.getMessageOrBuilder();
+          } else {
+            return taskId_;
+          }
+        }
+        /**
+         * <code>required .mesos.TaskID task_id = 2;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.TaskID, org.apache.mesos.Protos.TaskID.Builder, org.apache.mesos.Protos.TaskIDOrBuilder> 
+            getTaskIdFieldBuilder() {
+          if (taskIdBuilder_ == null) {
+            taskIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.TaskID, org.apache.mesos.Protos.TaskID.Builder, org.apache.mesos.Protos.TaskIDOrBuilder>(
+                    taskId_,
+                    getParentForChildren(),
+                    isClean());
+            taskId_ = null;
+          }
+          return taskIdBuilder_;
+        }
+
+        // required bytes uuid = 3;
+        private com.google.protobuf.ByteString uuid_ = com.google.protobuf.ByteString.EMPTY;
+        /**
+         * <code>required bytes uuid = 3;</code>
+         */
+        public boolean hasUuid() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>required bytes uuid = 3;</code>
+         */
+        public com.google.protobuf.ByteString getUuid() {
+          return uuid_;
+        }
+        /**
+         * <code>required bytes uuid = 3;</code>
+         */
+        public Builder setUuid(com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+          uuid_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required bytes uuid = 3;</code>
+         */
+        public Builder clearUuid() {
+          bitField0_ = (bitField0_ & ~0x00000004);
+          uuid_ = getDefaultInstance().getUuid();
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.scheduler.Call.Acknowledge)
+      }
+
+      static {
+        defaultInstance = new Acknowledge(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.scheduler.Call.Acknowledge)
+    }
+
+    public interface ReconcileOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // repeated .mesos.scheduler.Call.Reconcile.Task tasks = 1;
+      /**
+       * <code>repeated .mesos.scheduler.Call.Reconcile.Task tasks = 1;</code>
+       */
+      java.util.List<org.apache.mesos.scheduler.Protos.Call.Reconcile.Task> 
+          getTasksList();
+      /**
+       * <code>repeated .mesos.scheduler.Call.Reconcile.Task tasks = 1;</code>
+       */
+      org.apache.mesos.scheduler.Protos.Call.Reconcile.Task getTasks(int index);
+      /**
+       * <code>repeated .mesos.scheduler.Call.Reconcile.Task tasks = 1;</code>
+       */
+      int getTasksCount();
+      /**
+       * <code>repeated .mesos.scheduler.Call.Reconcile.Task tasks = 1;</code>
+       */
+      java.util.List<? extends org.apache.mesos.scheduler.Protos.Call.Reconcile.TaskOrBuilder> 
+          getTasksOrBuilderList();
+      /**
+       * <code>repeated .mesos.scheduler.Call.Reconcile.Task tasks = 1;</code>
+       */
+      org.apache.mesos.scheduler.Protos.Call.Reconcile.TaskOrBuilder getTasksOrBuilder(
+          int index);
+    }
+    /**
+     * Protobuf type {@code mesos.scheduler.Call.Reconcile}
+     *
+     * <pre>
+     * Allows the scheduler to query the status for non-terminal tasks.
+     * This causes the master to send back the latest task status for
+     * each task in 'tasks', if possible. Tasks that are no longer known
+     * will result in a TASK_LOST, TASK_UNKNOWN, or TASK_UNREACHABLE update.
+     * If 'tasks' is empty, then the master will send the latest status
+     * for each task currently known.
+     * </pre>
+     */
+    public static final class Reconcile extends
+        com.google.protobuf.GeneratedMessage
+        implements ReconcileOrBuilder {
+      // Use Reconcile.newBuilder() to construct.
+      private Reconcile(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Reconcile(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Reconcile defaultInstance;
+      public static Reconcile getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Reconcile getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Reconcile(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                  tasks_ = new java.util.ArrayList<org.apache.mesos.scheduler.Protos.Call.Reconcile.Task>();
+                  mutable_bitField0_ |= 0x00000001;
+                }
+                tasks_.add(input.readMessage(org.apache.mesos.scheduler.Protos.Call.Reconcile.Task.PARSER, extensionRegistry));
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+            tasks_ = java.util.Collections.unmodifiableList(tasks_);
+          }
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Reconcile_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Reconcile_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.scheduler.Protos.Call.Reconcile.class, org.apache.mesos.scheduler.Protos.Call.Reconcile.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Reconcile> PARSER =
+          new com.google.protobuf.AbstractParser<Reconcile>() {
+        public Reconcile parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Reconcile(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Reconcile> getParserForType() {
+        return PARSER;
+      }
+
+      public interface TaskOrBuilder
+          extends com.google.protobuf.MessageOrBuilder {
+
+        // required .mesos.TaskID task_id = 1;
+        /**
+         * <code>required .mesos.TaskID task_id = 1;</code>
+         */
+        boolean hasTaskId();
+        /**
+         * <code>required .mesos.TaskID task_id = 1;</code>
+         */
+        org.apache.mesos.Protos.TaskID getTaskId();
+        /**
+         * <code>required .mesos.TaskID task_id = 1;</code>
+         */
+        org.apache.mesos.Protos.TaskIDOrBuilder getTaskIdOrBuilder();
+
+        // optional .mesos.SlaveID slave_id = 2;
+        /**
+         * <code>optional .mesos.SlaveID slave_id = 2;</code>
+         */
+        boolean hasSlaveId();
+        /**
+         * <code>optional .mesos.SlaveID slave_id = 2;</code>
+         */
+        org.apache.mesos.Protos.SlaveID getSlaveId();
+        /**
+         * <code>optional .mesos.SlaveID slave_id = 2;</code>
+         */
+        org.apache.mesos.Protos.SlaveIDOrBuilder getSlaveIdOrBuilder();
+      }
+      /**
+       * Protobuf type {@code mesos.scheduler.Call.Reconcile.Task}
+       *
+       * <pre>
+       * TODO(vinod): Support arbitrary queries than just state of tasks.
+       * </pre>
+       */
+      public static final class Task extends
+          com.google.protobuf.GeneratedMessage
+          implements TaskOrBuilder {
+        // Use Task.newBuilder() to construct.
+        private Task(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+          super(builder);
+          this.unknownFields = builder.getUnknownFields();
+        }
+        private Task(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+        private static final Task defaultInstance;
+        public static Task getDefaultInstance() {
+          return defaultInstance;
+        }
+
+        public Task getDefaultInstanceForType() {
+          return defaultInstance;
+        }
+
+        private final com.google.protobuf.UnknownFieldSet unknownFields;
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet
+            getUnknownFields() {
+          return this.unknownFields;
+        }
+        private Task(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          initFields();
+          int mutable_bitField0_ = 0;
+          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+              com.google.protobuf.UnknownFieldSet.newBuilder();
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(input, unknownFields,
+                                         extensionRegistry, tag)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 10: {
+                  org.apache.mesos.Protos.TaskID.Builder subBuilder = null;
+                  if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                    subBuilder = taskId_.toBuilder();
+                  }
+                  taskId_ = input.readMessage(org.apache.mesos.Protos.TaskID.PARSER, extensionRegistry);
+                  if (subBuilder != null) {
+                    subBuilder.mergeFrom(taskId_);
+                    taskId_ = subBuilder.buildPartial();
+                  }
+                  bitField0_ |= 0x00000001;
+                  break;
+                }
+                case 18: {
+                  org.apache.mesos.Protos.SlaveID.Builder subBuilder = null;
+                  if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                    subBuilder = slaveId_.toBuilder();
+                  }
+                  slaveId_ = input.readMessage(org.apache.mesos.Protos.SlaveID.PARSER, extensionRegistry);
+                  if (subBuilder != null) {
+                    subBuilder.mergeFrom(slaveId_);
+                    slaveId_ = subBuilder.buildPartial();
+                  }
+                  bitField0_ |= 0x00000002;
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw e.setUnfinishedMessage(this);
+          } catch (java.io.IOException e) {
+            throw new com.google.protobuf.InvalidProtocolBufferException(
+                e.getMessage()).setUnfinishedMessage(this);
+          } finally {
+            this.unknownFields = unknownFields.build();
+            makeExtensionsImmutable();
+          }
+        }
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Reconcile_Task_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Reconcile_Task_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.scheduler.Protos.Call.Reconcile.Task.class, org.apache.mesos.scheduler.Protos.Call.Reconcile.Task.Builder.class);
+        }
+
+        public static com.google.protobuf.Parser<Task> PARSER =
+            new com.google.protobuf.AbstractParser<Task>() {
+          public Task parsePartialFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return new Task(input, extensionRegistry);
+          }
+        };
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<Task> getParserForType() {
+          return PARSER;
+        }
+
+        private int bitField0_;
+        // required .mesos.TaskID task_id = 1;
+        public static final int TASK_ID_FIELD_NUMBER = 1;
+        private org.apache.mesos.Protos.TaskID taskId_;
+        /**
+         * <code>required .mesos.TaskID task_id = 1;</code>
+         */
+        public boolean hasTaskId() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.TaskID task_id = 1;</code>
+         */
+        public org.apache.mesos.Protos.TaskID getTaskId() {
+          return taskId_;
+        }
+        /**
+         * <code>required .mesos.TaskID task_id = 1;</code>
+         */
+        public org.apache.mesos.Protos.TaskIDOrBuilder getTaskIdOrBuilder() {
+          return taskId_;
+        }
+
+        // optional .mesos.SlaveID slave_id = 2;
+        public static final int SLAVE_ID_FIELD_NUMBER = 2;
+        private org.apache.mesos.Protos.SlaveID slaveId_;
+        /**
+         * <code>optional .mesos.SlaveID slave_id = 2;</code>
+         */
+        public boolean hasSlaveId() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional .mesos.SlaveID slave_id = 2;</code>
+         */
+        public org.apache.mesos.Protos.SlaveID getSlaveId() {
+          return slaveId_;
+        }
+        /**
+         * <code>optional .mesos.SlaveID slave_id = 2;</code>
+         */
+        public org.apache.mesos.Protos.SlaveIDOrBuilder getSlaveIdOrBuilder() {
+          return slaveId_;
+        }
+
+        private void initFields() {
+          taskId_ = org.apache.mesos.Protos.TaskID.getDefaultInstance();
+          slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+        }
+        private byte memoizedIsInitialized = -1;
+        public final boolean isInitialized() {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized != -1) return isInitialized == 1;
+
+          if (!hasTaskId()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+          if (!getTaskId().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+          if (hasSlaveId()) {
+            if (!getSlaveId().isInitialized()) {
+              memoizedIsInitialized = 0;
+              return false;
+            }
+          }
+          memoizedIsInitialized = 1;
+          return true;
+        }
+
+        public void writeTo(com.google.protobuf.CodedOutputStream output)
+                            throws java.io.IOException {
+          getSerializedSize();
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            output.writeMessage(1, taskId_);
+          }
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            output.writeMessage(2, slaveId_);
+          }
+          getUnknownFields().writeTo(output);
+        }
+
+        private int memoizedSerializedSize = -1;
+        public int getSerializedSize() {
+          int size = memoizedSerializedSize;
+          if (size != -1) return size;
+
+          size = 0;
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeMessageSize(1, taskId_);
+          }
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeMessageSize(2, slaveId_);
+          }
+          size += getUnknownFields().getSerializedSize();
+          memoizedSerializedSize = size;
+          return size;
+        }
+
+        private static final long serialVersionUID = 0L;
+        @java.lang.Override
+        protected java.lang.Object writeReplace()
+            throws java.io.ObjectStreamException {
+          return super.writeReplace();
+        }
+
+        public static org.apache.mesos.scheduler.Protos.Call.Reconcile.Task parseFrom(
+            com.google.protobuf.ByteString data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.scheduler.Protos.Call.Reconcile.Task parseFrom(
+            com.google.protobuf.ByteString data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.scheduler.Protos.Call.Reconcile.Task parseFrom(byte[] data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.scheduler.Protos.Call.Reconcile.Task parseFrom(
+            byte[] data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.scheduler.Protos.Call.Reconcile.Task parseFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.scheduler.Protos.Call.Reconcile.Task parseFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.scheduler.Protos.Call.Reconcile.Task parseDelimitedFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input);
+        }
+        public static org.apache.mesos.scheduler.Protos.Call.Reconcile.Task parseDelimitedFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.scheduler.Protos.Call.Reconcile.Task parseFrom(
+            com.google.protobuf.CodedInputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.scheduler.Protos.Call.Reconcile.Task parseFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+
+        public static Builder newBuilder() { return Builder.create(); }
+        public Builder newBuilderForType() { return newBuilder(); }
+        public static Builder newBuilder(org.apache.mesos.scheduler.Protos.Call.Reconcile.Task prototype) {
+          return newBuilder().mergeFrom(prototype);
+        }
+        public Builder toBuilder() { return newBuilder(this); }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          Builder builder = new Builder(parent);
+          return builder;
+        }
+        /**
+         * Protobuf type {@code mesos.scheduler.Call.Reconcile.Task}
+         *
+         * <pre>
+         * TODO(vinod): Support arbitrary queries than just state of tasks.
+         * </pre>
+         */
+        public static final class Builder extends
+            com.google.protobuf.GeneratedMessage.Builder<Builder>
+           implements org.apache.mesos.scheduler.Protos.Call.Reconcile.TaskOrBuilder {
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Reconcile_Task_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Reconcile_Task_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.scheduler.Protos.Call.Reconcile.Task.class, org.apache.mesos.scheduler.Protos.Call.Reconcile.Task.Builder.class);
+          }
+
+          // Construct using org.apache.mesos.scheduler.Protos.Call.Reconcile.Task.newBuilder()
+          private Builder() {
+            maybeForceBuilderInitialization();
+          }
+
+          private Builder(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            super(parent);
+            maybeForceBuilderInitialization();
+          }
+          private void maybeForceBuilderInitialization() {
+            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+              getTaskIdFieldBuilder();
+              getSlaveIdFieldBuilder();
+            }
+          }
+          private static Builder create() {
+            return new Builder();
+          }
+
+          public Builder clear() {
+            super.clear();
+            if (taskIdBuilder_ == null) {
+              taskId_ = org.apache.mesos.Protos.TaskID.getDefaultInstance();
+            } else {
+              taskIdBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000001);
+            if (slaveIdBuilder_ == null) {
+              slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+            } else {
+              slaveIdBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000002);
+            return this;
+          }
+
+          public Builder clone() {
+            return create().mergeFrom(buildPartial());
+          }
+
+          public com.google.protobuf.Descriptors.Descriptor
+              getDescriptorForType() {
+            return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Reconcile_Task_descriptor;
+          }
+
+          public org.apache.mesos.scheduler.Protos.Call.Reconcile.Task getDefaultInstanceForType() {
+            return org.apache.mesos.scheduler.Protos.Call.Reconcile.Task.getDefaultInstance();
+          }
+
+          public org.apache.mesos.scheduler.Protos.Call.Reconcile.Task build() {
+            org.apache.mesos.scheduler.Protos.Call.Reconcile.Task result = buildPartial();
+            if (!result.isInitialized()) {
+              throw newUninitializedMessageException(result);
+            }
+            return result;
+          }
+
+          public org.apache.mesos.scheduler.Protos.Call.Reconcile.Task buildPartial() {
+            org.apache.mesos.scheduler.Protos.Call.Reconcile.Task result = new org.apache.mesos.scheduler.Protos.Call.Reconcile.Task(this);
+            int from_bitField0_ = bitField0_;
+            int to_bitField0_ = 0;
+            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+              to_bitField0_ |= 0x00000001;
+            }
+            if (taskIdBuilder_ == null) {
+              result.taskId_ = taskId_;
+            } else {
+              result.taskId_ = taskIdBuilder_.build();
+            }
+            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+              to_bitField0_ |= 0x00000002;
+            }
+            if (slaveIdBuilder_ == null) {
+              result.slaveId_ = slaveId_;
+            } else {
+              result.slaveId_ = slaveIdBuilder_.build();
+            }
+            result.bitField0_ = to_bitField0_;
+            onBuilt();
+            return result;
+          }
+
+          public Builder mergeFrom(com.google.protobuf.Message other) {
+            if (other instanceof org.apache.mesos.scheduler.Protos.Call.Reconcile.Task) {
+              return mergeFrom((org.apache.mesos.scheduler.Protos.Call.Reconcile.Task)other);
+            } else {
+              super.mergeFrom(other);
+              return this;
+            }
+          }
+
+          public Builder mergeFrom(org.apache.mesos.scheduler.Protos.Call.Reconcile.Task other) {
+            if (other == org.apache.mesos.scheduler.Protos.Call.Reconcile.Task.getDefaultInstance()) return this;
+            if (other.hasTaskId()) {
+              mergeTaskId(other.getTaskId());
+            }
+            if (other.hasSlaveId()) {
+              mergeSlaveId(other.getSlaveId());
+            }
+            this.mergeUnknownFields(other.getUnknownFields());
+            return this;
+          }
+
+          public final boolean isInitialized() {
+            if (!hasTaskId()) {
+              
+              return false;
+            }
+            if (!getTaskId().isInitialized()) {
+              
+              return false;
+            }
+            if (hasSlaveId()) {
+              if (!getSlaveId().isInitialized()) {
+                
+                return false;
+              }
+            }
+            return true;
+          }
+
+          public Builder mergeFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            org.apache.mesos.scheduler.Protos.Call.Reconcile.Task parsedMessage = null;
+            try {
+              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              parsedMessage = (org.apache.mesos.scheduler.Protos.Call.Reconcile.Task) e.getUnfinishedMessage();
+              throw e;
+            } finally {
+              if (parsedMessage != null) {
+                mergeFrom(parsedMessage);
+              }
+            }
+            return this;
+          }
+          private int bitField0_;
+
+          // required .mesos.TaskID task_id = 1;
+          private org.apache.mesos.Protos.TaskID taskId_ = org.apache.mesos.Protos.TaskID.getDefaultInstance();
+          private com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.TaskID, org.apache.mesos.Protos.TaskID.Builder, org.apache.mesos.Protos.TaskIDOrBuilder> taskIdBuilder_;
+          /**
+           * <code>required .mesos.TaskID task_id = 1;</code>
+           */
+          public boolean hasTaskId() {
+            return ((bitField0_ & 0x00000001) == 0x00000001);
+          }
+          /**
+           * <code>required .mesos.TaskID task_id = 1;</code>
+           */
+          public org.apache.mesos.Protos.TaskID getTaskId() {
+            if (taskIdBuilder_ == null) {
+              return taskId_;
+            } else {
+              return taskIdBuilder_.getMessage();
+            }
+          }
+          /**
+           * <code>required .mesos.TaskID task_id = 1;</code>
+           */
+          public Builder setTaskId(org.apache.mesos.Protos.TaskID value) {
+            if (taskIdBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              taskId_ = value;
+              onChanged();
+            } else {
+              taskIdBuilder_.setMessage(value);
+            }
+            bitField0_ |= 0x00000001;
+            return this;
+          }
+          /**
+           * <code>required .mesos.TaskID task_id = 1;</code>
+           */
+          public Builder setTaskId(
+              org.apache.mesos.Protos.TaskID.Builder builderForValue) {
+            if (taskIdBuilder_ == null) {
+              taskId_ = builderForValue.build();
+              onChanged();
+            } else {
+              taskIdBuilder_.setMessage(builderForValue.build());
+            }
+            bitField0_ |= 0x00000001;
+            return this;
+          }
+          /**
+           * <code>required .mesos.TaskID task_id = 1;</code>
+           */
+          public Builder mergeTaskId(org.apache.mesos.Protos.TaskID value) {
+            if (taskIdBuilder_ == null) {
+              if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                  taskId_ != org.apache.mesos.Protos.TaskID.getDefaultInstance()) {
+                taskId_ =
+                  org.apache.mesos.Protos.TaskID.newBuilder(taskId_).mergeFrom(value).buildPartial();
+              } else {
+                taskId_ = value;
+              }
+              onChanged();
+            } else {
+              taskIdBuilder_.mergeFrom(value);
+            }
+            bitField0_ |= 0x00000001;
+            return this;
+          }
+          /**
+           * <code>required .mesos.TaskID task_id = 1;</code>
+           */
+          public Builder clearTaskId() {
+            if (taskIdBuilder_ == null) {
+              taskId_ = org.apache.mesos.Protos.TaskID.getDefaultInstance();
+              onChanged();
+            } else {
+              taskIdBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000001);
+            return this;
+          }
+          /**
+           * <code>required .mesos.TaskID task_id = 1;</code>
+           */
+          public org.apache.mesos.Protos.TaskID.Builder getTaskIdBuilder() {
+            bitField0_ |= 0x00000001;
+            onChanged();
+            return getTaskIdFieldBuilder().getBuilder();
+          }
+          /**
+           * <code>required .mesos.TaskID task_id = 1;</code>
+           */
+          public org.apache.mesos.Protos.TaskIDOrBuilder getTaskIdOrBuilder() {
+            if (taskIdBuilder_ != null) {
+              return taskIdBuilder_.getMessageOrBuilder();
+            } else {
+              return taskId_;
+            }
+          }
+          /**
+           * <code>required .mesos.TaskID task_id = 1;</code>
+           */
+          private com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.TaskID, org.apache.mesos.Protos.TaskID.Builder, org.apache.mesos.Protos.TaskIDOrBuilder> 
+              getTaskIdFieldBuilder() {
+            if (taskIdBuilder_ == null) {
+              taskIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                  org.apache.mesos.Protos.TaskID, org.apache.mesos.Protos.TaskID.Builder, org.apache.mesos.Protos.TaskIDOrBuilder>(
+                      taskId_,
+                      getParentForChildren(),
+                      isClean());
+              taskId_ = null;
+            }
+            return taskIdBuilder_;
+          }
+
+          // optional .mesos.SlaveID slave_id = 2;
+          private org.apache.mesos.Protos.SlaveID slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+          private com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.SlaveID, org.apache.mesos.Protos.SlaveID.Builder, org.apache.mesos.Protos.SlaveIDOrBuilder> slaveIdBuilder_;
+          /**
+           * <code>optional .mesos.SlaveID slave_id = 2;</code>
+           */
+          public boolean hasSlaveId() {
+            return ((bitField0_ & 0x00000002) == 0x00000002);
+          }
+          /**
+           * <code>optional .mesos.SlaveID slave_id = 2;</code>
+           */
+          public org.apache.mesos.Protos.SlaveID getSlaveId() {
+            if (slaveIdBuilder_ == null) {
+              return slaveId_;
+            } else {
+              return slaveIdBuilder_.getMessage();
+            }
+          }
+          /**
+           * <code>optional .mesos.SlaveID slave_id = 2;</code>
+           */
+          public Builder setSlaveId(org.apache.mesos.Protos.SlaveID value) {
+            if (slaveIdBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              slaveId_ = value;
+              onChanged();
+            } else {
+              slaveIdBuilder_.setMessage(value);
+            }
+            bitField0_ |= 0x00000002;
+            return this;
+          }
+          /**
+           * <code>optional .mesos.SlaveID slave_id = 2;</code>
+           */
+          public Builder setSlaveId(
+              org.apache.mesos.Protos.SlaveID.Builder builderForValue) {
+            if (slaveIdBuilder_ == null) {
+              slaveId_ = builderForValue.build();
+              onChanged();
+            } else {
+              slaveIdBuilder_.setMessage(builderForValue.build());
+            }
+            bitField0_ |= 0x00000002;
+            return this;
+          }
+          /**
+           * <code>optional .mesos.SlaveID slave_id = 2;</code>
+           */
+          public Builder mergeSlaveId(org.apache.mesos.Protos.SlaveID value) {
+            if (slaveIdBuilder_ == null) {
+              if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                  slaveId_ != org.apache.mesos.Protos.SlaveID.getDefaultInstance()) {
+                slaveId_ =
+                  org.apache.mesos.Protos.SlaveID.newBuilder(slaveId_).mergeFrom(value).buildPartial();
+              } else {
+                slaveId_ = value;
+              }
+              onChanged();
+            } else {
+              slaveIdBuilder_.mergeFrom(value);
+            }
+            bitField0_ |= 0x00000002;
+            return this;
+          }
+          /**
+           * <code>optional .mesos.SlaveID slave_id = 2;</code>
+           */
+          public Builder clearSlaveId() {
+            if (slaveIdBuilder_ == null) {
+              slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+              onChanged();
+            } else {
+              slaveIdBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000002);
+            return this;
+          }
+          /**
+           * <code>optional .mesos.SlaveID slave_id = 2;</code>
+           */
+          public org.apache.mesos.Protos.SlaveID.Builder getSlaveIdBuilder() {
+            bitField0_ |= 0x00000002;
+            onChanged();
+            return getSlaveIdFieldBuilder().getBuilder();
+          }
+          /**
+           * <code>optional .mesos.SlaveID slave_id = 2;</code>
+           */
+          public org.apache.mesos.Protos.SlaveIDOrBuilder getSlaveIdOrBuilder() {
+            if (slaveIdBuilder_ != null) {
+              return slaveIdBuilder_.getMessageOrBuilder();
+            } else {
+              return slaveId_;
+            }
+          }
+          /**
+           * <code>optional .mesos.SlaveID slave_id = 2;</code>
+           */
+          private com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.SlaveID, org.apache.mesos.Protos.SlaveID.Builder, org.apache.mesos.Protos.SlaveIDOrBuilder> 
+              getSlaveIdFieldBuilder() {
+            if (slaveIdBuilder_ == null) {
+              slaveIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                  org.apache.mesos.Protos.SlaveID, org.apache.mesos.Protos.SlaveID.Builder, org.apache.mesos.Protos.SlaveIDOrBuilder>(
+                      slaveId_,
+                      getParentForChildren(),
+                      isClean());
+              slaveId_ = null;
+            }
+            return slaveIdBuilder_;
+          }
+
+          // @@protoc_insertion_point(builder_scope:mesos.scheduler.Call.Reconcile.Task)
+        }
+
+        static {
+          defaultInstance = new Task(true);
+          defaultInstance.initFields();
+        }
+
+        // @@protoc_insertion_point(class_scope:mesos.scheduler.Call.Reconcile.Task)
+      }
+
+      // repeated .mesos.scheduler.Call.Reconcile.Task tasks = 1;
+      public static final int TASKS_FIELD_NUMBER = 1;
+      private java.util.List<org.apache.mesos.scheduler.Protos.Call.Reconcile.Task> tasks_;
+      /**
+       * <code>repeated .mesos.scheduler.Call.Reconcile.Task tasks = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.scheduler.Protos.Call.Reconcile.Task> getTasksList() {
+        return tasks_;
+      }
+      /**
+       * <code>repeated .mesos.scheduler.Call.Reconcile.Task tasks = 1;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.scheduler.Protos.Call.Reconcile.TaskOrBuilder> 
+          getTasksOrBuilderList() {
+        return tasks_;
+      }
+      /**
+       * <code>repeated .mesos.scheduler.Call.Reconcile.Task tasks = 1;</code>
+       */
+      public int getTasksCount() {
+        return tasks_.size();
+      }
+      /**
+       * <code>repeated .mesos.scheduler.Call.Reconcile.Task tasks = 1;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Call.Reconcile.Task getTasks(int index) {
+        return tasks_.get(index);
+      }
+      /**
+       * <code>repeated .mesos.scheduler.Call.Reconcile.Task tasks = 1;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Call.Reconcile.TaskOrBuilder getTasksOrBuilder(
+          int index) {
+        return tasks_.get(index);
+      }
+
+      private void initFields() {
+        tasks_ = java.util.Collections.emptyList();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        for (int i = 0; i < getTasksCount(); i++) {
+          if (!getTasks(i).isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        for (int i = 0; i < tasks_.size(); i++) {
+          output.writeMessage(1, tasks_.get(i));
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        for (int i = 0; i < tasks_.size(); i++) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, tasks_.get(i));
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.scheduler.Protos.Call.Reconcile parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Reconcile parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Reconcile parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Reconcile parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Reconcile parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Reconcile parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Reconcile parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Reconcile parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Reconcile parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Reconcile parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.scheduler.Protos.Call.Reconcile prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.scheduler.Call.Reconcile}
+       *
+       * <pre>
+       * Allows the scheduler to query the status for non-terminal tasks.
+       * This causes the master to send back the latest task status for
+       * each task in 'tasks', if possible. Tasks that are no longer known
+       * will result in a TASK_LOST, TASK_UNKNOWN, or TASK_UNREACHABLE update.
+       * If 'tasks' is empty, then the master will send the latest status
+       * for each task currently known.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.scheduler.Protos.Call.ReconcileOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Reconcile_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Reconcile_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.scheduler.Protos.Call.Reconcile.class, org.apache.mesos.scheduler.Protos.Call.Reconcile.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.scheduler.Protos.Call.Reconcile.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getTasksFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (tasksBuilder_ == null) {
+            tasks_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000001);
+          } else {
+            tasksBuilder_.clear();
+          }
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Reconcile_descriptor;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Call.Reconcile getDefaultInstanceForType() {
+          return org.apache.mesos.scheduler.Protos.Call.Reconcile.getDefaultInstance();
+        }
+
+        public org.apache.mesos.scheduler.Protos.Call.Reconcile build() {
+          org.apache.mesos.scheduler.Protos.Call.Reconcile result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Call.Reconcile buildPartial() {
+          org.apache.mesos.scheduler.Protos.Call.Reconcile result = new org.apache.mesos.scheduler.Protos.Call.Reconcile(this);
+          int from_bitField0_ = bitField0_;
+          if (tasksBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              tasks_ = java.util.Collections.unmodifiableList(tasks_);
+              bitField0_ = (bitField0_ & ~0x00000001);
+            }
+            result.tasks_ = tasks_;
+          } else {
+            result.tasks_ = tasksBuilder_.build();
+          }
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.scheduler.Protos.Call.Reconcile) {
+            return mergeFrom((org.apache.mesos.scheduler.Protos.Call.Reconcile)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.scheduler.Protos.Call.Reconcile other) {
+          if (other == org.apache.mesos.scheduler.Protos.Call.Reconcile.getDefaultInstance()) return this;
+          if (tasksBuilder_ == null) {
+            if (!other.tasks_.isEmpty()) {
+              if (tasks_.isEmpty()) {
+                tasks_ = other.tasks_;
+                bitField0_ = (bitField0_ & ~0x00000001);
+              } else {
+                ensureTasksIsMutable();
+                tasks_.addAll(other.tasks_);
+              }
+              onChanged();
+            }
+          } else {
+            if (!other.tasks_.isEmpty()) {
+              if (tasksBuilder_.isEmpty()) {
+                tasksBuilder_.dispose();
+                tasksBuilder_ = null;
+                tasks_ = other.tasks_;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                tasksBuilder_ = 
+                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                     getTasksFieldBuilder() : null;
+              } else {
+                tasksBuilder_.addAllMessages(other.tasks_);
+              }
+            }
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          for (int i = 0; i < getTasksCount(); i++) {
+            if (!getTasks(i).isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.scheduler.Protos.Call.Reconcile parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.scheduler.Protos.Call.Reconcile) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // repeated .mesos.scheduler.Call.Reconcile.Task tasks = 1;
+        private java.util.List<org.apache.mesos.scheduler.Protos.Call.Reconcile.Task> tasks_ =
+          java.util.Collections.emptyList();
+        private void ensureTasksIsMutable() {
+          if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+            tasks_ = new java.util.ArrayList<org.apache.mesos.scheduler.Protos.Call.Reconcile.Task>(tasks_);
+            bitField0_ |= 0x00000001;
+           }
+        }
+
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.scheduler.Protos.Call.Reconcile.Task, org.apache.mesos.scheduler.Protos.Call.Reconcile.Task.Builder, org.apache.mesos.scheduler.Protos.Call.Reconcile.TaskOrBuilder> tasksBuilder_;
+
+        /**
+         * <code>repeated .mesos.scheduler.Call.Reconcile.Task tasks = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.scheduler.Protos.Call.Reconcile.Task> getTasksList() {
+          if (tasksBuilder_ == null) {
+            return java.util.Collections.unmodifiableList(tasks_);
+          } else {
+            return tasksBuilder_.getMessageList();
+          }
+        }
+        /**
+         * <code>repeated .mesos.scheduler.Call.Reconcile.Task tasks = 1;</code>
+         */
+        public int getTasksCount() {
+          if (tasksBuilder_ == null) {
+            return tasks_.size();
+          } else {
+            return tasksBuilder_.getCount();
+          }
+        }
+        /**
+         * <code>repeated .mesos.scheduler.Call.Reconcile.Task tasks = 1;</code>
+         */
+        public org.apache.mesos.scheduler.Protos.Call.Reconcile.Task getTasks(int index) {
+          if (tasksBuilder_ == null) {
+            return tasks_.get(index);
+          } else {
+            return tasksBuilder_.getMessage(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.scheduler.Call.Reconcile.Task tasks = 1;</code>
+         */
+        public Builder setTasks(
+            int index, org.apache.mesos.scheduler.Protos.Call.Reconcile.Task value) {
+          if (tasksBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureTasksIsMutable();
+            tasks_.set(index, value);
+            onChanged();
+          } else {
+            tasksBuilder_.setMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.scheduler.Call.Reconcile.Task tasks = 1;</code>
+         */
+        public Builder setTasks(
+            int index, org.apache.mesos.scheduler.Protos.Call.Reconcile.Task.Builder builderForValue) {
+          if (tasksBuilder_ == null) {
+            ensureTasksIsMutable();
+            tasks_.set(index, builderForValue.build());
+            onChanged();
+          } else {
+            tasksBuilder_.setMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.scheduler.Call.Reconcile.Task tasks = 1;</code>
+         */
+        public Builder addTasks(org.apache.mesos.scheduler.Protos.Call.Reconcile.Task value) {
+          if (tasksBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureTasksIsMutable();
+            tasks_.add(value);
+            onChanged();
+          } else {
+            tasksBuilder_.addMessage(value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.scheduler.Call.Reconcile.Task tasks = 1;</code>
+         */
+        public Builder addTasks(
+            int index, org.apache.mesos.scheduler.Protos.Call.Reconcile.Task value) {
+          if (tasksBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureTasksIsMutable();
+            tasks_.add(index, value);
+            onChanged();
+          } else {
+            tasksBuilder_.addMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.scheduler.Call.Reconcile.Task tasks = 1;</code>
+         */
+        public Builder addTasks(
+            org.apache.mesos.scheduler.Protos.Call.Reconcile.Task.Builder builderForValue) {
+          if (tasksBuilder_ == null) {
+            ensureTasksIsMutable();
+            tasks_.add(builderForValue.build());
+            onChanged();
+          } else {
+            tasksBuilder_.addMessage(builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.scheduler.Call.Reconcile.Task tasks = 1;</code>
+         */
+        public Builder addTasks(
+            int index, org.apache.mesos.scheduler.Protos.Call.Reconcile.Task.Builder builderForValue) {
+          if (tasksBuilder_ == null) {
+            ensureTasksIsMutable();
+            tasks_.add(index, builderForValue.build());
+            onChanged();
+          } else {
+            tasksBuilder_.addMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.scheduler.Call.Reconcile.Task tasks = 1;</code>
+         */
+        public Builder addAllTasks(
+            java.lang.Iterable<? extends org.apache.mesos.scheduler.Protos.Call.Reconcile.Task> values) {
+          if (tasksBuilder_ == null) {
+            ensureTasksIsMutable();
+            super.addAll(values, tasks_);
+            onChanged();
+          } else {
+            tasksBuilder_.addAllMessages(values);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.scheduler.Call.Reconcile.Task tasks = 1;</code>
+         */
+        public Builder clearTasks() {
+          if (tasksBuilder_ == null) {
+            tasks_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000001);
+            onChanged();
+          } else {
+            tasksBuilder_.clear();
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.scheduler.Call.Reconcile.Task tasks = 1;</code>
+         */
+        public Builder removeTasks(int index) {
+          if (tasksBuilder_ == null) {
+            ensureTasksIsMutable();
+            tasks_.remove(index);
+            onChanged();
+          } else {
+            tasksBuilder_.remove(index);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.scheduler.Call.Reconcile.Task tasks = 1;</code>
+         */
+        public org.apache.mesos.scheduler.Protos.Call.Reconcile.Task.Builder getTasksBuilder(
+            int index) {
+          return getTasksFieldBuilder().getBuilder(index);
+        }
+        /**
+         * <code>repeated .mesos.scheduler.Call.Reconcile.Task tasks = 1;</code>
+         */
+        public org.apache.mesos.scheduler.Protos.Call.Reconcile.TaskOrBuilder getTasksOrBuilder(
+            int index) {
+          if (tasksBuilder_ == null) {
+            return tasks_.get(index);  } else {
+            return tasksBuilder_.getMessageOrBuilder(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.scheduler.Call.Reconcile.Task tasks = 1;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.scheduler.Protos.Call.Reconcile.TaskOrBuilder> 
+             getTasksOrBuilderList() {
+          if (tasksBuilder_ != null) {
+            return tasksBuilder_.getMessageOrBuilderList();
+          } else {
+            return java.util.Collections.unmodifiableList(tasks_);
+          }
+        }
+        /**
+         * <code>repeated .mesos.scheduler.Call.Reconcile.Task tasks = 1;</code>
+         */
+        public org.apache.mesos.scheduler.Protos.Call.Reconcile.Task.Builder addTasksBuilder() {
+          return getTasksFieldBuilder().addBuilder(
+              org.apache.mesos.scheduler.Protos.Call.Reconcile.Task.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.scheduler.Call.Reconcile.Task tasks = 1;</code>
+         */
+        public org.apache.mesos.scheduler.Protos.Call.Reconcile.Task.Builder addTasksBuilder(
+            int index) {
+          return getTasksFieldBuilder().addBuilder(
+              index, org.apache.mesos.scheduler.Protos.Call.Reconcile.Task.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.scheduler.Call.Reconcile.Task tasks = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.scheduler.Protos.Call.Reconcile.Task.Builder> 
+             getTasksBuilderList() {
+          return getTasksFieldBuilder().getBuilderList();
+        }
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.scheduler.Protos.Call.Reconcile.Task, org.apache.mesos.scheduler.Protos.Call.Reconcile.Task.Builder, org.apache.mesos.scheduler.Protos.Call.Reconcile.TaskOrBuilder> 
+            getTasksFieldBuilder() {
+          if (tasksBuilder_ == null) {
+            tasksBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.scheduler.Protos.Call.Reconcile.Task, org.apache.mesos.scheduler.Protos.Call.Reconcile.Task.Builder, org.apache.mesos.scheduler.Protos.Call.Reconcile.TaskOrBuilder>(
+                    tasks_,
+                    ((bitField0_ & 0x00000001) == 0x00000001),
+                    getParentForChildren(),
+                    isClean());
+            tasks_ = null;
+          }
+          return tasksBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.scheduler.Call.Reconcile)
+      }
+
+      static {
+        defaultInstance = new Reconcile(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.scheduler.Call.Reconcile)
+    }
+
+    public interface MessageOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required .mesos.SlaveID slave_id = 1;
+      /**
+       * <code>required .mesos.SlaveID slave_id = 1;</code>
+       */
+      boolean hasSlaveId();
+      /**
+       * <code>required .mesos.SlaveID slave_id = 1;</code>
+       */
+      org.apache.mesos.Protos.SlaveID getSlaveId();
+      /**
+       * <code>required .mesos.SlaveID slave_id = 1;</code>
+       */
+      org.apache.mesos.Protos.SlaveIDOrBuilder getSlaveIdOrBuilder();
+
+      // required .mesos.ExecutorID executor_id = 2;
+      /**
+       * <code>required .mesos.ExecutorID executor_id = 2;</code>
+       */
+      boolean hasExecutorId();
+      /**
+       * <code>required .mesos.ExecutorID executor_id = 2;</code>
+       */
+      org.apache.mesos.Protos.ExecutorID getExecutorId();
+      /**
+       * <code>required .mesos.ExecutorID executor_id = 2;</code>
+       */
+      org.apache.mesos.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder();
+
+      // required bytes data = 3;
+      /**
+       * <code>required bytes data = 3;</code>
+       */
+      boolean hasData();
+      /**
+       * <code>required bytes data = 3;</code>
+       */
+      com.google.protobuf.ByteString getData();
+    }
+    /**
+     * Protobuf type {@code mesos.scheduler.Call.Message}
+     *
+     * <pre>
+     * Sends arbitrary binary data to the executor. Note that Mesos
+     * neither interprets this data nor makes any guarantees about the
+     * delivery of this message to the executor.
+     * </pre>
+     */
+    public static final class Message extends
+        com.google.protobuf.GeneratedMessage
+        implements MessageOrBuilder {
+      // Use Message.newBuilder() to construct.
+      private Message(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Message(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Message defaultInstance;
+      public static Message getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Message getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Message(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.Protos.SlaveID.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = slaveId_.toBuilder();
+                }
+                slaveId_ = input.readMessage(org.apache.mesos.Protos.SlaveID.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(slaveId_);
+                  slaveId_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+              case 18: {
+                org.apache.mesos.Protos.ExecutorID.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                  subBuilder = executorId_.toBuilder();
+                }
+                executorId_ = input.readMessage(org.apache.mesos.Protos.ExecutorID.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(executorId_);
+                  executorId_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000002;
+                break;
+              }
+              case 26: {
+                bitField0_ |= 0x00000004;
+                data_ = input.readBytes();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Message_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Message_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.scheduler.Protos.Call.Message.class, org.apache.mesos.scheduler.Protos.Call.Message.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Message> PARSER =
+          new com.google.protobuf.AbstractParser<Message>() {
+        public Message parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Message(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Message> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required .mesos.SlaveID slave_id = 1;
+      public static final int SLAVE_ID_FIELD_NUMBER = 1;
+      private org.apache.mesos.Protos.SlaveID slaveId_;
+      /**
+       * <code>required .mesos.SlaveID slave_id = 1;</code>
+       */
+      public boolean hasSlaveId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.SlaveID slave_id = 1;</code>
+       */
+      public org.apache.mesos.Protos.SlaveID getSlaveId() {
+        return slaveId_;
+      }
+      /**
+       * <code>required .mesos.SlaveID slave_id = 1;</code>
+       */
+      public org.apache.mesos.Protos.SlaveIDOrBuilder getSlaveIdOrBuilder() {
+        return slaveId_;
+      }
+
+      // required .mesos.ExecutorID executor_id = 2;
+      public static final int EXECUTOR_ID_FIELD_NUMBER = 2;
+      private org.apache.mesos.Protos.ExecutorID executorId_;
+      /**
+       * <code>required .mesos.ExecutorID executor_id = 2;</code>
+       */
+      public boolean hasExecutorId() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required .mesos.ExecutorID executor_id = 2;</code>
+       */
+      public org.apache.mesos.Protos.ExecutorID getExecutorId() {
+        return executorId_;
+      }
+      /**
+       * <code>required .mesos.ExecutorID executor_id = 2;</code>
+       */
+      public org.apache.mesos.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder() {
+        return executorId_;
+      }
+
+      // required bytes data = 3;
+      public static final int DATA_FIELD_NUMBER = 3;
+      private com.google.protobuf.ByteString data_;
+      /**
+       * <code>required bytes data = 3;</code>
+       */
+      public boolean hasData() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>required bytes data = 3;</code>
+       */
+      public com.google.protobuf.ByteString getData() {
+        return data_;
+      }
+
+      private void initFields() {
+        slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+        executorId_ = org.apache.mesos.Protos.ExecutorID.getDefaultInstance();
+        data_ = com.google.protobuf.ByteString.EMPTY;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasSlaveId()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!hasExecutorId()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!hasData()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getSlaveId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getExecutorId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, slaveId_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeMessage(2, executorId_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeBytes(3, data_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, slaveId_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(2, executorId_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(3, data_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.scheduler.Protos.Call.Message parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Message parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Message parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Message parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Message parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Message parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Message parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Message parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Message parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Message parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.scheduler.Protos.Call.Message prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.scheduler.Call.Message}
+       *
+       * <pre>
+       * Sends arbitrary binary data to the executor. Note that Mesos
+       * neither interprets this data nor makes any guarantees about the
+       * delivery of this message to the executor.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.scheduler.Protos.Call.MessageOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Message_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Message_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.scheduler.Protos.Call.Message.class, org.apache.mesos.scheduler.Protos.Call.Message.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.scheduler.Protos.Call.Message.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getSlaveIdFieldBuilder();
+            getExecutorIdFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (slaveIdBuilder_ == null) {
+            slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+          } else {
+            slaveIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          if (executorIdBuilder_ == null) {
+            executorId_ = org.apache.mesos.Protos.ExecutorID.getDefaultInstance();
+          } else {
+            executorIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          data_ = com.google.protobuf.ByteString.EMPTY;
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Message_descriptor;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Call.Message getDefaultInstanceForType() {
+          return org.apache.mesos.scheduler.Protos.Call.Message.getDefaultInstance();
+        }
+
+        public org.apache.mesos.scheduler.Protos.Call.Message build() {
+          org.apache.mesos.scheduler.Protos.Call.Message result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Call.Message buildPartial() {
+          org.apache.mesos.scheduler.Protos.Call.Message result = new org.apache.mesos.scheduler.Protos.Call.Message(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (slaveIdBuilder_ == null) {
+            result.slaveId_ = slaveId_;
+          } else {
+            result.slaveId_ = slaveIdBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          if (executorIdBuilder_ == null) {
+            result.executorId_ = executorId_;
+          } else {
+            result.executorId_ = executorIdBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          result.data_ = data_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.scheduler.Protos.Call.Message) {
+            return mergeFrom((org.apache.mesos.scheduler.Protos.Call.Message)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.scheduler.Protos.Call.Message other) {
+          if (other == org.apache.mesos.scheduler.Protos.Call.Message.getDefaultInstance()) return this;
+          if (other.hasSlaveId()) {
+            mergeSlaveId(other.getSlaveId());
+          }
+          if (other.hasExecutorId()) {
+            mergeExecutorId(other.getExecutorId());
+          }
+          if (other.hasData()) {
+            setData(other.getData());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasSlaveId()) {
+            
+            return false;
+          }
+          if (!hasExecutorId()) {
+            
+            return false;
+          }
+          if (!hasData()) {
+            
+            return false;
+          }
+          if (!getSlaveId().isInitialized()) {
+            
+            return false;
+          }
+          if (!getExecutorId().isInitialized()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.scheduler.Protos.Call.Message parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.scheduler.Protos.Call.Message) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required .mesos.SlaveID slave_id = 1;
+        private org.apache.mesos.Protos.SlaveID slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.SlaveID, org.apache.mesos.Protos.SlaveID.Builder, org.apache.mesos.Protos.SlaveIDOrBuilder> slaveIdBuilder_;
+        /**
+         * <code>required .mesos.SlaveID slave_id = 1;</code>
+         */
+        public boolean hasSlaveId() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.SlaveID slave_id = 1;</code>
+         */
+        public org.apache.mesos.Protos.SlaveID getSlaveId() {
+          if (slaveIdBuilder_ == null) {
+            return slaveId_;
+          } else {
+            return slaveIdBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.SlaveID slave_id = 1;</code>
+         */
+        public Builder setSlaveId(org.apache.mesos.Protos.SlaveID value) {
+          if (slaveIdBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            slaveId_ = value;
+            onChanged();
+          } else {
+            slaveIdBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.SlaveID slave_id = 1;</code>
+         */
+        public Builder setSlaveId(
+            org.apache.mesos.Protos.SlaveID.Builder builderForValue) {
+          if (slaveIdBuilder_ == null) {
+            slaveId_ = builderForValue.build();
+            onChanged();
+          } else {
+            slaveIdBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.SlaveID slave_id = 1;</code>
+         */
+        public Builder mergeSlaveId(org.apache.mesos.Protos.SlaveID value) {
+          if (slaveIdBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                slaveId_ != org.apache.mesos.Protos.SlaveID.getDefaultInstance()) {
+              slaveId_ =
+                org.apache.mesos.Protos.SlaveID.newBuilder(slaveId_).mergeFrom(value).buildPartial();
+            } else {
+              slaveId_ = value;
+            }
+            onChanged();
+          } else {
+            slaveIdBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.SlaveID slave_id = 1;</code>
+         */
+        public Builder clearSlaveId() {
+          if (slaveIdBuilder_ == null) {
+            slaveId_ = org.apache.mesos.Protos.SlaveID.getDefaultInstance();
+            onChanged();
+          } else {
+            slaveIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>required .mesos.SlaveID slave_id = 1;</code>
+         */
+        public org.apache.mesos.Protos.SlaveID.Builder getSlaveIdBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getSlaveIdFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.SlaveID slave_id = 1;</code>
+         */
+        public org.apache.mesos.Protos.SlaveIDOrBuilder getSlaveIdOrBuilder() {
+          if (slaveIdBuilder_ != null) {
+            return slaveIdBuilder_.getMessageOrBuilder();
+          } else {
+            return slaveId_;
+          }
+        }
+        /**
+         * <code>required .mesos.SlaveID slave_id = 1;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.SlaveID, org.apache.mesos.Protos.SlaveID.Builder, org.apache.mesos.Protos.SlaveIDOrBuilder> 
+            getSlaveIdFieldBuilder() {
+          if (slaveIdBuilder_ == null) {
+            slaveIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.SlaveID, org.apache.mesos.Protos.SlaveID.Builder, org.apache.mesos.Protos.SlaveIDOrBuilder>(
+                    slaveId_,
+                    getParentForChildren(),
+                    isClean());
+            slaveId_ = null;
+          }
+          return slaveIdBuilder_;
+        }
+
+        // required .mesos.ExecutorID executor_id = 2;
+        private org.apache.mesos.Protos.ExecutorID executorId_ = org.apache.mesos.Protos.ExecutorID.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.ExecutorID, org.apache.mesos.Protos.ExecutorID.Builder, org.apache.mesos.Protos.ExecutorIDOrBuilder> executorIdBuilder_;
+        /**
+         * <code>required .mesos.ExecutorID executor_id = 2;</code>
+         */
+        public boolean hasExecutorId() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>required .mesos.ExecutorID executor_id = 2;</code>
+         */
+        public org.apache.mesos.Protos.ExecutorID getExecutorId() {
+          if (executorIdBuilder_ == null) {
+            return executorId_;
+          } else {
+            return executorIdBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.ExecutorID executor_id = 2;</code>
+         */
+        public Builder setExecutorId(org.apache.mesos.Protos.ExecutorID value) {
+          if (executorIdBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            executorId_ = value;
+            onChanged();
+          } else {
+            executorIdBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>required .mesos.ExecutorID executor_id = 2;</code>
+         */
+        public Builder setExecutorId(
+            org.apache.mesos.Protos.ExecutorID.Builder builderForValue) {
+          if (executorIdBuilder_ == null) {
+            executorId_ = builderForValue.build();
+            onChanged();
+          } else {
+            executorIdBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>required .mesos.ExecutorID executor_id = 2;</code>
+         */
+        public Builder mergeExecutorId(org.apache.mesos.Protos.ExecutorID value) {
+          if (executorIdBuilder_ == null) {
+            if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                executorId_ != org.apache.mesos.Protos.ExecutorID.getDefaultInstance()) {
+              executorId_ =
+                org.apache.mesos.Protos.ExecutorID.newBuilder(executorId_).mergeFrom(value).buildPartial();
+            } else {
+              executorId_ = value;
+            }
+            onChanged();
+          } else {
+            executorIdBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>required .mesos.ExecutorID executor_id = 2;</code>
+         */
+        public Builder clearExecutorId() {
+          if (executorIdBuilder_ == null) {
+            executorId_ = org.apache.mesos.Protos.ExecutorID.getDefaultInstance();
+            onChanged();
+          } else {
+            executorIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+        /**
+         * <code>required .mesos.ExecutorID executor_id = 2;</code>
+         */
+        public org.apache.mesos.Protos.ExecutorID.Builder getExecutorIdBuilder() {
+          bitField0_ |= 0x00000002;
+          onChanged();
+          return getExecutorIdFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.ExecutorID executor_id = 2;</code>
+         */
+        public org.apache.mesos.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder() {
+          if (executorIdBuilder_ != null) {
+            return executorIdBuilder_.getMessageOrBuilder();
+          } else {
+            return executorId_;
+          }
+        }
+        /**
+         * <code>required .mesos.ExecutorID executor_id = 2;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.Protos.ExecutorID, org.apache.mesos.Protos.ExecutorID.Builder, org.apache.mesos.Protos.ExecutorIDOrBuilder> 
+            getExecutorIdFieldBuilder() {
+          if (executorIdBuilder_ == null) {
+            executorIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.Protos.ExecutorID, org.apache.mesos.Protos.ExecutorID.Builder, org.apache.mesos.Protos.ExecutorIDOrBuilder>(
+                    executorId_,
+                    getParentForChildren(),
+                    isClean());
+            executorId_ = null;
+          }
+          return executorIdBuilder_;
+        }
+
+        // required bytes data = 3;
+        private com.google.protobuf.ByteString data_ = com.google.protobuf.ByteString.EMPTY;
+        /**
+         * <code>required bytes data = 3;</code>
+         */
+        public boolean hasData() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>required bytes data = 3;</code>
+         */
+        public com.google.protobuf.ByteString getData() {
+          return data_;
+        }
+        /**
+         * <code>required bytes data = 3;</code>
+         */
+        public Builder setData(com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+          data_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required bytes data = 3;</code>
+         */
+        public Builder clearData() {
+          bitField0_ = (bitField0_ & ~0x00000004);
+          data_ = getDefaultInstance().getData();
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.scheduler.Call.Message)
+      }
+
+      static {
+        defaultInstance = new Message(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.scheduler.Call.Message)
+    }
+
+    public interface RequestOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // repeated .mesos.Request requests = 1;
+      /**
+       * <code>repeated .mesos.Request requests = 1;</code>
+       */
+      java.util.List<org.apache.mesos.Protos.Request> 
+          getRequestsList();
+      /**
+       * <code>repeated .mesos.Request requests = 1;</code>
+       */
+      org.apache.mesos.Protos.Request getRequests(int index);
+      /**
+       * <code>repeated .mesos.Request requests = 1;</code>
+       */
+      int getRequestsCount();
+      /**
+       * <code>repeated .mesos.Request requests = 1;</code>
+       */
+      java.util.List<? extends org.apache.mesos.Protos.RequestOrBuilder> 
+          getRequestsOrBuilderList();
+      /**
+       * <code>repeated .mesos.Request requests = 1;</code>
+       */
+      org.apache.mesos.Protos.RequestOrBuilder getRequestsOrBuilder(
+          int index);
+    }
+    /**
+     * Protobuf type {@code mesos.scheduler.Call.Request}
+     *
+     * <pre>
+     * Requests a specific set of resources from Mesos's allocator. If
+     * the allocator has support for this, corresponding offers will be
+     * sent asynchronously via the OFFERS event(s).
+     *
+     * NOTE: The built-in hierarchical allocator doesn't have support
+     * for this call and hence simply ignores it.
+     * </pre>
+     */
+    public static final class Request extends
+        com.google.protobuf.GeneratedMessage
+        implements RequestOrBuilder {
+      // Use Request.newBuilder() to construct.
+      private Request(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Request(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Request defaultInstance;
+      public static Request getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Request getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Request(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                  requests_ = new java.util.ArrayList<org.apache.mesos.Protos.Request>();
+                  mutable_bitField0_ |= 0x00000001;
+                }
+                requests_.add(input.readMessage(org.apache.mesos.Protos.Request.PARSER, extensionRegistry));
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+            requests_ = java.util.Collections.unmodifiableList(requests_);
+          }
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Request_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Request_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.scheduler.Protos.Call.Request.class, org.apache.mesos.scheduler.Protos.Call.Request.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Request> PARSER =
+          new com.google.protobuf.AbstractParser<Request>() {
+        public Request parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Request(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Request> getParserForType() {
+        return PARSER;
+      }
+
+      // repeated .mesos.Request requests = 1;
+      public static final int REQUESTS_FIELD_NUMBER = 1;
+      private java.util.List<org.apache.mesos.Protos.Request> requests_;
+      /**
+       * <code>repeated .mesos.Request requests = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.Protos.Request> getRequestsList() {
+        return requests_;
+      }
+      /**
+       * <code>repeated .mesos.Request requests = 1;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.Protos.RequestOrBuilder> 
+          getRequestsOrBuilderList() {
+        return requests_;
+      }
+      /**
+       * <code>repeated .mesos.Request requests = 1;</code>
+       */
+      public int getRequestsCount() {
+        return requests_.size();
+      }
+      /**
+       * <code>repeated .mesos.Request requests = 1;</code>
+       */
+      public org.apache.mesos.Protos.Request getRequests(int index) {
+        return requests_.get(index);
+      }
+      /**
+       * <code>repeated .mesos.Request requests = 1;</code>
+       */
+      public org.apache.mesos.Protos.RequestOrBuilder getRequestsOrBuilder(
+          int index) {
+        return requests_.get(index);
+      }
+
+      private void initFields() {
+        requests_ = java.util.Collections.emptyList();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        for (int i = 0; i < getRequestsCount(); i++) {
+          if (!getRequests(i).isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        for (int i = 0; i < requests_.size(); i++) {
+          output.writeMessage(1, requests_.get(i));
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        for (int i = 0; i < requests_.size(); i++) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, requests_.get(i));
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.scheduler.Protos.Call.Request parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Request parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Request parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Request parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Request parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Request parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Request parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Request parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Request parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Request parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.scheduler.Protos.Call.Request prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.scheduler.Call.Request}
+       *
+       * <pre>
+       * Requests a specific set of resources from Mesos's allocator. If
+       * the allocator has support for this, corresponding offers will be
+       * sent asynchronously via the OFFERS event(s).
+       *
+       * NOTE: The built-in hierarchical allocator doesn't have support
+       * for this call and hence simply ignores it.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.scheduler.Protos.Call.RequestOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Request_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Request_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.scheduler.Protos.Call.Request.class, org.apache.mesos.scheduler.Protos.Call.Request.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.scheduler.Protos.Call.Request.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getRequestsFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (requestsBuilder_ == null) {
+            requests_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000001);
+          } else {
+            requestsBuilder_.clear();
+          }
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Request_descriptor;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Call.Request getDefaultInstanceForType() {
+          return org.apache.mesos.scheduler.Protos.Call.Request.getDefaultInstance();
+        }
+
+        public org.apache.mesos.scheduler.Protos.Call.Request build() {
+          org.apache.mesos.scheduler.Protos.Call.Request result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Call.Request buildPartial() {
+          org.apache.mesos.scheduler.Protos.Call.Request result = new org.apache.mesos.scheduler.Protos.Call.Request(this);
+          int from_bitField0_ = bitField0_;
+          if (requestsBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              requests_ = java.util.Collections.unmodifiableList(requests_);
+              bitField0_ = (bitField0_ & ~0x00000001);
+            }
+            result.requests_ = requests_;
+          } else {
+            result.requests_ = requestsBuilder_.build();
+          }
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.scheduler.Protos.Call.Request) {
+            return mergeFrom((org.apache.mesos.scheduler.Protos.Call.Request)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.scheduler.Protos.Call.Request other) {
+          if (other == org.apache.mesos.scheduler.Protos.Call.Request.getDefaultInstance()) return this;
+          if (requestsBuilder_ == null) {
+            if (!other.requests_.isEmpty()) {
+              if (requests_.isEmpty()) {
+                requests_ = other.requests_;
+                bitField0_ = (bitField0_ & ~0x00000001);
+              } else {
+                ensureRequestsIsMutable();
+                requests_.addAll(other.requests_);
+              }
+              onChanged();
+            }
+          } else {
+            if (!other.requests_.isEmpty()) {
+              if (requestsBuilder_.isEmpty()) {
+                requestsBuilder_.dispose();
+                requestsBuilder_ = null;
+                requests_ = other.requests_;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                requestsBuilder_ = 
+                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                     getRequestsFieldBuilder() : null;
+              } else {
+                requestsBuilder_.addAllMessages(other.requests_);
+              }
+            }
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          for (int i = 0; i < getRequestsCount(); i++) {
+            if (!getRequests(i).isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.scheduler.Protos.Call.Request parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.scheduler.Protos.Call.Request) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // repeated .mesos.Request requests = 1;
+        private java.util.List<org.apache.mesos.Protos.Request> requests_ =
+          java.util.Collections.emptyList();
+        private void ensureRequestsIsMutable() {
+          if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+            requests_ = new java.util.ArrayList<org.apache.mesos.Protos.Request>(requests_);
+            bitField0_ |= 0x00000001;
+           }
+        }
+
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.Protos.Request, org.apache.mesos.Protos.Request.Builder, org.apache.mesos.Protos.RequestOrBuilder> requestsBuilder_;
+
+        /**
+         * <code>repeated .mesos.Request requests = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.Protos.Request> getRequestsList() {
+          if (requestsBuilder_ == null) {
+            return java.util.Collections.unmodifiableList(requests_);
+          } else {
+            return requestsBuilder_.getMessageList();
+          }
+        }
+        /**
+         * <code>repeated .mesos.Request requests = 1;</code>
+         */
+        public int getRequestsCount() {
+          if (requestsBuilder_ == null) {
+            return requests_.size();
+          } else {
+            return requestsBuilder_.getCount();
+          }
+        }
+        /**
+         * <code>repeated .mesos.Request requests = 1;</code>
+         */
+        public org.apache.mesos.Protos.Request getRequests(int index) {
+          if (requestsBuilder_ == null) {
+            return requests_.get(index);
+          } else {
+            return requestsBuilder_.getMessage(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.Request requests = 1;</code>
+         */
+        public Builder setRequests(
+            int index, org.apache.mesos.Protos.Request value) {
+          if (requestsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureRequestsIsMutable();
+            requests_.set(index, value);
+            onChanged();
+          } else {
+            requestsBuilder_.setMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Request requests = 1;</code>
+         */
+        public Builder setRequests(
+            int index, org.apache.mesos.Protos.Request.Builder builderForValue) {
+          if (requestsBuilder_ == null) {
+            ensureRequestsIsMutable();
+            requests_.set(index, builderForValue.build());
+            onChanged();
+          } else {
+            requestsBuilder_.setMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Request requests = 1;</code>
+         */
+        public Builder addRequests(org.apache.mesos.Protos.Request value) {
+          if (requestsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureRequestsIsMutable();
+            requests_.add(value);
+            onChanged();
+          } else {
+            requestsBuilder_.addMessage(value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Request requests = 1;</code>
+         */
+        public Builder addRequests(
+            int index, org.apache.mesos.Protos.Request value) {
+          if (requestsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureRequestsIsMutable();
+            requests_.add(index, value);
+            onChanged();
+          } else {
+            requestsBuilder_.addMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Request requests = 1;</code>
+         */
+        public Builder addRequests(
+            org.apache.mesos.Protos.Request.Builder builderForValue) {
+          if (requestsBuilder_ == null) {
+            ensureRequestsIsMutable();
+            requests_.add(builderForValue.build());
+            onChanged();
+          } else {
+            requestsBuilder_.addMessage(builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Request requests = 1;</code>
+         */
+        public Builder addRequests(
+            int index, org.apache.mesos.Protos.Request.Builder builderForValue) {
+          if (requestsBuilder_ == null) {
+            ensureRequestsIsMutable();
+            requests_.add(index, builderForValue.build());
+            onChanged();
+          } else {
+            requestsBuilder_.addMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Request requests = 1;</code>
+         */
+        public Builder addAllRequests(
+            java.lang.Iterable<? extends org.apache.mesos.Protos.Request> values) {
+          if (requestsBuilder_ == null) {
+            ensureRequestsIsMutable();
+            super.addAll(values, requests_);
+            onChanged();
+          } else {
+            requestsBuilder_.addAllMessages(values);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Request requests = 1;</code>
+         */
+        public Builder clearRequests() {
+          if (requestsBuilder_ == null) {
+            requests_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000001);
+            onChanged();
+          } else {
+            requestsBuilder_.clear();
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Request requests = 1;</code>
+         */
+        public Builder removeRequests(int index) {
+          if (requestsBuilder_ == null) {
+            ensureRequestsIsMutable();
+            requests_.remove(index);
+            onChanged();
+          } else {
+            requestsBuilder_.remove(index);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.Request requests = 1;</code>
+         */
+        public org.apache.mesos.Protos.Request.Builder getRequestsBuilder(
+            int index) {
+          return getRequestsFieldBuilder().getBuilder(index);
+        }
+        /**
+         * <code>repeated .mesos.Request requests = 1;</code>
+         */
+        public org.apache.mesos.Protos.RequestOrBuilder getRequestsOrBuilder(
+            int index) {
+          if (requestsBuilder_ == null) {
+            return requests_.get(index);  } else {
+            return requestsBuilder_.getMessageOrBuilder(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.Request requests = 1;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.Protos.RequestOrBuilder> 
+             getRequestsOrBuilderList() {
+          if (requestsBuilder_ != null) {
+            return requestsBuilder_.getMessageOrBuilderList();
+          } else {
+            return java.util.Collections.unmodifiableList(requests_);
+          }
+        }
+        /**
+         * <code>repeated .mesos.Request requests = 1;</code>
+         */
+        public org.apache.mesos.Protos.Request.Builder addRequestsBuilder() {
+          return getRequestsFieldBuilder().addBuilder(
+              org.apache.mesos.Protos.Request.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.Request requests = 1;</code>
+         */
+        public org.apache.mesos.Protos.Request.Builder addRequestsBuilder(
+            int index) {
+          return getRequestsFieldBuilder().addBuilder(
+              index, org.apache.mesos.Protos.Request.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.Request requests = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.Protos.Request.Builder> 
+             getRequestsBuilderList() {
+          return getRequestsFieldBuilder().getBuilderList();
+        }
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.Protos.Request, org.apache.mesos.Protos.Request.Builder, org.apache.mesos.Protos.RequestOrBuilder> 
+            getRequestsFieldBuilder() {
+          if (requestsBuilder_ == null) {
+            requestsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.Protos.Request, org.apache.mesos.Protos.Request.Builder, org.apache.mesos.Protos.RequestOrBuilder>(
+                    requests_,
+                    ((bitField0_ & 0x00000001) == 0x00000001),
+                    getParentForChildren(),
+                    isClean());
+            requests_ = null;
+          }
+          return requestsBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.scheduler.Call.Request)
+      }
+
+      static {
+        defaultInstance = new Request(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.scheduler.Call.Request)
+    }
+
+    public interface SuppressOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // repeated string roles = 1;
+      /**
+       * <code>repeated string roles = 1;</code>
+       */
+      java.util.List<java.lang.String>
+      getRolesList();
+      /**
+       * <code>repeated string roles = 1;</code>
+       */
+      int getRolesCount();
+      /**
+       * <code>repeated string roles = 1;</code>
+       */
+      java.lang.String getRoles(int index);
+      /**
+       * <code>repeated string roles = 1;</code>
+       */
+      com.google.protobuf.ByteString
+          getRolesBytes(int index);
+    }
+    /**
+     * Protobuf type {@code mesos.scheduler.Call.Suppress}
+     *
+     * <pre>
+     * Suppress offers for the specified roles. If `roles` is empty,
+     * the `SUPPRESS` call will suppress offers for all of the roles
+     * the framework is currently subscribed to.
+     * </pre>
+     */
+    public static final class Suppress extends
+        com.google.protobuf.GeneratedMessage
+        implements SuppressOrBuilder {
+      // Use Suppress.newBuilder() to construct.
+      private Suppress(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Suppress(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Suppress defaultInstance;
+      public static Suppress getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Suppress getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Suppress(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                  roles_ = new com.google.protobuf.LazyStringArrayList();
+                  mutable_bitField0_ |= 0x00000001;
+                }
+                roles_.add(input.readBytes());
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+            roles_ = new com.google.protobuf.UnmodifiableLazyStringList(roles_);
+          }
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Suppress_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Suppress_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.scheduler.Protos.Call.Suppress.class, org.apache.mesos.scheduler.Protos.Call.Suppress.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Suppress> PARSER =
+          new com.google.protobuf.AbstractParser<Suppress>() {
+        public Suppress parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Suppress(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Suppress> getParserForType() {
+        return PARSER;
+      }
+
+      // repeated string roles = 1;
+      public static final int ROLES_FIELD_NUMBER = 1;
+      private com.google.protobuf.LazyStringList roles_;
+      /**
+       * <code>repeated string roles = 1;</code>
+       */
+      public java.util.List<java.lang.String>
+          getRolesList() {
+        return roles_;
+      }
+      /**
+       * <code>repeated string roles = 1;</code>
+       */
+      public int getRolesCount() {
+        return roles_.size();
+      }
+      /**
+       * <code>repeated string roles = 1;</code>
+       */
+      public java.lang.String getRoles(int index) {
+        return roles_.get(index);
+      }
+      /**
+       * <code>repeated string roles = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getRolesBytes(int index) {
+        return roles_.getByteString(index);
+      }
+
+      private void initFields() {
+        roles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        for (int i = 0; i < roles_.size(); i++) {
+          output.writeBytes(1, roles_.getByteString(i));
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        {
+          int dataSize = 0;
+          for (int i = 0; i < roles_.size(); i++) {
+            dataSize += com.google.protobuf.CodedOutputStream
+              .computeBytesSizeNoTag(roles_.getByteString(i));
+          }
+          size += dataSize;
+          size += 1 * getRolesList().size();
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.scheduler.Protos.Call.Suppress parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Suppress parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Suppress parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Suppress parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Suppress parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Suppress parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Suppress parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Suppress parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Suppress parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.scheduler.Protos.Call.Suppress parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.scheduler.Protos.Call.Suppress prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.scheduler.Call.Suppress}
+       *
+       * <pre>
+       * Suppress offers for the specified roles. If `roles` is empty,
+       * the `SUPPRESS` call will suppress offers for all of the roles
+       * the framework is currently subscribed to.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.scheduler.Protos.Call.SuppressOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Suppress_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Suppress_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.scheduler.Protos.Call.Suppress.class, org.apache.mesos.scheduler.Protos.Call.Suppress.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.scheduler.Protos.Call.Suppress.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          roles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_Suppress_descriptor;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Call.Suppress getDefaultInstanceForType() {
+          return org.apache.mesos.scheduler.Protos.Call.Suppress.getDefaultInstance();
+        }
+
+        public org.apache.mesos.scheduler.Protos.Call.Suppress build() {
+          org.apache.mesos.scheduler.Protos.Call.Suppress result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.scheduler.Protos.Call.Suppress buildPartial() {
+          org.apache.mesos.scheduler.Protos.Call.Suppress result = new org.apache.mesos.scheduler.Protos.Call.Suppress(this);
+          int from_bitField0_ = bitField0_;
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            roles_ = new com.google.protobuf.UnmodifiableLazyStringList(
+                roles_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.roles_ = roles_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.scheduler.Protos.Call.Suppress) {
+            return mergeFrom((org.apache.mesos.scheduler.Protos.Call.Suppress)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.scheduler.Protos.Call.Suppress other) {
+          if (other == org.apache.mesos.scheduler.Protos.Call.Suppress.getDefaultInstance()) return this;
+          if (!other.roles_.isEmpty()) {
+            if (roles_.isEmpty()) {
+              roles_ = other.roles_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureRolesIsMutable();
+              roles_.addAll(other.roles_);
+            }
+            onChanged();
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.scheduler.Protos.Call.Suppress parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.scheduler.Protos.Call.Suppress) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // repeated string roles = 1;
+        private com.google.protobuf.LazyStringList roles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+        private void ensureRolesIsMutable() {
+          if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+            roles_ = new com.google.protobuf.LazyStringArrayList(roles_);
+            bitField0_ |= 0x00000001;
+           }
+        }
+        /**
+         * <code>repeated string roles = 1;</code>
+         */
+        public java.util.List<java.lang.String>
+            getRolesList() {
+          return java.util.Collections.unmodifiableList(roles_);
+        }
+        /**
+         * <code>repeated string roles = 1;</code>
+         */
+        public int getRolesCount() {
+          return roles_.size();
+        }
+        /**
+         * <code>repeated string roles = 1;</code>
+         */
+        public java.lang.String getRoles(int index) {
+          return roles_.get(index);
+        }
+        /**
+         * <code>repeated string roles = 1;</code>
+         */
+        public com.google.protobuf.ByteString
+            getRolesBytes(int index) {
+          return roles_.getByteString(index);
+        }
+        /**
+         * <code>repeated string roles = 1;</code>
+         */
+        public Builder setRoles(
+            int index, java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureRolesIsMutable();
+          roles_.set(index, value);
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>repeated string roles = 1;</code>
+         */
+        public Builder addRoles(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureRolesIsMutable();
+          roles_.add(value);
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>repeated string roles = 1;</code>
+         */
+        public Builder addAllRoles(
+            java.lang.Iterable<java.lang.String> values) {
+          ensureRolesIsMutable();
+          super.addAll(values, roles_);
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>repeated string roles = 1;</code>
+         */
+        public Builder clearRoles() {
+          roles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>repeated string roles = 1;</code>
+         */
+        public Builder addRolesBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureRolesIsMutable();
+          roles_.add(value);
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.scheduler.Call.Suppress)
+      }
+
+      static {
+        defaultInstance = new Suppress(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.scheduler.Call.Suppress)
+    }
+
+    private int bitField0_;
+    // optional .mesos.FrameworkID framework_id = 1;
+    public static final int FRAMEWORK_ID_FIELD_NUMBER = 1;
+    private org.apache.mesos.Protos.FrameworkID frameworkId_;
+    /**
+     * <code>optional .mesos.FrameworkID framework_id = 1;</code>
+     *
+     * <pre>
+     * Identifies who generated this call. Master assigns a framework id
+     * when a new scheduler subscribes for the first time. Once assigned,
+     * the scheduler must set the 'framework_id' here and within its
+     * FrameworkInfo (in any further 'Subscribe' calls). This allows the
+     * master to identify a scheduler correctly across disconnections,
+     * failovers, etc.
+     * </pre>
+     */
+    public boolean hasFrameworkId() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional .mesos.FrameworkID framework_id = 1;</code>
+     *
+     * <pre>
+     * Identifies who generated this call. Master assigns a framework id
+     * when a new scheduler subscribes for the first time. Once assigned,
+     * the scheduler must set the 'framework_id' here and within its
+     * FrameworkInfo (in any further 'Subscribe' calls). This allows the
+     * master to identify a scheduler correctly across disconnections,
+     * failovers, etc.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.FrameworkID getFrameworkId() {
+      return frameworkId_;
+    }
+    /**
+     * <code>optional .mesos.FrameworkID framework_id = 1;</code>
+     *
+     * <pre>
+     * Identifies who generated this call. Master assigns a framework id
+     * when a new scheduler subscribes for the first time. Once assigned,
+     * the scheduler must set the 'framework_id' here and within its
+     * FrameworkInfo (in any further 'Subscribe' calls). This allows the
+     * master to identify a scheduler correctly across disconnections,
+     * failovers, etc.
+     * </pre>
+     */
+    public org.apache.mesos.Protos.FrameworkIDOrBuilder getFrameworkIdOrBuilder() {
+      return frameworkId_;
+    }
+
+    // optional .mesos.scheduler.Call.Type type = 2;
+    public static final int TYPE_FIELD_NUMBER = 2;
+    private org.apache.mesos.scheduler.Protos.Call.Type type_;
+    /**
+     * <code>optional .mesos.scheduler.Call.Type type = 2;</code>
+     *
+     * <pre>
+     * Type of the call, indicates which optional field below should be
+     * present if that type has a nested message definition.
+     * See comments on `Event::Type` above on the reasoning behind this field being optional.
+     * </pre>
+     */
+    public boolean hasType() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional .mesos.scheduler.Call.Type type = 2;</code>
+     *
+     * <pre>
+     * Type of the call, indicates which optional field below should be
+     * present if that type has a nested message definition.
+     * See comments on `Event::Type` above on the reasoning behind this field being optional.
+     * </pre>
+     */
+    public org.apache.mesos.scheduler.Protos.Call.Type getType() {
+      return type_;
+    }
+
+    // optional .mesos.scheduler.Call.Subscribe subscribe = 3;
+    public static final int SUBSCRIBE_FIELD_NUMBER = 3;
+    private org.apache.mesos.scheduler.Protos.Call.Subscribe subscribe_;
+    /**
+     * <code>optional .mesos.scheduler.Call.Subscribe subscribe = 3;</code>
+     */
+    public boolean hasSubscribe() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional .mesos.scheduler.Call.Subscribe subscribe = 3;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Call.Subscribe getSubscribe() {
+      return subscribe_;
+    }
+    /**
+     * <code>optional .mesos.scheduler.Call.Subscribe subscribe = 3;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Call.SubscribeOrBuilder getSubscribeOrBuilder() {
+      return subscribe_;
+    }
+
+    // optional .mesos.scheduler.Call.Accept accept = 4;
+    public static final int ACCEPT_FIELD_NUMBER = 4;
+    private org.apache.mesos.scheduler.Protos.Call.Accept accept_;
+    /**
+     * <code>optional .mesos.scheduler.Call.Accept accept = 4;</code>
+     */
+    public boolean hasAccept() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional .mesos.scheduler.Call.Accept accept = 4;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Call.Accept getAccept() {
+      return accept_;
+    }
+    /**
+     * <code>optional .mesos.scheduler.Call.Accept accept = 4;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Call.AcceptOrBuilder getAcceptOrBuilder() {
+      return accept_;
+    }
+
+    // optional .mesos.scheduler.Call.Decline decline = 5;
+    public static final int DECLINE_FIELD_NUMBER = 5;
+    private org.apache.mesos.scheduler.Protos.Call.Decline decline_;
+    /**
+     * <code>optional .mesos.scheduler.Call.Decline decline = 5;</code>
+     */
+    public boolean hasDecline() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional .mesos.scheduler.Call.Decline decline = 5;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Call.Decline getDecline() {
+      return decline_;
+    }
+    /**
+     * <code>optional .mesos.scheduler.Call.Decline decline = 5;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Call.DeclineOrBuilder getDeclineOrBuilder() {
+      return decline_;
+    }
+
+    // optional .mesos.scheduler.Call.AcceptInverseOffers accept_inverse_offers = 13;
+    public static final int ACCEPT_INVERSE_OFFERS_FIELD_NUMBER = 13;
+    private org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers acceptInverseOffers_;
+    /**
+     * <code>optional .mesos.scheduler.Call.AcceptInverseOffers accept_inverse_offers = 13;</code>
+     */
+    public boolean hasAcceptInverseOffers() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional .mesos.scheduler.Call.AcceptInverseOffers accept_inverse_offers = 13;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers getAcceptInverseOffers() {
+      return acceptInverseOffers_;
+    }
+    /**
+     * <code>optional .mesos.scheduler.Call.AcceptInverseOffers accept_inverse_offers = 13;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffersOrBuilder getAcceptInverseOffersOrBuilder() {
+      return acceptInverseOffers_;
+    }
+
+    // optional .mesos.scheduler.Call.DeclineInverseOffers decline_inverse_offers = 14;
+    public static final int DECLINE_INVERSE_OFFERS_FIELD_NUMBER = 14;
+    private org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers declineInverseOffers_;
+    /**
+     * <code>optional .mesos.scheduler.Call.DeclineInverseOffers decline_inverse_offers = 14;</code>
+     */
+    public boolean hasDeclineInverseOffers() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional .mesos.scheduler.Call.DeclineInverseOffers decline_inverse_offers = 14;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers getDeclineInverseOffers() {
+      return declineInverseOffers_;
+    }
+    /**
+     * <code>optional .mesos.scheduler.Call.DeclineInverseOffers decline_inverse_offers = 14;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffersOrBuilder getDeclineInverseOffersOrBuilder() {
+      return declineInverseOffers_;
+    }
+
+    // optional .mesos.scheduler.Call.Revive revive = 15;
+    public static final int REVIVE_FIELD_NUMBER = 15;
+    private org.apache.mesos.scheduler.Protos.Call.Revive revive_;
+    /**
+     * <code>optional .mesos.scheduler.Call.Revive revive = 15;</code>
+     */
+    public boolean hasRevive() {
+      return ((bitField0_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional .mesos.scheduler.Call.Revive revive = 15;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Call.Revive getRevive() {
+      return revive_;
+    }
+    /**
+     * <code>optional .mesos.scheduler.Call.Revive revive = 15;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Call.ReviveOrBuilder getReviveOrBuilder() {
+      return revive_;
+    }
+
+    // optional .mesos.scheduler.Call.Kill kill = 6;
+    public static final int KILL_FIELD_NUMBER = 6;
+    private org.apache.mesos.scheduler.Protos.Call.Kill kill_;
+    /**
+     * <code>optional .mesos.scheduler.Call.Kill kill = 6;</code>
+     */
+    public boolean hasKill() {
+      return ((bitField0_ & 0x00000100) == 0x00000100);
+    }
+    /**
+     * <code>optional .mesos.scheduler.Call.Kill kill = 6;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Call.Kill getKill() {
+      return kill_;
+    }
+    /**
+     * <code>optional .mesos.scheduler.Call.Kill kill = 6;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Call.KillOrBuilder getKillOrBuilder() {
+      return kill_;
+    }
+
+    // optional .mesos.scheduler.Call.Shutdown shutdown = 7;
+    public static final int SHUTDOWN_FIELD_NUMBER = 7;
+    private org.apache.mesos.scheduler.Protos.Call.Shutdown shutdown_;
+    /**
+     * <code>optional .mesos.scheduler.Call.Shutdown shutdown = 7;</code>
+     */
+    public boolean hasShutdown() {
+      return ((bitField0_ & 0x00000200) == 0x00000200);
+    }
+    /**
+     * <code>optional .mesos.scheduler.Call.Shutdown shutdown = 7;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Call.Shutdown getShutdown() {
+      return shutdown_;
+    }
+    /**
+     * <code>optional .mesos.scheduler.Call.Shutdown shutdown = 7;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Call.ShutdownOrBuilder getShutdownOrBuilder() {
+      return shutdown_;
+    }
+
+    // optional .mesos.scheduler.Call.Acknowledge acknowledge = 8;
+    public static final int ACKNOWLEDGE_FIELD_NUMBER = 8;
+    private org.apache.mesos.scheduler.Protos.Call.Acknowledge acknowledge_;
+    /**
+     * <code>optional .mesos.scheduler.Call.Acknowledge acknowledge = 8;</code>
+     */
+    public boolean hasAcknowledge() {
+      return ((bitField0_ & 0x00000400) == 0x00000400);
+    }
+    /**
+     * <code>optional .mesos.scheduler.Call.Acknowledge acknowledge = 8;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Call.Acknowledge getAcknowledge() {
+      return acknowledge_;
+    }
+    /**
+     * <code>optional .mesos.scheduler.Call.Acknowledge acknowledge = 8;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Call.AcknowledgeOrBuilder getAcknowledgeOrBuilder() {
+      return acknowledge_;
+    }
+
+    // optional .mesos.scheduler.Call.Reconcile reconcile = 9;
+    public static final int RECONCILE_FIELD_NUMBER = 9;
+    private org.apache.mesos.scheduler.Protos.Call.Reconcile reconcile_;
+    /**
+     * <code>optional .mesos.scheduler.Call.Reconcile reconcile = 9;</code>
+     */
+    public boolean hasReconcile() {
+      return ((bitField0_ & 0x00000800) == 0x00000800);
+    }
+    /**
+     * <code>optional .mesos.scheduler.Call.Reconcile reconcile = 9;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Call.Reconcile getReconcile() {
+      return reconcile_;
+    }
+    /**
+     * <code>optional .mesos.scheduler.Call.Reconcile reconcile = 9;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Call.ReconcileOrBuilder getReconcileOrBuilder() {
+      return reconcile_;
+    }
+
+    // optional .mesos.scheduler.Call.Message message = 10;
+    public static final int MESSAGE_FIELD_NUMBER = 10;
+    private org.apache.mesos.scheduler.Protos.Call.Message message_;
+    /**
+     * <code>optional .mesos.scheduler.Call.Message message = 10;</code>
+     */
+    public boolean hasMessage() {
+      return ((bitField0_ & 0x00001000) == 0x00001000);
+    }
+    /**
+     * <code>optional .mesos.scheduler.Call.Message message = 10;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Call.Message getMessage() {
+      return message_;
+    }
+    /**
+     * <code>optional .mesos.scheduler.Call.Message message = 10;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Call.MessageOrBuilder getMessageOrBuilder() {
+      return message_;
+    }
+
+    // optional .mesos.scheduler.Call.Request request = 11;
+    public static final int REQUEST_FIELD_NUMBER = 11;
+    private org.apache.mesos.scheduler.Protos.Call.Request request_;
+    /**
+     * <code>optional .mesos.scheduler.Call.Request request = 11;</code>
+     */
+    public boolean hasRequest() {
+      return ((bitField0_ & 0x00002000) == 0x00002000);
+    }
+    /**
+     * <code>optional .mesos.scheduler.Call.Request request = 11;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Call.Request getRequest() {
+      return request_;
+    }
+    /**
+     * <code>optional .mesos.scheduler.Call.Request request = 11;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Call.RequestOrBuilder getRequestOrBuilder() {
+      return request_;
+    }
+
+    // optional .mesos.scheduler.Call.Suppress suppress = 16;
+    public static final int SUPPRESS_FIELD_NUMBER = 16;
+    private org.apache.mesos.scheduler.Protos.Call.Suppress suppress_;
+    /**
+     * <code>optional .mesos.scheduler.Call.Suppress suppress = 16;</code>
+     */
+    public boolean hasSuppress() {
+      return ((bitField0_ & 0x00004000) == 0x00004000);
+    }
+    /**
+     * <code>optional .mesos.scheduler.Call.Suppress suppress = 16;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Call.Suppress getSuppress() {
+      return suppress_;
+    }
+    /**
+     * <code>optional .mesos.scheduler.Call.Suppress suppress = 16;</code>
+     */
+    public org.apache.mesos.scheduler.Protos.Call.SuppressOrBuilder getSuppressOrBuilder() {
+      return suppress_;
+    }
+
+    private void initFields() {
+      frameworkId_ = org.apache.mesos.Protos.FrameworkID.getDefaultInstance();
+      type_ = org.apache.mesos.scheduler.Protos.Call.Type.UNKNOWN;
+      subscribe_ = org.apache.mesos.scheduler.Protos.Call.Subscribe.getDefaultInstance();
+      accept_ = org.apache.mesos.scheduler.Protos.Call.Accept.getDefaultInstance();
+      decline_ = org.apache.mesos.scheduler.Protos.Call.Decline.getDefaultInstance();
+      acceptInverseOffers_ = org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers.getDefaultInstance();
+      declineInverseOffers_ = org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers.getDefaultInstance();
+      revive_ = org.apache.mesos.scheduler.Protos.Call.Revive.getDefaultInstance();
+      kill_ = org.apache.mesos.scheduler.Protos.Call.Kill.getDefaultInstance();
+      shutdown_ = org.apache.mesos.scheduler.Protos.Call.Shutdown.getDefaultInstance();
+      acknowledge_ = org.apache.mesos.scheduler.Protos.Call.Acknowledge.getDefaultInstance();
+      reconcile_ = org.apache.mesos.scheduler.Protos.Call.Reconcile.getDefaultInstance();
+      message_ = org.apache.mesos.scheduler.Protos.Call.Message.getDefaultInstance();
+      request_ = org.apache.mesos.scheduler.Protos.Call.Request.getDefaultInstance();
+      suppress_ = org.apache.mesos.scheduler.Protos.Call.Suppress.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (hasFrameworkId()) {
+        if (!getFrameworkId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasSubscribe()) {
+        if (!getSubscribe().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasAccept()) {
+        if (!getAccept().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasDecline()) {
+        if (!getDecline().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasAcceptInverseOffers()) {
+        if (!getAcceptInverseOffers().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasDeclineInverseOffers()) {
+        if (!getDeclineInverseOffers().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasKill()) {
+        if (!getKill().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasShutdown()) {
+        if (!getShutdown().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasAcknowledge()) {
+        if (!getAcknowledge().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasReconcile()) {
+        if (!getReconcile().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasMessage()) {
+        if (!getMessage().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasRequest()) {
+        if (!getRequest().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeMessage(1, frameworkId_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeEnum(2, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeMessage(3, subscribe_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeMessage(4, accept_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeMessage(5, decline_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        output.writeMessage(6, kill_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        output.writeMessage(7, shutdown_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        output.writeMessage(8, acknowledge_);
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        output.writeMessage(9, reconcile_);
+      }
+      if (((bitField0_ & 0x00001000) == 0x00001000)) {
+        output.writeMessage(10, message_);
+      }
+      if (((bitField0_ & 0x00002000) == 0x00002000)) {
+        output.writeMessage(11, request_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeMessage(13, acceptInverseOffers_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeMessage(14, declineInverseOffers_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        output.writeMessage(15, revive_);
+      }
+      if (((bitField0_ & 0x00004000) == 0x00004000)) {
+        output.writeMessage(16, suppress_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, frameworkId_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(2, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, subscribe_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, accept_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(5, decline_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(6, kill_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(7, shutdown_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(8, acknowledge_);
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(9, reconcile_);
+      }
+      if (((bitField0_ & 0x00001000) == 0x00001000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(10, message_);
+      }
+      if (((bitField0_ & 0x00002000) == 0x00002000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(11, request_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(13, acceptInverseOffers_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(14, declineInverseOffers_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(15, revive_);
+      }
+      if (((bitField0_ & 0x00004000) == 0x00004000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(16, suppress_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.scheduler.Protos.Call parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.scheduler.Protos.Call parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.scheduler.Protos.Call parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.scheduler.Protos.Call parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.scheduler.Protos.Call parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.scheduler.Protos.Call parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.scheduler.Protos.Call parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.scheduler.Protos.Call parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.scheduler.Protos.Call parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.scheduler.Protos.Call parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.scheduler.Protos.Call prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.scheduler.Call}
+     *
+     * <pre>
+     **
+     * Scheduler call API.
+     *
+     * Like Event, a Call is described using the standard protocol buffer
+     * "union" trick (see above).
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.scheduler.Protos.CallOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.scheduler.Protos.Call.class, org.apache.mesos.scheduler.Protos.Call.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.scheduler.Protos.Call.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getFrameworkIdFieldBuilder();
+          getSubscribeFieldBuilder();
+          getAcceptFieldBuilder();
+          getDeclineFieldBuilder();
+          getAcceptInverseOffersFieldBuilder();
+          getDeclineInverseOffersFieldBuilder();
+          getReviveFieldBuilder();
+          getKillFieldBuilder();
+          getShutdownFieldBuilder();
+          getAcknowledgeFieldBuilder();
+          getReconcileFieldBuilder();
+          getMessageFieldBuilder();
+          getRequestFieldBuilder();
+          getSuppressFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (frameworkIdBuilder_ == null) {
+          frameworkId_ = org.apache.mesos.Protos.FrameworkID.getDefaultInstance();
+        } else {
+          frameworkIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        type_ = org.apache.mesos.scheduler.Protos.Call.Type.UNKNOWN;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        if (subscribeBuilder_ == null) {
+          subscribe_ = org.apache.mesos.scheduler.Protos.Call.Subscribe.getDefaultInstance();
+        } else {
+          subscribeBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        if (acceptBuilder_ == null) {
+          accept_ = org.apache.mesos.scheduler.Protos.Call.Accept.getDefaultInstance();
+        } else {
+          acceptBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        if (declineBuilder_ == null) {
+          decline_ = org.apache.mesos.scheduler.Protos.Call.Decline.getDefaultInstance();
+        } else {
+          declineBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        if (acceptInverseOffersBuilder_ == null) {
+          acceptInverseOffers_ = org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers.getDefaultInstance();
+        } else {
+          acceptInverseOffersBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
+        if (declineInverseOffersBuilder_ == null) {
+          declineInverseOffers_ = org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers.getDefaultInstance();
+        } else {
+          declineInverseOffersBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000040);
+        if (reviveBuilder_ == null) {
+          revive_ = org.apache.mesos.scheduler.Protos.Call.Revive.getDefaultInstance();
+        } else {
+          reviveBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000080);
+        if (killBuilder_ == null) {
+          kill_ = org.apache.mesos.scheduler.Protos.Call.Kill.getDefaultInstance();
+        } else {
+          killBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000100);
+        if (shutdownBuilder_ == null) {
+          shutdown_ = org.apache.mesos.scheduler.Protos.Call.Shutdown.getDefaultInstance();
+        } else {
+          shutdownBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000200);
+        if (acknowledgeBuilder_ == null) {
+          acknowledge_ = org.apache.mesos.scheduler.Protos.Call.Acknowledge.getDefaultInstance();
+        } else {
+          acknowledgeBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000400);
+        if (reconcileBuilder_ == null) {
+          reconcile_ = org.apache.mesos.scheduler.Protos.Call.Reconcile.getDefaultInstance();
+        } else {
+          reconcileBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000800);
+        if (messageBuilder_ == null) {
+          message_ = org.apache.mesos.scheduler.Protos.Call.Message.getDefaultInstance();
+        } else {
+          messageBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00001000);
+        if (requestBuilder_ == null) {
+          request_ = org.apache.mesos.scheduler.Protos.Call.Request.getDefaultInstance();
+        } else {
+          requestBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00002000);
+        if (suppressBuilder_ == null) {
+          suppress_ = org.apache.mesos.scheduler.Protos.Call.Suppress.getDefaultInstance();
+        } else {
+          suppressBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00004000);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.scheduler.Protos.internal_static_mesos_scheduler_Call_descriptor;
+      }
+
+      public org.apache.mesos.scheduler.Protos.Call getDefaultInstanceForType() {
+        return org.apache.mesos.scheduler.Protos.Call.getDefaultInstance();
+      }
+
+      public org.apache.mesos.scheduler.Protos.Call build() {
+        org.apache.mesos.scheduler.Protos.Call result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.scheduler.Protos.Call buildPartial() {
+        org.apache.mesos.scheduler.Protos.Call result = new org.apache.mesos.scheduler.Protos.Call(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        if (frameworkIdBuilder_ == null) {
+          result.frameworkId_ = frameworkId_;
+        } else {
+          result.frameworkId_ = frameworkIdBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.type_ = type_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        if (subscribeBuilder_ == null) {
+          result.subscribe_ = subscribe_;
+        } else {
+          result.subscribe_ = subscribeBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        if (acceptBuilder_ == null) {
+          result.accept_ = accept_;
+        } else {
+          result.accept_ = acceptBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        if (declineBuilder_ == null) {
+          result.decline_ = decline_;
+        } else {
+          result.decline_ = declineBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        if (acceptInverseOffersBuilder_ == null) {
+          result.acceptInverseOffers_ = acceptInverseOffers_;
+        } else {
+          result.acceptInverseOffers_ = acceptInverseOffersBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        if (declineInverseOffersBuilder_ == null) {
+          result.declineInverseOffers_ = declineInverseOffers_;
+        } else {
+          result.declineInverseOffers_ = declineInverseOffersBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+          to_bitField0_ |= 0x00000080;
+        }
+        if (reviveBuilder_ == null) {
+          result.revive_ = revive_;
+        } else {
+          result.revive_ = reviveBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
+          to_bitField0_ |= 0x00000100;
+        }
+        if (killBuilder_ == null) {
+          result.kill_ = kill_;
+        } else {
+          result.kill_ = killBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
+          to_bitField0_ |= 0x00000200;
+        }
+        if (shutdownBuilder_ == null) {
+          result.shutdown_ = shutdown_;
+        } else {
+          result.shutdown_ = shutdownBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
+          to_bitField0_ |= 0x00000400;
+        }
+        if (acknowledgeBuilder_ == null) {
+          result.acknowledge_ = acknowledge_;
+        } else {
+          result.acknowledge_ = acknowledgeBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
+          to_bitField0_ |= 0x00000800;
+        }
+        if (reconcileBuilder_ == null) {
+          result.reconcile_ = reconcile_;
+        } else {
+          result.reconcile_ = reconcileBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
+          to_bitField0_ |= 0x00001000;
+        }
+        if (messageBuilder_ == null) {
+          result.message_ = message_;
+        } else {
+          result.message_ = messageBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00002000) == 0x00002000)) {
+          to_bitField0_ |= 0x00002000;
+        }
+        if (requestBuilder_ == null) {
+          result.request_ = request_;
+        } else {
+          result.request_ = requestBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00004000) == 0x00004000)) {
+          to_bitField0_ |= 0x00004000;
+        }
+        if (suppressBuilder_ == null) {
+          result.suppress_ = suppress_;
+        } else {
+          result.suppress_ = suppressBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.scheduler.Protos.Call) {
+          return mergeFrom((org.apache.mesos.scheduler.Protos.Call)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.scheduler.Protos.Call other) {
+        if (other == org.apache.mesos.scheduler.Protos.Call.getDefaultInstance()) return this;
+        if (other.hasFrameworkId()) {
+          mergeFrameworkId(other.getFrameworkId());
+        }
+        if (other.hasType()) {
+          setType(other.getType());
+        }
+        if (other.hasSubscribe()) {
+          mergeSubscribe(other.getSubscribe());
+        }
+        if (other.hasAccept()) {
+          mergeAccept(other.getAccept());
+        }
+        if (other.hasDecline()) {
+          mergeDecline(other.getDecline());
+        }
+        if (other.hasAcceptInverseOffers()) {
+          mergeAcceptInverseOffers(other.getAcceptInverseOffers());
+        }
+        if (other.hasDeclineInverseOffers()) {
+          mergeDeclineInverseOffers(other.getDeclineInverseOffers());
+        }
+        if (other.hasRevive()) {
+          mergeRevive(other.getRevive());
+        }
+        if (other.hasKill()) {
+          mergeKill(other.getKill());
+        }
+        if (other.hasShutdown()) {
+          mergeShutdown(other.getShutdown());
+        }
+        if (other.hasAcknowledge()) {
+          mergeAcknowledge(other.getAcknowledge());
+        }
+        if (other.hasReconcile()) {
+          mergeReconcile(other.getReconcile());
+        }
+        if (other.hasMessage()) {
+          mergeMessage(other.getMessage());
+        }
+        if (other.hasRequest()) {
+          mergeRequest(other.getRequest());
+        }
+        if (other.hasSuppress()) {
+          mergeSuppress(other.getSuppress());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (hasFrameworkId()) {
+          if (!getFrameworkId().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasSubscribe()) {
+          if (!getSubscribe().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasAccept()) {
+          if (!getAccept().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasDecline()) {
+          if (!getDecline().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasAcceptInverseOffers()) {
+          if (!getAcceptInverseOffers().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasDeclineInverseOffers()) {
+          if (!getDeclineInverseOffers().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasKill()) {
+          if (!getKill().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasShutdown()) {
+          if (!getShutdown().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasAcknowledge()) {
+          if (!getAcknowledge().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasReconcile()) {
+          if (!getReconcile().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasMessage()) {
+          if (!getMessage().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasRequest()) {
+          if (!getRequest().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.scheduler.Protos.Call parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.scheduler.Protos.Call) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional .mesos.FrameworkID framework_id = 1;
+      private org.apache.mesos.Protos.FrameworkID frameworkId_ = org.apache.mesos.Protos.FrameworkID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.FrameworkID, org.apache.mesos.Protos.FrameworkID.Builder, org.apache.mesos.Protos.FrameworkIDOrBuilder> frameworkIdBuilder_;
+      /**
+       * <code>optional .mesos.FrameworkID framework_id = 1;</code>
+       *
+       * <pre>
+       * Identifies who generated this call. Master assigns a framework id
+       * when a new scheduler subscribes for the first time. Once assigned,
+       * the scheduler must set the 'framework_id' here and within its
+       * FrameworkInfo (in any further 'Subscribe' calls). This allows the
+       * master to identify a scheduler correctly across disconnections,
+       * failovers, etc.
+       * </pre>
+       */
+      public boolean hasFrameworkId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.FrameworkID framework_id = 1;</code>
+       *
+       * <pre>
+       * Identifies who generated this call. Master assigns a framework id
+       * when a new scheduler subscribes for the first time. Once assigned,
+       * the scheduler must set the 'framework_id' here and within its
+       * FrameworkInfo (in any further 'Subscribe' calls). This allows the
+       * master to identify a scheduler correctly across disconnections,
+       * failovers, etc.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.FrameworkID getFrameworkId() {
+        if (frameworkIdBuilder_ == null) {
+          return frameworkId_;
+        } else {
+          return frameworkIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.FrameworkID framework_id = 1;</code>
+       *
+       * <pre>
+       * Identifies who generated this call. Master assigns a framework id
+       * when a new scheduler subscribes for the first time. Once assigned,
+       * the scheduler must set the 'framework_id' here and within its
+       * FrameworkInfo (in any further 'Subscribe' calls). This allows the
+       * master to identify a scheduler correctly across disconnections,
+       * failovers, etc.
+       * </pre>
+       */
+      public Builder setFrameworkId(org.apache.mesos.Protos.FrameworkID value) {
+        if (frameworkIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          frameworkId_ = value;
+          onChanged();
+        } else {
+          frameworkIdBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.FrameworkID framework_id = 1;</code>
+       *
+       * <pre>
+       * Identifies who generated this call. Master assigns a framework id
+       * when a new scheduler subscribes for the first time. Once assigned,
+       * the scheduler must set the 'framework_id' here and within its
+       * FrameworkInfo (in any further 'Subscribe' calls). This allows the
+       * master to identify a scheduler correctly across disconnections,
+       * failovers, etc.
+       * </pre>
+       */
+      public Builder setFrameworkId(
+          org.apache.mesos.Protos.FrameworkID.Builder builderForValue) {
+        if (frameworkIdBuilder_ == null) {
+          frameworkId_ = builderForValue.build();
+          onChanged();
+        } else {
+          frameworkIdBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.FrameworkID framework_id = 1;</code>
+       *
+       * <pre>
+       * Identifies who generated this call. Master assigns a framework id
+       * when a new scheduler subscribes for the first time. Once assigned,
+       * the scheduler must set the 'framework_id' here and within its
+       * FrameworkInfo (in any further 'Subscribe' calls). This allows the
+       * master to identify a scheduler correctly across disconnections,
+       * failovers, etc.
+       * </pre>
+       */
+      public Builder mergeFrameworkId(org.apache.mesos.Protos.FrameworkID value) {
+        if (frameworkIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001) &&
+              frameworkId_ != org.apache.mesos.Protos.FrameworkID.getDefaultInstance()) {
+            frameworkId_ =
+              org.apache.mesos.Protos.FrameworkID.newBuilder(frameworkId_).mergeFrom(value).buildPartial();
+          } else {
+            frameworkId_ = value;
+          }
+          onChanged();
+        } else {
+          frameworkIdBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.FrameworkID framework_id = 1;</code>
+       *
+       * <pre>
+       * Identifies who generated this call. Master assigns a framework id
+       * when a new scheduler subscribes for the first time. Once assigned,
+       * the scheduler must set the 'framework_id' here and within its
+       * FrameworkInfo (in any further 'Subscribe' calls). This allows the
+       * master to identify a scheduler correctly across disconnections,
+       * failovers, etc.
+       * </pre>
+       */
+      public Builder clearFrameworkId() {
+        if (frameworkIdBuilder_ == null) {
+          frameworkId_ = org.apache.mesos.Protos.FrameworkID.getDefaultInstance();
+          onChanged();
+        } else {
+          frameworkIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.FrameworkID framework_id = 1;</code>
+       *
+       * <pre>
+       * Identifies who generated this call. Master assigns a framework id
+       * when a new scheduler subscribes for the first time. Once assigned,
+       * the scheduler must set the 'framework_id' here and within its
+       * FrameworkInfo (in any further 'Subscribe' calls). This allows the
+       * master to identify a scheduler correctly across disconnections,
+       * failovers, etc.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.FrameworkID.Builder getFrameworkIdBuilder() {
+        bitField0_ |= 0x00000001;
+        onChanged();
+        return getFrameworkIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.FrameworkID framework_id = 1;</code>
+       *
+       * <pre>
+       * Identifies who generated this call. Master assigns a framework id
+       * when a new scheduler subscribes for the first time. Once assigned,
+       * the scheduler must set the 'framework_id' here and within its
+       * FrameworkInfo (in any further 'Subscribe' calls). This allows the
+       * master to identify a scheduler correctly across disconnections,
+       * failovers, etc.
+       * </pre>
+       */
+      public org.apache.mesos.Protos.FrameworkIDOrBuilder getFrameworkIdOrBuilder() {
+        if (frameworkIdBuilder_ != null) {
+          return frameworkIdBuilder_.getMessageOrBuilder();
+        } else {
+          return frameworkId_;
+        }
+      }
+      /**
+       * <code>optional .mesos.FrameworkID framework_id = 1;</code>
+       *
+       * <pre>
+       * Identifies who generated this call. Master assigns a framework id
+       * when a new scheduler subscribes for the first time. Once assigned,
+       * the scheduler must set the 'framework_id' here and within its
+       * FrameworkInfo (in any further 'Subscribe' calls). This allows the
+       * master to identify a scheduler correctly across disconnections,
+       * failovers, etc.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.Protos.FrameworkID, org.apache.mesos.Protos.FrameworkID.Builder, org.apache.mesos.Protos.FrameworkIDOrBuilder> 
+          getFrameworkIdFieldBuilder() {
+        if (frameworkIdBuilder_ == null) {
+          frameworkIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.Protos.FrameworkID, org.apache.mesos.Protos.FrameworkID.Builder, org.apache.mesos.Protos.FrameworkIDOrBuilder>(
+                  frameworkId_,
+                  getParentForChildren(),
+                  isClean());
+          frameworkId_ = null;
+        }
+        return frameworkIdBuilder_;
+      }
+
+      // optional .mesos.scheduler.Call.Type type = 2;
+      private org.apache.mesos.scheduler.Protos.Call.Type type_ = org.apache.mesos.scheduler.Protos.Call.Type.UNKNOWN;
+      /**
+       * <code>optional .mesos.scheduler.Call.Type type = 2;</code>
+       *
+       * <pre>
+       * Type of the call, indicates which optional field below should be
+       * present if that type has a nested message definition.
+       * See comments on `Event::Type` above on the reasoning behind this field being optional.
+       * </pre>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Type type = 2;</code>
+       *
+       * <pre>
+       * Type of the call, indicates which optional field below should be
+       * present if that type has a nested message definition.
+       * See comments on `Event::Type` above on the reasoning behind this field being optional.
+       * </pre>
+       */
+      public org.apache.mesos.scheduler.Protos.Call.Type getType() {
+        return type_;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Type type = 2;</code>
+       *
+       * <pre>
+       * Type of the call, indicates which optional field below should be
+       * present if that type has a nested message definition.
+       * See comments on `Event::Type` above on the reasoning behind this field being optional.
+       * </pre>
+       */
+      public Builder setType(org.apache.mesos.scheduler.Protos.Call.Type value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000002;
+        type_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Type type = 2;</code>
+       *
+       * <pre>
+       * Type of the call, indicates which optional field below should be
+       * present if that type has a nested message definition.
+       * See comments on `Event::Type` above on the reasoning behind this field being optional.
+       * </pre>
+       */
+      public Builder clearType() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        type_ = org.apache.mesos.scheduler.Protos.Call.Type.UNKNOWN;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.scheduler.Call.Subscribe subscribe = 3;
+      private org.apache.mesos.scheduler.Protos.Call.Subscribe subscribe_ = org.apache.mesos.scheduler.Protos.Call.Subscribe.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Call.Subscribe, org.apache.mesos.scheduler.Protos.Call.Subscribe.Builder, org.apache.mesos.scheduler.Protos.Call.SubscribeOrBuilder> subscribeBuilder_;
+      /**
+       * <code>optional .mesos.scheduler.Call.Subscribe subscribe = 3;</code>
+       */
+      public boolean hasSubscribe() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Subscribe subscribe = 3;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Call.Subscribe getSubscribe() {
+        if (subscribeBuilder_ == null) {
+          return subscribe_;
+        } else {
+          return subscribeBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Subscribe subscribe = 3;</code>
+       */
+      public Builder setSubscribe(org.apache.mesos.scheduler.Protos.Call.Subscribe value) {
+        if (subscribeBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          subscribe_ = value;
+          onChanged();
+        } else {
+          subscribeBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Subscribe subscribe = 3;</code>
+       */
+      public Builder setSubscribe(
+          org.apache.mesos.scheduler.Protos.Call.Subscribe.Builder builderForValue) {
+        if (subscribeBuilder_ == null) {
+          subscribe_ = builderForValue.build();
+          onChanged();
+        } else {
+          subscribeBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Subscribe subscribe = 3;</code>
+       */
+      public Builder mergeSubscribe(org.apache.mesos.scheduler.Protos.Call.Subscribe value) {
+        if (subscribeBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) == 0x00000004) &&
+              subscribe_ != org.apache.mesos.scheduler.Protos.Call.Subscribe.getDefaultInstance()) {
+            subscribe_ =
+              org.apache.mesos.scheduler.Protos.Call.Subscribe.newBuilder(subscribe_).mergeFrom(value).buildPartial();
+          } else {
+            subscribe_ = value;
+          }
+          onChanged();
+        } else {
+          subscribeBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Subscribe subscribe = 3;</code>
+       */
+      public Builder clearSubscribe() {
+        if (subscribeBuilder_ == null) {
+          subscribe_ = org.apache.mesos.scheduler.Protos.Call.Subscribe.getDefaultInstance();
+          onChanged();
+        } else {
+          subscribeBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Subscribe subscribe = 3;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Call.Subscribe.Builder getSubscribeBuilder() {
+        bitField0_ |= 0x00000004;
+        onChanged();
+        return getSubscribeFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Subscribe subscribe = 3;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Call.SubscribeOrBuilder getSubscribeOrBuilder() {
+        if (subscribeBuilder_ != null) {
+          return subscribeBuilder_.getMessageOrBuilder();
+        } else {
+          return subscribe_;
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Subscribe subscribe = 3;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Call.Subscribe, org.apache.mesos.scheduler.Protos.Call.Subscribe.Builder, org.apache.mesos.scheduler.Protos.Call.SubscribeOrBuilder> 
+          getSubscribeFieldBuilder() {
+        if (subscribeBuilder_ == null) {
+          subscribeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.scheduler.Protos.Call.Subscribe, org.apache.mesos.scheduler.Protos.Call.Subscribe.Builder, org.apache.mesos.scheduler.Protos.Call.SubscribeOrBuilder>(
+                  subscribe_,
+                  getParentForChildren(),
+                  isClean());
+          subscribe_ = null;
+        }
+        return subscribeBuilder_;
+      }
+
+      // optional .mesos.scheduler.Call.Accept accept = 4;
+      private org.apache.mesos.scheduler.Protos.Call.Accept accept_ = org.apache.mesos.scheduler.Protos.Call.Accept.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Call.Accept, org.apache.mesos.scheduler.Protos.Call.Accept.Builder, org.apache.mesos.scheduler.Protos.Call.AcceptOrBuilder> acceptBuilder_;
+      /**
+       * <code>optional .mesos.scheduler.Call.Accept accept = 4;</code>
+       */
+      public boolean hasAccept() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Accept accept = 4;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Call.Accept getAccept() {
+        if (acceptBuilder_ == null) {
+          return accept_;
+        } else {
+          return acceptBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Accept accept = 4;</code>
+       */
+      public Builder setAccept(org.apache.mesos.scheduler.Protos.Call.Accept value) {
+        if (acceptBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          accept_ = value;
+          onChanged();
+        } else {
+          acceptBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Accept accept = 4;</code>
+       */
+      public Builder setAccept(
+          org.apache.mesos.scheduler.Protos.Call.Accept.Builder builderForValue) {
+        if (acceptBuilder_ == null) {
+          accept_ = builderForValue.build();
+          onChanged();
+        } else {
+          acceptBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Accept accept = 4;</code>
+       */
+      public Builder mergeAccept(org.apache.mesos.scheduler.Protos.Call.Accept value) {
+        if (acceptBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008) &&
+              accept_ != org.apache.mesos.scheduler.Protos.Call.Accept.getDefaultInstance()) {
+            accept_ =
+              org.apache.mesos.scheduler.Protos.Call.Accept.newBuilder(accept_).mergeFrom(value).buildPartial();
+          } else {
+            accept_ = value;
+          }
+          onChanged();
+        } else {
+          acceptBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Accept accept = 4;</code>
+       */
+      public Builder clearAccept() {
+        if (acceptBuilder_ == null) {
+          accept_ = org.apache.mesos.scheduler.Protos.Call.Accept.getDefaultInstance();
+          onChanged();
+        } else {
+          acceptBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Accept accept = 4;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Call.Accept.Builder getAcceptBuilder() {
+        bitField0_ |= 0x00000008;
+        onChanged();
+        return getAcceptFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Accept accept = 4;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Call.AcceptOrBuilder getAcceptOrBuilder() {
+        if (acceptBuilder_ != null) {
+          return acceptBuilder_.getMessageOrBuilder();
+        } else {
+          return accept_;
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Accept accept = 4;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Call.Accept, org.apache.mesos.scheduler.Protos.Call.Accept.Builder, org.apache.mesos.scheduler.Protos.Call.AcceptOrBuilder> 
+          getAcceptFieldBuilder() {
+        if (acceptBuilder_ == null) {
+          acceptBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.scheduler.Protos.Call.Accept, org.apache.mesos.scheduler.Protos.Call.Accept.Builder, org.apache.mesos.scheduler.Protos.Call.AcceptOrBuilder>(
+                  accept_,
+                  getParentForChildren(),
+                  isClean());
+          accept_ = null;
+        }
+        return acceptBuilder_;
+      }
+
+      // optional .mesos.scheduler.Call.Decline decline = 5;
+      private org.apache.mesos.scheduler.Protos.Call.Decline decline_ = org.apache.mesos.scheduler.Protos.Call.Decline.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Call.Decline, org.apache.mesos.scheduler.Protos.Call.Decline.Builder, org.apache.mesos.scheduler.Protos.Call.DeclineOrBuilder> declineBuilder_;
+      /**
+       * <code>optional .mesos.scheduler.Call.Decline decline = 5;</code>
+       */
+      public boolean hasDecline() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Decline decline = 5;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Call.Decline getDecline() {
+        if (declineBuilder_ == null) {
+          return decline_;
+        } else {
+          return declineBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Decline decline = 5;</code>
+       */
+      public Builder setDecline(org.apache.mesos.scheduler.Protos.Call.Decline value) {
+        if (declineBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          decline_ = value;
+          onChanged();
+        } else {
+          declineBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Decline decline = 5;</code>
+       */
+      public Builder setDecline(
+          org.apache.mesos.scheduler.Protos.Call.Decline.Builder builderForValue) {
+        if (declineBuilder_ == null) {
+          decline_ = builderForValue.build();
+          onChanged();
+        } else {
+          declineBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Decline decline = 5;</code>
+       */
+      public Builder mergeDecline(org.apache.mesos.scheduler.Protos.Call.Decline value) {
+        if (declineBuilder_ == null) {
+          if (((bitField0_ & 0x00000010) == 0x00000010) &&
+              decline_ != org.apache.mesos.scheduler.Protos.Call.Decline.getDefaultInstance()) {
+            decline_ =
+              org.apache.mesos.scheduler.Protos.Call.Decline.newBuilder(decline_).mergeFrom(value).buildPartial();
+          } else {
+            decline_ = value;
+          }
+          onChanged();
+        } else {
+          declineBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Decline decline = 5;</code>
+       */
+      public Builder clearDecline() {
+        if (declineBuilder_ == null) {
+          decline_ = org.apache.mesos.scheduler.Protos.Call.Decline.getDefaultInstance();
+          onChanged();
+        } else {
+          declineBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Decline decline = 5;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Call.Decline.Builder getDeclineBuilder() {
+        bitField0_ |= 0x00000010;
+        onChanged();
+        return getDeclineFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Decline decline = 5;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Call.DeclineOrBuilder getDeclineOrBuilder() {
+        if (declineBuilder_ != null) {
+          return declineBuilder_.getMessageOrBuilder();
+        } else {
+          return decline_;
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Decline decline = 5;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Call.Decline, org.apache.mesos.scheduler.Protos.Call.Decline.Builder, org.apache.mesos.scheduler.Protos.Call.DeclineOrBuilder> 
+          getDeclineFieldBuilder() {
+        if (declineBuilder_ == null) {
+          declineBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.scheduler.Protos.Call.Decline, org.apache.mesos.scheduler.Protos.Call.Decline.Builder, org.apache.mesos.scheduler.Protos.Call.DeclineOrBuilder>(
+                  decline_,
+                  getParentForChildren(),
+                  isClean());
+          decline_ = null;
+        }
+        return declineBuilder_;
+      }
+
+      // optional .mesos.scheduler.Call.AcceptInverseOffers accept_inverse_offers = 13;
+      private org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers acceptInverseOffers_ = org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers, org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers.Builder, org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffersOrBuilder> acceptInverseOffersBuilder_;
+      /**
+       * <code>optional .mesos.scheduler.Call.AcceptInverseOffers accept_inverse_offers = 13;</code>
+       */
+      public boolean hasAcceptInverseOffers() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.AcceptInverseOffers accept_inverse_offers = 13;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers getAcceptInverseOffers() {
+        if (acceptInverseOffersBuilder_ == null) {
+          return acceptInverseOffers_;
+        } else {
+          return acceptInverseOffersBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.AcceptInverseOffers accept_inverse_offers = 13;</code>
+       */
+      public Builder setAcceptInverseOffers(org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers value) {
+        if (acceptInverseOffersBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          acceptInverseOffers_ = value;
+          onChanged();
+        } else {
+          acceptInverseOffersBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.AcceptInverseOffers accept_inverse_offers = 13;</code>
+       */
+      public Builder setAcceptInverseOffers(
+          org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers.Builder builderForValue) {
+        if (acceptInverseOffersBuilder_ == null) {
+          acceptInverseOffers_ = builderForValue.build();
+          onChanged();
+        } else {
+          acceptInverseOffersBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.AcceptInverseOffers accept_inverse_offers = 13;</code>
+       */
+      public Builder mergeAcceptInverseOffers(org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers value) {
+        if (acceptInverseOffersBuilder_ == null) {
+          if (((bitField0_ & 0x00000020) == 0x00000020) &&
+              acceptInverseOffers_ != org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers.getDefaultInstance()) {
+            acceptInverseOffers_ =
+              org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers.newBuilder(acceptInverseOffers_).mergeFrom(value).buildPartial();
+          } else {
+            acceptInverseOffers_ = value;
+          }
+          onChanged();
+        } else {
+          acceptInverseOffersBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.AcceptInverseOffers accept_inverse_offers = 13;</code>
+       */
+      public Builder clearAcceptInverseOffers() {
+        if (acceptInverseOffersBuilder_ == null) {
+          acceptInverseOffers_ = org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers.getDefaultInstance();
+          onChanged();
+        } else {
+          acceptInverseOffersBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.AcceptInverseOffers accept_inverse_offers = 13;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers.Builder getAcceptInverseOffersBuilder() {
+        bitField0_ |= 0x00000020;
+        onChanged();
+        return getAcceptInverseOffersFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.AcceptInverseOffers accept_inverse_offers = 13;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffersOrBuilder getAcceptInverseOffersOrBuilder() {
+        if (acceptInverseOffersBuilder_ != null) {
+          return acceptInverseOffersBuilder_.getMessageOrBuilder();
+        } else {
+          return acceptInverseOffers_;
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.AcceptInverseOffers accept_inverse_offers = 13;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers, org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers.Builder, org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffersOrBuilder> 
+          getAcceptInverseOffersFieldBuilder() {
+        if (acceptInverseOffersBuilder_ == null) {
+          acceptInverseOffersBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers, org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffers.Builder, org.apache.mesos.scheduler.Protos.Call.AcceptInverseOffersOrBuilder>(
+                  acceptInverseOffers_,
+                  getParentForChildren(),
+                  isClean());
+          acceptInverseOffers_ = null;
+        }
+        return acceptInverseOffersBuilder_;
+      }
+
+      // optional .mesos.scheduler.Call.DeclineInverseOffers decline_inverse_offers = 14;
+      private org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers declineInverseOffers_ = org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers, org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers.Builder, org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffersOrBuilder> declineInverseOffersBuilder_;
+      /**
+       * <code>optional .mesos.scheduler.Call.DeclineInverseOffers decline_inverse_offers = 14;</code>
+       */
+      public boolean hasDeclineInverseOffers() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.DeclineInverseOffers decline_inverse_offers = 14;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers getDeclineInverseOffers() {
+        if (declineInverseOffersBuilder_ == null) {
+          return declineInverseOffers_;
+        } else {
+          return declineInverseOffersBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.DeclineInverseOffers decline_inverse_offers = 14;</code>
+       */
+      public Builder setDeclineInverseOffers(org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers value) {
+        if (declineInverseOffersBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          declineInverseOffers_ = value;
+          onChanged();
+        } else {
+          declineInverseOffersBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.DeclineInverseOffers decline_inverse_offers = 14;</code>
+       */
+      public Builder setDeclineInverseOffers(
+          org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers.Builder builderForValue) {
+        if (declineInverseOffersBuilder_ == null) {
+          declineInverseOffers_ = builderForValue.build();
+          onChanged();
+        } else {
+          declineInverseOffersBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.DeclineInverseOffers decline_inverse_offers = 14;</code>
+       */
+      public Builder mergeDeclineInverseOffers(org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers value) {
+        if (declineInverseOffersBuilder_ == null) {
+          if (((bitField0_ & 0x00000040) == 0x00000040) &&
+              declineInverseOffers_ != org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers.getDefaultInstance()) {
+            declineInverseOffers_ =
+              org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers.newBuilder(declineInverseOffers_).mergeFrom(value).buildPartial();
+          } else {
+            declineInverseOffers_ = value;
+          }
+          onChanged();
+        } else {
+          declineInverseOffersBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.DeclineInverseOffers decline_inverse_offers = 14;</code>
+       */
+      public Builder clearDeclineInverseOffers() {
+        if (declineInverseOffersBuilder_ == null) {
+          declineInverseOffers_ = org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers.getDefaultInstance();
+          onChanged();
+        } else {
+          declineInverseOffersBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000040);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.DeclineInverseOffers decline_inverse_offers = 14;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers.Builder getDeclineInverseOffersBuilder() {
+        bitField0_ |= 0x00000040;
+        onChanged();
+        return getDeclineInverseOffersFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.DeclineInverseOffers decline_inverse_offers = 14;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffersOrBuilder getDeclineInverseOffersOrBuilder() {
+        if (declineInverseOffersBuilder_ != null) {
+          return declineInverseOffersBuilder_.getMessageOrBuilder();
+        } else {
+          return declineInverseOffers_;
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.DeclineInverseOffers decline_inverse_offers = 14;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers, org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers.Builder, org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffersOrBuilder> 
+          getDeclineInverseOffersFieldBuilder() {
+        if (declineInverseOffersBuilder_ == null) {
+          declineInverseOffersBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers, org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffers.Builder, org.apache.mesos.scheduler.Protos.Call.DeclineInverseOffersOrBuilder>(
+                  declineInverseOffers_,
+                  getParentForChildren(),
+                  isClean());
+          declineInverseOffers_ = null;
+        }
+        return declineInverseOffersBuilder_;
+      }
+
+      // optional .mesos.scheduler.Call.Revive revive = 15;
+      private org.apache.mesos.scheduler.Protos.Call.Revive revive_ = org.apache.mesos.scheduler.Protos.Call.Revive.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Call.Revive, org.apache.mesos.scheduler.Protos.Call.Revive.Builder, org.apache.mesos.scheduler.Protos.Call.ReviveOrBuilder> reviveBuilder_;
+      /**
+       * <code>optional .mesos.scheduler.Call.Revive revive = 15;</code>
+       */
+      public boolean hasRevive() {
+        return ((bitField0_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Revive revive = 15;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Call.Revive getRevive() {
+        if (reviveBuilder_ == null) {
+          return revive_;
+        } else {
+          return reviveBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Revive revive = 15;</code>
+       */
+      public Builder setRevive(org.apache.mesos.scheduler.Protos.Call.Revive value) {
+        if (reviveBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          revive_ = value;
+          onChanged();
+        } else {
+          reviveBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Revive revive = 15;</code>
+       */
+      public Builder setRevive(
+          org.apache.mesos.scheduler.Protos.Call.Revive.Builder builderForValue) {
+        if (reviveBuilder_ == null) {
+          revive_ = builderForValue.build();
+          onChanged();
+        } else {
+          reviveBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Revive revive = 15;</code>
+       */
+      public Builder mergeRevive(org.apache.mesos.scheduler.Protos.Call.Revive value) {
+        if (reviveBuilder_ == null) {
+          if (((bitField0_ & 0x00000080) == 0x00000080) &&
+              revive_ != org.apache.mesos.scheduler.Protos.Call.Revive.getDefaultInstance()) {
+            revive_ =
+              org.apache.mesos.scheduler.Protos.Call.Revive.newBuilder(revive_).mergeFrom(value).buildPartial();
+          } else {
+            revive_ = value;
+          }
+          onChanged();
+        } else {
+          reviveBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Revive revive = 15;</code>
+       */
+      public Builder clearRevive() {
+        if (reviveBuilder_ == null) {
+          revive_ = org.apache.mesos.scheduler.Protos.Call.Revive.getDefaultInstance();
+          onChanged();
+        } else {
+          reviveBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000080);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Revive revive = 15;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Call.Revive.Builder getReviveBuilder() {
+        bitField0_ |= 0x00000080;
+        onChanged();
+        return getReviveFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Revive revive = 15;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Call.ReviveOrBuilder getReviveOrBuilder() {
+        if (reviveBuilder_ != null) {
+          return reviveBuilder_.getMessageOrBuilder();
+        } else {
+          return revive_;
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Revive revive = 15;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Call.Revive, org.apache.mesos.scheduler.Protos.Call.Revive.Builder, org.apache.mesos.scheduler.Protos.Call.ReviveOrBuilder> 
+          getReviveFieldBuilder() {
+        if (reviveBuilder_ == null) {
+          reviveBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.scheduler.Protos.Call.Revive, org.apache.mesos.scheduler.Protos.Call.Revive.Builder, org.apache.mesos.scheduler.Protos.Call.ReviveOrBuilder>(
+                  revive_,
+                  getParentForChildren(),
+                  isClean());
+          revive_ = null;
+        }
+        return reviveBuilder_;
+      }
+
+      // optional .mesos.scheduler.Call.Kill kill = 6;
+      private org.apache.mesos.scheduler.Protos.Call.Kill kill_ = org.apache.mesos.scheduler.Protos.Call.Kill.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Call.Kill, org.apache.mesos.scheduler.Protos.Call.Kill.Builder, org.apache.mesos.scheduler.Protos.Call.KillOrBuilder> killBuilder_;
+      /**
+       * <code>optional .mesos.scheduler.Call.Kill kill = 6;</code>
+       */
+      public boolean hasKill() {
+        return ((bitField0_ & 0x00000100) == 0x00000100);
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Kill kill = 6;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Call.Kill getKill() {
+        if (killBuilder_ == null) {
+          return kill_;
+        } else {
+          return killBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Kill kill = 6;</code>
+       */
+      public Builder setKill(org.apache.mesos.scheduler.Protos.Call.Kill value) {
+        if (killBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          kill_ = value;
+          onChanged();
+        } else {
+          killBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000100;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Kill kill = 6;</code>
+       */
+      public Builder setKill(
+          org.apache.mesos.scheduler.Protos.Call.Kill.Builder builderForValue) {
+        if (killBuilder_ == null) {
+          kill_ = builderForValue.build();
+          onChanged();
+        } else {
+          killBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000100;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Kill kill = 6;</code>
+       */
+      public Builder mergeKill(org.apache.mesos.scheduler.Protos.Call.Kill value) {
+        if (killBuilder_ == null) {
+          if (((bitField0_ & 0x00000100) == 0x00000100) &&
+              kill_ != org.apache.mesos.scheduler.Protos.Call.Kill.getDefaultInstance()) {
+            kill_ =
+              org.apache.mesos.scheduler.Protos.Call.Kill.newBuilder(kill_).mergeFrom(value).buildPartial();
+          } else {
+            kill_ = value;
+          }
+          onChanged();
+        } else {
+          killBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000100;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Kill kill = 6;</code>
+       */
+      public Builder clearKill() {
+        if (killBuilder_ == null) {
+          kill_ = org.apache.mesos.scheduler.Protos.Call.Kill.getDefaultInstance();
+          onChanged();
+        } else {
+          killBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000100);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Kill kill = 6;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Call.Kill.Builder getKillBuilder() {
+        bitField0_ |= 0x00000100;
+        onChanged();
+        return getKillFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Kill kill = 6;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Call.KillOrBuilder getKillOrBuilder() {
+        if (killBuilder_ != null) {
+          return killBuilder_.getMessageOrBuilder();
+        } else {
+          return kill_;
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Kill kill = 6;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Call.Kill, org.apache.mesos.scheduler.Protos.Call.Kill.Builder, org.apache.mesos.scheduler.Protos.Call.KillOrBuilder> 
+          getKillFieldBuilder() {
+        if (killBuilder_ == null) {
+          killBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.scheduler.Protos.Call.Kill, org.apache.mesos.scheduler.Protos.Call.Kill.Builder, org.apache.mesos.scheduler.Protos.Call.KillOrBuilder>(
+                  kill_,
+                  getParentForChildren(),
+                  isClean());
+          kill_ = null;
+        }
+        return killBuilder_;
+      }
+
+      // optional .mesos.scheduler.Call.Shutdown shutdown = 7;
+      private org.apache.mesos.scheduler.Protos.Call.Shutdown shutdown_ = org.apache.mesos.scheduler.Protos.Call.Shutdown.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Call.Shutdown, org.apache.mesos.scheduler.Protos.Call.Shutdown.Builder, org.apache.mesos.scheduler.Protos.Call.ShutdownOrBuilder> shutdownBuilder_;
+      /**
+       * <code>optional .mesos.scheduler.Call.Shutdown shutdown = 7;</code>
+       */
+      public boolean hasShutdown() {
+        return ((bitField0_ & 0x00000200) == 0x00000200);
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Shutdown shutdown = 7;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Call.Shutdown getShutdown() {
+        if (shutdownBuilder_ == null) {
+          return shutdown_;
+        } else {
+          return shutdownBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Shutdown shutdown = 7;</code>
+       */
+      public Builder setShutdown(org.apache.mesos.scheduler.Protos.Call.Shutdown value) {
+        if (shutdownBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          shutdown_ = value;
+          onChanged();
+        } else {
+          shutdownBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000200;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Shutdown shutdown = 7;</code>
+       */
+      public Builder setShutdown(
+          org.apache.mesos.scheduler.Protos.Call.Shutdown.Builder builderForValue) {
+        if (shutdownBuilder_ == null) {
+          shutdown_ = builderForValue.build();
+          onChanged();
+        } else {
+          shutdownBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000200;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Shutdown shutdown = 7;</code>
+       */
+      public Builder mergeShutdown(org.apache.mesos.scheduler.Protos.Call.Shutdown value) {
+        if (shutdownBuilder_ == null) {
+          if (((bitField0_ & 0x00000200) == 0x00000200) &&
+              shutdown_ != org.apache.mesos.scheduler.Protos.Call.Shutdown.getDefaultInstance()) {
+            shutdown_ =
+              org.apache.mesos.scheduler.Protos.Call.Shutdown.newBuilder(shutdown_).mergeFrom(value).buildPartial();
+          } else {
+            shutdown_ = value;
+          }
+          onChanged();
+        } else {
+          shutdownBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000200;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Shutdown shutdown = 7;</code>
+       */
+      public Builder clearShutdown() {
+        if (shutdownBuilder_ == null) {
+          shutdown_ = org.apache.mesos.scheduler.Protos.Call.Shutdown.getDefaultInstance();
+          onChanged();
+        } else {
+          shutdownBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000200);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Shutdown shutdown = 7;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Call.Shutdown.Builder getShutdownBuilder() {
+        bitField0_ |= 0x00000200;
+        onChanged();
+        return getShutdownFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Shutdown shutdown = 7;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Call.ShutdownOrBuilder getShutdownOrBuilder() {
+        if (shutdownBuilder_ != null) {
+          return shutdownBuilder_.getMessageOrBuilder();
+        } else {
+          return shutdown_;
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Shutdown shutdown = 7;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Call.Shutdown, org.apache.mesos.scheduler.Protos.Call.Shutdown.Builder, org.apache.mesos.scheduler.Protos.Call.ShutdownOrBuilder> 
+          getShutdownFieldBuilder() {
+        if (shutdownBuilder_ == null) {
+          shutdownBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.scheduler.Protos.Call.Shutdown, org.apache.mesos.scheduler.Protos.Call.Shutdown.Builder, org.apache.mesos.scheduler.Protos.Call.ShutdownOrBuilder>(
+                  shutdown_,
+                  getParentForChildren(),
+                  isClean());
+          shutdown_ = null;
+        }
+        return shutdownBuilder_;
+      }
+
+      // optional .mesos.scheduler.Call.Acknowledge acknowledge = 8;
+      private org.apache.mesos.scheduler.Protos.Call.Acknowledge acknowledge_ = org.apache.mesos.scheduler.Protos.Call.Acknowledge.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Call.Acknowledge, org.apache.mesos.scheduler.Protos.Call.Acknowledge.Builder, org.apache.mesos.scheduler.Protos.Call.AcknowledgeOrBuilder> acknowledgeBuilder_;
+      /**
+       * <code>optional .mesos.scheduler.Call.Acknowledge acknowledge = 8;</code>
+       */
+      public boolean hasAcknowledge() {
+        return ((bitField0_ & 0x00000400) == 0x00000400);
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Acknowledge acknowledge = 8;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Call.Acknowledge getAcknowledge() {
+        if (acknowledgeBuilder_ == null) {
+          return acknowledge_;
+        } else {
+          return acknowledgeBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Acknowledge acknowledge = 8;</code>
+       */
+      public Builder setAcknowledge(org.apache.mesos.scheduler.Protos.Call.Acknowledge value) {
+        if (acknowledgeBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          acknowledge_ = value;
+          onChanged();
+        } else {
+          acknowledgeBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000400;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Acknowledge acknowledge = 8;</code>
+       */
+      public Builder setAcknowledge(
+          org.apache.mesos.scheduler.Protos.Call.Acknowledge.Builder builderForValue) {
+        if (acknowledgeBuilder_ == null) {
+          acknowledge_ = builderForValue.build();
+          onChanged();
+        } else {
+          acknowledgeBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000400;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Acknowledge acknowledge = 8;</code>
+       */
+      public Builder mergeAcknowledge(org.apache.mesos.scheduler.Protos.Call.Acknowledge value) {
+        if (acknowledgeBuilder_ == null) {
+          if (((bitField0_ & 0x00000400) == 0x00000400) &&
+              acknowledge_ != org.apache.mesos.scheduler.Protos.Call.Acknowledge.getDefaultInstance()) {
+            acknowledge_ =
+              org.apache.mesos.scheduler.Protos.Call.Acknowledge.newBuilder(acknowledge_).mergeFrom(value).buildPartial();
+          } else {
+            acknowledge_ = value;
+          }
+          onChanged();
+        } else {
+          acknowledgeBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000400;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Acknowledge acknowledge = 8;</code>
+       */
+      public Builder clearAcknowledge() {
+        if (acknowledgeBuilder_ == null) {
+          acknowledge_ = org.apache.mesos.scheduler.Protos.Call.Acknowledge.getDefaultInstance();
+          onChanged();
+        } else {
+          acknowledgeBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000400);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Acknowledge acknowledge = 8;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Call.Acknowledge.Builder getAcknowledgeBuilder() {
+        bitField0_ |= 0x00000400;
+        onChanged();
+        return getAcknowledgeFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Acknowledge acknowledge = 8;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Call.AcknowledgeOrBuilder getAcknowledgeOrBuilder() {
+        if (acknowledgeBuilder_ != null) {
+          return acknowledgeBuilder_.getMessageOrBuilder();
+        } else {
+          return acknowledge_;
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Acknowledge acknowledge = 8;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Call.Acknowledge, org.apache.mesos.scheduler.Protos.Call.Acknowledge.Builder, org.apache.mesos.scheduler.Protos.Call.AcknowledgeOrBuilder> 
+          getAcknowledgeFieldBuilder() {
+        if (acknowledgeBuilder_ == null) {
+          acknowledgeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.scheduler.Protos.Call.Acknowledge, org.apache.mesos.scheduler.Protos.Call.Acknowledge.Builder, org.apache.mesos.scheduler.Protos.Call.AcknowledgeOrBuilder>(
+                  acknowledge_,
+                  getParentForChildren(),
+                  isClean());
+          acknowledge_ = null;
+        }
+        return acknowledgeBuilder_;
+      }
+
+      // optional .mesos.scheduler.Call.Reconcile reconcile = 9;
+      private org.apache.mesos.scheduler.Protos.Call.Reconcile reconcile_ = org.apache.mesos.scheduler.Protos.Call.Reconcile.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Call.Reconcile, org.apache.mesos.scheduler.Protos.Call.Reconcile.Builder, org.apache.mesos.scheduler.Protos.Call.ReconcileOrBuilder> reconcileBuilder_;
+      /**
+       * <code>optional .mesos.scheduler.Call.Reconcile reconcile = 9;</code>
+       */
+      public boolean hasReconcile() {
+        return ((bitField0_ & 0x00000800) == 0x00000800);
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Reconcile reconcile = 9;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Call.Reconcile getReconcile() {
+        if (reconcileBuilder_ == null) {
+          return reconcile_;
+        } else {
+          return reconcileBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Reconcile reconcile = 9;</code>
+       */
+      public Builder setReconcile(org.apache.mesos.scheduler.Protos.Call.Reconcile value) {
+        if (reconcileBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          reconcile_ = value;
+          onChanged();
+        } else {
+          reconcileBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Reconcile reconcile = 9;</code>
+       */
+      public Builder setReconcile(
+          org.apache.mesos.scheduler.Protos.Call.Reconcile.Builder builderForValue) {
+        if (reconcileBuilder_ == null) {
+          reconcile_ = builderForValue.build();
+          onChanged();
+        } else {
+          reconcileBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Reconcile reconcile = 9;</code>
+       */
+      public Builder mergeReconcile(org.apache.mesos.scheduler.Protos.Call.Reconcile value) {
+        if (reconcileBuilder_ == null) {
+          if (((bitField0_ & 0x00000800) == 0x00000800) &&
+              reconcile_ != org.apache.mesos.scheduler.Protos.Call.Reconcile.getDefaultInstance()) {
+            reconcile_ =
+              org.apache.mesos.scheduler.Protos.Call.Reconcile.newBuilder(reconcile_).mergeFrom(value).buildPartial();
+          } else {
+            reconcile_ = value;
+          }
+          onChanged();
+        } else {
+          reconcileBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Reconcile reconcile = 9;</code>
+       */
+      public Builder clearReconcile() {
+        if (reconcileBuilder_ == null) {
+          reconcile_ = org.apache.mesos.scheduler.Protos.Call.Reconcile.getDefaultInstance();
+          onChanged();
+        } else {
+          reconcileBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000800);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Reconcile reconcile = 9;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Call.Reconcile.Builder getReconcileBuilder() {
+        bitField0_ |= 0x00000800;
+        onChanged();
+        return getReconcileFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Reconcile reconcile = 9;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Call.ReconcileOrBuilder getReconcileOrBuilder() {
+        if (reconcileBuilder_ != null) {
+          return reconcileBuilder_.getMessageOrBuilder();
+        } else {
+          return reconcile_;
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Reconcile reconcile = 9;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Call.Reconcile, org.apache.mesos.scheduler.Protos.Call.Reconcile.Builder, org.apache.mesos.scheduler.Protos.Call.ReconcileOrBuilder> 
+          getReconcileFieldBuilder() {
+        if (reconcileBuilder_ == null) {
+          reconcileBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.scheduler.Protos.Call.Reconcile, org.apache.mesos.scheduler.Protos.Call.Reconcile.Builder, org.apache.mesos.scheduler.Protos.Call.ReconcileOrBuilder>(
+                  reconcile_,
+                  getParentForChildren(),
+                  isClean());
+          reconcile_ = null;
+        }
+        return reconcileBuilder_;
+      }
+
+      // optional .mesos.scheduler.Call.Message message = 10;
+      private org.apache.mesos.scheduler.Protos.Call.Message message_ = org.apache.mesos.scheduler.Protos.Call.Message.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Call.Message, org.apache.mesos.scheduler.Protos.Call.Message.Builder, org.apache.mesos.scheduler.Protos.Call.MessageOrBuilder> messageBuilder_;
+      /**
+       * <code>optional .mesos.scheduler.Call.Message message = 10;</code>
+       */
+      public boolean hasMessage() {
+        return ((bitField0_ & 0x00001000) == 0x00001000);
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Message message = 10;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Call.Message getMessage() {
+        if (messageBuilder_ == null) {
+          return message_;
+        } else {
+          return messageBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Message message = 10;</code>
+       */
+      public Builder setMessage(org.apache.mesos.scheduler.Protos.Call.Message value) {
+        if (messageBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          message_ = value;
+          onChanged();
+        } else {
+          messageBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00001000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Message message = 10;</code>
+       */
+      public Builder setMessage(
+          org.apache.mesos.scheduler.Protos.Call.Message.Builder builderForValue) {
+        if (messageBuilder_ == null) {
+          message_ = builderForValue.build();
+          onChanged();
+        } else {
+          messageBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00001000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Message message = 10;</code>
+       */
+      public Builder mergeMessage(org.apache.mesos.scheduler.Protos.Call.Message value) {
+        if (messageBuilder_ == null) {
+          if (((bitField0_ & 0x00001000) == 0x00001000) &&
+              message_ != org.apache.mesos.scheduler.Protos.Call.Message.getDefaultInstance()) {
+            message_ =
+              org.apache.mesos.scheduler.Protos.Call.Message.newBuilder(message_).mergeFrom(value).buildPartial();
+          } else {
+            message_ = value;
+          }
+          onChanged();
+        } else {
+          messageBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00001000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Message message = 10;</code>
+       */
+      public Builder clearMessage() {
+        if (messageBuilder_ == null) {
+          message_ = org.apache.mesos.scheduler.Protos.Call.Message.getDefaultInstance();
+          onChanged();
+        } else {
+          messageBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00001000);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Message message = 10;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Call.Message.Builder getMessageBuilder() {
+        bitField0_ |= 0x00001000;
+        onChanged();
+        return getMessageFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Message message = 10;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Call.MessageOrBuilder getMessageOrBuilder() {
+        if (messageBuilder_ != null) {
+          return messageBuilder_.getMessageOrBuilder();
+        } else {
+          return message_;
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Message message = 10;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Call.Message, org.apache.mesos.scheduler.Protos.Call.Message.Builder, org.apache.mesos.scheduler.Protos.Call.MessageOrBuilder> 
+          getMessageFieldBuilder() {
+        if (messageBuilder_ == null) {
+          messageBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.scheduler.Protos.Call.Message, org.apache.mesos.scheduler.Protos.Call.Message.Builder, org.apache.mesos.scheduler.Protos.Call.MessageOrBuilder>(
+                  message_,
+                  getParentForChildren(),
+                  isClean());
+          message_ = null;
+        }
+        return messageBuilder_;
+      }
+
+      // optional .mesos.scheduler.Call.Request request = 11;
+      private org.apache.mesos.scheduler.Protos.Call.Request request_ = org.apache.mesos.scheduler.Protos.Call.Request.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Call.Request, org.apache.mesos.scheduler.Protos.Call.Request.Builder, org.apache.mesos.scheduler.Protos.Call.RequestOrBuilder> requestBuilder_;
+      /**
+       * <code>optional .mesos.scheduler.Call.Request request = 11;</code>
+       */
+      public boolean hasRequest() {
+        return ((bitField0_ & 0x00002000) == 0x00002000);
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Request request = 11;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Call.Request getRequest() {
+        if (requestBuilder_ == null) {
+          return request_;
+        } else {
+          return requestBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Request request = 11;</code>
+       */
+      public Builder setRequest(org.apache.mesos.scheduler.Protos.Call.Request value) {
+        if (requestBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          request_ = value;
+          onChanged();
+        } else {
+          requestBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00002000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Request request = 11;</code>
+       */
+      public Builder setRequest(
+          org.apache.mesos.scheduler.Protos.Call.Request.Builder builderForValue) {
+        if (requestBuilder_ == null) {
+          request_ = builderForValue.build();
+          onChanged();
+        } else {
+          requestBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00002000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Request request = 11;</code>
+       */
+      public Builder mergeRequest(org.apache.mesos.scheduler.Protos.Call.Request value) {
+        if (requestBuilder_ == null) {
+          if (((bitField0_ & 0x00002000) == 0x00002000) &&
+              request_ != org.apache.mesos.scheduler.Protos.Call.Request.getDefaultInstance()) {
+            request_ =
+              org.apache.mesos.scheduler.Protos.Call.Request.newBuilder(request_).mergeFrom(value).buildPartial();
+          } else {
+            request_ = value;
+          }
+          onChanged();
+        } else {
+          requestBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00002000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Request request = 11;</code>
+       */
+      public Builder clearRequest() {
+        if (requestBuilder_ == null) {
+          request_ = org.apache.mesos.scheduler.Protos.Call.Request.getDefaultInstance();
+          onChanged();
+        } else {
+          requestBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00002000);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Request request = 11;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Call.Request.Builder getRequestBuilder() {
+        bitField0_ |= 0x00002000;
+        onChanged();
+        return getRequestFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Request request = 11;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Call.RequestOrBuilder getRequestOrBuilder() {
+        if (requestBuilder_ != null) {
+          return requestBuilder_.getMessageOrBuilder();
+        } else {
+          return request_;
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Request request = 11;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Call.Request, org.apache.mesos.scheduler.Protos.Call.Request.Builder, org.apache.mesos.scheduler.Protos.Call.RequestOrBuilder> 
+          getRequestFieldBuilder() {
+        if (requestBuilder_ == null) {
+          requestBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.scheduler.Protos.Call.Request, org.apache.mesos.scheduler.Protos.Call.Request.Builder, org.apache.mesos.scheduler.Protos.Call.RequestOrBuilder>(
+                  request_,
+                  getParentForChildren(),
+                  isClean());
+          request_ = null;
+        }
+        return requestBuilder_;
+      }
+
+      // optional .mesos.scheduler.Call.Suppress suppress = 16;
+      private org.apache.mesos.scheduler.Protos.Call.Suppress suppress_ = org.apache.mesos.scheduler.Protos.Call.Suppress.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Call.Suppress, org.apache.mesos.scheduler.Protos.Call.Suppress.Builder, org.apache.mesos.scheduler.Protos.Call.SuppressOrBuilder> suppressBuilder_;
+      /**
+       * <code>optional .mesos.scheduler.Call.Suppress suppress = 16;</code>
+       */
+      public boolean hasSuppress() {
+        return ((bitField0_ & 0x00004000) == 0x00004000);
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Suppress suppress = 16;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Call.Suppress getSuppress() {
+        if (suppressBuilder_ == null) {
+          return suppress_;
+        } else {
+          return suppressBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Suppress suppress = 16;</code>
+       */
+      public Builder setSuppress(org.apache.mesos.scheduler.Protos.Call.Suppress value) {
+        if (suppressBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          suppress_ = value;
+          onChanged();
+        } else {
+          suppressBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00004000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Suppress suppress = 16;</code>
+       */
+      public Builder setSuppress(
+          org.apache.mesos.scheduler.Protos.Call.Suppress.Builder builderForValue) {
+        if (suppressBuilder_ == null) {
+          suppress_ = builderForValue.build();
+          onChanged();
+        } else {
+          suppressBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00004000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Suppress suppress = 16;</code>
+       */
+      public Builder mergeSuppress(org.apache.mesos.scheduler.Protos.Call.Suppress value) {
+        if (suppressBuilder_ == null) {
+          if (((bitField0_ & 0x00004000) == 0x00004000) &&
+              suppress_ != org.apache.mesos.scheduler.Protos.Call.Suppress.getDefaultInstance()) {
+            suppress_ =
+              org.apache.mesos.scheduler.Protos.Call.Suppress.newBuilder(suppress_).mergeFrom(value).buildPartial();
+          } else {
+            suppress_ = value;
+          }
+          onChanged();
+        } else {
+          suppressBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00004000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Suppress suppress = 16;</code>
+       */
+      public Builder clearSuppress() {
+        if (suppressBuilder_ == null) {
+          suppress_ = org.apache.mesos.scheduler.Protos.Call.Suppress.getDefaultInstance();
+          onChanged();
+        } else {
+          suppressBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00004000);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Suppress suppress = 16;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Call.Suppress.Builder getSuppressBuilder() {
+        bitField0_ |= 0x00004000;
+        onChanged();
+        return getSuppressFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Suppress suppress = 16;</code>
+       */
+      public org.apache.mesos.scheduler.Protos.Call.SuppressOrBuilder getSuppressOrBuilder() {
+        if (suppressBuilder_ != null) {
+          return suppressBuilder_.getMessageOrBuilder();
+        } else {
+          return suppress_;
+        }
+      }
+      /**
+       * <code>optional .mesos.scheduler.Call.Suppress suppress = 16;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.scheduler.Protos.Call.Suppress, org.apache.mesos.scheduler.Protos.Call.Suppress.Builder, org.apache.mesos.scheduler.Protos.Call.SuppressOrBuilder> 
+          getSuppressFieldBuilder() {
+        if (suppressBuilder_ == null) {
+          suppressBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.scheduler.Protos.Call.Suppress, org.apache.mesos.scheduler.Protos.Call.Suppress.Builder, org.apache.mesos.scheduler.Protos.Call.SuppressOrBuilder>(
+                  suppress_,
+                  getParentForChildren(),
+                  isClean());
+          suppress_ = null;
+        }
+        return suppressBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.scheduler.Call)
+    }
+
+    static {
+      defaultInstance = new Call(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.scheduler.Call)
+  }
+
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_scheduler_Event_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_scheduler_Event_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_scheduler_Event_Subscribed_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_scheduler_Event_Subscribed_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_scheduler_Event_Offers_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_scheduler_Event_Offers_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_scheduler_Event_InverseOffers_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_scheduler_Event_InverseOffers_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_scheduler_Event_Rescind_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_scheduler_Event_Rescind_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_scheduler_Event_RescindInverseOffer_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_scheduler_Event_RescindInverseOffer_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_scheduler_Event_Update_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_scheduler_Event_Update_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_scheduler_Event_Message_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_scheduler_Event_Message_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_scheduler_Event_Failure_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_scheduler_Event_Failure_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_scheduler_Event_Error_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_scheduler_Event_Error_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_scheduler_Call_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_scheduler_Call_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_scheduler_Call_Subscribe_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_scheduler_Call_Subscribe_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_scheduler_Call_Accept_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_scheduler_Call_Accept_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_scheduler_Call_Decline_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_scheduler_Call_Decline_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_scheduler_Call_AcceptInverseOffers_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_scheduler_Call_AcceptInverseOffers_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_scheduler_Call_DeclineInverseOffers_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_scheduler_Call_DeclineInverseOffers_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_scheduler_Call_Revive_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_scheduler_Call_Revive_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_scheduler_Call_Kill_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_scheduler_Call_Kill_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_scheduler_Call_Shutdown_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_scheduler_Call_Shutdown_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_scheduler_Call_Acknowledge_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_scheduler_Call_Acknowledge_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_scheduler_Call_Reconcile_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_scheduler_Call_Reconcile_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_scheduler_Call_Reconcile_Task_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_scheduler_Call_Reconcile_Task_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_scheduler_Call_Message_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_scheduler_Call_Message_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_scheduler_Call_Request_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_scheduler_Call_Request_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_scheduler_Call_Suppress_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_scheduler_Call_Suppress_fieldAccessorTable;
+
+  public static com.google.protobuf.Descriptors.FileDescriptor
+      getDescriptor() {
+    return descriptor;
+  }
+  private static com.google.protobuf.Descriptors.FileDescriptor
+      descriptor;
+  static {
+    java.lang.String[] descriptorData = {
+      "\n\025mesos/scheduler.proto\022\017mesos.scheduler" +
+      "\032\021mesos/mesos.proto\"\246\n\n\005Event\022)\n\004type\030\001 " +
+      "\001(\0162\033.mesos.scheduler.Event.Type\0225\n\nsubs" +
+      "cribed\030\002 \001(\0132!.mesos.scheduler.Event.Sub" +
+      "scribed\022-\n\006offers\030\003 \001(\0132\035.mesos.schedule" +
+      "r.Event.Offers\022<\n\016inverse_offers\030\t \001(\0132$" +
+      ".mesos.scheduler.Event.InverseOffers\022/\n\007" +
+      "rescind\030\004 \001(\0132\036.mesos.scheduler.Event.Re" +
+      "scind\022I\n\025rescind_inverse_offer\030\n \001(\0132*.m" +
+      "esos.scheduler.Event.RescindInverseOffer",
+      "\022-\n\006update\030\005 \001(\0132\035.mesos.scheduler.Event" +
+      ".Update\022/\n\007message\030\006 \001(\0132\036.mesos.schedul" +
+      "er.Event.Message\022/\n\007failure\030\007 \001(\0132\036.meso" +
+      "s.scheduler.Event.Failure\022+\n\005error\030\010 \001(\013" +
+      "2\034.mesos.scheduler.Event.Error\032\202\001\n\nSubsc" +
+      "ribed\022(\n\014framework_id\030\001 \002(\0132\022.mesos.Fram" +
+      "eworkID\022\"\n\032heartbeat_interval_seconds\030\002 " +
+      "\001(\001\022&\n\013master_info\030\003 \001(\0132\021.mesos.MasterI" +
+      "nfo\032&\n\006Offers\022\034\n\006offers\030\001 \003(\0132\014.mesos.Of" +
+      "fer\032<\n\rInverseOffers\022+\n\016inverse_offers\030\001",
+      " \003(\0132\023.mesos.InverseOffer\032+\n\007Rescind\022 \n\010" +
+      "offer_id\030\001 \002(\0132\016.mesos.OfferID\032?\n\023Rescin" +
+      "dInverseOffer\022(\n\020inverse_offer_id\030\001 \002(\0132" +
+      "\016.mesos.OfferID\032+\n\006Update\022!\n\006status\030\001 \002(" +
+      "\0132\021.mesos.TaskStatus\032a\n\007Message\022 \n\010slave" +
+      "_id\030\001 \002(\0132\016.mesos.SlaveID\022&\n\013executor_id" +
+      "\030\002 \002(\0132\021.mesos.ExecutorID\022\014\n\004data\030\003 \002(\014\032" +
+      "c\n\007Failure\022 \n\010slave_id\030\001 \001(\0132\016.mesos.Sla" +
+      "veID\022&\n\013executor_id\030\002 \001(\0132\021.mesos.Execut" +
+      "orID\022\016\n\006status\030\003 \001(\005\032\030\n\005Error\022\017\n\007message",
+      "\030\001 \002(\t\"\253\001\n\004Type\022\013\n\007UNKNOWN\020\000\022\016\n\nSUBSCRIB" +
+      "ED\020\001\022\n\n\006OFFERS\020\002\022\022\n\016INVERSE_OFFERS\020\t\022\013\n\007" +
+      "RESCIND\020\003\022\031\n\025RESCIND_INVERSE_OFFER\020\n\022\n\n\006" +
+      "UPDATE\020\004\022\013\n\007MESSAGE\020\005\022\013\n\007FAILURE\020\006\022\t\n\005ER" +
+      "ROR\020\007\022\r\n\tHEARTBEAT\020\010\"\345\020\n\004Call\022(\n\014framewo" +
+      "rk_id\030\001 \001(\0132\022.mesos.FrameworkID\022(\n\004type\030" +
+      "\002 \001(\0162\032.mesos.scheduler.Call.Type\0222\n\tsub" +
+      "scribe\030\003 \001(\0132\037.mesos.scheduler.Call.Subs" +
+      "cribe\022,\n\006accept\030\004 \001(\0132\034.mesos.scheduler." +
+      "Call.Accept\022.\n\007decline\030\005 \001(\0132\035.mesos.sch",
+      "eduler.Call.Decline\022H\n\025accept_inverse_of" +
+      "fers\030\r \001(\0132).mesos.scheduler.Call.Accept" +
+      "InverseOffers\022J\n\026decline_inverse_offers\030" +
+      "\016 \001(\0132*.mesos.scheduler.Call.DeclineInve" +
+      "rseOffers\022,\n\006revive\030\017 \001(\0132\034.mesos.schedu" +
+      "ler.Call.Revive\022(\n\004kill\030\006 \001(\0132\032.mesos.sc" +
+      "heduler.Call.Kill\0220\n\010shutdown\030\007 \001(\0132\036.me" +
+      "sos.scheduler.Call.Shutdown\0226\n\013acknowled" +
+      "ge\030\010 \001(\0132!.mesos.scheduler.Call.Acknowle" +
+      "dge\0222\n\treconcile\030\t \001(\0132\037.mesos.scheduler",
+      ".Call.Reconcile\022.\n\007message\030\n \001(\0132\035.mesos" +
+      ".scheduler.Call.Message\022.\n\007request\030\013 \001(\013" +
+      "2\035.mesos.scheduler.Call.Request\0220\n\010suppr" +
+      "ess\030\020 \001(\0132\036.mesos.scheduler.Call.Suppres" +
+      "s\032b\n\tSubscribe\022,\n\016framework_info\030\001 \002(\0132\024" +
+      ".mesos.FrameworkInfo\022\r\n\005force\030\002 \001(\010\022\030\n\020s" +
+      "uppressed_roles\030\003 \003(\t\032x\n\006Accept\022!\n\toffer" +
+      "_ids\030\001 \003(\0132\016.mesos.OfferID\022*\n\noperations" +
+      "\030\002 \003(\0132\026.mesos.Offer.Operation\022\037\n\007filter" +
+      "s\030\003 \001(\0132\016.mesos.Filters\032M\n\007Decline\022!\n\tof",
+      "fer_ids\030\001 \003(\0132\016.mesos.OfferID\022\037\n\007filters" +
+      "\030\002 \001(\0132\016.mesos.Filters\032a\n\023AcceptInverseO" +
+      "ffers\022)\n\021inverse_offer_ids\030\001 \003(\0132\016.mesos" +
+      ".OfferID\022\037\n\007filters\030\002 \001(\0132\016.mesos.Filter" +
+      "s\032b\n\024DeclineInverseOffers\022)\n\021inverse_off" +
+      "er_ids\030\001 \003(\0132\016.mesos.OfferID\022\037\n\007filters\030" +
+      "\002 \001(\0132\016.mesos.Filters\032\027\n\006Revive\022\r\n\005roles" +
+      "\030\001 \003(\t\032p\n\004Kill\022\036\n\007task_id\030\001 \002(\0132\r.mesos." +
+      "TaskID\022 \n\010slave_id\030\002 \001(\0132\016.mesos.SlaveID" +
+      "\022&\n\013kill_policy\030\003 \001(\0132\021.mesos.KillPolicy",
+      "\032T\n\010Shutdown\022&\n\013executor_id\030\001 \002(\0132\021.meso" +
+      "s.ExecutorID\022 \n\010slave_id\030\002 \002(\0132\016.mesos.S" +
+      "laveID\032]\n\013Acknowledge\022 \n\010slave_id\030\001 \002(\0132" +
+      "\016.mesos.SlaveID\022\036\n\007task_id\030\002 \002(\0132\r.mesos" +
+      ".TaskID\022\014\n\004uuid\030\003 \002(\014\032\212\001\n\tReconcile\0223\n\005t" +
+      "asks\030\001 \003(\0132$.mesos.scheduler.Call.Reconc" +
+      "ile.Task\032H\n\004Task\022\036\n\007task_id\030\001 \002(\0132\r.meso" +
+      "s.TaskID\022 \n\010slave_id\030\002 \001(\0132\016.mesos.Slave" +
+      "ID\032a\n\007Message\022 \n\010slave_id\030\001 \002(\0132\016.mesos." +
+      "SlaveID\022&\n\013executor_id\030\002 \002(\0132\021.mesos.Exe",
+      "cutorID\022\014\n\004data\030\003 \002(\014\032+\n\007Request\022 \n\010requ" +
+      "ests\030\001 \003(\0132\016.mesos.Request\032\031\n\010Suppress\022\r" +
+      "\n\005roles\030\001 \003(\t\"\354\001\n\004Type\022\013\n\007UNKNOWN\020\000\022\r\n\tS" +
+      "UBSCRIBE\020\001\022\014\n\010TEARDOWN\020\002\022\n\n\006ACCEPT\020\003\022\013\n\007" +
+      "DECLINE\020\004\022\031\n\025ACCEPT_INVERSE_OFFERS\020\r\022\032\n\026" +
+      "DECLINE_INVERSE_OFFERS\020\016\022\n\n\006REVIVE\020\005\022\010\n\004" +
+      "KILL\020\006\022\014\n\010SHUTDOWN\020\007\022\017\n\013ACKNOWLEDGE\020\010\022\r\n" +
+      "\tRECONCILE\020\t\022\013\n\007MESSAGE\020\n\022\013\n\007REQUEST\020\013\022\014" +
+      "\n\010SUPPRESS\020\014B$\n\032org.apache.mesos.schedul" +
+      "erB\006Protos"
+    };
+    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
+      new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
+        public com.google.protobuf.ExtensionRegistry assignDescriptors(
+            com.google.protobuf.Descriptors.FileDescriptor root) {
+          descriptor = root;
+          internal_static_mesos_scheduler_Event_descriptor =
+            getDescriptor().getMessageTypes().get(0);
+          internal_static_mesos_scheduler_Event_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_scheduler_Event_descriptor,
+              new java.lang.String[] { "Type", "Subscribed", "Offers", "InverseOffers", "Rescind", "RescindInverseOffer", "Update", "Message", "Failure", "Error", });
+          internal_static_mesos_scheduler_Event_Subscribed_descriptor =
+            internal_static_mesos_scheduler_Event_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_scheduler_Event_Subscribed_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_scheduler_Event_Subscribed_descriptor,
+              new java.lang.String[] { "FrameworkId", "HeartbeatIntervalSeconds", "MasterInfo", });
+          internal_static_mesos_scheduler_Event_Offers_descriptor =
+            internal_static_mesos_scheduler_Event_descriptor.getNestedTypes().get(1);
+          internal_static_mesos_scheduler_Event_Offers_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_scheduler_Event_Offers_descriptor,
+              new java.lang.String[] { "Offers", });
+          internal_static_mesos_scheduler_Event_InverseOffers_descriptor =
+            internal_static_mesos_scheduler_Event_descriptor.getNestedTypes().get(2);
+          internal_static_mesos_scheduler_Event_InverseOffers_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_scheduler_Event_InverseOffers_descriptor,
+              new java.lang.String[] { "InverseOffers", });
+          internal_static_mesos_scheduler_Event_Rescind_descriptor =
+            internal_static_mesos_scheduler_Event_descriptor.getNestedTypes().get(3);
+          internal_static_mesos_scheduler_Event_Rescind_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_scheduler_Event_Rescind_descriptor,
+              new java.lang.String[] { "OfferId", });
+          internal_static_mesos_scheduler_Event_RescindInverseOffer_descriptor =
+            internal_static_mesos_scheduler_Event_descriptor.getNestedTypes().get(4);
+          internal_static_mesos_scheduler_Event_RescindInverseOffer_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_scheduler_Event_RescindInverseOffer_descriptor,
+              new java.lang.String[] { "InverseOfferId", });
+          internal_static_mesos_scheduler_Event_Update_descriptor =
+            internal_static_mesos_scheduler_Event_descriptor.getNestedTypes().get(5);
+          internal_static_mesos_scheduler_Event_Update_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_scheduler_Event_Update_descriptor,
+              new java.lang.String[] { "Status", });
+          internal_static_mesos_scheduler_Event_Message_descriptor =
+            internal_static_mesos_scheduler_Event_descriptor.getNestedTypes().get(6);
+          internal_static_mesos_scheduler_Event_Message_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_scheduler_Event_Message_descriptor,
+              new java.lang.String[] { "SlaveId", "ExecutorId", "Data", });
+          internal_static_mesos_scheduler_Event_Failure_descriptor =
+            internal_static_mesos_scheduler_Event_descriptor.getNestedTypes().get(7);
+          internal_static_mesos_scheduler_Event_Failure_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_scheduler_Event_Failure_descriptor,
+              new java.lang.String[] { "SlaveId", "ExecutorId", "Status", });
+          internal_static_mesos_scheduler_Event_Error_descriptor =
+            internal_static_mesos_scheduler_Event_descriptor.getNestedTypes().get(8);
+          internal_static_mesos_scheduler_Event_Error_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_scheduler_Event_Error_descriptor,
+              new java.lang.String[] { "Message", });
+          internal_static_mesos_scheduler_Call_descriptor =
+            getDescriptor().getMessageTypes().get(1);
+          internal_static_mesos_scheduler_Call_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_scheduler_Call_descriptor,
+              new java.lang.String[] { "FrameworkId", "Type", "Subscribe", "Accept", "Decline", "AcceptInverseOffers", "DeclineInverseOffers", "Revive", "Kill", "Shutdown", "Acknowledge", "Reconcile", "Message", "Request", "Suppress", });
+          internal_static_mesos_scheduler_Call_Subscribe_descriptor =
+            internal_static_mesos_scheduler_Call_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_scheduler_Call_Subscribe_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_scheduler_Call_Subscribe_descriptor,
+              new java.lang.String[] { "FrameworkInfo", "Force", "SuppressedRoles", });
+          internal_static_mesos_scheduler_Call_Accept_descriptor =
+            internal_static_mesos_scheduler_Call_descriptor.getNestedTypes().get(1);
+          internal_static_mesos_scheduler_Call_Accept_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_scheduler_Call_Accept_descriptor,
+              new java.lang.String[] { "OfferIds", "Operations", "Filters", });
+          internal_static_mesos_scheduler_Call_Decline_descriptor =
+            internal_static_mesos_scheduler_Call_descriptor.getNestedTypes().get(2);
+          internal_static_mesos_scheduler_Call_Decline_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_scheduler_Call_Decline_descriptor,
+              new java.lang.String[] { "OfferIds", "Filters", });
+          internal_static_mesos_scheduler_Call_AcceptInverseOffers_descriptor =
+            internal_static_mesos_scheduler_Call_descriptor.getNestedTypes().get(3);
+          internal_static_mesos_scheduler_Call_AcceptInverseOffers_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_scheduler_Call_AcceptInverseOffers_descriptor,
+              new java.lang.String[] { "InverseOfferIds", "Filters", });
+          internal_static_mesos_scheduler_Call_DeclineInverseOffers_descriptor =
+            internal_static_mesos_scheduler_Call_descriptor.getNestedTypes().get(4);
+          internal_static_mesos_scheduler_Call_DeclineInverseOffers_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_scheduler_Call_DeclineInverseOffers_descriptor,
+              new java.lang.String[] { "InverseOfferIds", "Filters", });
+          internal_static_mesos_scheduler_Call_Revive_descriptor =
+            internal_static_mesos_scheduler_Call_descriptor.getNestedTypes().get(5);
+          internal_static_mesos_scheduler_Call_Revive_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_scheduler_Call_Revive_descriptor,
+              new java.lang.String[] { "Roles", });
+          internal_static_mesos_scheduler_Call_Kill_descriptor =
+            internal_static_mesos_scheduler_Call_descriptor.getNestedTypes().get(6);
+          internal_static_mesos_scheduler_Call_Kill_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_scheduler_Call_Kill_descriptor,
+              new java.lang.String[] { "TaskId", "SlaveId", "KillPolicy", });
+          internal_static_mesos_scheduler_Call_Shutdown_descriptor =
+            internal_static_mesos_scheduler_Call_descriptor.getNestedTypes().get(7);
+          internal_static_mesos_scheduler_Call_Shutdown_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_scheduler_Call_Shutdown_descriptor,
+              new java.lang.String[] { "ExecutorId", "SlaveId", });
+          internal_static_mesos_scheduler_Call_Acknowledge_descriptor =
+            internal_static_mesos_scheduler_Call_descriptor.getNestedTypes().get(8);
+          internal_static_mesos_scheduler_Call_Acknowledge_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_scheduler_Call_Acknowledge_descriptor,
+              new java.lang.String[] { "SlaveId", "TaskId", "Uuid", });
+          internal_static_mesos_scheduler_Call_Reconcile_descriptor =
+            internal_static_mesos_scheduler_Call_descriptor.getNestedTypes().get(9);
+          internal_static_mesos_scheduler_Call_Reconcile_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_scheduler_Call_Reconcile_descriptor,
+              new java.lang.String[] { "Tasks", });
+          internal_static_mesos_scheduler_Call_Reconcile_Task_descriptor =
+            internal_static_mesos_scheduler_Call_Reconcile_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_scheduler_Call_Reconcile_Task_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_scheduler_Call_Reconcile_Task_descriptor,
+              new java.lang.String[] { "TaskId", "SlaveId", });
+          internal_static_mesos_scheduler_Call_Message_descriptor =
+            internal_static_mesos_scheduler_Call_descriptor.getNestedTypes().get(10);
+          internal_static_mesos_scheduler_Call_Message_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_scheduler_Call_Message_descriptor,
+              new java.lang.String[] { "SlaveId", "ExecutorId", "Data", });
+          internal_static_mesos_scheduler_Call_Request_descriptor =
+            internal_static_mesos_scheduler_Call_descriptor.getNestedTypes().get(11);
+          internal_static_mesos_scheduler_Call_Request_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_scheduler_Call_Request_descriptor,
+              new java.lang.String[] { "Requests", });
+          internal_static_mesos_scheduler_Call_Suppress_descriptor =
+            internal_static_mesos_scheduler_Call_descriptor.getNestedTypes().get(12);
+          internal_static_mesos_scheduler_Call_Suppress_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_scheduler_Call_Suppress_descriptor,
+              new java.lang.String[] { "Roles", });
+          return null;
+        }
+      };
+    com.google.protobuf.Descriptors.FileDescriptor
+      .internalBuildGeneratedFileFrom(descriptorData,
+        new com.google.protobuf.Descriptors.FileDescriptor[] {
+          org.apache.mesos.Protos.getDescriptor(),
+        }, assigner);
+  }
+
+  // @@protoc_insertion_point(outer_class_scope)
+}
diff --git a/myriad-commons/src/main/java/org/apache/mesos/state/AbstractState.java b/myriad-commons/src/main/java/org/apache/mesos/state/AbstractState.java
new file mode 100644
index 0000000..8ac1498
--- /dev/null
+++ b/myriad-commons/src/main/java/org/apache/mesos/state/AbstractState.java
@@ -0,0 +1,403 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.mesos.state;
+
+import java.util.Iterator;
+
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeoutException;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.mesos.MesosNativeLibrary;
+
+/**
+ * Abstract implementation of State that provides operations on
+ * futures to make concrete classes easier to create.
+ */
+public abstract class AbstractState implements State {
+    static {
+        MesosNativeLibrary.load();
+    }
+
+    @Override
+    public Future<Variable> fetch(final String name) {
+        if (!MesosNativeLibrary.version().before(MESOS_2161_JIRA_FIX_VERSION)) {
+            return new FetchFuture(name);
+        }
+
+        // TODO(jmlvanre): Deprecate anonymous future in 0.24 (MESOS-2161).
+        final long future = __fetch(name); // Asynchronously start the operation.
+        return new Future<Variable>() {
+            @Override
+            public boolean cancel(boolean mayInterruptIfRunning) {
+                if (mayInterruptIfRunning) {
+                    return __fetch_cancel(future);
+                }
+                return false; // Should not interrupt and already running (or finished).
+            }
+
+            @Override
+            public boolean isCancelled() {
+                return __fetch_is_cancelled(future);
+            }
+
+            @Override
+            public boolean isDone() {
+                return __fetch_is_done(future);
+            }
+
+            @Override
+            public Variable get() throws InterruptedException, ExecutionException {
+                return __fetch_get(future);
+            }
+
+            @Override
+            public Variable get(long timeout, TimeUnit unit)
+                    throws InterruptedException, ExecutionException, TimeoutException {
+                return __fetch_get_timeout(future, timeout, unit);
+            }
+
+            @Override
+            protected void finalize() {
+                __fetch_finalize(future);
+            }
+        };
+    }
+
+    @Override
+    public Future<Variable> store(Variable variable) {
+        if (!MesosNativeLibrary.version().before(MESOS_2161_JIRA_FIX_VERSION)) {
+            return new StoreFuture(variable);
+        }
+
+        // TODO(jmlvanre): Deprecate anonymous future in 0.24 (MESOS-2161).
+        final long future = __store(variable); // Asynchronously start the operation.
+        return new Future<Variable>() {
+            @Override
+            public boolean cancel(boolean mayInterruptIfRunning) {
+                if (mayInterruptIfRunning) {
+                    return __store_cancel(future);
+                }
+                return false; // Should not interrupt and already running (or finished).
+            }
+
+            @Override
+            public boolean isCancelled() {
+                return __store_is_cancelled(future);
+            }
+
+            @Override
+            public boolean isDone() {
+                return __store_is_done(future);
+            }
+
+            @Override
+            public Variable get() throws InterruptedException, ExecutionException {
+                return __store_get(future);
+            }
+
+            @Override
+            public Variable get(long timeout, TimeUnit unit)
+                    throws InterruptedException, ExecutionException, TimeoutException {
+                return __store_get_timeout(future, timeout, unit);
+            }
+
+            @Override
+            protected void finalize() {
+                __store_finalize(future);
+            }
+        };
+    }
+
+    @Override
+    public Future<Boolean> expunge(Variable variable) {
+        if (!MesosNativeLibrary.version().before(MESOS_2161_JIRA_FIX_VERSION)) {
+            return new ExpungeFuture(variable);
+        }
+
+        // TODO(jmlvanre): Deprecate anonymous future in 0.24 (MESOS-2161).
+        final long future = __expunge(variable); // Asynchronously start the operation.
+        return new Future<Boolean>() {
+            @Override
+            public boolean cancel(boolean mayInterruptIfRunning) {
+                if (mayInterruptIfRunning) {
+                    return __expunge_cancel(future);
+                }
+                return false; // Should not interrupt and already running (or finished).
+            }
+
+            @Override
+            public boolean isCancelled() {
+                return __expunge_is_cancelled(future);
+            }
+
+            @Override
+            public boolean isDone() {
+                return __expunge_is_done(future);
+            }
+
+            @Override
+            public Boolean get() throws InterruptedException, ExecutionException {
+                return __expunge_get(future);
+            }
+
+            @Override
+            public Boolean get(long timeout, TimeUnit unit)
+                    throws InterruptedException, ExecutionException, TimeoutException {
+                return __expunge_get_timeout(future, timeout, unit);
+            }
+
+            @Override
+            protected void finalize() {
+                __expunge_finalize(future);
+            }
+        };
+    }
+
+    public Future<Iterator<String>> names() {
+        if (!MesosNativeLibrary.version().before(MESOS_2161_JIRA_FIX_VERSION)) {
+            return new NamesFuture();
+        }
+
+        // TODO(jmlvanre): Deprecate anonymous future in 0.24 (MESOS-2161).
+        final long future = __names(); // Asynchronously start the operation.
+        return new Future<Iterator<String>>() {
+            @Override
+            public boolean cancel(boolean mayInterruptIfRunning) {
+                if (mayInterruptIfRunning) {
+                    return __names_cancel(future);
+                }
+                return false; // Should not interrupt and already running (or finished).
+            }
+
+            @Override
+            public boolean isCancelled() {
+                return __names_is_cancelled(future);
+            }
+
+            @Override
+            public boolean isDone() {
+                return __names_is_done(future);
+            }
+
+            @Override
+            public Iterator<String> get() throws  InterruptedException,
+                    ExecutionException {
+                return __names_get(future);
+            }
+
+            @Override
+            public Iterator<String> get(long timeout, TimeUnit unit)
+                    throws InterruptedException, ExecutionException, TimeoutException {
+                return __names_get_timeout(future, timeout, unit);
+            }
+
+            @Override
+            protected void finalize() {
+                __names_finalize(future);
+            }
+        };
+    }
+
+    protected native void finalize();
+
+    // Native implementations of 'fetch', 'store', 'expunge', and 'names'. We wrap
+    // them in classes to carry the java references correctly through the JNI
+    // bindings (MESOS-2161). The native functions in AbstractState will be
+    // deprecated in 0.24.
+
+    private class FetchFuture implements Future<Variable> {
+
+        public FetchFuture(String name) {
+            future = __fetch(name);
+        }
+
+        @Override
+        public native boolean cancel(boolean mayInterruptIfRunning);
+
+        @Override
+        public native boolean isCancelled();
+
+        @Override
+        public native boolean isDone();
+
+        @Override
+        public native Variable get()
+                throws InterruptedException, ExecutionException;
+
+        @Override
+        public native Variable get(long timeout, TimeUnit unit)
+                throws InterruptedException, ExecutionException, TimeoutException;
+
+        @Override
+        protected native void finalize();
+
+        private long future;
+    }
+
+    private native long __fetch(String name);
+
+    // TODO(jmlvanre): Deprecate below functions in 0.24 because we can't track
+    // the java object references correctly. (MESOS-2161). The above 'FetchFuture'
+    // class fixes this bug. We leave the below functions for backwards
+    // compatibility.
+    private native boolean __fetch_cancel(long future);
+    private native boolean __fetch_is_cancelled(long future);
+    private native boolean __fetch_is_done(long future);
+    private native Variable __fetch_get(long future);
+    private native Variable __fetch_get_timeout(
+            long future, long timeout, TimeUnit unit);
+    private native void __fetch_finalize(long future);
+
+    private class StoreFuture implements Future<Variable> {
+
+        public StoreFuture(Variable variable) {
+            future = __store(variable);
+        }
+
+        @Override
+        public native boolean cancel(boolean mayInterruptIfRunning);
+
+        @Override
+        public native boolean isCancelled();
+
+        @Override
+        public native boolean isDone();
+
+        @Override
+        public native Variable get()
+                throws InterruptedException, ExecutionException;
+
+        @Override
+        public native Variable get(long timeout, TimeUnit unit)
+                throws InterruptedException, ExecutionException, TimeoutException;
+
+        @Override
+        protected native void finalize();
+
+        private long future;
+    }
+
+    private native long __store(Variable variable);
+
+    // TODO(jmlvanre): Deprecate below functions in 0.24 because we can't track
+    // the java object references correctly. (MESOS-2161). The above 'StoreFuture'
+    // class fixes this bug. We leave the below functions for backwards
+    // compatibility.
+    private native boolean __store_cancel(long future);
+    private native boolean __store_is_cancelled(long future);
+    private native boolean __store_is_done(long future);
+    private native Variable __store_get(long future);
+    private native Variable __store_get_timeout(
+            long future, long timeout, TimeUnit unit);
+    private native void __store_finalize(long future);
+
+    private class ExpungeFuture implements Future<Boolean> {
+
+        public ExpungeFuture(Variable variable) {
+            future = __expunge(variable);
+        }
+
+        @Override
+        public native boolean cancel(boolean mayInterruptIfRunning);
+
+        @Override
+        public native boolean isCancelled();
+
+        @Override
+        public native boolean isDone();
+
+        @Override
+        public native Boolean get()
+                throws InterruptedException, ExecutionException;
+
+        @Override
+        public native Boolean get(long timeout, TimeUnit unit)
+                throws InterruptedException, ExecutionException, TimeoutException;
+
+        @Override
+        protected native void finalize();
+
+        private long future;
+    }
+
+    private native long __expunge(Variable variable);
+
+    // TODO(jmlvanre): Deprecate below functions in 0.24 because we can't track
+    // the java object references correctly. (MESOS-2161). The above
+    // 'ExpungeFuture' class fixes this bug. We leave the below functions for
+    // backwards compatibility.
+    private native boolean __expunge_cancel(long future);
+    private native boolean __expunge_is_cancelled(long future);
+    private native boolean __expunge_is_done(long future);
+    private native Boolean __expunge_get(long future);
+    private native Boolean __expunge_get_timeout(
+            long future, long timeout, TimeUnit unit);
+    private native void __expunge_finalize(long future);
+
+    private class NamesFuture implements Future<Iterator<String>> {
+
+        public NamesFuture() {
+            future = __names();
+        }
+
+        @Override
+        public native boolean cancel(boolean mayInterruptIfRunning);
+
+        @Override
+        public native boolean isCancelled();
+
+        @Override
+        public native boolean isDone();
+
+        @Override
+        public native Iterator<String> get()
+                throws InterruptedException, ExecutionException;
+
+        @Override
+        public native Iterator<String> get(long timeout, TimeUnit unit)
+                throws InterruptedException, ExecutionException, TimeoutException;
+
+        @Override
+        protected native void finalize();
+
+        private long future;
+    }
+
+    private native long __names();
+
+    // TODO(jmlvanre): Deprecate below functions in 0.24 because we can't track
+    // the java object references correctly. (MESOS-2161). The above 'NamesFuture'
+    // class fixes this bug. We leave the below functions for backwards
+    // compatibility.
+    private native boolean __names_cancel(long future);
+    private native boolean __names_is_cancelled(long future);
+    private native boolean __names_is_done(long future);
+    private native Iterator<String> __names_get(long future);
+    private native Iterator<String> __names_get_timeout(
+            long future, long timeout, TimeUnit unit);
+    private native void __names_finalize(long future);
+
+    private long __storage;
+    private long __state;
+
+    private final static MesosNativeLibrary.Version MESOS_2161_JIRA_FIX_VERSION =
+            new MesosNativeLibrary.Version(0, 22, 1);
+}
diff --git a/myriad-commons/src/main/java/org/apache/mesos/state/InMemoryState.java b/myriad-commons/src/main/java/org/apache/mesos/state/InMemoryState.java
new file mode 100644
index 0000000..ebc82cc
--- /dev/null
+++ b/myriad-commons/src/main/java/org/apache/mesos/state/InMemoryState.java
@@ -0,0 +1,143 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.mesos.state;
+
+import java.util.Iterator;
+import java.util.UUID;
+
+import java.util.concurrent.Callable;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.Future;
+import java.util.concurrent.FutureTask;
+
+/**
+ * An in-memory implementation of state.
+ */
+public class InMemoryState implements State {
+    @Override
+    public Future<Variable> fetch(String name) {
+        Entry entry = entries.get(name); // Is null if doesn't exist.
+
+        if (entry == null) {
+            entry = new Entry();
+            entry.name = name;
+            entry.uuid = UUID.randomUUID();
+            entry.value = new byte[0];
+
+            // We use 'putIfAbsent' because multiple threads might be
+            // attempting to fetch a "new" variable at the same time.
+            if (entries.putIfAbsent(name, entry) != null) {
+                return fetch(name);
+            }
+        }
+
+        assert entry != null;
+
+        return futureFrom((Variable) new InMemoryVariable(entry));
+    }
+
+    @Override
+    public Future<Variable> store(Variable v) {
+        InMemoryVariable variable = (InMemoryVariable) v;
+
+        Entry entry = new Entry();
+        entry.name = variable.entry.name;
+        entry.uuid = UUID.randomUUID();
+        entry.value = variable.value;
+
+        if (entries.replace(entry.name, variable.entry, entry)) {
+            return futureFrom((Variable) new InMemoryVariable(entry));
+        }
+
+        return futureFrom((Variable) null);
+    }
+
+    @Override
+    public Future<Boolean> expunge(Variable v) {
+        InMemoryVariable variable = (InMemoryVariable) v;
+
+        return futureFrom(entries.remove(variable.entry.name, variable.entry));
+    }
+
+    @Override
+    public Future<Iterator<String>> names() {
+        return futureFrom(entries.keySet().iterator());
+    }
+
+    private static class InMemoryVariable extends Variable {
+        private InMemoryVariable(Entry entry) {
+            this(entry, null);
+        }
+
+        private InMemoryVariable(Entry entry, byte[] value) {
+            this.entry = entry;
+            this.value = value;
+        }
+
+        @Override
+        public byte[] value() {
+            if (this.value != null) {
+                return this.value;
+            } else {
+                return this.entry.value;
+            }
+        }
+
+        @Override
+        public Variable mutate(byte[] value) {
+            return new InMemoryVariable(entry, value);
+        }
+
+        final Entry entry;
+        final byte[] value;
+    }
+
+    private static class Entry {
+        @Override
+        public boolean equals(Object that) {
+            if (that instanceof Entry) {
+                return uuid.equals(((Entry) that).uuid);
+            }
+
+            return false;
+        }
+
+        @Override
+        public int hashCode() {
+            return uuid.hashCode();
+        }
+
+        String name;
+        UUID uuid;
+        byte[] value;
+    }
+
+    private static <T> Future<T> futureFrom(final T t) {
+        FutureTask<T> future = new FutureTask<T>(new Callable<T>() {
+            public T call() {
+                return t;
+            }});
+        future.run();
+        return future;
+    }
+
+    private final ConcurrentMap<String, Entry> entries =
+            new ConcurrentHashMap<String, Entry>();
+}
diff --git a/myriad-commons/src/main/java/org/apache/mesos/state/LevelDBState.java b/myriad-commons/src/main/java/org/apache/mesos/state/LevelDBState.java
new file mode 100644
index 0000000..d462dd7
--- /dev/null
+++ b/myriad-commons/src/main/java/org/apache/mesos/state/LevelDBState.java
@@ -0,0 +1,36 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.mesos.state;
+
+/**
+ * Implementation of State that uses LevelDB to store
+ * variables/values.
+ */
+public class LevelDBState extends AbstractState {
+    /**
+     * Constructs a new instance of LevelDBState.
+     *
+     * @param path  Absolute path to database.
+     */
+    public LevelDBState(String path) {
+        initialize(path);
+    }
+
+    protected native void initialize(String path);
+}
diff --git a/myriad-commons/src/main/java/org/apache/mesos/state/LogState.java b/myriad-commons/src/main/java/org/apache/mesos/state/LogState.java
new file mode 100644
index 0000000..7df56b5
--- /dev/null
+++ b/myriad-commons/src/main/java/org/apache/mesos/state/LogState.java
@@ -0,0 +1,79 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.mesos.state;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Implementation of State that uses a replicated log to store
+ * variables/values.
+ */
+public class LogState extends AbstractState {
+    /**
+     * Constructs a new instance of LogState.
+     *
+     * @param servers List of ZooKeeper servers, e.g., 'ip1:port1,ip2:port2'.
+     * @param timeout ZooKeeper session timeout.
+     * @param unit    Unit for session timeout.
+     * @param znode   Path to znode where log replicas should be found.
+     * @param quorum  Number of replicas necessary to persist a write.
+     * @param path    Path the local replica uses to read/write data.
+     */
+    public LogState(String servers,
+                    long timeout,
+                    TimeUnit unit,
+                    String znode,
+                    long quorum,
+                    String path) {
+        initialize(servers, timeout, unit, znode, quorum, path, 0);
+    }
+
+    /**
+     * Constructs a new instance of LogState.
+     *
+     * @param servers List of ZooKeeper servers, e.g., 'ip1:port1,ip2:port2'.
+     * @param timeout ZooKeeper session timeout.
+     * @param unit    Unit for session timeout.
+     * @param znode   Path to znode where log replicas should be found.
+     * @param quorum  Number of replicas necessary to persist a write.
+     * @param path    Path the local replica uses to read/write data.
+     * @param diffsBetweenSnapshots Number of diffs to write between snapshots.
+     */
+    public LogState(String servers,
+                    long timeout,
+                    TimeUnit unit,
+                    String znode,
+                    long quorum,
+                    String path,
+                    int diffsBetweenSnapshots) {
+        initialize(servers, timeout, unit, znode, quorum, path, diffsBetweenSnapshots);
+    }
+
+    protected native void initialize(String servers,
+                                     long timeout,
+                                     TimeUnit unit,
+                                     String znode,
+                                     long quorum,
+                                     String path,
+                                     int diffsBetweenSnapshots);
+
+    protected native void finalize();
+
+    private long __log;
+}
diff --git a/myriad-commons/src/main/java/org/apache/mesos/state/State.java b/myriad-commons/src/main/java/org/apache/mesos/state/State.java
new file mode 100644
index 0000000..3050401
--- /dev/null
+++ b/myriad-commons/src/main/java/org/apache/mesos/state/State.java
@@ -0,0 +1,95 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.mesos.state;
+
+import java.util.Iterator;
+
+import java.util.concurrent.Future;
+
+/**
+ * An abstraction of "state" (possibly between multiple distributed
+ * components) represented by "variables" (effectively key/value
+ * pairs). Variables are versioned such that setting a variable in the
+ * state will only succeed if the variable has not changed since last
+ * fetched. Varying implementations of state provide varying
+ * replicated guarantees.
+ * <p>
+ * Note that the semantics of 'fetch' and 'store' provide
+ * atomicity. That is, you cannot store a variable that has changed
+ * since you did the last fetch. That is, if a store succeeds then no
+ * other writes have been performed on the variable since your fetch.
+ *
+ * Example:
+ * <pre>
+ * {@code
+ *   State state = new ZooKeeperState();
+ *   Future<Variable> variable = state.fetch("machines");
+ *   Variable machines = variable.get();
+ *   machines = machines.mutate(...);
+ *   variable = state.store(machines);
+ *   machines = variable.get();
+ * }
+ * </pre>
+ */
+public interface State {
+    /**
+     * Returns an immutable "variable" representing the current value
+     * from the state associated with the specified name.
+     *
+     * @param name  The name of the variable.
+     *
+     * @return      A future of the variable.
+     *
+     * @see Variable
+     */
+    Future<Variable> fetch(String name);
+
+    /**
+     * Returns an immutable "variable" representing the current value in
+     * the state if updating the specified variable in the state was
+     * successful, otherwise returns null.
+     *
+     * @param variable  The variable to be stored.
+     *
+     * @return          A future of a variable with the new value on success,
+     *                  or null on failure.
+     *
+     * @see Variable
+     */
+    Future<Variable> store(Variable variable);
+
+    /**
+     * Returns true if successfully expunged the variable from the state
+     * or false if the variable did not exist or was no longer valid.
+     *
+     * @param variable  The variable to be expunged.
+     *
+     * @return          A future of true on success, false on failure.
+     *
+     * @see Variable
+     */
+    Future<Boolean> expunge(Variable variable);
+
+    /**
+     * Returns an iterator of variable names in the state.
+     *
+     * @return A future of an iterator over all variable names in the state.
+     */
+    Future<Iterator<String>> names();
+}
diff --git a/myriad-commons/src/main/java/org/apache/mesos/state/Variable.java b/myriad-commons/src/main/java/org/apache/mesos/state/Variable.java
new file mode 100644
index 0000000..0be3e3d
--- /dev/null
+++ b/myriad-commons/src/main/java/org/apache/mesos/state/Variable.java
@@ -0,0 +1,48 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.mesos.state;
+
+/**
+ * Represents a key/value pair stored in the {@link State}. Variables
+ * are versioned such that setting a variable in the state will only
+ * succeed if the variable has not changed since last fetched.
+ */
+public class Variable {
+    protected Variable() {}
+
+    /**
+     * Returns the current value of this variable.
+     *
+     * @return The current value.
+     */
+    public native byte[] value();
+
+    /**
+     * Updates the current value of this variable.
+     *
+     * @param value The new value.
+     *
+     * @return      A variable representing the new value.
+     */
+    public native Variable mutate(byte[] value);
+
+    protected native void finalize();
+
+    private long __variable;
+}
diff --git a/myriad-commons/src/main/java/org/apache/mesos/state/ZooKeeperState.java b/myriad-commons/src/main/java/org/apache/mesos/state/ZooKeeperState.java
new file mode 100644
index 0000000..4855236
--- /dev/null
+++ b/myriad-commons/src/main/java/org/apache/mesos/state/ZooKeeperState.java
@@ -0,0 +1,75 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.mesos.state;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Implementation of State that uses ZooKeeper to store
+ * variables/values. Note that this means the values associated with
+ * variables cannot be more than 1 MB (actually slightly less since
+ * we store some bookkeeping information).
+ */
+public class ZooKeeperState extends AbstractState {
+    /**
+     * Constructs a new instance of ZooKeeperState.
+     *
+     * @param servers List of ZooKeeper servers, e.g., 'ip1:port1,ip2:port2'.
+     * @param timeout ZooKeeper session timeout.
+     * @param unit    Unit for session timeout.
+     * @param znode   Path to znode where "state" should be rooted.
+     */
+    public ZooKeeperState(String servers,
+                          long timeout,
+                          TimeUnit unit,
+                          String znode) {
+        initialize(servers, timeout, unit, znode);
+    }
+
+    /**
+     * Constructs a new instance of ZooKeeperState.
+     *
+     * @param servers     List of ZooKeeper servers (e.g., 'ip1:port1,ip2:port2').
+     * @param timeout     ZooKeeper session timeout.
+     * @param unit        Unit for session timeout.
+     * @param znode       Path to znode where "state" should be rooted.
+     * @param scheme      Authentication scheme (e.g., "digest").
+     * @param credentials Authentication credentials (e.g., "user:pass").
+     */
+    public ZooKeeperState(String servers,
+                          long timeout,
+                          TimeUnit unit,
+                          String znode,
+                          String scheme,
+                          byte[] credentials) {
+        initialize(servers, timeout, unit, znode, scheme, credentials);
+    }
+
+    protected native void initialize(String servers,
+                                     long timeout,
+                                     TimeUnit unit,
+                                     String znode);
+
+    protected native void initialize(String servers,
+                                     long timeout,
+                                     TimeUnit unit,
+                                     String znode,
+                                     String scheme,
+                                     byte[] credentials);
+}
diff --git a/myriad-commons/src/main/java/org/apache/mesos/v1/Protos.java b/myriad-commons/src/main/java/org/apache/mesos/v1/Protos.java
new file mode 100644
index 0000000..42cc10b
--- /dev/null
+++ b/myriad-commons/src/main/java/org/apache/mesos/v1/Protos.java
@@ -0,0 +1,162577 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: mesos/v1/mesos.proto
+
+package org.apache.mesos.v1;
+
+public final class Protos {
+  private Protos() {}
+  public static void registerAllExtensions(
+      com.google.protobuf.ExtensionRegistry registry) {
+  }
+  /**
+   * Protobuf enum {@code mesos.v1.Status}
+   *
+   * <pre>
+   **
+   * Status is used to indicate the state of the scheduler and executor
+   * driver after function calls.
+   * </pre>
+   */
+  public enum Status
+      implements com.google.protobuf.ProtocolMessageEnum {
+    /**
+     * <code>DRIVER_NOT_STARTED = 1;</code>
+     */
+    DRIVER_NOT_STARTED(0, 1),
+    /**
+     * <code>DRIVER_RUNNING = 2;</code>
+     */
+    DRIVER_RUNNING(1, 2),
+    /**
+     * <code>DRIVER_ABORTED = 3;</code>
+     */
+    DRIVER_ABORTED(2, 3),
+    /**
+     * <code>DRIVER_STOPPED = 4;</code>
+     */
+    DRIVER_STOPPED(3, 4),
+    ;
+
+    /**
+     * <code>DRIVER_NOT_STARTED = 1;</code>
+     */
+    public static final int DRIVER_NOT_STARTED_VALUE = 1;
+    /**
+     * <code>DRIVER_RUNNING = 2;</code>
+     */
+    public static final int DRIVER_RUNNING_VALUE = 2;
+    /**
+     * <code>DRIVER_ABORTED = 3;</code>
+     */
+    public static final int DRIVER_ABORTED_VALUE = 3;
+    /**
+     * <code>DRIVER_STOPPED = 4;</code>
+     */
+    public static final int DRIVER_STOPPED_VALUE = 4;
+
+
+    public final int getNumber() { return value; }
+
+    public static Status valueOf(int value) {
+      switch (value) {
+        case 1: return DRIVER_NOT_STARTED;
+        case 2: return DRIVER_RUNNING;
+        case 3: return DRIVER_ABORTED;
+        case 4: return DRIVER_STOPPED;
+        default: return null;
+      }
+    }
+
+    public static com.google.protobuf.Internal.EnumLiteMap<Status>
+        internalGetValueMap() {
+      return internalValueMap;
+    }
+    private static com.google.protobuf.Internal.EnumLiteMap<Status>
+        internalValueMap =
+          new com.google.protobuf.Internal.EnumLiteMap<Status>() {
+            public Status findValueByNumber(int number) {
+              return Status.valueOf(number);
+            }
+          };
+
+    public final com.google.protobuf.Descriptors.EnumValueDescriptor
+        getValueDescriptor() {
+      return getDescriptor().getValues().get(index);
+    }
+    public final com.google.protobuf.Descriptors.EnumDescriptor
+        getDescriptorForType() {
+      return getDescriptor();
+    }
+    public static final com.google.protobuf.Descriptors.EnumDescriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.getDescriptor().getEnumTypes().get(0);
+    }
+
+    private static final Status[] VALUES = values();
+
+    public static Status valueOf(
+        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+      if (desc.getType() != getDescriptor()) {
+        throw new java.lang.IllegalArgumentException(
+          "EnumValueDescriptor is not for this type.");
+      }
+      return VALUES[desc.getIndex()];
+    }
+
+    private final int index;
+    private final int value;
+
+    private Status(int index, int value) {
+      this.index = index;
+      this.value = value;
+    }
+
+    // @@protoc_insertion_point(enum_scope:mesos.v1.Status)
+  }
+
+  /**
+   * Protobuf enum {@code mesos.v1.TaskState}
+   *
+   * <pre>
+   **
+   * Describes possible task states. IMPORTANT: Mesos assumes tasks that
+   * enter terminal states (see below) imply the task is no longer
+   * running and thus clean up any thing associated with the task
+   * (ultimately offering any resources being consumed by that task to
+   * another task).
+   * </pre>
+   */
+  public enum TaskState
+      implements com.google.protobuf.ProtocolMessageEnum {
+    /**
+     * <code>TASK_STAGING = 6;</code>
+     *
+     * <pre>
+     * Initial state. Framework status updates should not use.
+     * </pre>
+     */
+    TASK_STAGING(0, 6),
+    /**
+     * <code>TASK_STARTING = 0;</code>
+     *
+     * <pre>
+     * The task is being launched by the executor.
+     * </pre>
+     */
+    TASK_STARTING(1, 0),
+    /**
+     * <code>TASK_RUNNING = 1;</code>
+     */
+    TASK_RUNNING(2, 1),
+    /**
+     * <code>TASK_KILLING = 8;</code>
+     *
+     * <pre>
+     * NOTE: This should only be sent when the framework has
+     * the TASK_KILLING_STATE capability.
+     * </pre>
+     */
+    TASK_KILLING(3, 8),
+    /**
+     * <code>TASK_FINISHED = 2;</code>
+     *
+     * <pre>
+     * TERMINAL: The task finished successfully.
+     * </pre>
+     */
+    TASK_FINISHED(4, 2),
+    /**
+     * <code>TASK_FAILED = 3;</code>
+     *
+     * <pre>
+     * TERMINAL: The task failed to finish successfully.
+     * </pre>
+     */
+    TASK_FAILED(5, 3),
+    /**
+     * <code>TASK_KILLED = 4;</code>
+     *
+     * <pre>
+     * TERMINAL: The task was killed by the executor.
+     * </pre>
+     */
+    TASK_KILLED(6, 4),
+    /**
+     * <code>TASK_ERROR = 7;</code>
+     *
+     * <pre>
+     * TERMINAL: The task description contains an error.
+     * </pre>
+     */
+    TASK_ERROR(7, 7),
+    /**
+     * <code>TASK_LOST = 5;</code>
+     *
+     * <pre>
+     * In Mesos 1.3, this will only be sent when the framework does NOT
+     * opt-in to the PARTITION_AWARE capability.
+     *
+     * NOTE: This state is not always terminal. For example, tasks might
+     * transition from TASK_LOST to TASK_RUNNING or other states when a
+     * partitioned agent re-registers.
+     * </pre>
+     */
+    TASK_LOST(8, 5),
+    /**
+     * <code>TASK_DROPPED = 9;</code>
+     *
+     * <pre>
+     * The task failed to launch because of a transient error. The
+     * task's executor never started running. Unlike TASK_ERROR, the
+     * task description is valid -- attempting to launch the task again
+     * may be successful.
+     * </pre>
+     */
+    TASK_DROPPED(9, 9),
+    /**
+     * <code>TASK_UNREACHABLE = 10;</code>
+     *
+     * <pre>
+     * The task was running on an agent that has lost contact with the
+     * master, typically due to a network failure or partition. The task
+     * may or may not still be running.
+     * </pre>
+     */
+    TASK_UNREACHABLE(10, 10),
+    /**
+     * <code>TASK_GONE = 11;</code>
+     *
+     * <pre>
+     * The task is no longer running. This can occur if the agent has
+     * been terminated along with all of its tasks (e.g., the host that
+     * was running the agent was rebooted). It might also occur if the
+     * task was terminated due to an agent or containerizer error, or if
+     * the task was preempted by the QoS controller in an
+     * oversubscription scenario.
+     * </pre>
+     */
+    TASK_GONE(11, 11),
+    /**
+     * <code>TASK_GONE_BY_OPERATOR = 12;</code>
+     *
+     * <pre>
+     * The task was running on an agent that the master cannot contact;
+     * the operator has asserted that the agent has been shutdown, but
+     * this has not been directly confirmed by the master. If the
+     * operator is correct, the task is not running and this is a
+     * terminal state; if the operator is mistaken, the task may still
+     * be running and might return to RUNNING in the future.
+     * </pre>
+     */
+    TASK_GONE_BY_OPERATOR(12, 12),
+    /**
+     * <code>TASK_UNKNOWN = 13;</code>
+     *
+     * <pre>
+     * The master has no knowledge of the task. This is typically
+     * because either (a) the master never had knowledge of the task, or
+     * (b) the master forgot about the task because it garbage collected
+     * its metadata about the task. The task may or may not still be
+     * running.
+     * </pre>
+     */
+    TASK_UNKNOWN(13, 13),
+    ;
+
+    /**
+     * <code>TASK_STAGING = 6;</code>
+     *
+     * <pre>
+     * Initial state. Framework status updates should not use.
+     * </pre>
+     */
+    public static final int TASK_STAGING_VALUE = 6;
+    /**
+     * <code>TASK_STARTING = 0;</code>
+     *
+     * <pre>
+     * The task is being launched by the executor.
+     * </pre>
+     */
+    public static final int TASK_STARTING_VALUE = 0;
+    /**
+     * <code>TASK_RUNNING = 1;</code>
+     */
+    public static final int TASK_RUNNING_VALUE = 1;
+    /**
+     * <code>TASK_KILLING = 8;</code>
+     *
+     * <pre>
+     * NOTE: This should only be sent when the framework has
+     * the TASK_KILLING_STATE capability.
+     * </pre>
+     */
+    public static final int TASK_KILLING_VALUE = 8;
+    /**
+     * <code>TASK_FINISHED = 2;</code>
+     *
+     * <pre>
+     * TERMINAL: The task finished successfully.
+     * </pre>
+     */
+    public static final int TASK_FINISHED_VALUE = 2;
+    /**
+     * <code>TASK_FAILED = 3;</code>
+     *
+     * <pre>
+     * TERMINAL: The task failed to finish successfully.
+     * </pre>
+     */
+    public static final int TASK_FAILED_VALUE = 3;
+    /**
+     * <code>TASK_KILLED = 4;</code>
+     *
+     * <pre>
+     * TERMINAL: The task was killed by the executor.
+     * </pre>
+     */
+    public static final int TASK_KILLED_VALUE = 4;
+    /**
+     * <code>TASK_ERROR = 7;</code>
+     *
+     * <pre>
+     * TERMINAL: The task description contains an error.
+     * </pre>
+     */
+    public static final int TASK_ERROR_VALUE = 7;
+    /**
+     * <code>TASK_LOST = 5;</code>
+     *
+     * <pre>
+     * In Mesos 1.3, this will only be sent when the framework does NOT
+     * opt-in to the PARTITION_AWARE capability.
+     *
+     * NOTE: This state is not always terminal. For example, tasks might
+     * transition from TASK_LOST to TASK_RUNNING or other states when a
+     * partitioned agent re-registers.
+     * </pre>
+     */
+    public static final int TASK_LOST_VALUE = 5;
+    /**
+     * <code>TASK_DROPPED = 9;</code>
+     *
+     * <pre>
+     * The task failed to launch because of a transient error. The
+     * task's executor never started running. Unlike TASK_ERROR, the
+     * task description is valid -- attempting to launch the task again
+     * may be successful.
+     * </pre>
+     */
+    public static final int TASK_DROPPED_VALUE = 9;
+    /**
+     * <code>TASK_UNREACHABLE = 10;</code>
+     *
+     * <pre>
+     * The task was running on an agent that has lost contact with the
+     * master, typically due to a network failure or partition. The task
+     * may or may not still be running.
+     * </pre>
+     */
+    public static final int TASK_UNREACHABLE_VALUE = 10;
+    /**
+     * <code>TASK_GONE = 11;</code>
+     *
+     * <pre>
+     * The task is no longer running. This can occur if the agent has
+     * been terminated along with all of its tasks (e.g., the host that
+     * was running the agent was rebooted). It might also occur if the
+     * task was terminated due to an agent or containerizer error, or if
+     * the task was preempted by the QoS controller in an
+     * oversubscription scenario.
+     * </pre>
+     */
+    public static final int TASK_GONE_VALUE = 11;
+    /**
+     * <code>TASK_GONE_BY_OPERATOR = 12;</code>
+     *
+     * <pre>
+     * The task was running on an agent that the master cannot contact;
+     * the operator has asserted that the agent has been shutdown, but
+     * this has not been directly confirmed by the master. If the
+     * operator is correct, the task is not running and this is a
+     * terminal state; if the operator is mistaken, the task may still
+     * be running and might return to RUNNING in the future.
+     * </pre>
+     */
+    public static final int TASK_GONE_BY_OPERATOR_VALUE = 12;
+    /**
+     * <code>TASK_UNKNOWN = 13;</code>
+     *
+     * <pre>
+     * The master has no knowledge of the task. This is typically
+     * because either (a) the master never had knowledge of the task, or
+     * (b) the master forgot about the task because it garbage collected
+     * its metadata about the task. The task may or may not still be
+     * running.
+     * </pre>
+     */
+    public static final int TASK_UNKNOWN_VALUE = 13;
+
+
+    public final int getNumber() { return value; }
+
+    public static TaskState valueOf(int value) {
+      switch (value) {
+        case 6: return TASK_STAGING;
+        case 0: return TASK_STARTING;
+        case 1: return TASK_RUNNING;
+        case 8: return TASK_KILLING;
+        case 2: return TASK_FINISHED;
+        case 3: return TASK_FAILED;
+        case 4: return TASK_KILLED;
+        case 7: return TASK_ERROR;
+        case 5: return TASK_LOST;
+        case 9: return TASK_DROPPED;
+        case 10: return TASK_UNREACHABLE;
+        case 11: return TASK_GONE;
+        case 12: return TASK_GONE_BY_OPERATOR;
+        case 13: return TASK_UNKNOWN;
+        default: return null;
+      }
+    }
+
+    public static com.google.protobuf.Internal.EnumLiteMap<TaskState>
+        internalGetValueMap() {
+      return internalValueMap;
+    }
+    private static com.google.protobuf.Internal.EnumLiteMap<TaskState>
+        internalValueMap =
+          new com.google.protobuf.Internal.EnumLiteMap<TaskState>() {
+            public TaskState findValueByNumber(int number) {
+              return TaskState.valueOf(number);
+            }
+          };
+
+    public final com.google.protobuf.Descriptors.EnumValueDescriptor
+        getValueDescriptor() {
+      return getDescriptor().getValues().get(index);
+    }
+    public final com.google.protobuf.Descriptors.EnumDescriptor
+        getDescriptorForType() {
+      return getDescriptor();
+    }
+    public static final com.google.protobuf.Descriptors.EnumDescriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.getDescriptor().getEnumTypes().get(1);
+    }
+
+    private static final TaskState[] VALUES = values();
+
+    public static TaskState valueOf(
+        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+      if (desc.getType() != getDescriptor()) {
+        throw new java.lang.IllegalArgumentException(
+          "EnumValueDescriptor is not for this type.");
+      }
+      return VALUES[desc.getIndex()];
+    }
+
+    private final int index;
+    private final int value;
+
+    private TaskState(int index, int value) {
+      this.index = index;
+      this.value = value;
+    }
+
+    // @@protoc_insertion_point(enum_scope:mesos.v1.TaskState)
+  }
+
+  public interface FrameworkIDOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string value = 1;
+    /**
+     * <code>required string value = 1;</code>
+     */
+    boolean hasValue();
+    /**
+     * <code>required string value = 1;</code>
+     */
+    java.lang.String getValue();
+    /**
+     * <code>required string value = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getValueBytes();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.FrameworkID}
+   *
+   * <pre>
+   **
+   * A unique ID assigned to a framework. A framework can reuse this ID
+   * in order to do failover (see MesosSchedulerDriver).
+   * </pre>
+   */
+  public static final class FrameworkID extends
+      com.google.protobuf.GeneratedMessage
+      implements FrameworkIDOrBuilder {
+    // Use FrameworkID.newBuilder() to construct.
+    private FrameworkID(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private FrameworkID(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final FrameworkID defaultInstance;
+    public static FrameworkID getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public FrameworkID getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private FrameworkID(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              value_ = input.readBytes();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_FrameworkID_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_FrameworkID_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.FrameworkID.class, org.apache.mesos.v1.Protos.FrameworkID.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<FrameworkID> PARSER =
+        new com.google.protobuf.AbstractParser<FrameworkID>() {
+      public FrameworkID parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new FrameworkID(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<FrameworkID> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string value = 1;
+    public static final int VALUE_FIELD_NUMBER = 1;
+    private java.lang.Object value_;
+    /**
+     * <code>required string value = 1;</code>
+     */
+    public boolean hasValue() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string value = 1;</code>
+     */
+    public java.lang.String getValue() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          value_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string value = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getValueBytes() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        value_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      value_ = "";
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasValue()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getValueBytes());
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getValueBytes());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.FrameworkID parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.FrameworkID parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.FrameworkID parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.FrameworkID parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.FrameworkID parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.FrameworkID parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.FrameworkID parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.FrameworkID parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.FrameworkID parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.FrameworkID parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.FrameworkID prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.FrameworkID}
+     *
+     * <pre>
+     **
+     * A unique ID assigned to a framework. A framework can reuse this ID
+     * in order to do failover (see MesosSchedulerDriver).
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.FrameworkIDOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_FrameworkID_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_FrameworkID_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.FrameworkID.class, org.apache.mesos.v1.Protos.FrameworkID.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.FrameworkID.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        value_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_FrameworkID_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.FrameworkID getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.FrameworkID build() {
+        org.apache.mesos.v1.Protos.FrameworkID result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.FrameworkID buildPartial() {
+        org.apache.mesos.v1.Protos.FrameworkID result = new org.apache.mesos.v1.Protos.FrameworkID(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.value_ = value_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.FrameworkID) {
+          return mergeFrom((org.apache.mesos.v1.Protos.FrameworkID)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.FrameworkID other) {
+        if (other == org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance()) return this;
+        if (other.hasValue()) {
+          bitField0_ |= 0x00000001;
+          value_ = other.value_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasValue()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.FrameworkID parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.FrameworkID) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string value = 1;
+      private java.lang.Object value_ = "";
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public boolean hasValue() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public java.lang.String getValue() {
+        java.lang.Object ref = value_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          value_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getValueBytes() {
+        java.lang.Object ref = value_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          value_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public Builder setValue(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public Builder clearValue() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        value_ = getDefaultInstance().getValue();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public Builder setValueBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.FrameworkID)
+    }
+
+    static {
+      defaultInstance = new FrameworkID(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.FrameworkID)
+  }
+
+  public interface OfferIDOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string value = 1;
+    /**
+     * <code>required string value = 1;</code>
+     */
+    boolean hasValue();
+    /**
+     * <code>required string value = 1;</code>
+     */
+    java.lang.String getValue();
+    /**
+     * <code>required string value = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getValueBytes();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.OfferID}
+   *
+   * <pre>
+   **
+   * A unique ID assigned to an offer.
+   * </pre>
+   */
+  public static final class OfferID extends
+      com.google.protobuf.GeneratedMessage
+      implements OfferIDOrBuilder {
+    // Use OfferID.newBuilder() to construct.
+    private OfferID(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private OfferID(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final OfferID defaultInstance;
+    public static OfferID getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public OfferID getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private OfferID(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              value_ = input.readBytes();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_OfferID_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_OfferID_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.OfferID.class, org.apache.mesos.v1.Protos.OfferID.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<OfferID> PARSER =
+        new com.google.protobuf.AbstractParser<OfferID>() {
+      public OfferID parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new OfferID(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<OfferID> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string value = 1;
+    public static final int VALUE_FIELD_NUMBER = 1;
+    private java.lang.Object value_;
+    /**
+     * <code>required string value = 1;</code>
+     */
+    public boolean hasValue() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string value = 1;</code>
+     */
+    public java.lang.String getValue() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          value_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string value = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getValueBytes() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        value_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      value_ = "";
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasValue()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getValueBytes());
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getValueBytes());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.OfferID parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.OfferID parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.OfferID parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.OfferID parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.OfferID parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.OfferID parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.OfferID parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.OfferID parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.OfferID parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.OfferID parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.OfferID prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.OfferID}
+     *
+     * <pre>
+     **
+     * A unique ID assigned to an offer.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.OfferIDOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_OfferID_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_OfferID_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.OfferID.class, org.apache.mesos.v1.Protos.OfferID.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.OfferID.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        value_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_OfferID_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.OfferID getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.OfferID.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.OfferID build() {
+        org.apache.mesos.v1.Protos.OfferID result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.OfferID buildPartial() {
+        org.apache.mesos.v1.Protos.OfferID result = new org.apache.mesos.v1.Protos.OfferID(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.value_ = value_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.OfferID) {
+          return mergeFrom((org.apache.mesos.v1.Protos.OfferID)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.OfferID other) {
+        if (other == org.apache.mesos.v1.Protos.OfferID.getDefaultInstance()) return this;
+        if (other.hasValue()) {
+          bitField0_ |= 0x00000001;
+          value_ = other.value_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasValue()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.OfferID parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.OfferID) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string value = 1;
+      private java.lang.Object value_ = "";
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public boolean hasValue() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public java.lang.String getValue() {
+        java.lang.Object ref = value_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          value_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getValueBytes() {
+        java.lang.Object ref = value_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          value_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public Builder setValue(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public Builder clearValue() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        value_ = getDefaultInstance().getValue();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public Builder setValueBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.OfferID)
+    }
+
+    static {
+      defaultInstance = new OfferID(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.OfferID)
+  }
+
+  public interface AgentIDOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string value = 1;
+    /**
+     * <code>required string value = 1;</code>
+     */
+    boolean hasValue();
+    /**
+     * <code>required string value = 1;</code>
+     */
+    java.lang.String getValue();
+    /**
+     * <code>required string value = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getValueBytes();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.AgentID}
+   *
+   * <pre>
+   **
+   * A unique ID assigned to an agent. Currently, an agent gets a new ID
+   * whenever it (re)registers with Mesos. Framework writers shouldn't
+   * assume any binding between an agent ID and and a hostname.
+   * </pre>
+   */
+  public static final class AgentID extends
+      com.google.protobuf.GeneratedMessage
+      implements AgentIDOrBuilder {
+    // Use AgentID.newBuilder() to construct.
+    private AgentID(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private AgentID(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final AgentID defaultInstance;
+    public static AgentID getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public AgentID getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private AgentID(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              value_ = input.readBytes();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_AgentID_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_AgentID_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.AgentID.class, org.apache.mesos.v1.Protos.AgentID.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<AgentID> PARSER =
+        new com.google.protobuf.AbstractParser<AgentID>() {
+      public AgentID parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new AgentID(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<AgentID> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string value = 1;
+    public static final int VALUE_FIELD_NUMBER = 1;
+    private java.lang.Object value_;
+    /**
+     * <code>required string value = 1;</code>
+     */
+    public boolean hasValue() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string value = 1;</code>
+     */
+    public java.lang.String getValue() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          value_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string value = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getValueBytes() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        value_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      value_ = "";
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasValue()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getValueBytes());
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getValueBytes());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.AgentID parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.AgentID parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.AgentID parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.AgentID parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.AgentID parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.AgentID parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.AgentID parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.AgentID parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.AgentID parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.AgentID parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.AgentID prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.AgentID}
+     *
+     * <pre>
+     **
+     * A unique ID assigned to an agent. Currently, an agent gets a new ID
+     * whenever it (re)registers with Mesos. Framework writers shouldn't
+     * assume any binding between an agent ID and and a hostname.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.AgentIDOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_AgentID_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_AgentID_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.AgentID.class, org.apache.mesos.v1.Protos.AgentID.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.AgentID.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        value_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_AgentID_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.AgentID getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.AgentID build() {
+        org.apache.mesos.v1.Protos.AgentID result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.AgentID buildPartial() {
+        org.apache.mesos.v1.Protos.AgentID result = new org.apache.mesos.v1.Protos.AgentID(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.value_ = value_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.AgentID) {
+          return mergeFrom((org.apache.mesos.v1.Protos.AgentID)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.AgentID other) {
+        if (other == org.apache.mesos.v1.Protos.AgentID.getDefaultInstance()) return this;
+        if (other.hasValue()) {
+          bitField0_ |= 0x00000001;
+          value_ = other.value_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasValue()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.AgentID parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.AgentID) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string value = 1;
+      private java.lang.Object value_ = "";
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public boolean hasValue() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public java.lang.String getValue() {
+        java.lang.Object ref = value_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          value_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getValueBytes() {
+        java.lang.Object ref = value_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          value_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public Builder setValue(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public Builder clearValue() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        value_ = getDefaultInstance().getValue();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public Builder setValueBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.AgentID)
+    }
+
+    static {
+      defaultInstance = new AgentID(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.AgentID)
+  }
+
+  public interface TaskIDOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string value = 1;
+    /**
+     * <code>required string value = 1;</code>
+     */
+    boolean hasValue();
+    /**
+     * <code>required string value = 1;</code>
+     */
+    java.lang.String getValue();
+    /**
+     * <code>required string value = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getValueBytes();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.TaskID}
+   *
+   * <pre>
+   **
+   * A framework-generated ID to distinguish a task. The ID must remain
+   * unique while the task is active. A framework can reuse an ID _only_
+   * if the previous task with the same ID has reached a terminal state
+   * (e.g., TASK_FINISHED, TASK_KILLED, etc.). However, reusing task IDs
+   * is strongly discouraged (MESOS-2198).
+   * </pre>
+   */
+  public static final class TaskID extends
+      com.google.protobuf.GeneratedMessage
+      implements TaskIDOrBuilder {
+    // Use TaskID.newBuilder() to construct.
+    private TaskID(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private TaskID(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final TaskID defaultInstance;
+    public static TaskID getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public TaskID getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private TaskID(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              value_ = input.readBytes();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TaskID_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TaskID_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.TaskID.class, org.apache.mesos.v1.Protos.TaskID.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<TaskID> PARSER =
+        new com.google.protobuf.AbstractParser<TaskID>() {
+      public TaskID parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new TaskID(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<TaskID> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string value = 1;
+    public static final int VALUE_FIELD_NUMBER = 1;
+    private java.lang.Object value_;
+    /**
+     * <code>required string value = 1;</code>
+     */
+    public boolean hasValue() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string value = 1;</code>
+     */
+    public java.lang.String getValue() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          value_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string value = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getValueBytes() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        value_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      value_ = "";
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasValue()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getValueBytes());
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getValueBytes());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.TaskID parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.TaskID parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.TaskID parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.TaskID parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.TaskID parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.TaskID parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.TaskID parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.TaskID parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.TaskID parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.TaskID parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.TaskID prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.TaskID}
+     *
+     * <pre>
+     **
+     * A framework-generated ID to distinguish a task. The ID must remain
+     * unique while the task is active. A framework can reuse an ID _only_
+     * if the previous task with the same ID has reached a terminal state
+     * (e.g., TASK_FINISHED, TASK_KILLED, etc.). However, reusing task IDs
+     * is strongly discouraged (MESOS-2198).
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.TaskIDOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TaskID_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TaskID_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.TaskID.class, org.apache.mesos.v1.Protos.TaskID.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.TaskID.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        value_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TaskID_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.TaskID getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.TaskID.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.TaskID build() {
+        org.apache.mesos.v1.Protos.TaskID result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.TaskID buildPartial() {
+        org.apache.mesos.v1.Protos.TaskID result = new org.apache.mesos.v1.Protos.TaskID(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.value_ = value_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.TaskID) {
+          return mergeFrom((org.apache.mesos.v1.Protos.TaskID)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.TaskID other) {
+        if (other == org.apache.mesos.v1.Protos.TaskID.getDefaultInstance()) return this;
+        if (other.hasValue()) {
+          bitField0_ |= 0x00000001;
+          value_ = other.value_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasValue()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.TaskID parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.TaskID) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string value = 1;
+      private java.lang.Object value_ = "";
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public boolean hasValue() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public java.lang.String getValue() {
+        java.lang.Object ref = value_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          value_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getValueBytes() {
+        java.lang.Object ref = value_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          value_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public Builder setValue(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public Builder clearValue() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        value_ = getDefaultInstance().getValue();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public Builder setValueBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.TaskID)
+    }
+
+    static {
+      defaultInstance = new TaskID(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.TaskID)
+  }
+
+  public interface ExecutorIDOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string value = 1;
+    /**
+     * <code>required string value = 1;</code>
+     */
+    boolean hasValue();
+    /**
+     * <code>required string value = 1;</code>
+     */
+    java.lang.String getValue();
+    /**
+     * <code>required string value = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getValueBytes();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.ExecutorID}
+   *
+   * <pre>
+   **
+   * A framework-generated ID to distinguish an executor. Only one
+   * executor with the same ID can be active on the same agent at a
+   * time. However, reusing executor IDs is discouraged.
+   * </pre>
+   */
+  public static final class ExecutorID extends
+      com.google.protobuf.GeneratedMessage
+      implements ExecutorIDOrBuilder {
+    // Use ExecutorID.newBuilder() to construct.
+    private ExecutorID(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private ExecutorID(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final ExecutorID defaultInstance;
+    public static ExecutorID getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public ExecutorID getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private ExecutorID(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              value_ = input.readBytes();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ExecutorID_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ExecutorID_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.ExecutorID.class, org.apache.mesos.v1.Protos.ExecutorID.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<ExecutorID> PARSER =
+        new com.google.protobuf.AbstractParser<ExecutorID>() {
+      public ExecutorID parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new ExecutorID(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<ExecutorID> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string value = 1;
+    public static final int VALUE_FIELD_NUMBER = 1;
+    private java.lang.Object value_;
+    /**
+     * <code>required string value = 1;</code>
+     */
+    public boolean hasValue() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string value = 1;</code>
+     */
+    public java.lang.String getValue() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          value_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string value = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getValueBytes() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        value_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      value_ = "";
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasValue()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getValueBytes());
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getValueBytes());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.ExecutorID parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.ExecutorID parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.ExecutorID parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.ExecutorID parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.ExecutorID parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.ExecutorID parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.ExecutorID parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.ExecutorID parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.ExecutorID parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.ExecutorID parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.ExecutorID prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.ExecutorID}
+     *
+     * <pre>
+     **
+     * A framework-generated ID to distinguish an executor. Only one
+     * executor with the same ID can be active on the same agent at a
+     * time. However, reusing executor IDs is discouraged.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.ExecutorIDOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ExecutorID_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ExecutorID_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.ExecutorID.class, org.apache.mesos.v1.Protos.ExecutorID.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.ExecutorID.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        value_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ExecutorID_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.ExecutorID getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.ExecutorID build() {
+        org.apache.mesos.v1.Protos.ExecutorID result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.ExecutorID buildPartial() {
+        org.apache.mesos.v1.Protos.ExecutorID result = new org.apache.mesos.v1.Protos.ExecutorID(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.value_ = value_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.ExecutorID) {
+          return mergeFrom((org.apache.mesos.v1.Protos.ExecutorID)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.ExecutorID other) {
+        if (other == org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance()) return this;
+        if (other.hasValue()) {
+          bitField0_ |= 0x00000001;
+          value_ = other.value_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasValue()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.ExecutorID parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.ExecutorID) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string value = 1;
+      private java.lang.Object value_ = "";
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public boolean hasValue() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public java.lang.String getValue() {
+        java.lang.Object ref = value_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          value_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getValueBytes() {
+        java.lang.Object ref = value_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          value_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public Builder setValue(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public Builder clearValue() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        value_ = getDefaultInstance().getValue();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public Builder setValueBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.ExecutorID)
+    }
+
+    static {
+      defaultInstance = new ExecutorID(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.ExecutorID)
+  }
+
+  public interface ContainerIDOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string value = 1;
+    /**
+     * <code>required string value = 1;</code>
+     */
+    boolean hasValue();
+    /**
+     * <code>required string value = 1;</code>
+     */
+    java.lang.String getValue();
+    /**
+     * <code>required string value = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getValueBytes();
+
+    // optional .mesos.v1.ContainerID parent = 2;
+    /**
+     * <code>optional .mesos.v1.ContainerID parent = 2;</code>
+     */
+    boolean hasParent();
+    /**
+     * <code>optional .mesos.v1.ContainerID parent = 2;</code>
+     */
+    org.apache.mesos.v1.Protos.ContainerID getParent();
+    /**
+     * <code>optional .mesos.v1.ContainerID parent = 2;</code>
+     */
+    org.apache.mesos.v1.Protos.ContainerIDOrBuilder getParentOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.ContainerID}
+   *
+   * <pre>
+   **
+   * ID used to uniquely identify a container. If the `parent` is not
+   * specified, the ID is a UUID generated by the agent to uniquely
+   * identify the container of an executor run. If the `parent` field is
+   * specified, it represents a nested container.
+   * </pre>
+   */
+  public static final class ContainerID extends
+      com.google.protobuf.GeneratedMessage
+      implements ContainerIDOrBuilder {
+    // Use ContainerID.newBuilder() to construct.
+    private ContainerID(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private ContainerID(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final ContainerID defaultInstance;
+    public static ContainerID getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public ContainerID getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private ContainerID(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              value_ = input.readBytes();
+              break;
+            }
+            case 18: {
+              org.apache.mesos.v1.Protos.ContainerID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = parent_.toBuilder();
+              }
+              parent_ = input.readMessage(org.apache.mesos.v1.Protos.ContainerID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(parent_);
+                parent_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ContainerID_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ContainerID_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.ContainerID.class, org.apache.mesos.v1.Protos.ContainerID.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<ContainerID> PARSER =
+        new com.google.protobuf.AbstractParser<ContainerID>() {
+      public ContainerID parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new ContainerID(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<ContainerID> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string value = 1;
+    public static final int VALUE_FIELD_NUMBER = 1;
+    private java.lang.Object value_;
+    /**
+     * <code>required string value = 1;</code>
+     */
+    public boolean hasValue() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string value = 1;</code>
+     */
+    public java.lang.String getValue() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          value_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string value = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getValueBytes() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        value_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional .mesos.v1.ContainerID parent = 2;
+    public static final int PARENT_FIELD_NUMBER = 2;
+    private org.apache.mesos.v1.Protos.ContainerID parent_;
+    /**
+     * <code>optional .mesos.v1.ContainerID parent = 2;</code>
+     */
+    public boolean hasParent() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional .mesos.v1.ContainerID parent = 2;</code>
+     */
+    public org.apache.mesos.v1.Protos.ContainerID getParent() {
+      return parent_;
+    }
+    /**
+     * <code>optional .mesos.v1.ContainerID parent = 2;</code>
+     */
+    public org.apache.mesos.v1.Protos.ContainerIDOrBuilder getParentOrBuilder() {
+      return parent_;
+    }
+
+    private void initFields() {
+      value_ = "";
+      parent_ = org.apache.mesos.v1.Protos.ContainerID.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasValue()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (hasParent()) {
+        if (!getParent().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getValueBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(2, parent_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getValueBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, parent_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.ContainerID parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.ContainerID parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.ContainerID parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.ContainerID parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.ContainerID parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.ContainerID parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.ContainerID parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.ContainerID parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.ContainerID parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.ContainerID parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.ContainerID prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.ContainerID}
+     *
+     * <pre>
+     **
+     * ID used to uniquely identify a container. If the `parent` is not
+     * specified, the ID is a UUID generated by the agent to uniquely
+     * identify the container of an executor run. If the `parent` field is
+     * specified, it represents a nested container.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.ContainerIDOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ContainerID_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ContainerID_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.ContainerID.class, org.apache.mesos.v1.Protos.ContainerID.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.ContainerID.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getParentFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        value_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (parentBuilder_ == null) {
+          parent_ = org.apache.mesos.v1.Protos.ContainerID.getDefaultInstance();
+        } else {
+          parentBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ContainerID_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.ContainerID getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.ContainerID.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.ContainerID build() {
+        org.apache.mesos.v1.Protos.ContainerID result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.ContainerID buildPartial() {
+        org.apache.mesos.v1.Protos.ContainerID result = new org.apache.mesos.v1.Protos.ContainerID(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.value_ = value_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (parentBuilder_ == null) {
+          result.parent_ = parent_;
+        } else {
+          result.parent_ = parentBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.ContainerID) {
+          return mergeFrom((org.apache.mesos.v1.Protos.ContainerID)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.ContainerID other) {
+        if (other == org.apache.mesos.v1.Protos.ContainerID.getDefaultInstance()) return this;
+        if (other.hasValue()) {
+          bitField0_ |= 0x00000001;
+          value_ = other.value_;
+          onChanged();
+        }
+        if (other.hasParent()) {
+          mergeParent(other.getParent());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasValue()) {
+          
+          return false;
+        }
+        if (hasParent()) {
+          if (!getParent().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.ContainerID parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.ContainerID) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string value = 1;
+      private java.lang.Object value_ = "";
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public boolean hasValue() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public java.lang.String getValue() {
+        java.lang.Object ref = value_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          value_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getValueBytes() {
+        java.lang.Object ref = value_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          value_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public Builder setValue(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public Builder clearValue() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        value_ = getDefaultInstance().getValue();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public Builder setValueBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.v1.ContainerID parent = 2;
+      private org.apache.mesos.v1.Protos.ContainerID parent_ = org.apache.mesos.v1.Protos.ContainerID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.ContainerID, org.apache.mesos.v1.Protos.ContainerID.Builder, org.apache.mesos.v1.Protos.ContainerIDOrBuilder> parentBuilder_;
+      /**
+       * <code>optional .mesos.v1.ContainerID parent = 2;</code>
+       */
+      public boolean hasParent() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerID parent = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.ContainerID getParent() {
+        if (parentBuilder_ == null) {
+          return parent_;
+        } else {
+          return parentBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerID parent = 2;</code>
+       */
+      public Builder setParent(org.apache.mesos.v1.Protos.ContainerID value) {
+        if (parentBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          parent_ = value;
+          onChanged();
+        } else {
+          parentBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerID parent = 2;</code>
+       */
+      public Builder setParent(
+          org.apache.mesos.v1.Protos.ContainerID.Builder builderForValue) {
+        if (parentBuilder_ == null) {
+          parent_ = builderForValue.build();
+          onChanged();
+        } else {
+          parentBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerID parent = 2;</code>
+       */
+      public Builder mergeParent(org.apache.mesos.v1.Protos.ContainerID value) {
+        if (parentBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              parent_ != org.apache.mesos.v1.Protos.ContainerID.getDefaultInstance()) {
+            parent_ =
+              org.apache.mesos.v1.Protos.ContainerID.newBuilder(parent_).mergeFrom(value).buildPartial();
+          } else {
+            parent_ = value;
+          }
+          onChanged();
+        } else {
+          parentBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerID parent = 2;</code>
+       */
+      public Builder clearParent() {
+        if (parentBuilder_ == null) {
+          parent_ = org.apache.mesos.v1.Protos.ContainerID.getDefaultInstance();
+          onChanged();
+        } else {
+          parentBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerID parent = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.ContainerID.Builder getParentBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getParentFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerID parent = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.ContainerIDOrBuilder getParentOrBuilder() {
+        if (parentBuilder_ != null) {
+          return parentBuilder_.getMessageOrBuilder();
+        } else {
+          return parent_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerID parent = 2;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.ContainerID, org.apache.mesos.v1.Protos.ContainerID.Builder, org.apache.mesos.v1.Protos.ContainerIDOrBuilder> 
+          getParentFieldBuilder() {
+        if (parentBuilder_ == null) {
+          parentBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.ContainerID, org.apache.mesos.v1.Protos.ContainerID.Builder, org.apache.mesos.v1.Protos.ContainerIDOrBuilder>(
+                  parent_,
+                  getParentForChildren(),
+                  isClean());
+          parent_ = null;
+        }
+        return parentBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.ContainerID)
+    }
+
+    static {
+      defaultInstance = new ContainerID(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.ContainerID)
+  }
+
+  public interface ResourceProviderIDOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string value = 1;
+    /**
+     * <code>required string value = 1;</code>
+     */
+    boolean hasValue();
+    /**
+     * <code>required string value = 1;</code>
+     */
+    java.lang.String getValue();
+    /**
+     * <code>required string value = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getValueBytes();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.ResourceProviderID}
+   *
+   * <pre>
+   **
+   * A unique ID assigned to a resource provider. Currently, a resource
+   * provider gets a new ID whenever it (re)registers with Mesos.
+   * </pre>
+   */
+  public static final class ResourceProviderID extends
+      com.google.protobuf.GeneratedMessage
+      implements ResourceProviderIDOrBuilder {
+    // Use ResourceProviderID.newBuilder() to construct.
+    private ResourceProviderID(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private ResourceProviderID(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final ResourceProviderID defaultInstance;
+    public static ResourceProviderID getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public ResourceProviderID getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private ResourceProviderID(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              value_ = input.readBytes();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ResourceProviderID_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ResourceProviderID_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.ResourceProviderID.class, org.apache.mesos.v1.Protos.ResourceProviderID.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<ResourceProviderID> PARSER =
+        new com.google.protobuf.AbstractParser<ResourceProviderID>() {
+      public ResourceProviderID parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new ResourceProviderID(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<ResourceProviderID> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string value = 1;
+    public static final int VALUE_FIELD_NUMBER = 1;
+    private java.lang.Object value_;
+    /**
+     * <code>required string value = 1;</code>
+     */
+    public boolean hasValue() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string value = 1;</code>
+     */
+    public java.lang.String getValue() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          value_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string value = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getValueBytes() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        value_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      value_ = "";
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasValue()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getValueBytes());
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getValueBytes());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.ResourceProviderID parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.ResourceProviderID parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.ResourceProviderID parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.ResourceProviderID parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.ResourceProviderID parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.ResourceProviderID parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.ResourceProviderID parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.ResourceProviderID parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.ResourceProviderID parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.ResourceProviderID parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.ResourceProviderID prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.ResourceProviderID}
+     *
+     * <pre>
+     **
+     * A unique ID assigned to a resource provider. Currently, a resource
+     * provider gets a new ID whenever it (re)registers with Mesos.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.ResourceProviderIDOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ResourceProviderID_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ResourceProviderID_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.ResourceProviderID.class, org.apache.mesos.v1.Protos.ResourceProviderID.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.ResourceProviderID.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        value_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ResourceProviderID_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.ResourceProviderID getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.ResourceProviderID.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.ResourceProviderID build() {
+        org.apache.mesos.v1.Protos.ResourceProviderID result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.ResourceProviderID buildPartial() {
+        org.apache.mesos.v1.Protos.ResourceProviderID result = new org.apache.mesos.v1.Protos.ResourceProviderID(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.value_ = value_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.ResourceProviderID) {
+          return mergeFrom((org.apache.mesos.v1.Protos.ResourceProviderID)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.ResourceProviderID other) {
+        if (other == org.apache.mesos.v1.Protos.ResourceProviderID.getDefaultInstance()) return this;
+        if (other.hasValue()) {
+          bitField0_ |= 0x00000001;
+          value_ = other.value_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasValue()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.ResourceProviderID parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.ResourceProviderID) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string value = 1;
+      private java.lang.Object value_ = "";
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public boolean hasValue() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public java.lang.String getValue() {
+        java.lang.Object ref = value_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          value_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getValueBytes() {
+        java.lang.Object ref = value_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          value_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public Builder setValue(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public Builder clearValue() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        value_ = getDefaultInstance().getValue();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public Builder setValueBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.ResourceProviderID)
+    }
+
+    static {
+      defaultInstance = new ResourceProviderID(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.ResourceProviderID)
+  }
+
+  public interface TimeInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required int64 nanoseconds = 1;
+    /**
+     * <code>required int64 nanoseconds = 1;</code>
+     */
+    boolean hasNanoseconds();
+    /**
+     * <code>required int64 nanoseconds = 1;</code>
+     */
+    long getNanoseconds();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.TimeInfo}
+   *
+   * <pre>
+   **
+   * Represents time since the epoch, in nanoseconds.
+   * </pre>
+   */
+  public static final class TimeInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements TimeInfoOrBuilder {
+    // Use TimeInfo.newBuilder() to construct.
+    private TimeInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private TimeInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final TimeInfo defaultInstance;
+    public static TimeInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public TimeInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private TimeInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 8: {
+              bitField0_ |= 0x00000001;
+              nanoseconds_ = input.readInt64();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TimeInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TimeInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.TimeInfo.class, org.apache.mesos.v1.Protos.TimeInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<TimeInfo> PARSER =
+        new com.google.protobuf.AbstractParser<TimeInfo>() {
+      public TimeInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new TimeInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<TimeInfo> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required int64 nanoseconds = 1;
+    public static final int NANOSECONDS_FIELD_NUMBER = 1;
+    private long nanoseconds_;
+    /**
+     * <code>required int64 nanoseconds = 1;</code>
+     */
+    public boolean hasNanoseconds() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required int64 nanoseconds = 1;</code>
+     */
+    public long getNanoseconds() {
+      return nanoseconds_;
+    }
+
+    private void initFields() {
+      nanoseconds_ = 0L;
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasNanoseconds()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeInt64(1, nanoseconds_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(1, nanoseconds_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.TimeInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.TimeInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.TimeInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.TimeInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.TimeInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.TimeInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.TimeInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.TimeInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.TimeInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.TimeInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.TimeInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.TimeInfo}
+     *
+     * <pre>
+     **
+     * Represents time since the epoch, in nanoseconds.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.TimeInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TimeInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TimeInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.TimeInfo.class, org.apache.mesos.v1.Protos.TimeInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.TimeInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        nanoseconds_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TimeInfo_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.TimeInfo getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.TimeInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.TimeInfo build() {
+        org.apache.mesos.v1.Protos.TimeInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.TimeInfo buildPartial() {
+        org.apache.mesos.v1.Protos.TimeInfo result = new org.apache.mesos.v1.Protos.TimeInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.nanoseconds_ = nanoseconds_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.TimeInfo) {
+          return mergeFrom((org.apache.mesos.v1.Protos.TimeInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.TimeInfo other) {
+        if (other == org.apache.mesos.v1.Protos.TimeInfo.getDefaultInstance()) return this;
+        if (other.hasNanoseconds()) {
+          setNanoseconds(other.getNanoseconds());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasNanoseconds()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.TimeInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.TimeInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required int64 nanoseconds = 1;
+      private long nanoseconds_ ;
+      /**
+       * <code>required int64 nanoseconds = 1;</code>
+       */
+      public boolean hasNanoseconds() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required int64 nanoseconds = 1;</code>
+       */
+      public long getNanoseconds() {
+        return nanoseconds_;
+      }
+      /**
+       * <code>required int64 nanoseconds = 1;</code>
+       */
+      public Builder setNanoseconds(long value) {
+        bitField0_ |= 0x00000001;
+        nanoseconds_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required int64 nanoseconds = 1;</code>
+       */
+      public Builder clearNanoseconds() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        nanoseconds_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.TimeInfo)
+    }
+
+    static {
+      defaultInstance = new TimeInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.TimeInfo)
+  }
+
+  public interface DurationInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required int64 nanoseconds = 1;
+    /**
+     * <code>required int64 nanoseconds = 1;</code>
+     */
+    boolean hasNanoseconds();
+    /**
+     * <code>required int64 nanoseconds = 1;</code>
+     */
+    long getNanoseconds();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.DurationInfo}
+   *
+   * <pre>
+   **
+   * Represents duration in nanoseconds.
+   * </pre>
+   */
+  public static final class DurationInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements DurationInfoOrBuilder {
+    // Use DurationInfo.newBuilder() to construct.
+    private DurationInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private DurationInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final DurationInfo defaultInstance;
+    public static DurationInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public DurationInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private DurationInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 8: {
+              bitField0_ |= 0x00000001;
+              nanoseconds_ = input.readInt64();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DurationInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DurationInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.DurationInfo.class, org.apache.mesos.v1.Protos.DurationInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<DurationInfo> PARSER =
+        new com.google.protobuf.AbstractParser<DurationInfo>() {
+      public DurationInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new DurationInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<DurationInfo> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required int64 nanoseconds = 1;
+    public static final int NANOSECONDS_FIELD_NUMBER = 1;
+    private long nanoseconds_;
+    /**
+     * <code>required int64 nanoseconds = 1;</code>
+     */
+    public boolean hasNanoseconds() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required int64 nanoseconds = 1;</code>
+     */
+    public long getNanoseconds() {
+      return nanoseconds_;
+    }
+
+    private void initFields() {
+      nanoseconds_ = 0L;
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasNanoseconds()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeInt64(1, nanoseconds_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(1, nanoseconds_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.DurationInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.DurationInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.DurationInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.DurationInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.DurationInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.DurationInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.DurationInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.DurationInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.DurationInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.DurationInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.DurationInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.DurationInfo}
+     *
+     * <pre>
+     **
+     * Represents duration in nanoseconds.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.DurationInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DurationInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DurationInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.DurationInfo.class, org.apache.mesos.v1.Protos.DurationInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.DurationInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        nanoseconds_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DurationInfo_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.DurationInfo getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.DurationInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.DurationInfo build() {
+        org.apache.mesos.v1.Protos.DurationInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.DurationInfo buildPartial() {
+        org.apache.mesos.v1.Protos.DurationInfo result = new org.apache.mesos.v1.Protos.DurationInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.nanoseconds_ = nanoseconds_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.DurationInfo) {
+          return mergeFrom((org.apache.mesos.v1.Protos.DurationInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.DurationInfo other) {
+        if (other == org.apache.mesos.v1.Protos.DurationInfo.getDefaultInstance()) return this;
+        if (other.hasNanoseconds()) {
+          setNanoseconds(other.getNanoseconds());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasNanoseconds()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.DurationInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.DurationInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required int64 nanoseconds = 1;
+      private long nanoseconds_ ;
+      /**
+       * <code>required int64 nanoseconds = 1;</code>
+       */
+      public boolean hasNanoseconds() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required int64 nanoseconds = 1;</code>
+       */
+      public long getNanoseconds() {
+        return nanoseconds_;
+      }
+      /**
+       * <code>required int64 nanoseconds = 1;</code>
+       */
+      public Builder setNanoseconds(long value) {
+        bitField0_ |= 0x00000001;
+        nanoseconds_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required int64 nanoseconds = 1;</code>
+       */
+      public Builder clearNanoseconds() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        nanoseconds_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.DurationInfo)
+    }
+
+    static {
+      defaultInstance = new DurationInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.DurationInfo)
+  }
+
+  public interface AddressOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional string hostname = 1;
+    /**
+     * <code>optional string hostname = 1;</code>
+     *
+     * <pre>
+     * May contain a hostname, IP address, or both.
+     * </pre>
+     */
+    boolean hasHostname();
+    /**
+     * <code>optional string hostname = 1;</code>
+     *
+     * <pre>
+     * May contain a hostname, IP address, or both.
+     * </pre>
+     */
+    java.lang.String getHostname();
+    /**
+     * <code>optional string hostname = 1;</code>
+     *
+     * <pre>
+     * May contain a hostname, IP address, or both.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getHostnameBytes();
+
+    // optional string ip = 2;
+    /**
+     * <code>optional string ip = 2;</code>
+     */
+    boolean hasIp();
+    /**
+     * <code>optional string ip = 2;</code>
+     */
+    java.lang.String getIp();
+    /**
+     * <code>optional string ip = 2;</code>
+     */
+    com.google.protobuf.ByteString
+        getIpBytes();
+
+    // required int32 port = 3;
+    /**
+     * <code>required int32 port = 3;</code>
+     */
+    boolean hasPort();
+    /**
+     * <code>required int32 port = 3;</code>
+     */
+    int getPort();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.Address}
+   *
+   * <pre>
+   **
+   * A network address.
+   *
+   * TODO(bmahler): Use this more widely.
+   * </pre>
+   */
+  public static final class Address extends
+      com.google.protobuf.GeneratedMessage
+      implements AddressOrBuilder {
+    // Use Address.newBuilder() to construct.
+    private Address(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Address(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Address defaultInstance;
+    public static Address getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Address getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Address(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              hostname_ = input.readBytes();
+              break;
+            }
+            case 18: {
+              bitField0_ |= 0x00000002;
+              ip_ = input.readBytes();
+              break;
+            }
+            case 24: {
+              bitField0_ |= 0x00000004;
+              port_ = input.readInt32();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Address_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Address_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.Address.class, org.apache.mesos.v1.Protos.Address.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Address> PARSER =
+        new com.google.protobuf.AbstractParser<Address>() {
+      public Address parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Address(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Address> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // optional string hostname = 1;
+    public static final int HOSTNAME_FIELD_NUMBER = 1;
+    private java.lang.Object hostname_;
+    /**
+     * <code>optional string hostname = 1;</code>
+     *
+     * <pre>
+     * May contain a hostname, IP address, or both.
+     * </pre>
+     */
+    public boolean hasHostname() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional string hostname = 1;</code>
+     *
+     * <pre>
+     * May contain a hostname, IP address, or both.
+     * </pre>
+     */
+    public java.lang.String getHostname() {
+      java.lang.Object ref = hostname_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          hostname_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string hostname = 1;</code>
+     *
+     * <pre>
+     * May contain a hostname, IP address, or both.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getHostnameBytes() {
+      java.lang.Object ref = hostname_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        hostname_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional string ip = 2;
+    public static final int IP_FIELD_NUMBER = 2;
+    private java.lang.Object ip_;
+    /**
+     * <code>optional string ip = 2;</code>
+     */
+    public boolean hasIp() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional string ip = 2;</code>
+     */
+    public java.lang.String getIp() {
+      java.lang.Object ref = ip_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          ip_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string ip = 2;</code>
+     */
+    public com.google.protobuf.ByteString
+        getIpBytes() {
+      java.lang.Object ref = ip_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        ip_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // required int32 port = 3;
+    public static final int PORT_FIELD_NUMBER = 3;
+    private int port_;
+    /**
+     * <code>required int32 port = 3;</code>
+     */
+    public boolean hasPort() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>required int32 port = 3;</code>
+     */
+    public int getPort() {
+      return port_;
+    }
+
+    private void initFields() {
+      hostname_ = "";
+      ip_ = "";
+      port_ = 0;
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasPort()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getHostnameBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(2, getIpBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeInt32(3, port_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getHostnameBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(2, getIpBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt32Size(3, port_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.Address parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Address parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Address parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Address parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Address parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Address parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Address parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Address parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Address parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Address parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.Address prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.Address}
+     *
+     * <pre>
+     **
+     * A network address.
+     *
+     * TODO(bmahler): Use this more widely.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.AddressOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Address_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Address_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.Address.class, org.apache.mesos.v1.Protos.Address.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.Address.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        hostname_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        ip_ = "";
+        bitField0_ = (bitField0_ & ~0x00000002);
+        port_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Address_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.Address getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.Address.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.Address build() {
+        org.apache.mesos.v1.Protos.Address result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.Address buildPartial() {
+        org.apache.mesos.v1.Protos.Address result = new org.apache.mesos.v1.Protos.Address(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.hostname_ = hostname_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.ip_ = ip_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.port_ = port_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.Address) {
+          return mergeFrom((org.apache.mesos.v1.Protos.Address)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.Address other) {
+        if (other == org.apache.mesos.v1.Protos.Address.getDefaultInstance()) return this;
+        if (other.hasHostname()) {
+          bitField0_ |= 0x00000001;
+          hostname_ = other.hostname_;
+          onChanged();
+        }
+        if (other.hasIp()) {
+          bitField0_ |= 0x00000002;
+          ip_ = other.ip_;
+          onChanged();
+        }
+        if (other.hasPort()) {
+          setPort(other.getPort());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasPort()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.Address parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.Address) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional string hostname = 1;
+      private java.lang.Object hostname_ = "";
+      /**
+       * <code>optional string hostname = 1;</code>
+       *
+       * <pre>
+       * May contain a hostname, IP address, or both.
+       * </pre>
+       */
+      public boolean hasHostname() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional string hostname = 1;</code>
+       *
+       * <pre>
+       * May contain a hostname, IP address, or both.
+       * </pre>
+       */
+      public java.lang.String getHostname() {
+        java.lang.Object ref = hostname_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          hostname_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string hostname = 1;</code>
+       *
+       * <pre>
+       * May contain a hostname, IP address, or both.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getHostnameBytes() {
+        java.lang.Object ref = hostname_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          hostname_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string hostname = 1;</code>
+       *
+       * <pre>
+       * May contain a hostname, IP address, or both.
+       * </pre>
+       */
+      public Builder setHostname(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        hostname_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string hostname = 1;</code>
+       *
+       * <pre>
+       * May contain a hostname, IP address, or both.
+       * </pre>
+       */
+      public Builder clearHostname() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        hostname_ = getDefaultInstance().getHostname();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string hostname = 1;</code>
+       *
+       * <pre>
+       * May contain a hostname, IP address, or both.
+       * </pre>
+       */
+      public Builder setHostnameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        hostname_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional string ip = 2;
+      private java.lang.Object ip_ = "";
+      /**
+       * <code>optional string ip = 2;</code>
+       */
+      public boolean hasIp() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional string ip = 2;</code>
+       */
+      public java.lang.String getIp() {
+        java.lang.Object ref = ip_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          ip_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string ip = 2;</code>
+       */
+      public com.google.protobuf.ByteString
+          getIpBytes() {
+        java.lang.Object ref = ip_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          ip_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string ip = 2;</code>
+       */
+      public Builder setIp(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        ip_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string ip = 2;</code>
+       */
+      public Builder clearIp() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        ip_ = getDefaultInstance().getIp();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string ip = 2;</code>
+       */
+      public Builder setIpBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        ip_ = value;
+        onChanged();
+        return this;
+      }
+
+      // required int32 port = 3;
+      private int port_ ;
+      /**
+       * <code>required int32 port = 3;</code>
+       */
+      public boolean hasPort() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>required int32 port = 3;</code>
+       */
+      public int getPort() {
+        return port_;
+      }
+      /**
+       * <code>required int32 port = 3;</code>
+       */
+      public Builder setPort(int value) {
+        bitField0_ |= 0x00000004;
+        port_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required int32 port = 3;</code>
+       */
+      public Builder clearPort() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        port_ = 0;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.Address)
+    }
+
+    static {
+      defaultInstance = new Address(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.Address)
+  }
+
+  public interface URLOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string scheme = 1;
+    /**
+     * <code>required string scheme = 1;</code>
+     */
+    boolean hasScheme();
+    /**
+     * <code>required string scheme = 1;</code>
+     */
+    java.lang.String getScheme();
+    /**
+     * <code>required string scheme = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getSchemeBytes();
+
+    // required .mesos.v1.Address address = 2;
+    /**
+     * <code>required .mesos.v1.Address address = 2;</code>
+     */
+    boolean hasAddress();
+    /**
+     * <code>required .mesos.v1.Address address = 2;</code>
+     */
+    org.apache.mesos.v1.Protos.Address getAddress();
+    /**
+     * <code>required .mesos.v1.Address address = 2;</code>
+     */
+    org.apache.mesos.v1.Protos.AddressOrBuilder getAddressOrBuilder();
+
+    // optional string path = 3;
+    /**
+     * <code>optional string path = 3;</code>
+     */
+    boolean hasPath();
+    /**
+     * <code>optional string path = 3;</code>
+     */
+    java.lang.String getPath();
+    /**
+     * <code>optional string path = 3;</code>
+     */
+    com.google.protobuf.ByteString
+        getPathBytes();
+
+    // repeated .mesos.v1.Parameter query = 4;
+    /**
+     * <code>repeated .mesos.v1.Parameter query = 4;</code>
+     */
+    java.util.List<org.apache.mesos.v1.Protos.Parameter> 
+        getQueryList();
+    /**
+     * <code>repeated .mesos.v1.Parameter query = 4;</code>
+     */
+    org.apache.mesos.v1.Protos.Parameter getQuery(int index);
+    /**
+     * <code>repeated .mesos.v1.Parameter query = 4;</code>
+     */
+    int getQueryCount();
+    /**
+     * <code>repeated .mesos.v1.Parameter query = 4;</code>
+     */
+    java.util.List<? extends org.apache.mesos.v1.Protos.ParameterOrBuilder> 
+        getQueryOrBuilderList();
+    /**
+     * <code>repeated .mesos.v1.Parameter query = 4;</code>
+     */
+    org.apache.mesos.v1.Protos.ParameterOrBuilder getQueryOrBuilder(
+        int index);
+
+    // optional string fragment = 5;
+    /**
+     * <code>optional string fragment = 5;</code>
+     */
+    boolean hasFragment();
+    /**
+     * <code>optional string fragment = 5;</code>
+     */
+    java.lang.String getFragment();
+    /**
+     * <code>optional string fragment = 5;</code>
+     */
+    com.google.protobuf.ByteString
+        getFragmentBytes();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.URL}
+   *
+   * <pre>
+   **
+   * Represents a URL.
+   * </pre>
+   */
+  public static final class URL extends
+      com.google.protobuf.GeneratedMessage
+      implements URLOrBuilder {
+    // Use URL.newBuilder() to construct.
+    private URL(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private URL(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final URL defaultInstance;
+    public static URL getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public URL getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private URL(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              scheme_ = input.readBytes();
+              break;
+            }
+            case 18: {
+              org.apache.mesos.v1.Protos.Address.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = address_.toBuilder();
+              }
+              address_ = input.readMessage(org.apache.mesos.v1.Protos.Address.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(address_);
+                address_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+            case 26: {
+              bitField0_ |= 0x00000004;
+              path_ = input.readBytes();
+              break;
+            }
+            case 34: {
+              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
+                query_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Parameter>();
+                mutable_bitField0_ |= 0x00000008;
+              }
+              query_.add(input.readMessage(org.apache.mesos.v1.Protos.Parameter.PARSER, extensionRegistry));
+              break;
+            }
+            case 42: {
+              bitField0_ |= 0x00000008;
+              fragment_ = input.readBytes();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
+          query_ = java.util.Collections.unmodifiableList(query_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_URL_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_URL_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.URL.class, org.apache.mesos.v1.Protos.URL.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<URL> PARSER =
+        new com.google.protobuf.AbstractParser<URL>() {
+      public URL parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new URL(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<URL> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string scheme = 1;
+    public static final int SCHEME_FIELD_NUMBER = 1;
+    private java.lang.Object scheme_;
+    /**
+     * <code>required string scheme = 1;</code>
+     */
+    public boolean hasScheme() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string scheme = 1;</code>
+     */
+    public java.lang.String getScheme() {
+      java.lang.Object ref = scheme_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          scheme_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string scheme = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getSchemeBytes() {
+      java.lang.Object ref = scheme_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        scheme_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // required .mesos.v1.Address address = 2;
+    public static final int ADDRESS_FIELD_NUMBER = 2;
+    private org.apache.mesos.v1.Protos.Address address_;
+    /**
+     * <code>required .mesos.v1.Address address = 2;</code>
+     */
+    public boolean hasAddress() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>required .mesos.v1.Address address = 2;</code>
+     */
+    public org.apache.mesos.v1.Protos.Address getAddress() {
+      return address_;
+    }
+    /**
+     * <code>required .mesos.v1.Address address = 2;</code>
+     */
+    public org.apache.mesos.v1.Protos.AddressOrBuilder getAddressOrBuilder() {
+      return address_;
+    }
+
+    // optional string path = 3;
+    public static final int PATH_FIELD_NUMBER = 3;
+    private java.lang.Object path_;
+    /**
+     * <code>optional string path = 3;</code>
+     */
+    public boolean hasPath() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional string path = 3;</code>
+     */
+    public java.lang.String getPath() {
+      java.lang.Object ref = path_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          path_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string path = 3;</code>
+     */
+    public com.google.protobuf.ByteString
+        getPathBytes() {
+      java.lang.Object ref = path_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        path_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // repeated .mesos.v1.Parameter query = 4;
+    public static final int QUERY_FIELD_NUMBER = 4;
+    private java.util.List<org.apache.mesos.v1.Protos.Parameter> query_;
+    /**
+     * <code>repeated .mesos.v1.Parameter query = 4;</code>
+     */
+    public java.util.List<org.apache.mesos.v1.Protos.Parameter> getQueryList() {
+      return query_;
+    }
+    /**
+     * <code>repeated .mesos.v1.Parameter query = 4;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.v1.Protos.ParameterOrBuilder> 
+        getQueryOrBuilderList() {
+      return query_;
+    }
+    /**
+     * <code>repeated .mesos.v1.Parameter query = 4;</code>
+     */
+    public int getQueryCount() {
+      return query_.size();
+    }
+    /**
+     * <code>repeated .mesos.v1.Parameter query = 4;</code>
+     */
+    public org.apache.mesos.v1.Protos.Parameter getQuery(int index) {
+      return query_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.v1.Parameter query = 4;</code>
+     */
+    public org.apache.mesos.v1.Protos.ParameterOrBuilder getQueryOrBuilder(
+        int index) {
+      return query_.get(index);
+    }
+
+    // optional string fragment = 5;
+    public static final int FRAGMENT_FIELD_NUMBER = 5;
+    private java.lang.Object fragment_;
+    /**
+     * <code>optional string fragment = 5;</code>
+     */
+    public boolean hasFragment() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional string fragment = 5;</code>
+     */
+    public java.lang.String getFragment() {
+      java.lang.Object ref = fragment_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          fragment_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string fragment = 5;</code>
+     */
+    public com.google.protobuf.ByteString
+        getFragmentBytes() {
+      java.lang.Object ref = fragment_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        fragment_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      scheme_ = "";
+      address_ = org.apache.mesos.v1.Protos.Address.getDefaultInstance();
+      path_ = "";
+      query_ = java.util.Collections.emptyList();
+      fragment_ = "";
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasScheme()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasAddress()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!getAddress().isInitialized()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      for (int i = 0; i < getQueryCount(); i++) {
+        if (!getQuery(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getSchemeBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(2, address_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeBytes(3, getPathBytes());
+      }
+      for (int i = 0; i < query_.size(); i++) {
+        output.writeMessage(4, query_.get(i));
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeBytes(5, getFragmentBytes());
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getSchemeBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, address_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(3, getPathBytes());
+      }
+      for (int i = 0; i < query_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, query_.get(i));
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(5, getFragmentBytes());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.URL parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.URL parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.URL parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.URL parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.URL parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.URL parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.URL parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.URL parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.URL parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.URL parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.URL prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.URL}
+     *
+     * <pre>
+     **
+     * Represents a URL.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.URLOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_URL_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_URL_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.URL.class, org.apache.mesos.v1.Protos.URL.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.URL.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getAddressFieldBuilder();
+          getQueryFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        scheme_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (addressBuilder_ == null) {
+          address_ = org.apache.mesos.v1.Protos.Address.getDefaultInstance();
+        } else {
+          addressBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        path_ = "";
+        bitField0_ = (bitField0_ & ~0x00000004);
+        if (queryBuilder_ == null) {
+          query_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000008);
+        } else {
+          queryBuilder_.clear();
+        }
+        fragment_ = "";
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_URL_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.URL getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.URL.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.URL build() {
+        org.apache.mesos.v1.Protos.URL result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.URL buildPartial() {
+        org.apache.mesos.v1.Protos.URL result = new org.apache.mesos.v1.Protos.URL(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.scheme_ = scheme_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (addressBuilder_ == null) {
+          result.address_ = address_;
+        } else {
+          result.address_ = addressBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.path_ = path_;
+        if (queryBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008)) {
+            query_ = java.util.Collections.unmodifiableList(query_);
+            bitField0_ = (bitField0_ & ~0x00000008);
+          }
+          result.query_ = query_;
+        } else {
+          result.query_ = queryBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.fragment_ = fragment_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.URL) {
+          return mergeFrom((org.apache.mesos.v1.Protos.URL)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.URL other) {
+        if (other == org.apache.mesos.v1.Protos.URL.getDefaultInstance()) return this;
+        if (other.hasScheme()) {
+          bitField0_ |= 0x00000001;
+          scheme_ = other.scheme_;
+          onChanged();
+        }
+        if (other.hasAddress()) {
+          mergeAddress(other.getAddress());
+        }
+        if (other.hasPath()) {
+          bitField0_ |= 0x00000004;
+          path_ = other.path_;
+          onChanged();
+        }
+        if (queryBuilder_ == null) {
+          if (!other.query_.isEmpty()) {
+            if (query_.isEmpty()) {
+              query_ = other.query_;
+              bitField0_ = (bitField0_ & ~0x00000008);
+            } else {
+              ensureQueryIsMutable();
+              query_.addAll(other.query_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.query_.isEmpty()) {
+            if (queryBuilder_.isEmpty()) {
+              queryBuilder_.dispose();
+              queryBuilder_ = null;
+              query_ = other.query_;
+              bitField0_ = (bitField0_ & ~0x00000008);
+              queryBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getQueryFieldBuilder() : null;
+            } else {
+              queryBuilder_.addAllMessages(other.query_);
+            }
+          }
+        }
+        if (other.hasFragment()) {
+          bitField0_ |= 0x00000010;
+          fragment_ = other.fragment_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasScheme()) {
+          
+          return false;
+        }
+        if (!hasAddress()) {
+          
+          return false;
+        }
+        if (!getAddress().isInitialized()) {
+          
+          return false;
+        }
+        for (int i = 0; i < getQueryCount(); i++) {
+          if (!getQuery(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.URL parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.URL) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string scheme = 1;
+      private java.lang.Object scheme_ = "";
+      /**
+       * <code>required string scheme = 1;</code>
+       */
+      public boolean hasScheme() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string scheme = 1;</code>
+       */
+      public java.lang.String getScheme() {
+        java.lang.Object ref = scheme_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          scheme_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string scheme = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getSchemeBytes() {
+        java.lang.Object ref = scheme_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          scheme_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string scheme = 1;</code>
+       */
+      public Builder setScheme(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        scheme_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string scheme = 1;</code>
+       */
+      public Builder clearScheme() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        scheme_ = getDefaultInstance().getScheme();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string scheme = 1;</code>
+       */
+      public Builder setSchemeBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        scheme_ = value;
+        onChanged();
+        return this;
+      }
+
+      // required .mesos.v1.Address address = 2;
+      private org.apache.mesos.v1.Protos.Address address_ = org.apache.mesos.v1.Protos.Address.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Address, org.apache.mesos.v1.Protos.Address.Builder, org.apache.mesos.v1.Protos.AddressOrBuilder> addressBuilder_;
+      /**
+       * <code>required .mesos.v1.Address address = 2;</code>
+       */
+      public boolean hasAddress() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required .mesos.v1.Address address = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.Address getAddress() {
+        if (addressBuilder_ == null) {
+          return address_;
+        } else {
+          return addressBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>required .mesos.v1.Address address = 2;</code>
+       */
+      public Builder setAddress(org.apache.mesos.v1.Protos.Address value) {
+        if (addressBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          address_ = value;
+          onChanged();
+        } else {
+          addressBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.Address address = 2;</code>
+       */
+      public Builder setAddress(
+          org.apache.mesos.v1.Protos.Address.Builder builderForValue) {
+        if (addressBuilder_ == null) {
+          address_ = builderForValue.build();
+          onChanged();
+        } else {
+          addressBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.Address address = 2;</code>
+       */
+      public Builder mergeAddress(org.apache.mesos.v1.Protos.Address value) {
+        if (addressBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              address_ != org.apache.mesos.v1.Protos.Address.getDefaultInstance()) {
+            address_ =
+              org.apache.mesos.v1.Protos.Address.newBuilder(address_).mergeFrom(value).buildPartial();
+          } else {
+            address_ = value;
+          }
+          onChanged();
+        } else {
+          addressBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.Address address = 2;</code>
+       */
+      public Builder clearAddress() {
+        if (addressBuilder_ == null) {
+          address_ = org.apache.mesos.v1.Protos.Address.getDefaultInstance();
+          onChanged();
+        } else {
+          addressBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.Address address = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.Address.Builder getAddressBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getAddressFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>required .mesos.v1.Address address = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.AddressOrBuilder getAddressOrBuilder() {
+        if (addressBuilder_ != null) {
+          return addressBuilder_.getMessageOrBuilder();
+        } else {
+          return address_;
+        }
+      }
+      /**
+       * <code>required .mesos.v1.Address address = 2;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Address, org.apache.mesos.v1.Protos.Address.Builder, org.apache.mesos.v1.Protos.AddressOrBuilder> 
+          getAddressFieldBuilder() {
+        if (addressBuilder_ == null) {
+          addressBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Address, org.apache.mesos.v1.Protos.Address.Builder, org.apache.mesos.v1.Protos.AddressOrBuilder>(
+                  address_,
+                  getParentForChildren(),
+                  isClean());
+          address_ = null;
+        }
+        return addressBuilder_;
+      }
+
+      // optional string path = 3;
+      private java.lang.Object path_ = "";
+      /**
+       * <code>optional string path = 3;</code>
+       */
+      public boolean hasPath() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional string path = 3;</code>
+       */
+      public java.lang.String getPath() {
+        java.lang.Object ref = path_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          path_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string path = 3;</code>
+       */
+      public com.google.protobuf.ByteString
+          getPathBytes() {
+        java.lang.Object ref = path_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          path_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string path = 3;</code>
+       */
+      public Builder setPath(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        path_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string path = 3;</code>
+       */
+      public Builder clearPath() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        path_ = getDefaultInstance().getPath();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string path = 3;</code>
+       */
+      public Builder setPathBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        path_ = value;
+        onChanged();
+        return this;
+      }
+
+      // repeated .mesos.v1.Parameter query = 4;
+      private java.util.List<org.apache.mesos.v1.Protos.Parameter> query_ =
+        java.util.Collections.emptyList();
+      private void ensureQueryIsMutable() {
+        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
+          query_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Parameter>(query_);
+          bitField0_ |= 0x00000008;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.Parameter, org.apache.mesos.v1.Protos.Parameter.Builder, org.apache.mesos.v1.Protos.ParameterOrBuilder> queryBuilder_;
+
+      /**
+       * <code>repeated .mesos.v1.Parameter query = 4;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Parameter> getQueryList() {
+        if (queryBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(query_);
+        } else {
+          return queryBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Parameter query = 4;</code>
+       */
+      public int getQueryCount() {
+        if (queryBuilder_ == null) {
+          return query_.size();
+        } else {
+          return queryBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Parameter query = 4;</code>
+       */
+      public org.apache.mesos.v1.Protos.Parameter getQuery(int index) {
+        if (queryBuilder_ == null) {
+          return query_.get(index);
+        } else {
+          return queryBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Parameter query = 4;</code>
+       */
+      public Builder setQuery(
+          int index, org.apache.mesos.v1.Protos.Parameter value) {
+        if (queryBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureQueryIsMutable();
+          query_.set(index, value);
+          onChanged();
+        } else {
+          queryBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Parameter query = 4;</code>
+       */
+      public Builder setQuery(
+          int index, org.apache.mesos.v1.Protos.Parameter.Builder builderForValue) {
+        if (queryBuilder_ == null) {
+          ensureQueryIsMutable();
+          query_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          queryBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Parameter query = 4;</code>
+       */
+      public Builder addQuery(org.apache.mesos.v1.Protos.Parameter value) {
+        if (queryBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureQueryIsMutable();
+          query_.add(value);
+          onChanged();
+        } else {
+          queryBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Parameter query = 4;</code>
+       */
+      public Builder addQuery(
+          int index, org.apache.mesos.v1.Protos.Parameter value) {
+        if (queryBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureQueryIsMutable();
+          query_.add(index, value);
+          onChanged();
+        } else {
+          queryBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Parameter query = 4;</code>
+       */
+      public Builder addQuery(
+          org.apache.mesos.v1.Protos.Parameter.Builder builderForValue) {
+        if (queryBuilder_ == null) {
+          ensureQueryIsMutable();
+          query_.add(builderForValue.build());
+          onChanged();
+        } else {
+          queryBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Parameter query = 4;</code>
+       */
+      public Builder addQuery(
+          int index, org.apache.mesos.v1.Protos.Parameter.Builder builderForValue) {
+        if (queryBuilder_ == null) {
+          ensureQueryIsMutable();
+          query_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          queryBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Parameter query = 4;</code>
+       */
+      public Builder addAllQuery(
+          java.lang.Iterable<? extends org.apache.mesos.v1.Protos.Parameter> values) {
+        if (queryBuilder_ == null) {
+          ensureQueryIsMutable();
+          super.addAll(values, query_);
+          onChanged();
+        } else {
+          queryBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Parameter query = 4;</code>
+       */
+      public Builder clearQuery() {
+        if (queryBuilder_ == null) {
+          query_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000008);
+          onChanged();
+        } else {
+          queryBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Parameter query = 4;</code>
+       */
+      public Builder removeQuery(int index) {
+        if (queryBuilder_ == null) {
+          ensureQueryIsMutable();
+          query_.remove(index);
+          onChanged();
+        } else {
+          queryBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Parameter query = 4;</code>
+       */
+      public org.apache.mesos.v1.Protos.Parameter.Builder getQueryBuilder(
+          int index) {
+        return getQueryFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.Parameter query = 4;</code>
+       */
+      public org.apache.mesos.v1.Protos.ParameterOrBuilder getQueryOrBuilder(
+          int index) {
+        if (queryBuilder_ == null) {
+          return query_.get(index);  } else {
+          return queryBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Parameter query = 4;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.ParameterOrBuilder> 
+           getQueryOrBuilderList() {
+        if (queryBuilder_ != null) {
+          return queryBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(query_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Parameter query = 4;</code>
+       */
+      public org.apache.mesos.v1.Protos.Parameter.Builder addQueryBuilder() {
+        return getQueryFieldBuilder().addBuilder(
+            org.apache.mesos.v1.Protos.Parameter.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.Parameter query = 4;</code>
+       */
+      public org.apache.mesos.v1.Protos.Parameter.Builder addQueryBuilder(
+          int index) {
+        return getQueryFieldBuilder().addBuilder(
+            index, org.apache.mesos.v1.Protos.Parameter.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.Parameter query = 4;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Parameter.Builder> 
+           getQueryBuilderList() {
+        return getQueryFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.Parameter, org.apache.mesos.v1.Protos.Parameter.Builder, org.apache.mesos.v1.Protos.ParameterOrBuilder> 
+          getQueryFieldBuilder() {
+        if (queryBuilder_ == null) {
+          queryBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.Parameter, org.apache.mesos.v1.Protos.Parameter.Builder, org.apache.mesos.v1.Protos.ParameterOrBuilder>(
+                  query_,
+                  ((bitField0_ & 0x00000008) == 0x00000008),
+                  getParentForChildren(),
+                  isClean());
+          query_ = null;
+        }
+        return queryBuilder_;
+      }
+
+      // optional string fragment = 5;
+      private java.lang.Object fragment_ = "";
+      /**
+       * <code>optional string fragment = 5;</code>
+       */
+      public boolean hasFragment() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional string fragment = 5;</code>
+       */
+      public java.lang.String getFragment() {
+        java.lang.Object ref = fragment_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          fragment_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string fragment = 5;</code>
+       */
+      public com.google.protobuf.ByteString
+          getFragmentBytes() {
+        java.lang.Object ref = fragment_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          fragment_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string fragment = 5;</code>
+       */
+      public Builder setFragment(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000010;
+        fragment_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string fragment = 5;</code>
+       */
+      public Builder clearFragment() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        fragment_ = getDefaultInstance().getFragment();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string fragment = 5;</code>
+       */
+      public Builder setFragmentBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000010;
+        fragment_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.URL)
+    }
+
+    static {
+      defaultInstance = new URL(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.URL)
+  }
+
+  public interface UnavailabilityOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required .mesos.v1.TimeInfo start = 1;
+    /**
+     * <code>required .mesos.v1.TimeInfo start = 1;</code>
+     */
+    boolean hasStart();
+    /**
+     * <code>required .mesos.v1.TimeInfo start = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.TimeInfo getStart();
+    /**
+     * <code>required .mesos.v1.TimeInfo start = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.TimeInfoOrBuilder getStartOrBuilder();
+
+    // optional .mesos.v1.DurationInfo duration = 2;
+    /**
+     * <code>optional .mesos.v1.DurationInfo duration = 2;</code>
+     *
+     * <pre>
+     * When added to `start`, this represents the end of the interval.
+     * If unspecified, the duration is assumed to be infinite.
+     * </pre>
+     */
+    boolean hasDuration();
+    /**
+     * <code>optional .mesos.v1.DurationInfo duration = 2;</code>
+     *
+     * <pre>
+     * When added to `start`, this represents the end of the interval.
+     * If unspecified, the duration is assumed to be infinite.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.DurationInfo getDuration();
+    /**
+     * <code>optional .mesos.v1.DurationInfo duration = 2;</code>
+     *
+     * <pre>
+     * When added to `start`, this represents the end of the interval.
+     * If unspecified, the duration is assumed to be infinite.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.DurationInfoOrBuilder getDurationOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.Unavailability}
+   *
+   * <pre>
+   **
+   * Represents an interval, from a given start time over a given duration.
+   * This interval pertains to an unavailability event, such as maintenance,
+   * and is not a generic interval.
+   * </pre>
+   */
+  public static final class Unavailability extends
+      com.google.protobuf.GeneratedMessage
+      implements UnavailabilityOrBuilder {
+    // Use Unavailability.newBuilder() to construct.
+    private Unavailability(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Unavailability(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Unavailability defaultInstance;
+    public static Unavailability getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Unavailability getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Unavailability(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              org.apache.mesos.v1.Protos.TimeInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                subBuilder = start_.toBuilder();
+              }
+              start_ = input.readMessage(org.apache.mesos.v1.Protos.TimeInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(start_);
+                start_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+            case 18: {
+              org.apache.mesos.v1.Protos.DurationInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = duration_.toBuilder();
+              }
+              duration_ = input.readMessage(org.apache.mesos.v1.Protos.DurationInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(duration_);
+                duration_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Unavailability_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Unavailability_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.Unavailability.class, org.apache.mesos.v1.Protos.Unavailability.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Unavailability> PARSER =
+        new com.google.protobuf.AbstractParser<Unavailability>() {
+      public Unavailability parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Unavailability(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Unavailability> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required .mesos.v1.TimeInfo start = 1;
+    public static final int START_FIELD_NUMBER = 1;
+    private org.apache.mesos.v1.Protos.TimeInfo start_;
+    /**
+     * <code>required .mesos.v1.TimeInfo start = 1;</code>
+     */
+    public boolean hasStart() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required .mesos.v1.TimeInfo start = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.TimeInfo getStart() {
+      return start_;
+    }
+    /**
+     * <code>required .mesos.v1.TimeInfo start = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.TimeInfoOrBuilder getStartOrBuilder() {
+      return start_;
+    }
+
+    // optional .mesos.v1.DurationInfo duration = 2;
+    public static final int DURATION_FIELD_NUMBER = 2;
+    private org.apache.mesos.v1.Protos.DurationInfo duration_;
+    /**
+     * <code>optional .mesos.v1.DurationInfo duration = 2;</code>
+     *
+     * <pre>
+     * When added to `start`, this represents the end of the interval.
+     * If unspecified, the duration is assumed to be infinite.
+     * </pre>
+     */
+    public boolean hasDuration() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional .mesos.v1.DurationInfo duration = 2;</code>
+     *
+     * <pre>
+     * When added to `start`, this represents the end of the interval.
+     * If unspecified, the duration is assumed to be infinite.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.DurationInfo getDuration() {
+      return duration_;
+    }
+    /**
+     * <code>optional .mesos.v1.DurationInfo duration = 2;</code>
+     *
+     * <pre>
+     * When added to `start`, this represents the end of the interval.
+     * If unspecified, the duration is assumed to be infinite.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.DurationInfoOrBuilder getDurationOrBuilder() {
+      return duration_;
+    }
+
+    private void initFields() {
+      start_ = org.apache.mesos.v1.Protos.TimeInfo.getDefaultInstance();
+      duration_ = org.apache.mesos.v1.Protos.DurationInfo.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasStart()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!getStart().isInitialized()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (hasDuration()) {
+        if (!getDuration().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeMessage(1, start_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(2, duration_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, start_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, duration_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.Unavailability parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Unavailability parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Unavailability parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Unavailability parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Unavailability parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Unavailability parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Unavailability parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Unavailability parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Unavailability parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Unavailability parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.Unavailability prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.Unavailability}
+     *
+     * <pre>
+     **
+     * Represents an interval, from a given start time over a given duration.
+     * This interval pertains to an unavailability event, such as maintenance,
+     * and is not a generic interval.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.UnavailabilityOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Unavailability_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Unavailability_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.Unavailability.class, org.apache.mesos.v1.Protos.Unavailability.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.Unavailability.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getStartFieldBuilder();
+          getDurationFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (startBuilder_ == null) {
+          start_ = org.apache.mesos.v1.Protos.TimeInfo.getDefaultInstance();
+        } else {
+          startBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (durationBuilder_ == null) {
+          duration_ = org.apache.mesos.v1.Protos.DurationInfo.getDefaultInstance();
+        } else {
+          durationBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Unavailability_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.Unavailability getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.Unavailability.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.Unavailability build() {
+        org.apache.mesos.v1.Protos.Unavailability result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.Unavailability buildPartial() {
+        org.apache.mesos.v1.Protos.Unavailability result = new org.apache.mesos.v1.Protos.Unavailability(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        if (startBuilder_ == null) {
+          result.start_ = start_;
+        } else {
+          result.start_ = startBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (durationBuilder_ == null) {
+          result.duration_ = duration_;
+        } else {
+          result.duration_ = durationBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.Unavailability) {
+          return mergeFrom((org.apache.mesos.v1.Protos.Unavailability)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.Unavailability other) {
+        if (other == org.apache.mesos.v1.Protos.Unavailability.getDefaultInstance()) return this;
+        if (other.hasStart()) {
+          mergeStart(other.getStart());
+        }
+        if (other.hasDuration()) {
+          mergeDuration(other.getDuration());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasStart()) {
+          
+          return false;
+        }
+        if (!getStart().isInitialized()) {
+          
+          return false;
+        }
+        if (hasDuration()) {
+          if (!getDuration().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.Unavailability parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.Unavailability) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required .mesos.v1.TimeInfo start = 1;
+      private org.apache.mesos.v1.Protos.TimeInfo start_ = org.apache.mesos.v1.Protos.TimeInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.TimeInfo, org.apache.mesos.v1.Protos.TimeInfo.Builder, org.apache.mesos.v1.Protos.TimeInfoOrBuilder> startBuilder_;
+      /**
+       * <code>required .mesos.v1.TimeInfo start = 1;</code>
+       */
+      public boolean hasStart() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.v1.TimeInfo start = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.TimeInfo getStart() {
+        if (startBuilder_ == null) {
+          return start_;
+        } else {
+          return startBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>required .mesos.v1.TimeInfo start = 1;</code>
+       */
+      public Builder setStart(org.apache.mesos.v1.Protos.TimeInfo value) {
+        if (startBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          start_ = value;
+          onChanged();
+        } else {
+          startBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.TimeInfo start = 1;</code>
+       */
+      public Builder setStart(
+          org.apache.mesos.v1.Protos.TimeInfo.Builder builderForValue) {
+        if (startBuilder_ == null) {
+          start_ = builderForValue.build();
+          onChanged();
+        } else {
+          startBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.TimeInfo start = 1;</code>
+       */
+      public Builder mergeStart(org.apache.mesos.v1.Protos.TimeInfo value) {
+        if (startBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001) &&
+              start_ != org.apache.mesos.v1.Protos.TimeInfo.getDefaultInstance()) {
+            start_ =
+              org.apache.mesos.v1.Protos.TimeInfo.newBuilder(start_).mergeFrom(value).buildPartial();
+          } else {
+            start_ = value;
+          }
+          onChanged();
+        } else {
+          startBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.TimeInfo start = 1;</code>
+       */
+      public Builder clearStart() {
+        if (startBuilder_ == null) {
+          start_ = org.apache.mesos.v1.Protos.TimeInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          startBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.TimeInfo start = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.TimeInfo.Builder getStartBuilder() {
+        bitField0_ |= 0x00000001;
+        onChanged();
+        return getStartFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>required .mesos.v1.TimeInfo start = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.TimeInfoOrBuilder getStartOrBuilder() {
+        if (startBuilder_ != null) {
+          return startBuilder_.getMessageOrBuilder();
+        } else {
+          return start_;
+        }
+      }
+      /**
+       * <code>required .mesos.v1.TimeInfo start = 1;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.TimeInfo, org.apache.mesos.v1.Protos.TimeInfo.Builder, org.apache.mesos.v1.Protos.TimeInfoOrBuilder> 
+          getStartFieldBuilder() {
+        if (startBuilder_ == null) {
+          startBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.TimeInfo, org.apache.mesos.v1.Protos.TimeInfo.Builder, org.apache.mesos.v1.Protos.TimeInfoOrBuilder>(
+                  start_,
+                  getParentForChildren(),
+                  isClean());
+          start_ = null;
+        }
+        return startBuilder_;
+      }
+
+      // optional .mesos.v1.DurationInfo duration = 2;
+      private org.apache.mesos.v1.Protos.DurationInfo duration_ = org.apache.mesos.v1.Protos.DurationInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.DurationInfo, org.apache.mesos.v1.Protos.DurationInfo.Builder, org.apache.mesos.v1.Protos.DurationInfoOrBuilder> durationBuilder_;
+      /**
+       * <code>optional .mesos.v1.DurationInfo duration = 2;</code>
+       *
+       * <pre>
+       * When added to `start`, this represents the end of the interval.
+       * If unspecified, the duration is assumed to be infinite.
+       * </pre>
+       */
+      public boolean hasDuration() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.v1.DurationInfo duration = 2;</code>
+       *
+       * <pre>
+       * When added to `start`, this represents the end of the interval.
+       * If unspecified, the duration is assumed to be infinite.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.DurationInfo getDuration() {
+        if (durationBuilder_ == null) {
+          return duration_;
+        } else {
+          return durationBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.DurationInfo duration = 2;</code>
+       *
+       * <pre>
+       * When added to `start`, this represents the end of the interval.
+       * If unspecified, the duration is assumed to be infinite.
+       * </pre>
+       */
+      public Builder setDuration(org.apache.mesos.v1.Protos.DurationInfo value) {
+        if (durationBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          duration_ = value;
+          onChanged();
+        } else {
+          durationBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.DurationInfo duration = 2;</code>
+       *
+       * <pre>
+       * When added to `start`, this represents the end of the interval.
+       * If unspecified, the duration is assumed to be infinite.
+       * </pre>
+       */
+      public Builder setDuration(
+          org.apache.mesos.v1.Protos.DurationInfo.Builder builderForValue) {
+        if (durationBuilder_ == null) {
+          duration_ = builderForValue.build();
+          onChanged();
+        } else {
+          durationBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.DurationInfo duration = 2;</code>
+       *
+       * <pre>
+       * When added to `start`, this represents the end of the interval.
+       * If unspecified, the duration is assumed to be infinite.
+       * </pre>
+       */
+      public Builder mergeDuration(org.apache.mesos.v1.Protos.DurationInfo value) {
+        if (durationBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              duration_ != org.apache.mesos.v1.Protos.DurationInfo.getDefaultInstance()) {
+            duration_ =
+              org.apache.mesos.v1.Protos.DurationInfo.newBuilder(duration_).mergeFrom(value).buildPartial();
+          } else {
+            duration_ = value;
+          }
+          onChanged();
+        } else {
+          durationBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.DurationInfo duration = 2;</code>
+       *
+       * <pre>
+       * When added to `start`, this represents the end of the interval.
+       * If unspecified, the duration is assumed to be infinite.
+       * </pre>
+       */
+      public Builder clearDuration() {
+        if (durationBuilder_ == null) {
+          duration_ = org.apache.mesos.v1.Protos.DurationInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          durationBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.DurationInfo duration = 2;</code>
+       *
+       * <pre>
+       * When added to `start`, this represents the end of the interval.
+       * If unspecified, the duration is assumed to be infinite.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.DurationInfo.Builder getDurationBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getDurationFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.DurationInfo duration = 2;</code>
+       *
+       * <pre>
+       * When added to `start`, this represents the end of the interval.
+       * If unspecified, the duration is assumed to be infinite.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.DurationInfoOrBuilder getDurationOrBuilder() {
+        if (durationBuilder_ != null) {
+          return durationBuilder_.getMessageOrBuilder();
+        } else {
+          return duration_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.DurationInfo duration = 2;</code>
+       *
+       * <pre>
+       * When added to `start`, this represents the end of the interval.
+       * If unspecified, the duration is assumed to be infinite.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.DurationInfo, org.apache.mesos.v1.Protos.DurationInfo.Builder, org.apache.mesos.v1.Protos.DurationInfoOrBuilder> 
+          getDurationFieldBuilder() {
+        if (durationBuilder_ == null) {
+          durationBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.DurationInfo, org.apache.mesos.v1.Protos.DurationInfo.Builder, org.apache.mesos.v1.Protos.DurationInfoOrBuilder>(
+                  duration_,
+                  getParentForChildren(),
+                  isClean());
+          duration_ = null;
+        }
+        return durationBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.Unavailability)
+    }
+
+    static {
+      defaultInstance = new Unavailability(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.Unavailability)
+  }
+
+  public interface MachineIDOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional string hostname = 1;
+    /**
+     * <code>optional string hostname = 1;</code>
+     */
+    boolean hasHostname();
+    /**
+     * <code>optional string hostname = 1;</code>
+     */
+    java.lang.String getHostname();
+    /**
+     * <code>optional string hostname = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getHostnameBytes();
+
+    // optional string ip = 2;
+    /**
+     * <code>optional string ip = 2;</code>
+     */
+    boolean hasIp();
+    /**
+     * <code>optional string ip = 2;</code>
+     */
+    java.lang.String getIp();
+    /**
+     * <code>optional string ip = 2;</code>
+     */
+    com.google.protobuf.ByteString
+        getIpBytes();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.MachineID}
+   *
+   * <pre>
+   **
+   * Represents a single machine, which may hold one or more agents.
+   *
+   * NOTE: In order to match an agent to a machine, both the `hostname` and
+   * `ip` must match the values advertised by the agent to the master.
+   * Hostname is not case-sensitive.
+   * </pre>
+   */
+  public static final class MachineID extends
+      com.google.protobuf.GeneratedMessage
+      implements MachineIDOrBuilder {
+    // Use MachineID.newBuilder() to construct.
+    private MachineID(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private MachineID(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final MachineID defaultInstance;
+    public static MachineID getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public MachineID getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private MachineID(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              hostname_ = input.readBytes();
+              break;
+            }
+            case 18: {
+              bitField0_ |= 0x00000002;
+              ip_ = input.readBytes();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_MachineID_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_MachineID_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.MachineID.class, org.apache.mesos.v1.Protos.MachineID.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<MachineID> PARSER =
+        new com.google.protobuf.AbstractParser<MachineID>() {
+      public MachineID parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new MachineID(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<MachineID> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // optional string hostname = 1;
+    public static final int HOSTNAME_FIELD_NUMBER = 1;
+    private java.lang.Object hostname_;
+    /**
+     * <code>optional string hostname = 1;</code>
+     */
+    public boolean hasHostname() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional string hostname = 1;</code>
+     */
+    public java.lang.String getHostname() {
+      java.lang.Object ref = hostname_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          hostname_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string hostname = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getHostnameBytes() {
+      java.lang.Object ref = hostname_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        hostname_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional string ip = 2;
+    public static final int IP_FIELD_NUMBER = 2;
+    private java.lang.Object ip_;
+    /**
+     * <code>optional string ip = 2;</code>
+     */
+    public boolean hasIp() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional string ip = 2;</code>
+     */
+    public java.lang.String getIp() {
+      java.lang.Object ref = ip_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          ip_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string ip = 2;</code>
+     */
+    public com.google.protobuf.ByteString
+        getIpBytes() {
+      java.lang.Object ref = ip_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        ip_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      hostname_ = "";
+      ip_ = "";
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getHostnameBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(2, getIpBytes());
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getHostnameBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(2, getIpBytes());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.MachineID parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.MachineID parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.MachineID parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.MachineID parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.MachineID parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.MachineID parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.MachineID parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.MachineID parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.MachineID parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.MachineID parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.MachineID prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.MachineID}
+     *
+     * <pre>
+     **
+     * Represents a single machine, which may hold one or more agents.
+     *
+     * NOTE: In order to match an agent to a machine, both the `hostname` and
+     * `ip` must match the values advertised by the agent to the master.
+     * Hostname is not case-sensitive.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.MachineIDOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_MachineID_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_MachineID_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.MachineID.class, org.apache.mesos.v1.Protos.MachineID.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.MachineID.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        hostname_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        ip_ = "";
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_MachineID_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.MachineID getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.MachineID.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.MachineID build() {
+        org.apache.mesos.v1.Protos.MachineID result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.MachineID buildPartial() {
+        org.apache.mesos.v1.Protos.MachineID result = new org.apache.mesos.v1.Protos.MachineID(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.hostname_ = hostname_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.ip_ = ip_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.MachineID) {
+          return mergeFrom((org.apache.mesos.v1.Protos.MachineID)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.MachineID other) {
+        if (other == org.apache.mesos.v1.Protos.MachineID.getDefaultInstance()) return this;
+        if (other.hasHostname()) {
+          bitField0_ |= 0x00000001;
+          hostname_ = other.hostname_;
+          onChanged();
+        }
+        if (other.hasIp()) {
+          bitField0_ |= 0x00000002;
+          ip_ = other.ip_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.MachineID parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.MachineID) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional string hostname = 1;
+      private java.lang.Object hostname_ = "";
+      /**
+       * <code>optional string hostname = 1;</code>
+       */
+      public boolean hasHostname() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional string hostname = 1;</code>
+       */
+      public java.lang.String getHostname() {
+        java.lang.Object ref = hostname_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          hostname_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string hostname = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getHostnameBytes() {
+        java.lang.Object ref = hostname_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          hostname_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string hostname = 1;</code>
+       */
+      public Builder setHostname(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        hostname_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string hostname = 1;</code>
+       */
+      public Builder clearHostname() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        hostname_ = getDefaultInstance().getHostname();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string hostname = 1;</code>
+       */
+      public Builder setHostnameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        hostname_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional string ip = 2;
+      private java.lang.Object ip_ = "";
+      /**
+       * <code>optional string ip = 2;</code>
+       */
+      public boolean hasIp() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional string ip = 2;</code>
+       */
+      public java.lang.String getIp() {
+        java.lang.Object ref = ip_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          ip_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string ip = 2;</code>
+       */
+      public com.google.protobuf.ByteString
+          getIpBytes() {
+        java.lang.Object ref = ip_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          ip_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string ip = 2;</code>
+       */
+      public Builder setIp(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        ip_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string ip = 2;</code>
+       */
+      public Builder clearIp() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        ip_ = getDefaultInstance().getIp();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string ip = 2;</code>
+       */
+      public Builder setIpBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        ip_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.MachineID)
+    }
+
+    static {
+      defaultInstance = new MachineID(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.MachineID)
+  }
+
+  public interface MachineInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required .mesos.v1.MachineID id = 1;
+    /**
+     * <code>required .mesos.v1.MachineID id = 1;</code>
+     */
+    boolean hasId();
+    /**
+     * <code>required .mesos.v1.MachineID id = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.MachineID getId();
+    /**
+     * <code>required .mesos.v1.MachineID id = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.MachineIDOrBuilder getIdOrBuilder();
+
+    // optional .mesos.v1.MachineInfo.Mode mode = 2;
+    /**
+     * <code>optional .mesos.v1.MachineInfo.Mode mode = 2;</code>
+     */
+    boolean hasMode();
+    /**
+     * <code>optional .mesos.v1.MachineInfo.Mode mode = 2;</code>
+     */
+    org.apache.mesos.v1.Protos.MachineInfo.Mode getMode();
+
+    // optional .mesos.v1.Unavailability unavailability = 3;
+    /**
+     * <code>optional .mesos.v1.Unavailability unavailability = 3;</code>
+     *
+     * <pre>
+     * Signifies that the machine may be unavailable during the given interval.
+     * See comments in `Unavailability` and for the `unavailability` fields
+     * in `Offer` and `InverseOffer` for more information.
+     * </pre>
+     */
+    boolean hasUnavailability();
+    /**
+     * <code>optional .mesos.v1.Unavailability unavailability = 3;</code>
+     *
+     * <pre>
+     * Signifies that the machine may be unavailable during the given interval.
+     * See comments in `Unavailability` and for the `unavailability` fields
+     * in `Offer` and `InverseOffer` for more information.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.Unavailability getUnavailability();
+    /**
+     * <code>optional .mesos.v1.Unavailability unavailability = 3;</code>
+     *
+     * <pre>
+     * Signifies that the machine may be unavailable during the given interval.
+     * See comments in `Unavailability` and for the `unavailability` fields
+     * in `Offer` and `InverseOffer` for more information.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.UnavailabilityOrBuilder getUnavailabilityOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.MachineInfo}
+   *
+   * <pre>
+   **
+   * Holds information about a single machine, its `mode`, and any other
+   * relevant information which may affect the behavior of the machine.
+   * </pre>
+   */
+  public static final class MachineInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements MachineInfoOrBuilder {
+    // Use MachineInfo.newBuilder() to construct.
+    private MachineInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private MachineInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final MachineInfo defaultInstance;
+    public static MachineInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public MachineInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private MachineInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              org.apache.mesos.v1.Protos.MachineID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                subBuilder = id_.toBuilder();
+              }
+              id_ = input.readMessage(org.apache.mesos.v1.Protos.MachineID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(id_);
+                id_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+            case 16: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.v1.Protos.MachineInfo.Mode value = org.apache.mesos.v1.Protos.MachineInfo.Mode.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(2, rawValue);
+              } else {
+                bitField0_ |= 0x00000002;
+                mode_ = value;
+              }
+              break;
+            }
+            case 26: {
+              org.apache.mesos.v1.Protos.Unavailability.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                subBuilder = unavailability_.toBuilder();
+              }
+              unavailability_ = input.readMessage(org.apache.mesos.v1.Protos.Unavailability.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(unavailability_);
+                unavailability_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000004;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_MachineInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_MachineInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.MachineInfo.class, org.apache.mesos.v1.Protos.MachineInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<MachineInfo> PARSER =
+        new com.google.protobuf.AbstractParser<MachineInfo>() {
+      public MachineInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new MachineInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<MachineInfo> getParserForType() {
+      return PARSER;
+    }
+
+    /**
+     * Protobuf enum {@code mesos.v1.MachineInfo.Mode}
+     *
+     * <pre>
+     * Describes the several states that a machine can be in.  A `Mode`
+     * applies to a machine and to all associated agents on the machine.
+     * </pre>
+     */
+    public enum Mode
+        implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>UP = 1;</code>
+       *
+       * <pre>
+       * In this mode, a machine is behaving normally;
+       * offering resources, executing tasks, etc.
+       * </pre>
+       */
+      UP(0, 1),
+      /**
+       * <code>DRAINING = 2;</code>
+       *
+       * <pre>
+       * In this mode, all agents on the machine are expected to cooperate with
+       * frameworks to drain resources.  In general, draining is done ahead of
+       * a pending `unavailability`.  The resources should be drained so as to
+       * maximize utilization prior to the maintenance but without knowingly
+       * violating the frameworks' requirements.
+       * </pre>
+       */
+      DRAINING(1, 2),
+      /**
+       * <code>DOWN = 3;</code>
+       *
+       * <pre>
+       * In this mode, a machine is not running any tasks and will not offer
+       * any of its resources.  Agents on the machine will not be allowed to
+       * register with the master.
+       * </pre>
+       */
+      DOWN(2, 3),
+      ;
+
+      /**
+       * <code>UP = 1;</code>
+       *
+       * <pre>
+       * In this mode, a machine is behaving normally;
+       * offering resources, executing tasks, etc.
+       * </pre>
+       */
+      public static final int UP_VALUE = 1;
+      /**
+       * <code>DRAINING = 2;</code>
+       *
+       * <pre>
+       * In this mode, all agents on the machine are expected to cooperate with
+       * frameworks to drain resources.  In general, draining is done ahead of
+       * a pending `unavailability`.  The resources should be drained so as to
+       * maximize utilization prior to the maintenance but without knowingly
+       * violating the frameworks' requirements.
+       * </pre>
+       */
+      public static final int DRAINING_VALUE = 2;
+      /**
+       * <code>DOWN = 3;</code>
+       *
+       * <pre>
+       * In this mode, a machine is not running any tasks and will not offer
+       * any of its resources.  Agents on the machine will not be allowed to
+       * register with the master.
+       * </pre>
+       */
+      public static final int DOWN_VALUE = 3;
+
+
+      public final int getNumber() { return value; }
+
+      public static Mode valueOf(int value) {
+        switch (value) {
+          case 1: return UP;
+          case 2: return DRAINING;
+          case 3: return DOWN;
+          default: return null;
+        }
+      }
+
+      public static com.google.protobuf.Internal.EnumLiteMap<Mode>
+          internalGetValueMap() {
+        return internalValueMap;
+      }
+      private static com.google.protobuf.Internal.EnumLiteMap<Mode>
+          internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap<Mode>() {
+              public Mode findValueByNumber(int number) {
+                return Mode.valueOf(number);
+              }
+            };
+
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
+          getValueDescriptor() {
+        return getDescriptor().getValues().get(index);
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptorForType() {
+        return getDescriptor();
+      }
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.MachineInfo.getDescriptor().getEnumTypes().get(0);
+      }
+
+      private static final Mode[] VALUES = values();
+
+      public static Mode valueOf(
+          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+        if (desc.getType() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "EnumValueDescriptor is not for this type.");
+        }
+        return VALUES[desc.getIndex()];
+      }
+
+      private final int index;
+      private final int value;
+
+      private Mode(int index, int value) {
+        this.index = index;
+        this.value = value;
+      }
+
+      // @@protoc_insertion_point(enum_scope:mesos.v1.MachineInfo.Mode)
+    }
+
+    private int bitField0_;
+    // required .mesos.v1.MachineID id = 1;
+    public static final int ID_FIELD_NUMBER = 1;
+    private org.apache.mesos.v1.Protos.MachineID id_;
+    /**
+     * <code>required .mesos.v1.MachineID id = 1;</code>
+     */
+    public boolean hasId() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required .mesos.v1.MachineID id = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.MachineID getId() {
+      return id_;
+    }
+    /**
+     * <code>required .mesos.v1.MachineID id = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.MachineIDOrBuilder getIdOrBuilder() {
+      return id_;
+    }
+
+    // optional .mesos.v1.MachineInfo.Mode mode = 2;
+    public static final int MODE_FIELD_NUMBER = 2;
+    private org.apache.mesos.v1.Protos.MachineInfo.Mode mode_;
+    /**
+     * <code>optional .mesos.v1.MachineInfo.Mode mode = 2;</code>
+     */
+    public boolean hasMode() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional .mesos.v1.MachineInfo.Mode mode = 2;</code>
+     */
+    public org.apache.mesos.v1.Protos.MachineInfo.Mode getMode() {
+      return mode_;
+    }
+
+    // optional .mesos.v1.Unavailability unavailability = 3;
+    public static final int UNAVAILABILITY_FIELD_NUMBER = 3;
+    private org.apache.mesos.v1.Protos.Unavailability unavailability_;
+    /**
+     * <code>optional .mesos.v1.Unavailability unavailability = 3;</code>
+     *
+     * <pre>
+     * Signifies that the machine may be unavailable during the given interval.
+     * See comments in `Unavailability` and for the `unavailability` fields
+     * in `Offer` and `InverseOffer` for more information.
+     * </pre>
+     */
+    public boolean hasUnavailability() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional .mesos.v1.Unavailability unavailability = 3;</code>
+     *
+     * <pre>
+     * Signifies that the machine may be unavailable during the given interval.
+     * See comments in `Unavailability` and for the `unavailability` fields
+     * in `Offer` and `InverseOffer` for more information.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.Unavailability getUnavailability() {
+      return unavailability_;
+    }
+    /**
+     * <code>optional .mesos.v1.Unavailability unavailability = 3;</code>
+     *
+     * <pre>
+     * Signifies that the machine may be unavailable during the given interval.
+     * See comments in `Unavailability` and for the `unavailability` fields
+     * in `Offer` and `InverseOffer` for more information.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.UnavailabilityOrBuilder getUnavailabilityOrBuilder() {
+      return unavailability_;
+    }
+
+    private void initFields() {
+      id_ = org.apache.mesos.v1.Protos.MachineID.getDefaultInstance();
+      mode_ = org.apache.mesos.v1.Protos.MachineInfo.Mode.UP;
+      unavailability_ = org.apache.mesos.v1.Protos.Unavailability.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasId()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (hasUnavailability()) {
+        if (!getUnavailability().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeMessage(1, id_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeEnum(2, mode_.getNumber());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeMessage(3, unavailability_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, id_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(2, mode_.getNumber());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, unavailability_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.MachineInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.MachineInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.MachineInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.MachineInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.MachineInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.MachineInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.MachineInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.MachineInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.MachineInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.MachineInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.MachineInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.MachineInfo}
+     *
+     * <pre>
+     **
+     * Holds information about a single machine, its `mode`, and any other
+     * relevant information which may affect the behavior of the machine.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.MachineInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_MachineInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_MachineInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.MachineInfo.class, org.apache.mesos.v1.Protos.MachineInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.MachineInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getIdFieldBuilder();
+          getUnavailabilityFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (idBuilder_ == null) {
+          id_ = org.apache.mesos.v1.Protos.MachineID.getDefaultInstance();
+        } else {
+          idBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        mode_ = org.apache.mesos.v1.Protos.MachineInfo.Mode.UP;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        if (unavailabilityBuilder_ == null) {
+          unavailability_ = org.apache.mesos.v1.Protos.Unavailability.getDefaultInstance();
+        } else {
+          unavailabilityBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_MachineInfo_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.MachineInfo getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.MachineInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.MachineInfo build() {
+        org.apache.mesos.v1.Protos.MachineInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.MachineInfo buildPartial() {
+        org.apache.mesos.v1.Protos.MachineInfo result = new org.apache.mesos.v1.Protos.MachineInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        if (idBuilder_ == null) {
+          result.id_ = id_;
+        } else {
+          result.id_ = idBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.mode_ = mode_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        if (unavailabilityBuilder_ == null) {
+          result.unavailability_ = unavailability_;
+        } else {
+          result.unavailability_ = unavailabilityBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.MachineInfo) {
+          return mergeFrom((org.apache.mesos.v1.Protos.MachineInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.MachineInfo other) {
+        if (other == org.apache.mesos.v1.Protos.MachineInfo.getDefaultInstance()) return this;
+        if (other.hasId()) {
+          mergeId(other.getId());
+        }
+        if (other.hasMode()) {
+          setMode(other.getMode());
+        }
+        if (other.hasUnavailability()) {
+          mergeUnavailability(other.getUnavailability());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasId()) {
+          
+          return false;
+        }
+        if (hasUnavailability()) {
+          if (!getUnavailability().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.MachineInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.MachineInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required .mesos.v1.MachineID id = 1;
+      private org.apache.mesos.v1.Protos.MachineID id_ = org.apache.mesos.v1.Protos.MachineID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.MachineID, org.apache.mesos.v1.Protos.MachineID.Builder, org.apache.mesos.v1.Protos.MachineIDOrBuilder> idBuilder_;
+      /**
+       * <code>required .mesos.v1.MachineID id = 1;</code>
+       */
+      public boolean hasId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.v1.MachineID id = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.MachineID getId() {
+        if (idBuilder_ == null) {
+          return id_;
+        } else {
+          return idBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>required .mesos.v1.MachineID id = 1;</code>
+       */
+      public Builder setId(org.apache.mesos.v1.Protos.MachineID value) {
+        if (idBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          id_ = value;
+          onChanged();
+        } else {
+          idBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.MachineID id = 1;</code>
+       */
+      public Builder setId(
+          org.apache.mesos.v1.Protos.MachineID.Builder builderForValue) {
+        if (idBuilder_ == null) {
+          id_ = builderForValue.build();
+          onChanged();
+        } else {
+          idBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.MachineID id = 1;</code>
+       */
+      public Builder mergeId(org.apache.mesos.v1.Protos.MachineID value) {
+        if (idBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001) &&
+              id_ != org.apache.mesos.v1.Protos.MachineID.getDefaultInstance()) {
+            id_ =
+              org.apache.mesos.v1.Protos.MachineID.newBuilder(id_).mergeFrom(value).buildPartial();
+          } else {
+            id_ = value;
+          }
+          onChanged();
+        } else {
+          idBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.MachineID id = 1;</code>
+       */
+      public Builder clearId() {
+        if (idBuilder_ == null) {
+          id_ = org.apache.mesos.v1.Protos.MachineID.getDefaultInstance();
+          onChanged();
+        } else {
+          idBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.MachineID id = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.MachineID.Builder getIdBuilder() {
+        bitField0_ |= 0x00000001;
+        onChanged();
+        return getIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>required .mesos.v1.MachineID id = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.MachineIDOrBuilder getIdOrBuilder() {
+        if (idBuilder_ != null) {
+          return idBuilder_.getMessageOrBuilder();
+        } else {
+          return id_;
+        }
+      }
+      /**
+       * <code>required .mesos.v1.MachineID id = 1;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.MachineID, org.apache.mesos.v1.Protos.MachineID.Builder, org.apache.mesos.v1.Protos.MachineIDOrBuilder> 
+          getIdFieldBuilder() {
+        if (idBuilder_ == null) {
+          idBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.MachineID, org.apache.mesos.v1.Protos.MachineID.Builder, org.apache.mesos.v1.Protos.MachineIDOrBuilder>(
+                  id_,
+                  getParentForChildren(),
+                  isClean());
+          id_ = null;
+        }
+        return idBuilder_;
+      }
+
+      // optional .mesos.v1.MachineInfo.Mode mode = 2;
+      private org.apache.mesos.v1.Protos.MachineInfo.Mode mode_ = org.apache.mesos.v1.Protos.MachineInfo.Mode.UP;
+      /**
+       * <code>optional .mesos.v1.MachineInfo.Mode mode = 2;</code>
+       */
+      public boolean hasMode() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.v1.MachineInfo.Mode mode = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.MachineInfo.Mode getMode() {
+        return mode_;
+      }
+      /**
+       * <code>optional .mesos.v1.MachineInfo.Mode mode = 2;</code>
+       */
+      public Builder setMode(org.apache.mesos.v1.Protos.MachineInfo.Mode value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000002;
+        mode_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.MachineInfo.Mode mode = 2;</code>
+       */
+      public Builder clearMode() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        mode_ = org.apache.mesos.v1.Protos.MachineInfo.Mode.UP;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.v1.Unavailability unavailability = 3;
+      private org.apache.mesos.v1.Protos.Unavailability unavailability_ = org.apache.mesos.v1.Protos.Unavailability.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Unavailability, org.apache.mesos.v1.Protos.Unavailability.Builder, org.apache.mesos.v1.Protos.UnavailabilityOrBuilder> unavailabilityBuilder_;
+      /**
+       * <code>optional .mesos.v1.Unavailability unavailability = 3;</code>
+       *
+       * <pre>
+       * Signifies that the machine may be unavailable during the given interval.
+       * See comments in `Unavailability` and for the `unavailability` fields
+       * in `Offer` and `InverseOffer` for more information.
+       * </pre>
+       */
+      public boolean hasUnavailability() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.v1.Unavailability unavailability = 3;</code>
+       *
+       * <pre>
+       * Signifies that the machine may be unavailable during the given interval.
+       * See comments in `Unavailability` and for the `unavailability` fields
+       * in `Offer` and `InverseOffer` for more information.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Unavailability getUnavailability() {
+        if (unavailabilityBuilder_ == null) {
+          return unavailability_;
+        } else {
+          return unavailabilityBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Unavailability unavailability = 3;</code>
+       *
+       * <pre>
+       * Signifies that the machine may be unavailable during the given interval.
+       * See comments in `Unavailability` and for the `unavailability` fields
+       * in `Offer` and `InverseOffer` for more information.
+       * </pre>
+       */
+      public Builder setUnavailability(org.apache.mesos.v1.Protos.Unavailability value) {
+        if (unavailabilityBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          unavailability_ = value;
+          onChanged();
+        } else {
+          unavailabilityBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Unavailability unavailability = 3;</code>
+       *
+       * <pre>
+       * Signifies that the machine may be unavailable during the given interval.
+       * See comments in `Unavailability` and for the `unavailability` fields
+       * in `Offer` and `InverseOffer` for more information.
+       * </pre>
+       */
+      public Builder setUnavailability(
+          org.apache.mesos.v1.Protos.Unavailability.Builder builderForValue) {
+        if (unavailabilityBuilder_ == null) {
+          unavailability_ = builderForValue.build();
+          onChanged();
+        } else {
+          unavailabilityBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Unavailability unavailability = 3;</code>
+       *
+       * <pre>
+       * Signifies that the machine may be unavailable during the given interval.
+       * See comments in `Unavailability` and for the `unavailability` fields
+       * in `Offer` and `InverseOffer` for more information.
+       * </pre>
+       */
+      public Builder mergeUnavailability(org.apache.mesos.v1.Protos.Unavailability value) {
+        if (unavailabilityBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) == 0x00000004) &&
+              unavailability_ != org.apache.mesos.v1.Protos.Unavailability.getDefaultInstance()) {
+            unavailability_ =
+              org.apache.mesos.v1.Protos.Unavailability.newBuilder(unavailability_).mergeFrom(value).buildPartial();
+          } else {
+            unavailability_ = value;
+          }
+          onChanged();
+        } else {
+          unavailabilityBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Unavailability unavailability = 3;</code>
+       *
+       * <pre>
+       * Signifies that the machine may be unavailable during the given interval.
+       * See comments in `Unavailability` and for the `unavailability` fields
+       * in `Offer` and `InverseOffer` for more information.
+       * </pre>
+       */
+      public Builder clearUnavailability() {
+        if (unavailabilityBuilder_ == null) {
+          unavailability_ = org.apache.mesos.v1.Protos.Unavailability.getDefaultInstance();
+          onChanged();
+        } else {
+          unavailabilityBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Unavailability unavailability = 3;</code>
+       *
+       * <pre>
+       * Signifies that the machine may be unavailable during the given interval.
+       * See comments in `Unavailability` and for the `unavailability` fields
+       * in `Offer` and `InverseOffer` for more information.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Unavailability.Builder getUnavailabilityBuilder() {
+        bitField0_ |= 0x00000004;
+        onChanged();
+        return getUnavailabilityFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.Unavailability unavailability = 3;</code>
+       *
+       * <pre>
+       * Signifies that the machine may be unavailable during the given interval.
+       * See comments in `Unavailability` and for the `unavailability` fields
+       * in `Offer` and `InverseOffer` for more information.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.UnavailabilityOrBuilder getUnavailabilityOrBuilder() {
+        if (unavailabilityBuilder_ != null) {
+          return unavailabilityBuilder_.getMessageOrBuilder();
+        } else {
+          return unavailability_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Unavailability unavailability = 3;</code>
+       *
+       * <pre>
+       * Signifies that the machine may be unavailable during the given interval.
+       * See comments in `Unavailability` and for the `unavailability` fields
+       * in `Offer` and `InverseOffer` for more information.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Unavailability, org.apache.mesos.v1.Protos.Unavailability.Builder, org.apache.mesos.v1.Protos.UnavailabilityOrBuilder> 
+          getUnavailabilityFieldBuilder() {
+        if (unavailabilityBuilder_ == null) {
+          unavailabilityBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Unavailability, org.apache.mesos.v1.Protos.Unavailability.Builder, org.apache.mesos.v1.Protos.UnavailabilityOrBuilder>(
+                  unavailability_,
+                  getParentForChildren(),
+                  isClean());
+          unavailability_ = null;
+        }
+        return unavailabilityBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.MachineInfo)
+    }
+
+    static {
+      defaultInstance = new MachineInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.MachineInfo)
+  }
+
+  public interface FrameworkInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string user = 1;
+    /**
+     * <code>required string user = 1;</code>
+     *
+     * <pre>
+     * Used to determine the Unix user that an executor or task should be
+     * launched as.
+     *
+     * When using the MesosSchedulerDriver, if the field is set to an
+     * empty string, it will automagically set it to the current user.
+     *
+     * When using the HTTP Scheduler API, the user has to be set
+     * explicitly.
+     * </pre>
+     */
+    boolean hasUser();
+    /**
+     * <code>required string user = 1;</code>
+     *
+     * <pre>
+     * Used to determine the Unix user that an executor or task should be
+     * launched as.
+     *
+     * When using the MesosSchedulerDriver, if the field is set to an
+     * empty string, it will automagically set it to the current user.
+     *
+     * When using the HTTP Scheduler API, the user has to be set
+     * explicitly.
+     * </pre>
+     */
+    java.lang.String getUser();
+    /**
+     * <code>required string user = 1;</code>
+     *
+     * <pre>
+     * Used to determine the Unix user that an executor or task should be
+     * launched as.
+     *
+     * When using the MesosSchedulerDriver, if the field is set to an
+     * empty string, it will automagically set it to the current user.
+     *
+     * When using the HTTP Scheduler API, the user has to be set
+     * explicitly.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getUserBytes();
+
+    // required string name = 2;
+    /**
+     * <code>required string name = 2;</code>
+     *
+     * <pre>
+     * Name of the framework that shows up in the Mesos Web UI.
+     * </pre>
+     */
+    boolean hasName();
+    /**
+     * <code>required string name = 2;</code>
+     *
+     * <pre>
+     * Name of the framework that shows up in the Mesos Web UI.
+     * </pre>
+     */
+    java.lang.String getName();
+    /**
+     * <code>required string name = 2;</code>
+     *
+     * <pre>
+     * Name of the framework that shows up in the Mesos Web UI.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getNameBytes();
+
+    // optional .mesos.v1.FrameworkID id = 3;
+    /**
+     * <code>optional .mesos.v1.FrameworkID id = 3;</code>
+     *
+     * <pre>
+     * Note that 'id' is only available after a framework has
+     * registered, however, it is included here in order to facilitate
+     * scheduler failover (i.e., if it is set then the
+     * MesosSchedulerDriver expects the scheduler is performing
+     * failover).
+     * </pre>
+     */
+    boolean hasId();
+    /**
+     * <code>optional .mesos.v1.FrameworkID id = 3;</code>
+     *
+     * <pre>
+     * Note that 'id' is only available after a framework has
+     * registered, however, it is included here in order to facilitate
+     * scheduler failover (i.e., if it is set then the
+     * MesosSchedulerDriver expects the scheduler is performing
+     * failover).
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.FrameworkID getId();
+    /**
+     * <code>optional .mesos.v1.FrameworkID id = 3;</code>
+     *
+     * <pre>
+     * Note that 'id' is only available after a framework has
+     * registered, however, it is included here in order to facilitate
+     * scheduler failover (i.e., if it is set then the
+     * MesosSchedulerDriver expects the scheduler is performing
+     * failover).
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.FrameworkIDOrBuilder getIdOrBuilder();
+
+    // optional double failover_timeout = 4 [default = 0];
+    /**
+     * <code>optional double failover_timeout = 4 [default = 0];</code>
+     *
+     * <pre>
+     * The amount of time (in seconds) that the master will wait for the
+     * scheduler to failover before it tears down the framework by
+     * killing all its tasks/executors. This should be non-zero if a
+     * framework expects to reconnect after a failure and not lose its
+     * tasks/executors.
+     *
+     * NOTE: To avoid accidental destruction of tasks, production
+     * frameworks typically set this to a large value (e.g., 1 week).
+     * </pre>
+     */
+    boolean hasFailoverTimeout();
+    /**
+     * <code>optional double failover_timeout = 4 [default = 0];</code>
+     *
+     * <pre>
+     * The amount of time (in seconds) that the master will wait for the
+     * scheduler to failover before it tears down the framework by
+     * killing all its tasks/executors. This should be non-zero if a
+     * framework expects to reconnect after a failure and not lose its
+     * tasks/executors.
+     *
+     * NOTE: To avoid accidental destruction of tasks, production
+     * frameworks typically set this to a large value (e.g., 1 week).
+     * </pre>
+     */
+    double getFailoverTimeout();
+
+    // optional bool checkpoint = 5 [default = false];
+    /**
+     * <code>optional bool checkpoint = 5 [default = false];</code>
+     *
+     * <pre>
+     * If set, agents running tasks started by this framework will write
+     * the framework pid, executor pids and status updates to disk. If
+     * the agent exits (e.g., due to a crash or as part of upgrading
+     * Mesos), this checkpointed data allows the restarted agent to
+     * reconnect to executors that were started by the old instance of
+     * the agent. Enabling checkpointing improves fault tolerance, at
+     * the cost of a (usually small) increase in disk I/O.
+     * </pre>
+     */
+    boolean hasCheckpoint();
+    /**
+     * <code>optional bool checkpoint = 5 [default = false];</code>
+     *
+     * <pre>
+     * If set, agents running tasks started by this framework will write
+     * the framework pid, executor pids and status updates to disk. If
+     * the agent exits (e.g., due to a crash or as part of upgrading
+     * Mesos), this checkpointed data allows the restarted agent to
+     * reconnect to executors that were started by the old instance of
+     * the agent. Enabling checkpointing improves fault tolerance, at
+     * the cost of a (usually small) increase in disk I/O.
+     * </pre>
+     */
+    boolean getCheckpoint();
+
+    // optional string role = 6 [default = "*", deprecated = true];
+    /**
+     * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+     *
+     * <pre>
+     * Roles are the entities to which allocations are made.
+     * The framework must have at least one role in order to
+     * be offered resources. Note that `role` is deprecated
+     * in favor of `roles` and only one of these fields must
+     * be used. Since we cannot distinguish between empty
+     * `roles` and the default unset `role`, we require that
+     * frameworks set the `MULTI_ROLE` capability if
+     * setting the `roles` field.
+     * </pre>
+     */
+    @java.lang.Deprecated boolean hasRole();
+    /**
+     * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+     *
+     * <pre>
+     * Roles are the entities to which allocations are made.
+     * The framework must have at least one role in order to
+     * be offered resources. Note that `role` is deprecated
+     * in favor of `roles` and only one of these fields must
+     * be used. Since we cannot distinguish between empty
+     * `roles` and the default unset `role`, we require that
+     * frameworks set the `MULTI_ROLE` capability if
+     * setting the `roles` field.
+     * </pre>
+     */
+    @java.lang.Deprecated java.lang.String getRole();
+    /**
+     * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+     *
+     * <pre>
+     * Roles are the entities to which allocations are made.
+     * The framework must have at least one role in order to
+     * be offered resources. Note that `role` is deprecated
+     * in favor of `roles` and only one of these fields must
+     * be used. Since we cannot distinguish between empty
+     * `roles` and the default unset `role`, we require that
+     * frameworks set the `MULTI_ROLE` capability if
+     * setting the `roles` field.
+     * </pre>
+     */
+    @java.lang.Deprecated com.google.protobuf.ByteString
+        getRoleBytes();
+
+    // repeated string roles = 12;
+    /**
+     * <code>repeated string roles = 12;</code>
+     */
+    java.util.List<java.lang.String>
+    getRolesList();
+    /**
+     * <code>repeated string roles = 12;</code>
+     */
+    int getRolesCount();
+    /**
+     * <code>repeated string roles = 12;</code>
+     */
+    java.lang.String getRoles(int index);
+    /**
+     * <code>repeated string roles = 12;</code>
+     */
+    com.google.protobuf.ByteString
+        getRolesBytes(int index);
+
+    // optional string hostname = 7;
+    /**
+     * <code>optional string hostname = 7;</code>
+     *
+     * <pre>
+     * Used to indicate the current host from which the scheduler is
+     * registered in the Mesos Web UI. If set to an empty string Mesos
+     * will automagically set it to the current hostname if one is
+     * available.
+     * </pre>
+     */
+    boolean hasHostname();
+    /**
+     * <code>optional string hostname = 7;</code>
+     *
+     * <pre>
+     * Used to indicate the current host from which the scheduler is
+     * registered in the Mesos Web UI. If set to an empty string Mesos
+     * will automagically set it to the current hostname if one is
+     * available.
+     * </pre>
+     */
+    java.lang.String getHostname();
+    /**
+     * <code>optional string hostname = 7;</code>
+     *
+     * <pre>
+     * Used to indicate the current host from which the scheduler is
+     * registered in the Mesos Web UI. If set to an empty string Mesos
+     * will automagically set it to the current hostname if one is
+     * available.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getHostnameBytes();
+
+    // optional string principal = 8;
+    /**
+     * <code>optional string principal = 8;</code>
+     *
+     * <pre>
+     * This field should match the credential's principal the framework
+     * uses for authentication. This field is used for framework API
+     * rate limiting and dynamic reservations. It should be set even
+     * if authentication is not enabled if these features are desired.
+     * </pre>
+     */
+    boolean hasPrincipal();
+    /**
+     * <code>optional string principal = 8;</code>
+     *
+     * <pre>
+     * This field should match the credential's principal the framework
+     * uses for authentication. This field is used for framework API
+     * rate limiting and dynamic reservations. It should be set even
+     * if authentication is not enabled if these features are desired.
+     * </pre>
+     */
+    java.lang.String getPrincipal();
+    /**
+     * <code>optional string principal = 8;</code>
+     *
+     * <pre>
+     * This field should match the credential's principal the framework
+     * uses for authentication. This field is used for framework API
+     * rate limiting and dynamic reservations. It should be set even
+     * if authentication is not enabled if these features are desired.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getPrincipalBytes();
+
+    // optional string webui_url = 9;
+    /**
+     * <code>optional string webui_url = 9;</code>
+     *
+     * <pre>
+     * This field allows a framework to advertise its web UI, so that
+     * the Mesos web UI can link to it. It is expected to be a full URL,
+     * for example http://my-scheduler.example.com:8080/.
+     * </pre>
+     */
+    boolean hasWebuiUrl();
+    /**
+     * <code>optional string webui_url = 9;</code>
+     *
+     * <pre>
+     * This field allows a framework to advertise its web UI, so that
+     * the Mesos web UI can link to it. It is expected to be a full URL,
+     * for example http://my-scheduler.example.com:8080/.
+     * </pre>
+     */
+    java.lang.String getWebuiUrl();
+    /**
+     * <code>optional string webui_url = 9;</code>
+     *
+     * <pre>
+     * This field allows a framework to advertise its web UI, so that
+     * the Mesos web UI can link to it. It is expected to be a full URL,
+     * for example http://my-scheduler.example.com:8080/.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getWebuiUrlBytes();
+
+    // repeated .mesos.v1.FrameworkInfo.Capability capabilities = 10;
+    /**
+     * <code>repeated .mesos.v1.FrameworkInfo.Capability capabilities = 10;</code>
+     *
+     * <pre>
+     * This field allows a framework to advertise its set of
+     * capabilities (e.g., ability to receive offers for revocable
+     * resources).
+     * </pre>
+     */
+    java.util.List<org.apache.mesos.v1.Protos.FrameworkInfo.Capability> 
+        getCapabilitiesList();
+    /**
+     * <code>repeated .mesos.v1.FrameworkInfo.Capability capabilities = 10;</code>
+     *
+     * <pre>
+     * This field allows a framework to advertise its set of
+     * capabilities (e.g., ability to receive offers for revocable
+     * resources).
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.FrameworkInfo.Capability getCapabilities(int index);
+    /**
+     * <code>repeated .mesos.v1.FrameworkInfo.Capability capabilities = 10;</code>
+     *
+     * <pre>
+     * This field allows a framework to advertise its set of
+     * capabilities (e.g., ability to receive offers for revocable
+     * resources).
+     * </pre>
+     */
+    int getCapabilitiesCount();
+    /**
+     * <code>repeated .mesos.v1.FrameworkInfo.Capability capabilities = 10;</code>
+     *
+     * <pre>
+     * This field allows a framework to advertise its set of
+     * capabilities (e.g., ability to receive offers for revocable
+     * resources).
+     * </pre>
+     */
+    java.util.List<? extends org.apache.mesos.v1.Protos.FrameworkInfo.CapabilityOrBuilder> 
+        getCapabilitiesOrBuilderList();
+    /**
+     * <code>repeated .mesos.v1.FrameworkInfo.Capability capabilities = 10;</code>
+     *
+     * <pre>
+     * This field allows a framework to advertise its set of
+     * capabilities (e.g., ability to receive offers for revocable
+     * resources).
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.FrameworkInfo.CapabilityOrBuilder getCapabilitiesOrBuilder(
+        int index);
+
+    // optional .mesos.v1.Labels labels = 11;
+    /**
+     * <code>optional .mesos.v1.Labels labels = 11;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs supplied by the framework
+     * scheduler (e.g., to describe additional functionality offered by
+     * the framework). These labels are not interpreted by Mesos itself.
+     * Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    boolean hasLabels();
+    /**
+     * <code>optional .mesos.v1.Labels labels = 11;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs supplied by the framework
+     * scheduler (e.g., to describe additional functionality offered by
+     * the framework). These labels are not interpreted by Mesos itself.
+     * Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.Labels getLabels();
+    /**
+     * <code>optional .mesos.v1.Labels labels = 11;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs supplied by the framework
+     * scheduler (e.g., to describe additional functionality offered by
+     * the framework). These labels are not interpreted by Mesos itself.
+     * Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.LabelsOrBuilder getLabelsOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.FrameworkInfo}
+   *
+   * <pre>
+   **
+   * Describes a framework.
+   * </pre>
+   */
+  public static final class FrameworkInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements FrameworkInfoOrBuilder {
+    // Use FrameworkInfo.newBuilder() to construct.
+    private FrameworkInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private FrameworkInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final FrameworkInfo defaultInstance;
+    public static FrameworkInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public FrameworkInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private FrameworkInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              user_ = input.readBytes();
+              break;
+            }
+            case 18: {
+              bitField0_ |= 0x00000002;
+              name_ = input.readBytes();
+              break;
+            }
+            case 26: {
+              org.apache.mesos.v1.Protos.FrameworkID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                subBuilder = id_.toBuilder();
+              }
+              id_ = input.readMessage(org.apache.mesos.v1.Protos.FrameworkID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(id_);
+                id_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000004;
+              break;
+            }
+            case 33: {
+              bitField0_ |= 0x00000008;
+              failoverTimeout_ = input.readDouble();
+              break;
+            }
+            case 40: {
+              bitField0_ |= 0x00000010;
+              checkpoint_ = input.readBool();
+              break;
+            }
+            case 50: {
+              bitField0_ |= 0x00000020;
+              role_ = input.readBytes();
+              break;
+            }
+            case 58: {
+              bitField0_ |= 0x00000040;
+              hostname_ = input.readBytes();
+              break;
+            }
+            case 66: {
+              bitField0_ |= 0x00000080;
+              principal_ = input.readBytes();
+              break;
+            }
+            case 74: {
+              bitField0_ |= 0x00000100;
+              webuiUrl_ = input.readBytes();
+              break;
+            }
+            case 82: {
+              if (!((mutable_bitField0_ & 0x00000400) == 0x00000400)) {
+                capabilities_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.FrameworkInfo.Capability>();
+                mutable_bitField0_ |= 0x00000400;
+              }
+              capabilities_.add(input.readMessage(org.apache.mesos.v1.Protos.FrameworkInfo.Capability.PARSER, extensionRegistry));
+              break;
+            }
+            case 90: {
+              org.apache.mesos.v1.Protos.Labels.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000200) == 0x00000200)) {
+                subBuilder = labels_.toBuilder();
+              }
+              labels_ = input.readMessage(org.apache.mesos.v1.Protos.Labels.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(labels_);
+                labels_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000200;
+              break;
+            }
+            case 98: {
+              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
+                roles_ = new com.google.protobuf.LazyStringArrayList();
+                mutable_bitField0_ |= 0x00000040;
+              }
+              roles_.add(input.readBytes());
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000400) == 0x00000400)) {
+          capabilities_ = java.util.Collections.unmodifiableList(capabilities_);
+        }
+        if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
+          roles_ = new com.google.protobuf.UnmodifiableLazyStringList(roles_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_FrameworkInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_FrameworkInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.FrameworkInfo.class, org.apache.mesos.v1.Protos.FrameworkInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<FrameworkInfo> PARSER =
+        new com.google.protobuf.AbstractParser<FrameworkInfo>() {
+      public FrameworkInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new FrameworkInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<FrameworkInfo> getParserForType() {
+      return PARSER;
+    }
+
+    public interface CapabilityOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // optional .mesos.v1.FrameworkInfo.Capability.Type type = 1;
+      /**
+       * <code>optional .mesos.v1.FrameworkInfo.Capability.Type type = 1;</code>
+       *
+       * <pre>
+       * Enum fields should be optional, see: MESOS-4997.
+       * </pre>
+       */
+      boolean hasType();
+      /**
+       * <code>optional .mesos.v1.FrameworkInfo.Capability.Type type = 1;</code>
+       *
+       * <pre>
+       * Enum fields should be optional, see: MESOS-4997.
+       * </pre>
+       */
+      org.apache.mesos.v1.Protos.FrameworkInfo.Capability.Type getType();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.FrameworkInfo.Capability}
+     */
+    public static final class Capability extends
+        com.google.protobuf.GeneratedMessage
+        implements CapabilityOrBuilder {
+      // Use Capability.newBuilder() to construct.
+      private Capability(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Capability(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Capability defaultInstance;
+      public static Capability getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Capability getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Capability(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 8: {
+                int rawValue = input.readEnum();
+                org.apache.mesos.v1.Protos.FrameworkInfo.Capability.Type value = org.apache.mesos.v1.Protos.FrameworkInfo.Capability.Type.valueOf(rawValue);
+                if (value == null) {
+                  unknownFields.mergeVarintField(1, rawValue);
+                } else {
+                  bitField0_ |= 0x00000001;
+                  type_ = value;
+                }
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_FrameworkInfo_Capability_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_FrameworkInfo_Capability_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.FrameworkInfo.Capability.class, org.apache.mesos.v1.Protos.FrameworkInfo.Capability.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Capability> PARSER =
+          new com.google.protobuf.AbstractParser<Capability>() {
+        public Capability parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Capability(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Capability> getParserForType() {
+        return PARSER;
+      }
+
+      /**
+       * Protobuf enum {@code mesos.v1.FrameworkInfo.Capability.Type}
+       */
+      public enum Type
+          implements com.google.protobuf.ProtocolMessageEnum {
+        /**
+         * <code>UNKNOWN = 0;</code>
+         *
+         * <pre>
+         * This must be the first enum value in this list, to
+         * ensure that if 'type' is not set, the default value
+         * is UNKNOWN. This enables enum values to be added
+         * in a backwards-compatible way. See: MESOS-4997.
+         * </pre>
+         */
+        UNKNOWN(0, 0),
+        /**
+         * <code>REVOCABLE_RESOURCES = 1;</code>
+         *
+         * <pre>
+         * Receive offers with revocable resources. See 'Resource'
+         * message for details.
+         * </pre>
+         */
+        REVOCABLE_RESOURCES(1, 1),
+        /**
+         * <code>TASK_KILLING_STATE = 2;</code>
+         *
+         * <pre>
+         * Receive the TASK_KILLING TaskState when a task is being
+         * killed by an executor. The executor will examine this
+         * capability to determine whether it can send TASK_KILLING.
+         * </pre>
+         */
+        TASK_KILLING_STATE(2, 2),
+        /**
+         * <code>GPU_RESOURCES = 3;</code>
+         *
+         * <pre>
+         * Indicates whether the framework is aware of GPU resources.
+         * Frameworks that are aware of GPU resources are expected to
+         * avoid placing non-GPU workloads on GPU agents, in order
+         * to avoid occupying a GPU agent and preventing GPU workloads
+         * from running! Currently, if a framework is unaware of GPU
+         * resources, it will not be offered *any* of the resources on
+         * an agent with GPUs. This restriction is in place because we
+         * do not have a revocation mechanism that ensures GPU workloads
+         * can evict GPU agent occupants if necessary.
+         *
+         * TODO(bmahler): As we add revocation we can relax the
+         * restriction here. See MESOS-5634 for more information.
+         * </pre>
+         */
+        GPU_RESOURCES(3, 3),
+        /**
+         * <code>SHARED_RESOURCES = 4;</code>
+         *
+         * <pre>
+         * Receive offers with resources that are shared.
+         * </pre>
+         */
+        SHARED_RESOURCES(4, 4),
+        /**
+         * <code>PARTITION_AWARE = 5;</code>
+         *
+         * <pre>
+         * Indicates that (1) the framework is prepared to handle the
+         * following TaskStates: TASK_UNREACHABLE, TASK_DROPPED,
+         * TASK_GONE, TASK_GONE_BY_OPERATOR, and TASK_UNKNOWN, and (2)
+         * the framework will assume responsibility for managing
+         * partitioned tasks that reregister with the master.
+         *
+         * Frameworks that enable this capability can define how they
+         * would like to handle partitioned tasks. Frameworks will
+         * receive TASK_UNREACHABLE for tasks on agents that are
+         * partitioned from the master. If/when a partitioned agent
+         * reregisters, tasks on the agent that were started by
+         * PARTITION_AWARE frameworks will not killed.
+         *
+         * Without this capability, frameworks will receive TASK_LOST
+         * for tasks on partitioned agents; such tasks will be killed by
+         * Mesos when the agent reregisters (unless the master has
+         * failed over).
+         * </pre>
+         */
+        PARTITION_AWARE(5, 5),
+        /**
+         * <code>MULTI_ROLE = 6;</code>
+         *
+         * <pre>
+         * This expresses the ability for the framework to be
+         * "multi-tenant" via using the newly introduced `roles`
+         * field, and examining `Offer.allocation_info` to determine
+         * which role the offers are being made to. We also
+         * expect that "single-tenant" schedulers eventually
+         * provide this and move away from the deprecated
+         * `role` field.
+         * </pre>
+         */
+        MULTI_ROLE(6, 6),
+        /**
+         * <code>RESERVATION_REFINEMENT = 7;</code>
+         *
+         * <pre>
+         * This capability has two effects for a framework.
+         *
+         * (1) The framework is offered resources in a new format.
+         *
+         *     The offered resources have the `Resource.reservations` field set
+         *     rather than `Resource.role` and `Resource.reservation`. In short,
+         *     an empty `reservations` field denotes unreserved resources, and
+         *     each `ReservationInfo` in the `reservations` field denotes a
+         *     reservation that refines the previous one.
+         *
+         *     See the 'Resource Format' section for more details.
+         *
+         * (2) The framework can create refined reservations.
+         *
+         *     A framework can refine an existing reservation via the
+         *     `Resource.reservations` field. For example, a reservation for role
+         *     `eng` can be refined to `eng/front_end`.
+         *
+         *     See `ReservationInfo.reservations` for more details.
+         *
+         * NOTE: Without this capability, a framework is not offered resources
+         * that have refined reservations. A resource is said to have refined
+         * reservations if it uses the `Resource.reservations` field, and
+         * `Resource.reservations_size() &gt; 1`.
+         * </pre>
+         */
+        RESERVATION_REFINEMENT(7, 7),
+        /**
+         * <code>REGION_AWARE = 8;</code>
+         *
+         * <pre>
+         * Indicates that the framework is prepared to receive offers
+         * for agents whose region is different from the master's
+         * region. Network links between hosts in different regions
+         * typically have higher latency and lower bandwidth than
+         * network links within a region, so frameworks should be
+         * careful to only place suitable workloads in remote regions.
+         * Frameworks that are not region-aware will never receive
+         * offers for remote agents; region-aware frameworks are assumed
+         * to implement their own logic to decide which workloads (if
+         * any) are suitable for placement on remote agents.
+         * </pre>
+         */
+        REGION_AWARE(8, 8),
+        ;
+
+        /**
+         * <code>UNKNOWN = 0;</code>
+         *
+         * <pre>
+         * This must be the first enum value in this list, to
+         * ensure that if 'type' is not set, the default value
+         * is UNKNOWN. This enables enum values to be added
+         * in a backwards-compatible way. See: MESOS-4997.
+         * </pre>
+         */
+        public static final int UNKNOWN_VALUE = 0;
+        /**
+         * <code>REVOCABLE_RESOURCES = 1;</code>
+         *
+         * <pre>
+         * Receive offers with revocable resources. See 'Resource'
+         * message for details.
+         * </pre>
+         */
+        public static final int REVOCABLE_RESOURCES_VALUE = 1;
+        /**
+         * <code>TASK_KILLING_STATE = 2;</code>
+         *
+         * <pre>
+         * Receive the TASK_KILLING TaskState when a task is being
+         * killed by an executor. The executor will examine this
+         * capability to determine whether it can send TASK_KILLING.
+         * </pre>
+         */
+        public static final int TASK_KILLING_STATE_VALUE = 2;
+        /**
+         * <code>GPU_RESOURCES = 3;</code>
+         *
+         * <pre>
+         * Indicates whether the framework is aware of GPU resources.
+         * Frameworks that are aware of GPU resources are expected to
+         * avoid placing non-GPU workloads on GPU agents, in order
+         * to avoid occupying a GPU agent and preventing GPU workloads
+         * from running! Currently, if a framework is unaware of GPU
+         * resources, it will not be offered *any* of the resources on
+         * an agent with GPUs. This restriction is in place because we
+         * do not have a revocation mechanism that ensures GPU workloads
+         * can evict GPU agent occupants if necessary.
+         *
+         * TODO(bmahler): As we add revocation we can relax the
+         * restriction here. See MESOS-5634 for more information.
+         * </pre>
+         */
+        public static final int GPU_RESOURCES_VALUE = 3;
+        /**
+         * <code>SHARED_RESOURCES = 4;</code>
+         *
+         * <pre>
+         * Receive offers with resources that are shared.
+         * </pre>
+         */
+        public static final int SHARED_RESOURCES_VALUE = 4;
+        /**
+         * <code>PARTITION_AWARE = 5;</code>
+         *
+         * <pre>
+         * Indicates that (1) the framework is prepared to handle the
+         * following TaskStates: TASK_UNREACHABLE, TASK_DROPPED,
+         * TASK_GONE, TASK_GONE_BY_OPERATOR, and TASK_UNKNOWN, and (2)
+         * the framework will assume responsibility for managing
+         * partitioned tasks that reregister with the master.
+         *
+         * Frameworks that enable this capability can define how they
+         * would like to handle partitioned tasks. Frameworks will
+         * receive TASK_UNREACHABLE for tasks on agents that are
+         * partitioned from the master. If/when a partitioned agent
+         * reregisters, tasks on the agent that were started by
+         * PARTITION_AWARE frameworks will not killed.
+         *
+         * Without this capability, frameworks will receive TASK_LOST
+         * for tasks on partitioned agents; such tasks will be killed by
+         * Mesos when the agent reregisters (unless the master has
+         * failed over).
+         * </pre>
+         */
+        public static final int PARTITION_AWARE_VALUE = 5;
+        /**
+         * <code>MULTI_ROLE = 6;</code>
+         *
+         * <pre>
+         * This expresses the ability for the framework to be
+         * "multi-tenant" via using the newly introduced `roles`
+         * field, and examining `Offer.allocation_info` to determine
+         * which role the offers are being made to. We also
+         * expect that "single-tenant" schedulers eventually
+         * provide this and move away from the deprecated
+         * `role` field.
+         * </pre>
+         */
+        public static final int MULTI_ROLE_VALUE = 6;
+        /**
+         * <code>RESERVATION_REFINEMENT = 7;</code>
+         *
+         * <pre>
+         * This capability has two effects for a framework.
+         *
+         * (1) The framework is offered resources in a new format.
+         *
+         *     The offered resources have the `Resource.reservations` field set
+         *     rather than `Resource.role` and `Resource.reservation`. In short,
+         *     an empty `reservations` field denotes unreserved resources, and
+         *     each `ReservationInfo` in the `reservations` field denotes a
+         *     reservation that refines the previous one.
+         *
+         *     See the 'Resource Format' section for more details.
+         *
+         * (2) The framework can create refined reservations.
+         *
+         *     A framework can refine an existing reservation via the
+         *     `Resource.reservations` field. For example, a reservation for role
+         *     `eng` can be refined to `eng/front_end`.
+         *
+         *     See `ReservationInfo.reservations` for more details.
+         *
+         * NOTE: Without this capability, a framework is not offered resources
+         * that have refined reservations. A resource is said to have refined
+         * reservations if it uses the `Resource.reservations` field, and
+         * `Resource.reservations_size() &gt; 1`.
+         * </pre>
+         */
+        public static final int RESERVATION_REFINEMENT_VALUE = 7;
+        /**
+         * <code>REGION_AWARE = 8;</code>
+         *
+         * <pre>
+         * Indicates that the framework is prepared to receive offers
+         * for agents whose region is different from the master's
+         * region. Network links between hosts in different regions
+         * typically have higher latency and lower bandwidth than
+         * network links within a region, so frameworks should be
+         * careful to only place suitable workloads in remote regions.
+         * Frameworks that are not region-aware will never receive
+         * offers for remote agents; region-aware frameworks are assumed
+         * to implement their own logic to decide which workloads (if
+         * any) are suitable for placement on remote agents.
+         * </pre>
+         */
+        public static final int REGION_AWARE_VALUE = 8;
+
+
+        public final int getNumber() { return value; }
+
+        public static Type valueOf(int value) {
+          switch (value) {
+            case 0: return UNKNOWN;
+            case 1: return REVOCABLE_RESOURCES;
+            case 2: return TASK_KILLING_STATE;
+            case 3: return GPU_RESOURCES;
+            case 4: return SHARED_RESOURCES;
+            case 5: return PARTITION_AWARE;
+            case 6: return MULTI_ROLE;
+            case 7: return RESERVATION_REFINEMENT;
+            case 8: return REGION_AWARE;
+            default: return null;
+          }
+        }
+
+        public static com.google.protobuf.Internal.EnumLiteMap<Type>
+            internalGetValueMap() {
+          return internalValueMap;
+        }
+        private static com.google.protobuf.Internal.EnumLiteMap<Type>
+            internalValueMap =
+              new com.google.protobuf.Internal.EnumLiteMap<Type>() {
+                public Type findValueByNumber(int number) {
+                  return Type.valueOf(number);
+                }
+              };
+
+        public final com.google.protobuf.Descriptors.EnumValueDescriptor
+            getValueDescriptor() {
+          return getDescriptor().getValues().get(index);
+        }
+        public final com.google.protobuf.Descriptors.EnumDescriptor
+            getDescriptorForType() {
+          return getDescriptor();
+        }
+        public static final com.google.protobuf.Descriptors.EnumDescriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.FrameworkInfo.Capability.getDescriptor().getEnumTypes().get(0);
+        }
+
+        private static final Type[] VALUES = values();
+
+        public static Type valueOf(
+            com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+          if (desc.getType() != getDescriptor()) {
+            throw new java.lang.IllegalArgumentException(
+              "EnumValueDescriptor is not for this type.");
+          }
+          return VALUES[desc.getIndex()];
+        }
+
+        private final int index;
+        private final int value;
+
+        private Type(int index, int value) {
+          this.index = index;
+          this.value = value;
+        }
+
+        // @@protoc_insertion_point(enum_scope:mesos.v1.FrameworkInfo.Capability.Type)
+      }
+
+      private int bitField0_;
+      // optional .mesos.v1.FrameworkInfo.Capability.Type type = 1;
+      public static final int TYPE_FIELD_NUMBER = 1;
+      private org.apache.mesos.v1.Protos.FrameworkInfo.Capability.Type type_;
+      /**
+       * <code>optional .mesos.v1.FrameworkInfo.Capability.Type type = 1;</code>
+       *
+       * <pre>
+       * Enum fields should be optional, see: MESOS-4997.
+       * </pre>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.v1.FrameworkInfo.Capability.Type type = 1;</code>
+       *
+       * <pre>
+       * Enum fields should be optional, see: MESOS-4997.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.FrameworkInfo.Capability.Type getType() {
+        return type_;
+      }
+
+      private void initFields() {
+        type_ = org.apache.mesos.v1.Protos.FrameworkInfo.Capability.Type.UNKNOWN;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeEnum(1, type_.getNumber());
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeEnumSize(1, type_.getNumber());
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.Protos.FrameworkInfo.Capability parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.FrameworkInfo.Capability parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.FrameworkInfo.Capability parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.FrameworkInfo.Capability parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.FrameworkInfo.Capability parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.FrameworkInfo.Capability parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.FrameworkInfo.Capability parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.FrameworkInfo.Capability parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.FrameworkInfo.Capability parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.FrameworkInfo.Capability parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.Protos.FrameworkInfo.Capability prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.FrameworkInfo.Capability}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.Protos.FrameworkInfo.CapabilityOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_FrameworkInfo_Capability_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_FrameworkInfo_Capability_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.FrameworkInfo.Capability.class, org.apache.mesos.v1.Protos.FrameworkInfo.Capability.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.Protos.FrameworkInfo.Capability.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          type_ = org.apache.mesos.v1.Protos.FrameworkInfo.Capability.Type.UNKNOWN;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_FrameworkInfo_Capability_descriptor;
+        }
+
+        public org.apache.mesos.v1.Protos.FrameworkInfo.Capability getDefaultInstanceForType() {
+          return org.apache.mesos.v1.Protos.FrameworkInfo.Capability.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.Protos.FrameworkInfo.Capability build() {
+          org.apache.mesos.v1.Protos.FrameworkInfo.Capability result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.Protos.FrameworkInfo.Capability buildPartial() {
+          org.apache.mesos.v1.Protos.FrameworkInfo.Capability result = new org.apache.mesos.v1.Protos.FrameworkInfo.Capability(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.type_ = type_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.Protos.FrameworkInfo.Capability) {
+            return mergeFrom((org.apache.mesos.v1.Protos.FrameworkInfo.Capability)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.Protos.FrameworkInfo.Capability other) {
+          if (other == org.apache.mesos.v1.Protos.FrameworkInfo.Capability.getDefaultInstance()) return this;
+          if (other.hasType()) {
+            setType(other.getType());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.Protos.FrameworkInfo.Capability parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.Protos.FrameworkInfo.Capability) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // optional .mesos.v1.FrameworkInfo.Capability.Type type = 1;
+        private org.apache.mesos.v1.Protos.FrameworkInfo.Capability.Type type_ = org.apache.mesos.v1.Protos.FrameworkInfo.Capability.Type.UNKNOWN;
+        /**
+         * <code>optional .mesos.v1.FrameworkInfo.Capability.Type type = 1;</code>
+         *
+         * <pre>
+         * Enum fields should be optional, see: MESOS-4997.
+         * </pre>
+         */
+        public boolean hasType() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional .mesos.v1.FrameworkInfo.Capability.Type type = 1;</code>
+         *
+         * <pre>
+         * Enum fields should be optional, see: MESOS-4997.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.FrameworkInfo.Capability.Type getType() {
+          return type_;
+        }
+        /**
+         * <code>optional .mesos.v1.FrameworkInfo.Capability.Type type = 1;</code>
+         *
+         * <pre>
+         * Enum fields should be optional, see: MESOS-4997.
+         * </pre>
+         */
+        public Builder setType(org.apache.mesos.v1.Protos.FrameworkInfo.Capability.Type value) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          bitField0_ |= 0x00000001;
+          type_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.FrameworkInfo.Capability.Type type = 1;</code>
+         *
+         * <pre>
+         * Enum fields should be optional, see: MESOS-4997.
+         * </pre>
+         */
+        public Builder clearType() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          type_ = org.apache.mesos.v1.Protos.FrameworkInfo.Capability.Type.UNKNOWN;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.FrameworkInfo.Capability)
+      }
+
+      static {
+        defaultInstance = new Capability(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.FrameworkInfo.Capability)
+    }
+
+    private int bitField0_;
+    // required string user = 1;
+    public static final int USER_FIELD_NUMBER = 1;
+    private java.lang.Object user_;
+    /**
+     * <code>required string user = 1;</code>
+     *
+     * <pre>
+     * Used to determine the Unix user that an executor or task should be
+     * launched as.
+     *
+     * When using the MesosSchedulerDriver, if the field is set to an
+     * empty string, it will automagically set it to the current user.
+     *
+     * When using the HTTP Scheduler API, the user has to be set
+     * explicitly.
+     * </pre>
+     */
+    public boolean hasUser() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string user = 1;</code>
+     *
+     * <pre>
+     * Used to determine the Unix user that an executor or task should be
+     * launched as.
+     *
+     * When using the MesosSchedulerDriver, if the field is set to an
+     * empty string, it will automagically set it to the current user.
+     *
+     * When using the HTTP Scheduler API, the user has to be set
+     * explicitly.
+     * </pre>
+     */
+    public java.lang.String getUser() {
+      java.lang.Object ref = user_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          user_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string user = 1;</code>
+     *
+     * <pre>
+     * Used to determine the Unix user that an executor or task should be
+     * launched as.
+     *
+     * When using the MesosSchedulerDriver, if the field is set to an
+     * empty string, it will automagically set it to the current user.
+     *
+     * When using the HTTP Scheduler API, the user has to be set
+     * explicitly.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getUserBytes() {
+      java.lang.Object ref = user_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        user_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // required string name = 2;
+    public static final int NAME_FIELD_NUMBER = 2;
+    private java.lang.Object name_;
+    /**
+     * <code>required string name = 2;</code>
+     *
+     * <pre>
+     * Name of the framework that shows up in the Mesos Web UI.
+     * </pre>
+     */
+    public boolean hasName() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>required string name = 2;</code>
+     *
+     * <pre>
+     * Name of the framework that shows up in the Mesos Web UI.
+     * </pre>
+     */
+    public java.lang.String getName() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          name_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string name = 2;</code>
+     *
+     * <pre>
+     * Name of the framework that shows up in the Mesos Web UI.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getNameBytes() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        name_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional .mesos.v1.FrameworkID id = 3;
+    public static final int ID_FIELD_NUMBER = 3;
+    private org.apache.mesos.v1.Protos.FrameworkID id_;
+    /**
+     * <code>optional .mesos.v1.FrameworkID id = 3;</code>
+     *
+     * <pre>
+     * Note that 'id' is only available after a framework has
+     * registered, however, it is included here in order to facilitate
+     * scheduler failover (i.e., if it is set then the
+     * MesosSchedulerDriver expects the scheduler is performing
+     * failover).
+     * </pre>
+     */
+    public boolean hasId() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional .mesos.v1.FrameworkID id = 3;</code>
+     *
+     * <pre>
+     * Note that 'id' is only available after a framework has
+     * registered, however, it is included here in order to facilitate
+     * scheduler failover (i.e., if it is set then the
+     * MesosSchedulerDriver expects the scheduler is performing
+     * failover).
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.FrameworkID getId() {
+      return id_;
+    }
+    /**
+     * <code>optional .mesos.v1.FrameworkID id = 3;</code>
+     *
+     * <pre>
+     * Note that 'id' is only available after a framework has
+     * registered, however, it is included here in order to facilitate
+     * scheduler failover (i.e., if it is set then the
+     * MesosSchedulerDriver expects the scheduler is performing
+     * failover).
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.FrameworkIDOrBuilder getIdOrBuilder() {
+      return id_;
+    }
+
+    // optional double failover_timeout = 4 [default = 0];
+    public static final int FAILOVER_TIMEOUT_FIELD_NUMBER = 4;
+    private double failoverTimeout_;
+    /**
+     * <code>optional double failover_timeout = 4 [default = 0];</code>
+     *
+     * <pre>
+     * The amount of time (in seconds) that the master will wait for the
+     * scheduler to failover before it tears down the framework by
+     * killing all its tasks/executors. This should be non-zero if a
+     * framework expects to reconnect after a failure and not lose its
+     * tasks/executors.
+     *
+     * NOTE: To avoid accidental destruction of tasks, production
+     * frameworks typically set this to a large value (e.g., 1 week).
+     * </pre>
+     */
+    public boolean hasFailoverTimeout() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional double failover_timeout = 4 [default = 0];</code>
+     *
+     * <pre>
+     * The amount of time (in seconds) that the master will wait for the
+     * scheduler to failover before it tears down the framework by
+     * killing all its tasks/executors. This should be non-zero if a
+     * framework expects to reconnect after a failure and not lose its
+     * tasks/executors.
+     *
+     * NOTE: To avoid accidental destruction of tasks, production
+     * frameworks typically set this to a large value (e.g., 1 week).
+     * </pre>
+     */
+    public double getFailoverTimeout() {
+      return failoverTimeout_;
+    }
+
+    // optional bool checkpoint = 5 [default = false];
+    public static final int CHECKPOINT_FIELD_NUMBER = 5;
+    private boolean checkpoint_;
+    /**
+     * <code>optional bool checkpoint = 5 [default = false];</code>
+     *
+     * <pre>
+     * If set, agents running tasks started by this framework will write
+     * the framework pid, executor pids and status updates to disk. If
+     * the agent exits (e.g., due to a crash or as part of upgrading
+     * Mesos), this checkpointed data allows the restarted agent to
+     * reconnect to executors that were started by the old instance of
+     * the agent. Enabling checkpointing improves fault tolerance, at
+     * the cost of a (usually small) increase in disk I/O.
+     * </pre>
+     */
+    public boolean hasCheckpoint() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional bool checkpoint = 5 [default = false];</code>
+     *
+     * <pre>
+     * If set, agents running tasks started by this framework will write
+     * the framework pid, executor pids and status updates to disk. If
+     * the agent exits (e.g., due to a crash or as part of upgrading
+     * Mesos), this checkpointed data allows the restarted agent to
+     * reconnect to executors that were started by the old instance of
+     * the agent. Enabling checkpointing improves fault tolerance, at
+     * the cost of a (usually small) increase in disk I/O.
+     * </pre>
+     */
+    public boolean getCheckpoint() {
+      return checkpoint_;
+    }
+
+    // optional string role = 6 [default = "*", deprecated = true];
+    public static final int ROLE_FIELD_NUMBER = 6;
+    private java.lang.Object role_;
+    /**
+     * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+     *
+     * <pre>
+     * Roles are the entities to which allocations are made.
+     * The framework must have at least one role in order to
+     * be offered resources. Note that `role` is deprecated
+     * in favor of `roles` and only one of these fields must
+     * be used. Since we cannot distinguish between empty
+     * `roles` and the default unset `role`, we require that
+     * frameworks set the `MULTI_ROLE` capability if
+     * setting the `roles` field.
+     * </pre>
+     */
+    @java.lang.Deprecated public boolean hasRole() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+     *
+     * <pre>
+     * Roles are the entities to which allocations are made.
+     * The framework must have at least one role in order to
+     * be offered resources. Note that `role` is deprecated
+     * in favor of `roles` and only one of these fields must
+     * be used. Since we cannot distinguish between empty
+     * `roles` and the default unset `role`, we require that
+     * frameworks set the `MULTI_ROLE` capability if
+     * setting the `roles` field.
+     * </pre>
+     */
+    @java.lang.Deprecated public java.lang.String getRole() {
+      java.lang.Object ref = role_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          role_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+     *
+     * <pre>
+     * Roles are the entities to which allocations are made.
+     * The framework must have at least one role in order to
+     * be offered resources. Note that `role` is deprecated
+     * in favor of `roles` and only one of these fields must
+     * be used. Since we cannot distinguish between empty
+     * `roles` and the default unset `role`, we require that
+     * frameworks set the `MULTI_ROLE` capability if
+     * setting the `roles` field.
+     * </pre>
+     */
+    @java.lang.Deprecated public com.google.protobuf.ByteString
+        getRoleBytes() {
+      java.lang.Object ref = role_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        role_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // repeated string roles = 12;
+    public static final int ROLES_FIELD_NUMBER = 12;
+    private com.google.protobuf.LazyStringList roles_;
+    /**
+     * <code>repeated string roles = 12;</code>
+     */
+    public java.util.List<java.lang.String>
+        getRolesList() {
+      return roles_;
+    }
+    /**
+     * <code>repeated string roles = 12;</code>
+     */
+    public int getRolesCount() {
+      return roles_.size();
+    }
+    /**
+     * <code>repeated string roles = 12;</code>
+     */
+    public java.lang.String getRoles(int index) {
+      return roles_.get(index);
+    }
+    /**
+     * <code>repeated string roles = 12;</code>
+     */
+    public com.google.protobuf.ByteString
+        getRolesBytes(int index) {
+      return roles_.getByteString(index);
+    }
+
+    // optional string hostname = 7;
+    public static final int HOSTNAME_FIELD_NUMBER = 7;
+    private java.lang.Object hostname_;
+    /**
+     * <code>optional string hostname = 7;</code>
+     *
+     * <pre>
+     * Used to indicate the current host from which the scheduler is
+     * registered in the Mesos Web UI. If set to an empty string Mesos
+     * will automagically set it to the current hostname if one is
+     * available.
+     * </pre>
+     */
+    public boolean hasHostname() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional string hostname = 7;</code>
+     *
+     * <pre>
+     * Used to indicate the current host from which the scheduler is
+     * registered in the Mesos Web UI. If set to an empty string Mesos
+     * will automagically set it to the current hostname if one is
+     * available.
+     * </pre>
+     */
+    public java.lang.String getHostname() {
+      java.lang.Object ref = hostname_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          hostname_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string hostname = 7;</code>
+     *
+     * <pre>
+     * Used to indicate the current host from which the scheduler is
+     * registered in the Mesos Web UI. If set to an empty string Mesos
+     * will automagically set it to the current hostname if one is
+     * available.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getHostnameBytes() {
+      java.lang.Object ref = hostname_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        hostname_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional string principal = 8;
+    public static final int PRINCIPAL_FIELD_NUMBER = 8;
+    private java.lang.Object principal_;
+    /**
+     * <code>optional string principal = 8;</code>
+     *
+     * <pre>
+     * This field should match the credential's principal the framework
+     * uses for authentication. This field is used for framework API
+     * rate limiting and dynamic reservations. It should be set even
+     * if authentication is not enabled if these features are desired.
+     * </pre>
+     */
+    public boolean hasPrincipal() {
+      return ((bitField0_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional string principal = 8;</code>
+     *
+     * <pre>
+     * This field should match the credential's principal the framework
+     * uses for authentication. This field is used for framework API
+     * rate limiting and dynamic reservations. It should be set even
+     * if authentication is not enabled if these features are desired.
+     * </pre>
+     */
+    public java.lang.String getPrincipal() {
+      java.lang.Object ref = principal_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          principal_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string principal = 8;</code>
+     *
+     * <pre>
+     * This field should match the credential's principal the framework
+     * uses for authentication. This field is used for framework API
+     * rate limiting and dynamic reservations. It should be set even
+     * if authentication is not enabled if these features are desired.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getPrincipalBytes() {
+      java.lang.Object ref = principal_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        principal_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional string webui_url = 9;
+    public static final int WEBUI_URL_FIELD_NUMBER = 9;
+    private java.lang.Object webuiUrl_;
+    /**
+     * <code>optional string webui_url = 9;</code>
+     *
+     * <pre>
+     * This field allows a framework to advertise its web UI, so that
+     * the Mesos web UI can link to it. It is expected to be a full URL,
+     * for example http://my-scheduler.example.com:8080/.
+     * </pre>
+     */
+    public boolean hasWebuiUrl() {
+      return ((bitField0_ & 0x00000100) == 0x00000100);
+    }
+    /**
+     * <code>optional string webui_url = 9;</code>
+     *
+     * <pre>
+     * This field allows a framework to advertise its web UI, so that
+     * the Mesos web UI can link to it. It is expected to be a full URL,
+     * for example http://my-scheduler.example.com:8080/.
+     * </pre>
+     */
+    public java.lang.String getWebuiUrl() {
+      java.lang.Object ref = webuiUrl_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          webuiUrl_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string webui_url = 9;</code>
+     *
+     * <pre>
+     * This field allows a framework to advertise its web UI, so that
+     * the Mesos web UI can link to it. It is expected to be a full URL,
+     * for example http://my-scheduler.example.com:8080/.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getWebuiUrlBytes() {
+      java.lang.Object ref = webuiUrl_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        webuiUrl_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // repeated .mesos.v1.FrameworkInfo.Capability capabilities = 10;
+    public static final int CAPABILITIES_FIELD_NUMBER = 10;
+    private java.util.List<org.apache.mesos.v1.Protos.FrameworkInfo.Capability> capabilities_;
+    /**
+     * <code>repeated .mesos.v1.FrameworkInfo.Capability capabilities = 10;</code>
+     *
+     * <pre>
+     * This field allows a framework to advertise its set of
+     * capabilities (e.g., ability to receive offers for revocable
+     * resources).
+     * </pre>
+     */
+    public java.util.List<org.apache.mesos.v1.Protos.FrameworkInfo.Capability> getCapabilitiesList() {
+      return capabilities_;
+    }
+    /**
+     * <code>repeated .mesos.v1.FrameworkInfo.Capability capabilities = 10;</code>
+     *
+     * <pre>
+     * This field allows a framework to advertise its set of
+     * capabilities (e.g., ability to receive offers for revocable
+     * resources).
+     * </pre>
+     */
+    public java.util.List<? extends org.apache.mesos.v1.Protos.FrameworkInfo.CapabilityOrBuilder> 
+        getCapabilitiesOrBuilderList() {
+      return capabilities_;
+    }
+    /**
+     * <code>repeated .mesos.v1.FrameworkInfo.Capability capabilities = 10;</code>
+     *
+     * <pre>
+     * This field allows a framework to advertise its set of
+     * capabilities (e.g., ability to receive offers for revocable
+     * resources).
+     * </pre>
+     */
+    public int getCapabilitiesCount() {
+      return capabilities_.size();
+    }
+    /**
+     * <code>repeated .mesos.v1.FrameworkInfo.Capability capabilities = 10;</code>
+     *
+     * <pre>
+     * This field allows a framework to advertise its set of
+     * capabilities (e.g., ability to receive offers for revocable
+     * resources).
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.FrameworkInfo.Capability getCapabilities(int index) {
+      return capabilities_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.v1.FrameworkInfo.Capability capabilities = 10;</code>
+     *
+     * <pre>
+     * This field allows a framework to advertise its set of
+     * capabilities (e.g., ability to receive offers for revocable
+     * resources).
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.FrameworkInfo.CapabilityOrBuilder getCapabilitiesOrBuilder(
+        int index) {
+      return capabilities_.get(index);
+    }
+
+    // optional .mesos.v1.Labels labels = 11;
+    public static final int LABELS_FIELD_NUMBER = 11;
+    private org.apache.mesos.v1.Protos.Labels labels_;
+    /**
+     * <code>optional .mesos.v1.Labels labels = 11;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs supplied by the framework
+     * scheduler (e.g., to describe additional functionality offered by
+     * the framework). These labels are not interpreted by Mesos itself.
+     * Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    public boolean hasLabels() {
+      return ((bitField0_ & 0x00000200) == 0x00000200);
+    }
+    /**
+     * <code>optional .mesos.v1.Labels labels = 11;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs supplied by the framework
+     * scheduler (e.g., to describe additional functionality offered by
+     * the framework). These labels are not interpreted by Mesos itself.
+     * Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.Labels getLabels() {
+      return labels_;
+    }
+    /**
+     * <code>optional .mesos.v1.Labels labels = 11;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs supplied by the framework
+     * scheduler (e.g., to describe additional functionality offered by
+     * the framework). These labels are not interpreted by Mesos itself.
+     * Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+      return labels_;
+    }
+
+    private void initFields() {
+      user_ = "";
+      name_ = "";
+      id_ = org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance();
+      failoverTimeout_ = 0D;
+      checkpoint_ = false;
+      role_ = "*";
+      roles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+      hostname_ = "";
+      principal_ = "";
+      webuiUrl_ = "";
+      capabilities_ = java.util.Collections.emptyList();
+      labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasUser()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasName()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (hasId()) {
+        if (!getId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasLabels()) {
+        if (!getLabels().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getUserBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(2, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeMessage(3, id_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeDouble(4, failoverTimeout_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeBool(5, checkpoint_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeBytes(6, getRoleBytes());
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeBytes(7, getHostnameBytes());
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        output.writeBytes(8, getPrincipalBytes());
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        output.writeBytes(9, getWebuiUrlBytes());
+      }
+      for (int i = 0; i < capabilities_.size(); i++) {
+        output.writeMessage(10, capabilities_.get(i));
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        output.writeMessage(11, labels_);
+      }
+      for (int i = 0; i < roles_.size(); i++) {
+        output.writeBytes(12, roles_.getByteString(i));
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getUserBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(2, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, id_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(4, failoverTimeout_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(5, checkpoint_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(6, getRoleBytes());
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(7, getHostnameBytes());
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(8, getPrincipalBytes());
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(9, getWebuiUrlBytes());
+      }
+      for (int i = 0; i < capabilities_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(10, capabilities_.get(i));
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(11, labels_);
+      }
+      {
+        int dataSize = 0;
+        for (int i = 0; i < roles_.size(); i++) {
+          dataSize += com.google.protobuf.CodedOutputStream
+            .computeBytesSizeNoTag(roles_.getByteString(i));
+        }
+        size += dataSize;
+        size += 1 * getRolesList().size();
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.FrameworkInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.FrameworkInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.FrameworkInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.FrameworkInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.FrameworkInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.FrameworkInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.FrameworkInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.FrameworkInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.FrameworkInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.FrameworkInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.FrameworkInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.FrameworkInfo}
+     *
+     * <pre>
+     **
+     * Describes a framework.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.FrameworkInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_FrameworkInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_FrameworkInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.FrameworkInfo.class, org.apache.mesos.v1.Protos.FrameworkInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.FrameworkInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getIdFieldBuilder();
+          getCapabilitiesFieldBuilder();
+          getLabelsFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        user_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        name_ = "";
+        bitField0_ = (bitField0_ & ~0x00000002);
+        if (idBuilder_ == null) {
+          id_ = org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance();
+        } else {
+          idBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        failoverTimeout_ = 0D;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        checkpoint_ = false;
+        bitField0_ = (bitField0_ & ~0x00000010);
+        role_ = "*";
+        bitField0_ = (bitField0_ & ~0x00000020);
+        roles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+        bitField0_ = (bitField0_ & ~0x00000040);
+        hostname_ = "";
+        bitField0_ = (bitField0_ & ~0x00000080);
+        principal_ = "";
+        bitField0_ = (bitField0_ & ~0x00000100);
+        webuiUrl_ = "";
+        bitField0_ = (bitField0_ & ~0x00000200);
+        if (capabilitiesBuilder_ == null) {
+          capabilities_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000400);
+        } else {
+          capabilitiesBuilder_.clear();
+        }
+        if (labelsBuilder_ == null) {
+          labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+        } else {
+          labelsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000800);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_FrameworkInfo_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.FrameworkInfo getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.FrameworkInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.FrameworkInfo build() {
+        org.apache.mesos.v1.Protos.FrameworkInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.FrameworkInfo buildPartial() {
+        org.apache.mesos.v1.Protos.FrameworkInfo result = new org.apache.mesos.v1.Protos.FrameworkInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.user_ = user_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.name_ = name_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        if (idBuilder_ == null) {
+          result.id_ = id_;
+        } else {
+          result.id_ = idBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.failoverTimeout_ = failoverTimeout_;
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.checkpoint_ = checkpoint_;
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        result.role_ = role_;
+        if (((bitField0_ & 0x00000040) == 0x00000040)) {
+          roles_ = new com.google.protobuf.UnmodifiableLazyStringList(
+              roles_);
+          bitField0_ = (bitField0_ & ~0x00000040);
+        }
+        result.roles_ = roles_;
+        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        result.hostname_ = hostname_;
+        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
+          to_bitField0_ |= 0x00000080;
+        }
+        result.principal_ = principal_;
+        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
+          to_bitField0_ |= 0x00000100;
+        }
+        result.webuiUrl_ = webuiUrl_;
+        if (capabilitiesBuilder_ == null) {
+          if (((bitField0_ & 0x00000400) == 0x00000400)) {
+            capabilities_ = java.util.Collections.unmodifiableList(capabilities_);
+            bitField0_ = (bitField0_ & ~0x00000400);
+          }
+          result.capabilities_ = capabilities_;
+        } else {
+          result.capabilities_ = capabilitiesBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
+          to_bitField0_ |= 0x00000200;
+        }
+        if (labelsBuilder_ == null) {
+          result.labels_ = labels_;
+        } else {
+          result.labels_ = labelsBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.FrameworkInfo) {
+          return mergeFrom((org.apache.mesos.v1.Protos.FrameworkInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.FrameworkInfo other) {
+        if (other == org.apache.mesos.v1.Protos.FrameworkInfo.getDefaultInstance()) return this;
+        if (other.hasUser()) {
+          bitField0_ |= 0x00000001;
+          user_ = other.user_;
+          onChanged();
+        }
+        if (other.hasName()) {
+          bitField0_ |= 0x00000002;
+          name_ = other.name_;
+          onChanged();
+        }
+        if (other.hasId()) {
+          mergeId(other.getId());
+        }
+        if (other.hasFailoverTimeout()) {
+          setFailoverTimeout(other.getFailoverTimeout());
+        }
+        if (other.hasCheckpoint()) {
+          setCheckpoint(other.getCheckpoint());
+        }
+        if (other.hasRole()) {
+          bitField0_ |= 0x00000020;
+          role_ = other.role_;
+          onChanged();
+        }
+        if (!other.roles_.isEmpty()) {
+          if (roles_.isEmpty()) {
+            roles_ = other.roles_;
+            bitField0_ = (bitField0_ & ~0x00000040);
+          } else {
+            ensureRolesIsMutable();
+            roles_.addAll(other.roles_);
+          }
+          onChanged();
+        }
+        if (other.hasHostname()) {
+          bitField0_ |= 0x00000080;
+          hostname_ = other.hostname_;
+          onChanged();
+        }
+        if (other.hasPrincipal()) {
+          bitField0_ |= 0x00000100;
+          principal_ = other.principal_;
+          onChanged();
+        }
+        if (other.hasWebuiUrl()) {
+          bitField0_ |= 0x00000200;
+          webuiUrl_ = other.webuiUrl_;
+          onChanged();
+        }
+        if (capabilitiesBuilder_ == null) {
+          if (!other.capabilities_.isEmpty()) {
+            if (capabilities_.isEmpty()) {
+              capabilities_ = other.capabilities_;
+              bitField0_ = (bitField0_ & ~0x00000400);
+            } else {
+              ensureCapabilitiesIsMutable();
+              capabilities_.addAll(other.capabilities_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.capabilities_.isEmpty()) {
+            if (capabilitiesBuilder_.isEmpty()) {
+              capabilitiesBuilder_.dispose();
+              capabilitiesBuilder_ = null;
+              capabilities_ = other.capabilities_;
+              bitField0_ = (bitField0_ & ~0x00000400);
+              capabilitiesBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getCapabilitiesFieldBuilder() : null;
+            } else {
+              capabilitiesBuilder_.addAllMessages(other.capabilities_);
+            }
+          }
+        }
+        if (other.hasLabels()) {
+          mergeLabels(other.getLabels());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasUser()) {
+          
+          return false;
+        }
+        if (!hasName()) {
+          
+          return false;
+        }
+        if (hasId()) {
+          if (!getId().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasLabels()) {
+          if (!getLabels().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.FrameworkInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.FrameworkInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string user = 1;
+      private java.lang.Object user_ = "";
+      /**
+       * <code>required string user = 1;</code>
+       *
+       * <pre>
+       * Used to determine the Unix user that an executor or task should be
+       * launched as.
+       *
+       * When using the MesosSchedulerDriver, if the field is set to an
+       * empty string, it will automagically set it to the current user.
+       *
+       * When using the HTTP Scheduler API, the user has to be set
+       * explicitly.
+       * </pre>
+       */
+      public boolean hasUser() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string user = 1;</code>
+       *
+       * <pre>
+       * Used to determine the Unix user that an executor or task should be
+       * launched as.
+       *
+       * When using the MesosSchedulerDriver, if the field is set to an
+       * empty string, it will automagically set it to the current user.
+       *
+       * When using the HTTP Scheduler API, the user has to be set
+       * explicitly.
+       * </pre>
+       */
+      public java.lang.String getUser() {
+        java.lang.Object ref = user_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          user_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string user = 1;</code>
+       *
+       * <pre>
+       * Used to determine the Unix user that an executor or task should be
+       * launched as.
+       *
+       * When using the MesosSchedulerDriver, if the field is set to an
+       * empty string, it will automagically set it to the current user.
+       *
+       * When using the HTTP Scheduler API, the user has to be set
+       * explicitly.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getUserBytes() {
+        java.lang.Object ref = user_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          user_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string user = 1;</code>
+       *
+       * <pre>
+       * Used to determine the Unix user that an executor or task should be
+       * launched as.
+       *
+       * When using the MesosSchedulerDriver, if the field is set to an
+       * empty string, it will automagically set it to the current user.
+       *
+       * When using the HTTP Scheduler API, the user has to be set
+       * explicitly.
+       * </pre>
+       */
+      public Builder setUser(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        user_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string user = 1;</code>
+       *
+       * <pre>
+       * Used to determine the Unix user that an executor or task should be
+       * launched as.
+       *
+       * When using the MesosSchedulerDriver, if the field is set to an
+       * empty string, it will automagically set it to the current user.
+       *
+       * When using the HTTP Scheduler API, the user has to be set
+       * explicitly.
+       * </pre>
+       */
+      public Builder clearUser() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        user_ = getDefaultInstance().getUser();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string user = 1;</code>
+       *
+       * <pre>
+       * Used to determine the Unix user that an executor or task should be
+       * launched as.
+       *
+       * When using the MesosSchedulerDriver, if the field is set to an
+       * empty string, it will automagically set it to the current user.
+       *
+       * When using the HTTP Scheduler API, the user has to be set
+       * explicitly.
+       * </pre>
+       */
+      public Builder setUserBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        user_ = value;
+        onChanged();
+        return this;
+      }
+
+      // required string name = 2;
+      private java.lang.Object name_ = "";
+      /**
+       * <code>required string name = 2;</code>
+       *
+       * <pre>
+       * Name of the framework that shows up in the Mesos Web UI.
+       * </pre>
+       */
+      public boolean hasName() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required string name = 2;</code>
+       *
+       * <pre>
+       * Name of the framework that shows up in the Mesos Web UI.
+       * </pre>
+       */
+      public java.lang.String getName() {
+        java.lang.Object ref = name_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          name_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string name = 2;</code>
+       *
+       * <pre>
+       * Name of the framework that shows up in the Mesos Web UI.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        java.lang.Object ref = name_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          name_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string name = 2;</code>
+       *
+       * <pre>
+       * Name of the framework that shows up in the Mesos Web UI.
+       * </pre>
+       */
+      public Builder setName(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string name = 2;</code>
+       *
+       * <pre>
+       * Name of the framework that shows up in the Mesos Web UI.
+       * </pre>
+       */
+      public Builder clearName() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        name_ = getDefaultInstance().getName();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string name = 2;</code>
+       *
+       * <pre>
+       * Name of the framework that shows up in the Mesos Web UI.
+       * </pre>
+       */
+      public Builder setNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.v1.FrameworkID id = 3;
+      private org.apache.mesos.v1.Protos.FrameworkID id_ = org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.FrameworkID, org.apache.mesos.v1.Protos.FrameworkID.Builder, org.apache.mesos.v1.Protos.FrameworkIDOrBuilder> idBuilder_;
+      /**
+       * <code>optional .mesos.v1.FrameworkID id = 3;</code>
+       *
+       * <pre>
+       * Note that 'id' is only available after a framework has
+       * registered, however, it is included here in order to facilitate
+       * scheduler failover (i.e., if it is set then the
+       * MesosSchedulerDriver expects the scheduler is performing
+       * failover).
+       * </pre>
+       */
+      public boolean hasId() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.v1.FrameworkID id = 3;</code>
+       *
+       * <pre>
+       * Note that 'id' is only available after a framework has
+       * registered, however, it is included here in order to facilitate
+       * scheduler failover (i.e., if it is set then the
+       * MesosSchedulerDriver expects the scheduler is performing
+       * failover).
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.FrameworkID getId() {
+        if (idBuilder_ == null) {
+          return id_;
+        } else {
+          return idBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.FrameworkID id = 3;</code>
+       *
+       * <pre>
+       * Note that 'id' is only available after a framework has
+       * registered, however, it is included here in order to facilitate
+       * scheduler failover (i.e., if it is set then the
+       * MesosSchedulerDriver expects the scheduler is performing
+       * failover).
+       * </pre>
+       */
+      public Builder setId(org.apache.mesos.v1.Protos.FrameworkID value) {
+        if (idBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          id_ = value;
+          onChanged();
+        } else {
+          idBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.FrameworkID id = 3;</code>
+       *
+       * <pre>
+       * Note that 'id' is only available after a framework has
+       * registered, however, it is included here in order to facilitate
+       * scheduler failover (i.e., if it is set then the
+       * MesosSchedulerDriver expects the scheduler is performing
+       * failover).
+       * </pre>
+       */
+      public Builder setId(
+          org.apache.mesos.v1.Protos.FrameworkID.Builder builderForValue) {
+        if (idBuilder_ == null) {
+          id_ = builderForValue.build();
+          onChanged();
+        } else {
+          idBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.FrameworkID id = 3;</code>
+       *
+       * <pre>
+       * Note that 'id' is only available after a framework has
+       * registered, however, it is included here in order to facilitate
+       * scheduler failover (i.e., if it is set then the
+       * MesosSchedulerDriver expects the scheduler is performing
+       * failover).
+       * </pre>
+       */
+      public Builder mergeId(org.apache.mesos.v1.Protos.FrameworkID value) {
+        if (idBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) == 0x00000004) &&
+              id_ != org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance()) {
+            id_ =
+              org.apache.mesos.v1.Protos.FrameworkID.newBuilder(id_).mergeFrom(value).buildPartial();
+          } else {
+            id_ = value;
+          }
+          onChanged();
+        } else {
+          idBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.FrameworkID id = 3;</code>
+       *
+       * <pre>
+       * Note that 'id' is only available after a framework has
+       * registered, however, it is included here in order to facilitate
+       * scheduler failover (i.e., if it is set then the
+       * MesosSchedulerDriver expects the scheduler is performing
+       * failover).
+       * </pre>
+       */
+      public Builder clearId() {
+        if (idBuilder_ == null) {
+          id_ = org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance();
+          onChanged();
+        } else {
+          idBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.FrameworkID id = 3;</code>
+       *
+       * <pre>
+       * Note that 'id' is only available after a framework has
+       * registered, however, it is included here in order to facilitate
+       * scheduler failover (i.e., if it is set then the
+       * MesosSchedulerDriver expects the scheduler is performing
+       * failover).
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.FrameworkID.Builder getIdBuilder() {
+        bitField0_ |= 0x00000004;
+        onChanged();
+        return getIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.FrameworkID id = 3;</code>
+       *
+       * <pre>
+       * Note that 'id' is only available after a framework has
+       * registered, however, it is included here in order to facilitate
+       * scheduler failover (i.e., if it is set then the
+       * MesosSchedulerDriver expects the scheduler is performing
+       * failover).
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.FrameworkIDOrBuilder getIdOrBuilder() {
+        if (idBuilder_ != null) {
+          return idBuilder_.getMessageOrBuilder();
+        } else {
+          return id_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.FrameworkID id = 3;</code>
+       *
+       * <pre>
+       * Note that 'id' is only available after a framework has
+       * registered, however, it is included here in order to facilitate
+       * scheduler failover (i.e., if it is set then the
+       * MesosSchedulerDriver expects the scheduler is performing
+       * failover).
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.FrameworkID, org.apache.mesos.v1.Protos.FrameworkID.Builder, org.apache.mesos.v1.Protos.FrameworkIDOrBuilder> 
+          getIdFieldBuilder() {
+        if (idBuilder_ == null) {
+          idBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.FrameworkID, org.apache.mesos.v1.Protos.FrameworkID.Builder, org.apache.mesos.v1.Protos.FrameworkIDOrBuilder>(
+                  id_,
+                  getParentForChildren(),
+                  isClean());
+          id_ = null;
+        }
+        return idBuilder_;
+      }
+
+      // optional double failover_timeout = 4 [default = 0];
+      private double failoverTimeout_ ;
+      /**
+       * <code>optional double failover_timeout = 4 [default = 0];</code>
+       *
+       * <pre>
+       * The amount of time (in seconds) that the master will wait for the
+       * scheduler to failover before it tears down the framework by
+       * killing all its tasks/executors. This should be non-zero if a
+       * framework expects to reconnect after a failure and not lose its
+       * tasks/executors.
+       *
+       * NOTE: To avoid accidental destruction of tasks, production
+       * frameworks typically set this to a large value (e.g., 1 week).
+       * </pre>
+       */
+      public boolean hasFailoverTimeout() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional double failover_timeout = 4 [default = 0];</code>
+       *
+       * <pre>
+       * The amount of time (in seconds) that the master will wait for the
+       * scheduler to failover before it tears down the framework by
+       * killing all its tasks/executors. This should be non-zero if a
+       * framework expects to reconnect after a failure and not lose its
+       * tasks/executors.
+       *
+       * NOTE: To avoid accidental destruction of tasks, production
+       * frameworks typically set this to a large value (e.g., 1 week).
+       * </pre>
+       */
+      public double getFailoverTimeout() {
+        return failoverTimeout_;
+      }
+      /**
+       * <code>optional double failover_timeout = 4 [default = 0];</code>
+       *
+       * <pre>
+       * The amount of time (in seconds) that the master will wait for the
+       * scheduler to failover before it tears down the framework by
+       * killing all its tasks/executors. This should be non-zero if a
+       * framework expects to reconnect after a failure and not lose its
+       * tasks/executors.
+       *
+       * NOTE: To avoid accidental destruction of tasks, production
+       * frameworks typically set this to a large value (e.g., 1 week).
+       * </pre>
+       */
+      public Builder setFailoverTimeout(double value) {
+        bitField0_ |= 0x00000008;
+        failoverTimeout_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double failover_timeout = 4 [default = 0];</code>
+       *
+       * <pre>
+       * The amount of time (in seconds) that the master will wait for the
+       * scheduler to failover before it tears down the framework by
+       * killing all its tasks/executors. This should be non-zero if a
+       * framework expects to reconnect after a failure and not lose its
+       * tasks/executors.
+       *
+       * NOTE: To avoid accidental destruction of tasks, production
+       * frameworks typically set this to a large value (e.g., 1 week).
+       * </pre>
+       */
+      public Builder clearFailoverTimeout() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        failoverTimeout_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // optional bool checkpoint = 5 [default = false];
+      private boolean checkpoint_ ;
+      /**
+       * <code>optional bool checkpoint = 5 [default = false];</code>
+       *
+       * <pre>
+       * If set, agents running tasks started by this framework will write
+       * the framework pid, executor pids and status updates to disk. If
+       * the agent exits (e.g., due to a crash or as part of upgrading
+       * Mesos), this checkpointed data allows the restarted agent to
+       * reconnect to executors that were started by the old instance of
+       * the agent. Enabling checkpointing improves fault tolerance, at
+       * the cost of a (usually small) increase in disk I/O.
+       * </pre>
+       */
+      public boolean hasCheckpoint() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional bool checkpoint = 5 [default = false];</code>
+       *
+       * <pre>
+       * If set, agents running tasks started by this framework will write
+       * the framework pid, executor pids and status updates to disk. If
+       * the agent exits (e.g., due to a crash or as part of upgrading
+       * Mesos), this checkpointed data allows the restarted agent to
+       * reconnect to executors that were started by the old instance of
+       * the agent. Enabling checkpointing improves fault tolerance, at
+       * the cost of a (usually small) increase in disk I/O.
+       * </pre>
+       */
+      public boolean getCheckpoint() {
+        return checkpoint_;
+      }
+      /**
+       * <code>optional bool checkpoint = 5 [default = false];</code>
+       *
+       * <pre>
+       * If set, agents running tasks started by this framework will write
+       * the framework pid, executor pids and status updates to disk. If
+       * the agent exits (e.g., due to a crash or as part of upgrading
+       * Mesos), this checkpointed data allows the restarted agent to
+       * reconnect to executors that were started by the old instance of
+       * the agent. Enabling checkpointing improves fault tolerance, at
+       * the cost of a (usually small) increase in disk I/O.
+       * </pre>
+       */
+      public Builder setCheckpoint(boolean value) {
+        bitField0_ |= 0x00000010;
+        checkpoint_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional bool checkpoint = 5 [default = false];</code>
+       *
+       * <pre>
+       * If set, agents running tasks started by this framework will write
+       * the framework pid, executor pids and status updates to disk. If
+       * the agent exits (e.g., due to a crash or as part of upgrading
+       * Mesos), this checkpointed data allows the restarted agent to
+       * reconnect to executors that were started by the old instance of
+       * the agent. Enabling checkpointing improves fault tolerance, at
+       * the cost of a (usually small) increase in disk I/O.
+       * </pre>
+       */
+      public Builder clearCheckpoint() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        checkpoint_ = false;
+        onChanged();
+        return this;
+      }
+
+      // optional string role = 6 [default = "*", deprecated = true];
+      private java.lang.Object role_ = "*";
+      /**
+       * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+       *
+       * <pre>
+       * Roles are the entities to which allocations are made.
+       * The framework must have at least one role in order to
+       * be offered resources. Note that `role` is deprecated
+       * in favor of `roles` and only one of these fields must
+       * be used. Since we cannot distinguish between empty
+       * `roles` and the default unset `role`, we require that
+       * frameworks set the `MULTI_ROLE` capability if
+       * setting the `roles` field.
+       * </pre>
+       */
+      @java.lang.Deprecated public boolean hasRole() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+       *
+       * <pre>
+       * Roles are the entities to which allocations are made.
+       * The framework must have at least one role in order to
+       * be offered resources. Note that `role` is deprecated
+       * in favor of `roles` and only one of these fields must
+       * be used. Since we cannot distinguish between empty
+       * `roles` and the default unset `role`, we require that
+       * frameworks set the `MULTI_ROLE` capability if
+       * setting the `roles` field.
+       * </pre>
+       */
+      @java.lang.Deprecated public java.lang.String getRole() {
+        java.lang.Object ref = role_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          role_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+       *
+       * <pre>
+       * Roles are the entities to which allocations are made.
+       * The framework must have at least one role in order to
+       * be offered resources. Note that `role` is deprecated
+       * in favor of `roles` and only one of these fields must
+       * be used. Since we cannot distinguish between empty
+       * `roles` and the default unset `role`, we require that
+       * frameworks set the `MULTI_ROLE` capability if
+       * setting the `roles` field.
+       * </pre>
+       */
+      @java.lang.Deprecated public com.google.protobuf.ByteString
+          getRoleBytes() {
+        java.lang.Object ref = role_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          role_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+       *
+       * <pre>
+       * Roles are the entities to which allocations are made.
+       * The framework must have at least one role in order to
+       * be offered resources. Note that `role` is deprecated
+       * in favor of `roles` and only one of these fields must
+       * be used. Since we cannot distinguish between empty
+       * `roles` and the default unset `role`, we require that
+       * frameworks set the `MULTI_ROLE` capability if
+       * setting the `roles` field.
+       * </pre>
+       */
+      @java.lang.Deprecated public Builder setRole(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000020;
+        role_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+       *
+       * <pre>
+       * Roles are the entities to which allocations are made.
+       * The framework must have at least one role in order to
+       * be offered resources. Note that `role` is deprecated
+       * in favor of `roles` and only one of these fields must
+       * be used. Since we cannot distinguish between empty
+       * `roles` and the default unset `role`, we require that
+       * frameworks set the `MULTI_ROLE` capability if
+       * setting the `roles` field.
+       * </pre>
+       */
+      @java.lang.Deprecated public Builder clearRole() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        role_ = getDefaultInstance().getRole();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+       *
+       * <pre>
+       * Roles are the entities to which allocations are made.
+       * The framework must have at least one role in order to
+       * be offered resources. Note that `role` is deprecated
+       * in favor of `roles` and only one of these fields must
+       * be used. Since we cannot distinguish between empty
+       * `roles` and the default unset `role`, we require that
+       * frameworks set the `MULTI_ROLE` capability if
+       * setting the `roles` field.
+       * </pre>
+       */
+      @java.lang.Deprecated public Builder setRoleBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000020;
+        role_ = value;
+        onChanged();
+        return this;
+      }
+
+      // repeated string roles = 12;
+      private com.google.protobuf.LazyStringList roles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+      private void ensureRolesIsMutable() {
+        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
+          roles_ = new com.google.protobuf.LazyStringArrayList(roles_);
+          bitField0_ |= 0x00000040;
+         }
+      }
+      /**
+       * <code>repeated string roles = 12;</code>
+       */
+      public java.util.List<java.lang.String>
+          getRolesList() {
+        return java.util.Collections.unmodifiableList(roles_);
+      }
+      /**
+       * <code>repeated string roles = 12;</code>
+       */
+      public int getRolesCount() {
+        return roles_.size();
+      }
+      /**
+       * <code>repeated string roles = 12;</code>
+       */
+      public java.lang.String getRoles(int index) {
+        return roles_.get(index);
+      }
+      /**
+       * <code>repeated string roles = 12;</code>
+       */
+      public com.google.protobuf.ByteString
+          getRolesBytes(int index) {
+        return roles_.getByteString(index);
+      }
+      /**
+       * <code>repeated string roles = 12;</code>
+       */
+      public Builder setRoles(
+          int index, java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureRolesIsMutable();
+        roles_.set(index, value);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated string roles = 12;</code>
+       */
+      public Builder addRoles(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureRolesIsMutable();
+        roles_.add(value);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated string roles = 12;</code>
+       */
+      public Builder addAllRoles(
+          java.lang.Iterable<java.lang.String> values) {
+        ensureRolesIsMutable();
+        super.addAll(values, roles_);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated string roles = 12;</code>
+       */
+      public Builder clearRoles() {
+        roles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+        bitField0_ = (bitField0_ & ~0x00000040);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated string roles = 12;</code>
+       */
+      public Builder addRolesBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureRolesIsMutable();
+        roles_.add(value);
+        onChanged();
+        return this;
+      }
+
+      // optional string hostname = 7;
+      private java.lang.Object hostname_ = "";
+      /**
+       * <code>optional string hostname = 7;</code>
+       *
+       * <pre>
+       * Used to indicate the current host from which the scheduler is
+       * registered in the Mesos Web UI. If set to an empty string Mesos
+       * will automagically set it to the current hostname if one is
+       * available.
+       * </pre>
+       */
+      public boolean hasHostname() {
+        return ((bitField0_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional string hostname = 7;</code>
+       *
+       * <pre>
+       * Used to indicate the current host from which the scheduler is
+       * registered in the Mesos Web UI. If set to an empty string Mesos
+       * will automagically set it to the current hostname if one is
+       * available.
+       * </pre>
+       */
+      public java.lang.String getHostname() {
+        java.lang.Object ref = hostname_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          hostname_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string hostname = 7;</code>
+       *
+       * <pre>
+       * Used to indicate the current host from which the scheduler is
+       * registered in the Mesos Web UI. If set to an empty string Mesos
+       * will automagically set it to the current hostname if one is
+       * available.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getHostnameBytes() {
+        java.lang.Object ref = hostname_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          hostname_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string hostname = 7;</code>
+       *
+       * <pre>
+       * Used to indicate the current host from which the scheduler is
+       * registered in the Mesos Web UI. If set to an empty string Mesos
+       * will automagically set it to the current hostname if one is
+       * available.
+       * </pre>
+       */
+      public Builder setHostname(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000080;
+        hostname_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string hostname = 7;</code>
+       *
+       * <pre>
+       * Used to indicate the current host from which the scheduler is
+       * registered in the Mesos Web UI. If set to an empty string Mesos
+       * will automagically set it to the current hostname if one is
+       * available.
+       * </pre>
+       */
+      public Builder clearHostname() {
+        bitField0_ = (bitField0_ & ~0x00000080);
+        hostname_ = getDefaultInstance().getHostname();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string hostname = 7;</code>
+       *
+       * <pre>
+       * Used to indicate the current host from which the scheduler is
+       * registered in the Mesos Web UI. If set to an empty string Mesos
+       * will automagically set it to the current hostname if one is
+       * available.
+       * </pre>
+       */
+      public Builder setHostnameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000080;
+        hostname_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional string principal = 8;
+      private java.lang.Object principal_ = "";
+      /**
+       * <code>optional string principal = 8;</code>
+       *
+       * <pre>
+       * This field should match the credential's principal the framework
+       * uses for authentication. This field is used for framework API
+       * rate limiting and dynamic reservations. It should be set even
+       * if authentication is not enabled if these features are desired.
+       * </pre>
+       */
+      public boolean hasPrincipal() {
+        return ((bitField0_ & 0x00000100) == 0x00000100);
+      }
+      /**
+       * <code>optional string principal = 8;</code>
+       *
+       * <pre>
+       * This field should match the credential's principal the framework
+       * uses for authentication. This field is used for framework API
+       * rate limiting and dynamic reservations. It should be set even
+       * if authentication is not enabled if these features are desired.
+       * </pre>
+       */
+      public java.lang.String getPrincipal() {
+        java.lang.Object ref = principal_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          principal_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string principal = 8;</code>
+       *
+       * <pre>
+       * This field should match the credential's principal the framework
+       * uses for authentication. This field is used for framework API
+       * rate limiting and dynamic reservations. It should be set even
+       * if authentication is not enabled if these features are desired.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getPrincipalBytes() {
+        java.lang.Object ref = principal_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          principal_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string principal = 8;</code>
+       *
+       * <pre>
+       * This field should match the credential's principal the framework
+       * uses for authentication. This field is used for framework API
+       * rate limiting and dynamic reservations. It should be set even
+       * if authentication is not enabled if these features are desired.
+       * </pre>
+       */
+      public Builder setPrincipal(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000100;
+        principal_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string principal = 8;</code>
+       *
+       * <pre>
+       * This field should match the credential's principal the framework
+       * uses for authentication. This field is used for framework API
+       * rate limiting and dynamic reservations. It should be set even
+       * if authentication is not enabled if these features are desired.
+       * </pre>
+       */
+      public Builder clearPrincipal() {
+        bitField0_ = (bitField0_ & ~0x00000100);
+        principal_ = getDefaultInstance().getPrincipal();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string principal = 8;</code>
+       *
+       * <pre>
+       * This field should match the credential's principal the framework
+       * uses for authentication. This field is used for framework API
+       * rate limiting and dynamic reservations. It should be set even
+       * if authentication is not enabled if these features are desired.
+       * </pre>
+       */
+      public Builder setPrincipalBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000100;
+        principal_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional string webui_url = 9;
+      private java.lang.Object webuiUrl_ = "";
+      /**
+       * <code>optional string webui_url = 9;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its web UI, so that
+       * the Mesos web UI can link to it. It is expected to be a full URL,
+       * for example http://my-scheduler.example.com:8080/.
+       * </pre>
+       */
+      public boolean hasWebuiUrl() {
+        return ((bitField0_ & 0x00000200) == 0x00000200);
+      }
+      /**
+       * <code>optional string webui_url = 9;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its web UI, so that
+       * the Mesos web UI can link to it. It is expected to be a full URL,
+       * for example http://my-scheduler.example.com:8080/.
+       * </pre>
+       */
+      public java.lang.String getWebuiUrl() {
+        java.lang.Object ref = webuiUrl_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          webuiUrl_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string webui_url = 9;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its web UI, so that
+       * the Mesos web UI can link to it. It is expected to be a full URL,
+       * for example http://my-scheduler.example.com:8080/.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getWebuiUrlBytes() {
+        java.lang.Object ref = webuiUrl_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          webuiUrl_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string webui_url = 9;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its web UI, so that
+       * the Mesos web UI can link to it. It is expected to be a full URL,
+       * for example http://my-scheduler.example.com:8080/.
+       * </pre>
+       */
+      public Builder setWebuiUrl(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000200;
+        webuiUrl_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string webui_url = 9;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its web UI, so that
+       * the Mesos web UI can link to it. It is expected to be a full URL,
+       * for example http://my-scheduler.example.com:8080/.
+       * </pre>
+       */
+      public Builder clearWebuiUrl() {
+        bitField0_ = (bitField0_ & ~0x00000200);
+        webuiUrl_ = getDefaultInstance().getWebuiUrl();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string webui_url = 9;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its web UI, so that
+       * the Mesos web UI can link to it. It is expected to be a full URL,
+       * for example http://my-scheduler.example.com:8080/.
+       * </pre>
+       */
+      public Builder setWebuiUrlBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000200;
+        webuiUrl_ = value;
+        onChanged();
+        return this;
+      }
+
+      // repeated .mesos.v1.FrameworkInfo.Capability capabilities = 10;
+      private java.util.List<org.apache.mesos.v1.Protos.FrameworkInfo.Capability> capabilities_ =
+        java.util.Collections.emptyList();
+      private void ensureCapabilitiesIsMutable() {
+        if (!((bitField0_ & 0x00000400) == 0x00000400)) {
+          capabilities_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.FrameworkInfo.Capability>(capabilities_);
+          bitField0_ |= 0x00000400;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.FrameworkInfo.Capability, org.apache.mesos.v1.Protos.FrameworkInfo.Capability.Builder, org.apache.mesos.v1.Protos.FrameworkInfo.CapabilityOrBuilder> capabilitiesBuilder_;
+
+      /**
+       * <code>repeated .mesos.v1.FrameworkInfo.Capability capabilities = 10;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its set of
+       * capabilities (e.g., ability to receive offers for revocable
+       * resources).
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.FrameworkInfo.Capability> getCapabilitiesList() {
+        if (capabilitiesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(capabilities_);
+        } else {
+          return capabilitiesBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.FrameworkInfo.Capability capabilities = 10;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its set of
+       * capabilities (e.g., ability to receive offers for revocable
+       * resources).
+       * </pre>
+       */
+      public int getCapabilitiesCount() {
+        if (capabilitiesBuilder_ == null) {
+          return capabilities_.size();
+        } else {
+          return capabilitiesBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.FrameworkInfo.Capability capabilities = 10;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its set of
+       * capabilities (e.g., ability to receive offers for revocable
+       * resources).
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.FrameworkInfo.Capability getCapabilities(int index) {
+        if (capabilitiesBuilder_ == null) {
+          return capabilities_.get(index);
+        } else {
+          return capabilitiesBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.FrameworkInfo.Capability capabilities = 10;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its set of
+       * capabilities (e.g., ability to receive offers for revocable
+       * resources).
+       * </pre>
+       */
+      public Builder setCapabilities(
+          int index, org.apache.mesos.v1.Protos.FrameworkInfo.Capability value) {
+        if (capabilitiesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureCapabilitiesIsMutable();
+          capabilities_.set(index, value);
+          onChanged();
+        } else {
+          capabilitiesBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.FrameworkInfo.Capability capabilities = 10;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its set of
+       * capabilities (e.g., ability to receive offers for revocable
+       * resources).
+       * </pre>
+       */
+      public Builder setCapabilities(
+          int index, org.apache.mesos.v1.Protos.FrameworkInfo.Capability.Builder builderForValue) {
+        if (capabilitiesBuilder_ == null) {
+          ensureCapabilitiesIsMutable();
+          capabilities_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          capabilitiesBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.FrameworkInfo.Capability capabilities = 10;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its set of
+       * capabilities (e.g., ability to receive offers for revocable
+       * resources).
+       * </pre>
+       */
+      public Builder addCapabilities(org.apache.mesos.v1.Protos.FrameworkInfo.Capability value) {
+        if (capabilitiesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureCapabilitiesIsMutable();
+          capabilities_.add(value);
+          onChanged();
+        } else {
+          capabilitiesBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.FrameworkInfo.Capability capabilities = 10;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its set of
+       * capabilities (e.g., ability to receive offers for revocable
+       * resources).
+       * </pre>
+       */
+      public Builder addCapabilities(
+          int index, org.apache.mesos.v1.Protos.FrameworkInfo.Capability value) {
+        if (capabilitiesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureCapabilitiesIsMutable();
+          capabilities_.add(index, value);
+          onChanged();
+        } else {
+          capabilitiesBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.FrameworkInfo.Capability capabilities = 10;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its set of
+       * capabilities (e.g., ability to receive offers for revocable
+       * resources).
+       * </pre>
+       */
+      public Builder addCapabilities(
+          org.apache.mesos.v1.Protos.FrameworkInfo.Capability.Builder builderForValue) {
+        if (capabilitiesBuilder_ == null) {
+          ensureCapabilitiesIsMutable();
+          capabilities_.add(builderForValue.build());
+          onChanged();
+        } else {
+          capabilitiesBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.FrameworkInfo.Capability capabilities = 10;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its set of
+       * capabilities (e.g., ability to receive offers for revocable
+       * resources).
+       * </pre>
+       */
+      public Builder addCapabilities(
+          int index, org.apache.mesos.v1.Protos.FrameworkInfo.Capability.Builder builderForValue) {
+        if (capabilitiesBuilder_ == null) {
+          ensureCapabilitiesIsMutable();
+          capabilities_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          capabilitiesBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.FrameworkInfo.Capability capabilities = 10;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its set of
+       * capabilities (e.g., ability to receive offers for revocable
+       * resources).
+       * </pre>
+       */
+      public Builder addAllCapabilities(
+          java.lang.Iterable<? extends org.apache.mesos.v1.Protos.FrameworkInfo.Capability> values) {
+        if (capabilitiesBuilder_ == null) {
+          ensureCapabilitiesIsMutable();
+          super.addAll(values, capabilities_);
+          onChanged();
+        } else {
+          capabilitiesBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.FrameworkInfo.Capability capabilities = 10;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its set of
+       * capabilities (e.g., ability to receive offers for revocable
+       * resources).
+       * </pre>
+       */
+      public Builder clearCapabilities() {
+        if (capabilitiesBuilder_ == null) {
+          capabilities_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000400);
+          onChanged();
+        } else {
+          capabilitiesBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.FrameworkInfo.Capability capabilities = 10;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its set of
+       * capabilities (e.g., ability to receive offers for revocable
+       * resources).
+       * </pre>
+       */
+      public Builder removeCapabilities(int index) {
+        if (capabilitiesBuilder_ == null) {
+          ensureCapabilitiesIsMutable();
+          capabilities_.remove(index);
+          onChanged();
+        } else {
+          capabilitiesBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.FrameworkInfo.Capability capabilities = 10;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its set of
+       * capabilities (e.g., ability to receive offers for revocable
+       * resources).
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.FrameworkInfo.Capability.Builder getCapabilitiesBuilder(
+          int index) {
+        return getCapabilitiesFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.FrameworkInfo.Capability capabilities = 10;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its set of
+       * capabilities (e.g., ability to receive offers for revocable
+       * resources).
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.FrameworkInfo.CapabilityOrBuilder getCapabilitiesOrBuilder(
+          int index) {
+        if (capabilitiesBuilder_ == null) {
+          return capabilities_.get(index);  } else {
+          return capabilitiesBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.FrameworkInfo.Capability capabilities = 10;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its set of
+       * capabilities (e.g., ability to receive offers for revocable
+       * resources).
+       * </pre>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.FrameworkInfo.CapabilityOrBuilder> 
+           getCapabilitiesOrBuilderList() {
+        if (capabilitiesBuilder_ != null) {
+          return capabilitiesBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(capabilities_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.FrameworkInfo.Capability capabilities = 10;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its set of
+       * capabilities (e.g., ability to receive offers for revocable
+       * resources).
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.FrameworkInfo.Capability.Builder addCapabilitiesBuilder() {
+        return getCapabilitiesFieldBuilder().addBuilder(
+            org.apache.mesos.v1.Protos.FrameworkInfo.Capability.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.FrameworkInfo.Capability capabilities = 10;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its set of
+       * capabilities (e.g., ability to receive offers for revocable
+       * resources).
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.FrameworkInfo.Capability.Builder addCapabilitiesBuilder(
+          int index) {
+        return getCapabilitiesFieldBuilder().addBuilder(
+            index, org.apache.mesos.v1.Protos.FrameworkInfo.Capability.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.FrameworkInfo.Capability capabilities = 10;</code>
+       *
+       * <pre>
+       * This field allows a framework to advertise its set of
+       * capabilities (e.g., ability to receive offers for revocable
+       * resources).
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.FrameworkInfo.Capability.Builder> 
+           getCapabilitiesBuilderList() {
+        return getCapabilitiesFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.FrameworkInfo.Capability, org.apache.mesos.v1.Protos.FrameworkInfo.Capability.Builder, org.apache.mesos.v1.Protos.FrameworkInfo.CapabilityOrBuilder> 
+          getCapabilitiesFieldBuilder() {
+        if (capabilitiesBuilder_ == null) {
+          capabilitiesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.FrameworkInfo.Capability, org.apache.mesos.v1.Protos.FrameworkInfo.Capability.Builder, org.apache.mesos.v1.Protos.FrameworkInfo.CapabilityOrBuilder>(
+                  capabilities_,
+                  ((bitField0_ & 0x00000400) == 0x00000400),
+                  getParentForChildren(),
+                  isClean());
+          capabilities_ = null;
+        }
+        return capabilitiesBuilder_;
+      }
+
+      // optional .mesos.v1.Labels labels = 11;
+      private org.apache.mesos.v1.Protos.Labels labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Labels, org.apache.mesos.v1.Protos.Labels.Builder, org.apache.mesos.v1.Protos.LabelsOrBuilder> labelsBuilder_;
+      /**
+       * <code>optional .mesos.v1.Labels labels = 11;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs supplied by the framework
+       * scheduler (e.g., to describe additional functionality offered by
+       * the framework). These labels are not interpreted by Mesos itself.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public boolean hasLabels() {
+        return ((bitField0_ & 0x00000800) == 0x00000800);
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 11;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs supplied by the framework
+       * scheduler (e.g., to describe additional functionality offered by
+       * the framework). These labels are not interpreted by Mesos itself.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Labels getLabels() {
+        if (labelsBuilder_ == null) {
+          return labels_;
+        } else {
+          return labelsBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 11;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs supplied by the framework
+       * scheduler (e.g., to describe additional functionality offered by
+       * the framework). These labels are not interpreted by Mesos itself.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public Builder setLabels(org.apache.mesos.v1.Protos.Labels value) {
+        if (labelsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          labels_ = value;
+          onChanged();
+        } else {
+          labelsBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 11;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs supplied by the framework
+       * scheduler (e.g., to describe additional functionality offered by
+       * the framework). These labels are not interpreted by Mesos itself.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public Builder setLabels(
+          org.apache.mesos.v1.Protos.Labels.Builder builderForValue) {
+        if (labelsBuilder_ == null) {
+          labels_ = builderForValue.build();
+          onChanged();
+        } else {
+          labelsBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 11;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs supplied by the framework
+       * scheduler (e.g., to describe additional functionality offered by
+       * the framework). These labels are not interpreted by Mesos itself.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public Builder mergeLabels(org.apache.mesos.v1.Protos.Labels value) {
+        if (labelsBuilder_ == null) {
+          if (((bitField0_ & 0x00000800) == 0x00000800) &&
+              labels_ != org.apache.mesos.v1.Protos.Labels.getDefaultInstance()) {
+            labels_ =
+              org.apache.mesos.v1.Protos.Labels.newBuilder(labels_).mergeFrom(value).buildPartial();
+          } else {
+            labels_ = value;
+          }
+          onChanged();
+        } else {
+          labelsBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 11;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs supplied by the framework
+       * scheduler (e.g., to describe additional functionality offered by
+       * the framework). These labels are not interpreted by Mesos itself.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public Builder clearLabels() {
+        if (labelsBuilder_ == null) {
+          labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+          onChanged();
+        } else {
+          labelsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000800);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 11;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs supplied by the framework
+       * scheduler (e.g., to describe additional functionality offered by
+       * the framework). These labels are not interpreted by Mesos itself.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Labels.Builder getLabelsBuilder() {
+        bitField0_ |= 0x00000800;
+        onChanged();
+        return getLabelsFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 11;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs supplied by the framework
+       * scheduler (e.g., to describe additional functionality offered by
+       * the framework). These labels are not interpreted by Mesos itself.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+        if (labelsBuilder_ != null) {
+          return labelsBuilder_.getMessageOrBuilder();
+        } else {
+          return labels_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 11;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs supplied by the framework
+       * scheduler (e.g., to describe additional functionality offered by
+       * the framework). These labels are not interpreted by Mesos itself.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Labels, org.apache.mesos.v1.Protos.Labels.Builder, org.apache.mesos.v1.Protos.LabelsOrBuilder> 
+          getLabelsFieldBuilder() {
+        if (labelsBuilder_ == null) {
+          labelsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Labels, org.apache.mesos.v1.Protos.Labels.Builder, org.apache.mesos.v1.Protos.LabelsOrBuilder>(
+                  labels_,
+                  getParentForChildren(),
+                  isClean());
+          labels_ = null;
+        }
+        return labelsBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.FrameworkInfo)
+    }
+
+    static {
+      defaultInstance = new FrameworkInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.FrameworkInfo)
+  }
+
+  public interface CheckInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional .mesos.v1.CheckInfo.Type type = 1;
+    /**
+     * <code>optional .mesos.v1.CheckInfo.Type type = 1;</code>
+     *
+     * <pre>
+     * The type of the check.
+     * </pre>
+     */
+    boolean hasType();
+    /**
+     * <code>optional .mesos.v1.CheckInfo.Type type = 1;</code>
+     *
+     * <pre>
+     * The type of the check.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.CheckInfo.Type getType();
+
+    // optional .mesos.v1.CheckInfo.Command command = 2;
+    /**
+     * <code>optional .mesos.v1.CheckInfo.Command command = 2;</code>
+     *
+     * <pre>
+     * Command check.
+     * </pre>
+     */
+    boolean hasCommand();
+    /**
+     * <code>optional .mesos.v1.CheckInfo.Command command = 2;</code>
+     *
+     * <pre>
+     * Command check.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.CheckInfo.Command getCommand();
+    /**
+     * <code>optional .mesos.v1.CheckInfo.Command command = 2;</code>
+     *
+     * <pre>
+     * Command check.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.CheckInfo.CommandOrBuilder getCommandOrBuilder();
+
+    // optional .mesos.v1.CheckInfo.Http http = 3;
+    /**
+     * <code>optional .mesos.v1.CheckInfo.Http http = 3;</code>
+     *
+     * <pre>
+     * HTTP check.
+     * </pre>
+     */
+    boolean hasHttp();
+    /**
+     * <code>optional .mesos.v1.CheckInfo.Http http = 3;</code>
+     *
+     * <pre>
+     * HTTP check.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.CheckInfo.Http getHttp();
+    /**
+     * <code>optional .mesos.v1.CheckInfo.Http http = 3;</code>
+     *
+     * <pre>
+     * HTTP check.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.CheckInfo.HttpOrBuilder getHttpOrBuilder();
+
+    // optional .mesos.v1.CheckInfo.Tcp tcp = 7;
+    /**
+     * <code>optional .mesos.v1.CheckInfo.Tcp tcp = 7;</code>
+     *
+     * <pre>
+     * TCP check.
+     * </pre>
+     */
+    boolean hasTcp();
+    /**
+     * <code>optional .mesos.v1.CheckInfo.Tcp tcp = 7;</code>
+     *
+     * <pre>
+     * TCP check.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.CheckInfo.Tcp getTcp();
+    /**
+     * <code>optional .mesos.v1.CheckInfo.Tcp tcp = 7;</code>
+     *
+     * <pre>
+     * TCP check.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.CheckInfo.TcpOrBuilder getTcpOrBuilder();
+
+    // optional double delay_seconds = 4 [default = 15];
+    /**
+     * <code>optional double delay_seconds = 4 [default = 15];</code>
+     *
+     * <pre>
+     * Amount of time to wait to start checking the task after it
+     * transitions to `TASK_RUNNING` or `TASK_STARTING` if the latter
+     * is used by the executor.
+     * </pre>
+     */
+    boolean hasDelaySeconds();
+    /**
+     * <code>optional double delay_seconds = 4 [default = 15];</code>
+     *
+     * <pre>
+     * Amount of time to wait to start checking the task after it
+     * transitions to `TASK_RUNNING` or `TASK_STARTING` if the latter
+     * is used by the executor.
+     * </pre>
+     */
+    double getDelaySeconds();
+
+    // optional double interval_seconds = 5 [default = 10];
+    /**
+     * <code>optional double interval_seconds = 5 [default = 10];</code>
+     *
+     * <pre>
+     * Interval between check attempts, i.e., amount of time to wait after
+     * the previous check finished or timed out to start the next check.
+     * </pre>
+     */
+    boolean hasIntervalSeconds();
+    /**
+     * <code>optional double interval_seconds = 5 [default = 10];</code>
+     *
+     * <pre>
+     * Interval between check attempts, i.e., amount of time to wait after
+     * the previous check finished or timed out to start the next check.
+     * </pre>
+     */
+    double getIntervalSeconds();
+
+    // optional double timeout_seconds = 6 [default = 20];
+    /**
+     * <code>optional double timeout_seconds = 6 [default = 20];</code>
+     *
+     * <pre>
+     * Amount of time to wait for the check to complete. Zero means infinite
+     * timeout.
+     *
+     * After this timeout, the check attempt is aborted and no result is
+     * reported. Note that this may be considered a state change and hence
+     * may trigger a check status change delivery to the corresponding
+     * scheduler. See `CheckStatusInfo` for more details.
+     * </pre>
+     */
+    boolean hasTimeoutSeconds();
+    /**
+     * <code>optional double timeout_seconds = 6 [default = 20];</code>
+     *
+     * <pre>
+     * Amount of time to wait for the check to complete. Zero means infinite
+     * timeout.
+     *
+     * After this timeout, the check attempt is aborted and no result is
+     * reported. Note that this may be considered a state change and hence
+     * may trigger a check status change delivery to the corresponding
+     * scheduler. See `CheckStatusInfo` for more details.
+     * </pre>
+     */
+    double getTimeoutSeconds();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.CheckInfo}
+   *
+   * <pre>
+   **
+   * Describes a general non-interpreting non-killing check for a task or
+   * executor (or any arbitrary process/command). A type is picked by
+   * specifying one of the optional fields. Specifying more than one type
+   * is an error.
+   *
+   * NOTE: This API is unstable and the related feature is experimental.
+   * </pre>
+   */
+  public static final class CheckInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements CheckInfoOrBuilder {
+    // Use CheckInfo.newBuilder() to construct.
+    private CheckInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private CheckInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final CheckInfo defaultInstance;
+    public static CheckInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public CheckInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private CheckInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 8: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.v1.Protos.CheckInfo.Type value = org.apache.mesos.v1.Protos.CheckInfo.Type.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(1, rawValue);
+              } else {
+                bitField0_ |= 0x00000001;
+                type_ = value;
+              }
+              break;
+            }
+            case 18: {
+              org.apache.mesos.v1.Protos.CheckInfo.Command.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = command_.toBuilder();
+              }
+              command_ = input.readMessage(org.apache.mesos.v1.Protos.CheckInfo.Command.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(command_);
+                command_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+            case 26: {
+              org.apache.mesos.v1.Protos.CheckInfo.Http.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                subBuilder = http_.toBuilder();
+              }
+              http_ = input.readMessage(org.apache.mesos.v1.Protos.CheckInfo.Http.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(http_);
+                http_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000004;
+              break;
+            }
+            case 33: {
+              bitField0_ |= 0x00000010;
+              delaySeconds_ = input.readDouble();
+              break;
+            }
+            case 41: {
+              bitField0_ |= 0x00000020;
+              intervalSeconds_ = input.readDouble();
+              break;
+            }
+            case 49: {
+              bitField0_ |= 0x00000040;
+              timeoutSeconds_ = input.readDouble();
+              break;
+            }
+            case 58: {
+              org.apache.mesos.v1.Protos.CheckInfo.Tcp.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                subBuilder = tcp_.toBuilder();
+              }
+              tcp_ = input.readMessage(org.apache.mesos.v1.Protos.CheckInfo.Tcp.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(tcp_);
+                tcp_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000008;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CheckInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CheckInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.CheckInfo.class, org.apache.mesos.v1.Protos.CheckInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<CheckInfo> PARSER =
+        new com.google.protobuf.AbstractParser<CheckInfo>() {
+      public CheckInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new CheckInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<CheckInfo> getParserForType() {
+      return PARSER;
+    }
+
+    /**
+     * Protobuf enum {@code mesos.v1.CheckInfo.Type}
+     */
+    public enum Type
+        implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>UNKNOWN = 0;</code>
+       */
+      UNKNOWN(0, 0),
+      /**
+       * <code>COMMAND = 1;</code>
+       */
+      COMMAND(1, 1),
+      /**
+       * <code>HTTP = 2;</code>
+       */
+      HTTP(2, 2),
+      /**
+       * <code>TCP = 3;</code>
+       */
+      TCP(3, 3),
+      ;
+
+      /**
+       * <code>UNKNOWN = 0;</code>
+       */
+      public static final int UNKNOWN_VALUE = 0;
+      /**
+       * <code>COMMAND = 1;</code>
+       */
+      public static final int COMMAND_VALUE = 1;
+      /**
+       * <code>HTTP = 2;</code>
+       */
+      public static final int HTTP_VALUE = 2;
+      /**
+       * <code>TCP = 3;</code>
+       */
+      public static final int TCP_VALUE = 3;
+
+
+      public final int getNumber() { return value; }
+
+      public static Type valueOf(int value) {
+        switch (value) {
+          case 0: return UNKNOWN;
+          case 1: return COMMAND;
+          case 2: return HTTP;
+          case 3: return TCP;
+          default: return null;
+        }
+      }
+
+      public static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalGetValueMap() {
+        return internalValueMap;
+      }
+      private static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap<Type>() {
+              public Type findValueByNumber(int number) {
+                return Type.valueOf(number);
+              }
+            };
+
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
+          getValueDescriptor() {
+        return getDescriptor().getValues().get(index);
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptorForType() {
+        return getDescriptor();
+      }
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.CheckInfo.getDescriptor().getEnumTypes().get(0);
+      }
+
+      private static final Type[] VALUES = values();
+
+      public static Type valueOf(
+          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+        if (desc.getType() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "EnumValueDescriptor is not for this type.");
+        }
+        return VALUES[desc.getIndex()];
+      }
+
+      private final int index;
+      private final int value;
+
+      private Type(int index, int value) {
+        this.index = index;
+        this.value = value;
+      }
+
+      // @@protoc_insertion_point(enum_scope:mesos.v1.CheckInfo.Type)
+    }
+
+    public interface CommandOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required .mesos.v1.CommandInfo command = 1;
+      /**
+       * <code>required .mesos.v1.CommandInfo command = 1;</code>
+       */
+      boolean hasCommand();
+      /**
+       * <code>required .mesos.v1.CommandInfo command = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.CommandInfo getCommand();
+      /**
+       * <code>required .mesos.v1.CommandInfo command = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.CommandInfoOrBuilder getCommandOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.CheckInfo.Command}
+     *
+     * <pre>
+     * Describes a command check. If applicable, enters mount and/or network
+     * namespaces of the task.
+     * </pre>
+     */
+    public static final class Command extends
+        com.google.protobuf.GeneratedMessage
+        implements CommandOrBuilder {
+      // Use Command.newBuilder() to construct.
+      private Command(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Command(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Command defaultInstance;
+      public static Command getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Command getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Command(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.v1.Protos.CommandInfo.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = command_.toBuilder();
+                }
+                command_ = input.readMessage(org.apache.mesos.v1.Protos.CommandInfo.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(command_);
+                  command_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CheckInfo_Command_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CheckInfo_Command_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.CheckInfo.Command.class, org.apache.mesos.v1.Protos.CheckInfo.Command.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Command> PARSER =
+          new com.google.protobuf.AbstractParser<Command>() {
+        public Command parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Command(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Command> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required .mesos.v1.CommandInfo command = 1;
+      public static final int COMMAND_FIELD_NUMBER = 1;
+      private org.apache.mesos.v1.Protos.CommandInfo command_;
+      /**
+       * <code>required .mesos.v1.CommandInfo command = 1;</code>
+       */
+      public boolean hasCommand() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.v1.CommandInfo command = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.CommandInfo getCommand() {
+        return command_;
+      }
+      /**
+       * <code>required .mesos.v1.CommandInfo command = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.CommandInfoOrBuilder getCommandOrBuilder() {
+        return command_;
+      }
+
+      private void initFields() {
+        command_ = org.apache.mesos.v1.Protos.CommandInfo.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasCommand()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getCommand().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, command_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, command_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.Protos.CheckInfo.Command parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.CheckInfo.Command parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.CheckInfo.Command parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.CheckInfo.Command parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.CheckInfo.Command parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.CheckInfo.Command parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.CheckInfo.Command parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.CheckInfo.Command parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.CheckInfo.Command parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.CheckInfo.Command parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.Protos.CheckInfo.Command prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.CheckInfo.Command}
+       *
+       * <pre>
+       * Describes a command check. If applicable, enters mount and/or network
+       * namespaces of the task.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.Protos.CheckInfo.CommandOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CheckInfo_Command_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CheckInfo_Command_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.CheckInfo.Command.class, org.apache.mesos.v1.Protos.CheckInfo.Command.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.Protos.CheckInfo.Command.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getCommandFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (commandBuilder_ == null) {
+            command_ = org.apache.mesos.v1.Protos.CommandInfo.getDefaultInstance();
+          } else {
+            commandBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CheckInfo_Command_descriptor;
+        }
+
+        public org.apache.mesos.v1.Protos.CheckInfo.Command getDefaultInstanceForType() {
+          return org.apache.mesos.v1.Protos.CheckInfo.Command.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.Protos.CheckInfo.Command build() {
+          org.apache.mesos.v1.Protos.CheckInfo.Command result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.Protos.CheckInfo.Command buildPartial() {
+          org.apache.mesos.v1.Protos.CheckInfo.Command result = new org.apache.mesos.v1.Protos.CheckInfo.Command(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (commandBuilder_ == null) {
+            result.command_ = command_;
+          } else {
+            result.command_ = commandBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.Protos.CheckInfo.Command) {
+            return mergeFrom((org.apache.mesos.v1.Protos.CheckInfo.Command)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.Protos.CheckInfo.Command other) {
+          if (other == org.apache.mesos.v1.Protos.CheckInfo.Command.getDefaultInstance()) return this;
+          if (other.hasCommand()) {
+            mergeCommand(other.getCommand());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasCommand()) {
+            
+            return false;
+          }
+          if (!getCommand().isInitialized()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.Protos.CheckInfo.Command parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.Protos.CheckInfo.Command) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required .mesos.v1.CommandInfo command = 1;
+        private org.apache.mesos.v1.Protos.CommandInfo command_ = org.apache.mesos.v1.Protos.CommandInfo.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.CommandInfo, org.apache.mesos.v1.Protos.CommandInfo.Builder, org.apache.mesos.v1.Protos.CommandInfoOrBuilder> commandBuilder_;
+        /**
+         * <code>required .mesos.v1.CommandInfo command = 1;</code>
+         */
+        public boolean hasCommand() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.v1.CommandInfo command = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.CommandInfo getCommand() {
+          if (commandBuilder_ == null) {
+            return command_;
+          } else {
+            return commandBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.v1.CommandInfo command = 1;</code>
+         */
+        public Builder setCommand(org.apache.mesos.v1.Protos.CommandInfo value) {
+          if (commandBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            command_ = value;
+            onChanged();
+          } else {
+            commandBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.CommandInfo command = 1;</code>
+         */
+        public Builder setCommand(
+            org.apache.mesos.v1.Protos.CommandInfo.Builder builderForValue) {
+          if (commandBuilder_ == null) {
+            command_ = builderForValue.build();
+            onChanged();
+          } else {
+            commandBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.CommandInfo command = 1;</code>
+         */
+        public Builder mergeCommand(org.apache.mesos.v1.Protos.CommandInfo value) {
+          if (commandBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                command_ != org.apache.mesos.v1.Protos.CommandInfo.getDefaultInstance()) {
+              command_ =
+                org.apache.mesos.v1.Protos.CommandInfo.newBuilder(command_).mergeFrom(value).buildPartial();
+            } else {
+              command_ = value;
+            }
+            onChanged();
+          } else {
+            commandBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.CommandInfo command = 1;</code>
+         */
+        public Builder clearCommand() {
+          if (commandBuilder_ == null) {
+            command_ = org.apache.mesos.v1.Protos.CommandInfo.getDefaultInstance();
+            onChanged();
+          } else {
+            commandBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.CommandInfo command = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.CommandInfo.Builder getCommandBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getCommandFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.v1.CommandInfo command = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.CommandInfoOrBuilder getCommandOrBuilder() {
+          if (commandBuilder_ != null) {
+            return commandBuilder_.getMessageOrBuilder();
+          } else {
+            return command_;
+          }
+        }
+        /**
+         * <code>required .mesos.v1.CommandInfo command = 1;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.CommandInfo, org.apache.mesos.v1.Protos.CommandInfo.Builder, org.apache.mesos.v1.Protos.CommandInfoOrBuilder> 
+            getCommandFieldBuilder() {
+          if (commandBuilder_ == null) {
+            commandBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.CommandInfo, org.apache.mesos.v1.Protos.CommandInfo.Builder, org.apache.mesos.v1.Protos.CommandInfoOrBuilder>(
+                    command_,
+                    getParentForChildren(),
+                    isClean());
+            command_ = null;
+          }
+          return commandBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.CheckInfo.Command)
+      }
+
+      static {
+        defaultInstance = new Command(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.CheckInfo.Command)
+    }
+
+    public interface HttpOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required uint32 port = 1;
+      /**
+       * <code>required uint32 port = 1;</code>
+       *
+       * <pre>
+       * Port to send the HTTP request.
+       * </pre>
+       */
+      boolean hasPort();
+      /**
+       * <code>required uint32 port = 1;</code>
+       *
+       * <pre>
+       * Port to send the HTTP request.
+       * </pre>
+       */
+      int getPort();
+
+      // optional string path = 2;
+      /**
+       * <code>optional string path = 2;</code>
+       *
+       * <pre>
+       * HTTP request path.
+       * </pre>
+       */
+      boolean hasPath();
+      /**
+       * <code>optional string path = 2;</code>
+       *
+       * <pre>
+       * HTTP request path.
+       * </pre>
+       */
+      java.lang.String getPath();
+      /**
+       * <code>optional string path = 2;</code>
+       *
+       * <pre>
+       * HTTP request path.
+       * </pre>
+       */
+      com.google.protobuf.ByteString
+          getPathBytes();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.CheckInfo.Http}
+     *
+     * <pre>
+     * Describes an HTTP check. Sends a GET request to
+     * http://&lt;host&gt;:port/path. Note that &lt;host&gt; is not configurable and is
+     * resolved automatically to 127.0.0.1.
+     * </pre>
+     */
+    public static final class Http extends
+        com.google.protobuf.GeneratedMessage
+        implements HttpOrBuilder {
+      // Use Http.newBuilder() to construct.
+      private Http(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Http(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Http defaultInstance;
+      public static Http getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Http getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Http(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 8: {
+                bitField0_ |= 0x00000001;
+                port_ = input.readUInt32();
+                break;
+              }
+              case 18: {
+                bitField0_ |= 0x00000002;
+                path_ = input.readBytes();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CheckInfo_Http_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CheckInfo_Http_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.CheckInfo.Http.class, org.apache.mesos.v1.Protos.CheckInfo.Http.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Http> PARSER =
+          new com.google.protobuf.AbstractParser<Http>() {
+        public Http parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Http(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Http> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required uint32 port = 1;
+      public static final int PORT_FIELD_NUMBER = 1;
+      private int port_;
+      /**
+       * <code>required uint32 port = 1;</code>
+       *
+       * <pre>
+       * Port to send the HTTP request.
+       * </pre>
+       */
+      public boolean hasPort() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required uint32 port = 1;</code>
+       *
+       * <pre>
+       * Port to send the HTTP request.
+       * </pre>
+       */
+      public int getPort() {
+        return port_;
+      }
+
+      // optional string path = 2;
+      public static final int PATH_FIELD_NUMBER = 2;
+      private java.lang.Object path_;
+      /**
+       * <code>optional string path = 2;</code>
+       *
+       * <pre>
+       * HTTP request path.
+       * </pre>
+       */
+      public boolean hasPath() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional string path = 2;</code>
+       *
+       * <pre>
+       * HTTP request path.
+       * </pre>
+       */
+      public java.lang.String getPath() {
+        java.lang.Object ref = path_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            path_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>optional string path = 2;</code>
+       *
+       * <pre>
+       * HTTP request path.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getPathBytes() {
+        java.lang.Object ref = path_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          path_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      private void initFields() {
+        port_ = 0;
+        path_ = "";
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasPort()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeUInt32(1, port_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeBytes(2, getPathBytes());
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeUInt32Size(1, port_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(2, getPathBytes());
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.Protos.CheckInfo.Http parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.CheckInfo.Http parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.CheckInfo.Http parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.CheckInfo.Http parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.CheckInfo.Http parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.CheckInfo.Http parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.CheckInfo.Http parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.CheckInfo.Http parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.CheckInfo.Http parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.CheckInfo.Http parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.Protos.CheckInfo.Http prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.CheckInfo.Http}
+       *
+       * <pre>
+       * Describes an HTTP check. Sends a GET request to
+       * http://&lt;host&gt;:port/path. Note that &lt;host&gt; is not configurable and is
+       * resolved automatically to 127.0.0.1.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.Protos.CheckInfo.HttpOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CheckInfo_Http_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CheckInfo_Http_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.CheckInfo.Http.class, org.apache.mesos.v1.Protos.CheckInfo.Http.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.Protos.CheckInfo.Http.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          port_ = 0;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          path_ = "";
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CheckInfo_Http_descriptor;
+        }
+
+        public org.apache.mesos.v1.Protos.CheckInfo.Http getDefaultInstanceForType() {
+          return org.apache.mesos.v1.Protos.CheckInfo.Http.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.Protos.CheckInfo.Http build() {
+          org.apache.mesos.v1.Protos.CheckInfo.Http result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.Protos.CheckInfo.Http buildPartial() {
+          org.apache.mesos.v1.Protos.CheckInfo.Http result = new org.apache.mesos.v1.Protos.CheckInfo.Http(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.port_ = port_;
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          result.path_ = path_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.Protos.CheckInfo.Http) {
+            return mergeFrom((org.apache.mesos.v1.Protos.CheckInfo.Http)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.Protos.CheckInfo.Http other) {
+          if (other == org.apache.mesos.v1.Protos.CheckInfo.Http.getDefaultInstance()) return this;
+          if (other.hasPort()) {
+            setPort(other.getPort());
+          }
+          if (other.hasPath()) {
+            bitField0_ |= 0x00000002;
+            path_ = other.path_;
+            onChanged();
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasPort()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.Protos.CheckInfo.Http parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.Protos.CheckInfo.Http) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required uint32 port = 1;
+        private int port_ ;
+        /**
+         * <code>required uint32 port = 1;</code>
+         *
+         * <pre>
+         * Port to send the HTTP request.
+         * </pre>
+         */
+        public boolean hasPort() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required uint32 port = 1;</code>
+         *
+         * <pre>
+         * Port to send the HTTP request.
+         * </pre>
+         */
+        public int getPort() {
+          return port_;
+        }
+        /**
+         * <code>required uint32 port = 1;</code>
+         *
+         * <pre>
+         * Port to send the HTTP request.
+         * </pre>
+         */
+        public Builder setPort(int value) {
+          bitField0_ |= 0x00000001;
+          port_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required uint32 port = 1;</code>
+         *
+         * <pre>
+         * Port to send the HTTP request.
+         * </pre>
+         */
+        public Builder clearPort() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          port_ = 0;
+          onChanged();
+          return this;
+        }
+
+        // optional string path = 2;
+        private java.lang.Object path_ = "";
+        /**
+         * <code>optional string path = 2;</code>
+         *
+         * <pre>
+         * HTTP request path.
+         * </pre>
+         */
+        public boolean hasPath() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional string path = 2;</code>
+         *
+         * <pre>
+         * HTTP request path.
+         * </pre>
+         */
+        public java.lang.String getPath() {
+          java.lang.Object ref = path_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            path_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>optional string path = 2;</code>
+         *
+         * <pre>
+         * HTTP request path.
+         * </pre>
+         */
+        public com.google.protobuf.ByteString
+            getPathBytes() {
+          java.lang.Object ref = path_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            path_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>optional string path = 2;</code>
+         *
+         * <pre>
+         * HTTP request path.
+         * </pre>
+         */
+        public Builder setPath(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+          path_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string path = 2;</code>
+         *
+         * <pre>
+         * HTTP request path.
+         * </pre>
+         */
+        public Builder clearPath() {
+          bitField0_ = (bitField0_ & ~0x00000002);
+          path_ = getDefaultInstance().getPath();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string path = 2;</code>
+         *
+         * <pre>
+         * HTTP request path.
+         * </pre>
+         */
+        public Builder setPathBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+          path_ = value;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.CheckInfo.Http)
+      }
+
+      static {
+        defaultInstance = new Http(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.CheckInfo.Http)
+    }
+
+    public interface TcpOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required uint32 port = 1;
+      /**
+       * <code>required uint32 port = 1;</code>
+       */
+      boolean hasPort();
+      /**
+       * <code>required uint32 port = 1;</code>
+       */
+      int getPort();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.CheckInfo.Tcp}
+     *
+     * <pre>
+     * Describes a TCP check, i.e. based on establishing a TCP connection to
+     * the specified port. Note that &lt;host&gt; is not configurable and is resolved
+     * automatically to 127.0.0.1.
+     * </pre>
+     */
+    public static final class Tcp extends
+        com.google.protobuf.GeneratedMessage
+        implements TcpOrBuilder {
+      // Use Tcp.newBuilder() to construct.
+      private Tcp(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Tcp(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Tcp defaultInstance;
+      public static Tcp getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Tcp getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Tcp(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 8: {
+                bitField0_ |= 0x00000001;
+                port_ = input.readUInt32();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CheckInfo_Tcp_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CheckInfo_Tcp_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.CheckInfo.Tcp.class, org.apache.mesos.v1.Protos.CheckInfo.Tcp.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Tcp> PARSER =
+          new com.google.protobuf.AbstractParser<Tcp>() {
+        public Tcp parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Tcp(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Tcp> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required uint32 port = 1;
+      public static final int PORT_FIELD_NUMBER = 1;
+      private int port_;
+      /**
+       * <code>required uint32 port = 1;</code>
+       */
+      public boolean hasPort() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required uint32 port = 1;</code>
+       */
+      public int getPort() {
+        return port_;
+      }
+
+      private void initFields() {
+        port_ = 0;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasPort()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeUInt32(1, port_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeUInt32Size(1, port_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.Protos.CheckInfo.Tcp parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.CheckInfo.Tcp parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.CheckInfo.Tcp parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.CheckInfo.Tcp parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.CheckInfo.Tcp parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.CheckInfo.Tcp parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.CheckInfo.Tcp parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.CheckInfo.Tcp parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.CheckInfo.Tcp parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.CheckInfo.Tcp parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.Protos.CheckInfo.Tcp prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.CheckInfo.Tcp}
+       *
+       * <pre>
+       * Describes a TCP check, i.e. based on establishing a TCP connection to
+       * the specified port. Note that &lt;host&gt; is not configurable and is resolved
+       * automatically to 127.0.0.1.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.Protos.CheckInfo.TcpOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CheckInfo_Tcp_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CheckInfo_Tcp_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.CheckInfo.Tcp.class, org.apache.mesos.v1.Protos.CheckInfo.Tcp.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.Protos.CheckInfo.Tcp.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          port_ = 0;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CheckInfo_Tcp_descriptor;
+        }
+
+        public org.apache.mesos.v1.Protos.CheckInfo.Tcp getDefaultInstanceForType() {
+          return org.apache.mesos.v1.Protos.CheckInfo.Tcp.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.Protos.CheckInfo.Tcp build() {
+          org.apache.mesos.v1.Protos.CheckInfo.Tcp result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.Protos.CheckInfo.Tcp buildPartial() {
+          org.apache.mesos.v1.Protos.CheckInfo.Tcp result = new org.apache.mesos.v1.Protos.CheckInfo.Tcp(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.port_ = port_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.Protos.CheckInfo.Tcp) {
+            return mergeFrom((org.apache.mesos.v1.Protos.CheckInfo.Tcp)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.Protos.CheckInfo.Tcp other) {
+          if (other == org.apache.mesos.v1.Protos.CheckInfo.Tcp.getDefaultInstance()) return this;
+          if (other.hasPort()) {
+            setPort(other.getPort());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasPort()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.Protos.CheckInfo.Tcp parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.Protos.CheckInfo.Tcp) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required uint32 port = 1;
+        private int port_ ;
+        /**
+         * <code>required uint32 port = 1;</code>
+         */
+        public boolean hasPort() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required uint32 port = 1;</code>
+         */
+        public int getPort() {
+          return port_;
+        }
+        /**
+         * <code>required uint32 port = 1;</code>
+         */
+        public Builder setPort(int value) {
+          bitField0_ |= 0x00000001;
+          port_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required uint32 port = 1;</code>
+         */
+        public Builder clearPort() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          port_ = 0;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.CheckInfo.Tcp)
+      }
+
+      static {
+        defaultInstance = new Tcp(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.CheckInfo.Tcp)
+    }
+
+    private int bitField0_;
+    // optional .mesos.v1.CheckInfo.Type type = 1;
+    public static final int TYPE_FIELD_NUMBER = 1;
+    private org.apache.mesos.v1.Protos.CheckInfo.Type type_;
+    /**
+     * <code>optional .mesos.v1.CheckInfo.Type type = 1;</code>
+     *
+     * <pre>
+     * The type of the check.
+     * </pre>
+     */
+    public boolean hasType() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional .mesos.v1.CheckInfo.Type type = 1;</code>
+     *
+     * <pre>
+     * The type of the check.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.CheckInfo.Type getType() {
+      return type_;
+    }
+
+    // optional .mesos.v1.CheckInfo.Command command = 2;
+    public static final int COMMAND_FIELD_NUMBER = 2;
+    private org.apache.mesos.v1.Protos.CheckInfo.Command command_;
+    /**
+     * <code>optional .mesos.v1.CheckInfo.Command command = 2;</code>
+     *
+     * <pre>
+     * Command check.
+     * </pre>
+     */
+    public boolean hasCommand() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional .mesos.v1.CheckInfo.Command command = 2;</code>
+     *
+     * <pre>
+     * Command check.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.CheckInfo.Command getCommand() {
+      return command_;
+    }
+    /**
+     * <code>optional .mesos.v1.CheckInfo.Command command = 2;</code>
+     *
+     * <pre>
+     * Command check.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.CheckInfo.CommandOrBuilder getCommandOrBuilder() {
+      return command_;
+    }
+
+    // optional .mesos.v1.CheckInfo.Http http = 3;
+    public static final int HTTP_FIELD_NUMBER = 3;
+    private org.apache.mesos.v1.Protos.CheckInfo.Http http_;
+    /**
+     * <code>optional .mesos.v1.CheckInfo.Http http = 3;</code>
+     *
+     * <pre>
+     * HTTP check.
+     * </pre>
+     */
+    public boolean hasHttp() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional .mesos.v1.CheckInfo.Http http = 3;</code>
+     *
+     * <pre>
+     * HTTP check.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.CheckInfo.Http getHttp() {
+      return http_;
+    }
+    /**
+     * <code>optional .mesos.v1.CheckInfo.Http http = 3;</code>
+     *
+     * <pre>
+     * HTTP check.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.CheckInfo.HttpOrBuilder getHttpOrBuilder() {
+      return http_;
+    }
+
+    // optional .mesos.v1.CheckInfo.Tcp tcp = 7;
+    public static final int TCP_FIELD_NUMBER = 7;
+    private org.apache.mesos.v1.Protos.CheckInfo.Tcp tcp_;
+    /**
+     * <code>optional .mesos.v1.CheckInfo.Tcp tcp = 7;</code>
+     *
+     * <pre>
+     * TCP check.
+     * </pre>
+     */
+    public boolean hasTcp() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional .mesos.v1.CheckInfo.Tcp tcp = 7;</code>
+     *
+     * <pre>
+     * TCP check.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.CheckInfo.Tcp getTcp() {
+      return tcp_;
+    }
+    /**
+     * <code>optional .mesos.v1.CheckInfo.Tcp tcp = 7;</code>
+     *
+     * <pre>
+     * TCP check.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.CheckInfo.TcpOrBuilder getTcpOrBuilder() {
+      return tcp_;
+    }
+
+    // optional double delay_seconds = 4 [default = 15];
+    public static final int DELAY_SECONDS_FIELD_NUMBER = 4;
+    private double delaySeconds_;
+    /**
+     * <code>optional double delay_seconds = 4 [default = 15];</code>
+     *
+     * <pre>
+     * Amount of time to wait to start checking the task after it
+     * transitions to `TASK_RUNNING` or `TASK_STARTING` if the latter
+     * is used by the executor.
+     * </pre>
+     */
+    public boolean hasDelaySeconds() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional double delay_seconds = 4 [default = 15];</code>
+     *
+     * <pre>
+     * Amount of time to wait to start checking the task after it
+     * transitions to `TASK_RUNNING` or `TASK_STARTING` if the latter
+     * is used by the executor.
+     * </pre>
+     */
+    public double getDelaySeconds() {
+      return delaySeconds_;
+    }
+
+    // optional double interval_seconds = 5 [default = 10];
+    public static final int INTERVAL_SECONDS_FIELD_NUMBER = 5;
+    private double intervalSeconds_;
+    /**
+     * <code>optional double interval_seconds = 5 [default = 10];</code>
+     *
+     * <pre>
+     * Interval between check attempts, i.e., amount of time to wait after
+     * the previous check finished or timed out to start the next check.
+     * </pre>
+     */
+    public boolean hasIntervalSeconds() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional double interval_seconds = 5 [default = 10];</code>
+     *
+     * <pre>
+     * Interval between check attempts, i.e., amount of time to wait after
+     * the previous check finished or timed out to start the next check.
+     * </pre>
+     */
+    public double getIntervalSeconds() {
+      return intervalSeconds_;
+    }
+
+    // optional double timeout_seconds = 6 [default = 20];
+    public static final int TIMEOUT_SECONDS_FIELD_NUMBER = 6;
+    private double timeoutSeconds_;
+    /**
+     * <code>optional double timeout_seconds = 6 [default = 20];</code>
+     *
+     * <pre>
+     * Amount of time to wait for the check to complete. Zero means infinite
+     * timeout.
+     *
+     * After this timeout, the check attempt is aborted and no result is
+     * reported. Note that this may be considered a state change and hence
+     * may trigger a check status change delivery to the corresponding
+     * scheduler. See `CheckStatusInfo` for more details.
+     * </pre>
+     */
+    public boolean hasTimeoutSeconds() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional double timeout_seconds = 6 [default = 20];</code>
+     *
+     * <pre>
+     * Amount of time to wait for the check to complete. Zero means infinite
+     * timeout.
+     *
+     * After this timeout, the check attempt is aborted and no result is
+     * reported. Note that this may be considered a state change and hence
+     * may trigger a check status change delivery to the corresponding
+     * scheduler. See `CheckStatusInfo` for more details.
+     * </pre>
+     */
+    public double getTimeoutSeconds() {
+      return timeoutSeconds_;
+    }
+
+    private void initFields() {
+      type_ = org.apache.mesos.v1.Protos.CheckInfo.Type.UNKNOWN;
+      command_ = org.apache.mesos.v1.Protos.CheckInfo.Command.getDefaultInstance();
+      http_ = org.apache.mesos.v1.Protos.CheckInfo.Http.getDefaultInstance();
+      tcp_ = org.apache.mesos.v1.Protos.CheckInfo.Tcp.getDefaultInstance();
+      delaySeconds_ = 15D;
+      intervalSeconds_ = 10D;
+      timeoutSeconds_ = 20D;
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (hasCommand()) {
+        if (!getCommand().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasHttp()) {
+        if (!getHttp().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasTcp()) {
+        if (!getTcp().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeEnum(1, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(2, command_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeMessage(3, http_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeDouble(4, delaySeconds_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeDouble(5, intervalSeconds_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeDouble(6, timeoutSeconds_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeMessage(7, tcp_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(1, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, command_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, http_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(4, delaySeconds_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(5, intervalSeconds_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(6, timeoutSeconds_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(7, tcp_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.CheckInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.CheckInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.CheckInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.CheckInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.CheckInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.CheckInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.CheckInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.CheckInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.CheckInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.CheckInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.CheckInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.CheckInfo}
+     *
+     * <pre>
+     **
+     * Describes a general non-interpreting non-killing check for a task or
+     * executor (or any arbitrary process/command). A type is picked by
+     * specifying one of the optional fields. Specifying more than one type
+     * is an error.
+     *
+     * NOTE: This API is unstable and the related feature is experimental.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.CheckInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CheckInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CheckInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.CheckInfo.class, org.apache.mesos.v1.Protos.CheckInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.CheckInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getCommandFieldBuilder();
+          getHttpFieldBuilder();
+          getTcpFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        type_ = org.apache.mesos.v1.Protos.CheckInfo.Type.UNKNOWN;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (commandBuilder_ == null) {
+          command_ = org.apache.mesos.v1.Protos.CheckInfo.Command.getDefaultInstance();
+        } else {
+          commandBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        if (httpBuilder_ == null) {
+          http_ = org.apache.mesos.v1.Protos.CheckInfo.Http.getDefaultInstance();
+        } else {
+          httpBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        if (tcpBuilder_ == null) {
+          tcp_ = org.apache.mesos.v1.Protos.CheckInfo.Tcp.getDefaultInstance();
+        } else {
+          tcpBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        delaySeconds_ = 15D;
+        bitField0_ = (bitField0_ & ~0x00000010);
+        intervalSeconds_ = 10D;
+        bitField0_ = (bitField0_ & ~0x00000020);
+        timeoutSeconds_ = 20D;
+        bitField0_ = (bitField0_ & ~0x00000040);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CheckInfo_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.CheckInfo getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.CheckInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.CheckInfo build() {
+        org.apache.mesos.v1.Protos.CheckInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.CheckInfo buildPartial() {
+        org.apache.mesos.v1.Protos.CheckInfo result = new org.apache.mesos.v1.Protos.CheckInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.type_ = type_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (commandBuilder_ == null) {
+          result.command_ = command_;
+        } else {
+          result.command_ = commandBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        if (httpBuilder_ == null) {
+          result.http_ = http_;
+        } else {
+          result.http_ = httpBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        if (tcpBuilder_ == null) {
+          result.tcp_ = tcp_;
+        } else {
+          result.tcp_ = tcpBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.delaySeconds_ = delaySeconds_;
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        result.intervalSeconds_ = intervalSeconds_;
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        result.timeoutSeconds_ = timeoutSeconds_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.CheckInfo) {
+          return mergeFrom((org.apache.mesos.v1.Protos.CheckInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.CheckInfo other) {
+        if (other == org.apache.mesos.v1.Protos.CheckInfo.getDefaultInstance()) return this;
+        if (other.hasType()) {
+          setType(other.getType());
+        }
+        if (other.hasCommand()) {
+          mergeCommand(other.getCommand());
+        }
+        if (other.hasHttp()) {
+          mergeHttp(other.getHttp());
+        }
+        if (other.hasTcp()) {
+          mergeTcp(other.getTcp());
+        }
+        if (other.hasDelaySeconds()) {
+          setDelaySeconds(other.getDelaySeconds());
+        }
+        if (other.hasIntervalSeconds()) {
+          setIntervalSeconds(other.getIntervalSeconds());
+        }
+        if (other.hasTimeoutSeconds()) {
+          setTimeoutSeconds(other.getTimeoutSeconds());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (hasCommand()) {
+          if (!getCommand().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasHttp()) {
+          if (!getHttp().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasTcp()) {
+          if (!getTcp().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.CheckInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.CheckInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional .mesos.v1.CheckInfo.Type type = 1;
+      private org.apache.mesos.v1.Protos.CheckInfo.Type type_ = org.apache.mesos.v1.Protos.CheckInfo.Type.UNKNOWN;
+      /**
+       * <code>optional .mesos.v1.CheckInfo.Type type = 1;</code>
+       *
+       * <pre>
+       * The type of the check.
+       * </pre>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.v1.CheckInfo.Type type = 1;</code>
+       *
+       * <pre>
+       * The type of the check.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.CheckInfo.Type getType() {
+        return type_;
+      }
+      /**
+       * <code>optional .mesos.v1.CheckInfo.Type type = 1;</code>
+       *
+       * <pre>
+       * The type of the check.
+       * </pre>
+       */
+      public Builder setType(org.apache.mesos.v1.Protos.CheckInfo.Type value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000001;
+        type_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CheckInfo.Type type = 1;</code>
+       *
+       * <pre>
+       * The type of the check.
+       * </pre>
+       */
+      public Builder clearType() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        type_ = org.apache.mesos.v1.Protos.CheckInfo.Type.UNKNOWN;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.v1.CheckInfo.Command command = 2;
+      private org.apache.mesos.v1.Protos.CheckInfo.Command command_ = org.apache.mesos.v1.Protos.CheckInfo.Command.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.CheckInfo.Command, org.apache.mesos.v1.Protos.CheckInfo.Command.Builder, org.apache.mesos.v1.Protos.CheckInfo.CommandOrBuilder> commandBuilder_;
+      /**
+       * <code>optional .mesos.v1.CheckInfo.Command command = 2;</code>
+       *
+       * <pre>
+       * Command check.
+       * </pre>
+       */
+      public boolean hasCommand() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.v1.CheckInfo.Command command = 2;</code>
+       *
+       * <pre>
+       * Command check.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.CheckInfo.Command getCommand() {
+        if (commandBuilder_ == null) {
+          return command_;
+        } else {
+          return commandBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.CheckInfo.Command command = 2;</code>
+       *
+       * <pre>
+       * Command check.
+       * </pre>
+       */
+      public Builder setCommand(org.apache.mesos.v1.Protos.CheckInfo.Command value) {
+        if (commandBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          command_ = value;
+          onChanged();
+        } else {
+          commandBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CheckInfo.Command command = 2;</code>
+       *
+       * <pre>
+       * Command check.
+       * </pre>
+       */
+      public Builder setCommand(
+          org.apache.mesos.v1.Protos.CheckInfo.Command.Builder builderForValue) {
+        if (commandBuilder_ == null) {
+          command_ = builderForValue.build();
+          onChanged();
+        } else {
+          commandBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CheckInfo.Command command = 2;</code>
+       *
+       * <pre>
+       * Command check.
+       * </pre>
+       */
+      public Builder mergeCommand(org.apache.mesos.v1.Protos.CheckInfo.Command value) {
+        if (commandBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              command_ != org.apache.mesos.v1.Protos.CheckInfo.Command.getDefaultInstance()) {
+            command_ =
+              org.apache.mesos.v1.Protos.CheckInfo.Command.newBuilder(command_).mergeFrom(value).buildPartial();
+          } else {
+            command_ = value;
+          }
+          onChanged();
+        } else {
+          commandBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CheckInfo.Command command = 2;</code>
+       *
+       * <pre>
+       * Command check.
+       * </pre>
+       */
+      public Builder clearCommand() {
+        if (commandBuilder_ == null) {
+          command_ = org.apache.mesos.v1.Protos.CheckInfo.Command.getDefaultInstance();
+          onChanged();
+        } else {
+          commandBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CheckInfo.Command command = 2;</code>
+       *
+       * <pre>
+       * Command check.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.CheckInfo.Command.Builder getCommandBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getCommandFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.CheckInfo.Command command = 2;</code>
+       *
+       * <pre>
+       * Command check.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.CheckInfo.CommandOrBuilder getCommandOrBuilder() {
+        if (commandBuilder_ != null) {
+          return commandBuilder_.getMessageOrBuilder();
+        } else {
+          return command_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.CheckInfo.Command command = 2;</code>
+       *
+       * <pre>
+       * Command check.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.CheckInfo.Command, org.apache.mesos.v1.Protos.CheckInfo.Command.Builder, org.apache.mesos.v1.Protos.CheckInfo.CommandOrBuilder> 
+          getCommandFieldBuilder() {
+        if (commandBuilder_ == null) {
+          commandBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.CheckInfo.Command, org.apache.mesos.v1.Protos.CheckInfo.Command.Builder, org.apache.mesos.v1.Protos.CheckInfo.CommandOrBuilder>(
+                  command_,
+                  getParentForChildren(),
+                  isClean());
+          command_ = null;
+        }
+        return commandBuilder_;
+      }
+
+      // optional .mesos.v1.CheckInfo.Http http = 3;
+      private org.apache.mesos.v1.Protos.CheckInfo.Http http_ = org.apache.mesos.v1.Protos.CheckInfo.Http.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.CheckInfo.Http, org.apache.mesos.v1.Protos.CheckInfo.Http.Builder, org.apache.mesos.v1.Protos.CheckInfo.HttpOrBuilder> httpBuilder_;
+      /**
+       * <code>optional .mesos.v1.CheckInfo.Http http = 3;</code>
+       *
+       * <pre>
+       * HTTP check.
+       * </pre>
+       */
+      public boolean hasHttp() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.v1.CheckInfo.Http http = 3;</code>
+       *
+       * <pre>
+       * HTTP check.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.CheckInfo.Http getHttp() {
+        if (httpBuilder_ == null) {
+          return http_;
+        } else {
+          return httpBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.CheckInfo.Http http = 3;</code>
+       *
+       * <pre>
+       * HTTP check.
+       * </pre>
+       */
+      public Builder setHttp(org.apache.mesos.v1.Protos.CheckInfo.Http value) {
+        if (httpBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          http_ = value;
+          onChanged();
+        } else {
+          httpBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CheckInfo.Http http = 3;</code>
+       *
+       * <pre>
+       * HTTP check.
+       * </pre>
+       */
+      public Builder setHttp(
+          org.apache.mesos.v1.Protos.CheckInfo.Http.Builder builderForValue) {
+        if (httpBuilder_ == null) {
+          http_ = builderForValue.build();
+          onChanged();
+        } else {
+          httpBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CheckInfo.Http http = 3;</code>
+       *
+       * <pre>
+       * HTTP check.
+       * </pre>
+       */
+      public Builder mergeHttp(org.apache.mesos.v1.Protos.CheckInfo.Http value) {
+        if (httpBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) == 0x00000004) &&
+              http_ != org.apache.mesos.v1.Protos.CheckInfo.Http.getDefaultInstance()) {
+            http_ =
+              org.apache.mesos.v1.Protos.CheckInfo.Http.newBuilder(http_).mergeFrom(value).buildPartial();
+          } else {
+            http_ = value;
+          }
+          onChanged();
+        } else {
+          httpBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CheckInfo.Http http = 3;</code>
+       *
+       * <pre>
+       * HTTP check.
+       * </pre>
+       */
+      public Builder clearHttp() {
+        if (httpBuilder_ == null) {
+          http_ = org.apache.mesos.v1.Protos.CheckInfo.Http.getDefaultInstance();
+          onChanged();
+        } else {
+          httpBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CheckInfo.Http http = 3;</code>
+       *
+       * <pre>
+       * HTTP check.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.CheckInfo.Http.Builder getHttpBuilder() {
+        bitField0_ |= 0x00000004;
+        onChanged();
+        return getHttpFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.CheckInfo.Http http = 3;</code>
+       *
+       * <pre>
+       * HTTP check.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.CheckInfo.HttpOrBuilder getHttpOrBuilder() {
+        if (httpBuilder_ != null) {
+          return httpBuilder_.getMessageOrBuilder();
+        } else {
+          return http_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.CheckInfo.Http http = 3;</code>
+       *
+       * <pre>
+       * HTTP check.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.CheckInfo.Http, org.apache.mesos.v1.Protos.CheckInfo.Http.Builder, org.apache.mesos.v1.Protos.CheckInfo.HttpOrBuilder> 
+          getHttpFieldBuilder() {
+        if (httpBuilder_ == null) {
+          httpBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.CheckInfo.Http, org.apache.mesos.v1.Protos.CheckInfo.Http.Builder, org.apache.mesos.v1.Protos.CheckInfo.HttpOrBuilder>(
+                  http_,
+                  getParentForChildren(),
+                  isClean());
+          http_ = null;
+        }
+        return httpBuilder_;
+      }
+
+      // optional .mesos.v1.CheckInfo.Tcp tcp = 7;
+      private org.apache.mesos.v1.Protos.CheckInfo.Tcp tcp_ = org.apache.mesos.v1.Protos.CheckInfo.Tcp.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.CheckInfo.Tcp, org.apache.mesos.v1.Protos.CheckInfo.Tcp.Builder, org.apache.mesos.v1.Protos.CheckInfo.TcpOrBuilder> tcpBuilder_;
+      /**
+       * <code>optional .mesos.v1.CheckInfo.Tcp tcp = 7;</code>
+       *
+       * <pre>
+       * TCP check.
+       * </pre>
+       */
+      public boolean hasTcp() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.v1.CheckInfo.Tcp tcp = 7;</code>
+       *
+       * <pre>
+       * TCP check.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.CheckInfo.Tcp getTcp() {
+        if (tcpBuilder_ == null) {
+          return tcp_;
+        } else {
+          return tcpBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.CheckInfo.Tcp tcp = 7;</code>
+       *
+       * <pre>
+       * TCP check.
+       * </pre>
+       */
+      public Builder setTcp(org.apache.mesos.v1.Protos.CheckInfo.Tcp value) {
+        if (tcpBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          tcp_ = value;
+          onChanged();
+        } else {
+          tcpBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CheckInfo.Tcp tcp = 7;</code>
+       *
+       * <pre>
+       * TCP check.
+       * </pre>
+       */
+      public Builder setTcp(
+          org.apache.mesos.v1.Protos.CheckInfo.Tcp.Builder builderForValue) {
+        if (tcpBuilder_ == null) {
+          tcp_ = builderForValue.build();
+          onChanged();
+        } else {
+          tcpBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CheckInfo.Tcp tcp = 7;</code>
+       *
+       * <pre>
+       * TCP check.
+       * </pre>
+       */
+      public Builder mergeTcp(org.apache.mesos.v1.Protos.CheckInfo.Tcp value) {
+        if (tcpBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008) &&
+              tcp_ != org.apache.mesos.v1.Protos.CheckInfo.Tcp.getDefaultInstance()) {
+            tcp_ =
+              org.apache.mesos.v1.Protos.CheckInfo.Tcp.newBuilder(tcp_).mergeFrom(value).buildPartial();
+          } else {
+            tcp_ = value;
+          }
+          onChanged();
+        } else {
+          tcpBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CheckInfo.Tcp tcp = 7;</code>
+       *
+       * <pre>
+       * TCP check.
+       * </pre>
+       */
+      public Builder clearTcp() {
+        if (tcpBuilder_ == null) {
+          tcp_ = org.apache.mesos.v1.Protos.CheckInfo.Tcp.getDefaultInstance();
+          onChanged();
+        } else {
+          tcpBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CheckInfo.Tcp tcp = 7;</code>
+       *
+       * <pre>
+       * TCP check.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.CheckInfo.Tcp.Builder getTcpBuilder() {
+        bitField0_ |= 0x00000008;
+        onChanged();
+        return getTcpFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.CheckInfo.Tcp tcp = 7;</code>
+       *
+       * <pre>
+       * TCP check.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.CheckInfo.TcpOrBuilder getTcpOrBuilder() {
+        if (tcpBuilder_ != null) {
+          return tcpBuilder_.getMessageOrBuilder();
+        } else {
+          return tcp_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.CheckInfo.Tcp tcp = 7;</code>
+       *
+       * <pre>
+       * TCP check.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.CheckInfo.Tcp, org.apache.mesos.v1.Protos.CheckInfo.Tcp.Builder, org.apache.mesos.v1.Protos.CheckInfo.TcpOrBuilder> 
+          getTcpFieldBuilder() {
+        if (tcpBuilder_ == null) {
+          tcpBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.CheckInfo.Tcp, org.apache.mesos.v1.Protos.CheckInfo.Tcp.Builder, org.apache.mesos.v1.Protos.CheckInfo.TcpOrBuilder>(
+                  tcp_,
+                  getParentForChildren(),
+                  isClean());
+          tcp_ = null;
+        }
+        return tcpBuilder_;
+      }
+
+      // optional double delay_seconds = 4 [default = 15];
+      private double delaySeconds_ = 15D;
+      /**
+       * <code>optional double delay_seconds = 4 [default = 15];</code>
+       *
+       * <pre>
+       * Amount of time to wait to start checking the task after it
+       * transitions to `TASK_RUNNING` or `TASK_STARTING` if the latter
+       * is used by the executor.
+       * </pre>
+       */
+      public boolean hasDelaySeconds() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional double delay_seconds = 4 [default = 15];</code>
+       *
+       * <pre>
+       * Amount of time to wait to start checking the task after it
+       * transitions to `TASK_RUNNING` or `TASK_STARTING` if the latter
+       * is used by the executor.
+       * </pre>
+       */
+      public double getDelaySeconds() {
+        return delaySeconds_;
+      }
+      /**
+       * <code>optional double delay_seconds = 4 [default = 15];</code>
+       *
+       * <pre>
+       * Amount of time to wait to start checking the task after it
+       * transitions to `TASK_RUNNING` or `TASK_STARTING` if the latter
+       * is used by the executor.
+       * </pre>
+       */
+      public Builder setDelaySeconds(double value) {
+        bitField0_ |= 0x00000010;
+        delaySeconds_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double delay_seconds = 4 [default = 15];</code>
+       *
+       * <pre>
+       * Amount of time to wait to start checking the task after it
+       * transitions to `TASK_RUNNING` or `TASK_STARTING` if the latter
+       * is used by the executor.
+       * </pre>
+       */
+      public Builder clearDelaySeconds() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        delaySeconds_ = 15D;
+        onChanged();
+        return this;
+      }
+
+      // optional double interval_seconds = 5 [default = 10];
+      private double intervalSeconds_ = 10D;
+      /**
+       * <code>optional double interval_seconds = 5 [default = 10];</code>
+       *
+       * <pre>
+       * Interval between check attempts, i.e., amount of time to wait after
+       * the previous check finished or timed out to start the next check.
+       * </pre>
+       */
+      public boolean hasIntervalSeconds() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional double interval_seconds = 5 [default = 10];</code>
+       *
+       * <pre>
+       * Interval between check attempts, i.e., amount of time to wait after
+       * the previous check finished or timed out to start the next check.
+       * </pre>
+       */
+      public double getIntervalSeconds() {
+        return intervalSeconds_;
+      }
+      /**
+       * <code>optional double interval_seconds = 5 [default = 10];</code>
+       *
+       * <pre>
+       * Interval between check attempts, i.e., amount of time to wait after
+       * the previous check finished or timed out to start the next check.
+       * </pre>
+       */
+      public Builder setIntervalSeconds(double value) {
+        bitField0_ |= 0x00000020;
+        intervalSeconds_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double interval_seconds = 5 [default = 10];</code>
+       *
+       * <pre>
+       * Interval between check attempts, i.e., amount of time to wait after
+       * the previous check finished or timed out to start the next check.
+       * </pre>
+       */
+      public Builder clearIntervalSeconds() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        intervalSeconds_ = 10D;
+        onChanged();
+        return this;
+      }
+
+      // optional double timeout_seconds = 6 [default = 20];
+      private double timeoutSeconds_ = 20D;
+      /**
+       * <code>optional double timeout_seconds = 6 [default = 20];</code>
+       *
+       * <pre>
+       * Amount of time to wait for the check to complete. Zero means infinite
+       * timeout.
+       *
+       * After this timeout, the check attempt is aborted and no result is
+       * reported. Note that this may be considered a state change and hence
+       * may trigger a check status change delivery to the corresponding
+       * scheduler. See `CheckStatusInfo` for more details.
+       * </pre>
+       */
+      public boolean hasTimeoutSeconds() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional double timeout_seconds = 6 [default = 20];</code>
+       *
+       * <pre>
+       * Amount of time to wait for the check to complete. Zero means infinite
+       * timeout.
+       *
+       * After this timeout, the check attempt is aborted and no result is
+       * reported. Note that this may be considered a state change and hence
+       * may trigger a check status change delivery to the corresponding
+       * scheduler. See `CheckStatusInfo` for more details.
+       * </pre>
+       */
+      public double getTimeoutSeconds() {
+        return timeoutSeconds_;
+      }
+      /**
+       * <code>optional double timeout_seconds = 6 [default = 20];</code>
+       *
+       * <pre>
+       * Amount of time to wait for the check to complete. Zero means infinite
+       * timeout.
+       *
+       * After this timeout, the check attempt is aborted and no result is
+       * reported. Note that this may be considered a state change and hence
+       * may trigger a check status change delivery to the corresponding
+       * scheduler. See `CheckStatusInfo` for more details.
+       * </pre>
+       */
+      public Builder setTimeoutSeconds(double value) {
+        bitField0_ |= 0x00000040;
+        timeoutSeconds_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double timeout_seconds = 6 [default = 20];</code>
+       *
+       * <pre>
+       * Amount of time to wait for the check to complete. Zero means infinite
+       * timeout.
+       *
+       * After this timeout, the check attempt is aborted and no result is
+       * reported. Note that this may be considered a state change and hence
+       * may trigger a check status change delivery to the corresponding
+       * scheduler. See `CheckStatusInfo` for more details.
+       * </pre>
+       */
+      public Builder clearTimeoutSeconds() {
+        bitField0_ = (bitField0_ & ~0x00000040);
+        timeoutSeconds_ = 20D;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.CheckInfo)
+    }
+
+    static {
+      defaultInstance = new CheckInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.CheckInfo)
+  }
+
+  public interface HealthCheckOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional double delay_seconds = 2 [default = 15];
+    /**
+     * <code>optional double delay_seconds = 2 [default = 15];</code>
+     *
+     * <pre>
+     * Amount of time to wait to start health checking the task after it
+     * transitions to `TASK_RUNNING` or `TASK_STATING` if the latter is
+     * used by the executor.
+     * </pre>
+     */
+    boolean hasDelaySeconds();
+    /**
+     * <code>optional double delay_seconds = 2 [default = 15];</code>
+     *
+     * <pre>
+     * Amount of time to wait to start health checking the task after it
+     * transitions to `TASK_RUNNING` or `TASK_STATING` if the latter is
+     * used by the executor.
+     * </pre>
+     */
+    double getDelaySeconds();
+
+    // optional double interval_seconds = 3 [default = 10];
+    /**
+     * <code>optional double interval_seconds = 3 [default = 10];</code>
+     *
+     * <pre>
+     * Interval between health checks, i.e., amount of time to wait after
+     * the previous health check finished or timed out to start the next
+     * health check.
+     * </pre>
+     */
+    boolean hasIntervalSeconds();
+    /**
+     * <code>optional double interval_seconds = 3 [default = 10];</code>
+     *
+     * <pre>
+     * Interval between health checks, i.e., amount of time to wait after
+     * the previous health check finished or timed out to start the next
+     * health check.
+     * </pre>
+     */
+    double getIntervalSeconds();
+
+    // optional double timeout_seconds = 4 [default = 20];
+    /**
+     * <code>optional double timeout_seconds = 4 [default = 20];</code>
+     *
+     * <pre>
+     * Amount of time to wait for the health check to complete. After this
+     * timeout, the health check is aborted and treated as a failure. Zero
+     * means infinite timeout.
+     * </pre>
+     */
+    boolean hasTimeoutSeconds();
+    /**
+     * <code>optional double timeout_seconds = 4 [default = 20];</code>
+     *
+     * <pre>
+     * Amount of time to wait for the health check to complete. After this
+     * timeout, the health check is aborted and treated as a failure. Zero
+     * means infinite timeout.
+     * </pre>
+     */
+    double getTimeoutSeconds();
+
+    // optional uint32 consecutive_failures = 5 [default = 3];
+    /**
+     * <code>optional uint32 consecutive_failures = 5 [default = 3];</code>
+     *
+     * <pre>
+     * Number of consecutive failures until the task is killed by the executor.
+     * </pre>
+     */
+    boolean hasConsecutiveFailures();
+    /**
+     * <code>optional uint32 consecutive_failures = 5 [default = 3];</code>
+     *
+     * <pre>
+     * Number of consecutive failures until the task is killed by the executor.
+     * </pre>
+     */
+    int getConsecutiveFailures();
+
+    // optional double grace_period_seconds = 6 [default = 10];
+    /**
+     * <code>optional double grace_period_seconds = 6 [default = 10];</code>
+     *
+     * <pre>
+     * Amount of time after the task is launched during which health check
+     * failures are ignored. Once a check succeeds for the first time,
+     * the grace period does not apply anymore. Note that it includes
+     * `delay_seconds`, i.e., setting `grace_period_seconds` &lt; `delay_seconds`
+     * has no effect.
+     * </pre>
+     */
+    boolean hasGracePeriodSeconds();
+    /**
+     * <code>optional double grace_period_seconds = 6 [default = 10];</code>
+     *
+     * <pre>
+     * Amount of time after the task is launched during which health check
+     * failures are ignored. Once a check succeeds for the first time,
+     * the grace period does not apply anymore. Note that it includes
+     * `delay_seconds`, i.e., setting `grace_period_seconds` &lt; `delay_seconds`
+     * has no effect.
+     * </pre>
+     */
+    double getGracePeriodSeconds();
+
+    // optional .mesos.v1.HealthCheck.Type type = 8;
+    /**
+     * <code>optional .mesos.v1.HealthCheck.Type type = 8;</code>
+     *
+     * <pre>
+     * The type of health check.
+     * </pre>
+     */
+    boolean hasType();
+    /**
+     * <code>optional .mesos.v1.HealthCheck.Type type = 8;</code>
+     *
+     * <pre>
+     * The type of health check.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.HealthCheck.Type getType();
+
+    // optional .mesos.v1.CommandInfo command = 7;
+    /**
+     * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+     *
+     * <pre>
+     * Command health check.
+     * </pre>
+     */
+    boolean hasCommand();
+    /**
+     * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+     *
+     * <pre>
+     * Command health check.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.CommandInfo getCommand();
+    /**
+     * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+     *
+     * <pre>
+     * Command health check.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.CommandInfoOrBuilder getCommandOrBuilder();
+
+    // optional .mesos.v1.HealthCheck.HTTPCheckInfo http = 1;
+    /**
+     * <code>optional .mesos.v1.HealthCheck.HTTPCheckInfo http = 1;</code>
+     *
+     * <pre>
+     * HTTP health check.
+     * </pre>
+     */
+    boolean hasHttp();
+    /**
+     * <code>optional .mesos.v1.HealthCheck.HTTPCheckInfo http = 1;</code>
+     *
+     * <pre>
+     * HTTP health check.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo getHttp();
+    /**
+     * <code>optional .mesos.v1.HealthCheck.HTTPCheckInfo http = 1;</code>
+     *
+     * <pre>
+     * HTTP health check.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfoOrBuilder getHttpOrBuilder();
+
+    // optional .mesos.v1.HealthCheck.TCPCheckInfo tcp = 9;
+    /**
+     * <code>optional .mesos.v1.HealthCheck.TCPCheckInfo tcp = 9;</code>
+     *
+     * <pre>
+     * TCP health check.
+     * </pre>
+     */
+    boolean hasTcp();
+    /**
+     * <code>optional .mesos.v1.HealthCheck.TCPCheckInfo tcp = 9;</code>
+     *
+     * <pre>
+     * TCP health check.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo getTcp();
+    /**
+     * <code>optional .mesos.v1.HealthCheck.TCPCheckInfo tcp = 9;</code>
+     *
+     * <pre>
+     * TCP health check.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfoOrBuilder getTcpOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.HealthCheck}
+   *
+   * <pre>
+   **
+   * Describes a health check for a task or executor (or any arbitrary
+   * process/command). A type is picked by specifying one of the
+   * optional fields. Specifying more than one type is an error.
+   * </pre>
+   */
+  public static final class HealthCheck extends
+      com.google.protobuf.GeneratedMessage
+      implements HealthCheckOrBuilder {
+    // Use HealthCheck.newBuilder() to construct.
+    private HealthCheck(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private HealthCheck(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final HealthCheck defaultInstance;
+    public static HealthCheck getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public HealthCheck getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private HealthCheck(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000080) == 0x00000080)) {
+                subBuilder = http_.toBuilder();
+              }
+              http_ = input.readMessage(org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(http_);
+                http_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000080;
+              break;
+            }
+            case 17: {
+              bitField0_ |= 0x00000001;
+              delaySeconds_ = input.readDouble();
+              break;
+            }
+            case 25: {
+              bitField0_ |= 0x00000002;
+              intervalSeconds_ = input.readDouble();
+              break;
+            }
+            case 33: {
+              bitField0_ |= 0x00000004;
+              timeoutSeconds_ = input.readDouble();
+              break;
+            }
+            case 40: {
+              bitField0_ |= 0x00000008;
+              consecutiveFailures_ = input.readUInt32();
+              break;
+            }
+            case 49: {
+              bitField0_ |= 0x00000010;
+              gracePeriodSeconds_ = input.readDouble();
+              break;
+            }
+            case 58: {
+              org.apache.mesos.v1.Protos.CommandInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000040) == 0x00000040)) {
+                subBuilder = command_.toBuilder();
+              }
+              command_ = input.readMessage(org.apache.mesos.v1.Protos.CommandInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(command_);
+                command_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000040;
+              break;
+            }
+            case 64: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.v1.Protos.HealthCheck.Type value = org.apache.mesos.v1.Protos.HealthCheck.Type.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(8, rawValue);
+              } else {
+                bitField0_ |= 0x00000020;
+                type_ = value;
+              }
+              break;
+            }
+            case 74: {
+              org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000100) == 0x00000100)) {
+                subBuilder = tcp_.toBuilder();
+              }
+              tcp_ = input.readMessage(org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(tcp_);
+                tcp_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000100;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_HealthCheck_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_HealthCheck_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.HealthCheck.class, org.apache.mesos.v1.Protos.HealthCheck.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<HealthCheck> PARSER =
+        new com.google.protobuf.AbstractParser<HealthCheck>() {
+      public HealthCheck parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new HealthCheck(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<HealthCheck> getParserForType() {
+      return PARSER;
+    }
+
+    /**
+     * Protobuf enum {@code mesos.v1.HealthCheck.Type}
+     */
+    public enum Type
+        implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>UNKNOWN = 0;</code>
+       */
+      UNKNOWN(0, 0),
+      /**
+       * <code>COMMAND = 1;</code>
+       */
+      COMMAND(1, 1),
+      /**
+       * <code>HTTP = 2;</code>
+       */
+      HTTP(2, 2),
+      /**
+       * <code>TCP = 3;</code>
+       */
+      TCP(3, 3),
+      ;
+
+      /**
+       * <code>UNKNOWN = 0;</code>
+       */
+      public static final int UNKNOWN_VALUE = 0;
+      /**
+       * <code>COMMAND = 1;</code>
+       */
+      public static final int COMMAND_VALUE = 1;
+      /**
+       * <code>HTTP = 2;</code>
+       */
+      public static final int HTTP_VALUE = 2;
+      /**
+       * <code>TCP = 3;</code>
+       */
+      public static final int TCP_VALUE = 3;
+
+
+      public final int getNumber() { return value; }
+
+      public static Type valueOf(int value) {
+        switch (value) {
+          case 0: return UNKNOWN;
+          case 1: return COMMAND;
+          case 2: return HTTP;
+          case 3: return TCP;
+          default: return null;
+        }
+      }
+
+      public static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalGetValueMap() {
+        return internalValueMap;
+      }
+      private static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap<Type>() {
+              public Type findValueByNumber(int number) {
+                return Type.valueOf(number);
+              }
+            };
+
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
+          getValueDescriptor() {
+        return getDescriptor().getValues().get(index);
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptorForType() {
+        return getDescriptor();
+      }
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.HealthCheck.getDescriptor().getEnumTypes().get(0);
+      }
+
+      private static final Type[] VALUES = values();
+
+      public static Type valueOf(
+          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+        if (desc.getType() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "EnumValueDescriptor is not for this type.");
+        }
+        return VALUES[desc.getIndex()];
+      }
+
+      private final int index;
+      private final int value;
+
+      private Type(int index, int value) {
+        this.index = index;
+        this.value = value;
+      }
+
+      // @@protoc_insertion_point(enum_scope:mesos.v1.HealthCheck.Type)
+    }
+
+    public interface HTTPCheckInfoOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // optional string scheme = 3;
+      /**
+       * <code>optional string scheme = 3;</code>
+       *
+       * <pre>
+       * Currently "http" and "https" are supported.
+       * </pre>
+       */
+      boolean hasScheme();
+      /**
+       * <code>optional string scheme = 3;</code>
+       *
+       * <pre>
+       * Currently "http" and "https" are supported.
+       * </pre>
+       */
+      java.lang.String getScheme();
+      /**
+       * <code>optional string scheme = 3;</code>
+       *
+       * <pre>
+       * Currently "http" and "https" are supported.
+       * </pre>
+       */
+      com.google.protobuf.ByteString
+          getSchemeBytes();
+
+      // required uint32 port = 1;
+      /**
+       * <code>required uint32 port = 1;</code>
+       *
+       * <pre>
+       * Port to send the HTTP request.
+       * </pre>
+       */
+      boolean hasPort();
+      /**
+       * <code>required uint32 port = 1;</code>
+       *
+       * <pre>
+       * Port to send the HTTP request.
+       * </pre>
+       */
+      int getPort();
+
+      // optional string path = 2;
+      /**
+       * <code>optional string path = 2;</code>
+       *
+       * <pre>
+       * HTTP request path.
+       * </pre>
+       */
+      boolean hasPath();
+      /**
+       * <code>optional string path = 2;</code>
+       *
+       * <pre>
+       * HTTP request path.
+       * </pre>
+       */
+      java.lang.String getPath();
+      /**
+       * <code>optional string path = 2;</code>
+       *
+       * <pre>
+       * HTTP request path.
+       * </pre>
+       */
+      com.google.protobuf.ByteString
+          getPathBytes();
+
+      // repeated uint32 statuses = 4;
+      /**
+       * <code>repeated uint32 statuses = 4;</code>
+       *
+       * <pre>
+       * NOTE: It is up to the custom executor to interpret and act on this
+       * field. Setting this field has no effect on the default executors.
+       *
+       * TODO(haosdent): Deprecate this field when we add better support for
+       * success and possibly failure statuses, e.g. ranges of success and
+       * failure statuses.
+       * </pre>
+       */
+      java.util.List<java.lang.Integer> getStatusesList();
+      /**
+       * <code>repeated uint32 statuses = 4;</code>
+       *
+       * <pre>
+       * NOTE: It is up to the custom executor to interpret and act on this
+       * field. Setting this field has no effect on the default executors.
+       *
+       * TODO(haosdent): Deprecate this field when we add better support for
+       * success and possibly failure statuses, e.g. ranges of success and
+       * failure statuses.
+       * </pre>
+       */
+      int getStatusesCount();
+      /**
+       * <code>repeated uint32 statuses = 4;</code>
+       *
+       * <pre>
+       * NOTE: It is up to the custom executor to interpret and act on this
+       * field. Setting this field has no effect on the default executors.
+       *
+       * TODO(haosdent): Deprecate this field when we add better support for
+       * success and possibly failure statuses, e.g. ranges of success and
+       * failure statuses.
+       * </pre>
+       */
+      int getStatuses(int index);
+    }
+    /**
+     * Protobuf type {@code mesos.v1.HealthCheck.HTTPCheckInfo}
+     *
+     * <pre>
+     * Describes an HTTP health check. Sends a GET request to
+     * scheme://&lt;host&gt;:port/path. Note that &lt;host&gt; is not configurable and is
+     * resolved automatically, in most cases to 127.0.0.1. Default executors
+     * treat return codes between 200 and 399 as success; custom executors
+     * may employ a different strategy, e.g. leveraging the `statuses` field.
+     * </pre>
+     */
+    public static final class HTTPCheckInfo extends
+        com.google.protobuf.GeneratedMessage
+        implements HTTPCheckInfoOrBuilder {
+      // Use HTTPCheckInfo.newBuilder() to construct.
+      private HTTPCheckInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private HTTPCheckInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final HTTPCheckInfo defaultInstance;
+      public static HTTPCheckInfo getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public HTTPCheckInfo getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private HTTPCheckInfo(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 8: {
+                bitField0_ |= 0x00000002;
+                port_ = input.readUInt32();
+                break;
+              }
+              case 18: {
+                bitField0_ |= 0x00000004;
+                path_ = input.readBytes();
+                break;
+              }
+              case 26: {
+                bitField0_ |= 0x00000001;
+                scheme_ = input.readBytes();
+                break;
+              }
+              case 32: {
+                if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
+                  statuses_ = new java.util.ArrayList<java.lang.Integer>();
+                  mutable_bitField0_ |= 0x00000008;
+                }
+                statuses_.add(input.readUInt32());
+                break;
+              }
+              case 34: {
+                int length = input.readRawVarint32();
+                int limit = input.pushLimit(length);
+                if (!((mutable_bitField0_ & 0x00000008) == 0x00000008) && input.getBytesUntilLimit() > 0) {
+                  statuses_ = new java.util.ArrayList<java.lang.Integer>();
+                  mutable_bitField0_ |= 0x00000008;
+                }
+                while (input.getBytesUntilLimit() > 0) {
+                  statuses_.add(input.readUInt32());
+                }
+                input.popLimit(limit);
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
+            statuses_ = java.util.Collections.unmodifiableList(statuses_);
+          }
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_HealthCheck_HTTPCheckInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_HealthCheck_HTTPCheckInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo.class, org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<HTTPCheckInfo> PARSER =
+          new com.google.protobuf.AbstractParser<HTTPCheckInfo>() {
+        public HTTPCheckInfo parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new HTTPCheckInfo(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<HTTPCheckInfo> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // optional string scheme = 3;
+      public static final int SCHEME_FIELD_NUMBER = 3;
+      private java.lang.Object scheme_;
+      /**
+       * <code>optional string scheme = 3;</code>
+       *
+       * <pre>
+       * Currently "http" and "https" are supported.
+       * </pre>
+       */
+      public boolean hasScheme() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional string scheme = 3;</code>
+       *
+       * <pre>
+       * Currently "http" and "https" are supported.
+       * </pre>
+       */
+      public java.lang.String getScheme() {
+        java.lang.Object ref = scheme_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            scheme_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>optional string scheme = 3;</code>
+       *
+       * <pre>
+       * Currently "http" and "https" are supported.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getSchemeBytes() {
+        java.lang.Object ref = scheme_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          scheme_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      // required uint32 port = 1;
+      public static final int PORT_FIELD_NUMBER = 1;
+      private int port_;
+      /**
+       * <code>required uint32 port = 1;</code>
+       *
+       * <pre>
+       * Port to send the HTTP request.
+       * </pre>
+       */
+      public boolean hasPort() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required uint32 port = 1;</code>
+       *
+       * <pre>
+       * Port to send the HTTP request.
+       * </pre>
+       */
+      public int getPort() {
+        return port_;
+      }
+
+      // optional string path = 2;
+      public static final int PATH_FIELD_NUMBER = 2;
+      private java.lang.Object path_;
+      /**
+       * <code>optional string path = 2;</code>
+       *
+       * <pre>
+       * HTTP request path.
+       * </pre>
+       */
+      public boolean hasPath() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional string path = 2;</code>
+       *
+       * <pre>
+       * HTTP request path.
+       * </pre>
+       */
+      public java.lang.String getPath() {
+        java.lang.Object ref = path_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            path_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>optional string path = 2;</code>
+       *
+       * <pre>
+       * HTTP request path.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getPathBytes() {
+        java.lang.Object ref = path_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          path_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      // repeated uint32 statuses = 4;
+      public static final int STATUSES_FIELD_NUMBER = 4;
+      private java.util.List<java.lang.Integer> statuses_;
+      /**
+       * <code>repeated uint32 statuses = 4;</code>
+       *
+       * <pre>
+       * NOTE: It is up to the custom executor to interpret and act on this
+       * field. Setting this field has no effect on the default executors.
+       *
+       * TODO(haosdent): Deprecate this field when we add better support for
+       * success and possibly failure statuses, e.g. ranges of success and
+       * failure statuses.
+       * </pre>
+       */
+      public java.util.List<java.lang.Integer>
+          getStatusesList() {
+        return statuses_;
+      }
+      /**
+       * <code>repeated uint32 statuses = 4;</code>
+       *
+       * <pre>
+       * NOTE: It is up to the custom executor to interpret and act on this
+       * field. Setting this field has no effect on the default executors.
+       *
+       * TODO(haosdent): Deprecate this field when we add better support for
+       * success and possibly failure statuses, e.g. ranges of success and
+       * failure statuses.
+       * </pre>
+       */
+      public int getStatusesCount() {
+        return statuses_.size();
+      }
+      /**
+       * <code>repeated uint32 statuses = 4;</code>
+       *
+       * <pre>
+       * NOTE: It is up to the custom executor to interpret and act on this
+       * field. Setting this field has no effect on the default executors.
+       *
+       * TODO(haosdent): Deprecate this field when we add better support for
+       * success and possibly failure statuses, e.g. ranges of success and
+       * failure statuses.
+       * </pre>
+       */
+      public int getStatuses(int index) {
+        return statuses_.get(index);
+      }
+
+      private void initFields() {
+        scheme_ = "";
+        port_ = 0;
+        path_ = "";
+        statuses_ = java.util.Collections.emptyList();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasPort()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeUInt32(1, port_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeBytes(2, getPathBytes());
+        }
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeBytes(3, getSchemeBytes());
+        }
+        for (int i = 0; i < statuses_.size(); i++) {
+          output.writeUInt32(4, statuses_.get(i));
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeUInt32Size(1, port_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(2, getPathBytes());
+        }
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(3, getSchemeBytes());
+        }
+        {
+          int dataSize = 0;
+          for (int i = 0; i < statuses_.size(); i++) {
+            dataSize += com.google.protobuf.CodedOutputStream
+              .computeUInt32SizeNoTag(statuses_.get(i));
+          }
+          size += dataSize;
+          size += 1 * getStatusesList().size();
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.HealthCheck.HTTPCheckInfo}
+       *
+       * <pre>
+       * Describes an HTTP health check. Sends a GET request to
+       * scheme://&lt;host&gt;:port/path. Note that &lt;host&gt; is not configurable and is
+       * resolved automatically, in most cases to 127.0.0.1. Default executors
+       * treat return codes between 200 and 399 as success; custom executors
+       * may employ a different strategy, e.g. leveraging the `statuses` field.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfoOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_HealthCheck_HTTPCheckInfo_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_HealthCheck_HTTPCheckInfo_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo.class, org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          scheme_ = "";
+          bitField0_ = (bitField0_ & ~0x00000001);
+          port_ = 0;
+          bitField0_ = (bitField0_ & ~0x00000002);
+          path_ = "";
+          bitField0_ = (bitField0_ & ~0x00000004);
+          statuses_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000008);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_HealthCheck_HTTPCheckInfo_descriptor;
+        }
+
+        public org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo getDefaultInstanceForType() {
+          return org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo build() {
+          org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo buildPartial() {
+          org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo result = new org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.scheme_ = scheme_;
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          result.port_ = port_;
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          result.path_ = path_;
+          if (((bitField0_ & 0x00000008) == 0x00000008)) {
+            statuses_ = java.util.Collections.unmodifiableList(statuses_);
+            bitField0_ = (bitField0_ & ~0x00000008);
+          }
+          result.statuses_ = statuses_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo) {
+            return mergeFrom((org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo other) {
+          if (other == org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo.getDefaultInstance()) return this;
+          if (other.hasScheme()) {
+            bitField0_ |= 0x00000001;
+            scheme_ = other.scheme_;
+            onChanged();
+          }
+          if (other.hasPort()) {
+            setPort(other.getPort());
+          }
+          if (other.hasPath()) {
+            bitField0_ |= 0x00000004;
+            path_ = other.path_;
+            onChanged();
+          }
+          if (!other.statuses_.isEmpty()) {
+            if (statuses_.isEmpty()) {
+              statuses_ = other.statuses_;
+              bitField0_ = (bitField0_ & ~0x00000008);
+            } else {
+              ensureStatusesIsMutable();
+              statuses_.addAll(other.statuses_);
+            }
+            onChanged();
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasPort()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // optional string scheme = 3;
+        private java.lang.Object scheme_ = "";
+        /**
+         * <code>optional string scheme = 3;</code>
+         *
+         * <pre>
+         * Currently "http" and "https" are supported.
+         * </pre>
+         */
+        public boolean hasScheme() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional string scheme = 3;</code>
+         *
+         * <pre>
+         * Currently "http" and "https" are supported.
+         * </pre>
+         */
+        public java.lang.String getScheme() {
+          java.lang.Object ref = scheme_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            scheme_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>optional string scheme = 3;</code>
+         *
+         * <pre>
+         * Currently "http" and "https" are supported.
+         * </pre>
+         */
+        public com.google.protobuf.ByteString
+            getSchemeBytes() {
+          java.lang.Object ref = scheme_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            scheme_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>optional string scheme = 3;</code>
+         *
+         * <pre>
+         * Currently "http" and "https" are supported.
+         * </pre>
+         */
+        public Builder setScheme(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          scheme_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string scheme = 3;</code>
+         *
+         * <pre>
+         * Currently "http" and "https" are supported.
+         * </pre>
+         */
+        public Builder clearScheme() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          scheme_ = getDefaultInstance().getScheme();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string scheme = 3;</code>
+         *
+         * <pre>
+         * Currently "http" and "https" are supported.
+         * </pre>
+         */
+        public Builder setSchemeBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          scheme_ = value;
+          onChanged();
+          return this;
+        }
+
+        // required uint32 port = 1;
+        private int port_ ;
+        /**
+         * <code>required uint32 port = 1;</code>
+         *
+         * <pre>
+         * Port to send the HTTP request.
+         * </pre>
+         */
+        public boolean hasPort() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>required uint32 port = 1;</code>
+         *
+         * <pre>
+         * Port to send the HTTP request.
+         * </pre>
+         */
+        public int getPort() {
+          return port_;
+        }
+        /**
+         * <code>required uint32 port = 1;</code>
+         *
+         * <pre>
+         * Port to send the HTTP request.
+         * </pre>
+         */
+        public Builder setPort(int value) {
+          bitField0_ |= 0x00000002;
+          port_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required uint32 port = 1;</code>
+         *
+         * <pre>
+         * Port to send the HTTP request.
+         * </pre>
+         */
+        public Builder clearPort() {
+          bitField0_ = (bitField0_ & ~0x00000002);
+          port_ = 0;
+          onChanged();
+          return this;
+        }
+
+        // optional string path = 2;
+        private java.lang.Object path_ = "";
+        /**
+         * <code>optional string path = 2;</code>
+         *
+         * <pre>
+         * HTTP request path.
+         * </pre>
+         */
+        public boolean hasPath() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional string path = 2;</code>
+         *
+         * <pre>
+         * HTTP request path.
+         * </pre>
+         */
+        public java.lang.String getPath() {
+          java.lang.Object ref = path_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            path_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>optional string path = 2;</code>
+         *
+         * <pre>
+         * HTTP request path.
+         * </pre>
+         */
+        public com.google.protobuf.ByteString
+            getPathBytes() {
+          java.lang.Object ref = path_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            path_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>optional string path = 2;</code>
+         *
+         * <pre>
+         * HTTP request path.
+         * </pre>
+         */
+        public Builder setPath(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+          path_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string path = 2;</code>
+         *
+         * <pre>
+         * HTTP request path.
+         * </pre>
+         */
+        public Builder clearPath() {
+          bitField0_ = (bitField0_ & ~0x00000004);
+          path_ = getDefaultInstance().getPath();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string path = 2;</code>
+         *
+         * <pre>
+         * HTTP request path.
+         * </pre>
+         */
+        public Builder setPathBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+          path_ = value;
+          onChanged();
+          return this;
+        }
+
+        // repeated uint32 statuses = 4;
+        private java.util.List<java.lang.Integer> statuses_ = java.util.Collections.emptyList();
+        private void ensureStatusesIsMutable() {
+          if (!((bitField0_ & 0x00000008) == 0x00000008)) {
+            statuses_ = new java.util.ArrayList<java.lang.Integer>(statuses_);
+            bitField0_ |= 0x00000008;
+           }
+        }
+        /**
+         * <code>repeated uint32 statuses = 4;</code>
+         *
+         * <pre>
+         * NOTE: It is up to the custom executor to interpret and act on this
+         * field. Setting this field has no effect on the default executors.
+         *
+         * TODO(haosdent): Deprecate this field when we add better support for
+         * success and possibly failure statuses, e.g. ranges of success and
+         * failure statuses.
+         * </pre>
+         */
+        public java.util.List<java.lang.Integer>
+            getStatusesList() {
+          return java.util.Collections.unmodifiableList(statuses_);
+        }
+        /**
+         * <code>repeated uint32 statuses = 4;</code>
+         *
+         * <pre>
+         * NOTE: It is up to the custom executor to interpret and act on this
+         * field. Setting this field has no effect on the default executors.
+         *
+         * TODO(haosdent): Deprecate this field when we add better support for
+         * success and possibly failure statuses, e.g. ranges of success and
+         * failure statuses.
+         * </pre>
+         */
+        public int getStatusesCount() {
+          return statuses_.size();
+        }
+        /**
+         * <code>repeated uint32 statuses = 4;</code>
+         *
+         * <pre>
+         * NOTE: It is up to the custom executor to interpret and act on this
+         * field. Setting this field has no effect on the default executors.
+         *
+         * TODO(haosdent): Deprecate this field when we add better support for
+         * success and possibly failure statuses, e.g. ranges of success and
+         * failure statuses.
+         * </pre>
+         */
+        public int getStatuses(int index) {
+          return statuses_.get(index);
+        }
+        /**
+         * <code>repeated uint32 statuses = 4;</code>
+         *
+         * <pre>
+         * NOTE: It is up to the custom executor to interpret and act on this
+         * field. Setting this field has no effect on the default executors.
+         *
+         * TODO(haosdent): Deprecate this field when we add better support for
+         * success and possibly failure statuses, e.g. ranges of success and
+         * failure statuses.
+         * </pre>
+         */
+        public Builder setStatuses(
+            int index, int value) {
+          ensureStatusesIsMutable();
+          statuses_.set(index, value);
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>repeated uint32 statuses = 4;</code>
+         *
+         * <pre>
+         * NOTE: It is up to the custom executor to interpret and act on this
+         * field. Setting this field has no effect on the default executors.
+         *
+         * TODO(haosdent): Deprecate this field when we add better support for
+         * success and possibly failure statuses, e.g. ranges of success and
+         * failure statuses.
+         * </pre>
+         */
+        public Builder addStatuses(int value) {
+          ensureStatusesIsMutable();
+          statuses_.add(value);
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>repeated uint32 statuses = 4;</code>
+         *
+         * <pre>
+         * NOTE: It is up to the custom executor to interpret and act on this
+         * field. Setting this field has no effect on the default executors.
+         *
+         * TODO(haosdent): Deprecate this field when we add better support for
+         * success and possibly failure statuses, e.g. ranges of success and
+         * failure statuses.
+         * </pre>
+         */
+        public Builder addAllStatuses(
+            java.lang.Iterable<? extends java.lang.Integer> values) {
+          ensureStatusesIsMutable();
+          super.addAll(values, statuses_);
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>repeated uint32 statuses = 4;</code>
+         *
+         * <pre>
+         * NOTE: It is up to the custom executor to interpret and act on this
+         * field. Setting this field has no effect on the default executors.
+         *
+         * TODO(haosdent): Deprecate this field when we add better support for
+         * success and possibly failure statuses, e.g. ranges of success and
+         * failure statuses.
+         * </pre>
+         */
+        public Builder clearStatuses() {
+          statuses_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000008);
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.HealthCheck.HTTPCheckInfo)
+      }
+
+      static {
+        defaultInstance = new HTTPCheckInfo(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.HealthCheck.HTTPCheckInfo)
+    }
+
+    public interface TCPCheckInfoOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required uint32 port = 1;
+      /**
+       * <code>required uint32 port = 1;</code>
+       *
+       * <pre>
+       * Port expected to be open.
+       * </pre>
+       */
+      boolean hasPort();
+      /**
+       * <code>required uint32 port = 1;</code>
+       *
+       * <pre>
+       * Port expected to be open.
+       * </pre>
+       */
+      int getPort();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.HealthCheck.TCPCheckInfo}
+     *
+     * <pre>
+     * Describes a TCP health check, i.e. based on establishing
+     * a TCP connection to the specified port.
+     * </pre>
+     */
+    public static final class TCPCheckInfo extends
+        com.google.protobuf.GeneratedMessage
+        implements TCPCheckInfoOrBuilder {
+      // Use TCPCheckInfo.newBuilder() to construct.
+      private TCPCheckInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private TCPCheckInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final TCPCheckInfo defaultInstance;
+      public static TCPCheckInfo getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public TCPCheckInfo getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private TCPCheckInfo(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 8: {
+                bitField0_ |= 0x00000001;
+                port_ = input.readUInt32();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_HealthCheck_TCPCheckInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_HealthCheck_TCPCheckInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo.class, org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<TCPCheckInfo> PARSER =
+          new com.google.protobuf.AbstractParser<TCPCheckInfo>() {
+        public TCPCheckInfo parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new TCPCheckInfo(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<TCPCheckInfo> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required uint32 port = 1;
+      public static final int PORT_FIELD_NUMBER = 1;
+      private int port_;
+      /**
+       * <code>required uint32 port = 1;</code>
+       *
+       * <pre>
+       * Port expected to be open.
+       * </pre>
+       */
+      public boolean hasPort() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required uint32 port = 1;</code>
+       *
+       * <pre>
+       * Port expected to be open.
+       * </pre>
+       */
+      public int getPort() {
+        return port_;
+      }
+
+      private void initFields() {
+        port_ = 0;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasPort()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeUInt32(1, port_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeUInt32Size(1, port_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.HealthCheck.TCPCheckInfo}
+       *
+       * <pre>
+       * Describes a TCP health check, i.e. based on establishing
+       * a TCP connection to the specified port.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfoOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_HealthCheck_TCPCheckInfo_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_HealthCheck_TCPCheckInfo_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo.class, org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          port_ = 0;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_HealthCheck_TCPCheckInfo_descriptor;
+        }
+
+        public org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo getDefaultInstanceForType() {
+          return org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo build() {
+          org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo buildPartial() {
+          org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo result = new org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.port_ = port_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo) {
+            return mergeFrom((org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo other) {
+          if (other == org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo.getDefaultInstance()) return this;
+          if (other.hasPort()) {
+            setPort(other.getPort());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasPort()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required uint32 port = 1;
+        private int port_ ;
+        /**
+         * <code>required uint32 port = 1;</code>
+         *
+         * <pre>
+         * Port expected to be open.
+         * </pre>
+         */
+        public boolean hasPort() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required uint32 port = 1;</code>
+         *
+         * <pre>
+         * Port expected to be open.
+         * </pre>
+         */
+        public int getPort() {
+          return port_;
+        }
+        /**
+         * <code>required uint32 port = 1;</code>
+         *
+         * <pre>
+         * Port expected to be open.
+         * </pre>
+         */
+        public Builder setPort(int value) {
+          bitField0_ |= 0x00000001;
+          port_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required uint32 port = 1;</code>
+         *
+         * <pre>
+         * Port expected to be open.
+         * </pre>
+         */
+        public Builder clearPort() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          port_ = 0;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.HealthCheck.TCPCheckInfo)
+      }
+
+      static {
+        defaultInstance = new TCPCheckInfo(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.HealthCheck.TCPCheckInfo)
+    }
+
+    private int bitField0_;
+    // optional double delay_seconds = 2 [default = 15];
+    public static final int DELAY_SECONDS_FIELD_NUMBER = 2;
+    private double delaySeconds_;
+    /**
+     * <code>optional double delay_seconds = 2 [default = 15];</code>
+     *
+     * <pre>
+     * Amount of time to wait to start health checking the task after it
+     * transitions to `TASK_RUNNING` or `TASK_STATING` if the latter is
+     * used by the executor.
+     * </pre>
+     */
+    public boolean hasDelaySeconds() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional double delay_seconds = 2 [default = 15];</code>
+     *
+     * <pre>
+     * Amount of time to wait to start health checking the task after it
+     * transitions to `TASK_RUNNING` or `TASK_STATING` if the latter is
+     * used by the executor.
+     * </pre>
+     */
+    public double getDelaySeconds() {
+      return delaySeconds_;
+    }
+
+    // optional double interval_seconds = 3 [default = 10];
+    public static final int INTERVAL_SECONDS_FIELD_NUMBER = 3;
+    private double intervalSeconds_;
+    /**
+     * <code>optional double interval_seconds = 3 [default = 10];</code>
+     *
+     * <pre>
+     * Interval between health checks, i.e., amount of time to wait after
+     * the previous health check finished or timed out to start the next
+     * health check.
+     * </pre>
+     */
+    public boolean hasIntervalSeconds() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional double interval_seconds = 3 [default = 10];</code>
+     *
+     * <pre>
+     * Interval between health checks, i.e., amount of time to wait after
+     * the previous health check finished or timed out to start the next
+     * health check.
+     * </pre>
+     */
+    public double getIntervalSeconds() {
+      return intervalSeconds_;
+    }
+
+    // optional double timeout_seconds = 4 [default = 20];
+    public static final int TIMEOUT_SECONDS_FIELD_NUMBER = 4;
+    private double timeoutSeconds_;
+    /**
+     * <code>optional double timeout_seconds = 4 [default = 20];</code>
+     *
+     * <pre>
+     * Amount of time to wait for the health check to complete. After this
+     * timeout, the health check is aborted and treated as a failure. Zero
+     * means infinite timeout.
+     * </pre>
+     */
+    public boolean hasTimeoutSeconds() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional double timeout_seconds = 4 [default = 20];</code>
+     *
+     * <pre>
+     * Amount of time to wait for the health check to complete. After this
+     * timeout, the health check is aborted and treated as a failure. Zero
+     * means infinite timeout.
+     * </pre>
+     */
+    public double getTimeoutSeconds() {
+      return timeoutSeconds_;
+    }
+
+    // optional uint32 consecutive_failures = 5 [default = 3];
+    public static final int CONSECUTIVE_FAILURES_FIELD_NUMBER = 5;
+    private int consecutiveFailures_;
+    /**
+     * <code>optional uint32 consecutive_failures = 5 [default = 3];</code>
+     *
+     * <pre>
+     * Number of consecutive failures until the task is killed by the executor.
+     * </pre>
+     */
+    public boolean hasConsecutiveFailures() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional uint32 consecutive_failures = 5 [default = 3];</code>
+     *
+     * <pre>
+     * Number of consecutive failures until the task is killed by the executor.
+     * </pre>
+     */
+    public int getConsecutiveFailures() {
+      return consecutiveFailures_;
+    }
+
+    // optional double grace_period_seconds = 6 [default = 10];
+    public static final int GRACE_PERIOD_SECONDS_FIELD_NUMBER = 6;
+    private double gracePeriodSeconds_;
+    /**
+     * <code>optional double grace_period_seconds = 6 [default = 10];</code>
+     *
+     * <pre>
+     * Amount of time after the task is launched during which health check
+     * failures are ignored. Once a check succeeds for the first time,
+     * the grace period does not apply anymore. Note that it includes
+     * `delay_seconds`, i.e., setting `grace_period_seconds` &lt; `delay_seconds`
+     * has no effect.
+     * </pre>
+     */
+    public boolean hasGracePeriodSeconds() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional double grace_period_seconds = 6 [default = 10];</code>
+     *
+     * <pre>
+     * Amount of time after the task is launched during which health check
+     * failures are ignored. Once a check succeeds for the first time,
+     * the grace period does not apply anymore. Note that it includes
+     * `delay_seconds`, i.e., setting `grace_period_seconds` &lt; `delay_seconds`
+     * has no effect.
+     * </pre>
+     */
+    public double getGracePeriodSeconds() {
+      return gracePeriodSeconds_;
+    }
+
+    // optional .mesos.v1.HealthCheck.Type type = 8;
+    public static final int TYPE_FIELD_NUMBER = 8;
+    private org.apache.mesos.v1.Protos.HealthCheck.Type type_;
+    /**
+     * <code>optional .mesos.v1.HealthCheck.Type type = 8;</code>
+     *
+     * <pre>
+     * The type of health check.
+     * </pre>
+     */
+    public boolean hasType() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional .mesos.v1.HealthCheck.Type type = 8;</code>
+     *
+     * <pre>
+     * The type of health check.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.HealthCheck.Type getType() {
+      return type_;
+    }
+
+    // optional .mesos.v1.CommandInfo command = 7;
+    public static final int COMMAND_FIELD_NUMBER = 7;
+    private org.apache.mesos.v1.Protos.CommandInfo command_;
+    /**
+     * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+     *
+     * <pre>
+     * Command health check.
+     * </pre>
+     */
+    public boolean hasCommand() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+     *
+     * <pre>
+     * Command health check.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.CommandInfo getCommand() {
+      return command_;
+    }
+    /**
+     * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+     *
+     * <pre>
+     * Command health check.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.CommandInfoOrBuilder getCommandOrBuilder() {
+      return command_;
+    }
+
+    // optional .mesos.v1.HealthCheck.HTTPCheckInfo http = 1;
+    public static final int HTTP_FIELD_NUMBER = 1;
+    private org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo http_;
+    /**
+     * <code>optional .mesos.v1.HealthCheck.HTTPCheckInfo http = 1;</code>
+     *
+     * <pre>
+     * HTTP health check.
+     * </pre>
+     */
+    public boolean hasHttp() {
+      return ((bitField0_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional .mesos.v1.HealthCheck.HTTPCheckInfo http = 1;</code>
+     *
+     * <pre>
+     * HTTP health check.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo getHttp() {
+      return http_;
+    }
+    /**
+     * <code>optional .mesos.v1.HealthCheck.HTTPCheckInfo http = 1;</code>
+     *
+     * <pre>
+     * HTTP health check.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfoOrBuilder getHttpOrBuilder() {
+      return http_;
+    }
+
+    // optional .mesos.v1.HealthCheck.TCPCheckInfo tcp = 9;
+    public static final int TCP_FIELD_NUMBER = 9;
+    private org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo tcp_;
+    /**
+     * <code>optional .mesos.v1.HealthCheck.TCPCheckInfo tcp = 9;</code>
+     *
+     * <pre>
+     * TCP health check.
+     * </pre>
+     */
+    public boolean hasTcp() {
+      return ((bitField0_ & 0x00000100) == 0x00000100);
+    }
+    /**
+     * <code>optional .mesos.v1.HealthCheck.TCPCheckInfo tcp = 9;</code>
+     *
+     * <pre>
+     * TCP health check.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo getTcp() {
+      return tcp_;
+    }
+    /**
+     * <code>optional .mesos.v1.HealthCheck.TCPCheckInfo tcp = 9;</code>
+     *
+     * <pre>
+     * TCP health check.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfoOrBuilder getTcpOrBuilder() {
+      return tcp_;
+    }
+
+    private void initFields() {
+      delaySeconds_ = 15D;
+      intervalSeconds_ = 10D;
+      timeoutSeconds_ = 20D;
+      consecutiveFailures_ = 3;
+      gracePeriodSeconds_ = 10D;
+      type_ = org.apache.mesos.v1.Protos.HealthCheck.Type.UNKNOWN;
+      command_ = org.apache.mesos.v1.Protos.CommandInfo.getDefaultInstance();
+      http_ = org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo.getDefaultInstance();
+      tcp_ = org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (hasCommand()) {
+        if (!getCommand().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasHttp()) {
+        if (!getHttp().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasTcp()) {
+        if (!getTcp().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        output.writeMessage(1, http_);
+      }
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeDouble(2, delaySeconds_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeDouble(3, intervalSeconds_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeDouble(4, timeoutSeconds_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeUInt32(5, consecutiveFailures_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeDouble(6, gracePeriodSeconds_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeMessage(7, command_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeEnum(8, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        output.writeMessage(9, tcp_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, http_);
+      }
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(2, delaySeconds_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(3, intervalSeconds_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(4, timeoutSeconds_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(5, consecutiveFailures_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(6, gracePeriodSeconds_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(7, command_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(8, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(9, tcp_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.HealthCheck parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.HealthCheck parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.HealthCheck parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.HealthCheck parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.HealthCheck parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.HealthCheck parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.HealthCheck parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.HealthCheck parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.HealthCheck parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.HealthCheck parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.HealthCheck prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.HealthCheck}
+     *
+     * <pre>
+     **
+     * Describes a health check for a task or executor (or any arbitrary
+     * process/command). A type is picked by specifying one of the
+     * optional fields. Specifying more than one type is an error.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.HealthCheckOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_HealthCheck_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_HealthCheck_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.HealthCheck.class, org.apache.mesos.v1.Protos.HealthCheck.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.HealthCheck.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getCommandFieldBuilder();
+          getHttpFieldBuilder();
+          getTcpFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        delaySeconds_ = 15D;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        intervalSeconds_ = 10D;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        timeoutSeconds_ = 20D;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        consecutiveFailures_ = 3;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        gracePeriodSeconds_ = 10D;
+        bitField0_ = (bitField0_ & ~0x00000010);
+        type_ = org.apache.mesos.v1.Protos.HealthCheck.Type.UNKNOWN;
+        bitField0_ = (bitField0_ & ~0x00000020);
+        if (commandBuilder_ == null) {
+          command_ = org.apache.mesos.v1.Protos.CommandInfo.getDefaultInstance();
+        } else {
+          commandBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000040);
+        if (httpBuilder_ == null) {
+          http_ = org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo.getDefaultInstance();
+        } else {
+          httpBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000080);
+        if (tcpBuilder_ == null) {
+          tcp_ = org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo.getDefaultInstance();
+        } else {
+          tcpBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000100);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_HealthCheck_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.HealthCheck getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.HealthCheck.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.HealthCheck build() {
+        org.apache.mesos.v1.Protos.HealthCheck result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.HealthCheck buildPartial() {
+        org.apache.mesos.v1.Protos.HealthCheck result = new org.apache.mesos.v1.Protos.HealthCheck(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.delaySeconds_ = delaySeconds_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.intervalSeconds_ = intervalSeconds_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.timeoutSeconds_ = timeoutSeconds_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.consecutiveFailures_ = consecutiveFailures_;
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.gracePeriodSeconds_ = gracePeriodSeconds_;
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        result.type_ = type_;
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        if (commandBuilder_ == null) {
+          result.command_ = command_;
+        } else {
+          result.command_ = commandBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+          to_bitField0_ |= 0x00000080;
+        }
+        if (httpBuilder_ == null) {
+          result.http_ = http_;
+        } else {
+          result.http_ = httpBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
+          to_bitField0_ |= 0x00000100;
+        }
+        if (tcpBuilder_ == null) {
+          result.tcp_ = tcp_;
+        } else {
+          result.tcp_ = tcpBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.HealthCheck) {
+          return mergeFrom((org.apache.mesos.v1.Protos.HealthCheck)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.HealthCheck other) {
+        if (other == org.apache.mesos.v1.Protos.HealthCheck.getDefaultInstance()) return this;
+        if (other.hasDelaySeconds()) {
+          setDelaySeconds(other.getDelaySeconds());
+        }
+        if (other.hasIntervalSeconds()) {
+          setIntervalSeconds(other.getIntervalSeconds());
+        }
+        if (other.hasTimeoutSeconds()) {
+          setTimeoutSeconds(other.getTimeoutSeconds());
+        }
+        if (other.hasConsecutiveFailures()) {
+          setConsecutiveFailures(other.getConsecutiveFailures());
+        }
+        if (other.hasGracePeriodSeconds()) {
+          setGracePeriodSeconds(other.getGracePeriodSeconds());
+        }
+        if (other.hasType()) {
+          setType(other.getType());
+        }
+        if (other.hasCommand()) {
+          mergeCommand(other.getCommand());
+        }
+        if (other.hasHttp()) {
+          mergeHttp(other.getHttp());
+        }
+        if (other.hasTcp()) {
+          mergeTcp(other.getTcp());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (hasCommand()) {
+          if (!getCommand().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasHttp()) {
+          if (!getHttp().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasTcp()) {
+          if (!getTcp().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.HealthCheck parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.HealthCheck) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional double delay_seconds = 2 [default = 15];
+      private double delaySeconds_ = 15D;
+      /**
+       * <code>optional double delay_seconds = 2 [default = 15];</code>
+       *
+       * <pre>
+       * Amount of time to wait to start health checking the task after it
+       * transitions to `TASK_RUNNING` or `TASK_STATING` if the latter is
+       * used by the executor.
+       * </pre>
+       */
+      public boolean hasDelaySeconds() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional double delay_seconds = 2 [default = 15];</code>
+       *
+       * <pre>
+       * Amount of time to wait to start health checking the task after it
+       * transitions to `TASK_RUNNING` or `TASK_STATING` if the latter is
+       * used by the executor.
+       * </pre>
+       */
+      public double getDelaySeconds() {
+        return delaySeconds_;
+      }
+      /**
+       * <code>optional double delay_seconds = 2 [default = 15];</code>
+       *
+       * <pre>
+       * Amount of time to wait to start health checking the task after it
+       * transitions to `TASK_RUNNING` or `TASK_STATING` if the latter is
+       * used by the executor.
+       * </pre>
+       */
+      public Builder setDelaySeconds(double value) {
+        bitField0_ |= 0x00000001;
+        delaySeconds_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double delay_seconds = 2 [default = 15];</code>
+       *
+       * <pre>
+       * Amount of time to wait to start health checking the task after it
+       * transitions to `TASK_RUNNING` or `TASK_STATING` if the latter is
+       * used by the executor.
+       * </pre>
+       */
+      public Builder clearDelaySeconds() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        delaySeconds_ = 15D;
+        onChanged();
+        return this;
+      }
+
+      // optional double interval_seconds = 3 [default = 10];
+      private double intervalSeconds_ = 10D;
+      /**
+       * <code>optional double interval_seconds = 3 [default = 10];</code>
+       *
+       * <pre>
+       * Interval between health checks, i.e., amount of time to wait after
+       * the previous health check finished or timed out to start the next
+       * health check.
+       * </pre>
+       */
+      public boolean hasIntervalSeconds() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional double interval_seconds = 3 [default = 10];</code>
+       *
+       * <pre>
+       * Interval between health checks, i.e., amount of time to wait after
+       * the previous health check finished or timed out to start the next
+       * health check.
+       * </pre>
+       */
+      public double getIntervalSeconds() {
+        return intervalSeconds_;
+      }
+      /**
+       * <code>optional double interval_seconds = 3 [default = 10];</code>
+       *
+       * <pre>
+       * Interval between health checks, i.e., amount of time to wait after
+       * the previous health check finished or timed out to start the next
+       * health check.
+       * </pre>
+       */
+      public Builder setIntervalSeconds(double value) {
+        bitField0_ |= 0x00000002;
+        intervalSeconds_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double interval_seconds = 3 [default = 10];</code>
+       *
+       * <pre>
+       * Interval between health checks, i.e., amount of time to wait after
+       * the previous health check finished or timed out to start the next
+       * health check.
+       * </pre>
+       */
+      public Builder clearIntervalSeconds() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        intervalSeconds_ = 10D;
+        onChanged();
+        return this;
+      }
+
+      // optional double timeout_seconds = 4 [default = 20];
+      private double timeoutSeconds_ = 20D;
+      /**
+       * <code>optional double timeout_seconds = 4 [default = 20];</code>
+       *
+       * <pre>
+       * Amount of time to wait for the health check to complete. After this
+       * timeout, the health check is aborted and treated as a failure. Zero
+       * means infinite timeout.
+       * </pre>
+       */
+      public boolean hasTimeoutSeconds() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional double timeout_seconds = 4 [default = 20];</code>
+       *
+       * <pre>
+       * Amount of time to wait for the health check to complete. After this
+       * timeout, the health check is aborted and treated as a failure. Zero
+       * means infinite timeout.
+       * </pre>
+       */
+      public double getTimeoutSeconds() {
+        return timeoutSeconds_;
+      }
+      /**
+       * <code>optional double timeout_seconds = 4 [default = 20];</code>
+       *
+       * <pre>
+       * Amount of time to wait for the health check to complete. After this
+       * timeout, the health check is aborted and treated as a failure. Zero
+       * means infinite timeout.
+       * </pre>
+       */
+      public Builder setTimeoutSeconds(double value) {
+        bitField0_ |= 0x00000004;
+        timeoutSeconds_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double timeout_seconds = 4 [default = 20];</code>
+       *
+       * <pre>
+       * Amount of time to wait for the health check to complete. After this
+       * timeout, the health check is aborted and treated as a failure. Zero
+       * means infinite timeout.
+       * </pre>
+       */
+      public Builder clearTimeoutSeconds() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        timeoutSeconds_ = 20D;
+        onChanged();
+        return this;
+      }
+
+      // optional uint32 consecutive_failures = 5 [default = 3];
+      private int consecutiveFailures_ = 3;
+      /**
+       * <code>optional uint32 consecutive_failures = 5 [default = 3];</code>
+       *
+       * <pre>
+       * Number of consecutive failures until the task is killed by the executor.
+       * </pre>
+       */
+      public boolean hasConsecutiveFailures() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional uint32 consecutive_failures = 5 [default = 3];</code>
+       *
+       * <pre>
+       * Number of consecutive failures until the task is killed by the executor.
+       * </pre>
+       */
+      public int getConsecutiveFailures() {
+        return consecutiveFailures_;
+      }
+      /**
+       * <code>optional uint32 consecutive_failures = 5 [default = 3];</code>
+       *
+       * <pre>
+       * Number of consecutive failures until the task is killed by the executor.
+       * </pre>
+       */
+      public Builder setConsecutiveFailures(int value) {
+        bitField0_ |= 0x00000008;
+        consecutiveFailures_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint32 consecutive_failures = 5 [default = 3];</code>
+       *
+       * <pre>
+       * Number of consecutive failures until the task is killed by the executor.
+       * </pre>
+       */
+      public Builder clearConsecutiveFailures() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        consecutiveFailures_ = 3;
+        onChanged();
+        return this;
+      }
+
+      // optional double grace_period_seconds = 6 [default = 10];
+      private double gracePeriodSeconds_ = 10D;
+      /**
+       * <code>optional double grace_period_seconds = 6 [default = 10];</code>
+       *
+       * <pre>
+       * Amount of time after the task is launched during which health check
+       * failures are ignored. Once a check succeeds for the first time,
+       * the grace period does not apply anymore. Note that it includes
+       * `delay_seconds`, i.e., setting `grace_period_seconds` &lt; `delay_seconds`
+       * has no effect.
+       * </pre>
+       */
+      public boolean hasGracePeriodSeconds() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional double grace_period_seconds = 6 [default = 10];</code>
+       *
+       * <pre>
+       * Amount of time after the task is launched during which health check
+       * failures are ignored. Once a check succeeds for the first time,
+       * the grace period does not apply anymore. Note that it includes
+       * `delay_seconds`, i.e., setting `grace_period_seconds` &lt; `delay_seconds`
+       * has no effect.
+       * </pre>
+       */
+      public double getGracePeriodSeconds() {
+        return gracePeriodSeconds_;
+      }
+      /**
+       * <code>optional double grace_period_seconds = 6 [default = 10];</code>
+       *
+       * <pre>
+       * Amount of time after the task is launched during which health check
+       * failures are ignored. Once a check succeeds for the first time,
+       * the grace period does not apply anymore. Note that it includes
+       * `delay_seconds`, i.e., setting `grace_period_seconds` &lt; `delay_seconds`
+       * has no effect.
+       * </pre>
+       */
+      public Builder setGracePeriodSeconds(double value) {
+        bitField0_ |= 0x00000010;
+        gracePeriodSeconds_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double grace_period_seconds = 6 [default = 10];</code>
+       *
+       * <pre>
+       * Amount of time after the task is launched during which health check
+       * failures are ignored. Once a check succeeds for the first time,
+       * the grace period does not apply anymore. Note that it includes
+       * `delay_seconds`, i.e., setting `grace_period_seconds` &lt; `delay_seconds`
+       * has no effect.
+       * </pre>
+       */
+      public Builder clearGracePeriodSeconds() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        gracePeriodSeconds_ = 10D;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.v1.HealthCheck.Type type = 8;
+      private org.apache.mesos.v1.Protos.HealthCheck.Type type_ = org.apache.mesos.v1.Protos.HealthCheck.Type.UNKNOWN;
+      /**
+       * <code>optional .mesos.v1.HealthCheck.Type type = 8;</code>
+       *
+       * <pre>
+       * The type of health check.
+       * </pre>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional .mesos.v1.HealthCheck.Type type = 8;</code>
+       *
+       * <pre>
+       * The type of health check.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.HealthCheck.Type getType() {
+        return type_;
+      }
+      /**
+       * <code>optional .mesos.v1.HealthCheck.Type type = 8;</code>
+       *
+       * <pre>
+       * The type of health check.
+       * </pre>
+       */
+      public Builder setType(org.apache.mesos.v1.Protos.HealthCheck.Type value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000020;
+        type_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.HealthCheck.Type type = 8;</code>
+       *
+       * <pre>
+       * The type of health check.
+       * </pre>
+       */
+      public Builder clearType() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        type_ = org.apache.mesos.v1.Protos.HealthCheck.Type.UNKNOWN;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.v1.CommandInfo command = 7;
+      private org.apache.mesos.v1.Protos.CommandInfo command_ = org.apache.mesos.v1.Protos.CommandInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.CommandInfo, org.apache.mesos.v1.Protos.CommandInfo.Builder, org.apache.mesos.v1.Protos.CommandInfoOrBuilder> commandBuilder_;
+      /**
+       * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+       *
+       * <pre>
+       * Command health check.
+       * </pre>
+       */
+      public boolean hasCommand() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+       *
+       * <pre>
+       * Command health check.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.CommandInfo getCommand() {
+        if (commandBuilder_ == null) {
+          return command_;
+        } else {
+          return commandBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+       *
+       * <pre>
+       * Command health check.
+       * </pre>
+       */
+      public Builder setCommand(org.apache.mesos.v1.Protos.CommandInfo value) {
+        if (commandBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          command_ = value;
+          onChanged();
+        } else {
+          commandBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+       *
+       * <pre>
+       * Command health check.
+       * </pre>
+       */
+      public Builder setCommand(
+          org.apache.mesos.v1.Protos.CommandInfo.Builder builderForValue) {
+        if (commandBuilder_ == null) {
+          command_ = builderForValue.build();
+          onChanged();
+        } else {
+          commandBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+       *
+       * <pre>
+       * Command health check.
+       * </pre>
+       */
+      public Builder mergeCommand(org.apache.mesos.v1.Protos.CommandInfo value) {
+        if (commandBuilder_ == null) {
+          if (((bitField0_ & 0x00000040) == 0x00000040) &&
+              command_ != org.apache.mesos.v1.Protos.CommandInfo.getDefaultInstance()) {
+            command_ =
+              org.apache.mesos.v1.Protos.CommandInfo.newBuilder(command_).mergeFrom(value).buildPartial();
+          } else {
+            command_ = value;
+          }
+          onChanged();
+        } else {
+          commandBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+       *
+       * <pre>
+       * Command health check.
+       * </pre>
+       */
+      public Builder clearCommand() {
+        if (commandBuilder_ == null) {
+          command_ = org.apache.mesos.v1.Protos.CommandInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          commandBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000040);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+       *
+       * <pre>
+       * Command health check.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.CommandInfo.Builder getCommandBuilder() {
+        bitField0_ |= 0x00000040;
+        onChanged();
+        return getCommandFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+       *
+       * <pre>
+       * Command health check.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.CommandInfoOrBuilder getCommandOrBuilder() {
+        if (commandBuilder_ != null) {
+          return commandBuilder_.getMessageOrBuilder();
+        } else {
+          return command_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+       *
+       * <pre>
+       * Command health check.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.CommandInfo, org.apache.mesos.v1.Protos.CommandInfo.Builder, org.apache.mesos.v1.Protos.CommandInfoOrBuilder> 
+          getCommandFieldBuilder() {
+        if (commandBuilder_ == null) {
+          commandBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.CommandInfo, org.apache.mesos.v1.Protos.CommandInfo.Builder, org.apache.mesos.v1.Protos.CommandInfoOrBuilder>(
+                  command_,
+                  getParentForChildren(),
+                  isClean());
+          command_ = null;
+        }
+        return commandBuilder_;
+      }
+
+      // optional .mesos.v1.HealthCheck.HTTPCheckInfo http = 1;
+      private org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo http_ = org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo, org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo.Builder, org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfoOrBuilder> httpBuilder_;
+      /**
+       * <code>optional .mesos.v1.HealthCheck.HTTPCheckInfo http = 1;</code>
+       *
+       * <pre>
+       * HTTP health check.
+       * </pre>
+       */
+      public boolean hasHttp() {
+        return ((bitField0_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional .mesos.v1.HealthCheck.HTTPCheckInfo http = 1;</code>
+       *
+       * <pre>
+       * HTTP health check.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo getHttp() {
+        if (httpBuilder_ == null) {
+          return http_;
+        } else {
+          return httpBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.HealthCheck.HTTPCheckInfo http = 1;</code>
+       *
+       * <pre>
+       * HTTP health check.
+       * </pre>
+       */
+      public Builder setHttp(org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo value) {
+        if (httpBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          http_ = value;
+          onChanged();
+        } else {
+          httpBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.HealthCheck.HTTPCheckInfo http = 1;</code>
+       *
+       * <pre>
+       * HTTP health check.
+       * </pre>
+       */
+      public Builder setHttp(
+          org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo.Builder builderForValue) {
+        if (httpBuilder_ == null) {
+          http_ = builderForValue.build();
+          onChanged();
+        } else {
+          httpBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.HealthCheck.HTTPCheckInfo http = 1;</code>
+       *
+       * <pre>
+       * HTTP health check.
+       * </pre>
+       */
+      public Builder mergeHttp(org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo value) {
+        if (httpBuilder_ == null) {
+          if (((bitField0_ & 0x00000080) == 0x00000080) &&
+              http_ != org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo.getDefaultInstance()) {
+            http_ =
+              org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo.newBuilder(http_).mergeFrom(value).buildPartial();
+          } else {
+            http_ = value;
+          }
+          onChanged();
+        } else {
+          httpBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.HealthCheck.HTTPCheckInfo http = 1;</code>
+       *
+       * <pre>
+       * HTTP health check.
+       * </pre>
+       */
+      public Builder clearHttp() {
+        if (httpBuilder_ == null) {
+          http_ = org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          httpBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000080);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.HealthCheck.HTTPCheckInfo http = 1;</code>
+       *
+       * <pre>
+       * HTTP health check.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo.Builder getHttpBuilder() {
+        bitField0_ |= 0x00000080;
+        onChanged();
+        return getHttpFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.HealthCheck.HTTPCheckInfo http = 1;</code>
+       *
+       * <pre>
+       * HTTP health check.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfoOrBuilder getHttpOrBuilder() {
+        if (httpBuilder_ != null) {
+          return httpBuilder_.getMessageOrBuilder();
+        } else {
+          return http_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.HealthCheck.HTTPCheckInfo http = 1;</code>
+       *
+       * <pre>
+       * HTTP health check.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo, org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo.Builder, org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfoOrBuilder> 
+          getHttpFieldBuilder() {
+        if (httpBuilder_ == null) {
+          httpBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo, org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfo.Builder, org.apache.mesos.v1.Protos.HealthCheck.HTTPCheckInfoOrBuilder>(
+                  http_,
+                  getParentForChildren(),
+                  isClean());
+          http_ = null;
+        }
+        return httpBuilder_;
+      }
+
+      // optional .mesos.v1.HealthCheck.TCPCheckInfo tcp = 9;
+      private org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo tcp_ = org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo, org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo.Builder, org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfoOrBuilder> tcpBuilder_;
+      /**
+       * <code>optional .mesos.v1.HealthCheck.TCPCheckInfo tcp = 9;</code>
+       *
+       * <pre>
+       * TCP health check.
+       * </pre>
+       */
+      public boolean hasTcp() {
+        return ((bitField0_ & 0x00000100) == 0x00000100);
+      }
+      /**
+       * <code>optional .mesos.v1.HealthCheck.TCPCheckInfo tcp = 9;</code>
+       *
+       * <pre>
+       * TCP health check.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo getTcp() {
+        if (tcpBuilder_ == null) {
+          return tcp_;
+        } else {
+          return tcpBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.HealthCheck.TCPCheckInfo tcp = 9;</code>
+       *
+       * <pre>
+       * TCP health check.
+       * </pre>
+       */
+      public Builder setTcp(org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo value) {
+        if (tcpBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          tcp_ = value;
+          onChanged();
+        } else {
+          tcpBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000100;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.HealthCheck.TCPCheckInfo tcp = 9;</code>
+       *
+       * <pre>
+       * TCP health check.
+       * </pre>
+       */
+      public Builder setTcp(
+          org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo.Builder builderForValue) {
+        if (tcpBuilder_ == null) {
+          tcp_ = builderForValue.build();
+          onChanged();
+        } else {
+          tcpBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000100;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.HealthCheck.TCPCheckInfo tcp = 9;</code>
+       *
+       * <pre>
+       * TCP health check.
+       * </pre>
+       */
+      public Builder mergeTcp(org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo value) {
+        if (tcpBuilder_ == null) {
+          if (((bitField0_ & 0x00000100) == 0x00000100) &&
+              tcp_ != org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo.getDefaultInstance()) {
+            tcp_ =
+              org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo.newBuilder(tcp_).mergeFrom(value).buildPartial();
+          } else {
+            tcp_ = value;
+          }
+          onChanged();
+        } else {
+          tcpBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000100;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.HealthCheck.TCPCheckInfo tcp = 9;</code>
+       *
+       * <pre>
+       * TCP health check.
+       * </pre>
+       */
+      public Builder clearTcp() {
+        if (tcpBuilder_ == null) {
+          tcp_ = org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          tcpBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000100);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.HealthCheck.TCPCheckInfo tcp = 9;</code>
+       *
+       * <pre>
+       * TCP health check.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo.Builder getTcpBuilder() {
+        bitField0_ |= 0x00000100;
+        onChanged();
+        return getTcpFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.HealthCheck.TCPCheckInfo tcp = 9;</code>
+       *
+       * <pre>
+       * TCP health check.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfoOrBuilder getTcpOrBuilder() {
+        if (tcpBuilder_ != null) {
+          return tcpBuilder_.getMessageOrBuilder();
+        } else {
+          return tcp_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.HealthCheck.TCPCheckInfo tcp = 9;</code>
+       *
+       * <pre>
+       * TCP health check.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo, org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo.Builder, org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfoOrBuilder> 
+          getTcpFieldBuilder() {
+        if (tcpBuilder_ == null) {
+          tcpBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo, org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfo.Builder, org.apache.mesos.v1.Protos.HealthCheck.TCPCheckInfoOrBuilder>(
+                  tcp_,
+                  getParentForChildren(),
+                  isClean());
+          tcp_ = null;
+        }
+        return tcpBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.HealthCheck)
+    }
+
+    static {
+      defaultInstance = new HealthCheck(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.HealthCheck)
+  }
+
+  public interface KillPolicyOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional .mesos.v1.DurationInfo grace_period = 1;
+    /**
+     * <code>optional .mesos.v1.DurationInfo grace_period = 1;</code>
+     *
+     * <pre>
+     * The grace period specifies how long to wait before forcibly
+     * killing the task. It is recommended to attempt to gracefully
+     * kill the task (and send TASK_KILLING) to indicate that the
+     * graceful kill is in progress. Once the grace period elapses,
+     * if the task has not terminated, a forcible kill should occur.
+     * The task should not assume that it will always be allotted
+     * the full grace period. For example, the executor may be
+     * shutdown more quickly by the agent, or failures / forcible
+     * terminations may occur.
+     * </pre>
+     */
+    boolean hasGracePeriod();
+    /**
+     * <code>optional .mesos.v1.DurationInfo grace_period = 1;</code>
+     *
+     * <pre>
+     * The grace period specifies how long to wait before forcibly
+     * killing the task. It is recommended to attempt to gracefully
+     * kill the task (and send TASK_KILLING) to indicate that the
+     * graceful kill is in progress. Once the grace period elapses,
+     * if the task has not terminated, a forcible kill should occur.
+     * The task should not assume that it will always be allotted
+     * the full grace period. For example, the executor may be
+     * shutdown more quickly by the agent, or failures / forcible
+     * terminations may occur.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.DurationInfo getGracePeriod();
+    /**
+     * <code>optional .mesos.v1.DurationInfo grace_period = 1;</code>
+     *
+     * <pre>
+     * The grace period specifies how long to wait before forcibly
+     * killing the task. It is recommended to attempt to gracefully
+     * kill the task (and send TASK_KILLING) to indicate that the
+     * graceful kill is in progress. Once the grace period elapses,
+     * if the task has not terminated, a forcible kill should occur.
+     * The task should not assume that it will always be allotted
+     * the full grace period. For example, the executor may be
+     * shutdown more quickly by the agent, or failures / forcible
+     * terminations may occur.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.DurationInfoOrBuilder getGracePeriodOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.KillPolicy}
+   *
+   * <pre>
+   **
+   * Describes a kill policy for a task. Currently does not express
+   * different policies (e.g. hitting HTTP endpoints), only controls
+   * how long to wait between graceful and forcible task kill:
+   *
+   *     graceful kill --------------&gt; forcible kill
+   *                    grace_period
+   *
+   * Kill policies are best-effort, because machine failures / forcible
+   * terminations may occur.
+   *
+   * NOTE: For executor-less command-based tasks, the kill is performed
+   * via sending a signal to the task process: SIGTERM for the graceful
+   * kill and SIGKILL for the forcible kill. For the docker executor-less
+   * tasks the grace period is passed to 'docker stop --time'.
+   * </pre>
+   */
+  public static final class KillPolicy extends
+      com.google.protobuf.GeneratedMessage
+      implements KillPolicyOrBuilder {
+    // Use KillPolicy.newBuilder() to construct.
+    private KillPolicy(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private KillPolicy(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final KillPolicy defaultInstance;
+    public static KillPolicy getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public KillPolicy getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private KillPolicy(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              org.apache.mesos.v1.Protos.DurationInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                subBuilder = gracePeriod_.toBuilder();
+              }
+              gracePeriod_ = input.readMessage(org.apache.mesos.v1.Protos.DurationInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(gracePeriod_);
+                gracePeriod_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_KillPolicy_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_KillPolicy_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.KillPolicy.class, org.apache.mesos.v1.Protos.KillPolicy.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<KillPolicy> PARSER =
+        new com.google.protobuf.AbstractParser<KillPolicy>() {
+      public KillPolicy parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new KillPolicy(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<KillPolicy> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // optional .mesos.v1.DurationInfo grace_period = 1;
+    public static final int GRACE_PERIOD_FIELD_NUMBER = 1;
+    private org.apache.mesos.v1.Protos.DurationInfo gracePeriod_;
+    /**
+     * <code>optional .mesos.v1.DurationInfo grace_period = 1;</code>
+     *
+     * <pre>
+     * The grace period specifies how long to wait before forcibly
+     * killing the task. It is recommended to attempt to gracefully
+     * kill the task (and send TASK_KILLING) to indicate that the
+     * graceful kill is in progress. Once the grace period elapses,
+     * if the task has not terminated, a forcible kill should occur.
+     * The task should not assume that it will always be allotted
+     * the full grace period. For example, the executor may be
+     * shutdown more quickly by the agent, or failures / forcible
+     * terminations may occur.
+     * </pre>
+     */
+    public boolean hasGracePeriod() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional .mesos.v1.DurationInfo grace_period = 1;</code>
+     *
+     * <pre>
+     * The grace period specifies how long to wait before forcibly
+     * killing the task. It is recommended to attempt to gracefully
+     * kill the task (and send TASK_KILLING) to indicate that the
+     * graceful kill is in progress. Once the grace period elapses,
+     * if the task has not terminated, a forcible kill should occur.
+     * The task should not assume that it will always be allotted
+     * the full grace period. For example, the executor may be
+     * shutdown more quickly by the agent, or failures / forcible
+     * terminations may occur.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.DurationInfo getGracePeriod() {
+      return gracePeriod_;
+    }
+    /**
+     * <code>optional .mesos.v1.DurationInfo grace_period = 1;</code>
+     *
+     * <pre>
+     * The grace period specifies how long to wait before forcibly
+     * killing the task. It is recommended to attempt to gracefully
+     * kill the task (and send TASK_KILLING) to indicate that the
+     * graceful kill is in progress. Once the grace period elapses,
+     * if the task has not terminated, a forcible kill should occur.
+     * The task should not assume that it will always be allotted
+     * the full grace period. For example, the executor may be
+     * shutdown more quickly by the agent, or failures / forcible
+     * terminations may occur.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.DurationInfoOrBuilder getGracePeriodOrBuilder() {
+      return gracePeriod_;
+    }
+
+    private void initFields() {
+      gracePeriod_ = org.apache.mesos.v1.Protos.DurationInfo.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (hasGracePeriod()) {
+        if (!getGracePeriod().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeMessage(1, gracePeriod_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, gracePeriod_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.KillPolicy parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.KillPolicy parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.KillPolicy parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.KillPolicy parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.KillPolicy parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.KillPolicy parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.KillPolicy parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.KillPolicy parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.KillPolicy parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.KillPolicy parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.KillPolicy prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.KillPolicy}
+     *
+     * <pre>
+     **
+     * Describes a kill policy for a task. Currently does not express
+     * different policies (e.g. hitting HTTP endpoints), only controls
+     * how long to wait between graceful and forcible task kill:
+     *
+     *     graceful kill --------------&gt; forcible kill
+     *                    grace_period
+     *
+     * Kill policies are best-effort, because machine failures / forcible
+     * terminations may occur.
+     *
+     * NOTE: For executor-less command-based tasks, the kill is performed
+     * via sending a signal to the task process: SIGTERM for the graceful
+     * kill and SIGKILL for the forcible kill. For the docker executor-less
+     * tasks the grace period is passed to 'docker stop --time'.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.KillPolicyOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_KillPolicy_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_KillPolicy_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.KillPolicy.class, org.apache.mesos.v1.Protos.KillPolicy.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.KillPolicy.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getGracePeriodFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (gracePeriodBuilder_ == null) {
+          gracePeriod_ = org.apache.mesos.v1.Protos.DurationInfo.getDefaultInstance();
+        } else {
+          gracePeriodBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_KillPolicy_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.KillPolicy getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.KillPolicy.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.KillPolicy build() {
+        org.apache.mesos.v1.Protos.KillPolicy result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.KillPolicy buildPartial() {
+        org.apache.mesos.v1.Protos.KillPolicy result = new org.apache.mesos.v1.Protos.KillPolicy(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        if (gracePeriodBuilder_ == null) {
+          result.gracePeriod_ = gracePeriod_;
+        } else {
+          result.gracePeriod_ = gracePeriodBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.KillPolicy) {
+          return mergeFrom((org.apache.mesos.v1.Protos.KillPolicy)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.KillPolicy other) {
+        if (other == org.apache.mesos.v1.Protos.KillPolicy.getDefaultInstance()) return this;
+        if (other.hasGracePeriod()) {
+          mergeGracePeriod(other.getGracePeriod());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (hasGracePeriod()) {
+          if (!getGracePeriod().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.KillPolicy parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.KillPolicy) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional .mesos.v1.DurationInfo grace_period = 1;
+      private org.apache.mesos.v1.Protos.DurationInfo gracePeriod_ = org.apache.mesos.v1.Protos.DurationInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.DurationInfo, org.apache.mesos.v1.Protos.DurationInfo.Builder, org.apache.mesos.v1.Protos.DurationInfoOrBuilder> gracePeriodBuilder_;
+      /**
+       * <code>optional .mesos.v1.DurationInfo grace_period = 1;</code>
+       *
+       * <pre>
+       * The grace period specifies how long to wait before forcibly
+       * killing the task. It is recommended to attempt to gracefully
+       * kill the task (and send TASK_KILLING) to indicate that the
+       * graceful kill is in progress. Once the grace period elapses,
+       * if the task has not terminated, a forcible kill should occur.
+       * The task should not assume that it will always be allotted
+       * the full grace period. For example, the executor may be
+       * shutdown more quickly by the agent, or failures / forcible
+       * terminations may occur.
+       * </pre>
+       */
+      public boolean hasGracePeriod() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.v1.DurationInfo grace_period = 1;</code>
+       *
+       * <pre>
+       * The grace period specifies how long to wait before forcibly
+       * killing the task. It is recommended to attempt to gracefully
+       * kill the task (and send TASK_KILLING) to indicate that the
+       * graceful kill is in progress. Once the grace period elapses,
+       * if the task has not terminated, a forcible kill should occur.
+       * The task should not assume that it will always be allotted
+       * the full grace period. For example, the executor may be
+       * shutdown more quickly by the agent, or failures / forcible
+       * terminations may occur.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.DurationInfo getGracePeriod() {
+        if (gracePeriodBuilder_ == null) {
+          return gracePeriod_;
+        } else {
+          return gracePeriodBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.DurationInfo grace_period = 1;</code>
+       *
+       * <pre>
+       * The grace period specifies how long to wait before forcibly
+       * killing the task. It is recommended to attempt to gracefully
+       * kill the task (and send TASK_KILLING) to indicate that the
+       * graceful kill is in progress. Once the grace period elapses,
+       * if the task has not terminated, a forcible kill should occur.
+       * The task should not assume that it will always be allotted
+       * the full grace period. For example, the executor may be
+       * shutdown more quickly by the agent, or failures / forcible
+       * terminations may occur.
+       * </pre>
+       */
+      public Builder setGracePeriod(org.apache.mesos.v1.Protos.DurationInfo value) {
+        if (gracePeriodBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          gracePeriod_ = value;
+          onChanged();
+        } else {
+          gracePeriodBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.DurationInfo grace_period = 1;</code>
+       *
+       * <pre>
+       * The grace period specifies how long to wait before forcibly
+       * killing the task. It is recommended to attempt to gracefully
+       * kill the task (and send TASK_KILLING) to indicate that the
+       * graceful kill is in progress. Once the grace period elapses,
+       * if the task has not terminated, a forcible kill should occur.
+       * The task should not assume that it will always be allotted
+       * the full grace period. For example, the executor may be
+       * shutdown more quickly by the agent, or failures / forcible
+       * terminations may occur.
+       * </pre>
+       */
+      public Builder setGracePeriod(
+          org.apache.mesos.v1.Protos.DurationInfo.Builder builderForValue) {
+        if (gracePeriodBuilder_ == null) {
+          gracePeriod_ = builderForValue.build();
+          onChanged();
+        } else {
+          gracePeriodBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.DurationInfo grace_period = 1;</code>
+       *
+       * <pre>
+       * The grace period specifies how long to wait before forcibly
+       * killing the task. It is recommended to attempt to gracefully
+       * kill the task (and send TASK_KILLING) to indicate that the
+       * graceful kill is in progress. Once the grace period elapses,
+       * if the task has not terminated, a forcible kill should occur.
+       * The task should not assume that it will always be allotted
+       * the full grace period. For example, the executor may be
+       * shutdown more quickly by the agent, or failures / forcible
+       * terminations may occur.
+       * </pre>
+       */
+      public Builder mergeGracePeriod(org.apache.mesos.v1.Protos.DurationInfo value) {
+        if (gracePeriodBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001) &&
+              gracePeriod_ != org.apache.mesos.v1.Protos.DurationInfo.getDefaultInstance()) {
+            gracePeriod_ =
+              org.apache.mesos.v1.Protos.DurationInfo.newBuilder(gracePeriod_).mergeFrom(value).buildPartial();
+          } else {
+            gracePeriod_ = value;
+          }
+          onChanged();
+        } else {
+          gracePeriodBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.DurationInfo grace_period = 1;</code>
+       *
+       * <pre>
+       * The grace period specifies how long to wait before forcibly
+       * killing the task. It is recommended to attempt to gracefully
+       * kill the task (and send TASK_KILLING) to indicate that the
+       * graceful kill is in progress. Once the grace period elapses,
+       * if the task has not terminated, a forcible kill should occur.
+       * The task should not assume that it will always be allotted
+       * the full grace period. For example, the executor may be
+       * shutdown more quickly by the agent, or failures / forcible
+       * terminations may occur.
+       * </pre>
+       */
+      public Builder clearGracePeriod() {
+        if (gracePeriodBuilder_ == null) {
+          gracePeriod_ = org.apache.mesos.v1.Protos.DurationInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          gracePeriodBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.DurationInfo grace_period = 1;</code>
+       *
+       * <pre>
+       * The grace period specifies how long to wait before forcibly
+       * killing the task. It is recommended to attempt to gracefully
+       * kill the task (and send TASK_KILLING) to indicate that the
+       * graceful kill is in progress. Once the grace period elapses,
+       * if the task has not terminated, a forcible kill should occur.
+       * The task should not assume that it will always be allotted
+       * the full grace period. For example, the executor may be
+       * shutdown more quickly by the agent, or failures / forcible
+       * terminations may occur.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.DurationInfo.Builder getGracePeriodBuilder() {
+        bitField0_ |= 0x00000001;
+        onChanged();
+        return getGracePeriodFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.DurationInfo grace_period = 1;</code>
+       *
+       * <pre>
+       * The grace period specifies how long to wait before forcibly
+       * killing the task. It is recommended to attempt to gracefully
+       * kill the task (and send TASK_KILLING) to indicate that the
+       * graceful kill is in progress. Once the grace period elapses,
+       * if the task has not terminated, a forcible kill should occur.
+       * The task should not assume that it will always be allotted
+       * the full grace period. For example, the executor may be
+       * shutdown more quickly by the agent, or failures / forcible
+       * terminations may occur.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.DurationInfoOrBuilder getGracePeriodOrBuilder() {
+        if (gracePeriodBuilder_ != null) {
+          return gracePeriodBuilder_.getMessageOrBuilder();
+        } else {
+          return gracePeriod_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.DurationInfo grace_period = 1;</code>
+       *
+       * <pre>
+       * The grace period specifies how long to wait before forcibly
+       * killing the task. It is recommended to attempt to gracefully
+       * kill the task (and send TASK_KILLING) to indicate that the
+       * graceful kill is in progress. Once the grace period elapses,
+       * if the task has not terminated, a forcible kill should occur.
+       * The task should not assume that it will always be allotted
+       * the full grace period. For example, the executor may be
+       * shutdown more quickly by the agent, or failures / forcible
+       * terminations may occur.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.DurationInfo, org.apache.mesos.v1.Protos.DurationInfo.Builder, org.apache.mesos.v1.Protos.DurationInfoOrBuilder> 
+          getGracePeriodFieldBuilder() {
+        if (gracePeriodBuilder_ == null) {
+          gracePeriodBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.DurationInfo, org.apache.mesos.v1.Protos.DurationInfo.Builder, org.apache.mesos.v1.Protos.DurationInfoOrBuilder>(
+                  gracePeriod_,
+                  getParentForChildren(),
+                  isClean());
+          gracePeriod_ = null;
+        }
+        return gracePeriodBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.KillPolicy)
+    }
+
+    static {
+      defaultInstance = new KillPolicy(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.KillPolicy)
+  }
+
+  public interface CommandInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // repeated .mesos.v1.CommandInfo.URI uris = 1;
+    /**
+     * <code>repeated .mesos.v1.CommandInfo.URI uris = 1;</code>
+     */
+    java.util.List<org.apache.mesos.v1.Protos.CommandInfo.URI> 
+        getUrisList();
+    /**
+     * <code>repeated .mesos.v1.CommandInfo.URI uris = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.CommandInfo.URI getUris(int index);
+    /**
+     * <code>repeated .mesos.v1.CommandInfo.URI uris = 1;</code>
+     */
+    int getUrisCount();
+    /**
+     * <code>repeated .mesos.v1.CommandInfo.URI uris = 1;</code>
+     */
+    java.util.List<? extends org.apache.mesos.v1.Protos.CommandInfo.URIOrBuilder> 
+        getUrisOrBuilderList();
+    /**
+     * <code>repeated .mesos.v1.CommandInfo.URI uris = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.CommandInfo.URIOrBuilder getUrisOrBuilder(
+        int index);
+
+    // optional .mesos.v1.Environment environment = 2;
+    /**
+     * <code>optional .mesos.v1.Environment environment = 2;</code>
+     */
+    boolean hasEnvironment();
+    /**
+     * <code>optional .mesos.v1.Environment environment = 2;</code>
+     */
+    org.apache.mesos.v1.Protos.Environment getEnvironment();
+    /**
+     * <code>optional .mesos.v1.Environment environment = 2;</code>
+     */
+    org.apache.mesos.v1.Protos.EnvironmentOrBuilder getEnvironmentOrBuilder();
+
+    // optional bool shell = 6 [default = true];
+    /**
+     * <code>optional bool shell = 6 [default = true];</code>
+     *
+     * <pre>
+     * There are two ways to specify the command:
+     * 1) If 'shell == true', the command will be launched via shell
+     *		(i.e., /bin/sh -c 'value'). The 'value' specified will be
+     *		treated as the shell command. The 'arguments' will be ignored.
+     * 2) If 'shell == false', the command will be launched by passing
+     *		arguments to an executable. The 'value' specified will be
+     *		treated as the filename of the executable. The 'arguments'
+     *		will be treated as the arguments to the executable. This is
+     *		similar to how POSIX exec families launch processes (i.e.,
+     *		execlp(value, arguments(0), arguments(1), ...)).
+     * NOTE: The field 'value' is changed from 'required' to 'optional'
+     * in 0.20.0. It will only cause issues if a new framework is
+     * connecting to an old master.
+     * </pre>
+     */
+    boolean hasShell();
+    /**
+     * <code>optional bool shell = 6 [default = true];</code>
+     *
+     * <pre>
+     * There are two ways to specify the command:
+     * 1) If 'shell == true', the command will be launched via shell
+     *		(i.e., /bin/sh -c 'value'). The 'value' specified will be
+     *		treated as the shell command. The 'arguments' will be ignored.
+     * 2) If 'shell == false', the command will be launched by passing
+     *		arguments to an executable. The 'value' specified will be
+     *		treated as the filename of the executable. The 'arguments'
+     *		will be treated as the arguments to the executable. This is
+     *		similar to how POSIX exec families launch processes (i.e.,
+     *		execlp(value, arguments(0), arguments(1), ...)).
+     * NOTE: The field 'value' is changed from 'required' to 'optional'
+     * in 0.20.0. It will only cause issues if a new framework is
+     * connecting to an old master.
+     * </pre>
+     */
+    boolean getShell();
+
+    // optional string value = 3;
+    /**
+     * <code>optional string value = 3;</code>
+     */
+    boolean hasValue();
+    /**
+     * <code>optional string value = 3;</code>
+     */
+    java.lang.String getValue();
+    /**
+     * <code>optional string value = 3;</code>
+     */
+    com.google.protobuf.ByteString
+        getValueBytes();
+
+    // repeated string arguments = 7;
+    /**
+     * <code>repeated string arguments = 7;</code>
+     */
+    java.util.List<java.lang.String>
+    getArgumentsList();
+    /**
+     * <code>repeated string arguments = 7;</code>
+     */
+    int getArgumentsCount();
+    /**
+     * <code>repeated string arguments = 7;</code>
+     */
+    java.lang.String getArguments(int index);
+    /**
+     * <code>repeated string arguments = 7;</code>
+     */
+    com.google.protobuf.ByteString
+        getArgumentsBytes(int index);
+
+    // optional string user = 5;
+    /**
+     * <code>optional string user = 5;</code>
+     *
+     * <pre>
+     * Enables executor and tasks to run as a specific user. If the user
+     * field is present both in FrameworkInfo and here, the CommandInfo
+     * user value takes precedence.
+     * </pre>
+     */
+    boolean hasUser();
+    /**
+     * <code>optional string user = 5;</code>
+     *
+     * <pre>
+     * Enables executor and tasks to run as a specific user. If the user
+     * field is present both in FrameworkInfo and here, the CommandInfo
+     * user value takes precedence.
+     * </pre>
+     */
+    java.lang.String getUser();
+    /**
+     * <code>optional string user = 5;</code>
+     *
+     * <pre>
+     * Enables executor and tasks to run as a specific user. If the user
+     * field is present both in FrameworkInfo and here, the CommandInfo
+     * user value takes precedence.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getUserBytes();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.CommandInfo}
+   *
+   * <pre>
+   **
+   * Describes a command, executed via: '/bin/sh -c value'. Any URIs specified
+   * are fetched before executing the command.  If the executable field for an
+   * uri is set, executable file permission is set on the downloaded file.
+   * Otherwise, if the downloaded file has a recognized archive extension
+   * (currently [compressed] tar and zip) it is extracted into the executor's
+   * working directory. This extraction can be disabled by setting `extract` to
+   * false. In addition, any environment variables are set before executing
+   * the command (so they can be used to "parameterize" your command).
+   * </pre>
+   */
+  public static final class CommandInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements CommandInfoOrBuilder {
+    // Use CommandInfo.newBuilder() to construct.
+    private CommandInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private CommandInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final CommandInfo defaultInstance;
+    public static CommandInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public CommandInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private CommandInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                uris_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.CommandInfo.URI>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              uris_.add(input.readMessage(org.apache.mesos.v1.Protos.CommandInfo.URI.PARSER, extensionRegistry));
+              break;
+            }
+            case 18: {
+              org.apache.mesos.v1.Protos.Environment.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                subBuilder = environment_.toBuilder();
+              }
+              environment_ = input.readMessage(org.apache.mesos.v1.Protos.Environment.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(environment_);
+                environment_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+            case 26: {
+              bitField0_ |= 0x00000004;
+              value_ = input.readBytes();
+              break;
+            }
+            case 42: {
+              bitField0_ |= 0x00000008;
+              user_ = input.readBytes();
+              break;
+            }
+            case 48: {
+              bitField0_ |= 0x00000002;
+              shell_ = input.readBool();
+              break;
+            }
+            case 58: {
+              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
+                arguments_ = new com.google.protobuf.LazyStringArrayList();
+                mutable_bitField0_ |= 0x00000010;
+              }
+              arguments_.add(input.readBytes());
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+          uris_ = java.util.Collections.unmodifiableList(uris_);
+        }
+        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
+          arguments_ = new com.google.protobuf.UnmodifiableLazyStringList(arguments_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CommandInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CommandInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.CommandInfo.class, org.apache.mesos.v1.Protos.CommandInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<CommandInfo> PARSER =
+        new com.google.protobuf.AbstractParser<CommandInfo>() {
+      public CommandInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new CommandInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<CommandInfo> getParserForType() {
+      return PARSER;
+    }
+
+    public interface URIOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required string value = 1;
+      /**
+       * <code>required string value = 1;</code>
+       */
+      boolean hasValue();
+      /**
+       * <code>required string value = 1;</code>
+       */
+      java.lang.String getValue();
+      /**
+       * <code>required string value = 1;</code>
+       */
+      com.google.protobuf.ByteString
+          getValueBytes();
+
+      // optional bool executable = 2;
+      /**
+       * <code>optional bool executable = 2;</code>
+       */
+      boolean hasExecutable();
+      /**
+       * <code>optional bool executable = 2;</code>
+       */
+      boolean getExecutable();
+
+      // optional bool extract = 3 [default = true];
+      /**
+       * <code>optional bool extract = 3 [default = true];</code>
+       *
+       * <pre>
+       * In case the fetched file is recognized as an archive, extract
+       * its contents into the sandbox. Note that a cached archive is
+       * not copied from the cache to the sandbox in case extraction
+       * originates from an archive in the cache.
+       * </pre>
+       */
+      boolean hasExtract();
+      /**
+       * <code>optional bool extract = 3 [default = true];</code>
+       *
+       * <pre>
+       * In case the fetched file is recognized as an archive, extract
+       * its contents into the sandbox. Note that a cached archive is
+       * not copied from the cache to the sandbox in case extraction
+       * originates from an archive in the cache.
+       * </pre>
+       */
+      boolean getExtract();
+
+      // optional bool cache = 4;
+      /**
+       * <code>optional bool cache = 4;</code>
+       *
+       * <pre>
+       * If this field is "true", the fetcher cache will be used. If not,
+       * fetching bypasses the cache and downloads directly into the
+       * sandbox directory, no matter whether a suitable cache file is
+       * available or not. The former directs the fetcher to download to
+       * the file cache, then copy from there to the sandbox. Subsequent
+       * fetch attempts with the same URI will omit downloading and copy
+       * from the cache as long as the file is resident there. Cache files
+       * may get evicted at any time, which then leads to renewed
+       * downloading. See also "docs/fetcher.md" and
+       * "docs/fetcher-cache-internals.md".
+       * </pre>
+       */
+      boolean hasCache();
+      /**
+       * <code>optional bool cache = 4;</code>
+       *
+       * <pre>
+       * If this field is "true", the fetcher cache will be used. If not,
+       * fetching bypasses the cache and downloads directly into the
+       * sandbox directory, no matter whether a suitable cache file is
+       * available or not. The former directs the fetcher to download to
+       * the file cache, then copy from there to the sandbox. Subsequent
+       * fetch attempts with the same URI will omit downloading and copy
+       * from the cache as long as the file is resident there. Cache files
+       * may get evicted at any time, which then leads to renewed
+       * downloading. See also "docs/fetcher.md" and
+       * "docs/fetcher-cache-internals.md".
+       * </pre>
+       */
+      boolean getCache();
+
+      // optional string output_file = 5;
+      /**
+       * <code>optional string output_file = 5;</code>
+       *
+       * <pre>
+       * The fetcher's default behavior is to use the URI string's basename to
+       * name the local copy. If this field is provided, the local copy will be
+       * named with its value instead. If there is a directory component (which
+       * must be a relative path), the local copy will be stored in that
+       * subdirectory inside the sandbox.
+       * </pre>
+       */
+      boolean hasOutputFile();
+      /**
+       * <code>optional string output_file = 5;</code>
+       *
+       * <pre>
+       * The fetcher's default behavior is to use the URI string's basename to
+       * name the local copy. If this field is provided, the local copy will be
+       * named with its value instead. If there is a directory component (which
+       * must be a relative path), the local copy will be stored in that
+       * subdirectory inside the sandbox.
+       * </pre>
+       */
+      java.lang.String getOutputFile();
+      /**
+       * <code>optional string output_file = 5;</code>
+       *
+       * <pre>
+       * The fetcher's default behavior is to use the URI string's basename to
+       * name the local copy. If this field is provided, the local copy will be
+       * named with its value instead. If there is a directory component (which
+       * must be a relative path), the local copy will be stored in that
+       * subdirectory inside the sandbox.
+       * </pre>
+       */
+      com.google.protobuf.ByteString
+          getOutputFileBytes();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.CommandInfo.URI}
+     */
+    public static final class URI extends
+        com.google.protobuf.GeneratedMessage
+        implements URIOrBuilder {
+      // Use URI.newBuilder() to construct.
+      private URI(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private URI(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final URI defaultInstance;
+      public static URI getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public URI getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private URI(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                bitField0_ |= 0x00000001;
+                value_ = input.readBytes();
+                break;
+              }
+              case 16: {
+                bitField0_ |= 0x00000002;
+                executable_ = input.readBool();
+                break;
+              }
+              case 24: {
+                bitField0_ |= 0x00000004;
+                extract_ = input.readBool();
+                break;
+              }
+              case 32: {
+                bitField0_ |= 0x00000008;
+                cache_ = input.readBool();
+                break;
+              }
+              case 42: {
+                bitField0_ |= 0x00000010;
+                outputFile_ = input.readBytes();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CommandInfo_URI_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CommandInfo_URI_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.CommandInfo.URI.class, org.apache.mesos.v1.Protos.CommandInfo.URI.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<URI> PARSER =
+          new com.google.protobuf.AbstractParser<URI>() {
+        public URI parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new URI(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<URI> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required string value = 1;
+      public static final int VALUE_FIELD_NUMBER = 1;
+      private java.lang.Object value_;
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public boolean hasValue() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public java.lang.String getValue() {
+        java.lang.Object ref = value_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            value_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getValueBytes() {
+        java.lang.Object ref = value_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          value_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      // optional bool executable = 2;
+      public static final int EXECUTABLE_FIELD_NUMBER = 2;
+      private boolean executable_;
+      /**
+       * <code>optional bool executable = 2;</code>
+       */
+      public boolean hasExecutable() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional bool executable = 2;</code>
+       */
+      public boolean getExecutable() {
+        return executable_;
+      }
+
+      // optional bool extract = 3 [default = true];
+      public static final int EXTRACT_FIELD_NUMBER = 3;
+      private boolean extract_;
+      /**
+       * <code>optional bool extract = 3 [default = true];</code>
+       *
+       * <pre>
+       * In case the fetched file is recognized as an archive, extract
+       * its contents into the sandbox. Note that a cached archive is
+       * not copied from the cache to the sandbox in case extraction
+       * originates from an archive in the cache.
+       * </pre>
+       */
+      public boolean hasExtract() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional bool extract = 3 [default = true];</code>
+       *
+       * <pre>
+       * In case the fetched file is recognized as an archive, extract
+       * its contents into the sandbox. Note that a cached archive is
+       * not copied from the cache to the sandbox in case extraction
+       * originates from an archive in the cache.
+       * </pre>
+       */
+      public boolean getExtract() {
+        return extract_;
+      }
+
+      // optional bool cache = 4;
+      public static final int CACHE_FIELD_NUMBER = 4;
+      private boolean cache_;
+      /**
+       * <code>optional bool cache = 4;</code>
+       *
+       * <pre>
+       * If this field is "true", the fetcher cache will be used. If not,
+       * fetching bypasses the cache and downloads directly into the
+       * sandbox directory, no matter whether a suitable cache file is
+       * available or not. The former directs the fetcher to download to
+       * the file cache, then copy from there to the sandbox. Subsequent
+       * fetch attempts with the same URI will omit downloading and copy
+       * from the cache as long as the file is resident there. Cache files
+       * may get evicted at any time, which then leads to renewed
+       * downloading. See also "docs/fetcher.md" and
+       * "docs/fetcher-cache-internals.md".
+       * </pre>
+       */
+      public boolean hasCache() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional bool cache = 4;</code>
+       *
+       * <pre>
+       * If this field is "true", the fetcher cache will be used. If not,
+       * fetching bypasses the cache and downloads directly into the
+       * sandbox directory, no matter whether a suitable cache file is
+       * available or not. The former directs the fetcher to download to
+       * the file cache, then copy from there to the sandbox. Subsequent
+       * fetch attempts with the same URI will omit downloading and copy
+       * from the cache as long as the file is resident there. Cache files
+       * may get evicted at any time, which then leads to renewed
+       * downloading. See also "docs/fetcher.md" and
+       * "docs/fetcher-cache-internals.md".
+       * </pre>
+       */
+      public boolean getCache() {
+        return cache_;
+      }
+
+      // optional string output_file = 5;
+      public static final int OUTPUT_FILE_FIELD_NUMBER = 5;
+      private java.lang.Object outputFile_;
+      /**
+       * <code>optional string output_file = 5;</code>
+       *
+       * <pre>
+       * The fetcher's default behavior is to use the URI string's basename to
+       * name the local copy. If this field is provided, the local copy will be
+       * named with its value instead. If there is a directory component (which
+       * must be a relative path), the local copy will be stored in that
+       * subdirectory inside the sandbox.
+       * </pre>
+       */
+      public boolean hasOutputFile() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional string output_file = 5;</code>
+       *
+       * <pre>
+       * The fetcher's default behavior is to use the URI string's basename to
+       * name the local copy. If this field is provided, the local copy will be
+       * named with its value instead. If there is a directory component (which
+       * must be a relative path), the local copy will be stored in that
+       * subdirectory inside the sandbox.
+       * </pre>
+       */
+      public java.lang.String getOutputFile() {
+        java.lang.Object ref = outputFile_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            outputFile_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>optional string output_file = 5;</code>
+       *
+       * <pre>
+       * The fetcher's default behavior is to use the URI string's basename to
+       * name the local copy. If this field is provided, the local copy will be
+       * named with its value instead. If there is a directory component (which
+       * must be a relative path), the local copy will be stored in that
+       * subdirectory inside the sandbox.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getOutputFileBytes() {
+        java.lang.Object ref = outputFile_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          outputFile_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      private void initFields() {
+        value_ = "";
+        executable_ = false;
+        extract_ = true;
+        cache_ = false;
+        outputFile_ = "";
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasValue()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeBytes(1, getValueBytes());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeBool(2, executable_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeBool(3, extract_);
+        }
+        if (((bitField0_ & 0x00000008) == 0x00000008)) {
+          output.writeBool(4, cache_);
+        }
+        if (((bitField0_ & 0x00000010) == 0x00000010)) {
+          output.writeBytes(5, getOutputFileBytes());
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(1, getValueBytes());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBoolSize(2, executable_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBoolSize(3, extract_);
+        }
+        if (((bitField0_ & 0x00000008) == 0x00000008)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBoolSize(4, cache_);
+        }
+        if (((bitField0_ & 0x00000010) == 0x00000010)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(5, getOutputFileBytes());
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.Protos.CommandInfo.URI parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.CommandInfo.URI parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.CommandInfo.URI parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.CommandInfo.URI parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.CommandInfo.URI parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.CommandInfo.URI parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.CommandInfo.URI parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.CommandInfo.URI parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.CommandInfo.URI parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.CommandInfo.URI parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.Protos.CommandInfo.URI prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.CommandInfo.URI}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.Protos.CommandInfo.URIOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CommandInfo_URI_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CommandInfo_URI_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.CommandInfo.URI.class, org.apache.mesos.v1.Protos.CommandInfo.URI.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.Protos.CommandInfo.URI.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          value_ = "";
+          bitField0_ = (bitField0_ & ~0x00000001);
+          executable_ = false;
+          bitField0_ = (bitField0_ & ~0x00000002);
+          extract_ = true;
+          bitField0_ = (bitField0_ & ~0x00000004);
+          cache_ = false;
+          bitField0_ = (bitField0_ & ~0x00000008);
+          outputFile_ = "";
+          bitField0_ = (bitField0_ & ~0x00000010);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CommandInfo_URI_descriptor;
+        }
+
+        public org.apache.mesos.v1.Protos.CommandInfo.URI getDefaultInstanceForType() {
+          return org.apache.mesos.v1.Protos.CommandInfo.URI.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.Protos.CommandInfo.URI build() {
+          org.apache.mesos.v1.Protos.CommandInfo.URI result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.Protos.CommandInfo.URI buildPartial() {
+          org.apache.mesos.v1.Protos.CommandInfo.URI result = new org.apache.mesos.v1.Protos.CommandInfo.URI(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.value_ = value_;
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          result.executable_ = executable_;
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          result.extract_ = extract_;
+          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+            to_bitField0_ |= 0x00000008;
+          }
+          result.cache_ = cache_;
+          if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+            to_bitField0_ |= 0x00000010;
+          }
+          result.outputFile_ = outputFile_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.Protos.CommandInfo.URI) {
+            return mergeFrom((org.apache.mesos.v1.Protos.CommandInfo.URI)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.Protos.CommandInfo.URI other) {
+          if (other == org.apache.mesos.v1.Protos.CommandInfo.URI.getDefaultInstance()) return this;
+          if (other.hasValue()) {
+            bitField0_ |= 0x00000001;
+            value_ = other.value_;
+            onChanged();
+          }
+          if (other.hasExecutable()) {
+            setExecutable(other.getExecutable());
+          }
+          if (other.hasExtract()) {
+            setExtract(other.getExtract());
+          }
+          if (other.hasCache()) {
+            setCache(other.getCache());
+          }
+          if (other.hasOutputFile()) {
+            bitField0_ |= 0x00000010;
+            outputFile_ = other.outputFile_;
+            onChanged();
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasValue()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.Protos.CommandInfo.URI parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.Protos.CommandInfo.URI) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required string value = 1;
+        private java.lang.Object value_ = "";
+        /**
+         * <code>required string value = 1;</code>
+         */
+        public boolean hasValue() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required string value = 1;</code>
+         */
+        public java.lang.String getValue() {
+          java.lang.Object ref = value_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            value_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>required string value = 1;</code>
+         */
+        public com.google.protobuf.ByteString
+            getValueBytes() {
+          java.lang.Object ref = value_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            value_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>required string value = 1;</code>
+         */
+        public Builder setValue(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          value_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required string value = 1;</code>
+         */
+        public Builder clearValue() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          value_ = getDefaultInstance().getValue();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required string value = 1;</code>
+         */
+        public Builder setValueBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          value_ = value;
+          onChanged();
+          return this;
+        }
+
+        // optional bool executable = 2;
+        private boolean executable_ ;
+        /**
+         * <code>optional bool executable = 2;</code>
+         */
+        public boolean hasExecutable() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional bool executable = 2;</code>
+         */
+        public boolean getExecutable() {
+          return executable_;
+        }
+        /**
+         * <code>optional bool executable = 2;</code>
+         */
+        public Builder setExecutable(boolean value) {
+          bitField0_ |= 0x00000002;
+          executable_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional bool executable = 2;</code>
+         */
+        public Builder clearExecutable() {
+          bitField0_ = (bitField0_ & ~0x00000002);
+          executable_ = false;
+          onChanged();
+          return this;
+        }
+
+        // optional bool extract = 3 [default = true];
+        private boolean extract_ = true;
+        /**
+         * <code>optional bool extract = 3 [default = true];</code>
+         *
+         * <pre>
+         * In case the fetched file is recognized as an archive, extract
+         * its contents into the sandbox. Note that a cached archive is
+         * not copied from the cache to the sandbox in case extraction
+         * originates from an archive in the cache.
+         * </pre>
+         */
+        public boolean hasExtract() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional bool extract = 3 [default = true];</code>
+         *
+         * <pre>
+         * In case the fetched file is recognized as an archive, extract
+         * its contents into the sandbox. Note that a cached archive is
+         * not copied from the cache to the sandbox in case extraction
+         * originates from an archive in the cache.
+         * </pre>
+         */
+        public boolean getExtract() {
+          return extract_;
+        }
+        /**
+         * <code>optional bool extract = 3 [default = true];</code>
+         *
+         * <pre>
+         * In case the fetched file is recognized as an archive, extract
+         * its contents into the sandbox. Note that a cached archive is
+         * not copied from the cache to the sandbox in case extraction
+         * originates from an archive in the cache.
+         * </pre>
+         */
+        public Builder setExtract(boolean value) {
+          bitField0_ |= 0x00000004;
+          extract_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional bool extract = 3 [default = true];</code>
+         *
+         * <pre>
+         * In case the fetched file is recognized as an archive, extract
+         * its contents into the sandbox. Note that a cached archive is
+         * not copied from the cache to the sandbox in case extraction
+         * originates from an archive in the cache.
+         * </pre>
+         */
+        public Builder clearExtract() {
+          bitField0_ = (bitField0_ & ~0x00000004);
+          extract_ = true;
+          onChanged();
+          return this;
+        }
+
+        // optional bool cache = 4;
+        private boolean cache_ ;
+        /**
+         * <code>optional bool cache = 4;</code>
+         *
+         * <pre>
+         * If this field is "true", the fetcher cache will be used. If not,
+         * fetching bypasses the cache and downloads directly into the
+         * sandbox directory, no matter whether a suitable cache file is
+         * available or not. The former directs the fetcher to download to
+         * the file cache, then copy from there to the sandbox. Subsequent
+         * fetch attempts with the same URI will omit downloading and copy
+         * from the cache as long as the file is resident there. Cache files
+         * may get evicted at any time, which then leads to renewed
+         * downloading. See also "docs/fetcher.md" and
+         * "docs/fetcher-cache-internals.md".
+         * </pre>
+         */
+        public boolean hasCache() {
+          return ((bitField0_ & 0x00000008) == 0x00000008);
+        }
+        /**
+         * <code>optional bool cache = 4;</code>
+         *
+         * <pre>
+         * If this field is "true", the fetcher cache will be used. If not,
+         * fetching bypasses the cache and downloads directly into the
+         * sandbox directory, no matter whether a suitable cache file is
+         * available or not. The former directs the fetcher to download to
+         * the file cache, then copy from there to the sandbox. Subsequent
+         * fetch attempts with the same URI will omit downloading and copy
+         * from the cache as long as the file is resident there. Cache files
+         * may get evicted at any time, which then leads to renewed
+         * downloading. See also "docs/fetcher.md" and
+         * "docs/fetcher-cache-internals.md".
+         * </pre>
+         */
+        public boolean getCache() {
+          return cache_;
+        }
+        /**
+         * <code>optional bool cache = 4;</code>
+         *
+         * <pre>
+         * If this field is "true", the fetcher cache will be used. If not,
+         * fetching bypasses the cache and downloads directly into the
+         * sandbox directory, no matter whether a suitable cache file is
+         * available or not. The former directs the fetcher to download to
+         * the file cache, then copy from there to the sandbox. Subsequent
+         * fetch attempts with the same URI will omit downloading and copy
+         * from the cache as long as the file is resident there. Cache files
+         * may get evicted at any time, which then leads to renewed
+         * downloading. See also "docs/fetcher.md" and
+         * "docs/fetcher-cache-internals.md".
+         * </pre>
+         */
+        public Builder setCache(boolean value) {
+          bitField0_ |= 0x00000008;
+          cache_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional bool cache = 4;</code>
+         *
+         * <pre>
+         * If this field is "true", the fetcher cache will be used. If not,
+         * fetching bypasses the cache and downloads directly into the
+         * sandbox directory, no matter whether a suitable cache file is
+         * available or not. The former directs the fetcher to download to
+         * the file cache, then copy from there to the sandbox. Subsequent
+         * fetch attempts with the same URI will omit downloading and copy
+         * from the cache as long as the file is resident there. Cache files
+         * may get evicted at any time, which then leads to renewed
+         * downloading. See also "docs/fetcher.md" and
+         * "docs/fetcher-cache-internals.md".
+         * </pre>
+         */
+        public Builder clearCache() {
+          bitField0_ = (bitField0_ & ~0x00000008);
+          cache_ = false;
+          onChanged();
+          return this;
+        }
+
+        // optional string output_file = 5;
+        private java.lang.Object outputFile_ = "";
+        /**
+         * <code>optional string output_file = 5;</code>
+         *
+         * <pre>
+         * The fetcher's default behavior is to use the URI string's basename to
+         * name the local copy. If this field is provided, the local copy will be
+         * named with its value instead. If there is a directory component (which
+         * must be a relative path), the local copy will be stored in that
+         * subdirectory inside the sandbox.
+         * </pre>
+         */
+        public boolean hasOutputFile() {
+          return ((bitField0_ & 0x00000010) == 0x00000010);
+        }
+        /**
+         * <code>optional string output_file = 5;</code>
+         *
+         * <pre>
+         * The fetcher's default behavior is to use the URI string's basename to
+         * name the local copy. If this field is provided, the local copy will be
+         * named with its value instead. If there is a directory component (which
+         * must be a relative path), the local copy will be stored in that
+         * subdirectory inside the sandbox.
+         * </pre>
+         */
+        public java.lang.String getOutputFile() {
+          java.lang.Object ref = outputFile_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            outputFile_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>optional string output_file = 5;</code>
+         *
+         * <pre>
+         * The fetcher's default behavior is to use the URI string's basename to
+         * name the local copy. If this field is provided, the local copy will be
+         * named with its value instead. If there is a directory component (which
+         * must be a relative path), the local copy will be stored in that
+         * subdirectory inside the sandbox.
+         * </pre>
+         */
+        public com.google.protobuf.ByteString
+            getOutputFileBytes() {
+          java.lang.Object ref = outputFile_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            outputFile_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>optional string output_file = 5;</code>
+         *
+         * <pre>
+         * The fetcher's default behavior is to use the URI string's basename to
+         * name the local copy. If this field is provided, the local copy will be
+         * named with its value instead. If there is a directory component (which
+         * must be a relative path), the local copy will be stored in that
+         * subdirectory inside the sandbox.
+         * </pre>
+         */
+        public Builder setOutputFile(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000010;
+          outputFile_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string output_file = 5;</code>
+         *
+         * <pre>
+         * The fetcher's default behavior is to use the URI string's basename to
+         * name the local copy. If this field is provided, the local copy will be
+         * named with its value instead. If there is a directory component (which
+         * must be a relative path), the local copy will be stored in that
+         * subdirectory inside the sandbox.
+         * </pre>
+         */
+        public Builder clearOutputFile() {
+          bitField0_ = (bitField0_ & ~0x00000010);
+          outputFile_ = getDefaultInstance().getOutputFile();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string output_file = 5;</code>
+         *
+         * <pre>
+         * The fetcher's default behavior is to use the URI string's basename to
+         * name the local copy. If this field is provided, the local copy will be
+         * named with its value instead. If there is a directory component (which
+         * must be a relative path), the local copy will be stored in that
+         * subdirectory inside the sandbox.
+         * </pre>
+         */
+        public Builder setOutputFileBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000010;
+          outputFile_ = value;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.CommandInfo.URI)
+      }
+
+      static {
+        defaultInstance = new URI(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.CommandInfo.URI)
+    }
+
+    private int bitField0_;
+    // repeated .mesos.v1.CommandInfo.URI uris = 1;
+    public static final int URIS_FIELD_NUMBER = 1;
+    private java.util.List<org.apache.mesos.v1.Protos.CommandInfo.URI> uris_;
+    /**
+     * <code>repeated .mesos.v1.CommandInfo.URI uris = 1;</code>
+     */
+    public java.util.List<org.apache.mesos.v1.Protos.CommandInfo.URI> getUrisList() {
+      return uris_;
+    }
+    /**
+     * <code>repeated .mesos.v1.CommandInfo.URI uris = 1;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.v1.Protos.CommandInfo.URIOrBuilder> 
+        getUrisOrBuilderList() {
+      return uris_;
+    }
+    /**
+     * <code>repeated .mesos.v1.CommandInfo.URI uris = 1;</code>
+     */
+    public int getUrisCount() {
+      return uris_.size();
+    }
+    /**
+     * <code>repeated .mesos.v1.CommandInfo.URI uris = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.CommandInfo.URI getUris(int index) {
+      return uris_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.v1.CommandInfo.URI uris = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.CommandInfo.URIOrBuilder getUrisOrBuilder(
+        int index) {
+      return uris_.get(index);
+    }
+
+    // optional .mesos.v1.Environment environment = 2;
+    public static final int ENVIRONMENT_FIELD_NUMBER = 2;
+    private org.apache.mesos.v1.Protos.Environment environment_;
+    /**
+     * <code>optional .mesos.v1.Environment environment = 2;</code>
+     */
+    public boolean hasEnvironment() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional .mesos.v1.Environment environment = 2;</code>
+     */
+    public org.apache.mesos.v1.Protos.Environment getEnvironment() {
+      return environment_;
+    }
+    /**
+     * <code>optional .mesos.v1.Environment environment = 2;</code>
+     */
+    public org.apache.mesos.v1.Protos.EnvironmentOrBuilder getEnvironmentOrBuilder() {
+      return environment_;
+    }
+
+    // optional bool shell = 6 [default = true];
+    public static final int SHELL_FIELD_NUMBER = 6;
+    private boolean shell_;
+    /**
+     * <code>optional bool shell = 6 [default = true];</code>
+     *
+     * <pre>
+     * There are two ways to specify the command:
+     * 1) If 'shell == true', the command will be launched via shell
+     *		(i.e., /bin/sh -c 'value'). The 'value' specified will be
+     *		treated as the shell command. The 'arguments' will be ignored.
+     * 2) If 'shell == false', the command will be launched by passing
+     *		arguments to an executable. The 'value' specified will be
+     *		treated as the filename of the executable. The 'arguments'
+     *		will be treated as the arguments to the executable. This is
+     *		similar to how POSIX exec families launch processes (i.e.,
+     *		execlp(value, arguments(0), arguments(1), ...)).
+     * NOTE: The field 'value' is changed from 'required' to 'optional'
+     * in 0.20.0. It will only cause issues if a new framework is
+     * connecting to an old master.
+     * </pre>
+     */
+    public boolean hasShell() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional bool shell = 6 [default = true];</code>
+     *
+     * <pre>
+     * There are two ways to specify the command:
+     * 1) If 'shell == true', the command will be launched via shell
+     *		(i.e., /bin/sh -c 'value'). The 'value' specified will be
+     *		treated as the shell command. The 'arguments' will be ignored.
+     * 2) If 'shell == false', the command will be launched by passing
+     *		arguments to an executable. The 'value' specified will be
+     *		treated as the filename of the executable. The 'arguments'
+     *		will be treated as the arguments to the executable. This is
+     *		similar to how POSIX exec families launch processes (i.e.,
+     *		execlp(value, arguments(0), arguments(1), ...)).
+     * NOTE: The field 'value' is changed from 'required' to 'optional'
+     * in 0.20.0. It will only cause issues if a new framework is
+     * connecting to an old master.
+     * </pre>
+     */
+    public boolean getShell() {
+      return shell_;
+    }
+
+    // optional string value = 3;
+    public static final int VALUE_FIELD_NUMBER = 3;
+    private java.lang.Object value_;
+    /**
+     * <code>optional string value = 3;</code>
+     */
+    public boolean hasValue() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional string value = 3;</code>
+     */
+    public java.lang.String getValue() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          value_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string value = 3;</code>
+     */
+    public com.google.protobuf.ByteString
+        getValueBytes() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        value_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // repeated string arguments = 7;
+    public static final int ARGUMENTS_FIELD_NUMBER = 7;
+    private com.google.protobuf.LazyStringList arguments_;
+    /**
+     * <code>repeated string arguments = 7;</code>
+     */
+    public java.util.List<java.lang.String>
+        getArgumentsList() {
+      return arguments_;
+    }
+    /**
+     * <code>repeated string arguments = 7;</code>
+     */
+    public int getArgumentsCount() {
+      return arguments_.size();
+    }
+    /**
+     * <code>repeated string arguments = 7;</code>
+     */
+    public java.lang.String getArguments(int index) {
+      return arguments_.get(index);
+    }
+    /**
+     * <code>repeated string arguments = 7;</code>
+     */
+    public com.google.protobuf.ByteString
+        getArgumentsBytes(int index) {
+      return arguments_.getByteString(index);
+    }
+
+    // optional string user = 5;
+    public static final int USER_FIELD_NUMBER = 5;
+    private java.lang.Object user_;
+    /**
+     * <code>optional string user = 5;</code>
+     *
+     * <pre>
+     * Enables executor and tasks to run as a specific user. If the user
+     * field is present both in FrameworkInfo and here, the CommandInfo
+     * user value takes precedence.
+     * </pre>
+     */
+    public boolean hasUser() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional string user = 5;</code>
+     *
+     * <pre>
+     * Enables executor and tasks to run as a specific user. If the user
+     * field is present both in FrameworkInfo and here, the CommandInfo
+     * user value takes precedence.
+     * </pre>
+     */
+    public java.lang.String getUser() {
+      java.lang.Object ref = user_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          user_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string user = 5;</code>
+     *
+     * <pre>
+     * Enables executor and tasks to run as a specific user. If the user
+     * field is present both in FrameworkInfo and here, the CommandInfo
+     * user value takes precedence.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getUserBytes() {
+      java.lang.Object ref = user_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        user_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      uris_ = java.util.Collections.emptyList();
+      environment_ = org.apache.mesos.v1.Protos.Environment.getDefaultInstance();
+      shell_ = true;
+      value_ = "";
+      arguments_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+      user_ = "";
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      for (int i = 0; i < getUrisCount(); i++) {
+        if (!getUris(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasEnvironment()) {
+        if (!getEnvironment().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      for (int i = 0; i < uris_.size(); i++) {
+        output.writeMessage(1, uris_.get(i));
+      }
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeMessage(2, environment_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeBytes(3, getValueBytes());
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeBytes(5, getUserBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBool(6, shell_);
+      }
+      for (int i = 0; i < arguments_.size(); i++) {
+        output.writeBytes(7, arguments_.getByteString(i));
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      for (int i = 0; i < uris_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, uris_.get(i));
+      }
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, environment_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(3, getValueBytes());
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(5, getUserBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(6, shell_);
+      }
+      {
+        int dataSize = 0;
+        for (int i = 0; i < arguments_.size(); i++) {
+          dataSize += com.google.protobuf.CodedOutputStream
+            .computeBytesSizeNoTag(arguments_.getByteString(i));
+        }
+        size += dataSize;
+        size += 1 * getArgumentsList().size();
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.CommandInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.CommandInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.CommandInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.CommandInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.CommandInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.CommandInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.CommandInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.CommandInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.CommandInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.CommandInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.CommandInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.CommandInfo}
+     *
+     * <pre>
+     **
+     * Describes a command, executed via: '/bin/sh -c value'. Any URIs specified
+     * are fetched before executing the command.  If the executable field for an
+     * uri is set, executable file permission is set on the downloaded file.
+     * Otherwise, if the downloaded file has a recognized archive extension
+     * (currently [compressed] tar and zip) it is extracted into the executor's
+     * working directory. This extraction can be disabled by setting `extract` to
+     * false. In addition, any environment variables are set before executing
+     * the command (so they can be used to "parameterize" your command).
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.CommandInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CommandInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CommandInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.CommandInfo.class, org.apache.mesos.v1.Protos.CommandInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.CommandInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getUrisFieldBuilder();
+          getEnvironmentFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (urisBuilder_ == null) {
+          uris_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+        } else {
+          urisBuilder_.clear();
+        }
+        if (environmentBuilder_ == null) {
+          environment_ = org.apache.mesos.v1.Protos.Environment.getDefaultInstance();
+        } else {
+          environmentBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        shell_ = true;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        value_ = "";
+        bitField0_ = (bitField0_ & ~0x00000008);
+        arguments_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+        bitField0_ = (bitField0_ & ~0x00000010);
+        user_ = "";
+        bitField0_ = (bitField0_ & ~0x00000020);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CommandInfo_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.CommandInfo getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.CommandInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.CommandInfo build() {
+        org.apache.mesos.v1.Protos.CommandInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.CommandInfo buildPartial() {
+        org.apache.mesos.v1.Protos.CommandInfo result = new org.apache.mesos.v1.Protos.CommandInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (urisBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            uris_ = java.util.Collections.unmodifiableList(uris_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.uris_ = uris_;
+        } else {
+          result.uris_ = urisBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        if (environmentBuilder_ == null) {
+          result.environment_ = environment_;
+        } else {
+          result.environment_ = environmentBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.shell_ = shell_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.value_ = value_;
+        if (((bitField0_ & 0x00000010) == 0x00000010)) {
+          arguments_ = new com.google.protobuf.UnmodifiableLazyStringList(
+              arguments_);
+          bitField0_ = (bitField0_ & ~0x00000010);
+        }
+        result.arguments_ = arguments_;
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.user_ = user_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.CommandInfo) {
+          return mergeFrom((org.apache.mesos.v1.Protos.CommandInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.CommandInfo other) {
+        if (other == org.apache.mesos.v1.Protos.CommandInfo.getDefaultInstance()) return this;
+        if (urisBuilder_ == null) {
+          if (!other.uris_.isEmpty()) {
+            if (uris_.isEmpty()) {
+              uris_ = other.uris_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureUrisIsMutable();
+              uris_.addAll(other.uris_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.uris_.isEmpty()) {
+            if (urisBuilder_.isEmpty()) {
+              urisBuilder_.dispose();
+              urisBuilder_ = null;
+              uris_ = other.uris_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              urisBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getUrisFieldBuilder() : null;
+            } else {
+              urisBuilder_.addAllMessages(other.uris_);
+            }
+          }
+        }
+        if (other.hasEnvironment()) {
+          mergeEnvironment(other.getEnvironment());
+        }
+        if (other.hasShell()) {
+          setShell(other.getShell());
+        }
+        if (other.hasValue()) {
+          bitField0_ |= 0x00000008;
+          value_ = other.value_;
+          onChanged();
+        }
+        if (!other.arguments_.isEmpty()) {
+          if (arguments_.isEmpty()) {
+            arguments_ = other.arguments_;
+            bitField0_ = (bitField0_ & ~0x00000010);
+          } else {
+            ensureArgumentsIsMutable();
+            arguments_.addAll(other.arguments_);
+          }
+          onChanged();
+        }
+        if (other.hasUser()) {
+          bitField0_ |= 0x00000020;
+          user_ = other.user_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        for (int i = 0; i < getUrisCount(); i++) {
+          if (!getUris(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasEnvironment()) {
+          if (!getEnvironment().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.CommandInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.CommandInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // repeated .mesos.v1.CommandInfo.URI uris = 1;
+      private java.util.List<org.apache.mesos.v1.Protos.CommandInfo.URI> uris_ =
+        java.util.Collections.emptyList();
+      private void ensureUrisIsMutable() {
+        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+          uris_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.CommandInfo.URI>(uris_);
+          bitField0_ |= 0x00000001;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.CommandInfo.URI, org.apache.mesos.v1.Protos.CommandInfo.URI.Builder, org.apache.mesos.v1.Protos.CommandInfo.URIOrBuilder> urisBuilder_;
+
+      /**
+       * <code>repeated .mesos.v1.CommandInfo.URI uris = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.CommandInfo.URI> getUrisList() {
+        if (urisBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(uris_);
+        } else {
+          return urisBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.CommandInfo.URI uris = 1;</code>
+       */
+      public int getUrisCount() {
+        if (urisBuilder_ == null) {
+          return uris_.size();
+        } else {
+          return urisBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.CommandInfo.URI uris = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.CommandInfo.URI getUris(int index) {
+        if (urisBuilder_ == null) {
+          return uris_.get(index);
+        } else {
+          return urisBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.CommandInfo.URI uris = 1;</code>
+       */
+      public Builder setUris(
+          int index, org.apache.mesos.v1.Protos.CommandInfo.URI value) {
+        if (urisBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureUrisIsMutable();
+          uris_.set(index, value);
+          onChanged();
+        } else {
+          urisBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.CommandInfo.URI uris = 1;</code>
+       */
+      public Builder setUris(
+          int index, org.apache.mesos.v1.Protos.CommandInfo.URI.Builder builderForValue) {
+        if (urisBuilder_ == null) {
+          ensureUrisIsMutable();
+          uris_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          urisBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.CommandInfo.URI uris = 1;</code>
+       */
+      public Builder addUris(org.apache.mesos.v1.Protos.CommandInfo.URI value) {
+        if (urisBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureUrisIsMutable();
+          uris_.add(value);
+          onChanged();
+        } else {
+          urisBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.CommandInfo.URI uris = 1;</code>
+       */
+      public Builder addUris(
+          int index, org.apache.mesos.v1.Protos.CommandInfo.URI value) {
+        if (urisBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureUrisIsMutable();
+          uris_.add(index, value);
+          onChanged();
+        } else {
+          urisBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.CommandInfo.URI uris = 1;</code>
+       */
+      public Builder addUris(
+          org.apache.mesos.v1.Protos.CommandInfo.URI.Builder builderForValue) {
+        if (urisBuilder_ == null) {
+          ensureUrisIsMutable();
+          uris_.add(builderForValue.build());
+          onChanged();
+        } else {
+          urisBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.CommandInfo.URI uris = 1;</code>
+       */
+      public Builder addUris(
+          int index, org.apache.mesos.v1.Protos.CommandInfo.URI.Builder builderForValue) {
+        if (urisBuilder_ == null) {
+          ensureUrisIsMutable();
+          uris_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          urisBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.CommandInfo.URI uris = 1;</code>
+       */
+      public Builder addAllUris(
+          java.lang.Iterable<? extends org.apache.mesos.v1.Protos.CommandInfo.URI> values) {
+        if (urisBuilder_ == null) {
+          ensureUrisIsMutable();
+          super.addAll(values, uris_);
+          onChanged();
+        } else {
+          urisBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.CommandInfo.URI uris = 1;</code>
+       */
+      public Builder clearUris() {
+        if (urisBuilder_ == null) {
+          uris_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+        } else {
+          urisBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.CommandInfo.URI uris = 1;</code>
+       */
+      public Builder removeUris(int index) {
+        if (urisBuilder_ == null) {
+          ensureUrisIsMutable();
+          uris_.remove(index);
+          onChanged();
+        } else {
+          urisBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.CommandInfo.URI uris = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.CommandInfo.URI.Builder getUrisBuilder(
+          int index) {
+        return getUrisFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.CommandInfo.URI uris = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.CommandInfo.URIOrBuilder getUrisOrBuilder(
+          int index) {
+        if (urisBuilder_ == null) {
+          return uris_.get(index);  } else {
+          return urisBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.CommandInfo.URI uris = 1;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.CommandInfo.URIOrBuilder> 
+           getUrisOrBuilderList() {
+        if (urisBuilder_ != null) {
+          return urisBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(uris_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.CommandInfo.URI uris = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.CommandInfo.URI.Builder addUrisBuilder() {
+        return getUrisFieldBuilder().addBuilder(
+            org.apache.mesos.v1.Protos.CommandInfo.URI.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.CommandInfo.URI uris = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.CommandInfo.URI.Builder addUrisBuilder(
+          int index) {
+        return getUrisFieldBuilder().addBuilder(
+            index, org.apache.mesos.v1.Protos.CommandInfo.URI.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.CommandInfo.URI uris = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.CommandInfo.URI.Builder> 
+           getUrisBuilderList() {
+        return getUrisFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.CommandInfo.URI, org.apache.mesos.v1.Protos.CommandInfo.URI.Builder, org.apache.mesos.v1.Protos.CommandInfo.URIOrBuilder> 
+          getUrisFieldBuilder() {
+        if (urisBuilder_ == null) {
+          urisBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.CommandInfo.URI, org.apache.mesos.v1.Protos.CommandInfo.URI.Builder, org.apache.mesos.v1.Protos.CommandInfo.URIOrBuilder>(
+                  uris_,
+                  ((bitField0_ & 0x00000001) == 0x00000001),
+                  getParentForChildren(),
+                  isClean());
+          uris_ = null;
+        }
+        return urisBuilder_;
+      }
+
+      // optional .mesos.v1.Environment environment = 2;
+      private org.apache.mesos.v1.Protos.Environment environment_ = org.apache.mesos.v1.Protos.Environment.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Environment, org.apache.mesos.v1.Protos.Environment.Builder, org.apache.mesos.v1.Protos.EnvironmentOrBuilder> environmentBuilder_;
+      /**
+       * <code>optional .mesos.v1.Environment environment = 2;</code>
+       */
+      public boolean hasEnvironment() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.v1.Environment environment = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.Environment getEnvironment() {
+        if (environmentBuilder_ == null) {
+          return environment_;
+        } else {
+          return environmentBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Environment environment = 2;</code>
+       */
+      public Builder setEnvironment(org.apache.mesos.v1.Protos.Environment value) {
+        if (environmentBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          environment_ = value;
+          onChanged();
+        } else {
+          environmentBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Environment environment = 2;</code>
+       */
+      public Builder setEnvironment(
+          org.apache.mesos.v1.Protos.Environment.Builder builderForValue) {
+        if (environmentBuilder_ == null) {
+          environment_ = builderForValue.build();
+          onChanged();
+        } else {
+          environmentBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Environment environment = 2;</code>
+       */
+      public Builder mergeEnvironment(org.apache.mesos.v1.Protos.Environment value) {
+        if (environmentBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              environment_ != org.apache.mesos.v1.Protos.Environment.getDefaultInstance()) {
+            environment_ =
+              org.apache.mesos.v1.Protos.Environment.newBuilder(environment_).mergeFrom(value).buildPartial();
+          } else {
+            environment_ = value;
+          }
+          onChanged();
+        } else {
+          environmentBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Environment environment = 2;</code>
+       */
+      public Builder clearEnvironment() {
+        if (environmentBuilder_ == null) {
+          environment_ = org.apache.mesos.v1.Protos.Environment.getDefaultInstance();
+          onChanged();
+        } else {
+          environmentBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Environment environment = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.Environment.Builder getEnvironmentBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getEnvironmentFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.Environment environment = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.EnvironmentOrBuilder getEnvironmentOrBuilder() {
+        if (environmentBuilder_ != null) {
+          return environmentBuilder_.getMessageOrBuilder();
+        } else {
+          return environment_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Environment environment = 2;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Environment, org.apache.mesos.v1.Protos.Environment.Builder, org.apache.mesos.v1.Protos.EnvironmentOrBuilder> 
+          getEnvironmentFieldBuilder() {
+        if (environmentBuilder_ == null) {
+          environmentBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Environment, org.apache.mesos.v1.Protos.Environment.Builder, org.apache.mesos.v1.Protos.EnvironmentOrBuilder>(
+                  environment_,
+                  getParentForChildren(),
+                  isClean());
+          environment_ = null;
+        }
+        return environmentBuilder_;
+      }
+
+      // optional bool shell = 6 [default = true];
+      private boolean shell_ = true;
+      /**
+       * <code>optional bool shell = 6 [default = true];</code>
+       *
+       * <pre>
+       * There are two ways to specify the command:
+       * 1) If 'shell == true', the command will be launched via shell
+       *		(i.e., /bin/sh -c 'value'). The 'value' specified will be
+       *		treated as the shell command. The 'arguments' will be ignored.
+       * 2) If 'shell == false', the command will be launched by passing
+       *		arguments to an executable. The 'value' specified will be
+       *		treated as the filename of the executable. The 'arguments'
+       *		will be treated as the arguments to the executable. This is
+       *		similar to how POSIX exec families launch processes (i.e.,
+       *		execlp(value, arguments(0), arguments(1), ...)).
+       * NOTE: The field 'value' is changed from 'required' to 'optional'
+       * in 0.20.0. It will only cause issues if a new framework is
+       * connecting to an old master.
+       * </pre>
+       */
+      public boolean hasShell() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional bool shell = 6 [default = true];</code>
+       *
+       * <pre>
+       * There are two ways to specify the command:
+       * 1) If 'shell == true', the command will be launched via shell
+       *		(i.e., /bin/sh -c 'value'). The 'value' specified will be
+       *		treated as the shell command. The 'arguments' will be ignored.
+       * 2) If 'shell == false', the command will be launched by passing
+       *		arguments to an executable. The 'value' specified will be
+       *		treated as the filename of the executable. The 'arguments'
+       *		will be treated as the arguments to the executable. This is
+       *		similar to how POSIX exec families launch processes (i.e.,
+       *		execlp(value, arguments(0), arguments(1), ...)).
+       * NOTE: The field 'value' is changed from 'required' to 'optional'
+       * in 0.20.0. It will only cause issues if a new framework is
+       * connecting to an old master.
+       * </pre>
+       */
+      public boolean getShell() {
+        return shell_;
+      }
+      /**
+       * <code>optional bool shell = 6 [default = true];</code>
+       *
+       * <pre>
+       * There are two ways to specify the command:
+       * 1) If 'shell == true', the command will be launched via shell
+       *		(i.e., /bin/sh -c 'value'). The 'value' specified will be
+       *		treated as the shell command. The 'arguments' will be ignored.
+       * 2) If 'shell == false', the command will be launched by passing
+       *		arguments to an executable. The 'value' specified will be
+       *		treated as the filename of the executable. The 'arguments'
+       *		will be treated as the arguments to the executable. This is
+       *		similar to how POSIX exec families launch processes (i.e.,
+       *		execlp(value, arguments(0), arguments(1), ...)).
+       * NOTE: The field 'value' is changed from 'required' to 'optional'
+       * in 0.20.0. It will only cause issues if a new framework is
+       * connecting to an old master.
+       * </pre>
+       */
+      public Builder setShell(boolean value) {
+        bitField0_ |= 0x00000004;
+        shell_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional bool shell = 6 [default = true];</code>
+       *
+       * <pre>
+       * There are two ways to specify the command:
+       * 1) If 'shell == true', the command will be launched via shell
+       *		(i.e., /bin/sh -c 'value'). The 'value' specified will be
+       *		treated as the shell command. The 'arguments' will be ignored.
+       * 2) If 'shell == false', the command will be launched by passing
+       *		arguments to an executable. The 'value' specified will be
+       *		treated as the filename of the executable. The 'arguments'
+       *		will be treated as the arguments to the executable. This is
+       *		similar to how POSIX exec families launch processes (i.e.,
+       *		execlp(value, arguments(0), arguments(1), ...)).
+       * NOTE: The field 'value' is changed from 'required' to 'optional'
+       * in 0.20.0. It will only cause issues if a new framework is
+       * connecting to an old master.
+       * </pre>
+       */
+      public Builder clearShell() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        shell_ = true;
+        onChanged();
+        return this;
+      }
+
+      // optional string value = 3;
+      private java.lang.Object value_ = "";
+      /**
+       * <code>optional string value = 3;</code>
+       */
+      public boolean hasValue() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional string value = 3;</code>
+       */
+      public java.lang.String getValue() {
+        java.lang.Object ref = value_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          value_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string value = 3;</code>
+       */
+      public com.google.protobuf.ByteString
+          getValueBytes() {
+        java.lang.Object ref = value_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          value_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string value = 3;</code>
+       */
+      public Builder setValue(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string value = 3;</code>
+       */
+      public Builder clearValue() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        value_ = getDefaultInstance().getValue();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string value = 3;</code>
+       */
+      public Builder setValueBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+
+      // repeated string arguments = 7;
+      private com.google.protobuf.LazyStringList arguments_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+      private void ensureArgumentsIsMutable() {
+        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
+          arguments_ = new com.google.protobuf.LazyStringArrayList(arguments_);
+          bitField0_ |= 0x00000010;
+         }
+      }
+      /**
+       * <code>repeated string arguments = 7;</code>
+       */
+      public java.util.List<java.lang.String>
+          getArgumentsList() {
+        return java.util.Collections.unmodifiableList(arguments_);
+      }
+      /**
+       * <code>repeated string arguments = 7;</code>
+       */
+      public int getArgumentsCount() {
+        return arguments_.size();
+      }
+      /**
+       * <code>repeated string arguments = 7;</code>
+       */
+      public java.lang.String getArguments(int index) {
+        return arguments_.get(index);
+      }
+      /**
+       * <code>repeated string arguments = 7;</code>
+       */
+      public com.google.protobuf.ByteString
+          getArgumentsBytes(int index) {
+        return arguments_.getByteString(index);
+      }
+      /**
+       * <code>repeated string arguments = 7;</code>
+       */
+      public Builder setArguments(
+          int index, java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureArgumentsIsMutable();
+        arguments_.set(index, value);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated string arguments = 7;</code>
+       */
+      public Builder addArguments(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureArgumentsIsMutable();
+        arguments_.add(value);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated string arguments = 7;</code>
+       */
+      public Builder addAllArguments(
+          java.lang.Iterable<java.lang.String> values) {
+        ensureArgumentsIsMutable();
+        super.addAll(values, arguments_);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated string arguments = 7;</code>
+       */
+      public Builder clearArguments() {
+        arguments_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+        bitField0_ = (bitField0_ & ~0x00000010);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated string arguments = 7;</code>
+       */
+      public Builder addArgumentsBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureArgumentsIsMutable();
+        arguments_.add(value);
+        onChanged();
+        return this;
+      }
+
+      // optional string user = 5;
+      private java.lang.Object user_ = "";
+      /**
+       * <code>optional string user = 5;</code>
+       *
+       * <pre>
+       * Enables executor and tasks to run as a specific user. If the user
+       * field is present both in FrameworkInfo and here, the CommandInfo
+       * user value takes precedence.
+       * </pre>
+       */
+      public boolean hasUser() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional string user = 5;</code>
+       *
+       * <pre>
+       * Enables executor and tasks to run as a specific user. If the user
+       * field is present both in FrameworkInfo and here, the CommandInfo
+       * user value takes precedence.
+       * </pre>
+       */
+      public java.lang.String getUser() {
+        java.lang.Object ref = user_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          user_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string user = 5;</code>
+       *
+       * <pre>
+       * Enables executor and tasks to run as a specific user. If the user
+       * field is present both in FrameworkInfo and here, the CommandInfo
+       * user value takes precedence.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getUserBytes() {
+        java.lang.Object ref = user_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          user_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string user = 5;</code>
+       *
+       * <pre>
+       * Enables executor and tasks to run as a specific user. If the user
+       * field is present both in FrameworkInfo and here, the CommandInfo
+       * user value takes precedence.
+       * </pre>
+       */
+      public Builder setUser(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000020;
+        user_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string user = 5;</code>
+       *
+       * <pre>
+       * Enables executor and tasks to run as a specific user. If the user
+       * field is present both in FrameworkInfo and here, the CommandInfo
+       * user value takes precedence.
+       * </pre>
+       */
+      public Builder clearUser() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        user_ = getDefaultInstance().getUser();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string user = 5;</code>
+       *
+       * <pre>
+       * Enables executor and tasks to run as a specific user. If the user
+       * field is present both in FrameworkInfo and here, the CommandInfo
+       * user value takes precedence.
+       * </pre>
+       */
+      public Builder setUserBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000020;
+        user_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.CommandInfo)
+    }
+
+    static {
+      defaultInstance = new CommandInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.CommandInfo)
+  }
+
+  public interface ExecutorInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional .mesos.v1.ExecutorInfo.Type type = 15;
+    /**
+     * <code>optional .mesos.v1.ExecutorInfo.Type type = 15;</code>
+     *
+     * <pre>
+     * For backwards compatibility, if this field is not set when using `LAUNCH`
+     * offer operation, Mesos will infer the type by checking if `command` is
+     * set (`CUSTOM`) or unset (`DEFAULT`). `type` must be set when using
+     * `LAUNCH_GROUP` offer operation.
+     *
+     * TODO(vinod): Add support for explicitly setting `type` to `DEFAULT `
+     * in `LAUNCH` offer operation.
+     * </pre>
+     */
+    boolean hasType();
+    /**
+     * <code>optional .mesos.v1.ExecutorInfo.Type type = 15;</code>
+     *
+     * <pre>
+     * For backwards compatibility, if this field is not set when using `LAUNCH`
+     * offer operation, Mesos will infer the type by checking if `command` is
+     * set (`CUSTOM`) or unset (`DEFAULT`). `type` must be set when using
+     * `LAUNCH_GROUP` offer operation.
+     *
+     * TODO(vinod): Add support for explicitly setting `type` to `DEFAULT `
+     * in `LAUNCH` offer operation.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.ExecutorInfo.Type getType();
+
+    // required .mesos.v1.ExecutorID executor_id = 1;
+    /**
+     * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+     */
+    boolean hasExecutorId();
+    /**
+     * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.ExecutorID getExecutorId();
+    /**
+     * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder();
+
+    // optional .mesos.v1.FrameworkID framework_id = 8;
+    /**
+     * <code>optional .mesos.v1.FrameworkID framework_id = 8;</code>
+     *
+     * <pre>
+     * TODO(benh): Make this required.
+     * </pre>
+     */
+    boolean hasFrameworkId();
+    /**
+     * <code>optional .mesos.v1.FrameworkID framework_id = 8;</code>
+     *
+     * <pre>
+     * TODO(benh): Make this required.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.FrameworkID getFrameworkId();
+    /**
+     * <code>optional .mesos.v1.FrameworkID framework_id = 8;</code>
+     *
+     * <pre>
+     * TODO(benh): Make this required.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.FrameworkIDOrBuilder getFrameworkIdOrBuilder();
+
+    // optional .mesos.v1.CommandInfo command = 7;
+    /**
+     * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+     */
+    boolean hasCommand();
+    /**
+     * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+     */
+    org.apache.mesos.v1.Protos.CommandInfo getCommand();
+    /**
+     * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+     */
+    org.apache.mesos.v1.Protos.CommandInfoOrBuilder getCommandOrBuilder();
+
+    // optional .mesos.v1.ContainerInfo container = 11;
+    /**
+     * <code>optional .mesos.v1.ContainerInfo container = 11;</code>
+     *
+     * <pre>
+     * Executor provided with a container will launch the container
+     * with the executor's CommandInfo and we expect the container to
+     * act as a Mesos executor.
+     * </pre>
+     */
+    boolean hasContainer();
+    /**
+     * <code>optional .mesos.v1.ContainerInfo container = 11;</code>
+     *
+     * <pre>
+     * Executor provided with a container will launch the container
+     * with the executor's CommandInfo and we expect the container to
+     * act as a Mesos executor.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.ContainerInfo getContainer();
+    /**
+     * <code>optional .mesos.v1.ContainerInfo container = 11;</code>
+     *
+     * <pre>
+     * Executor provided with a container will launch the container
+     * with the executor's CommandInfo and we expect the container to
+     * act as a Mesos executor.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.ContainerInfoOrBuilder getContainerOrBuilder();
+
+    // repeated .mesos.v1.Resource resources = 5;
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 5;</code>
+     */
+    java.util.List<org.apache.mesos.v1.Protos.Resource> 
+        getResourcesList();
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 5;</code>
+     */
+    org.apache.mesos.v1.Protos.Resource getResources(int index);
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 5;</code>
+     */
+    int getResourcesCount();
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 5;</code>
+     */
+    java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+        getResourcesOrBuilderList();
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 5;</code>
+     */
+    org.apache.mesos.v1.Protos.ResourceOrBuilder getResourcesOrBuilder(
+        int index);
+
+    // optional string name = 9;
+    /**
+     * <code>optional string name = 9;</code>
+     */
+    boolean hasName();
+    /**
+     * <code>optional string name = 9;</code>
+     */
+    java.lang.String getName();
+    /**
+     * <code>optional string name = 9;</code>
+     */
+    com.google.protobuf.ByteString
+        getNameBytes();
+
+    // optional string source = 10 [deprecated = true];
+    /**
+     * <code>optional string source = 10 [deprecated = true];</code>
+     *
+     * <pre>
+     * 'source' is an identifier style string used by frameworks to
+     * track the source of an executor. This is useful when it's
+     * possible for different executor ids to be related semantically.
+     *
+     * NOTE: 'source' is exposed alongside the resource usage of the
+     * executor via JSON on the agent. This allows users to import usage
+     * information into a time series database for monitoring.
+     *
+     * This field is deprecated since 1.0. Please use labels for
+     * free-form metadata instead.
+     * </pre>
+     */
+    @java.lang.Deprecated boolean hasSource();
+    /**
+     * <code>optional string source = 10 [deprecated = true];</code>
+     *
+     * <pre>
+     * 'source' is an identifier style string used by frameworks to
+     * track the source of an executor. This is useful when it's
+     * possible for different executor ids to be related semantically.
+     *
+     * NOTE: 'source' is exposed alongside the resource usage of the
+     * executor via JSON on the agent. This allows users to import usage
+     * information into a time series database for monitoring.
+     *
+     * This field is deprecated since 1.0. Please use labels for
+     * free-form metadata instead.
+     * </pre>
+     */
+    @java.lang.Deprecated java.lang.String getSource();
+    /**
+     * <code>optional string source = 10 [deprecated = true];</code>
+     *
+     * <pre>
+     * 'source' is an identifier style string used by frameworks to
+     * track the source of an executor. This is useful when it's
+     * possible for different executor ids to be related semantically.
+     *
+     * NOTE: 'source' is exposed alongside the resource usage of the
+     * executor via JSON on the agent. This allows users to import usage
+     * information into a time series database for monitoring.
+     *
+     * This field is deprecated since 1.0. Please use labels for
+     * free-form metadata instead.
+     * </pre>
+     */
+    @java.lang.Deprecated com.google.protobuf.ByteString
+        getSourceBytes();
+
+    // optional bytes data = 4;
+    /**
+     * <code>optional bytes data = 4;</code>
+     *
+     * <pre>
+     * This field can be used to pass arbitrary bytes to an executor.
+     * </pre>
+     */
+    boolean hasData();
+    /**
+     * <code>optional bytes data = 4;</code>
+     *
+     * <pre>
+     * This field can be used to pass arbitrary bytes to an executor.
+     * </pre>
+     */
+    com.google.protobuf.ByteString getData();
+
+    // optional .mesos.v1.DiscoveryInfo discovery = 12;
+    /**
+     * <code>optional .mesos.v1.DiscoveryInfo discovery = 12;</code>
+     *
+     * <pre>
+     * Service discovery information for the executor. It is not
+     * interpreted or acted upon by Mesos. It is up to a service
+     * discovery system to use this information as needed and to handle
+     * executors without service discovery information.
+     * </pre>
+     */
+    boolean hasDiscovery();
+    /**
+     * <code>optional .mesos.v1.DiscoveryInfo discovery = 12;</code>
+     *
+     * <pre>
+     * Service discovery information for the executor. It is not
+     * interpreted or acted upon by Mesos. It is up to a service
+     * discovery system to use this information as needed and to handle
+     * executors without service discovery information.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.DiscoveryInfo getDiscovery();
+    /**
+     * <code>optional .mesos.v1.DiscoveryInfo discovery = 12;</code>
+     *
+     * <pre>
+     * Service discovery information for the executor. It is not
+     * interpreted or acted upon by Mesos. It is up to a service
+     * discovery system to use this information as needed and to handle
+     * executors without service discovery information.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.DiscoveryInfoOrBuilder getDiscoveryOrBuilder();
+
+    // optional .mesos.v1.DurationInfo shutdown_grace_period = 13;
+    /**
+     * <code>optional .mesos.v1.DurationInfo shutdown_grace_period = 13;</code>
+     *
+     * <pre>
+     * When shutting down an executor the agent will wait in a
+     * best-effort manner for the grace period specified here
+     * before forcibly destroying the container. The executor
+     * must not assume that it will always be allotted the full
+     * grace period, as the agent may decide to allot a shorter
+     * period and failures / forcible terminations may occur.
+     * </pre>
+     */
+    boolean hasShutdownGracePeriod();
+    /**
+     * <code>optional .mesos.v1.DurationInfo shutdown_grace_period = 13;</code>
+     *
+     * <pre>
+     * When shutting down an executor the agent will wait in a
+     * best-effort manner for the grace period specified here
+     * before forcibly destroying the container. The executor
+     * must not assume that it will always be allotted the full
+     * grace period, as the agent may decide to allot a shorter
+     * period and failures / forcible terminations may occur.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.DurationInfo getShutdownGracePeriod();
+    /**
+     * <code>optional .mesos.v1.DurationInfo shutdown_grace_period = 13;</code>
+     *
+     * <pre>
+     * When shutting down an executor the agent will wait in a
+     * best-effort manner for the grace period specified here
+     * before forcibly destroying the container. The executor
+     * must not assume that it will always be allotted the full
+     * grace period, as the agent may decide to allot a shorter
+     * period and failures / forcible terminations may occur.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.DurationInfoOrBuilder getShutdownGracePeriodOrBuilder();
+
+    // optional .mesos.v1.Labels labels = 14;
+    /**
+     * <code>optional .mesos.v1.Labels labels = 14;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs which are exposed through
+     * master and agent endpoints. Labels will not be interpreted or
+     * acted upon by Mesos itself. As opposed to the data field, labels
+     * will be kept in memory on master and agent processes. Therefore,
+     * labels should be used to tag executors with lightweight metadata.
+     * Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    boolean hasLabels();
+    /**
+     * <code>optional .mesos.v1.Labels labels = 14;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs which are exposed through
+     * master and agent endpoints. Labels will not be interpreted or
+     * acted upon by Mesos itself. As opposed to the data field, labels
+     * will be kept in memory on master and agent processes. Therefore,
+     * labels should be used to tag executors with lightweight metadata.
+     * Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.Labels getLabels();
+    /**
+     * <code>optional .mesos.v1.Labels labels = 14;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs which are exposed through
+     * master and agent endpoints. Labels will not be interpreted or
+     * acted upon by Mesos itself. As opposed to the data field, labels
+     * will be kept in memory on master and agent processes. Therefore,
+     * labels should be used to tag executors with lightweight metadata.
+     * Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.LabelsOrBuilder getLabelsOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.ExecutorInfo}
+   *
+   * <pre>
+   **
+   * Describes information about an executor.
+   * </pre>
+   */
+  public static final class ExecutorInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements ExecutorInfoOrBuilder {
+    // Use ExecutorInfo.newBuilder() to construct.
+    private ExecutorInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private ExecutorInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final ExecutorInfo defaultInstance;
+    public static ExecutorInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public ExecutorInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private ExecutorInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              org.apache.mesos.v1.Protos.ExecutorID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = executorId_.toBuilder();
+              }
+              executorId_ = input.readMessage(org.apache.mesos.v1.Protos.ExecutorID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(executorId_);
+                executorId_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+            case 34: {
+              bitField0_ |= 0x00000080;
+              data_ = input.readBytes();
+              break;
+            }
+            case 42: {
+              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
+                resources_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Resource>();
+                mutable_bitField0_ |= 0x00000020;
+              }
+              resources_.add(input.readMessage(org.apache.mesos.v1.Protos.Resource.PARSER, extensionRegistry));
+              break;
+            }
+            case 58: {
+              org.apache.mesos.v1.Protos.CommandInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                subBuilder = command_.toBuilder();
+              }
+              command_ = input.readMessage(org.apache.mesos.v1.Protos.CommandInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(command_);
+                command_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000008;
+              break;
+            }
+            case 66: {
+              org.apache.mesos.v1.Protos.FrameworkID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                subBuilder = frameworkId_.toBuilder();
+              }
+              frameworkId_ = input.readMessage(org.apache.mesos.v1.Protos.FrameworkID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(frameworkId_);
+                frameworkId_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000004;
+              break;
+            }
+            case 74: {
+              bitField0_ |= 0x00000020;
+              name_ = input.readBytes();
+              break;
+            }
+            case 82: {
+              bitField0_ |= 0x00000040;
+              source_ = input.readBytes();
+              break;
+            }
+            case 90: {
+              org.apache.mesos.v1.Protos.ContainerInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000010) == 0x00000010)) {
+                subBuilder = container_.toBuilder();
+              }
+              container_ = input.readMessage(org.apache.mesos.v1.Protos.ContainerInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(container_);
+                container_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000010;
+              break;
+            }
+            case 98: {
+              org.apache.mesos.v1.Protos.DiscoveryInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000100) == 0x00000100)) {
+                subBuilder = discovery_.toBuilder();
+              }
+              discovery_ = input.readMessage(org.apache.mesos.v1.Protos.DiscoveryInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(discovery_);
+                discovery_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000100;
+              break;
+            }
+            case 106: {
+              org.apache.mesos.v1.Protos.DurationInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000200) == 0x00000200)) {
+                subBuilder = shutdownGracePeriod_.toBuilder();
+              }
+              shutdownGracePeriod_ = input.readMessage(org.apache.mesos.v1.Protos.DurationInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(shutdownGracePeriod_);
+                shutdownGracePeriod_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000200;
+              break;
+            }
+            case 114: {
+              org.apache.mesos.v1.Protos.Labels.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000400) == 0x00000400)) {
+                subBuilder = labels_.toBuilder();
+              }
+              labels_ = input.readMessage(org.apache.mesos.v1.Protos.Labels.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(labels_);
+                labels_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000400;
+              break;
+            }
+            case 120: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.v1.Protos.ExecutorInfo.Type value = org.apache.mesos.v1.Protos.ExecutorInfo.Type.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(15, rawValue);
+              } else {
+                bitField0_ |= 0x00000001;
+                type_ = value;
+              }
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
+          resources_ = java.util.Collections.unmodifiableList(resources_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ExecutorInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ExecutorInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.ExecutorInfo.class, org.apache.mesos.v1.Protos.ExecutorInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<ExecutorInfo> PARSER =
+        new com.google.protobuf.AbstractParser<ExecutorInfo>() {
+      public ExecutorInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new ExecutorInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<ExecutorInfo> getParserForType() {
+      return PARSER;
+    }
+
+    /**
+     * Protobuf enum {@code mesos.v1.ExecutorInfo.Type}
+     */
+    public enum Type
+        implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>UNKNOWN = 0;</code>
+       */
+      UNKNOWN(0, 0),
+      /**
+       * <code>DEFAULT = 1;</code>
+       *
+       * <pre>
+       * Mesos provides a simple built-in default executor that frameworks can
+       * leverage to run shell commands and containers.
+       *
+       * NOTES:
+       *
+       * 1) `command` must not be set when using a default executor.
+       *
+       * 2) Default executor only accepts a *single* `LAUNCH` or `LAUNCH_GROUP`
+       *    offer operation.
+       *
+       * 3) If `container` is set, `container.type` must be `MESOS`
+       *    and `container.mesos.image` must not be set.
+       * </pre>
+       */
+      DEFAULT(1, 1),
+      /**
+       * <code>CUSTOM = 2;</code>
+       *
+       * <pre>
+       * For frameworks that need custom functionality to run tasks, a `CUSTOM`
+       * executor can be used. Note that `command` must be set when using a
+       * `CUSTOM` executor.
+       * </pre>
+       */
+      CUSTOM(2, 2),
+      ;
+
+      /**
+       * <code>UNKNOWN = 0;</code>
+       */
+      public static final int UNKNOWN_VALUE = 0;
+      /**
+       * <code>DEFAULT = 1;</code>
+       *
+       * <pre>
+       * Mesos provides a simple built-in default executor that frameworks can
+       * leverage to run shell commands and containers.
+       *
+       * NOTES:
+       *
+       * 1) `command` must not be set when using a default executor.
+       *
+       * 2) Default executor only accepts a *single* `LAUNCH` or `LAUNCH_GROUP`
+       *    offer operation.
+       *
+       * 3) If `container` is set, `container.type` must be `MESOS`
+       *    and `container.mesos.image` must not be set.
+       * </pre>
+       */
+      public static final int DEFAULT_VALUE = 1;
+      /**
+       * <code>CUSTOM = 2;</code>
+       *
+       * <pre>
+       * For frameworks that need custom functionality to run tasks, a `CUSTOM`
+       * executor can be used. Note that `command` must be set when using a
+       * `CUSTOM` executor.
+       * </pre>
+       */
+      public static final int CUSTOM_VALUE = 2;
+
+
+      public final int getNumber() { return value; }
+
+      public static Type valueOf(int value) {
+        switch (value) {
+          case 0: return UNKNOWN;
+          case 1: return DEFAULT;
+          case 2: return CUSTOM;
+          default: return null;
+        }
+      }
+
+      public static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalGetValueMap() {
+        return internalValueMap;
+      }
+      private static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap<Type>() {
+              public Type findValueByNumber(int number) {
+                return Type.valueOf(number);
+              }
+            };
+
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
+          getValueDescriptor() {
+        return getDescriptor().getValues().get(index);
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptorForType() {
+        return getDescriptor();
+      }
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.ExecutorInfo.getDescriptor().getEnumTypes().get(0);
+      }
+
+      private static final Type[] VALUES = values();
+
+      public static Type valueOf(
+          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+        if (desc.getType() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "EnumValueDescriptor is not for this type.");
+        }
+        return VALUES[desc.getIndex()];
+      }
+
+      private final int index;
+      private final int value;
+
+      private Type(int index, int value) {
+        this.index = index;
+        this.value = value;
+      }
+
+      // @@protoc_insertion_point(enum_scope:mesos.v1.ExecutorInfo.Type)
+    }
+
+    private int bitField0_;
+    // optional .mesos.v1.ExecutorInfo.Type type = 15;
+    public static final int TYPE_FIELD_NUMBER = 15;
+    private org.apache.mesos.v1.Protos.ExecutorInfo.Type type_;
+    /**
+     * <code>optional .mesos.v1.ExecutorInfo.Type type = 15;</code>
+     *
+     * <pre>
+     * For backwards compatibility, if this field is not set when using `LAUNCH`
+     * offer operation, Mesos will infer the type by checking if `command` is
+     * set (`CUSTOM`) or unset (`DEFAULT`). `type` must be set when using
+     * `LAUNCH_GROUP` offer operation.
+     *
+     * TODO(vinod): Add support for explicitly setting `type` to `DEFAULT `
+     * in `LAUNCH` offer operation.
+     * </pre>
+     */
+    public boolean hasType() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional .mesos.v1.ExecutorInfo.Type type = 15;</code>
+     *
+     * <pre>
+     * For backwards compatibility, if this field is not set when using `LAUNCH`
+     * offer operation, Mesos will infer the type by checking if `command` is
+     * set (`CUSTOM`) or unset (`DEFAULT`). `type` must be set when using
+     * `LAUNCH_GROUP` offer operation.
+     *
+     * TODO(vinod): Add support for explicitly setting `type` to `DEFAULT `
+     * in `LAUNCH` offer operation.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.ExecutorInfo.Type getType() {
+      return type_;
+    }
+
+    // required .mesos.v1.ExecutorID executor_id = 1;
+    public static final int EXECUTOR_ID_FIELD_NUMBER = 1;
+    private org.apache.mesos.v1.Protos.ExecutorID executorId_;
+    /**
+     * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+     */
+    public boolean hasExecutorId() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.ExecutorID getExecutorId() {
+      return executorId_;
+    }
+    /**
+     * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder() {
+      return executorId_;
+    }
+
+    // optional .mesos.v1.FrameworkID framework_id = 8;
+    public static final int FRAMEWORK_ID_FIELD_NUMBER = 8;
+    private org.apache.mesos.v1.Protos.FrameworkID frameworkId_;
+    /**
+     * <code>optional .mesos.v1.FrameworkID framework_id = 8;</code>
+     *
+     * <pre>
+     * TODO(benh): Make this required.
+     * </pre>
+     */
+    public boolean hasFrameworkId() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional .mesos.v1.FrameworkID framework_id = 8;</code>
+     *
+     * <pre>
+     * TODO(benh): Make this required.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.FrameworkID getFrameworkId() {
+      return frameworkId_;
+    }
+    /**
+     * <code>optional .mesos.v1.FrameworkID framework_id = 8;</code>
+     *
+     * <pre>
+     * TODO(benh): Make this required.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.FrameworkIDOrBuilder getFrameworkIdOrBuilder() {
+      return frameworkId_;
+    }
+
+    // optional .mesos.v1.CommandInfo command = 7;
+    public static final int COMMAND_FIELD_NUMBER = 7;
+    private org.apache.mesos.v1.Protos.CommandInfo command_;
+    /**
+     * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+     */
+    public boolean hasCommand() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+     */
+    public org.apache.mesos.v1.Protos.CommandInfo getCommand() {
+      return command_;
+    }
+    /**
+     * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+     */
+    public org.apache.mesos.v1.Protos.CommandInfoOrBuilder getCommandOrBuilder() {
+      return command_;
+    }
+
+    // optional .mesos.v1.ContainerInfo container = 11;
+    public static final int CONTAINER_FIELD_NUMBER = 11;
+    private org.apache.mesos.v1.Protos.ContainerInfo container_;
+    /**
+     * <code>optional .mesos.v1.ContainerInfo container = 11;</code>
+     *
+     * <pre>
+     * Executor provided with a container will launch the container
+     * with the executor's CommandInfo and we expect the container to
+     * act as a Mesos executor.
+     * </pre>
+     */
+    public boolean hasContainer() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional .mesos.v1.ContainerInfo container = 11;</code>
+     *
+     * <pre>
+     * Executor provided with a container will launch the container
+     * with the executor's CommandInfo and we expect the container to
+     * act as a Mesos executor.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.ContainerInfo getContainer() {
+      return container_;
+    }
+    /**
+     * <code>optional .mesos.v1.ContainerInfo container = 11;</code>
+     *
+     * <pre>
+     * Executor provided with a container will launch the container
+     * with the executor's CommandInfo and we expect the container to
+     * act as a Mesos executor.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.ContainerInfoOrBuilder getContainerOrBuilder() {
+      return container_;
+    }
+
+    // repeated .mesos.v1.Resource resources = 5;
+    public static final int RESOURCES_FIELD_NUMBER = 5;
+    private java.util.List<org.apache.mesos.v1.Protos.Resource> resources_;
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 5;</code>
+     */
+    public java.util.List<org.apache.mesos.v1.Protos.Resource> getResourcesList() {
+      return resources_;
+    }
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 5;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+        getResourcesOrBuilderList() {
+      return resources_;
+    }
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 5;</code>
+     */
+    public int getResourcesCount() {
+      return resources_.size();
+    }
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 5;</code>
+     */
+    public org.apache.mesos.v1.Protos.Resource getResources(int index) {
+      return resources_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 5;</code>
+     */
+    public org.apache.mesos.v1.Protos.ResourceOrBuilder getResourcesOrBuilder(
+        int index) {
+      return resources_.get(index);
+    }
+
+    // optional string name = 9;
+    public static final int NAME_FIELD_NUMBER = 9;
+    private java.lang.Object name_;
+    /**
+     * <code>optional string name = 9;</code>
+     */
+    public boolean hasName() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional string name = 9;</code>
+     */
+    public java.lang.String getName() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          name_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string name = 9;</code>
+     */
+    public com.google.protobuf.ByteString
+        getNameBytes() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        name_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional string source = 10 [deprecated = true];
+    public static final int SOURCE_FIELD_NUMBER = 10;
+    private java.lang.Object source_;
+    /**
+     * <code>optional string source = 10 [deprecated = true];</code>
+     *
+     * <pre>
+     * 'source' is an identifier style string used by frameworks to
+     * track the source of an executor. This is useful when it's
+     * possible for different executor ids to be related semantically.
+     *
+     * NOTE: 'source' is exposed alongside the resource usage of the
+     * executor via JSON on the agent. This allows users to import usage
+     * information into a time series database for monitoring.
+     *
+     * This field is deprecated since 1.0. Please use labels for
+     * free-form metadata instead.
+     * </pre>
+     */
+    @java.lang.Deprecated public boolean hasSource() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional string source = 10 [deprecated = true];</code>
+     *
+     * <pre>
+     * 'source' is an identifier style string used by frameworks to
+     * track the source of an executor. This is useful when it's
+     * possible for different executor ids to be related semantically.
+     *
+     * NOTE: 'source' is exposed alongside the resource usage of the
+     * executor via JSON on the agent. This allows users to import usage
+     * information into a time series database for monitoring.
+     *
+     * This field is deprecated since 1.0. Please use labels for
+     * free-form metadata instead.
+     * </pre>
+     */
+    @java.lang.Deprecated public java.lang.String getSource() {
+      java.lang.Object ref = source_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          source_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string source = 10 [deprecated = true];</code>
+     *
+     * <pre>
+     * 'source' is an identifier style string used by frameworks to
+     * track the source of an executor. This is useful when it's
+     * possible for different executor ids to be related semantically.
+     *
+     * NOTE: 'source' is exposed alongside the resource usage of the
+     * executor via JSON on the agent. This allows users to import usage
+     * information into a time series database for monitoring.
+     *
+     * This field is deprecated since 1.0. Please use labels for
+     * free-form metadata instead.
+     * </pre>
+     */
+    @java.lang.Deprecated public com.google.protobuf.ByteString
+        getSourceBytes() {
+      java.lang.Object ref = source_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        source_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional bytes data = 4;
+    public static final int DATA_FIELD_NUMBER = 4;
+    private com.google.protobuf.ByteString data_;
+    /**
+     * <code>optional bytes data = 4;</code>
+     *
+     * <pre>
+     * This field can be used to pass arbitrary bytes to an executor.
+     * </pre>
+     */
+    public boolean hasData() {
+      return ((bitField0_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional bytes data = 4;</code>
+     *
+     * <pre>
+     * This field can be used to pass arbitrary bytes to an executor.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString getData() {
+      return data_;
+    }
+
+    // optional .mesos.v1.DiscoveryInfo discovery = 12;
+    public static final int DISCOVERY_FIELD_NUMBER = 12;
+    private org.apache.mesos.v1.Protos.DiscoveryInfo discovery_;
+    /**
+     * <code>optional .mesos.v1.DiscoveryInfo discovery = 12;</code>
+     *
+     * <pre>
+     * Service discovery information for the executor. It is not
+     * interpreted or acted upon by Mesos. It is up to a service
+     * discovery system to use this information as needed and to handle
+     * executors without service discovery information.
+     * </pre>
+     */
+    public boolean hasDiscovery() {
+      return ((bitField0_ & 0x00000100) == 0x00000100);
+    }
+    /**
+     * <code>optional .mesos.v1.DiscoveryInfo discovery = 12;</code>
+     *
+     * <pre>
+     * Service discovery information for the executor. It is not
+     * interpreted or acted upon by Mesos. It is up to a service
+     * discovery system to use this information as needed and to handle
+     * executors without service discovery information.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.DiscoveryInfo getDiscovery() {
+      return discovery_;
+    }
+    /**
+     * <code>optional .mesos.v1.DiscoveryInfo discovery = 12;</code>
+     *
+     * <pre>
+     * Service discovery information for the executor. It is not
+     * interpreted or acted upon by Mesos. It is up to a service
+     * discovery system to use this information as needed and to handle
+     * executors without service discovery information.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.DiscoveryInfoOrBuilder getDiscoveryOrBuilder() {
+      return discovery_;
+    }
+
+    // optional .mesos.v1.DurationInfo shutdown_grace_period = 13;
+    public static final int SHUTDOWN_GRACE_PERIOD_FIELD_NUMBER = 13;
+    private org.apache.mesos.v1.Protos.DurationInfo shutdownGracePeriod_;
+    /**
+     * <code>optional .mesos.v1.DurationInfo shutdown_grace_period = 13;</code>
+     *
+     * <pre>
+     * When shutting down an executor the agent will wait in a
+     * best-effort manner for the grace period specified here
+     * before forcibly destroying the container. The executor
+     * must not assume that it will always be allotted the full
+     * grace period, as the agent may decide to allot a shorter
+     * period and failures / forcible terminations may occur.
+     * </pre>
+     */
+    public boolean hasShutdownGracePeriod() {
+      return ((bitField0_ & 0x00000200) == 0x00000200);
+    }
+    /**
+     * <code>optional .mesos.v1.DurationInfo shutdown_grace_period = 13;</code>
+     *
+     * <pre>
+     * When shutting down an executor the agent will wait in a
+     * best-effort manner for the grace period specified here
+     * before forcibly destroying the container. The executor
+     * must not assume that it will always be allotted the full
+     * grace period, as the agent may decide to allot a shorter
+     * period and failures / forcible terminations may occur.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.DurationInfo getShutdownGracePeriod() {
+      return shutdownGracePeriod_;
+    }
+    /**
+     * <code>optional .mesos.v1.DurationInfo shutdown_grace_period = 13;</code>
+     *
+     * <pre>
+     * When shutting down an executor the agent will wait in a
+     * best-effort manner for the grace period specified here
+     * before forcibly destroying the container. The executor
+     * must not assume that it will always be allotted the full
+     * grace period, as the agent may decide to allot a shorter
+     * period and failures / forcible terminations may occur.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.DurationInfoOrBuilder getShutdownGracePeriodOrBuilder() {
+      return shutdownGracePeriod_;
+    }
+
+    // optional .mesos.v1.Labels labels = 14;
+    public static final int LABELS_FIELD_NUMBER = 14;
+    private org.apache.mesos.v1.Protos.Labels labels_;
+    /**
+     * <code>optional .mesos.v1.Labels labels = 14;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs which are exposed through
+     * master and agent endpoints. Labels will not be interpreted or
+     * acted upon by Mesos itself. As opposed to the data field, labels
+     * will be kept in memory on master and agent processes. Therefore,
+     * labels should be used to tag executors with lightweight metadata.
+     * Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    public boolean hasLabels() {
+      return ((bitField0_ & 0x00000400) == 0x00000400);
+    }
+    /**
+     * <code>optional .mesos.v1.Labels labels = 14;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs which are exposed through
+     * master and agent endpoints. Labels will not be interpreted or
+     * acted upon by Mesos itself. As opposed to the data field, labels
+     * will be kept in memory on master and agent processes. Therefore,
+     * labels should be used to tag executors with lightweight metadata.
+     * Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.Labels getLabels() {
+      return labels_;
+    }
+    /**
+     * <code>optional .mesos.v1.Labels labels = 14;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs which are exposed through
+     * master and agent endpoints. Labels will not be interpreted or
+     * acted upon by Mesos itself. As opposed to the data field, labels
+     * will be kept in memory on master and agent processes. Therefore,
+     * labels should be used to tag executors with lightweight metadata.
+     * Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+      return labels_;
+    }
+
+    private void initFields() {
+      type_ = org.apache.mesos.v1.Protos.ExecutorInfo.Type.UNKNOWN;
+      executorId_ = org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance();
+      frameworkId_ = org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance();
+      command_ = org.apache.mesos.v1.Protos.CommandInfo.getDefaultInstance();
+      container_ = org.apache.mesos.v1.Protos.ContainerInfo.getDefaultInstance();
+      resources_ = java.util.Collections.emptyList();
+      name_ = "";
+      source_ = "";
+      data_ = com.google.protobuf.ByteString.EMPTY;
+      discovery_ = org.apache.mesos.v1.Protos.DiscoveryInfo.getDefaultInstance();
+      shutdownGracePeriod_ = org.apache.mesos.v1.Protos.DurationInfo.getDefaultInstance();
+      labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasExecutorId()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!getExecutorId().isInitialized()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (hasFrameworkId()) {
+        if (!getFrameworkId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasCommand()) {
+        if (!getCommand().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasContainer()) {
+        if (!getContainer().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      for (int i = 0; i < getResourcesCount(); i++) {
+        if (!getResources(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasDiscovery()) {
+        if (!getDiscovery().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasShutdownGracePeriod()) {
+        if (!getShutdownGracePeriod().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasLabels()) {
+        if (!getLabels().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(1, executorId_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        output.writeBytes(4, data_);
+      }
+      for (int i = 0; i < resources_.size(); i++) {
+        output.writeMessage(5, resources_.get(i));
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeMessage(7, command_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeMessage(8, frameworkId_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeBytes(9, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeBytes(10, getSourceBytes());
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeMessage(11, container_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        output.writeMessage(12, discovery_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        output.writeMessage(13, shutdownGracePeriod_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        output.writeMessage(14, labels_);
+      }
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeEnum(15, type_.getNumber());
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, executorId_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(4, data_);
+      }
+      for (int i = 0; i < resources_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(5, resources_.get(i));
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(7, command_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(8, frameworkId_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(9, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(10, getSourceBytes());
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(11, container_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(12, discovery_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(13, shutdownGracePeriod_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(14, labels_);
+      }
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(15, type_.getNumber());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.ExecutorInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.ExecutorInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.ExecutorInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.ExecutorInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.ExecutorInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.ExecutorInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.ExecutorInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.ExecutorInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.ExecutorInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.ExecutorInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.ExecutorInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.ExecutorInfo}
+     *
+     * <pre>
+     **
+     * Describes information about an executor.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.ExecutorInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ExecutorInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ExecutorInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.ExecutorInfo.class, org.apache.mesos.v1.Protos.ExecutorInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.ExecutorInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getExecutorIdFieldBuilder();
+          getFrameworkIdFieldBuilder();
+          getCommandFieldBuilder();
+          getContainerFieldBuilder();
+          getResourcesFieldBuilder();
+          getDiscoveryFieldBuilder();
+          getShutdownGracePeriodFieldBuilder();
+          getLabelsFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        type_ = org.apache.mesos.v1.Protos.ExecutorInfo.Type.UNKNOWN;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (executorIdBuilder_ == null) {
+          executorId_ = org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance();
+        } else {
+          executorIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        if (frameworkIdBuilder_ == null) {
+          frameworkId_ = org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance();
+        } else {
+          frameworkIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        if (commandBuilder_ == null) {
+          command_ = org.apache.mesos.v1.Protos.CommandInfo.getDefaultInstance();
+        } else {
+          commandBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        if (containerBuilder_ == null) {
+          container_ = org.apache.mesos.v1.Protos.ContainerInfo.getDefaultInstance();
+        } else {
+          containerBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        if (resourcesBuilder_ == null) {
+          resources_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000020);
+        } else {
+          resourcesBuilder_.clear();
+        }
+        name_ = "";
+        bitField0_ = (bitField0_ & ~0x00000040);
+        source_ = "";
+        bitField0_ = (bitField0_ & ~0x00000080);
+        data_ = com.google.protobuf.ByteString.EMPTY;
+        bitField0_ = (bitField0_ & ~0x00000100);
+        if (discoveryBuilder_ == null) {
+          discovery_ = org.apache.mesos.v1.Protos.DiscoveryInfo.getDefaultInstance();
+        } else {
+          discoveryBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000200);
+        if (shutdownGracePeriodBuilder_ == null) {
+          shutdownGracePeriod_ = org.apache.mesos.v1.Protos.DurationInfo.getDefaultInstance();
+        } else {
+          shutdownGracePeriodBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000400);
+        if (labelsBuilder_ == null) {
+          labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+        } else {
+          labelsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000800);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ExecutorInfo_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.ExecutorInfo getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.ExecutorInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.ExecutorInfo build() {
+        org.apache.mesos.v1.Protos.ExecutorInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.ExecutorInfo buildPartial() {
+        org.apache.mesos.v1.Protos.ExecutorInfo result = new org.apache.mesos.v1.Protos.ExecutorInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.type_ = type_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (executorIdBuilder_ == null) {
+          result.executorId_ = executorId_;
+        } else {
+          result.executorId_ = executorIdBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        if (frameworkIdBuilder_ == null) {
+          result.frameworkId_ = frameworkId_;
+        } else {
+          result.frameworkId_ = frameworkIdBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        if (commandBuilder_ == null) {
+          result.command_ = command_;
+        } else {
+          result.command_ = commandBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        if (containerBuilder_ == null) {
+          result.container_ = container_;
+        } else {
+          result.container_ = containerBuilder_.build();
+        }
+        if (resourcesBuilder_ == null) {
+          if (((bitField0_ & 0x00000020) == 0x00000020)) {
+            resources_ = java.util.Collections.unmodifiableList(resources_);
+            bitField0_ = (bitField0_ & ~0x00000020);
+          }
+          result.resources_ = resources_;
+        } else {
+          result.resources_ = resourcesBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        result.name_ = name_;
+        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        result.source_ = source_;
+        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
+          to_bitField0_ |= 0x00000080;
+        }
+        result.data_ = data_;
+        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
+          to_bitField0_ |= 0x00000100;
+        }
+        if (discoveryBuilder_ == null) {
+          result.discovery_ = discovery_;
+        } else {
+          result.discovery_ = discoveryBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
+          to_bitField0_ |= 0x00000200;
+        }
+        if (shutdownGracePeriodBuilder_ == null) {
+          result.shutdownGracePeriod_ = shutdownGracePeriod_;
+        } else {
+          result.shutdownGracePeriod_ = shutdownGracePeriodBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
+          to_bitField0_ |= 0x00000400;
+        }
+        if (labelsBuilder_ == null) {
+          result.labels_ = labels_;
+        } else {
+          result.labels_ = labelsBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.ExecutorInfo) {
+          return mergeFrom((org.apache.mesos.v1.Protos.ExecutorInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.ExecutorInfo other) {
+        if (other == org.apache.mesos.v1.Protos.ExecutorInfo.getDefaultInstance()) return this;
+        if (other.hasType()) {
+          setType(other.getType());
+        }
+        if (other.hasExecutorId()) {
+          mergeExecutorId(other.getExecutorId());
+        }
+        if (other.hasFrameworkId()) {
+          mergeFrameworkId(other.getFrameworkId());
+        }
+        if (other.hasCommand()) {
+          mergeCommand(other.getCommand());
+        }
+        if (other.hasContainer()) {
+          mergeContainer(other.getContainer());
+        }
+        if (resourcesBuilder_ == null) {
+          if (!other.resources_.isEmpty()) {
+            if (resources_.isEmpty()) {
+              resources_ = other.resources_;
+              bitField0_ = (bitField0_ & ~0x00000020);
+            } else {
+              ensureResourcesIsMutable();
+              resources_.addAll(other.resources_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.resources_.isEmpty()) {
+            if (resourcesBuilder_.isEmpty()) {
+              resourcesBuilder_.dispose();
+              resourcesBuilder_ = null;
+              resources_ = other.resources_;
+              bitField0_ = (bitField0_ & ~0x00000020);
+              resourcesBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getResourcesFieldBuilder() : null;
+            } else {
+              resourcesBuilder_.addAllMessages(other.resources_);
+            }
+          }
+        }
+        if (other.hasName()) {
+          bitField0_ |= 0x00000040;
+          name_ = other.name_;
+          onChanged();
+        }
+        if (other.hasSource()) {
+          bitField0_ |= 0x00000080;
+          source_ = other.source_;
+          onChanged();
+        }
+        if (other.hasData()) {
+          setData(other.getData());
+        }
+        if (other.hasDiscovery()) {
+          mergeDiscovery(other.getDiscovery());
+        }
+        if (other.hasShutdownGracePeriod()) {
+          mergeShutdownGracePeriod(other.getShutdownGracePeriod());
+        }
+        if (other.hasLabels()) {
+          mergeLabels(other.getLabels());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasExecutorId()) {
+          
+          return false;
+        }
+        if (!getExecutorId().isInitialized()) {
+          
+          return false;
+        }
+        if (hasFrameworkId()) {
+          if (!getFrameworkId().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasCommand()) {
+          if (!getCommand().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasContainer()) {
+          if (!getContainer().isInitialized()) {
+            
+            return false;
+          }
+        }
+        for (int i = 0; i < getResourcesCount(); i++) {
+          if (!getResources(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasDiscovery()) {
+          if (!getDiscovery().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasShutdownGracePeriod()) {
+          if (!getShutdownGracePeriod().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasLabels()) {
+          if (!getLabels().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.ExecutorInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.ExecutorInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional .mesos.v1.ExecutorInfo.Type type = 15;
+      private org.apache.mesos.v1.Protos.ExecutorInfo.Type type_ = org.apache.mesos.v1.Protos.ExecutorInfo.Type.UNKNOWN;
+      /**
+       * <code>optional .mesos.v1.ExecutorInfo.Type type = 15;</code>
+       *
+       * <pre>
+       * For backwards compatibility, if this field is not set when using `LAUNCH`
+       * offer operation, Mesos will infer the type by checking if `command` is
+       * set (`CUSTOM`) or unset (`DEFAULT`). `type` must be set when using
+       * `LAUNCH_GROUP` offer operation.
+       *
+       * TODO(vinod): Add support for explicitly setting `type` to `DEFAULT `
+       * in `LAUNCH` offer operation.
+       * </pre>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.v1.ExecutorInfo.Type type = 15;</code>
+       *
+       * <pre>
+       * For backwards compatibility, if this field is not set when using `LAUNCH`
+       * offer operation, Mesos will infer the type by checking if `command` is
+       * set (`CUSTOM`) or unset (`DEFAULT`). `type` must be set when using
+       * `LAUNCH_GROUP` offer operation.
+       *
+       * TODO(vinod): Add support for explicitly setting `type` to `DEFAULT `
+       * in `LAUNCH` offer operation.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.ExecutorInfo.Type getType() {
+        return type_;
+      }
+      /**
+       * <code>optional .mesos.v1.ExecutorInfo.Type type = 15;</code>
+       *
+       * <pre>
+       * For backwards compatibility, if this field is not set when using `LAUNCH`
+       * offer operation, Mesos will infer the type by checking if `command` is
+       * set (`CUSTOM`) or unset (`DEFAULT`). `type` must be set when using
+       * `LAUNCH_GROUP` offer operation.
+       *
+       * TODO(vinod): Add support for explicitly setting `type` to `DEFAULT `
+       * in `LAUNCH` offer operation.
+       * </pre>
+       */
+      public Builder setType(org.apache.mesos.v1.Protos.ExecutorInfo.Type value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000001;
+        type_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ExecutorInfo.Type type = 15;</code>
+       *
+       * <pre>
+       * For backwards compatibility, if this field is not set when using `LAUNCH`
+       * offer operation, Mesos will infer the type by checking if `command` is
+       * set (`CUSTOM`) or unset (`DEFAULT`). `type` must be set when using
+       * `LAUNCH_GROUP` offer operation.
+       *
+       * TODO(vinod): Add support for explicitly setting `type` to `DEFAULT `
+       * in `LAUNCH` offer operation.
+       * </pre>
+       */
+      public Builder clearType() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        type_ = org.apache.mesos.v1.Protos.ExecutorInfo.Type.UNKNOWN;
+        onChanged();
+        return this;
+      }
+
+      // required .mesos.v1.ExecutorID executor_id = 1;
+      private org.apache.mesos.v1.Protos.ExecutorID executorId_ = org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.ExecutorID, org.apache.mesos.v1.Protos.ExecutorID.Builder, org.apache.mesos.v1.Protos.ExecutorIDOrBuilder> executorIdBuilder_;
+      /**
+       * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+       */
+      public boolean hasExecutorId() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.ExecutorID getExecutorId() {
+        if (executorIdBuilder_ == null) {
+          return executorId_;
+        } else {
+          return executorIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+       */
+      public Builder setExecutorId(org.apache.mesos.v1.Protos.ExecutorID value) {
+        if (executorIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          executorId_ = value;
+          onChanged();
+        } else {
+          executorIdBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+       */
+      public Builder setExecutorId(
+          org.apache.mesos.v1.Protos.ExecutorID.Builder builderForValue) {
+        if (executorIdBuilder_ == null) {
+          executorId_ = builderForValue.build();
+          onChanged();
+        } else {
+          executorIdBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+       */
+      public Builder mergeExecutorId(org.apache.mesos.v1.Protos.ExecutorID value) {
+        if (executorIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              executorId_ != org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance()) {
+            executorId_ =
+              org.apache.mesos.v1.Protos.ExecutorID.newBuilder(executorId_).mergeFrom(value).buildPartial();
+          } else {
+            executorId_ = value;
+          }
+          onChanged();
+        } else {
+          executorIdBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+       */
+      public Builder clearExecutorId() {
+        if (executorIdBuilder_ == null) {
+          executorId_ = org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance();
+          onChanged();
+        } else {
+          executorIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.ExecutorID.Builder getExecutorIdBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getExecutorIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder() {
+        if (executorIdBuilder_ != null) {
+          return executorIdBuilder_.getMessageOrBuilder();
+        } else {
+          return executorId_;
+        }
+      }
+      /**
+       * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.ExecutorID, org.apache.mesos.v1.Protos.ExecutorID.Builder, org.apache.mesos.v1.Protos.ExecutorIDOrBuilder> 
+          getExecutorIdFieldBuilder() {
+        if (executorIdBuilder_ == null) {
+          executorIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.ExecutorID, org.apache.mesos.v1.Protos.ExecutorID.Builder, org.apache.mesos.v1.Protos.ExecutorIDOrBuilder>(
+                  executorId_,
+                  getParentForChildren(),
+                  isClean());
+          executorId_ = null;
+        }
+        return executorIdBuilder_;
+      }
+
+      // optional .mesos.v1.FrameworkID framework_id = 8;
+      private org.apache.mesos.v1.Protos.FrameworkID frameworkId_ = org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.FrameworkID, org.apache.mesos.v1.Protos.FrameworkID.Builder, org.apache.mesos.v1.Protos.FrameworkIDOrBuilder> frameworkIdBuilder_;
+      /**
+       * <code>optional .mesos.v1.FrameworkID framework_id = 8;</code>
+       *
+       * <pre>
+       * TODO(benh): Make this required.
+       * </pre>
+       */
+      public boolean hasFrameworkId() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.v1.FrameworkID framework_id = 8;</code>
+       *
+       * <pre>
+       * TODO(benh): Make this required.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.FrameworkID getFrameworkId() {
+        if (frameworkIdBuilder_ == null) {
+          return frameworkId_;
+        } else {
+          return frameworkIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.FrameworkID framework_id = 8;</code>
+       *
+       * <pre>
+       * TODO(benh): Make this required.
+       * </pre>
+       */
+      public Builder setFrameworkId(org.apache.mesos.v1.Protos.FrameworkID value) {
+        if (frameworkIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          frameworkId_ = value;
+          onChanged();
+        } else {
+          frameworkIdBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.FrameworkID framework_id = 8;</code>
+       *
+       * <pre>
+       * TODO(benh): Make this required.
+       * </pre>
+       */
+      public Builder setFrameworkId(
+          org.apache.mesos.v1.Protos.FrameworkID.Builder builderForValue) {
+        if (frameworkIdBuilder_ == null) {
+          frameworkId_ = builderForValue.build();
+          onChanged();
+        } else {
+          frameworkIdBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.FrameworkID framework_id = 8;</code>
+       *
+       * <pre>
+       * TODO(benh): Make this required.
+       * </pre>
+       */
+      public Builder mergeFrameworkId(org.apache.mesos.v1.Protos.FrameworkID value) {
+        if (frameworkIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) == 0x00000004) &&
+              frameworkId_ != org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance()) {
+            frameworkId_ =
+              org.apache.mesos.v1.Protos.FrameworkID.newBuilder(frameworkId_).mergeFrom(value).buildPartial();
+          } else {
+            frameworkId_ = value;
+          }
+          onChanged();
+        } else {
+          frameworkIdBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.FrameworkID framework_id = 8;</code>
+       *
+       * <pre>
+       * TODO(benh): Make this required.
+       * </pre>
+       */
+      public Builder clearFrameworkId() {
+        if (frameworkIdBuilder_ == null) {
+          frameworkId_ = org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance();
+          onChanged();
+        } else {
+          frameworkIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.FrameworkID framework_id = 8;</code>
+       *
+       * <pre>
+       * TODO(benh): Make this required.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.FrameworkID.Builder getFrameworkIdBuilder() {
+        bitField0_ |= 0x00000004;
+        onChanged();
+        return getFrameworkIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.FrameworkID framework_id = 8;</code>
+       *
+       * <pre>
+       * TODO(benh): Make this required.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.FrameworkIDOrBuilder getFrameworkIdOrBuilder() {
+        if (frameworkIdBuilder_ != null) {
+          return frameworkIdBuilder_.getMessageOrBuilder();
+        } else {
+          return frameworkId_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.FrameworkID framework_id = 8;</code>
+       *
+       * <pre>
+       * TODO(benh): Make this required.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.FrameworkID, org.apache.mesos.v1.Protos.FrameworkID.Builder, org.apache.mesos.v1.Protos.FrameworkIDOrBuilder> 
+          getFrameworkIdFieldBuilder() {
+        if (frameworkIdBuilder_ == null) {
+          frameworkIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.FrameworkID, org.apache.mesos.v1.Protos.FrameworkID.Builder, org.apache.mesos.v1.Protos.FrameworkIDOrBuilder>(
+                  frameworkId_,
+                  getParentForChildren(),
+                  isClean());
+          frameworkId_ = null;
+        }
+        return frameworkIdBuilder_;
+      }
+
+      // optional .mesos.v1.CommandInfo command = 7;
+      private org.apache.mesos.v1.Protos.CommandInfo command_ = org.apache.mesos.v1.Protos.CommandInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.CommandInfo, org.apache.mesos.v1.Protos.CommandInfo.Builder, org.apache.mesos.v1.Protos.CommandInfoOrBuilder> commandBuilder_;
+      /**
+       * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+       */
+      public boolean hasCommand() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+       */
+      public org.apache.mesos.v1.Protos.CommandInfo getCommand() {
+        if (commandBuilder_ == null) {
+          return command_;
+        } else {
+          return commandBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+       */
+      public Builder setCommand(org.apache.mesos.v1.Protos.CommandInfo value) {
+        if (commandBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          command_ = value;
+          onChanged();
+        } else {
+          commandBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+       */
+      public Builder setCommand(
+          org.apache.mesos.v1.Protos.CommandInfo.Builder builderForValue) {
+        if (commandBuilder_ == null) {
+          command_ = builderForValue.build();
+          onChanged();
+        } else {
+          commandBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+       */
+      public Builder mergeCommand(org.apache.mesos.v1.Protos.CommandInfo value) {
+        if (commandBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008) &&
+              command_ != org.apache.mesos.v1.Protos.CommandInfo.getDefaultInstance()) {
+            command_ =
+              org.apache.mesos.v1.Protos.CommandInfo.newBuilder(command_).mergeFrom(value).buildPartial();
+          } else {
+            command_ = value;
+          }
+          onChanged();
+        } else {
+          commandBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+       */
+      public Builder clearCommand() {
+        if (commandBuilder_ == null) {
+          command_ = org.apache.mesos.v1.Protos.CommandInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          commandBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+       */
+      public org.apache.mesos.v1.Protos.CommandInfo.Builder getCommandBuilder() {
+        bitField0_ |= 0x00000008;
+        onChanged();
+        return getCommandFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+       */
+      public org.apache.mesos.v1.Protos.CommandInfoOrBuilder getCommandOrBuilder() {
+        if (commandBuilder_ != null) {
+          return commandBuilder_.getMessageOrBuilder();
+        } else {
+          return command_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.CommandInfo, org.apache.mesos.v1.Protos.CommandInfo.Builder, org.apache.mesos.v1.Protos.CommandInfoOrBuilder> 
+          getCommandFieldBuilder() {
+        if (commandBuilder_ == null) {
+          commandBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.CommandInfo, org.apache.mesos.v1.Protos.CommandInfo.Builder, org.apache.mesos.v1.Protos.CommandInfoOrBuilder>(
+                  command_,
+                  getParentForChildren(),
+                  isClean());
+          command_ = null;
+        }
+        return commandBuilder_;
+      }
+
+      // optional .mesos.v1.ContainerInfo container = 11;
+      private org.apache.mesos.v1.Protos.ContainerInfo container_ = org.apache.mesos.v1.Protos.ContainerInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.ContainerInfo, org.apache.mesos.v1.Protos.ContainerInfo.Builder, org.apache.mesos.v1.Protos.ContainerInfoOrBuilder> containerBuilder_;
+      /**
+       * <code>optional .mesos.v1.ContainerInfo container = 11;</code>
+       *
+       * <pre>
+       * Executor provided with a container will launch the container
+       * with the executor's CommandInfo and we expect the container to
+       * act as a Mesos executor.
+       * </pre>
+       */
+      public boolean hasContainer() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerInfo container = 11;</code>
+       *
+       * <pre>
+       * Executor provided with a container will launch the container
+       * with the executor's CommandInfo and we expect the container to
+       * act as a Mesos executor.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.ContainerInfo getContainer() {
+        if (containerBuilder_ == null) {
+          return container_;
+        } else {
+          return containerBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerInfo container = 11;</code>
+       *
+       * <pre>
+       * Executor provided with a container will launch the container
+       * with the executor's CommandInfo and we expect the container to
+       * act as a Mesos executor.
+       * </pre>
+       */
+      public Builder setContainer(org.apache.mesos.v1.Protos.ContainerInfo value) {
+        if (containerBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          container_ = value;
+          onChanged();
+        } else {
+          containerBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerInfo container = 11;</code>
+       *
+       * <pre>
+       * Executor provided with a container will launch the container
+       * with the executor's CommandInfo and we expect the container to
+       * act as a Mesos executor.
+       * </pre>
+       */
+      public Builder setContainer(
+          org.apache.mesos.v1.Protos.ContainerInfo.Builder builderForValue) {
+        if (containerBuilder_ == null) {
+          container_ = builderForValue.build();
+          onChanged();
+        } else {
+          containerBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerInfo container = 11;</code>
+       *
+       * <pre>
+       * Executor provided with a container will launch the container
+       * with the executor's CommandInfo and we expect the container to
+       * act as a Mesos executor.
+       * </pre>
+       */
+      public Builder mergeContainer(org.apache.mesos.v1.Protos.ContainerInfo value) {
+        if (containerBuilder_ == null) {
+          if (((bitField0_ & 0x00000010) == 0x00000010) &&
+              container_ != org.apache.mesos.v1.Protos.ContainerInfo.getDefaultInstance()) {
+            container_ =
+              org.apache.mesos.v1.Protos.ContainerInfo.newBuilder(container_).mergeFrom(value).buildPartial();
+          } else {
+            container_ = value;
+          }
+          onChanged();
+        } else {
+          containerBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerInfo container = 11;</code>
+       *
+       * <pre>
+       * Executor provided with a container will launch the container
+       * with the executor's CommandInfo and we expect the container to
+       * act as a Mesos executor.
+       * </pre>
+       */
+      public Builder clearContainer() {
+        if (containerBuilder_ == null) {
+          container_ = org.apache.mesos.v1.Protos.ContainerInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          containerBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerInfo container = 11;</code>
+       *
+       * <pre>
+       * Executor provided with a container will launch the container
+       * with the executor's CommandInfo and we expect the container to
+       * act as a Mesos executor.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.ContainerInfo.Builder getContainerBuilder() {
+        bitField0_ |= 0x00000010;
+        onChanged();
+        return getContainerFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerInfo container = 11;</code>
+       *
+       * <pre>
+       * Executor provided with a container will launch the container
+       * with the executor's CommandInfo and we expect the container to
+       * act as a Mesos executor.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.ContainerInfoOrBuilder getContainerOrBuilder() {
+        if (containerBuilder_ != null) {
+          return containerBuilder_.getMessageOrBuilder();
+        } else {
+          return container_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerInfo container = 11;</code>
+       *
+       * <pre>
+       * Executor provided with a container will launch the container
+       * with the executor's CommandInfo and we expect the container to
+       * act as a Mesos executor.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.ContainerInfo, org.apache.mesos.v1.Protos.ContainerInfo.Builder, org.apache.mesos.v1.Protos.ContainerInfoOrBuilder> 
+          getContainerFieldBuilder() {
+        if (containerBuilder_ == null) {
+          containerBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.ContainerInfo, org.apache.mesos.v1.Protos.ContainerInfo.Builder, org.apache.mesos.v1.Protos.ContainerInfoOrBuilder>(
+                  container_,
+                  getParentForChildren(),
+                  isClean());
+          container_ = null;
+        }
+        return containerBuilder_;
+      }
+
+      // repeated .mesos.v1.Resource resources = 5;
+      private java.util.List<org.apache.mesos.v1.Protos.Resource> resources_ =
+        java.util.Collections.emptyList();
+      private void ensureResourcesIsMutable() {
+        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
+          resources_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Resource>(resources_);
+          bitField0_ |= 0x00000020;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder> resourcesBuilder_;
+
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 5;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Resource> getResourcesList() {
+        if (resourcesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(resources_);
+        } else {
+          return resourcesBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 5;</code>
+       */
+      public int getResourcesCount() {
+        if (resourcesBuilder_ == null) {
+          return resources_.size();
+        } else {
+          return resourcesBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 5;</code>
+       */
+      public org.apache.mesos.v1.Protos.Resource getResources(int index) {
+        if (resourcesBuilder_ == null) {
+          return resources_.get(index);
+        } else {
+          return resourcesBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 5;</code>
+       */
+      public Builder setResources(
+          int index, org.apache.mesos.v1.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.set(index, value);
+          onChanged();
+        } else {
+          resourcesBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 5;</code>
+       */
+      public Builder setResources(
+          int index, org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 5;</code>
+       */
+      public Builder addResources(org.apache.mesos.v1.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.add(value);
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 5;</code>
+       */
+      public Builder addResources(
+          int index, org.apache.mesos.v1.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.add(index, value);
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 5;</code>
+       */
+      public Builder addResources(
+          org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.add(builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 5;</code>
+       */
+      public Builder addResources(
+          int index, org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 5;</code>
+       */
+      public Builder addAllResources(
+          java.lang.Iterable<? extends org.apache.mesos.v1.Protos.Resource> values) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          super.addAll(values, resources_);
+          onChanged();
+        } else {
+          resourcesBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 5;</code>
+       */
+      public Builder clearResources() {
+        if (resourcesBuilder_ == null) {
+          resources_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000020);
+          onChanged();
+        } else {
+          resourcesBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 5;</code>
+       */
+      public Builder removeResources(int index) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.remove(index);
+          onChanged();
+        } else {
+          resourcesBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 5;</code>
+       */
+      public org.apache.mesos.v1.Protos.Resource.Builder getResourcesBuilder(
+          int index) {
+        return getResourcesFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 5;</code>
+       */
+      public org.apache.mesos.v1.Protos.ResourceOrBuilder getResourcesOrBuilder(
+          int index) {
+        if (resourcesBuilder_ == null) {
+          return resources_.get(index);  } else {
+          return resourcesBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 5;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+           getResourcesOrBuilderList() {
+        if (resourcesBuilder_ != null) {
+          return resourcesBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(resources_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 5;</code>
+       */
+      public org.apache.mesos.v1.Protos.Resource.Builder addResourcesBuilder() {
+        return getResourcesFieldBuilder().addBuilder(
+            org.apache.mesos.v1.Protos.Resource.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 5;</code>
+       */
+      public org.apache.mesos.v1.Protos.Resource.Builder addResourcesBuilder(
+          int index) {
+        return getResourcesFieldBuilder().addBuilder(
+            index, org.apache.mesos.v1.Protos.Resource.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 5;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Resource.Builder> 
+           getResourcesBuilderList() {
+        return getResourcesFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+          getResourcesFieldBuilder() {
+        if (resourcesBuilder_ == null) {
+          resourcesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder>(
+                  resources_,
+                  ((bitField0_ & 0x00000020) == 0x00000020),
+                  getParentForChildren(),
+                  isClean());
+          resources_ = null;
+        }
+        return resourcesBuilder_;
+      }
+
+      // optional string name = 9;
+      private java.lang.Object name_ = "";
+      /**
+       * <code>optional string name = 9;</code>
+       */
+      public boolean hasName() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional string name = 9;</code>
+       */
+      public java.lang.String getName() {
+        java.lang.Object ref = name_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          name_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string name = 9;</code>
+       */
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        java.lang.Object ref = name_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          name_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string name = 9;</code>
+       */
+      public Builder setName(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000040;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string name = 9;</code>
+       */
+      public Builder clearName() {
+        bitField0_ = (bitField0_ & ~0x00000040);
+        name_ = getDefaultInstance().getName();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string name = 9;</code>
+       */
+      public Builder setNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000040;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional string source = 10 [deprecated = true];
+      private java.lang.Object source_ = "";
+      /**
+       * <code>optional string source = 10 [deprecated = true];</code>
+       *
+       * <pre>
+       * 'source' is an identifier style string used by frameworks to
+       * track the source of an executor. This is useful when it's
+       * possible for different executor ids to be related semantically.
+       *
+       * NOTE: 'source' is exposed alongside the resource usage of the
+       * executor via JSON on the agent. This allows users to import usage
+       * information into a time series database for monitoring.
+       *
+       * This field is deprecated since 1.0. Please use labels for
+       * free-form metadata instead.
+       * </pre>
+       */
+      @java.lang.Deprecated public boolean hasSource() {
+        return ((bitField0_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional string source = 10 [deprecated = true];</code>
+       *
+       * <pre>
+       * 'source' is an identifier style string used by frameworks to
+       * track the source of an executor. This is useful when it's
+       * possible for different executor ids to be related semantically.
+       *
+       * NOTE: 'source' is exposed alongside the resource usage of the
+       * executor via JSON on the agent. This allows users to import usage
+       * information into a time series database for monitoring.
+       *
+       * This field is deprecated since 1.0. Please use labels for
+       * free-form metadata instead.
+       * </pre>
+       */
+      @java.lang.Deprecated public java.lang.String getSource() {
+        java.lang.Object ref = source_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          source_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string source = 10 [deprecated = true];</code>
+       *
+       * <pre>
+       * 'source' is an identifier style string used by frameworks to
+       * track the source of an executor. This is useful when it's
+       * possible for different executor ids to be related semantically.
+       *
+       * NOTE: 'source' is exposed alongside the resource usage of the
+       * executor via JSON on the agent. This allows users to import usage
+       * information into a time series database for monitoring.
+       *
+       * This field is deprecated since 1.0. Please use labels for
+       * free-form metadata instead.
+       * </pre>
+       */
+      @java.lang.Deprecated public com.google.protobuf.ByteString
+          getSourceBytes() {
+        java.lang.Object ref = source_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          source_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string source = 10 [deprecated = true];</code>
+       *
+       * <pre>
+       * 'source' is an identifier style string used by frameworks to
+       * track the source of an executor. This is useful when it's
+       * possible for different executor ids to be related semantically.
+       *
+       * NOTE: 'source' is exposed alongside the resource usage of the
+       * executor via JSON on the agent. This allows users to import usage
+       * information into a time series database for monitoring.
+       *
+       * This field is deprecated since 1.0. Please use labels for
+       * free-form metadata instead.
+       * </pre>
+       */
+      @java.lang.Deprecated public Builder setSource(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000080;
+        source_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string source = 10 [deprecated = true];</code>
+       *
+       * <pre>
+       * 'source' is an identifier style string used by frameworks to
+       * track the source of an executor. This is useful when it's
+       * possible for different executor ids to be related semantically.
+       *
+       * NOTE: 'source' is exposed alongside the resource usage of the
+       * executor via JSON on the agent. This allows users to import usage
+       * information into a time series database for monitoring.
+       *
+       * This field is deprecated since 1.0. Please use labels for
+       * free-form metadata instead.
+       * </pre>
+       */
+      @java.lang.Deprecated public Builder clearSource() {
+        bitField0_ = (bitField0_ & ~0x00000080);
+        source_ = getDefaultInstance().getSource();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string source = 10 [deprecated = true];</code>
+       *
+       * <pre>
+       * 'source' is an identifier style string used by frameworks to
+       * track the source of an executor. This is useful when it's
+       * possible for different executor ids to be related semantically.
+       *
+       * NOTE: 'source' is exposed alongside the resource usage of the
+       * executor via JSON on the agent. This allows users to import usage
+       * information into a time series database for monitoring.
+       *
+       * This field is deprecated since 1.0. Please use labels for
+       * free-form metadata instead.
+       * </pre>
+       */
+      @java.lang.Deprecated public Builder setSourceBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000080;
+        source_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional bytes data = 4;
+      private com.google.protobuf.ByteString data_ = com.google.protobuf.ByteString.EMPTY;
+      /**
+       * <code>optional bytes data = 4;</code>
+       *
+       * <pre>
+       * This field can be used to pass arbitrary bytes to an executor.
+       * </pre>
+       */
+      public boolean hasData() {
+        return ((bitField0_ & 0x00000100) == 0x00000100);
+      }
+      /**
+       * <code>optional bytes data = 4;</code>
+       *
+       * <pre>
+       * This field can be used to pass arbitrary bytes to an executor.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString getData() {
+        return data_;
+      }
+      /**
+       * <code>optional bytes data = 4;</code>
+       *
+       * <pre>
+       * This field can be used to pass arbitrary bytes to an executor.
+       * </pre>
+       */
+      public Builder setData(com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000100;
+        data_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional bytes data = 4;</code>
+       *
+       * <pre>
+       * This field can be used to pass arbitrary bytes to an executor.
+       * </pre>
+       */
+      public Builder clearData() {
+        bitField0_ = (bitField0_ & ~0x00000100);
+        data_ = getDefaultInstance().getData();
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.v1.DiscoveryInfo discovery = 12;
+      private org.apache.mesos.v1.Protos.DiscoveryInfo discovery_ = org.apache.mesos.v1.Protos.DiscoveryInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.DiscoveryInfo, org.apache.mesos.v1.Protos.DiscoveryInfo.Builder, org.apache.mesos.v1.Protos.DiscoveryInfoOrBuilder> discoveryBuilder_;
+      /**
+       * <code>optional .mesos.v1.DiscoveryInfo discovery = 12;</code>
+       *
+       * <pre>
+       * Service discovery information for the executor. It is not
+       * interpreted or acted upon by Mesos. It is up to a service
+       * discovery system to use this information as needed and to handle
+       * executors without service discovery information.
+       * </pre>
+       */
+      public boolean hasDiscovery() {
+        return ((bitField0_ & 0x00000200) == 0x00000200);
+      }
+      /**
+       * <code>optional .mesos.v1.DiscoveryInfo discovery = 12;</code>
+       *
+       * <pre>
+       * Service discovery information for the executor. It is not
+       * interpreted or acted upon by Mesos. It is up to a service
+       * discovery system to use this information as needed and to handle
+       * executors without service discovery information.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.DiscoveryInfo getDiscovery() {
+        if (discoveryBuilder_ == null) {
+          return discovery_;
+        } else {
+          return discoveryBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.DiscoveryInfo discovery = 12;</code>
+       *
+       * <pre>
+       * Service discovery information for the executor. It is not
+       * interpreted or acted upon by Mesos. It is up to a service
+       * discovery system to use this information as needed and to handle
+       * executors without service discovery information.
+       * </pre>
+       */
+      public Builder setDiscovery(org.apache.mesos.v1.Protos.DiscoveryInfo value) {
+        if (discoveryBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          discovery_ = value;
+          onChanged();
+        } else {
+          discoveryBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000200;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.DiscoveryInfo discovery = 12;</code>
+       *
+       * <pre>
+       * Service discovery information for the executor. It is not
+       * interpreted or acted upon by Mesos. It is up to a service
+       * discovery system to use this information as needed and to handle
+       * executors without service discovery information.
+       * </pre>
+       */
+      public Builder setDiscovery(
+          org.apache.mesos.v1.Protos.DiscoveryInfo.Builder builderForValue) {
+        if (discoveryBuilder_ == null) {
+          discovery_ = builderForValue.build();
+          onChanged();
+        } else {
+          discoveryBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000200;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.DiscoveryInfo discovery = 12;</code>
+       *
+       * <pre>
+       * Service discovery information for the executor. It is not
+       * interpreted or acted upon by Mesos. It is up to a service
+       * discovery system to use this information as needed and to handle
+       * executors without service discovery information.
+       * </pre>
+       */
+      public Builder mergeDiscovery(org.apache.mesos.v1.Protos.DiscoveryInfo value) {
+        if (discoveryBuilder_ == null) {
+          if (((bitField0_ & 0x00000200) == 0x00000200) &&
+              discovery_ != org.apache.mesos.v1.Protos.DiscoveryInfo.getDefaultInstance()) {
+            discovery_ =
+              org.apache.mesos.v1.Protos.DiscoveryInfo.newBuilder(discovery_).mergeFrom(value).buildPartial();
+          } else {
+            discovery_ = value;
+          }
+          onChanged();
+        } else {
+          discoveryBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000200;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.DiscoveryInfo discovery = 12;</code>
+       *
+       * <pre>
+       * Service discovery information for the executor. It is not
+       * interpreted or acted upon by Mesos. It is up to a service
+       * discovery system to use this information as needed and to handle
+       * executors without service discovery information.
+       * </pre>
+       */
+      public Builder clearDiscovery() {
+        if (discoveryBuilder_ == null) {
+          discovery_ = org.apache.mesos.v1.Protos.DiscoveryInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          discoveryBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000200);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.DiscoveryInfo discovery = 12;</code>
+       *
+       * <pre>
+       * Service discovery information for the executor. It is not
+       * interpreted or acted upon by Mesos. It is up to a service
+       * discovery system to use this information as needed and to handle
+       * executors without service discovery information.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.DiscoveryInfo.Builder getDiscoveryBuilder() {
+        bitField0_ |= 0x00000200;
+        onChanged();
+        return getDiscoveryFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.DiscoveryInfo discovery = 12;</code>
+       *
+       * <pre>
+       * Service discovery information for the executor. It is not
+       * interpreted or acted upon by Mesos. It is up to a service
+       * discovery system to use this information as needed and to handle
+       * executors without service discovery information.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.DiscoveryInfoOrBuilder getDiscoveryOrBuilder() {
+        if (discoveryBuilder_ != null) {
+          return discoveryBuilder_.getMessageOrBuilder();
+        } else {
+          return discovery_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.DiscoveryInfo discovery = 12;</code>
+       *
+       * <pre>
+       * Service discovery information for the executor. It is not
+       * interpreted or acted upon by Mesos. It is up to a service
+       * discovery system to use this information as needed and to handle
+       * executors without service discovery information.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.DiscoveryInfo, org.apache.mesos.v1.Protos.DiscoveryInfo.Builder, org.apache.mesos.v1.Protos.DiscoveryInfoOrBuilder> 
+          getDiscoveryFieldBuilder() {
+        if (discoveryBuilder_ == null) {
+          discoveryBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.DiscoveryInfo, org.apache.mesos.v1.Protos.DiscoveryInfo.Builder, org.apache.mesos.v1.Protos.DiscoveryInfoOrBuilder>(
+                  discovery_,
+                  getParentForChildren(),
+                  isClean());
+          discovery_ = null;
+        }
+        return discoveryBuilder_;
+      }
+
+      // optional .mesos.v1.DurationInfo shutdown_grace_period = 13;
+      private org.apache.mesos.v1.Protos.DurationInfo shutdownGracePeriod_ = org.apache.mesos.v1.Protos.DurationInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.DurationInfo, org.apache.mesos.v1.Protos.DurationInfo.Builder, org.apache.mesos.v1.Protos.DurationInfoOrBuilder> shutdownGracePeriodBuilder_;
+      /**
+       * <code>optional .mesos.v1.DurationInfo shutdown_grace_period = 13;</code>
+       *
+       * <pre>
+       * When shutting down an executor the agent will wait in a
+       * best-effort manner for the grace period specified here
+       * before forcibly destroying the container. The executor
+       * must not assume that it will always be allotted the full
+       * grace period, as the agent may decide to allot a shorter
+       * period and failures / forcible terminations may occur.
+       * </pre>
+       */
+      public boolean hasShutdownGracePeriod() {
+        return ((bitField0_ & 0x00000400) == 0x00000400);
+      }
+      /**
+       * <code>optional .mesos.v1.DurationInfo shutdown_grace_period = 13;</code>
+       *
+       * <pre>
+       * When shutting down an executor the agent will wait in a
+       * best-effort manner for the grace period specified here
+       * before forcibly destroying the container. The executor
+       * must not assume that it will always be allotted the full
+       * grace period, as the agent may decide to allot a shorter
+       * period and failures / forcible terminations may occur.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.DurationInfo getShutdownGracePeriod() {
+        if (shutdownGracePeriodBuilder_ == null) {
+          return shutdownGracePeriod_;
+        } else {
+          return shutdownGracePeriodBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.DurationInfo shutdown_grace_period = 13;</code>
+       *
+       * <pre>
+       * When shutting down an executor the agent will wait in a
+       * best-effort manner for the grace period specified here
+       * before forcibly destroying the container. The executor
+       * must not assume that it will always be allotted the full
+       * grace period, as the agent may decide to allot a shorter
+       * period and failures / forcible terminations may occur.
+       * </pre>
+       */
+      public Builder setShutdownGracePeriod(org.apache.mesos.v1.Protos.DurationInfo value) {
+        if (shutdownGracePeriodBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          shutdownGracePeriod_ = value;
+          onChanged();
+        } else {
+          shutdownGracePeriodBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000400;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.DurationInfo shutdown_grace_period = 13;</code>
+       *
+       * <pre>
+       * When shutting down an executor the agent will wait in a
+       * best-effort manner for the grace period specified here
+       * before forcibly destroying the container. The executor
+       * must not assume that it will always be allotted the full
+       * grace period, as the agent may decide to allot a shorter
+       * period and failures / forcible terminations may occur.
+       * </pre>
+       */
+      public Builder setShutdownGracePeriod(
+          org.apache.mesos.v1.Protos.DurationInfo.Builder builderForValue) {
+        if (shutdownGracePeriodBuilder_ == null) {
+          shutdownGracePeriod_ = builderForValue.build();
+          onChanged();
+        } else {
+          shutdownGracePeriodBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000400;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.DurationInfo shutdown_grace_period = 13;</code>
+       *
+       * <pre>
+       * When shutting down an executor the agent will wait in a
+       * best-effort manner for the grace period specified here
+       * before forcibly destroying the container. The executor
+       * must not assume that it will always be allotted the full
+       * grace period, as the agent may decide to allot a shorter
+       * period and failures / forcible terminations may occur.
+       * </pre>
+       */
+      public Builder mergeShutdownGracePeriod(org.apache.mesos.v1.Protos.DurationInfo value) {
+        if (shutdownGracePeriodBuilder_ == null) {
+          if (((bitField0_ & 0x00000400) == 0x00000400) &&
+              shutdownGracePeriod_ != org.apache.mesos.v1.Protos.DurationInfo.getDefaultInstance()) {
+            shutdownGracePeriod_ =
+              org.apache.mesos.v1.Protos.DurationInfo.newBuilder(shutdownGracePeriod_).mergeFrom(value).buildPartial();
+          } else {
+            shutdownGracePeriod_ = value;
+          }
+          onChanged();
+        } else {
+          shutdownGracePeriodBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000400;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.DurationInfo shutdown_grace_period = 13;</code>
+       *
+       * <pre>
+       * When shutting down an executor the agent will wait in a
+       * best-effort manner for the grace period specified here
+       * before forcibly destroying the container. The executor
+       * must not assume that it will always be allotted the full
+       * grace period, as the agent may decide to allot a shorter
+       * period and failures / forcible terminations may occur.
+       * </pre>
+       */
+      public Builder clearShutdownGracePeriod() {
+        if (shutdownGracePeriodBuilder_ == null) {
+          shutdownGracePeriod_ = org.apache.mesos.v1.Protos.DurationInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          shutdownGracePeriodBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000400);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.DurationInfo shutdown_grace_period = 13;</code>
+       *
+       * <pre>
+       * When shutting down an executor the agent will wait in a
+       * best-effort manner for the grace period specified here
+       * before forcibly destroying the container. The executor
+       * must not assume that it will always be allotted the full
+       * grace period, as the agent may decide to allot a shorter
+       * period and failures / forcible terminations may occur.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.DurationInfo.Builder getShutdownGracePeriodBuilder() {
+        bitField0_ |= 0x00000400;
+        onChanged();
+        return getShutdownGracePeriodFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.DurationInfo shutdown_grace_period = 13;</code>
+       *
+       * <pre>
+       * When shutting down an executor the agent will wait in a
+       * best-effort manner for the grace period specified here
+       * before forcibly destroying the container. The executor
+       * must not assume that it will always be allotted the full
+       * grace period, as the agent may decide to allot a shorter
+       * period and failures / forcible terminations may occur.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.DurationInfoOrBuilder getShutdownGracePeriodOrBuilder() {
+        if (shutdownGracePeriodBuilder_ != null) {
+          return shutdownGracePeriodBuilder_.getMessageOrBuilder();
+        } else {
+          return shutdownGracePeriod_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.DurationInfo shutdown_grace_period = 13;</code>
+       *
+       * <pre>
+       * When shutting down an executor the agent will wait in a
+       * best-effort manner for the grace period specified here
+       * before forcibly destroying the container. The executor
+       * must not assume that it will always be allotted the full
+       * grace period, as the agent may decide to allot a shorter
+       * period and failures / forcible terminations may occur.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.DurationInfo, org.apache.mesos.v1.Protos.DurationInfo.Builder, org.apache.mesos.v1.Protos.DurationInfoOrBuilder> 
+          getShutdownGracePeriodFieldBuilder() {
+        if (shutdownGracePeriodBuilder_ == null) {
+          shutdownGracePeriodBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.DurationInfo, org.apache.mesos.v1.Protos.DurationInfo.Builder, org.apache.mesos.v1.Protos.DurationInfoOrBuilder>(
+                  shutdownGracePeriod_,
+                  getParentForChildren(),
+                  isClean());
+          shutdownGracePeriod_ = null;
+        }
+        return shutdownGracePeriodBuilder_;
+      }
+
+      // optional .mesos.v1.Labels labels = 14;
+      private org.apache.mesos.v1.Protos.Labels labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Labels, org.apache.mesos.v1.Protos.Labels.Builder, org.apache.mesos.v1.Protos.LabelsOrBuilder> labelsBuilder_;
+      /**
+       * <code>optional .mesos.v1.Labels labels = 14;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and agent endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and agent processes. Therefore,
+       * labels should be used to tag executors with lightweight metadata.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public boolean hasLabels() {
+        return ((bitField0_ & 0x00000800) == 0x00000800);
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 14;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and agent endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and agent processes. Therefore,
+       * labels should be used to tag executors with lightweight metadata.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Labels getLabels() {
+        if (labelsBuilder_ == null) {
+          return labels_;
+        } else {
+          return labelsBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 14;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and agent endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and agent processes. Therefore,
+       * labels should be used to tag executors with lightweight metadata.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public Builder setLabels(org.apache.mesos.v1.Protos.Labels value) {
+        if (labelsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          labels_ = value;
+          onChanged();
+        } else {
+          labelsBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 14;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and agent endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and agent processes. Therefore,
+       * labels should be used to tag executors with lightweight metadata.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public Builder setLabels(
+          org.apache.mesos.v1.Protos.Labels.Builder builderForValue) {
+        if (labelsBuilder_ == null) {
+          labels_ = builderForValue.build();
+          onChanged();
+        } else {
+          labelsBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 14;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and agent endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and agent processes. Therefore,
+       * labels should be used to tag executors with lightweight metadata.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public Builder mergeLabels(org.apache.mesos.v1.Protos.Labels value) {
+        if (labelsBuilder_ == null) {
+          if (((bitField0_ & 0x00000800) == 0x00000800) &&
+              labels_ != org.apache.mesos.v1.Protos.Labels.getDefaultInstance()) {
+            labels_ =
+              org.apache.mesos.v1.Protos.Labels.newBuilder(labels_).mergeFrom(value).buildPartial();
+          } else {
+            labels_ = value;
+          }
+          onChanged();
+        } else {
+          labelsBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 14;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and agent endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and agent processes. Therefore,
+       * labels should be used to tag executors with lightweight metadata.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public Builder clearLabels() {
+        if (labelsBuilder_ == null) {
+          labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+          onChanged();
+        } else {
+          labelsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000800);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 14;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and agent endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and agent processes. Therefore,
+       * labels should be used to tag executors with lightweight metadata.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Labels.Builder getLabelsBuilder() {
+        bitField0_ |= 0x00000800;
+        onChanged();
+        return getLabelsFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 14;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and agent endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and agent processes. Therefore,
+       * labels should be used to tag executors with lightweight metadata.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+        if (labelsBuilder_ != null) {
+          return labelsBuilder_.getMessageOrBuilder();
+        } else {
+          return labels_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 14;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and agent endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and agent processes. Therefore,
+       * labels should be used to tag executors with lightweight metadata.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Labels, org.apache.mesos.v1.Protos.Labels.Builder, org.apache.mesos.v1.Protos.LabelsOrBuilder> 
+          getLabelsFieldBuilder() {
+        if (labelsBuilder_ == null) {
+          labelsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Labels, org.apache.mesos.v1.Protos.Labels.Builder, org.apache.mesos.v1.Protos.LabelsOrBuilder>(
+                  labels_,
+                  getParentForChildren(),
+                  isClean());
+          labels_ = null;
+        }
+        return labelsBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.ExecutorInfo)
+    }
+
+    static {
+      defaultInstance = new ExecutorInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.ExecutorInfo)
+  }
+
+  public interface DomainInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional .mesos.v1.DomainInfo.FaultDomain fault_domain = 1;
+    /**
+     * <code>optional .mesos.v1.DomainInfo.FaultDomain fault_domain = 1;</code>
+     */
+    boolean hasFaultDomain();
+    /**
+     * <code>optional .mesos.v1.DomainInfo.FaultDomain fault_domain = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.DomainInfo.FaultDomain getFaultDomain();
+    /**
+     * <code>optional .mesos.v1.DomainInfo.FaultDomain fault_domain = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.DomainInfo.FaultDomainOrBuilder getFaultDomainOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.DomainInfo}
+   *
+   * <pre>
+   **
+   * Describes a domain. A domain is a collection of hosts that have
+   * similar characteristics. Mesos currently only supports "fault
+   * domains", which identify groups of hosts with similar failure
+   * characteristics.
+   *
+   * Frameworks can generally assume that network links between hosts in
+   * the same fault domain have lower latency, higher bandwidth, and better
+   * availability than network links between hosts in different domains.
+   * Schedulers may prefer to place network-intensive workloads in the
+   * same domain, as this may improve performance. Conversely, a single
+   * failure that affects a host in a domain may be more likely to
+   * affect other hosts in the same domain; hence, schedulers may prefer
+   * to place workloads that require high availability in multiple
+   * domains. (For example, all the hosts in a single rack might lose
+   * power or network connectivity simultaneously.)
+   *
+   * There are two kinds of fault domains: regions and zones. Regions
+   * offer the highest degree of fault isolation, but network latency
+   * between regions is typically high (typically &gt;50 ms). Zones offer a
+   * modest degree of fault isolation along with reasonably low network
+   * latency (typically &lt;10 ms).
+   *
+   * The mapping from fault domains to physical infrastructure is up to
+   * the operator to configure. In cloud environments, regions and zones
+   * can be mapped to the "region" and "availability zone" concepts
+   * exposed by most cloud providers, respectively. In on-premise
+   * deployments, regions and zones can be mapped to data centers and
+   * racks, respectively.
+   *
+   * Both masters and agents can be configured with domains. Frameworks
+   * can compare the domains of two hosts to determine if the hosts are
+   * in the same zone, in different zones in the same region, or in
+   * different regions. Note that all masters in a given Mesos cluster
+   * must be in the same region.
+   * </pre>
+   */
+  public static final class DomainInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements DomainInfoOrBuilder {
+    // Use DomainInfo.newBuilder() to construct.
+    private DomainInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private DomainInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final DomainInfo defaultInstance;
+    public static DomainInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public DomainInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private DomainInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                subBuilder = faultDomain_.toBuilder();
+              }
+              faultDomain_ = input.readMessage(org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(faultDomain_);
+                faultDomain_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DomainInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DomainInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.DomainInfo.class, org.apache.mesos.v1.Protos.DomainInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<DomainInfo> PARSER =
+        new com.google.protobuf.AbstractParser<DomainInfo>() {
+      public DomainInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new DomainInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<DomainInfo> getParserForType() {
+      return PARSER;
+    }
+
+    public interface FaultDomainOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required .mesos.v1.DomainInfo.FaultDomain.RegionInfo region = 1;
+      /**
+       * <code>required .mesos.v1.DomainInfo.FaultDomain.RegionInfo region = 1;</code>
+       */
+      boolean hasRegion();
+      /**
+       * <code>required .mesos.v1.DomainInfo.FaultDomain.RegionInfo region = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo getRegion();
+      /**
+       * <code>required .mesos.v1.DomainInfo.FaultDomain.RegionInfo region = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfoOrBuilder getRegionOrBuilder();
+
+      // required .mesos.v1.DomainInfo.FaultDomain.ZoneInfo zone = 2;
+      /**
+       * <code>required .mesos.v1.DomainInfo.FaultDomain.ZoneInfo zone = 2;</code>
+       */
+      boolean hasZone();
+      /**
+       * <code>required .mesos.v1.DomainInfo.FaultDomain.ZoneInfo zone = 2;</code>
+       */
+      org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo getZone();
+      /**
+       * <code>required .mesos.v1.DomainInfo.FaultDomain.ZoneInfo zone = 2;</code>
+       */
+      org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfoOrBuilder getZoneOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.DomainInfo.FaultDomain}
+     */
+    public static final class FaultDomain extends
+        com.google.protobuf.GeneratedMessage
+        implements FaultDomainOrBuilder {
+      // Use FaultDomain.newBuilder() to construct.
+      private FaultDomain(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private FaultDomain(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final FaultDomain defaultInstance;
+      public static FaultDomain getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public FaultDomain getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private FaultDomain(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = region_.toBuilder();
+                }
+                region_ = input.readMessage(org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(region_);
+                  region_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+              case 18: {
+                org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                  subBuilder = zone_.toBuilder();
+                }
+                zone_ = input.readMessage(org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(zone_);
+                  zone_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000002;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DomainInfo_FaultDomain_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DomainInfo_FaultDomain_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.class, org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<FaultDomain> PARSER =
+          new com.google.protobuf.AbstractParser<FaultDomain>() {
+        public FaultDomain parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new FaultDomain(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<FaultDomain> getParserForType() {
+        return PARSER;
+      }
+
+      public interface RegionInfoOrBuilder
+          extends com.google.protobuf.MessageOrBuilder {
+
+        // required string name = 1;
+        /**
+         * <code>required string name = 1;</code>
+         */
+        boolean hasName();
+        /**
+         * <code>required string name = 1;</code>
+         */
+        java.lang.String getName();
+        /**
+         * <code>required string name = 1;</code>
+         */
+        com.google.protobuf.ByteString
+            getNameBytes();
+      }
+      /**
+       * Protobuf type {@code mesos.v1.DomainInfo.FaultDomain.RegionInfo}
+       */
+      public static final class RegionInfo extends
+          com.google.protobuf.GeneratedMessage
+          implements RegionInfoOrBuilder {
+        // Use RegionInfo.newBuilder() to construct.
+        private RegionInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+          super(builder);
+          this.unknownFields = builder.getUnknownFields();
+        }
+        private RegionInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+        private static final RegionInfo defaultInstance;
+        public static RegionInfo getDefaultInstance() {
+          return defaultInstance;
+        }
+
+        public RegionInfo getDefaultInstanceForType() {
+          return defaultInstance;
+        }
+
+        private final com.google.protobuf.UnknownFieldSet unknownFields;
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet
+            getUnknownFields() {
+          return this.unknownFields;
+        }
+        private RegionInfo(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          initFields();
+          int mutable_bitField0_ = 0;
+          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+              com.google.protobuf.UnknownFieldSet.newBuilder();
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(input, unknownFields,
+                                         extensionRegistry, tag)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 10: {
+                  bitField0_ |= 0x00000001;
+                  name_ = input.readBytes();
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw e.setUnfinishedMessage(this);
+          } catch (java.io.IOException e) {
+            throw new com.google.protobuf.InvalidProtocolBufferException(
+                e.getMessage()).setUnfinishedMessage(this);
+          } finally {
+            this.unknownFields = unknownFields.build();
+            makeExtensionsImmutable();
+          }
+        }
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DomainInfo_FaultDomain_RegionInfo_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DomainInfo_FaultDomain_RegionInfo_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo.class, org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo.Builder.class);
+        }
+
+        public static com.google.protobuf.Parser<RegionInfo> PARSER =
+            new com.google.protobuf.AbstractParser<RegionInfo>() {
+          public RegionInfo parsePartialFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return new RegionInfo(input, extensionRegistry);
+          }
+        };
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<RegionInfo> getParserForType() {
+          return PARSER;
+        }
+
+        private int bitField0_;
+        // required string name = 1;
+        public static final int NAME_FIELD_NUMBER = 1;
+        private java.lang.Object name_;
+        /**
+         * <code>required string name = 1;</code>
+         */
+        public boolean hasName() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required string name = 1;</code>
+         */
+        public java.lang.String getName() {
+          java.lang.Object ref = name_;
+          if (ref instanceof java.lang.String) {
+            return (java.lang.String) ref;
+          } else {
+            com.google.protobuf.ByteString bs = 
+                (com.google.protobuf.ByteString) ref;
+            java.lang.String s = bs.toStringUtf8();
+            if (bs.isValidUtf8()) {
+              name_ = s;
+            }
+            return s;
+          }
+        }
+        /**
+         * <code>required string name = 1;</code>
+         */
+        public com.google.protobuf.ByteString
+            getNameBytes() {
+          java.lang.Object ref = name_;
+          if (ref instanceof java.lang.String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            name_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+
+        private void initFields() {
+          name_ = "";
+        }
+        private byte memoizedIsInitialized = -1;
+        public final boolean isInitialized() {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized != -1) return isInitialized == 1;
+
+          if (!hasName()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+          memoizedIsInitialized = 1;
+          return true;
+        }
+
+        public void writeTo(com.google.protobuf.CodedOutputStream output)
+                            throws java.io.IOException {
+          getSerializedSize();
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            output.writeBytes(1, getNameBytes());
+          }
+          getUnknownFields().writeTo(output);
+        }
+
+        private int memoizedSerializedSize = -1;
+        public int getSerializedSize() {
+          int size = memoizedSerializedSize;
+          if (size != -1) return size;
+
+          size = 0;
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeBytesSize(1, getNameBytes());
+          }
+          size += getUnknownFields().getSerializedSize();
+          memoizedSerializedSize = size;
+          return size;
+        }
+
+        private static final long serialVersionUID = 0L;
+        @java.lang.Override
+        protected java.lang.Object writeReplace()
+            throws java.io.ObjectStreamException {
+          return super.writeReplace();
+        }
+
+        public static org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo parseFrom(
+            com.google.protobuf.ByteString data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo parseFrom(
+            com.google.protobuf.ByteString data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo parseFrom(byte[] data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo parseFrom(
+            byte[] data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo parseFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo parseFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo parseDelimitedFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo parseDelimitedFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo parseFrom(
+            com.google.protobuf.CodedInputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo parseFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+
+        public static Builder newBuilder() { return Builder.create(); }
+        public Builder newBuilderForType() { return newBuilder(); }
+        public static Builder newBuilder(org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo prototype) {
+          return newBuilder().mergeFrom(prototype);
+        }
+        public Builder toBuilder() { return newBuilder(this); }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          Builder builder = new Builder(parent);
+          return builder;
+        }
+        /**
+         * Protobuf type {@code mesos.v1.DomainInfo.FaultDomain.RegionInfo}
+         */
+        public static final class Builder extends
+            com.google.protobuf.GeneratedMessage.Builder<Builder>
+           implements org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfoOrBuilder {
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DomainInfo_FaultDomain_RegionInfo_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DomainInfo_FaultDomain_RegionInfo_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo.class, org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo.Builder.class);
+          }
+
+          // Construct using org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo.newBuilder()
+          private Builder() {
+            maybeForceBuilderInitialization();
+          }
+
+          private Builder(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            super(parent);
+            maybeForceBuilderInitialization();
+          }
+          private void maybeForceBuilderInitialization() {
+            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            }
+          }
+          private static Builder create() {
+            return new Builder();
+          }
+
+          public Builder clear() {
+            super.clear();
+            name_ = "";
+            bitField0_ = (bitField0_ & ~0x00000001);
+            return this;
+          }
+
+          public Builder clone() {
+            return create().mergeFrom(buildPartial());
+          }
+
+          public com.google.protobuf.Descriptors.Descriptor
+              getDescriptorForType() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DomainInfo_FaultDomain_RegionInfo_descriptor;
+          }
+
+          public org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo getDefaultInstanceForType() {
+            return org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo.getDefaultInstance();
+          }
+
+          public org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo build() {
+            org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo result = buildPartial();
+            if (!result.isInitialized()) {
+              throw newUninitializedMessageException(result);
+            }
+            return result;
+          }
+
+          public org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo buildPartial() {
+            org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo result = new org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo(this);
+            int from_bitField0_ = bitField0_;
+            int to_bitField0_ = 0;
+            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+              to_bitField0_ |= 0x00000001;
+            }
+            result.name_ = name_;
+            result.bitField0_ = to_bitField0_;
+            onBuilt();
+            return result;
+          }
+
+          public Builder mergeFrom(com.google.protobuf.Message other) {
+            if (other instanceof org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo) {
+              return mergeFrom((org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo)other);
+            } else {
+              super.mergeFrom(other);
+              return this;
+            }
+          }
+
+          public Builder mergeFrom(org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo other) {
+            if (other == org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo.getDefaultInstance()) return this;
+            if (other.hasName()) {
+              bitField0_ |= 0x00000001;
+              name_ = other.name_;
+              onChanged();
+            }
+            this.mergeUnknownFields(other.getUnknownFields());
+            return this;
+          }
+
+          public final boolean isInitialized() {
+            if (!hasName()) {
+              
+              return false;
+            }
+            return true;
+          }
+
+          public Builder mergeFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo parsedMessage = null;
+            try {
+              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              parsedMessage = (org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo) e.getUnfinishedMessage();
+              throw e;
+            } finally {
+              if (parsedMessage != null) {
+                mergeFrom(parsedMessage);
+              }
+            }
+            return this;
+          }
+          private int bitField0_;
+
+          // required string name = 1;
+          private java.lang.Object name_ = "";
+          /**
+           * <code>required string name = 1;</code>
+           */
+          public boolean hasName() {
+            return ((bitField0_ & 0x00000001) == 0x00000001);
+          }
+          /**
+           * <code>required string name = 1;</code>
+           */
+          public java.lang.String getName() {
+            java.lang.Object ref = name_;
+            if (!(ref instanceof java.lang.String)) {
+              java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                  .toStringUtf8();
+              name_ = s;
+              return s;
+            } else {
+              return (java.lang.String) ref;
+            }
+          }
+          /**
+           * <code>required string name = 1;</code>
+           */
+          public com.google.protobuf.ByteString
+              getNameBytes() {
+            java.lang.Object ref = name_;
+            if (ref instanceof String) {
+              com.google.protobuf.ByteString b = 
+                  com.google.protobuf.ByteString.copyFromUtf8(
+                      (java.lang.String) ref);
+              name_ = b;
+              return b;
+            } else {
+              return (com.google.protobuf.ByteString) ref;
+            }
+          }
+          /**
+           * <code>required string name = 1;</code>
+           */
+          public Builder setName(
+              java.lang.String value) {
+            if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+            name_ = value;
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>required string name = 1;</code>
+           */
+          public Builder clearName() {
+            bitField0_ = (bitField0_ & ~0x00000001);
+            name_ = getDefaultInstance().getName();
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>required string name = 1;</code>
+           */
+          public Builder setNameBytes(
+              com.google.protobuf.ByteString value) {
+            if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+            name_ = value;
+            onChanged();
+            return this;
+          }
+
+          // @@protoc_insertion_point(builder_scope:mesos.v1.DomainInfo.FaultDomain.RegionInfo)
+        }
+
+        static {
+          defaultInstance = new RegionInfo(true);
+          defaultInstance.initFields();
+        }
+
+        // @@protoc_insertion_point(class_scope:mesos.v1.DomainInfo.FaultDomain.RegionInfo)
+      }
+
+      public interface ZoneInfoOrBuilder
+          extends com.google.protobuf.MessageOrBuilder {
+
+        // required string name = 1;
+        /**
+         * <code>required string name = 1;</code>
+         */
+        boolean hasName();
+        /**
+         * <code>required string name = 1;</code>
+         */
+        java.lang.String getName();
+        /**
+         * <code>required string name = 1;</code>
+         */
+        com.google.protobuf.ByteString
+            getNameBytes();
+      }
+      /**
+       * Protobuf type {@code mesos.v1.DomainInfo.FaultDomain.ZoneInfo}
+       */
+      public static final class ZoneInfo extends
+          com.google.protobuf.GeneratedMessage
+          implements ZoneInfoOrBuilder {
+        // Use ZoneInfo.newBuilder() to construct.
+        private ZoneInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+          super(builder);
+          this.unknownFields = builder.getUnknownFields();
+        }
+        private ZoneInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+        private static final ZoneInfo defaultInstance;
+        public static ZoneInfo getDefaultInstance() {
+          return defaultInstance;
+        }
+
+        public ZoneInfo getDefaultInstanceForType() {
+          return defaultInstance;
+        }
+
+        private final com.google.protobuf.UnknownFieldSet unknownFields;
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet
+            getUnknownFields() {
+          return this.unknownFields;
+        }
+        private ZoneInfo(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          initFields();
+          int mutable_bitField0_ = 0;
+          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+              com.google.protobuf.UnknownFieldSet.newBuilder();
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(input, unknownFields,
+                                         extensionRegistry, tag)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 10: {
+                  bitField0_ |= 0x00000001;
+                  name_ = input.readBytes();
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw e.setUnfinishedMessage(this);
+          } catch (java.io.IOException e) {
+            throw new com.google.protobuf.InvalidProtocolBufferException(
+                e.getMessage()).setUnfinishedMessage(this);
+          } finally {
+            this.unknownFields = unknownFields.build();
+            makeExtensionsImmutable();
+          }
+        }
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DomainInfo_FaultDomain_ZoneInfo_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DomainInfo_FaultDomain_ZoneInfo_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo.class, org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo.Builder.class);
+        }
+
+        public static com.google.protobuf.Parser<ZoneInfo> PARSER =
+            new com.google.protobuf.AbstractParser<ZoneInfo>() {
+          public ZoneInfo parsePartialFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return new ZoneInfo(input, extensionRegistry);
+          }
+        };
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<ZoneInfo> getParserForType() {
+          return PARSER;
+        }
+
+        private int bitField0_;
+        // required string name = 1;
+        public static final int NAME_FIELD_NUMBER = 1;
+        private java.lang.Object name_;
+        /**
+         * <code>required string name = 1;</code>
+         */
+        public boolean hasName() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required string name = 1;</code>
+         */
+        public java.lang.String getName() {
+          java.lang.Object ref = name_;
+          if (ref instanceof java.lang.String) {
+            return (java.lang.String) ref;
+          } else {
+            com.google.protobuf.ByteString bs = 
+                (com.google.protobuf.ByteString) ref;
+            java.lang.String s = bs.toStringUtf8();
+            if (bs.isValidUtf8()) {
+              name_ = s;
+            }
+            return s;
+          }
+        }
+        /**
+         * <code>required string name = 1;</code>
+         */
+        public com.google.protobuf.ByteString
+            getNameBytes() {
+          java.lang.Object ref = name_;
+          if (ref instanceof java.lang.String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            name_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+
+        private void initFields() {
+          name_ = "";
+        }
+        private byte memoizedIsInitialized = -1;
+        public final boolean isInitialized() {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized != -1) return isInitialized == 1;
+
+          if (!hasName()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+          memoizedIsInitialized = 1;
+          return true;
+        }
+
+        public void writeTo(com.google.protobuf.CodedOutputStream output)
+                            throws java.io.IOException {
+          getSerializedSize();
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            output.writeBytes(1, getNameBytes());
+          }
+          getUnknownFields().writeTo(output);
+        }
+
+        private int memoizedSerializedSize = -1;
+        public int getSerializedSize() {
+          int size = memoizedSerializedSize;
+          if (size != -1) return size;
+
+          size = 0;
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeBytesSize(1, getNameBytes());
+          }
+          size += getUnknownFields().getSerializedSize();
+          memoizedSerializedSize = size;
+          return size;
+        }
+
+        private static final long serialVersionUID = 0L;
+        @java.lang.Override
+        protected java.lang.Object writeReplace()
+            throws java.io.ObjectStreamException {
+          return super.writeReplace();
+        }
+
+        public static org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo parseFrom(
+            com.google.protobuf.ByteString data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo parseFrom(
+            com.google.protobuf.ByteString data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo parseFrom(byte[] data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo parseFrom(
+            byte[] data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo parseFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo parseFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo parseDelimitedFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo parseDelimitedFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo parseFrom(
+            com.google.protobuf.CodedInputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo parseFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+
+        public static Builder newBuilder() { return Builder.create(); }
+        public Builder newBuilderForType() { return newBuilder(); }
+        public static Builder newBuilder(org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo prototype) {
+          return newBuilder().mergeFrom(prototype);
+        }
+        public Builder toBuilder() { return newBuilder(this); }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          Builder builder = new Builder(parent);
+          return builder;
+        }
+        /**
+         * Protobuf type {@code mesos.v1.DomainInfo.FaultDomain.ZoneInfo}
+         */
+        public static final class Builder extends
+            com.google.protobuf.GeneratedMessage.Builder<Builder>
+           implements org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfoOrBuilder {
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DomainInfo_FaultDomain_ZoneInfo_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DomainInfo_FaultDomain_ZoneInfo_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo.class, org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo.Builder.class);
+          }
+
+          // Construct using org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo.newBuilder()
+          private Builder() {
+            maybeForceBuilderInitialization();
+          }
+
+          private Builder(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            super(parent);
+            maybeForceBuilderInitialization();
+          }
+          private void maybeForceBuilderInitialization() {
+            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            }
+          }
+          private static Builder create() {
+            return new Builder();
+          }
+
+          public Builder clear() {
+            super.clear();
+            name_ = "";
+            bitField0_ = (bitField0_ & ~0x00000001);
+            return this;
+          }
+
+          public Builder clone() {
+            return create().mergeFrom(buildPartial());
+          }
+
+          public com.google.protobuf.Descriptors.Descriptor
+              getDescriptorForType() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DomainInfo_FaultDomain_ZoneInfo_descriptor;
+          }
+
+          public org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo getDefaultInstanceForType() {
+            return org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo.getDefaultInstance();
+          }
+
+          public org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo build() {
+            org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo result = buildPartial();
+            if (!result.isInitialized()) {
+              throw newUninitializedMessageException(result);
+            }
+            return result;
+          }
+
+          public org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo buildPartial() {
+            org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo result = new org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo(this);
+            int from_bitField0_ = bitField0_;
+            int to_bitField0_ = 0;
+            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+              to_bitField0_ |= 0x00000001;
+            }
+            result.name_ = name_;
+            result.bitField0_ = to_bitField0_;
+            onBuilt();
+            return result;
+          }
+
+          public Builder mergeFrom(com.google.protobuf.Message other) {
+            if (other instanceof org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo) {
+              return mergeFrom((org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo)other);
+            } else {
+              super.mergeFrom(other);
+              return this;
+            }
+          }
+
+          public Builder mergeFrom(org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo other) {
+            if (other == org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo.getDefaultInstance()) return this;
+            if (other.hasName()) {
+              bitField0_ |= 0x00000001;
+              name_ = other.name_;
+              onChanged();
+            }
+            this.mergeUnknownFields(other.getUnknownFields());
+            return this;
+          }
+
+          public final boolean isInitialized() {
+            if (!hasName()) {
+              
+              return false;
+            }
+            return true;
+          }
+
+          public Builder mergeFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo parsedMessage = null;
+            try {
+              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              parsedMessage = (org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo) e.getUnfinishedMessage();
+              throw e;
+            } finally {
+              if (parsedMessage != null) {
+                mergeFrom(parsedMessage);
+              }
+            }
+            return this;
+          }
+          private int bitField0_;
+
+          // required string name = 1;
+          private java.lang.Object name_ = "";
+          /**
+           * <code>required string name = 1;</code>
+           */
+          public boolean hasName() {
+            return ((bitField0_ & 0x00000001) == 0x00000001);
+          }
+          /**
+           * <code>required string name = 1;</code>
+           */
+          public java.lang.String getName() {
+            java.lang.Object ref = name_;
+            if (!(ref instanceof java.lang.String)) {
+              java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                  .toStringUtf8();
+              name_ = s;
+              return s;
+            } else {
+              return (java.lang.String) ref;
+            }
+          }
+          /**
+           * <code>required string name = 1;</code>
+           */
+          public com.google.protobuf.ByteString
+              getNameBytes() {
+            java.lang.Object ref = name_;
+            if (ref instanceof String) {
+              com.google.protobuf.ByteString b = 
+                  com.google.protobuf.ByteString.copyFromUtf8(
+                      (java.lang.String) ref);
+              name_ = b;
+              return b;
+            } else {
+              return (com.google.protobuf.ByteString) ref;
+            }
+          }
+          /**
+           * <code>required string name = 1;</code>
+           */
+          public Builder setName(
+              java.lang.String value) {
+            if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+            name_ = value;
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>required string name = 1;</code>
+           */
+          public Builder clearName() {
+            bitField0_ = (bitField0_ & ~0x00000001);
+            name_ = getDefaultInstance().getName();
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>required string name = 1;</code>
+           */
+          public Builder setNameBytes(
+              com.google.protobuf.ByteString value) {
+            if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+            name_ = value;
+            onChanged();
+            return this;
+          }
+
+          // @@protoc_insertion_point(builder_scope:mesos.v1.DomainInfo.FaultDomain.ZoneInfo)
+        }
+
+        static {
+          defaultInstance = new ZoneInfo(true);
+          defaultInstance.initFields();
+        }
+
+        // @@protoc_insertion_point(class_scope:mesos.v1.DomainInfo.FaultDomain.ZoneInfo)
+      }
+
+      private int bitField0_;
+      // required .mesos.v1.DomainInfo.FaultDomain.RegionInfo region = 1;
+      public static final int REGION_FIELD_NUMBER = 1;
+      private org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo region_;
+      /**
+       * <code>required .mesos.v1.DomainInfo.FaultDomain.RegionInfo region = 1;</code>
+       */
+      public boolean hasRegion() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.v1.DomainInfo.FaultDomain.RegionInfo region = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo getRegion() {
+        return region_;
+      }
+      /**
+       * <code>required .mesos.v1.DomainInfo.FaultDomain.RegionInfo region = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfoOrBuilder getRegionOrBuilder() {
+        return region_;
+      }
+
+      // required .mesos.v1.DomainInfo.FaultDomain.ZoneInfo zone = 2;
+      public static final int ZONE_FIELD_NUMBER = 2;
+      private org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo zone_;
+      /**
+       * <code>required .mesos.v1.DomainInfo.FaultDomain.ZoneInfo zone = 2;</code>
+       */
+      public boolean hasZone() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required .mesos.v1.DomainInfo.FaultDomain.ZoneInfo zone = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo getZone() {
+        return zone_;
+      }
+      /**
+       * <code>required .mesos.v1.DomainInfo.FaultDomain.ZoneInfo zone = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfoOrBuilder getZoneOrBuilder() {
+        return zone_;
+      }
+
+      private void initFields() {
+        region_ = org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo.getDefaultInstance();
+        zone_ = org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasRegion()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!hasZone()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getRegion().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getZone().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, region_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeMessage(2, zone_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, region_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(2, zone_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.Protos.DomainInfo.FaultDomain parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.DomainInfo.FaultDomain parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.DomainInfo.FaultDomain parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.DomainInfo.FaultDomain parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.DomainInfo.FaultDomain parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.DomainInfo.FaultDomain parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.DomainInfo.FaultDomain parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.DomainInfo.FaultDomain parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.DomainInfo.FaultDomain parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.DomainInfo.FaultDomain parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.Protos.DomainInfo.FaultDomain prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.DomainInfo.FaultDomain}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.Protos.DomainInfo.FaultDomainOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DomainInfo_FaultDomain_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DomainInfo_FaultDomain_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.class, org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getRegionFieldBuilder();
+            getZoneFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (regionBuilder_ == null) {
+            region_ = org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo.getDefaultInstance();
+          } else {
+            regionBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          if (zoneBuilder_ == null) {
+            zone_ = org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo.getDefaultInstance();
+          } else {
+            zoneBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DomainInfo_FaultDomain_descriptor;
+        }
+
+        public org.apache.mesos.v1.Protos.DomainInfo.FaultDomain getDefaultInstanceForType() {
+          return org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.Protos.DomainInfo.FaultDomain build() {
+          org.apache.mesos.v1.Protos.DomainInfo.FaultDomain result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.Protos.DomainInfo.FaultDomain buildPartial() {
+          org.apache.mesos.v1.Protos.DomainInfo.FaultDomain result = new org.apache.mesos.v1.Protos.DomainInfo.FaultDomain(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (regionBuilder_ == null) {
+            result.region_ = region_;
+          } else {
+            result.region_ = regionBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          if (zoneBuilder_ == null) {
+            result.zone_ = zone_;
+          } else {
+            result.zone_ = zoneBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.Protos.DomainInfo.FaultDomain) {
+            return mergeFrom((org.apache.mesos.v1.Protos.DomainInfo.FaultDomain)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.Protos.DomainInfo.FaultDomain other) {
+          if (other == org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.getDefaultInstance()) return this;
+          if (other.hasRegion()) {
+            mergeRegion(other.getRegion());
+          }
+          if (other.hasZone()) {
+            mergeZone(other.getZone());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasRegion()) {
+            
+            return false;
+          }
+          if (!hasZone()) {
+            
+            return false;
+          }
+          if (!getRegion().isInitialized()) {
+            
+            return false;
+          }
+          if (!getZone().isInitialized()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.Protos.DomainInfo.FaultDomain parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.Protos.DomainInfo.FaultDomain) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required .mesos.v1.DomainInfo.FaultDomain.RegionInfo region = 1;
+        private org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo region_ = org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo, org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo.Builder, org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfoOrBuilder> regionBuilder_;
+        /**
+         * <code>required .mesos.v1.DomainInfo.FaultDomain.RegionInfo region = 1;</code>
+         */
+        public boolean hasRegion() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.v1.DomainInfo.FaultDomain.RegionInfo region = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo getRegion() {
+          if (regionBuilder_ == null) {
+            return region_;
+          } else {
+            return regionBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.v1.DomainInfo.FaultDomain.RegionInfo region = 1;</code>
+         */
+        public Builder setRegion(org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo value) {
+          if (regionBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            region_ = value;
+            onChanged();
+          } else {
+            regionBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.DomainInfo.FaultDomain.RegionInfo region = 1;</code>
+         */
+        public Builder setRegion(
+            org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo.Builder builderForValue) {
+          if (regionBuilder_ == null) {
+            region_ = builderForValue.build();
+            onChanged();
+          } else {
+            regionBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.DomainInfo.FaultDomain.RegionInfo region = 1;</code>
+         */
+        public Builder mergeRegion(org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo value) {
+          if (regionBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                region_ != org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo.getDefaultInstance()) {
+              region_ =
+                org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo.newBuilder(region_).mergeFrom(value).buildPartial();
+            } else {
+              region_ = value;
+            }
+            onChanged();
+          } else {
+            regionBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.DomainInfo.FaultDomain.RegionInfo region = 1;</code>
+         */
+        public Builder clearRegion() {
+          if (regionBuilder_ == null) {
+            region_ = org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo.getDefaultInstance();
+            onChanged();
+          } else {
+            regionBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.DomainInfo.FaultDomain.RegionInfo region = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo.Builder getRegionBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getRegionFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.v1.DomainInfo.FaultDomain.RegionInfo region = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfoOrBuilder getRegionOrBuilder() {
+          if (regionBuilder_ != null) {
+            return regionBuilder_.getMessageOrBuilder();
+          } else {
+            return region_;
+          }
+        }
+        /**
+         * <code>required .mesos.v1.DomainInfo.FaultDomain.RegionInfo region = 1;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo, org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo.Builder, org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfoOrBuilder> 
+            getRegionFieldBuilder() {
+          if (regionBuilder_ == null) {
+            regionBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo, org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfo.Builder, org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.RegionInfoOrBuilder>(
+                    region_,
+                    getParentForChildren(),
+                    isClean());
+            region_ = null;
+          }
+          return regionBuilder_;
+        }
+
+        // required .mesos.v1.DomainInfo.FaultDomain.ZoneInfo zone = 2;
+        private org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo zone_ = org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo, org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo.Builder, org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfoOrBuilder> zoneBuilder_;
+        /**
+         * <code>required .mesos.v1.DomainInfo.FaultDomain.ZoneInfo zone = 2;</code>
+         */
+        public boolean hasZone() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>required .mesos.v1.DomainInfo.FaultDomain.ZoneInfo zone = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo getZone() {
+          if (zoneBuilder_ == null) {
+            return zone_;
+          } else {
+            return zoneBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.v1.DomainInfo.FaultDomain.ZoneInfo zone = 2;</code>
+         */
+        public Builder setZone(org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo value) {
+          if (zoneBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            zone_ = value;
+            onChanged();
+          } else {
+            zoneBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.DomainInfo.FaultDomain.ZoneInfo zone = 2;</code>
+         */
+        public Builder setZone(
+            org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo.Builder builderForValue) {
+          if (zoneBuilder_ == null) {
+            zone_ = builderForValue.build();
+            onChanged();
+          } else {
+            zoneBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.DomainInfo.FaultDomain.ZoneInfo zone = 2;</code>
+         */
+        public Builder mergeZone(org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo value) {
+          if (zoneBuilder_ == null) {
+            if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                zone_ != org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo.getDefaultInstance()) {
+              zone_ =
+                org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo.newBuilder(zone_).mergeFrom(value).buildPartial();
+            } else {
+              zone_ = value;
+            }
+            onChanged();
+          } else {
+            zoneBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.DomainInfo.FaultDomain.ZoneInfo zone = 2;</code>
+         */
+        public Builder clearZone() {
+          if (zoneBuilder_ == null) {
+            zone_ = org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo.getDefaultInstance();
+            onChanged();
+          } else {
+            zoneBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.DomainInfo.FaultDomain.ZoneInfo zone = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo.Builder getZoneBuilder() {
+          bitField0_ |= 0x00000002;
+          onChanged();
+          return getZoneFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.v1.DomainInfo.FaultDomain.ZoneInfo zone = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfoOrBuilder getZoneOrBuilder() {
+          if (zoneBuilder_ != null) {
+            return zoneBuilder_.getMessageOrBuilder();
+          } else {
+            return zone_;
+          }
+        }
+        /**
+         * <code>required .mesos.v1.DomainInfo.FaultDomain.ZoneInfo zone = 2;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo, org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo.Builder, org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfoOrBuilder> 
+            getZoneFieldBuilder() {
+          if (zoneBuilder_ == null) {
+            zoneBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo, org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfo.Builder, org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.ZoneInfoOrBuilder>(
+                    zone_,
+                    getParentForChildren(),
+                    isClean());
+            zone_ = null;
+          }
+          return zoneBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.DomainInfo.FaultDomain)
+      }
+
+      static {
+        defaultInstance = new FaultDomain(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.DomainInfo.FaultDomain)
+    }
+
+    private int bitField0_;
+    // optional .mesos.v1.DomainInfo.FaultDomain fault_domain = 1;
+    public static final int FAULT_DOMAIN_FIELD_NUMBER = 1;
+    private org.apache.mesos.v1.Protos.DomainInfo.FaultDomain faultDomain_;
+    /**
+     * <code>optional .mesos.v1.DomainInfo.FaultDomain fault_domain = 1;</code>
+     */
+    public boolean hasFaultDomain() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional .mesos.v1.DomainInfo.FaultDomain fault_domain = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.DomainInfo.FaultDomain getFaultDomain() {
+      return faultDomain_;
+    }
+    /**
+     * <code>optional .mesos.v1.DomainInfo.FaultDomain fault_domain = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.DomainInfo.FaultDomainOrBuilder getFaultDomainOrBuilder() {
+      return faultDomain_;
+    }
+
+    private void initFields() {
+      faultDomain_ = org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (hasFaultDomain()) {
+        if (!getFaultDomain().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeMessage(1, faultDomain_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, faultDomain_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.DomainInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.DomainInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.DomainInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.DomainInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.DomainInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.DomainInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.DomainInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.DomainInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.DomainInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.DomainInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.DomainInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.DomainInfo}
+     *
+     * <pre>
+     **
+     * Describes a domain. A domain is a collection of hosts that have
+     * similar characteristics. Mesos currently only supports "fault
+     * domains", which identify groups of hosts with similar failure
+     * characteristics.
+     *
+     * Frameworks can generally assume that network links between hosts in
+     * the same fault domain have lower latency, higher bandwidth, and better
+     * availability than network links between hosts in different domains.
+     * Schedulers may prefer to place network-intensive workloads in the
+     * same domain, as this may improve performance. Conversely, a single
+     * failure that affects a host in a domain may be more likely to
+     * affect other hosts in the same domain; hence, schedulers may prefer
+     * to place workloads that require high availability in multiple
+     * domains. (For example, all the hosts in a single rack might lose
+     * power or network connectivity simultaneously.)
+     *
+     * There are two kinds of fault domains: regions and zones. Regions
+     * offer the highest degree of fault isolation, but network latency
+     * between regions is typically high (typically &gt;50 ms). Zones offer a
+     * modest degree of fault isolation along with reasonably low network
+     * latency (typically &lt;10 ms).
+     *
+     * The mapping from fault domains to physical infrastructure is up to
+     * the operator to configure. In cloud environments, regions and zones
+     * can be mapped to the "region" and "availability zone" concepts
+     * exposed by most cloud providers, respectively. In on-premise
+     * deployments, regions and zones can be mapped to data centers and
+     * racks, respectively.
+     *
+     * Both masters and agents can be configured with domains. Frameworks
+     * can compare the domains of two hosts to determine if the hosts are
+     * in the same zone, in different zones in the same region, or in
+     * different regions. Note that all masters in a given Mesos cluster
+     * must be in the same region.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.DomainInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DomainInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DomainInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.DomainInfo.class, org.apache.mesos.v1.Protos.DomainInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.DomainInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getFaultDomainFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (faultDomainBuilder_ == null) {
+          faultDomain_ = org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.getDefaultInstance();
+        } else {
+          faultDomainBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DomainInfo_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.DomainInfo getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.DomainInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.DomainInfo build() {
+        org.apache.mesos.v1.Protos.DomainInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.DomainInfo buildPartial() {
+        org.apache.mesos.v1.Protos.DomainInfo result = new org.apache.mesos.v1.Protos.DomainInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        if (faultDomainBuilder_ == null) {
+          result.faultDomain_ = faultDomain_;
+        } else {
+          result.faultDomain_ = faultDomainBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.DomainInfo) {
+          return mergeFrom((org.apache.mesos.v1.Protos.DomainInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.DomainInfo other) {
+        if (other == org.apache.mesos.v1.Protos.DomainInfo.getDefaultInstance()) return this;
+        if (other.hasFaultDomain()) {
+          mergeFaultDomain(other.getFaultDomain());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (hasFaultDomain()) {
+          if (!getFaultDomain().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.DomainInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.DomainInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional .mesos.v1.DomainInfo.FaultDomain fault_domain = 1;
+      private org.apache.mesos.v1.Protos.DomainInfo.FaultDomain faultDomain_ = org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.DomainInfo.FaultDomain, org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.Builder, org.apache.mesos.v1.Protos.DomainInfo.FaultDomainOrBuilder> faultDomainBuilder_;
+      /**
+       * <code>optional .mesos.v1.DomainInfo.FaultDomain fault_domain = 1;</code>
+       */
+      public boolean hasFaultDomain() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.v1.DomainInfo.FaultDomain fault_domain = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.DomainInfo.FaultDomain getFaultDomain() {
+        if (faultDomainBuilder_ == null) {
+          return faultDomain_;
+        } else {
+          return faultDomainBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.DomainInfo.FaultDomain fault_domain = 1;</code>
+       */
+      public Builder setFaultDomain(org.apache.mesos.v1.Protos.DomainInfo.FaultDomain value) {
+        if (faultDomainBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          faultDomain_ = value;
+          onChanged();
+        } else {
+          faultDomainBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.DomainInfo.FaultDomain fault_domain = 1;</code>
+       */
+      public Builder setFaultDomain(
+          org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.Builder builderForValue) {
+        if (faultDomainBuilder_ == null) {
+          faultDomain_ = builderForValue.build();
+          onChanged();
+        } else {
+          faultDomainBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.DomainInfo.FaultDomain fault_domain = 1;</code>
+       */
+      public Builder mergeFaultDomain(org.apache.mesos.v1.Protos.DomainInfo.FaultDomain value) {
+        if (faultDomainBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001) &&
+              faultDomain_ != org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.getDefaultInstance()) {
+            faultDomain_ =
+              org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.newBuilder(faultDomain_).mergeFrom(value).buildPartial();
+          } else {
+            faultDomain_ = value;
+          }
+          onChanged();
+        } else {
+          faultDomainBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.DomainInfo.FaultDomain fault_domain = 1;</code>
+       */
+      public Builder clearFaultDomain() {
+        if (faultDomainBuilder_ == null) {
+          faultDomain_ = org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.getDefaultInstance();
+          onChanged();
+        } else {
+          faultDomainBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.DomainInfo.FaultDomain fault_domain = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.Builder getFaultDomainBuilder() {
+        bitField0_ |= 0x00000001;
+        onChanged();
+        return getFaultDomainFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.DomainInfo.FaultDomain fault_domain = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.DomainInfo.FaultDomainOrBuilder getFaultDomainOrBuilder() {
+        if (faultDomainBuilder_ != null) {
+          return faultDomainBuilder_.getMessageOrBuilder();
+        } else {
+          return faultDomain_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.DomainInfo.FaultDomain fault_domain = 1;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.DomainInfo.FaultDomain, org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.Builder, org.apache.mesos.v1.Protos.DomainInfo.FaultDomainOrBuilder> 
+          getFaultDomainFieldBuilder() {
+        if (faultDomainBuilder_ == null) {
+          faultDomainBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.DomainInfo.FaultDomain, org.apache.mesos.v1.Protos.DomainInfo.FaultDomain.Builder, org.apache.mesos.v1.Protos.DomainInfo.FaultDomainOrBuilder>(
+                  faultDomain_,
+                  getParentForChildren(),
+                  isClean());
+          faultDomain_ = null;
+        }
+        return faultDomainBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.DomainInfo)
+    }
+
+    static {
+      defaultInstance = new DomainInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.DomainInfo)
+  }
+
+  public interface MasterInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string id = 1;
+    /**
+     * <code>required string id = 1;</code>
+     */
+    boolean hasId();
+    /**
+     * <code>required string id = 1;</code>
+     */
+    java.lang.String getId();
+    /**
+     * <code>required string id = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getIdBytes();
+
+    // required uint32 ip = 2;
+    /**
+     * <code>required uint32 ip = 2;</code>
+     *
+     * <pre>
+     * The IP address (only IPv4) as a packed 4-bytes integer,
+     * stored in network order.  Deprecated, use `address.ip` instead.
+     * </pre>
+     */
+    boolean hasIp();
+    /**
+     * <code>required uint32 ip = 2;</code>
+     *
+     * <pre>
+     * The IP address (only IPv4) as a packed 4-bytes integer,
+     * stored in network order.  Deprecated, use `address.ip` instead.
+     * </pre>
+     */
+    int getIp();
+
+    // required uint32 port = 3 [default = 5050];
+    /**
+     * <code>required uint32 port = 3 [default = 5050];</code>
+     *
+     * <pre>
+     * The TCP port the Master is listening on for incoming
+     * HTTP requests; deprecated, use `address.port` instead.
+     * </pre>
+     */
+    boolean hasPort();
+    /**
+     * <code>required uint32 port = 3 [default = 5050];</code>
+     *
+     * <pre>
+     * The TCP port the Master is listening on for incoming
+     * HTTP requests; deprecated, use `address.port` instead.
+     * </pre>
+     */
+    int getPort();
+
+    // optional string pid = 4;
+    /**
+     * <code>optional string pid = 4;</code>
+     *
+     * <pre>
+     * In the default implementation, this will contain information
+     * about both the IP address, port and Master name; it should really
+     * not be relied upon by external tooling/frameworks and be
+     * considered an "internal" implementation field.
+     * </pre>
+     */
+    boolean hasPid();
+    /**
+     * <code>optional string pid = 4;</code>
+     *
+     * <pre>
+     * In the default implementation, this will contain information
+     * about both the IP address, port and Master name; it should really
+     * not be relied upon by external tooling/frameworks and be
+     * considered an "internal" implementation field.
+     * </pre>
+     */
+    java.lang.String getPid();
+    /**
+     * <code>optional string pid = 4;</code>
+     *
+     * <pre>
+     * In the default implementation, this will contain information
+     * about both the IP address, port and Master name; it should really
+     * not be relied upon by external tooling/frameworks and be
+     * considered an "internal" implementation field.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getPidBytes();
+
+    // optional string hostname = 5;
+    /**
+     * <code>optional string hostname = 5;</code>
+     *
+     * <pre>
+     * The server's hostname, if available; it may be unreliable
+     * in environments where the DNS configuration does not resolve
+     * internal hostnames (eg, some public cloud providers).
+     * Deprecated, use `address.hostname` instead.
+     * </pre>
+     */
+    boolean hasHostname();
+    /**
+     * <code>optional string hostname = 5;</code>
+     *
+     * <pre>
+     * The server's hostname, if available; it may be unreliable
+     * in environments where the DNS configuration does not resolve
+     * internal hostnames (eg, some public cloud providers).
+     * Deprecated, use `address.hostname` instead.
+     * </pre>
+     */
+    java.lang.String getHostname();
+    /**
+     * <code>optional string hostname = 5;</code>
+     *
+     * <pre>
+     * The server's hostname, if available; it may be unreliable
+     * in environments where the DNS configuration does not resolve
+     * internal hostnames (eg, some public cloud providers).
+     * Deprecated, use `address.hostname` instead.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getHostnameBytes();
+
+    // optional string version = 6;
+    /**
+     * <code>optional string version = 6;</code>
+     *
+     * <pre>
+     * The running Master version, as a string; taken from the
+     * generated "master/version.hpp".
+     * </pre>
+     */
+    boolean hasVersion();
+    /**
+     * <code>optional string version = 6;</code>
+     *
+     * <pre>
+     * The running Master version, as a string; taken from the
+     * generated "master/version.hpp".
+     * </pre>
+     */
+    java.lang.String getVersion();
+    /**
+     * <code>optional string version = 6;</code>
+     *
+     * <pre>
+     * The running Master version, as a string; taken from the
+     * generated "master/version.hpp".
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getVersionBytes();
+
+    // optional .mesos.v1.Address address = 7;
+    /**
+     * <code>optional .mesos.v1.Address address = 7;</code>
+     *
+     * <pre>
+     * The full IP address (supports both IPv4 and IPv6 formats)
+     * and supersedes the use of `ip`, `port` and `hostname`.
+     * Since Mesos 0.24.
+     * </pre>
+     */
+    boolean hasAddress();
+    /**
+     * <code>optional .mesos.v1.Address address = 7;</code>
+     *
+     * <pre>
+     * The full IP address (supports both IPv4 and IPv6 formats)
+     * and supersedes the use of `ip`, `port` and `hostname`.
+     * Since Mesos 0.24.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.Address getAddress();
+    /**
+     * <code>optional .mesos.v1.Address address = 7;</code>
+     *
+     * <pre>
+     * The full IP address (supports both IPv4 and IPv6 formats)
+     * and supersedes the use of `ip`, `port` and `hostname`.
+     * Since Mesos 0.24.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.AddressOrBuilder getAddressOrBuilder();
+
+    // optional .mesos.v1.DomainInfo domain = 8;
+    /**
+     * <code>optional .mesos.v1.DomainInfo domain = 8;</code>
+     *
+     * <pre>
+     * The domain that this master belongs to. All masters in a Mesos
+     * cluster should belong to the same region.
+     * </pre>
+     */
+    boolean hasDomain();
+    /**
+     * <code>optional .mesos.v1.DomainInfo domain = 8;</code>
+     *
+     * <pre>
+     * The domain that this master belongs to. All masters in a Mesos
+     * cluster should belong to the same region.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.DomainInfo getDomain();
+    /**
+     * <code>optional .mesos.v1.DomainInfo domain = 8;</code>
+     *
+     * <pre>
+     * The domain that this master belongs to. All masters in a Mesos
+     * cluster should belong to the same region.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.DomainInfoOrBuilder getDomainOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.MasterInfo}
+   *
+   * <pre>
+   **
+   * Describes a master. This will probably have more fields in the
+   * future which might be used, for example, to link a framework webui
+   * to a master webui.
+   * </pre>
+   */
+  public static final class MasterInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements MasterInfoOrBuilder {
+    // Use MasterInfo.newBuilder() to construct.
+    private MasterInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private MasterInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final MasterInfo defaultInstance;
+    public static MasterInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public MasterInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private MasterInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              id_ = input.readBytes();
+              break;
+            }
+            case 16: {
+              bitField0_ |= 0x00000002;
+              ip_ = input.readUInt32();
+              break;
+            }
+            case 24: {
+              bitField0_ |= 0x00000004;
+              port_ = input.readUInt32();
+              break;
+            }
+            case 34: {
+              bitField0_ |= 0x00000008;
+              pid_ = input.readBytes();
+              break;
+            }
+            case 42: {
+              bitField0_ |= 0x00000010;
+              hostname_ = input.readBytes();
+              break;
+            }
+            case 50: {
+              bitField0_ |= 0x00000020;
+              version_ = input.readBytes();
+              break;
+            }
+            case 58: {
+              org.apache.mesos.v1.Protos.Address.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000040) == 0x00000040)) {
+                subBuilder = address_.toBuilder();
+              }
+              address_ = input.readMessage(org.apache.mesos.v1.Protos.Address.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(address_);
+                address_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000040;
+              break;
+            }
+            case 66: {
+              org.apache.mesos.v1.Protos.DomainInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000080) == 0x00000080)) {
+                subBuilder = domain_.toBuilder();
+              }
+              domain_ = input.readMessage(org.apache.mesos.v1.Protos.DomainInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(domain_);
+                domain_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000080;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_MasterInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_MasterInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.MasterInfo.class, org.apache.mesos.v1.Protos.MasterInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<MasterInfo> PARSER =
+        new com.google.protobuf.AbstractParser<MasterInfo>() {
+      public MasterInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new MasterInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<MasterInfo> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string id = 1;
+    public static final int ID_FIELD_NUMBER = 1;
+    private java.lang.Object id_;
+    /**
+     * <code>required string id = 1;</code>
+     */
+    public boolean hasId() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string id = 1;</code>
+     */
+    public java.lang.String getId() {
+      java.lang.Object ref = id_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          id_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string id = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getIdBytes() {
+      java.lang.Object ref = id_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        id_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // required uint32 ip = 2;
+    public static final int IP_FIELD_NUMBER = 2;
+    private int ip_;
+    /**
+     * <code>required uint32 ip = 2;</code>
+     *
+     * <pre>
+     * The IP address (only IPv4) as a packed 4-bytes integer,
+     * stored in network order.  Deprecated, use `address.ip` instead.
+     * </pre>
+     */
+    public boolean hasIp() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>required uint32 ip = 2;</code>
+     *
+     * <pre>
+     * The IP address (only IPv4) as a packed 4-bytes integer,
+     * stored in network order.  Deprecated, use `address.ip` instead.
+     * </pre>
+     */
+    public int getIp() {
+      return ip_;
+    }
+
+    // required uint32 port = 3 [default = 5050];
+    public static final int PORT_FIELD_NUMBER = 3;
+    private int port_;
+    /**
+     * <code>required uint32 port = 3 [default = 5050];</code>
+     *
+     * <pre>
+     * The TCP port the Master is listening on for incoming
+     * HTTP requests; deprecated, use `address.port` instead.
+     * </pre>
+     */
+    public boolean hasPort() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>required uint32 port = 3 [default = 5050];</code>
+     *
+     * <pre>
+     * The TCP port the Master is listening on for incoming
+     * HTTP requests; deprecated, use `address.port` instead.
+     * </pre>
+     */
+    public int getPort() {
+      return port_;
+    }
+
+    // optional string pid = 4;
+    public static final int PID_FIELD_NUMBER = 4;
+    private java.lang.Object pid_;
+    /**
+     * <code>optional string pid = 4;</code>
+     *
+     * <pre>
+     * In the default implementation, this will contain information
+     * about both the IP address, port and Master name; it should really
+     * not be relied upon by external tooling/frameworks and be
+     * considered an "internal" implementation field.
+     * </pre>
+     */
+    public boolean hasPid() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional string pid = 4;</code>
+     *
+     * <pre>
+     * In the default implementation, this will contain information
+     * about both the IP address, port and Master name; it should really
+     * not be relied upon by external tooling/frameworks and be
+     * considered an "internal" implementation field.
+     * </pre>
+     */
+    public java.lang.String getPid() {
+      java.lang.Object ref = pid_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          pid_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string pid = 4;</code>
+     *
+     * <pre>
+     * In the default implementation, this will contain information
+     * about both the IP address, port and Master name; it should really
+     * not be relied upon by external tooling/frameworks and be
+     * considered an "internal" implementation field.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getPidBytes() {
+      java.lang.Object ref = pid_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        pid_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional string hostname = 5;
+    public static final int HOSTNAME_FIELD_NUMBER = 5;
+    private java.lang.Object hostname_;
+    /**
+     * <code>optional string hostname = 5;</code>
+     *
+     * <pre>
+     * The server's hostname, if available; it may be unreliable
+     * in environments where the DNS configuration does not resolve
+     * internal hostnames (eg, some public cloud providers).
+     * Deprecated, use `address.hostname` instead.
+     * </pre>
+     */
+    public boolean hasHostname() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional string hostname = 5;</code>
+     *
+     * <pre>
+     * The server's hostname, if available; it may be unreliable
+     * in environments where the DNS configuration does not resolve
+     * internal hostnames (eg, some public cloud providers).
+     * Deprecated, use `address.hostname` instead.
+     * </pre>
+     */
+    public java.lang.String getHostname() {
+      java.lang.Object ref = hostname_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          hostname_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string hostname = 5;</code>
+     *
+     * <pre>
+     * The server's hostname, if available; it may be unreliable
+     * in environments where the DNS configuration does not resolve
+     * internal hostnames (eg, some public cloud providers).
+     * Deprecated, use `address.hostname` instead.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getHostnameBytes() {
+      java.lang.Object ref = hostname_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        hostname_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional string version = 6;
+    public static final int VERSION_FIELD_NUMBER = 6;
+    private java.lang.Object version_;
+    /**
+     * <code>optional string version = 6;</code>
+     *
+     * <pre>
+     * The running Master version, as a string; taken from the
+     * generated "master/version.hpp".
+     * </pre>
+     */
+    public boolean hasVersion() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional string version = 6;</code>
+     *
+     * <pre>
+     * The running Master version, as a string; taken from the
+     * generated "master/version.hpp".
+     * </pre>
+     */
+    public java.lang.String getVersion() {
+      java.lang.Object ref = version_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          version_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string version = 6;</code>
+     *
+     * <pre>
+     * The running Master version, as a string; taken from the
+     * generated "master/version.hpp".
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getVersionBytes() {
+      java.lang.Object ref = version_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        version_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional .mesos.v1.Address address = 7;
+    public static final int ADDRESS_FIELD_NUMBER = 7;
+    private org.apache.mesos.v1.Protos.Address address_;
+    /**
+     * <code>optional .mesos.v1.Address address = 7;</code>
+     *
+     * <pre>
+     * The full IP address (supports both IPv4 and IPv6 formats)
+     * and supersedes the use of `ip`, `port` and `hostname`.
+     * Since Mesos 0.24.
+     * </pre>
+     */
+    public boolean hasAddress() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional .mesos.v1.Address address = 7;</code>
+     *
+     * <pre>
+     * The full IP address (supports both IPv4 and IPv6 formats)
+     * and supersedes the use of `ip`, `port` and `hostname`.
+     * Since Mesos 0.24.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.Address getAddress() {
+      return address_;
+    }
+    /**
+     * <code>optional .mesos.v1.Address address = 7;</code>
+     *
+     * <pre>
+     * The full IP address (supports both IPv4 and IPv6 formats)
+     * and supersedes the use of `ip`, `port` and `hostname`.
+     * Since Mesos 0.24.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.AddressOrBuilder getAddressOrBuilder() {
+      return address_;
+    }
+
+    // optional .mesos.v1.DomainInfo domain = 8;
+    public static final int DOMAIN_FIELD_NUMBER = 8;
+    private org.apache.mesos.v1.Protos.DomainInfo domain_;
+    /**
+     * <code>optional .mesos.v1.DomainInfo domain = 8;</code>
+     *
+     * <pre>
+     * The domain that this master belongs to. All masters in a Mesos
+     * cluster should belong to the same region.
+     * </pre>
+     */
+    public boolean hasDomain() {
+      return ((bitField0_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional .mesos.v1.DomainInfo domain = 8;</code>
+     *
+     * <pre>
+     * The domain that this master belongs to. All masters in a Mesos
+     * cluster should belong to the same region.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.DomainInfo getDomain() {
+      return domain_;
+    }
+    /**
+     * <code>optional .mesos.v1.DomainInfo domain = 8;</code>
+     *
+     * <pre>
+     * The domain that this master belongs to. All masters in a Mesos
+     * cluster should belong to the same region.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.DomainInfoOrBuilder getDomainOrBuilder() {
+      return domain_;
+    }
+
+    private void initFields() {
+      id_ = "";
+      ip_ = 0;
+      port_ = 5050;
+      pid_ = "";
+      hostname_ = "";
+      version_ = "";
+      address_ = org.apache.mesos.v1.Protos.Address.getDefaultInstance();
+      domain_ = org.apache.mesos.v1.Protos.DomainInfo.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasId()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasIp()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasPort()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (hasAddress()) {
+        if (!getAddress().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasDomain()) {
+        if (!getDomain().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getIdBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeUInt32(2, ip_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeUInt32(3, port_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeBytes(4, getPidBytes());
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeBytes(5, getHostnameBytes());
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeBytes(6, getVersionBytes());
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeMessage(7, address_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        output.writeMessage(8, domain_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getIdBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(2, ip_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(3, port_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(4, getPidBytes());
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(5, getHostnameBytes());
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(6, getVersionBytes());
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(7, address_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(8, domain_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.MasterInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.MasterInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.MasterInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.MasterInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.MasterInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.MasterInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.MasterInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.MasterInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.MasterInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.MasterInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.MasterInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.MasterInfo}
+     *
+     * <pre>
+     **
+     * Describes a master. This will probably have more fields in the
+     * future which might be used, for example, to link a framework webui
+     * to a master webui.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.MasterInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_MasterInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_MasterInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.MasterInfo.class, org.apache.mesos.v1.Protos.MasterInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.MasterInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getAddressFieldBuilder();
+          getDomainFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        id_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        ip_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        port_ = 5050;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        pid_ = "";
+        bitField0_ = (bitField0_ & ~0x00000008);
+        hostname_ = "";
+        bitField0_ = (bitField0_ & ~0x00000010);
+        version_ = "";
+        bitField0_ = (bitField0_ & ~0x00000020);
+        if (addressBuilder_ == null) {
+          address_ = org.apache.mesos.v1.Protos.Address.getDefaultInstance();
+        } else {
+          addressBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000040);
+        if (domainBuilder_ == null) {
+          domain_ = org.apache.mesos.v1.Protos.DomainInfo.getDefaultInstance();
+        } else {
+          domainBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000080);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_MasterInfo_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.MasterInfo getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.MasterInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.MasterInfo build() {
+        org.apache.mesos.v1.Protos.MasterInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.MasterInfo buildPartial() {
+        org.apache.mesos.v1.Protos.MasterInfo result = new org.apache.mesos.v1.Protos.MasterInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.id_ = id_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.ip_ = ip_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.port_ = port_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.pid_ = pid_;
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.hostname_ = hostname_;
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        result.version_ = version_;
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        if (addressBuilder_ == null) {
+          result.address_ = address_;
+        } else {
+          result.address_ = addressBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+          to_bitField0_ |= 0x00000080;
+        }
+        if (domainBuilder_ == null) {
+          result.domain_ = domain_;
+        } else {
+          result.domain_ = domainBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.MasterInfo) {
+          return mergeFrom((org.apache.mesos.v1.Protos.MasterInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.MasterInfo other) {
+        if (other == org.apache.mesos.v1.Protos.MasterInfo.getDefaultInstance()) return this;
+        if (other.hasId()) {
+          bitField0_ |= 0x00000001;
+          id_ = other.id_;
+          onChanged();
+        }
+        if (other.hasIp()) {
+          setIp(other.getIp());
+        }
+        if (other.hasPort()) {
+          setPort(other.getPort());
+        }
+        if (other.hasPid()) {
+          bitField0_ |= 0x00000008;
+          pid_ = other.pid_;
+          onChanged();
+        }
+        if (other.hasHostname()) {
+          bitField0_ |= 0x00000010;
+          hostname_ = other.hostname_;
+          onChanged();
+        }
+        if (other.hasVersion()) {
+          bitField0_ |= 0x00000020;
+          version_ = other.version_;
+          onChanged();
+        }
+        if (other.hasAddress()) {
+          mergeAddress(other.getAddress());
+        }
+        if (other.hasDomain()) {
+          mergeDomain(other.getDomain());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasId()) {
+          
+          return false;
+        }
+        if (!hasIp()) {
+          
+          return false;
+        }
+        if (!hasPort()) {
+          
+          return false;
+        }
+        if (hasAddress()) {
+          if (!getAddress().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasDomain()) {
+          if (!getDomain().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.MasterInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.MasterInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string id = 1;
+      private java.lang.Object id_ = "";
+      /**
+       * <code>required string id = 1;</code>
+       */
+      public boolean hasId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string id = 1;</code>
+       */
+      public java.lang.String getId() {
+        java.lang.Object ref = id_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          id_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string id = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getIdBytes() {
+        java.lang.Object ref = id_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          id_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string id = 1;</code>
+       */
+      public Builder setId(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        id_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string id = 1;</code>
+       */
+      public Builder clearId() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        id_ = getDefaultInstance().getId();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string id = 1;</code>
+       */
+      public Builder setIdBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        id_ = value;
+        onChanged();
+        return this;
+      }
+
+      // required uint32 ip = 2;
+      private int ip_ ;
+      /**
+       * <code>required uint32 ip = 2;</code>
+       *
+       * <pre>
+       * The IP address (only IPv4) as a packed 4-bytes integer,
+       * stored in network order.  Deprecated, use `address.ip` instead.
+       * </pre>
+       */
+      public boolean hasIp() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required uint32 ip = 2;</code>
+       *
+       * <pre>
+       * The IP address (only IPv4) as a packed 4-bytes integer,
+       * stored in network order.  Deprecated, use `address.ip` instead.
+       * </pre>
+       */
+      public int getIp() {
+        return ip_;
+      }
+      /**
+       * <code>required uint32 ip = 2;</code>
+       *
+       * <pre>
+       * The IP address (only IPv4) as a packed 4-bytes integer,
+       * stored in network order.  Deprecated, use `address.ip` instead.
+       * </pre>
+       */
+      public Builder setIp(int value) {
+        bitField0_ |= 0x00000002;
+        ip_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required uint32 ip = 2;</code>
+       *
+       * <pre>
+       * The IP address (only IPv4) as a packed 4-bytes integer,
+       * stored in network order.  Deprecated, use `address.ip` instead.
+       * </pre>
+       */
+      public Builder clearIp() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        ip_ = 0;
+        onChanged();
+        return this;
+      }
+
+      // required uint32 port = 3 [default = 5050];
+      private int port_ = 5050;
+      /**
+       * <code>required uint32 port = 3 [default = 5050];</code>
+       *
+       * <pre>
+       * The TCP port the Master is listening on for incoming
+       * HTTP requests; deprecated, use `address.port` instead.
+       * </pre>
+       */
+      public boolean hasPort() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>required uint32 port = 3 [default = 5050];</code>
+       *
+       * <pre>
+       * The TCP port the Master is listening on for incoming
+       * HTTP requests; deprecated, use `address.port` instead.
+       * </pre>
+       */
+      public int getPort() {
+        return port_;
+      }
+      /**
+       * <code>required uint32 port = 3 [default = 5050];</code>
+       *
+       * <pre>
+       * The TCP port the Master is listening on for incoming
+       * HTTP requests; deprecated, use `address.port` instead.
+       * </pre>
+       */
+      public Builder setPort(int value) {
+        bitField0_ |= 0x00000004;
+        port_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required uint32 port = 3 [default = 5050];</code>
+       *
+       * <pre>
+       * The TCP port the Master is listening on for incoming
+       * HTTP requests; deprecated, use `address.port` instead.
+       * </pre>
+       */
+      public Builder clearPort() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        port_ = 5050;
+        onChanged();
+        return this;
+      }
+
+      // optional string pid = 4;
+      private java.lang.Object pid_ = "";
+      /**
+       * <code>optional string pid = 4;</code>
+       *
+       * <pre>
+       * In the default implementation, this will contain information
+       * about both the IP address, port and Master name; it should really
+       * not be relied upon by external tooling/frameworks and be
+       * considered an "internal" implementation field.
+       * </pre>
+       */
+      public boolean hasPid() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional string pid = 4;</code>
+       *
+       * <pre>
+       * In the default implementation, this will contain information
+       * about both the IP address, port and Master name; it should really
+       * not be relied upon by external tooling/frameworks and be
+       * considered an "internal" implementation field.
+       * </pre>
+       */
+      public java.lang.String getPid() {
+        java.lang.Object ref = pid_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          pid_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string pid = 4;</code>
+       *
+       * <pre>
+       * In the default implementation, this will contain information
+       * about both the IP address, port and Master name; it should really
+       * not be relied upon by external tooling/frameworks and be
+       * considered an "internal" implementation field.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getPidBytes() {
+        java.lang.Object ref = pid_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          pid_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string pid = 4;</code>
+       *
+       * <pre>
+       * In the default implementation, this will contain information
+       * about both the IP address, port and Master name; it should really
+       * not be relied upon by external tooling/frameworks and be
+       * considered an "internal" implementation field.
+       * </pre>
+       */
+      public Builder setPid(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+        pid_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string pid = 4;</code>
+       *
+       * <pre>
+       * In the default implementation, this will contain information
+       * about both the IP address, port and Master name; it should really
+       * not be relied upon by external tooling/frameworks and be
+       * considered an "internal" implementation field.
+       * </pre>
+       */
+      public Builder clearPid() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        pid_ = getDefaultInstance().getPid();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string pid = 4;</code>
+       *
+       * <pre>
+       * In the default implementation, this will contain information
+       * about both the IP address, port and Master name; it should really
+       * not be relied upon by external tooling/frameworks and be
+       * considered an "internal" implementation field.
+       * </pre>
+       */
+      public Builder setPidBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+        pid_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional string hostname = 5;
+      private java.lang.Object hostname_ = "";
+      /**
+       * <code>optional string hostname = 5;</code>
+       *
+       * <pre>
+       * The server's hostname, if available; it may be unreliable
+       * in environments where the DNS configuration does not resolve
+       * internal hostnames (eg, some public cloud providers).
+       * Deprecated, use `address.hostname` instead.
+       * </pre>
+       */
+      public boolean hasHostname() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional string hostname = 5;</code>
+       *
+       * <pre>
+       * The server's hostname, if available; it may be unreliable
+       * in environments where the DNS configuration does not resolve
+       * internal hostnames (eg, some public cloud providers).
+       * Deprecated, use `address.hostname` instead.
+       * </pre>
+       */
+      public java.lang.String getHostname() {
+        java.lang.Object ref = hostname_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          hostname_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string hostname = 5;</code>
+       *
+       * <pre>
+       * The server's hostname, if available; it may be unreliable
+       * in environments where the DNS configuration does not resolve
+       * internal hostnames (eg, some public cloud providers).
+       * Deprecated, use `address.hostname` instead.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getHostnameBytes() {
+        java.lang.Object ref = hostname_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          hostname_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string hostname = 5;</code>
+       *
+       * <pre>
+       * The server's hostname, if available; it may be unreliable
+       * in environments where the DNS configuration does not resolve
+       * internal hostnames (eg, some public cloud providers).
+       * Deprecated, use `address.hostname` instead.
+       * </pre>
+       */
+      public Builder setHostname(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000010;
+        hostname_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string hostname = 5;</code>
+       *
+       * <pre>
+       * The server's hostname, if available; it may be unreliable
+       * in environments where the DNS configuration does not resolve
+       * internal hostnames (eg, some public cloud providers).
+       * Deprecated, use `address.hostname` instead.
+       * </pre>
+       */
+      public Builder clearHostname() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        hostname_ = getDefaultInstance().getHostname();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string hostname = 5;</code>
+       *
+       * <pre>
+       * The server's hostname, if available; it may be unreliable
+       * in environments where the DNS configuration does not resolve
+       * internal hostnames (eg, some public cloud providers).
+       * Deprecated, use `address.hostname` instead.
+       * </pre>
+       */
+      public Builder setHostnameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000010;
+        hostname_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional string version = 6;
+      private java.lang.Object version_ = "";
+      /**
+       * <code>optional string version = 6;</code>
+       *
+       * <pre>
+       * The running Master version, as a string; taken from the
+       * generated "master/version.hpp".
+       * </pre>
+       */
+      public boolean hasVersion() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional string version = 6;</code>
+       *
+       * <pre>
+       * The running Master version, as a string; taken from the
+       * generated "master/version.hpp".
+       * </pre>
+       */
+      public java.lang.String getVersion() {
+        java.lang.Object ref = version_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          version_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string version = 6;</code>
+       *
+       * <pre>
+       * The running Master version, as a string; taken from the
+       * generated "master/version.hpp".
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getVersionBytes() {
+        java.lang.Object ref = version_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          version_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string version = 6;</code>
+       *
+       * <pre>
+       * The running Master version, as a string; taken from the
+       * generated "master/version.hpp".
+       * </pre>
+       */
+      public Builder setVersion(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000020;
+        version_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string version = 6;</code>
+       *
+       * <pre>
+       * The running Master version, as a string; taken from the
+       * generated "master/version.hpp".
+       * </pre>
+       */
+      public Builder clearVersion() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        version_ = getDefaultInstance().getVersion();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string version = 6;</code>
+       *
+       * <pre>
+       * The running Master version, as a string; taken from the
+       * generated "master/version.hpp".
+       * </pre>
+       */
+      public Builder setVersionBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000020;
+        version_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.v1.Address address = 7;
+      private org.apache.mesos.v1.Protos.Address address_ = org.apache.mesos.v1.Protos.Address.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Address, org.apache.mesos.v1.Protos.Address.Builder, org.apache.mesos.v1.Protos.AddressOrBuilder> addressBuilder_;
+      /**
+       * <code>optional .mesos.v1.Address address = 7;</code>
+       *
+       * <pre>
+       * The full IP address (supports both IPv4 and IPv6 formats)
+       * and supersedes the use of `ip`, `port` and `hostname`.
+       * Since Mesos 0.24.
+       * </pre>
+       */
+      public boolean hasAddress() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional .mesos.v1.Address address = 7;</code>
+       *
+       * <pre>
+       * The full IP address (supports both IPv4 and IPv6 formats)
+       * and supersedes the use of `ip`, `port` and `hostname`.
+       * Since Mesos 0.24.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Address getAddress() {
+        if (addressBuilder_ == null) {
+          return address_;
+        } else {
+          return addressBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Address address = 7;</code>
+       *
+       * <pre>
+       * The full IP address (supports both IPv4 and IPv6 formats)
+       * and supersedes the use of `ip`, `port` and `hostname`.
+       * Since Mesos 0.24.
+       * </pre>
+       */
+      public Builder setAddress(org.apache.mesos.v1.Protos.Address value) {
+        if (addressBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          address_ = value;
+          onChanged();
+        } else {
+          addressBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Address address = 7;</code>
+       *
+       * <pre>
+       * The full IP address (supports both IPv4 and IPv6 formats)
+       * and supersedes the use of `ip`, `port` and `hostname`.
+       * Since Mesos 0.24.
+       * </pre>
+       */
+      public Builder setAddress(
+          org.apache.mesos.v1.Protos.Address.Builder builderForValue) {
+        if (addressBuilder_ == null) {
+          address_ = builderForValue.build();
+          onChanged();
+        } else {
+          addressBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Address address = 7;</code>
+       *
+       * <pre>
+       * The full IP address (supports both IPv4 and IPv6 formats)
+       * and supersedes the use of `ip`, `port` and `hostname`.
+       * Since Mesos 0.24.
+       * </pre>
+       */
+      public Builder mergeAddress(org.apache.mesos.v1.Protos.Address value) {
+        if (addressBuilder_ == null) {
+          if (((bitField0_ & 0x00000040) == 0x00000040) &&
+              address_ != org.apache.mesos.v1.Protos.Address.getDefaultInstance()) {
+            address_ =
+              org.apache.mesos.v1.Protos.Address.newBuilder(address_).mergeFrom(value).buildPartial();
+          } else {
+            address_ = value;
+          }
+          onChanged();
+        } else {
+          addressBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Address address = 7;</code>
+       *
+       * <pre>
+       * The full IP address (supports both IPv4 and IPv6 formats)
+       * and supersedes the use of `ip`, `port` and `hostname`.
+       * Since Mesos 0.24.
+       * </pre>
+       */
+      public Builder clearAddress() {
+        if (addressBuilder_ == null) {
+          address_ = org.apache.mesos.v1.Protos.Address.getDefaultInstance();
+          onChanged();
+        } else {
+          addressBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000040);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Address address = 7;</code>
+       *
+       * <pre>
+       * The full IP address (supports both IPv4 and IPv6 formats)
+       * and supersedes the use of `ip`, `port` and `hostname`.
+       * Since Mesos 0.24.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Address.Builder getAddressBuilder() {
+        bitField0_ |= 0x00000040;
+        onChanged();
+        return getAddressFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.Address address = 7;</code>
+       *
+       * <pre>
+       * The full IP address (supports both IPv4 and IPv6 formats)
+       * and supersedes the use of `ip`, `port` and `hostname`.
+       * Since Mesos 0.24.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.AddressOrBuilder getAddressOrBuilder() {
+        if (addressBuilder_ != null) {
+          return addressBuilder_.getMessageOrBuilder();
+        } else {
+          return address_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Address address = 7;</code>
+       *
+       * <pre>
+       * The full IP address (supports both IPv4 and IPv6 formats)
+       * and supersedes the use of `ip`, `port` and `hostname`.
+       * Since Mesos 0.24.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Address, org.apache.mesos.v1.Protos.Address.Builder, org.apache.mesos.v1.Protos.AddressOrBuilder> 
+          getAddressFieldBuilder() {
+        if (addressBuilder_ == null) {
+          addressBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Address, org.apache.mesos.v1.Protos.Address.Builder, org.apache.mesos.v1.Protos.AddressOrBuilder>(
+                  address_,
+                  getParentForChildren(),
+                  isClean());
+          address_ = null;
+        }
+        return addressBuilder_;
+      }
+
+      // optional .mesos.v1.DomainInfo domain = 8;
+      private org.apache.mesos.v1.Protos.DomainInfo domain_ = org.apache.mesos.v1.Protos.DomainInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.DomainInfo, org.apache.mesos.v1.Protos.DomainInfo.Builder, org.apache.mesos.v1.Protos.DomainInfoOrBuilder> domainBuilder_;
+      /**
+       * <code>optional .mesos.v1.DomainInfo domain = 8;</code>
+       *
+       * <pre>
+       * The domain that this master belongs to. All masters in a Mesos
+       * cluster should belong to the same region.
+       * </pre>
+       */
+      public boolean hasDomain() {
+        return ((bitField0_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional .mesos.v1.DomainInfo domain = 8;</code>
+       *
+       * <pre>
+       * The domain that this master belongs to. All masters in a Mesos
+       * cluster should belong to the same region.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.DomainInfo getDomain() {
+        if (domainBuilder_ == null) {
+          return domain_;
+        } else {
+          return domainBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.DomainInfo domain = 8;</code>
+       *
+       * <pre>
+       * The domain that this master belongs to. All masters in a Mesos
+       * cluster should belong to the same region.
+       * </pre>
+       */
+      public Builder setDomain(org.apache.mesos.v1.Protos.DomainInfo value) {
+        if (domainBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          domain_ = value;
+          onChanged();
+        } else {
+          domainBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.DomainInfo domain = 8;</code>
+       *
+       * <pre>
+       * The domain that this master belongs to. All masters in a Mesos
+       * cluster should belong to the same region.
+       * </pre>
+       */
+      public Builder setDomain(
+          org.apache.mesos.v1.Protos.DomainInfo.Builder builderForValue) {
+        if (domainBuilder_ == null) {
+          domain_ = builderForValue.build();
+          onChanged();
+        } else {
+          domainBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.DomainInfo domain = 8;</code>
+       *
+       * <pre>
+       * The domain that this master belongs to. All masters in a Mesos
+       * cluster should belong to the same region.
+       * </pre>
+       */
+      public Builder mergeDomain(org.apache.mesos.v1.Protos.DomainInfo value) {
+        if (domainBuilder_ == null) {
+          if (((bitField0_ & 0x00000080) == 0x00000080) &&
+              domain_ != org.apache.mesos.v1.Protos.DomainInfo.getDefaultInstance()) {
+            domain_ =
+              org.apache.mesos.v1.Protos.DomainInfo.newBuilder(domain_).mergeFrom(value).buildPartial();
+          } else {
+            domain_ = value;
+          }
+          onChanged();
+        } else {
+          domainBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.DomainInfo domain = 8;</code>
+       *
+       * <pre>
+       * The domain that this master belongs to. All masters in a Mesos
+       * cluster should belong to the same region.
+       * </pre>
+       */
+      public Builder clearDomain() {
+        if (domainBuilder_ == null) {
+          domain_ = org.apache.mesos.v1.Protos.DomainInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          domainBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000080);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.DomainInfo domain = 8;</code>
+       *
+       * <pre>
+       * The domain that this master belongs to. All masters in a Mesos
+       * cluster should belong to the same region.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.DomainInfo.Builder getDomainBuilder() {
+        bitField0_ |= 0x00000080;
+        onChanged();
+        return getDomainFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.DomainInfo domain = 8;</code>
+       *
+       * <pre>
+       * The domain that this master belongs to. All masters in a Mesos
+       * cluster should belong to the same region.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.DomainInfoOrBuilder getDomainOrBuilder() {
+        if (domainBuilder_ != null) {
+          return domainBuilder_.getMessageOrBuilder();
+        } else {
+          return domain_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.DomainInfo domain = 8;</code>
+       *
+       * <pre>
+       * The domain that this master belongs to. All masters in a Mesos
+       * cluster should belong to the same region.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.DomainInfo, org.apache.mesos.v1.Protos.DomainInfo.Builder, org.apache.mesos.v1.Protos.DomainInfoOrBuilder> 
+          getDomainFieldBuilder() {
+        if (domainBuilder_ == null) {
+          domainBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.DomainInfo, org.apache.mesos.v1.Protos.DomainInfo.Builder, org.apache.mesos.v1.Protos.DomainInfoOrBuilder>(
+                  domain_,
+                  getParentForChildren(),
+                  isClean());
+          domain_ = null;
+        }
+        return domainBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.MasterInfo)
+    }
+
+    static {
+      defaultInstance = new MasterInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.MasterInfo)
+  }
+
+  public interface AgentInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string hostname = 1;
+    /**
+     * <code>required string hostname = 1;</code>
+     */
+    boolean hasHostname();
+    /**
+     * <code>required string hostname = 1;</code>
+     */
+    java.lang.String getHostname();
+    /**
+     * <code>required string hostname = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getHostnameBytes();
+
+    // optional int32 port = 8 [default = 5051];
+    /**
+     * <code>optional int32 port = 8 [default = 5051];</code>
+     */
+    boolean hasPort();
+    /**
+     * <code>optional int32 port = 8 [default = 5051];</code>
+     */
+    int getPort();
+
+    // repeated .mesos.v1.Resource resources = 3;
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 3;</code>
+     *
+     * <pre>
+     * The configured resources at the agent. This does not include any
+     * dynamic reservations or persistent volumes that may currently
+     * exist at the agent.
+     * </pre>
+     */
+    java.util.List<org.apache.mesos.v1.Protos.Resource> 
+        getResourcesList();
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 3;</code>
+     *
+     * <pre>
+     * The configured resources at the agent. This does not include any
+     * dynamic reservations or persistent volumes that may currently
+     * exist at the agent.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.Resource getResources(int index);
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 3;</code>
+     *
+     * <pre>
+     * The configured resources at the agent. This does not include any
+     * dynamic reservations or persistent volumes that may currently
+     * exist at the agent.
+     * </pre>
+     */
+    int getResourcesCount();
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 3;</code>
+     *
+     * <pre>
+     * The configured resources at the agent. This does not include any
+     * dynamic reservations or persistent volumes that may currently
+     * exist at the agent.
+     * </pre>
+     */
+    java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+        getResourcesOrBuilderList();
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 3;</code>
+     *
+     * <pre>
+     * The configured resources at the agent. This does not include any
+     * dynamic reservations or persistent volumes that may currently
+     * exist at the agent.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.ResourceOrBuilder getResourcesOrBuilder(
+        int index);
+
+    // repeated .mesos.v1.Attribute attributes = 5;
+    /**
+     * <code>repeated .mesos.v1.Attribute attributes = 5;</code>
+     */
+    java.util.List<org.apache.mesos.v1.Protos.Attribute> 
+        getAttributesList();
+    /**
+     * <code>repeated .mesos.v1.Attribute attributes = 5;</code>
+     */
+    org.apache.mesos.v1.Protos.Attribute getAttributes(int index);
+    /**
+     * <code>repeated .mesos.v1.Attribute attributes = 5;</code>
+     */
+    int getAttributesCount();
+    /**
+     * <code>repeated .mesos.v1.Attribute attributes = 5;</code>
+     */
+    java.util.List<? extends org.apache.mesos.v1.Protos.AttributeOrBuilder> 
+        getAttributesOrBuilderList();
+    /**
+     * <code>repeated .mesos.v1.Attribute attributes = 5;</code>
+     */
+    org.apache.mesos.v1.Protos.AttributeOrBuilder getAttributesOrBuilder(
+        int index);
+
+    // optional .mesos.v1.AgentID id = 6;
+    /**
+     * <code>optional .mesos.v1.AgentID id = 6;</code>
+     */
+    boolean hasId();
+    /**
+     * <code>optional .mesos.v1.AgentID id = 6;</code>
+     */
+    org.apache.mesos.v1.Protos.AgentID getId();
+    /**
+     * <code>optional .mesos.v1.AgentID id = 6;</code>
+     */
+    org.apache.mesos.v1.Protos.AgentIDOrBuilder getIdOrBuilder();
+
+    // optional .mesos.v1.DomainInfo domain = 10;
+    /**
+     * <code>optional .mesos.v1.DomainInfo domain = 10;</code>
+     *
+     * <pre>
+     * The domain that this agent belongs to. If the agent's region
+     * differs from the master's region, it will not appear in resource
+     * offers to frameworks that have not enabled the REGION_AWARE
+     * capability.
+     * </pre>
+     */
+    boolean hasDomain();
+    /**
+     * <code>optional .mesos.v1.DomainInfo domain = 10;</code>
+     *
+     * <pre>
+     * The domain that this agent belongs to. If the agent's region
+     * differs from the master's region, it will not appear in resource
+     * offers to frameworks that have not enabled the REGION_AWARE
+     * capability.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.DomainInfo getDomain();
+    /**
+     * <code>optional .mesos.v1.DomainInfo domain = 10;</code>
+     *
+     * <pre>
+     * The domain that this agent belongs to. If the agent's region
+     * differs from the master's region, it will not appear in resource
+     * offers to frameworks that have not enabled the REGION_AWARE
+     * capability.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.DomainInfoOrBuilder getDomainOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.AgentInfo}
+   *
+   * <pre>
+   **
+   * Describes an agent. Note that the 'id' field is only available
+   * after an agent is registered with the master, and is made available
+   * here to facilitate re-registration.
+   * </pre>
+   */
+  public static final class AgentInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements AgentInfoOrBuilder {
+    // Use AgentInfo.newBuilder() to construct.
+    private AgentInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private AgentInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final AgentInfo defaultInstance;
+    public static AgentInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public AgentInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private AgentInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              hostname_ = input.readBytes();
+              break;
+            }
+            case 26: {
+              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
+                resources_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Resource>();
+                mutable_bitField0_ |= 0x00000004;
+              }
+              resources_.add(input.readMessage(org.apache.mesos.v1.Protos.Resource.PARSER, extensionRegistry));
+              break;
+            }
+            case 42: {
+              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
+                attributes_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Attribute>();
+                mutable_bitField0_ |= 0x00000008;
+              }
+              attributes_.add(input.readMessage(org.apache.mesos.v1.Protos.Attribute.PARSER, extensionRegistry));
+              break;
+            }
+            case 50: {
+              org.apache.mesos.v1.Protos.AgentID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                subBuilder = id_.toBuilder();
+              }
+              id_ = input.readMessage(org.apache.mesos.v1.Protos.AgentID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(id_);
+                id_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000004;
+              break;
+            }
+            case 64: {
+              bitField0_ |= 0x00000002;
+              port_ = input.readInt32();
+              break;
+            }
+            case 82: {
+              org.apache.mesos.v1.Protos.DomainInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                subBuilder = domain_.toBuilder();
+              }
+              domain_ = input.readMessage(org.apache.mesos.v1.Protos.DomainInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(domain_);
+                domain_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000008;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
+          resources_ = java.util.Collections.unmodifiableList(resources_);
+        }
+        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
+          attributes_ = java.util.Collections.unmodifiableList(attributes_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_AgentInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_AgentInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.AgentInfo.class, org.apache.mesos.v1.Protos.AgentInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<AgentInfo> PARSER =
+        new com.google.protobuf.AbstractParser<AgentInfo>() {
+      public AgentInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new AgentInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<AgentInfo> getParserForType() {
+      return PARSER;
+    }
+
+    public interface CapabilityOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // optional .mesos.v1.AgentInfo.Capability.Type type = 1;
+      /**
+       * <code>optional .mesos.v1.AgentInfo.Capability.Type type = 1;</code>
+       *
+       * <pre>
+       * Enum fields should be optional, see: MESOS-4997.
+       * </pre>
+       */
+      boolean hasType();
+      /**
+       * <code>optional .mesos.v1.AgentInfo.Capability.Type type = 1;</code>
+       *
+       * <pre>
+       * Enum fields should be optional, see: MESOS-4997.
+       * </pre>
+       */
+      org.apache.mesos.v1.Protos.AgentInfo.Capability.Type getType();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.AgentInfo.Capability}
+     */
+    public static final class Capability extends
+        com.google.protobuf.GeneratedMessage
+        implements CapabilityOrBuilder {
+      // Use Capability.newBuilder() to construct.
+      private Capability(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Capability(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Capability defaultInstance;
+      public static Capability getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Capability getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Capability(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 8: {
+                int rawValue = input.readEnum();
+                org.apache.mesos.v1.Protos.AgentInfo.Capability.Type value = org.apache.mesos.v1.Protos.AgentInfo.Capability.Type.valueOf(rawValue);
+                if (value == null) {
+                  unknownFields.mergeVarintField(1, rawValue);
+                } else {
+                  bitField0_ |= 0x00000001;
+                  type_ = value;
+                }
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_AgentInfo_Capability_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_AgentInfo_Capability_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.AgentInfo.Capability.class, org.apache.mesos.v1.Protos.AgentInfo.Capability.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Capability> PARSER =
+          new com.google.protobuf.AbstractParser<Capability>() {
+        public Capability parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Capability(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Capability> getParserForType() {
+        return PARSER;
+      }
+
+      /**
+       * Protobuf enum {@code mesos.v1.AgentInfo.Capability.Type}
+       */
+      public enum Type
+          implements com.google.protobuf.ProtocolMessageEnum {
+        /**
+         * <code>UNKNOWN = 0;</code>
+         *
+         * <pre>
+         * This must be the first enum value in this list, to
+         * ensure that if 'type' is not set, the default value
+         * is UNKNOWN. This enables enum values to be added
+         * in a backwards-compatible way. See: MESOS-4997.
+         * </pre>
+         */
+        UNKNOWN(0, 0),
+        /**
+         * <code>MULTI_ROLE = 1;</code>
+         *
+         * <pre>
+         * This expresses the ability for the agent to be able
+         * to launch tasks of a 'multi-role' framework.
+         * </pre>
+         */
+        MULTI_ROLE(1, 1),
+        /**
+         * <code>HIERARCHICAL_ROLE = 2;</code>
+         *
+         * <pre>
+         * This expresses the ability for the agent to be able to launch
+         * tasks, reserve resources, and create volumes using resources
+         * allocated to a 'hierarchical-role'.
+         * NOTE: This capability is required specifically for creating
+         * volumes because a hierchical role includes '/' (slashes) in them.
+         * Agents with this capability know to transform the '/' (slashes)
+         * into ' ' (spaces).
+         * </pre>
+         */
+        HIERARCHICAL_ROLE(2, 2),
+        /**
+         * <code>RESERVATION_REFINEMENT = 3;</code>
+         *
+         * <pre>
+         * This capability has three effects for an agent.
+         *
+         * (1) The format of the checkpointed resources, and
+         *     the resources reported to master.
+         *
+         *     These resources are reported in the "pre-reservation-refinement"
+         *     format if none of the resources have refined reservations. If any
+         *     of the resources have refined reservations, they are reported in
+         *     the "post-reservation-refinement" format. The purpose is to allow
+         *     downgrading of an agent as well as communication with a pre-1.4.0
+         *     master until the reservation refinement feature is actually used.
+         *
+         *     See the 'Resource Format' section for more details.
+         *
+         * (2) The format of the resources reported by the HTTP endpoints.
+         *
+         *     For resources reported by agent endpoints, the
+         *     "pre-reservation-refinement" format is "injected" if possible.
+         *     That is, resources without refined reservations will have the
+         *     `Resource.role` and `Resource.reservation` set, whereas
+         *     resources with refined reservations will not.
+         *
+         *     See the 'Resource Format' section for more details.
+         *
+         * (3) The ability for the agent to launch tasks, reserve resources, and
+         *     create volumes using resources that have refined reservations.
+         *
+         *     See `ReservationInfo.reservations` section for more details.
+         *
+         * NOTE: Resources are said to have refined reservations if it uses the
+         * `Resource.reservations` field, and `Resource.reservations_size() &gt; 1`.
+         * </pre>
+         */
+        RESERVATION_REFINEMENT(3, 3),
+        ;
+
+        /**
+         * <code>UNKNOWN = 0;</code>
+         *
+         * <pre>
+         * This must be the first enum value in this list, to
+         * ensure that if 'type' is not set, the default value
+         * is UNKNOWN. This enables enum values to be added
+         * in a backwards-compatible way. See: MESOS-4997.
+         * </pre>
+         */
+        public static final int UNKNOWN_VALUE = 0;
+        /**
+         * <code>MULTI_ROLE = 1;</code>
+         *
+         * <pre>
+         * This expresses the ability for the agent to be able
+         * to launch tasks of a 'multi-role' framework.
+         * </pre>
+         */
+        public static final int MULTI_ROLE_VALUE = 1;
+        /**
+         * <code>HIERARCHICAL_ROLE = 2;</code>
+         *
+         * <pre>
+         * This expresses the ability for the agent to be able to launch
+         * tasks, reserve resources, and create volumes using resources
+         * allocated to a 'hierarchical-role'.
+         * NOTE: This capability is required specifically for creating
+         * volumes because a hierchical role includes '/' (slashes) in them.
+         * Agents with this capability know to transform the '/' (slashes)
+         * into ' ' (spaces).
+         * </pre>
+         */
+        public static final int HIERARCHICAL_ROLE_VALUE = 2;
+        /**
+         * <code>RESERVATION_REFINEMENT = 3;</code>
+         *
+         * <pre>
+         * This capability has three effects for an agent.
+         *
+         * (1) The format of the checkpointed resources, and
+         *     the resources reported to master.
+         *
+         *     These resources are reported in the "pre-reservation-refinement"
+         *     format if none of the resources have refined reservations. If any
+         *     of the resources have refined reservations, they are reported in
+         *     the "post-reservation-refinement" format. The purpose is to allow
+         *     downgrading of an agent as well as communication with a pre-1.4.0
+         *     master until the reservation refinement feature is actually used.
+         *
+         *     See the 'Resource Format' section for more details.
+         *
+         * (2) The format of the resources reported by the HTTP endpoints.
+         *
+         *     For resources reported by agent endpoints, the
+         *     "pre-reservation-refinement" format is "injected" if possible.
+         *     That is, resources without refined reservations will have the
+         *     `Resource.role` and `Resource.reservation` set, whereas
+         *     resources with refined reservations will not.
+         *
+         *     See the 'Resource Format' section for more details.
+         *
+         * (3) The ability for the agent to launch tasks, reserve resources, and
+         *     create volumes using resources that have refined reservations.
+         *
+         *     See `ReservationInfo.reservations` section for more details.
+         *
+         * NOTE: Resources are said to have refined reservations if it uses the
+         * `Resource.reservations` field, and `Resource.reservations_size() &gt; 1`.
+         * </pre>
+         */
+        public static final int RESERVATION_REFINEMENT_VALUE = 3;
+
+
+        public final int getNumber() { return value; }
+
+        public static Type valueOf(int value) {
+          switch (value) {
+            case 0: return UNKNOWN;
+            case 1: return MULTI_ROLE;
+            case 2: return HIERARCHICAL_ROLE;
+            case 3: return RESERVATION_REFINEMENT;
+            default: return null;
+          }
+        }
+
+        public static com.google.protobuf.Internal.EnumLiteMap<Type>
+            internalGetValueMap() {
+          return internalValueMap;
+        }
+        private static com.google.protobuf.Internal.EnumLiteMap<Type>
+            internalValueMap =
+              new com.google.protobuf.Internal.EnumLiteMap<Type>() {
+                public Type findValueByNumber(int number) {
+                  return Type.valueOf(number);
+                }
+              };
+
+        public final com.google.protobuf.Descriptors.EnumValueDescriptor
+            getValueDescriptor() {
+          return getDescriptor().getValues().get(index);
+        }
+        public final com.google.protobuf.Descriptors.EnumDescriptor
+            getDescriptorForType() {
+          return getDescriptor();
+        }
+        public static final com.google.protobuf.Descriptors.EnumDescriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.AgentInfo.Capability.getDescriptor().getEnumTypes().get(0);
+        }
+
+        private static final Type[] VALUES = values();
+
+        public static Type valueOf(
+            com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+          if (desc.getType() != getDescriptor()) {
+            throw new java.lang.IllegalArgumentException(
+              "EnumValueDescriptor is not for this type.");
+          }
+          return VALUES[desc.getIndex()];
+        }
+
+        private final int index;
+        private final int value;
+
+        private Type(int index, int value) {
+          this.index = index;
+          this.value = value;
+        }
+
+        // @@protoc_insertion_point(enum_scope:mesos.v1.AgentInfo.Capability.Type)
+      }
+
+      private int bitField0_;
+      // optional .mesos.v1.AgentInfo.Capability.Type type = 1;
+      public static final int TYPE_FIELD_NUMBER = 1;
+      private org.apache.mesos.v1.Protos.AgentInfo.Capability.Type type_;
+      /**
+       * <code>optional .mesos.v1.AgentInfo.Capability.Type type = 1;</code>
+       *
+       * <pre>
+       * Enum fields should be optional, see: MESOS-4997.
+       * </pre>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.v1.AgentInfo.Capability.Type type = 1;</code>
+       *
+       * <pre>
+       * Enum fields should be optional, see: MESOS-4997.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.AgentInfo.Capability.Type getType() {
+        return type_;
+      }
+
+      private void initFields() {
+        type_ = org.apache.mesos.v1.Protos.AgentInfo.Capability.Type.UNKNOWN;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeEnum(1, type_.getNumber());
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeEnumSize(1, type_.getNumber());
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.Protos.AgentInfo.Capability parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.AgentInfo.Capability parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.AgentInfo.Capability parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.AgentInfo.Capability parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.AgentInfo.Capability parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.AgentInfo.Capability parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.AgentInfo.Capability parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.AgentInfo.Capability parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.AgentInfo.Capability parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.AgentInfo.Capability parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.Protos.AgentInfo.Capability prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.AgentInfo.Capability}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.Protos.AgentInfo.CapabilityOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_AgentInfo_Capability_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_AgentInfo_Capability_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.AgentInfo.Capability.class, org.apache.mesos.v1.Protos.AgentInfo.Capability.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.Protos.AgentInfo.Capability.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          type_ = org.apache.mesos.v1.Protos.AgentInfo.Capability.Type.UNKNOWN;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_AgentInfo_Capability_descriptor;
+        }
+
+        public org.apache.mesos.v1.Protos.AgentInfo.Capability getDefaultInstanceForType() {
+          return org.apache.mesos.v1.Protos.AgentInfo.Capability.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.Protos.AgentInfo.Capability build() {
+          org.apache.mesos.v1.Protos.AgentInfo.Capability result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.Protos.AgentInfo.Capability buildPartial() {
+          org.apache.mesos.v1.Protos.AgentInfo.Capability result = new org.apache.mesos.v1.Protos.AgentInfo.Capability(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.type_ = type_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.Protos.AgentInfo.Capability) {
+            return mergeFrom((org.apache.mesos.v1.Protos.AgentInfo.Capability)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.Protos.AgentInfo.Capability other) {
+          if (other == org.apache.mesos.v1.Protos.AgentInfo.Capability.getDefaultInstance()) return this;
+          if (other.hasType()) {
+            setType(other.getType());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.Protos.AgentInfo.Capability parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.Protos.AgentInfo.Capability) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // optional .mesos.v1.AgentInfo.Capability.Type type = 1;
+        private org.apache.mesos.v1.Protos.AgentInfo.Capability.Type type_ = org.apache.mesos.v1.Protos.AgentInfo.Capability.Type.UNKNOWN;
+        /**
+         * <code>optional .mesos.v1.AgentInfo.Capability.Type type = 1;</code>
+         *
+         * <pre>
+         * Enum fields should be optional, see: MESOS-4997.
+         * </pre>
+         */
+        public boolean hasType() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional .mesos.v1.AgentInfo.Capability.Type type = 1;</code>
+         *
+         * <pre>
+         * Enum fields should be optional, see: MESOS-4997.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.AgentInfo.Capability.Type getType() {
+          return type_;
+        }
+        /**
+         * <code>optional .mesos.v1.AgentInfo.Capability.Type type = 1;</code>
+         *
+         * <pre>
+         * Enum fields should be optional, see: MESOS-4997.
+         * </pre>
+         */
+        public Builder setType(org.apache.mesos.v1.Protos.AgentInfo.Capability.Type value) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          bitField0_ |= 0x00000001;
+          type_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.AgentInfo.Capability.Type type = 1;</code>
+         *
+         * <pre>
+         * Enum fields should be optional, see: MESOS-4997.
+         * </pre>
+         */
+        public Builder clearType() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          type_ = org.apache.mesos.v1.Protos.AgentInfo.Capability.Type.UNKNOWN;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.AgentInfo.Capability)
+      }
+
+      static {
+        defaultInstance = new Capability(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.AgentInfo.Capability)
+    }
+
+    private int bitField0_;
+    // required string hostname = 1;
+    public static final int HOSTNAME_FIELD_NUMBER = 1;
+    private java.lang.Object hostname_;
+    /**
+     * <code>required string hostname = 1;</code>
+     */
+    public boolean hasHostname() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string hostname = 1;</code>
+     */
+    public java.lang.String getHostname() {
+      java.lang.Object ref = hostname_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          hostname_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string hostname = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getHostnameBytes() {
+      java.lang.Object ref = hostname_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        hostname_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional int32 port = 8 [default = 5051];
+    public static final int PORT_FIELD_NUMBER = 8;
+    private int port_;
+    /**
+     * <code>optional int32 port = 8 [default = 5051];</code>
+     */
+    public boolean hasPort() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional int32 port = 8 [default = 5051];</code>
+     */
+    public int getPort() {
+      return port_;
+    }
+
+    // repeated .mesos.v1.Resource resources = 3;
+    public static final int RESOURCES_FIELD_NUMBER = 3;
+    private java.util.List<org.apache.mesos.v1.Protos.Resource> resources_;
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 3;</code>
+     *
+     * <pre>
+     * The configured resources at the agent. This does not include any
+     * dynamic reservations or persistent volumes that may currently
+     * exist at the agent.
+     * </pre>
+     */
+    public java.util.List<org.apache.mesos.v1.Protos.Resource> getResourcesList() {
+      return resources_;
+    }
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 3;</code>
+     *
+     * <pre>
+     * The configured resources at the agent. This does not include any
+     * dynamic reservations or persistent volumes that may currently
+     * exist at the agent.
+     * </pre>
+     */
+    public java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+        getResourcesOrBuilderList() {
+      return resources_;
+    }
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 3;</code>
+     *
+     * <pre>
+     * The configured resources at the agent. This does not include any
+     * dynamic reservations or persistent volumes that may currently
+     * exist at the agent.
+     * </pre>
+     */
+    public int getResourcesCount() {
+      return resources_.size();
+    }
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 3;</code>
+     *
+     * <pre>
+     * The configured resources at the agent. This does not include any
+     * dynamic reservations or persistent volumes that may currently
+     * exist at the agent.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.Resource getResources(int index) {
+      return resources_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 3;</code>
+     *
+     * <pre>
+     * The configured resources at the agent. This does not include any
+     * dynamic reservations or persistent volumes that may currently
+     * exist at the agent.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.ResourceOrBuilder getResourcesOrBuilder(
+        int index) {
+      return resources_.get(index);
+    }
+
+    // repeated .mesos.v1.Attribute attributes = 5;
+    public static final int ATTRIBUTES_FIELD_NUMBER = 5;
+    private java.util.List<org.apache.mesos.v1.Protos.Attribute> attributes_;
+    /**
+     * <code>repeated .mesos.v1.Attribute attributes = 5;</code>
+     */
+    public java.util.List<org.apache.mesos.v1.Protos.Attribute> getAttributesList() {
+      return attributes_;
+    }
+    /**
+     * <code>repeated .mesos.v1.Attribute attributes = 5;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.v1.Protos.AttributeOrBuilder> 
+        getAttributesOrBuilderList() {
+      return attributes_;
+    }
+    /**
+     * <code>repeated .mesos.v1.Attribute attributes = 5;</code>
+     */
+    public int getAttributesCount() {
+      return attributes_.size();
+    }
+    /**
+     * <code>repeated .mesos.v1.Attribute attributes = 5;</code>
+     */
+    public org.apache.mesos.v1.Protos.Attribute getAttributes(int index) {
+      return attributes_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.v1.Attribute attributes = 5;</code>
+     */
+    public org.apache.mesos.v1.Protos.AttributeOrBuilder getAttributesOrBuilder(
+        int index) {
+      return attributes_.get(index);
+    }
+
+    // optional .mesos.v1.AgentID id = 6;
+    public static final int ID_FIELD_NUMBER = 6;
+    private org.apache.mesos.v1.Protos.AgentID id_;
+    /**
+     * <code>optional .mesos.v1.AgentID id = 6;</code>
+     */
+    public boolean hasId() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional .mesos.v1.AgentID id = 6;</code>
+     */
+    public org.apache.mesos.v1.Protos.AgentID getId() {
+      return id_;
+    }
+    /**
+     * <code>optional .mesos.v1.AgentID id = 6;</code>
+     */
+    public org.apache.mesos.v1.Protos.AgentIDOrBuilder getIdOrBuilder() {
+      return id_;
+    }
+
+    // optional .mesos.v1.DomainInfo domain = 10;
+    public static final int DOMAIN_FIELD_NUMBER = 10;
+    private org.apache.mesos.v1.Protos.DomainInfo domain_;
+    /**
+     * <code>optional .mesos.v1.DomainInfo domain = 10;</code>
+     *
+     * <pre>
+     * The domain that this agent belongs to. If the agent's region
+     * differs from the master's region, it will not appear in resource
+     * offers to frameworks that have not enabled the REGION_AWARE
+     * capability.
+     * </pre>
+     */
+    public boolean hasDomain() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional .mesos.v1.DomainInfo domain = 10;</code>
+     *
+     * <pre>
+     * The domain that this agent belongs to. If the agent's region
+     * differs from the master's region, it will not appear in resource
+     * offers to frameworks that have not enabled the REGION_AWARE
+     * capability.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.DomainInfo getDomain() {
+      return domain_;
+    }
+    /**
+     * <code>optional .mesos.v1.DomainInfo domain = 10;</code>
+     *
+     * <pre>
+     * The domain that this agent belongs to. If the agent's region
+     * differs from the master's region, it will not appear in resource
+     * offers to frameworks that have not enabled the REGION_AWARE
+     * capability.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.DomainInfoOrBuilder getDomainOrBuilder() {
+      return domain_;
+    }
+
+    private void initFields() {
+      hostname_ = "";
+      port_ = 5051;
+      resources_ = java.util.Collections.emptyList();
+      attributes_ = java.util.Collections.emptyList();
+      id_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+      domain_ = org.apache.mesos.v1.Protos.DomainInfo.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasHostname()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      for (int i = 0; i < getResourcesCount(); i++) {
+        if (!getResources(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      for (int i = 0; i < getAttributesCount(); i++) {
+        if (!getAttributes(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasId()) {
+        if (!getId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasDomain()) {
+        if (!getDomain().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getHostnameBytes());
+      }
+      for (int i = 0; i < resources_.size(); i++) {
+        output.writeMessage(3, resources_.get(i));
+      }
+      for (int i = 0; i < attributes_.size(); i++) {
+        output.writeMessage(5, attributes_.get(i));
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeMessage(6, id_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeInt32(8, port_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeMessage(10, domain_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getHostnameBytes());
+      }
+      for (int i = 0; i < resources_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, resources_.get(i));
+      }
+      for (int i = 0; i < attributes_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(5, attributes_.get(i));
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(6, id_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt32Size(8, port_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(10, domain_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.AgentInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.AgentInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.AgentInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.AgentInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.AgentInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.AgentInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.AgentInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.AgentInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.AgentInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.AgentInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.AgentInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.AgentInfo}
+     *
+     * <pre>
+     **
+     * Describes an agent. Note that the 'id' field is only available
+     * after an agent is registered with the master, and is made available
+     * here to facilitate re-registration.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.AgentInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_AgentInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_AgentInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.AgentInfo.class, org.apache.mesos.v1.Protos.AgentInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.AgentInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getResourcesFieldBuilder();
+          getAttributesFieldBuilder();
+          getIdFieldBuilder();
+          getDomainFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        hostname_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        port_ = 5051;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        if (resourcesBuilder_ == null) {
+          resources_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000004);
+        } else {
+          resourcesBuilder_.clear();
+        }
+        if (attributesBuilder_ == null) {
+          attributes_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000008);
+        } else {
+          attributesBuilder_.clear();
+        }
+        if (idBuilder_ == null) {
+          id_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+        } else {
+          idBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        if (domainBuilder_ == null) {
+          domain_ = org.apache.mesos.v1.Protos.DomainInfo.getDefaultInstance();
+        } else {
+          domainBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_AgentInfo_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.AgentInfo getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.AgentInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.AgentInfo build() {
+        org.apache.mesos.v1.Protos.AgentInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.AgentInfo buildPartial() {
+        org.apache.mesos.v1.Protos.AgentInfo result = new org.apache.mesos.v1.Protos.AgentInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.hostname_ = hostname_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.port_ = port_;
+        if (resourcesBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) == 0x00000004)) {
+            resources_ = java.util.Collections.unmodifiableList(resources_);
+            bitField0_ = (bitField0_ & ~0x00000004);
+          }
+          result.resources_ = resources_;
+        } else {
+          result.resources_ = resourcesBuilder_.build();
+        }
+        if (attributesBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008)) {
+            attributes_ = java.util.Collections.unmodifiableList(attributes_);
+            bitField0_ = (bitField0_ & ~0x00000008);
+          }
+          result.attributes_ = attributes_;
+        } else {
+          result.attributes_ = attributesBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        if (idBuilder_ == null) {
+          result.id_ = id_;
+        } else {
+          result.id_ = idBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        if (domainBuilder_ == null) {
+          result.domain_ = domain_;
+        } else {
+          result.domain_ = domainBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.AgentInfo) {
+          return mergeFrom((org.apache.mesos.v1.Protos.AgentInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.AgentInfo other) {
+        if (other == org.apache.mesos.v1.Protos.AgentInfo.getDefaultInstance()) return this;
+        if (other.hasHostname()) {
+          bitField0_ |= 0x00000001;
+          hostname_ = other.hostname_;
+          onChanged();
+        }
+        if (other.hasPort()) {
+          setPort(other.getPort());
+        }
+        if (resourcesBuilder_ == null) {
+          if (!other.resources_.isEmpty()) {
+            if (resources_.isEmpty()) {
+              resources_ = other.resources_;
+              bitField0_ = (bitField0_ & ~0x00000004);
+            } else {
+              ensureResourcesIsMutable();
+              resources_.addAll(other.resources_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.resources_.isEmpty()) {
+            if (resourcesBuilder_.isEmpty()) {
+              resourcesBuilder_.dispose();
+              resourcesBuilder_ = null;
+              resources_ = other.resources_;
+              bitField0_ = (bitField0_ & ~0x00000004);
+              resourcesBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getResourcesFieldBuilder() : null;
+            } else {
+              resourcesBuilder_.addAllMessages(other.resources_);
+            }
+          }
+        }
+        if (attributesBuilder_ == null) {
+          if (!other.attributes_.isEmpty()) {
+            if (attributes_.isEmpty()) {
+              attributes_ = other.attributes_;
+              bitField0_ = (bitField0_ & ~0x00000008);
+            } else {
+              ensureAttributesIsMutable();
+              attributes_.addAll(other.attributes_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.attributes_.isEmpty()) {
+            if (attributesBuilder_.isEmpty()) {
+              attributesBuilder_.dispose();
+              attributesBuilder_ = null;
+              attributes_ = other.attributes_;
+              bitField0_ = (bitField0_ & ~0x00000008);
+              attributesBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getAttributesFieldBuilder() : null;
+            } else {
+              attributesBuilder_.addAllMessages(other.attributes_);
+            }
+          }
+        }
+        if (other.hasId()) {
+          mergeId(other.getId());
+        }
+        if (other.hasDomain()) {
+          mergeDomain(other.getDomain());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasHostname()) {
+          
+          return false;
+        }
+        for (int i = 0; i < getResourcesCount(); i++) {
+          if (!getResources(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        for (int i = 0; i < getAttributesCount(); i++) {
+          if (!getAttributes(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasId()) {
+          if (!getId().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasDomain()) {
+          if (!getDomain().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.AgentInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.AgentInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string hostname = 1;
+      private java.lang.Object hostname_ = "";
+      /**
+       * <code>required string hostname = 1;</code>
+       */
+      public boolean hasHostname() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string hostname = 1;</code>
+       */
+      public java.lang.String getHostname() {
+        java.lang.Object ref = hostname_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          hostname_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string hostname = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getHostnameBytes() {
+        java.lang.Object ref = hostname_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          hostname_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string hostname = 1;</code>
+       */
+      public Builder setHostname(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        hostname_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string hostname = 1;</code>
+       */
+      public Builder clearHostname() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        hostname_ = getDefaultInstance().getHostname();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string hostname = 1;</code>
+       */
+      public Builder setHostnameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        hostname_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional int32 port = 8 [default = 5051];
+      private int port_ = 5051;
+      /**
+       * <code>optional int32 port = 8 [default = 5051];</code>
+       */
+      public boolean hasPort() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional int32 port = 8 [default = 5051];</code>
+       */
+      public int getPort() {
+        return port_;
+      }
+      /**
+       * <code>optional int32 port = 8 [default = 5051];</code>
+       */
+      public Builder setPort(int value) {
+        bitField0_ |= 0x00000002;
+        port_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int32 port = 8 [default = 5051];</code>
+       */
+      public Builder clearPort() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        port_ = 5051;
+        onChanged();
+        return this;
+      }
+
+      // repeated .mesos.v1.Resource resources = 3;
+      private java.util.List<org.apache.mesos.v1.Protos.Resource> resources_ =
+        java.util.Collections.emptyList();
+      private void ensureResourcesIsMutable() {
+        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
+          resources_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Resource>(resources_);
+          bitField0_ |= 0x00000004;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder> resourcesBuilder_;
+
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 3;</code>
+       *
+       * <pre>
+       * The configured resources at the agent. This does not include any
+       * dynamic reservations or persistent volumes that may currently
+       * exist at the agent.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Resource> getResourcesList() {
+        if (resourcesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(resources_);
+        } else {
+          return resourcesBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 3;</code>
+       *
+       * <pre>
+       * The configured resources at the agent. This does not include any
+       * dynamic reservations or persistent volumes that may currently
+       * exist at the agent.
+       * </pre>
+       */
+      public int getResourcesCount() {
+        if (resourcesBuilder_ == null) {
+          return resources_.size();
+        } else {
+          return resourcesBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 3;</code>
+       *
+       * <pre>
+       * The configured resources at the agent. This does not include any
+       * dynamic reservations or persistent volumes that may currently
+       * exist at the agent.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Resource getResources(int index) {
+        if (resourcesBuilder_ == null) {
+          return resources_.get(index);
+        } else {
+          return resourcesBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 3;</code>
+       *
+       * <pre>
+       * The configured resources at the agent. This does not include any
+       * dynamic reservations or persistent volumes that may currently
+       * exist at the agent.
+       * </pre>
+       */
+      public Builder setResources(
+          int index, org.apache.mesos.v1.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.set(index, value);
+          onChanged();
+        } else {
+          resourcesBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 3;</code>
+       *
+       * <pre>
+       * The configured resources at the agent. This does not include any
+       * dynamic reservations or persistent volumes that may currently
+       * exist at the agent.
+       * </pre>
+       */
+      public Builder setResources(
+          int index, org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 3;</code>
+       *
+       * <pre>
+       * The configured resources at the agent. This does not include any
+       * dynamic reservations or persistent volumes that may currently
+       * exist at the agent.
+       * </pre>
+       */
+      public Builder addResources(org.apache.mesos.v1.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.add(value);
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 3;</code>
+       *
+       * <pre>
+       * The configured resources at the agent. This does not include any
+       * dynamic reservations or persistent volumes that may currently
+       * exist at the agent.
+       * </pre>
+       */
+      public Builder addResources(
+          int index, org.apache.mesos.v1.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.add(index, value);
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 3;</code>
+       *
+       * <pre>
+       * The configured resources at the agent. This does not include any
+       * dynamic reservations or persistent volumes that may currently
+       * exist at the agent.
+       * </pre>
+       */
+      public Builder addResources(
+          org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.add(builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 3;</code>
+       *
+       * <pre>
+       * The configured resources at the agent. This does not include any
+       * dynamic reservations or persistent volumes that may currently
+       * exist at the agent.
+       * </pre>
+       */
+      public Builder addResources(
+          int index, org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 3;</code>
+       *
+       * <pre>
+       * The configured resources at the agent. This does not include any
+       * dynamic reservations or persistent volumes that may currently
+       * exist at the agent.
+       * </pre>
+       */
+      public Builder addAllResources(
+          java.lang.Iterable<? extends org.apache.mesos.v1.Protos.Resource> values) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          super.addAll(values, resources_);
+          onChanged();
+        } else {
+          resourcesBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 3;</code>
+       *
+       * <pre>
+       * The configured resources at the agent. This does not include any
+       * dynamic reservations or persistent volumes that may currently
+       * exist at the agent.
+       * </pre>
+       */
+      public Builder clearResources() {
+        if (resourcesBuilder_ == null) {
+          resources_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000004);
+          onChanged();
+        } else {
+          resourcesBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 3;</code>
+       *
+       * <pre>
+       * The configured resources at the agent. This does not include any
+       * dynamic reservations or persistent volumes that may currently
+       * exist at the agent.
+       * </pre>
+       */
+      public Builder removeResources(int index) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.remove(index);
+          onChanged();
+        } else {
+          resourcesBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 3;</code>
+       *
+       * <pre>
+       * The configured resources at the agent. This does not include any
+       * dynamic reservations or persistent volumes that may currently
+       * exist at the agent.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Resource.Builder getResourcesBuilder(
+          int index) {
+        return getResourcesFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 3;</code>
+       *
+       * <pre>
+       * The configured resources at the agent. This does not include any
+       * dynamic reservations or persistent volumes that may currently
+       * exist at the agent.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.ResourceOrBuilder getResourcesOrBuilder(
+          int index) {
+        if (resourcesBuilder_ == null) {
+          return resources_.get(index);  } else {
+          return resourcesBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 3;</code>
+       *
+       * <pre>
+       * The configured resources at the agent. This does not include any
+       * dynamic reservations or persistent volumes that may currently
+       * exist at the agent.
+       * </pre>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+           getResourcesOrBuilderList() {
+        if (resourcesBuilder_ != null) {
+          return resourcesBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(resources_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 3;</code>
+       *
+       * <pre>
+       * The configured resources at the agent. This does not include any
+       * dynamic reservations or persistent volumes that may currently
+       * exist at the agent.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Resource.Builder addResourcesBuilder() {
+        return getResourcesFieldBuilder().addBuilder(
+            org.apache.mesos.v1.Protos.Resource.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 3;</code>
+       *
+       * <pre>
+       * The configured resources at the agent. This does not include any
+       * dynamic reservations or persistent volumes that may currently
+       * exist at the agent.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Resource.Builder addResourcesBuilder(
+          int index) {
+        return getResourcesFieldBuilder().addBuilder(
+            index, org.apache.mesos.v1.Protos.Resource.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 3;</code>
+       *
+       * <pre>
+       * The configured resources at the agent. This does not include any
+       * dynamic reservations or persistent volumes that may currently
+       * exist at the agent.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Resource.Builder> 
+           getResourcesBuilderList() {
+        return getResourcesFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+          getResourcesFieldBuilder() {
+        if (resourcesBuilder_ == null) {
+          resourcesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder>(
+                  resources_,
+                  ((bitField0_ & 0x00000004) == 0x00000004),
+                  getParentForChildren(),
+                  isClean());
+          resources_ = null;
+        }
+        return resourcesBuilder_;
+      }
+
+      // repeated .mesos.v1.Attribute attributes = 5;
+      private java.util.List<org.apache.mesos.v1.Protos.Attribute> attributes_ =
+        java.util.Collections.emptyList();
+      private void ensureAttributesIsMutable() {
+        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
+          attributes_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Attribute>(attributes_);
+          bitField0_ |= 0x00000008;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.Attribute, org.apache.mesos.v1.Protos.Attribute.Builder, org.apache.mesos.v1.Protos.AttributeOrBuilder> attributesBuilder_;
+
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 5;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Attribute> getAttributesList() {
+        if (attributesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(attributes_);
+        } else {
+          return attributesBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 5;</code>
+       */
+      public int getAttributesCount() {
+        if (attributesBuilder_ == null) {
+          return attributes_.size();
+        } else {
+          return attributesBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 5;</code>
+       */
+      public org.apache.mesos.v1.Protos.Attribute getAttributes(int index) {
+        if (attributesBuilder_ == null) {
+          return attributes_.get(index);
+        } else {
+          return attributesBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 5;</code>
+       */
+      public Builder setAttributes(
+          int index, org.apache.mesos.v1.Protos.Attribute value) {
+        if (attributesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureAttributesIsMutable();
+          attributes_.set(index, value);
+          onChanged();
+        } else {
+          attributesBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 5;</code>
+       */
+      public Builder setAttributes(
+          int index, org.apache.mesos.v1.Protos.Attribute.Builder builderForValue) {
+        if (attributesBuilder_ == null) {
+          ensureAttributesIsMutable();
+          attributes_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          attributesBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 5;</code>
+       */
+      public Builder addAttributes(org.apache.mesos.v1.Protos.Attribute value) {
+        if (attributesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureAttributesIsMutable();
+          attributes_.add(value);
+          onChanged();
+        } else {
+          attributesBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 5;</code>
+       */
+      public Builder addAttributes(
+          int index, org.apache.mesos.v1.Protos.Attribute value) {
+        if (attributesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureAttributesIsMutable();
+          attributes_.add(index, value);
+          onChanged();
+        } else {
+          attributesBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 5;</code>
+       */
+      public Builder addAttributes(
+          org.apache.mesos.v1.Protos.Attribute.Builder builderForValue) {
+        if (attributesBuilder_ == null) {
+          ensureAttributesIsMutable();
+          attributes_.add(builderForValue.build());
+          onChanged();
+        } else {
+          attributesBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 5;</code>
+       */
+      public Builder addAttributes(
+          int index, org.apache.mesos.v1.Protos.Attribute.Builder builderForValue) {
+        if (attributesBuilder_ == null) {
+          ensureAttributesIsMutable();
+          attributes_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          attributesBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 5;</code>
+       */
+      public Builder addAllAttributes(
+          java.lang.Iterable<? extends org.apache.mesos.v1.Protos.Attribute> values) {
+        if (attributesBuilder_ == null) {
+          ensureAttributesIsMutable();
+          super.addAll(values, attributes_);
+          onChanged();
+        } else {
+          attributesBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 5;</code>
+       */
+      public Builder clearAttributes() {
+        if (attributesBuilder_ == null) {
+          attributes_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000008);
+          onChanged();
+        } else {
+          attributesBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 5;</code>
+       */
+      public Builder removeAttributes(int index) {
+        if (attributesBuilder_ == null) {
+          ensureAttributesIsMutable();
+          attributes_.remove(index);
+          onChanged();
+        } else {
+          attributesBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 5;</code>
+       */
+      public org.apache.mesos.v1.Protos.Attribute.Builder getAttributesBuilder(
+          int index) {
+        return getAttributesFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 5;</code>
+       */
+      public org.apache.mesos.v1.Protos.AttributeOrBuilder getAttributesOrBuilder(
+          int index) {
+        if (attributesBuilder_ == null) {
+          return attributes_.get(index);  } else {
+          return attributesBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 5;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.AttributeOrBuilder> 
+           getAttributesOrBuilderList() {
+        if (attributesBuilder_ != null) {
+          return attributesBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(attributes_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 5;</code>
+       */
+      public org.apache.mesos.v1.Protos.Attribute.Builder addAttributesBuilder() {
+        return getAttributesFieldBuilder().addBuilder(
+            org.apache.mesos.v1.Protos.Attribute.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 5;</code>
+       */
+      public org.apache.mesos.v1.Protos.Attribute.Builder addAttributesBuilder(
+          int index) {
+        return getAttributesFieldBuilder().addBuilder(
+            index, org.apache.mesos.v1.Protos.Attribute.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 5;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Attribute.Builder> 
+           getAttributesBuilderList() {
+        return getAttributesFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.Attribute, org.apache.mesos.v1.Protos.Attribute.Builder, org.apache.mesos.v1.Protos.AttributeOrBuilder> 
+          getAttributesFieldBuilder() {
+        if (attributesBuilder_ == null) {
+          attributesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.Attribute, org.apache.mesos.v1.Protos.Attribute.Builder, org.apache.mesos.v1.Protos.AttributeOrBuilder>(
+                  attributes_,
+                  ((bitField0_ & 0x00000008) == 0x00000008),
+                  getParentForChildren(),
+                  isClean());
+          attributes_ = null;
+        }
+        return attributesBuilder_;
+      }
+
+      // optional .mesos.v1.AgentID id = 6;
+      private org.apache.mesos.v1.Protos.AgentID id_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.AgentID, org.apache.mesos.v1.Protos.AgentID.Builder, org.apache.mesos.v1.Protos.AgentIDOrBuilder> idBuilder_;
+      /**
+       * <code>optional .mesos.v1.AgentID id = 6;</code>
+       */
+      public boolean hasId() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional .mesos.v1.AgentID id = 6;</code>
+       */
+      public org.apache.mesos.v1.Protos.AgentID getId() {
+        if (idBuilder_ == null) {
+          return id_;
+        } else {
+          return idBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.AgentID id = 6;</code>
+       */
+      public Builder setId(org.apache.mesos.v1.Protos.AgentID value) {
+        if (idBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          id_ = value;
+          onChanged();
+        } else {
+          idBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.AgentID id = 6;</code>
+       */
+      public Builder setId(
+          org.apache.mesos.v1.Protos.AgentID.Builder builderForValue) {
+        if (idBuilder_ == null) {
+          id_ = builderForValue.build();
+          onChanged();
+        } else {
+          idBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.AgentID id = 6;</code>
+       */
+      public Builder mergeId(org.apache.mesos.v1.Protos.AgentID value) {
+        if (idBuilder_ == null) {
+          if (((bitField0_ & 0x00000010) == 0x00000010) &&
+              id_ != org.apache.mesos.v1.Protos.AgentID.getDefaultInstance()) {
+            id_ =
+              org.apache.mesos.v1.Protos.AgentID.newBuilder(id_).mergeFrom(value).buildPartial();
+          } else {
+            id_ = value;
+          }
+          onChanged();
+        } else {
+          idBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.AgentID id = 6;</code>
+       */
+      public Builder clearId() {
+        if (idBuilder_ == null) {
+          id_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+          onChanged();
+        } else {
+          idBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.AgentID id = 6;</code>
+       */
+      public org.apache.mesos.v1.Protos.AgentID.Builder getIdBuilder() {
+        bitField0_ |= 0x00000010;
+        onChanged();
+        return getIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.AgentID id = 6;</code>
+       */
+      public org.apache.mesos.v1.Protos.AgentIDOrBuilder getIdOrBuilder() {
+        if (idBuilder_ != null) {
+          return idBuilder_.getMessageOrBuilder();
+        } else {
+          return id_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.AgentID id = 6;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.AgentID, org.apache.mesos.v1.Protos.AgentID.Builder, org.apache.mesos.v1.Protos.AgentIDOrBuilder> 
+          getIdFieldBuilder() {
+        if (idBuilder_ == null) {
+          idBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.AgentID, org.apache.mesos.v1.Protos.AgentID.Builder, org.apache.mesos.v1.Protos.AgentIDOrBuilder>(
+                  id_,
+                  getParentForChildren(),
+                  isClean());
+          id_ = null;
+        }
+        return idBuilder_;
+      }
+
+      // optional .mesos.v1.DomainInfo domain = 10;
+      private org.apache.mesos.v1.Protos.DomainInfo domain_ = org.apache.mesos.v1.Protos.DomainInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.DomainInfo, org.apache.mesos.v1.Protos.DomainInfo.Builder, org.apache.mesos.v1.Protos.DomainInfoOrBuilder> domainBuilder_;
+      /**
+       * <code>optional .mesos.v1.DomainInfo domain = 10;</code>
+       *
+       * <pre>
+       * The domain that this agent belongs to. If the agent's region
+       * differs from the master's region, it will not appear in resource
+       * offers to frameworks that have not enabled the REGION_AWARE
+       * capability.
+       * </pre>
+       */
+      public boolean hasDomain() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional .mesos.v1.DomainInfo domain = 10;</code>
+       *
+       * <pre>
+       * The domain that this agent belongs to. If the agent's region
+       * differs from the master's region, it will not appear in resource
+       * offers to frameworks that have not enabled the REGION_AWARE
+       * capability.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.DomainInfo getDomain() {
+        if (domainBuilder_ == null) {
+          return domain_;
+        } else {
+          return domainBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.DomainInfo domain = 10;</code>
+       *
+       * <pre>
+       * The domain that this agent belongs to. If the agent's region
+       * differs from the master's region, it will not appear in resource
+       * offers to frameworks that have not enabled the REGION_AWARE
+       * capability.
+       * </pre>
+       */
+      public Builder setDomain(org.apache.mesos.v1.Protos.DomainInfo value) {
+        if (domainBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          domain_ = value;
+          onChanged();
+        } else {
+          domainBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.DomainInfo domain = 10;</code>
+       *
+       * <pre>
+       * The domain that this agent belongs to. If the agent's region
+       * differs from the master's region, it will not appear in resource
+       * offers to frameworks that have not enabled the REGION_AWARE
+       * capability.
+       * </pre>
+       */
+      public Builder setDomain(
+          org.apache.mesos.v1.Protos.DomainInfo.Builder builderForValue) {
+        if (domainBuilder_ == null) {
+          domain_ = builderForValue.build();
+          onChanged();
+        } else {
+          domainBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.DomainInfo domain = 10;</code>
+       *
+       * <pre>
+       * The domain that this agent belongs to. If the agent's region
+       * differs from the master's region, it will not appear in resource
+       * offers to frameworks that have not enabled the REGION_AWARE
+       * capability.
+       * </pre>
+       */
+      public Builder mergeDomain(org.apache.mesos.v1.Protos.DomainInfo value) {
+        if (domainBuilder_ == null) {
+          if (((bitField0_ & 0x00000020) == 0x00000020) &&
+              domain_ != org.apache.mesos.v1.Protos.DomainInfo.getDefaultInstance()) {
+            domain_ =
+              org.apache.mesos.v1.Protos.DomainInfo.newBuilder(domain_).mergeFrom(value).buildPartial();
+          } else {
+            domain_ = value;
+          }
+          onChanged();
+        } else {
+          domainBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.DomainInfo domain = 10;</code>
+       *
+       * <pre>
+       * The domain that this agent belongs to. If the agent's region
+       * differs from the master's region, it will not appear in resource
+       * offers to frameworks that have not enabled the REGION_AWARE
+       * capability.
+       * </pre>
+       */
+      public Builder clearDomain() {
+        if (domainBuilder_ == null) {
+          domain_ = org.apache.mesos.v1.Protos.DomainInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          domainBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.DomainInfo domain = 10;</code>
+       *
+       * <pre>
+       * The domain that this agent belongs to. If the agent's region
+       * differs from the master's region, it will not appear in resource
+       * offers to frameworks that have not enabled the REGION_AWARE
+       * capability.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.DomainInfo.Builder getDomainBuilder() {
+        bitField0_ |= 0x00000020;
+        onChanged();
+        return getDomainFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.DomainInfo domain = 10;</code>
+       *
+       * <pre>
+       * The domain that this agent belongs to. If the agent's region
+       * differs from the master's region, it will not appear in resource
+       * offers to frameworks that have not enabled the REGION_AWARE
+       * capability.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.DomainInfoOrBuilder getDomainOrBuilder() {
+        if (domainBuilder_ != null) {
+          return domainBuilder_.getMessageOrBuilder();
+        } else {
+          return domain_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.DomainInfo domain = 10;</code>
+       *
+       * <pre>
+       * The domain that this agent belongs to. If the agent's region
+       * differs from the master's region, it will not appear in resource
+       * offers to frameworks that have not enabled the REGION_AWARE
+       * capability.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.DomainInfo, org.apache.mesos.v1.Protos.DomainInfo.Builder, org.apache.mesos.v1.Protos.DomainInfoOrBuilder> 
+          getDomainFieldBuilder() {
+        if (domainBuilder_ == null) {
+          domainBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.DomainInfo, org.apache.mesos.v1.Protos.DomainInfo.Builder, org.apache.mesos.v1.Protos.DomainInfoOrBuilder>(
+                  domain_,
+                  getParentForChildren(),
+                  isClean());
+          domain_ = null;
+        }
+        return domainBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.AgentInfo)
+    }
+
+    static {
+      defaultInstance = new AgentInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.AgentInfo)
+  }
+
+  public interface ResourceProviderInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional .mesos.v1.ResourceProviderID id = 1;
+    /**
+     * <code>optional .mesos.v1.ResourceProviderID id = 1;</code>
+     */
+    boolean hasId();
+    /**
+     * <code>optional .mesos.v1.ResourceProviderID id = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.ResourceProviderID getId();
+    /**
+     * <code>optional .mesos.v1.ResourceProviderID id = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.ResourceProviderIDOrBuilder getIdOrBuilder();
+
+    // repeated .mesos.v1.Attribute attributes = 2;
+    /**
+     * <code>repeated .mesos.v1.Attribute attributes = 2;</code>
+     */
+    java.util.List<org.apache.mesos.v1.Protos.Attribute> 
+        getAttributesList();
+    /**
+     * <code>repeated .mesos.v1.Attribute attributes = 2;</code>
+     */
+    org.apache.mesos.v1.Protos.Attribute getAttributes(int index);
+    /**
+     * <code>repeated .mesos.v1.Attribute attributes = 2;</code>
+     */
+    int getAttributesCount();
+    /**
+     * <code>repeated .mesos.v1.Attribute attributes = 2;</code>
+     */
+    java.util.List<? extends org.apache.mesos.v1.Protos.AttributeOrBuilder> 
+        getAttributesOrBuilderList();
+    /**
+     * <code>repeated .mesos.v1.Attribute attributes = 2;</code>
+     */
+    org.apache.mesos.v1.Protos.AttributeOrBuilder getAttributesOrBuilder(
+        int index);
+
+    // required string type = 3;
+    /**
+     * <code>required string type = 3;</code>
+     *
+     * <pre>
+     * The type of the resource provider. This uniquely identifies a
+     * resource provider implementation. For instance:
+     *     org.apache.mesos.rp.local.storage
+     *
+     * Please follow to Java package naming convention
+     * (https://en.wikipedia.org/wiki/Java_package#Package_naming_conventions)
+     * to avoid conflicts on type names.
+     * </pre>
+     */
+    boolean hasType();
+    /**
+     * <code>required string type = 3;</code>
+     *
+     * <pre>
+     * The type of the resource provider. This uniquely identifies a
+     * resource provider implementation. For instance:
+     *     org.apache.mesos.rp.local.storage
+     *
+     * Please follow to Java package naming convention
+     * (https://en.wikipedia.org/wiki/Java_package#Package_naming_conventions)
+     * to avoid conflicts on type names.
+     * </pre>
+     */
+    java.lang.String getType();
+    /**
+     * <code>required string type = 3;</code>
+     *
+     * <pre>
+     * The type of the resource provider. This uniquely identifies a
+     * resource provider implementation. For instance:
+     *     org.apache.mesos.rp.local.storage
+     *
+     * Please follow to Java package naming convention
+     * (https://en.wikipedia.org/wiki/Java_package#Package_naming_conventions)
+     * to avoid conflicts on type names.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getTypeBytes();
+
+    // required string name = 4;
+    /**
+     * <code>required string name = 4;</code>
+     *
+     * <pre>
+     * The name of the resource provider. There could be multiple
+     * instances of a type of resource provider. The name field is used
+     * to distinguish these instances.
+     * </pre>
+     */
+    boolean hasName();
+    /**
+     * <code>required string name = 4;</code>
+     *
+     * <pre>
+     * The name of the resource provider. There could be multiple
+     * instances of a type of resource provider. The name field is used
+     * to distinguish these instances.
+     * </pre>
+     */
+    java.lang.String getName();
+    /**
+     * <code>required string name = 4;</code>
+     *
+     * <pre>
+     * The name of the resource provider. There could be multiple
+     * instances of a type of resource provider. The name field is used
+     * to distinguish these instances.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getNameBytes();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.ResourceProviderInfo}
+   *
+   * <pre>
+   **
+   * Describes a resource provider. Note that the 'id' field is only available
+   * after a resource provider is registered with the master, and is made
+   * available here to facilitate re-registration.
+   * </pre>
+   */
+  public static final class ResourceProviderInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements ResourceProviderInfoOrBuilder {
+    // Use ResourceProviderInfo.newBuilder() to construct.
+    private ResourceProviderInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private ResourceProviderInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final ResourceProviderInfo defaultInstance;
+    public static ResourceProviderInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public ResourceProviderInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private ResourceProviderInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              org.apache.mesos.v1.Protos.ResourceProviderID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                subBuilder = id_.toBuilder();
+              }
+              id_ = input.readMessage(org.apache.mesos.v1.Protos.ResourceProviderID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(id_);
+                id_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+            case 18: {
+              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+                attributes_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Attribute>();
+                mutable_bitField0_ |= 0x00000002;
+              }
+              attributes_.add(input.readMessage(org.apache.mesos.v1.Protos.Attribute.PARSER, extensionRegistry));
+              break;
+            }
+            case 26: {
+              bitField0_ |= 0x00000002;
+              type_ = input.readBytes();
+              break;
+            }
+            case 34: {
+              bitField0_ |= 0x00000004;
+              name_ = input.readBytes();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+          attributes_ = java.util.Collections.unmodifiableList(attributes_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ResourceProviderInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ResourceProviderInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.ResourceProviderInfo.class, org.apache.mesos.v1.Protos.ResourceProviderInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<ResourceProviderInfo> PARSER =
+        new com.google.protobuf.AbstractParser<ResourceProviderInfo>() {
+      public ResourceProviderInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new ResourceProviderInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<ResourceProviderInfo> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // optional .mesos.v1.ResourceProviderID id = 1;
+    public static final int ID_FIELD_NUMBER = 1;
+    private org.apache.mesos.v1.Protos.ResourceProviderID id_;
+    /**
+     * <code>optional .mesos.v1.ResourceProviderID id = 1;</code>
+     */
+    public boolean hasId() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional .mesos.v1.ResourceProviderID id = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.ResourceProviderID getId() {
+      return id_;
+    }
+    /**
+     * <code>optional .mesos.v1.ResourceProviderID id = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.ResourceProviderIDOrBuilder getIdOrBuilder() {
+      return id_;
+    }
+
+    // repeated .mesos.v1.Attribute attributes = 2;
+    public static final int ATTRIBUTES_FIELD_NUMBER = 2;
+    private java.util.List<org.apache.mesos.v1.Protos.Attribute> attributes_;
+    /**
+     * <code>repeated .mesos.v1.Attribute attributes = 2;</code>
+     */
+    public java.util.List<org.apache.mesos.v1.Protos.Attribute> getAttributesList() {
+      return attributes_;
+    }
+    /**
+     * <code>repeated .mesos.v1.Attribute attributes = 2;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.v1.Protos.AttributeOrBuilder> 
+        getAttributesOrBuilderList() {
+      return attributes_;
+    }
+    /**
+     * <code>repeated .mesos.v1.Attribute attributes = 2;</code>
+     */
+    public int getAttributesCount() {
+      return attributes_.size();
+    }
+    /**
+     * <code>repeated .mesos.v1.Attribute attributes = 2;</code>
+     */
+    public org.apache.mesos.v1.Protos.Attribute getAttributes(int index) {
+      return attributes_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.v1.Attribute attributes = 2;</code>
+     */
+    public org.apache.mesos.v1.Protos.AttributeOrBuilder getAttributesOrBuilder(
+        int index) {
+      return attributes_.get(index);
+    }
+
+    // required string type = 3;
+    public static final int TYPE_FIELD_NUMBER = 3;
+    private java.lang.Object type_;
+    /**
+     * <code>required string type = 3;</code>
+     *
+     * <pre>
+     * The type of the resource provider. This uniquely identifies a
+     * resource provider implementation. For instance:
+     *     org.apache.mesos.rp.local.storage
+     *
+     * Please follow to Java package naming convention
+     * (https://en.wikipedia.org/wiki/Java_package#Package_naming_conventions)
+     * to avoid conflicts on type names.
+     * </pre>
+     */
+    public boolean hasType() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>required string type = 3;</code>
+     *
+     * <pre>
+     * The type of the resource provider. This uniquely identifies a
+     * resource provider implementation. For instance:
+     *     org.apache.mesos.rp.local.storage
+     *
+     * Please follow to Java package naming convention
+     * (https://en.wikipedia.org/wiki/Java_package#Package_naming_conventions)
+     * to avoid conflicts on type names.
+     * </pre>
+     */
+    public java.lang.String getType() {
+      java.lang.Object ref = type_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          type_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string type = 3;</code>
+     *
+     * <pre>
+     * The type of the resource provider. This uniquely identifies a
+     * resource provider implementation. For instance:
+     *     org.apache.mesos.rp.local.storage
+     *
+     * Please follow to Java package naming convention
+     * (https://en.wikipedia.org/wiki/Java_package#Package_naming_conventions)
+     * to avoid conflicts on type names.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getTypeBytes() {
+      java.lang.Object ref = type_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        type_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // required string name = 4;
+    public static final int NAME_FIELD_NUMBER = 4;
+    private java.lang.Object name_;
+    /**
+     * <code>required string name = 4;</code>
+     *
+     * <pre>
+     * The name of the resource provider. There could be multiple
+     * instances of a type of resource provider. The name field is used
+     * to distinguish these instances.
+     * </pre>
+     */
+    public boolean hasName() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>required string name = 4;</code>
+     *
+     * <pre>
+     * The name of the resource provider. There could be multiple
+     * instances of a type of resource provider. The name field is used
+     * to distinguish these instances.
+     * </pre>
+     */
+    public java.lang.String getName() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          name_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string name = 4;</code>
+     *
+     * <pre>
+     * The name of the resource provider. There could be multiple
+     * instances of a type of resource provider. The name field is used
+     * to distinguish these instances.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getNameBytes() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        name_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      id_ = org.apache.mesos.v1.Protos.ResourceProviderID.getDefaultInstance();
+      attributes_ = java.util.Collections.emptyList();
+      type_ = "";
+      name_ = "";
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasType()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasName()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (hasId()) {
+        if (!getId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      for (int i = 0; i < getAttributesCount(); i++) {
+        if (!getAttributes(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeMessage(1, id_);
+      }
+      for (int i = 0; i < attributes_.size(); i++) {
+        output.writeMessage(2, attributes_.get(i));
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(3, getTypeBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeBytes(4, getNameBytes());
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, id_);
+      }
+      for (int i = 0; i < attributes_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, attributes_.get(i));
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(3, getTypeBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(4, getNameBytes());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.ResourceProviderInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.ResourceProviderInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.ResourceProviderInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.ResourceProviderInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.ResourceProviderInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.ResourceProviderInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.ResourceProviderInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.ResourceProviderInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.ResourceProviderInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.ResourceProviderInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.ResourceProviderInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.ResourceProviderInfo}
+     *
+     * <pre>
+     **
+     * Describes a resource provider. Note that the 'id' field is only available
+     * after a resource provider is registered with the master, and is made
+     * available here to facilitate re-registration.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.ResourceProviderInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ResourceProviderInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ResourceProviderInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.ResourceProviderInfo.class, org.apache.mesos.v1.Protos.ResourceProviderInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.ResourceProviderInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getIdFieldBuilder();
+          getAttributesFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (idBuilder_ == null) {
+          id_ = org.apache.mesos.v1.Protos.ResourceProviderID.getDefaultInstance();
+        } else {
+          idBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (attributesBuilder_ == null) {
+          attributes_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000002);
+        } else {
+          attributesBuilder_.clear();
+        }
+        type_ = "";
+        bitField0_ = (bitField0_ & ~0x00000004);
+        name_ = "";
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ResourceProviderInfo_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.ResourceProviderInfo getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.ResourceProviderInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.ResourceProviderInfo build() {
+        org.apache.mesos.v1.Protos.ResourceProviderInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.ResourceProviderInfo buildPartial() {
+        org.apache.mesos.v1.Protos.ResourceProviderInfo result = new org.apache.mesos.v1.Protos.ResourceProviderInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        if (idBuilder_ == null) {
+          result.id_ = id_;
+        } else {
+          result.id_ = idBuilder_.build();
+        }
+        if (attributesBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            attributes_ = java.util.Collections.unmodifiableList(attributes_);
+            bitField0_ = (bitField0_ & ~0x00000002);
+          }
+          result.attributes_ = attributes_;
+        } else {
+          result.attributes_ = attributesBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.type_ = type_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.name_ = name_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.ResourceProviderInfo) {
+          return mergeFrom((org.apache.mesos.v1.Protos.ResourceProviderInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.ResourceProviderInfo other) {
+        if (other == org.apache.mesos.v1.Protos.ResourceProviderInfo.getDefaultInstance()) return this;
+        if (other.hasId()) {
+          mergeId(other.getId());
+        }
+        if (attributesBuilder_ == null) {
+          if (!other.attributes_.isEmpty()) {
+            if (attributes_.isEmpty()) {
+              attributes_ = other.attributes_;
+              bitField0_ = (bitField0_ & ~0x00000002);
+            } else {
+              ensureAttributesIsMutable();
+              attributes_.addAll(other.attributes_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.attributes_.isEmpty()) {
+            if (attributesBuilder_.isEmpty()) {
+              attributesBuilder_.dispose();
+              attributesBuilder_ = null;
+              attributes_ = other.attributes_;
+              bitField0_ = (bitField0_ & ~0x00000002);
+              attributesBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getAttributesFieldBuilder() : null;
+            } else {
+              attributesBuilder_.addAllMessages(other.attributes_);
+            }
+          }
+        }
+        if (other.hasType()) {
+          bitField0_ |= 0x00000004;
+          type_ = other.type_;
+          onChanged();
+        }
+        if (other.hasName()) {
+          bitField0_ |= 0x00000008;
+          name_ = other.name_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasType()) {
+          
+          return false;
+        }
+        if (!hasName()) {
+          
+          return false;
+        }
+        if (hasId()) {
+          if (!getId().isInitialized()) {
+            
+            return false;
+          }
+        }
+        for (int i = 0; i < getAttributesCount(); i++) {
+          if (!getAttributes(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.ResourceProviderInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.ResourceProviderInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional .mesos.v1.ResourceProviderID id = 1;
+      private org.apache.mesos.v1.Protos.ResourceProviderID id_ = org.apache.mesos.v1.Protos.ResourceProviderID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.ResourceProviderID, org.apache.mesos.v1.Protos.ResourceProviderID.Builder, org.apache.mesos.v1.Protos.ResourceProviderIDOrBuilder> idBuilder_;
+      /**
+       * <code>optional .mesos.v1.ResourceProviderID id = 1;</code>
+       */
+      public boolean hasId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.v1.ResourceProviderID id = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.ResourceProviderID getId() {
+        if (idBuilder_ == null) {
+          return id_;
+        } else {
+          return idBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.ResourceProviderID id = 1;</code>
+       */
+      public Builder setId(org.apache.mesos.v1.Protos.ResourceProviderID value) {
+        if (idBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          id_ = value;
+          onChanged();
+        } else {
+          idBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ResourceProviderID id = 1;</code>
+       */
+      public Builder setId(
+          org.apache.mesos.v1.Protos.ResourceProviderID.Builder builderForValue) {
+        if (idBuilder_ == null) {
+          id_ = builderForValue.build();
+          onChanged();
+        } else {
+          idBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ResourceProviderID id = 1;</code>
+       */
+      public Builder mergeId(org.apache.mesos.v1.Protos.ResourceProviderID value) {
+        if (idBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001) &&
+              id_ != org.apache.mesos.v1.Protos.ResourceProviderID.getDefaultInstance()) {
+            id_ =
+              org.apache.mesos.v1.Protos.ResourceProviderID.newBuilder(id_).mergeFrom(value).buildPartial();
+          } else {
+            id_ = value;
+          }
+          onChanged();
+        } else {
+          idBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ResourceProviderID id = 1;</code>
+       */
+      public Builder clearId() {
+        if (idBuilder_ == null) {
+          id_ = org.apache.mesos.v1.Protos.ResourceProviderID.getDefaultInstance();
+          onChanged();
+        } else {
+          idBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ResourceProviderID id = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.ResourceProviderID.Builder getIdBuilder() {
+        bitField0_ |= 0x00000001;
+        onChanged();
+        return getIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.ResourceProviderID id = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.ResourceProviderIDOrBuilder getIdOrBuilder() {
+        if (idBuilder_ != null) {
+          return idBuilder_.getMessageOrBuilder();
+        } else {
+          return id_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.ResourceProviderID id = 1;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.ResourceProviderID, org.apache.mesos.v1.Protos.ResourceProviderID.Builder, org.apache.mesos.v1.Protos.ResourceProviderIDOrBuilder> 
+          getIdFieldBuilder() {
+        if (idBuilder_ == null) {
+          idBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.ResourceProviderID, org.apache.mesos.v1.Protos.ResourceProviderID.Builder, org.apache.mesos.v1.Protos.ResourceProviderIDOrBuilder>(
+                  id_,
+                  getParentForChildren(),
+                  isClean());
+          id_ = null;
+        }
+        return idBuilder_;
+      }
+
+      // repeated .mesos.v1.Attribute attributes = 2;
+      private java.util.List<org.apache.mesos.v1.Protos.Attribute> attributes_ =
+        java.util.Collections.emptyList();
+      private void ensureAttributesIsMutable() {
+        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
+          attributes_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Attribute>(attributes_);
+          bitField0_ |= 0x00000002;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.Attribute, org.apache.mesos.v1.Protos.Attribute.Builder, org.apache.mesos.v1.Protos.AttributeOrBuilder> attributesBuilder_;
+
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 2;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Attribute> getAttributesList() {
+        if (attributesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(attributes_);
+        } else {
+          return attributesBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 2;</code>
+       */
+      public int getAttributesCount() {
+        if (attributesBuilder_ == null) {
+          return attributes_.size();
+        } else {
+          return attributesBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.Attribute getAttributes(int index) {
+        if (attributesBuilder_ == null) {
+          return attributes_.get(index);
+        } else {
+          return attributesBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 2;</code>
+       */
+      public Builder setAttributes(
+          int index, org.apache.mesos.v1.Protos.Attribute value) {
+        if (attributesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureAttributesIsMutable();
+          attributes_.set(index, value);
+          onChanged();
+        } else {
+          attributesBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 2;</code>
+       */
+      public Builder setAttributes(
+          int index, org.apache.mesos.v1.Protos.Attribute.Builder builderForValue) {
+        if (attributesBuilder_ == null) {
+          ensureAttributesIsMutable();
+          attributes_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          attributesBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 2;</code>
+       */
+      public Builder addAttributes(org.apache.mesos.v1.Protos.Attribute value) {
+        if (attributesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureAttributesIsMutable();
+          attributes_.add(value);
+          onChanged();
+        } else {
+          attributesBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 2;</code>
+       */
+      public Builder addAttributes(
+          int index, org.apache.mesos.v1.Protos.Attribute value) {
+        if (attributesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureAttributesIsMutable();
+          attributes_.add(index, value);
+          onChanged();
+        } else {
+          attributesBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 2;</code>
+       */
+      public Builder addAttributes(
+          org.apache.mesos.v1.Protos.Attribute.Builder builderForValue) {
+        if (attributesBuilder_ == null) {
+          ensureAttributesIsMutable();
+          attributes_.add(builderForValue.build());
+          onChanged();
+        } else {
+          attributesBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 2;</code>
+       */
+      public Builder addAttributes(
+          int index, org.apache.mesos.v1.Protos.Attribute.Builder builderForValue) {
+        if (attributesBuilder_ == null) {
+          ensureAttributesIsMutable();
+          attributes_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          attributesBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 2;</code>
+       */
+      public Builder addAllAttributes(
+          java.lang.Iterable<? extends org.apache.mesos.v1.Protos.Attribute> values) {
+        if (attributesBuilder_ == null) {
+          ensureAttributesIsMutable();
+          super.addAll(values, attributes_);
+          onChanged();
+        } else {
+          attributesBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 2;</code>
+       */
+      public Builder clearAttributes() {
+        if (attributesBuilder_ == null) {
+          attributes_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000002);
+          onChanged();
+        } else {
+          attributesBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 2;</code>
+       */
+      public Builder removeAttributes(int index) {
+        if (attributesBuilder_ == null) {
+          ensureAttributesIsMutable();
+          attributes_.remove(index);
+          onChanged();
+        } else {
+          attributesBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.Attribute.Builder getAttributesBuilder(
+          int index) {
+        return getAttributesFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.AttributeOrBuilder getAttributesOrBuilder(
+          int index) {
+        if (attributesBuilder_ == null) {
+          return attributes_.get(index);  } else {
+          return attributesBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 2;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.AttributeOrBuilder> 
+           getAttributesOrBuilderList() {
+        if (attributesBuilder_ != null) {
+          return attributesBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(attributes_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.Attribute.Builder addAttributesBuilder() {
+        return getAttributesFieldBuilder().addBuilder(
+            org.apache.mesos.v1.Protos.Attribute.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.Attribute.Builder addAttributesBuilder(
+          int index) {
+        return getAttributesFieldBuilder().addBuilder(
+            index, org.apache.mesos.v1.Protos.Attribute.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 2;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Attribute.Builder> 
+           getAttributesBuilderList() {
+        return getAttributesFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.Attribute, org.apache.mesos.v1.Protos.Attribute.Builder, org.apache.mesos.v1.Protos.AttributeOrBuilder> 
+          getAttributesFieldBuilder() {
+        if (attributesBuilder_ == null) {
+          attributesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.Attribute, org.apache.mesos.v1.Protos.Attribute.Builder, org.apache.mesos.v1.Protos.AttributeOrBuilder>(
+                  attributes_,
+                  ((bitField0_ & 0x00000002) == 0x00000002),
+                  getParentForChildren(),
+                  isClean());
+          attributes_ = null;
+        }
+        return attributesBuilder_;
+      }
+
+      // required string type = 3;
+      private java.lang.Object type_ = "";
+      /**
+       * <code>required string type = 3;</code>
+       *
+       * <pre>
+       * The type of the resource provider. This uniquely identifies a
+       * resource provider implementation. For instance:
+       *     org.apache.mesos.rp.local.storage
+       *
+       * Please follow to Java package naming convention
+       * (https://en.wikipedia.org/wiki/Java_package#Package_naming_conventions)
+       * to avoid conflicts on type names.
+       * </pre>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>required string type = 3;</code>
+       *
+       * <pre>
+       * The type of the resource provider. This uniquely identifies a
+       * resource provider implementation. For instance:
+       *     org.apache.mesos.rp.local.storage
+       *
+       * Please follow to Java package naming convention
+       * (https://en.wikipedia.org/wiki/Java_package#Package_naming_conventions)
+       * to avoid conflicts on type names.
+       * </pre>
+       */
+      public java.lang.String getType() {
+        java.lang.Object ref = type_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          type_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string type = 3;</code>
+       *
+       * <pre>
+       * The type of the resource provider. This uniquely identifies a
+       * resource provider implementation. For instance:
+       *     org.apache.mesos.rp.local.storage
+       *
+       * Please follow to Java package naming convention
+       * (https://en.wikipedia.org/wiki/Java_package#Package_naming_conventions)
+       * to avoid conflicts on type names.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getTypeBytes() {
+        java.lang.Object ref = type_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          type_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string type = 3;</code>
+       *
+       * <pre>
+       * The type of the resource provider. This uniquely identifies a
+       * resource provider implementation. For instance:
+       *     org.apache.mesos.rp.local.storage
+       *
+       * Please follow to Java package naming convention
+       * (https://en.wikipedia.org/wiki/Java_package#Package_naming_conventions)
+       * to avoid conflicts on type names.
+       * </pre>
+       */
+      public Builder setType(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        type_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string type = 3;</code>
+       *
+       * <pre>
+       * The type of the resource provider. This uniquely identifies a
+       * resource provider implementation. For instance:
+       *     org.apache.mesos.rp.local.storage
+       *
+       * Please follow to Java package naming convention
+       * (https://en.wikipedia.org/wiki/Java_package#Package_naming_conventions)
+       * to avoid conflicts on type names.
+       * </pre>
+       */
+      public Builder clearType() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        type_ = getDefaultInstance().getType();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string type = 3;</code>
+       *
+       * <pre>
+       * The type of the resource provider. This uniquely identifies a
+       * resource provider implementation. For instance:
+       *     org.apache.mesos.rp.local.storage
+       *
+       * Please follow to Java package naming convention
+       * (https://en.wikipedia.org/wiki/Java_package#Package_naming_conventions)
+       * to avoid conflicts on type names.
+       * </pre>
+       */
+      public Builder setTypeBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        type_ = value;
+        onChanged();
+        return this;
+      }
+
+      // required string name = 4;
+      private java.lang.Object name_ = "";
+      /**
+       * <code>required string name = 4;</code>
+       *
+       * <pre>
+       * The name of the resource provider. There could be multiple
+       * instances of a type of resource provider. The name field is used
+       * to distinguish these instances.
+       * </pre>
+       */
+      public boolean hasName() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>required string name = 4;</code>
+       *
+       * <pre>
+       * The name of the resource provider. There could be multiple
+       * instances of a type of resource provider. The name field is used
+       * to distinguish these instances.
+       * </pre>
+       */
+      public java.lang.String getName() {
+        java.lang.Object ref = name_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          name_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string name = 4;</code>
+       *
+       * <pre>
+       * The name of the resource provider. There could be multiple
+       * instances of a type of resource provider. The name field is used
+       * to distinguish these instances.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        java.lang.Object ref = name_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          name_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string name = 4;</code>
+       *
+       * <pre>
+       * The name of the resource provider. There could be multiple
+       * instances of a type of resource provider. The name field is used
+       * to distinguish these instances.
+       * </pre>
+       */
+      public Builder setName(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string name = 4;</code>
+       *
+       * <pre>
+       * The name of the resource provider. There could be multiple
+       * instances of a type of resource provider. The name field is used
+       * to distinguish these instances.
+       * </pre>
+       */
+      public Builder clearName() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        name_ = getDefaultInstance().getName();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string name = 4;</code>
+       *
+       * <pre>
+       * The name of the resource provider. There could be multiple
+       * instances of a type of resource provider. The name field is used
+       * to distinguish these instances.
+       * </pre>
+       */
+      public Builder setNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.ResourceProviderInfo)
+    }
+
+    static {
+      defaultInstance = new ResourceProviderInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.ResourceProviderInfo)
+  }
+
+  public interface ValueOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required .mesos.v1.Value.Type type = 1;
+    /**
+     * <code>required .mesos.v1.Value.Type type = 1;</code>
+     */
+    boolean hasType();
+    /**
+     * <code>required .mesos.v1.Value.Type type = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.Value.Type getType();
+
+    // optional .mesos.v1.Value.Scalar scalar = 2;
+    /**
+     * <code>optional .mesos.v1.Value.Scalar scalar = 2;</code>
+     */
+    boolean hasScalar();
+    /**
+     * <code>optional .mesos.v1.Value.Scalar scalar = 2;</code>
+     */
+    org.apache.mesos.v1.Protos.Value.Scalar getScalar();
+    /**
+     * <code>optional .mesos.v1.Value.Scalar scalar = 2;</code>
+     */
+    org.apache.mesos.v1.Protos.Value.ScalarOrBuilder getScalarOrBuilder();
+
+    // optional .mesos.v1.Value.Ranges ranges = 3;
+    /**
+     * <code>optional .mesos.v1.Value.Ranges ranges = 3;</code>
+     */
+    boolean hasRanges();
+    /**
+     * <code>optional .mesos.v1.Value.Ranges ranges = 3;</code>
+     */
+    org.apache.mesos.v1.Protos.Value.Ranges getRanges();
+    /**
+     * <code>optional .mesos.v1.Value.Ranges ranges = 3;</code>
+     */
+    org.apache.mesos.v1.Protos.Value.RangesOrBuilder getRangesOrBuilder();
+
+    // optional .mesos.v1.Value.Set set = 4;
+    /**
+     * <code>optional .mesos.v1.Value.Set set = 4;</code>
+     */
+    boolean hasSet();
+    /**
+     * <code>optional .mesos.v1.Value.Set set = 4;</code>
+     */
+    org.apache.mesos.v1.Protos.Value.Set getSet();
+    /**
+     * <code>optional .mesos.v1.Value.Set set = 4;</code>
+     */
+    org.apache.mesos.v1.Protos.Value.SetOrBuilder getSetOrBuilder();
+
+    // optional .mesos.v1.Value.Text text = 5;
+    /**
+     * <code>optional .mesos.v1.Value.Text text = 5;</code>
+     */
+    boolean hasText();
+    /**
+     * <code>optional .mesos.v1.Value.Text text = 5;</code>
+     */
+    org.apache.mesos.v1.Protos.Value.Text getText();
+    /**
+     * <code>optional .mesos.v1.Value.Text text = 5;</code>
+     */
+    org.apache.mesos.v1.Protos.Value.TextOrBuilder getTextOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.Value}
+   *
+   * <pre>
+   **
+   * Describes an Attribute or Resource "value". A value is described
+   * using the standard protocol buffer "union" trick.
+   * </pre>
+   */
+  public static final class Value extends
+      com.google.protobuf.GeneratedMessage
+      implements ValueOrBuilder {
+    // Use Value.newBuilder() to construct.
+    private Value(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Value(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Value defaultInstance;
+    public static Value getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Value getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Value(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 8: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.v1.Protos.Value.Type value = org.apache.mesos.v1.Protos.Value.Type.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(1, rawValue);
+              } else {
+                bitField0_ |= 0x00000001;
+                type_ = value;
+              }
+              break;
+            }
+            case 18: {
+              org.apache.mesos.v1.Protos.Value.Scalar.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = scalar_.toBuilder();
+              }
+              scalar_ = input.readMessage(org.apache.mesos.v1.Protos.Value.Scalar.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(scalar_);
+                scalar_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+            case 26: {
+              org.apache.mesos.v1.Protos.Value.Ranges.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                subBuilder = ranges_.toBuilder();
+              }
+              ranges_ = input.readMessage(org.apache.mesos.v1.Protos.Value.Ranges.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(ranges_);
+                ranges_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000004;
+              break;
+            }
+            case 34: {
+              org.apache.mesos.v1.Protos.Value.Set.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                subBuilder = set_.toBuilder();
+              }
+              set_ = input.readMessage(org.apache.mesos.v1.Protos.Value.Set.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(set_);
+                set_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000008;
+              break;
+            }
+            case 42: {
+              org.apache.mesos.v1.Protos.Value.Text.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000010) == 0x00000010)) {
+                subBuilder = text_.toBuilder();
+              }
+              text_ = input.readMessage(org.apache.mesos.v1.Protos.Value.Text.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(text_);
+                text_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000010;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Value_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Value_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.Value.class, org.apache.mesos.v1.Protos.Value.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Value> PARSER =
+        new com.google.protobuf.AbstractParser<Value>() {
+      public Value parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Value(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Value> getParserForType() {
+      return PARSER;
+    }
+
+    /**
+     * Protobuf enum {@code mesos.v1.Value.Type}
+     */
+    public enum Type
+        implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>SCALAR = 0;</code>
+       */
+      SCALAR(0, 0),
+      /**
+       * <code>RANGES = 1;</code>
+       */
+      RANGES(1, 1),
+      /**
+       * <code>SET = 2;</code>
+       */
+      SET(2, 2),
+      /**
+       * <code>TEXT = 3;</code>
+       */
+      TEXT(3, 3),
+      ;
+
+      /**
+       * <code>SCALAR = 0;</code>
+       */
+      public static final int SCALAR_VALUE = 0;
+      /**
+       * <code>RANGES = 1;</code>
+       */
+      public static final int RANGES_VALUE = 1;
+      /**
+       * <code>SET = 2;</code>
+       */
+      public static final int SET_VALUE = 2;
+      /**
+       * <code>TEXT = 3;</code>
+       */
+      public static final int TEXT_VALUE = 3;
+
+
+      public final int getNumber() { return value; }
+
+      public static Type valueOf(int value) {
+        switch (value) {
+          case 0: return SCALAR;
+          case 1: return RANGES;
+          case 2: return SET;
+          case 3: return TEXT;
+          default: return null;
+        }
+      }
+
+      public static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalGetValueMap() {
+        return internalValueMap;
+      }
+      private static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap<Type>() {
+              public Type findValueByNumber(int number) {
+                return Type.valueOf(number);
+              }
+            };
+
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
+          getValueDescriptor() {
+        return getDescriptor().getValues().get(index);
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptorForType() {
+        return getDescriptor();
+      }
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.Value.getDescriptor().getEnumTypes().get(0);
+      }
+
+      private static final Type[] VALUES = values();
+
+      public static Type valueOf(
+          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+        if (desc.getType() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "EnumValueDescriptor is not for this type.");
+        }
+        return VALUES[desc.getIndex()];
+      }
+
+      private final int index;
+      private final int value;
+
+      private Type(int index, int value) {
+        this.index = index;
+        this.value = value;
+      }
+
+      // @@protoc_insertion_point(enum_scope:mesos.v1.Value.Type)
+    }
+
+    public interface ScalarOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required double value = 1;
+      /**
+       * <code>required double value = 1;</code>
+       *
+       * <pre>
+       * Scalar values are represented using floating point. To reduce
+       * the chance of unpredictable floating point behavior due to
+       * roundoff error, Mesos only supports three decimal digits of
+       * precision for scalar resource values. That is, floating point
+       * values are converted to a fixed point format that supports
+       * three decimal digits of precision, and then converted back to
+       * floating point on output. Any additional precision in scalar
+       * resource values is discarded (via rounding).
+       * </pre>
+       */
+      boolean hasValue();
+      /**
+       * <code>required double value = 1;</code>
+       *
+       * <pre>
+       * Scalar values are represented using floating point. To reduce
+       * the chance of unpredictable floating point behavior due to
+       * roundoff error, Mesos only supports three decimal digits of
+       * precision for scalar resource values. That is, floating point
+       * values are converted to a fixed point format that supports
+       * three decimal digits of precision, and then converted back to
+       * floating point on output. Any additional precision in scalar
+       * resource values is discarded (via rounding).
+       * </pre>
+       */
+      double getValue();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.Value.Scalar}
+     */
+    public static final class Scalar extends
+        com.google.protobuf.GeneratedMessage
+        implements ScalarOrBuilder {
+      // Use Scalar.newBuilder() to construct.
+      private Scalar(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Scalar(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Scalar defaultInstance;
+      public static Scalar getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Scalar getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Scalar(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 9: {
+                bitField0_ |= 0x00000001;
+                value_ = input.readDouble();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Value_Scalar_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Value_Scalar_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.Value.Scalar.class, org.apache.mesos.v1.Protos.Value.Scalar.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Scalar> PARSER =
+          new com.google.protobuf.AbstractParser<Scalar>() {
+        public Scalar parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Scalar(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Scalar> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required double value = 1;
+      public static final int VALUE_FIELD_NUMBER = 1;
+      private double value_;
+      /**
+       * <code>required double value = 1;</code>
+       *
+       * <pre>
+       * Scalar values are represented using floating point. To reduce
+       * the chance of unpredictable floating point behavior due to
+       * roundoff error, Mesos only supports three decimal digits of
+       * precision for scalar resource values. That is, floating point
+       * values are converted to a fixed point format that supports
+       * three decimal digits of precision, and then converted back to
+       * floating point on output. Any additional precision in scalar
+       * resource values is discarded (via rounding).
+       * </pre>
+       */
+      public boolean hasValue() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required double value = 1;</code>
+       *
+       * <pre>
+       * Scalar values are represented using floating point. To reduce
+       * the chance of unpredictable floating point behavior due to
+       * roundoff error, Mesos only supports three decimal digits of
+       * precision for scalar resource values. That is, floating point
+       * values are converted to a fixed point format that supports
+       * three decimal digits of precision, and then converted back to
+       * floating point on output. Any additional precision in scalar
+       * resource values is discarded (via rounding).
+       * </pre>
+       */
+      public double getValue() {
+        return value_;
+      }
+
+      private void initFields() {
+        value_ = 0D;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasValue()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeDouble(1, value_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeDoubleSize(1, value_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.Protos.Value.Scalar parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Scalar parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Scalar parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Scalar parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Scalar parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Scalar parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Scalar parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Scalar parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Scalar parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Scalar parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.Protos.Value.Scalar prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.Value.Scalar}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.Protos.Value.ScalarOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Value_Scalar_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Value_Scalar_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.Value.Scalar.class, org.apache.mesos.v1.Protos.Value.Scalar.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.Protos.Value.Scalar.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          value_ = 0D;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Value_Scalar_descriptor;
+        }
+
+        public org.apache.mesos.v1.Protos.Value.Scalar getDefaultInstanceForType() {
+          return org.apache.mesos.v1.Protos.Value.Scalar.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.Protos.Value.Scalar build() {
+          org.apache.mesos.v1.Protos.Value.Scalar result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.Protos.Value.Scalar buildPartial() {
+          org.apache.mesos.v1.Protos.Value.Scalar result = new org.apache.mesos.v1.Protos.Value.Scalar(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.value_ = value_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.Protos.Value.Scalar) {
+            return mergeFrom((org.apache.mesos.v1.Protos.Value.Scalar)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.Protos.Value.Scalar other) {
+          if (other == org.apache.mesos.v1.Protos.Value.Scalar.getDefaultInstance()) return this;
+          if (other.hasValue()) {
+            setValue(other.getValue());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasValue()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.Protos.Value.Scalar parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.Protos.Value.Scalar) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required double value = 1;
+        private double value_ ;
+        /**
+         * <code>required double value = 1;</code>
+         *
+         * <pre>
+         * Scalar values are represented using floating point. To reduce
+         * the chance of unpredictable floating point behavior due to
+         * roundoff error, Mesos only supports three decimal digits of
+         * precision for scalar resource values. That is, floating point
+         * values are converted to a fixed point format that supports
+         * three decimal digits of precision, and then converted back to
+         * floating point on output. Any additional precision in scalar
+         * resource values is discarded (via rounding).
+         * </pre>
+         */
+        public boolean hasValue() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required double value = 1;</code>
+         *
+         * <pre>
+         * Scalar values are represented using floating point. To reduce
+         * the chance of unpredictable floating point behavior due to
+         * roundoff error, Mesos only supports three decimal digits of
+         * precision for scalar resource values. That is, floating point
+         * values are converted to a fixed point format that supports
+         * three decimal digits of precision, and then converted back to
+         * floating point on output. Any additional precision in scalar
+         * resource values is discarded (via rounding).
+         * </pre>
+         */
+        public double getValue() {
+          return value_;
+        }
+        /**
+         * <code>required double value = 1;</code>
+         *
+         * <pre>
+         * Scalar values are represented using floating point. To reduce
+         * the chance of unpredictable floating point behavior due to
+         * roundoff error, Mesos only supports three decimal digits of
+         * precision for scalar resource values. That is, floating point
+         * values are converted to a fixed point format that supports
+         * three decimal digits of precision, and then converted back to
+         * floating point on output. Any additional precision in scalar
+         * resource values is discarded (via rounding).
+         * </pre>
+         */
+        public Builder setValue(double value) {
+          bitField0_ |= 0x00000001;
+          value_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required double value = 1;</code>
+         *
+         * <pre>
+         * Scalar values are represented using floating point. To reduce
+         * the chance of unpredictable floating point behavior due to
+         * roundoff error, Mesos only supports three decimal digits of
+         * precision for scalar resource values. That is, floating point
+         * values are converted to a fixed point format that supports
+         * three decimal digits of precision, and then converted back to
+         * floating point on output. Any additional precision in scalar
+         * resource values is discarded (via rounding).
+         * </pre>
+         */
+        public Builder clearValue() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          value_ = 0D;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.Value.Scalar)
+      }
+
+      static {
+        defaultInstance = new Scalar(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.Value.Scalar)
+    }
+
+    public interface RangeOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required uint64 begin = 1;
+      /**
+       * <code>required uint64 begin = 1;</code>
+       */
+      boolean hasBegin();
+      /**
+       * <code>required uint64 begin = 1;</code>
+       */
+      long getBegin();
+
+      // required uint64 end = 2;
+      /**
+       * <code>required uint64 end = 2;</code>
+       */
+      boolean hasEnd();
+      /**
+       * <code>required uint64 end = 2;</code>
+       */
+      long getEnd();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.Value.Range}
+     */
+    public static final class Range extends
+        com.google.protobuf.GeneratedMessage
+        implements RangeOrBuilder {
+      // Use Range.newBuilder() to construct.
+      private Range(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Range(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Range defaultInstance;
+      public static Range getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Range getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Range(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 8: {
+                bitField0_ |= 0x00000001;
+                begin_ = input.readUInt64();
+                break;
+              }
+              case 16: {
+                bitField0_ |= 0x00000002;
+                end_ = input.readUInt64();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Value_Range_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Value_Range_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.Value.Range.class, org.apache.mesos.v1.Protos.Value.Range.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Range> PARSER =
+          new com.google.protobuf.AbstractParser<Range>() {
+        public Range parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Range(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Range> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required uint64 begin = 1;
+      public static final int BEGIN_FIELD_NUMBER = 1;
+      private long begin_;
+      /**
+       * <code>required uint64 begin = 1;</code>
+       */
+      public boolean hasBegin() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required uint64 begin = 1;</code>
+       */
+      public long getBegin() {
+        return begin_;
+      }
+
+      // required uint64 end = 2;
+      public static final int END_FIELD_NUMBER = 2;
+      private long end_;
+      /**
+       * <code>required uint64 end = 2;</code>
+       */
+      public boolean hasEnd() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required uint64 end = 2;</code>
+       */
+      public long getEnd() {
+        return end_;
+      }
+
+      private void initFields() {
+        begin_ = 0L;
+        end_ = 0L;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasBegin()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!hasEnd()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeUInt64(1, begin_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeUInt64(2, end_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeUInt64Size(1, begin_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeUInt64Size(2, end_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.Protos.Value.Range parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Range parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Range parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Range parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Range parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Range parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Range parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Range parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Range parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Range parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.Protos.Value.Range prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.Value.Range}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.Protos.Value.RangeOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Value_Range_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Value_Range_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.Value.Range.class, org.apache.mesos.v1.Protos.Value.Range.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.Protos.Value.Range.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          begin_ = 0L;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          end_ = 0L;
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Value_Range_descriptor;
+        }
+
+        public org.apache.mesos.v1.Protos.Value.Range getDefaultInstanceForType() {
+          return org.apache.mesos.v1.Protos.Value.Range.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.Protos.Value.Range build() {
+          org.apache.mesos.v1.Protos.Value.Range result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.Protos.Value.Range buildPartial() {
+          org.apache.mesos.v1.Protos.Value.Range result = new org.apache.mesos.v1.Protos.Value.Range(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.begin_ = begin_;
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          result.end_ = end_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.Protos.Value.Range) {
+            return mergeFrom((org.apache.mesos.v1.Protos.Value.Range)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.Protos.Value.Range other) {
+          if (other == org.apache.mesos.v1.Protos.Value.Range.getDefaultInstance()) return this;
+          if (other.hasBegin()) {
+            setBegin(other.getBegin());
+          }
+          if (other.hasEnd()) {
+            setEnd(other.getEnd());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasBegin()) {
+            
+            return false;
+          }
+          if (!hasEnd()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.Protos.Value.Range parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.Protos.Value.Range) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required uint64 begin = 1;
+        private long begin_ ;
+        /**
+         * <code>required uint64 begin = 1;</code>
+         */
+        public boolean hasBegin() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required uint64 begin = 1;</code>
+         */
+        public long getBegin() {
+          return begin_;
+        }
+        /**
+         * <code>required uint64 begin = 1;</code>
+         */
+        public Builder setBegin(long value) {
+          bitField0_ |= 0x00000001;
+          begin_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required uint64 begin = 1;</code>
+         */
+        public Builder clearBegin() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          begin_ = 0L;
+          onChanged();
+          return this;
+        }
+
+        // required uint64 end = 2;
+        private long end_ ;
+        /**
+         * <code>required uint64 end = 2;</code>
+         */
+        public boolean hasEnd() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>required uint64 end = 2;</code>
+         */
+        public long getEnd() {
+          return end_;
+        }
+        /**
+         * <code>required uint64 end = 2;</code>
+         */
+        public Builder setEnd(long value) {
+          bitField0_ |= 0x00000002;
+          end_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required uint64 end = 2;</code>
+         */
+        public Builder clearEnd() {
+          bitField0_ = (bitField0_ & ~0x00000002);
+          end_ = 0L;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.Value.Range)
+      }
+
+      static {
+        defaultInstance = new Range(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.Value.Range)
+    }
+
+    public interface RangesOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // repeated .mesos.v1.Value.Range range = 1;
+      /**
+       * <code>repeated .mesos.v1.Value.Range range = 1;</code>
+       */
+      java.util.List<org.apache.mesos.v1.Protos.Value.Range> 
+          getRangeList();
+      /**
+       * <code>repeated .mesos.v1.Value.Range range = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.Value.Range getRange(int index);
+      /**
+       * <code>repeated .mesos.v1.Value.Range range = 1;</code>
+       */
+      int getRangeCount();
+      /**
+       * <code>repeated .mesos.v1.Value.Range range = 1;</code>
+       */
+      java.util.List<? extends org.apache.mesos.v1.Protos.Value.RangeOrBuilder> 
+          getRangeOrBuilderList();
+      /**
+       * <code>repeated .mesos.v1.Value.Range range = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.Value.RangeOrBuilder getRangeOrBuilder(
+          int index);
+    }
+    /**
+     * Protobuf type {@code mesos.v1.Value.Ranges}
+     */
+    public static final class Ranges extends
+        com.google.protobuf.GeneratedMessage
+        implements RangesOrBuilder {
+      // Use Ranges.newBuilder() to construct.
+      private Ranges(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Ranges(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Ranges defaultInstance;
+      public static Ranges getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Ranges getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Ranges(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                  range_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Value.Range>();
+                  mutable_bitField0_ |= 0x00000001;
+                }
+                range_.add(input.readMessage(org.apache.mesos.v1.Protos.Value.Range.PARSER, extensionRegistry));
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+            range_ = java.util.Collections.unmodifiableList(range_);
+          }
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Value_Ranges_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Value_Ranges_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.Value.Ranges.class, org.apache.mesos.v1.Protos.Value.Ranges.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Ranges> PARSER =
+          new com.google.protobuf.AbstractParser<Ranges>() {
+        public Ranges parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Ranges(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Ranges> getParserForType() {
+        return PARSER;
+      }
+
+      // repeated .mesos.v1.Value.Range range = 1;
+      public static final int RANGE_FIELD_NUMBER = 1;
+      private java.util.List<org.apache.mesos.v1.Protos.Value.Range> range_;
+      /**
+       * <code>repeated .mesos.v1.Value.Range range = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Value.Range> getRangeList() {
+        return range_;
+      }
+      /**
+       * <code>repeated .mesos.v1.Value.Range range = 1;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.Value.RangeOrBuilder> 
+          getRangeOrBuilderList() {
+        return range_;
+      }
+      /**
+       * <code>repeated .mesos.v1.Value.Range range = 1;</code>
+       */
+      public int getRangeCount() {
+        return range_.size();
+      }
+      /**
+       * <code>repeated .mesos.v1.Value.Range range = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.Value.Range getRange(int index) {
+        return range_.get(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.Value.Range range = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.Value.RangeOrBuilder getRangeOrBuilder(
+          int index) {
+        return range_.get(index);
+      }
+
+      private void initFields() {
+        range_ = java.util.Collections.emptyList();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        for (int i = 0; i < getRangeCount(); i++) {
+          if (!getRange(i).isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        for (int i = 0; i < range_.size(); i++) {
+          output.writeMessage(1, range_.get(i));
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        for (int i = 0; i < range_.size(); i++) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, range_.get(i));
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.Protos.Value.Ranges parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Ranges parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Ranges parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Ranges parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Ranges parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Ranges parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Ranges parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Ranges parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Ranges parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Ranges parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.Protos.Value.Ranges prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.Value.Ranges}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.Protos.Value.RangesOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Value_Ranges_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Value_Ranges_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.Value.Ranges.class, org.apache.mesos.v1.Protos.Value.Ranges.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.Protos.Value.Ranges.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getRangeFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (rangeBuilder_ == null) {
+            range_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000001);
+          } else {
+            rangeBuilder_.clear();
+          }
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Value_Ranges_descriptor;
+        }
+
+        public org.apache.mesos.v1.Protos.Value.Ranges getDefaultInstanceForType() {
+          return org.apache.mesos.v1.Protos.Value.Ranges.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.Protos.Value.Ranges build() {
+          org.apache.mesos.v1.Protos.Value.Ranges result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.Protos.Value.Ranges buildPartial() {
+          org.apache.mesos.v1.Protos.Value.Ranges result = new org.apache.mesos.v1.Protos.Value.Ranges(this);
+          int from_bitField0_ = bitField0_;
+          if (rangeBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              range_ = java.util.Collections.unmodifiableList(range_);
+              bitField0_ = (bitField0_ & ~0x00000001);
+            }
+            result.range_ = range_;
+          } else {
+            result.range_ = rangeBuilder_.build();
+          }
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.Protos.Value.Ranges) {
+            return mergeFrom((org.apache.mesos.v1.Protos.Value.Ranges)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.Protos.Value.Ranges other) {
+          if (other == org.apache.mesos.v1.Protos.Value.Ranges.getDefaultInstance()) return this;
+          if (rangeBuilder_ == null) {
+            if (!other.range_.isEmpty()) {
+              if (range_.isEmpty()) {
+                range_ = other.range_;
+                bitField0_ = (bitField0_ & ~0x00000001);
+              } else {
+                ensureRangeIsMutable();
+                range_.addAll(other.range_);
+              }
+              onChanged();
+            }
+          } else {
+            if (!other.range_.isEmpty()) {
+              if (rangeBuilder_.isEmpty()) {
+                rangeBuilder_.dispose();
+                rangeBuilder_ = null;
+                range_ = other.range_;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                rangeBuilder_ = 
+                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                     getRangeFieldBuilder() : null;
+              } else {
+                rangeBuilder_.addAllMessages(other.range_);
+              }
+            }
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          for (int i = 0; i < getRangeCount(); i++) {
+            if (!getRange(i).isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.Protos.Value.Ranges parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.Protos.Value.Ranges) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // repeated .mesos.v1.Value.Range range = 1;
+        private java.util.List<org.apache.mesos.v1.Protos.Value.Range> range_ =
+          java.util.Collections.emptyList();
+        private void ensureRangeIsMutable() {
+          if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+            range_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Value.Range>(range_);
+            bitField0_ |= 0x00000001;
+           }
+        }
+
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.v1.Protos.Value.Range, org.apache.mesos.v1.Protos.Value.Range.Builder, org.apache.mesos.v1.Protos.Value.RangeOrBuilder> rangeBuilder_;
+
+        /**
+         * <code>repeated .mesos.v1.Value.Range range = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.v1.Protos.Value.Range> getRangeList() {
+          if (rangeBuilder_ == null) {
+            return java.util.Collections.unmodifiableList(range_);
+          } else {
+            return rangeBuilder_.getMessageList();
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.Value.Range range = 1;</code>
+         */
+        public int getRangeCount() {
+          if (rangeBuilder_ == null) {
+            return range_.size();
+          } else {
+            return rangeBuilder_.getCount();
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.Value.Range range = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.Value.Range getRange(int index) {
+          if (rangeBuilder_ == null) {
+            return range_.get(index);
+          } else {
+            return rangeBuilder_.getMessage(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.Value.Range range = 1;</code>
+         */
+        public Builder setRange(
+            int index, org.apache.mesos.v1.Protos.Value.Range value) {
+          if (rangeBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureRangeIsMutable();
+            range_.set(index, value);
+            onChanged();
+          } else {
+            rangeBuilder_.setMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Value.Range range = 1;</code>
+         */
+        public Builder setRange(
+            int index, org.apache.mesos.v1.Protos.Value.Range.Builder builderForValue) {
+          if (rangeBuilder_ == null) {
+            ensureRangeIsMutable();
+            range_.set(index, builderForValue.build());
+            onChanged();
+          } else {
+            rangeBuilder_.setMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Value.Range range = 1;</code>
+         */
+        public Builder addRange(org.apache.mesos.v1.Protos.Value.Range value) {
+          if (rangeBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureRangeIsMutable();
+            range_.add(value);
+            onChanged();
+          } else {
+            rangeBuilder_.addMessage(value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Value.Range range = 1;</code>
+         */
+        public Builder addRange(
+            int index, org.apache.mesos.v1.Protos.Value.Range value) {
+          if (rangeBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureRangeIsMutable();
+            range_.add(index, value);
+            onChanged();
+          } else {
+            rangeBuilder_.addMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Value.Range range = 1;</code>
+         */
+        public Builder addRange(
+            org.apache.mesos.v1.Protos.Value.Range.Builder builderForValue) {
+          if (rangeBuilder_ == null) {
+            ensureRangeIsMutable();
+            range_.add(builderForValue.build());
+            onChanged();
+          } else {
+            rangeBuilder_.addMessage(builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Value.Range range = 1;</code>
+         */
+        public Builder addRange(
+            int index, org.apache.mesos.v1.Protos.Value.Range.Builder builderForValue) {
+          if (rangeBuilder_ == null) {
+            ensureRangeIsMutable();
+            range_.add(index, builderForValue.build());
+            onChanged();
+          } else {
+            rangeBuilder_.addMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Value.Range range = 1;</code>
+         */
+        public Builder addAllRange(
+            java.lang.Iterable<? extends org.apache.mesos.v1.Protos.Value.Range> values) {
+          if (rangeBuilder_ == null) {
+            ensureRangeIsMutable();
+            super.addAll(values, range_);
+            onChanged();
+          } else {
+            rangeBuilder_.addAllMessages(values);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Value.Range range = 1;</code>
+         */
+        public Builder clearRange() {
+          if (rangeBuilder_ == null) {
+            range_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000001);
+            onChanged();
+          } else {
+            rangeBuilder_.clear();
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Value.Range range = 1;</code>
+         */
+        public Builder removeRange(int index) {
+          if (rangeBuilder_ == null) {
+            ensureRangeIsMutable();
+            range_.remove(index);
+            onChanged();
+          } else {
+            rangeBuilder_.remove(index);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Value.Range range = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.Value.Range.Builder getRangeBuilder(
+            int index) {
+          return getRangeFieldBuilder().getBuilder(index);
+        }
+        /**
+         * <code>repeated .mesos.v1.Value.Range range = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.Value.RangeOrBuilder getRangeOrBuilder(
+            int index) {
+          if (rangeBuilder_ == null) {
+            return range_.get(index);  } else {
+            return rangeBuilder_.getMessageOrBuilder(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.Value.Range range = 1;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.v1.Protos.Value.RangeOrBuilder> 
+             getRangeOrBuilderList() {
+          if (rangeBuilder_ != null) {
+            return rangeBuilder_.getMessageOrBuilderList();
+          } else {
+            return java.util.Collections.unmodifiableList(range_);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.Value.Range range = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.Value.Range.Builder addRangeBuilder() {
+          return getRangeFieldBuilder().addBuilder(
+              org.apache.mesos.v1.Protos.Value.Range.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.v1.Value.Range range = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.Value.Range.Builder addRangeBuilder(
+            int index) {
+          return getRangeFieldBuilder().addBuilder(
+              index, org.apache.mesos.v1.Protos.Value.Range.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.v1.Value.Range range = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.v1.Protos.Value.Range.Builder> 
+             getRangeBuilderList() {
+          return getRangeFieldBuilder().getBuilderList();
+        }
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.v1.Protos.Value.Range, org.apache.mesos.v1.Protos.Value.Range.Builder, org.apache.mesos.v1.Protos.Value.RangeOrBuilder> 
+            getRangeFieldBuilder() {
+          if (rangeBuilder_ == null) {
+            rangeBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.v1.Protos.Value.Range, org.apache.mesos.v1.Protos.Value.Range.Builder, org.apache.mesos.v1.Protos.Value.RangeOrBuilder>(
+                    range_,
+                    ((bitField0_ & 0x00000001) == 0x00000001),
+                    getParentForChildren(),
+                    isClean());
+            range_ = null;
+          }
+          return rangeBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.Value.Ranges)
+      }
+
+      static {
+        defaultInstance = new Ranges(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.Value.Ranges)
+    }
+
+    public interface SetOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // repeated string item = 1;
+      /**
+       * <code>repeated string item = 1;</code>
+       */
+      java.util.List<java.lang.String>
+      getItemList();
+      /**
+       * <code>repeated string item = 1;</code>
+       */
+      int getItemCount();
+      /**
+       * <code>repeated string item = 1;</code>
+       */
+      java.lang.String getItem(int index);
+      /**
+       * <code>repeated string item = 1;</code>
+       */
+      com.google.protobuf.ByteString
+          getItemBytes(int index);
+    }
+    /**
+     * Protobuf type {@code mesos.v1.Value.Set}
+     */
+    public static final class Set extends
+        com.google.protobuf.GeneratedMessage
+        implements SetOrBuilder {
+      // Use Set.newBuilder() to construct.
+      private Set(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Set(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Set defaultInstance;
+      public static Set getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Set getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Set(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                  item_ = new com.google.protobuf.LazyStringArrayList();
+                  mutable_bitField0_ |= 0x00000001;
+                }
+                item_.add(input.readBytes());
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+            item_ = new com.google.protobuf.UnmodifiableLazyStringList(item_);
+          }
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Value_Set_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Value_Set_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.Value.Set.class, org.apache.mesos.v1.Protos.Value.Set.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Set> PARSER =
+          new com.google.protobuf.AbstractParser<Set>() {
+        public Set parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Set(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Set> getParserForType() {
+        return PARSER;
+      }
+
+      // repeated string item = 1;
+      public static final int ITEM_FIELD_NUMBER = 1;
+      private com.google.protobuf.LazyStringList item_;
+      /**
+       * <code>repeated string item = 1;</code>
+       */
+      public java.util.List<java.lang.String>
+          getItemList() {
+        return item_;
+      }
+      /**
+       * <code>repeated string item = 1;</code>
+       */
+      public int getItemCount() {
+        return item_.size();
+      }
+      /**
+       * <code>repeated string item = 1;</code>
+       */
+      public java.lang.String getItem(int index) {
+        return item_.get(index);
+      }
+      /**
+       * <code>repeated string item = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getItemBytes(int index) {
+        return item_.getByteString(index);
+      }
+
+      private void initFields() {
+        item_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        for (int i = 0; i < item_.size(); i++) {
+          output.writeBytes(1, item_.getByteString(i));
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        {
+          int dataSize = 0;
+          for (int i = 0; i < item_.size(); i++) {
+            dataSize += com.google.protobuf.CodedOutputStream
+              .computeBytesSizeNoTag(item_.getByteString(i));
+          }
+          size += dataSize;
+          size += 1 * getItemList().size();
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.Protos.Value.Set parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Set parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Set parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Set parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Set parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Set parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Set parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Set parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Set parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Set parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.Protos.Value.Set prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.Value.Set}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.Protos.Value.SetOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Value_Set_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Value_Set_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.Value.Set.class, org.apache.mesos.v1.Protos.Value.Set.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.Protos.Value.Set.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          item_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Value_Set_descriptor;
+        }
+
+        public org.apache.mesos.v1.Protos.Value.Set getDefaultInstanceForType() {
+          return org.apache.mesos.v1.Protos.Value.Set.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.Protos.Value.Set build() {
+          org.apache.mesos.v1.Protos.Value.Set result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.Protos.Value.Set buildPartial() {
+          org.apache.mesos.v1.Protos.Value.Set result = new org.apache.mesos.v1.Protos.Value.Set(this);
+          int from_bitField0_ = bitField0_;
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            item_ = new com.google.protobuf.UnmodifiableLazyStringList(
+                item_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.item_ = item_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.Protos.Value.Set) {
+            return mergeFrom((org.apache.mesos.v1.Protos.Value.Set)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.Protos.Value.Set other) {
+          if (other == org.apache.mesos.v1.Protos.Value.Set.getDefaultInstance()) return this;
+          if (!other.item_.isEmpty()) {
+            if (item_.isEmpty()) {
+              item_ = other.item_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureItemIsMutable();
+              item_.addAll(other.item_);
+            }
+            onChanged();
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.Protos.Value.Set parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.Protos.Value.Set) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // repeated string item = 1;
+        private com.google.protobuf.LazyStringList item_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+        private void ensureItemIsMutable() {
+          if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+            item_ = new com.google.protobuf.LazyStringArrayList(item_);
+            bitField0_ |= 0x00000001;
+           }
+        }
+        /**
+         * <code>repeated string item = 1;</code>
+         */
+        public java.util.List<java.lang.String>
+            getItemList() {
+          return java.util.Collections.unmodifiableList(item_);
+        }
+        /**
+         * <code>repeated string item = 1;</code>
+         */
+        public int getItemCount() {
+          return item_.size();
+        }
+        /**
+         * <code>repeated string item = 1;</code>
+         */
+        public java.lang.String getItem(int index) {
+          return item_.get(index);
+        }
+        /**
+         * <code>repeated string item = 1;</code>
+         */
+        public com.google.protobuf.ByteString
+            getItemBytes(int index) {
+          return item_.getByteString(index);
+        }
+        /**
+         * <code>repeated string item = 1;</code>
+         */
+        public Builder setItem(
+            int index, java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureItemIsMutable();
+          item_.set(index, value);
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>repeated string item = 1;</code>
+         */
+        public Builder addItem(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureItemIsMutable();
+          item_.add(value);
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>repeated string item = 1;</code>
+         */
+        public Builder addAllItem(
+            java.lang.Iterable<java.lang.String> values) {
+          ensureItemIsMutable();
+          super.addAll(values, item_);
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>repeated string item = 1;</code>
+         */
+        public Builder clearItem() {
+          item_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>repeated string item = 1;</code>
+         */
+        public Builder addItemBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureItemIsMutable();
+          item_.add(value);
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.Value.Set)
+      }
+
+      static {
+        defaultInstance = new Set(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.Value.Set)
+    }
+
+    public interface TextOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required string value = 1;
+      /**
+       * <code>required string value = 1;</code>
+       */
+      boolean hasValue();
+      /**
+       * <code>required string value = 1;</code>
+       */
+      java.lang.String getValue();
+      /**
+       * <code>required string value = 1;</code>
+       */
+      com.google.protobuf.ByteString
+          getValueBytes();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.Value.Text}
+     */
+    public static final class Text extends
+        com.google.protobuf.GeneratedMessage
+        implements TextOrBuilder {
+      // Use Text.newBuilder() to construct.
+      private Text(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Text(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Text defaultInstance;
+      public static Text getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Text getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Text(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                bitField0_ |= 0x00000001;
+                value_ = input.readBytes();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Value_Text_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Value_Text_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.Value.Text.class, org.apache.mesos.v1.Protos.Value.Text.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Text> PARSER =
+          new com.google.protobuf.AbstractParser<Text>() {
+        public Text parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Text(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Text> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required string value = 1;
+      public static final int VALUE_FIELD_NUMBER = 1;
+      private java.lang.Object value_;
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public boolean hasValue() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public java.lang.String getValue() {
+        java.lang.Object ref = value_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            value_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>required string value = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getValueBytes() {
+        java.lang.Object ref = value_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          value_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      private void initFields() {
+        value_ = "";
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasValue()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeBytes(1, getValueBytes());
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(1, getValueBytes());
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.Protos.Value.Text parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Text parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Text parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Text parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Text parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Text parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Text parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Text parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Text parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Value.Text parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.Protos.Value.Text prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.Value.Text}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.Protos.Value.TextOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Value_Text_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Value_Text_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.Value.Text.class, org.apache.mesos.v1.Protos.Value.Text.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.Protos.Value.Text.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          value_ = "";
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Value_Text_descriptor;
+        }
+
+        public org.apache.mesos.v1.Protos.Value.Text getDefaultInstanceForType() {
+          return org.apache.mesos.v1.Protos.Value.Text.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.Protos.Value.Text build() {
+          org.apache.mesos.v1.Protos.Value.Text result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.Protos.Value.Text buildPartial() {
+          org.apache.mesos.v1.Protos.Value.Text result = new org.apache.mesos.v1.Protos.Value.Text(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.value_ = value_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.Protos.Value.Text) {
+            return mergeFrom((org.apache.mesos.v1.Protos.Value.Text)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.Protos.Value.Text other) {
+          if (other == org.apache.mesos.v1.Protos.Value.Text.getDefaultInstance()) return this;
+          if (other.hasValue()) {
+            bitField0_ |= 0x00000001;
+            value_ = other.value_;
+            onChanged();
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasValue()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.Protos.Value.Text parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.Protos.Value.Text) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required string value = 1;
+        private java.lang.Object value_ = "";
+        /**
+         * <code>required string value = 1;</code>
+         */
+        public boolean hasValue() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required string value = 1;</code>
+         */
+        public java.lang.String getValue() {
+          java.lang.Object ref = value_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            value_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>required string value = 1;</code>
+         */
+        public com.google.protobuf.ByteString
+            getValueBytes() {
+          java.lang.Object ref = value_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            value_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>required string value = 1;</code>
+         */
+        public Builder setValue(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          value_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required string value = 1;</code>
+         */
+        public Builder clearValue() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          value_ = getDefaultInstance().getValue();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required string value = 1;</code>
+         */
+        public Builder setValueBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          value_ = value;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.Value.Text)
+      }
+
+      static {
+        defaultInstance = new Text(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.Value.Text)
+    }
+
+    private int bitField0_;
+    // required .mesos.v1.Value.Type type = 1;
+    public static final int TYPE_FIELD_NUMBER = 1;
+    private org.apache.mesos.v1.Protos.Value.Type type_;
+    /**
+     * <code>required .mesos.v1.Value.Type type = 1;</code>
+     */
+    public boolean hasType() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required .mesos.v1.Value.Type type = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.Value.Type getType() {
+      return type_;
+    }
+
+    // optional .mesos.v1.Value.Scalar scalar = 2;
+    public static final int SCALAR_FIELD_NUMBER = 2;
+    private org.apache.mesos.v1.Protos.Value.Scalar scalar_;
+    /**
+     * <code>optional .mesos.v1.Value.Scalar scalar = 2;</code>
+     */
+    public boolean hasScalar() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional .mesos.v1.Value.Scalar scalar = 2;</code>
+     */
+    public org.apache.mesos.v1.Protos.Value.Scalar getScalar() {
+      return scalar_;
+    }
+    /**
+     * <code>optional .mesos.v1.Value.Scalar scalar = 2;</code>
+     */
+    public org.apache.mesos.v1.Protos.Value.ScalarOrBuilder getScalarOrBuilder() {
+      return scalar_;
+    }
+
+    // optional .mesos.v1.Value.Ranges ranges = 3;
+    public static final int RANGES_FIELD_NUMBER = 3;
+    private org.apache.mesos.v1.Protos.Value.Ranges ranges_;
+    /**
+     * <code>optional .mesos.v1.Value.Ranges ranges = 3;</code>
+     */
+    public boolean hasRanges() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional .mesos.v1.Value.Ranges ranges = 3;</code>
+     */
+    public org.apache.mesos.v1.Protos.Value.Ranges getRanges() {
+      return ranges_;
+    }
+    /**
+     * <code>optional .mesos.v1.Value.Ranges ranges = 3;</code>
+     */
+    public org.apache.mesos.v1.Protos.Value.RangesOrBuilder getRangesOrBuilder() {
+      return ranges_;
+    }
+
+    // optional .mesos.v1.Value.Set set = 4;
+    public static final int SET_FIELD_NUMBER = 4;
+    private org.apache.mesos.v1.Protos.Value.Set set_;
+    /**
+     * <code>optional .mesos.v1.Value.Set set = 4;</code>
+     */
+    public boolean hasSet() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional .mesos.v1.Value.Set set = 4;</code>
+     */
+    public org.apache.mesos.v1.Protos.Value.Set getSet() {
+      return set_;
+    }
+    /**
+     * <code>optional .mesos.v1.Value.Set set = 4;</code>
+     */
+    public org.apache.mesos.v1.Protos.Value.SetOrBuilder getSetOrBuilder() {
+      return set_;
+    }
+
+    // optional .mesos.v1.Value.Text text = 5;
+    public static final int TEXT_FIELD_NUMBER = 5;
+    private org.apache.mesos.v1.Protos.Value.Text text_;
+    /**
+     * <code>optional .mesos.v1.Value.Text text = 5;</code>
+     */
+    public boolean hasText() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional .mesos.v1.Value.Text text = 5;</code>
+     */
+    public org.apache.mesos.v1.Protos.Value.Text getText() {
+      return text_;
+    }
+    /**
+     * <code>optional .mesos.v1.Value.Text text = 5;</code>
+     */
+    public org.apache.mesos.v1.Protos.Value.TextOrBuilder getTextOrBuilder() {
+      return text_;
+    }
+
+    private void initFields() {
+      type_ = org.apache.mesos.v1.Protos.Value.Type.SCALAR;
+      scalar_ = org.apache.mesos.v1.Protos.Value.Scalar.getDefaultInstance();
+      ranges_ = org.apache.mesos.v1.Protos.Value.Ranges.getDefaultInstance();
+      set_ = org.apache.mesos.v1.Protos.Value.Set.getDefaultInstance();
+      text_ = org.apache.mesos.v1.Protos.Value.Text.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasType()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (hasScalar()) {
+        if (!getScalar().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasRanges()) {
+        if (!getRanges().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasText()) {
+        if (!getText().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeEnum(1, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(2, scalar_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeMessage(3, ranges_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeMessage(4, set_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeMessage(5, text_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(1, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, scalar_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, ranges_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, set_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(5, text_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.Value parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Value parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Value parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Value parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Value parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Value parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Value parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Value parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Value parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Value parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.Value prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.Value}
+     *
+     * <pre>
+     **
+     * Describes an Attribute or Resource "value". A value is described
+     * using the standard protocol buffer "union" trick.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.ValueOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Value_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Value_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.Value.class, org.apache.mesos.v1.Protos.Value.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.Value.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getScalarFieldBuilder();
+          getRangesFieldBuilder();
+          getSetFieldBuilder();
+          getTextFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        type_ = org.apache.mesos.v1.Protos.Value.Type.SCALAR;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (scalarBuilder_ == null) {
+          scalar_ = org.apache.mesos.v1.Protos.Value.Scalar.getDefaultInstance();
+        } else {
+          scalarBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        if (rangesBuilder_ == null) {
+          ranges_ = org.apache.mesos.v1.Protos.Value.Ranges.getDefaultInstance();
+        } else {
+          rangesBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        if (setBuilder_ == null) {
+          set_ = org.apache.mesos.v1.Protos.Value.Set.getDefaultInstance();
+        } else {
+          setBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        if (textBuilder_ == null) {
+          text_ = org.apache.mesos.v1.Protos.Value.Text.getDefaultInstance();
+        } else {
+          textBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Value_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.Value getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.Value.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.Value build() {
+        org.apache.mesos.v1.Protos.Value result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.Value buildPartial() {
+        org.apache.mesos.v1.Protos.Value result = new org.apache.mesos.v1.Protos.Value(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.type_ = type_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (scalarBuilder_ == null) {
+          result.scalar_ = scalar_;
+        } else {
+          result.scalar_ = scalarBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        if (rangesBuilder_ == null) {
+          result.ranges_ = ranges_;
+        } else {
+          result.ranges_ = rangesBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        if (setBuilder_ == null) {
+          result.set_ = set_;
+        } else {
+          result.set_ = setBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        if (textBuilder_ == null) {
+          result.text_ = text_;
+        } else {
+          result.text_ = textBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.Value) {
+          return mergeFrom((org.apache.mesos.v1.Protos.Value)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.Value other) {
+        if (other == org.apache.mesos.v1.Protos.Value.getDefaultInstance()) return this;
+        if (other.hasType()) {
+          setType(other.getType());
+        }
+        if (other.hasScalar()) {
+          mergeScalar(other.getScalar());
+        }
+        if (other.hasRanges()) {
+          mergeRanges(other.getRanges());
+        }
+        if (other.hasSet()) {
+          mergeSet(other.getSet());
+        }
+        if (other.hasText()) {
+          mergeText(other.getText());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasType()) {
+          
+          return false;
+        }
+        if (hasScalar()) {
+          if (!getScalar().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasRanges()) {
+          if (!getRanges().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasText()) {
+          if (!getText().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.Value parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.Value) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required .mesos.v1.Value.Type type = 1;
+      private org.apache.mesos.v1.Protos.Value.Type type_ = org.apache.mesos.v1.Protos.Value.Type.SCALAR;
+      /**
+       * <code>required .mesos.v1.Value.Type type = 1;</code>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.v1.Value.Type type = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.Value.Type getType() {
+        return type_;
+      }
+      /**
+       * <code>required .mesos.v1.Value.Type type = 1;</code>
+       */
+      public Builder setType(org.apache.mesos.v1.Protos.Value.Type value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000001;
+        type_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.Value.Type type = 1;</code>
+       */
+      public Builder clearType() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        type_ = org.apache.mesos.v1.Protos.Value.Type.SCALAR;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.v1.Value.Scalar scalar = 2;
+      private org.apache.mesos.v1.Protos.Value.Scalar scalar_ = org.apache.mesos.v1.Protos.Value.Scalar.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Value.Scalar, org.apache.mesos.v1.Protos.Value.Scalar.Builder, org.apache.mesos.v1.Protos.Value.ScalarOrBuilder> scalarBuilder_;
+      /**
+       * <code>optional .mesos.v1.Value.Scalar scalar = 2;</code>
+       */
+      public boolean hasScalar() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Scalar scalar = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.Value.Scalar getScalar() {
+        if (scalarBuilder_ == null) {
+          return scalar_;
+        } else {
+          return scalarBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Scalar scalar = 2;</code>
+       */
+      public Builder setScalar(org.apache.mesos.v1.Protos.Value.Scalar value) {
+        if (scalarBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          scalar_ = value;
+          onChanged();
+        } else {
+          scalarBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Scalar scalar = 2;</code>
+       */
+      public Builder setScalar(
+          org.apache.mesos.v1.Protos.Value.Scalar.Builder builderForValue) {
+        if (scalarBuilder_ == null) {
+          scalar_ = builderForValue.build();
+          onChanged();
+        } else {
+          scalarBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Scalar scalar = 2;</code>
+       */
+      public Builder mergeScalar(org.apache.mesos.v1.Protos.Value.Scalar value) {
+        if (scalarBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              scalar_ != org.apache.mesos.v1.Protos.Value.Scalar.getDefaultInstance()) {
+            scalar_ =
+              org.apache.mesos.v1.Protos.Value.Scalar.newBuilder(scalar_).mergeFrom(value).buildPartial();
+          } else {
+            scalar_ = value;
+          }
+          onChanged();
+        } else {
+          scalarBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Scalar scalar = 2;</code>
+       */
+      public Builder clearScalar() {
+        if (scalarBuilder_ == null) {
+          scalar_ = org.apache.mesos.v1.Protos.Value.Scalar.getDefaultInstance();
+          onChanged();
+        } else {
+          scalarBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Scalar scalar = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.Value.Scalar.Builder getScalarBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getScalarFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Scalar scalar = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.Value.ScalarOrBuilder getScalarOrBuilder() {
+        if (scalarBuilder_ != null) {
+          return scalarBuilder_.getMessageOrBuilder();
+        } else {
+          return scalar_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Scalar scalar = 2;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Value.Scalar, org.apache.mesos.v1.Protos.Value.Scalar.Builder, org.apache.mesos.v1.Protos.Value.ScalarOrBuilder> 
+          getScalarFieldBuilder() {
+        if (scalarBuilder_ == null) {
+          scalarBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Value.Scalar, org.apache.mesos.v1.Protos.Value.Scalar.Builder, org.apache.mesos.v1.Protos.Value.ScalarOrBuilder>(
+                  scalar_,
+                  getParentForChildren(),
+                  isClean());
+          scalar_ = null;
+        }
+        return scalarBuilder_;
+      }
+
+      // optional .mesos.v1.Value.Ranges ranges = 3;
+      private org.apache.mesos.v1.Protos.Value.Ranges ranges_ = org.apache.mesos.v1.Protos.Value.Ranges.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Value.Ranges, org.apache.mesos.v1.Protos.Value.Ranges.Builder, org.apache.mesos.v1.Protos.Value.RangesOrBuilder> rangesBuilder_;
+      /**
+       * <code>optional .mesos.v1.Value.Ranges ranges = 3;</code>
+       */
+      public boolean hasRanges() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Ranges ranges = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.Value.Ranges getRanges() {
+        if (rangesBuilder_ == null) {
+          return ranges_;
+        } else {
+          return rangesBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Ranges ranges = 3;</code>
+       */
+      public Builder setRanges(org.apache.mesos.v1.Protos.Value.Ranges value) {
+        if (rangesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ranges_ = value;
+          onChanged();
+        } else {
+          rangesBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Ranges ranges = 3;</code>
+       */
+      public Builder setRanges(
+          org.apache.mesos.v1.Protos.Value.Ranges.Builder builderForValue) {
+        if (rangesBuilder_ == null) {
+          ranges_ = builderForValue.build();
+          onChanged();
+        } else {
+          rangesBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Ranges ranges = 3;</code>
+       */
+      public Builder mergeRanges(org.apache.mesos.v1.Protos.Value.Ranges value) {
+        if (rangesBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) == 0x00000004) &&
+              ranges_ != org.apache.mesos.v1.Protos.Value.Ranges.getDefaultInstance()) {
+            ranges_ =
+              org.apache.mesos.v1.Protos.Value.Ranges.newBuilder(ranges_).mergeFrom(value).buildPartial();
+          } else {
+            ranges_ = value;
+          }
+          onChanged();
+        } else {
+          rangesBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Ranges ranges = 3;</code>
+       */
+      public Builder clearRanges() {
+        if (rangesBuilder_ == null) {
+          ranges_ = org.apache.mesos.v1.Protos.Value.Ranges.getDefaultInstance();
+          onChanged();
+        } else {
+          rangesBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Ranges ranges = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.Value.Ranges.Builder getRangesBuilder() {
+        bitField0_ |= 0x00000004;
+        onChanged();
+        return getRangesFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Ranges ranges = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.Value.RangesOrBuilder getRangesOrBuilder() {
+        if (rangesBuilder_ != null) {
+          return rangesBuilder_.getMessageOrBuilder();
+        } else {
+          return ranges_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Ranges ranges = 3;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Value.Ranges, org.apache.mesos.v1.Protos.Value.Ranges.Builder, org.apache.mesos.v1.Protos.Value.RangesOrBuilder> 
+          getRangesFieldBuilder() {
+        if (rangesBuilder_ == null) {
+          rangesBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Value.Ranges, org.apache.mesos.v1.Protos.Value.Ranges.Builder, org.apache.mesos.v1.Protos.Value.RangesOrBuilder>(
+                  ranges_,
+                  getParentForChildren(),
+                  isClean());
+          ranges_ = null;
+        }
+        return rangesBuilder_;
+      }
+
+      // optional .mesos.v1.Value.Set set = 4;
+      private org.apache.mesos.v1.Protos.Value.Set set_ = org.apache.mesos.v1.Protos.Value.Set.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Value.Set, org.apache.mesos.v1.Protos.Value.Set.Builder, org.apache.mesos.v1.Protos.Value.SetOrBuilder> setBuilder_;
+      /**
+       * <code>optional .mesos.v1.Value.Set set = 4;</code>
+       */
+      public boolean hasSet() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Set set = 4;</code>
+       */
+      public org.apache.mesos.v1.Protos.Value.Set getSet() {
+        if (setBuilder_ == null) {
+          return set_;
+        } else {
+          return setBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Set set = 4;</code>
+       */
+      public Builder setSet(org.apache.mesos.v1.Protos.Value.Set value) {
+        if (setBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          set_ = value;
+          onChanged();
+        } else {
+          setBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Set set = 4;</code>
+       */
+      public Builder setSet(
+          org.apache.mesos.v1.Protos.Value.Set.Builder builderForValue) {
+        if (setBuilder_ == null) {
+          set_ = builderForValue.build();
+          onChanged();
+        } else {
+          setBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Set set = 4;</code>
+       */
+      public Builder mergeSet(org.apache.mesos.v1.Protos.Value.Set value) {
+        if (setBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008) &&
+              set_ != org.apache.mesos.v1.Protos.Value.Set.getDefaultInstance()) {
+            set_ =
+              org.apache.mesos.v1.Protos.Value.Set.newBuilder(set_).mergeFrom(value).buildPartial();
+          } else {
+            set_ = value;
+          }
+          onChanged();
+        } else {
+          setBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Set set = 4;</code>
+       */
+      public Builder clearSet() {
+        if (setBuilder_ == null) {
+          set_ = org.apache.mesos.v1.Protos.Value.Set.getDefaultInstance();
+          onChanged();
+        } else {
+          setBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Set set = 4;</code>
+       */
+      public org.apache.mesos.v1.Protos.Value.Set.Builder getSetBuilder() {
+        bitField0_ |= 0x00000008;
+        onChanged();
+        return getSetFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Set set = 4;</code>
+       */
+      public org.apache.mesos.v1.Protos.Value.SetOrBuilder getSetOrBuilder() {
+        if (setBuilder_ != null) {
+          return setBuilder_.getMessageOrBuilder();
+        } else {
+          return set_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Set set = 4;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Value.Set, org.apache.mesos.v1.Protos.Value.Set.Builder, org.apache.mesos.v1.Protos.Value.SetOrBuilder> 
+          getSetFieldBuilder() {
+        if (setBuilder_ == null) {
+          setBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Value.Set, org.apache.mesos.v1.Protos.Value.Set.Builder, org.apache.mesos.v1.Protos.Value.SetOrBuilder>(
+                  set_,
+                  getParentForChildren(),
+                  isClean());
+          set_ = null;
+        }
+        return setBuilder_;
+      }
+
+      // optional .mesos.v1.Value.Text text = 5;
+      private org.apache.mesos.v1.Protos.Value.Text text_ = org.apache.mesos.v1.Protos.Value.Text.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Value.Text, org.apache.mesos.v1.Protos.Value.Text.Builder, org.apache.mesos.v1.Protos.Value.TextOrBuilder> textBuilder_;
+      /**
+       * <code>optional .mesos.v1.Value.Text text = 5;</code>
+       */
+      public boolean hasText() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Text text = 5;</code>
+       */
+      public org.apache.mesos.v1.Protos.Value.Text getText() {
+        if (textBuilder_ == null) {
+          return text_;
+        } else {
+          return textBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Text text = 5;</code>
+       */
+      public Builder setText(org.apache.mesos.v1.Protos.Value.Text value) {
+        if (textBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          text_ = value;
+          onChanged();
+        } else {
+          textBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Text text = 5;</code>
+       */
+      public Builder setText(
+          org.apache.mesos.v1.Protos.Value.Text.Builder builderForValue) {
+        if (textBuilder_ == null) {
+          text_ = builderForValue.build();
+          onChanged();
+        } else {
+          textBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Text text = 5;</code>
+       */
+      public Builder mergeText(org.apache.mesos.v1.Protos.Value.Text value) {
+        if (textBuilder_ == null) {
+          if (((bitField0_ & 0x00000010) == 0x00000010) &&
+              text_ != org.apache.mesos.v1.Protos.Value.Text.getDefaultInstance()) {
+            text_ =
+              org.apache.mesos.v1.Protos.Value.Text.newBuilder(text_).mergeFrom(value).buildPartial();
+          } else {
+            text_ = value;
+          }
+          onChanged();
+        } else {
+          textBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Text text = 5;</code>
+       */
+      public Builder clearText() {
+        if (textBuilder_ == null) {
+          text_ = org.apache.mesos.v1.Protos.Value.Text.getDefaultInstance();
+          onChanged();
+        } else {
+          textBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Text text = 5;</code>
+       */
+      public org.apache.mesos.v1.Protos.Value.Text.Builder getTextBuilder() {
+        bitField0_ |= 0x00000010;
+        onChanged();
+        return getTextFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Text text = 5;</code>
+       */
+      public org.apache.mesos.v1.Protos.Value.TextOrBuilder getTextOrBuilder() {
+        if (textBuilder_ != null) {
+          return textBuilder_.getMessageOrBuilder();
+        } else {
+          return text_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Text text = 5;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Value.Text, org.apache.mesos.v1.Protos.Value.Text.Builder, org.apache.mesos.v1.Protos.Value.TextOrBuilder> 
+          getTextFieldBuilder() {
+        if (textBuilder_ == null) {
+          textBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Value.Text, org.apache.mesos.v1.Protos.Value.Text.Builder, org.apache.mesos.v1.Protos.Value.TextOrBuilder>(
+                  text_,
+                  getParentForChildren(),
+                  isClean());
+          text_ = null;
+        }
+        return textBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.Value)
+    }
+
+    static {
+      defaultInstance = new Value(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.Value)
+  }
+
+  public interface AttributeOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string name = 1;
+    /**
+     * <code>required string name = 1;</code>
+     */
+    boolean hasName();
+    /**
+     * <code>required string name = 1;</code>
+     */
+    java.lang.String getName();
+    /**
+     * <code>required string name = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getNameBytes();
+
+    // required .mesos.v1.Value.Type type = 2;
+    /**
+     * <code>required .mesos.v1.Value.Type type = 2;</code>
+     */
+    boolean hasType();
+    /**
+     * <code>required .mesos.v1.Value.Type type = 2;</code>
+     */
+    org.apache.mesos.v1.Protos.Value.Type getType();
+
+    // optional .mesos.v1.Value.Scalar scalar = 3;
+    /**
+     * <code>optional .mesos.v1.Value.Scalar scalar = 3;</code>
+     */
+    boolean hasScalar();
+    /**
+     * <code>optional .mesos.v1.Value.Scalar scalar = 3;</code>
+     */
+    org.apache.mesos.v1.Protos.Value.Scalar getScalar();
+    /**
+     * <code>optional .mesos.v1.Value.Scalar scalar = 3;</code>
+     */
+    org.apache.mesos.v1.Protos.Value.ScalarOrBuilder getScalarOrBuilder();
+
+    // optional .mesos.v1.Value.Ranges ranges = 4;
+    /**
+     * <code>optional .mesos.v1.Value.Ranges ranges = 4;</code>
+     */
+    boolean hasRanges();
+    /**
+     * <code>optional .mesos.v1.Value.Ranges ranges = 4;</code>
+     */
+    org.apache.mesos.v1.Protos.Value.Ranges getRanges();
+    /**
+     * <code>optional .mesos.v1.Value.Ranges ranges = 4;</code>
+     */
+    org.apache.mesos.v1.Protos.Value.RangesOrBuilder getRangesOrBuilder();
+
+    // optional .mesos.v1.Value.Set set = 6;
+    /**
+     * <code>optional .mesos.v1.Value.Set set = 6;</code>
+     */
+    boolean hasSet();
+    /**
+     * <code>optional .mesos.v1.Value.Set set = 6;</code>
+     */
+    org.apache.mesos.v1.Protos.Value.Set getSet();
+    /**
+     * <code>optional .mesos.v1.Value.Set set = 6;</code>
+     */
+    org.apache.mesos.v1.Protos.Value.SetOrBuilder getSetOrBuilder();
+
+    // optional .mesos.v1.Value.Text text = 5;
+    /**
+     * <code>optional .mesos.v1.Value.Text text = 5;</code>
+     */
+    boolean hasText();
+    /**
+     * <code>optional .mesos.v1.Value.Text text = 5;</code>
+     */
+    org.apache.mesos.v1.Protos.Value.Text getText();
+    /**
+     * <code>optional .mesos.v1.Value.Text text = 5;</code>
+     */
+    org.apache.mesos.v1.Protos.Value.TextOrBuilder getTextOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.Attribute}
+   *
+   * <pre>
+   **
+   * Describes an attribute that can be set on a machine. For now,
+   * attributes and resources share the same "value" type, but this may
+   * change in the future and attributes may only be string based.
+   * </pre>
+   */
+  public static final class Attribute extends
+      com.google.protobuf.GeneratedMessage
+      implements AttributeOrBuilder {
+    // Use Attribute.newBuilder() to construct.
+    private Attribute(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Attribute(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Attribute defaultInstance;
+    public static Attribute getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Attribute getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Attribute(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              name_ = input.readBytes();
+              break;
+            }
+            case 16: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.v1.Protos.Value.Type value = org.apache.mesos.v1.Protos.Value.Type.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(2, rawValue);
+              } else {
+                bitField0_ |= 0x00000002;
+                type_ = value;
+              }
+              break;
+            }
+            case 26: {
+              org.apache.mesos.v1.Protos.Value.Scalar.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                subBuilder = scalar_.toBuilder();
+              }
+              scalar_ = input.readMessage(org.apache.mesos.v1.Protos.Value.Scalar.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(scalar_);
+                scalar_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000004;
+              break;
+            }
+            case 34: {
+              org.apache.mesos.v1.Protos.Value.Ranges.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                subBuilder = ranges_.toBuilder();
+              }
+              ranges_ = input.readMessage(org.apache.mesos.v1.Protos.Value.Ranges.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(ranges_);
+                ranges_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000008;
+              break;
+            }
+            case 42: {
+              org.apache.mesos.v1.Protos.Value.Text.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000020) == 0x00000020)) {
+                subBuilder = text_.toBuilder();
+              }
+              text_ = input.readMessage(org.apache.mesos.v1.Protos.Value.Text.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(text_);
+                text_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000020;
+              break;
+            }
+            case 50: {
+              org.apache.mesos.v1.Protos.Value.Set.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000010) == 0x00000010)) {
+                subBuilder = set_.toBuilder();
+              }
+              set_ = input.readMessage(org.apache.mesos.v1.Protos.Value.Set.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(set_);
+                set_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000010;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Attribute_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Attribute_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.Attribute.class, org.apache.mesos.v1.Protos.Attribute.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Attribute> PARSER =
+        new com.google.protobuf.AbstractParser<Attribute>() {
+      public Attribute parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Attribute(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Attribute> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string name = 1;
+    public static final int NAME_FIELD_NUMBER = 1;
+    private java.lang.Object name_;
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public boolean hasName() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public java.lang.String getName() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          name_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getNameBytes() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        name_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // required .mesos.v1.Value.Type type = 2;
+    public static final int TYPE_FIELD_NUMBER = 2;
+    private org.apache.mesos.v1.Protos.Value.Type type_;
+    /**
+     * <code>required .mesos.v1.Value.Type type = 2;</code>
+     */
+    public boolean hasType() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>required .mesos.v1.Value.Type type = 2;</code>
+     */
+    public org.apache.mesos.v1.Protos.Value.Type getType() {
+      return type_;
+    }
+
+    // optional .mesos.v1.Value.Scalar scalar = 3;
+    public static final int SCALAR_FIELD_NUMBER = 3;
+    private org.apache.mesos.v1.Protos.Value.Scalar scalar_;
+    /**
+     * <code>optional .mesos.v1.Value.Scalar scalar = 3;</code>
+     */
+    public boolean hasScalar() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional .mesos.v1.Value.Scalar scalar = 3;</code>
+     */
+    public org.apache.mesos.v1.Protos.Value.Scalar getScalar() {
+      return scalar_;
+    }
+    /**
+     * <code>optional .mesos.v1.Value.Scalar scalar = 3;</code>
+     */
+    public org.apache.mesos.v1.Protos.Value.ScalarOrBuilder getScalarOrBuilder() {
+      return scalar_;
+    }
+
+    // optional .mesos.v1.Value.Ranges ranges = 4;
+    public static final int RANGES_FIELD_NUMBER = 4;
+    private org.apache.mesos.v1.Protos.Value.Ranges ranges_;
+    /**
+     * <code>optional .mesos.v1.Value.Ranges ranges = 4;</code>
+     */
+    public boolean hasRanges() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional .mesos.v1.Value.Ranges ranges = 4;</code>
+     */
+    public org.apache.mesos.v1.Protos.Value.Ranges getRanges() {
+      return ranges_;
+    }
+    /**
+     * <code>optional .mesos.v1.Value.Ranges ranges = 4;</code>
+     */
+    public org.apache.mesos.v1.Protos.Value.RangesOrBuilder getRangesOrBuilder() {
+      return ranges_;
+    }
+
+    // optional .mesos.v1.Value.Set set = 6;
+    public static final int SET_FIELD_NUMBER = 6;
+    private org.apache.mesos.v1.Protos.Value.Set set_;
+    /**
+     * <code>optional .mesos.v1.Value.Set set = 6;</code>
+     */
+    public boolean hasSet() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional .mesos.v1.Value.Set set = 6;</code>
+     */
+    public org.apache.mesos.v1.Protos.Value.Set getSet() {
+      return set_;
+    }
+    /**
+     * <code>optional .mesos.v1.Value.Set set = 6;</code>
+     */
+    public org.apache.mesos.v1.Protos.Value.SetOrBuilder getSetOrBuilder() {
+      return set_;
+    }
+
+    // optional .mesos.v1.Value.Text text = 5;
+    public static final int TEXT_FIELD_NUMBER = 5;
+    private org.apache.mesos.v1.Protos.Value.Text text_;
+    /**
+     * <code>optional .mesos.v1.Value.Text text = 5;</code>
+     */
+    public boolean hasText() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional .mesos.v1.Value.Text text = 5;</code>
+     */
+    public org.apache.mesos.v1.Protos.Value.Text getText() {
+      return text_;
+    }
+    /**
+     * <code>optional .mesos.v1.Value.Text text = 5;</code>
+     */
+    public org.apache.mesos.v1.Protos.Value.TextOrBuilder getTextOrBuilder() {
+      return text_;
+    }
+
+    private void initFields() {
+      name_ = "";
+      type_ = org.apache.mesos.v1.Protos.Value.Type.SCALAR;
+      scalar_ = org.apache.mesos.v1.Protos.Value.Scalar.getDefaultInstance();
+      ranges_ = org.apache.mesos.v1.Protos.Value.Ranges.getDefaultInstance();
+      set_ = org.apache.mesos.v1.Protos.Value.Set.getDefaultInstance();
+      text_ = org.apache.mesos.v1.Protos.Value.Text.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasName()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasType()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (hasScalar()) {
+        if (!getScalar().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasRanges()) {
+        if (!getRanges().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasText()) {
+        if (!getText().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeEnum(2, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeMessage(3, scalar_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeMessage(4, ranges_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeMessage(5, text_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeMessage(6, set_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(2, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, scalar_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, ranges_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(5, text_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(6, set_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.Attribute parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Attribute parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Attribute parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Attribute parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Attribute parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Attribute parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Attribute parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Attribute parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Attribute parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Attribute parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.Attribute prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.Attribute}
+     *
+     * <pre>
+     **
+     * Describes an attribute that can be set on a machine. For now,
+     * attributes and resources share the same "value" type, but this may
+     * change in the future and attributes may only be string based.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.AttributeOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Attribute_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Attribute_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.Attribute.class, org.apache.mesos.v1.Protos.Attribute.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.Attribute.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getScalarFieldBuilder();
+          getRangesFieldBuilder();
+          getSetFieldBuilder();
+          getTextFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        name_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        type_ = org.apache.mesos.v1.Protos.Value.Type.SCALAR;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        if (scalarBuilder_ == null) {
+          scalar_ = org.apache.mesos.v1.Protos.Value.Scalar.getDefaultInstance();
+        } else {
+          scalarBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        if (rangesBuilder_ == null) {
+          ranges_ = org.apache.mesos.v1.Protos.Value.Ranges.getDefaultInstance();
+        } else {
+          rangesBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        if (setBuilder_ == null) {
+          set_ = org.apache.mesos.v1.Protos.Value.Set.getDefaultInstance();
+        } else {
+          setBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        if (textBuilder_ == null) {
+          text_ = org.apache.mesos.v1.Protos.Value.Text.getDefaultInstance();
+        } else {
+          textBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Attribute_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.Attribute getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.Attribute.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.Attribute build() {
+        org.apache.mesos.v1.Protos.Attribute result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.Attribute buildPartial() {
+        org.apache.mesos.v1.Protos.Attribute result = new org.apache.mesos.v1.Protos.Attribute(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.name_ = name_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.type_ = type_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        if (scalarBuilder_ == null) {
+          result.scalar_ = scalar_;
+        } else {
+          result.scalar_ = scalarBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        if (rangesBuilder_ == null) {
+          result.ranges_ = ranges_;
+        } else {
+          result.ranges_ = rangesBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        if (setBuilder_ == null) {
+          result.set_ = set_;
+        } else {
+          result.set_ = setBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        if (textBuilder_ == null) {
+          result.text_ = text_;
+        } else {
+          result.text_ = textBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.Attribute) {
+          return mergeFrom((org.apache.mesos.v1.Protos.Attribute)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.Attribute other) {
+        if (other == org.apache.mesos.v1.Protos.Attribute.getDefaultInstance()) return this;
+        if (other.hasName()) {
+          bitField0_ |= 0x00000001;
+          name_ = other.name_;
+          onChanged();
+        }
+        if (other.hasType()) {
+          setType(other.getType());
+        }
+        if (other.hasScalar()) {
+          mergeScalar(other.getScalar());
+        }
+        if (other.hasRanges()) {
+          mergeRanges(other.getRanges());
+        }
+        if (other.hasSet()) {
+          mergeSet(other.getSet());
+        }
+        if (other.hasText()) {
+          mergeText(other.getText());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasName()) {
+          
+          return false;
+        }
+        if (!hasType()) {
+          
+          return false;
+        }
+        if (hasScalar()) {
+          if (!getScalar().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasRanges()) {
+          if (!getRanges().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasText()) {
+          if (!getText().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.Attribute parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.Attribute) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string name = 1;
+      private java.lang.Object name_ = "";
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public boolean hasName() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public java.lang.String getName() {
+        java.lang.Object ref = name_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          name_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        java.lang.Object ref = name_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          name_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder setName(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder clearName() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        name_ = getDefaultInstance().getName();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder setNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+
+      // required .mesos.v1.Value.Type type = 2;
+      private org.apache.mesos.v1.Protos.Value.Type type_ = org.apache.mesos.v1.Protos.Value.Type.SCALAR;
+      /**
+       * <code>required .mesos.v1.Value.Type type = 2;</code>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required .mesos.v1.Value.Type type = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.Value.Type getType() {
+        return type_;
+      }
+      /**
+       * <code>required .mesos.v1.Value.Type type = 2;</code>
+       */
+      public Builder setType(org.apache.mesos.v1.Protos.Value.Type value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000002;
+        type_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.Value.Type type = 2;</code>
+       */
+      public Builder clearType() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        type_ = org.apache.mesos.v1.Protos.Value.Type.SCALAR;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.v1.Value.Scalar scalar = 3;
+      private org.apache.mesos.v1.Protos.Value.Scalar scalar_ = org.apache.mesos.v1.Protos.Value.Scalar.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Value.Scalar, org.apache.mesos.v1.Protos.Value.Scalar.Builder, org.apache.mesos.v1.Protos.Value.ScalarOrBuilder> scalarBuilder_;
+      /**
+       * <code>optional .mesos.v1.Value.Scalar scalar = 3;</code>
+       */
+      public boolean hasScalar() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Scalar scalar = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.Value.Scalar getScalar() {
+        if (scalarBuilder_ == null) {
+          return scalar_;
+        } else {
+          return scalarBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Scalar scalar = 3;</code>
+       */
+      public Builder setScalar(org.apache.mesos.v1.Protos.Value.Scalar value) {
+        if (scalarBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          scalar_ = value;
+          onChanged();
+        } else {
+          scalarBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Scalar scalar = 3;</code>
+       */
+      public Builder setScalar(
+          org.apache.mesos.v1.Protos.Value.Scalar.Builder builderForValue) {
+        if (scalarBuilder_ == null) {
+          scalar_ = builderForValue.build();
+          onChanged();
+        } else {
+          scalarBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Scalar scalar = 3;</code>
+       */
+      public Builder mergeScalar(org.apache.mesos.v1.Protos.Value.Scalar value) {
+        if (scalarBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) == 0x00000004) &&
+              scalar_ != org.apache.mesos.v1.Protos.Value.Scalar.getDefaultInstance()) {
+            scalar_ =
+              org.apache.mesos.v1.Protos.Value.Scalar.newBuilder(scalar_).mergeFrom(value).buildPartial();
+          } else {
+            scalar_ = value;
+          }
+          onChanged();
+        } else {
+          scalarBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Scalar scalar = 3;</code>
+       */
+      public Builder clearScalar() {
+        if (scalarBuilder_ == null) {
+          scalar_ = org.apache.mesos.v1.Protos.Value.Scalar.getDefaultInstance();
+          onChanged();
+        } else {
+          scalarBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Scalar scalar = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.Value.Scalar.Builder getScalarBuilder() {
+        bitField0_ |= 0x00000004;
+        onChanged();
+        return getScalarFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Scalar scalar = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.Value.ScalarOrBuilder getScalarOrBuilder() {
+        if (scalarBuilder_ != null) {
+          return scalarBuilder_.getMessageOrBuilder();
+        } else {
+          return scalar_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Scalar scalar = 3;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Value.Scalar, org.apache.mesos.v1.Protos.Value.Scalar.Builder, org.apache.mesos.v1.Protos.Value.ScalarOrBuilder> 
+          getScalarFieldBuilder() {
+        if (scalarBuilder_ == null) {
+          scalarBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Value.Scalar, org.apache.mesos.v1.Protos.Value.Scalar.Builder, org.apache.mesos.v1.Protos.Value.ScalarOrBuilder>(
+                  scalar_,
+                  getParentForChildren(),
+                  isClean());
+          scalar_ = null;
+        }
+        return scalarBuilder_;
+      }
+
+      // optional .mesos.v1.Value.Ranges ranges = 4;
+      private org.apache.mesos.v1.Protos.Value.Ranges ranges_ = org.apache.mesos.v1.Protos.Value.Ranges.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Value.Ranges, org.apache.mesos.v1.Protos.Value.Ranges.Builder, org.apache.mesos.v1.Protos.Value.RangesOrBuilder> rangesBuilder_;
+      /**
+       * <code>optional .mesos.v1.Value.Ranges ranges = 4;</code>
+       */
+      public boolean hasRanges() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Ranges ranges = 4;</code>
+       */
+      public org.apache.mesos.v1.Protos.Value.Ranges getRanges() {
+        if (rangesBuilder_ == null) {
+          return ranges_;
+        } else {
+          return rangesBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Ranges ranges = 4;</code>
+       */
+      public Builder setRanges(org.apache.mesos.v1.Protos.Value.Ranges value) {
+        if (rangesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ranges_ = value;
+          onChanged();
+        } else {
+          rangesBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Ranges ranges = 4;</code>
+       */
+      public Builder setRanges(
+          org.apache.mesos.v1.Protos.Value.Ranges.Builder builderForValue) {
+        if (rangesBuilder_ == null) {
+          ranges_ = builderForValue.build();
+          onChanged();
+        } else {
+          rangesBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Ranges ranges = 4;</code>
+       */
+      public Builder mergeRanges(org.apache.mesos.v1.Protos.Value.Ranges value) {
+        if (rangesBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008) &&
+              ranges_ != org.apache.mesos.v1.Protos.Value.Ranges.getDefaultInstance()) {
+            ranges_ =
+              org.apache.mesos.v1.Protos.Value.Ranges.newBuilder(ranges_).mergeFrom(value).buildPartial();
+          } else {
+            ranges_ = value;
+          }
+          onChanged();
+        } else {
+          rangesBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Ranges ranges = 4;</code>
+       */
+      public Builder clearRanges() {
+        if (rangesBuilder_ == null) {
+          ranges_ = org.apache.mesos.v1.Protos.Value.Ranges.getDefaultInstance();
+          onChanged();
+        } else {
+          rangesBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Ranges ranges = 4;</code>
+       */
+      public org.apache.mesos.v1.Protos.Value.Ranges.Builder getRangesBuilder() {
+        bitField0_ |= 0x00000008;
+        onChanged();
+        return getRangesFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Ranges ranges = 4;</code>
+       */
+      public org.apache.mesos.v1.Protos.Value.RangesOrBuilder getRangesOrBuilder() {
+        if (rangesBuilder_ != null) {
+          return rangesBuilder_.getMessageOrBuilder();
+        } else {
+          return ranges_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Ranges ranges = 4;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Value.Ranges, org.apache.mesos.v1.Protos.Value.Ranges.Builder, org.apache.mesos.v1.Protos.Value.RangesOrBuilder> 
+          getRangesFieldBuilder() {
+        if (rangesBuilder_ == null) {
+          rangesBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Value.Ranges, org.apache.mesos.v1.Protos.Value.Ranges.Builder, org.apache.mesos.v1.Protos.Value.RangesOrBuilder>(
+                  ranges_,
+                  getParentForChildren(),
+                  isClean());
+          ranges_ = null;
+        }
+        return rangesBuilder_;
+      }
+
+      // optional .mesos.v1.Value.Set set = 6;
+      private org.apache.mesos.v1.Protos.Value.Set set_ = org.apache.mesos.v1.Protos.Value.Set.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Value.Set, org.apache.mesos.v1.Protos.Value.Set.Builder, org.apache.mesos.v1.Protos.Value.SetOrBuilder> setBuilder_;
+      /**
+       * <code>optional .mesos.v1.Value.Set set = 6;</code>
+       */
+      public boolean hasSet() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Set set = 6;</code>
+       */
+      public org.apache.mesos.v1.Protos.Value.Set getSet() {
+        if (setBuilder_ == null) {
+          return set_;
+        } else {
+          return setBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Set set = 6;</code>
+       */
+      public Builder setSet(org.apache.mesos.v1.Protos.Value.Set value) {
+        if (setBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          set_ = value;
+          onChanged();
+        } else {
+          setBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Set set = 6;</code>
+       */
+      public Builder setSet(
+          org.apache.mesos.v1.Protos.Value.Set.Builder builderForValue) {
+        if (setBuilder_ == null) {
+          set_ = builderForValue.build();
+          onChanged();
+        } else {
+          setBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Set set = 6;</code>
+       */
+      public Builder mergeSet(org.apache.mesos.v1.Protos.Value.Set value) {
+        if (setBuilder_ == null) {
+          if (((bitField0_ & 0x00000010) == 0x00000010) &&
+              set_ != org.apache.mesos.v1.Protos.Value.Set.getDefaultInstance()) {
+            set_ =
+              org.apache.mesos.v1.Protos.Value.Set.newBuilder(set_).mergeFrom(value).buildPartial();
+          } else {
+            set_ = value;
+          }
+          onChanged();
+        } else {
+          setBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Set set = 6;</code>
+       */
+      public Builder clearSet() {
+        if (setBuilder_ == null) {
+          set_ = org.apache.mesos.v1.Protos.Value.Set.getDefaultInstance();
+          onChanged();
+        } else {
+          setBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Set set = 6;</code>
+       */
+      public org.apache.mesos.v1.Protos.Value.Set.Builder getSetBuilder() {
+        bitField0_ |= 0x00000010;
+        onChanged();
+        return getSetFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Set set = 6;</code>
+       */
+      public org.apache.mesos.v1.Protos.Value.SetOrBuilder getSetOrBuilder() {
+        if (setBuilder_ != null) {
+          return setBuilder_.getMessageOrBuilder();
+        } else {
+          return set_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Set set = 6;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Value.Set, org.apache.mesos.v1.Protos.Value.Set.Builder, org.apache.mesos.v1.Protos.Value.SetOrBuilder> 
+          getSetFieldBuilder() {
+        if (setBuilder_ == null) {
+          setBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Value.Set, org.apache.mesos.v1.Protos.Value.Set.Builder, org.apache.mesos.v1.Protos.Value.SetOrBuilder>(
+                  set_,
+                  getParentForChildren(),
+                  isClean());
+          set_ = null;
+        }
+        return setBuilder_;
+      }
+
+      // optional .mesos.v1.Value.Text text = 5;
+      private org.apache.mesos.v1.Protos.Value.Text text_ = org.apache.mesos.v1.Protos.Value.Text.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Value.Text, org.apache.mesos.v1.Protos.Value.Text.Builder, org.apache.mesos.v1.Protos.Value.TextOrBuilder> textBuilder_;
+      /**
+       * <code>optional .mesos.v1.Value.Text text = 5;</code>
+       */
+      public boolean hasText() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Text text = 5;</code>
+       */
+      public org.apache.mesos.v1.Protos.Value.Text getText() {
+        if (textBuilder_ == null) {
+          return text_;
+        } else {
+          return textBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Text text = 5;</code>
+       */
+      public Builder setText(org.apache.mesos.v1.Protos.Value.Text value) {
+        if (textBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          text_ = value;
+          onChanged();
+        } else {
+          textBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Text text = 5;</code>
+       */
+      public Builder setText(
+          org.apache.mesos.v1.Protos.Value.Text.Builder builderForValue) {
+        if (textBuilder_ == null) {
+          text_ = builderForValue.build();
+          onChanged();
+        } else {
+          textBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Text text = 5;</code>
+       */
+      public Builder mergeText(org.apache.mesos.v1.Protos.Value.Text value) {
+        if (textBuilder_ == null) {
+          if (((bitField0_ & 0x00000020) == 0x00000020) &&
+              text_ != org.apache.mesos.v1.Protos.Value.Text.getDefaultInstance()) {
+            text_ =
+              org.apache.mesos.v1.Protos.Value.Text.newBuilder(text_).mergeFrom(value).buildPartial();
+          } else {
+            text_ = value;
+          }
+          onChanged();
+        } else {
+          textBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Text text = 5;</code>
+       */
+      public Builder clearText() {
+        if (textBuilder_ == null) {
+          text_ = org.apache.mesos.v1.Protos.Value.Text.getDefaultInstance();
+          onChanged();
+        } else {
+          textBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Text text = 5;</code>
+       */
+      public org.apache.mesos.v1.Protos.Value.Text.Builder getTextBuilder() {
+        bitField0_ |= 0x00000020;
+        onChanged();
+        return getTextFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Text text = 5;</code>
+       */
+      public org.apache.mesos.v1.Protos.Value.TextOrBuilder getTextOrBuilder() {
+        if (textBuilder_ != null) {
+          return textBuilder_.getMessageOrBuilder();
+        } else {
+          return text_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Text text = 5;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Value.Text, org.apache.mesos.v1.Protos.Value.Text.Builder, org.apache.mesos.v1.Protos.Value.TextOrBuilder> 
+          getTextFieldBuilder() {
+        if (textBuilder_ == null) {
+          textBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Value.Text, org.apache.mesos.v1.Protos.Value.Text.Builder, org.apache.mesos.v1.Protos.Value.TextOrBuilder>(
+                  text_,
+                  getParentForChildren(),
+                  isClean());
+          text_ = null;
+        }
+        return textBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.Attribute)
+    }
+
+    static {
+      defaultInstance = new Attribute(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.Attribute)
+  }
+
+  public interface ResourceOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional .mesos.v1.ResourceProviderID provider_id = 12;
+    /**
+     * <code>optional .mesos.v1.ResourceProviderID provider_id = 12;</code>
+     */
+    boolean hasProviderId();
+    /**
+     * <code>optional .mesos.v1.ResourceProviderID provider_id = 12;</code>
+     */
+    org.apache.mesos.v1.Protos.ResourceProviderID getProviderId();
+    /**
+     * <code>optional .mesos.v1.ResourceProviderID provider_id = 12;</code>
+     */
+    org.apache.mesos.v1.Protos.ResourceProviderIDOrBuilder getProviderIdOrBuilder();
+
+    // required string name = 1;
+    /**
+     * <code>required string name = 1;</code>
+     */
+    boolean hasName();
+    /**
+     * <code>required string name = 1;</code>
+     */
+    java.lang.String getName();
+    /**
+     * <code>required string name = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getNameBytes();
+
+    // required .mesos.v1.Value.Type type = 2;
+    /**
+     * <code>required .mesos.v1.Value.Type type = 2;</code>
+     */
+    boolean hasType();
+    /**
+     * <code>required .mesos.v1.Value.Type type = 2;</code>
+     */
+    org.apache.mesos.v1.Protos.Value.Type getType();
+
+    // optional .mesos.v1.Value.Scalar scalar = 3;
+    /**
+     * <code>optional .mesos.v1.Value.Scalar scalar = 3;</code>
+     */
+    boolean hasScalar();
+    /**
+     * <code>optional .mesos.v1.Value.Scalar scalar = 3;</code>
+     */
+    org.apache.mesos.v1.Protos.Value.Scalar getScalar();
+    /**
+     * <code>optional .mesos.v1.Value.Scalar scalar = 3;</code>
+     */
+    org.apache.mesos.v1.Protos.Value.ScalarOrBuilder getScalarOrBuilder();
+
+    // optional .mesos.v1.Value.Ranges ranges = 4;
+    /**
+     * <code>optional .mesos.v1.Value.Ranges ranges = 4;</code>
+     */
+    boolean hasRanges();
+    /**
+     * <code>optional .mesos.v1.Value.Ranges ranges = 4;</code>
+     */
+    org.apache.mesos.v1.Protos.Value.Ranges getRanges();
+    /**
+     * <code>optional .mesos.v1.Value.Ranges ranges = 4;</code>
+     */
+    org.apache.mesos.v1.Protos.Value.RangesOrBuilder getRangesOrBuilder();
+
+    // optional .mesos.v1.Value.Set set = 5;
+    /**
+     * <code>optional .mesos.v1.Value.Set set = 5;</code>
+     */
+    boolean hasSet();
+    /**
+     * <code>optional .mesos.v1.Value.Set set = 5;</code>
+     */
+    org.apache.mesos.v1.Protos.Value.Set getSet();
+    /**
+     * <code>optional .mesos.v1.Value.Set set = 5;</code>
+     */
+    org.apache.mesos.v1.Protos.Value.SetOrBuilder getSetOrBuilder();
+
+    // optional string role = 6 [default = "*", deprecated = true];
+    /**
+     * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+     *
+     * <pre>
+     * The role that this resource is reserved for. If "*", this indicates
+     * that the resource is unreserved. Otherwise, the resource will only
+     * be offered to frameworks that belong to this role.
+     *
+     * NOTE: Frameworks must not set this field if `reservations` is set.
+     *       See the 'Resource Format' section for more details.
+     *
+     * TODO(mpark): Deprecate once `reservations` is no longer experimental.
+     * </pre>
+     */
+    @java.lang.Deprecated boolean hasRole();
+    /**
+     * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+     *
+     * <pre>
+     * The role that this resource is reserved for. If "*", this indicates
+     * that the resource is unreserved. Otherwise, the resource will only
+     * be offered to frameworks that belong to this role.
+     *
+     * NOTE: Frameworks must not set this field if `reservations` is set.
+     *       See the 'Resource Format' section for more details.
+     *
+     * TODO(mpark): Deprecate once `reservations` is no longer experimental.
+     * </pre>
+     */
+    @java.lang.Deprecated java.lang.String getRole();
+    /**
+     * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+     *
+     * <pre>
+     * The role that this resource is reserved for. If "*", this indicates
+     * that the resource is unreserved. Otherwise, the resource will only
+     * be offered to frameworks that belong to this role.
+     *
+     * NOTE: Frameworks must not set this field if `reservations` is set.
+     *       See the 'Resource Format' section for more details.
+     *
+     * TODO(mpark): Deprecate once `reservations` is no longer experimental.
+     * </pre>
+     */
+    @java.lang.Deprecated com.google.protobuf.ByteString
+        getRoleBytes();
+
+    // optional .mesos.v1.Resource.AllocationInfo allocation_info = 11;
+    /**
+     * <code>optional .mesos.v1.Resource.AllocationInfo allocation_info = 11;</code>
+     */
+    boolean hasAllocationInfo();
+    /**
+     * <code>optional .mesos.v1.Resource.AllocationInfo allocation_info = 11;</code>
+     */
+    org.apache.mesos.v1.Protos.Resource.AllocationInfo getAllocationInfo();
+    /**
+     * <code>optional .mesos.v1.Resource.AllocationInfo allocation_info = 11;</code>
+     */
+    org.apache.mesos.v1.Protos.Resource.AllocationInfoOrBuilder getAllocationInfoOrBuilder();
+
+    // optional .mesos.v1.Resource.ReservationInfo reservation = 8;
+    /**
+     * <code>optional .mesos.v1.Resource.ReservationInfo reservation = 8;</code>
+     *
+     * <pre>
+     * If this is set, this resource was dynamically reserved by an
+     * operator or a framework. Otherwise, this resource is either unreserved
+     * or statically reserved by an operator via the --resources flag.
+     * NOTE: Frameworks must not set this field if `reservations` is set.
+     * </pre>
+     */
+    boolean hasReservation();
+    /**
+     * <code>optional .mesos.v1.Resource.ReservationInfo reservation = 8;</code>
+     *
+     * <pre>
+     * If this is set, this resource was dynamically reserved by an
+     * operator or a framework. Otherwise, this resource is either unreserved
+     * or statically reserved by an operator via the --resources flag.
+     * NOTE: Frameworks must not set this field if `reservations` is set.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.Resource.ReservationInfo getReservation();
+    /**
+     * <code>optional .mesos.v1.Resource.ReservationInfo reservation = 8;</code>
+     *
+     * <pre>
+     * If this is set, this resource was dynamically reserved by an
+     * operator or a framework. Otherwise, this resource is either unreserved
+     * or statically reserved by an operator via the --resources flag.
+     * NOTE: Frameworks must not set this field if `reservations` is set.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.Resource.ReservationInfoOrBuilder getReservationOrBuilder();
+
+    // repeated .mesos.v1.Resource.ReservationInfo reservations = 13;
+    /**
+     * <code>repeated .mesos.v1.Resource.ReservationInfo reservations = 13;</code>
+     *
+     * <pre>
+     * The stack of reservations. If this field is empty, it indicates that this
+     * resource is unreserved. Otherwise, the resource is reserved. The first
+     * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+     * have `DYNAMIC`. One can create a new reservation on top of an existing
+     * one by pushing a new `ReservationInfo` to the back. The last
+     * `ReservationInfo` in this stack is the "current" reservation. The new
+     * reservation's role must be a child of the current reservation's role.
+     * NOTE: Frameworks must not set this field if `reservation` is set.
+     * </pre>
+     */
+    java.util.List<org.apache.mesos.v1.Protos.Resource.ReservationInfo> 
+        getReservationsList();
+    /**
+     * <code>repeated .mesos.v1.Resource.ReservationInfo reservations = 13;</code>
+     *
+     * <pre>
+     * The stack of reservations. If this field is empty, it indicates that this
+     * resource is unreserved. Otherwise, the resource is reserved. The first
+     * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+     * have `DYNAMIC`. One can create a new reservation on top of an existing
+     * one by pushing a new `ReservationInfo` to the back. The last
+     * `ReservationInfo` in this stack is the "current" reservation. The new
+     * reservation's role must be a child of the current reservation's role.
+     * NOTE: Frameworks must not set this field if `reservation` is set.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.Resource.ReservationInfo getReservations(int index);
+    /**
+     * <code>repeated .mesos.v1.Resource.ReservationInfo reservations = 13;</code>
+     *
+     * <pre>
+     * The stack of reservations. If this field is empty, it indicates that this
+     * resource is unreserved. Otherwise, the resource is reserved. The first
+     * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+     * have `DYNAMIC`. One can create a new reservation on top of an existing
+     * one by pushing a new `ReservationInfo` to the back. The last
+     * `ReservationInfo` in this stack is the "current" reservation. The new
+     * reservation's role must be a child of the current reservation's role.
+     * NOTE: Frameworks must not set this field if `reservation` is set.
+     * </pre>
+     */
+    int getReservationsCount();
+    /**
+     * <code>repeated .mesos.v1.Resource.ReservationInfo reservations = 13;</code>
+     *
+     * <pre>
+     * The stack of reservations. If this field is empty, it indicates that this
+     * resource is unreserved. Otherwise, the resource is reserved. The first
+     * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+     * have `DYNAMIC`. One can create a new reservation on top of an existing
+     * one by pushing a new `ReservationInfo` to the back. The last
+     * `ReservationInfo` in this stack is the "current" reservation. The new
+     * reservation's role must be a child of the current reservation's role.
+     * NOTE: Frameworks must not set this field if `reservation` is set.
+     * </pre>
+     */
+    java.util.List<? extends org.apache.mesos.v1.Protos.Resource.ReservationInfoOrBuilder> 
+        getReservationsOrBuilderList();
+    /**
+     * <code>repeated .mesos.v1.Resource.ReservationInfo reservations = 13;</code>
+     *
+     * <pre>
+     * The stack of reservations. If this field is empty, it indicates that this
+     * resource is unreserved. Otherwise, the resource is reserved. The first
+     * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+     * have `DYNAMIC`. One can create a new reservation on top of an existing
+     * one by pushing a new `ReservationInfo` to the back. The last
+     * `ReservationInfo` in this stack is the "current" reservation. The new
+     * reservation's role must be a child of the current reservation's role.
+     * NOTE: Frameworks must not set this field if `reservation` is set.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.Resource.ReservationInfoOrBuilder getReservationsOrBuilder(
+        int index);
+
+    // optional .mesos.v1.Resource.DiskInfo disk = 7;
+    /**
+     * <code>optional .mesos.v1.Resource.DiskInfo disk = 7;</code>
+     */
+    boolean hasDisk();
+    /**
+     * <code>optional .mesos.v1.Resource.DiskInfo disk = 7;</code>
+     */
+    org.apache.mesos.v1.Protos.Resource.DiskInfo getDisk();
+    /**
+     * <code>optional .mesos.v1.Resource.DiskInfo disk = 7;</code>
+     */
+    org.apache.mesos.v1.Protos.Resource.DiskInfoOrBuilder getDiskOrBuilder();
+
+    // optional .mesos.v1.Resource.RevocableInfo revocable = 9;
+    /**
+     * <code>optional .mesos.v1.Resource.RevocableInfo revocable = 9;</code>
+     *
+     * <pre>
+     * If this is set, the resources are revocable, i.e., any tasks or
+     * executors launched using these resources could get preempted or
+     * throttled at any time. This could be used by frameworks to run
+     * best effort tasks that do not need strict uptime or performance
+     * guarantees. Note that if this is set, 'disk' or 'reservation'
+     * cannot be set.
+     * </pre>
+     */
+    boolean hasRevocable();
+    /**
+     * <code>optional .mesos.v1.Resource.RevocableInfo revocable = 9;</code>
+     *
+     * <pre>
+     * If this is set, the resources are revocable, i.e., any tasks or
+     * executors launched using these resources could get preempted or
+     * throttled at any time. This could be used by frameworks to run
+     * best effort tasks that do not need strict uptime or performance
+     * guarantees. Note that if this is set, 'disk' or 'reservation'
+     * cannot be set.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.Resource.RevocableInfo getRevocable();
+    /**
+     * <code>optional .mesos.v1.Resource.RevocableInfo revocable = 9;</code>
+     *
+     * <pre>
+     * If this is set, the resources are revocable, i.e., any tasks or
+     * executors launched using these resources could get preempted or
+     * throttled at any time. This could be used by frameworks to run
+     * best effort tasks that do not need strict uptime or performance
+     * guarantees. Note that if this is set, 'disk' or 'reservation'
+     * cannot be set.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.Resource.RevocableInfoOrBuilder getRevocableOrBuilder();
+
+    // optional .mesos.v1.Resource.SharedInfo shared = 10;
+    /**
+     * <code>optional .mesos.v1.Resource.SharedInfo shared = 10;</code>
+     *
+     * <pre>
+     * If this is set, the resources are shared, i.e. multiple tasks
+     * can be launched using this resource and all of them shall refer
+     * to the same physical resource on the cluster. Note that only
+     * persistent volumes can be shared currently.
+     * </pre>
+     */
+    boolean hasShared();
+    /**
+     * <code>optional .mesos.v1.Resource.SharedInfo shared = 10;</code>
+     *
+     * <pre>
+     * If this is set, the resources are shared, i.e. multiple tasks
+     * can be launched using this resource and all of them shall refer
+     * to the same physical resource on the cluster. Note that only
+     * persistent volumes can be shared currently.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.Resource.SharedInfo getShared();
+    /**
+     * <code>optional .mesos.v1.Resource.SharedInfo shared = 10;</code>
+     *
+     * <pre>
+     * If this is set, the resources are shared, i.e. multiple tasks
+     * can be launched using this resource and all of them shall refer
+     * to the same physical resource on the cluster. Note that only
+     * persistent volumes can be shared currently.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.Resource.SharedInfoOrBuilder getSharedOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.Resource}
+   *
+   * <pre>
+   **
+   * Describes a resource from a resource provider. The `name` field is
+   * a string like "cpus" or "mem" that indicates which kind of resource
+   * this is; the rest of the fields describe the properties of the
+   * resource. A resource can take on one of three types: scalar
+   * (double), a list of finite and discrete ranges (e.g., [1-10,
+   * 20-30]), or a set of items. A resource is described using the
+   * standard protocol buffer "union" trick.
+   *
+   * Note that "disk" and "mem" resources are scalar values expressed in
+   * megabytes. Fractional "cpus" values are allowed (e.g., "0.5"),
+   * which correspond to partial shares of a CPU.
+   * </pre>
+   */
+  public static final class Resource extends
+      com.google.protobuf.GeneratedMessage
+      implements ResourceOrBuilder {
+    // Use Resource.newBuilder() to construct.
+    private Resource(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Resource(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Resource defaultInstance;
+    public static Resource getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Resource getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Resource(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000002;
+              name_ = input.readBytes();
+              break;
+            }
+            case 16: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.v1.Protos.Value.Type value = org.apache.mesos.v1.Protos.Value.Type.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(2, rawValue);
+              } else {
+                bitField0_ |= 0x00000004;
+                type_ = value;
+              }
+              break;
+            }
+            case 26: {
+              org.apache.mesos.v1.Protos.Value.Scalar.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                subBuilder = scalar_.toBuilder();
+              }
+              scalar_ = input.readMessage(org.apache.mesos.v1.Protos.Value.Scalar.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(scalar_);
+                scalar_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000008;
+              break;
+            }
+            case 34: {
+              org.apache.mesos.v1.Protos.Value.Ranges.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000010) == 0x00000010)) {
+                subBuilder = ranges_.toBuilder();
+              }
+              ranges_ = input.readMessage(org.apache.mesos.v1.Protos.Value.Ranges.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(ranges_);
+                ranges_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000010;
+              break;
+            }
+            case 42: {
+              org.apache.mesos.v1.Protos.Value.Set.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000020) == 0x00000020)) {
+                subBuilder = set_.toBuilder();
+              }
+              set_ = input.readMessage(org.apache.mesos.v1.Protos.Value.Set.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(set_);
+                set_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000020;
+              break;
+            }
+            case 50: {
+              bitField0_ |= 0x00000040;
+              role_ = input.readBytes();
+              break;
+            }
+            case 58: {
+              org.apache.mesos.v1.Protos.Resource.DiskInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000200) == 0x00000200)) {
+                subBuilder = disk_.toBuilder();
+              }
+              disk_ = input.readMessage(org.apache.mesos.v1.Protos.Resource.DiskInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(disk_);
+                disk_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000200;
+              break;
+            }
+            case 66: {
+              org.apache.mesos.v1.Protos.Resource.ReservationInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000100) == 0x00000100)) {
+                subBuilder = reservation_.toBuilder();
+              }
+              reservation_ = input.readMessage(org.apache.mesos.v1.Protos.Resource.ReservationInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(reservation_);
+                reservation_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000100;
+              break;
+            }
+            case 74: {
+              org.apache.mesos.v1.Protos.Resource.RevocableInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000400) == 0x00000400)) {
+                subBuilder = revocable_.toBuilder();
+              }
+              revocable_ = input.readMessage(org.apache.mesos.v1.Protos.Resource.RevocableInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(revocable_);
+                revocable_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000400;
+              break;
+            }
+            case 82: {
+              org.apache.mesos.v1.Protos.Resource.SharedInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000800) == 0x00000800)) {
+                subBuilder = shared_.toBuilder();
+              }
+              shared_ = input.readMessage(org.apache.mesos.v1.Protos.Resource.SharedInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(shared_);
+                shared_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000800;
+              break;
+            }
+            case 90: {
+              org.apache.mesos.v1.Protos.Resource.AllocationInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000080) == 0x00000080)) {
+                subBuilder = allocationInfo_.toBuilder();
+              }
+              allocationInfo_ = input.readMessage(org.apache.mesos.v1.Protos.Resource.AllocationInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(allocationInfo_);
+                allocationInfo_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000080;
+              break;
+            }
+            case 98: {
+              org.apache.mesos.v1.Protos.ResourceProviderID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                subBuilder = providerId_.toBuilder();
+              }
+              providerId_ = input.readMessage(org.apache.mesos.v1.Protos.ResourceProviderID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(providerId_);
+                providerId_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+            case 106: {
+              if (!((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
+                reservations_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Resource.ReservationInfo>();
+                mutable_bitField0_ |= 0x00000200;
+              }
+              reservations_.add(input.readMessage(org.apache.mesos.v1.Protos.Resource.ReservationInfo.PARSER, extensionRegistry));
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
+          reservations_ = java.util.Collections.unmodifiableList(reservations_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.Resource.class, org.apache.mesos.v1.Protos.Resource.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Resource> PARSER =
+        new com.google.protobuf.AbstractParser<Resource>() {
+      public Resource parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Resource(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Resource> getParserForType() {
+      return PARSER;
+    }
+
+    public interface AllocationInfoOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // optional string role = 1;
+      /**
+       * <code>optional string role = 1;</code>
+       *
+       * <pre>
+       * If set, this resource is allocated to a role. Note that in the
+       * future, this may be unset and the scheduler may be responsible
+       * for allocating to one of its roles.
+       * </pre>
+       */
+      boolean hasRole();
+      /**
+       * <code>optional string role = 1;</code>
+       *
+       * <pre>
+       * If set, this resource is allocated to a role. Note that in the
+       * future, this may be unset and the scheduler may be responsible
+       * for allocating to one of its roles.
+       * </pre>
+       */
+      java.lang.String getRole();
+      /**
+       * <code>optional string role = 1;</code>
+       *
+       * <pre>
+       * If set, this resource is allocated to a role. Note that in the
+       * future, this may be unset and the scheduler may be responsible
+       * for allocating to one of its roles.
+       * </pre>
+       */
+      com.google.protobuf.ByteString
+          getRoleBytes();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.Resource.AllocationInfo}
+     *
+     * <pre>
+     * This was initially introduced to support MULTI_ROLE capable
+     * frameworks. Frameworks that are not MULTI_ROLE capable can
+     * continue to assume that the offered resources are allocated
+     * to their role.
+     * </pre>
+     */
+    public static final class AllocationInfo extends
+        com.google.protobuf.GeneratedMessage
+        implements AllocationInfoOrBuilder {
+      // Use AllocationInfo.newBuilder() to construct.
+      private AllocationInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private AllocationInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final AllocationInfo defaultInstance;
+      public static AllocationInfo getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public AllocationInfo getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private AllocationInfo(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                bitField0_ |= 0x00000001;
+                role_ = input.readBytes();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_AllocationInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_AllocationInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.Resource.AllocationInfo.class, org.apache.mesos.v1.Protos.Resource.AllocationInfo.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<AllocationInfo> PARSER =
+          new com.google.protobuf.AbstractParser<AllocationInfo>() {
+        public AllocationInfo parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new AllocationInfo(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<AllocationInfo> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // optional string role = 1;
+      public static final int ROLE_FIELD_NUMBER = 1;
+      private java.lang.Object role_;
+      /**
+       * <code>optional string role = 1;</code>
+       *
+       * <pre>
+       * If set, this resource is allocated to a role. Note that in the
+       * future, this may be unset and the scheduler may be responsible
+       * for allocating to one of its roles.
+       * </pre>
+       */
+      public boolean hasRole() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional string role = 1;</code>
+       *
+       * <pre>
+       * If set, this resource is allocated to a role. Note that in the
+       * future, this may be unset and the scheduler may be responsible
+       * for allocating to one of its roles.
+       * </pre>
+       */
+      public java.lang.String getRole() {
+        java.lang.Object ref = role_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            role_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>optional string role = 1;</code>
+       *
+       * <pre>
+       * If set, this resource is allocated to a role. Note that in the
+       * future, this may be unset and the scheduler may be responsible
+       * for allocating to one of its roles.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getRoleBytes() {
+        java.lang.Object ref = role_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          role_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      private void initFields() {
+        role_ = "";
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeBytes(1, getRoleBytes());
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(1, getRoleBytes());
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.Protos.Resource.AllocationInfo parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.AllocationInfo parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.AllocationInfo parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.AllocationInfo parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.AllocationInfo parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.AllocationInfo parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.AllocationInfo parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.AllocationInfo parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.AllocationInfo parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.AllocationInfo parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.Protos.Resource.AllocationInfo prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.Resource.AllocationInfo}
+       *
+       * <pre>
+       * This was initially introduced to support MULTI_ROLE capable
+       * frameworks. Frameworks that are not MULTI_ROLE capable can
+       * continue to assume that the offered resources are allocated
+       * to their role.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.Protos.Resource.AllocationInfoOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_AllocationInfo_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_AllocationInfo_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.Resource.AllocationInfo.class, org.apache.mesos.v1.Protos.Resource.AllocationInfo.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.Protos.Resource.AllocationInfo.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          role_ = "";
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_AllocationInfo_descriptor;
+        }
+
+        public org.apache.mesos.v1.Protos.Resource.AllocationInfo getDefaultInstanceForType() {
+          return org.apache.mesos.v1.Protos.Resource.AllocationInfo.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.Protos.Resource.AllocationInfo build() {
+          org.apache.mesos.v1.Protos.Resource.AllocationInfo result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.Protos.Resource.AllocationInfo buildPartial() {
+          org.apache.mesos.v1.Protos.Resource.AllocationInfo result = new org.apache.mesos.v1.Protos.Resource.AllocationInfo(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.role_ = role_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.Protos.Resource.AllocationInfo) {
+            return mergeFrom((org.apache.mesos.v1.Protos.Resource.AllocationInfo)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.Protos.Resource.AllocationInfo other) {
+          if (other == org.apache.mesos.v1.Protos.Resource.AllocationInfo.getDefaultInstance()) return this;
+          if (other.hasRole()) {
+            bitField0_ |= 0x00000001;
+            role_ = other.role_;
+            onChanged();
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.Protos.Resource.AllocationInfo parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.Protos.Resource.AllocationInfo) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // optional string role = 1;
+        private java.lang.Object role_ = "";
+        /**
+         * <code>optional string role = 1;</code>
+         *
+         * <pre>
+         * If set, this resource is allocated to a role. Note that in the
+         * future, this may be unset and the scheduler may be responsible
+         * for allocating to one of its roles.
+         * </pre>
+         */
+        public boolean hasRole() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional string role = 1;</code>
+         *
+         * <pre>
+         * If set, this resource is allocated to a role. Note that in the
+         * future, this may be unset and the scheduler may be responsible
+         * for allocating to one of its roles.
+         * </pre>
+         */
+        public java.lang.String getRole() {
+          java.lang.Object ref = role_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            role_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>optional string role = 1;</code>
+         *
+         * <pre>
+         * If set, this resource is allocated to a role. Note that in the
+         * future, this may be unset and the scheduler may be responsible
+         * for allocating to one of its roles.
+         * </pre>
+         */
+        public com.google.protobuf.ByteString
+            getRoleBytes() {
+          java.lang.Object ref = role_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            role_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>optional string role = 1;</code>
+         *
+         * <pre>
+         * If set, this resource is allocated to a role. Note that in the
+         * future, this may be unset and the scheduler may be responsible
+         * for allocating to one of its roles.
+         * </pre>
+         */
+        public Builder setRole(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          role_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string role = 1;</code>
+         *
+         * <pre>
+         * If set, this resource is allocated to a role. Note that in the
+         * future, this may be unset and the scheduler may be responsible
+         * for allocating to one of its roles.
+         * </pre>
+         */
+        public Builder clearRole() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          role_ = getDefaultInstance().getRole();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string role = 1;</code>
+         *
+         * <pre>
+         * If set, this resource is allocated to a role. Note that in the
+         * future, this may be unset and the scheduler may be responsible
+         * for allocating to one of its roles.
+         * </pre>
+         */
+        public Builder setRoleBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          role_ = value;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.Resource.AllocationInfo)
+      }
+
+      static {
+        defaultInstance = new AllocationInfo(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.Resource.AllocationInfo)
+    }
+
+    public interface ReservationInfoOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // optional .mesos.v1.Resource.ReservationInfo.Type type = 4;
+      /**
+       * <code>optional .mesos.v1.Resource.ReservationInfo.Type type = 4;</code>
+       *
+       * <pre>
+       * The type of this reservation.
+       * NOTE: This field must not be set for `Resource.reservation`.
+       * </pre>
+       */
+      boolean hasType();
+      /**
+       * <code>optional .mesos.v1.Resource.ReservationInfo.Type type = 4;</code>
+       *
+       * <pre>
+       * The type of this reservation.
+       * NOTE: This field must not be set for `Resource.reservation`.
+       * </pre>
+       */
+      org.apache.mesos.v1.Protos.Resource.ReservationInfo.Type getType();
+
+      // optional string role = 3;
+      /**
+       * <code>optional string role = 3;</code>
+       *
+       * <pre>
+       * The role to which this reservation is made for.
+       * NOTE: This field must not be set for `Resource.reservation`.
+       * </pre>
+       */
+      boolean hasRole();
+      /**
+       * <code>optional string role = 3;</code>
+       *
+       * <pre>
+       * The role to which this reservation is made for.
+       * NOTE: This field must not be set for `Resource.reservation`.
+       * </pre>
+       */
+      java.lang.String getRole();
+      /**
+       * <code>optional string role = 3;</code>
+       *
+       * <pre>
+       * The role to which this reservation is made for.
+       * NOTE: This field must not be set for `Resource.reservation`.
+       * </pre>
+       */
+      com.google.protobuf.ByteString
+          getRoleBytes();
+
+      // optional string principal = 1;
+      /**
+       * <code>optional string principal = 1;</code>
+       *
+       * <pre>
+       * Indicates the principal, if any, of the framework or operator
+       * that reserved this resource. If reserved by a framework, the
+       * field should match the `FrameworkInfo.principal`. It is used in
+       * conjunction with the `UnreserveResources` ACL to determine
+       * whether the entity attempting to unreserve this resource is
+       * permitted to do so.
+       * </pre>
+       */
+      boolean hasPrincipal();
+      /**
+       * <code>optional string principal = 1;</code>
+       *
+       * <pre>
+       * Indicates the principal, if any, of the framework or operator
+       * that reserved this resource. If reserved by a framework, the
+       * field should match the `FrameworkInfo.principal`. It is used in
+       * conjunction with the `UnreserveResources` ACL to determine
+       * whether the entity attempting to unreserve this resource is
+       * permitted to do so.
+       * </pre>
+       */
+      java.lang.String getPrincipal();
+      /**
+       * <code>optional string principal = 1;</code>
+       *
+       * <pre>
+       * Indicates the principal, if any, of the framework or operator
+       * that reserved this resource. If reserved by a framework, the
+       * field should match the `FrameworkInfo.principal`. It is used in
+       * conjunction with the `UnreserveResources` ACL to determine
+       * whether the entity attempting to unreserve this resource is
+       * permitted to do so.
+       * </pre>
+       */
+      com.google.protobuf.ByteString
+          getPrincipalBytes();
+
+      // optional .mesos.v1.Labels labels = 2;
+      /**
+       * <code>optional .mesos.v1.Labels labels = 2;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs that can be used to
+       * associate arbitrary metadata with a reserved resource.  For
+       * example, frameworks can use labels to identify the intended
+       * purpose for a portion of the resources the framework has
+       * reserved at a given agent. Labels should not contain duplicate
+       * key-value pairs.
+       * </pre>
+       */
+      boolean hasLabels();
+      /**
+       * <code>optional .mesos.v1.Labels labels = 2;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs that can be used to
+       * associate arbitrary metadata with a reserved resource.  For
+       * example, frameworks can use labels to identify the intended
+       * purpose for a portion of the resources the framework has
+       * reserved at a given agent. Labels should not contain duplicate
+       * key-value pairs.
+       * </pre>
+       */
+      org.apache.mesos.v1.Protos.Labels getLabels();
+      /**
+       * <code>optional .mesos.v1.Labels labels = 2;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs that can be used to
+       * associate arbitrary metadata with a reserved resource.  For
+       * example, frameworks can use labels to identify the intended
+       * purpose for a portion of the resources the framework has
+       * reserved at a given agent. Labels should not contain duplicate
+       * key-value pairs.
+       * </pre>
+       */
+      org.apache.mesos.v1.Protos.LabelsOrBuilder getLabelsOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.Resource.ReservationInfo}
+     *
+     * <pre>
+     * TODO(mpark): Explain the two resource formats.
+     * </pre>
+     */
+    public static final class ReservationInfo extends
+        com.google.protobuf.GeneratedMessage
+        implements ReservationInfoOrBuilder {
+      // Use ReservationInfo.newBuilder() to construct.
+      private ReservationInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private ReservationInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final ReservationInfo defaultInstance;
+      public static ReservationInfo getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public ReservationInfo getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private ReservationInfo(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                bitField0_ |= 0x00000004;
+                principal_ = input.readBytes();
+                break;
+              }
+              case 18: {
+                org.apache.mesos.v1.Protos.Labels.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                  subBuilder = labels_.toBuilder();
+                }
+                labels_ = input.readMessage(org.apache.mesos.v1.Protos.Labels.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(labels_);
+                  labels_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000008;
+                break;
+              }
+              case 26: {
+                bitField0_ |= 0x00000002;
+                role_ = input.readBytes();
+                break;
+              }
+              case 32: {
+                int rawValue = input.readEnum();
+                org.apache.mesos.v1.Protos.Resource.ReservationInfo.Type value = org.apache.mesos.v1.Protos.Resource.ReservationInfo.Type.valueOf(rawValue);
+                if (value == null) {
+                  unknownFields.mergeVarintField(4, rawValue);
+                } else {
+                  bitField0_ |= 0x00000001;
+                  type_ = value;
+                }
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_ReservationInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_ReservationInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.Resource.ReservationInfo.class, org.apache.mesos.v1.Protos.Resource.ReservationInfo.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<ReservationInfo> PARSER =
+          new com.google.protobuf.AbstractParser<ReservationInfo>() {
+        public ReservationInfo parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new ReservationInfo(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<ReservationInfo> getParserForType() {
+        return PARSER;
+      }
+
+      /**
+       * Protobuf enum {@code mesos.v1.Resource.ReservationInfo.Type}
+       */
+      public enum Type
+          implements com.google.protobuf.ProtocolMessageEnum {
+        /**
+         * <code>UNKNOWN = 0;</code>
+         */
+        UNKNOWN(0, 0),
+        /**
+         * <code>STATIC = 1;</code>
+         */
+        STATIC(1, 1),
+        /**
+         * <code>DYNAMIC = 2;</code>
+         */
+        DYNAMIC(2, 2),
+        ;
+
+        /**
+         * <code>UNKNOWN = 0;</code>
+         */
+        public static final int UNKNOWN_VALUE = 0;
+        /**
+         * <code>STATIC = 1;</code>
+         */
+        public static final int STATIC_VALUE = 1;
+        /**
+         * <code>DYNAMIC = 2;</code>
+         */
+        public static final int DYNAMIC_VALUE = 2;
+
+
+        public final int getNumber() { return value; }
+
+        public static Type valueOf(int value) {
+          switch (value) {
+            case 0: return UNKNOWN;
+            case 1: return STATIC;
+            case 2: return DYNAMIC;
+            default: return null;
+          }
+        }
+
+        public static com.google.protobuf.Internal.EnumLiteMap<Type>
+            internalGetValueMap() {
+          return internalValueMap;
+        }
+        private static com.google.protobuf.Internal.EnumLiteMap<Type>
+            internalValueMap =
+              new com.google.protobuf.Internal.EnumLiteMap<Type>() {
+                public Type findValueByNumber(int number) {
+                  return Type.valueOf(number);
+                }
+              };
+
+        public final com.google.protobuf.Descriptors.EnumValueDescriptor
+            getValueDescriptor() {
+          return getDescriptor().getValues().get(index);
+        }
+        public final com.google.protobuf.Descriptors.EnumDescriptor
+            getDescriptorForType() {
+          return getDescriptor();
+        }
+        public static final com.google.protobuf.Descriptors.EnumDescriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.Resource.ReservationInfo.getDescriptor().getEnumTypes().get(0);
+        }
+
+        private static final Type[] VALUES = values();
+
+        public static Type valueOf(
+            com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+          if (desc.getType() != getDescriptor()) {
+            throw new java.lang.IllegalArgumentException(
+              "EnumValueDescriptor is not for this type.");
+          }
+          return VALUES[desc.getIndex()];
+        }
+
+        private final int index;
+        private final int value;
+
+        private Type(int index, int value) {
+          this.index = index;
+          this.value = value;
+        }
+
+        // @@protoc_insertion_point(enum_scope:mesos.v1.Resource.ReservationInfo.Type)
+      }
+
+      private int bitField0_;
+      // optional .mesos.v1.Resource.ReservationInfo.Type type = 4;
+      public static final int TYPE_FIELD_NUMBER = 4;
+      private org.apache.mesos.v1.Protos.Resource.ReservationInfo.Type type_;
+      /**
+       * <code>optional .mesos.v1.Resource.ReservationInfo.Type type = 4;</code>
+       *
+       * <pre>
+       * The type of this reservation.
+       * NOTE: This field must not be set for `Resource.reservation`.
+       * </pre>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.ReservationInfo.Type type = 4;</code>
+       *
+       * <pre>
+       * The type of this reservation.
+       * NOTE: This field must not be set for `Resource.reservation`.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Resource.ReservationInfo.Type getType() {
+        return type_;
+      }
+
+      // optional string role = 3;
+      public static final int ROLE_FIELD_NUMBER = 3;
+      private java.lang.Object role_;
+      /**
+       * <code>optional string role = 3;</code>
+       *
+       * <pre>
+       * The role to which this reservation is made for.
+       * NOTE: This field must not be set for `Resource.reservation`.
+       * </pre>
+       */
+      public boolean hasRole() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional string role = 3;</code>
+       *
+       * <pre>
+       * The role to which this reservation is made for.
+       * NOTE: This field must not be set for `Resource.reservation`.
+       * </pre>
+       */
+      public java.lang.String getRole() {
+        java.lang.Object ref = role_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            role_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>optional string role = 3;</code>
+       *
+       * <pre>
+       * The role to which this reservation is made for.
+       * NOTE: This field must not be set for `Resource.reservation`.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getRoleBytes() {
+        java.lang.Object ref = role_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          role_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      // optional string principal = 1;
+      public static final int PRINCIPAL_FIELD_NUMBER = 1;
+      private java.lang.Object principal_;
+      /**
+       * <code>optional string principal = 1;</code>
+       *
+       * <pre>
+       * Indicates the principal, if any, of the framework or operator
+       * that reserved this resource. If reserved by a framework, the
+       * field should match the `FrameworkInfo.principal`. It is used in
+       * conjunction with the `UnreserveResources` ACL to determine
+       * whether the entity attempting to unreserve this resource is
+       * permitted to do so.
+       * </pre>
+       */
+      public boolean hasPrincipal() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional string principal = 1;</code>
+       *
+       * <pre>
+       * Indicates the principal, if any, of the framework or operator
+       * that reserved this resource. If reserved by a framework, the
+       * field should match the `FrameworkInfo.principal`. It is used in
+       * conjunction with the `UnreserveResources` ACL to determine
+       * whether the entity attempting to unreserve this resource is
+       * permitted to do so.
+       * </pre>
+       */
+      public java.lang.String getPrincipal() {
+        java.lang.Object ref = principal_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            principal_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>optional string principal = 1;</code>
+       *
+       * <pre>
+       * Indicates the principal, if any, of the framework or operator
+       * that reserved this resource. If reserved by a framework, the
+       * field should match the `FrameworkInfo.principal`. It is used in
+       * conjunction with the `UnreserveResources` ACL to determine
+       * whether the entity attempting to unreserve this resource is
+       * permitted to do so.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getPrincipalBytes() {
+        java.lang.Object ref = principal_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          principal_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      // optional .mesos.v1.Labels labels = 2;
+      public static final int LABELS_FIELD_NUMBER = 2;
+      private org.apache.mesos.v1.Protos.Labels labels_;
+      /**
+       * <code>optional .mesos.v1.Labels labels = 2;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs that can be used to
+       * associate arbitrary metadata with a reserved resource.  For
+       * example, frameworks can use labels to identify the intended
+       * purpose for a portion of the resources the framework has
+       * reserved at a given agent. Labels should not contain duplicate
+       * key-value pairs.
+       * </pre>
+       */
+      public boolean hasLabels() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 2;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs that can be used to
+       * associate arbitrary metadata with a reserved resource.  For
+       * example, frameworks can use labels to identify the intended
+       * purpose for a portion of the resources the framework has
+       * reserved at a given agent. Labels should not contain duplicate
+       * key-value pairs.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Labels getLabels() {
+        return labels_;
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 2;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs that can be used to
+       * associate arbitrary metadata with a reserved resource.  For
+       * example, frameworks can use labels to identify the intended
+       * purpose for a portion of the resources the framework has
+       * reserved at a given agent. Labels should not contain duplicate
+       * key-value pairs.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+        return labels_;
+      }
+
+      private void initFields() {
+        type_ = org.apache.mesos.v1.Protos.Resource.ReservationInfo.Type.UNKNOWN;
+        role_ = "";
+        principal_ = "";
+        labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (hasLabels()) {
+          if (!getLabels().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeBytes(1, getPrincipalBytes());
+        }
+        if (((bitField0_ & 0x00000008) == 0x00000008)) {
+          output.writeMessage(2, labels_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeBytes(3, getRoleBytes());
+        }
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeEnum(4, type_.getNumber());
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(1, getPrincipalBytes());
+        }
+        if (((bitField0_ & 0x00000008) == 0x00000008)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(2, labels_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(3, getRoleBytes());
+        }
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeEnumSize(4, type_.getNumber());
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.Protos.Resource.ReservationInfo parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.ReservationInfo parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.ReservationInfo parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.ReservationInfo parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.ReservationInfo parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.ReservationInfo parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.ReservationInfo parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.ReservationInfo parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.ReservationInfo parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.ReservationInfo parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.Protos.Resource.ReservationInfo prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.Resource.ReservationInfo}
+       *
+       * <pre>
+       * TODO(mpark): Explain the two resource formats.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.Protos.Resource.ReservationInfoOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_ReservationInfo_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_ReservationInfo_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.Resource.ReservationInfo.class, org.apache.mesos.v1.Protos.Resource.ReservationInfo.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.Protos.Resource.ReservationInfo.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getLabelsFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          type_ = org.apache.mesos.v1.Protos.Resource.ReservationInfo.Type.UNKNOWN;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          role_ = "";
+          bitField0_ = (bitField0_ & ~0x00000002);
+          principal_ = "";
+          bitField0_ = (bitField0_ & ~0x00000004);
+          if (labelsBuilder_ == null) {
+            labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+          } else {
+            labelsBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000008);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_ReservationInfo_descriptor;
+        }
+
+        public org.apache.mesos.v1.Protos.Resource.ReservationInfo getDefaultInstanceForType() {
+          return org.apache.mesos.v1.Protos.Resource.ReservationInfo.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.Protos.Resource.ReservationInfo build() {
+          org.apache.mesos.v1.Protos.Resource.ReservationInfo result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.Protos.Resource.ReservationInfo buildPartial() {
+          org.apache.mesos.v1.Protos.Resource.ReservationInfo result = new org.apache.mesos.v1.Protos.Resource.ReservationInfo(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.type_ = type_;
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          result.role_ = role_;
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          result.principal_ = principal_;
+          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+            to_bitField0_ |= 0x00000008;
+          }
+          if (labelsBuilder_ == null) {
+            result.labels_ = labels_;
+          } else {
+            result.labels_ = labelsBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.Protos.Resource.ReservationInfo) {
+            return mergeFrom((org.apache.mesos.v1.Protos.Resource.ReservationInfo)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.Protos.Resource.ReservationInfo other) {
+          if (other == org.apache.mesos.v1.Protos.Resource.ReservationInfo.getDefaultInstance()) return this;
+          if (other.hasType()) {
+            setType(other.getType());
+          }
+          if (other.hasRole()) {
+            bitField0_ |= 0x00000002;
+            role_ = other.role_;
+            onChanged();
+          }
+          if (other.hasPrincipal()) {
+            bitField0_ |= 0x00000004;
+            principal_ = other.principal_;
+            onChanged();
+          }
+          if (other.hasLabels()) {
+            mergeLabels(other.getLabels());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (hasLabels()) {
+            if (!getLabels().isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.Protos.Resource.ReservationInfo parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.Protos.Resource.ReservationInfo) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // optional .mesos.v1.Resource.ReservationInfo.Type type = 4;
+        private org.apache.mesos.v1.Protos.Resource.ReservationInfo.Type type_ = org.apache.mesos.v1.Protos.Resource.ReservationInfo.Type.UNKNOWN;
+        /**
+         * <code>optional .mesos.v1.Resource.ReservationInfo.Type type = 4;</code>
+         *
+         * <pre>
+         * The type of this reservation.
+         * NOTE: This field must not be set for `Resource.reservation`.
+         * </pre>
+         */
+        public boolean hasType() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional .mesos.v1.Resource.ReservationInfo.Type type = 4;</code>
+         *
+         * <pre>
+         * The type of this reservation.
+         * NOTE: This field must not be set for `Resource.reservation`.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.Resource.ReservationInfo.Type getType() {
+          return type_;
+        }
+        /**
+         * <code>optional .mesos.v1.Resource.ReservationInfo.Type type = 4;</code>
+         *
+         * <pre>
+         * The type of this reservation.
+         * NOTE: This field must not be set for `Resource.reservation`.
+         * </pre>
+         */
+        public Builder setType(org.apache.mesos.v1.Protos.Resource.ReservationInfo.Type value) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          bitField0_ |= 0x00000001;
+          type_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Resource.ReservationInfo.Type type = 4;</code>
+         *
+         * <pre>
+         * The type of this reservation.
+         * NOTE: This field must not be set for `Resource.reservation`.
+         * </pre>
+         */
+        public Builder clearType() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          type_ = org.apache.mesos.v1.Protos.Resource.ReservationInfo.Type.UNKNOWN;
+          onChanged();
+          return this;
+        }
+
+        // optional string role = 3;
+        private java.lang.Object role_ = "";
+        /**
+         * <code>optional string role = 3;</code>
+         *
+         * <pre>
+         * The role to which this reservation is made for.
+         * NOTE: This field must not be set for `Resource.reservation`.
+         * </pre>
+         */
+        public boolean hasRole() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional string role = 3;</code>
+         *
+         * <pre>
+         * The role to which this reservation is made for.
+         * NOTE: This field must not be set for `Resource.reservation`.
+         * </pre>
+         */
+        public java.lang.String getRole() {
+          java.lang.Object ref = role_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            role_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>optional string role = 3;</code>
+         *
+         * <pre>
+         * The role to which this reservation is made for.
+         * NOTE: This field must not be set for `Resource.reservation`.
+         * </pre>
+         */
+        public com.google.protobuf.ByteString
+            getRoleBytes() {
+          java.lang.Object ref = role_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            role_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>optional string role = 3;</code>
+         *
+         * <pre>
+         * The role to which this reservation is made for.
+         * NOTE: This field must not be set for `Resource.reservation`.
+         * </pre>
+         */
+        public Builder setRole(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+          role_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string role = 3;</code>
+         *
+         * <pre>
+         * The role to which this reservation is made for.
+         * NOTE: This field must not be set for `Resource.reservation`.
+         * </pre>
+         */
+        public Builder clearRole() {
+          bitField0_ = (bitField0_ & ~0x00000002);
+          role_ = getDefaultInstance().getRole();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string role = 3;</code>
+         *
+         * <pre>
+         * The role to which this reservation is made for.
+         * NOTE: This field must not be set for `Resource.reservation`.
+         * </pre>
+         */
+        public Builder setRoleBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+          role_ = value;
+          onChanged();
+          return this;
+        }
+
+        // optional string principal = 1;
+        private java.lang.Object principal_ = "";
+        /**
+         * <code>optional string principal = 1;</code>
+         *
+         * <pre>
+         * Indicates the principal, if any, of the framework or operator
+         * that reserved this resource. If reserved by a framework, the
+         * field should match the `FrameworkInfo.principal`. It is used in
+         * conjunction with the `UnreserveResources` ACL to determine
+         * whether the entity attempting to unreserve this resource is
+         * permitted to do so.
+         * </pre>
+         */
+        public boolean hasPrincipal() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional string principal = 1;</code>
+         *
+         * <pre>
+         * Indicates the principal, if any, of the framework or operator
+         * that reserved this resource. If reserved by a framework, the
+         * field should match the `FrameworkInfo.principal`. It is used in
+         * conjunction with the `UnreserveResources` ACL to determine
+         * whether the entity attempting to unreserve this resource is
+         * permitted to do so.
+         * </pre>
+         */
+        public java.lang.String getPrincipal() {
+          java.lang.Object ref = principal_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            principal_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>optional string principal = 1;</code>
+         *
+         * <pre>
+         * Indicates the principal, if any, of the framework or operator
+         * that reserved this resource. If reserved by a framework, the
+         * field should match the `FrameworkInfo.principal`. It is used in
+         * conjunction with the `UnreserveResources` ACL to determine
+         * whether the entity attempting to unreserve this resource is
+         * permitted to do so.
+         * </pre>
+         */
+        public com.google.protobuf.ByteString
+            getPrincipalBytes() {
+          java.lang.Object ref = principal_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            principal_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>optional string principal = 1;</code>
+         *
+         * <pre>
+         * Indicates the principal, if any, of the framework or operator
+         * that reserved this resource. If reserved by a framework, the
+         * field should match the `FrameworkInfo.principal`. It is used in
+         * conjunction with the `UnreserveResources` ACL to determine
+         * whether the entity attempting to unreserve this resource is
+         * permitted to do so.
+         * </pre>
+         */
+        public Builder setPrincipal(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+          principal_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string principal = 1;</code>
+         *
+         * <pre>
+         * Indicates the principal, if any, of the framework or operator
+         * that reserved this resource. If reserved by a framework, the
+         * field should match the `FrameworkInfo.principal`. It is used in
+         * conjunction with the `UnreserveResources` ACL to determine
+         * whether the entity attempting to unreserve this resource is
+         * permitted to do so.
+         * </pre>
+         */
+        public Builder clearPrincipal() {
+          bitField0_ = (bitField0_ & ~0x00000004);
+          principal_ = getDefaultInstance().getPrincipal();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string principal = 1;</code>
+         *
+         * <pre>
+         * Indicates the principal, if any, of the framework or operator
+         * that reserved this resource. If reserved by a framework, the
+         * field should match the `FrameworkInfo.principal`. It is used in
+         * conjunction with the `UnreserveResources` ACL to determine
+         * whether the entity attempting to unreserve this resource is
+         * permitted to do so.
+         * </pre>
+         */
+        public Builder setPrincipalBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+          principal_ = value;
+          onChanged();
+          return this;
+        }
+
+        // optional .mesos.v1.Labels labels = 2;
+        private org.apache.mesos.v1.Protos.Labels labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Labels, org.apache.mesos.v1.Protos.Labels.Builder, org.apache.mesos.v1.Protos.LabelsOrBuilder> labelsBuilder_;
+        /**
+         * <code>optional .mesos.v1.Labels labels = 2;</code>
+         *
+         * <pre>
+         * Labels are free-form key value pairs that can be used to
+         * associate arbitrary metadata with a reserved resource.  For
+         * example, frameworks can use labels to identify the intended
+         * purpose for a portion of the resources the framework has
+         * reserved at a given agent. Labels should not contain duplicate
+         * key-value pairs.
+         * </pre>
+         */
+        public boolean hasLabels() {
+          return ((bitField0_ & 0x00000008) == 0x00000008);
+        }
+        /**
+         * <code>optional .mesos.v1.Labels labels = 2;</code>
+         *
+         * <pre>
+         * Labels are free-form key value pairs that can be used to
+         * associate arbitrary metadata with a reserved resource.  For
+         * example, frameworks can use labels to identify the intended
+         * purpose for a portion of the resources the framework has
+         * reserved at a given agent. Labels should not contain duplicate
+         * key-value pairs.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.Labels getLabels() {
+          if (labelsBuilder_ == null) {
+            return labels_;
+          } else {
+            return labelsBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Labels labels = 2;</code>
+         *
+         * <pre>
+         * Labels are free-form key value pairs that can be used to
+         * associate arbitrary metadata with a reserved resource.  For
+         * example, frameworks can use labels to identify the intended
+         * purpose for a portion of the resources the framework has
+         * reserved at a given agent. Labels should not contain duplicate
+         * key-value pairs.
+         * </pre>
+         */
+        public Builder setLabels(org.apache.mesos.v1.Protos.Labels value) {
+          if (labelsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            labels_ = value;
+            onChanged();
+          } else {
+            labelsBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000008;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Labels labels = 2;</code>
+         *
+         * <pre>
+         * Labels are free-form key value pairs that can be used to
+         * associate arbitrary metadata with a reserved resource.  For
+         * example, frameworks can use labels to identify the intended
+         * purpose for a portion of the resources the framework has
+         * reserved at a given agent. Labels should not contain duplicate
+         * key-value pairs.
+         * </pre>
+         */
+        public Builder setLabels(
+            org.apache.mesos.v1.Protos.Labels.Builder builderForValue) {
+          if (labelsBuilder_ == null) {
+            labels_ = builderForValue.build();
+            onChanged();
+          } else {
+            labelsBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000008;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Labels labels = 2;</code>
+         *
+         * <pre>
+         * Labels are free-form key value pairs that can be used to
+         * associate arbitrary metadata with a reserved resource.  For
+         * example, frameworks can use labels to identify the intended
+         * purpose for a portion of the resources the framework has
+         * reserved at a given agent. Labels should not contain duplicate
+         * key-value pairs.
+         * </pre>
+         */
+        public Builder mergeLabels(org.apache.mesos.v1.Protos.Labels value) {
+          if (labelsBuilder_ == null) {
+            if (((bitField0_ & 0x00000008) == 0x00000008) &&
+                labels_ != org.apache.mesos.v1.Protos.Labels.getDefaultInstance()) {
+              labels_ =
+                org.apache.mesos.v1.Protos.Labels.newBuilder(labels_).mergeFrom(value).buildPartial();
+            } else {
+              labels_ = value;
+            }
+            onChanged();
+          } else {
+            labelsBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000008;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Labels labels = 2;</code>
+         *
+         * <pre>
+         * Labels are free-form key value pairs that can be used to
+         * associate arbitrary metadata with a reserved resource.  For
+         * example, frameworks can use labels to identify the intended
+         * purpose for a portion of the resources the framework has
+         * reserved at a given agent. Labels should not contain duplicate
+         * key-value pairs.
+         * </pre>
+         */
+        public Builder clearLabels() {
+          if (labelsBuilder_ == null) {
+            labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+            onChanged();
+          } else {
+            labelsBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000008);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Labels labels = 2;</code>
+         *
+         * <pre>
+         * Labels are free-form key value pairs that can be used to
+         * associate arbitrary metadata with a reserved resource.  For
+         * example, frameworks can use labels to identify the intended
+         * purpose for a portion of the resources the framework has
+         * reserved at a given agent. Labels should not contain duplicate
+         * key-value pairs.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.Labels.Builder getLabelsBuilder() {
+          bitField0_ |= 0x00000008;
+          onChanged();
+          return getLabelsFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.v1.Labels labels = 2;</code>
+         *
+         * <pre>
+         * Labels are free-form key value pairs that can be used to
+         * associate arbitrary metadata with a reserved resource.  For
+         * example, frameworks can use labels to identify the intended
+         * purpose for a portion of the resources the framework has
+         * reserved at a given agent. Labels should not contain duplicate
+         * key-value pairs.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+          if (labelsBuilder_ != null) {
+            return labelsBuilder_.getMessageOrBuilder();
+          } else {
+            return labels_;
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Labels labels = 2;</code>
+         *
+         * <pre>
+         * Labels are free-form key value pairs that can be used to
+         * associate arbitrary metadata with a reserved resource.  For
+         * example, frameworks can use labels to identify the intended
+         * purpose for a portion of the resources the framework has
+         * reserved at a given agent. Labels should not contain duplicate
+         * key-value pairs.
+         * </pre>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Labels, org.apache.mesos.v1.Protos.Labels.Builder, org.apache.mesos.v1.Protos.LabelsOrBuilder> 
+            getLabelsFieldBuilder() {
+          if (labelsBuilder_ == null) {
+            labelsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.Labels, org.apache.mesos.v1.Protos.Labels.Builder, org.apache.mesos.v1.Protos.LabelsOrBuilder>(
+                    labels_,
+                    getParentForChildren(),
+                    isClean());
+            labels_ = null;
+          }
+          return labelsBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.Resource.ReservationInfo)
+      }
+
+      static {
+        defaultInstance = new ReservationInfo(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.Resource.ReservationInfo)
+    }
+
+    public interface DiskInfoOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // optional .mesos.v1.Resource.DiskInfo.Persistence persistence = 1;
+      /**
+       * <code>optional .mesos.v1.Resource.DiskInfo.Persistence persistence = 1;</code>
+       */
+      boolean hasPersistence();
+      /**
+       * <code>optional .mesos.v1.Resource.DiskInfo.Persistence persistence = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence getPersistence();
+      /**
+       * <code>optional .mesos.v1.Resource.DiskInfo.Persistence persistence = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.Resource.DiskInfo.PersistenceOrBuilder getPersistenceOrBuilder();
+
+      // optional .mesos.v1.Volume volume = 2;
+      /**
+       * <code>optional .mesos.v1.Volume volume = 2;</code>
+       *
+       * <pre>
+       * Describes how this disk resource will be mounted in the
+       * container. If not set, the disk resource will be used as the
+       * sandbox. Otherwise, it will be mounted according to the
+       * 'container_path' inside 'volume'. The 'host_path' inside
+       * 'volume' is ignored.
+       * NOTE: If 'volume' is set but 'persistence' is not set, the
+       * volume will be automatically garbage collected after
+       * task/executor terminates. Currently, if 'persistence' is set,
+       * 'volume' must be set.
+       * </pre>
+       */
+      boolean hasVolume();
+      /**
+       * <code>optional .mesos.v1.Volume volume = 2;</code>
+       *
+       * <pre>
+       * Describes how this disk resource will be mounted in the
+       * container. If not set, the disk resource will be used as the
+       * sandbox. Otherwise, it will be mounted according to the
+       * 'container_path' inside 'volume'. The 'host_path' inside
+       * 'volume' is ignored.
+       * NOTE: If 'volume' is set but 'persistence' is not set, the
+       * volume will be automatically garbage collected after
+       * task/executor terminates. Currently, if 'persistence' is set,
+       * 'volume' must be set.
+       * </pre>
+       */
+      org.apache.mesos.v1.Protos.Volume getVolume();
+      /**
+       * <code>optional .mesos.v1.Volume volume = 2;</code>
+       *
+       * <pre>
+       * Describes how this disk resource will be mounted in the
+       * container. If not set, the disk resource will be used as the
+       * sandbox. Otherwise, it will be mounted according to the
+       * 'container_path' inside 'volume'. The 'host_path' inside
+       * 'volume' is ignored.
+       * NOTE: If 'volume' is set but 'persistence' is not set, the
+       * volume will be automatically garbage collected after
+       * task/executor terminates. Currently, if 'persistence' is set,
+       * 'volume' must be set.
+       * </pre>
+       */
+      org.apache.mesos.v1.Protos.VolumeOrBuilder getVolumeOrBuilder();
+
+      // optional .mesos.v1.Resource.DiskInfo.Source source = 3;
+      /**
+       * <code>optional .mesos.v1.Resource.DiskInfo.Source source = 3;</code>
+       */
+      boolean hasSource();
+      /**
+       * <code>optional .mesos.v1.Resource.DiskInfo.Source source = 3;</code>
+       */
+      org.apache.mesos.v1.Protos.Resource.DiskInfo.Source getSource();
+      /**
+       * <code>optional .mesos.v1.Resource.DiskInfo.Source source = 3;</code>
+       */
+      org.apache.mesos.v1.Protos.Resource.DiskInfo.SourceOrBuilder getSourceOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.Resource.DiskInfo}
+     */
+    public static final class DiskInfo extends
+        com.google.protobuf.GeneratedMessage
+        implements DiskInfoOrBuilder {
+      // Use DiskInfo.newBuilder() to construct.
+      private DiskInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private DiskInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final DiskInfo defaultInstance;
+      public static DiskInfo getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public DiskInfo getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private DiskInfo(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = persistence_.toBuilder();
+                }
+                persistence_ = input.readMessage(org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(persistence_);
+                  persistence_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+              case 18: {
+                org.apache.mesos.v1.Protos.Volume.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                  subBuilder = volume_.toBuilder();
+                }
+                volume_ = input.readMessage(org.apache.mesos.v1.Protos.Volume.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(volume_);
+                  volume_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000002;
+                break;
+              }
+              case 26: {
+                org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                  subBuilder = source_.toBuilder();
+                }
+                source_ = input.readMessage(org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(source_);
+                  source_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000004;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_DiskInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_DiskInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.Resource.DiskInfo.class, org.apache.mesos.v1.Protos.Resource.DiskInfo.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<DiskInfo> PARSER =
+          new com.google.protobuf.AbstractParser<DiskInfo>() {
+        public DiskInfo parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new DiskInfo(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<DiskInfo> getParserForType() {
+        return PARSER;
+      }
+
+      public interface PersistenceOrBuilder
+          extends com.google.protobuf.MessageOrBuilder {
+
+        // required string id = 1;
+        /**
+         * <code>required string id = 1;</code>
+         *
+         * <pre>
+         * A unique ID for the persistent disk volume. This ID must be
+         * unique per role on each agent. Although it is possible to use
+         * the same ID on different agents in the cluster and to reuse
+         * IDs after a volume with that ID has been destroyed, both
+         * practices are discouraged.
+         * </pre>
+         */
+        boolean hasId();
+        /**
+         * <code>required string id = 1;</code>
+         *
+         * <pre>
+         * A unique ID for the persistent disk volume. This ID must be
+         * unique per role on each agent. Although it is possible to use
+         * the same ID on different agents in the cluster and to reuse
+         * IDs after a volume with that ID has been destroyed, both
+         * practices are discouraged.
+         * </pre>
+         */
+        java.lang.String getId();
+        /**
+         * <code>required string id = 1;</code>
+         *
+         * <pre>
+         * A unique ID for the persistent disk volume. This ID must be
+         * unique per role on each agent. Although it is possible to use
+         * the same ID on different agents in the cluster and to reuse
+         * IDs after a volume with that ID has been destroyed, both
+         * practices are discouraged.
+         * </pre>
+         */
+        com.google.protobuf.ByteString
+            getIdBytes();
+
+        // optional string principal = 2;
+        /**
+         * <code>optional string principal = 2;</code>
+         *
+         * <pre>
+         * This field indicates the principal of the operator or
+         * framework that created this volume. It is used in conjunction
+         * with the "destroy" ACL to determine whether an entity
+         * attempting to destroy the volume is permitted to do so.
+         *
+         * NOTE: This field should match the FrameworkInfo.principal of
+         * the framework that created the volume.
+         * </pre>
+         */
+        boolean hasPrincipal();
+        /**
+         * <code>optional string principal = 2;</code>
+         *
+         * <pre>
+         * This field indicates the principal of the operator or
+         * framework that created this volume. It is used in conjunction
+         * with the "destroy" ACL to determine whether an entity
+         * attempting to destroy the volume is permitted to do so.
+         *
+         * NOTE: This field should match the FrameworkInfo.principal of
+         * the framework that created the volume.
+         * </pre>
+         */
+        java.lang.String getPrincipal();
+        /**
+         * <code>optional string principal = 2;</code>
+         *
+         * <pre>
+         * This field indicates the principal of the operator or
+         * framework that created this volume. It is used in conjunction
+         * with the "destroy" ACL to determine whether an entity
+         * attempting to destroy the volume is permitted to do so.
+         *
+         * NOTE: This field should match the FrameworkInfo.principal of
+         * the framework that created the volume.
+         * </pre>
+         */
+        com.google.protobuf.ByteString
+            getPrincipalBytes();
+      }
+      /**
+       * Protobuf type {@code mesos.v1.Resource.DiskInfo.Persistence}
+       *
+       * <pre>
+       * Describes a persistent disk volume.
+       *
+       * A persistent disk volume will not be automatically garbage
+       * collected if the task/executor/agent terminates, but will be
+       * re-offered to the framework(s) belonging to the 'role'.
+       *
+       * NOTE: Currently, we do not allow persistent disk volumes
+       * without a reservation (i.e., 'role' cannot be '*').
+       * </pre>
+       */
+      public static final class Persistence extends
+          com.google.protobuf.GeneratedMessage
+          implements PersistenceOrBuilder {
+        // Use Persistence.newBuilder() to construct.
+        private Persistence(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+          super(builder);
+          this.unknownFields = builder.getUnknownFields();
+        }
+        private Persistence(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+        private static final Persistence defaultInstance;
+        public static Persistence getDefaultInstance() {
+          return defaultInstance;
+        }
+
+        public Persistence getDefaultInstanceForType() {
+          return defaultInstance;
+        }
+
+        private final com.google.protobuf.UnknownFieldSet unknownFields;
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet
+            getUnknownFields() {
+          return this.unknownFields;
+        }
+        private Persistence(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          initFields();
+          int mutable_bitField0_ = 0;
+          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+              com.google.protobuf.UnknownFieldSet.newBuilder();
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(input, unknownFields,
+                                         extensionRegistry, tag)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 10: {
+                  bitField0_ |= 0x00000001;
+                  id_ = input.readBytes();
+                  break;
+                }
+                case 18: {
+                  bitField0_ |= 0x00000002;
+                  principal_ = input.readBytes();
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw e.setUnfinishedMessage(this);
+          } catch (java.io.IOException e) {
+            throw new com.google.protobuf.InvalidProtocolBufferException(
+                e.getMessage()).setUnfinishedMessage(this);
+          } finally {
+            this.unknownFields = unknownFields.build();
+            makeExtensionsImmutable();
+          }
+        }
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_DiskInfo_Persistence_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_DiskInfo_Persistence_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence.class, org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence.Builder.class);
+        }
+
+        public static com.google.protobuf.Parser<Persistence> PARSER =
+            new com.google.protobuf.AbstractParser<Persistence>() {
+          public Persistence parsePartialFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return new Persistence(input, extensionRegistry);
+          }
+        };
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<Persistence> getParserForType() {
+          return PARSER;
+        }
+
+        private int bitField0_;
+        // required string id = 1;
+        public static final int ID_FIELD_NUMBER = 1;
+        private java.lang.Object id_;
+        /**
+         * <code>required string id = 1;</code>
+         *
+         * <pre>
+         * A unique ID for the persistent disk volume. This ID must be
+         * unique per role on each agent. Although it is possible to use
+         * the same ID on different agents in the cluster and to reuse
+         * IDs after a volume with that ID has been destroyed, both
+         * practices are discouraged.
+         * </pre>
+         */
+        public boolean hasId() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required string id = 1;</code>
+         *
+         * <pre>
+         * A unique ID for the persistent disk volume. This ID must be
+         * unique per role on each agent. Although it is possible to use
+         * the same ID on different agents in the cluster and to reuse
+         * IDs after a volume with that ID has been destroyed, both
+         * practices are discouraged.
+         * </pre>
+         */
+        public java.lang.String getId() {
+          java.lang.Object ref = id_;
+          if (ref instanceof java.lang.String) {
+            return (java.lang.String) ref;
+          } else {
+            com.google.protobuf.ByteString bs = 
+                (com.google.protobuf.ByteString) ref;
+            java.lang.String s = bs.toStringUtf8();
+            if (bs.isValidUtf8()) {
+              id_ = s;
+            }
+            return s;
+          }
+        }
+        /**
+         * <code>required string id = 1;</code>
+         *
+         * <pre>
+         * A unique ID for the persistent disk volume. This ID must be
+         * unique per role on each agent. Although it is possible to use
+         * the same ID on different agents in the cluster and to reuse
+         * IDs after a volume with that ID has been destroyed, both
+         * practices are discouraged.
+         * </pre>
+         */
+        public com.google.protobuf.ByteString
+            getIdBytes() {
+          java.lang.Object ref = id_;
+          if (ref instanceof java.lang.String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            id_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+
+        // optional string principal = 2;
+        public static final int PRINCIPAL_FIELD_NUMBER = 2;
+        private java.lang.Object principal_;
+        /**
+         * <code>optional string principal = 2;</code>
+         *
+         * <pre>
+         * This field indicates the principal of the operator or
+         * framework that created this volume. It is used in conjunction
+         * with the "destroy" ACL to determine whether an entity
+         * attempting to destroy the volume is permitted to do so.
+         *
+         * NOTE: This field should match the FrameworkInfo.principal of
+         * the framework that created the volume.
+         * </pre>
+         */
+        public boolean hasPrincipal() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional string principal = 2;</code>
+         *
+         * <pre>
+         * This field indicates the principal of the operator or
+         * framework that created this volume. It is used in conjunction
+         * with the "destroy" ACL to determine whether an entity
+         * attempting to destroy the volume is permitted to do so.
+         *
+         * NOTE: This field should match the FrameworkInfo.principal of
+         * the framework that created the volume.
+         * </pre>
+         */
+        public java.lang.String getPrincipal() {
+          java.lang.Object ref = principal_;
+          if (ref instanceof java.lang.String) {
+            return (java.lang.String) ref;
+          } else {
+            com.google.protobuf.ByteString bs = 
+                (com.google.protobuf.ByteString) ref;
+            java.lang.String s = bs.toStringUtf8();
+            if (bs.isValidUtf8()) {
+              principal_ = s;
+            }
+            return s;
+          }
+        }
+        /**
+         * <code>optional string principal = 2;</code>
+         *
+         * <pre>
+         * This field indicates the principal of the operator or
+         * framework that created this volume. It is used in conjunction
+         * with the "destroy" ACL to determine whether an entity
+         * attempting to destroy the volume is permitted to do so.
+         *
+         * NOTE: This field should match the FrameworkInfo.principal of
+         * the framework that created the volume.
+         * </pre>
+         */
+        public com.google.protobuf.ByteString
+            getPrincipalBytes() {
+          java.lang.Object ref = principal_;
+          if (ref instanceof java.lang.String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            principal_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+
+        private void initFields() {
+          id_ = "";
+          principal_ = "";
+        }
+        private byte memoizedIsInitialized = -1;
+        public final boolean isInitialized() {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized != -1) return isInitialized == 1;
+
+          if (!hasId()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+          memoizedIsInitialized = 1;
+          return true;
+        }
+
+        public void writeTo(com.google.protobuf.CodedOutputStream output)
+                            throws java.io.IOException {
+          getSerializedSize();
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            output.writeBytes(1, getIdBytes());
+          }
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            output.writeBytes(2, getPrincipalBytes());
+          }
+          getUnknownFields().writeTo(output);
+        }
+
+        private int memoizedSerializedSize = -1;
+        public int getSerializedSize() {
+          int size = memoizedSerializedSize;
+          if (size != -1) return size;
+
+          size = 0;
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeBytesSize(1, getIdBytes());
+          }
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeBytesSize(2, getPrincipalBytes());
+          }
+          size += getUnknownFields().getSerializedSize();
+          memoizedSerializedSize = size;
+          return size;
+        }
+
+        private static final long serialVersionUID = 0L;
+        @java.lang.Override
+        protected java.lang.Object writeReplace()
+            throws java.io.ObjectStreamException {
+          return super.writeReplace();
+        }
+
+        public static org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence parseFrom(
+            com.google.protobuf.ByteString data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence parseFrom(
+            com.google.protobuf.ByteString data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence parseFrom(byte[] data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence parseFrom(
+            byte[] data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence parseFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence parseFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence parseDelimitedFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence parseDelimitedFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence parseFrom(
+            com.google.protobuf.CodedInputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence parseFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+
+        public static Builder newBuilder() { return Builder.create(); }
+        public Builder newBuilderForType() { return newBuilder(); }
+        public static Builder newBuilder(org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence prototype) {
+          return newBuilder().mergeFrom(prototype);
+        }
+        public Builder toBuilder() { return newBuilder(this); }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          Builder builder = new Builder(parent);
+          return builder;
+        }
+        /**
+         * Protobuf type {@code mesos.v1.Resource.DiskInfo.Persistence}
+         *
+         * <pre>
+         * Describes a persistent disk volume.
+         *
+         * A persistent disk volume will not be automatically garbage
+         * collected if the task/executor/agent terminates, but will be
+         * re-offered to the framework(s) belonging to the 'role'.
+         *
+         * NOTE: Currently, we do not allow persistent disk volumes
+         * without a reservation (i.e., 'role' cannot be '*').
+         * </pre>
+         */
+        public static final class Builder extends
+            com.google.protobuf.GeneratedMessage.Builder<Builder>
+           implements org.apache.mesos.v1.Protos.Resource.DiskInfo.PersistenceOrBuilder {
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_DiskInfo_Persistence_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_DiskInfo_Persistence_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence.class, org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence.Builder.class);
+          }
+
+          // Construct using org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence.newBuilder()
+          private Builder() {
+            maybeForceBuilderInitialization();
+          }
+
+          private Builder(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            super(parent);
+            maybeForceBuilderInitialization();
+          }
+          private void maybeForceBuilderInitialization() {
+            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            }
+          }
+          private static Builder create() {
+            return new Builder();
+          }
+
+          public Builder clear() {
+            super.clear();
+            id_ = "";
+            bitField0_ = (bitField0_ & ~0x00000001);
+            principal_ = "";
+            bitField0_ = (bitField0_ & ~0x00000002);
+            return this;
+          }
+
+          public Builder clone() {
+            return create().mergeFrom(buildPartial());
+          }
+
+          public com.google.protobuf.Descriptors.Descriptor
+              getDescriptorForType() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_DiskInfo_Persistence_descriptor;
+          }
+
+          public org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence getDefaultInstanceForType() {
+            return org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence.getDefaultInstance();
+          }
+
+          public org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence build() {
+            org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence result = buildPartial();
+            if (!result.isInitialized()) {
+              throw newUninitializedMessageException(result);
+            }
+            return result;
+          }
+
+          public org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence buildPartial() {
+            org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence result = new org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence(this);
+            int from_bitField0_ = bitField0_;
+            int to_bitField0_ = 0;
+            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+              to_bitField0_ |= 0x00000001;
+            }
+            result.id_ = id_;
+            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+              to_bitField0_ |= 0x00000002;
+            }
+            result.principal_ = principal_;
+            result.bitField0_ = to_bitField0_;
+            onBuilt();
+            return result;
+          }
+
+          public Builder mergeFrom(com.google.protobuf.Message other) {
+            if (other instanceof org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence) {
+              return mergeFrom((org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence)other);
+            } else {
+              super.mergeFrom(other);
+              return this;
+            }
+          }
+
+          public Builder mergeFrom(org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence other) {
+            if (other == org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence.getDefaultInstance()) return this;
+            if (other.hasId()) {
+              bitField0_ |= 0x00000001;
+              id_ = other.id_;
+              onChanged();
+            }
+            if (other.hasPrincipal()) {
+              bitField0_ |= 0x00000002;
+              principal_ = other.principal_;
+              onChanged();
+            }
+            this.mergeUnknownFields(other.getUnknownFields());
+            return this;
+          }
+
+          public final boolean isInitialized() {
+            if (!hasId()) {
+              
+              return false;
+            }
+            return true;
+          }
+
+          public Builder mergeFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence parsedMessage = null;
+            try {
+              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              parsedMessage = (org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence) e.getUnfinishedMessage();
+              throw e;
+            } finally {
+              if (parsedMessage != null) {
+                mergeFrom(parsedMessage);
+              }
+            }
+            return this;
+          }
+          private int bitField0_;
+
+          // required string id = 1;
+          private java.lang.Object id_ = "";
+          /**
+           * <code>required string id = 1;</code>
+           *
+           * <pre>
+           * A unique ID for the persistent disk volume. This ID must be
+           * unique per role on each agent. Although it is possible to use
+           * the same ID on different agents in the cluster and to reuse
+           * IDs after a volume with that ID has been destroyed, both
+           * practices are discouraged.
+           * </pre>
+           */
+          public boolean hasId() {
+            return ((bitField0_ & 0x00000001) == 0x00000001);
+          }
+          /**
+           * <code>required string id = 1;</code>
+           *
+           * <pre>
+           * A unique ID for the persistent disk volume. This ID must be
+           * unique per role on each agent. Although it is possible to use
+           * the same ID on different agents in the cluster and to reuse
+           * IDs after a volume with that ID has been destroyed, both
+           * practices are discouraged.
+           * </pre>
+           */
+          public java.lang.String getId() {
+            java.lang.Object ref = id_;
+            if (!(ref instanceof java.lang.String)) {
+              java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                  .toStringUtf8();
+              id_ = s;
+              return s;
+            } else {
+              return (java.lang.String) ref;
+            }
+          }
+          /**
+           * <code>required string id = 1;</code>
+           *
+           * <pre>
+           * A unique ID for the persistent disk volume. This ID must be
+           * unique per role on each agent. Although it is possible to use
+           * the same ID on different agents in the cluster and to reuse
+           * IDs after a volume with that ID has been destroyed, both
+           * practices are discouraged.
+           * </pre>
+           */
+          public com.google.protobuf.ByteString
+              getIdBytes() {
+            java.lang.Object ref = id_;
+            if (ref instanceof String) {
+              com.google.protobuf.ByteString b = 
+                  com.google.protobuf.ByteString.copyFromUtf8(
+                      (java.lang.String) ref);
+              id_ = b;
+              return b;
+            } else {
+              return (com.google.protobuf.ByteString) ref;
+            }
+          }
+          /**
+           * <code>required string id = 1;</code>
+           *
+           * <pre>
+           * A unique ID for the persistent disk volume. This ID must be
+           * unique per role on each agent. Although it is possible to use
+           * the same ID on different agents in the cluster and to reuse
+           * IDs after a volume with that ID has been destroyed, both
+           * practices are discouraged.
+           * </pre>
+           */
+          public Builder setId(
+              java.lang.String value) {
+            if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+            id_ = value;
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>required string id = 1;</code>
+           *
+           * <pre>
+           * A unique ID for the persistent disk volume. This ID must be
+           * unique per role on each agent. Although it is possible to use
+           * the same ID on different agents in the cluster and to reuse
+           * IDs after a volume with that ID has been destroyed, both
+           * practices are discouraged.
+           * </pre>
+           */
+          public Builder clearId() {
+            bitField0_ = (bitField0_ & ~0x00000001);
+            id_ = getDefaultInstance().getId();
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>required string id = 1;</code>
+           *
+           * <pre>
+           * A unique ID for the persistent disk volume. This ID must be
+           * unique per role on each agent. Although it is possible to use
+           * the same ID on different agents in the cluster and to reuse
+           * IDs after a volume with that ID has been destroyed, both
+           * practices are discouraged.
+           * </pre>
+           */
+          public Builder setIdBytes(
+              com.google.protobuf.ByteString value) {
+            if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+            id_ = value;
+            onChanged();
+            return this;
+          }
+
+          // optional string principal = 2;
+          private java.lang.Object principal_ = "";
+          /**
+           * <code>optional string principal = 2;</code>
+           *
+           * <pre>
+           * This field indicates the principal of the operator or
+           * framework that created this volume. It is used in conjunction
+           * with the "destroy" ACL to determine whether an entity
+           * attempting to destroy the volume is permitted to do so.
+           *
+           * NOTE: This field should match the FrameworkInfo.principal of
+           * the framework that created the volume.
+           * </pre>
+           */
+          public boolean hasPrincipal() {
+            return ((bitField0_ & 0x00000002) == 0x00000002);
+          }
+          /**
+           * <code>optional string principal = 2;</code>
+           *
+           * <pre>
+           * This field indicates the principal of the operator or
+           * framework that created this volume. It is used in conjunction
+           * with the "destroy" ACL to determine whether an entity
+           * attempting to destroy the volume is permitted to do so.
+           *
+           * NOTE: This field should match the FrameworkInfo.principal of
+           * the framework that created the volume.
+           * </pre>
+           */
+          public java.lang.String getPrincipal() {
+            java.lang.Object ref = principal_;
+            if (!(ref instanceof java.lang.String)) {
+              java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                  .toStringUtf8();
+              principal_ = s;
+              return s;
+            } else {
+              return (java.lang.String) ref;
+            }
+          }
+          /**
+           * <code>optional string principal = 2;</code>
+           *
+           * <pre>
+           * This field indicates the principal of the operator or
+           * framework that created this volume. It is used in conjunction
+           * with the "destroy" ACL to determine whether an entity
+           * attempting to destroy the volume is permitted to do so.
+           *
+           * NOTE: This field should match the FrameworkInfo.principal of
+           * the framework that created the volume.
+           * </pre>
+           */
+          public com.google.protobuf.ByteString
+              getPrincipalBytes() {
+            java.lang.Object ref = principal_;
+            if (ref instanceof String) {
+              com.google.protobuf.ByteString b = 
+                  com.google.protobuf.ByteString.copyFromUtf8(
+                      (java.lang.String) ref);
+              principal_ = b;
+              return b;
+            } else {
+              return (com.google.protobuf.ByteString) ref;
+            }
+          }
+          /**
+           * <code>optional string principal = 2;</code>
+           *
+           * <pre>
+           * This field indicates the principal of the operator or
+           * framework that created this volume. It is used in conjunction
+           * with the "destroy" ACL to determine whether an entity
+           * attempting to destroy the volume is permitted to do so.
+           *
+           * NOTE: This field should match the FrameworkInfo.principal of
+           * the framework that created the volume.
+           * </pre>
+           */
+          public Builder setPrincipal(
+              java.lang.String value) {
+            if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+            principal_ = value;
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>optional string principal = 2;</code>
+           *
+           * <pre>
+           * This field indicates the principal of the operator or
+           * framework that created this volume. It is used in conjunction
+           * with the "destroy" ACL to determine whether an entity
+           * attempting to destroy the volume is permitted to do so.
+           *
+           * NOTE: This field should match the FrameworkInfo.principal of
+           * the framework that created the volume.
+           * </pre>
+           */
+          public Builder clearPrincipal() {
+            bitField0_ = (bitField0_ & ~0x00000002);
+            principal_ = getDefaultInstance().getPrincipal();
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>optional string principal = 2;</code>
+           *
+           * <pre>
+           * This field indicates the principal of the operator or
+           * framework that created this volume. It is used in conjunction
+           * with the "destroy" ACL to determine whether an entity
+           * attempting to destroy the volume is permitted to do so.
+           *
+           * NOTE: This field should match the FrameworkInfo.principal of
+           * the framework that created the volume.
+           * </pre>
+           */
+          public Builder setPrincipalBytes(
+              com.google.protobuf.ByteString value) {
+            if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+            principal_ = value;
+            onChanged();
+            return this;
+          }
+
+          // @@protoc_insertion_point(builder_scope:mesos.v1.Resource.DiskInfo.Persistence)
+        }
+
+        static {
+          defaultInstance = new Persistence(true);
+          defaultInstance.initFields();
+        }
+
+        // @@protoc_insertion_point(class_scope:mesos.v1.Resource.DiskInfo.Persistence)
+      }
+
+      public interface SourceOrBuilder
+          extends com.google.protobuf.MessageOrBuilder {
+
+        // required .mesos.v1.Resource.DiskInfo.Source.Type type = 1;
+        /**
+         * <code>required .mesos.v1.Resource.DiskInfo.Source.Type type = 1;</code>
+         */
+        boolean hasType();
+        /**
+         * <code>required .mesos.v1.Resource.DiskInfo.Source.Type type = 1;</code>
+         */
+        org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Type getType();
+
+        // optional .mesos.v1.Resource.DiskInfo.Source.Path path = 2;
+        /**
+         * <code>optional .mesos.v1.Resource.DiskInfo.Source.Path path = 2;</code>
+         */
+        boolean hasPath();
+        /**
+         * <code>optional .mesos.v1.Resource.DiskInfo.Source.Path path = 2;</code>
+         */
+        org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path getPath();
+        /**
+         * <code>optional .mesos.v1.Resource.DiskInfo.Source.Path path = 2;</code>
+         */
+        org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.PathOrBuilder getPathOrBuilder();
+
+        // optional .mesos.v1.Resource.DiskInfo.Source.Mount mount = 3;
+        /**
+         * <code>optional .mesos.v1.Resource.DiskInfo.Source.Mount mount = 3;</code>
+         */
+        boolean hasMount();
+        /**
+         * <code>optional .mesos.v1.Resource.DiskInfo.Source.Mount mount = 3;</code>
+         */
+        org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount getMount();
+        /**
+         * <code>optional .mesos.v1.Resource.DiskInfo.Source.Mount mount = 3;</code>
+         */
+        org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.MountOrBuilder getMountOrBuilder();
+      }
+      /**
+       * Protobuf type {@code mesos.v1.Resource.DiskInfo.Source}
+       *
+       * <pre>
+       * Describes where a disk originates from.
+       * TODO(jmlvanre): Add support for BLOCK devices.
+       * </pre>
+       */
+      public static final class Source extends
+          com.google.protobuf.GeneratedMessage
+          implements SourceOrBuilder {
+        // Use Source.newBuilder() to construct.
+        private Source(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+          super(builder);
+          this.unknownFields = builder.getUnknownFields();
+        }
+        private Source(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+        private static final Source defaultInstance;
+        public static Source getDefaultInstance() {
+          return defaultInstance;
+        }
+
+        public Source getDefaultInstanceForType() {
+          return defaultInstance;
+        }
+
+        private final com.google.protobuf.UnknownFieldSet unknownFields;
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet
+            getUnknownFields() {
+          return this.unknownFields;
+        }
+        private Source(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          initFields();
+          int mutable_bitField0_ = 0;
+          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+              com.google.protobuf.UnknownFieldSet.newBuilder();
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(input, unknownFields,
+                                         extensionRegistry, tag)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 8: {
+                  int rawValue = input.readEnum();
+                  org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Type value = org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Type.valueOf(rawValue);
+                  if (value == null) {
+                    unknownFields.mergeVarintField(1, rawValue);
+                  } else {
+                    bitField0_ |= 0x00000001;
+                    type_ = value;
+                  }
+                  break;
+                }
+                case 18: {
+                  org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path.Builder subBuilder = null;
+                  if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                    subBuilder = path_.toBuilder();
+                  }
+                  path_ = input.readMessage(org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path.PARSER, extensionRegistry);
+                  if (subBuilder != null) {
+                    subBuilder.mergeFrom(path_);
+                    path_ = subBuilder.buildPartial();
+                  }
+                  bitField0_ |= 0x00000002;
+                  break;
+                }
+                case 26: {
+                  org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount.Builder subBuilder = null;
+                  if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                    subBuilder = mount_.toBuilder();
+                  }
+                  mount_ = input.readMessage(org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount.PARSER, extensionRegistry);
+                  if (subBuilder != null) {
+                    subBuilder.mergeFrom(mount_);
+                    mount_ = subBuilder.buildPartial();
+                  }
+                  bitField0_ |= 0x00000004;
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw e.setUnfinishedMessage(this);
+          } catch (java.io.IOException e) {
+            throw new com.google.protobuf.InvalidProtocolBufferException(
+                e.getMessage()).setUnfinishedMessage(this);
+          } finally {
+            this.unknownFields = unknownFields.build();
+            makeExtensionsImmutable();
+          }
+        }
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_DiskInfo_Source_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_DiskInfo_Source_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.class, org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Builder.class);
+        }
+
+        public static com.google.protobuf.Parser<Source> PARSER =
+            new com.google.protobuf.AbstractParser<Source>() {
+          public Source parsePartialFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return new Source(input, extensionRegistry);
+          }
+        };
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<Source> getParserForType() {
+          return PARSER;
+        }
+
+        /**
+         * Protobuf enum {@code mesos.v1.Resource.DiskInfo.Source.Type}
+         */
+        public enum Type
+            implements com.google.protobuf.ProtocolMessageEnum {
+          /**
+           * <code>UNKNOWN = 0;</code>
+           */
+          UNKNOWN(0, 0),
+          /**
+           * <code>PATH = 1;</code>
+           */
+          PATH(1, 1),
+          /**
+           * <code>MOUNT = 2;</code>
+           */
+          MOUNT(2, 2),
+          ;
+
+          /**
+           * <code>UNKNOWN = 0;</code>
+           */
+          public static final int UNKNOWN_VALUE = 0;
+          /**
+           * <code>PATH = 1;</code>
+           */
+          public static final int PATH_VALUE = 1;
+          /**
+           * <code>MOUNT = 2;</code>
+           */
+          public static final int MOUNT_VALUE = 2;
+
+
+          public final int getNumber() { return value; }
+
+          public static Type valueOf(int value) {
+            switch (value) {
+              case 0: return UNKNOWN;
+              case 1: return PATH;
+              case 2: return MOUNT;
+              default: return null;
+            }
+          }
+
+          public static com.google.protobuf.Internal.EnumLiteMap<Type>
+              internalGetValueMap() {
+            return internalValueMap;
+          }
+          private static com.google.protobuf.Internal.EnumLiteMap<Type>
+              internalValueMap =
+                new com.google.protobuf.Internal.EnumLiteMap<Type>() {
+                  public Type findValueByNumber(int number) {
+                    return Type.valueOf(number);
+                  }
+                };
+
+          public final com.google.protobuf.Descriptors.EnumValueDescriptor
+              getValueDescriptor() {
+            return getDescriptor().getValues().get(index);
+          }
+          public final com.google.protobuf.Descriptors.EnumDescriptor
+              getDescriptorForType() {
+            return getDescriptor();
+          }
+          public static final com.google.protobuf.Descriptors.EnumDescriptor
+              getDescriptor() {
+            return org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.getDescriptor().getEnumTypes().get(0);
+          }
+
+          private static final Type[] VALUES = values();
+
+          public static Type valueOf(
+              com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+            if (desc.getType() != getDescriptor()) {
+              throw new java.lang.IllegalArgumentException(
+                "EnumValueDescriptor is not for this type.");
+            }
+            return VALUES[desc.getIndex()];
+          }
+
+          private final int index;
+          private final int value;
+
+          private Type(int index, int value) {
+            this.index = index;
+            this.value = value;
+          }
+
+          // @@protoc_insertion_point(enum_scope:mesos.v1.Resource.DiskInfo.Source.Type)
+        }
+
+        public interface PathOrBuilder
+            extends com.google.protobuf.MessageOrBuilder {
+
+          // optional string root = 1;
+          /**
+           * <code>optional string root = 1;</code>
+           *
+           * <pre>
+           * Path to the folder (e.g., /mnt/raid/disk0).
+           * </pre>
+           */
+          boolean hasRoot();
+          /**
+           * <code>optional string root = 1;</code>
+           *
+           * <pre>
+           * Path to the folder (e.g., /mnt/raid/disk0).
+           * </pre>
+           */
+          java.lang.String getRoot();
+          /**
+           * <code>optional string root = 1;</code>
+           *
+           * <pre>
+           * Path to the folder (e.g., /mnt/raid/disk0).
+           * </pre>
+           */
+          com.google.protobuf.ByteString
+              getRootBytes();
+        }
+        /**
+         * Protobuf type {@code mesos.v1.Resource.DiskInfo.Source.Path}
+         *
+         * <pre>
+         * A folder that can be located on a separate disk device. This
+         * can be shared and carved up as necessary between frameworks.
+         * </pre>
+         */
+        public static final class Path extends
+            com.google.protobuf.GeneratedMessage
+            implements PathOrBuilder {
+          // Use Path.newBuilder() to construct.
+          private Path(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+            super(builder);
+            this.unknownFields = builder.getUnknownFields();
+          }
+          private Path(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+          private static final Path defaultInstance;
+          public static Path getDefaultInstance() {
+            return defaultInstance;
+          }
+
+          public Path getDefaultInstanceForType() {
+            return defaultInstance;
+          }
+
+          private final com.google.protobuf.UnknownFieldSet unknownFields;
+          @java.lang.Override
+          public final com.google.protobuf.UnknownFieldSet
+              getUnknownFields() {
+            return this.unknownFields;
+          }
+          private Path(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            initFields();
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+                com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+              boolean done = false;
+              while (!done) {
+                int tag = input.readTag();
+                switch (tag) {
+                  case 0:
+                    done = true;
+                    break;
+                  default: {
+                    if (!parseUnknownField(input, unknownFields,
+                                           extensionRegistry, tag)) {
+                      done = true;
+                    }
+                    break;
+                  }
+                  case 10: {
+                    bitField0_ |= 0x00000001;
+                    root_ = input.readBytes();
+                    break;
+                  }
+                }
+              }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+              throw new com.google.protobuf.InvalidProtocolBufferException(
+                  e.getMessage()).setUnfinishedMessage(this);
+            } finally {
+              this.unknownFields = unknownFields.build();
+              makeExtensionsImmutable();
+            }
+          }
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_DiskInfo_Source_Path_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_DiskInfo_Source_Path_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path.class, org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path.Builder.class);
+          }
+
+          public static com.google.protobuf.Parser<Path> PARSER =
+              new com.google.protobuf.AbstractParser<Path>() {
+            public Path parsePartialFrom(
+                com.google.protobuf.CodedInputStream input,
+                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+                throws com.google.protobuf.InvalidProtocolBufferException {
+              return new Path(input, extensionRegistry);
+            }
+          };
+
+          @java.lang.Override
+          public com.google.protobuf.Parser<Path> getParserForType() {
+            return PARSER;
+          }
+
+          private int bitField0_;
+          // optional string root = 1;
+          public static final int ROOT_FIELD_NUMBER = 1;
+          private java.lang.Object root_;
+          /**
+           * <code>optional string root = 1;</code>
+           *
+           * <pre>
+           * Path to the folder (e.g., /mnt/raid/disk0).
+           * </pre>
+           */
+          public boolean hasRoot() {
+            return ((bitField0_ & 0x00000001) == 0x00000001);
+          }
+          /**
+           * <code>optional string root = 1;</code>
+           *
+           * <pre>
+           * Path to the folder (e.g., /mnt/raid/disk0).
+           * </pre>
+           */
+          public java.lang.String getRoot() {
+            java.lang.Object ref = root_;
+            if (ref instanceof java.lang.String) {
+              return (java.lang.String) ref;
+            } else {
+              com.google.protobuf.ByteString bs = 
+                  (com.google.protobuf.ByteString) ref;
+              java.lang.String s = bs.toStringUtf8();
+              if (bs.isValidUtf8()) {
+                root_ = s;
+              }
+              return s;
+            }
+          }
+          /**
+           * <code>optional string root = 1;</code>
+           *
+           * <pre>
+           * Path to the folder (e.g., /mnt/raid/disk0).
+           * </pre>
+           */
+          public com.google.protobuf.ByteString
+              getRootBytes() {
+            java.lang.Object ref = root_;
+            if (ref instanceof java.lang.String) {
+              com.google.protobuf.ByteString b = 
+                  com.google.protobuf.ByteString.copyFromUtf8(
+                      (java.lang.String) ref);
+              root_ = b;
+              return b;
+            } else {
+              return (com.google.protobuf.ByteString) ref;
+            }
+          }
+
+          private void initFields() {
+            root_ = "";
+          }
+          private byte memoizedIsInitialized = -1;
+          public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized != -1) return isInitialized == 1;
+
+            memoizedIsInitialized = 1;
+            return true;
+          }
+
+          public void writeTo(com.google.protobuf.CodedOutputStream output)
+                              throws java.io.IOException {
+            getSerializedSize();
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              output.writeBytes(1, getRootBytes());
+            }
+            getUnknownFields().writeTo(output);
+          }
+
+          private int memoizedSerializedSize = -1;
+          public int getSerializedSize() {
+            int size = memoizedSerializedSize;
+            if (size != -1) return size;
+
+            size = 0;
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              size += com.google.protobuf.CodedOutputStream
+                .computeBytesSize(1, getRootBytes());
+            }
+            size += getUnknownFields().getSerializedSize();
+            memoizedSerializedSize = size;
+            return size;
+          }
+
+          private static final long serialVersionUID = 0L;
+          @java.lang.Override
+          protected java.lang.Object writeReplace()
+              throws java.io.ObjectStreamException {
+            return super.writeReplace();
+          }
+
+          public static org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path parseFrom(
+              com.google.protobuf.ByteString data)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+          }
+          public static org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path parseFrom(
+              com.google.protobuf.ByteString data,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+          }
+          public static org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path parseFrom(byte[] data)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+          }
+          public static org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path parseFrom(
+              byte[] data,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+          }
+          public static org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path parseFrom(java.io.InputStream input)
+              throws java.io.IOException {
+            return PARSER.parseFrom(input);
+          }
+          public static org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path parseFrom(
+              java.io.InputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            return PARSER.parseFrom(input, extensionRegistry);
+          }
+          public static org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path parseDelimitedFrom(java.io.InputStream input)
+              throws java.io.IOException {
+            return PARSER.parseDelimitedFrom(input);
+          }
+          public static org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path parseDelimitedFrom(
+              java.io.InputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            return PARSER.parseDelimitedFrom(input, extensionRegistry);
+          }
+          public static org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path parseFrom(
+              com.google.protobuf.CodedInputStream input)
+              throws java.io.IOException {
+            return PARSER.parseFrom(input);
+          }
+          public static org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path parseFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            return PARSER.parseFrom(input, extensionRegistry);
+          }
+
+          public static Builder newBuilder() { return Builder.create(); }
+          public Builder newBuilderForType() { return newBuilder(); }
+          public static Builder newBuilder(org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path prototype) {
+            return newBuilder().mergeFrom(prototype);
+          }
+          public Builder toBuilder() { return newBuilder(this); }
+
+          @java.lang.Override
+          protected Builder newBuilderForType(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+          }
+          /**
+           * Protobuf type {@code mesos.v1.Resource.DiskInfo.Source.Path}
+           *
+           * <pre>
+           * A folder that can be located on a separate disk device. This
+           * can be shared and carved up as necessary between frameworks.
+           * </pre>
+           */
+          public static final class Builder extends
+              com.google.protobuf.GeneratedMessage.Builder<Builder>
+             implements org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.PathOrBuilder {
+            public static final com.google.protobuf.Descriptors.Descriptor
+                getDescriptor() {
+              return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_DiskInfo_Source_Path_descriptor;
+            }
+
+            protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+                internalGetFieldAccessorTable() {
+              return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_DiskInfo_Source_Path_fieldAccessorTable
+                  .ensureFieldAccessorsInitialized(
+                      org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path.class, org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path.Builder.class);
+            }
+
+            // Construct using org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path.newBuilder()
+            private Builder() {
+              maybeForceBuilderInitialization();
+            }
+
+            private Builder(
+                com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+              super(parent);
+              maybeForceBuilderInitialization();
+            }
+            private void maybeForceBuilderInitialization() {
+              if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+              }
+            }
+            private static Builder create() {
+              return new Builder();
+            }
+
+            public Builder clear() {
+              super.clear();
+              root_ = "";
+              bitField0_ = (bitField0_ & ~0x00000001);
+              return this;
+            }
+
+            public Builder clone() {
+              return create().mergeFrom(buildPartial());
+            }
+
+            public com.google.protobuf.Descriptors.Descriptor
+                getDescriptorForType() {
+              return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_DiskInfo_Source_Path_descriptor;
+            }
+
+            public org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path getDefaultInstanceForType() {
+              return org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path.getDefaultInstance();
+            }
+
+            public org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path build() {
+              org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path result = buildPartial();
+              if (!result.isInitialized()) {
+                throw newUninitializedMessageException(result);
+              }
+              return result;
+            }
+
+            public org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path buildPartial() {
+              org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path result = new org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path(this);
+              int from_bitField0_ = bitField0_;
+              int to_bitField0_ = 0;
+              if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+                to_bitField0_ |= 0x00000001;
+              }
+              result.root_ = root_;
+              result.bitField0_ = to_bitField0_;
+              onBuilt();
+              return result;
+            }
+
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+              if (other instanceof org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path) {
+                return mergeFrom((org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path)other);
+              } else {
+                super.mergeFrom(other);
+                return this;
+              }
+            }
+
+            public Builder mergeFrom(org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path other) {
+              if (other == org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path.getDefaultInstance()) return this;
+              if (other.hasRoot()) {
+                bitField0_ |= 0x00000001;
+                root_ = other.root_;
+                onChanged();
+              }
+              this.mergeUnknownFields(other.getUnknownFields());
+              return this;
+            }
+
+            public final boolean isInitialized() {
+              return true;
+            }
+
+            public Builder mergeFrom(
+                com.google.protobuf.CodedInputStream input,
+                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+                throws java.io.IOException {
+              org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path parsedMessage = null;
+              try {
+                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+              } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                parsedMessage = (org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path) e.getUnfinishedMessage();
+                throw e;
+              } finally {
+                if (parsedMessage != null) {
+                  mergeFrom(parsedMessage);
+                }
+              }
+              return this;
+            }
+            private int bitField0_;
+
+            // optional string root = 1;
+            private java.lang.Object root_ = "";
+            /**
+             * <code>optional string root = 1;</code>
+             *
+             * <pre>
+             * Path to the folder (e.g., /mnt/raid/disk0).
+             * </pre>
+             */
+            public boolean hasRoot() {
+              return ((bitField0_ & 0x00000001) == 0x00000001);
+            }
+            /**
+             * <code>optional string root = 1;</code>
+             *
+             * <pre>
+             * Path to the folder (e.g., /mnt/raid/disk0).
+             * </pre>
+             */
+            public java.lang.String getRoot() {
+              java.lang.Object ref = root_;
+              if (!(ref instanceof java.lang.String)) {
+                java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                    .toStringUtf8();
+                root_ = s;
+                return s;
+              } else {
+                return (java.lang.String) ref;
+              }
+            }
+            /**
+             * <code>optional string root = 1;</code>
+             *
+             * <pre>
+             * Path to the folder (e.g., /mnt/raid/disk0).
+             * </pre>
+             */
+            public com.google.protobuf.ByteString
+                getRootBytes() {
+              java.lang.Object ref = root_;
+              if (ref instanceof String) {
+                com.google.protobuf.ByteString b = 
+                    com.google.protobuf.ByteString.copyFromUtf8(
+                        (java.lang.String) ref);
+                root_ = b;
+                return b;
+              } else {
+                return (com.google.protobuf.ByteString) ref;
+              }
+            }
+            /**
+             * <code>optional string root = 1;</code>
+             *
+             * <pre>
+             * Path to the folder (e.g., /mnt/raid/disk0).
+             * </pre>
+             */
+            public Builder setRoot(
+                java.lang.String value) {
+              if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+              root_ = value;
+              onChanged();
+              return this;
+            }
+            /**
+             * <code>optional string root = 1;</code>
+             *
+             * <pre>
+             * Path to the folder (e.g., /mnt/raid/disk0).
+             * </pre>
+             */
+            public Builder clearRoot() {
+              bitField0_ = (bitField0_ & ~0x00000001);
+              root_ = getDefaultInstance().getRoot();
+              onChanged();
+              return this;
+            }
+            /**
+             * <code>optional string root = 1;</code>
+             *
+             * <pre>
+             * Path to the folder (e.g., /mnt/raid/disk0).
+             * </pre>
+             */
+            public Builder setRootBytes(
+                com.google.protobuf.ByteString value) {
+              if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+              root_ = value;
+              onChanged();
+              return this;
+            }
+
+            // @@protoc_insertion_point(builder_scope:mesos.v1.Resource.DiskInfo.Source.Path)
+          }
+
+          static {
+            defaultInstance = new Path(true);
+            defaultInstance.initFields();
+          }
+
+          // @@protoc_insertion_point(class_scope:mesos.v1.Resource.DiskInfo.Source.Path)
+        }
+
+        public interface MountOrBuilder
+            extends com.google.protobuf.MessageOrBuilder {
+
+          // optional string root = 1;
+          /**
+           * <code>optional string root = 1;</code>
+           *
+           * <pre>
+           * Path to mount point (e.g., /mnt/raid/disk0).
+           * </pre>
+           */
+          boolean hasRoot();
+          /**
+           * <code>optional string root = 1;</code>
+           *
+           * <pre>
+           * Path to mount point (e.g., /mnt/raid/disk0).
+           * </pre>
+           */
+          java.lang.String getRoot();
+          /**
+           * <code>optional string root = 1;</code>
+           *
+           * <pre>
+           * Path to mount point (e.g., /mnt/raid/disk0).
+           * </pre>
+           */
+          com.google.protobuf.ByteString
+              getRootBytes();
+        }
+        /**
+         * Protobuf type {@code mesos.v1.Resource.DiskInfo.Source.Mount}
+         *
+         * <pre>
+         * A mounted file-system set up by the Agent administrator. This
+         * can only be used exclusively: a framework cannot accept a
+         * partial amount of this disk.
+         * </pre>
+         */
+        public static final class Mount extends
+            com.google.protobuf.GeneratedMessage
+            implements MountOrBuilder {
+          // Use Mount.newBuilder() to construct.
+          private Mount(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+            super(builder);
+            this.unknownFields = builder.getUnknownFields();
+          }
+          private Mount(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+          private static final Mount defaultInstance;
+          public static Mount getDefaultInstance() {
+            return defaultInstance;
+          }
+
+          public Mount getDefaultInstanceForType() {
+            return defaultInstance;
+          }
+
+          private final com.google.protobuf.UnknownFieldSet unknownFields;
+          @java.lang.Override
+          public final com.google.protobuf.UnknownFieldSet
+              getUnknownFields() {
+            return this.unknownFields;
+          }
+          private Mount(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            initFields();
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+                com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+              boolean done = false;
+              while (!done) {
+                int tag = input.readTag();
+                switch (tag) {
+                  case 0:
+                    done = true;
+                    break;
+                  default: {
+                    if (!parseUnknownField(input, unknownFields,
+                                           extensionRegistry, tag)) {
+                      done = true;
+                    }
+                    break;
+                  }
+                  case 10: {
+                    bitField0_ |= 0x00000001;
+                    root_ = input.readBytes();
+                    break;
+                  }
+                }
+              }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+              throw new com.google.protobuf.InvalidProtocolBufferException(
+                  e.getMessage()).setUnfinishedMessage(this);
+            } finally {
+              this.unknownFields = unknownFields.build();
+              makeExtensionsImmutable();
+            }
+          }
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_DiskInfo_Source_Mount_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_DiskInfo_Source_Mount_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount.class, org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount.Builder.class);
+          }
+
+          public static com.google.protobuf.Parser<Mount> PARSER =
+              new com.google.protobuf.AbstractParser<Mount>() {
+            public Mount parsePartialFrom(
+                com.google.protobuf.CodedInputStream input,
+                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+                throws com.google.protobuf.InvalidProtocolBufferException {
+              return new Mount(input, extensionRegistry);
+            }
+          };
+
+          @java.lang.Override
+          public com.google.protobuf.Parser<Mount> getParserForType() {
+            return PARSER;
+          }
+
+          private int bitField0_;
+          // optional string root = 1;
+          public static final int ROOT_FIELD_NUMBER = 1;
+          private java.lang.Object root_;
+          /**
+           * <code>optional string root = 1;</code>
+           *
+           * <pre>
+           * Path to mount point (e.g., /mnt/raid/disk0).
+           * </pre>
+           */
+          public boolean hasRoot() {
+            return ((bitField0_ & 0x00000001) == 0x00000001);
+          }
+          /**
+           * <code>optional string root = 1;</code>
+           *
+           * <pre>
+           * Path to mount point (e.g., /mnt/raid/disk0).
+           * </pre>
+           */
+          public java.lang.String getRoot() {
+            java.lang.Object ref = root_;
+            if (ref instanceof java.lang.String) {
+              return (java.lang.String) ref;
+            } else {
+              com.google.protobuf.ByteString bs = 
+                  (com.google.protobuf.ByteString) ref;
+              java.lang.String s = bs.toStringUtf8();
+              if (bs.isValidUtf8()) {
+                root_ = s;
+              }
+              return s;
+            }
+          }
+          /**
+           * <code>optional string root = 1;</code>
+           *
+           * <pre>
+           * Path to mount point (e.g., /mnt/raid/disk0).
+           * </pre>
+           */
+          public com.google.protobuf.ByteString
+              getRootBytes() {
+            java.lang.Object ref = root_;
+            if (ref instanceof java.lang.String) {
+              com.google.protobuf.ByteString b = 
+                  com.google.protobuf.ByteString.copyFromUtf8(
+                      (java.lang.String) ref);
+              root_ = b;
+              return b;
+            } else {
+              return (com.google.protobuf.ByteString) ref;
+            }
+          }
+
+          private void initFields() {
+            root_ = "";
+          }
+          private byte memoizedIsInitialized = -1;
+          public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized != -1) return isInitialized == 1;
+
+            memoizedIsInitialized = 1;
+            return true;
+          }
+
+          public void writeTo(com.google.protobuf.CodedOutputStream output)
+                              throws java.io.IOException {
+            getSerializedSize();
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              output.writeBytes(1, getRootBytes());
+            }
+            getUnknownFields().writeTo(output);
+          }
+
+          private int memoizedSerializedSize = -1;
+          public int getSerializedSize() {
+            int size = memoizedSerializedSize;
+            if (size != -1) return size;
+
+            size = 0;
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              size += com.google.protobuf.CodedOutputStream
+                .computeBytesSize(1, getRootBytes());
+            }
+            size += getUnknownFields().getSerializedSize();
+            memoizedSerializedSize = size;
+            return size;
+          }
+
+          private static final long serialVersionUID = 0L;
+          @java.lang.Override
+          protected java.lang.Object writeReplace()
+              throws java.io.ObjectStreamException {
+            return super.writeReplace();
+          }
+
+          public static org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount parseFrom(
+              com.google.protobuf.ByteString data)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+          }
+          public static org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount parseFrom(
+              com.google.protobuf.ByteString data,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+          }
+          public static org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount parseFrom(byte[] data)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+          }
+          public static org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount parseFrom(
+              byte[] data,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+          }
+          public static org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount parseFrom(java.io.InputStream input)
+              throws java.io.IOException {
+            return PARSER.parseFrom(input);
+          }
+          public static org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount parseFrom(
+              java.io.InputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            return PARSER.parseFrom(input, extensionRegistry);
+          }
+          public static org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount parseDelimitedFrom(java.io.InputStream input)
+              throws java.io.IOException {
+            return PARSER.parseDelimitedFrom(input);
+          }
+          public static org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount parseDelimitedFrom(
+              java.io.InputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            return PARSER.parseDelimitedFrom(input, extensionRegistry);
+          }
+          public static org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount parseFrom(
+              com.google.protobuf.CodedInputStream input)
+              throws java.io.IOException {
+            return PARSER.parseFrom(input);
+          }
+          public static org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount parseFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            return PARSER.parseFrom(input, extensionRegistry);
+          }
+
+          public static Builder newBuilder() { return Builder.create(); }
+          public Builder newBuilderForType() { return newBuilder(); }
+          public static Builder newBuilder(org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount prototype) {
+            return newBuilder().mergeFrom(prototype);
+          }
+          public Builder toBuilder() { return newBuilder(this); }
+
+          @java.lang.Override
+          protected Builder newBuilderForType(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+          }
+          /**
+           * Protobuf type {@code mesos.v1.Resource.DiskInfo.Source.Mount}
+           *
+           * <pre>
+           * A mounted file-system set up by the Agent administrator. This
+           * can only be used exclusively: a framework cannot accept a
+           * partial amount of this disk.
+           * </pre>
+           */
+          public static final class Builder extends
+              com.google.protobuf.GeneratedMessage.Builder<Builder>
+             implements org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.MountOrBuilder {
+            public static final com.google.protobuf.Descriptors.Descriptor
+                getDescriptor() {
+              return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_DiskInfo_Source_Mount_descriptor;
+            }
+
+            protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+                internalGetFieldAccessorTable() {
+              return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_DiskInfo_Source_Mount_fieldAccessorTable
+                  .ensureFieldAccessorsInitialized(
+                      org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount.class, org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount.Builder.class);
+            }
+
+            // Construct using org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount.newBuilder()
+            private Builder() {
+              maybeForceBuilderInitialization();
+            }
+
+            private Builder(
+                com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+              super(parent);
+              maybeForceBuilderInitialization();
+            }
+            private void maybeForceBuilderInitialization() {
+              if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+              }
+            }
+            private static Builder create() {
+              return new Builder();
+            }
+
+            public Builder clear() {
+              super.clear();
+              root_ = "";
+              bitField0_ = (bitField0_ & ~0x00000001);
+              return this;
+            }
+
+            public Builder clone() {
+              return create().mergeFrom(buildPartial());
+            }
+
+            public com.google.protobuf.Descriptors.Descriptor
+                getDescriptorForType() {
+              return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_DiskInfo_Source_Mount_descriptor;
+            }
+
+            public org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount getDefaultInstanceForType() {
+              return org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount.getDefaultInstance();
+            }
+
+            public org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount build() {
+              org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount result = buildPartial();
+              if (!result.isInitialized()) {
+                throw newUninitializedMessageException(result);
+              }
+              return result;
+            }
+
+            public org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount buildPartial() {
+              org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount result = new org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount(this);
+              int from_bitField0_ = bitField0_;
+              int to_bitField0_ = 0;
+              if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+                to_bitField0_ |= 0x00000001;
+              }
+              result.root_ = root_;
+              result.bitField0_ = to_bitField0_;
+              onBuilt();
+              return result;
+            }
+
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+              if (other instanceof org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount) {
+                return mergeFrom((org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount)other);
+              } else {
+                super.mergeFrom(other);
+                return this;
+              }
+            }
+
+            public Builder mergeFrom(org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount other) {
+              if (other == org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount.getDefaultInstance()) return this;
+              if (other.hasRoot()) {
+                bitField0_ |= 0x00000001;
+                root_ = other.root_;
+                onChanged();
+              }
+              this.mergeUnknownFields(other.getUnknownFields());
+              return this;
+            }
+
+            public final boolean isInitialized() {
+              return true;
+            }
+
+            public Builder mergeFrom(
+                com.google.protobuf.CodedInputStream input,
+                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+                throws java.io.IOException {
+              org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount parsedMessage = null;
+              try {
+                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+              } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                parsedMessage = (org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount) e.getUnfinishedMessage();
+                throw e;
+              } finally {
+                if (parsedMessage != null) {
+                  mergeFrom(parsedMessage);
+                }
+              }
+              return this;
+            }
+            private int bitField0_;
+
+            // optional string root = 1;
+            private java.lang.Object root_ = "";
+            /**
+             * <code>optional string root = 1;</code>
+             *
+             * <pre>
+             * Path to mount point (e.g., /mnt/raid/disk0).
+             * </pre>
+             */
+            public boolean hasRoot() {
+              return ((bitField0_ & 0x00000001) == 0x00000001);
+            }
+            /**
+             * <code>optional string root = 1;</code>
+             *
+             * <pre>
+             * Path to mount point (e.g., /mnt/raid/disk0).
+             * </pre>
+             */
+            public java.lang.String getRoot() {
+              java.lang.Object ref = root_;
+              if (!(ref instanceof java.lang.String)) {
+                java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                    .toStringUtf8();
+                root_ = s;
+                return s;
+              } else {
+                return (java.lang.String) ref;
+              }
+            }
+            /**
+             * <code>optional string root = 1;</code>
+             *
+             * <pre>
+             * Path to mount point (e.g., /mnt/raid/disk0).
+             * </pre>
+             */
+            public com.google.protobuf.ByteString
+                getRootBytes() {
+              java.lang.Object ref = root_;
+              if (ref instanceof String) {
+                com.google.protobuf.ByteString b = 
+                    com.google.protobuf.ByteString.copyFromUtf8(
+                        (java.lang.String) ref);
+                root_ = b;
+                return b;
+              } else {
+                return (com.google.protobuf.ByteString) ref;
+              }
+            }
+            /**
+             * <code>optional string root = 1;</code>
+             *
+             * <pre>
+             * Path to mount point (e.g., /mnt/raid/disk0).
+             * </pre>
+             */
+            public Builder setRoot(
+                java.lang.String value) {
+              if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+              root_ = value;
+              onChanged();
+              return this;
+            }
+            /**
+             * <code>optional string root = 1;</code>
+             *
+             * <pre>
+             * Path to mount point (e.g., /mnt/raid/disk0).
+             * </pre>
+             */
+            public Builder clearRoot() {
+              bitField0_ = (bitField0_ & ~0x00000001);
+              root_ = getDefaultInstance().getRoot();
+              onChanged();
+              return this;
+            }
+            /**
+             * <code>optional string root = 1;</code>
+             *
+             * <pre>
+             * Path to mount point (e.g., /mnt/raid/disk0).
+             * </pre>
+             */
+            public Builder setRootBytes(
+                com.google.protobuf.ByteString value) {
+              if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+              root_ = value;
+              onChanged();
+              return this;
+            }
+
+            // @@protoc_insertion_point(builder_scope:mesos.v1.Resource.DiskInfo.Source.Mount)
+          }
+
+          static {
+            defaultInstance = new Mount(true);
+            defaultInstance.initFields();
+          }
+
+          // @@protoc_insertion_point(class_scope:mesos.v1.Resource.DiskInfo.Source.Mount)
+        }
+
+        private int bitField0_;
+        // required .mesos.v1.Resource.DiskInfo.Source.Type type = 1;
+        public static final int TYPE_FIELD_NUMBER = 1;
+        private org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Type type_;
+        /**
+         * <code>required .mesos.v1.Resource.DiskInfo.Source.Type type = 1;</code>
+         */
+        public boolean hasType() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.v1.Resource.DiskInfo.Source.Type type = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Type getType() {
+          return type_;
+        }
+
+        // optional .mesos.v1.Resource.DiskInfo.Source.Path path = 2;
+        public static final int PATH_FIELD_NUMBER = 2;
+        private org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path path_;
+        /**
+         * <code>optional .mesos.v1.Resource.DiskInfo.Source.Path path = 2;</code>
+         */
+        public boolean hasPath() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional .mesos.v1.Resource.DiskInfo.Source.Path path = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path getPath() {
+          return path_;
+        }
+        /**
+         * <code>optional .mesos.v1.Resource.DiskInfo.Source.Path path = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.PathOrBuilder getPathOrBuilder() {
+          return path_;
+        }
+
+        // optional .mesos.v1.Resource.DiskInfo.Source.Mount mount = 3;
+        public static final int MOUNT_FIELD_NUMBER = 3;
+        private org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount mount_;
+        /**
+         * <code>optional .mesos.v1.Resource.DiskInfo.Source.Mount mount = 3;</code>
+         */
+        public boolean hasMount() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional .mesos.v1.Resource.DiskInfo.Source.Mount mount = 3;</code>
+         */
+        public org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount getMount() {
+          return mount_;
+        }
+        /**
+         * <code>optional .mesos.v1.Resource.DiskInfo.Source.Mount mount = 3;</code>
+         */
+        public org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.MountOrBuilder getMountOrBuilder() {
+          return mount_;
+        }
+
+        private void initFields() {
+          type_ = org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Type.UNKNOWN;
+          path_ = org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path.getDefaultInstance();
+          mount_ = org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount.getDefaultInstance();
+        }
+        private byte memoizedIsInitialized = -1;
+        public final boolean isInitialized() {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized != -1) return isInitialized == 1;
+
+          if (!hasType()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+          memoizedIsInitialized = 1;
+          return true;
+        }
+
+        public void writeTo(com.google.protobuf.CodedOutputStream output)
+                            throws java.io.IOException {
+          getSerializedSize();
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            output.writeEnum(1, type_.getNumber());
+          }
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            output.writeMessage(2, path_);
+          }
+          if (((bitField0_ & 0x00000004) == 0x00000004)) {
+            output.writeMessage(3, mount_);
+          }
+          getUnknownFields().writeTo(output);
+        }
+
+        private int memoizedSerializedSize = -1;
+        public int getSerializedSize() {
+          int size = memoizedSerializedSize;
+          if (size != -1) return size;
+
+          size = 0;
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeEnumSize(1, type_.getNumber());
+          }
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeMessageSize(2, path_);
+          }
+          if (((bitField0_ & 0x00000004) == 0x00000004)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeMessageSize(3, mount_);
+          }
+          size += getUnknownFields().getSerializedSize();
+          memoizedSerializedSize = size;
+          return size;
+        }
+
+        private static final long serialVersionUID = 0L;
+        @java.lang.Override
+        protected java.lang.Object writeReplace()
+            throws java.io.ObjectStreamException {
+          return super.writeReplace();
+        }
+
+        public static org.apache.mesos.v1.Protos.Resource.DiskInfo.Source parseFrom(
+            com.google.protobuf.ByteString data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.v1.Protos.Resource.DiskInfo.Source parseFrom(
+            com.google.protobuf.ByteString data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.Resource.DiskInfo.Source parseFrom(byte[] data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.v1.Protos.Resource.DiskInfo.Source parseFrom(
+            byte[] data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.Resource.DiskInfo.Source parseFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.Resource.DiskInfo.Source parseFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.Resource.DiskInfo.Source parseDelimitedFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.Resource.DiskInfo.Source parseDelimitedFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.Resource.DiskInfo.Source parseFrom(
+            com.google.protobuf.CodedInputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.Resource.DiskInfo.Source parseFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+
+        public static Builder newBuilder() { return Builder.create(); }
+        public Builder newBuilderForType() { return newBuilder(); }
+        public static Builder newBuilder(org.apache.mesos.v1.Protos.Resource.DiskInfo.Source prototype) {
+          return newBuilder().mergeFrom(prototype);
+        }
+        public Builder toBuilder() { return newBuilder(this); }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          Builder builder = new Builder(parent);
+          return builder;
+        }
+        /**
+         * Protobuf type {@code mesos.v1.Resource.DiskInfo.Source}
+         *
+         * <pre>
+         * Describes where a disk originates from.
+         * TODO(jmlvanre): Add support for BLOCK devices.
+         * </pre>
+         */
+        public static final class Builder extends
+            com.google.protobuf.GeneratedMessage.Builder<Builder>
+           implements org.apache.mesos.v1.Protos.Resource.DiskInfo.SourceOrBuilder {
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_DiskInfo_Source_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_DiskInfo_Source_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.class, org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Builder.class);
+          }
+
+          // Construct using org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.newBuilder()
+          private Builder() {
+            maybeForceBuilderInitialization();
+          }
+
+          private Builder(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            super(parent);
+            maybeForceBuilderInitialization();
+          }
+          private void maybeForceBuilderInitialization() {
+            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+              getPathFieldBuilder();
+              getMountFieldBuilder();
+            }
+          }
+          private static Builder create() {
+            return new Builder();
+          }
+
+          public Builder clear() {
+            super.clear();
+            type_ = org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Type.UNKNOWN;
+            bitField0_ = (bitField0_ & ~0x00000001);
+            if (pathBuilder_ == null) {
+              path_ = org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path.getDefaultInstance();
+            } else {
+              pathBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000002);
+            if (mountBuilder_ == null) {
+              mount_ = org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount.getDefaultInstance();
+            } else {
+              mountBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000004);
+            return this;
+          }
+
+          public Builder clone() {
+            return create().mergeFrom(buildPartial());
+          }
+
+          public com.google.protobuf.Descriptors.Descriptor
+              getDescriptorForType() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_DiskInfo_Source_descriptor;
+          }
+
+          public org.apache.mesos.v1.Protos.Resource.DiskInfo.Source getDefaultInstanceForType() {
+            return org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.getDefaultInstance();
+          }
+
+          public org.apache.mesos.v1.Protos.Resource.DiskInfo.Source build() {
+            org.apache.mesos.v1.Protos.Resource.DiskInfo.Source result = buildPartial();
+            if (!result.isInitialized()) {
+              throw newUninitializedMessageException(result);
+            }
+            return result;
+          }
+
+          public org.apache.mesos.v1.Protos.Resource.DiskInfo.Source buildPartial() {
+            org.apache.mesos.v1.Protos.Resource.DiskInfo.Source result = new org.apache.mesos.v1.Protos.Resource.DiskInfo.Source(this);
+            int from_bitField0_ = bitField0_;
+            int to_bitField0_ = 0;
+            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+              to_bitField0_ |= 0x00000001;
+            }
+            result.type_ = type_;
+            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+              to_bitField0_ |= 0x00000002;
+            }
+            if (pathBuilder_ == null) {
+              result.path_ = path_;
+            } else {
+              result.path_ = pathBuilder_.build();
+            }
+            if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+              to_bitField0_ |= 0x00000004;
+            }
+            if (mountBuilder_ == null) {
+              result.mount_ = mount_;
+            } else {
+              result.mount_ = mountBuilder_.build();
+            }
+            result.bitField0_ = to_bitField0_;
+            onBuilt();
+            return result;
+          }
+
+          public Builder mergeFrom(com.google.protobuf.Message other) {
+            if (other instanceof org.apache.mesos.v1.Protos.Resource.DiskInfo.Source) {
+              return mergeFrom((org.apache.mesos.v1.Protos.Resource.DiskInfo.Source)other);
+            } else {
+              super.mergeFrom(other);
+              return this;
+            }
+          }
+
+          public Builder mergeFrom(org.apache.mesos.v1.Protos.Resource.DiskInfo.Source other) {
+            if (other == org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.getDefaultInstance()) return this;
+            if (other.hasType()) {
+              setType(other.getType());
+            }
+            if (other.hasPath()) {
+              mergePath(other.getPath());
+            }
+            if (other.hasMount()) {
+              mergeMount(other.getMount());
+            }
+            this.mergeUnknownFields(other.getUnknownFields());
+            return this;
+          }
+
+          public final boolean isInitialized() {
+            if (!hasType()) {
+              
+              return false;
+            }
+            return true;
+          }
+
+          public Builder mergeFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            org.apache.mesos.v1.Protos.Resource.DiskInfo.Source parsedMessage = null;
+            try {
+              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              parsedMessage = (org.apache.mesos.v1.Protos.Resource.DiskInfo.Source) e.getUnfinishedMessage();
+              throw e;
+            } finally {
+              if (parsedMessage != null) {
+                mergeFrom(parsedMessage);
+              }
+            }
+            return this;
+          }
+          private int bitField0_;
+
+          // required .mesos.v1.Resource.DiskInfo.Source.Type type = 1;
+          private org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Type type_ = org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Type.UNKNOWN;
+          /**
+           * <code>required .mesos.v1.Resource.DiskInfo.Source.Type type = 1;</code>
+           */
+          public boolean hasType() {
+            return ((bitField0_ & 0x00000001) == 0x00000001);
+          }
+          /**
+           * <code>required .mesos.v1.Resource.DiskInfo.Source.Type type = 1;</code>
+           */
+          public org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Type getType() {
+            return type_;
+          }
+          /**
+           * <code>required .mesos.v1.Resource.DiskInfo.Source.Type type = 1;</code>
+           */
+          public Builder setType(org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Type value) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            bitField0_ |= 0x00000001;
+            type_ = value;
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>required .mesos.v1.Resource.DiskInfo.Source.Type type = 1;</code>
+           */
+          public Builder clearType() {
+            bitField0_ = (bitField0_ & ~0x00000001);
+            type_ = org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Type.UNKNOWN;
+            onChanged();
+            return this;
+          }
+
+          // optional .mesos.v1.Resource.DiskInfo.Source.Path path = 2;
+          private org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path path_ = org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path.getDefaultInstance();
+          private com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path, org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path.Builder, org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.PathOrBuilder> pathBuilder_;
+          /**
+           * <code>optional .mesos.v1.Resource.DiskInfo.Source.Path path = 2;</code>
+           */
+          public boolean hasPath() {
+            return ((bitField0_ & 0x00000002) == 0x00000002);
+          }
+          /**
+           * <code>optional .mesos.v1.Resource.DiskInfo.Source.Path path = 2;</code>
+           */
+          public org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path getPath() {
+            if (pathBuilder_ == null) {
+              return path_;
+            } else {
+              return pathBuilder_.getMessage();
+            }
+          }
+          /**
+           * <code>optional .mesos.v1.Resource.DiskInfo.Source.Path path = 2;</code>
+           */
+          public Builder setPath(org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path value) {
+            if (pathBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              path_ = value;
+              onChanged();
+            } else {
+              pathBuilder_.setMessage(value);
+            }
+            bitField0_ |= 0x00000002;
+            return this;
+          }
+          /**
+           * <code>optional .mesos.v1.Resource.DiskInfo.Source.Path path = 2;</code>
+           */
+          public Builder setPath(
+              org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path.Builder builderForValue) {
+            if (pathBuilder_ == null) {
+              path_ = builderForValue.build();
+              onChanged();
+            } else {
+              pathBuilder_.setMessage(builderForValue.build());
+            }
+            bitField0_ |= 0x00000002;
+            return this;
+          }
+          /**
+           * <code>optional .mesos.v1.Resource.DiskInfo.Source.Path path = 2;</code>
+           */
+          public Builder mergePath(org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path value) {
+            if (pathBuilder_ == null) {
+              if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                  path_ != org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path.getDefaultInstance()) {
+                path_ =
+                  org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path.newBuilder(path_).mergeFrom(value).buildPartial();
+              } else {
+                path_ = value;
+              }
+              onChanged();
+            } else {
+              pathBuilder_.mergeFrom(value);
+            }
+            bitField0_ |= 0x00000002;
+            return this;
+          }
+          /**
+           * <code>optional .mesos.v1.Resource.DiskInfo.Source.Path path = 2;</code>
+           */
+          public Builder clearPath() {
+            if (pathBuilder_ == null) {
+              path_ = org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path.getDefaultInstance();
+              onChanged();
+            } else {
+              pathBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000002);
+            return this;
+          }
+          /**
+           * <code>optional .mesos.v1.Resource.DiskInfo.Source.Path path = 2;</code>
+           */
+          public org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path.Builder getPathBuilder() {
+            bitField0_ |= 0x00000002;
+            onChanged();
+            return getPathFieldBuilder().getBuilder();
+          }
+          /**
+           * <code>optional .mesos.v1.Resource.DiskInfo.Source.Path path = 2;</code>
+           */
+          public org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.PathOrBuilder getPathOrBuilder() {
+            if (pathBuilder_ != null) {
+              return pathBuilder_.getMessageOrBuilder();
+            } else {
+              return path_;
+            }
+          }
+          /**
+           * <code>optional .mesos.v1.Resource.DiskInfo.Source.Path path = 2;</code>
+           */
+          private com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path, org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path.Builder, org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.PathOrBuilder> 
+              getPathFieldBuilder() {
+            if (pathBuilder_ == null) {
+              pathBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                  org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path, org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Path.Builder, org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.PathOrBuilder>(
+                      path_,
+                      getParentForChildren(),
+                      isClean());
+              path_ = null;
+            }
+            return pathBuilder_;
+          }
+
+          // optional .mesos.v1.Resource.DiskInfo.Source.Mount mount = 3;
+          private org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount mount_ = org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount.getDefaultInstance();
+          private com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount, org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount.Builder, org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.MountOrBuilder> mountBuilder_;
+          /**
+           * <code>optional .mesos.v1.Resource.DiskInfo.Source.Mount mount = 3;</code>
+           */
+          public boolean hasMount() {
+            return ((bitField0_ & 0x00000004) == 0x00000004);
+          }
+          /**
+           * <code>optional .mesos.v1.Resource.DiskInfo.Source.Mount mount = 3;</code>
+           */
+          public org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount getMount() {
+            if (mountBuilder_ == null) {
+              return mount_;
+            } else {
+              return mountBuilder_.getMessage();
+            }
+          }
+          /**
+           * <code>optional .mesos.v1.Resource.DiskInfo.Source.Mount mount = 3;</code>
+           */
+          public Builder setMount(org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount value) {
+            if (mountBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              mount_ = value;
+              onChanged();
+            } else {
+              mountBuilder_.setMessage(value);
+            }
+            bitField0_ |= 0x00000004;
+            return this;
+          }
+          /**
+           * <code>optional .mesos.v1.Resource.DiskInfo.Source.Mount mount = 3;</code>
+           */
+          public Builder setMount(
+              org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount.Builder builderForValue) {
+            if (mountBuilder_ == null) {
+              mount_ = builderForValue.build();
+              onChanged();
+            } else {
+              mountBuilder_.setMessage(builderForValue.build());
+            }
+            bitField0_ |= 0x00000004;
+            return this;
+          }
+          /**
+           * <code>optional .mesos.v1.Resource.DiskInfo.Source.Mount mount = 3;</code>
+           */
+          public Builder mergeMount(org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount value) {
+            if (mountBuilder_ == null) {
+              if (((bitField0_ & 0x00000004) == 0x00000004) &&
+                  mount_ != org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount.getDefaultInstance()) {
+                mount_ =
+                  org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount.newBuilder(mount_).mergeFrom(value).buildPartial();
+              } else {
+                mount_ = value;
+              }
+              onChanged();
+            } else {
+              mountBuilder_.mergeFrom(value);
+            }
+            bitField0_ |= 0x00000004;
+            return this;
+          }
+          /**
+           * <code>optional .mesos.v1.Resource.DiskInfo.Source.Mount mount = 3;</code>
+           */
+          public Builder clearMount() {
+            if (mountBuilder_ == null) {
+              mount_ = org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount.getDefaultInstance();
+              onChanged();
+            } else {
+              mountBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000004);
+            return this;
+          }
+          /**
+           * <code>optional .mesos.v1.Resource.DiskInfo.Source.Mount mount = 3;</code>
+           */
+          public org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount.Builder getMountBuilder() {
+            bitField0_ |= 0x00000004;
+            onChanged();
+            return getMountFieldBuilder().getBuilder();
+          }
+          /**
+           * <code>optional .mesos.v1.Resource.DiskInfo.Source.Mount mount = 3;</code>
+           */
+          public org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.MountOrBuilder getMountOrBuilder() {
+            if (mountBuilder_ != null) {
+              return mountBuilder_.getMessageOrBuilder();
+            } else {
+              return mount_;
+            }
+          }
+          /**
+           * <code>optional .mesos.v1.Resource.DiskInfo.Source.Mount mount = 3;</code>
+           */
+          private com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount, org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount.Builder, org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.MountOrBuilder> 
+              getMountFieldBuilder() {
+            if (mountBuilder_ == null) {
+              mountBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                  org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount, org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Mount.Builder, org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.MountOrBuilder>(
+                      mount_,
+                      getParentForChildren(),
+                      isClean());
+              mount_ = null;
+            }
+            return mountBuilder_;
+          }
+
+          // @@protoc_insertion_point(builder_scope:mesos.v1.Resource.DiskInfo.Source)
+        }
+
+        static {
+          defaultInstance = new Source(true);
+          defaultInstance.initFields();
+        }
+
+        // @@protoc_insertion_point(class_scope:mesos.v1.Resource.DiskInfo.Source)
+      }
+
+      private int bitField0_;
+      // optional .mesos.v1.Resource.DiskInfo.Persistence persistence = 1;
+      public static final int PERSISTENCE_FIELD_NUMBER = 1;
+      private org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence persistence_;
+      /**
+       * <code>optional .mesos.v1.Resource.DiskInfo.Persistence persistence = 1;</code>
+       */
+      public boolean hasPersistence() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.DiskInfo.Persistence persistence = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence getPersistence() {
+        return persistence_;
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.DiskInfo.Persistence persistence = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.Resource.DiskInfo.PersistenceOrBuilder getPersistenceOrBuilder() {
+        return persistence_;
+      }
+
+      // optional .mesos.v1.Volume volume = 2;
+      public static final int VOLUME_FIELD_NUMBER = 2;
+      private org.apache.mesos.v1.Protos.Volume volume_;
+      /**
+       * <code>optional .mesos.v1.Volume volume = 2;</code>
+       *
+       * <pre>
+       * Describes how this disk resource will be mounted in the
+       * container. If not set, the disk resource will be used as the
+       * sandbox. Otherwise, it will be mounted according to the
+       * 'container_path' inside 'volume'. The 'host_path' inside
+       * 'volume' is ignored.
+       * NOTE: If 'volume' is set but 'persistence' is not set, the
+       * volume will be automatically garbage collected after
+       * task/executor terminates. Currently, if 'persistence' is set,
+       * 'volume' must be set.
+       * </pre>
+       */
+      public boolean hasVolume() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.v1.Volume volume = 2;</code>
+       *
+       * <pre>
+       * Describes how this disk resource will be mounted in the
+       * container. If not set, the disk resource will be used as the
+       * sandbox. Otherwise, it will be mounted according to the
+       * 'container_path' inside 'volume'. The 'host_path' inside
+       * 'volume' is ignored.
+       * NOTE: If 'volume' is set but 'persistence' is not set, the
+       * volume will be automatically garbage collected after
+       * task/executor terminates. Currently, if 'persistence' is set,
+       * 'volume' must be set.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Volume getVolume() {
+        return volume_;
+      }
+      /**
+       * <code>optional .mesos.v1.Volume volume = 2;</code>
+       *
+       * <pre>
+       * Describes how this disk resource will be mounted in the
+       * container. If not set, the disk resource will be used as the
+       * sandbox. Otherwise, it will be mounted according to the
+       * 'container_path' inside 'volume'. The 'host_path' inside
+       * 'volume' is ignored.
+       * NOTE: If 'volume' is set but 'persistence' is not set, the
+       * volume will be automatically garbage collected after
+       * task/executor terminates. Currently, if 'persistence' is set,
+       * 'volume' must be set.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.VolumeOrBuilder getVolumeOrBuilder() {
+        return volume_;
+      }
+
+      // optional .mesos.v1.Resource.DiskInfo.Source source = 3;
+      public static final int SOURCE_FIELD_NUMBER = 3;
+      private org.apache.mesos.v1.Protos.Resource.DiskInfo.Source source_;
+      /**
+       * <code>optional .mesos.v1.Resource.DiskInfo.Source source = 3;</code>
+       */
+      public boolean hasSource() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.DiskInfo.Source source = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.Resource.DiskInfo.Source getSource() {
+        return source_;
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.DiskInfo.Source source = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.Resource.DiskInfo.SourceOrBuilder getSourceOrBuilder() {
+        return source_;
+      }
+
+      private void initFields() {
+        persistence_ = org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence.getDefaultInstance();
+        volume_ = org.apache.mesos.v1.Protos.Volume.getDefaultInstance();
+        source_ = org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (hasPersistence()) {
+          if (!getPersistence().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        if (hasVolume()) {
+          if (!getVolume().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        if (hasSource()) {
+          if (!getSource().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, persistence_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeMessage(2, volume_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeMessage(3, source_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, persistence_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(2, volume_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(3, source_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.Protos.Resource.DiskInfo parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.DiskInfo parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.DiskInfo parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.DiskInfo parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.DiskInfo parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.DiskInfo parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.DiskInfo parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.DiskInfo parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.DiskInfo parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.DiskInfo parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.Protos.Resource.DiskInfo prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.Resource.DiskInfo}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.Protos.Resource.DiskInfoOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_DiskInfo_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_DiskInfo_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.Resource.DiskInfo.class, org.apache.mesos.v1.Protos.Resource.DiskInfo.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.Protos.Resource.DiskInfo.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getPersistenceFieldBuilder();
+            getVolumeFieldBuilder();
+            getSourceFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (persistenceBuilder_ == null) {
+            persistence_ = org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence.getDefaultInstance();
+          } else {
+            persistenceBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          if (volumeBuilder_ == null) {
+            volume_ = org.apache.mesos.v1.Protos.Volume.getDefaultInstance();
+          } else {
+            volumeBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          if (sourceBuilder_ == null) {
+            source_ = org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.getDefaultInstance();
+          } else {
+            sourceBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_DiskInfo_descriptor;
+        }
+
+        public org.apache.mesos.v1.Protos.Resource.DiskInfo getDefaultInstanceForType() {
+          return org.apache.mesos.v1.Protos.Resource.DiskInfo.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.Protos.Resource.DiskInfo build() {
+          org.apache.mesos.v1.Protos.Resource.DiskInfo result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.Protos.Resource.DiskInfo buildPartial() {
+          org.apache.mesos.v1.Protos.Resource.DiskInfo result = new org.apache.mesos.v1.Protos.Resource.DiskInfo(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (persistenceBuilder_ == null) {
+            result.persistence_ = persistence_;
+          } else {
+            result.persistence_ = persistenceBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          if (volumeBuilder_ == null) {
+            result.volume_ = volume_;
+          } else {
+            result.volume_ = volumeBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          if (sourceBuilder_ == null) {
+            result.source_ = source_;
+          } else {
+            result.source_ = sourceBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.Protos.Resource.DiskInfo) {
+            return mergeFrom((org.apache.mesos.v1.Protos.Resource.DiskInfo)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.Protos.Resource.DiskInfo other) {
+          if (other == org.apache.mesos.v1.Protos.Resource.DiskInfo.getDefaultInstance()) return this;
+          if (other.hasPersistence()) {
+            mergePersistence(other.getPersistence());
+          }
+          if (other.hasVolume()) {
+            mergeVolume(other.getVolume());
+          }
+          if (other.hasSource()) {
+            mergeSource(other.getSource());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (hasPersistence()) {
+            if (!getPersistence().isInitialized()) {
+              
+              return false;
+            }
+          }
+          if (hasVolume()) {
+            if (!getVolume().isInitialized()) {
+              
+              return false;
+            }
+          }
+          if (hasSource()) {
+            if (!getSource().isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.Protos.Resource.DiskInfo parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.Protos.Resource.DiskInfo) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // optional .mesos.v1.Resource.DiskInfo.Persistence persistence = 1;
+        private org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence persistence_ = org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence, org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence.Builder, org.apache.mesos.v1.Protos.Resource.DiskInfo.PersistenceOrBuilder> persistenceBuilder_;
+        /**
+         * <code>optional .mesos.v1.Resource.DiskInfo.Persistence persistence = 1;</code>
+         */
+        public boolean hasPersistence() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional .mesos.v1.Resource.DiskInfo.Persistence persistence = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence getPersistence() {
+          if (persistenceBuilder_ == null) {
+            return persistence_;
+          } else {
+            return persistenceBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Resource.DiskInfo.Persistence persistence = 1;</code>
+         */
+        public Builder setPersistence(org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence value) {
+          if (persistenceBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            persistence_ = value;
+            onChanged();
+          } else {
+            persistenceBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Resource.DiskInfo.Persistence persistence = 1;</code>
+         */
+        public Builder setPersistence(
+            org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence.Builder builderForValue) {
+          if (persistenceBuilder_ == null) {
+            persistence_ = builderForValue.build();
+            onChanged();
+          } else {
+            persistenceBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Resource.DiskInfo.Persistence persistence = 1;</code>
+         */
+        public Builder mergePersistence(org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence value) {
+          if (persistenceBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                persistence_ != org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence.getDefaultInstance()) {
+              persistence_ =
+                org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence.newBuilder(persistence_).mergeFrom(value).buildPartial();
+            } else {
+              persistence_ = value;
+            }
+            onChanged();
+          } else {
+            persistenceBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Resource.DiskInfo.Persistence persistence = 1;</code>
+         */
+        public Builder clearPersistence() {
+          if (persistenceBuilder_ == null) {
+            persistence_ = org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence.getDefaultInstance();
+            onChanged();
+          } else {
+            persistenceBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Resource.DiskInfo.Persistence persistence = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence.Builder getPersistenceBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getPersistenceFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.v1.Resource.DiskInfo.Persistence persistence = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.Resource.DiskInfo.PersistenceOrBuilder getPersistenceOrBuilder() {
+          if (persistenceBuilder_ != null) {
+            return persistenceBuilder_.getMessageOrBuilder();
+          } else {
+            return persistence_;
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Resource.DiskInfo.Persistence persistence = 1;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence, org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence.Builder, org.apache.mesos.v1.Protos.Resource.DiskInfo.PersistenceOrBuilder> 
+            getPersistenceFieldBuilder() {
+          if (persistenceBuilder_ == null) {
+            persistenceBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence, org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence.Builder, org.apache.mesos.v1.Protos.Resource.DiskInfo.PersistenceOrBuilder>(
+                    persistence_,
+                    getParentForChildren(),
+                    isClean());
+            persistence_ = null;
+          }
+          return persistenceBuilder_;
+        }
+
+        // optional .mesos.v1.Volume volume = 2;
+        private org.apache.mesos.v1.Protos.Volume volume_ = org.apache.mesos.v1.Protos.Volume.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Volume, org.apache.mesos.v1.Protos.Volume.Builder, org.apache.mesos.v1.Protos.VolumeOrBuilder> volumeBuilder_;
+        /**
+         * <code>optional .mesos.v1.Volume volume = 2;</code>
+         *
+         * <pre>
+         * Describes how this disk resource will be mounted in the
+         * container. If not set, the disk resource will be used as the
+         * sandbox. Otherwise, it will be mounted according to the
+         * 'container_path' inside 'volume'. The 'host_path' inside
+         * 'volume' is ignored.
+         * NOTE: If 'volume' is set but 'persistence' is not set, the
+         * volume will be automatically garbage collected after
+         * task/executor terminates. Currently, if 'persistence' is set,
+         * 'volume' must be set.
+         * </pre>
+         */
+        public boolean hasVolume() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional .mesos.v1.Volume volume = 2;</code>
+         *
+         * <pre>
+         * Describes how this disk resource will be mounted in the
+         * container. If not set, the disk resource will be used as the
+         * sandbox. Otherwise, it will be mounted according to the
+         * 'container_path' inside 'volume'. The 'host_path' inside
+         * 'volume' is ignored.
+         * NOTE: If 'volume' is set but 'persistence' is not set, the
+         * volume will be automatically garbage collected after
+         * task/executor terminates. Currently, if 'persistence' is set,
+         * 'volume' must be set.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.Volume getVolume() {
+          if (volumeBuilder_ == null) {
+            return volume_;
+          } else {
+            return volumeBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Volume volume = 2;</code>
+         *
+         * <pre>
+         * Describes how this disk resource will be mounted in the
+         * container. If not set, the disk resource will be used as the
+         * sandbox. Otherwise, it will be mounted according to the
+         * 'container_path' inside 'volume'. The 'host_path' inside
+         * 'volume' is ignored.
+         * NOTE: If 'volume' is set but 'persistence' is not set, the
+         * volume will be automatically garbage collected after
+         * task/executor terminates. Currently, if 'persistence' is set,
+         * 'volume' must be set.
+         * </pre>
+         */
+        public Builder setVolume(org.apache.mesos.v1.Protos.Volume value) {
+          if (volumeBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            volume_ = value;
+            onChanged();
+          } else {
+            volumeBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Volume volume = 2;</code>
+         *
+         * <pre>
+         * Describes how this disk resource will be mounted in the
+         * container. If not set, the disk resource will be used as the
+         * sandbox. Otherwise, it will be mounted according to the
+         * 'container_path' inside 'volume'. The 'host_path' inside
+         * 'volume' is ignored.
+         * NOTE: If 'volume' is set but 'persistence' is not set, the
+         * volume will be automatically garbage collected after
+         * task/executor terminates. Currently, if 'persistence' is set,
+         * 'volume' must be set.
+         * </pre>
+         */
+        public Builder setVolume(
+            org.apache.mesos.v1.Protos.Volume.Builder builderForValue) {
+          if (volumeBuilder_ == null) {
+            volume_ = builderForValue.build();
+            onChanged();
+          } else {
+            volumeBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Volume volume = 2;</code>
+         *
+         * <pre>
+         * Describes how this disk resource will be mounted in the
+         * container. If not set, the disk resource will be used as the
+         * sandbox. Otherwise, it will be mounted according to the
+         * 'container_path' inside 'volume'. The 'host_path' inside
+         * 'volume' is ignored.
+         * NOTE: If 'volume' is set but 'persistence' is not set, the
+         * volume will be automatically garbage collected after
+         * task/executor terminates. Currently, if 'persistence' is set,
+         * 'volume' must be set.
+         * </pre>
+         */
+        public Builder mergeVolume(org.apache.mesos.v1.Protos.Volume value) {
+          if (volumeBuilder_ == null) {
+            if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                volume_ != org.apache.mesos.v1.Protos.Volume.getDefaultInstance()) {
+              volume_ =
+                org.apache.mesos.v1.Protos.Volume.newBuilder(volume_).mergeFrom(value).buildPartial();
+            } else {
+              volume_ = value;
+            }
+            onChanged();
+          } else {
+            volumeBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Volume volume = 2;</code>
+         *
+         * <pre>
+         * Describes how this disk resource will be mounted in the
+         * container. If not set, the disk resource will be used as the
+         * sandbox. Otherwise, it will be mounted according to the
+         * 'container_path' inside 'volume'. The 'host_path' inside
+         * 'volume' is ignored.
+         * NOTE: If 'volume' is set but 'persistence' is not set, the
+         * volume will be automatically garbage collected after
+         * task/executor terminates. Currently, if 'persistence' is set,
+         * 'volume' must be set.
+         * </pre>
+         */
+        public Builder clearVolume() {
+          if (volumeBuilder_ == null) {
+            volume_ = org.apache.mesos.v1.Protos.Volume.getDefaultInstance();
+            onChanged();
+          } else {
+            volumeBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Volume volume = 2;</code>
+         *
+         * <pre>
+         * Describes how this disk resource will be mounted in the
+         * container. If not set, the disk resource will be used as the
+         * sandbox. Otherwise, it will be mounted according to the
+         * 'container_path' inside 'volume'. The 'host_path' inside
+         * 'volume' is ignored.
+         * NOTE: If 'volume' is set but 'persistence' is not set, the
+         * volume will be automatically garbage collected after
+         * task/executor terminates. Currently, if 'persistence' is set,
+         * 'volume' must be set.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.Volume.Builder getVolumeBuilder() {
+          bitField0_ |= 0x00000002;
+          onChanged();
+          return getVolumeFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.v1.Volume volume = 2;</code>
+         *
+         * <pre>
+         * Describes how this disk resource will be mounted in the
+         * container. If not set, the disk resource will be used as the
+         * sandbox. Otherwise, it will be mounted according to the
+         * 'container_path' inside 'volume'. The 'host_path' inside
+         * 'volume' is ignored.
+         * NOTE: If 'volume' is set but 'persistence' is not set, the
+         * volume will be automatically garbage collected after
+         * task/executor terminates. Currently, if 'persistence' is set,
+         * 'volume' must be set.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.VolumeOrBuilder getVolumeOrBuilder() {
+          if (volumeBuilder_ != null) {
+            return volumeBuilder_.getMessageOrBuilder();
+          } else {
+            return volume_;
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Volume volume = 2;</code>
+         *
+         * <pre>
+         * Describes how this disk resource will be mounted in the
+         * container. If not set, the disk resource will be used as the
+         * sandbox. Otherwise, it will be mounted according to the
+         * 'container_path' inside 'volume'. The 'host_path' inside
+         * 'volume' is ignored.
+         * NOTE: If 'volume' is set but 'persistence' is not set, the
+         * volume will be automatically garbage collected after
+         * task/executor terminates. Currently, if 'persistence' is set,
+         * 'volume' must be set.
+         * </pre>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Volume, org.apache.mesos.v1.Protos.Volume.Builder, org.apache.mesos.v1.Protos.VolumeOrBuilder> 
+            getVolumeFieldBuilder() {
+          if (volumeBuilder_ == null) {
+            volumeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.Volume, org.apache.mesos.v1.Protos.Volume.Builder, org.apache.mesos.v1.Protos.VolumeOrBuilder>(
+                    volume_,
+                    getParentForChildren(),
+                    isClean());
+            volume_ = null;
+          }
+          return volumeBuilder_;
+        }
+
+        // optional .mesos.v1.Resource.DiskInfo.Source source = 3;
+        private org.apache.mesos.v1.Protos.Resource.DiskInfo.Source source_ = org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Resource.DiskInfo.Source, org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Builder, org.apache.mesos.v1.Protos.Resource.DiskInfo.SourceOrBuilder> sourceBuilder_;
+        /**
+         * <code>optional .mesos.v1.Resource.DiskInfo.Source source = 3;</code>
+         */
+        public boolean hasSource() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional .mesos.v1.Resource.DiskInfo.Source source = 3;</code>
+         */
+        public org.apache.mesos.v1.Protos.Resource.DiskInfo.Source getSource() {
+          if (sourceBuilder_ == null) {
+            return source_;
+          } else {
+            return sourceBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Resource.DiskInfo.Source source = 3;</code>
+         */
+        public Builder setSource(org.apache.mesos.v1.Protos.Resource.DiskInfo.Source value) {
+          if (sourceBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            source_ = value;
+            onChanged();
+          } else {
+            sourceBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Resource.DiskInfo.Source source = 3;</code>
+         */
+        public Builder setSource(
+            org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Builder builderForValue) {
+          if (sourceBuilder_ == null) {
+            source_ = builderForValue.build();
+            onChanged();
+          } else {
+            sourceBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Resource.DiskInfo.Source source = 3;</code>
+         */
+        public Builder mergeSource(org.apache.mesos.v1.Protos.Resource.DiskInfo.Source value) {
+          if (sourceBuilder_ == null) {
+            if (((bitField0_ & 0x00000004) == 0x00000004) &&
+                source_ != org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.getDefaultInstance()) {
+              source_ =
+                org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.newBuilder(source_).mergeFrom(value).buildPartial();
+            } else {
+              source_ = value;
+            }
+            onChanged();
+          } else {
+            sourceBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Resource.DiskInfo.Source source = 3;</code>
+         */
+        public Builder clearSource() {
+          if (sourceBuilder_ == null) {
+            source_ = org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.getDefaultInstance();
+            onChanged();
+          } else {
+            sourceBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Resource.DiskInfo.Source source = 3;</code>
+         */
+        public org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Builder getSourceBuilder() {
+          bitField0_ |= 0x00000004;
+          onChanged();
+          return getSourceFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.v1.Resource.DiskInfo.Source source = 3;</code>
+         */
+        public org.apache.mesos.v1.Protos.Resource.DiskInfo.SourceOrBuilder getSourceOrBuilder() {
+          if (sourceBuilder_ != null) {
+            return sourceBuilder_.getMessageOrBuilder();
+          } else {
+            return source_;
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Resource.DiskInfo.Source source = 3;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Resource.DiskInfo.Source, org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Builder, org.apache.mesos.v1.Protos.Resource.DiskInfo.SourceOrBuilder> 
+            getSourceFieldBuilder() {
+          if (sourceBuilder_ == null) {
+            sourceBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.Resource.DiskInfo.Source, org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Builder, org.apache.mesos.v1.Protos.Resource.DiskInfo.SourceOrBuilder>(
+                    source_,
+                    getParentForChildren(),
+                    isClean());
+            source_ = null;
+          }
+          return sourceBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.Resource.DiskInfo)
+      }
+
+      static {
+        defaultInstance = new DiskInfo(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.Resource.DiskInfo)
+    }
+
+    public interface RevocableInfoOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+    }
+    /**
+     * Protobuf type {@code mesos.v1.Resource.RevocableInfo}
+     */
+    public static final class RevocableInfo extends
+        com.google.protobuf.GeneratedMessage
+        implements RevocableInfoOrBuilder {
+      // Use RevocableInfo.newBuilder() to construct.
+      private RevocableInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private RevocableInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final RevocableInfo defaultInstance;
+      public static RevocableInfo getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public RevocableInfo getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private RevocableInfo(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_RevocableInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_RevocableInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.Resource.RevocableInfo.class, org.apache.mesos.v1.Protos.Resource.RevocableInfo.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<RevocableInfo> PARSER =
+          new com.google.protobuf.AbstractParser<RevocableInfo>() {
+        public RevocableInfo parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new RevocableInfo(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<RevocableInfo> getParserForType() {
+        return PARSER;
+      }
+
+      private void initFields() {
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.Protos.Resource.RevocableInfo parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.RevocableInfo parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.RevocableInfo parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.RevocableInfo parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.RevocableInfo parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.RevocableInfo parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.RevocableInfo parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.RevocableInfo parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.RevocableInfo parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.RevocableInfo parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.Protos.Resource.RevocableInfo prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.Resource.RevocableInfo}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.Protos.Resource.RevocableInfoOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_RevocableInfo_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_RevocableInfo_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.Resource.RevocableInfo.class, org.apache.mesos.v1.Protos.Resource.RevocableInfo.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.Protos.Resource.RevocableInfo.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_RevocableInfo_descriptor;
+        }
+
+        public org.apache.mesos.v1.Protos.Resource.RevocableInfo getDefaultInstanceForType() {
+          return org.apache.mesos.v1.Protos.Resource.RevocableInfo.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.Protos.Resource.RevocableInfo build() {
+          org.apache.mesos.v1.Protos.Resource.RevocableInfo result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.Protos.Resource.RevocableInfo buildPartial() {
+          org.apache.mesos.v1.Protos.Resource.RevocableInfo result = new org.apache.mesos.v1.Protos.Resource.RevocableInfo(this);
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.Protos.Resource.RevocableInfo) {
+            return mergeFrom((org.apache.mesos.v1.Protos.Resource.RevocableInfo)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.Protos.Resource.RevocableInfo other) {
+          if (other == org.apache.mesos.v1.Protos.Resource.RevocableInfo.getDefaultInstance()) return this;
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.Protos.Resource.RevocableInfo parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.Protos.Resource.RevocableInfo) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.Resource.RevocableInfo)
+      }
+
+      static {
+        defaultInstance = new RevocableInfo(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.Resource.RevocableInfo)
+    }
+
+    public interface SharedInfoOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+    }
+    /**
+     * Protobuf type {@code mesos.v1.Resource.SharedInfo}
+     *
+     * <pre>
+     * Allow the resource to be shared across tasks.
+     * </pre>
+     */
+    public static final class SharedInfo extends
+        com.google.protobuf.GeneratedMessage
+        implements SharedInfoOrBuilder {
+      // Use SharedInfo.newBuilder() to construct.
+      private SharedInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private SharedInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final SharedInfo defaultInstance;
+      public static SharedInfo getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public SharedInfo getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private SharedInfo(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_SharedInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_SharedInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.Resource.SharedInfo.class, org.apache.mesos.v1.Protos.Resource.SharedInfo.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<SharedInfo> PARSER =
+          new com.google.protobuf.AbstractParser<SharedInfo>() {
+        public SharedInfo parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new SharedInfo(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<SharedInfo> getParserForType() {
+        return PARSER;
+      }
+
+      private void initFields() {
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.Protos.Resource.SharedInfo parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.SharedInfo parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.SharedInfo parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.SharedInfo parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.SharedInfo parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.SharedInfo parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.SharedInfo parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.SharedInfo parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.SharedInfo parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Resource.SharedInfo parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.Protos.Resource.SharedInfo prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.Resource.SharedInfo}
+       *
+       * <pre>
+       * Allow the resource to be shared across tasks.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.Protos.Resource.SharedInfoOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_SharedInfo_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_SharedInfo_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.Resource.SharedInfo.class, org.apache.mesos.v1.Protos.Resource.SharedInfo.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.Protos.Resource.SharedInfo.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_SharedInfo_descriptor;
+        }
+
+        public org.apache.mesos.v1.Protos.Resource.SharedInfo getDefaultInstanceForType() {
+          return org.apache.mesos.v1.Protos.Resource.SharedInfo.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.Protos.Resource.SharedInfo build() {
+          org.apache.mesos.v1.Protos.Resource.SharedInfo result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.Protos.Resource.SharedInfo buildPartial() {
+          org.apache.mesos.v1.Protos.Resource.SharedInfo result = new org.apache.mesos.v1.Protos.Resource.SharedInfo(this);
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.Protos.Resource.SharedInfo) {
+            return mergeFrom((org.apache.mesos.v1.Protos.Resource.SharedInfo)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.Protos.Resource.SharedInfo other) {
+          if (other == org.apache.mesos.v1.Protos.Resource.SharedInfo.getDefaultInstance()) return this;
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.Protos.Resource.SharedInfo parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.Protos.Resource.SharedInfo) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.Resource.SharedInfo)
+      }
+
+      static {
+        defaultInstance = new SharedInfo(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.Resource.SharedInfo)
+    }
+
+    private int bitField0_;
+    // optional .mesos.v1.ResourceProviderID provider_id = 12;
+    public static final int PROVIDER_ID_FIELD_NUMBER = 12;
+    private org.apache.mesos.v1.Protos.ResourceProviderID providerId_;
+    /**
+     * <code>optional .mesos.v1.ResourceProviderID provider_id = 12;</code>
+     */
+    public boolean hasProviderId() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional .mesos.v1.ResourceProviderID provider_id = 12;</code>
+     */
+    public org.apache.mesos.v1.Protos.ResourceProviderID getProviderId() {
+      return providerId_;
+    }
+    /**
+     * <code>optional .mesos.v1.ResourceProviderID provider_id = 12;</code>
+     */
+    public org.apache.mesos.v1.Protos.ResourceProviderIDOrBuilder getProviderIdOrBuilder() {
+      return providerId_;
+    }
+
+    // required string name = 1;
+    public static final int NAME_FIELD_NUMBER = 1;
+    private java.lang.Object name_;
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public boolean hasName() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public java.lang.String getName() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          name_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getNameBytes() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        name_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // required .mesos.v1.Value.Type type = 2;
+    public static final int TYPE_FIELD_NUMBER = 2;
+    private org.apache.mesos.v1.Protos.Value.Type type_;
+    /**
+     * <code>required .mesos.v1.Value.Type type = 2;</code>
+     */
+    public boolean hasType() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>required .mesos.v1.Value.Type type = 2;</code>
+     */
+    public org.apache.mesos.v1.Protos.Value.Type getType() {
+      return type_;
+    }
+
+    // optional .mesos.v1.Value.Scalar scalar = 3;
+    public static final int SCALAR_FIELD_NUMBER = 3;
+    private org.apache.mesos.v1.Protos.Value.Scalar scalar_;
+    /**
+     * <code>optional .mesos.v1.Value.Scalar scalar = 3;</code>
+     */
+    public boolean hasScalar() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional .mesos.v1.Value.Scalar scalar = 3;</code>
+     */
+    public org.apache.mesos.v1.Protos.Value.Scalar getScalar() {
+      return scalar_;
+    }
+    /**
+     * <code>optional .mesos.v1.Value.Scalar scalar = 3;</code>
+     */
+    public org.apache.mesos.v1.Protos.Value.ScalarOrBuilder getScalarOrBuilder() {
+      return scalar_;
+    }
+
+    // optional .mesos.v1.Value.Ranges ranges = 4;
+    public static final int RANGES_FIELD_NUMBER = 4;
+    private org.apache.mesos.v1.Protos.Value.Ranges ranges_;
+    /**
+     * <code>optional .mesos.v1.Value.Ranges ranges = 4;</code>
+     */
+    public boolean hasRanges() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional .mesos.v1.Value.Ranges ranges = 4;</code>
+     */
+    public org.apache.mesos.v1.Protos.Value.Ranges getRanges() {
+      return ranges_;
+    }
+    /**
+     * <code>optional .mesos.v1.Value.Ranges ranges = 4;</code>
+     */
+    public org.apache.mesos.v1.Protos.Value.RangesOrBuilder getRangesOrBuilder() {
+      return ranges_;
+    }
+
+    // optional .mesos.v1.Value.Set set = 5;
+    public static final int SET_FIELD_NUMBER = 5;
+    private org.apache.mesos.v1.Protos.Value.Set set_;
+    /**
+     * <code>optional .mesos.v1.Value.Set set = 5;</code>
+     */
+    public boolean hasSet() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional .mesos.v1.Value.Set set = 5;</code>
+     */
+    public org.apache.mesos.v1.Protos.Value.Set getSet() {
+      return set_;
+    }
+    /**
+     * <code>optional .mesos.v1.Value.Set set = 5;</code>
+     */
+    public org.apache.mesos.v1.Protos.Value.SetOrBuilder getSetOrBuilder() {
+      return set_;
+    }
+
+    // optional string role = 6 [default = "*", deprecated = true];
+    public static final int ROLE_FIELD_NUMBER = 6;
+    private java.lang.Object role_;
+    /**
+     * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+     *
+     * <pre>
+     * The role that this resource is reserved for. If "*", this indicates
+     * that the resource is unreserved. Otherwise, the resource will only
+     * be offered to frameworks that belong to this role.
+     *
+     * NOTE: Frameworks must not set this field if `reservations` is set.
+     *       See the 'Resource Format' section for more details.
+     *
+     * TODO(mpark): Deprecate once `reservations` is no longer experimental.
+     * </pre>
+     */
+    @java.lang.Deprecated public boolean hasRole() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+     *
+     * <pre>
+     * The role that this resource is reserved for. If "*", this indicates
+     * that the resource is unreserved. Otherwise, the resource will only
+     * be offered to frameworks that belong to this role.
+     *
+     * NOTE: Frameworks must not set this field if `reservations` is set.
+     *       See the 'Resource Format' section for more details.
+     *
+     * TODO(mpark): Deprecate once `reservations` is no longer experimental.
+     * </pre>
+     */
+    @java.lang.Deprecated public java.lang.String getRole() {
+      java.lang.Object ref = role_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          role_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+     *
+     * <pre>
+     * The role that this resource is reserved for. If "*", this indicates
+     * that the resource is unreserved. Otherwise, the resource will only
+     * be offered to frameworks that belong to this role.
+     *
+     * NOTE: Frameworks must not set this field if `reservations` is set.
+     *       See the 'Resource Format' section for more details.
+     *
+     * TODO(mpark): Deprecate once `reservations` is no longer experimental.
+     * </pre>
+     */
+    @java.lang.Deprecated public com.google.protobuf.ByteString
+        getRoleBytes() {
+      java.lang.Object ref = role_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        role_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional .mesos.v1.Resource.AllocationInfo allocation_info = 11;
+    public static final int ALLOCATION_INFO_FIELD_NUMBER = 11;
+    private org.apache.mesos.v1.Protos.Resource.AllocationInfo allocationInfo_;
+    /**
+     * <code>optional .mesos.v1.Resource.AllocationInfo allocation_info = 11;</code>
+     */
+    public boolean hasAllocationInfo() {
+      return ((bitField0_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional .mesos.v1.Resource.AllocationInfo allocation_info = 11;</code>
+     */
+    public org.apache.mesos.v1.Protos.Resource.AllocationInfo getAllocationInfo() {
+      return allocationInfo_;
+    }
+    /**
+     * <code>optional .mesos.v1.Resource.AllocationInfo allocation_info = 11;</code>
+     */
+    public org.apache.mesos.v1.Protos.Resource.AllocationInfoOrBuilder getAllocationInfoOrBuilder() {
+      return allocationInfo_;
+    }
+
+    // optional .mesos.v1.Resource.ReservationInfo reservation = 8;
+    public static final int RESERVATION_FIELD_NUMBER = 8;
+    private org.apache.mesos.v1.Protos.Resource.ReservationInfo reservation_;
+    /**
+     * <code>optional .mesos.v1.Resource.ReservationInfo reservation = 8;</code>
+     *
+     * <pre>
+     * If this is set, this resource was dynamically reserved by an
+     * operator or a framework. Otherwise, this resource is either unreserved
+     * or statically reserved by an operator via the --resources flag.
+     * NOTE: Frameworks must not set this field if `reservations` is set.
+     * </pre>
+     */
+    public boolean hasReservation() {
+      return ((bitField0_ & 0x00000100) == 0x00000100);
+    }
+    /**
+     * <code>optional .mesos.v1.Resource.ReservationInfo reservation = 8;</code>
+     *
+     * <pre>
+     * If this is set, this resource was dynamically reserved by an
+     * operator or a framework. Otherwise, this resource is either unreserved
+     * or statically reserved by an operator via the --resources flag.
+     * NOTE: Frameworks must not set this field if `reservations` is set.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.Resource.ReservationInfo getReservation() {
+      return reservation_;
+    }
+    /**
+     * <code>optional .mesos.v1.Resource.ReservationInfo reservation = 8;</code>
+     *
+     * <pre>
+     * If this is set, this resource was dynamically reserved by an
+     * operator or a framework. Otherwise, this resource is either unreserved
+     * or statically reserved by an operator via the --resources flag.
+     * NOTE: Frameworks must not set this field if `reservations` is set.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.Resource.ReservationInfoOrBuilder getReservationOrBuilder() {
+      return reservation_;
+    }
+
+    // repeated .mesos.v1.Resource.ReservationInfo reservations = 13;
+    public static final int RESERVATIONS_FIELD_NUMBER = 13;
+    private java.util.List<org.apache.mesos.v1.Protos.Resource.ReservationInfo> reservations_;
+    /**
+     * <code>repeated .mesos.v1.Resource.ReservationInfo reservations = 13;</code>
+     *
+     * <pre>
+     * The stack of reservations. If this field is empty, it indicates that this
+     * resource is unreserved. Otherwise, the resource is reserved. The first
+     * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+     * have `DYNAMIC`. One can create a new reservation on top of an existing
+     * one by pushing a new `ReservationInfo` to the back. The last
+     * `ReservationInfo` in this stack is the "current" reservation. The new
+     * reservation's role must be a child of the current reservation's role.
+     * NOTE: Frameworks must not set this field if `reservation` is set.
+     * </pre>
+     */
+    public java.util.List<org.apache.mesos.v1.Protos.Resource.ReservationInfo> getReservationsList() {
+      return reservations_;
+    }
+    /**
+     * <code>repeated .mesos.v1.Resource.ReservationInfo reservations = 13;</code>
+     *
+     * <pre>
+     * The stack of reservations. If this field is empty, it indicates that this
+     * resource is unreserved. Otherwise, the resource is reserved. The first
+     * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+     * have `DYNAMIC`. One can create a new reservation on top of an existing
+     * one by pushing a new `ReservationInfo` to the back. The last
+     * `ReservationInfo` in this stack is the "current" reservation. The new
+     * reservation's role must be a child of the current reservation's role.
+     * NOTE: Frameworks must not set this field if `reservation` is set.
+     * </pre>
+     */
+    public java.util.List<? extends org.apache.mesos.v1.Protos.Resource.ReservationInfoOrBuilder> 
+        getReservationsOrBuilderList() {
+      return reservations_;
+    }
+    /**
+     * <code>repeated .mesos.v1.Resource.ReservationInfo reservations = 13;</code>
+     *
+     * <pre>
+     * The stack of reservations. If this field is empty, it indicates that this
+     * resource is unreserved. Otherwise, the resource is reserved. The first
+     * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+     * have `DYNAMIC`. One can create a new reservation on top of an existing
+     * one by pushing a new `ReservationInfo` to the back. The last
+     * `ReservationInfo` in this stack is the "current" reservation. The new
+     * reservation's role must be a child of the current reservation's role.
+     * NOTE: Frameworks must not set this field if `reservation` is set.
+     * </pre>
+     */
+    public int getReservationsCount() {
+      return reservations_.size();
+    }
+    /**
+     * <code>repeated .mesos.v1.Resource.ReservationInfo reservations = 13;</code>
+     *
+     * <pre>
+     * The stack of reservations. If this field is empty, it indicates that this
+     * resource is unreserved. Otherwise, the resource is reserved. The first
+     * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+     * have `DYNAMIC`. One can create a new reservation on top of an existing
+     * one by pushing a new `ReservationInfo` to the back. The last
+     * `ReservationInfo` in this stack is the "current" reservation. The new
+     * reservation's role must be a child of the current reservation's role.
+     * NOTE: Frameworks must not set this field if `reservation` is set.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.Resource.ReservationInfo getReservations(int index) {
+      return reservations_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.v1.Resource.ReservationInfo reservations = 13;</code>
+     *
+     * <pre>
+     * The stack of reservations. If this field is empty, it indicates that this
+     * resource is unreserved. Otherwise, the resource is reserved. The first
+     * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+     * have `DYNAMIC`. One can create a new reservation on top of an existing
+     * one by pushing a new `ReservationInfo` to the back. The last
+     * `ReservationInfo` in this stack is the "current" reservation. The new
+     * reservation's role must be a child of the current reservation's role.
+     * NOTE: Frameworks must not set this field if `reservation` is set.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.Resource.ReservationInfoOrBuilder getReservationsOrBuilder(
+        int index) {
+      return reservations_.get(index);
+    }
+
+    // optional .mesos.v1.Resource.DiskInfo disk = 7;
+    public static final int DISK_FIELD_NUMBER = 7;
+    private org.apache.mesos.v1.Protos.Resource.DiskInfo disk_;
+    /**
+     * <code>optional .mesos.v1.Resource.DiskInfo disk = 7;</code>
+     */
+    public boolean hasDisk() {
+      return ((bitField0_ & 0x00000200) == 0x00000200);
+    }
+    /**
+     * <code>optional .mesos.v1.Resource.DiskInfo disk = 7;</code>
+     */
+    public org.apache.mesos.v1.Protos.Resource.DiskInfo getDisk() {
+      return disk_;
+    }
+    /**
+     * <code>optional .mesos.v1.Resource.DiskInfo disk = 7;</code>
+     */
+    public org.apache.mesos.v1.Protos.Resource.DiskInfoOrBuilder getDiskOrBuilder() {
+      return disk_;
+    }
+
+    // optional .mesos.v1.Resource.RevocableInfo revocable = 9;
+    public static final int REVOCABLE_FIELD_NUMBER = 9;
+    private org.apache.mesos.v1.Protos.Resource.RevocableInfo revocable_;
+    /**
+     * <code>optional .mesos.v1.Resource.RevocableInfo revocable = 9;</code>
+     *
+     * <pre>
+     * If this is set, the resources are revocable, i.e., any tasks or
+     * executors launched using these resources could get preempted or
+     * throttled at any time. This could be used by frameworks to run
+     * best effort tasks that do not need strict uptime or performance
+     * guarantees. Note that if this is set, 'disk' or 'reservation'
+     * cannot be set.
+     * </pre>
+     */
+    public boolean hasRevocable() {
+      return ((bitField0_ & 0x00000400) == 0x00000400);
+    }
+    /**
+     * <code>optional .mesos.v1.Resource.RevocableInfo revocable = 9;</code>
+     *
+     * <pre>
+     * If this is set, the resources are revocable, i.e., any tasks or
+     * executors launched using these resources could get preempted or
+     * throttled at any time. This could be used by frameworks to run
+     * best effort tasks that do not need strict uptime or performance
+     * guarantees. Note that if this is set, 'disk' or 'reservation'
+     * cannot be set.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.Resource.RevocableInfo getRevocable() {
+      return revocable_;
+    }
+    /**
+     * <code>optional .mesos.v1.Resource.RevocableInfo revocable = 9;</code>
+     *
+     * <pre>
+     * If this is set, the resources are revocable, i.e., any tasks or
+     * executors launched using these resources could get preempted or
+     * throttled at any time. This could be used by frameworks to run
+     * best effort tasks that do not need strict uptime or performance
+     * guarantees. Note that if this is set, 'disk' or 'reservation'
+     * cannot be set.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.Resource.RevocableInfoOrBuilder getRevocableOrBuilder() {
+      return revocable_;
+    }
+
+    // optional .mesos.v1.Resource.SharedInfo shared = 10;
+    public static final int SHARED_FIELD_NUMBER = 10;
+    private org.apache.mesos.v1.Protos.Resource.SharedInfo shared_;
+    /**
+     * <code>optional .mesos.v1.Resource.SharedInfo shared = 10;</code>
+     *
+     * <pre>
+     * If this is set, the resources are shared, i.e. multiple tasks
+     * can be launched using this resource and all of them shall refer
+     * to the same physical resource on the cluster. Note that only
+     * persistent volumes can be shared currently.
+     * </pre>
+     */
+    public boolean hasShared() {
+      return ((bitField0_ & 0x00000800) == 0x00000800);
+    }
+    /**
+     * <code>optional .mesos.v1.Resource.SharedInfo shared = 10;</code>
+     *
+     * <pre>
+     * If this is set, the resources are shared, i.e. multiple tasks
+     * can be launched using this resource and all of them shall refer
+     * to the same physical resource on the cluster. Note that only
+     * persistent volumes can be shared currently.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.Resource.SharedInfo getShared() {
+      return shared_;
+    }
+    /**
+     * <code>optional .mesos.v1.Resource.SharedInfo shared = 10;</code>
+     *
+     * <pre>
+     * If this is set, the resources are shared, i.e. multiple tasks
+     * can be launched using this resource and all of them shall refer
+     * to the same physical resource on the cluster. Note that only
+     * persistent volumes can be shared currently.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.Resource.SharedInfoOrBuilder getSharedOrBuilder() {
+      return shared_;
+    }
+
+    private void initFields() {
+      providerId_ = org.apache.mesos.v1.Protos.ResourceProviderID.getDefaultInstance();
+      name_ = "";
+      type_ = org.apache.mesos.v1.Protos.Value.Type.SCALAR;
+      scalar_ = org.apache.mesos.v1.Protos.Value.Scalar.getDefaultInstance();
+      ranges_ = org.apache.mesos.v1.Protos.Value.Ranges.getDefaultInstance();
+      set_ = org.apache.mesos.v1.Protos.Value.Set.getDefaultInstance();
+      role_ = "*";
+      allocationInfo_ = org.apache.mesos.v1.Protos.Resource.AllocationInfo.getDefaultInstance();
+      reservation_ = org.apache.mesos.v1.Protos.Resource.ReservationInfo.getDefaultInstance();
+      reservations_ = java.util.Collections.emptyList();
+      disk_ = org.apache.mesos.v1.Protos.Resource.DiskInfo.getDefaultInstance();
+      revocable_ = org.apache.mesos.v1.Protos.Resource.RevocableInfo.getDefaultInstance();
+      shared_ = org.apache.mesos.v1.Protos.Resource.SharedInfo.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasName()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasType()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (hasProviderId()) {
+        if (!getProviderId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasScalar()) {
+        if (!getScalar().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasRanges()) {
+        if (!getRanges().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasReservation()) {
+        if (!getReservation().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      for (int i = 0; i < getReservationsCount(); i++) {
+        if (!getReservations(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasDisk()) {
+        if (!getDisk().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(1, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeEnum(2, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeMessage(3, scalar_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeMessage(4, ranges_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeMessage(5, set_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeBytes(6, getRoleBytes());
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        output.writeMessage(7, disk_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        output.writeMessage(8, reservation_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        output.writeMessage(9, revocable_);
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        output.writeMessage(10, shared_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        output.writeMessage(11, allocationInfo_);
+      }
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeMessage(12, providerId_);
+      }
+      for (int i = 0; i < reservations_.size(); i++) {
+        output.writeMessage(13, reservations_.get(i));
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(2, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, scalar_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, ranges_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(5, set_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(6, getRoleBytes());
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(7, disk_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(8, reservation_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(9, revocable_);
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(10, shared_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(11, allocationInfo_);
+      }
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(12, providerId_);
+      }
+      for (int i = 0; i < reservations_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(13, reservations_.get(i));
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.Resource parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Resource parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Resource parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Resource parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Resource parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Resource parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Resource parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Resource parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Resource parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Resource parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.Resource prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.Resource}
+     *
+     * <pre>
+     **
+     * Describes a resource from a resource provider. The `name` field is
+     * a string like "cpus" or "mem" that indicates which kind of resource
+     * this is; the rest of the fields describe the properties of the
+     * resource. A resource can take on one of three types: scalar
+     * (double), a list of finite and discrete ranges (e.g., [1-10,
+     * 20-30]), or a set of items. A resource is described using the
+     * standard protocol buffer "union" trick.
+     *
+     * Note that "disk" and "mem" resources are scalar values expressed in
+     * megabytes. Fractional "cpus" values are allowed (e.g., "0.5"),
+     * which correspond to partial shares of a CPU.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.ResourceOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.Resource.class, org.apache.mesos.v1.Protos.Resource.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.Resource.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getProviderIdFieldBuilder();
+          getScalarFieldBuilder();
+          getRangesFieldBuilder();
+          getSetFieldBuilder();
+          getAllocationInfoFieldBuilder();
+          getReservationFieldBuilder();
+          getReservationsFieldBuilder();
+          getDiskFieldBuilder();
+          getRevocableFieldBuilder();
+          getSharedFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (providerIdBuilder_ == null) {
+          providerId_ = org.apache.mesos.v1.Protos.ResourceProviderID.getDefaultInstance();
+        } else {
+          providerIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        name_ = "";
+        bitField0_ = (bitField0_ & ~0x00000002);
+        type_ = org.apache.mesos.v1.Protos.Value.Type.SCALAR;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        if (scalarBuilder_ == null) {
+          scalar_ = org.apache.mesos.v1.Protos.Value.Scalar.getDefaultInstance();
+        } else {
+          scalarBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        if (rangesBuilder_ == null) {
+          ranges_ = org.apache.mesos.v1.Protos.Value.Ranges.getDefaultInstance();
+        } else {
+          rangesBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        if (setBuilder_ == null) {
+          set_ = org.apache.mesos.v1.Protos.Value.Set.getDefaultInstance();
+        } else {
+          setBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
+        role_ = "*";
+        bitField0_ = (bitField0_ & ~0x00000040);
+        if (allocationInfoBuilder_ == null) {
+          allocationInfo_ = org.apache.mesos.v1.Protos.Resource.AllocationInfo.getDefaultInstance();
+        } else {
+          allocationInfoBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000080);
+        if (reservationBuilder_ == null) {
+          reservation_ = org.apache.mesos.v1.Protos.Resource.ReservationInfo.getDefaultInstance();
+        } else {
+          reservationBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000100);
+        if (reservationsBuilder_ == null) {
+          reservations_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000200);
+        } else {
+          reservationsBuilder_.clear();
+        }
+        if (diskBuilder_ == null) {
+          disk_ = org.apache.mesos.v1.Protos.Resource.DiskInfo.getDefaultInstance();
+        } else {
+          diskBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000400);
+        if (revocableBuilder_ == null) {
+          revocable_ = org.apache.mesos.v1.Protos.Resource.RevocableInfo.getDefaultInstance();
+        } else {
+          revocableBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000800);
+        if (sharedBuilder_ == null) {
+          shared_ = org.apache.mesos.v1.Protos.Resource.SharedInfo.getDefaultInstance();
+        } else {
+          sharedBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00001000);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Resource_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.Resource getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.Resource.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.Resource build() {
+        org.apache.mesos.v1.Protos.Resource result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.Resource buildPartial() {
+        org.apache.mesos.v1.Protos.Resource result = new org.apache.mesos.v1.Protos.Resource(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        if (providerIdBuilder_ == null) {
+          result.providerId_ = providerId_;
+        } else {
+          result.providerId_ = providerIdBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.name_ = name_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.type_ = type_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        if (scalarBuilder_ == null) {
+          result.scalar_ = scalar_;
+        } else {
+          result.scalar_ = scalarBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        if (rangesBuilder_ == null) {
+          result.ranges_ = ranges_;
+        } else {
+          result.ranges_ = rangesBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        if (setBuilder_ == null) {
+          result.set_ = set_;
+        } else {
+          result.set_ = setBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        result.role_ = role_;
+        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+          to_bitField0_ |= 0x00000080;
+        }
+        if (allocationInfoBuilder_ == null) {
+          result.allocationInfo_ = allocationInfo_;
+        } else {
+          result.allocationInfo_ = allocationInfoBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
+          to_bitField0_ |= 0x00000100;
+        }
+        if (reservationBuilder_ == null) {
+          result.reservation_ = reservation_;
+        } else {
+          result.reservation_ = reservationBuilder_.build();
+        }
+        if (reservationsBuilder_ == null) {
+          if (((bitField0_ & 0x00000200) == 0x00000200)) {
+            reservations_ = java.util.Collections.unmodifiableList(reservations_);
+            bitField0_ = (bitField0_ & ~0x00000200);
+          }
+          result.reservations_ = reservations_;
+        } else {
+          result.reservations_ = reservationsBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
+          to_bitField0_ |= 0x00000200;
+        }
+        if (diskBuilder_ == null) {
+          result.disk_ = disk_;
+        } else {
+          result.disk_ = diskBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
+          to_bitField0_ |= 0x00000400;
+        }
+        if (revocableBuilder_ == null) {
+          result.revocable_ = revocable_;
+        } else {
+          result.revocable_ = revocableBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
+          to_bitField0_ |= 0x00000800;
+        }
+        if (sharedBuilder_ == null) {
+          result.shared_ = shared_;
+        } else {
+          result.shared_ = sharedBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.Resource) {
+          return mergeFrom((org.apache.mesos.v1.Protos.Resource)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.Resource other) {
+        if (other == org.apache.mesos.v1.Protos.Resource.getDefaultInstance()) return this;
+        if (other.hasProviderId()) {
+          mergeProviderId(other.getProviderId());
+        }
+        if (other.hasName()) {
+          bitField0_ |= 0x00000002;
+          name_ = other.name_;
+          onChanged();
+        }
+        if (other.hasType()) {
+          setType(other.getType());
+        }
+        if (other.hasScalar()) {
+          mergeScalar(other.getScalar());
+        }
+        if (other.hasRanges()) {
+          mergeRanges(other.getRanges());
+        }
+        if (other.hasSet()) {
+          mergeSet(other.getSet());
+        }
+        if (other.hasRole()) {
+          bitField0_ |= 0x00000040;
+          role_ = other.role_;
+          onChanged();
+        }
+        if (other.hasAllocationInfo()) {
+          mergeAllocationInfo(other.getAllocationInfo());
+        }
+        if (other.hasReservation()) {
+          mergeReservation(other.getReservation());
+        }
+        if (reservationsBuilder_ == null) {
+          if (!other.reservations_.isEmpty()) {
+            if (reservations_.isEmpty()) {
+              reservations_ = other.reservations_;
+              bitField0_ = (bitField0_ & ~0x00000200);
+            } else {
+              ensureReservationsIsMutable();
+              reservations_.addAll(other.reservations_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.reservations_.isEmpty()) {
+            if (reservationsBuilder_.isEmpty()) {
+              reservationsBuilder_.dispose();
+              reservationsBuilder_ = null;
+              reservations_ = other.reservations_;
+              bitField0_ = (bitField0_ & ~0x00000200);
+              reservationsBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getReservationsFieldBuilder() : null;
+            } else {
+              reservationsBuilder_.addAllMessages(other.reservations_);
+            }
+          }
+        }
+        if (other.hasDisk()) {
+          mergeDisk(other.getDisk());
+        }
+        if (other.hasRevocable()) {
+          mergeRevocable(other.getRevocable());
+        }
+        if (other.hasShared()) {
+          mergeShared(other.getShared());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasName()) {
+          
+          return false;
+        }
+        if (!hasType()) {
+          
+          return false;
+        }
+        if (hasProviderId()) {
+          if (!getProviderId().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasScalar()) {
+          if (!getScalar().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasRanges()) {
+          if (!getRanges().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasReservation()) {
+          if (!getReservation().isInitialized()) {
+            
+            return false;
+          }
+        }
+        for (int i = 0; i < getReservationsCount(); i++) {
+          if (!getReservations(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasDisk()) {
+          if (!getDisk().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.Resource parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.Resource) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional .mesos.v1.ResourceProviderID provider_id = 12;
+      private org.apache.mesos.v1.Protos.ResourceProviderID providerId_ = org.apache.mesos.v1.Protos.ResourceProviderID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.ResourceProviderID, org.apache.mesos.v1.Protos.ResourceProviderID.Builder, org.apache.mesos.v1.Protos.ResourceProviderIDOrBuilder> providerIdBuilder_;
+      /**
+       * <code>optional .mesos.v1.ResourceProviderID provider_id = 12;</code>
+       */
+      public boolean hasProviderId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.v1.ResourceProviderID provider_id = 12;</code>
+       */
+      public org.apache.mesos.v1.Protos.ResourceProviderID getProviderId() {
+        if (providerIdBuilder_ == null) {
+          return providerId_;
+        } else {
+          return providerIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.ResourceProviderID provider_id = 12;</code>
+       */
+      public Builder setProviderId(org.apache.mesos.v1.Protos.ResourceProviderID value) {
+        if (providerIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          providerId_ = value;
+          onChanged();
+        } else {
+          providerIdBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ResourceProviderID provider_id = 12;</code>
+       */
+      public Builder setProviderId(
+          org.apache.mesos.v1.Protos.ResourceProviderID.Builder builderForValue) {
+        if (providerIdBuilder_ == null) {
+          providerId_ = builderForValue.build();
+          onChanged();
+        } else {
+          providerIdBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ResourceProviderID provider_id = 12;</code>
+       */
+      public Builder mergeProviderId(org.apache.mesos.v1.Protos.ResourceProviderID value) {
+        if (providerIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001) &&
+              providerId_ != org.apache.mesos.v1.Protos.ResourceProviderID.getDefaultInstance()) {
+            providerId_ =
+              org.apache.mesos.v1.Protos.ResourceProviderID.newBuilder(providerId_).mergeFrom(value).buildPartial();
+          } else {
+            providerId_ = value;
+          }
+          onChanged();
+        } else {
+          providerIdBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ResourceProviderID provider_id = 12;</code>
+       */
+      public Builder clearProviderId() {
+        if (providerIdBuilder_ == null) {
+          providerId_ = org.apache.mesos.v1.Protos.ResourceProviderID.getDefaultInstance();
+          onChanged();
+        } else {
+          providerIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ResourceProviderID provider_id = 12;</code>
+       */
+      public org.apache.mesos.v1.Protos.ResourceProviderID.Builder getProviderIdBuilder() {
+        bitField0_ |= 0x00000001;
+        onChanged();
+        return getProviderIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.ResourceProviderID provider_id = 12;</code>
+       */
+      public org.apache.mesos.v1.Protos.ResourceProviderIDOrBuilder getProviderIdOrBuilder() {
+        if (providerIdBuilder_ != null) {
+          return providerIdBuilder_.getMessageOrBuilder();
+        } else {
+          return providerId_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.ResourceProviderID provider_id = 12;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.ResourceProviderID, org.apache.mesos.v1.Protos.ResourceProviderID.Builder, org.apache.mesos.v1.Protos.ResourceProviderIDOrBuilder> 
+          getProviderIdFieldBuilder() {
+        if (providerIdBuilder_ == null) {
+          providerIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.ResourceProviderID, org.apache.mesos.v1.Protos.ResourceProviderID.Builder, org.apache.mesos.v1.Protos.ResourceProviderIDOrBuilder>(
+                  providerId_,
+                  getParentForChildren(),
+                  isClean());
+          providerId_ = null;
+        }
+        return providerIdBuilder_;
+      }
+
+      // required string name = 1;
+      private java.lang.Object name_ = "";
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public boolean hasName() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public java.lang.String getName() {
+        java.lang.Object ref = name_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          name_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        java.lang.Object ref = name_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          name_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder setName(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder clearName() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        name_ = getDefaultInstance().getName();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder setNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+
+      // required .mesos.v1.Value.Type type = 2;
+      private org.apache.mesos.v1.Protos.Value.Type type_ = org.apache.mesos.v1.Protos.Value.Type.SCALAR;
+      /**
+       * <code>required .mesos.v1.Value.Type type = 2;</code>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>required .mesos.v1.Value.Type type = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.Value.Type getType() {
+        return type_;
+      }
+      /**
+       * <code>required .mesos.v1.Value.Type type = 2;</code>
+       */
+      public Builder setType(org.apache.mesos.v1.Protos.Value.Type value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000004;
+        type_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.Value.Type type = 2;</code>
+       */
+      public Builder clearType() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        type_ = org.apache.mesos.v1.Protos.Value.Type.SCALAR;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.v1.Value.Scalar scalar = 3;
+      private org.apache.mesos.v1.Protos.Value.Scalar scalar_ = org.apache.mesos.v1.Protos.Value.Scalar.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Value.Scalar, org.apache.mesos.v1.Protos.Value.Scalar.Builder, org.apache.mesos.v1.Protos.Value.ScalarOrBuilder> scalarBuilder_;
+      /**
+       * <code>optional .mesos.v1.Value.Scalar scalar = 3;</code>
+       */
+      public boolean hasScalar() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Scalar scalar = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.Value.Scalar getScalar() {
+        if (scalarBuilder_ == null) {
+          return scalar_;
+        } else {
+          return scalarBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Scalar scalar = 3;</code>
+       */
+      public Builder setScalar(org.apache.mesos.v1.Protos.Value.Scalar value) {
+        if (scalarBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          scalar_ = value;
+          onChanged();
+        } else {
+          scalarBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Scalar scalar = 3;</code>
+       */
+      public Builder setScalar(
+          org.apache.mesos.v1.Protos.Value.Scalar.Builder builderForValue) {
+        if (scalarBuilder_ == null) {
+          scalar_ = builderForValue.build();
+          onChanged();
+        } else {
+          scalarBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Scalar scalar = 3;</code>
+       */
+      public Builder mergeScalar(org.apache.mesos.v1.Protos.Value.Scalar value) {
+        if (scalarBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008) &&
+              scalar_ != org.apache.mesos.v1.Protos.Value.Scalar.getDefaultInstance()) {
+            scalar_ =
+              org.apache.mesos.v1.Protos.Value.Scalar.newBuilder(scalar_).mergeFrom(value).buildPartial();
+          } else {
+            scalar_ = value;
+          }
+          onChanged();
+        } else {
+          scalarBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Scalar scalar = 3;</code>
+       */
+      public Builder clearScalar() {
+        if (scalarBuilder_ == null) {
+          scalar_ = org.apache.mesos.v1.Protos.Value.Scalar.getDefaultInstance();
+          onChanged();
+        } else {
+          scalarBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Scalar scalar = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.Value.Scalar.Builder getScalarBuilder() {
+        bitField0_ |= 0x00000008;
+        onChanged();
+        return getScalarFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Scalar scalar = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.Value.ScalarOrBuilder getScalarOrBuilder() {
+        if (scalarBuilder_ != null) {
+          return scalarBuilder_.getMessageOrBuilder();
+        } else {
+          return scalar_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Scalar scalar = 3;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Value.Scalar, org.apache.mesos.v1.Protos.Value.Scalar.Builder, org.apache.mesos.v1.Protos.Value.ScalarOrBuilder> 
+          getScalarFieldBuilder() {
+        if (scalarBuilder_ == null) {
+          scalarBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Value.Scalar, org.apache.mesos.v1.Protos.Value.Scalar.Builder, org.apache.mesos.v1.Protos.Value.ScalarOrBuilder>(
+                  scalar_,
+                  getParentForChildren(),
+                  isClean());
+          scalar_ = null;
+        }
+        return scalarBuilder_;
+      }
+
+      // optional .mesos.v1.Value.Ranges ranges = 4;
+      private org.apache.mesos.v1.Protos.Value.Ranges ranges_ = org.apache.mesos.v1.Protos.Value.Ranges.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Value.Ranges, org.apache.mesos.v1.Protos.Value.Ranges.Builder, org.apache.mesos.v1.Protos.Value.RangesOrBuilder> rangesBuilder_;
+      /**
+       * <code>optional .mesos.v1.Value.Ranges ranges = 4;</code>
+       */
+      public boolean hasRanges() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Ranges ranges = 4;</code>
+       */
+      public org.apache.mesos.v1.Protos.Value.Ranges getRanges() {
+        if (rangesBuilder_ == null) {
+          return ranges_;
+        } else {
+          return rangesBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Ranges ranges = 4;</code>
+       */
+      public Builder setRanges(org.apache.mesos.v1.Protos.Value.Ranges value) {
+        if (rangesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ranges_ = value;
+          onChanged();
+        } else {
+          rangesBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Ranges ranges = 4;</code>
+       */
+      public Builder setRanges(
+          org.apache.mesos.v1.Protos.Value.Ranges.Builder builderForValue) {
+        if (rangesBuilder_ == null) {
+          ranges_ = builderForValue.build();
+          onChanged();
+        } else {
+          rangesBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Ranges ranges = 4;</code>
+       */
+      public Builder mergeRanges(org.apache.mesos.v1.Protos.Value.Ranges value) {
+        if (rangesBuilder_ == null) {
+          if (((bitField0_ & 0x00000010) == 0x00000010) &&
+              ranges_ != org.apache.mesos.v1.Protos.Value.Ranges.getDefaultInstance()) {
+            ranges_ =
+              org.apache.mesos.v1.Protos.Value.Ranges.newBuilder(ranges_).mergeFrom(value).buildPartial();
+          } else {
+            ranges_ = value;
+          }
+          onChanged();
+        } else {
+          rangesBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Ranges ranges = 4;</code>
+       */
+      public Builder clearRanges() {
+        if (rangesBuilder_ == null) {
+          ranges_ = org.apache.mesos.v1.Protos.Value.Ranges.getDefaultInstance();
+          onChanged();
+        } else {
+          rangesBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Ranges ranges = 4;</code>
+       */
+      public org.apache.mesos.v1.Protos.Value.Ranges.Builder getRangesBuilder() {
+        bitField0_ |= 0x00000010;
+        onChanged();
+        return getRangesFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Ranges ranges = 4;</code>
+       */
+      public org.apache.mesos.v1.Protos.Value.RangesOrBuilder getRangesOrBuilder() {
+        if (rangesBuilder_ != null) {
+          return rangesBuilder_.getMessageOrBuilder();
+        } else {
+          return ranges_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Ranges ranges = 4;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Value.Ranges, org.apache.mesos.v1.Protos.Value.Ranges.Builder, org.apache.mesos.v1.Protos.Value.RangesOrBuilder> 
+          getRangesFieldBuilder() {
+        if (rangesBuilder_ == null) {
+          rangesBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Value.Ranges, org.apache.mesos.v1.Protos.Value.Ranges.Builder, org.apache.mesos.v1.Protos.Value.RangesOrBuilder>(
+                  ranges_,
+                  getParentForChildren(),
+                  isClean());
+          ranges_ = null;
+        }
+        return rangesBuilder_;
+      }
+
+      // optional .mesos.v1.Value.Set set = 5;
+      private org.apache.mesos.v1.Protos.Value.Set set_ = org.apache.mesos.v1.Protos.Value.Set.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Value.Set, org.apache.mesos.v1.Protos.Value.Set.Builder, org.apache.mesos.v1.Protos.Value.SetOrBuilder> setBuilder_;
+      /**
+       * <code>optional .mesos.v1.Value.Set set = 5;</code>
+       */
+      public boolean hasSet() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Set set = 5;</code>
+       */
+      public org.apache.mesos.v1.Protos.Value.Set getSet() {
+        if (setBuilder_ == null) {
+          return set_;
+        } else {
+          return setBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Set set = 5;</code>
+       */
+      public Builder setSet(org.apache.mesos.v1.Protos.Value.Set value) {
+        if (setBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          set_ = value;
+          onChanged();
+        } else {
+          setBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Set set = 5;</code>
+       */
+      public Builder setSet(
+          org.apache.mesos.v1.Protos.Value.Set.Builder builderForValue) {
+        if (setBuilder_ == null) {
+          set_ = builderForValue.build();
+          onChanged();
+        } else {
+          setBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Set set = 5;</code>
+       */
+      public Builder mergeSet(org.apache.mesos.v1.Protos.Value.Set value) {
+        if (setBuilder_ == null) {
+          if (((bitField0_ & 0x00000020) == 0x00000020) &&
+              set_ != org.apache.mesos.v1.Protos.Value.Set.getDefaultInstance()) {
+            set_ =
+              org.apache.mesos.v1.Protos.Value.Set.newBuilder(set_).mergeFrom(value).buildPartial();
+          } else {
+            set_ = value;
+          }
+          onChanged();
+        } else {
+          setBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Set set = 5;</code>
+       */
+      public Builder clearSet() {
+        if (setBuilder_ == null) {
+          set_ = org.apache.mesos.v1.Protos.Value.Set.getDefaultInstance();
+          onChanged();
+        } else {
+          setBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Set set = 5;</code>
+       */
+      public org.apache.mesos.v1.Protos.Value.Set.Builder getSetBuilder() {
+        bitField0_ |= 0x00000020;
+        onChanged();
+        return getSetFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Set set = 5;</code>
+       */
+      public org.apache.mesos.v1.Protos.Value.SetOrBuilder getSetOrBuilder() {
+        if (setBuilder_ != null) {
+          return setBuilder_.getMessageOrBuilder();
+        } else {
+          return set_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Value.Set set = 5;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Value.Set, org.apache.mesos.v1.Protos.Value.Set.Builder, org.apache.mesos.v1.Protos.Value.SetOrBuilder> 
+          getSetFieldBuilder() {
+        if (setBuilder_ == null) {
+          setBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Value.Set, org.apache.mesos.v1.Protos.Value.Set.Builder, org.apache.mesos.v1.Protos.Value.SetOrBuilder>(
+                  set_,
+                  getParentForChildren(),
+                  isClean());
+          set_ = null;
+        }
+        return setBuilder_;
+      }
+
+      // optional string role = 6 [default = "*", deprecated = true];
+      private java.lang.Object role_ = "*";
+      /**
+       * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+       *
+       * <pre>
+       * The role that this resource is reserved for. If "*", this indicates
+       * that the resource is unreserved. Otherwise, the resource will only
+       * be offered to frameworks that belong to this role.
+       *
+       * NOTE: Frameworks must not set this field if `reservations` is set.
+       *       See the 'Resource Format' section for more details.
+       *
+       * TODO(mpark): Deprecate once `reservations` is no longer experimental.
+       * </pre>
+       */
+      @java.lang.Deprecated public boolean hasRole() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+       *
+       * <pre>
+       * The role that this resource is reserved for. If "*", this indicates
+       * that the resource is unreserved. Otherwise, the resource will only
+       * be offered to frameworks that belong to this role.
+       *
+       * NOTE: Frameworks must not set this field if `reservations` is set.
+       *       See the 'Resource Format' section for more details.
+       *
+       * TODO(mpark): Deprecate once `reservations` is no longer experimental.
+       * </pre>
+       */
+      @java.lang.Deprecated public java.lang.String getRole() {
+        java.lang.Object ref = role_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          role_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+       *
+       * <pre>
+       * The role that this resource is reserved for. If "*", this indicates
+       * that the resource is unreserved. Otherwise, the resource will only
+       * be offered to frameworks that belong to this role.
+       *
+       * NOTE: Frameworks must not set this field if `reservations` is set.
+       *       See the 'Resource Format' section for more details.
+       *
+       * TODO(mpark): Deprecate once `reservations` is no longer experimental.
+       * </pre>
+       */
+      @java.lang.Deprecated public com.google.protobuf.ByteString
+          getRoleBytes() {
+        java.lang.Object ref = role_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          role_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+       *
+       * <pre>
+       * The role that this resource is reserved for. If "*", this indicates
+       * that the resource is unreserved. Otherwise, the resource will only
+       * be offered to frameworks that belong to this role.
+       *
+       * NOTE: Frameworks must not set this field if `reservations` is set.
+       *       See the 'Resource Format' section for more details.
+       *
+       * TODO(mpark): Deprecate once `reservations` is no longer experimental.
+       * </pre>
+       */
+      @java.lang.Deprecated public Builder setRole(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000040;
+        role_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+       *
+       * <pre>
+       * The role that this resource is reserved for. If "*", this indicates
+       * that the resource is unreserved. Otherwise, the resource will only
+       * be offered to frameworks that belong to this role.
+       *
+       * NOTE: Frameworks must not set this field if `reservations` is set.
+       *       See the 'Resource Format' section for more details.
+       *
+       * TODO(mpark): Deprecate once `reservations` is no longer experimental.
+       * </pre>
+       */
+      @java.lang.Deprecated public Builder clearRole() {
+        bitField0_ = (bitField0_ & ~0x00000040);
+        role_ = getDefaultInstance().getRole();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string role = 6 [default = "*", deprecated = true];</code>
+       *
+       * <pre>
+       * The role that this resource is reserved for. If "*", this indicates
+       * that the resource is unreserved. Otherwise, the resource will only
+       * be offered to frameworks that belong to this role.
+       *
+       * NOTE: Frameworks must not set this field if `reservations` is set.
+       *       See the 'Resource Format' section for more details.
+       *
+       * TODO(mpark): Deprecate once `reservations` is no longer experimental.
+       * </pre>
+       */
+      @java.lang.Deprecated public Builder setRoleBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000040;
+        role_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.v1.Resource.AllocationInfo allocation_info = 11;
+      private org.apache.mesos.v1.Protos.Resource.AllocationInfo allocationInfo_ = org.apache.mesos.v1.Protos.Resource.AllocationInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Resource.AllocationInfo, org.apache.mesos.v1.Protos.Resource.AllocationInfo.Builder, org.apache.mesos.v1.Protos.Resource.AllocationInfoOrBuilder> allocationInfoBuilder_;
+      /**
+       * <code>optional .mesos.v1.Resource.AllocationInfo allocation_info = 11;</code>
+       */
+      public boolean hasAllocationInfo() {
+        return ((bitField0_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.AllocationInfo allocation_info = 11;</code>
+       */
+      public org.apache.mesos.v1.Protos.Resource.AllocationInfo getAllocationInfo() {
+        if (allocationInfoBuilder_ == null) {
+          return allocationInfo_;
+        } else {
+          return allocationInfoBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.AllocationInfo allocation_info = 11;</code>
+       */
+      public Builder setAllocationInfo(org.apache.mesos.v1.Protos.Resource.AllocationInfo value) {
+        if (allocationInfoBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          allocationInfo_ = value;
+          onChanged();
+        } else {
+          allocationInfoBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.AllocationInfo allocation_info = 11;</code>
+       */
+      public Builder setAllocationInfo(
+          org.apache.mesos.v1.Protos.Resource.AllocationInfo.Builder builderForValue) {
+        if (allocationInfoBuilder_ == null) {
+          allocationInfo_ = builderForValue.build();
+          onChanged();
+        } else {
+          allocationInfoBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.AllocationInfo allocation_info = 11;</code>
+       */
+      public Builder mergeAllocationInfo(org.apache.mesos.v1.Protos.Resource.AllocationInfo value) {
+        if (allocationInfoBuilder_ == null) {
+          if (((bitField0_ & 0x00000080) == 0x00000080) &&
+              allocationInfo_ != org.apache.mesos.v1.Protos.Resource.AllocationInfo.getDefaultInstance()) {
+            allocationInfo_ =
+              org.apache.mesos.v1.Protos.Resource.AllocationInfo.newBuilder(allocationInfo_).mergeFrom(value).buildPartial();
+          } else {
+            allocationInfo_ = value;
+          }
+          onChanged();
+        } else {
+          allocationInfoBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.AllocationInfo allocation_info = 11;</code>
+       */
+      public Builder clearAllocationInfo() {
+        if (allocationInfoBuilder_ == null) {
+          allocationInfo_ = org.apache.mesos.v1.Protos.Resource.AllocationInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          allocationInfoBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000080);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.AllocationInfo allocation_info = 11;</code>
+       */
+      public org.apache.mesos.v1.Protos.Resource.AllocationInfo.Builder getAllocationInfoBuilder() {
+        bitField0_ |= 0x00000080;
+        onChanged();
+        return getAllocationInfoFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.AllocationInfo allocation_info = 11;</code>
+       */
+      public org.apache.mesos.v1.Protos.Resource.AllocationInfoOrBuilder getAllocationInfoOrBuilder() {
+        if (allocationInfoBuilder_ != null) {
+          return allocationInfoBuilder_.getMessageOrBuilder();
+        } else {
+          return allocationInfo_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.AllocationInfo allocation_info = 11;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Resource.AllocationInfo, org.apache.mesos.v1.Protos.Resource.AllocationInfo.Builder, org.apache.mesos.v1.Protos.Resource.AllocationInfoOrBuilder> 
+          getAllocationInfoFieldBuilder() {
+        if (allocationInfoBuilder_ == null) {
+          allocationInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Resource.AllocationInfo, org.apache.mesos.v1.Protos.Resource.AllocationInfo.Builder, org.apache.mesos.v1.Protos.Resource.AllocationInfoOrBuilder>(
+                  allocationInfo_,
+                  getParentForChildren(),
+                  isClean());
+          allocationInfo_ = null;
+        }
+        return allocationInfoBuilder_;
+      }
+
+      // optional .mesos.v1.Resource.ReservationInfo reservation = 8;
+      private org.apache.mesos.v1.Protos.Resource.ReservationInfo reservation_ = org.apache.mesos.v1.Protos.Resource.ReservationInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Resource.ReservationInfo, org.apache.mesos.v1.Protos.Resource.ReservationInfo.Builder, org.apache.mesos.v1.Protos.Resource.ReservationInfoOrBuilder> reservationBuilder_;
+      /**
+       * <code>optional .mesos.v1.Resource.ReservationInfo reservation = 8;</code>
+       *
+       * <pre>
+       * If this is set, this resource was dynamically reserved by an
+       * operator or a framework. Otherwise, this resource is either unreserved
+       * or statically reserved by an operator via the --resources flag.
+       * NOTE: Frameworks must not set this field if `reservations` is set.
+       * </pre>
+       */
+      public boolean hasReservation() {
+        return ((bitField0_ & 0x00000100) == 0x00000100);
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.ReservationInfo reservation = 8;</code>
+       *
+       * <pre>
+       * If this is set, this resource was dynamically reserved by an
+       * operator or a framework. Otherwise, this resource is either unreserved
+       * or statically reserved by an operator via the --resources flag.
+       * NOTE: Frameworks must not set this field if `reservations` is set.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Resource.ReservationInfo getReservation() {
+        if (reservationBuilder_ == null) {
+          return reservation_;
+        } else {
+          return reservationBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.ReservationInfo reservation = 8;</code>
+       *
+       * <pre>
+       * If this is set, this resource was dynamically reserved by an
+       * operator or a framework. Otherwise, this resource is either unreserved
+       * or statically reserved by an operator via the --resources flag.
+       * NOTE: Frameworks must not set this field if `reservations` is set.
+       * </pre>
+       */
+      public Builder setReservation(org.apache.mesos.v1.Protos.Resource.ReservationInfo value) {
+        if (reservationBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          reservation_ = value;
+          onChanged();
+        } else {
+          reservationBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000100;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.ReservationInfo reservation = 8;</code>
+       *
+       * <pre>
+       * If this is set, this resource was dynamically reserved by an
+       * operator or a framework. Otherwise, this resource is either unreserved
+       * or statically reserved by an operator via the --resources flag.
+       * NOTE: Frameworks must not set this field if `reservations` is set.
+       * </pre>
+       */
+      public Builder setReservation(
+          org.apache.mesos.v1.Protos.Resource.ReservationInfo.Builder builderForValue) {
+        if (reservationBuilder_ == null) {
+          reservation_ = builderForValue.build();
+          onChanged();
+        } else {
+          reservationBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000100;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.ReservationInfo reservation = 8;</code>
+       *
+       * <pre>
+       * If this is set, this resource was dynamically reserved by an
+       * operator or a framework. Otherwise, this resource is either unreserved
+       * or statically reserved by an operator via the --resources flag.
+       * NOTE: Frameworks must not set this field if `reservations` is set.
+       * </pre>
+       */
+      public Builder mergeReservation(org.apache.mesos.v1.Protos.Resource.ReservationInfo value) {
+        if (reservationBuilder_ == null) {
+          if (((bitField0_ & 0x00000100) == 0x00000100) &&
+              reservation_ != org.apache.mesos.v1.Protos.Resource.ReservationInfo.getDefaultInstance()) {
+            reservation_ =
+              org.apache.mesos.v1.Protos.Resource.ReservationInfo.newBuilder(reservation_).mergeFrom(value).buildPartial();
+          } else {
+            reservation_ = value;
+          }
+          onChanged();
+        } else {
+          reservationBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000100;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.ReservationInfo reservation = 8;</code>
+       *
+       * <pre>
+       * If this is set, this resource was dynamically reserved by an
+       * operator or a framework. Otherwise, this resource is either unreserved
+       * or statically reserved by an operator via the --resources flag.
+       * NOTE: Frameworks must not set this field if `reservations` is set.
+       * </pre>
+       */
+      public Builder clearReservation() {
+        if (reservationBuilder_ == null) {
+          reservation_ = org.apache.mesos.v1.Protos.Resource.ReservationInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          reservationBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000100);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.ReservationInfo reservation = 8;</code>
+       *
+       * <pre>
+       * If this is set, this resource was dynamically reserved by an
+       * operator or a framework. Otherwise, this resource is either unreserved
+       * or statically reserved by an operator via the --resources flag.
+       * NOTE: Frameworks must not set this field if `reservations` is set.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Resource.ReservationInfo.Builder getReservationBuilder() {
+        bitField0_ |= 0x00000100;
+        onChanged();
+        return getReservationFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.ReservationInfo reservation = 8;</code>
+       *
+       * <pre>
+       * If this is set, this resource was dynamically reserved by an
+       * operator or a framework. Otherwise, this resource is either unreserved
+       * or statically reserved by an operator via the --resources flag.
+       * NOTE: Frameworks must not set this field if `reservations` is set.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Resource.ReservationInfoOrBuilder getReservationOrBuilder() {
+        if (reservationBuilder_ != null) {
+          return reservationBuilder_.getMessageOrBuilder();
+        } else {
+          return reservation_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.ReservationInfo reservation = 8;</code>
+       *
+       * <pre>
+       * If this is set, this resource was dynamically reserved by an
+       * operator or a framework. Otherwise, this resource is either unreserved
+       * or statically reserved by an operator via the --resources flag.
+       * NOTE: Frameworks must not set this field if `reservations` is set.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Resource.ReservationInfo, org.apache.mesos.v1.Protos.Resource.ReservationInfo.Builder, org.apache.mesos.v1.Protos.Resource.ReservationInfoOrBuilder> 
+          getReservationFieldBuilder() {
+        if (reservationBuilder_ == null) {
+          reservationBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Resource.ReservationInfo, org.apache.mesos.v1.Protos.Resource.ReservationInfo.Builder, org.apache.mesos.v1.Protos.Resource.ReservationInfoOrBuilder>(
+                  reservation_,
+                  getParentForChildren(),
+                  isClean());
+          reservation_ = null;
+        }
+        return reservationBuilder_;
+      }
+
+      // repeated .mesos.v1.Resource.ReservationInfo reservations = 13;
+      private java.util.List<org.apache.mesos.v1.Protos.Resource.ReservationInfo> reservations_ =
+        java.util.Collections.emptyList();
+      private void ensureReservationsIsMutable() {
+        if (!((bitField0_ & 0x00000200) == 0x00000200)) {
+          reservations_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Resource.ReservationInfo>(reservations_);
+          bitField0_ |= 0x00000200;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.Resource.ReservationInfo, org.apache.mesos.v1.Protos.Resource.ReservationInfo.Builder, org.apache.mesos.v1.Protos.Resource.ReservationInfoOrBuilder> reservationsBuilder_;
+
+      /**
+       * <code>repeated .mesos.v1.Resource.ReservationInfo reservations = 13;</code>
+       *
+       * <pre>
+       * The stack of reservations. If this field is empty, it indicates that this
+       * resource is unreserved. Otherwise, the resource is reserved. The first
+       * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+       * have `DYNAMIC`. One can create a new reservation on top of an existing
+       * one by pushing a new `ReservationInfo` to the back. The last
+       * `ReservationInfo` in this stack is the "current" reservation. The new
+       * reservation's role must be a child of the current reservation's role.
+       * NOTE: Frameworks must not set this field if `reservation` is set.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Resource.ReservationInfo> getReservationsList() {
+        if (reservationsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(reservations_);
+        } else {
+          return reservationsBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource.ReservationInfo reservations = 13;</code>
+       *
+       * <pre>
+       * The stack of reservations. If this field is empty, it indicates that this
+       * resource is unreserved. Otherwise, the resource is reserved. The first
+       * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+       * have `DYNAMIC`. One can create a new reservation on top of an existing
+       * one by pushing a new `ReservationInfo` to the back. The last
+       * `ReservationInfo` in this stack is the "current" reservation. The new
+       * reservation's role must be a child of the current reservation's role.
+       * NOTE: Frameworks must not set this field if `reservation` is set.
+       * </pre>
+       */
+      public int getReservationsCount() {
+        if (reservationsBuilder_ == null) {
+          return reservations_.size();
+        } else {
+          return reservationsBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource.ReservationInfo reservations = 13;</code>
+       *
+       * <pre>
+       * The stack of reservations. If this field is empty, it indicates that this
+       * resource is unreserved. Otherwise, the resource is reserved. The first
+       * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+       * have `DYNAMIC`. One can create a new reservation on top of an existing
+       * one by pushing a new `ReservationInfo` to the back. The last
+       * `ReservationInfo` in this stack is the "current" reservation. The new
+       * reservation's role must be a child of the current reservation's role.
+       * NOTE: Frameworks must not set this field if `reservation` is set.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Resource.ReservationInfo getReservations(int index) {
+        if (reservationsBuilder_ == null) {
+          return reservations_.get(index);
+        } else {
+          return reservationsBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource.ReservationInfo reservations = 13;</code>
+       *
+       * <pre>
+       * The stack of reservations. If this field is empty, it indicates that this
+       * resource is unreserved. Otherwise, the resource is reserved. The first
+       * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+       * have `DYNAMIC`. One can create a new reservation on top of an existing
+       * one by pushing a new `ReservationInfo` to the back. The last
+       * `ReservationInfo` in this stack is the "current" reservation. The new
+       * reservation's role must be a child of the current reservation's role.
+       * NOTE: Frameworks must not set this field if `reservation` is set.
+       * </pre>
+       */
+      public Builder setReservations(
+          int index, org.apache.mesos.v1.Protos.Resource.ReservationInfo value) {
+        if (reservationsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureReservationsIsMutable();
+          reservations_.set(index, value);
+          onChanged();
+        } else {
+          reservationsBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource.ReservationInfo reservations = 13;</code>
+       *
+       * <pre>
+       * The stack of reservations. If this field is empty, it indicates that this
+       * resource is unreserved. Otherwise, the resource is reserved. The first
+       * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+       * have `DYNAMIC`. One can create a new reservation on top of an existing
+       * one by pushing a new `ReservationInfo` to the back. The last
+       * `ReservationInfo` in this stack is the "current" reservation. The new
+       * reservation's role must be a child of the current reservation's role.
+       * NOTE: Frameworks must not set this field if `reservation` is set.
+       * </pre>
+       */
+      public Builder setReservations(
+          int index, org.apache.mesos.v1.Protos.Resource.ReservationInfo.Builder builderForValue) {
+        if (reservationsBuilder_ == null) {
+          ensureReservationsIsMutable();
+          reservations_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          reservationsBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource.ReservationInfo reservations = 13;</code>
+       *
+       * <pre>
+       * The stack of reservations. If this field is empty, it indicates that this
+       * resource is unreserved. Otherwise, the resource is reserved. The first
+       * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+       * have `DYNAMIC`. One can create a new reservation on top of an existing
+       * one by pushing a new `ReservationInfo` to the back. The last
+       * `ReservationInfo` in this stack is the "current" reservation. The new
+       * reservation's role must be a child of the current reservation's role.
+       * NOTE: Frameworks must not set this field if `reservation` is set.
+       * </pre>
+       */
+      public Builder addReservations(org.apache.mesos.v1.Protos.Resource.ReservationInfo value) {
+        if (reservationsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureReservationsIsMutable();
+          reservations_.add(value);
+          onChanged();
+        } else {
+          reservationsBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource.ReservationInfo reservations = 13;</code>
+       *
+       * <pre>
+       * The stack of reservations. If this field is empty, it indicates that this
+       * resource is unreserved. Otherwise, the resource is reserved. The first
+       * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+       * have `DYNAMIC`. One can create a new reservation on top of an existing
+       * one by pushing a new `ReservationInfo` to the back. The last
+       * `ReservationInfo` in this stack is the "current" reservation. The new
+       * reservation's role must be a child of the current reservation's role.
+       * NOTE: Frameworks must not set this field if `reservation` is set.
+       * </pre>
+       */
+      public Builder addReservations(
+          int index, org.apache.mesos.v1.Protos.Resource.ReservationInfo value) {
+        if (reservationsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureReservationsIsMutable();
+          reservations_.add(index, value);
+          onChanged();
+        } else {
+          reservationsBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource.ReservationInfo reservations = 13;</code>
+       *
+       * <pre>
+       * The stack of reservations. If this field is empty, it indicates that this
+       * resource is unreserved. Otherwise, the resource is reserved. The first
+       * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+       * have `DYNAMIC`. One can create a new reservation on top of an existing
+       * one by pushing a new `ReservationInfo` to the back. The last
+       * `ReservationInfo` in this stack is the "current" reservation. The new
+       * reservation's role must be a child of the current reservation's role.
+       * NOTE: Frameworks must not set this field if `reservation` is set.
+       * </pre>
+       */
+      public Builder addReservations(
+          org.apache.mesos.v1.Protos.Resource.ReservationInfo.Builder builderForValue) {
+        if (reservationsBuilder_ == null) {
+          ensureReservationsIsMutable();
+          reservations_.add(builderForValue.build());
+          onChanged();
+        } else {
+          reservationsBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource.ReservationInfo reservations = 13;</code>
+       *
+       * <pre>
+       * The stack of reservations. If this field is empty, it indicates that this
+       * resource is unreserved. Otherwise, the resource is reserved. The first
+       * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+       * have `DYNAMIC`. One can create a new reservation on top of an existing
+       * one by pushing a new `ReservationInfo` to the back. The last
+       * `ReservationInfo` in this stack is the "current" reservation. The new
+       * reservation's role must be a child of the current reservation's role.
+       * NOTE: Frameworks must not set this field if `reservation` is set.
+       * </pre>
+       */
+      public Builder addReservations(
+          int index, org.apache.mesos.v1.Protos.Resource.ReservationInfo.Builder builderForValue) {
+        if (reservationsBuilder_ == null) {
+          ensureReservationsIsMutable();
+          reservations_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          reservationsBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource.ReservationInfo reservations = 13;</code>
+       *
+       * <pre>
+       * The stack of reservations. If this field is empty, it indicates that this
+       * resource is unreserved. Otherwise, the resource is reserved. The first
+       * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+       * have `DYNAMIC`. One can create a new reservation on top of an existing
+       * one by pushing a new `ReservationInfo` to the back. The last
+       * `ReservationInfo` in this stack is the "current" reservation. The new
+       * reservation's role must be a child of the current reservation's role.
+       * NOTE: Frameworks must not set this field if `reservation` is set.
+       * </pre>
+       */
+      public Builder addAllReservations(
+          java.lang.Iterable<? extends org.apache.mesos.v1.Protos.Resource.ReservationInfo> values) {
+        if (reservationsBuilder_ == null) {
+          ensureReservationsIsMutable();
+          super.addAll(values, reservations_);
+          onChanged();
+        } else {
+          reservationsBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource.ReservationInfo reservations = 13;</code>
+       *
+       * <pre>
+       * The stack of reservations. If this field is empty, it indicates that this
+       * resource is unreserved. Otherwise, the resource is reserved. The first
+       * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+       * have `DYNAMIC`. One can create a new reservation on top of an existing
+       * one by pushing a new `ReservationInfo` to the back. The last
+       * `ReservationInfo` in this stack is the "current" reservation. The new
+       * reservation's role must be a child of the current reservation's role.
+       * NOTE: Frameworks must not set this field if `reservation` is set.
+       * </pre>
+       */
+      public Builder clearReservations() {
+        if (reservationsBuilder_ == null) {
+          reservations_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000200);
+          onChanged();
+        } else {
+          reservationsBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource.ReservationInfo reservations = 13;</code>
+       *
+       * <pre>
+       * The stack of reservations. If this field is empty, it indicates that this
+       * resource is unreserved. Otherwise, the resource is reserved. The first
+       * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+       * have `DYNAMIC`. One can create a new reservation on top of an existing
+       * one by pushing a new `ReservationInfo` to the back. The last
+       * `ReservationInfo` in this stack is the "current" reservation. The new
+       * reservation's role must be a child of the current reservation's role.
+       * NOTE: Frameworks must not set this field if `reservation` is set.
+       * </pre>
+       */
+      public Builder removeReservations(int index) {
+        if (reservationsBuilder_ == null) {
+          ensureReservationsIsMutable();
+          reservations_.remove(index);
+          onChanged();
+        } else {
+          reservationsBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource.ReservationInfo reservations = 13;</code>
+       *
+       * <pre>
+       * The stack of reservations. If this field is empty, it indicates that this
+       * resource is unreserved. Otherwise, the resource is reserved. The first
+       * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+       * have `DYNAMIC`. One can create a new reservation on top of an existing
+       * one by pushing a new `ReservationInfo` to the back. The last
+       * `ReservationInfo` in this stack is the "current" reservation. The new
+       * reservation's role must be a child of the current reservation's role.
+       * NOTE: Frameworks must not set this field if `reservation` is set.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Resource.ReservationInfo.Builder getReservationsBuilder(
+          int index) {
+        return getReservationsFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource.ReservationInfo reservations = 13;</code>
+       *
+       * <pre>
+       * The stack of reservations. If this field is empty, it indicates that this
+       * resource is unreserved. Otherwise, the resource is reserved. The first
+       * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+       * have `DYNAMIC`. One can create a new reservation on top of an existing
+       * one by pushing a new `ReservationInfo` to the back. The last
+       * `ReservationInfo` in this stack is the "current" reservation. The new
+       * reservation's role must be a child of the current reservation's role.
+       * NOTE: Frameworks must not set this field if `reservation` is set.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Resource.ReservationInfoOrBuilder getReservationsOrBuilder(
+          int index) {
+        if (reservationsBuilder_ == null) {
+          return reservations_.get(index);  } else {
+          return reservationsBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource.ReservationInfo reservations = 13;</code>
+       *
+       * <pre>
+       * The stack of reservations. If this field is empty, it indicates that this
+       * resource is unreserved. Otherwise, the resource is reserved. The first
+       * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+       * have `DYNAMIC`. One can create a new reservation on top of an existing
+       * one by pushing a new `ReservationInfo` to the back. The last
+       * `ReservationInfo` in this stack is the "current" reservation. The new
+       * reservation's role must be a child of the current reservation's role.
+       * NOTE: Frameworks must not set this field if `reservation` is set.
+       * </pre>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.Resource.ReservationInfoOrBuilder> 
+           getReservationsOrBuilderList() {
+        if (reservationsBuilder_ != null) {
+          return reservationsBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(reservations_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource.ReservationInfo reservations = 13;</code>
+       *
+       * <pre>
+       * The stack of reservations. If this field is empty, it indicates that this
+       * resource is unreserved. Otherwise, the resource is reserved. The first
+       * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+       * have `DYNAMIC`. One can create a new reservation on top of an existing
+       * one by pushing a new `ReservationInfo` to the back. The last
+       * `ReservationInfo` in this stack is the "current" reservation. The new
+       * reservation's role must be a child of the current reservation's role.
+       * NOTE: Frameworks must not set this field if `reservation` is set.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Resource.ReservationInfo.Builder addReservationsBuilder() {
+        return getReservationsFieldBuilder().addBuilder(
+            org.apache.mesos.v1.Protos.Resource.ReservationInfo.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource.ReservationInfo reservations = 13;</code>
+       *
+       * <pre>
+       * The stack of reservations. If this field is empty, it indicates that this
+       * resource is unreserved. Otherwise, the resource is reserved. The first
+       * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+       * have `DYNAMIC`. One can create a new reservation on top of an existing
+       * one by pushing a new `ReservationInfo` to the back. The last
+       * `ReservationInfo` in this stack is the "current" reservation. The new
+       * reservation's role must be a child of the current reservation's role.
+       * NOTE: Frameworks must not set this field if `reservation` is set.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Resource.ReservationInfo.Builder addReservationsBuilder(
+          int index) {
+        return getReservationsFieldBuilder().addBuilder(
+            index, org.apache.mesos.v1.Protos.Resource.ReservationInfo.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource.ReservationInfo reservations = 13;</code>
+       *
+       * <pre>
+       * The stack of reservations. If this field is empty, it indicates that this
+       * resource is unreserved. Otherwise, the resource is reserved. The first
+       * `ReservationInfo` may have type `STATIC` or `DYNAMIC`, but the rest must
+       * have `DYNAMIC`. One can create a new reservation on top of an existing
+       * one by pushing a new `ReservationInfo` to the back. The last
+       * `ReservationInfo` in this stack is the "current" reservation. The new
+       * reservation's role must be a child of the current reservation's role.
+       * NOTE: Frameworks must not set this field if `reservation` is set.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Resource.ReservationInfo.Builder> 
+           getReservationsBuilderList() {
+        return getReservationsFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.Resource.ReservationInfo, org.apache.mesos.v1.Protos.Resource.ReservationInfo.Builder, org.apache.mesos.v1.Protos.Resource.ReservationInfoOrBuilder> 
+          getReservationsFieldBuilder() {
+        if (reservationsBuilder_ == null) {
+          reservationsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.Resource.ReservationInfo, org.apache.mesos.v1.Protos.Resource.ReservationInfo.Builder, org.apache.mesos.v1.Protos.Resource.ReservationInfoOrBuilder>(
+                  reservations_,
+                  ((bitField0_ & 0x00000200) == 0x00000200),
+                  getParentForChildren(),
+                  isClean());
+          reservations_ = null;
+        }
+        return reservationsBuilder_;
+      }
+
+      // optional .mesos.v1.Resource.DiskInfo disk = 7;
+      private org.apache.mesos.v1.Protos.Resource.DiskInfo disk_ = org.apache.mesos.v1.Protos.Resource.DiskInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Resource.DiskInfo, org.apache.mesos.v1.Protos.Resource.DiskInfo.Builder, org.apache.mesos.v1.Protos.Resource.DiskInfoOrBuilder> diskBuilder_;
+      /**
+       * <code>optional .mesos.v1.Resource.DiskInfo disk = 7;</code>
+       */
+      public boolean hasDisk() {
+        return ((bitField0_ & 0x00000400) == 0x00000400);
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.DiskInfo disk = 7;</code>
+       */
+      public org.apache.mesos.v1.Protos.Resource.DiskInfo getDisk() {
+        if (diskBuilder_ == null) {
+          return disk_;
+        } else {
+          return diskBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.DiskInfo disk = 7;</code>
+       */
+      public Builder setDisk(org.apache.mesos.v1.Protos.Resource.DiskInfo value) {
+        if (diskBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          disk_ = value;
+          onChanged();
+        } else {
+          diskBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000400;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.DiskInfo disk = 7;</code>
+       */
+      public Builder setDisk(
+          org.apache.mesos.v1.Protos.Resource.DiskInfo.Builder builderForValue) {
+        if (diskBuilder_ == null) {
+          disk_ = builderForValue.build();
+          onChanged();
+        } else {
+          diskBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000400;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.DiskInfo disk = 7;</code>
+       */
+      public Builder mergeDisk(org.apache.mesos.v1.Protos.Resource.DiskInfo value) {
+        if (diskBuilder_ == null) {
+          if (((bitField0_ & 0x00000400) == 0x00000400) &&
+              disk_ != org.apache.mesos.v1.Protos.Resource.DiskInfo.getDefaultInstance()) {
+            disk_ =
+              org.apache.mesos.v1.Protos.Resource.DiskInfo.newBuilder(disk_).mergeFrom(value).buildPartial();
+          } else {
+            disk_ = value;
+          }
+          onChanged();
+        } else {
+          diskBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000400;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.DiskInfo disk = 7;</code>
+       */
+      public Builder clearDisk() {
+        if (diskBuilder_ == null) {
+          disk_ = org.apache.mesos.v1.Protos.Resource.DiskInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          diskBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000400);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.DiskInfo disk = 7;</code>
+       */
+      public org.apache.mesos.v1.Protos.Resource.DiskInfo.Builder getDiskBuilder() {
+        bitField0_ |= 0x00000400;
+        onChanged();
+        return getDiskFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.DiskInfo disk = 7;</code>
+       */
+      public org.apache.mesos.v1.Protos.Resource.DiskInfoOrBuilder getDiskOrBuilder() {
+        if (diskBuilder_ != null) {
+          return diskBuilder_.getMessageOrBuilder();
+        } else {
+          return disk_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.DiskInfo disk = 7;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Resource.DiskInfo, org.apache.mesos.v1.Protos.Resource.DiskInfo.Builder, org.apache.mesos.v1.Protos.Resource.DiskInfoOrBuilder> 
+          getDiskFieldBuilder() {
+        if (diskBuilder_ == null) {
+          diskBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Resource.DiskInfo, org.apache.mesos.v1.Protos.Resource.DiskInfo.Builder, org.apache.mesos.v1.Protos.Resource.DiskInfoOrBuilder>(
+                  disk_,
+                  getParentForChildren(),
+                  isClean());
+          disk_ = null;
+        }
+        return diskBuilder_;
+      }
+
+      // optional .mesos.v1.Resource.RevocableInfo revocable = 9;
+      private org.apache.mesos.v1.Protos.Resource.RevocableInfo revocable_ = org.apache.mesos.v1.Protos.Resource.RevocableInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Resource.RevocableInfo, org.apache.mesos.v1.Protos.Resource.RevocableInfo.Builder, org.apache.mesos.v1.Protos.Resource.RevocableInfoOrBuilder> revocableBuilder_;
+      /**
+       * <code>optional .mesos.v1.Resource.RevocableInfo revocable = 9;</code>
+       *
+       * <pre>
+       * If this is set, the resources are revocable, i.e., any tasks or
+       * executors launched using these resources could get preempted or
+       * throttled at any time. This could be used by frameworks to run
+       * best effort tasks that do not need strict uptime or performance
+       * guarantees. Note that if this is set, 'disk' or 'reservation'
+       * cannot be set.
+       * </pre>
+       */
+      public boolean hasRevocable() {
+        return ((bitField0_ & 0x00000800) == 0x00000800);
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.RevocableInfo revocable = 9;</code>
+       *
+       * <pre>
+       * If this is set, the resources are revocable, i.e., any tasks or
+       * executors launched using these resources could get preempted or
+       * throttled at any time. This could be used by frameworks to run
+       * best effort tasks that do not need strict uptime or performance
+       * guarantees. Note that if this is set, 'disk' or 'reservation'
+       * cannot be set.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Resource.RevocableInfo getRevocable() {
+        if (revocableBuilder_ == null) {
+          return revocable_;
+        } else {
+          return revocableBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.RevocableInfo revocable = 9;</code>
+       *
+       * <pre>
+       * If this is set, the resources are revocable, i.e., any tasks or
+       * executors launched using these resources could get preempted or
+       * throttled at any time. This could be used by frameworks to run
+       * best effort tasks that do not need strict uptime or performance
+       * guarantees. Note that if this is set, 'disk' or 'reservation'
+       * cannot be set.
+       * </pre>
+       */
+      public Builder setRevocable(org.apache.mesos.v1.Protos.Resource.RevocableInfo value) {
+        if (revocableBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          revocable_ = value;
+          onChanged();
+        } else {
+          revocableBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.RevocableInfo revocable = 9;</code>
+       *
+       * <pre>
+       * If this is set, the resources are revocable, i.e., any tasks or
+       * executors launched using these resources could get preempted or
+       * throttled at any time. This could be used by frameworks to run
+       * best effort tasks that do not need strict uptime or performance
+       * guarantees. Note that if this is set, 'disk' or 'reservation'
+       * cannot be set.
+       * </pre>
+       */
+      public Builder setRevocable(
+          org.apache.mesos.v1.Protos.Resource.RevocableInfo.Builder builderForValue) {
+        if (revocableBuilder_ == null) {
+          revocable_ = builderForValue.build();
+          onChanged();
+        } else {
+          revocableBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.RevocableInfo revocable = 9;</code>
+       *
+       * <pre>
+       * If this is set, the resources are revocable, i.e., any tasks or
+       * executors launched using these resources could get preempted or
+       * throttled at any time. This could be used by frameworks to run
+       * best effort tasks that do not need strict uptime or performance
+       * guarantees. Note that if this is set, 'disk' or 'reservation'
+       * cannot be set.
+       * </pre>
+       */
+      public Builder mergeRevocable(org.apache.mesos.v1.Protos.Resource.RevocableInfo value) {
+        if (revocableBuilder_ == null) {
+          if (((bitField0_ & 0x00000800) == 0x00000800) &&
+              revocable_ != org.apache.mesos.v1.Protos.Resource.RevocableInfo.getDefaultInstance()) {
+            revocable_ =
+              org.apache.mesos.v1.Protos.Resource.RevocableInfo.newBuilder(revocable_).mergeFrom(value).buildPartial();
+          } else {
+            revocable_ = value;
+          }
+          onChanged();
+        } else {
+          revocableBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.RevocableInfo revocable = 9;</code>
+       *
+       * <pre>
+       * If this is set, the resources are revocable, i.e., any tasks or
+       * executors launched using these resources could get preempted or
+       * throttled at any time. This could be used by frameworks to run
+       * best effort tasks that do not need strict uptime or performance
+       * guarantees. Note that if this is set, 'disk' or 'reservation'
+       * cannot be set.
+       * </pre>
+       */
+      public Builder clearRevocable() {
+        if (revocableBuilder_ == null) {
+          revocable_ = org.apache.mesos.v1.Protos.Resource.RevocableInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          revocableBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000800);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.RevocableInfo revocable = 9;</code>
+       *
+       * <pre>
+       * If this is set, the resources are revocable, i.e., any tasks or
+       * executors launched using these resources could get preempted or
+       * throttled at any time. This could be used by frameworks to run
+       * best effort tasks that do not need strict uptime or performance
+       * guarantees. Note that if this is set, 'disk' or 'reservation'
+       * cannot be set.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Resource.RevocableInfo.Builder getRevocableBuilder() {
+        bitField0_ |= 0x00000800;
+        onChanged();
+        return getRevocableFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.RevocableInfo revocable = 9;</code>
+       *
+       * <pre>
+       * If this is set, the resources are revocable, i.e., any tasks or
+       * executors launched using these resources could get preempted or
+       * throttled at any time. This could be used by frameworks to run
+       * best effort tasks that do not need strict uptime or performance
+       * guarantees. Note that if this is set, 'disk' or 'reservation'
+       * cannot be set.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Resource.RevocableInfoOrBuilder getRevocableOrBuilder() {
+        if (revocableBuilder_ != null) {
+          return revocableBuilder_.getMessageOrBuilder();
+        } else {
+          return revocable_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.RevocableInfo revocable = 9;</code>
+       *
+       * <pre>
+       * If this is set, the resources are revocable, i.e., any tasks or
+       * executors launched using these resources could get preempted or
+       * throttled at any time. This could be used by frameworks to run
+       * best effort tasks that do not need strict uptime or performance
+       * guarantees. Note that if this is set, 'disk' or 'reservation'
+       * cannot be set.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Resource.RevocableInfo, org.apache.mesos.v1.Protos.Resource.RevocableInfo.Builder, org.apache.mesos.v1.Protos.Resource.RevocableInfoOrBuilder> 
+          getRevocableFieldBuilder() {
+        if (revocableBuilder_ == null) {
+          revocableBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Resource.RevocableInfo, org.apache.mesos.v1.Protos.Resource.RevocableInfo.Builder, org.apache.mesos.v1.Protos.Resource.RevocableInfoOrBuilder>(
+                  revocable_,
+                  getParentForChildren(),
+                  isClean());
+          revocable_ = null;
+        }
+        return revocableBuilder_;
+      }
+
+      // optional .mesos.v1.Resource.SharedInfo shared = 10;
+      private org.apache.mesos.v1.Protos.Resource.SharedInfo shared_ = org.apache.mesos.v1.Protos.Resource.SharedInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Resource.SharedInfo, org.apache.mesos.v1.Protos.Resource.SharedInfo.Builder, org.apache.mesos.v1.Protos.Resource.SharedInfoOrBuilder> sharedBuilder_;
+      /**
+       * <code>optional .mesos.v1.Resource.SharedInfo shared = 10;</code>
+       *
+       * <pre>
+       * If this is set, the resources are shared, i.e. multiple tasks
+       * can be launched using this resource and all of them shall refer
+       * to the same physical resource on the cluster. Note that only
+       * persistent volumes can be shared currently.
+       * </pre>
+       */
+      public boolean hasShared() {
+        return ((bitField0_ & 0x00001000) == 0x00001000);
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.SharedInfo shared = 10;</code>
+       *
+       * <pre>
+       * If this is set, the resources are shared, i.e. multiple tasks
+       * can be launched using this resource and all of them shall refer
+       * to the same physical resource on the cluster. Note that only
+       * persistent volumes can be shared currently.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Resource.SharedInfo getShared() {
+        if (sharedBuilder_ == null) {
+          return shared_;
+        } else {
+          return sharedBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.SharedInfo shared = 10;</code>
+       *
+       * <pre>
+       * If this is set, the resources are shared, i.e. multiple tasks
+       * can be launched using this resource and all of them shall refer
+       * to the same physical resource on the cluster. Note that only
+       * persistent volumes can be shared currently.
+       * </pre>
+       */
+      public Builder setShared(org.apache.mesos.v1.Protos.Resource.SharedInfo value) {
+        if (sharedBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          shared_ = value;
+          onChanged();
+        } else {
+          sharedBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00001000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.SharedInfo shared = 10;</code>
+       *
+       * <pre>
+       * If this is set, the resources are shared, i.e. multiple tasks
+       * can be launched using this resource and all of them shall refer
+       * to the same physical resource on the cluster. Note that only
+       * persistent volumes can be shared currently.
+       * </pre>
+       */
+      public Builder setShared(
+          org.apache.mesos.v1.Protos.Resource.SharedInfo.Builder builderForValue) {
+        if (sharedBuilder_ == null) {
+          shared_ = builderForValue.build();
+          onChanged();
+        } else {
+          sharedBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00001000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.SharedInfo shared = 10;</code>
+       *
+       * <pre>
+       * If this is set, the resources are shared, i.e. multiple tasks
+       * can be launched using this resource and all of them shall refer
+       * to the same physical resource on the cluster. Note that only
+       * persistent volumes can be shared currently.
+       * </pre>
+       */
+      public Builder mergeShared(org.apache.mesos.v1.Protos.Resource.SharedInfo value) {
+        if (sharedBuilder_ == null) {
+          if (((bitField0_ & 0x00001000) == 0x00001000) &&
+              shared_ != org.apache.mesos.v1.Protos.Resource.SharedInfo.getDefaultInstance()) {
+            shared_ =
+              org.apache.mesos.v1.Protos.Resource.SharedInfo.newBuilder(shared_).mergeFrom(value).buildPartial();
+          } else {
+            shared_ = value;
+          }
+          onChanged();
+        } else {
+          sharedBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00001000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.SharedInfo shared = 10;</code>
+       *
+       * <pre>
+       * If this is set, the resources are shared, i.e. multiple tasks
+       * can be launched using this resource and all of them shall refer
+       * to the same physical resource on the cluster. Note that only
+       * persistent volumes can be shared currently.
+       * </pre>
+       */
+      public Builder clearShared() {
+        if (sharedBuilder_ == null) {
+          shared_ = org.apache.mesos.v1.Protos.Resource.SharedInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          sharedBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00001000);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.SharedInfo shared = 10;</code>
+       *
+       * <pre>
+       * If this is set, the resources are shared, i.e. multiple tasks
+       * can be launched using this resource and all of them shall refer
+       * to the same physical resource on the cluster. Note that only
+       * persistent volumes can be shared currently.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Resource.SharedInfo.Builder getSharedBuilder() {
+        bitField0_ |= 0x00001000;
+        onChanged();
+        return getSharedFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.SharedInfo shared = 10;</code>
+       *
+       * <pre>
+       * If this is set, the resources are shared, i.e. multiple tasks
+       * can be launched using this resource and all of them shall refer
+       * to the same physical resource on the cluster. Note that only
+       * persistent volumes can be shared currently.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Resource.SharedInfoOrBuilder getSharedOrBuilder() {
+        if (sharedBuilder_ != null) {
+          return sharedBuilder_.getMessageOrBuilder();
+        } else {
+          return shared_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.SharedInfo shared = 10;</code>
+       *
+       * <pre>
+       * If this is set, the resources are shared, i.e. multiple tasks
+       * can be launched using this resource and all of them shall refer
+       * to the same physical resource on the cluster. Note that only
+       * persistent volumes can be shared currently.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Resource.SharedInfo, org.apache.mesos.v1.Protos.Resource.SharedInfo.Builder, org.apache.mesos.v1.Protos.Resource.SharedInfoOrBuilder> 
+          getSharedFieldBuilder() {
+        if (sharedBuilder_ == null) {
+          sharedBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Resource.SharedInfo, org.apache.mesos.v1.Protos.Resource.SharedInfo.Builder, org.apache.mesos.v1.Protos.Resource.SharedInfoOrBuilder>(
+                  shared_,
+                  getParentForChildren(),
+                  isClean());
+          shared_ = null;
+        }
+        return sharedBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.Resource)
+    }
+
+    static {
+      defaultInstance = new Resource(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.Resource)
+  }
+
+  public interface TrafficControlStatisticsOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string id = 1;
+    /**
+     * <code>required string id = 1;</code>
+     */
+    boolean hasId();
+    /**
+     * <code>required string id = 1;</code>
+     */
+    java.lang.String getId();
+    /**
+     * <code>required string id = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getIdBytes();
+
+    // optional uint64 backlog = 2;
+    /**
+     * <code>optional uint64 backlog = 2;</code>
+     */
+    boolean hasBacklog();
+    /**
+     * <code>optional uint64 backlog = 2;</code>
+     */
+    long getBacklog();
+
+    // optional uint64 bytes = 3;
+    /**
+     * <code>optional uint64 bytes = 3;</code>
+     */
+    boolean hasBytes();
+    /**
+     * <code>optional uint64 bytes = 3;</code>
+     */
+    long getBytes();
+
+    // optional uint64 drops = 4;
+    /**
+     * <code>optional uint64 drops = 4;</code>
+     */
+    boolean hasDrops();
+    /**
+     * <code>optional uint64 drops = 4;</code>
+     */
+    long getDrops();
+
+    // optional uint64 overlimits = 5;
+    /**
+     * <code>optional uint64 overlimits = 5;</code>
+     */
+    boolean hasOverlimits();
+    /**
+     * <code>optional uint64 overlimits = 5;</code>
+     */
+    long getOverlimits();
+
+    // optional uint64 packets = 6;
+    /**
+     * <code>optional uint64 packets = 6;</code>
+     */
+    boolean hasPackets();
+    /**
+     * <code>optional uint64 packets = 6;</code>
+     */
+    long getPackets();
+
+    // optional uint64 qlen = 7;
+    /**
+     * <code>optional uint64 qlen = 7;</code>
+     */
+    boolean hasQlen();
+    /**
+     * <code>optional uint64 qlen = 7;</code>
+     */
+    long getQlen();
+
+    // optional uint64 ratebps = 8;
+    /**
+     * <code>optional uint64 ratebps = 8;</code>
+     */
+    boolean hasRatebps();
+    /**
+     * <code>optional uint64 ratebps = 8;</code>
+     */
+    long getRatebps();
+
+    // optional uint64 ratepps = 9;
+    /**
+     * <code>optional uint64 ratepps = 9;</code>
+     */
+    boolean hasRatepps();
+    /**
+     * <code>optional uint64 ratepps = 9;</code>
+     */
+    long getRatepps();
+
+    // optional uint64 requeues = 10;
+    /**
+     * <code>optional uint64 requeues = 10;</code>
+     */
+    boolean hasRequeues();
+    /**
+     * <code>optional uint64 requeues = 10;</code>
+     */
+    long getRequeues();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.TrafficControlStatistics}
+   *
+   * <pre>
+   **
+   * When the network bandwidth caps are enabled and the container
+   * is over its limit, outbound packets may be either delayed or
+   * dropped completely either because it exceeds the maximum bandwidth
+   * allocation for a single container (the cap) or because the combined
+   * network traffic of multiple containers on the host exceeds the
+   * transmit capacity of the host (the share). We can report the
+   * following statistics for each of these conditions exported directly
+   * from the Linux Traffic Control Queueing Discipline.
+   *
+   * id         : name of the limiter, e.g. 'tx_bw_cap'
+   * backlog    : number of packets currently delayed
+   * bytes      : total bytes seen
+   * drops      : number of packets dropped in total
+   * overlimits : number of packets which exceeded allocation
+   * packets    : total packets seen
+   * qlen       : number of packets currently queued
+   * rate_bps   : throughput in bytes/sec
+   * rate_pps   : throughput in packets/sec
+   * requeues   : number of times a packet has been delayed due to
+   *              locking or device contention issues
+   *
+   * More information on the operation of Linux Traffic Control can be
+   * found at http://www.lartc.org/lartc.html.
+   * </pre>
+   */
+  public static final class TrafficControlStatistics extends
+      com.google.protobuf.GeneratedMessage
+      implements TrafficControlStatisticsOrBuilder {
+    // Use TrafficControlStatistics.newBuilder() to construct.
+    private TrafficControlStatistics(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private TrafficControlStatistics(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final TrafficControlStatistics defaultInstance;
+    public static TrafficControlStatistics getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public TrafficControlStatistics getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private TrafficControlStatistics(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              id_ = input.readBytes();
+              break;
+            }
+            case 16: {
+              bitField0_ |= 0x00000002;
+              backlog_ = input.readUInt64();
+              break;
+            }
+            case 24: {
+              bitField0_ |= 0x00000004;
+              bytes_ = input.readUInt64();
+              break;
+            }
+            case 32: {
+              bitField0_ |= 0x00000008;
+              drops_ = input.readUInt64();
+              break;
+            }
+            case 40: {
+              bitField0_ |= 0x00000010;
+              overlimits_ = input.readUInt64();
+              break;
+            }
+            case 48: {
+              bitField0_ |= 0x00000020;
+              packets_ = input.readUInt64();
+              break;
+            }
+            case 56: {
+              bitField0_ |= 0x00000040;
+              qlen_ = input.readUInt64();
+              break;
+            }
+            case 64: {
+              bitField0_ |= 0x00000080;
+              ratebps_ = input.readUInt64();
+              break;
+            }
+            case 72: {
+              bitField0_ |= 0x00000100;
+              ratepps_ = input.readUInt64();
+              break;
+            }
+            case 80: {
+              bitField0_ |= 0x00000200;
+              requeues_ = input.readUInt64();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TrafficControlStatistics_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TrafficControlStatistics_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.TrafficControlStatistics.class, org.apache.mesos.v1.Protos.TrafficControlStatistics.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<TrafficControlStatistics> PARSER =
+        new com.google.protobuf.AbstractParser<TrafficControlStatistics>() {
+      public TrafficControlStatistics parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new TrafficControlStatistics(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<TrafficControlStatistics> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string id = 1;
+    public static final int ID_FIELD_NUMBER = 1;
+    private java.lang.Object id_;
+    /**
+     * <code>required string id = 1;</code>
+     */
+    public boolean hasId() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string id = 1;</code>
+     */
+    public java.lang.String getId() {
+      java.lang.Object ref = id_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          id_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string id = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getIdBytes() {
+      java.lang.Object ref = id_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        id_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional uint64 backlog = 2;
+    public static final int BACKLOG_FIELD_NUMBER = 2;
+    private long backlog_;
+    /**
+     * <code>optional uint64 backlog = 2;</code>
+     */
+    public boolean hasBacklog() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional uint64 backlog = 2;</code>
+     */
+    public long getBacklog() {
+      return backlog_;
+    }
+
+    // optional uint64 bytes = 3;
+    public static final int BYTES_FIELD_NUMBER = 3;
+    private long bytes_;
+    /**
+     * <code>optional uint64 bytes = 3;</code>
+     */
+    public boolean hasBytes() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional uint64 bytes = 3;</code>
+     */
+    public long getBytes() {
+      return bytes_;
+    }
+
+    // optional uint64 drops = 4;
+    public static final int DROPS_FIELD_NUMBER = 4;
+    private long drops_;
+    /**
+     * <code>optional uint64 drops = 4;</code>
+     */
+    public boolean hasDrops() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional uint64 drops = 4;</code>
+     */
+    public long getDrops() {
+      return drops_;
+    }
+
+    // optional uint64 overlimits = 5;
+    public static final int OVERLIMITS_FIELD_NUMBER = 5;
+    private long overlimits_;
+    /**
+     * <code>optional uint64 overlimits = 5;</code>
+     */
+    public boolean hasOverlimits() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional uint64 overlimits = 5;</code>
+     */
+    public long getOverlimits() {
+      return overlimits_;
+    }
+
+    // optional uint64 packets = 6;
+    public static final int PACKETS_FIELD_NUMBER = 6;
+    private long packets_;
+    /**
+     * <code>optional uint64 packets = 6;</code>
+     */
+    public boolean hasPackets() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional uint64 packets = 6;</code>
+     */
+    public long getPackets() {
+      return packets_;
+    }
+
+    // optional uint64 qlen = 7;
+    public static final int QLEN_FIELD_NUMBER = 7;
+    private long qlen_;
+    /**
+     * <code>optional uint64 qlen = 7;</code>
+     */
+    public boolean hasQlen() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional uint64 qlen = 7;</code>
+     */
+    public long getQlen() {
+      return qlen_;
+    }
+
+    // optional uint64 ratebps = 8;
+    public static final int RATEBPS_FIELD_NUMBER = 8;
+    private long ratebps_;
+    /**
+     * <code>optional uint64 ratebps = 8;</code>
+     */
+    public boolean hasRatebps() {
+      return ((bitField0_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional uint64 ratebps = 8;</code>
+     */
+    public long getRatebps() {
+      return ratebps_;
+    }
+
+    // optional uint64 ratepps = 9;
+    public static final int RATEPPS_FIELD_NUMBER = 9;
+    private long ratepps_;
+    /**
+     * <code>optional uint64 ratepps = 9;</code>
+     */
+    public boolean hasRatepps() {
+      return ((bitField0_ & 0x00000100) == 0x00000100);
+    }
+    /**
+     * <code>optional uint64 ratepps = 9;</code>
+     */
+    public long getRatepps() {
+      return ratepps_;
+    }
+
+    // optional uint64 requeues = 10;
+    public static final int REQUEUES_FIELD_NUMBER = 10;
+    private long requeues_;
+    /**
+     * <code>optional uint64 requeues = 10;</code>
+     */
+    public boolean hasRequeues() {
+      return ((bitField0_ & 0x00000200) == 0x00000200);
+    }
+    /**
+     * <code>optional uint64 requeues = 10;</code>
+     */
+    public long getRequeues() {
+      return requeues_;
+    }
+
+    private void initFields() {
+      id_ = "";
+      backlog_ = 0L;
+      bytes_ = 0L;
+      drops_ = 0L;
+      overlimits_ = 0L;
+      packets_ = 0L;
+      qlen_ = 0L;
+      ratebps_ = 0L;
+      ratepps_ = 0L;
+      requeues_ = 0L;
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasId()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getIdBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeUInt64(2, backlog_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeUInt64(3, bytes_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeUInt64(4, drops_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeUInt64(5, overlimits_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeUInt64(6, packets_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeUInt64(7, qlen_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        output.writeUInt64(8, ratebps_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        output.writeUInt64(9, ratepps_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        output.writeUInt64(10, requeues_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getIdBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(2, backlog_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(3, bytes_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(4, drops_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(5, overlimits_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(6, packets_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(7, qlen_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(8, ratebps_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(9, ratepps_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(10, requeues_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.TrafficControlStatistics parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.TrafficControlStatistics parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.TrafficControlStatistics parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.TrafficControlStatistics parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.TrafficControlStatistics parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.TrafficControlStatistics parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.TrafficControlStatistics parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.TrafficControlStatistics parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.TrafficControlStatistics parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.TrafficControlStatistics parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.TrafficControlStatistics prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.TrafficControlStatistics}
+     *
+     * <pre>
+     **
+     * When the network bandwidth caps are enabled and the container
+     * is over its limit, outbound packets may be either delayed or
+     * dropped completely either because it exceeds the maximum bandwidth
+     * allocation for a single container (the cap) or because the combined
+     * network traffic of multiple containers on the host exceeds the
+     * transmit capacity of the host (the share). We can report the
+     * following statistics for each of these conditions exported directly
+     * from the Linux Traffic Control Queueing Discipline.
+     *
+     * id         : name of the limiter, e.g. 'tx_bw_cap'
+     * backlog    : number of packets currently delayed
+     * bytes      : total bytes seen
+     * drops      : number of packets dropped in total
+     * overlimits : number of packets which exceeded allocation
+     * packets    : total packets seen
+     * qlen       : number of packets currently queued
+     * rate_bps   : throughput in bytes/sec
+     * rate_pps   : throughput in packets/sec
+     * requeues   : number of times a packet has been delayed due to
+     *              locking or device contention issues
+     *
+     * More information on the operation of Linux Traffic Control can be
+     * found at http://www.lartc.org/lartc.html.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.TrafficControlStatisticsOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TrafficControlStatistics_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TrafficControlStatistics_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.TrafficControlStatistics.class, org.apache.mesos.v1.Protos.TrafficControlStatistics.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.TrafficControlStatistics.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        id_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        backlog_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        bytes_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        drops_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        overlimits_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000010);
+        packets_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000020);
+        qlen_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000040);
+        ratebps_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000080);
+        ratepps_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000100);
+        requeues_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000200);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TrafficControlStatistics_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.TrafficControlStatistics getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.TrafficControlStatistics.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.TrafficControlStatistics build() {
+        org.apache.mesos.v1.Protos.TrafficControlStatistics result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.TrafficControlStatistics buildPartial() {
+        org.apache.mesos.v1.Protos.TrafficControlStatistics result = new org.apache.mesos.v1.Protos.TrafficControlStatistics(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.id_ = id_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.backlog_ = backlog_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.bytes_ = bytes_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.drops_ = drops_;
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.overlimits_ = overlimits_;
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        result.packets_ = packets_;
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        result.qlen_ = qlen_;
+        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+          to_bitField0_ |= 0x00000080;
+        }
+        result.ratebps_ = ratebps_;
+        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
+          to_bitField0_ |= 0x00000100;
+        }
+        result.ratepps_ = ratepps_;
+        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
+          to_bitField0_ |= 0x00000200;
+        }
+        result.requeues_ = requeues_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.TrafficControlStatistics) {
+          return mergeFrom((org.apache.mesos.v1.Protos.TrafficControlStatistics)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.TrafficControlStatistics other) {
+        if (other == org.apache.mesos.v1.Protos.TrafficControlStatistics.getDefaultInstance()) return this;
+        if (other.hasId()) {
+          bitField0_ |= 0x00000001;
+          id_ = other.id_;
+          onChanged();
+        }
+        if (other.hasBacklog()) {
+          setBacklog(other.getBacklog());
+        }
+        if (other.hasBytes()) {
+          setBytes(other.getBytes());
+        }
+        if (other.hasDrops()) {
+          setDrops(other.getDrops());
+        }
+        if (other.hasOverlimits()) {
+          setOverlimits(other.getOverlimits());
+        }
+        if (other.hasPackets()) {
+          setPackets(other.getPackets());
+        }
+        if (other.hasQlen()) {
+          setQlen(other.getQlen());
+        }
+        if (other.hasRatebps()) {
+          setRatebps(other.getRatebps());
+        }
+        if (other.hasRatepps()) {
+          setRatepps(other.getRatepps());
+        }
+        if (other.hasRequeues()) {
+          setRequeues(other.getRequeues());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasId()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.TrafficControlStatistics parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.TrafficControlStatistics) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string id = 1;
+      private java.lang.Object id_ = "";
+      /**
+       * <code>required string id = 1;</code>
+       */
+      public boolean hasId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string id = 1;</code>
+       */
+      public java.lang.String getId() {
+        java.lang.Object ref = id_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          id_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string id = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getIdBytes() {
+        java.lang.Object ref = id_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          id_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string id = 1;</code>
+       */
+      public Builder setId(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        id_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string id = 1;</code>
+       */
+      public Builder clearId() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        id_ = getDefaultInstance().getId();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string id = 1;</code>
+       */
+      public Builder setIdBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        id_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 backlog = 2;
+      private long backlog_ ;
+      /**
+       * <code>optional uint64 backlog = 2;</code>
+       */
+      public boolean hasBacklog() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional uint64 backlog = 2;</code>
+       */
+      public long getBacklog() {
+        return backlog_;
+      }
+      /**
+       * <code>optional uint64 backlog = 2;</code>
+       */
+      public Builder setBacklog(long value) {
+        bitField0_ |= 0x00000002;
+        backlog_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 backlog = 2;</code>
+       */
+      public Builder clearBacklog() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        backlog_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 bytes = 3;
+      private long bytes_ ;
+      /**
+       * <code>optional uint64 bytes = 3;</code>
+       */
+      public boolean hasBytes() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional uint64 bytes = 3;</code>
+       */
+      public long getBytes() {
+        return bytes_;
+      }
+      /**
+       * <code>optional uint64 bytes = 3;</code>
+       */
+      public Builder setBytes(long value) {
+        bitField0_ |= 0x00000004;
+        bytes_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 bytes = 3;</code>
+       */
+      public Builder clearBytes() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        bytes_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 drops = 4;
+      private long drops_ ;
+      /**
+       * <code>optional uint64 drops = 4;</code>
+       */
+      public boolean hasDrops() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional uint64 drops = 4;</code>
+       */
+      public long getDrops() {
+        return drops_;
+      }
+      /**
+       * <code>optional uint64 drops = 4;</code>
+       */
+      public Builder setDrops(long value) {
+        bitField0_ |= 0x00000008;
+        drops_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 drops = 4;</code>
+       */
+      public Builder clearDrops() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        drops_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 overlimits = 5;
+      private long overlimits_ ;
+      /**
+       * <code>optional uint64 overlimits = 5;</code>
+       */
+      public boolean hasOverlimits() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional uint64 overlimits = 5;</code>
+       */
+      public long getOverlimits() {
+        return overlimits_;
+      }
+      /**
+       * <code>optional uint64 overlimits = 5;</code>
+       */
+      public Builder setOverlimits(long value) {
+        bitField0_ |= 0x00000010;
+        overlimits_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 overlimits = 5;</code>
+       */
+      public Builder clearOverlimits() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        overlimits_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 packets = 6;
+      private long packets_ ;
+      /**
+       * <code>optional uint64 packets = 6;</code>
+       */
+      public boolean hasPackets() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional uint64 packets = 6;</code>
+       */
+      public long getPackets() {
+        return packets_;
+      }
+      /**
+       * <code>optional uint64 packets = 6;</code>
+       */
+      public Builder setPackets(long value) {
+        bitField0_ |= 0x00000020;
+        packets_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 packets = 6;</code>
+       */
+      public Builder clearPackets() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        packets_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 qlen = 7;
+      private long qlen_ ;
+      /**
+       * <code>optional uint64 qlen = 7;</code>
+       */
+      public boolean hasQlen() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional uint64 qlen = 7;</code>
+       */
+      public long getQlen() {
+        return qlen_;
+      }
+      /**
+       * <code>optional uint64 qlen = 7;</code>
+       */
+      public Builder setQlen(long value) {
+        bitField0_ |= 0x00000040;
+        qlen_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 qlen = 7;</code>
+       */
+      public Builder clearQlen() {
+        bitField0_ = (bitField0_ & ~0x00000040);
+        qlen_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 ratebps = 8;
+      private long ratebps_ ;
+      /**
+       * <code>optional uint64 ratebps = 8;</code>
+       */
+      public boolean hasRatebps() {
+        return ((bitField0_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional uint64 ratebps = 8;</code>
+       */
+      public long getRatebps() {
+        return ratebps_;
+      }
+      /**
+       * <code>optional uint64 ratebps = 8;</code>
+       */
+      public Builder setRatebps(long value) {
+        bitField0_ |= 0x00000080;
+        ratebps_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 ratebps = 8;</code>
+       */
+      public Builder clearRatebps() {
+        bitField0_ = (bitField0_ & ~0x00000080);
+        ratebps_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 ratepps = 9;
+      private long ratepps_ ;
+      /**
+       * <code>optional uint64 ratepps = 9;</code>
+       */
+      public boolean hasRatepps() {
+        return ((bitField0_ & 0x00000100) == 0x00000100);
+      }
+      /**
+       * <code>optional uint64 ratepps = 9;</code>
+       */
+      public long getRatepps() {
+        return ratepps_;
+      }
+      /**
+       * <code>optional uint64 ratepps = 9;</code>
+       */
+      public Builder setRatepps(long value) {
+        bitField0_ |= 0x00000100;
+        ratepps_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 ratepps = 9;</code>
+       */
+      public Builder clearRatepps() {
+        bitField0_ = (bitField0_ & ~0x00000100);
+        ratepps_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 requeues = 10;
+      private long requeues_ ;
+      /**
+       * <code>optional uint64 requeues = 10;</code>
+       */
+      public boolean hasRequeues() {
+        return ((bitField0_ & 0x00000200) == 0x00000200);
+      }
+      /**
+       * <code>optional uint64 requeues = 10;</code>
+       */
+      public long getRequeues() {
+        return requeues_;
+      }
+      /**
+       * <code>optional uint64 requeues = 10;</code>
+       */
+      public Builder setRequeues(long value) {
+        bitField0_ |= 0x00000200;
+        requeues_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 requeues = 10;</code>
+       */
+      public Builder clearRequeues() {
+        bitField0_ = (bitField0_ & ~0x00000200);
+        requeues_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.TrafficControlStatistics)
+    }
+
+    static {
+      defaultInstance = new TrafficControlStatistics(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.TrafficControlStatistics)
+  }
+
+  public interface IpStatisticsOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional int64 Forwarding = 1;
+    /**
+     * <code>optional int64 Forwarding = 1;</code>
+     */
+    boolean hasForwarding();
+    /**
+     * <code>optional int64 Forwarding = 1;</code>
+     */
+    long getForwarding();
+
+    // optional int64 DefaultTTL = 2;
+    /**
+     * <code>optional int64 DefaultTTL = 2;</code>
+     */
+    boolean hasDefaultTTL();
+    /**
+     * <code>optional int64 DefaultTTL = 2;</code>
+     */
+    long getDefaultTTL();
+
+    // optional int64 InReceives = 3;
+    /**
+     * <code>optional int64 InReceives = 3;</code>
+     */
+    boolean hasInReceives();
+    /**
+     * <code>optional int64 InReceives = 3;</code>
+     */
+    long getInReceives();
+
+    // optional int64 InHdrErrors = 4;
+    /**
+     * <code>optional int64 InHdrErrors = 4;</code>
+     */
+    boolean hasInHdrErrors();
+    /**
+     * <code>optional int64 InHdrErrors = 4;</code>
+     */
+    long getInHdrErrors();
+
+    // optional int64 InAddrErrors = 5;
+    /**
+     * <code>optional int64 InAddrErrors = 5;</code>
+     */
+    boolean hasInAddrErrors();
+    /**
+     * <code>optional int64 InAddrErrors = 5;</code>
+     */
+    long getInAddrErrors();
+
+    // optional int64 ForwDatagrams = 6;
+    /**
+     * <code>optional int64 ForwDatagrams = 6;</code>
+     */
+    boolean hasForwDatagrams();
+    /**
+     * <code>optional int64 ForwDatagrams = 6;</code>
+     */
+    long getForwDatagrams();
+
+    // optional int64 InUnknownProtos = 7;
+    /**
+     * <code>optional int64 InUnknownProtos = 7;</code>
+     */
+    boolean hasInUnknownProtos();
+    /**
+     * <code>optional int64 InUnknownProtos = 7;</code>
+     */
+    long getInUnknownProtos();
+
+    // optional int64 InDiscards = 8;
+    /**
+     * <code>optional int64 InDiscards = 8;</code>
+     */
+    boolean hasInDiscards();
+    /**
+     * <code>optional int64 InDiscards = 8;</code>
+     */
+    long getInDiscards();
+
+    // optional int64 InDelivers = 9;
+    /**
+     * <code>optional int64 InDelivers = 9;</code>
+     */
+    boolean hasInDelivers();
+    /**
+     * <code>optional int64 InDelivers = 9;</code>
+     */
+    long getInDelivers();
+
+    // optional int64 OutRequests = 10;
+    /**
+     * <code>optional int64 OutRequests = 10;</code>
+     */
+    boolean hasOutRequests();
+    /**
+     * <code>optional int64 OutRequests = 10;</code>
+     */
+    long getOutRequests();
+
+    // optional int64 OutDiscards = 11;
+    /**
+     * <code>optional int64 OutDiscards = 11;</code>
+     */
+    boolean hasOutDiscards();
+    /**
+     * <code>optional int64 OutDiscards = 11;</code>
+     */
+    long getOutDiscards();
+
+    // optional int64 OutNoRoutes = 12;
+    /**
+     * <code>optional int64 OutNoRoutes = 12;</code>
+     */
+    boolean hasOutNoRoutes();
+    /**
+     * <code>optional int64 OutNoRoutes = 12;</code>
+     */
+    long getOutNoRoutes();
+
+    // optional int64 ReasmTimeout = 13;
+    /**
+     * <code>optional int64 ReasmTimeout = 13;</code>
+     */
+    boolean hasReasmTimeout();
+    /**
+     * <code>optional int64 ReasmTimeout = 13;</code>
+     */
+    long getReasmTimeout();
+
+    // optional int64 ReasmReqds = 14;
+    /**
+     * <code>optional int64 ReasmReqds = 14;</code>
+     */
+    boolean hasReasmReqds();
+    /**
+     * <code>optional int64 ReasmReqds = 14;</code>
+     */
+    long getReasmReqds();
+
+    // optional int64 ReasmOKs = 15;
+    /**
+     * <code>optional int64 ReasmOKs = 15;</code>
+     */
+    boolean hasReasmOKs();
+    /**
+     * <code>optional int64 ReasmOKs = 15;</code>
+     */
+    long getReasmOKs();
+
+    // optional int64 ReasmFails = 16;
+    /**
+     * <code>optional int64 ReasmFails = 16;</code>
+     */
+    boolean hasReasmFails();
+    /**
+     * <code>optional int64 ReasmFails = 16;</code>
+     */
+    long getReasmFails();
+
+    // optional int64 FragOKs = 17;
+    /**
+     * <code>optional int64 FragOKs = 17;</code>
+     */
+    boolean hasFragOKs();
+    /**
+     * <code>optional int64 FragOKs = 17;</code>
+     */
+    long getFragOKs();
+
+    // optional int64 FragFails = 18;
+    /**
+     * <code>optional int64 FragFails = 18;</code>
+     */
+    boolean hasFragFails();
+    /**
+     * <code>optional int64 FragFails = 18;</code>
+     */
+    long getFragFails();
+
+    // optional int64 FragCreates = 19;
+    /**
+     * <code>optional int64 FragCreates = 19;</code>
+     */
+    boolean hasFragCreates();
+    /**
+     * <code>optional int64 FragCreates = 19;</code>
+     */
+    long getFragCreates();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.IpStatistics}
+   */
+  public static final class IpStatistics extends
+      com.google.protobuf.GeneratedMessage
+      implements IpStatisticsOrBuilder {
+    // Use IpStatistics.newBuilder() to construct.
+    private IpStatistics(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private IpStatistics(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final IpStatistics defaultInstance;
+    public static IpStatistics getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public IpStatistics getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private IpStatistics(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 8: {
+              bitField0_ |= 0x00000001;
+              forwarding_ = input.readInt64();
+              break;
+            }
+            case 16: {
+              bitField0_ |= 0x00000002;
+              defaultTTL_ = input.readInt64();
+              break;
+            }
+            case 24: {
+              bitField0_ |= 0x00000004;
+              inReceives_ = input.readInt64();
+              break;
+            }
+            case 32: {
+              bitField0_ |= 0x00000008;
+              inHdrErrors_ = input.readInt64();
+              break;
+            }
+            case 40: {
+              bitField0_ |= 0x00000010;
+              inAddrErrors_ = input.readInt64();
+              break;
+            }
+            case 48: {
+              bitField0_ |= 0x00000020;
+              forwDatagrams_ = input.readInt64();
+              break;
+            }
+            case 56: {
+              bitField0_ |= 0x00000040;
+              inUnknownProtos_ = input.readInt64();
+              break;
+            }
+            case 64: {
+              bitField0_ |= 0x00000080;
+              inDiscards_ = input.readInt64();
+              break;
+            }
+            case 72: {
+              bitField0_ |= 0x00000100;
+              inDelivers_ = input.readInt64();
+              break;
+            }
+            case 80: {
+              bitField0_ |= 0x00000200;
+              outRequests_ = input.readInt64();
+              break;
+            }
+            case 88: {
+              bitField0_ |= 0x00000400;
+              outDiscards_ = input.readInt64();
+              break;
+            }
+            case 96: {
+              bitField0_ |= 0x00000800;
+              outNoRoutes_ = input.readInt64();
+              break;
+            }
+            case 104: {
+              bitField0_ |= 0x00001000;
+              reasmTimeout_ = input.readInt64();
+              break;
+            }
+            case 112: {
+              bitField0_ |= 0x00002000;
+              reasmReqds_ = input.readInt64();
+              break;
+            }
+            case 120: {
+              bitField0_ |= 0x00004000;
+              reasmOKs_ = input.readInt64();
+              break;
+            }
+            case 128: {
+              bitField0_ |= 0x00008000;
+              reasmFails_ = input.readInt64();
+              break;
+            }
+            case 136: {
+              bitField0_ |= 0x00010000;
+              fragOKs_ = input.readInt64();
+              break;
+            }
+            case 144: {
+              bitField0_ |= 0x00020000;
+              fragFails_ = input.readInt64();
+              break;
+            }
+            case 152: {
+              bitField0_ |= 0x00040000;
+              fragCreates_ = input.readInt64();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_IpStatistics_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_IpStatistics_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.IpStatistics.class, org.apache.mesos.v1.Protos.IpStatistics.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<IpStatistics> PARSER =
+        new com.google.protobuf.AbstractParser<IpStatistics>() {
+      public IpStatistics parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new IpStatistics(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<IpStatistics> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // optional int64 Forwarding = 1;
+    public static final int FORWARDING_FIELD_NUMBER = 1;
+    private long forwarding_;
+    /**
+     * <code>optional int64 Forwarding = 1;</code>
+     */
+    public boolean hasForwarding() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional int64 Forwarding = 1;</code>
+     */
+    public long getForwarding() {
+      return forwarding_;
+    }
+
+    // optional int64 DefaultTTL = 2;
+    public static final int DEFAULTTTL_FIELD_NUMBER = 2;
+    private long defaultTTL_;
+    /**
+     * <code>optional int64 DefaultTTL = 2;</code>
+     */
+    public boolean hasDefaultTTL() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional int64 DefaultTTL = 2;</code>
+     */
+    public long getDefaultTTL() {
+      return defaultTTL_;
+    }
+
+    // optional int64 InReceives = 3;
+    public static final int INRECEIVES_FIELD_NUMBER = 3;
+    private long inReceives_;
+    /**
+     * <code>optional int64 InReceives = 3;</code>
+     */
+    public boolean hasInReceives() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional int64 InReceives = 3;</code>
+     */
+    public long getInReceives() {
+      return inReceives_;
+    }
+
+    // optional int64 InHdrErrors = 4;
+    public static final int INHDRERRORS_FIELD_NUMBER = 4;
+    private long inHdrErrors_;
+    /**
+     * <code>optional int64 InHdrErrors = 4;</code>
+     */
+    public boolean hasInHdrErrors() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional int64 InHdrErrors = 4;</code>
+     */
+    public long getInHdrErrors() {
+      return inHdrErrors_;
+    }
+
+    // optional int64 InAddrErrors = 5;
+    public static final int INADDRERRORS_FIELD_NUMBER = 5;
+    private long inAddrErrors_;
+    /**
+     * <code>optional int64 InAddrErrors = 5;</code>
+     */
+    public boolean hasInAddrErrors() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional int64 InAddrErrors = 5;</code>
+     */
+    public long getInAddrErrors() {
+      return inAddrErrors_;
+    }
+
+    // optional int64 ForwDatagrams = 6;
+    public static final int FORWDATAGRAMS_FIELD_NUMBER = 6;
+    private long forwDatagrams_;
+    /**
+     * <code>optional int64 ForwDatagrams = 6;</code>
+     */
+    public boolean hasForwDatagrams() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional int64 ForwDatagrams = 6;</code>
+     */
+    public long getForwDatagrams() {
+      return forwDatagrams_;
+    }
+
+    // optional int64 InUnknownProtos = 7;
+    public static final int INUNKNOWNPROTOS_FIELD_NUMBER = 7;
+    private long inUnknownProtos_;
+    /**
+     * <code>optional int64 InUnknownProtos = 7;</code>
+     */
+    public boolean hasInUnknownProtos() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional int64 InUnknownProtos = 7;</code>
+     */
+    public long getInUnknownProtos() {
+      return inUnknownProtos_;
+    }
+
+    // optional int64 InDiscards = 8;
+    public static final int INDISCARDS_FIELD_NUMBER = 8;
+    private long inDiscards_;
+    /**
+     * <code>optional int64 InDiscards = 8;</code>
+     */
+    public boolean hasInDiscards() {
+      return ((bitField0_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional int64 InDiscards = 8;</code>
+     */
+    public long getInDiscards() {
+      return inDiscards_;
+    }
+
+    // optional int64 InDelivers = 9;
+    public static final int INDELIVERS_FIELD_NUMBER = 9;
+    private long inDelivers_;
+    /**
+     * <code>optional int64 InDelivers = 9;</code>
+     */
+    public boolean hasInDelivers() {
+      return ((bitField0_ & 0x00000100) == 0x00000100);
+    }
+    /**
+     * <code>optional int64 InDelivers = 9;</code>
+     */
+    public long getInDelivers() {
+      return inDelivers_;
+    }
+
+    // optional int64 OutRequests = 10;
+    public static final int OUTREQUESTS_FIELD_NUMBER = 10;
+    private long outRequests_;
+    /**
+     * <code>optional int64 OutRequests = 10;</code>
+     */
+    public boolean hasOutRequests() {
+      return ((bitField0_ & 0x00000200) == 0x00000200);
+    }
+    /**
+     * <code>optional int64 OutRequests = 10;</code>
+     */
+    public long getOutRequests() {
+      return outRequests_;
+    }
+
+    // optional int64 OutDiscards = 11;
+    public static final int OUTDISCARDS_FIELD_NUMBER = 11;
+    private long outDiscards_;
+    /**
+     * <code>optional int64 OutDiscards = 11;</code>
+     */
+    public boolean hasOutDiscards() {
+      return ((bitField0_ & 0x00000400) == 0x00000400);
+    }
+    /**
+     * <code>optional int64 OutDiscards = 11;</code>
+     */
+    public long getOutDiscards() {
+      return outDiscards_;
+    }
+
+    // optional int64 OutNoRoutes = 12;
+    public static final int OUTNOROUTES_FIELD_NUMBER = 12;
+    private long outNoRoutes_;
+    /**
+     * <code>optional int64 OutNoRoutes = 12;</code>
+     */
+    public boolean hasOutNoRoutes() {
+      return ((bitField0_ & 0x00000800) == 0x00000800);
+    }
+    /**
+     * <code>optional int64 OutNoRoutes = 12;</code>
+     */
+    public long getOutNoRoutes() {
+      return outNoRoutes_;
+    }
+
+    // optional int64 ReasmTimeout = 13;
+    public static final int REASMTIMEOUT_FIELD_NUMBER = 13;
+    private long reasmTimeout_;
+    /**
+     * <code>optional int64 ReasmTimeout = 13;</code>
+     */
+    public boolean hasReasmTimeout() {
+      return ((bitField0_ & 0x00001000) == 0x00001000);
+    }
+    /**
+     * <code>optional int64 ReasmTimeout = 13;</code>
+     */
+    public long getReasmTimeout() {
+      return reasmTimeout_;
+    }
+
+    // optional int64 ReasmReqds = 14;
+    public static final int REASMREQDS_FIELD_NUMBER = 14;
+    private long reasmReqds_;
+    /**
+     * <code>optional int64 ReasmReqds = 14;</code>
+     */
+    public boolean hasReasmReqds() {
+      return ((bitField0_ & 0x00002000) == 0x00002000);
+    }
+    /**
+     * <code>optional int64 ReasmReqds = 14;</code>
+     */
+    public long getReasmReqds() {
+      return reasmReqds_;
+    }
+
+    // optional int64 ReasmOKs = 15;
+    public static final int REASMOKS_FIELD_NUMBER = 15;
+    private long reasmOKs_;
+    /**
+     * <code>optional int64 ReasmOKs = 15;</code>
+     */
+    public boolean hasReasmOKs() {
+      return ((bitField0_ & 0x00004000) == 0x00004000);
+    }
+    /**
+     * <code>optional int64 ReasmOKs = 15;</code>
+     */
+    public long getReasmOKs() {
+      return reasmOKs_;
+    }
+
+    // optional int64 ReasmFails = 16;
+    public static final int REASMFAILS_FIELD_NUMBER = 16;
+    private long reasmFails_;
+    /**
+     * <code>optional int64 ReasmFails = 16;</code>
+     */
+    public boolean hasReasmFails() {
+      return ((bitField0_ & 0x00008000) == 0x00008000);
+    }
+    /**
+     * <code>optional int64 ReasmFails = 16;</code>
+     */
+    public long getReasmFails() {
+      return reasmFails_;
+    }
+
+    // optional int64 FragOKs = 17;
+    public static final int FRAGOKS_FIELD_NUMBER = 17;
+    private long fragOKs_;
+    /**
+     * <code>optional int64 FragOKs = 17;</code>
+     */
+    public boolean hasFragOKs() {
+      return ((bitField0_ & 0x00010000) == 0x00010000);
+    }
+    /**
+     * <code>optional int64 FragOKs = 17;</code>
+     */
+    public long getFragOKs() {
+      return fragOKs_;
+    }
+
+    // optional int64 FragFails = 18;
+    public static final int FRAGFAILS_FIELD_NUMBER = 18;
+    private long fragFails_;
+    /**
+     * <code>optional int64 FragFails = 18;</code>
+     */
+    public boolean hasFragFails() {
+      return ((bitField0_ & 0x00020000) == 0x00020000);
+    }
+    /**
+     * <code>optional int64 FragFails = 18;</code>
+     */
+    public long getFragFails() {
+      return fragFails_;
+    }
+
+    // optional int64 FragCreates = 19;
+    public static final int FRAGCREATES_FIELD_NUMBER = 19;
+    private long fragCreates_;
+    /**
+     * <code>optional int64 FragCreates = 19;</code>
+     */
+    public boolean hasFragCreates() {
+      return ((bitField0_ & 0x00040000) == 0x00040000);
+    }
+    /**
+     * <code>optional int64 FragCreates = 19;</code>
+     */
+    public long getFragCreates() {
+      return fragCreates_;
+    }
+
+    private void initFields() {
+      forwarding_ = 0L;
+      defaultTTL_ = 0L;
+      inReceives_ = 0L;
+      inHdrErrors_ = 0L;
+      inAddrErrors_ = 0L;
+      forwDatagrams_ = 0L;
+      inUnknownProtos_ = 0L;
+      inDiscards_ = 0L;
+      inDelivers_ = 0L;
+      outRequests_ = 0L;
+      outDiscards_ = 0L;
+      outNoRoutes_ = 0L;
+      reasmTimeout_ = 0L;
+      reasmReqds_ = 0L;
+      reasmOKs_ = 0L;
+      reasmFails_ = 0L;
+      fragOKs_ = 0L;
+      fragFails_ = 0L;
+      fragCreates_ = 0L;
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeInt64(1, forwarding_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeInt64(2, defaultTTL_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeInt64(3, inReceives_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeInt64(4, inHdrErrors_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeInt64(5, inAddrErrors_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeInt64(6, forwDatagrams_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeInt64(7, inUnknownProtos_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        output.writeInt64(8, inDiscards_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        output.writeInt64(9, inDelivers_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        output.writeInt64(10, outRequests_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        output.writeInt64(11, outDiscards_);
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        output.writeInt64(12, outNoRoutes_);
+      }
+      if (((bitField0_ & 0x00001000) == 0x00001000)) {
+        output.writeInt64(13, reasmTimeout_);
+      }
+      if (((bitField0_ & 0x00002000) == 0x00002000)) {
+        output.writeInt64(14, reasmReqds_);
+      }
+      if (((bitField0_ & 0x00004000) == 0x00004000)) {
+        output.writeInt64(15, reasmOKs_);
+      }
+      if (((bitField0_ & 0x00008000) == 0x00008000)) {
+        output.writeInt64(16, reasmFails_);
+      }
+      if (((bitField0_ & 0x00010000) == 0x00010000)) {
+        output.writeInt64(17, fragOKs_);
+      }
+      if (((bitField0_ & 0x00020000) == 0x00020000)) {
+        output.writeInt64(18, fragFails_);
+      }
+      if (((bitField0_ & 0x00040000) == 0x00040000)) {
+        output.writeInt64(19, fragCreates_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(1, forwarding_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(2, defaultTTL_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(3, inReceives_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(4, inHdrErrors_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(5, inAddrErrors_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(6, forwDatagrams_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(7, inUnknownProtos_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(8, inDiscards_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(9, inDelivers_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(10, outRequests_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(11, outDiscards_);
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(12, outNoRoutes_);
+      }
+      if (((bitField0_ & 0x00001000) == 0x00001000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(13, reasmTimeout_);
+      }
+      if (((bitField0_ & 0x00002000) == 0x00002000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(14, reasmReqds_);
+      }
+      if (((bitField0_ & 0x00004000) == 0x00004000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(15, reasmOKs_);
+      }
+      if (((bitField0_ & 0x00008000) == 0x00008000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(16, reasmFails_);
+      }
+      if (((bitField0_ & 0x00010000) == 0x00010000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(17, fragOKs_);
+      }
+      if (((bitField0_ & 0x00020000) == 0x00020000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(18, fragFails_);
+      }
+      if (((bitField0_ & 0x00040000) == 0x00040000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(19, fragCreates_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.IpStatistics parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.IpStatistics parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.IpStatistics parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.IpStatistics parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.IpStatistics parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.IpStatistics parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.IpStatistics parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.IpStatistics parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.IpStatistics parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.IpStatistics parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.IpStatistics prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.IpStatistics}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.IpStatisticsOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_IpStatistics_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_IpStatistics_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.IpStatistics.class, org.apache.mesos.v1.Protos.IpStatistics.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.IpStatistics.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        forwarding_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        defaultTTL_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        inReceives_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        inHdrErrors_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        inAddrErrors_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000010);
+        forwDatagrams_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000020);
+        inUnknownProtos_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000040);
+        inDiscards_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000080);
+        inDelivers_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000100);
+        outRequests_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000200);
+        outDiscards_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000400);
+        outNoRoutes_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000800);
+        reasmTimeout_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00001000);
+        reasmReqds_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00002000);
+        reasmOKs_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00004000);
+        reasmFails_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00008000);
+        fragOKs_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00010000);
+        fragFails_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00020000);
+        fragCreates_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00040000);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_IpStatistics_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.IpStatistics getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.IpStatistics.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.IpStatistics build() {
+        org.apache.mesos.v1.Protos.IpStatistics result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.IpStatistics buildPartial() {
+        org.apache.mesos.v1.Protos.IpStatistics result = new org.apache.mesos.v1.Protos.IpStatistics(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.forwarding_ = forwarding_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.defaultTTL_ = defaultTTL_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.inReceives_ = inReceives_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.inHdrErrors_ = inHdrErrors_;
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.inAddrErrors_ = inAddrErrors_;
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        result.forwDatagrams_ = forwDatagrams_;
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        result.inUnknownProtos_ = inUnknownProtos_;
+        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+          to_bitField0_ |= 0x00000080;
+        }
+        result.inDiscards_ = inDiscards_;
+        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
+          to_bitField0_ |= 0x00000100;
+        }
+        result.inDelivers_ = inDelivers_;
+        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
+          to_bitField0_ |= 0x00000200;
+        }
+        result.outRequests_ = outRequests_;
+        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
+          to_bitField0_ |= 0x00000400;
+        }
+        result.outDiscards_ = outDiscards_;
+        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
+          to_bitField0_ |= 0x00000800;
+        }
+        result.outNoRoutes_ = outNoRoutes_;
+        if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
+          to_bitField0_ |= 0x00001000;
+        }
+        result.reasmTimeout_ = reasmTimeout_;
+        if (((from_bitField0_ & 0x00002000) == 0x00002000)) {
+          to_bitField0_ |= 0x00002000;
+        }
+        result.reasmReqds_ = reasmReqds_;
+        if (((from_bitField0_ & 0x00004000) == 0x00004000)) {
+          to_bitField0_ |= 0x00004000;
+        }
+        result.reasmOKs_ = reasmOKs_;
+        if (((from_bitField0_ & 0x00008000) == 0x00008000)) {
+          to_bitField0_ |= 0x00008000;
+        }
+        result.reasmFails_ = reasmFails_;
+        if (((from_bitField0_ & 0x00010000) == 0x00010000)) {
+          to_bitField0_ |= 0x00010000;
+        }
+        result.fragOKs_ = fragOKs_;
+        if (((from_bitField0_ & 0x00020000) == 0x00020000)) {
+          to_bitField0_ |= 0x00020000;
+        }
+        result.fragFails_ = fragFails_;
+        if (((from_bitField0_ & 0x00040000) == 0x00040000)) {
+          to_bitField0_ |= 0x00040000;
+        }
+        result.fragCreates_ = fragCreates_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.IpStatistics) {
+          return mergeFrom((org.apache.mesos.v1.Protos.IpStatistics)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.IpStatistics other) {
+        if (other == org.apache.mesos.v1.Protos.IpStatistics.getDefaultInstance()) return this;
+        if (other.hasForwarding()) {
+          setForwarding(other.getForwarding());
+        }
+        if (other.hasDefaultTTL()) {
+          setDefaultTTL(other.getDefaultTTL());
+        }
+        if (other.hasInReceives()) {
+          setInReceives(other.getInReceives());
+        }
+        if (other.hasInHdrErrors()) {
+          setInHdrErrors(other.getInHdrErrors());
+        }
+        if (other.hasInAddrErrors()) {
+          setInAddrErrors(other.getInAddrErrors());
+        }
+        if (other.hasForwDatagrams()) {
+          setForwDatagrams(other.getForwDatagrams());
+        }
+        if (other.hasInUnknownProtos()) {
+          setInUnknownProtos(other.getInUnknownProtos());
+        }
+        if (other.hasInDiscards()) {
+          setInDiscards(other.getInDiscards());
+        }
+        if (other.hasInDelivers()) {
+          setInDelivers(other.getInDelivers());
+        }
+        if (other.hasOutRequests()) {
+          setOutRequests(other.getOutRequests());
+        }
+        if (other.hasOutDiscards()) {
+          setOutDiscards(other.getOutDiscards());
+        }
+        if (other.hasOutNoRoutes()) {
+          setOutNoRoutes(other.getOutNoRoutes());
+        }
+        if (other.hasReasmTimeout()) {
+          setReasmTimeout(other.getReasmTimeout());
+        }
+        if (other.hasReasmReqds()) {
+          setReasmReqds(other.getReasmReqds());
+        }
+        if (other.hasReasmOKs()) {
+          setReasmOKs(other.getReasmOKs());
+        }
+        if (other.hasReasmFails()) {
+          setReasmFails(other.getReasmFails());
+        }
+        if (other.hasFragOKs()) {
+          setFragOKs(other.getFragOKs());
+        }
+        if (other.hasFragFails()) {
+          setFragFails(other.getFragFails());
+        }
+        if (other.hasFragCreates()) {
+          setFragCreates(other.getFragCreates());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.IpStatistics parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.IpStatistics) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional int64 Forwarding = 1;
+      private long forwarding_ ;
+      /**
+       * <code>optional int64 Forwarding = 1;</code>
+       */
+      public boolean hasForwarding() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional int64 Forwarding = 1;</code>
+       */
+      public long getForwarding() {
+        return forwarding_;
+      }
+      /**
+       * <code>optional int64 Forwarding = 1;</code>
+       */
+      public Builder setForwarding(long value) {
+        bitField0_ |= 0x00000001;
+        forwarding_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 Forwarding = 1;</code>
+       */
+      public Builder clearForwarding() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        forwarding_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 DefaultTTL = 2;
+      private long defaultTTL_ ;
+      /**
+       * <code>optional int64 DefaultTTL = 2;</code>
+       */
+      public boolean hasDefaultTTL() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional int64 DefaultTTL = 2;</code>
+       */
+      public long getDefaultTTL() {
+        return defaultTTL_;
+      }
+      /**
+       * <code>optional int64 DefaultTTL = 2;</code>
+       */
+      public Builder setDefaultTTL(long value) {
+        bitField0_ |= 0x00000002;
+        defaultTTL_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 DefaultTTL = 2;</code>
+       */
+      public Builder clearDefaultTTL() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        defaultTTL_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InReceives = 3;
+      private long inReceives_ ;
+      /**
+       * <code>optional int64 InReceives = 3;</code>
+       */
+      public boolean hasInReceives() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional int64 InReceives = 3;</code>
+       */
+      public long getInReceives() {
+        return inReceives_;
+      }
+      /**
+       * <code>optional int64 InReceives = 3;</code>
+       */
+      public Builder setInReceives(long value) {
+        bitField0_ |= 0x00000004;
+        inReceives_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InReceives = 3;</code>
+       */
+      public Builder clearInReceives() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        inReceives_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InHdrErrors = 4;
+      private long inHdrErrors_ ;
+      /**
+       * <code>optional int64 InHdrErrors = 4;</code>
+       */
+      public boolean hasInHdrErrors() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional int64 InHdrErrors = 4;</code>
+       */
+      public long getInHdrErrors() {
+        return inHdrErrors_;
+      }
+      /**
+       * <code>optional int64 InHdrErrors = 4;</code>
+       */
+      public Builder setInHdrErrors(long value) {
+        bitField0_ |= 0x00000008;
+        inHdrErrors_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InHdrErrors = 4;</code>
+       */
+      public Builder clearInHdrErrors() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        inHdrErrors_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InAddrErrors = 5;
+      private long inAddrErrors_ ;
+      /**
+       * <code>optional int64 InAddrErrors = 5;</code>
+       */
+      public boolean hasInAddrErrors() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional int64 InAddrErrors = 5;</code>
+       */
+      public long getInAddrErrors() {
+        return inAddrErrors_;
+      }
+      /**
+       * <code>optional int64 InAddrErrors = 5;</code>
+       */
+      public Builder setInAddrErrors(long value) {
+        bitField0_ |= 0x00000010;
+        inAddrErrors_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InAddrErrors = 5;</code>
+       */
+      public Builder clearInAddrErrors() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        inAddrErrors_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 ForwDatagrams = 6;
+      private long forwDatagrams_ ;
+      /**
+       * <code>optional int64 ForwDatagrams = 6;</code>
+       */
+      public boolean hasForwDatagrams() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional int64 ForwDatagrams = 6;</code>
+       */
+      public long getForwDatagrams() {
+        return forwDatagrams_;
+      }
+      /**
+       * <code>optional int64 ForwDatagrams = 6;</code>
+       */
+      public Builder setForwDatagrams(long value) {
+        bitField0_ |= 0x00000020;
+        forwDatagrams_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 ForwDatagrams = 6;</code>
+       */
+      public Builder clearForwDatagrams() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        forwDatagrams_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InUnknownProtos = 7;
+      private long inUnknownProtos_ ;
+      /**
+       * <code>optional int64 InUnknownProtos = 7;</code>
+       */
+      public boolean hasInUnknownProtos() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional int64 InUnknownProtos = 7;</code>
+       */
+      public long getInUnknownProtos() {
+        return inUnknownProtos_;
+      }
+      /**
+       * <code>optional int64 InUnknownProtos = 7;</code>
+       */
+      public Builder setInUnknownProtos(long value) {
+        bitField0_ |= 0x00000040;
+        inUnknownProtos_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InUnknownProtos = 7;</code>
+       */
+      public Builder clearInUnknownProtos() {
+        bitField0_ = (bitField0_ & ~0x00000040);
+        inUnknownProtos_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InDiscards = 8;
+      private long inDiscards_ ;
+      /**
+       * <code>optional int64 InDiscards = 8;</code>
+       */
+      public boolean hasInDiscards() {
+        return ((bitField0_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional int64 InDiscards = 8;</code>
+       */
+      public long getInDiscards() {
+        return inDiscards_;
+      }
+      /**
+       * <code>optional int64 InDiscards = 8;</code>
+       */
+      public Builder setInDiscards(long value) {
+        bitField0_ |= 0x00000080;
+        inDiscards_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InDiscards = 8;</code>
+       */
+      public Builder clearInDiscards() {
+        bitField0_ = (bitField0_ & ~0x00000080);
+        inDiscards_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InDelivers = 9;
+      private long inDelivers_ ;
+      /**
+       * <code>optional int64 InDelivers = 9;</code>
+       */
+      public boolean hasInDelivers() {
+        return ((bitField0_ & 0x00000100) == 0x00000100);
+      }
+      /**
+       * <code>optional int64 InDelivers = 9;</code>
+       */
+      public long getInDelivers() {
+        return inDelivers_;
+      }
+      /**
+       * <code>optional int64 InDelivers = 9;</code>
+       */
+      public Builder setInDelivers(long value) {
+        bitField0_ |= 0x00000100;
+        inDelivers_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InDelivers = 9;</code>
+       */
+      public Builder clearInDelivers() {
+        bitField0_ = (bitField0_ & ~0x00000100);
+        inDelivers_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 OutRequests = 10;
+      private long outRequests_ ;
+      /**
+       * <code>optional int64 OutRequests = 10;</code>
+       */
+      public boolean hasOutRequests() {
+        return ((bitField0_ & 0x00000200) == 0x00000200);
+      }
+      /**
+       * <code>optional int64 OutRequests = 10;</code>
+       */
+      public long getOutRequests() {
+        return outRequests_;
+      }
+      /**
+       * <code>optional int64 OutRequests = 10;</code>
+       */
+      public Builder setOutRequests(long value) {
+        bitField0_ |= 0x00000200;
+        outRequests_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 OutRequests = 10;</code>
+       */
+      public Builder clearOutRequests() {
+        bitField0_ = (bitField0_ & ~0x00000200);
+        outRequests_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 OutDiscards = 11;
+      private long outDiscards_ ;
+      /**
+       * <code>optional int64 OutDiscards = 11;</code>
+       */
+      public boolean hasOutDiscards() {
+        return ((bitField0_ & 0x00000400) == 0x00000400);
+      }
+      /**
+       * <code>optional int64 OutDiscards = 11;</code>
+       */
+      public long getOutDiscards() {
+        return outDiscards_;
+      }
+      /**
+       * <code>optional int64 OutDiscards = 11;</code>
+       */
+      public Builder setOutDiscards(long value) {
+        bitField0_ |= 0x00000400;
+        outDiscards_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 OutDiscards = 11;</code>
+       */
+      public Builder clearOutDiscards() {
+        bitField0_ = (bitField0_ & ~0x00000400);
+        outDiscards_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 OutNoRoutes = 12;
+      private long outNoRoutes_ ;
+      /**
+       * <code>optional int64 OutNoRoutes = 12;</code>
+       */
+      public boolean hasOutNoRoutes() {
+        return ((bitField0_ & 0x00000800) == 0x00000800);
+      }
+      /**
+       * <code>optional int64 OutNoRoutes = 12;</code>
+       */
+      public long getOutNoRoutes() {
+        return outNoRoutes_;
+      }
+      /**
+       * <code>optional int64 OutNoRoutes = 12;</code>
+       */
+      public Builder setOutNoRoutes(long value) {
+        bitField0_ |= 0x00000800;
+        outNoRoutes_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 OutNoRoutes = 12;</code>
+       */
+      public Builder clearOutNoRoutes() {
+        bitField0_ = (bitField0_ & ~0x00000800);
+        outNoRoutes_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 ReasmTimeout = 13;
+      private long reasmTimeout_ ;
+      /**
+       * <code>optional int64 ReasmTimeout = 13;</code>
+       */
+      public boolean hasReasmTimeout() {
+        return ((bitField0_ & 0x00001000) == 0x00001000);
+      }
+      /**
+       * <code>optional int64 ReasmTimeout = 13;</code>
+       */
+      public long getReasmTimeout() {
+        return reasmTimeout_;
+      }
+      /**
+       * <code>optional int64 ReasmTimeout = 13;</code>
+       */
+      public Builder setReasmTimeout(long value) {
+        bitField0_ |= 0x00001000;
+        reasmTimeout_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 ReasmTimeout = 13;</code>
+       */
+      public Builder clearReasmTimeout() {
+        bitField0_ = (bitField0_ & ~0x00001000);
+        reasmTimeout_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 ReasmReqds = 14;
+      private long reasmReqds_ ;
+      /**
+       * <code>optional int64 ReasmReqds = 14;</code>
+       */
+      public boolean hasReasmReqds() {
+        return ((bitField0_ & 0x00002000) == 0x00002000);
+      }
+      /**
+       * <code>optional int64 ReasmReqds = 14;</code>
+       */
+      public long getReasmReqds() {
+        return reasmReqds_;
+      }
+      /**
+       * <code>optional int64 ReasmReqds = 14;</code>
+       */
+      public Builder setReasmReqds(long value) {
+        bitField0_ |= 0x00002000;
+        reasmReqds_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 ReasmReqds = 14;</code>
+       */
+      public Builder clearReasmReqds() {
+        bitField0_ = (bitField0_ & ~0x00002000);
+        reasmReqds_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 ReasmOKs = 15;
+      private long reasmOKs_ ;
+      /**
+       * <code>optional int64 ReasmOKs = 15;</code>
+       */
+      public boolean hasReasmOKs() {
+        return ((bitField0_ & 0x00004000) == 0x00004000);
+      }
+      /**
+       * <code>optional int64 ReasmOKs = 15;</code>
+       */
+      public long getReasmOKs() {
+        return reasmOKs_;
+      }
+      /**
+       * <code>optional int64 ReasmOKs = 15;</code>
+       */
+      public Builder setReasmOKs(long value) {
+        bitField0_ |= 0x00004000;
+        reasmOKs_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 ReasmOKs = 15;</code>
+       */
+      public Builder clearReasmOKs() {
+        bitField0_ = (bitField0_ & ~0x00004000);
+        reasmOKs_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 ReasmFails = 16;
+      private long reasmFails_ ;
+      /**
+       * <code>optional int64 ReasmFails = 16;</code>
+       */
+      public boolean hasReasmFails() {
+        return ((bitField0_ & 0x00008000) == 0x00008000);
+      }
+      /**
+       * <code>optional int64 ReasmFails = 16;</code>
+       */
+      public long getReasmFails() {
+        return reasmFails_;
+      }
+      /**
+       * <code>optional int64 ReasmFails = 16;</code>
+       */
+      public Builder setReasmFails(long value) {
+        bitField0_ |= 0x00008000;
+        reasmFails_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 ReasmFails = 16;</code>
+       */
+      public Builder clearReasmFails() {
+        bitField0_ = (bitField0_ & ~0x00008000);
+        reasmFails_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 FragOKs = 17;
+      private long fragOKs_ ;
+      /**
+       * <code>optional int64 FragOKs = 17;</code>
+       */
+      public boolean hasFragOKs() {
+        return ((bitField0_ & 0x00010000) == 0x00010000);
+      }
+      /**
+       * <code>optional int64 FragOKs = 17;</code>
+       */
+      public long getFragOKs() {
+        return fragOKs_;
+      }
+      /**
+       * <code>optional int64 FragOKs = 17;</code>
+       */
+      public Builder setFragOKs(long value) {
+        bitField0_ |= 0x00010000;
+        fragOKs_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 FragOKs = 17;</code>
+       */
+      public Builder clearFragOKs() {
+        bitField0_ = (bitField0_ & ~0x00010000);
+        fragOKs_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 FragFails = 18;
+      private long fragFails_ ;
+      /**
+       * <code>optional int64 FragFails = 18;</code>
+       */
+      public boolean hasFragFails() {
+        return ((bitField0_ & 0x00020000) == 0x00020000);
+      }
+      /**
+       * <code>optional int64 FragFails = 18;</code>
+       */
+      public long getFragFails() {
+        return fragFails_;
+      }
+      /**
+       * <code>optional int64 FragFails = 18;</code>
+       */
+      public Builder setFragFails(long value) {
+        bitField0_ |= 0x00020000;
+        fragFails_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 FragFails = 18;</code>
+       */
+      public Builder clearFragFails() {
+        bitField0_ = (bitField0_ & ~0x00020000);
+        fragFails_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 FragCreates = 19;
+      private long fragCreates_ ;
+      /**
+       * <code>optional int64 FragCreates = 19;</code>
+       */
+      public boolean hasFragCreates() {
+        return ((bitField0_ & 0x00040000) == 0x00040000);
+      }
+      /**
+       * <code>optional int64 FragCreates = 19;</code>
+       */
+      public long getFragCreates() {
+        return fragCreates_;
+      }
+      /**
+       * <code>optional int64 FragCreates = 19;</code>
+       */
+      public Builder setFragCreates(long value) {
+        bitField0_ |= 0x00040000;
+        fragCreates_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 FragCreates = 19;</code>
+       */
+      public Builder clearFragCreates() {
+        bitField0_ = (bitField0_ & ~0x00040000);
+        fragCreates_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.IpStatistics)
+    }
+
+    static {
+      defaultInstance = new IpStatistics(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.IpStatistics)
+  }
+
+  public interface IcmpStatisticsOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional int64 InMsgs = 1;
+    /**
+     * <code>optional int64 InMsgs = 1;</code>
+     */
+    boolean hasInMsgs();
+    /**
+     * <code>optional int64 InMsgs = 1;</code>
+     */
+    long getInMsgs();
+
+    // optional int64 InErrors = 2;
+    /**
+     * <code>optional int64 InErrors = 2;</code>
+     */
+    boolean hasInErrors();
+    /**
+     * <code>optional int64 InErrors = 2;</code>
+     */
+    long getInErrors();
+
+    // optional int64 InCsumErrors = 3;
+    /**
+     * <code>optional int64 InCsumErrors = 3;</code>
+     */
+    boolean hasInCsumErrors();
+    /**
+     * <code>optional int64 InCsumErrors = 3;</code>
+     */
+    long getInCsumErrors();
+
+    // optional int64 InDestUnreachs = 4;
+    /**
+     * <code>optional int64 InDestUnreachs = 4;</code>
+     */
+    boolean hasInDestUnreachs();
+    /**
+     * <code>optional int64 InDestUnreachs = 4;</code>
+     */
+    long getInDestUnreachs();
+
+    // optional int64 InTimeExcds = 5;
+    /**
+     * <code>optional int64 InTimeExcds = 5;</code>
+     */
+    boolean hasInTimeExcds();
+    /**
+     * <code>optional int64 InTimeExcds = 5;</code>
+     */
+    long getInTimeExcds();
+
+    // optional int64 InParmProbs = 6;
+    /**
+     * <code>optional int64 InParmProbs = 6;</code>
+     */
+    boolean hasInParmProbs();
+    /**
+     * <code>optional int64 InParmProbs = 6;</code>
+     */
+    long getInParmProbs();
+
+    // optional int64 InSrcQuenchs = 7;
+    /**
+     * <code>optional int64 InSrcQuenchs = 7;</code>
+     */
+    boolean hasInSrcQuenchs();
+    /**
+     * <code>optional int64 InSrcQuenchs = 7;</code>
+     */
+    long getInSrcQuenchs();
+
+    // optional int64 InRedirects = 8;
+    /**
+     * <code>optional int64 InRedirects = 8;</code>
+     */
+    boolean hasInRedirects();
+    /**
+     * <code>optional int64 InRedirects = 8;</code>
+     */
+    long getInRedirects();
+
+    // optional int64 InEchos = 9;
+    /**
+     * <code>optional int64 InEchos = 9;</code>
+     */
+    boolean hasInEchos();
+    /**
+     * <code>optional int64 InEchos = 9;</code>
+     */
+    long getInEchos();
+
+    // optional int64 InEchoReps = 10;
+    /**
+     * <code>optional int64 InEchoReps = 10;</code>
+     */
+    boolean hasInEchoReps();
+    /**
+     * <code>optional int64 InEchoReps = 10;</code>
+     */
+    long getInEchoReps();
+
+    // optional int64 InTimestamps = 11;
+    /**
+     * <code>optional int64 InTimestamps = 11;</code>
+     */
+    boolean hasInTimestamps();
+    /**
+     * <code>optional int64 InTimestamps = 11;</code>
+     */
+    long getInTimestamps();
+
+    // optional int64 InTimestampReps = 12;
+    /**
+     * <code>optional int64 InTimestampReps = 12;</code>
+     */
+    boolean hasInTimestampReps();
+    /**
+     * <code>optional int64 InTimestampReps = 12;</code>
+     */
+    long getInTimestampReps();
+
+    // optional int64 InAddrMasks = 13;
+    /**
+     * <code>optional int64 InAddrMasks = 13;</code>
+     */
+    boolean hasInAddrMasks();
+    /**
+     * <code>optional int64 InAddrMasks = 13;</code>
+     */
+    long getInAddrMasks();
+
+    // optional int64 InAddrMaskReps = 14;
+    /**
+     * <code>optional int64 InAddrMaskReps = 14;</code>
+     */
+    boolean hasInAddrMaskReps();
+    /**
+     * <code>optional int64 InAddrMaskReps = 14;</code>
+     */
+    long getInAddrMaskReps();
+
+    // optional int64 OutMsgs = 15;
+    /**
+     * <code>optional int64 OutMsgs = 15;</code>
+     */
+    boolean hasOutMsgs();
+    /**
+     * <code>optional int64 OutMsgs = 15;</code>
+     */
+    long getOutMsgs();
+
+    // optional int64 OutErrors = 16;
+    /**
+     * <code>optional int64 OutErrors = 16;</code>
+     */
+    boolean hasOutErrors();
+    /**
+     * <code>optional int64 OutErrors = 16;</code>
+     */
+    long getOutErrors();
+
+    // optional int64 OutDestUnreachs = 17;
+    /**
+     * <code>optional int64 OutDestUnreachs = 17;</code>
+     */
+    boolean hasOutDestUnreachs();
+    /**
+     * <code>optional int64 OutDestUnreachs = 17;</code>
+     */
+    long getOutDestUnreachs();
+
+    // optional int64 OutTimeExcds = 18;
+    /**
+     * <code>optional int64 OutTimeExcds = 18;</code>
+     */
+    boolean hasOutTimeExcds();
+    /**
+     * <code>optional int64 OutTimeExcds = 18;</code>
+     */
+    long getOutTimeExcds();
+
+    // optional int64 OutParmProbs = 19;
+    /**
+     * <code>optional int64 OutParmProbs = 19;</code>
+     */
+    boolean hasOutParmProbs();
+    /**
+     * <code>optional int64 OutParmProbs = 19;</code>
+     */
+    long getOutParmProbs();
+
+    // optional int64 OutSrcQuenchs = 20;
+    /**
+     * <code>optional int64 OutSrcQuenchs = 20;</code>
+     */
+    boolean hasOutSrcQuenchs();
+    /**
+     * <code>optional int64 OutSrcQuenchs = 20;</code>
+     */
+    long getOutSrcQuenchs();
+
+    // optional int64 OutRedirects = 21;
+    /**
+     * <code>optional int64 OutRedirects = 21;</code>
+     */
+    boolean hasOutRedirects();
+    /**
+     * <code>optional int64 OutRedirects = 21;</code>
+     */
+    long getOutRedirects();
+
+    // optional int64 OutEchos = 22;
+    /**
+     * <code>optional int64 OutEchos = 22;</code>
+     */
+    boolean hasOutEchos();
+    /**
+     * <code>optional int64 OutEchos = 22;</code>
+     */
+    long getOutEchos();
+
+    // optional int64 OutEchoReps = 23;
+    /**
+     * <code>optional int64 OutEchoReps = 23;</code>
+     */
+    boolean hasOutEchoReps();
+    /**
+     * <code>optional int64 OutEchoReps = 23;</code>
+     */
+    long getOutEchoReps();
+
+    // optional int64 OutTimestamps = 24;
+    /**
+     * <code>optional int64 OutTimestamps = 24;</code>
+     */
+    boolean hasOutTimestamps();
+    /**
+     * <code>optional int64 OutTimestamps = 24;</code>
+     */
+    long getOutTimestamps();
+
+    // optional int64 OutTimestampReps = 25;
+    /**
+     * <code>optional int64 OutTimestampReps = 25;</code>
+     */
+    boolean hasOutTimestampReps();
+    /**
+     * <code>optional int64 OutTimestampReps = 25;</code>
+     */
+    long getOutTimestampReps();
+
+    // optional int64 OutAddrMasks = 26;
+    /**
+     * <code>optional int64 OutAddrMasks = 26;</code>
+     */
+    boolean hasOutAddrMasks();
+    /**
+     * <code>optional int64 OutAddrMasks = 26;</code>
+     */
+    long getOutAddrMasks();
+
+    // optional int64 OutAddrMaskReps = 27;
+    /**
+     * <code>optional int64 OutAddrMaskReps = 27;</code>
+     */
+    boolean hasOutAddrMaskReps();
+    /**
+     * <code>optional int64 OutAddrMaskReps = 27;</code>
+     */
+    long getOutAddrMaskReps();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.IcmpStatistics}
+   */
+  public static final class IcmpStatistics extends
+      com.google.protobuf.GeneratedMessage
+      implements IcmpStatisticsOrBuilder {
+    // Use IcmpStatistics.newBuilder() to construct.
+    private IcmpStatistics(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private IcmpStatistics(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final IcmpStatistics defaultInstance;
+    public static IcmpStatistics getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public IcmpStatistics getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private IcmpStatistics(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 8: {
+              bitField0_ |= 0x00000001;
+              inMsgs_ = input.readInt64();
+              break;
+            }
+            case 16: {
+              bitField0_ |= 0x00000002;
+              inErrors_ = input.readInt64();
+              break;
+            }
+            case 24: {
+              bitField0_ |= 0x00000004;
+              inCsumErrors_ = input.readInt64();
+              break;
+            }
+            case 32: {
+              bitField0_ |= 0x00000008;
+              inDestUnreachs_ = input.readInt64();
+              break;
+            }
+            case 40: {
+              bitField0_ |= 0x00000010;
+              inTimeExcds_ = input.readInt64();
+              break;
+            }
+            case 48: {
+              bitField0_ |= 0x00000020;
+              inParmProbs_ = input.readInt64();
+              break;
+            }
+            case 56: {
+              bitField0_ |= 0x00000040;
+              inSrcQuenchs_ = input.readInt64();
+              break;
+            }
+            case 64: {
+              bitField0_ |= 0x00000080;
+              inRedirects_ = input.readInt64();
+              break;
+            }
+            case 72: {
+              bitField0_ |= 0x00000100;
+              inEchos_ = input.readInt64();
+              break;
+            }
+            case 80: {
+              bitField0_ |= 0x00000200;
+              inEchoReps_ = input.readInt64();
+              break;
+            }
+            case 88: {
+              bitField0_ |= 0x00000400;
+              inTimestamps_ = input.readInt64();
+              break;
+            }
+            case 96: {
+              bitField0_ |= 0x00000800;
+              inTimestampReps_ = input.readInt64();
+              break;
+            }
+            case 104: {
+              bitField0_ |= 0x00001000;
+              inAddrMasks_ = input.readInt64();
+              break;
+            }
+            case 112: {
+              bitField0_ |= 0x00002000;
+              inAddrMaskReps_ = input.readInt64();
+              break;
+            }
+            case 120: {
+              bitField0_ |= 0x00004000;
+              outMsgs_ = input.readInt64();
+              break;
+            }
+            case 128: {
+              bitField0_ |= 0x00008000;
+              outErrors_ = input.readInt64();
+              break;
+            }
+            case 136: {
+              bitField0_ |= 0x00010000;
+              outDestUnreachs_ = input.readInt64();
+              break;
+            }
+            case 144: {
+              bitField0_ |= 0x00020000;
+              outTimeExcds_ = input.readInt64();
+              break;
+            }
+            case 152: {
+              bitField0_ |= 0x00040000;
+              outParmProbs_ = input.readInt64();
+              break;
+            }
+            case 160: {
+              bitField0_ |= 0x00080000;
+              outSrcQuenchs_ = input.readInt64();
+              break;
+            }
+            case 168: {
+              bitField0_ |= 0x00100000;
+              outRedirects_ = input.readInt64();
+              break;
+            }
+            case 176: {
+              bitField0_ |= 0x00200000;
+              outEchos_ = input.readInt64();
+              break;
+            }
+            case 184: {
+              bitField0_ |= 0x00400000;
+              outEchoReps_ = input.readInt64();
+              break;
+            }
+            case 192: {
+              bitField0_ |= 0x00800000;
+              outTimestamps_ = input.readInt64();
+              break;
+            }
+            case 200: {
+              bitField0_ |= 0x01000000;
+              outTimestampReps_ = input.readInt64();
+              break;
+            }
+            case 208: {
+              bitField0_ |= 0x02000000;
+              outAddrMasks_ = input.readInt64();
+              break;
+            }
+            case 216: {
+              bitField0_ |= 0x04000000;
+              outAddrMaskReps_ = input.readInt64();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_IcmpStatistics_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_IcmpStatistics_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.IcmpStatistics.class, org.apache.mesos.v1.Protos.IcmpStatistics.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<IcmpStatistics> PARSER =
+        new com.google.protobuf.AbstractParser<IcmpStatistics>() {
+      public IcmpStatistics parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new IcmpStatistics(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<IcmpStatistics> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // optional int64 InMsgs = 1;
+    public static final int INMSGS_FIELD_NUMBER = 1;
+    private long inMsgs_;
+    /**
+     * <code>optional int64 InMsgs = 1;</code>
+     */
+    public boolean hasInMsgs() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional int64 InMsgs = 1;</code>
+     */
+    public long getInMsgs() {
+      return inMsgs_;
+    }
+
+    // optional int64 InErrors = 2;
+    public static final int INERRORS_FIELD_NUMBER = 2;
+    private long inErrors_;
+    /**
+     * <code>optional int64 InErrors = 2;</code>
+     */
+    public boolean hasInErrors() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional int64 InErrors = 2;</code>
+     */
+    public long getInErrors() {
+      return inErrors_;
+    }
+
+    // optional int64 InCsumErrors = 3;
+    public static final int INCSUMERRORS_FIELD_NUMBER = 3;
+    private long inCsumErrors_;
+    /**
+     * <code>optional int64 InCsumErrors = 3;</code>
+     */
+    public boolean hasInCsumErrors() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional int64 InCsumErrors = 3;</code>
+     */
+    public long getInCsumErrors() {
+      return inCsumErrors_;
+    }
+
+    // optional int64 InDestUnreachs = 4;
+    public static final int INDESTUNREACHS_FIELD_NUMBER = 4;
+    private long inDestUnreachs_;
+    /**
+     * <code>optional int64 InDestUnreachs = 4;</code>
+     */
+    public boolean hasInDestUnreachs() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional int64 InDestUnreachs = 4;</code>
+     */
+    public long getInDestUnreachs() {
+      return inDestUnreachs_;
+    }
+
+    // optional int64 InTimeExcds = 5;
+    public static final int INTIMEEXCDS_FIELD_NUMBER = 5;
+    private long inTimeExcds_;
+    /**
+     * <code>optional int64 InTimeExcds = 5;</code>
+     */
+    public boolean hasInTimeExcds() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional int64 InTimeExcds = 5;</code>
+     */
+    public long getInTimeExcds() {
+      return inTimeExcds_;
+    }
+
+    // optional int64 InParmProbs = 6;
+    public static final int INPARMPROBS_FIELD_NUMBER = 6;
+    private long inParmProbs_;
+    /**
+     * <code>optional int64 InParmProbs = 6;</code>
+     */
+    public boolean hasInParmProbs() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional int64 InParmProbs = 6;</code>
+     */
+    public long getInParmProbs() {
+      return inParmProbs_;
+    }
+
+    // optional int64 InSrcQuenchs = 7;
+    public static final int INSRCQUENCHS_FIELD_NUMBER = 7;
+    private long inSrcQuenchs_;
+    /**
+     * <code>optional int64 InSrcQuenchs = 7;</code>
+     */
+    public boolean hasInSrcQuenchs() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional int64 InSrcQuenchs = 7;</code>
+     */
+    public long getInSrcQuenchs() {
+      return inSrcQuenchs_;
+    }
+
+    // optional int64 InRedirects = 8;
+    public static final int INREDIRECTS_FIELD_NUMBER = 8;
+    private long inRedirects_;
+    /**
+     * <code>optional int64 InRedirects = 8;</code>
+     */
+    public boolean hasInRedirects() {
+      return ((bitField0_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional int64 InRedirects = 8;</code>
+     */
+    public long getInRedirects() {
+      return inRedirects_;
+    }
+
+    // optional int64 InEchos = 9;
+    public static final int INECHOS_FIELD_NUMBER = 9;
+    private long inEchos_;
+    /**
+     * <code>optional int64 InEchos = 9;</code>
+     */
+    public boolean hasInEchos() {
+      return ((bitField0_ & 0x00000100) == 0x00000100);
+    }
+    /**
+     * <code>optional int64 InEchos = 9;</code>
+     */
+    public long getInEchos() {
+      return inEchos_;
+    }
+
+    // optional int64 InEchoReps = 10;
+    public static final int INECHOREPS_FIELD_NUMBER = 10;
+    private long inEchoReps_;
+    /**
+     * <code>optional int64 InEchoReps = 10;</code>
+     */
+    public boolean hasInEchoReps() {
+      return ((bitField0_ & 0x00000200) == 0x00000200);
+    }
+    /**
+     * <code>optional int64 InEchoReps = 10;</code>
+     */
+    public long getInEchoReps() {
+      return inEchoReps_;
+    }
+
+    // optional int64 InTimestamps = 11;
+    public static final int INTIMESTAMPS_FIELD_NUMBER = 11;
+    private long inTimestamps_;
+    /**
+     * <code>optional int64 InTimestamps = 11;</code>
+     */
+    public boolean hasInTimestamps() {
+      return ((bitField0_ & 0x00000400) == 0x00000400);
+    }
+    /**
+     * <code>optional int64 InTimestamps = 11;</code>
+     */
+    public long getInTimestamps() {
+      return inTimestamps_;
+    }
+
+    // optional int64 InTimestampReps = 12;
+    public static final int INTIMESTAMPREPS_FIELD_NUMBER = 12;
+    private long inTimestampReps_;
+    /**
+     * <code>optional int64 InTimestampReps = 12;</code>
+     */
+    public boolean hasInTimestampReps() {
+      return ((bitField0_ & 0x00000800) == 0x00000800);
+    }
+    /**
+     * <code>optional int64 InTimestampReps = 12;</code>
+     */
+    public long getInTimestampReps() {
+      return inTimestampReps_;
+    }
+
+    // optional int64 InAddrMasks = 13;
+    public static final int INADDRMASKS_FIELD_NUMBER = 13;
+    private long inAddrMasks_;
+    /**
+     * <code>optional int64 InAddrMasks = 13;</code>
+     */
+    public boolean hasInAddrMasks() {
+      return ((bitField0_ & 0x00001000) == 0x00001000);
+    }
+    /**
+     * <code>optional int64 InAddrMasks = 13;</code>
+     */
+    public long getInAddrMasks() {
+      return inAddrMasks_;
+    }
+
+    // optional int64 InAddrMaskReps = 14;
+    public static final int INADDRMASKREPS_FIELD_NUMBER = 14;
+    private long inAddrMaskReps_;
+    /**
+     * <code>optional int64 InAddrMaskReps = 14;</code>
+     */
+    public boolean hasInAddrMaskReps() {
+      return ((bitField0_ & 0x00002000) == 0x00002000);
+    }
+    /**
+     * <code>optional int64 InAddrMaskReps = 14;</code>
+     */
+    public long getInAddrMaskReps() {
+      return inAddrMaskReps_;
+    }
+
+    // optional int64 OutMsgs = 15;
+    public static final int OUTMSGS_FIELD_NUMBER = 15;
+    private long outMsgs_;
+    /**
+     * <code>optional int64 OutMsgs = 15;</code>
+     */
+    public boolean hasOutMsgs() {
+      return ((bitField0_ & 0x00004000) == 0x00004000);
+    }
+    /**
+     * <code>optional int64 OutMsgs = 15;</code>
+     */
+    public long getOutMsgs() {
+      return outMsgs_;
+    }
+
+    // optional int64 OutErrors = 16;
+    public static final int OUTERRORS_FIELD_NUMBER = 16;
+    private long outErrors_;
+    /**
+     * <code>optional int64 OutErrors = 16;</code>
+     */
+    public boolean hasOutErrors() {
+      return ((bitField0_ & 0x00008000) == 0x00008000);
+    }
+    /**
+     * <code>optional int64 OutErrors = 16;</code>
+     */
+    public long getOutErrors() {
+      return outErrors_;
+    }
+
+    // optional int64 OutDestUnreachs = 17;
+    public static final int OUTDESTUNREACHS_FIELD_NUMBER = 17;
+    private long outDestUnreachs_;
+    /**
+     * <code>optional int64 OutDestUnreachs = 17;</code>
+     */
+    public boolean hasOutDestUnreachs() {
+      return ((bitField0_ & 0x00010000) == 0x00010000);
+    }
+    /**
+     * <code>optional int64 OutDestUnreachs = 17;</code>
+     */
+    public long getOutDestUnreachs() {
+      return outDestUnreachs_;
+    }
+
+    // optional int64 OutTimeExcds = 18;
+    public static final int OUTTIMEEXCDS_FIELD_NUMBER = 18;
+    private long outTimeExcds_;
+    /**
+     * <code>optional int64 OutTimeExcds = 18;</code>
+     */
+    public boolean hasOutTimeExcds() {
+      return ((bitField0_ & 0x00020000) == 0x00020000);
+    }
+    /**
+     * <code>optional int64 OutTimeExcds = 18;</code>
+     */
+    public long getOutTimeExcds() {
+      return outTimeExcds_;
+    }
+
+    // optional int64 OutParmProbs = 19;
+    public static final int OUTPARMPROBS_FIELD_NUMBER = 19;
+    private long outParmProbs_;
+    /**
+     * <code>optional int64 OutParmProbs = 19;</code>
+     */
+    public boolean hasOutParmProbs() {
+      return ((bitField0_ & 0x00040000) == 0x00040000);
+    }
+    /**
+     * <code>optional int64 OutParmProbs = 19;</code>
+     */
+    public long getOutParmProbs() {
+      return outParmProbs_;
+    }
+
+    // optional int64 OutSrcQuenchs = 20;
+    public static final int OUTSRCQUENCHS_FIELD_NUMBER = 20;
+    private long outSrcQuenchs_;
+    /**
+     * <code>optional int64 OutSrcQuenchs = 20;</code>
+     */
+    public boolean hasOutSrcQuenchs() {
+      return ((bitField0_ & 0x00080000) == 0x00080000);
+    }
+    /**
+     * <code>optional int64 OutSrcQuenchs = 20;</code>
+     */
+    public long getOutSrcQuenchs() {
+      return outSrcQuenchs_;
+    }
+
+    // optional int64 OutRedirects = 21;
+    public static final int OUTREDIRECTS_FIELD_NUMBER = 21;
+    private long outRedirects_;
+    /**
+     * <code>optional int64 OutRedirects = 21;</code>
+     */
+    public boolean hasOutRedirects() {
+      return ((bitField0_ & 0x00100000) == 0x00100000);
+    }
+    /**
+     * <code>optional int64 OutRedirects = 21;</code>
+     */
+    public long getOutRedirects() {
+      return outRedirects_;
+    }
+
+    // optional int64 OutEchos = 22;
+    public static final int OUTECHOS_FIELD_NUMBER = 22;
+    private long outEchos_;
+    /**
+     * <code>optional int64 OutEchos = 22;</code>
+     */
+    public boolean hasOutEchos() {
+      return ((bitField0_ & 0x00200000) == 0x00200000);
+    }
+    /**
+     * <code>optional int64 OutEchos = 22;</code>
+     */
+    public long getOutEchos() {
+      return outEchos_;
+    }
+
+    // optional int64 OutEchoReps = 23;
+    public static final int OUTECHOREPS_FIELD_NUMBER = 23;
+    private long outEchoReps_;
+    /**
+     * <code>optional int64 OutEchoReps = 23;</code>
+     */
+    public boolean hasOutEchoReps() {
+      return ((bitField0_ & 0x00400000) == 0x00400000);
+    }
+    /**
+     * <code>optional int64 OutEchoReps = 23;</code>
+     */
+    public long getOutEchoReps() {
+      return outEchoReps_;
+    }
+
+    // optional int64 OutTimestamps = 24;
+    public static final int OUTTIMESTAMPS_FIELD_NUMBER = 24;
+    private long outTimestamps_;
+    /**
+     * <code>optional int64 OutTimestamps = 24;</code>
+     */
+    public boolean hasOutTimestamps() {
+      return ((bitField0_ & 0x00800000) == 0x00800000);
+    }
+    /**
+     * <code>optional int64 OutTimestamps = 24;</code>
+     */
+    public long getOutTimestamps() {
+      return outTimestamps_;
+    }
+
+    // optional int64 OutTimestampReps = 25;
+    public static final int OUTTIMESTAMPREPS_FIELD_NUMBER = 25;
+    private long outTimestampReps_;
+    /**
+     * <code>optional int64 OutTimestampReps = 25;</code>
+     */
+    public boolean hasOutTimestampReps() {
+      return ((bitField0_ & 0x01000000) == 0x01000000);
+    }
+    /**
+     * <code>optional int64 OutTimestampReps = 25;</code>
+     */
+    public long getOutTimestampReps() {
+      return outTimestampReps_;
+    }
+
+    // optional int64 OutAddrMasks = 26;
+    public static final int OUTADDRMASKS_FIELD_NUMBER = 26;
+    private long outAddrMasks_;
+    /**
+     * <code>optional int64 OutAddrMasks = 26;</code>
+     */
+    public boolean hasOutAddrMasks() {
+      return ((bitField0_ & 0x02000000) == 0x02000000);
+    }
+    /**
+     * <code>optional int64 OutAddrMasks = 26;</code>
+     */
+    public long getOutAddrMasks() {
+      return outAddrMasks_;
+    }
+
+    // optional int64 OutAddrMaskReps = 27;
+    public static final int OUTADDRMASKREPS_FIELD_NUMBER = 27;
+    private long outAddrMaskReps_;
+    /**
+     * <code>optional int64 OutAddrMaskReps = 27;</code>
+     */
+    public boolean hasOutAddrMaskReps() {
+      return ((bitField0_ & 0x04000000) == 0x04000000);
+    }
+    /**
+     * <code>optional int64 OutAddrMaskReps = 27;</code>
+     */
+    public long getOutAddrMaskReps() {
+      return outAddrMaskReps_;
+    }
+
+    private void initFields() {
+      inMsgs_ = 0L;
+      inErrors_ = 0L;
+      inCsumErrors_ = 0L;
+      inDestUnreachs_ = 0L;
+      inTimeExcds_ = 0L;
+      inParmProbs_ = 0L;
+      inSrcQuenchs_ = 0L;
+      inRedirects_ = 0L;
+      inEchos_ = 0L;
+      inEchoReps_ = 0L;
+      inTimestamps_ = 0L;
+      inTimestampReps_ = 0L;
+      inAddrMasks_ = 0L;
+      inAddrMaskReps_ = 0L;
+      outMsgs_ = 0L;
+      outErrors_ = 0L;
+      outDestUnreachs_ = 0L;
+      outTimeExcds_ = 0L;
+      outParmProbs_ = 0L;
+      outSrcQuenchs_ = 0L;
+      outRedirects_ = 0L;
+      outEchos_ = 0L;
+      outEchoReps_ = 0L;
+      outTimestamps_ = 0L;
+      outTimestampReps_ = 0L;
+      outAddrMasks_ = 0L;
+      outAddrMaskReps_ = 0L;
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeInt64(1, inMsgs_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeInt64(2, inErrors_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeInt64(3, inCsumErrors_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeInt64(4, inDestUnreachs_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeInt64(5, inTimeExcds_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeInt64(6, inParmProbs_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeInt64(7, inSrcQuenchs_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        output.writeInt64(8, inRedirects_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        output.writeInt64(9, inEchos_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        output.writeInt64(10, inEchoReps_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        output.writeInt64(11, inTimestamps_);
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        output.writeInt64(12, inTimestampReps_);
+      }
+      if (((bitField0_ & 0x00001000) == 0x00001000)) {
+        output.writeInt64(13, inAddrMasks_);
+      }
+      if (((bitField0_ & 0x00002000) == 0x00002000)) {
+        output.writeInt64(14, inAddrMaskReps_);
+      }
+      if (((bitField0_ & 0x00004000) == 0x00004000)) {
+        output.writeInt64(15, outMsgs_);
+      }
+      if (((bitField0_ & 0x00008000) == 0x00008000)) {
+        output.writeInt64(16, outErrors_);
+      }
+      if (((bitField0_ & 0x00010000) == 0x00010000)) {
+        output.writeInt64(17, outDestUnreachs_);
+      }
+      if (((bitField0_ & 0x00020000) == 0x00020000)) {
+        output.writeInt64(18, outTimeExcds_);
+      }
+      if (((bitField0_ & 0x00040000) == 0x00040000)) {
+        output.writeInt64(19, outParmProbs_);
+      }
+      if (((bitField0_ & 0x00080000) == 0x00080000)) {
+        output.writeInt64(20, outSrcQuenchs_);
+      }
+      if (((bitField0_ & 0x00100000) == 0x00100000)) {
+        output.writeInt64(21, outRedirects_);
+      }
+      if (((bitField0_ & 0x00200000) == 0x00200000)) {
+        output.writeInt64(22, outEchos_);
+      }
+      if (((bitField0_ & 0x00400000) == 0x00400000)) {
+        output.writeInt64(23, outEchoReps_);
+      }
+      if (((bitField0_ & 0x00800000) == 0x00800000)) {
+        output.writeInt64(24, outTimestamps_);
+      }
+      if (((bitField0_ & 0x01000000) == 0x01000000)) {
+        output.writeInt64(25, outTimestampReps_);
+      }
+      if (((bitField0_ & 0x02000000) == 0x02000000)) {
+        output.writeInt64(26, outAddrMasks_);
+      }
+      if (((bitField0_ & 0x04000000) == 0x04000000)) {
+        output.writeInt64(27, outAddrMaskReps_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(1, inMsgs_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(2, inErrors_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(3, inCsumErrors_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(4, inDestUnreachs_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(5, inTimeExcds_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(6, inParmProbs_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(7, inSrcQuenchs_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(8, inRedirects_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(9, inEchos_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(10, inEchoReps_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(11, inTimestamps_);
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(12, inTimestampReps_);
+      }
+      if (((bitField0_ & 0x00001000) == 0x00001000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(13, inAddrMasks_);
+      }
+      if (((bitField0_ & 0x00002000) == 0x00002000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(14, inAddrMaskReps_);
+      }
+      if (((bitField0_ & 0x00004000) == 0x00004000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(15, outMsgs_);
+      }
+      if (((bitField0_ & 0x00008000) == 0x00008000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(16, outErrors_);
+      }
+      if (((bitField0_ & 0x00010000) == 0x00010000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(17, outDestUnreachs_);
+      }
+      if (((bitField0_ & 0x00020000) == 0x00020000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(18, outTimeExcds_);
+      }
+      if (((bitField0_ & 0x00040000) == 0x00040000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(19, outParmProbs_);
+      }
+      if (((bitField0_ & 0x00080000) == 0x00080000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(20, outSrcQuenchs_);
+      }
+      if (((bitField0_ & 0x00100000) == 0x00100000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(21, outRedirects_);
+      }
+      if (((bitField0_ & 0x00200000) == 0x00200000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(22, outEchos_);
+      }
+      if (((bitField0_ & 0x00400000) == 0x00400000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(23, outEchoReps_);
+      }
+      if (((bitField0_ & 0x00800000) == 0x00800000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(24, outTimestamps_);
+      }
+      if (((bitField0_ & 0x01000000) == 0x01000000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(25, outTimestampReps_);
+      }
+      if (((bitField0_ & 0x02000000) == 0x02000000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(26, outAddrMasks_);
+      }
+      if (((bitField0_ & 0x04000000) == 0x04000000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(27, outAddrMaskReps_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.IcmpStatistics parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.IcmpStatistics parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.IcmpStatistics parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.IcmpStatistics parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.IcmpStatistics parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.IcmpStatistics parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.IcmpStatistics parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.IcmpStatistics parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.IcmpStatistics parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.IcmpStatistics parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.IcmpStatistics prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.IcmpStatistics}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.IcmpStatisticsOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_IcmpStatistics_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_IcmpStatistics_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.IcmpStatistics.class, org.apache.mesos.v1.Protos.IcmpStatistics.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.IcmpStatistics.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        inMsgs_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        inErrors_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        inCsumErrors_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        inDestUnreachs_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        inTimeExcds_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000010);
+        inParmProbs_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000020);
+        inSrcQuenchs_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000040);
+        inRedirects_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000080);
+        inEchos_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000100);
+        inEchoReps_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000200);
+        inTimestamps_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000400);
+        inTimestampReps_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000800);
+        inAddrMasks_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00001000);
+        inAddrMaskReps_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00002000);
+        outMsgs_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00004000);
+        outErrors_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00008000);
+        outDestUnreachs_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00010000);
+        outTimeExcds_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00020000);
+        outParmProbs_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00040000);
+        outSrcQuenchs_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00080000);
+        outRedirects_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00100000);
+        outEchos_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00200000);
+        outEchoReps_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00400000);
+        outTimestamps_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00800000);
+        outTimestampReps_ = 0L;
+        bitField0_ = (bitField0_ & ~0x01000000);
+        outAddrMasks_ = 0L;
+        bitField0_ = (bitField0_ & ~0x02000000);
+        outAddrMaskReps_ = 0L;
+        bitField0_ = (bitField0_ & ~0x04000000);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_IcmpStatistics_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.IcmpStatistics getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.IcmpStatistics.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.IcmpStatistics build() {
+        org.apache.mesos.v1.Protos.IcmpStatistics result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.IcmpStatistics buildPartial() {
+        org.apache.mesos.v1.Protos.IcmpStatistics result = new org.apache.mesos.v1.Protos.IcmpStatistics(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.inMsgs_ = inMsgs_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.inErrors_ = inErrors_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.inCsumErrors_ = inCsumErrors_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.inDestUnreachs_ = inDestUnreachs_;
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.inTimeExcds_ = inTimeExcds_;
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        result.inParmProbs_ = inParmProbs_;
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        result.inSrcQuenchs_ = inSrcQuenchs_;
+        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+          to_bitField0_ |= 0x00000080;
+        }
+        result.inRedirects_ = inRedirects_;
+        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
+          to_bitField0_ |= 0x00000100;
+        }
+        result.inEchos_ = inEchos_;
+        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
+          to_bitField0_ |= 0x00000200;
+        }
+        result.inEchoReps_ = inEchoReps_;
+        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
+          to_bitField0_ |= 0x00000400;
+        }
+        result.inTimestamps_ = inTimestamps_;
+        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
+          to_bitField0_ |= 0x00000800;
+        }
+        result.inTimestampReps_ = inTimestampReps_;
+        if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
+          to_bitField0_ |= 0x00001000;
+        }
+        result.inAddrMasks_ = inAddrMasks_;
+        if (((from_bitField0_ & 0x00002000) == 0x00002000)) {
+          to_bitField0_ |= 0x00002000;
+        }
+        result.inAddrMaskReps_ = inAddrMaskReps_;
+        if (((from_bitField0_ & 0x00004000) == 0x00004000)) {
+          to_bitField0_ |= 0x00004000;
+        }
+        result.outMsgs_ = outMsgs_;
+        if (((from_bitField0_ & 0x00008000) == 0x00008000)) {
+          to_bitField0_ |= 0x00008000;
+        }
+        result.outErrors_ = outErrors_;
+        if (((from_bitField0_ & 0x00010000) == 0x00010000)) {
+          to_bitField0_ |= 0x00010000;
+        }
+        result.outDestUnreachs_ = outDestUnreachs_;
+        if (((from_bitField0_ & 0x00020000) == 0x00020000)) {
+          to_bitField0_ |= 0x00020000;
+        }
+        result.outTimeExcds_ = outTimeExcds_;
+        if (((from_bitField0_ & 0x00040000) == 0x00040000)) {
+          to_bitField0_ |= 0x00040000;
+        }
+        result.outParmProbs_ = outParmProbs_;
+        if (((from_bitField0_ & 0x00080000) == 0x00080000)) {
+          to_bitField0_ |= 0x00080000;
+        }
+        result.outSrcQuenchs_ = outSrcQuenchs_;
+        if (((from_bitField0_ & 0x00100000) == 0x00100000)) {
+          to_bitField0_ |= 0x00100000;
+        }
+        result.outRedirects_ = outRedirects_;
+        if (((from_bitField0_ & 0x00200000) == 0x00200000)) {
+          to_bitField0_ |= 0x00200000;
+        }
+        result.outEchos_ = outEchos_;
+        if (((from_bitField0_ & 0x00400000) == 0x00400000)) {
+          to_bitField0_ |= 0x00400000;
+        }
+        result.outEchoReps_ = outEchoReps_;
+        if (((from_bitField0_ & 0x00800000) == 0x00800000)) {
+          to_bitField0_ |= 0x00800000;
+        }
+        result.outTimestamps_ = outTimestamps_;
+        if (((from_bitField0_ & 0x01000000) == 0x01000000)) {
+          to_bitField0_ |= 0x01000000;
+        }
+        result.outTimestampReps_ = outTimestampReps_;
+        if (((from_bitField0_ & 0x02000000) == 0x02000000)) {
+          to_bitField0_ |= 0x02000000;
+        }
+        result.outAddrMasks_ = outAddrMasks_;
+        if (((from_bitField0_ & 0x04000000) == 0x04000000)) {
+          to_bitField0_ |= 0x04000000;
+        }
+        result.outAddrMaskReps_ = outAddrMaskReps_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.IcmpStatistics) {
+          return mergeFrom((org.apache.mesos.v1.Protos.IcmpStatistics)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.IcmpStatistics other) {
+        if (other == org.apache.mesos.v1.Protos.IcmpStatistics.getDefaultInstance()) return this;
+        if (other.hasInMsgs()) {
+          setInMsgs(other.getInMsgs());
+        }
+        if (other.hasInErrors()) {
+          setInErrors(other.getInErrors());
+        }
+        if (other.hasInCsumErrors()) {
+          setInCsumErrors(other.getInCsumErrors());
+        }
+        if (other.hasInDestUnreachs()) {
+          setInDestUnreachs(other.getInDestUnreachs());
+        }
+        if (other.hasInTimeExcds()) {
+          setInTimeExcds(other.getInTimeExcds());
+        }
+        if (other.hasInParmProbs()) {
+          setInParmProbs(other.getInParmProbs());
+        }
+        if (other.hasInSrcQuenchs()) {
+          setInSrcQuenchs(other.getInSrcQuenchs());
+        }
+        if (other.hasInRedirects()) {
+          setInRedirects(other.getInRedirects());
+        }
+        if (other.hasInEchos()) {
+          setInEchos(other.getInEchos());
+        }
+        if (other.hasInEchoReps()) {
+          setInEchoReps(other.getInEchoReps());
+        }
+        if (other.hasInTimestamps()) {
+          setInTimestamps(other.getInTimestamps());
+        }
+        if (other.hasInTimestampReps()) {
+          setInTimestampReps(other.getInTimestampReps());
+        }
+        if (other.hasInAddrMasks()) {
+          setInAddrMasks(other.getInAddrMasks());
+        }
+        if (other.hasInAddrMaskReps()) {
+          setInAddrMaskReps(other.getInAddrMaskReps());
+        }
+        if (other.hasOutMsgs()) {
+          setOutMsgs(other.getOutMsgs());
+        }
+        if (other.hasOutErrors()) {
+          setOutErrors(other.getOutErrors());
+        }
+        if (other.hasOutDestUnreachs()) {
+          setOutDestUnreachs(other.getOutDestUnreachs());
+        }
+        if (other.hasOutTimeExcds()) {
+          setOutTimeExcds(other.getOutTimeExcds());
+        }
+        if (other.hasOutParmProbs()) {
+          setOutParmProbs(other.getOutParmProbs());
+        }
+        if (other.hasOutSrcQuenchs()) {
+          setOutSrcQuenchs(other.getOutSrcQuenchs());
+        }
+        if (other.hasOutRedirects()) {
+          setOutRedirects(other.getOutRedirects());
+        }
+        if (other.hasOutEchos()) {
+          setOutEchos(other.getOutEchos());
+        }
+        if (other.hasOutEchoReps()) {
+          setOutEchoReps(other.getOutEchoReps());
+        }
+        if (other.hasOutTimestamps()) {
+          setOutTimestamps(other.getOutTimestamps());
+        }
+        if (other.hasOutTimestampReps()) {
+          setOutTimestampReps(other.getOutTimestampReps());
+        }
+        if (other.hasOutAddrMasks()) {
+          setOutAddrMasks(other.getOutAddrMasks());
+        }
+        if (other.hasOutAddrMaskReps()) {
+          setOutAddrMaskReps(other.getOutAddrMaskReps());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.IcmpStatistics parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.IcmpStatistics) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional int64 InMsgs = 1;
+      private long inMsgs_ ;
+      /**
+       * <code>optional int64 InMsgs = 1;</code>
+       */
+      public boolean hasInMsgs() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional int64 InMsgs = 1;</code>
+       */
+      public long getInMsgs() {
+        return inMsgs_;
+      }
+      /**
+       * <code>optional int64 InMsgs = 1;</code>
+       */
+      public Builder setInMsgs(long value) {
+        bitField0_ |= 0x00000001;
+        inMsgs_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InMsgs = 1;</code>
+       */
+      public Builder clearInMsgs() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        inMsgs_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InErrors = 2;
+      private long inErrors_ ;
+      /**
+       * <code>optional int64 InErrors = 2;</code>
+       */
+      public boolean hasInErrors() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional int64 InErrors = 2;</code>
+       */
+      public long getInErrors() {
+        return inErrors_;
+      }
+      /**
+       * <code>optional int64 InErrors = 2;</code>
+       */
+      public Builder setInErrors(long value) {
+        bitField0_ |= 0x00000002;
+        inErrors_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InErrors = 2;</code>
+       */
+      public Builder clearInErrors() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        inErrors_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InCsumErrors = 3;
+      private long inCsumErrors_ ;
+      /**
+       * <code>optional int64 InCsumErrors = 3;</code>
+       */
+      public boolean hasInCsumErrors() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional int64 InCsumErrors = 3;</code>
+       */
+      public long getInCsumErrors() {
+        return inCsumErrors_;
+      }
+      /**
+       * <code>optional int64 InCsumErrors = 3;</code>
+       */
+      public Builder setInCsumErrors(long value) {
+        bitField0_ |= 0x00000004;
+        inCsumErrors_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InCsumErrors = 3;</code>
+       */
+      public Builder clearInCsumErrors() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        inCsumErrors_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InDestUnreachs = 4;
+      private long inDestUnreachs_ ;
+      /**
+       * <code>optional int64 InDestUnreachs = 4;</code>
+       */
+      public boolean hasInDestUnreachs() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional int64 InDestUnreachs = 4;</code>
+       */
+      public long getInDestUnreachs() {
+        return inDestUnreachs_;
+      }
+      /**
+       * <code>optional int64 InDestUnreachs = 4;</code>
+       */
+      public Builder setInDestUnreachs(long value) {
+        bitField0_ |= 0x00000008;
+        inDestUnreachs_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InDestUnreachs = 4;</code>
+       */
+      public Builder clearInDestUnreachs() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        inDestUnreachs_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InTimeExcds = 5;
+      private long inTimeExcds_ ;
+      /**
+       * <code>optional int64 InTimeExcds = 5;</code>
+       */
+      public boolean hasInTimeExcds() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional int64 InTimeExcds = 5;</code>
+       */
+      public long getInTimeExcds() {
+        return inTimeExcds_;
+      }
+      /**
+       * <code>optional int64 InTimeExcds = 5;</code>
+       */
+      public Builder setInTimeExcds(long value) {
+        bitField0_ |= 0x00000010;
+        inTimeExcds_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InTimeExcds = 5;</code>
+       */
+      public Builder clearInTimeExcds() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        inTimeExcds_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InParmProbs = 6;
+      private long inParmProbs_ ;
+      /**
+       * <code>optional int64 InParmProbs = 6;</code>
+       */
+      public boolean hasInParmProbs() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional int64 InParmProbs = 6;</code>
+       */
+      public long getInParmProbs() {
+        return inParmProbs_;
+      }
+      /**
+       * <code>optional int64 InParmProbs = 6;</code>
+       */
+      public Builder setInParmProbs(long value) {
+        bitField0_ |= 0x00000020;
+        inParmProbs_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InParmProbs = 6;</code>
+       */
+      public Builder clearInParmProbs() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        inParmProbs_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InSrcQuenchs = 7;
+      private long inSrcQuenchs_ ;
+      /**
+       * <code>optional int64 InSrcQuenchs = 7;</code>
+       */
+      public boolean hasInSrcQuenchs() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional int64 InSrcQuenchs = 7;</code>
+       */
+      public long getInSrcQuenchs() {
+        return inSrcQuenchs_;
+      }
+      /**
+       * <code>optional int64 InSrcQuenchs = 7;</code>
+       */
+      public Builder setInSrcQuenchs(long value) {
+        bitField0_ |= 0x00000040;
+        inSrcQuenchs_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InSrcQuenchs = 7;</code>
+       */
+      public Builder clearInSrcQuenchs() {
+        bitField0_ = (bitField0_ & ~0x00000040);
+        inSrcQuenchs_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InRedirects = 8;
+      private long inRedirects_ ;
+      /**
+       * <code>optional int64 InRedirects = 8;</code>
+       */
+      public boolean hasInRedirects() {
+        return ((bitField0_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional int64 InRedirects = 8;</code>
+       */
+      public long getInRedirects() {
+        return inRedirects_;
+      }
+      /**
+       * <code>optional int64 InRedirects = 8;</code>
+       */
+      public Builder setInRedirects(long value) {
+        bitField0_ |= 0x00000080;
+        inRedirects_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InRedirects = 8;</code>
+       */
+      public Builder clearInRedirects() {
+        bitField0_ = (bitField0_ & ~0x00000080);
+        inRedirects_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InEchos = 9;
+      private long inEchos_ ;
+      /**
+       * <code>optional int64 InEchos = 9;</code>
+       */
+      public boolean hasInEchos() {
+        return ((bitField0_ & 0x00000100) == 0x00000100);
+      }
+      /**
+       * <code>optional int64 InEchos = 9;</code>
+       */
+      public long getInEchos() {
+        return inEchos_;
+      }
+      /**
+       * <code>optional int64 InEchos = 9;</code>
+       */
+      public Builder setInEchos(long value) {
+        bitField0_ |= 0x00000100;
+        inEchos_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InEchos = 9;</code>
+       */
+      public Builder clearInEchos() {
+        bitField0_ = (bitField0_ & ~0x00000100);
+        inEchos_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InEchoReps = 10;
+      private long inEchoReps_ ;
+      /**
+       * <code>optional int64 InEchoReps = 10;</code>
+       */
+      public boolean hasInEchoReps() {
+        return ((bitField0_ & 0x00000200) == 0x00000200);
+      }
+      /**
+       * <code>optional int64 InEchoReps = 10;</code>
+       */
+      public long getInEchoReps() {
+        return inEchoReps_;
+      }
+      /**
+       * <code>optional int64 InEchoReps = 10;</code>
+       */
+      public Builder setInEchoReps(long value) {
+        bitField0_ |= 0x00000200;
+        inEchoReps_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InEchoReps = 10;</code>
+       */
+      public Builder clearInEchoReps() {
+        bitField0_ = (bitField0_ & ~0x00000200);
+        inEchoReps_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InTimestamps = 11;
+      private long inTimestamps_ ;
+      /**
+       * <code>optional int64 InTimestamps = 11;</code>
+       */
+      public boolean hasInTimestamps() {
+        return ((bitField0_ & 0x00000400) == 0x00000400);
+      }
+      /**
+       * <code>optional int64 InTimestamps = 11;</code>
+       */
+      public long getInTimestamps() {
+        return inTimestamps_;
+      }
+      /**
+       * <code>optional int64 InTimestamps = 11;</code>
+       */
+      public Builder setInTimestamps(long value) {
+        bitField0_ |= 0x00000400;
+        inTimestamps_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InTimestamps = 11;</code>
+       */
+      public Builder clearInTimestamps() {
+        bitField0_ = (bitField0_ & ~0x00000400);
+        inTimestamps_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InTimestampReps = 12;
+      private long inTimestampReps_ ;
+      /**
+       * <code>optional int64 InTimestampReps = 12;</code>
+       */
+      public boolean hasInTimestampReps() {
+        return ((bitField0_ & 0x00000800) == 0x00000800);
+      }
+      /**
+       * <code>optional int64 InTimestampReps = 12;</code>
+       */
+      public long getInTimestampReps() {
+        return inTimestampReps_;
+      }
+      /**
+       * <code>optional int64 InTimestampReps = 12;</code>
+       */
+      public Builder setInTimestampReps(long value) {
+        bitField0_ |= 0x00000800;
+        inTimestampReps_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InTimestampReps = 12;</code>
+       */
+      public Builder clearInTimestampReps() {
+        bitField0_ = (bitField0_ & ~0x00000800);
+        inTimestampReps_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InAddrMasks = 13;
+      private long inAddrMasks_ ;
+      /**
+       * <code>optional int64 InAddrMasks = 13;</code>
+       */
+      public boolean hasInAddrMasks() {
+        return ((bitField0_ & 0x00001000) == 0x00001000);
+      }
+      /**
+       * <code>optional int64 InAddrMasks = 13;</code>
+       */
+      public long getInAddrMasks() {
+        return inAddrMasks_;
+      }
+      /**
+       * <code>optional int64 InAddrMasks = 13;</code>
+       */
+      public Builder setInAddrMasks(long value) {
+        bitField0_ |= 0x00001000;
+        inAddrMasks_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InAddrMasks = 13;</code>
+       */
+      public Builder clearInAddrMasks() {
+        bitField0_ = (bitField0_ & ~0x00001000);
+        inAddrMasks_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InAddrMaskReps = 14;
+      private long inAddrMaskReps_ ;
+      /**
+       * <code>optional int64 InAddrMaskReps = 14;</code>
+       */
+      public boolean hasInAddrMaskReps() {
+        return ((bitField0_ & 0x00002000) == 0x00002000);
+      }
+      /**
+       * <code>optional int64 InAddrMaskReps = 14;</code>
+       */
+      public long getInAddrMaskReps() {
+        return inAddrMaskReps_;
+      }
+      /**
+       * <code>optional int64 InAddrMaskReps = 14;</code>
+       */
+      public Builder setInAddrMaskReps(long value) {
+        bitField0_ |= 0x00002000;
+        inAddrMaskReps_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InAddrMaskReps = 14;</code>
+       */
+      public Builder clearInAddrMaskReps() {
+        bitField0_ = (bitField0_ & ~0x00002000);
+        inAddrMaskReps_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 OutMsgs = 15;
+      private long outMsgs_ ;
+      /**
+       * <code>optional int64 OutMsgs = 15;</code>
+       */
+      public boolean hasOutMsgs() {
+        return ((bitField0_ & 0x00004000) == 0x00004000);
+      }
+      /**
+       * <code>optional int64 OutMsgs = 15;</code>
+       */
+      public long getOutMsgs() {
+        return outMsgs_;
+      }
+      /**
+       * <code>optional int64 OutMsgs = 15;</code>
+       */
+      public Builder setOutMsgs(long value) {
+        bitField0_ |= 0x00004000;
+        outMsgs_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 OutMsgs = 15;</code>
+       */
+      public Builder clearOutMsgs() {
+        bitField0_ = (bitField0_ & ~0x00004000);
+        outMsgs_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 OutErrors = 16;
+      private long outErrors_ ;
+      /**
+       * <code>optional int64 OutErrors = 16;</code>
+       */
+      public boolean hasOutErrors() {
+        return ((bitField0_ & 0x00008000) == 0x00008000);
+      }
+      /**
+       * <code>optional int64 OutErrors = 16;</code>
+       */
+      public long getOutErrors() {
+        return outErrors_;
+      }
+      /**
+       * <code>optional int64 OutErrors = 16;</code>
+       */
+      public Builder setOutErrors(long value) {
+        bitField0_ |= 0x00008000;
+        outErrors_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 OutErrors = 16;</code>
+       */
+      public Builder clearOutErrors() {
+        bitField0_ = (bitField0_ & ~0x00008000);
+        outErrors_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 OutDestUnreachs = 17;
+      private long outDestUnreachs_ ;
+      /**
+       * <code>optional int64 OutDestUnreachs = 17;</code>
+       */
+      public boolean hasOutDestUnreachs() {
+        return ((bitField0_ & 0x00010000) == 0x00010000);
+      }
+      /**
+       * <code>optional int64 OutDestUnreachs = 17;</code>
+       */
+      public long getOutDestUnreachs() {
+        return outDestUnreachs_;
+      }
+      /**
+       * <code>optional int64 OutDestUnreachs = 17;</code>
+       */
+      public Builder setOutDestUnreachs(long value) {
+        bitField0_ |= 0x00010000;
+        outDestUnreachs_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 OutDestUnreachs = 17;</code>
+       */
+      public Builder clearOutDestUnreachs() {
+        bitField0_ = (bitField0_ & ~0x00010000);
+        outDestUnreachs_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 OutTimeExcds = 18;
+      private long outTimeExcds_ ;
+      /**
+       * <code>optional int64 OutTimeExcds = 18;</code>
+       */
+      public boolean hasOutTimeExcds() {
+        return ((bitField0_ & 0x00020000) == 0x00020000);
+      }
+      /**
+       * <code>optional int64 OutTimeExcds = 18;</code>
+       */
+      public long getOutTimeExcds() {
+        return outTimeExcds_;
+      }
+      /**
+       * <code>optional int64 OutTimeExcds = 18;</code>
+       */
+      public Builder setOutTimeExcds(long value) {
+        bitField0_ |= 0x00020000;
+        outTimeExcds_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 OutTimeExcds = 18;</code>
+       */
+      public Builder clearOutTimeExcds() {
+        bitField0_ = (bitField0_ & ~0x00020000);
+        outTimeExcds_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 OutParmProbs = 19;
+      private long outParmProbs_ ;
+      /**
+       * <code>optional int64 OutParmProbs = 19;</code>
+       */
+      public boolean hasOutParmProbs() {
+        return ((bitField0_ & 0x00040000) == 0x00040000);
+      }
+      /**
+       * <code>optional int64 OutParmProbs = 19;</code>
+       */
+      public long getOutParmProbs() {
+        return outParmProbs_;
+      }
+      /**
+       * <code>optional int64 OutParmProbs = 19;</code>
+       */
+      public Builder setOutParmProbs(long value) {
+        bitField0_ |= 0x00040000;
+        outParmProbs_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 OutParmProbs = 19;</code>
+       */
+      public Builder clearOutParmProbs() {
+        bitField0_ = (bitField0_ & ~0x00040000);
+        outParmProbs_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 OutSrcQuenchs = 20;
+      private long outSrcQuenchs_ ;
+      /**
+       * <code>optional int64 OutSrcQuenchs = 20;</code>
+       */
+      public boolean hasOutSrcQuenchs() {
+        return ((bitField0_ & 0x00080000) == 0x00080000);
+      }
+      /**
+       * <code>optional int64 OutSrcQuenchs = 20;</code>
+       */
+      public long getOutSrcQuenchs() {
+        return outSrcQuenchs_;
+      }
+      /**
+       * <code>optional int64 OutSrcQuenchs = 20;</code>
+       */
+      public Builder setOutSrcQuenchs(long value) {
+        bitField0_ |= 0x00080000;
+        outSrcQuenchs_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 OutSrcQuenchs = 20;</code>
+       */
+      public Builder clearOutSrcQuenchs() {
+        bitField0_ = (bitField0_ & ~0x00080000);
+        outSrcQuenchs_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 OutRedirects = 21;
+      private long outRedirects_ ;
+      /**
+       * <code>optional int64 OutRedirects = 21;</code>
+       */
+      public boolean hasOutRedirects() {
+        return ((bitField0_ & 0x00100000) == 0x00100000);
+      }
+      /**
+       * <code>optional int64 OutRedirects = 21;</code>
+       */
+      public long getOutRedirects() {
+        return outRedirects_;
+      }
+      /**
+       * <code>optional int64 OutRedirects = 21;</code>
+       */
+      public Builder setOutRedirects(long value) {
+        bitField0_ |= 0x00100000;
+        outRedirects_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 OutRedirects = 21;</code>
+       */
+      public Builder clearOutRedirects() {
+        bitField0_ = (bitField0_ & ~0x00100000);
+        outRedirects_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 OutEchos = 22;
+      private long outEchos_ ;
+      /**
+       * <code>optional int64 OutEchos = 22;</code>
+       */
+      public boolean hasOutEchos() {
+        return ((bitField0_ & 0x00200000) == 0x00200000);
+      }
+      /**
+       * <code>optional int64 OutEchos = 22;</code>
+       */
+      public long getOutEchos() {
+        return outEchos_;
+      }
+      /**
+       * <code>optional int64 OutEchos = 22;</code>
+       */
+      public Builder setOutEchos(long value) {
+        bitField0_ |= 0x00200000;
+        outEchos_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 OutEchos = 22;</code>
+       */
+      public Builder clearOutEchos() {
+        bitField0_ = (bitField0_ & ~0x00200000);
+        outEchos_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 OutEchoReps = 23;
+      private long outEchoReps_ ;
+      /**
+       * <code>optional int64 OutEchoReps = 23;</code>
+       */
+      public boolean hasOutEchoReps() {
+        return ((bitField0_ & 0x00400000) == 0x00400000);
+      }
+      /**
+       * <code>optional int64 OutEchoReps = 23;</code>
+       */
+      public long getOutEchoReps() {
+        return outEchoReps_;
+      }
+      /**
+       * <code>optional int64 OutEchoReps = 23;</code>
+       */
+      public Builder setOutEchoReps(long value) {
+        bitField0_ |= 0x00400000;
+        outEchoReps_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 OutEchoReps = 23;</code>
+       */
+      public Builder clearOutEchoReps() {
+        bitField0_ = (bitField0_ & ~0x00400000);
+        outEchoReps_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 OutTimestamps = 24;
+      private long outTimestamps_ ;
+      /**
+       * <code>optional int64 OutTimestamps = 24;</code>
+       */
+      public boolean hasOutTimestamps() {
+        return ((bitField0_ & 0x00800000) == 0x00800000);
+      }
+      /**
+       * <code>optional int64 OutTimestamps = 24;</code>
+       */
+      public long getOutTimestamps() {
+        return outTimestamps_;
+      }
+      /**
+       * <code>optional int64 OutTimestamps = 24;</code>
+       */
+      public Builder setOutTimestamps(long value) {
+        bitField0_ |= 0x00800000;
+        outTimestamps_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 OutTimestamps = 24;</code>
+       */
+      public Builder clearOutTimestamps() {
+        bitField0_ = (bitField0_ & ~0x00800000);
+        outTimestamps_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 OutTimestampReps = 25;
+      private long outTimestampReps_ ;
+      /**
+       * <code>optional int64 OutTimestampReps = 25;</code>
+       */
+      public boolean hasOutTimestampReps() {
+        return ((bitField0_ & 0x01000000) == 0x01000000);
+      }
+      /**
+       * <code>optional int64 OutTimestampReps = 25;</code>
+       */
+      public long getOutTimestampReps() {
+        return outTimestampReps_;
+      }
+      /**
+       * <code>optional int64 OutTimestampReps = 25;</code>
+       */
+      public Builder setOutTimestampReps(long value) {
+        bitField0_ |= 0x01000000;
+        outTimestampReps_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 OutTimestampReps = 25;</code>
+       */
+      public Builder clearOutTimestampReps() {
+        bitField0_ = (bitField0_ & ~0x01000000);
+        outTimestampReps_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 OutAddrMasks = 26;
+      private long outAddrMasks_ ;
+      /**
+       * <code>optional int64 OutAddrMasks = 26;</code>
+       */
+      public boolean hasOutAddrMasks() {
+        return ((bitField0_ & 0x02000000) == 0x02000000);
+      }
+      /**
+       * <code>optional int64 OutAddrMasks = 26;</code>
+       */
+      public long getOutAddrMasks() {
+        return outAddrMasks_;
+      }
+      /**
+       * <code>optional int64 OutAddrMasks = 26;</code>
+       */
+      public Builder setOutAddrMasks(long value) {
+        bitField0_ |= 0x02000000;
+        outAddrMasks_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 OutAddrMasks = 26;</code>
+       */
+      public Builder clearOutAddrMasks() {
+        bitField0_ = (bitField0_ & ~0x02000000);
+        outAddrMasks_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 OutAddrMaskReps = 27;
+      private long outAddrMaskReps_ ;
+      /**
+       * <code>optional int64 OutAddrMaskReps = 27;</code>
+       */
+      public boolean hasOutAddrMaskReps() {
+        return ((bitField0_ & 0x04000000) == 0x04000000);
+      }
+      /**
+       * <code>optional int64 OutAddrMaskReps = 27;</code>
+       */
+      public long getOutAddrMaskReps() {
+        return outAddrMaskReps_;
+      }
+      /**
+       * <code>optional int64 OutAddrMaskReps = 27;</code>
+       */
+      public Builder setOutAddrMaskReps(long value) {
+        bitField0_ |= 0x04000000;
+        outAddrMaskReps_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 OutAddrMaskReps = 27;</code>
+       */
+      public Builder clearOutAddrMaskReps() {
+        bitField0_ = (bitField0_ & ~0x04000000);
+        outAddrMaskReps_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.IcmpStatistics)
+    }
+
+    static {
+      defaultInstance = new IcmpStatistics(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.IcmpStatistics)
+  }
+
+  public interface TcpStatisticsOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional int64 RtoAlgorithm = 1;
+    /**
+     * <code>optional int64 RtoAlgorithm = 1;</code>
+     */
+    boolean hasRtoAlgorithm();
+    /**
+     * <code>optional int64 RtoAlgorithm = 1;</code>
+     */
+    long getRtoAlgorithm();
+
+    // optional int64 RtoMin = 2;
+    /**
+     * <code>optional int64 RtoMin = 2;</code>
+     */
+    boolean hasRtoMin();
+    /**
+     * <code>optional int64 RtoMin = 2;</code>
+     */
+    long getRtoMin();
+
+    // optional int64 RtoMax = 3;
+    /**
+     * <code>optional int64 RtoMax = 3;</code>
+     */
+    boolean hasRtoMax();
+    /**
+     * <code>optional int64 RtoMax = 3;</code>
+     */
+    long getRtoMax();
+
+    // optional int64 MaxConn = 4;
+    /**
+     * <code>optional int64 MaxConn = 4;</code>
+     */
+    boolean hasMaxConn();
+    /**
+     * <code>optional int64 MaxConn = 4;</code>
+     */
+    long getMaxConn();
+
+    // optional int64 ActiveOpens = 5;
+    /**
+     * <code>optional int64 ActiveOpens = 5;</code>
+     */
+    boolean hasActiveOpens();
+    /**
+     * <code>optional int64 ActiveOpens = 5;</code>
+     */
+    long getActiveOpens();
+
+    // optional int64 PassiveOpens = 6;
+    /**
+     * <code>optional int64 PassiveOpens = 6;</code>
+     */
+    boolean hasPassiveOpens();
+    /**
+     * <code>optional int64 PassiveOpens = 6;</code>
+     */
+    long getPassiveOpens();
+
+    // optional int64 AttemptFails = 7;
+    /**
+     * <code>optional int64 AttemptFails = 7;</code>
+     */
+    boolean hasAttemptFails();
+    /**
+     * <code>optional int64 AttemptFails = 7;</code>
+     */
+    long getAttemptFails();
+
+    // optional int64 EstabResets = 8;
+    /**
+     * <code>optional int64 EstabResets = 8;</code>
+     */
+    boolean hasEstabResets();
+    /**
+     * <code>optional int64 EstabResets = 8;</code>
+     */
+    long getEstabResets();
+
+    // optional int64 CurrEstab = 9;
+    /**
+     * <code>optional int64 CurrEstab = 9;</code>
+     */
+    boolean hasCurrEstab();
+    /**
+     * <code>optional int64 CurrEstab = 9;</code>
+     */
+    long getCurrEstab();
+
+    // optional int64 InSegs = 10;
+    /**
+     * <code>optional int64 InSegs = 10;</code>
+     */
+    boolean hasInSegs();
+    /**
+     * <code>optional int64 InSegs = 10;</code>
+     */
+    long getInSegs();
+
+    // optional int64 OutSegs = 11;
+    /**
+     * <code>optional int64 OutSegs = 11;</code>
+     */
+    boolean hasOutSegs();
+    /**
+     * <code>optional int64 OutSegs = 11;</code>
+     */
+    long getOutSegs();
+
+    // optional int64 RetransSegs = 12;
+    /**
+     * <code>optional int64 RetransSegs = 12;</code>
+     */
+    boolean hasRetransSegs();
+    /**
+     * <code>optional int64 RetransSegs = 12;</code>
+     */
+    long getRetransSegs();
+
+    // optional int64 InErrs = 13;
+    /**
+     * <code>optional int64 InErrs = 13;</code>
+     */
+    boolean hasInErrs();
+    /**
+     * <code>optional int64 InErrs = 13;</code>
+     */
+    long getInErrs();
+
+    // optional int64 OutRsts = 14;
+    /**
+     * <code>optional int64 OutRsts = 14;</code>
+     */
+    boolean hasOutRsts();
+    /**
+     * <code>optional int64 OutRsts = 14;</code>
+     */
+    long getOutRsts();
+
+    // optional int64 InCsumErrors = 15;
+    /**
+     * <code>optional int64 InCsumErrors = 15;</code>
+     */
+    boolean hasInCsumErrors();
+    /**
+     * <code>optional int64 InCsumErrors = 15;</code>
+     */
+    long getInCsumErrors();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.TcpStatistics}
+   */
+  public static final class TcpStatistics extends
+      com.google.protobuf.GeneratedMessage
+      implements TcpStatisticsOrBuilder {
+    // Use TcpStatistics.newBuilder() to construct.
+    private TcpStatistics(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private TcpStatistics(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final TcpStatistics defaultInstance;
+    public static TcpStatistics getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public TcpStatistics getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private TcpStatistics(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 8: {
+              bitField0_ |= 0x00000001;
+              rtoAlgorithm_ = input.readInt64();
+              break;
+            }
+            case 16: {
+              bitField0_ |= 0x00000002;
+              rtoMin_ = input.readInt64();
+              break;
+            }
+            case 24: {
+              bitField0_ |= 0x00000004;
+              rtoMax_ = input.readInt64();
+              break;
+            }
+            case 32: {
+              bitField0_ |= 0x00000008;
+              maxConn_ = input.readInt64();
+              break;
+            }
+            case 40: {
+              bitField0_ |= 0x00000010;
+              activeOpens_ = input.readInt64();
+              break;
+            }
+            case 48: {
+              bitField0_ |= 0x00000020;
+              passiveOpens_ = input.readInt64();
+              break;
+            }
+            case 56: {
+              bitField0_ |= 0x00000040;
+              attemptFails_ = input.readInt64();
+              break;
+            }
+            case 64: {
+              bitField0_ |= 0x00000080;
+              estabResets_ = input.readInt64();
+              break;
+            }
+            case 72: {
+              bitField0_ |= 0x00000100;
+              currEstab_ = input.readInt64();
+              break;
+            }
+            case 80: {
+              bitField0_ |= 0x00000200;
+              inSegs_ = input.readInt64();
+              break;
+            }
+            case 88: {
+              bitField0_ |= 0x00000400;
+              outSegs_ = input.readInt64();
+              break;
+            }
+            case 96: {
+              bitField0_ |= 0x00000800;
+              retransSegs_ = input.readInt64();
+              break;
+            }
+            case 104: {
+              bitField0_ |= 0x00001000;
+              inErrs_ = input.readInt64();
+              break;
+            }
+            case 112: {
+              bitField0_ |= 0x00002000;
+              outRsts_ = input.readInt64();
+              break;
+            }
+            case 120: {
+              bitField0_ |= 0x00004000;
+              inCsumErrors_ = input.readInt64();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TcpStatistics_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TcpStatistics_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.TcpStatistics.class, org.apache.mesos.v1.Protos.TcpStatistics.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<TcpStatistics> PARSER =
+        new com.google.protobuf.AbstractParser<TcpStatistics>() {
+      public TcpStatistics parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new TcpStatistics(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<TcpStatistics> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // optional int64 RtoAlgorithm = 1;
+    public static final int RTOALGORITHM_FIELD_NUMBER = 1;
+    private long rtoAlgorithm_;
+    /**
+     * <code>optional int64 RtoAlgorithm = 1;</code>
+     */
+    public boolean hasRtoAlgorithm() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional int64 RtoAlgorithm = 1;</code>
+     */
+    public long getRtoAlgorithm() {
+      return rtoAlgorithm_;
+    }
+
+    // optional int64 RtoMin = 2;
+    public static final int RTOMIN_FIELD_NUMBER = 2;
+    private long rtoMin_;
+    /**
+     * <code>optional int64 RtoMin = 2;</code>
+     */
+    public boolean hasRtoMin() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional int64 RtoMin = 2;</code>
+     */
+    public long getRtoMin() {
+      return rtoMin_;
+    }
+
+    // optional int64 RtoMax = 3;
+    public static final int RTOMAX_FIELD_NUMBER = 3;
+    private long rtoMax_;
+    /**
+     * <code>optional int64 RtoMax = 3;</code>
+     */
+    public boolean hasRtoMax() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional int64 RtoMax = 3;</code>
+     */
+    public long getRtoMax() {
+      return rtoMax_;
+    }
+
+    // optional int64 MaxConn = 4;
+    public static final int MAXCONN_FIELD_NUMBER = 4;
+    private long maxConn_;
+    /**
+     * <code>optional int64 MaxConn = 4;</code>
+     */
+    public boolean hasMaxConn() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional int64 MaxConn = 4;</code>
+     */
+    public long getMaxConn() {
+      return maxConn_;
+    }
+
+    // optional int64 ActiveOpens = 5;
+    public static final int ACTIVEOPENS_FIELD_NUMBER = 5;
+    private long activeOpens_;
+    /**
+     * <code>optional int64 ActiveOpens = 5;</code>
+     */
+    public boolean hasActiveOpens() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional int64 ActiveOpens = 5;</code>
+     */
+    public long getActiveOpens() {
+      return activeOpens_;
+    }
+
+    // optional int64 PassiveOpens = 6;
+    public static final int PASSIVEOPENS_FIELD_NUMBER = 6;
+    private long passiveOpens_;
+    /**
+     * <code>optional int64 PassiveOpens = 6;</code>
+     */
+    public boolean hasPassiveOpens() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional int64 PassiveOpens = 6;</code>
+     */
+    public long getPassiveOpens() {
+      return passiveOpens_;
+    }
+
+    // optional int64 AttemptFails = 7;
+    public static final int ATTEMPTFAILS_FIELD_NUMBER = 7;
+    private long attemptFails_;
+    /**
+     * <code>optional int64 AttemptFails = 7;</code>
+     */
+    public boolean hasAttemptFails() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional int64 AttemptFails = 7;</code>
+     */
+    public long getAttemptFails() {
+      return attemptFails_;
+    }
+
+    // optional int64 EstabResets = 8;
+    public static final int ESTABRESETS_FIELD_NUMBER = 8;
+    private long estabResets_;
+    /**
+     * <code>optional int64 EstabResets = 8;</code>
+     */
+    public boolean hasEstabResets() {
+      return ((bitField0_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional int64 EstabResets = 8;</code>
+     */
+    public long getEstabResets() {
+      return estabResets_;
+    }
+
+    // optional int64 CurrEstab = 9;
+    public static final int CURRESTAB_FIELD_NUMBER = 9;
+    private long currEstab_;
+    /**
+     * <code>optional int64 CurrEstab = 9;</code>
+     */
+    public boolean hasCurrEstab() {
+      return ((bitField0_ & 0x00000100) == 0x00000100);
+    }
+    /**
+     * <code>optional int64 CurrEstab = 9;</code>
+     */
+    public long getCurrEstab() {
+      return currEstab_;
+    }
+
+    // optional int64 InSegs = 10;
+    public static final int INSEGS_FIELD_NUMBER = 10;
+    private long inSegs_;
+    /**
+     * <code>optional int64 InSegs = 10;</code>
+     */
+    public boolean hasInSegs() {
+      return ((bitField0_ & 0x00000200) == 0x00000200);
+    }
+    /**
+     * <code>optional int64 InSegs = 10;</code>
+     */
+    public long getInSegs() {
+      return inSegs_;
+    }
+
+    // optional int64 OutSegs = 11;
+    public static final int OUTSEGS_FIELD_NUMBER = 11;
+    private long outSegs_;
+    /**
+     * <code>optional int64 OutSegs = 11;</code>
+     */
+    public boolean hasOutSegs() {
+      return ((bitField0_ & 0x00000400) == 0x00000400);
+    }
+    /**
+     * <code>optional int64 OutSegs = 11;</code>
+     */
+    public long getOutSegs() {
+      return outSegs_;
+    }
+
+    // optional int64 RetransSegs = 12;
+    public static final int RETRANSSEGS_FIELD_NUMBER = 12;
+    private long retransSegs_;
+    /**
+     * <code>optional int64 RetransSegs = 12;</code>
+     */
+    public boolean hasRetransSegs() {
+      return ((bitField0_ & 0x00000800) == 0x00000800);
+    }
+    /**
+     * <code>optional int64 RetransSegs = 12;</code>
+     */
+    public long getRetransSegs() {
+      return retransSegs_;
+    }
+
+    // optional int64 InErrs = 13;
+    public static final int INERRS_FIELD_NUMBER = 13;
+    private long inErrs_;
+    /**
+     * <code>optional int64 InErrs = 13;</code>
+     */
+    public boolean hasInErrs() {
+      return ((bitField0_ & 0x00001000) == 0x00001000);
+    }
+    /**
+     * <code>optional int64 InErrs = 13;</code>
+     */
+    public long getInErrs() {
+      return inErrs_;
+    }
+
+    // optional int64 OutRsts = 14;
+    public static final int OUTRSTS_FIELD_NUMBER = 14;
+    private long outRsts_;
+    /**
+     * <code>optional int64 OutRsts = 14;</code>
+     */
+    public boolean hasOutRsts() {
+      return ((bitField0_ & 0x00002000) == 0x00002000);
+    }
+    /**
+     * <code>optional int64 OutRsts = 14;</code>
+     */
+    public long getOutRsts() {
+      return outRsts_;
+    }
+
+    // optional int64 InCsumErrors = 15;
+    public static final int INCSUMERRORS_FIELD_NUMBER = 15;
+    private long inCsumErrors_;
+    /**
+     * <code>optional int64 InCsumErrors = 15;</code>
+     */
+    public boolean hasInCsumErrors() {
+      return ((bitField0_ & 0x00004000) == 0x00004000);
+    }
+    /**
+     * <code>optional int64 InCsumErrors = 15;</code>
+     */
+    public long getInCsumErrors() {
+      return inCsumErrors_;
+    }
+
+    private void initFields() {
+      rtoAlgorithm_ = 0L;
+      rtoMin_ = 0L;
+      rtoMax_ = 0L;
+      maxConn_ = 0L;
+      activeOpens_ = 0L;
+      passiveOpens_ = 0L;
+      attemptFails_ = 0L;
+      estabResets_ = 0L;
+      currEstab_ = 0L;
+      inSegs_ = 0L;
+      outSegs_ = 0L;
+      retransSegs_ = 0L;
+      inErrs_ = 0L;
+      outRsts_ = 0L;
+      inCsumErrors_ = 0L;
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeInt64(1, rtoAlgorithm_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeInt64(2, rtoMin_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeInt64(3, rtoMax_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeInt64(4, maxConn_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeInt64(5, activeOpens_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeInt64(6, passiveOpens_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeInt64(7, attemptFails_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        output.writeInt64(8, estabResets_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        output.writeInt64(9, currEstab_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        output.writeInt64(10, inSegs_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        output.writeInt64(11, outSegs_);
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        output.writeInt64(12, retransSegs_);
+      }
+      if (((bitField0_ & 0x00001000) == 0x00001000)) {
+        output.writeInt64(13, inErrs_);
+      }
+      if (((bitField0_ & 0x00002000) == 0x00002000)) {
+        output.writeInt64(14, outRsts_);
+      }
+      if (((bitField0_ & 0x00004000) == 0x00004000)) {
+        output.writeInt64(15, inCsumErrors_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(1, rtoAlgorithm_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(2, rtoMin_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(3, rtoMax_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(4, maxConn_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(5, activeOpens_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(6, passiveOpens_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(7, attemptFails_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(8, estabResets_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(9, currEstab_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(10, inSegs_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(11, outSegs_);
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(12, retransSegs_);
+      }
+      if (((bitField0_ & 0x00001000) == 0x00001000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(13, inErrs_);
+      }
+      if (((bitField0_ & 0x00002000) == 0x00002000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(14, outRsts_);
+      }
+      if (((bitField0_ & 0x00004000) == 0x00004000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(15, inCsumErrors_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.TcpStatistics parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.TcpStatistics parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.TcpStatistics parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.TcpStatistics parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.TcpStatistics parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.TcpStatistics parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.TcpStatistics parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.TcpStatistics parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.TcpStatistics parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.TcpStatistics parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.TcpStatistics prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.TcpStatistics}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.TcpStatisticsOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TcpStatistics_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TcpStatistics_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.TcpStatistics.class, org.apache.mesos.v1.Protos.TcpStatistics.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.TcpStatistics.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        rtoAlgorithm_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        rtoMin_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        rtoMax_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        maxConn_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        activeOpens_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000010);
+        passiveOpens_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000020);
+        attemptFails_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000040);
+        estabResets_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000080);
+        currEstab_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000100);
+        inSegs_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000200);
+        outSegs_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000400);
+        retransSegs_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000800);
+        inErrs_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00001000);
+        outRsts_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00002000);
+        inCsumErrors_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00004000);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TcpStatistics_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.TcpStatistics getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.TcpStatistics.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.TcpStatistics build() {
+        org.apache.mesos.v1.Protos.TcpStatistics result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.TcpStatistics buildPartial() {
+        org.apache.mesos.v1.Protos.TcpStatistics result = new org.apache.mesos.v1.Protos.TcpStatistics(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.rtoAlgorithm_ = rtoAlgorithm_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.rtoMin_ = rtoMin_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.rtoMax_ = rtoMax_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.maxConn_ = maxConn_;
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.activeOpens_ = activeOpens_;
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        result.passiveOpens_ = passiveOpens_;
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        result.attemptFails_ = attemptFails_;
+        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+          to_bitField0_ |= 0x00000080;
+        }
+        result.estabResets_ = estabResets_;
+        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
+          to_bitField0_ |= 0x00000100;
+        }
+        result.currEstab_ = currEstab_;
+        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
+          to_bitField0_ |= 0x00000200;
+        }
+        result.inSegs_ = inSegs_;
+        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
+          to_bitField0_ |= 0x00000400;
+        }
+        result.outSegs_ = outSegs_;
+        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
+          to_bitField0_ |= 0x00000800;
+        }
+        result.retransSegs_ = retransSegs_;
+        if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
+          to_bitField0_ |= 0x00001000;
+        }
+        result.inErrs_ = inErrs_;
+        if (((from_bitField0_ & 0x00002000) == 0x00002000)) {
+          to_bitField0_ |= 0x00002000;
+        }
+        result.outRsts_ = outRsts_;
+        if (((from_bitField0_ & 0x00004000) == 0x00004000)) {
+          to_bitField0_ |= 0x00004000;
+        }
+        result.inCsumErrors_ = inCsumErrors_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.TcpStatistics) {
+          return mergeFrom((org.apache.mesos.v1.Protos.TcpStatistics)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.TcpStatistics other) {
+        if (other == org.apache.mesos.v1.Protos.TcpStatistics.getDefaultInstance()) return this;
+        if (other.hasRtoAlgorithm()) {
+          setRtoAlgorithm(other.getRtoAlgorithm());
+        }
+        if (other.hasRtoMin()) {
+          setRtoMin(other.getRtoMin());
+        }
+        if (other.hasRtoMax()) {
+          setRtoMax(other.getRtoMax());
+        }
+        if (other.hasMaxConn()) {
+          setMaxConn(other.getMaxConn());
+        }
+        if (other.hasActiveOpens()) {
+          setActiveOpens(other.getActiveOpens());
+        }
+        if (other.hasPassiveOpens()) {
+          setPassiveOpens(other.getPassiveOpens());
+        }
+        if (other.hasAttemptFails()) {
+          setAttemptFails(other.getAttemptFails());
+        }
+        if (other.hasEstabResets()) {
+          setEstabResets(other.getEstabResets());
+        }
+        if (other.hasCurrEstab()) {
+          setCurrEstab(other.getCurrEstab());
+        }
+        if (other.hasInSegs()) {
+          setInSegs(other.getInSegs());
+        }
+        if (other.hasOutSegs()) {
+          setOutSegs(other.getOutSegs());
+        }
+        if (other.hasRetransSegs()) {
+          setRetransSegs(other.getRetransSegs());
+        }
+        if (other.hasInErrs()) {
+          setInErrs(other.getInErrs());
+        }
+        if (other.hasOutRsts()) {
+          setOutRsts(other.getOutRsts());
+        }
+        if (other.hasInCsumErrors()) {
+          setInCsumErrors(other.getInCsumErrors());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.TcpStatistics parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.TcpStatistics) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional int64 RtoAlgorithm = 1;
+      private long rtoAlgorithm_ ;
+      /**
+       * <code>optional int64 RtoAlgorithm = 1;</code>
+       */
+      public boolean hasRtoAlgorithm() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional int64 RtoAlgorithm = 1;</code>
+       */
+      public long getRtoAlgorithm() {
+        return rtoAlgorithm_;
+      }
+      /**
+       * <code>optional int64 RtoAlgorithm = 1;</code>
+       */
+      public Builder setRtoAlgorithm(long value) {
+        bitField0_ |= 0x00000001;
+        rtoAlgorithm_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 RtoAlgorithm = 1;</code>
+       */
+      public Builder clearRtoAlgorithm() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        rtoAlgorithm_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 RtoMin = 2;
+      private long rtoMin_ ;
+      /**
+       * <code>optional int64 RtoMin = 2;</code>
+       */
+      public boolean hasRtoMin() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional int64 RtoMin = 2;</code>
+       */
+      public long getRtoMin() {
+        return rtoMin_;
+      }
+      /**
+       * <code>optional int64 RtoMin = 2;</code>
+       */
+      public Builder setRtoMin(long value) {
+        bitField0_ |= 0x00000002;
+        rtoMin_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 RtoMin = 2;</code>
+       */
+      public Builder clearRtoMin() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        rtoMin_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 RtoMax = 3;
+      private long rtoMax_ ;
+      /**
+       * <code>optional int64 RtoMax = 3;</code>
+       */
+      public boolean hasRtoMax() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional int64 RtoMax = 3;</code>
+       */
+      public long getRtoMax() {
+        return rtoMax_;
+      }
+      /**
+       * <code>optional int64 RtoMax = 3;</code>
+       */
+      public Builder setRtoMax(long value) {
+        bitField0_ |= 0x00000004;
+        rtoMax_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 RtoMax = 3;</code>
+       */
+      public Builder clearRtoMax() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        rtoMax_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 MaxConn = 4;
+      private long maxConn_ ;
+      /**
+       * <code>optional int64 MaxConn = 4;</code>
+       */
+      public boolean hasMaxConn() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional int64 MaxConn = 4;</code>
+       */
+      public long getMaxConn() {
+        return maxConn_;
+      }
+      /**
+       * <code>optional int64 MaxConn = 4;</code>
+       */
+      public Builder setMaxConn(long value) {
+        bitField0_ |= 0x00000008;
+        maxConn_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 MaxConn = 4;</code>
+       */
+      public Builder clearMaxConn() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        maxConn_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 ActiveOpens = 5;
+      private long activeOpens_ ;
+      /**
+       * <code>optional int64 ActiveOpens = 5;</code>
+       */
+      public boolean hasActiveOpens() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional int64 ActiveOpens = 5;</code>
+       */
+      public long getActiveOpens() {
+        return activeOpens_;
+      }
+      /**
+       * <code>optional int64 ActiveOpens = 5;</code>
+       */
+      public Builder setActiveOpens(long value) {
+        bitField0_ |= 0x00000010;
+        activeOpens_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 ActiveOpens = 5;</code>
+       */
+      public Builder clearActiveOpens() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        activeOpens_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 PassiveOpens = 6;
+      private long passiveOpens_ ;
+      /**
+       * <code>optional int64 PassiveOpens = 6;</code>
+       */
+      public boolean hasPassiveOpens() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional int64 PassiveOpens = 6;</code>
+       */
+      public long getPassiveOpens() {
+        return passiveOpens_;
+      }
+      /**
+       * <code>optional int64 PassiveOpens = 6;</code>
+       */
+      public Builder setPassiveOpens(long value) {
+        bitField0_ |= 0x00000020;
+        passiveOpens_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 PassiveOpens = 6;</code>
+       */
+      public Builder clearPassiveOpens() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        passiveOpens_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 AttemptFails = 7;
+      private long attemptFails_ ;
+      /**
+       * <code>optional int64 AttemptFails = 7;</code>
+       */
+      public boolean hasAttemptFails() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional int64 AttemptFails = 7;</code>
+       */
+      public long getAttemptFails() {
+        return attemptFails_;
+      }
+      /**
+       * <code>optional int64 AttemptFails = 7;</code>
+       */
+      public Builder setAttemptFails(long value) {
+        bitField0_ |= 0x00000040;
+        attemptFails_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 AttemptFails = 7;</code>
+       */
+      public Builder clearAttemptFails() {
+        bitField0_ = (bitField0_ & ~0x00000040);
+        attemptFails_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 EstabResets = 8;
+      private long estabResets_ ;
+      /**
+       * <code>optional int64 EstabResets = 8;</code>
+       */
+      public boolean hasEstabResets() {
+        return ((bitField0_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional int64 EstabResets = 8;</code>
+       */
+      public long getEstabResets() {
+        return estabResets_;
+      }
+      /**
+       * <code>optional int64 EstabResets = 8;</code>
+       */
+      public Builder setEstabResets(long value) {
+        bitField0_ |= 0x00000080;
+        estabResets_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 EstabResets = 8;</code>
+       */
+      public Builder clearEstabResets() {
+        bitField0_ = (bitField0_ & ~0x00000080);
+        estabResets_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 CurrEstab = 9;
+      private long currEstab_ ;
+      /**
+       * <code>optional int64 CurrEstab = 9;</code>
+       */
+      public boolean hasCurrEstab() {
+        return ((bitField0_ & 0x00000100) == 0x00000100);
+      }
+      /**
+       * <code>optional int64 CurrEstab = 9;</code>
+       */
+      public long getCurrEstab() {
+        return currEstab_;
+      }
+      /**
+       * <code>optional int64 CurrEstab = 9;</code>
+       */
+      public Builder setCurrEstab(long value) {
+        bitField0_ |= 0x00000100;
+        currEstab_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 CurrEstab = 9;</code>
+       */
+      public Builder clearCurrEstab() {
+        bitField0_ = (bitField0_ & ~0x00000100);
+        currEstab_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InSegs = 10;
+      private long inSegs_ ;
+      /**
+       * <code>optional int64 InSegs = 10;</code>
+       */
+      public boolean hasInSegs() {
+        return ((bitField0_ & 0x00000200) == 0x00000200);
+      }
+      /**
+       * <code>optional int64 InSegs = 10;</code>
+       */
+      public long getInSegs() {
+        return inSegs_;
+      }
+      /**
+       * <code>optional int64 InSegs = 10;</code>
+       */
+      public Builder setInSegs(long value) {
+        bitField0_ |= 0x00000200;
+        inSegs_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InSegs = 10;</code>
+       */
+      public Builder clearInSegs() {
+        bitField0_ = (bitField0_ & ~0x00000200);
+        inSegs_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 OutSegs = 11;
+      private long outSegs_ ;
+      /**
+       * <code>optional int64 OutSegs = 11;</code>
+       */
+      public boolean hasOutSegs() {
+        return ((bitField0_ & 0x00000400) == 0x00000400);
+      }
+      /**
+       * <code>optional int64 OutSegs = 11;</code>
+       */
+      public long getOutSegs() {
+        return outSegs_;
+      }
+      /**
+       * <code>optional int64 OutSegs = 11;</code>
+       */
+      public Builder setOutSegs(long value) {
+        bitField0_ |= 0x00000400;
+        outSegs_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 OutSegs = 11;</code>
+       */
+      public Builder clearOutSegs() {
+        bitField0_ = (bitField0_ & ~0x00000400);
+        outSegs_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 RetransSegs = 12;
+      private long retransSegs_ ;
+      /**
+       * <code>optional int64 RetransSegs = 12;</code>
+       */
+      public boolean hasRetransSegs() {
+        return ((bitField0_ & 0x00000800) == 0x00000800);
+      }
+      /**
+       * <code>optional int64 RetransSegs = 12;</code>
+       */
+      public long getRetransSegs() {
+        return retransSegs_;
+      }
+      /**
+       * <code>optional int64 RetransSegs = 12;</code>
+       */
+      public Builder setRetransSegs(long value) {
+        bitField0_ |= 0x00000800;
+        retransSegs_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 RetransSegs = 12;</code>
+       */
+      public Builder clearRetransSegs() {
+        bitField0_ = (bitField0_ & ~0x00000800);
+        retransSegs_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InErrs = 13;
+      private long inErrs_ ;
+      /**
+       * <code>optional int64 InErrs = 13;</code>
+       */
+      public boolean hasInErrs() {
+        return ((bitField0_ & 0x00001000) == 0x00001000);
+      }
+      /**
+       * <code>optional int64 InErrs = 13;</code>
+       */
+      public long getInErrs() {
+        return inErrs_;
+      }
+      /**
+       * <code>optional int64 InErrs = 13;</code>
+       */
+      public Builder setInErrs(long value) {
+        bitField0_ |= 0x00001000;
+        inErrs_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InErrs = 13;</code>
+       */
+      public Builder clearInErrs() {
+        bitField0_ = (bitField0_ & ~0x00001000);
+        inErrs_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 OutRsts = 14;
+      private long outRsts_ ;
+      /**
+       * <code>optional int64 OutRsts = 14;</code>
+       */
+      public boolean hasOutRsts() {
+        return ((bitField0_ & 0x00002000) == 0x00002000);
+      }
+      /**
+       * <code>optional int64 OutRsts = 14;</code>
+       */
+      public long getOutRsts() {
+        return outRsts_;
+      }
+      /**
+       * <code>optional int64 OutRsts = 14;</code>
+       */
+      public Builder setOutRsts(long value) {
+        bitField0_ |= 0x00002000;
+        outRsts_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 OutRsts = 14;</code>
+       */
+      public Builder clearOutRsts() {
+        bitField0_ = (bitField0_ & ~0x00002000);
+        outRsts_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InCsumErrors = 15;
+      private long inCsumErrors_ ;
+      /**
+       * <code>optional int64 InCsumErrors = 15;</code>
+       */
+      public boolean hasInCsumErrors() {
+        return ((bitField0_ & 0x00004000) == 0x00004000);
+      }
+      /**
+       * <code>optional int64 InCsumErrors = 15;</code>
+       */
+      public long getInCsumErrors() {
+        return inCsumErrors_;
+      }
+      /**
+       * <code>optional int64 InCsumErrors = 15;</code>
+       */
+      public Builder setInCsumErrors(long value) {
+        bitField0_ |= 0x00004000;
+        inCsumErrors_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InCsumErrors = 15;</code>
+       */
+      public Builder clearInCsumErrors() {
+        bitField0_ = (bitField0_ & ~0x00004000);
+        inCsumErrors_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.TcpStatistics)
+    }
+
+    static {
+      defaultInstance = new TcpStatistics(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.TcpStatistics)
+  }
+
+  public interface UdpStatisticsOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional int64 InDatagrams = 1;
+    /**
+     * <code>optional int64 InDatagrams = 1;</code>
+     */
+    boolean hasInDatagrams();
+    /**
+     * <code>optional int64 InDatagrams = 1;</code>
+     */
+    long getInDatagrams();
+
+    // optional int64 NoPorts = 2;
+    /**
+     * <code>optional int64 NoPorts = 2;</code>
+     */
+    boolean hasNoPorts();
+    /**
+     * <code>optional int64 NoPorts = 2;</code>
+     */
+    long getNoPorts();
+
+    // optional int64 InErrors = 3;
+    /**
+     * <code>optional int64 InErrors = 3;</code>
+     */
+    boolean hasInErrors();
+    /**
+     * <code>optional int64 InErrors = 3;</code>
+     */
+    long getInErrors();
+
+    // optional int64 OutDatagrams = 4;
+    /**
+     * <code>optional int64 OutDatagrams = 4;</code>
+     */
+    boolean hasOutDatagrams();
+    /**
+     * <code>optional int64 OutDatagrams = 4;</code>
+     */
+    long getOutDatagrams();
+
+    // optional int64 RcvbufErrors = 5;
+    /**
+     * <code>optional int64 RcvbufErrors = 5;</code>
+     */
+    boolean hasRcvbufErrors();
+    /**
+     * <code>optional int64 RcvbufErrors = 5;</code>
+     */
+    long getRcvbufErrors();
+
+    // optional int64 SndbufErrors = 6;
+    /**
+     * <code>optional int64 SndbufErrors = 6;</code>
+     */
+    boolean hasSndbufErrors();
+    /**
+     * <code>optional int64 SndbufErrors = 6;</code>
+     */
+    long getSndbufErrors();
+
+    // optional int64 InCsumErrors = 7;
+    /**
+     * <code>optional int64 InCsumErrors = 7;</code>
+     */
+    boolean hasInCsumErrors();
+    /**
+     * <code>optional int64 InCsumErrors = 7;</code>
+     */
+    long getInCsumErrors();
+
+    // optional int64 IgnoredMulti = 8;
+    /**
+     * <code>optional int64 IgnoredMulti = 8;</code>
+     */
+    boolean hasIgnoredMulti();
+    /**
+     * <code>optional int64 IgnoredMulti = 8;</code>
+     */
+    long getIgnoredMulti();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.UdpStatistics}
+   */
+  public static final class UdpStatistics extends
+      com.google.protobuf.GeneratedMessage
+      implements UdpStatisticsOrBuilder {
+    // Use UdpStatistics.newBuilder() to construct.
+    private UdpStatistics(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private UdpStatistics(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final UdpStatistics defaultInstance;
+    public static UdpStatistics getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public UdpStatistics getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private UdpStatistics(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 8: {
+              bitField0_ |= 0x00000001;
+              inDatagrams_ = input.readInt64();
+              break;
+            }
+            case 16: {
+              bitField0_ |= 0x00000002;
+              noPorts_ = input.readInt64();
+              break;
+            }
+            case 24: {
+              bitField0_ |= 0x00000004;
+              inErrors_ = input.readInt64();
+              break;
+            }
+            case 32: {
+              bitField0_ |= 0x00000008;
+              outDatagrams_ = input.readInt64();
+              break;
+            }
+            case 40: {
+              bitField0_ |= 0x00000010;
+              rcvbufErrors_ = input.readInt64();
+              break;
+            }
+            case 48: {
+              bitField0_ |= 0x00000020;
+              sndbufErrors_ = input.readInt64();
+              break;
+            }
+            case 56: {
+              bitField0_ |= 0x00000040;
+              inCsumErrors_ = input.readInt64();
+              break;
+            }
+            case 64: {
+              bitField0_ |= 0x00000080;
+              ignoredMulti_ = input.readInt64();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_UdpStatistics_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_UdpStatistics_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.UdpStatistics.class, org.apache.mesos.v1.Protos.UdpStatistics.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<UdpStatistics> PARSER =
+        new com.google.protobuf.AbstractParser<UdpStatistics>() {
+      public UdpStatistics parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new UdpStatistics(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<UdpStatistics> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // optional int64 InDatagrams = 1;
+    public static final int INDATAGRAMS_FIELD_NUMBER = 1;
+    private long inDatagrams_;
+    /**
+     * <code>optional int64 InDatagrams = 1;</code>
+     */
+    public boolean hasInDatagrams() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional int64 InDatagrams = 1;</code>
+     */
+    public long getInDatagrams() {
+      return inDatagrams_;
+    }
+
+    // optional int64 NoPorts = 2;
+    public static final int NOPORTS_FIELD_NUMBER = 2;
+    private long noPorts_;
+    /**
+     * <code>optional int64 NoPorts = 2;</code>
+     */
+    public boolean hasNoPorts() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional int64 NoPorts = 2;</code>
+     */
+    public long getNoPorts() {
+      return noPorts_;
+    }
+
+    // optional int64 InErrors = 3;
+    public static final int INERRORS_FIELD_NUMBER = 3;
+    private long inErrors_;
+    /**
+     * <code>optional int64 InErrors = 3;</code>
+     */
+    public boolean hasInErrors() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional int64 InErrors = 3;</code>
+     */
+    public long getInErrors() {
+      return inErrors_;
+    }
+
+    // optional int64 OutDatagrams = 4;
+    public static final int OUTDATAGRAMS_FIELD_NUMBER = 4;
+    private long outDatagrams_;
+    /**
+     * <code>optional int64 OutDatagrams = 4;</code>
+     */
+    public boolean hasOutDatagrams() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional int64 OutDatagrams = 4;</code>
+     */
+    public long getOutDatagrams() {
+      return outDatagrams_;
+    }
+
+    // optional int64 RcvbufErrors = 5;
+    public static final int RCVBUFERRORS_FIELD_NUMBER = 5;
+    private long rcvbufErrors_;
+    /**
+     * <code>optional int64 RcvbufErrors = 5;</code>
+     */
+    public boolean hasRcvbufErrors() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional int64 RcvbufErrors = 5;</code>
+     */
+    public long getRcvbufErrors() {
+      return rcvbufErrors_;
+    }
+
+    // optional int64 SndbufErrors = 6;
+    public static final int SNDBUFERRORS_FIELD_NUMBER = 6;
+    private long sndbufErrors_;
+    /**
+     * <code>optional int64 SndbufErrors = 6;</code>
+     */
+    public boolean hasSndbufErrors() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional int64 SndbufErrors = 6;</code>
+     */
+    public long getSndbufErrors() {
+      return sndbufErrors_;
+    }
+
+    // optional int64 InCsumErrors = 7;
+    public static final int INCSUMERRORS_FIELD_NUMBER = 7;
+    private long inCsumErrors_;
+    /**
+     * <code>optional int64 InCsumErrors = 7;</code>
+     */
+    public boolean hasInCsumErrors() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional int64 InCsumErrors = 7;</code>
+     */
+    public long getInCsumErrors() {
+      return inCsumErrors_;
+    }
+
+    // optional int64 IgnoredMulti = 8;
+    public static final int IGNOREDMULTI_FIELD_NUMBER = 8;
+    private long ignoredMulti_;
+    /**
+     * <code>optional int64 IgnoredMulti = 8;</code>
+     */
+    public boolean hasIgnoredMulti() {
+      return ((bitField0_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional int64 IgnoredMulti = 8;</code>
+     */
+    public long getIgnoredMulti() {
+      return ignoredMulti_;
+    }
+
+    private void initFields() {
+      inDatagrams_ = 0L;
+      noPorts_ = 0L;
+      inErrors_ = 0L;
+      outDatagrams_ = 0L;
+      rcvbufErrors_ = 0L;
+      sndbufErrors_ = 0L;
+      inCsumErrors_ = 0L;
+      ignoredMulti_ = 0L;
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeInt64(1, inDatagrams_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeInt64(2, noPorts_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeInt64(3, inErrors_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeInt64(4, outDatagrams_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeInt64(5, rcvbufErrors_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeInt64(6, sndbufErrors_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeInt64(7, inCsumErrors_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        output.writeInt64(8, ignoredMulti_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(1, inDatagrams_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(2, noPorts_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(3, inErrors_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(4, outDatagrams_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(5, rcvbufErrors_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(6, sndbufErrors_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(7, inCsumErrors_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(8, ignoredMulti_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.UdpStatistics parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.UdpStatistics parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.UdpStatistics parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.UdpStatistics parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.UdpStatistics parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.UdpStatistics parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.UdpStatistics parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.UdpStatistics parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.UdpStatistics parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.UdpStatistics parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.UdpStatistics prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.UdpStatistics}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.UdpStatisticsOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_UdpStatistics_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_UdpStatistics_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.UdpStatistics.class, org.apache.mesos.v1.Protos.UdpStatistics.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.UdpStatistics.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        inDatagrams_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        noPorts_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        inErrors_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        outDatagrams_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        rcvbufErrors_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000010);
+        sndbufErrors_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000020);
+        inCsumErrors_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000040);
+        ignoredMulti_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000080);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_UdpStatistics_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.UdpStatistics getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.UdpStatistics.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.UdpStatistics build() {
+        org.apache.mesos.v1.Protos.UdpStatistics result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.UdpStatistics buildPartial() {
+        org.apache.mesos.v1.Protos.UdpStatistics result = new org.apache.mesos.v1.Protos.UdpStatistics(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.inDatagrams_ = inDatagrams_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.noPorts_ = noPorts_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.inErrors_ = inErrors_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.outDatagrams_ = outDatagrams_;
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.rcvbufErrors_ = rcvbufErrors_;
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        result.sndbufErrors_ = sndbufErrors_;
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        result.inCsumErrors_ = inCsumErrors_;
+        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+          to_bitField0_ |= 0x00000080;
+        }
+        result.ignoredMulti_ = ignoredMulti_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.UdpStatistics) {
+          return mergeFrom((org.apache.mesos.v1.Protos.UdpStatistics)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.UdpStatistics other) {
+        if (other == org.apache.mesos.v1.Protos.UdpStatistics.getDefaultInstance()) return this;
+        if (other.hasInDatagrams()) {
+          setInDatagrams(other.getInDatagrams());
+        }
+        if (other.hasNoPorts()) {
+          setNoPorts(other.getNoPorts());
+        }
+        if (other.hasInErrors()) {
+          setInErrors(other.getInErrors());
+        }
+        if (other.hasOutDatagrams()) {
+          setOutDatagrams(other.getOutDatagrams());
+        }
+        if (other.hasRcvbufErrors()) {
+          setRcvbufErrors(other.getRcvbufErrors());
+        }
+        if (other.hasSndbufErrors()) {
+          setSndbufErrors(other.getSndbufErrors());
+        }
+        if (other.hasInCsumErrors()) {
+          setInCsumErrors(other.getInCsumErrors());
+        }
+        if (other.hasIgnoredMulti()) {
+          setIgnoredMulti(other.getIgnoredMulti());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.UdpStatistics parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.UdpStatistics) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional int64 InDatagrams = 1;
+      private long inDatagrams_ ;
+      /**
+       * <code>optional int64 InDatagrams = 1;</code>
+       */
+      public boolean hasInDatagrams() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional int64 InDatagrams = 1;</code>
+       */
+      public long getInDatagrams() {
+        return inDatagrams_;
+      }
+      /**
+       * <code>optional int64 InDatagrams = 1;</code>
+       */
+      public Builder setInDatagrams(long value) {
+        bitField0_ |= 0x00000001;
+        inDatagrams_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InDatagrams = 1;</code>
+       */
+      public Builder clearInDatagrams() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        inDatagrams_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 NoPorts = 2;
+      private long noPorts_ ;
+      /**
+       * <code>optional int64 NoPorts = 2;</code>
+       */
+      public boolean hasNoPorts() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional int64 NoPorts = 2;</code>
+       */
+      public long getNoPorts() {
+        return noPorts_;
+      }
+      /**
+       * <code>optional int64 NoPorts = 2;</code>
+       */
+      public Builder setNoPorts(long value) {
+        bitField0_ |= 0x00000002;
+        noPorts_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 NoPorts = 2;</code>
+       */
+      public Builder clearNoPorts() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        noPorts_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InErrors = 3;
+      private long inErrors_ ;
+      /**
+       * <code>optional int64 InErrors = 3;</code>
+       */
+      public boolean hasInErrors() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional int64 InErrors = 3;</code>
+       */
+      public long getInErrors() {
+        return inErrors_;
+      }
+      /**
+       * <code>optional int64 InErrors = 3;</code>
+       */
+      public Builder setInErrors(long value) {
+        bitField0_ |= 0x00000004;
+        inErrors_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InErrors = 3;</code>
+       */
+      public Builder clearInErrors() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        inErrors_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 OutDatagrams = 4;
+      private long outDatagrams_ ;
+      /**
+       * <code>optional int64 OutDatagrams = 4;</code>
+       */
+      public boolean hasOutDatagrams() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional int64 OutDatagrams = 4;</code>
+       */
+      public long getOutDatagrams() {
+        return outDatagrams_;
+      }
+      /**
+       * <code>optional int64 OutDatagrams = 4;</code>
+       */
+      public Builder setOutDatagrams(long value) {
+        bitField0_ |= 0x00000008;
+        outDatagrams_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 OutDatagrams = 4;</code>
+       */
+      public Builder clearOutDatagrams() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        outDatagrams_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 RcvbufErrors = 5;
+      private long rcvbufErrors_ ;
+      /**
+       * <code>optional int64 RcvbufErrors = 5;</code>
+       */
+      public boolean hasRcvbufErrors() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional int64 RcvbufErrors = 5;</code>
+       */
+      public long getRcvbufErrors() {
+        return rcvbufErrors_;
+      }
+      /**
+       * <code>optional int64 RcvbufErrors = 5;</code>
+       */
+      public Builder setRcvbufErrors(long value) {
+        bitField0_ |= 0x00000010;
+        rcvbufErrors_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 RcvbufErrors = 5;</code>
+       */
+      public Builder clearRcvbufErrors() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        rcvbufErrors_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 SndbufErrors = 6;
+      private long sndbufErrors_ ;
+      /**
+       * <code>optional int64 SndbufErrors = 6;</code>
+       */
+      public boolean hasSndbufErrors() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional int64 SndbufErrors = 6;</code>
+       */
+      public long getSndbufErrors() {
+        return sndbufErrors_;
+      }
+      /**
+       * <code>optional int64 SndbufErrors = 6;</code>
+       */
+      public Builder setSndbufErrors(long value) {
+        bitField0_ |= 0x00000020;
+        sndbufErrors_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 SndbufErrors = 6;</code>
+       */
+      public Builder clearSndbufErrors() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        sndbufErrors_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 InCsumErrors = 7;
+      private long inCsumErrors_ ;
+      /**
+       * <code>optional int64 InCsumErrors = 7;</code>
+       */
+      public boolean hasInCsumErrors() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional int64 InCsumErrors = 7;</code>
+       */
+      public long getInCsumErrors() {
+        return inCsumErrors_;
+      }
+      /**
+       * <code>optional int64 InCsumErrors = 7;</code>
+       */
+      public Builder setInCsumErrors(long value) {
+        bitField0_ |= 0x00000040;
+        inCsumErrors_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 InCsumErrors = 7;</code>
+       */
+      public Builder clearInCsumErrors() {
+        bitField0_ = (bitField0_ & ~0x00000040);
+        inCsumErrors_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional int64 IgnoredMulti = 8;
+      private long ignoredMulti_ ;
+      /**
+       * <code>optional int64 IgnoredMulti = 8;</code>
+       */
+      public boolean hasIgnoredMulti() {
+        return ((bitField0_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional int64 IgnoredMulti = 8;</code>
+       */
+      public long getIgnoredMulti() {
+        return ignoredMulti_;
+      }
+      /**
+       * <code>optional int64 IgnoredMulti = 8;</code>
+       */
+      public Builder setIgnoredMulti(long value) {
+        bitField0_ |= 0x00000080;
+        ignoredMulti_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int64 IgnoredMulti = 8;</code>
+       */
+      public Builder clearIgnoredMulti() {
+        bitField0_ = (bitField0_ & ~0x00000080);
+        ignoredMulti_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.UdpStatistics)
+    }
+
+    static {
+      defaultInstance = new UdpStatistics(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.UdpStatistics)
+  }
+
+  public interface SNMPStatisticsOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional .mesos.v1.IpStatistics ip_stats = 1;
+    /**
+     * <code>optional .mesos.v1.IpStatistics ip_stats = 1;</code>
+     */
+    boolean hasIpStats();
+    /**
+     * <code>optional .mesos.v1.IpStatistics ip_stats = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.IpStatistics getIpStats();
+    /**
+     * <code>optional .mesos.v1.IpStatistics ip_stats = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.IpStatisticsOrBuilder getIpStatsOrBuilder();
+
+    // optional .mesos.v1.IcmpStatistics icmp_stats = 2;
+    /**
+     * <code>optional .mesos.v1.IcmpStatistics icmp_stats = 2;</code>
+     */
+    boolean hasIcmpStats();
+    /**
+     * <code>optional .mesos.v1.IcmpStatistics icmp_stats = 2;</code>
+     */
+    org.apache.mesos.v1.Protos.IcmpStatistics getIcmpStats();
+    /**
+     * <code>optional .mesos.v1.IcmpStatistics icmp_stats = 2;</code>
+     */
+    org.apache.mesos.v1.Protos.IcmpStatisticsOrBuilder getIcmpStatsOrBuilder();
+
+    // optional .mesos.v1.TcpStatistics tcp_stats = 3;
+    /**
+     * <code>optional .mesos.v1.TcpStatistics tcp_stats = 3;</code>
+     */
+    boolean hasTcpStats();
+    /**
+     * <code>optional .mesos.v1.TcpStatistics tcp_stats = 3;</code>
+     */
+    org.apache.mesos.v1.Protos.TcpStatistics getTcpStats();
+    /**
+     * <code>optional .mesos.v1.TcpStatistics tcp_stats = 3;</code>
+     */
+    org.apache.mesos.v1.Protos.TcpStatisticsOrBuilder getTcpStatsOrBuilder();
+
+    // optional .mesos.v1.UdpStatistics udp_stats = 4;
+    /**
+     * <code>optional .mesos.v1.UdpStatistics udp_stats = 4;</code>
+     */
+    boolean hasUdpStats();
+    /**
+     * <code>optional .mesos.v1.UdpStatistics udp_stats = 4;</code>
+     */
+    org.apache.mesos.v1.Protos.UdpStatistics getUdpStats();
+    /**
+     * <code>optional .mesos.v1.UdpStatistics udp_stats = 4;</code>
+     */
+    org.apache.mesos.v1.Protos.UdpStatisticsOrBuilder getUdpStatsOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.SNMPStatistics}
+   */
+  public static final class SNMPStatistics extends
+      com.google.protobuf.GeneratedMessage
+      implements SNMPStatisticsOrBuilder {
+    // Use SNMPStatistics.newBuilder() to construct.
+    private SNMPStatistics(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private SNMPStatistics(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final SNMPStatistics defaultInstance;
+    public static SNMPStatistics getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public SNMPStatistics getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private SNMPStatistics(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              org.apache.mesos.v1.Protos.IpStatistics.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                subBuilder = ipStats_.toBuilder();
+              }
+              ipStats_ = input.readMessage(org.apache.mesos.v1.Protos.IpStatistics.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(ipStats_);
+                ipStats_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+            case 18: {
+              org.apache.mesos.v1.Protos.IcmpStatistics.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = icmpStats_.toBuilder();
+              }
+              icmpStats_ = input.readMessage(org.apache.mesos.v1.Protos.IcmpStatistics.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(icmpStats_);
+                icmpStats_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+            case 26: {
+              org.apache.mesos.v1.Protos.TcpStatistics.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                subBuilder = tcpStats_.toBuilder();
+              }
+              tcpStats_ = input.readMessage(org.apache.mesos.v1.Protos.TcpStatistics.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(tcpStats_);
+                tcpStats_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000004;
+              break;
+            }
+            case 34: {
+              org.apache.mesos.v1.Protos.UdpStatistics.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                subBuilder = udpStats_.toBuilder();
+              }
+              udpStats_ = input.readMessage(org.apache.mesos.v1.Protos.UdpStatistics.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(udpStats_);
+                udpStats_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000008;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_SNMPStatistics_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_SNMPStatistics_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.SNMPStatistics.class, org.apache.mesos.v1.Protos.SNMPStatistics.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<SNMPStatistics> PARSER =
+        new com.google.protobuf.AbstractParser<SNMPStatistics>() {
+      public SNMPStatistics parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new SNMPStatistics(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<SNMPStatistics> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // optional .mesos.v1.IpStatistics ip_stats = 1;
+    public static final int IP_STATS_FIELD_NUMBER = 1;
+    private org.apache.mesos.v1.Protos.IpStatistics ipStats_;
+    /**
+     * <code>optional .mesos.v1.IpStatistics ip_stats = 1;</code>
+     */
+    public boolean hasIpStats() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional .mesos.v1.IpStatistics ip_stats = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.IpStatistics getIpStats() {
+      return ipStats_;
+    }
+    /**
+     * <code>optional .mesos.v1.IpStatistics ip_stats = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.IpStatisticsOrBuilder getIpStatsOrBuilder() {
+      return ipStats_;
+    }
+
+    // optional .mesos.v1.IcmpStatistics icmp_stats = 2;
+    public static final int ICMP_STATS_FIELD_NUMBER = 2;
+    private org.apache.mesos.v1.Protos.IcmpStatistics icmpStats_;
+    /**
+     * <code>optional .mesos.v1.IcmpStatistics icmp_stats = 2;</code>
+     */
+    public boolean hasIcmpStats() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional .mesos.v1.IcmpStatistics icmp_stats = 2;</code>
+     */
+    public org.apache.mesos.v1.Protos.IcmpStatistics getIcmpStats() {
+      return icmpStats_;
+    }
+    /**
+     * <code>optional .mesos.v1.IcmpStatistics icmp_stats = 2;</code>
+     */
+    public org.apache.mesos.v1.Protos.IcmpStatisticsOrBuilder getIcmpStatsOrBuilder() {
+      return icmpStats_;
+    }
+
+    // optional .mesos.v1.TcpStatistics tcp_stats = 3;
+    public static final int TCP_STATS_FIELD_NUMBER = 3;
+    private org.apache.mesos.v1.Protos.TcpStatistics tcpStats_;
+    /**
+     * <code>optional .mesos.v1.TcpStatistics tcp_stats = 3;</code>
+     */
+    public boolean hasTcpStats() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional .mesos.v1.TcpStatistics tcp_stats = 3;</code>
+     */
+    public org.apache.mesos.v1.Protos.TcpStatistics getTcpStats() {
+      return tcpStats_;
+    }
+    /**
+     * <code>optional .mesos.v1.TcpStatistics tcp_stats = 3;</code>
+     */
+    public org.apache.mesos.v1.Protos.TcpStatisticsOrBuilder getTcpStatsOrBuilder() {
+      return tcpStats_;
+    }
+
+    // optional .mesos.v1.UdpStatistics udp_stats = 4;
+    public static final int UDP_STATS_FIELD_NUMBER = 4;
+    private org.apache.mesos.v1.Protos.UdpStatistics udpStats_;
+    /**
+     * <code>optional .mesos.v1.UdpStatistics udp_stats = 4;</code>
+     */
+    public boolean hasUdpStats() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional .mesos.v1.UdpStatistics udp_stats = 4;</code>
+     */
+    public org.apache.mesos.v1.Protos.UdpStatistics getUdpStats() {
+      return udpStats_;
+    }
+    /**
+     * <code>optional .mesos.v1.UdpStatistics udp_stats = 4;</code>
+     */
+    public org.apache.mesos.v1.Protos.UdpStatisticsOrBuilder getUdpStatsOrBuilder() {
+      return udpStats_;
+    }
+
+    private void initFields() {
+      ipStats_ = org.apache.mesos.v1.Protos.IpStatistics.getDefaultInstance();
+      icmpStats_ = org.apache.mesos.v1.Protos.IcmpStatistics.getDefaultInstance();
+      tcpStats_ = org.apache.mesos.v1.Protos.TcpStatistics.getDefaultInstance();
+      udpStats_ = org.apache.mesos.v1.Protos.UdpStatistics.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeMessage(1, ipStats_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(2, icmpStats_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeMessage(3, tcpStats_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeMessage(4, udpStats_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, ipStats_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, icmpStats_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, tcpStats_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, udpStats_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.SNMPStatistics parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.SNMPStatistics parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.SNMPStatistics parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.SNMPStatistics parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.SNMPStatistics parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.SNMPStatistics parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.SNMPStatistics parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.SNMPStatistics parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.SNMPStatistics parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.SNMPStatistics parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.SNMPStatistics prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.SNMPStatistics}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.SNMPStatisticsOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_SNMPStatistics_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_SNMPStatistics_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.SNMPStatistics.class, org.apache.mesos.v1.Protos.SNMPStatistics.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.SNMPStatistics.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getIpStatsFieldBuilder();
+          getIcmpStatsFieldBuilder();
+          getTcpStatsFieldBuilder();
+          getUdpStatsFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (ipStatsBuilder_ == null) {
+          ipStats_ = org.apache.mesos.v1.Protos.IpStatistics.getDefaultInstance();
+        } else {
+          ipStatsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (icmpStatsBuilder_ == null) {
+          icmpStats_ = org.apache.mesos.v1.Protos.IcmpStatistics.getDefaultInstance();
+        } else {
+          icmpStatsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        if (tcpStatsBuilder_ == null) {
+          tcpStats_ = org.apache.mesos.v1.Protos.TcpStatistics.getDefaultInstance();
+        } else {
+          tcpStatsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        if (udpStatsBuilder_ == null) {
+          udpStats_ = org.apache.mesos.v1.Protos.UdpStatistics.getDefaultInstance();
+        } else {
+          udpStatsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_SNMPStatistics_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.SNMPStatistics getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.SNMPStatistics.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.SNMPStatistics build() {
+        org.apache.mesos.v1.Protos.SNMPStatistics result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.SNMPStatistics buildPartial() {
+        org.apache.mesos.v1.Protos.SNMPStatistics result = new org.apache.mesos.v1.Protos.SNMPStatistics(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        if (ipStatsBuilder_ == null) {
+          result.ipStats_ = ipStats_;
+        } else {
+          result.ipStats_ = ipStatsBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (icmpStatsBuilder_ == null) {
+          result.icmpStats_ = icmpStats_;
+        } else {
+          result.icmpStats_ = icmpStatsBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        if (tcpStatsBuilder_ == null) {
+          result.tcpStats_ = tcpStats_;
+        } else {
+          result.tcpStats_ = tcpStatsBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        if (udpStatsBuilder_ == null) {
+          result.udpStats_ = udpStats_;
+        } else {
+          result.udpStats_ = udpStatsBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.SNMPStatistics) {
+          return mergeFrom((org.apache.mesos.v1.Protos.SNMPStatistics)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.SNMPStatistics other) {
+        if (other == org.apache.mesos.v1.Protos.SNMPStatistics.getDefaultInstance()) return this;
+        if (other.hasIpStats()) {
+          mergeIpStats(other.getIpStats());
+        }
+        if (other.hasIcmpStats()) {
+          mergeIcmpStats(other.getIcmpStats());
+        }
+        if (other.hasTcpStats()) {
+          mergeTcpStats(other.getTcpStats());
+        }
+        if (other.hasUdpStats()) {
+          mergeUdpStats(other.getUdpStats());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.SNMPStatistics parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.SNMPStatistics) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional .mesos.v1.IpStatistics ip_stats = 1;
+      private org.apache.mesos.v1.Protos.IpStatistics ipStats_ = org.apache.mesos.v1.Protos.IpStatistics.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.IpStatistics, org.apache.mesos.v1.Protos.IpStatistics.Builder, org.apache.mesos.v1.Protos.IpStatisticsOrBuilder> ipStatsBuilder_;
+      /**
+       * <code>optional .mesos.v1.IpStatistics ip_stats = 1;</code>
+       */
+      public boolean hasIpStats() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.v1.IpStatistics ip_stats = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.IpStatistics getIpStats() {
+        if (ipStatsBuilder_ == null) {
+          return ipStats_;
+        } else {
+          return ipStatsBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.IpStatistics ip_stats = 1;</code>
+       */
+      public Builder setIpStats(org.apache.mesos.v1.Protos.IpStatistics value) {
+        if (ipStatsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ipStats_ = value;
+          onChanged();
+        } else {
+          ipStatsBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.IpStatistics ip_stats = 1;</code>
+       */
+      public Builder setIpStats(
+          org.apache.mesos.v1.Protos.IpStatistics.Builder builderForValue) {
+        if (ipStatsBuilder_ == null) {
+          ipStats_ = builderForValue.build();
+          onChanged();
+        } else {
+          ipStatsBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.IpStatistics ip_stats = 1;</code>
+       */
+      public Builder mergeIpStats(org.apache.mesos.v1.Protos.IpStatistics value) {
+        if (ipStatsBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001) &&
+              ipStats_ != org.apache.mesos.v1.Protos.IpStatistics.getDefaultInstance()) {
+            ipStats_ =
+              org.apache.mesos.v1.Protos.IpStatistics.newBuilder(ipStats_).mergeFrom(value).buildPartial();
+          } else {
+            ipStats_ = value;
+          }
+          onChanged();
+        } else {
+          ipStatsBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.IpStatistics ip_stats = 1;</code>
+       */
+      public Builder clearIpStats() {
+        if (ipStatsBuilder_ == null) {
+          ipStats_ = org.apache.mesos.v1.Protos.IpStatistics.getDefaultInstance();
+          onChanged();
+        } else {
+          ipStatsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.IpStatistics ip_stats = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.IpStatistics.Builder getIpStatsBuilder() {
+        bitField0_ |= 0x00000001;
+        onChanged();
+        return getIpStatsFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.IpStatistics ip_stats = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.IpStatisticsOrBuilder getIpStatsOrBuilder() {
+        if (ipStatsBuilder_ != null) {
+          return ipStatsBuilder_.getMessageOrBuilder();
+        } else {
+          return ipStats_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.IpStatistics ip_stats = 1;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.IpStatistics, org.apache.mesos.v1.Protos.IpStatistics.Builder, org.apache.mesos.v1.Protos.IpStatisticsOrBuilder> 
+          getIpStatsFieldBuilder() {
+        if (ipStatsBuilder_ == null) {
+          ipStatsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.IpStatistics, org.apache.mesos.v1.Protos.IpStatistics.Builder, org.apache.mesos.v1.Protos.IpStatisticsOrBuilder>(
+                  ipStats_,
+                  getParentForChildren(),
+                  isClean());
+          ipStats_ = null;
+        }
+        return ipStatsBuilder_;
+      }
+
+      // optional .mesos.v1.IcmpStatistics icmp_stats = 2;
+      private org.apache.mesos.v1.Protos.IcmpStatistics icmpStats_ = org.apache.mesos.v1.Protos.IcmpStatistics.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.IcmpStatistics, org.apache.mesos.v1.Protos.IcmpStatistics.Builder, org.apache.mesos.v1.Protos.IcmpStatisticsOrBuilder> icmpStatsBuilder_;
+      /**
+       * <code>optional .mesos.v1.IcmpStatistics icmp_stats = 2;</code>
+       */
+      public boolean hasIcmpStats() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.v1.IcmpStatistics icmp_stats = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.IcmpStatistics getIcmpStats() {
+        if (icmpStatsBuilder_ == null) {
+          return icmpStats_;
+        } else {
+          return icmpStatsBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.IcmpStatistics icmp_stats = 2;</code>
+       */
+      public Builder setIcmpStats(org.apache.mesos.v1.Protos.IcmpStatistics value) {
+        if (icmpStatsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          icmpStats_ = value;
+          onChanged();
+        } else {
+          icmpStatsBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.IcmpStatistics icmp_stats = 2;</code>
+       */
+      public Builder setIcmpStats(
+          org.apache.mesos.v1.Protos.IcmpStatistics.Builder builderForValue) {
+        if (icmpStatsBuilder_ == null) {
+          icmpStats_ = builderForValue.build();
+          onChanged();
+        } else {
+          icmpStatsBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.IcmpStatistics icmp_stats = 2;</code>
+       */
+      public Builder mergeIcmpStats(org.apache.mesos.v1.Protos.IcmpStatistics value) {
+        if (icmpStatsBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              icmpStats_ != org.apache.mesos.v1.Protos.IcmpStatistics.getDefaultInstance()) {
+            icmpStats_ =
+              org.apache.mesos.v1.Protos.IcmpStatistics.newBuilder(icmpStats_).mergeFrom(value).buildPartial();
+          } else {
+            icmpStats_ = value;
+          }
+          onChanged();
+        } else {
+          icmpStatsBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.IcmpStatistics icmp_stats = 2;</code>
+       */
+      public Builder clearIcmpStats() {
+        if (icmpStatsBuilder_ == null) {
+          icmpStats_ = org.apache.mesos.v1.Protos.IcmpStatistics.getDefaultInstance();
+          onChanged();
+        } else {
+          icmpStatsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.IcmpStatistics icmp_stats = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.IcmpStatistics.Builder getIcmpStatsBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getIcmpStatsFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.IcmpStatistics icmp_stats = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.IcmpStatisticsOrBuilder getIcmpStatsOrBuilder() {
+        if (icmpStatsBuilder_ != null) {
+          return icmpStatsBuilder_.getMessageOrBuilder();
+        } else {
+          return icmpStats_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.IcmpStatistics icmp_stats = 2;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.IcmpStatistics, org.apache.mesos.v1.Protos.IcmpStatistics.Builder, org.apache.mesos.v1.Protos.IcmpStatisticsOrBuilder> 
+          getIcmpStatsFieldBuilder() {
+        if (icmpStatsBuilder_ == null) {
+          icmpStatsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.IcmpStatistics, org.apache.mesos.v1.Protos.IcmpStatistics.Builder, org.apache.mesos.v1.Protos.IcmpStatisticsOrBuilder>(
+                  icmpStats_,
+                  getParentForChildren(),
+                  isClean());
+          icmpStats_ = null;
+        }
+        return icmpStatsBuilder_;
+      }
+
+      // optional .mesos.v1.TcpStatistics tcp_stats = 3;
+      private org.apache.mesos.v1.Protos.TcpStatistics tcpStats_ = org.apache.mesos.v1.Protos.TcpStatistics.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.TcpStatistics, org.apache.mesos.v1.Protos.TcpStatistics.Builder, org.apache.mesos.v1.Protos.TcpStatisticsOrBuilder> tcpStatsBuilder_;
+      /**
+       * <code>optional .mesos.v1.TcpStatistics tcp_stats = 3;</code>
+       */
+      public boolean hasTcpStats() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.v1.TcpStatistics tcp_stats = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.TcpStatistics getTcpStats() {
+        if (tcpStatsBuilder_ == null) {
+          return tcpStats_;
+        } else {
+          return tcpStatsBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.TcpStatistics tcp_stats = 3;</code>
+       */
+      public Builder setTcpStats(org.apache.mesos.v1.Protos.TcpStatistics value) {
+        if (tcpStatsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          tcpStats_ = value;
+          onChanged();
+        } else {
+          tcpStatsBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.TcpStatistics tcp_stats = 3;</code>
+       */
+      public Builder setTcpStats(
+          org.apache.mesos.v1.Protos.TcpStatistics.Builder builderForValue) {
+        if (tcpStatsBuilder_ == null) {
+          tcpStats_ = builderForValue.build();
+          onChanged();
+        } else {
+          tcpStatsBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.TcpStatistics tcp_stats = 3;</code>
+       */
+      public Builder mergeTcpStats(org.apache.mesos.v1.Protos.TcpStatistics value) {
+        if (tcpStatsBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) == 0x00000004) &&
+              tcpStats_ != org.apache.mesos.v1.Protos.TcpStatistics.getDefaultInstance()) {
+            tcpStats_ =
+              org.apache.mesos.v1.Protos.TcpStatistics.newBuilder(tcpStats_).mergeFrom(value).buildPartial();
+          } else {
+            tcpStats_ = value;
+          }
+          onChanged();
+        } else {
+          tcpStatsBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.TcpStatistics tcp_stats = 3;</code>
+       */
+      public Builder clearTcpStats() {
+        if (tcpStatsBuilder_ == null) {
+          tcpStats_ = org.apache.mesos.v1.Protos.TcpStatistics.getDefaultInstance();
+          onChanged();
+        } else {
+          tcpStatsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.TcpStatistics tcp_stats = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.TcpStatistics.Builder getTcpStatsBuilder() {
+        bitField0_ |= 0x00000004;
+        onChanged();
+        return getTcpStatsFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.TcpStatistics tcp_stats = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.TcpStatisticsOrBuilder getTcpStatsOrBuilder() {
+        if (tcpStatsBuilder_ != null) {
+          return tcpStatsBuilder_.getMessageOrBuilder();
+        } else {
+          return tcpStats_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.TcpStatistics tcp_stats = 3;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.TcpStatistics, org.apache.mesos.v1.Protos.TcpStatistics.Builder, org.apache.mesos.v1.Protos.TcpStatisticsOrBuilder> 
+          getTcpStatsFieldBuilder() {
+        if (tcpStatsBuilder_ == null) {
+          tcpStatsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.TcpStatistics, org.apache.mesos.v1.Protos.TcpStatistics.Builder, org.apache.mesos.v1.Protos.TcpStatisticsOrBuilder>(
+                  tcpStats_,
+                  getParentForChildren(),
+                  isClean());
+          tcpStats_ = null;
+        }
+        return tcpStatsBuilder_;
+      }
+
+      // optional .mesos.v1.UdpStatistics udp_stats = 4;
+      private org.apache.mesos.v1.Protos.UdpStatistics udpStats_ = org.apache.mesos.v1.Protos.UdpStatistics.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.UdpStatistics, org.apache.mesos.v1.Protos.UdpStatistics.Builder, org.apache.mesos.v1.Protos.UdpStatisticsOrBuilder> udpStatsBuilder_;
+      /**
+       * <code>optional .mesos.v1.UdpStatistics udp_stats = 4;</code>
+       */
+      public boolean hasUdpStats() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.v1.UdpStatistics udp_stats = 4;</code>
+       */
+      public org.apache.mesos.v1.Protos.UdpStatistics getUdpStats() {
+        if (udpStatsBuilder_ == null) {
+          return udpStats_;
+        } else {
+          return udpStatsBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.UdpStatistics udp_stats = 4;</code>
+       */
+      public Builder setUdpStats(org.apache.mesos.v1.Protos.UdpStatistics value) {
+        if (udpStatsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          udpStats_ = value;
+          onChanged();
+        } else {
+          udpStatsBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.UdpStatistics udp_stats = 4;</code>
+       */
+      public Builder setUdpStats(
+          org.apache.mesos.v1.Protos.UdpStatistics.Builder builderForValue) {
+        if (udpStatsBuilder_ == null) {
+          udpStats_ = builderForValue.build();
+          onChanged();
+        } else {
+          udpStatsBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.UdpStatistics udp_stats = 4;</code>
+       */
+      public Builder mergeUdpStats(org.apache.mesos.v1.Protos.UdpStatistics value) {
+        if (udpStatsBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008) &&
+              udpStats_ != org.apache.mesos.v1.Protos.UdpStatistics.getDefaultInstance()) {
+            udpStats_ =
+              org.apache.mesos.v1.Protos.UdpStatistics.newBuilder(udpStats_).mergeFrom(value).buildPartial();
+          } else {
+            udpStats_ = value;
+          }
+          onChanged();
+        } else {
+          udpStatsBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.UdpStatistics udp_stats = 4;</code>
+       */
+      public Builder clearUdpStats() {
+        if (udpStatsBuilder_ == null) {
+          udpStats_ = org.apache.mesos.v1.Protos.UdpStatistics.getDefaultInstance();
+          onChanged();
+        } else {
+          udpStatsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.UdpStatistics udp_stats = 4;</code>
+       */
+      public org.apache.mesos.v1.Protos.UdpStatistics.Builder getUdpStatsBuilder() {
+        bitField0_ |= 0x00000008;
+        onChanged();
+        return getUdpStatsFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.UdpStatistics udp_stats = 4;</code>
+       */
+      public org.apache.mesos.v1.Protos.UdpStatisticsOrBuilder getUdpStatsOrBuilder() {
+        if (udpStatsBuilder_ != null) {
+          return udpStatsBuilder_.getMessageOrBuilder();
+        } else {
+          return udpStats_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.UdpStatistics udp_stats = 4;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.UdpStatistics, org.apache.mesos.v1.Protos.UdpStatistics.Builder, org.apache.mesos.v1.Protos.UdpStatisticsOrBuilder> 
+          getUdpStatsFieldBuilder() {
+        if (udpStatsBuilder_ == null) {
+          udpStatsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.UdpStatistics, org.apache.mesos.v1.Protos.UdpStatistics.Builder, org.apache.mesos.v1.Protos.UdpStatisticsOrBuilder>(
+                  udpStats_,
+                  getParentForChildren(),
+                  isClean());
+          udpStats_ = null;
+        }
+        return udpStatsBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.SNMPStatistics)
+    }
+
+    static {
+      defaultInstance = new SNMPStatistics(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.SNMPStatistics)
+  }
+
+  public interface DiskStatisticsOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional .mesos.v1.Resource.DiskInfo.Source source = 1;
+    /**
+     * <code>optional .mesos.v1.Resource.DiskInfo.Source source = 1;</code>
+     */
+    boolean hasSource();
+    /**
+     * <code>optional .mesos.v1.Resource.DiskInfo.Source source = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.Resource.DiskInfo.Source getSource();
+    /**
+     * <code>optional .mesos.v1.Resource.DiskInfo.Source source = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.Resource.DiskInfo.SourceOrBuilder getSourceOrBuilder();
+
+    // optional .mesos.v1.Resource.DiskInfo.Persistence persistence = 2;
+    /**
+     * <code>optional .mesos.v1.Resource.DiskInfo.Persistence persistence = 2;</code>
+     */
+    boolean hasPersistence();
+    /**
+     * <code>optional .mesos.v1.Resource.DiskInfo.Persistence persistence = 2;</code>
+     */
+    org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence getPersistence();
+    /**
+     * <code>optional .mesos.v1.Resource.DiskInfo.Persistence persistence = 2;</code>
+     */
+    org.apache.mesos.v1.Protos.Resource.DiskInfo.PersistenceOrBuilder getPersistenceOrBuilder();
+
+    // optional uint64 limit_bytes = 3;
+    /**
+     * <code>optional uint64 limit_bytes = 3;</code>
+     */
+    boolean hasLimitBytes();
+    /**
+     * <code>optional uint64 limit_bytes = 3;</code>
+     */
+    long getLimitBytes();
+
+    // optional uint64 used_bytes = 4;
+    /**
+     * <code>optional uint64 used_bytes = 4;</code>
+     */
+    boolean hasUsedBytes();
+    /**
+     * <code>optional uint64 used_bytes = 4;</code>
+     */
+    long getUsedBytes();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.DiskStatistics}
+   */
+  public static final class DiskStatistics extends
+      com.google.protobuf.GeneratedMessage
+      implements DiskStatisticsOrBuilder {
+    // Use DiskStatistics.newBuilder() to construct.
+    private DiskStatistics(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private DiskStatistics(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final DiskStatistics defaultInstance;
+    public static DiskStatistics getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public DiskStatistics getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private DiskStatistics(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                subBuilder = source_.toBuilder();
+              }
+              source_ = input.readMessage(org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(source_);
+                source_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+            case 18: {
+              org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = persistence_.toBuilder();
+              }
+              persistence_ = input.readMessage(org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(persistence_);
+                persistence_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+            case 24: {
+              bitField0_ |= 0x00000004;
+              limitBytes_ = input.readUInt64();
+              break;
+            }
+            case 32: {
+              bitField0_ |= 0x00000008;
+              usedBytes_ = input.readUInt64();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DiskStatistics_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DiskStatistics_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.DiskStatistics.class, org.apache.mesos.v1.Protos.DiskStatistics.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<DiskStatistics> PARSER =
+        new com.google.protobuf.AbstractParser<DiskStatistics>() {
+      public DiskStatistics parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new DiskStatistics(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<DiskStatistics> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // optional .mesos.v1.Resource.DiskInfo.Source source = 1;
+    public static final int SOURCE_FIELD_NUMBER = 1;
+    private org.apache.mesos.v1.Protos.Resource.DiskInfo.Source source_;
+    /**
+     * <code>optional .mesos.v1.Resource.DiskInfo.Source source = 1;</code>
+     */
+    public boolean hasSource() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional .mesos.v1.Resource.DiskInfo.Source source = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.Resource.DiskInfo.Source getSource() {
+      return source_;
+    }
+    /**
+     * <code>optional .mesos.v1.Resource.DiskInfo.Source source = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.Resource.DiskInfo.SourceOrBuilder getSourceOrBuilder() {
+      return source_;
+    }
+
+    // optional .mesos.v1.Resource.DiskInfo.Persistence persistence = 2;
+    public static final int PERSISTENCE_FIELD_NUMBER = 2;
+    private org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence persistence_;
+    /**
+     * <code>optional .mesos.v1.Resource.DiskInfo.Persistence persistence = 2;</code>
+     */
+    public boolean hasPersistence() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional .mesos.v1.Resource.DiskInfo.Persistence persistence = 2;</code>
+     */
+    public org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence getPersistence() {
+      return persistence_;
+    }
+    /**
+     * <code>optional .mesos.v1.Resource.DiskInfo.Persistence persistence = 2;</code>
+     */
+    public org.apache.mesos.v1.Protos.Resource.DiskInfo.PersistenceOrBuilder getPersistenceOrBuilder() {
+      return persistence_;
+    }
+
+    // optional uint64 limit_bytes = 3;
+    public static final int LIMIT_BYTES_FIELD_NUMBER = 3;
+    private long limitBytes_;
+    /**
+     * <code>optional uint64 limit_bytes = 3;</code>
+     */
+    public boolean hasLimitBytes() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional uint64 limit_bytes = 3;</code>
+     */
+    public long getLimitBytes() {
+      return limitBytes_;
+    }
+
+    // optional uint64 used_bytes = 4;
+    public static final int USED_BYTES_FIELD_NUMBER = 4;
+    private long usedBytes_;
+    /**
+     * <code>optional uint64 used_bytes = 4;</code>
+     */
+    public boolean hasUsedBytes() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional uint64 used_bytes = 4;</code>
+     */
+    public long getUsedBytes() {
+      return usedBytes_;
+    }
+
+    private void initFields() {
+      source_ = org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.getDefaultInstance();
+      persistence_ = org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence.getDefaultInstance();
+      limitBytes_ = 0L;
+      usedBytes_ = 0L;
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (hasSource()) {
+        if (!getSource().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasPersistence()) {
+        if (!getPersistence().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeMessage(1, source_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(2, persistence_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeUInt64(3, limitBytes_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeUInt64(4, usedBytes_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, source_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, persistence_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(3, limitBytes_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(4, usedBytes_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.DiskStatistics parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.DiskStatistics parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.DiskStatistics parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.DiskStatistics parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.DiskStatistics parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.DiskStatistics parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.DiskStatistics parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.DiskStatistics parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.DiskStatistics parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.DiskStatistics parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.DiskStatistics prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.DiskStatistics}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.DiskStatisticsOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DiskStatistics_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DiskStatistics_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.DiskStatistics.class, org.apache.mesos.v1.Protos.DiskStatistics.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.DiskStatistics.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getSourceFieldBuilder();
+          getPersistenceFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (sourceBuilder_ == null) {
+          source_ = org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.getDefaultInstance();
+        } else {
+          sourceBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (persistenceBuilder_ == null) {
+          persistence_ = org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence.getDefaultInstance();
+        } else {
+          persistenceBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        limitBytes_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        usedBytes_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DiskStatistics_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.DiskStatistics getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.DiskStatistics.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.DiskStatistics build() {
+        org.apache.mesos.v1.Protos.DiskStatistics result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.DiskStatistics buildPartial() {
+        org.apache.mesos.v1.Protos.DiskStatistics result = new org.apache.mesos.v1.Protos.DiskStatistics(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        if (sourceBuilder_ == null) {
+          result.source_ = source_;
+        } else {
+          result.source_ = sourceBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (persistenceBuilder_ == null) {
+          result.persistence_ = persistence_;
+        } else {
+          result.persistence_ = persistenceBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.limitBytes_ = limitBytes_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.usedBytes_ = usedBytes_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.DiskStatistics) {
+          return mergeFrom((org.apache.mesos.v1.Protos.DiskStatistics)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.DiskStatistics other) {
+        if (other == org.apache.mesos.v1.Protos.DiskStatistics.getDefaultInstance()) return this;
+        if (other.hasSource()) {
+          mergeSource(other.getSource());
+        }
+        if (other.hasPersistence()) {
+          mergePersistence(other.getPersistence());
+        }
+        if (other.hasLimitBytes()) {
+          setLimitBytes(other.getLimitBytes());
+        }
+        if (other.hasUsedBytes()) {
+          setUsedBytes(other.getUsedBytes());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (hasSource()) {
+          if (!getSource().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasPersistence()) {
+          if (!getPersistence().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.DiskStatistics parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.DiskStatistics) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional .mesos.v1.Resource.DiskInfo.Source source = 1;
+      private org.apache.mesos.v1.Protos.Resource.DiskInfo.Source source_ = org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Resource.DiskInfo.Source, org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Builder, org.apache.mesos.v1.Protos.Resource.DiskInfo.SourceOrBuilder> sourceBuilder_;
+      /**
+       * <code>optional .mesos.v1.Resource.DiskInfo.Source source = 1;</code>
+       */
+      public boolean hasSource() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.DiskInfo.Source source = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.Resource.DiskInfo.Source getSource() {
+        if (sourceBuilder_ == null) {
+          return source_;
+        } else {
+          return sourceBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.DiskInfo.Source source = 1;</code>
+       */
+      public Builder setSource(org.apache.mesos.v1.Protos.Resource.DiskInfo.Source value) {
+        if (sourceBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          source_ = value;
+          onChanged();
+        } else {
+          sourceBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.DiskInfo.Source source = 1;</code>
+       */
+      public Builder setSource(
+          org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Builder builderForValue) {
+        if (sourceBuilder_ == null) {
+          source_ = builderForValue.build();
+          onChanged();
+        } else {
+          sourceBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.DiskInfo.Source source = 1;</code>
+       */
+      public Builder mergeSource(org.apache.mesos.v1.Protos.Resource.DiskInfo.Source value) {
+        if (sourceBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001) &&
+              source_ != org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.getDefaultInstance()) {
+            source_ =
+              org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.newBuilder(source_).mergeFrom(value).buildPartial();
+          } else {
+            source_ = value;
+          }
+          onChanged();
+        } else {
+          sourceBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.DiskInfo.Source source = 1;</code>
+       */
+      public Builder clearSource() {
+        if (sourceBuilder_ == null) {
+          source_ = org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.getDefaultInstance();
+          onChanged();
+        } else {
+          sourceBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.DiskInfo.Source source = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Builder getSourceBuilder() {
+        bitField0_ |= 0x00000001;
+        onChanged();
+        return getSourceFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.DiskInfo.Source source = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.Resource.DiskInfo.SourceOrBuilder getSourceOrBuilder() {
+        if (sourceBuilder_ != null) {
+          return sourceBuilder_.getMessageOrBuilder();
+        } else {
+          return source_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.DiskInfo.Source source = 1;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Resource.DiskInfo.Source, org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Builder, org.apache.mesos.v1.Protos.Resource.DiskInfo.SourceOrBuilder> 
+          getSourceFieldBuilder() {
+        if (sourceBuilder_ == null) {
+          sourceBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Resource.DiskInfo.Source, org.apache.mesos.v1.Protos.Resource.DiskInfo.Source.Builder, org.apache.mesos.v1.Protos.Resource.DiskInfo.SourceOrBuilder>(
+                  source_,
+                  getParentForChildren(),
+                  isClean());
+          source_ = null;
+        }
+        return sourceBuilder_;
+      }
+
+      // optional .mesos.v1.Resource.DiskInfo.Persistence persistence = 2;
+      private org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence persistence_ = org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence, org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence.Builder, org.apache.mesos.v1.Protos.Resource.DiskInfo.PersistenceOrBuilder> persistenceBuilder_;
+      /**
+       * <code>optional .mesos.v1.Resource.DiskInfo.Persistence persistence = 2;</code>
+       */
+      public boolean hasPersistence() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.DiskInfo.Persistence persistence = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence getPersistence() {
+        if (persistenceBuilder_ == null) {
+          return persistence_;
+        } else {
+          return persistenceBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.DiskInfo.Persistence persistence = 2;</code>
+       */
+      public Builder setPersistence(org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence value) {
+        if (persistenceBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          persistence_ = value;
+          onChanged();
+        } else {
+          persistenceBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.DiskInfo.Persistence persistence = 2;</code>
+       */
+      public Builder setPersistence(
+          org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence.Builder builderForValue) {
+        if (persistenceBuilder_ == null) {
+          persistence_ = builderForValue.build();
+          onChanged();
+        } else {
+          persistenceBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.DiskInfo.Persistence persistence = 2;</code>
+       */
+      public Builder mergePersistence(org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence value) {
+        if (persistenceBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              persistence_ != org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence.getDefaultInstance()) {
+            persistence_ =
+              org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence.newBuilder(persistence_).mergeFrom(value).buildPartial();
+          } else {
+            persistence_ = value;
+          }
+          onChanged();
+        } else {
+          persistenceBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.DiskInfo.Persistence persistence = 2;</code>
+       */
+      public Builder clearPersistence() {
+        if (persistenceBuilder_ == null) {
+          persistence_ = org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence.getDefaultInstance();
+          onChanged();
+        } else {
+          persistenceBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.DiskInfo.Persistence persistence = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence.Builder getPersistenceBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getPersistenceFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.DiskInfo.Persistence persistence = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.Resource.DiskInfo.PersistenceOrBuilder getPersistenceOrBuilder() {
+        if (persistenceBuilder_ != null) {
+          return persistenceBuilder_.getMessageOrBuilder();
+        } else {
+          return persistence_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.DiskInfo.Persistence persistence = 2;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence, org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence.Builder, org.apache.mesos.v1.Protos.Resource.DiskInfo.PersistenceOrBuilder> 
+          getPersistenceFieldBuilder() {
+        if (persistenceBuilder_ == null) {
+          persistenceBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence, org.apache.mesos.v1.Protos.Resource.DiskInfo.Persistence.Builder, org.apache.mesos.v1.Protos.Resource.DiskInfo.PersistenceOrBuilder>(
+                  persistence_,
+                  getParentForChildren(),
+                  isClean());
+          persistence_ = null;
+        }
+        return persistenceBuilder_;
+      }
+
+      // optional uint64 limit_bytes = 3;
+      private long limitBytes_ ;
+      /**
+       * <code>optional uint64 limit_bytes = 3;</code>
+       */
+      public boolean hasLimitBytes() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional uint64 limit_bytes = 3;</code>
+       */
+      public long getLimitBytes() {
+        return limitBytes_;
+      }
+      /**
+       * <code>optional uint64 limit_bytes = 3;</code>
+       */
+      public Builder setLimitBytes(long value) {
+        bitField0_ |= 0x00000004;
+        limitBytes_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 limit_bytes = 3;</code>
+       */
+      public Builder clearLimitBytes() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        limitBytes_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 used_bytes = 4;
+      private long usedBytes_ ;
+      /**
+       * <code>optional uint64 used_bytes = 4;</code>
+       */
+      public boolean hasUsedBytes() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional uint64 used_bytes = 4;</code>
+       */
+      public long getUsedBytes() {
+        return usedBytes_;
+      }
+      /**
+       * <code>optional uint64 used_bytes = 4;</code>
+       */
+      public Builder setUsedBytes(long value) {
+        bitField0_ |= 0x00000008;
+        usedBytes_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 used_bytes = 4;</code>
+       */
+      public Builder clearUsedBytes() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        usedBytes_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.DiskStatistics)
+    }
+
+    static {
+      defaultInstance = new DiskStatistics(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.DiskStatistics)
+  }
+
+  public interface ResourceStatisticsOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required double timestamp = 1;
+    /**
+     * <code>required double timestamp = 1;</code>
+     *
+     * <pre>
+     * Snapshot time, in seconds since the Epoch.
+     * </pre>
+     */
+    boolean hasTimestamp();
+    /**
+     * <code>required double timestamp = 1;</code>
+     *
+     * <pre>
+     * Snapshot time, in seconds since the Epoch.
+     * </pre>
+     */
+    double getTimestamp();
+
+    // optional uint32 processes = 30;
+    /**
+     * <code>optional uint32 processes = 30;</code>
+     */
+    boolean hasProcesses();
+    /**
+     * <code>optional uint32 processes = 30;</code>
+     */
+    int getProcesses();
+
+    // optional uint32 threads = 31;
+    /**
+     * <code>optional uint32 threads = 31;</code>
+     */
+    boolean hasThreads();
+    /**
+     * <code>optional uint32 threads = 31;</code>
+     */
+    int getThreads();
+
+    // optional double cpus_user_time_secs = 2;
+    /**
+     * <code>optional double cpus_user_time_secs = 2;</code>
+     *
+     * <pre>
+     * CPU Usage Information:
+     * Total CPU time spent in user mode, and kernel mode.
+     * </pre>
+     */
+    boolean hasCpusUserTimeSecs();
+    /**
+     * <code>optional double cpus_user_time_secs = 2;</code>
+     *
+     * <pre>
+     * CPU Usage Information:
+     * Total CPU time spent in user mode, and kernel mode.
+     * </pre>
+     */
+    double getCpusUserTimeSecs();
+
+    // optional double cpus_system_time_secs = 3;
+    /**
+     * <code>optional double cpus_system_time_secs = 3;</code>
+     */
+    boolean hasCpusSystemTimeSecs();
+    /**
+     * <code>optional double cpus_system_time_secs = 3;</code>
+     */
+    double getCpusSystemTimeSecs();
+
+    // optional double cpus_limit = 4;
+    /**
+     * <code>optional double cpus_limit = 4;</code>
+     *
+     * <pre>
+     * Number of CPUs allocated.
+     * </pre>
+     */
+    boolean hasCpusLimit();
+    /**
+     * <code>optional double cpus_limit = 4;</code>
+     *
+     * <pre>
+     * Number of CPUs allocated.
+     * </pre>
+     */
+    double getCpusLimit();
+
+    // optional uint32 cpus_nr_periods = 7;
+    /**
+     * <code>optional uint32 cpus_nr_periods = 7;</code>
+     *
+     * <pre>
+     * cpu.stat on process throttling (for contention issues).
+     * </pre>
+     */
+    boolean hasCpusNrPeriods();
+    /**
+     * <code>optional uint32 cpus_nr_periods = 7;</code>
+     *
+     * <pre>
+     * cpu.stat on process throttling (for contention issues).
+     * </pre>
+     */
+    int getCpusNrPeriods();
+
+    // optional uint32 cpus_nr_throttled = 8;
+    /**
+     * <code>optional uint32 cpus_nr_throttled = 8;</code>
+     */
+    boolean hasCpusNrThrottled();
+    /**
+     * <code>optional uint32 cpus_nr_throttled = 8;</code>
+     */
+    int getCpusNrThrottled();
+
+    // optional double cpus_throttled_time_secs = 9;
+    /**
+     * <code>optional double cpus_throttled_time_secs = 9;</code>
+     */
+    boolean hasCpusThrottledTimeSecs();
+    /**
+     * <code>optional double cpus_throttled_time_secs = 9;</code>
+     */
+    double getCpusThrottledTimeSecs();
+
+    // optional uint64 mem_total_bytes = 36;
+    /**
+     * <code>optional uint64 mem_total_bytes = 36;</code>
+     *
+     * <pre>
+     * mem_total_bytes was added in 0.23.0 to represent the total memory
+     * of a process in RAM (as opposed to in Swap). This was previously
+     * reported as mem_rss_bytes, which was also changed in 0.23.0 to
+     * represent only the anonymous memory usage, to keep in sync with
+     * Linux kernel's (arguably erroneous) use of terminology.
+     * </pre>
+     */
+    boolean hasMemTotalBytes();
+    /**
+     * <code>optional uint64 mem_total_bytes = 36;</code>
+     *
+     * <pre>
+     * mem_total_bytes was added in 0.23.0 to represent the total memory
+     * of a process in RAM (as opposed to in Swap). This was previously
+     * reported as mem_rss_bytes, which was also changed in 0.23.0 to
+     * represent only the anonymous memory usage, to keep in sync with
+     * Linux kernel's (arguably erroneous) use of terminology.
+     * </pre>
+     */
+    long getMemTotalBytes();
+
+    // optional uint64 mem_total_memsw_bytes = 37;
+    /**
+     * <code>optional uint64 mem_total_memsw_bytes = 37;</code>
+     *
+     * <pre>
+     * Total memory + swap usage. This is set if swap is enabled.
+     * </pre>
+     */
+    boolean hasMemTotalMemswBytes();
+    /**
+     * <code>optional uint64 mem_total_memsw_bytes = 37;</code>
+     *
+     * <pre>
+     * Total memory + swap usage. This is set if swap is enabled.
+     * </pre>
+     */
+    long getMemTotalMemswBytes();
+
+    // optional uint64 mem_limit_bytes = 6;
+    /**
+     * <code>optional uint64 mem_limit_bytes = 6;</code>
+     *
+     * <pre>
+     * Hard memory limit for a container.
+     * </pre>
+     */
+    boolean hasMemLimitBytes();
+    /**
+     * <code>optional uint64 mem_limit_bytes = 6;</code>
+     *
+     * <pre>
+     * Hard memory limit for a container.
+     * </pre>
+     */
+    long getMemLimitBytes();
+
+    // optional uint64 mem_soft_limit_bytes = 38;
+    /**
+     * <code>optional uint64 mem_soft_limit_bytes = 38;</code>
+     *
+     * <pre>
+     * Soft memory limit for a container.
+     * </pre>
+     */
+    boolean hasMemSoftLimitBytes();
+    /**
+     * <code>optional uint64 mem_soft_limit_bytes = 38;</code>
+     *
+     * <pre>
+     * Soft memory limit for a container.
+     * </pre>
+     */
+    long getMemSoftLimitBytes();
+
+    // optional uint64 mem_file_bytes = 10;
+    /**
+     * <code>optional uint64 mem_file_bytes = 10;</code>
+     *
+     * <pre>
+     * TODO(chzhcn) mem_file_bytes and mem_anon_bytes are deprecated in
+     * 0.23.0 and will be removed in 0.24.0.
+     * </pre>
+     */
+    boolean hasMemFileBytes();
+    /**
+     * <code>optional uint64 mem_file_bytes = 10;</code>
+     *
+     * <pre>
+     * TODO(chzhcn) mem_file_bytes and mem_anon_bytes are deprecated in
+     * 0.23.0 and will be removed in 0.24.0.
+     * </pre>
+     */
+    long getMemFileBytes();
+
+    // optional uint64 mem_anon_bytes = 11;
+    /**
+     * <code>optional uint64 mem_anon_bytes = 11;</code>
+     */
+    boolean hasMemAnonBytes();
+    /**
+     * <code>optional uint64 mem_anon_bytes = 11;</code>
+     */
+    long getMemAnonBytes();
+
+    // optional uint64 mem_cache_bytes = 39;
+    /**
+     * <code>optional uint64 mem_cache_bytes = 39;</code>
+     *
+     * <pre>
+     * mem_cache_bytes is added in 0.23.0 to represent page cache usage.
+     * </pre>
+     */
+    boolean hasMemCacheBytes();
+    /**
+     * <code>optional uint64 mem_cache_bytes = 39;</code>
+     *
+     * <pre>
+     * mem_cache_bytes is added in 0.23.0 to represent page cache usage.
+     * </pre>
+     */
+    long getMemCacheBytes();
+
+    // optional uint64 mem_rss_bytes = 5;
+    /**
+     * <code>optional uint64 mem_rss_bytes = 5;</code>
+     *
+     * <pre>
+     * Since 0.23.0, mem_rss_bytes is changed to represent only
+     * anonymous memory usage. Note that neither its requiredness, type,
+     * name nor numeric tag has been changed.
+     * </pre>
+     */
+    boolean hasMemRssBytes();
+    /**
+     * <code>optional uint64 mem_rss_bytes = 5;</code>
+     *
+     * <pre>
+     * Since 0.23.0, mem_rss_bytes is changed to represent only
+     * anonymous memory usage. Note that neither its requiredness, type,
+     * name nor numeric tag has been changed.
+     * </pre>
+     */
+    long getMemRssBytes();
+
+    // optional uint64 mem_mapped_file_bytes = 12;
+    /**
+     * <code>optional uint64 mem_mapped_file_bytes = 12;</code>
+     */
+    boolean hasMemMappedFileBytes();
+    /**
+     * <code>optional uint64 mem_mapped_file_bytes = 12;</code>
+     */
+    long getMemMappedFileBytes();
+
+    // optional uint64 mem_swap_bytes = 40;
+    /**
+     * <code>optional uint64 mem_swap_bytes = 40;</code>
+     *
+     * <pre>
+     * This is only set if swap is enabled.
+     * </pre>
+     */
+    boolean hasMemSwapBytes();
+    /**
+     * <code>optional uint64 mem_swap_bytes = 40;</code>
+     *
+     * <pre>
+     * This is only set if swap is enabled.
+     * </pre>
+     */
+    long getMemSwapBytes();
+
+    // optional uint64 mem_unevictable_bytes = 41;
+    /**
+     * <code>optional uint64 mem_unevictable_bytes = 41;</code>
+     */
+    boolean hasMemUnevictableBytes();
+    /**
+     * <code>optional uint64 mem_unevictable_bytes = 41;</code>
+     */
+    long getMemUnevictableBytes();
+
+    // optional uint64 mem_low_pressure_counter = 32;
+    /**
+     * <code>optional uint64 mem_low_pressure_counter = 32;</code>
+     *
+     * <pre>
+     * Number of occurrences of different levels of memory pressure
+     * events reported by memory cgroup. Pressure listening (re)starts
+     * with these values set to 0 when agent (re)starts. See
+     * https://www.kernel.org/doc/Documentation/cgroups/memory.txt for
+     * more details.
+     * </pre>
+     */
+    boolean hasMemLowPressureCounter();
+    /**
+     * <code>optional uint64 mem_low_pressure_counter = 32;</code>
+     *
+     * <pre>
+     * Number of occurrences of different levels of memory pressure
+     * events reported by memory cgroup. Pressure listening (re)starts
+     * with these values set to 0 when agent (re)starts. See
+     * https://www.kernel.org/doc/Documentation/cgroups/memory.txt for
+     * more details.
+     * </pre>
+     */
+    long getMemLowPressureCounter();
+
+    // optional uint64 mem_medium_pressure_counter = 33;
+    /**
+     * <code>optional uint64 mem_medium_pressure_counter = 33;</code>
+     */
+    boolean hasMemMediumPressureCounter();
+    /**
+     * <code>optional uint64 mem_medium_pressure_counter = 33;</code>
+     */
+    long getMemMediumPressureCounter();
+
+    // optional uint64 mem_critical_pressure_counter = 34;
+    /**
+     * <code>optional uint64 mem_critical_pressure_counter = 34;</code>
+     */
+    boolean hasMemCriticalPressureCounter();
+    /**
+     * <code>optional uint64 mem_critical_pressure_counter = 34;</code>
+     */
+    long getMemCriticalPressureCounter();
+
+    // optional uint64 disk_limit_bytes = 26;
+    /**
+     * <code>optional uint64 disk_limit_bytes = 26;</code>
+     *
+     * <pre>
+     * Disk Usage Information for executor working directory.
+     * </pre>
+     */
+    boolean hasDiskLimitBytes();
+    /**
+     * <code>optional uint64 disk_limit_bytes = 26;</code>
+     *
+     * <pre>
+     * Disk Usage Information for executor working directory.
+     * </pre>
+     */
+    long getDiskLimitBytes();
+
+    // optional uint64 disk_used_bytes = 27;
+    /**
+     * <code>optional uint64 disk_used_bytes = 27;</code>
+     */
+    boolean hasDiskUsedBytes();
+    /**
+     * <code>optional uint64 disk_used_bytes = 27;</code>
+     */
+    long getDiskUsedBytes();
+
+    // repeated .mesos.v1.DiskStatistics disk_statistics = 43;
+    /**
+     * <code>repeated .mesos.v1.DiskStatistics disk_statistics = 43;</code>
+     *
+     * <pre>
+     * Per disk (resource) statistics.
+     * </pre>
+     */
+    java.util.List<org.apache.mesos.v1.Protos.DiskStatistics> 
+        getDiskStatisticsList();
+    /**
+     * <code>repeated .mesos.v1.DiskStatistics disk_statistics = 43;</code>
+     *
+     * <pre>
+     * Per disk (resource) statistics.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.DiskStatistics getDiskStatistics(int index);
+    /**
+     * <code>repeated .mesos.v1.DiskStatistics disk_statistics = 43;</code>
+     *
+     * <pre>
+     * Per disk (resource) statistics.
+     * </pre>
+     */
+    int getDiskStatisticsCount();
+    /**
+     * <code>repeated .mesos.v1.DiskStatistics disk_statistics = 43;</code>
+     *
+     * <pre>
+     * Per disk (resource) statistics.
+     * </pre>
+     */
+    java.util.List<? extends org.apache.mesos.v1.Protos.DiskStatisticsOrBuilder> 
+        getDiskStatisticsOrBuilderList();
+    /**
+     * <code>repeated .mesos.v1.DiskStatistics disk_statistics = 43;</code>
+     *
+     * <pre>
+     * Per disk (resource) statistics.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.DiskStatisticsOrBuilder getDiskStatisticsOrBuilder(
+        int index);
+
+    // optional .mesos.v1.CgroupInfo.Blkio.Statistics blkio_statistics = 44;
+    /**
+     * <code>optional .mesos.v1.CgroupInfo.Blkio.Statistics blkio_statistics = 44;</code>
+     *
+     * <pre>
+     * Cgroups blkio statistics.
+     * </pre>
+     */
+    boolean hasBlkioStatistics();
+    /**
+     * <code>optional .mesos.v1.CgroupInfo.Blkio.Statistics blkio_statistics = 44;</code>
+     *
+     * <pre>
+     * Cgroups blkio statistics.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics getBlkioStatistics();
+    /**
+     * <code>optional .mesos.v1.CgroupInfo.Blkio.Statistics blkio_statistics = 44;</code>
+     *
+     * <pre>
+     * Cgroups blkio statistics.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.CgroupInfo.Blkio.StatisticsOrBuilder getBlkioStatisticsOrBuilder();
+
+    // optional .mesos.v1.PerfStatistics perf = 13;
+    /**
+     * <code>optional .mesos.v1.PerfStatistics perf = 13;</code>
+     *
+     * <pre>
+     * Perf statistics.
+     * </pre>
+     */
+    boolean hasPerf();
+    /**
+     * <code>optional .mesos.v1.PerfStatistics perf = 13;</code>
+     *
+     * <pre>
+     * Perf statistics.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.PerfStatistics getPerf();
+    /**
+     * <code>optional .mesos.v1.PerfStatistics perf = 13;</code>
+     *
+     * <pre>
+     * Perf statistics.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.PerfStatisticsOrBuilder getPerfOrBuilder();
+
+    // optional uint64 net_rx_packets = 14;
+    /**
+     * <code>optional uint64 net_rx_packets = 14;</code>
+     *
+     * <pre>
+     * Network Usage Information:
+     * </pre>
+     */
+    boolean hasNetRxPackets();
+    /**
+     * <code>optional uint64 net_rx_packets = 14;</code>
+     *
+     * <pre>
+     * Network Usage Information:
+     * </pre>
+     */
+    long getNetRxPackets();
+
+    // optional uint64 net_rx_bytes = 15;
+    /**
+     * <code>optional uint64 net_rx_bytes = 15;</code>
+     */
+    boolean hasNetRxBytes();
+    /**
+     * <code>optional uint64 net_rx_bytes = 15;</code>
+     */
+    long getNetRxBytes();
+
+    // optional uint64 net_rx_errors = 16;
+    /**
+     * <code>optional uint64 net_rx_errors = 16;</code>
+     */
+    boolean hasNetRxErrors();
+    /**
+     * <code>optional uint64 net_rx_errors = 16;</code>
+     */
+    long getNetRxErrors();
+
+    // optional uint64 net_rx_dropped = 17;
+    /**
+     * <code>optional uint64 net_rx_dropped = 17;</code>
+     */
+    boolean hasNetRxDropped();
+    /**
+     * <code>optional uint64 net_rx_dropped = 17;</code>
+     */
+    long getNetRxDropped();
+
+    // optional uint64 net_tx_packets = 18;
+    /**
+     * <code>optional uint64 net_tx_packets = 18;</code>
+     */
+    boolean hasNetTxPackets();
+    /**
+     * <code>optional uint64 net_tx_packets = 18;</code>
+     */
+    long getNetTxPackets();
+
+    // optional uint64 net_tx_bytes = 19;
+    /**
+     * <code>optional uint64 net_tx_bytes = 19;</code>
+     */
+    boolean hasNetTxBytes();
+    /**
+     * <code>optional uint64 net_tx_bytes = 19;</code>
+     */
+    long getNetTxBytes();
+
+    // optional uint64 net_tx_errors = 20;
+    /**
+     * <code>optional uint64 net_tx_errors = 20;</code>
+     */
+    boolean hasNetTxErrors();
+    /**
+     * <code>optional uint64 net_tx_errors = 20;</code>
+     */
+    long getNetTxErrors();
+
+    // optional uint64 net_tx_dropped = 21;
+    /**
+     * <code>optional uint64 net_tx_dropped = 21;</code>
+     */
+    boolean hasNetTxDropped();
+    /**
+     * <code>optional uint64 net_tx_dropped = 21;</code>
+     */
+    long getNetTxDropped();
+
+    // optional double net_tcp_rtt_microsecs_p50 = 22;
+    /**
+     * <code>optional double net_tcp_rtt_microsecs_p50 = 22;</code>
+     *
+     * <pre>
+     * The kernel keeps track of RTT (round-trip time) for its TCP
+     * sockets. RTT is a way to tell the latency of a container.
+     * </pre>
+     */
+    boolean hasNetTcpRttMicrosecsP50();
+    /**
+     * <code>optional double net_tcp_rtt_microsecs_p50 = 22;</code>
+     *
+     * <pre>
+     * The kernel keeps track of RTT (round-trip time) for its TCP
+     * sockets. RTT is a way to tell the latency of a container.
+     * </pre>
+     */
+    double getNetTcpRttMicrosecsP50();
+
+    // optional double net_tcp_rtt_microsecs_p90 = 23;
+    /**
+     * <code>optional double net_tcp_rtt_microsecs_p90 = 23;</code>
+     */
+    boolean hasNetTcpRttMicrosecsP90();
+    /**
+     * <code>optional double net_tcp_rtt_microsecs_p90 = 23;</code>
+     */
+    double getNetTcpRttMicrosecsP90();
+
+    // optional double net_tcp_rtt_microsecs_p95 = 24;
+    /**
+     * <code>optional double net_tcp_rtt_microsecs_p95 = 24;</code>
+     */
+    boolean hasNetTcpRttMicrosecsP95();
+    /**
+     * <code>optional double net_tcp_rtt_microsecs_p95 = 24;</code>
+     */
+    double getNetTcpRttMicrosecsP95();
+
+    // optional double net_tcp_rtt_microsecs_p99 = 25;
+    /**
+     * <code>optional double net_tcp_rtt_microsecs_p99 = 25;</code>
+     */
+    boolean hasNetTcpRttMicrosecsP99();
+    /**
+     * <code>optional double net_tcp_rtt_microsecs_p99 = 25;</code>
+     */
+    double getNetTcpRttMicrosecsP99();
+
+    // optional double net_tcp_active_connections = 28;
+    /**
+     * <code>optional double net_tcp_active_connections = 28;</code>
+     */
+    boolean hasNetTcpActiveConnections();
+    /**
+     * <code>optional double net_tcp_active_connections = 28;</code>
+     */
+    double getNetTcpActiveConnections();
+
+    // optional double net_tcp_time_wait_connections = 29;
+    /**
+     * <code>optional double net_tcp_time_wait_connections = 29;</code>
+     */
+    boolean hasNetTcpTimeWaitConnections();
+    /**
+     * <code>optional double net_tcp_time_wait_connections = 29;</code>
+     */
+    double getNetTcpTimeWaitConnections();
+
+    // repeated .mesos.v1.TrafficControlStatistics net_traffic_control_statistics = 35;
+    /**
+     * <code>repeated .mesos.v1.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+     *
+     * <pre>
+     * Network traffic flowing into or out of a container can be delayed
+     * or dropped due to congestion or policy inside and outside the
+     * container.
+     * </pre>
+     */
+    java.util.List<org.apache.mesos.v1.Protos.TrafficControlStatistics> 
+        getNetTrafficControlStatisticsList();
+    /**
+     * <code>repeated .mesos.v1.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+     *
+     * <pre>
+     * Network traffic flowing into or out of a container can be delayed
+     * or dropped due to congestion or policy inside and outside the
+     * container.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.TrafficControlStatistics getNetTrafficControlStatistics(int index);
+    /**
+     * <code>repeated .mesos.v1.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+     *
+     * <pre>
+     * Network traffic flowing into or out of a container can be delayed
+     * or dropped due to congestion or policy inside and outside the
+     * container.
+     * </pre>
+     */
+    int getNetTrafficControlStatisticsCount();
+    /**
+     * <code>repeated .mesos.v1.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+     *
+     * <pre>
+     * Network traffic flowing into or out of a container can be delayed
+     * or dropped due to congestion or policy inside and outside the
+     * container.
+     * </pre>
+     */
+    java.util.List<? extends org.apache.mesos.v1.Protos.TrafficControlStatisticsOrBuilder> 
+        getNetTrafficControlStatisticsOrBuilderList();
+    /**
+     * <code>repeated .mesos.v1.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+     *
+     * <pre>
+     * Network traffic flowing into or out of a container can be delayed
+     * or dropped due to congestion or policy inside and outside the
+     * container.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.TrafficControlStatisticsOrBuilder getNetTrafficControlStatisticsOrBuilder(
+        int index);
+
+    // optional .mesos.v1.SNMPStatistics net_snmp_statistics = 42;
+    /**
+     * <code>optional .mesos.v1.SNMPStatistics net_snmp_statistics = 42;</code>
+     *
+     * <pre>
+     * Network SNMP statistics for each container.
+     * </pre>
+     */
+    boolean hasNetSnmpStatistics();
+    /**
+     * <code>optional .mesos.v1.SNMPStatistics net_snmp_statistics = 42;</code>
+     *
+     * <pre>
+     * Network SNMP statistics for each container.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.SNMPStatistics getNetSnmpStatistics();
+    /**
+     * <code>optional .mesos.v1.SNMPStatistics net_snmp_statistics = 42;</code>
+     *
+     * <pre>
+     * Network SNMP statistics for each container.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.SNMPStatisticsOrBuilder getNetSnmpStatisticsOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.ResourceStatistics}
+   *
+   * <pre>
+   **
+   * A snapshot of resource usage statistics.
+   * </pre>
+   */
+  public static final class ResourceStatistics extends
+      com.google.protobuf.GeneratedMessage
+      implements ResourceStatisticsOrBuilder {
+    // Use ResourceStatistics.newBuilder() to construct.
+    private ResourceStatistics(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private ResourceStatistics(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final ResourceStatistics defaultInstance;
+    public static ResourceStatistics getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public ResourceStatistics getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private ResourceStatistics(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      int mutable_bitField1_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 9: {
+              bitField0_ |= 0x00000001;
+              timestamp_ = input.readDouble();
+              break;
+            }
+            case 17: {
+              bitField0_ |= 0x00000008;
+              cpusUserTimeSecs_ = input.readDouble();
+              break;
+            }
+            case 25: {
+              bitField0_ |= 0x00000010;
+              cpusSystemTimeSecs_ = input.readDouble();
+              break;
+            }
+            case 33: {
+              bitField0_ |= 0x00000020;
+              cpusLimit_ = input.readDouble();
+              break;
+            }
+            case 40: {
+              bitField0_ |= 0x00010000;
+              memRssBytes_ = input.readUInt64();
+              break;
+            }
+            case 48: {
+              bitField0_ |= 0x00000800;
+              memLimitBytes_ = input.readUInt64();
+              break;
+            }
+            case 56: {
+              bitField0_ |= 0x00000040;
+              cpusNrPeriods_ = input.readUInt32();
+              break;
+            }
+            case 64: {
+              bitField0_ |= 0x00000080;
+              cpusNrThrottled_ = input.readUInt32();
+              break;
+            }
+            case 73: {
+              bitField0_ |= 0x00000100;
+              cpusThrottledTimeSecs_ = input.readDouble();
+              break;
+            }
+            case 80: {
+              bitField0_ |= 0x00002000;
+              memFileBytes_ = input.readUInt64();
+              break;
+            }
+            case 88: {
+              bitField0_ |= 0x00004000;
+              memAnonBytes_ = input.readUInt64();
+              break;
+            }
+            case 96: {
+              bitField0_ |= 0x00020000;
+              memMappedFileBytes_ = input.readUInt64();
+              break;
+            }
+            case 106: {
+              org.apache.mesos.v1.Protos.PerfStatistics.Builder subBuilder = null;
+              if (((bitField0_ & 0x04000000) == 0x04000000)) {
+                subBuilder = perf_.toBuilder();
+              }
+              perf_ = input.readMessage(org.apache.mesos.v1.Protos.PerfStatistics.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(perf_);
+                perf_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x04000000;
+              break;
+            }
+            case 112: {
+              bitField0_ |= 0x08000000;
+              netRxPackets_ = input.readUInt64();
+              break;
+            }
+            case 120: {
+              bitField0_ |= 0x10000000;
+              netRxBytes_ = input.readUInt64();
+              break;
+            }
+            case 128: {
+              bitField0_ |= 0x20000000;
+              netRxErrors_ = input.readUInt64();
+              break;
+            }
+            case 136: {
+              bitField0_ |= 0x40000000;
+              netRxDropped_ = input.readUInt64();
+              break;
+            }
+            case 144: {
+              bitField0_ |= 0x80000000;
+              netTxPackets_ = input.readUInt64();
+              break;
+            }
+            case 152: {
+              bitField1_ |= 0x00000001;
+              netTxBytes_ = input.readUInt64();
+              break;
+            }
+            case 160: {
+              bitField1_ |= 0x00000002;
+              netTxErrors_ = input.readUInt64();
+              break;
+            }
+            case 168: {
+              bitField1_ |= 0x00000004;
+              netTxDropped_ = input.readUInt64();
+              break;
+            }
+            case 177: {
+              bitField1_ |= 0x00000008;
+              netTcpRttMicrosecsP50_ = input.readDouble();
+              break;
+            }
+            case 185: {
+              bitField1_ |= 0x00000010;
+              netTcpRttMicrosecsP90_ = input.readDouble();
+              break;
+            }
+            case 193: {
+              bitField1_ |= 0x00000020;
+              netTcpRttMicrosecsP95_ = input.readDouble();
+              break;
+            }
+            case 201: {
+              bitField1_ |= 0x00000040;
+              netTcpRttMicrosecsP99_ = input.readDouble();
+              break;
+            }
+            case 208: {
+              bitField0_ |= 0x00800000;
+              diskLimitBytes_ = input.readUInt64();
+              break;
+            }
+            case 216: {
+              bitField0_ |= 0x01000000;
+              diskUsedBytes_ = input.readUInt64();
+              break;
+            }
+            case 225: {
+              bitField1_ |= 0x00000080;
+              netTcpActiveConnections_ = input.readDouble();
+              break;
+            }
+            case 233: {
+              bitField1_ |= 0x00000100;
+              netTcpTimeWaitConnections_ = input.readDouble();
+              break;
+            }
+            case 240: {
+              bitField0_ |= 0x00000002;
+              processes_ = input.readUInt32();
+              break;
+            }
+            case 248: {
+              bitField0_ |= 0x00000004;
+              threads_ = input.readUInt32();
+              break;
+            }
+            case 256: {
+              bitField0_ |= 0x00100000;
+              memLowPressureCounter_ = input.readUInt64();
+              break;
+            }
+            case 264: {
+              bitField0_ |= 0x00200000;
+              memMediumPressureCounter_ = input.readUInt64();
+              break;
+            }
+            case 272: {
+              bitField0_ |= 0x00400000;
+              memCriticalPressureCounter_ = input.readUInt64();
+              break;
+            }
+            case 282: {
+              if (!((mutable_bitField1_ & 0x00000400) == 0x00000400)) {
+                netTrafficControlStatistics_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.TrafficControlStatistics>();
+                mutable_bitField1_ |= 0x00000400;
+              }
+              netTrafficControlStatistics_.add(input.readMessage(org.apache.mesos.v1.Protos.TrafficControlStatistics.PARSER, extensionRegistry));
+              break;
+            }
+            case 288: {
+              bitField0_ |= 0x00000200;
+              memTotalBytes_ = input.readUInt64();
+              break;
+            }
+            case 296: {
+              bitField0_ |= 0x00000400;
+              memTotalMemswBytes_ = input.readUInt64();
+              break;
+            }
+            case 304: {
+              bitField0_ |= 0x00001000;
+              memSoftLimitBytes_ = input.readUInt64();
+              break;
+            }
+            case 312: {
+              bitField0_ |= 0x00008000;
+              memCacheBytes_ = input.readUInt64();
+              break;
+            }
+            case 320: {
+              bitField0_ |= 0x00040000;
+              memSwapBytes_ = input.readUInt64();
+              break;
+            }
+            case 328: {
+              bitField0_ |= 0x00080000;
+              memUnevictableBytes_ = input.readUInt64();
+              break;
+            }
+            case 338: {
+              org.apache.mesos.v1.Protos.SNMPStatistics.Builder subBuilder = null;
+              if (((bitField1_ & 0x00000200) == 0x00000200)) {
+                subBuilder = netSnmpStatistics_.toBuilder();
+              }
+              netSnmpStatistics_ = input.readMessage(org.apache.mesos.v1.Protos.SNMPStatistics.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(netSnmpStatistics_);
+                netSnmpStatistics_ = subBuilder.buildPartial();
+              }
+              bitField1_ |= 0x00000200;
+              break;
+            }
+            case 346: {
+              if (!((mutable_bitField0_ & 0x02000000) == 0x02000000)) {
+                diskStatistics_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.DiskStatistics>();
+                mutable_bitField0_ |= 0x02000000;
+              }
+              diskStatistics_.add(input.readMessage(org.apache.mesos.v1.Protos.DiskStatistics.PARSER, extensionRegistry));
+              break;
+            }
+            case 354: {
+              org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics.Builder subBuilder = null;
+              if (((bitField0_ & 0x02000000) == 0x02000000)) {
+                subBuilder = blkioStatistics_.toBuilder();
+              }
+              blkioStatistics_ = input.readMessage(org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(blkioStatistics_);
+                blkioStatistics_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x02000000;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField1_ & 0x00000400) == 0x00000400)) {
+          netTrafficControlStatistics_ = java.util.Collections.unmodifiableList(netTrafficControlStatistics_);
+        }
+        if (((mutable_bitField0_ & 0x02000000) == 0x02000000)) {
+          diskStatistics_ = java.util.Collections.unmodifiableList(diskStatistics_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ResourceStatistics_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ResourceStatistics_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.ResourceStatistics.class, org.apache.mesos.v1.Protos.ResourceStatistics.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<ResourceStatistics> PARSER =
+        new com.google.protobuf.AbstractParser<ResourceStatistics>() {
+      public ResourceStatistics parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new ResourceStatistics(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<ResourceStatistics> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    private int bitField1_;
+    // required double timestamp = 1;
+    public static final int TIMESTAMP_FIELD_NUMBER = 1;
+    private double timestamp_;
+    /**
+     * <code>required double timestamp = 1;</code>
+     *
+     * <pre>
+     * Snapshot time, in seconds since the Epoch.
+     * </pre>
+     */
+    public boolean hasTimestamp() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required double timestamp = 1;</code>
+     *
+     * <pre>
+     * Snapshot time, in seconds since the Epoch.
+     * </pre>
+     */
+    public double getTimestamp() {
+      return timestamp_;
+    }
+
+    // optional uint32 processes = 30;
+    public static final int PROCESSES_FIELD_NUMBER = 30;
+    private int processes_;
+    /**
+     * <code>optional uint32 processes = 30;</code>
+     */
+    public boolean hasProcesses() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional uint32 processes = 30;</code>
+     */
+    public int getProcesses() {
+      return processes_;
+    }
+
+    // optional uint32 threads = 31;
+    public static final int THREADS_FIELD_NUMBER = 31;
+    private int threads_;
+    /**
+     * <code>optional uint32 threads = 31;</code>
+     */
+    public boolean hasThreads() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional uint32 threads = 31;</code>
+     */
+    public int getThreads() {
+      return threads_;
+    }
+
+    // optional double cpus_user_time_secs = 2;
+    public static final int CPUS_USER_TIME_SECS_FIELD_NUMBER = 2;
+    private double cpusUserTimeSecs_;
+    /**
+     * <code>optional double cpus_user_time_secs = 2;</code>
+     *
+     * <pre>
+     * CPU Usage Information:
+     * Total CPU time spent in user mode, and kernel mode.
+     * </pre>
+     */
+    public boolean hasCpusUserTimeSecs() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional double cpus_user_time_secs = 2;</code>
+     *
+     * <pre>
+     * CPU Usage Information:
+     * Total CPU time spent in user mode, and kernel mode.
+     * </pre>
+     */
+    public double getCpusUserTimeSecs() {
+      return cpusUserTimeSecs_;
+    }
+
+    // optional double cpus_system_time_secs = 3;
+    public static final int CPUS_SYSTEM_TIME_SECS_FIELD_NUMBER = 3;
+    private double cpusSystemTimeSecs_;
+    /**
+     * <code>optional double cpus_system_time_secs = 3;</code>
+     */
+    public boolean hasCpusSystemTimeSecs() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional double cpus_system_time_secs = 3;</code>
+     */
+    public double getCpusSystemTimeSecs() {
+      return cpusSystemTimeSecs_;
+    }
+
+    // optional double cpus_limit = 4;
+    public static final int CPUS_LIMIT_FIELD_NUMBER = 4;
+    private double cpusLimit_;
+    /**
+     * <code>optional double cpus_limit = 4;</code>
+     *
+     * <pre>
+     * Number of CPUs allocated.
+     * </pre>
+     */
+    public boolean hasCpusLimit() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional double cpus_limit = 4;</code>
+     *
+     * <pre>
+     * Number of CPUs allocated.
+     * </pre>
+     */
+    public double getCpusLimit() {
+      return cpusLimit_;
+    }
+
+    // optional uint32 cpus_nr_periods = 7;
+    public static final int CPUS_NR_PERIODS_FIELD_NUMBER = 7;
+    private int cpusNrPeriods_;
+    /**
+     * <code>optional uint32 cpus_nr_periods = 7;</code>
+     *
+     * <pre>
+     * cpu.stat on process throttling (for contention issues).
+     * </pre>
+     */
+    public boolean hasCpusNrPeriods() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional uint32 cpus_nr_periods = 7;</code>
+     *
+     * <pre>
+     * cpu.stat on process throttling (for contention issues).
+     * </pre>
+     */
+    public int getCpusNrPeriods() {
+      return cpusNrPeriods_;
+    }
+
+    // optional uint32 cpus_nr_throttled = 8;
+    public static final int CPUS_NR_THROTTLED_FIELD_NUMBER = 8;
+    private int cpusNrThrottled_;
+    /**
+     * <code>optional uint32 cpus_nr_throttled = 8;</code>
+     */
+    public boolean hasCpusNrThrottled() {
+      return ((bitField0_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional uint32 cpus_nr_throttled = 8;</code>
+     */
+    public int getCpusNrThrottled() {
+      return cpusNrThrottled_;
+    }
+
+    // optional double cpus_throttled_time_secs = 9;
+    public static final int CPUS_THROTTLED_TIME_SECS_FIELD_NUMBER = 9;
+    private double cpusThrottledTimeSecs_;
+    /**
+     * <code>optional double cpus_throttled_time_secs = 9;</code>
+     */
+    public boolean hasCpusThrottledTimeSecs() {
+      return ((bitField0_ & 0x00000100) == 0x00000100);
+    }
+    /**
+     * <code>optional double cpus_throttled_time_secs = 9;</code>
+     */
+    public double getCpusThrottledTimeSecs() {
+      return cpusThrottledTimeSecs_;
+    }
+
+    // optional uint64 mem_total_bytes = 36;
+    public static final int MEM_TOTAL_BYTES_FIELD_NUMBER = 36;
+    private long memTotalBytes_;
+    /**
+     * <code>optional uint64 mem_total_bytes = 36;</code>
+     *
+     * <pre>
+     * mem_total_bytes was added in 0.23.0 to represent the total memory
+     * of a process in RAM (as opposed to in Swap). This was previously
+     * reported as mem_rss_bytes, which was also changed in 0.23.0 to
+     * represent only the anonymous memory usage, to keep in sync with
+     * Linux kernel's (arguably erroneous) use of terminology.
+     * </pre>
+     */
+    public boolean hasMemTotalBytes() {
+      return ((bitField0_ & 0x00000200) == 0x00000200);
+    }
+    /**
+     * <code>optional uint64 mem_total_bytes = 36;</code>
+     *
+     * <pre>
+     * mem_total_bytes was added in 0.23.0 to represent the total memory
+     * of a process in RAM (as opposed to in Swap). This was previously
+     * reported as mem_rss_bytes, which was also changed in 0.23.0 to
+     * represent only the anonymous memory usage, to keep in sync with
+     * Linux kernel's (arguably erroneous) use of terminology.
+     * </pre>
+     */
+    public long getMemTotalBytes() {
+      return memTotalBytes_;
+    }
+
+    // optional uint64 mem_total_memsw_bytes = 37;
+    public static final int MEM_TOTAL_MEMSW_BYTES_FIELD_NUMBER = 37;
+    private long memTotalMemswBytes_;
+    /**
+     * <code>optional uint64 mem_total_memsw_bytes = 37;</code>
+     *
+     * <pre>
+     * Total memory + swap usage. This is set if swap is enabled.
+     * </pre>
+     */
+    public boolean hasMemTotalMemswBytes() {
+      return ((bitField0_ & 0x00000400) == 0x00000400);
+    }
+    /**
+     * <code>optional uint64 mem_total_memsw_bytes = 37;</code>
+     *
+     * <pre>
+     * Total memory + swap usage. This is set if swap is enabled.
+     * </pre>
+     */
+    public long getMemTotalMemswBytes() {
+      return memTotalMemswBytes_;
+    }
+
+    // optional uint64 mem_limit_bytes = 6;
+    public static final int MEM_LIMIT_BYTES_FIELD_NUMBER = 6;
+    private long memLimitBytes_;
+    /**
+     * <code>optional uint64 mem_limit_bytes = 6;</code>
+     *
+     * <pre>
+     * Hard memory limit for a container.
+     * </pre>
+     */
+    public boolean hasMemLimitBytes() {
+      return ((bitField0_ & 0x00000800) == 0x00000800);
+    }
+    /**
+     * <code>optional uint64 mem_limit_bytes = 6;</code>
+     *
+     * <pre>
+     * Hard memory limit for a container.
+     * </pre>
+     */
+    public long getMemLimitBytes() {
+      return memLimitBytes_;
+    }
+
+    // optional uint64 mem_soft_limit_bytes = 38;
+    public static final int MEM_SOFT_LIMIT_BYTES_FIELD_NUMBER = 38;
+    private long memSoftLimitBytes_;
+    /**
+     * <code>optional uint64 mem_soft_limit_bytes = 38;</code>
+     *
+     * <pre>
+     * Soft memory limit for a container.
+     * </pre>
+     */
+    public boolean hasMemSoftLimitBytes() {
+      return ((bitField0_ & 0x00001000) == 0x00001000);
+    }
+    /**
+     * <code>optional uint64 mem_soft_limit_bytes = 38;</code>
+     *
+     * <pre>
+     * Soft memory limit for a container.
+     * </pre>
+     */
+    public long getMemSoftLimitBytes() {
+      return memSoftLimitBytes_;
+    }
+
+    // optional uint64 mem_file_bytes = 10;
+    public static final int MEM_FILE_BYTES_FIELD_NUMBER = 10;
+    private long memFileBytes_;
+    /**
+     * <code>optional uint64 mem_file_bytes = 10;</code>
+     *
+     * <pre>
+     * TODO(chzhcn) mem_file_bytes and mem_anon_bytes are deprecated in
+     * 0.23.0 and will be removed in 0.24.0.
+     * </pre>
+     */
+    public boolean hasMemFileBytes() {
+      return ((bitField0_ & 0x00002000) == 0x00002000);
+    }
+    /**
+     * <code>optional uint64 mem_file_bytes = 10;</code>
+     *
+     * <pre>
+     * TODO(chzhcn) mem_file_bytes and mem_anon_bytes are deprecated in
+     * 0.23.0 and will be removed in 0.24.0.
+     * </pre>
+     */
+    public long getMemFileBytes() {
+      return memFileBytes_;
+    }
+
+    // optional uint64 mem_anon_bytes = 11;
+    public static final int MEM_ANON_BYTES_FIELD_NUMBER = 11;
+    private long memAnonBytes_;
+    /**
+     * <code>optional uint64 mem_anon_bytes = 11;</code>
+     */
+    public boolean hasMemAnonBytes() {
+      return ((bitField0_ & 0x00004000) == 0x00004000);
+    }
+    /**
+     * <code>optional uint64 mem_anon_bytes = 11;</code>
+     */
+    public long getMemAnonBytes() {
+      return memAnonBytes_;
+    }
+
+    // optional uint64 mem_cache_bytes = 39;
+    public static final int MEM_CACHE_BYTES_FIELD_NUMBER = 39;
+    private long memCacheBytes_;
+    /**
+     * <code>optional uint64 mem_cache_bytes = 39;</code>
+     *
+     * <pre>
+     * mem_cache_bytes is added in 0.23.0 to represent page cache usage.
+     * </pre>
+     */
+    public boolean hasMemCacheBytes() {
+      return ((bitField0_ & 0x00008000) == 0x00008000);
+    }
+    /**
+     * <code>optional uint64 mem_cache_bytes = 39;</code>
+     *
+     * <pre>
+     * mem_cache_bytes is added in 0.23.0 to represent page cache usage.
+     * </pre>
+     */
+    public long getMemCacheBytes() {
+      return memCacheBytes_;
+    }
+
+    // optional uint64 mem_rss_bytes = 5;
+    public static final int MEM_RSS_BYTES_FIELD_NUMBER = 5;
+    private long memRssBytes_;
+    /**
+     * <code>optional uint64 mem_rss_bytes = 5;</code>
+     *
+     * <pre>
+     * Since 0.23.0, mem_rss_bytes is changed to represent only
+     * anonymous memory usage. Note that neither its requiredness, type,
+     * name nor numeric tag has been changed.
+     * </pre>
+     */
+    public boolean hasMemRssBytes() {
+      return ((bitField0_ & 0x00010000) == 0x00010000);
+    }
+    /**
+     * <code>optional uint64 mem_rss_bytes = 5;</code>
+     *
+     * <pre>
+     * Since 0.23.0, mem_rss_bytes is changed to represent only
+     * anonymous memory usage. Note that neither its requiredness, type,
+     * name nor numeric tag has been changed.
+     * </pre>
+     */
+    public long getMemRssBytes() {
+      return memRssBytes_;
+    }
+
+    // optional uint64 mem_mapped_file_bytes = 12;
+    public static final int MEM_MAPPED_FILE_BYTES_FIELD_NUMBER = 12;
+    private long memMappedFileBytes_;
+    /**
+     * <code>optional uint64 mem_mapped_file_bytes = 12;</code>
+     */
+    public boolean hasMemMappedFileBytes() {
+      return ((bitField0_ & 0x00020000) == 0x00020000);
+    }
+    /**
+     * <code>optional uint64 mem_mapped_file_bytes = 12;</code>
+     */
+    public long getMemMappedFileBytes() {
+      return memMappedFileBytes_;
+    }
+
+    // optional uint64 mem_swap_bytes = 40;
+    public static final int MEM_SWAP_BYTES_FIELD_NUMBER = 40;
+    private long memSwapBytes_;
+    /**
+     * <code>optional uint64 mem_swap_bytes = 40;</code>
+     *
+     * <pre>
+     * This is only set if swap is enabled.
+     * </pre>
+     */
+    public boolean hasMemSwapBytes() {
+      return ((bitField0_ & 0x00040000) == 0x00040000);
+    }
+    /**
+     * <code>optional uint64 mem_swap_bytes = 40;</code>
+     *
+     * <pre>
+     * This is only set if swap is enabled.
+     * </pre>
+     */
+    public long getMemSwapBytes() {
+      return memSwapBytes_;
+    }
+
+    // optional uint64 mem_unevictable_bytes = 41;
+    public static final int MEM_UNEVICTABLE_BYTES_FIELD_NUMBER = 41;
+    private long memUnevictableBytes_;
+    /**
+     * <code>optional uint64 mem_unevictable_bytes = 41;</code>
+     */
+    public boolean hasMemUnevictableBytes() {
+      return ((bitField0_ & 0x00080000) == 0x00080000);
+    }
+    /**
+     * <code>optional uint64 mem_unevictable_bytes = 41;</code>
+     */
+    public long getMemUnevictableBytes() {
+      return memUnevictableBytes_;
+    }
+
+    // optional uint64 mem_low_pressure_counter = 32;
+    public static final int MEM_LOW_PRESSURE_COUNTER_FIELD_NUMBER = 32;
+    private long memLowPressureCounter_;
+    /**
+     * <code>optional uint64 mem_low_pressure_counter = 32;</code>
+     *
+     * <pre>
+     * Number of occurrences of different levels of memory pressure
+     * events reported by memory cgroup. Pressure listening (re)starts
+     * with these values set to 0 when agent (re)starts. See
+     * https://www.kernel.org/doc/Documentation/cgroups/memory.txt for
+     * more details.
+     * </pre>
+     */
+    public boolean hasMemLowPressureCounter() {
+      return ((bitField0_ & 0x00100000) == 0x00100000);
+    }
+    /**
+     * <code>optional uint64 mem_low_pressure_counter = 32;</code>
+     *
+     * <pre>
+     * Number of occurrences of different levels of memory pressure
+     * events reported by memory cgroup. Pressure listening (re)starts
+     * with these values set to 0 when agent (re)starts. See
+     * https://www.kernel.org/doc/Documentation/cgroups/memory.txt for
+     * more details.
+     * </pre>
+     */
+    public long getMemLowPressureCounter() {
+      return memLowPressureCounter_;
+    }
+
+    // optional uint64 mem_medium_pressure_counter = 33;
+    public static final int MEM_MEDIUM_PRESSURE_COUNTER_FIELD_NUMBER = 33;
+    private long memMediumPressureCounter_;
+    /**
+     * <code>optional uint64 mem_medium_pressure_counter = 33;</code>
+     */
+    public boolean hasMemMediumPressureCounter() {
+      return ((bitField0_ & 0x00200000) == 0x00200000);
+    }
+    /**
+     * <code>optional uint64 mem_medium_pressure_counter = 33;</code>
+     */
+    public long getMemMediumPressureCounter() {
+      return memMediumPressureCounter_;
+    }
+
+    // optional uint64 mem_critical_pressure_counter = 34;
+    public static final int MEM_CRITICAL_PRESSURE_COUNTER_FIELD_NUMBER = 34;
+    private long memCriticalPressureCounter_;
+    /**
+     * <code>optional uint64 mem_critical_pressure_counter = 34;</code>
+     */
+    public boolean hasMemCriticalPressureCounter() {
+      return ((bitField0_ & 0x00400000) == 0x00400000);
+    }
+    /**
+     * <code>optional uint64 mem_critical_pressure_counter = 34;</code>
+     */
+    public long getMemCriticalPressureCounter() {
+      return memCriticalPressureCounter_;
+    }
+
+    // optional uint64 disk_limit_bytes = 26;
+    public static final int DISK_LIMIT_BYTES_FIELD_NUMBER = 26;
+    private long diskLimitBytes_;
+    /**
+     * <code>optional uint64 disk_limit_bytes = 26;</code>
+     *
+     * <pre>
+     * Disk Usage Information for executor working directory.
+     * </pre>
+     */
+    public boolean hasDiskLimitBytes() {
+      return ((bitField0_ & 0x00800000) == 0x00800000);
+    }
+    /**
+     * <code>optional uint64 disk_limit_bytes = 26;</code>
+     *
+     * <pre>
+     * Disk Usage Information for executor working directory.
+     * </pre>
+     */
+    public long getDiskLimitBytes() {
+      return diskLimitBytes_;
+    }
+
+    // optional uint64 disk_used_bytes = 27;
+    public static final int DISK_USED_BYTES_FIELD_NUMBER = 27;
+    private long diskUsedBytes_;
+    /**
+     * <code>optional uint64 disk_used_bytes = 27;</code>
+     */
+    public boolean hasDiskUsedBytes() {
+      return ((bitField0_ & 0x01000000) == 0x01000000);
+    }
+    /**
+     * <code>optional uint64 disk_used_bytes = 27;</code>
+     */
+    public long getDiskUsedBytes() {
+      return diskUsedBytes_;
+    }
+
+    // repeated .mesos.v1.DiskStatistics disk_statistics = 43;
+    public static final int DISK_STATISTICS_FIELD_NUMBER = 43;
+    private java.util.List<org.apache.mesos.v1.Protos.DiskStatistics> diskStatistics_;
+    /**
+     * <code>repeated .mesos.v1.DiskStatistics disk_statistics = 43;</code>
+     *
+     * <pre>
+     * Per disk (resource) statistics.
+     * </pre>
+     */
+    public java.util.List<org.apache.mesos.v1.Protos.DiskStatistics> getDiskStatisticsList() {
+      return diskStatistics_;
+    }
+    /**
+     * <code>repeated .mesos.v1.DiskStatistics disk_statistics = 43;</code>
+     *
+     * <pre>
+     * Per disk (resource) statistics.
+     * </pre>
+     */
+    public java.util.List<? extends org.apache.mesos.v1.Protos.DiskStatisticsOrBuilder> 
+        getDiskStatisticsOrBuilderList() {
+      return diskStatistics_;
+    }
+    /**
+     * <code>repeated .mesos.v1.DiskStatistics disk_statistics = 43;</code>
+     *
+     * <pre>
+     * Per disk (resource) statistics.
+     * </pre>
+     */
+    public int getDiskStatisticsCount() {
+      return diskStatistics_.size();
+    }
+    /**
+     * <code>repeated .mesos.v1.DiskStatistics disk_statistics = 43;</code>
+     *
+     * <pre>
+     * Per disk (resource) statistics.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.DiskStatistics getDiskStatistics(int index) {
+      return diskStatistics_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.v1.DiskStatistics disk_statistics = 43;</code>
+     *
+     * <pre>
+     * Per disk (resource) statistics.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.DiskStatisticsOrBuilder getDiskStatisticsOrBuilder(
+        int index) {
+      return diskStatistics_.get(index);
+    }
+
+    // optional .mesos.v1.CgroupInfo.Blkio.Statistics blkio_statistics = 44;
+    public static final int BLKIO_STATISTICS_FIELD_NUMBER = 44;
+    private org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics blkioStatistics_;
+    /**
+     * <code>optional .mesos.v1.CgroupInfo.Blkio.Statistics blkio_statistics = 44;</code>
+     *
+     * <pre>
+     * Cgroups blkio statistics.
+     * </pre>
+     */
+    public boolean hasBlkioStatistics() {
+      return ((bitField0_ & 0x02000000) == 0x02000000);
+    }
+    /**
+     * <code>optional .mesos.v1.CgroupInfo.Blkio.Statistics blkio_statistics = 44;</code>
+     *
+     * <pre>
+     * Cgroups blkio statistics.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics getBlkioStatistics() {
+      return blkioStatistics_;
+    }
+    /**
+     * <code>optional .mesos.v1.CgroupInfo.Blkio.Statistics blkio_statistics = 44;</code>
+     *
+     * <pre>
+     * Cgroups blkio statistics.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.StatisticsOrBuilder getBlkioStatisticsOrBuilder() {
+      return blkioStatistics_;
+    }
+
+    // optional .mesos.v1.PerfStatistics perf = 13;
+    public static final int PERF_FIELD_NUMBER = 13;
+    private org.apache.mesos.v1.Protos.PerfStatistics perf_;
+    /**
+     * <code>optional .mesos.v1.PerfStatistics perf = 13;</code>
+     *
+     * <pre>
+     * Perf statistics.
+     * </pre>
+     */
+    public boolean hasPerf() {
+      return ((bitField0_ & 0x04000000) == 0x04000000);
+    }
+    /**
+     * <code>optional .mesos.v1.PerfStatistics perf = 13;</code>
+     *
+     * <pre>
+     * Perf statistics.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.PerfStatistics getPerf() {
+      return perf_;
+    }
+    /**
+     * <code>optional .mesos.v1.PerfStatistics perf = 13;</code>
+     *
+     * <pre>
+     * Perf statistics.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.PerfStatisticsOrBuilder getPerfOrBuilder() {
+      return perf_;
+    }
+
+    // optional uint64 net_rx_packets = 14;
+    public static final int NET_RX_PACKETS_FIELD_NUMBER = 14;
+    private long netRxPackets_;
+    /**
+     * <code>optional uint64 net_rx_packets = 14;</code>
+     *
+     * <pre>
+     * Network Usage Information:
+     * </pre>
+     */
+    public boolean hasNetRxPackets() {
+      return ((bitField0_ & 0x08000000) == 0x08000000);
+    }
+    /**
+     * <code>optional uint64 net_rx_packets = 14;</code>
+     *
+     * <pre>
+     * Network Usage Information:
+     * </pre>
+     */
+    public long getNetRxPackets() {
+      return netRxPackets_;
+    }
+
+    // optional uint64 net_rx_bytes = 15;
+    public static final int NET_RX_BYTES_FIELD_NUMBER = 15;
+    private long netRxBytes_;
+    /**
+     * <code>optional uint64 net_rx_bytes = 15;</code>
+     */
+    public boolean hasNetRxBytes() {
+      return ((bitField0_ & 0x10000000) == 0x10000000);
+    }
+    /**
+     * <code>optional uint64 net_rx_bytes = 15;</code>
+     */
+    public long getNetRxBytes() {
+      return netRxBytes_;
+    }
+
+    // optional uint64 net_rx_errors = 16;
+    public static final int NET_RX_ERRORS_FIELD_NUMBER = 16;
+    private long netRxErrors_;
+    /**
+     * <code>optional uint64 net_rx_errors = 16;</code>
+     */
+    public boolean hasNetRxErrors() {
+      return ((bitField0_ & 0x20000000) == 0x20000000);
+    }
+    /**
+     * <code>optional uint64 net_rx_errors = 16;</code>
+     */
+    public long getNetRxErrors() {
+      return netRxErrors_;
+    }
+
+    // optional uint64 net_rx_dropped = 17;
+    public static final int NET_RX_DROPPED_FIELD_NUMBER = 17;
+    private long netRxDropped_;
+    /**
+     * <code>optional uint64 net_rx_dropped = 17;</code>
+     */
+    public boolean hasNetRxDropped() {
+      return ((bitField0_ & 0x40000000) == 0x40000000);
+    }
+    /**
+     * <code>optional uint64 net_rx_dropped = 17;</code>
+     */
+    public long getNetRxDropped() {
+      return netRxDropped_;
+    }
+
+    // optional uint64 net_tx_packets = 18;
+    public static final int NET_TX_PACKETS_FIELD_NUMBER = 18;
+    private long netTxPackets_;
+    /**
+     * <code>optional uint64 net_tx_packets = 18;</code>
+     */
+    public boolean hasNetTxPackets() {
+      return ((bitField0_ & 0x80000000) == 0x80000000);
+    }
+    /**
+     * <code>optional uint64 net_tx_packets = 18;</code>
+     */
+    public long getNetTxPackets() {
+      return netTxPackets_;
+    }
+
+    // optional uint64 net_tx_bytes = 19;
+    public static final int NET_TX_BYTES_FIELD_NUMBER = 19;
+    private long netTxBytes_;
+    /**
+     * <code>optional uint64 net_tx_bytes = 19;</code>
+     */
+    public boolean hasNetTxBytes() {
+      return ((bitField1_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional uint64 net_tx_bytes = 19;</code>
+     */
+    public long getNetTxBytes() {
+      return netTxBytes_;
+    }
+
+    // optional uint64 net_tx_errors = 20;
+    public static final int NET_TX_ERRORS_FIELD_NUMBER = 20;
+    private long netTxErrors_;
+    /**
+     * <code>optional uint64 net_tx_errors = 20;</code>
+     */
+    public boolean hasNetTxErrors() {
+      return ((bitField1_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional uint64 net_tx_errors = 20;</code>
+     */
+    public long getNetTxErrors() {
+      return netTxErrors_;
+    }
+
+    // optional uint64 net_tx_dropped = 21;
+    public static final int NET_TX_DROPPED_FIELD_NUMBER = 21;
+    private long netTxDropped_;
+    /**
+     * <code>optional uint64 net_tx_dropped = 21;</code>
+     */
+    public boolean hasNetTxDropped() {
+      return ((bitField1_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional uint64 net_tx_dropped = 21;</code>
+     */
+    public long getNetTxDropped() {
+      return netTxDropped_;
+    }
+
+    // optional double net_tcp_rtt_microsecs_p50 = 22;
+    public static final int NET_TCP_RTT_MICROSECS_P50_FIELD_NUMBER = 22;
+    private double netTcpRttMicrosecsP50_;
+    /**
+     * <code>optional double net_tcp_rtt_microsecs_p50 = 22;</code>
+     *
+     * <pre>
+     * The kernel keeps track of RTT (round-trip time) for its TCP
+     * sockets. RTT is a way to tell the latency of a container.
+     * </pre>
+     */
+    public boolean hasNetTcpRttMicrosecsP50() {
+      return ((bitField1_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional double net_tcp_rtt_microsecs_p50 = 22;</code>
+     *
+     * <pre>
+     * The kernel keeps track of RTT (round-trip time) for its TCP
+     * sockets. RTT is a way to tell the latency of a container.
+     * </pre>
+     */
+    public double getNetTcpRttMicrosecsP50() {
+      return netTcpRttMicrosecsP50_;
+    }
+
+    // optional double net_tcp_rtt_microsecs_p90 = 23;
+    public static final int NET_TCP_RTT_MICROSECS_P90_FIELD_NUMBER = 23;
+    private double netTcpRttMicrosecsP90_;
+    /**
+     * <code>optional double net_tcp_rtt_microsecs_p90 = 23;</code>
+     */
+    public boolean hasNetTcpRttMicrosecsP90() {
+      return ((bitField1_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional double net_tcp_rtt_microsecs_p90 = 23;</code>
+     */
+    public double getNetTcpRttMicrosecsP90() {
+      return netTcpRttMicrosecsP90_;
+    }
+
+    // optional double net_tcp_rtt_microsecs_p95 = 24;
+    public static final int NET_TCP_RTT_MICROSECS_P95_FIELD_NUMBER = 24;
+    private double netTcpRttMicrosecsP95_;
+    /**
+     * <code>optional double net_tcp_rtt_microsecs_p95 = 24;</code>
+     */
+    public boolean hasNetTcpRttMicrosecsP95() {
+      return ((bitField1_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional double net_tcp_rtt_microsecs_p95 = 24;</code>
+     */
+    public double getNetTcpRttMicrosecsP95() {
+      return netTcpRttMicrosecsP95_;
+    }
+
+    // optional double net_tcp_rtt_microsecs_p99 = 25;
+    public static final int NET_TCP_RTT_MICROSECS_P99_FIELD_NUMBER = 25;
+    private double netTcpRttMicrosecsP99_;
+    /**
+     * <code>optional double net_tcp_rtt_microsecs_p99 = 25;</code>
+     */
+    public boolean hasNetTcpRttMicrosecsP99() {
+      return ((bitField1_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional double net_tcp_rtt_microsecs_p99 = 25;</code>
+     */
+    public double getNetTcpRttMicrosecsP99() {
+      return netTcpRttMicrosecsP99_;
+    }
+
+    // optional double net_tcp_active_connections = 28;
+    public static final int NET_TCP_ACTIVE_CONNECTIONS_FIELD_NUMBER = 28;
+    private double netTcpActiveConnections_;
+    /**
+     * <code>optional double net_tcp_active_connections = 28;</code>
+     */
+    public boolean hasNetTcpActiveConnections() {
+      return ((bitField1_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional double net_tcp_active_connections = 28;</code>
+     */
+    public double getNetTcpActiveConnections() {
+      return netTcpActiveConnections_;
+    }
+
+    // optional double net_tcp_time_wait_connections = 29;
+    public static final int NET_TCP_TIME_WAIT_CONNECTIONS_FIELD_NUMBER = 29;
+    private double netTcpTimeWaitConnections_;
+    /**
+     * <code>optional double net_tcp_time_wait_connections = 29;</code>
+     */
+    public boolean hasNetTcpTimeWaitConnections() {
+      return ((bitField1_ & 0x00000100) == 0x00000100);
+    }
+    /**
+     * <code>optional double net_tcp_time_wait_connections = 29;</code>
+     */
+    public double getNetTcpTimeWaitConnections() {
+      return netTcpTimeWaitConnections_;
+    }
+
+    // repeated .mesos.v1.TrafficControlStatistics net_traffic_control_statistics = 35;
+    public static final int NET_TRAFFIC_CONTROL_STATISTICS_FIELD_NUMBER = 35;
+    private java.util.List<org.apache.mesos.v1.Protos.TrafficControlStatistics> netTrafficControlStatistics_;
+    /**
+     * <code>repeated .mesos.v1.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+     *
+     * <pre>
+     * Network traffic flowing into or out of a container can be delayed
+     * or dropped due to congestion or policy inside and outside the
+     * container.
+     * </pre>
+     */
+    public java.util.List<org.apache.mesos.v1.Protos.TrafficControlStatistics> getNetTrafficControlStatisticsList() {
+      return netTrafficControlStatistics_;
+    }
+    /**
+     * <code>repeated .mesos.v1.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+     *
+     * <pre>
+     * Network traffic flowing into or out of a container can be delayed
+     * or dropped due to congestion or policy inside and outside the
+     * container.
+     * </pre>
+     */
+    public java.util.List<? extends org.apache.mesos.v1.Protos.TrafficControlStatisticsOrBuilder> 
+        getNetTrafficControlStatisticsOrBuilderList() {
+      return netTrafficControlStatistics_;
+    }
+    /**
+     * <code>repeated .mesos.v1.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+     *
+     * <pre>
+     * Network traffic flowing into or out of a container can be delayed
+     * or dropped due to congestion or policy inside and outside the
+     * container.
+     * </pre>
+     */
+    public int getNetTrafficControlStatisticsCount() {
+      return netTrafficControlStatistics_.size();
+    }
+    /**
+     * <code>repeated .mesos.v1.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+     *
+     * <pre>
+     * Network traffic flowing into or out of a container can be delayed
+     * or dropped due to congestion or policy inside and outside the
+     * container.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.TrafficControlStatistics getNetTrafficControlStatistics(int index) {
+      return netTrafficControlStatistics_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.v1.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+     *
+     * <pre>
+     * Network traffic flowing into or out of a container can be delayed
+     * or dropped due to congestion or policy inside and outside the
+     * container.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.TrafficControlStatisticsOrBuilder getNetTrafficControlStatisticsOrBuilder(
+        int index) {
+      return netTrafficControlStatistics_.get(index);
+    }
+
+    // optional .mesos.v1.SNMPStatistics net_snmp_statistics = 42;
+    public static final int NET_SNMP_STATISTICS_FIELD_NUMBER = 42;
+    private org.apache.mesos.v1.Protos.SNMPStatistics netSnmpStatistics_;
+    /**
+     * <code>optional .mesos.v1.SNMPStatistics net_snmp_statistics = 42;</code>
+     *
+     * <pre>
+     * Network SNMP statistics for each container.
+     * </pre>
+     */
+    public boolean hasNetSnmpStatistics() {
+      return ((bitField1_ & 0x00000200) == 0x00000200);
+    }
+    /**
+     * <code>optional .mesos.v1.SNMPStatistics net_snmp_statistics = 42;</code>
+     *
+     * <pre>
+     * Network SNMP statistics for each container.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.SNMPStatistics getNetSnmpStatistics() {
+      return netSnmpStatistics_;
+    }
+    /**
+     * <code>optional .mesos.v1.SNMPStatistics net_snmp_statistics = 42;</code>
+     *
+     * <pre>
+     * Network SNMP statistics for each container.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.SNMPStatisticsOrBuilder getNetSnmpStatisticsOrBuilder() {
+      return netSnmpStatistics_;
+    }
+
+    private void initFields() {
+      timestamp_ = 0D;
+      processes_ = 0;
+      threads_ = 0;
+      cpusUserTimeSecs_ = 0D;
+      cpusSystemTimeSecs_ = 0D;
+      cpusLimit_ = 0D;
+      cpusNrPeriods_ = 0;
+      cpusNrThrottled_ = 0;
+      cpusThrottledTimeSecs_ = 0D;
+      memTotalBytes_ = 0L;
+      memTotalMemswBytes_ = 0L;
+      memLimitBytes_ = 0L;
+      memSoftLimitBytes_ = 0L;
+      memFileBytes_ = 0L;
+      memAnonBytes_ = 0L;
+      memCacheBytes_ = 0L;
+      memRssBytes_ = 0L;
+      memMappedFileBytes_ = 0L;
+      memSwapBytes_ = 0L;
+      memUnevictableBytes_ = 0L;
+      memLowPressureCounter_ = 0L;
+      memMediumPressureCounter_ = 0L;
+      memCriticalPressureCounter_ = 0L;
+      diskLimitBytes_ = 0L;
+      diskUsedBytes_ = 0L;
+      diskStatistics_ = java.util.Collections.emptyList();
+      blkioStatistics_ = org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics.getDefaultInstance();
+      perf_ = org.apache.mesos.v1.Protos.PerfStatistics.getDefaultInstance();
+      netRxPackets_ = 0L;
+      netRxBytes_ = 0L;
+      netRxErrors_ = 0L;
+      netRxDropped_ = 0L;
+      netTxPackets_ = 0L;
+      netTxBytes_ = 0L;
+      netTxErrors_ = 0L;
+      netTxDropped_ = 0L;
+      netTcpRttMicrosecsP50_ = 0D;
+      netTcpRttMicrosecsP90_ = 0D;
+      netTcpRttMicrosecsP95_ = 0D;
+      netTcpRttMicrosecsP99_ = 0D;
+      netTcpActiveConnections_ = 0D;
+      netTcpTimeWaitConnections_ = 0D;
+      netTrafficControlStatistics_ = java.util.Collections.emptyList();
+      netSnmpStatistics_ = org.apache.mesos.v1.Protos.SNMPStatistics.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasTimestamp()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      for (int i = 0; i < getDiskStatisticsCount(); i++) {
+        if (!getDiskStatistics(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasBlkioStatistics()) {
+        if (!getBlkioStatistics().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasPerf()) {
+        if (!getPerf().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      for (int i = 0; i < getNetTrafficControlStatisticsCount(); i++) {
+        if (!getNetTrafficControlStatistics(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeDouble(1, timestamp_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeDouble(2, cpusUserTimeSecs_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeDouble(3, cpusSystemTimeSecs_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeDouble(4, cpusLimit_);
+      }
+      if (((bitField0_ & 0x00010000) == 0x00010000)) {
+        output.writeUInt64(5, memRssBytes_);
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        output.writeUInt64(6, memLimitBytes_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeUInt32(7, cpusNrPeriods_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        output.writeUInt32(8, cpusNrThrottled_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        output.writeDouble(9, cpusThrottledTimeSecs_);
+      }
+      if (((bitField0_ & 0x00002000) == 0x00002000)) {
+        output.writeUInt64(10, memFileBytes_);
+      }
+      if (((bitField0_ & 0x00004000) == 0x00004000)) {
+        output.writeUInt64(11, memAnonBytes_);
+      }
+      if (((bitField0_ & 0x00020000) == 0x00020000)) {
+        output.writeUInt64(12, memMappedFileBytes_);
+      }
+      if (((bitField0_ & 0x04000000) == 0x04000000)) {
+        output.writeMessage(13, perf_);
+      }
+      if (((bitField0_ & 0x08000000) == 0x08000000)) {
+        output.writeUInt64(14, netRxPackets_);
+      }
+      if (((bitField0_ & 0x10000000) == 0x10000000)) {
+        output.writeUInt64(15, netRxBytes_);
+      }
+      if (((bitField0_ & 0x20000000) == 0x20000000)) {
+        output.writeUInt64(16, netRxErrors_);
+      }
+      if (((bitField0_ & 0x40000000) == 0x40000000)) {
+        output.writeUInt64(17, netRxDropped_);
+      }
+      if (((bitField0_ & 0x80000000) == 0x80000000)) {
+        output.writeUInt64(18, netTxPackets_);
+      }
+      if (((bitField1_ & 0x00000001) == 0x00000001)) {
+        output.writeUInt64(19, netTxBytes_);
+      }
+      if (((bitField1_ & 0x00000002) == 0x00000002)) {
+        output.writeUInt64(20, netTxErrors_);
+      }
+      if (((bitField1_ & 0x00000004) == 0x00000004)) {
+        output.writeUInt64(21, netTxDropped_);
+      }
+      if (((bitField1_ & 0x00000008) == 0x00000008)) {
+        output.writeDouble(22, netTcpRttMicrosecsP50_);
+      }
+      if (((bitField1_ & 0x00000010) == 0x00000010)) {
+        output.writeDouble(23, netTcpRttMicrosecsP90_);
+      }
+      if (((bitField1_ & 0x00000020) == 0x00000020)) {
+        output.writeDouble(24, netTcpRttMicrosecsP95_);
+      }
+      if (((bitField1_ & 0x00000040) == 0x00000040)) {
+        output.writeDouble(25, netTcpRttMicrosecsP99_);
+      }
+      if (((bitField0_ & 0x00800000) == 0x00800000)) {
+        output.writeUInt64(26, diskLimitBytes_);
+      }
+      if (((bitField0_ & 0x01000000) == 0x01000000)) {
+        output.writeUInt64(27, diskUsedBytes_);
+      }
+      if (((bitField1_ & 0x00000080) == 0x00000080)) {
+        output.writeDouble(28, netTcpActiveConnections_);
+      }
+      if (((bitField1_ & 0x00000100) == 0x00000100)) {
+        output.writeDouble(29, netTcpTimeWaitConnections_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeUInt32(30, processes_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeUInt32(31, threads_);
+      }
+      if (((bitField0_ & 0x00100000) == 0x00100000)) {
+        output.writeUInt64(32, memLowPressureCounter_);
+      }
+      if (((bitField0_ & 0x00200000) == 0x00200000)) {
+        output.writeUInt64(33, memMediumPressureCounter_);
+      }
+      if (((bitField0_ & 0x00400000) == 0x00400000)) {
+        output.writeUInt64(34, memCriticalPressureCounter_);
+      }
+      for (int i = 0; i < netTrafficControlStatistics_.size(); i++) {
+        output.writeMessage(35, netTrafficControlStatistics_.get(i));
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        output.writeUInt64(36, memTotalBytes_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        output.writeUInt64(37, memTotalMemswBytes_);
+      }
+      if (((bitField0_ & 0x00001000) == 0x00001000)) {
+        output.writeUInt64(38, memSoftLimitBytes_);
+      }
+      if (((bitField0_ & 0x00008000) == 0x00008000)) {
+        output.writeUInt64(39, memCacheBytes_);
+      }
+      if (((bitField0_ & 0x00040000) == 0x00040000)) {
+        output.writeUInt64(40, memSwapBytes_);
+      }
+      if (((bitField0_ & 0x00080000) == 0x00080000)) {
+        output.writeUInt64(41, memUnevictableBytes_);
+      }
+      if (((bitField1_ & 0x00000200) == 0x00000200)) {
+        output.writeMessage(42, netSnmpStatistics_);
+      }
+      for (int i = 0; i < diskStatistics_.size(); i++) {
+        output.writeMessage(43, diskStatistics_.get(i));
+      }
+      if (((bitField0_ & 0x02000000) == 0x02000000)) {
+        output.writeMessage(44, blkioStatistics_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(1, timestamp_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(2, cpusUserTimeSecs_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(3, cpusSystemTimeSecs_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(4, cpusLimit_);
+      }
+      if (((bitField0_ & 0x00010000) == 0x00010000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(5, memRssBytes_);
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(6, memLimitBytes_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(7, cpusNrPeriods_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(8, cpusNrThrottled_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(9, cpusThrottledTimeSecs_);
+      }
+      if (((bitField0_ & 0x00002000) == 0x00002000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(10, memFileBytes_);
+      }
+      if (((bitField0_ & 0x00004000) == 0x00004000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(11, memAnonBytes_);
+      }
+      if (((bitField0_ & 0x00020000) == 0x00020000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(12, memMappedFileBytes_);
+      }
+      if (((bitField0_ & 0x04000000) == 0x04000000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(13, perf_);
+      }
+      if (((bitField0_ & 0x08000000) == 0x08000000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(14, netRxPackets_);
+      }
+      if (((bitField0_ & 0x10000000) == 0x10000000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(15, netRxBytes_);
+      }
+      if (((bitField0_ & 0x20000000) == 0x20000000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(16, netRxErrors_);
+      }
+      if (((bitField0_ & 0x40000000) == 0x40000000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(17, netRxDropped_);
+      }
+      if (((bitField0_ & 0x80000000) == 0x80000000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(18, netTxPackets_);
+      }
+      if (((bitField1_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(19, netTxBytes_);
+      }
+      if (((bitField1_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(20, netTxErrors_);
+      }
+      if (((bitField1_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(21, netTxDropped_);
+      }
+      if (((bitField1_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(22, netTcpRttMicrosecsP50_);
+      }
+      if (((bitField1_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(23, netTcpRttMicrosecsP90_);
+      }
+      if (((bitField1_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(24, netTcpRttMicrosecsP95_);
+      }
+      if (((bitField1_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(25, netTcpRttMicrosecsP99_);
+      }
+      if (((bitField0_ & 0x00800000) == 0x00800000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(26, diskLimitBytes_);
+      }
+      if (((bitField0_ & 0x01000000) == 0x01000000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(27, diskUsedBytes_);
+      }
+      if (((bitField1_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(28, netTcpActiveConnections_);
+      }
+      if (((bitField1_ & 0x00000100) == 0x00000100)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(29, netTcpTimeWaitConnections_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(30, processes_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(31, threads_);
+      }
+      if (((bitField0_ & 0x00100000) == 0x00100000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(32, memLowPressureCounter_);
+      }
+      if (((bitField0_ & 0x00200000) == 0x00200000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(33, memMediumPressureCounter_);
+      }
+      if (((bitField0_ & 0x00400000) == 0x00400000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(34, memCriticalPressureCounter_);
+      }
+      for (int i = 0; i < netTrafficControlStatistics_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(35, netTrafficControlStatistics_.get(i));
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(36, memTotalBytes_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(37, memTotalMemswBytes_);
+      }
+      if (((bitField0_ & 0x00001000) == 0x00001000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(38, memSoftLimitBytes_);
+      }
+      if (((bitField0_ & 0x00008000) == 0x00008000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(39, memCacheBytes_);
+      }
+      if (((bitField0_ & 0x00040000) == 0x00040000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(40, memSwapBytes_);
+      }
+      if (((bitField0_ & 0x00080000) == 0x00080000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(41, memUnevictableBytes_);
+      }
+      if (((bitField1_ & 0x00000200) == 0x00000200)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(42, netSnmpStatistics_);
+      }
+      for (int i = 0; i < diskStatistics_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(43, diskStatistics_.get(i));
+      }
+      if (((bitField0_ & 0x02000000) == 0x02000000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(44, blkioStatistics_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.ResourceStatistics parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.ResourceStatistics parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.ResourceStatistics parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.ResourceStatistics parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.ResourceStatistics parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.ResourceStatistics parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.ResourceStatistics parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.ResourceStatistics parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.ResourceStatistics parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.ResourceStatistics parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.ResourceStatistics prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.ResourceStatistics}
+     *
+     * <pre>
+     **
+     * A snapshot of resource usage statistics.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.ResourceStatisticsOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ResourceStatistics_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ResourceStatistics_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.ResourceStatistics.class, org.apache.mesos.v1.Protos.ResourceStatistics.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.ResourceStatistics.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getDiskStatisticsFieldBuilder();
+          getBlkioStatisticsFieldBuilder();
+          getPerfFieldBuilder();
+          getNetTrafficControlStatisticsFieldBuilder();
+          getNetSnmpStatisticsFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        timestamp_ = 0D;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        processes_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        threads_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        cpusUserTimeSecs_ = 0D;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        cpusSystemTimeSecs_ = 0D;
+        bitField0_ = (bitField0_ & ~0x00000010);
+        cpusLimit_ = 0D;
+        bitField0_ = (bitField0_ & ~0x00000020);
+        cpusNrPeriods_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000040);
+        cpusNrThrottled_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000080);
+        cpusThrottledTimeSecs_ = 0D;
+        bitField0_ = (bitField0_ & ~0x00000100);
+        memTotalBytes_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000200);
+        memTotalMemswBytes_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000400);
+        memLimitBytes_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000800);
+        memSoftLimitBytes_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00001000);
+        memFileBytes_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00002000);
+        memAnonBytes_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00004000);
+        memCacheBytes_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00008000);
+        memRssBytes_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00010000);
+        memMappedFileBytes_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00020000);
+        memSwapBytes_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00040000);
+        memUnevictableBytes_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00080000);
+        memLowPressureCounter_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00100000);
+        memMediumPressureCounter_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00200000);
+        memCriticalPressureCounter_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00400000);
+        diskLimitBytes_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00800000);
+        diskUsedBytes_ = 0L;
+        bitField0_ = (bitField0_ & ~0x01000000);
+        if (diskStatisticsBuilder_ == null) {
+          diskStatistics_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x02000000);
+        } else {
+          diskStatisticsBuilder_.clear();
+        }
+        if (blkioStatisticsBuilder_ == null) {
+          blkioStatistics_ = org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics.getDefaultInstance();
+        } else {
+          blkioStatisticsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x04000000);
+        if (perfBuilder_ == null) {
+          perf_ = org.apache.mesos.v1.Protos.PerfStatistics.getDefaultInstance();
+        } else {
+          perfBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x08000000);
+        netRxPackets_ = 0L;
+        bitField0_ = (bitField0_ & ~0x10000000);
+        netRxBytes_ = 0L;
+        bitField0_ = (bitField0_ & ~0x20000000);
+        netRxErrors_ = 0L;
+        bitField0_ = (bitField0_ & ~0x40000000);
+        netRxDropped_ = 0L;
+        bitField0_ = (bitField0_ & ~0x80000000);
+        netTxPackets_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00000001);
+        netTxBytes_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00000002);
+        netTxErrors_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00000004);
+        netTxDropped_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00000008);
+        netTcpRttMicrosecsP50_ = 0D;
+        bitField1_ = (bitField1_ & ~0x00000010);
+        netTcpRttMicrosecsP90_ = 0D;
+        bitField1_ = (bitField1_ & ~0x00000020);
+        netTcpRttMicrosecsP95_ = 0D;
+        bitField1_ = (bitField1_ & ~0x00000040);
+        netTcpRttMicrosecsP99_ = 0D;
+        bitField1_ = (bitField1_ & ~0x00000080);
+        netTcpActiveConnections_ = 0D;
+        bitField1_ = (bitField1_ & ~0x00000100);
+        netTcpTimeWaitConnections_ = 0D;
+        bitField1_ = (bitField1_ & ~0x00000200);
+        if (netTrafficControlStatisticsBuilder_ == null) {
+          netTrafficControlStatistics_ = java.util.Collections.emptyList();
+          bitField1_ = (bitField1_ & ~0x00000400);
+        } else {
+          netTrafficControlStatisticsBuilder_.clear();
+        }
+        if (netSnmpStatisticsBuilder_ == null) {
+          netSnmpStatistics_ = org.apache.mesos.v1.Protos.SNMPStatistics.getDefaultInstance();
+        } else {
+          netSnmpStatisticsBuilder_.clear();
+        }
+        bitField1_ = (bitField1_ & ~0x00000800);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ResourceStatistics_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.ResourceStatistics getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.ResourceStatistics.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.ResourceStatistics build() {
+        org.apache.mesos.v1.Protos.ResourceStatistics result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.ResourceStatistics buildPartial() {
+        org.apache.mesos.v1.Protos.ResourceStatistics result = new org.apache.mesos.v1.Protos.ResourceStatistics(this);
+        int from_bitField0_ = bitField0_;
+        int from_bitField1_ = bitField1_;
+        int to_bitField0_ = 0;
+        int to_bitField1_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.timestamp_ = timestamp_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.processes_ = processes_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.threads_ = threads_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.cpusUserTimeSecs_ = cpusUserTimeSecs_;
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.cpusSystemTimeSecs_ = cpusSystemTimeSecs_;
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        result.cpusLimit_ = cpusLimit_;
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        result.cpusNrPeriods_ = cpusNrPeriods_;
+        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+          to_bitField0_ |= 0x00000080;
+        }
+        result.cpusNrThrottled_ = cpusNrThrottled_;
+        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
+          to_bitField0_ |= 0x00000100;
+        }
+        result.cpusThrottledTimeSecs_ = cpusThrottledTimeSecs_;
+        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
+          to_bitField0_ |= 0x00000200;
+        }
+        result.memTotalBytes_ = memTotalBytes_;
+        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
+          to_bitField0_ |= 0x00000400;
+        }
+        result.memTotalMemswBytes_ = memTotalMemswBytes_;
+        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
+          to_bitField0_ |= 0x00000800;
+        }
+        result.memLimitBytes_ = memLimitBytes_;
+        if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
+          to_bitField0_ |= 0x00001000;
+        }
+        result.memSoftLimitBytes_ = memSoftLimitBytes_;
+        if (((from_bitField0_ & 0x00002000) == 0x00002000)) {
+          to_bitField0_ |= 0x00002000;
+        }
+        result.memFileBytes_ = memFileBytes_;
+        if (((from_bitField0_ & 0x00004000) == 0x00004000)) {
+          to_bitField0_ |= 0x00004000;
+        }
+        result.memAnonBytes_ = memAnonBytes_;
+        if (((from_bitField0_ & 0x00008000) == 0x00008000)) {
+          to_bitField0_ |= 0x00008000;
+        }
+        result.memCacheBytes_ = memCacheBytes_;
+        if (((from_bitField0_ & 0x00010000) == 0x00010000)) {
+          to_bitField0_ |= 0x00010000;
+        }
+        result.memRssBytes_ = memRssBytes_;
+        if (((from_bitField0_ & 0x00020000) == 0x00020000)) {
+          to_bitField0_ |= 0x00020000;
+        }
+        result.memMappedFileBytes_ = memMappedFileBytes_;
+        if (((from_bitField0_ & 0x00040000) == 0x00040000)) {
+          to_bitField0_ |= 0x00040000;
+        }
+        result.memSwapBytes_ = memSwapBytes_;
+        if (((from_bitField0_ & 0x00080000) == 0x00080000)) {
+          to_bitField0_ |= 0x00080000;
+        }
+        result.memUnevictableBytes_ = memUnevictableBytes_;
+        if (((from_bitField0_ & 0x00100000) == 0x00100000)) {
+          to_bitField0_ |= 0x00100000;
+        }
+        result.memLowPressureCounter_ = memLowPressureCounter_;
+        if (((from_bitField0_ & 0x00200000) == 0x00200000)) {
+          to_bitField0_ |= 0x00200000;
+        }
+        result.memMediumPressureCounter_ = memMediumPressureCounter_;
+        if (((from_bitField0_ & 0x00400000) == 0x00400000)) {
+          to_bitField0_ |= 0x00400000;
+        }
+        result.memCriticalPressureCounter_ = memCriticalPressureCounter_;
+        if (((from_bitField0_ & 0x00800000) == 0x00800000)) {
+          to_bitField0_ |= 0x00800000;
+        }
+        result.diskLimitBytes_ = diskLimitBytes_;
+        if (((from_bitField0_ & 0x01000000) == 0x01000000)) {
+          to_bitField0_ |= 0x01000000;
+        }
+        result.diskUsedBytes_ = diskUsedBytes_;
+        if (diskStatisticsBuilder_ == null) {
+          if (((bitField0_ & 0x02000000) == 0x02000000)) {
+            diskStatistics_ = java.util.Collections.unmodifiableList(diskStatistics_);
+            bitField0_ = (bitField0_ & ~0x02000000);
+          }
+          result.diskStatistics_ = diskStatistics_;
+        } else {
+          result.diskStatistics_ = diskStatisticsBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x04000000) == 0x04000000)) {
+          to_bitField0_ |= 0x02000000;
+        }
+        if (blkioStatisticsBuilder_ == null) {
+          result.blkioStatistics_ = blkioStatistics_;
+        } else {
+          result.blkioStatistics_ = blkioStatisticsBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x08000000) == 0x08000000)) {
+          to_bitField0_ |= 0x04000000;
+        }
+        if (perfBuilder_ == null) {
+          result.perf_ = perf_;
+        } else {
+          result.perf_ = perfBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x10000000) == 0x10000000)) {
+          to_bitField0_ |= 0x08000000;
+        }
+        result.netRxPackets_ = netRxPackets_;
+        if (((from_bitField0_ & 0x20000000) == 0x20000000)) {
+          to_bitField0_ |= 0x10000000;
+        }
+        result.netRxBytes_ = netRxBytes_;
+        if (((from_bitField0_ & 0x40000000) == 0x40000000)) {
+          to_bitField0_ |= 0x20000000;
+        }
+        result.netRxErrors_ = netRxErrors_;
+        if (((from_bitField0_ & 0x80000000) == 0x80000000)) {
+          to_bitField0_ |= 0x40000000;
+        }
+        result.netRxDropped_ = netRxDropped_;
+        if (((from_bitField1_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x80000000;
+        }
+        result.netTxPackets_ = netTxPackets_;
+        if (((from_bitField1_ & 0x00000002) == 0x00000002)) {
+          to_bitField1_ |= 0x00000001;
+        }
+        result.netTxBytes_ = netTxBytes_;
+        if (((from_bitField1_ & 0x00000004) == 0x00000004)) {
+          to_bitField1_ |= 0x00000002;
+        }
+        result.netTxErrors_ = netTxErrors_;
+        if (((from_bitField1_ & 0x00000008) == 0x00000008)) {
+          to_bitField1_ |= 0x00000004;
+        }
+        result.netTxDropped_ = netTxDropped_;
+        if (((from_bitField1_ & 0x00000010) == 0x00000010)) {
+          to_bitField1_ |= 0x00000008;
+        }
+        result.netTcpRttMicrosecsP50_ = netTcpRttMicrosecsP50_;
+        if (((from_bitField1_ & 0x00000020) == 0x00000020)) {
+          to_bitField1_ |= 0x00000010;
+        }
+        result.netTcpRttMicrosecsP90_ = netTcpRttMicrosecsP90_;
+        if (((from_bitField1_ & 0x00000040) == 0x00000040)) {
+          to_bitField1_ |= 0x00000020;
+        }
+        result.netTcpRttMicrosecsP95_ = netTcpRttMicrosecsP95_;
+        if (((from_bitField1_ & 0x00000080) == 0x00000080)) {
+          to_bitField1_ |= 0x00000040;
+        }
+        result.netTcpRttMicrosecsP99_ = netTcpRttMicrosecsP99_;
+        if (((from_bitField1_ & 0x00000100) == 0x00000100)) {
+          to_bitField1_ |= 0x00000080;
+        }
+        result.netTcpActiveConnections_ = netTcpActiveConnections_;
+        if (((from_bitField1_ & 0x00000200) == 0x00000200)) {
+          to_bitField1_ |= 0x00000100;
+        }
+        result.netTcpTimeWaitConnections_ = netTcpTimeWaitConnections_;
+        if (netTrafficControlStatisticsBuilder_ == null) {
+          if (((bitField1_ & 0x00000400) == 0x00000400)) {
+            netTrafficControlStatistics_ = java.util.Collections.unmodifiableList(netTrafficControlStatistics_);
+            bitField1_ = (bitField1_ & ~0x00000400);
+          }
+          result.netTrafficControlStatistics_ = netTrafficControlStatistics_;
+        } else {
+          result.netTrafficControlStatistics_ = netTrafficControlStatisticsBuilder_.build();
+        }
+        if (((from_bitField1_ & 0x00000800) == 0x00000800)) {
+          to_bitField1_ |= 0x00000200;
+        }
+        if (netSnmpStatisticsBuilder_ == null) {
+          result.netSnmpStatistics_ = netSnmpStatistics_;
+        } else {
+          result.netSnmpStatistics_ = netSnmpStatisticsBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        result.bitField1_ = to_bitField1_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.ResourceStatistics) {
+          return mergeFrom((org.apache.mesos.v1.Protos.ResourceStatistics)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.ResourceStatistics other) {
+        if (other == org.apache.mesos.v1.Protos.ResourceStatistics.getDefaultInstance()) return this;
+        if (other.hasTimestamp()) {
+          setTimestamp(other.getTimestamp());
+        }
+        if (other.hasProcesses()) {
+          setProcesses(other.getProcesses());
+        }
+        if (other.hasThreads()) {
+          setThreads(other.getThreads());
+        }
+        if (other.hasCpusUserTimeSecs()) {
+          setCpusUserTimeSecs(other.getCpusUserTimeSecs());
+        }
+        if (other.hasCpusSystemTimeSecs()) {
+          setCpusSystemTimeSecs(other.getCpusSystemTimeSecs());
+        }
+        if (other.hasCpusLimit()) {
+          setCpusLimit(other.getCpusLimit());
+        }
+        if (other.hasCpusNrPeriods()) {
+          setCpusNrPeriods(other.getCpusNrPeriods());
+        }
+        if (other.hasCpusNrThrottled()) {
+          setCpusNrThrottled(other.getCpusNrThrottled());
+        }
+        if (other.hasCpusThrottledTimeSecs()) {
+          setCpusThrottledTimeSecs(other.getCpusThrottledTimeSecs());
+        }
+        if (other.hasMemTotalBytes()) {
+          setMemTotalBytes(other.getMemTotalBytes());
+        }
+        if (other.hasMemTotalMemswBytes()) {
+          setMemTotalMemswBytes(other.getMemTotalMemswBytes());
+        }
+        if (other.hasMemLimitBytes()) {
+          setMemLimitBytes(other.getMemLimitBytes());
+        }
+        if (other.hasMemSoftLimitBytes()) {
+          setMemSoftLimitBytes(other.getMemSoftLimitBytes());
+        }
+        if (other.hasMemFileBytes()) {
+          setMemFileBytes(other.getMemFileBytes());
+        }
+        if (other.hasMemAnonBytes()) {
+          setMemAnonBytes(other.getMemAnonBytes());
+        }
+        if (other.hasMemCacheBytes()) {
+          setMemCacheBytes(other.getMemCacheBytes());
+        }
+        if (other.hasMemRssBytes()) {
+          setMemRssBytes(other.getMemRssBytes());
+        }
+        if (other.hasMemMappedFileBytes()) {
+          setMemMappedFileBytes(other.getMemMappedFileBytes());
+        }
+        if (other.hasMemSwapBytes()) {
+          setMemSwapBytes(other.getMemSwapBytes());
+        }
+        if (other.hasMemUnevictableBytes()) {
+          setMemUnevictableBytes(other.getMemUnevictableBytes());
+        }
+        if (other.hasMemLowPressureCounter()) {
+          setMemLowPressureCounter(other.getMemLowPressureCounter());
+        }
+        if (other.hasMemMediumPressureCounter()) {
+          setMemMediumPressureCounter(other.getMemMediumPressureCounter());
+        }
+        if (other.hasMemCriticalPressureCounter()) {
+          setMemCriticalPressureCounter(other.getMemCriticalPressureCounter());
+        }
+        if (other.hasDiskLimitBytes()) {
+          setDiskLimitBytes(other.getDiskLimitBytes());
+        }
+        if (other.hasDiskUsedBytes()) {
+          setDiskUsedBytes(other.getDiskUsedBytes());
+        }
+        if (diskStatisticsBuilder_ == null) {
+          if (!other.diskStatistics_.isEmpty()) {
+            if (diskStatistics_.isEmpty()) {
+              diskStatistics_ = other.diskStatistics_;
+              bitField0_ = (bitField0_ & ~0x02000000);
+            } else {
+              ensureDiskStatisticsIsMutable();
+              diskStatistics_.addAll(other.diskStatistics_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.diskStatistics_.isEmpty()) {
+            if (diskStatisticsBuilder_.isEmpty()) {
+              diskStatisticsBuilder_.dispose();
+              diskStatisticsBuilder_ = null;
+              diskStatistics_ = other.diskStatistics_;
+              bitField0_ = (bitField0_ & ~0x02000000);
+              diskStatisticsBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getDiskStatisticsFieldBuilder() : null;
+            } else {
+              diskStatisticsBuilder_.addAllMessages(other.diskStatistics_);
+            }
+          }
+        }
+        if (other.hasBlkioStatistics()) {
+          mergeBlkioStatistics(other.getBlkioStatistics());
+        }
+        if (other.hasPerf()) {
+          mergePerf(other.getPerf());
+        }
+        if (other.hasNetRxPackets()) {
+          setNetRxPackets(other.getNetRxPackets());
+        }
+        if (other.hasNetRxBytes()) {
+          setNetRxBytes(other.getNetRxBytes());
+        }
+        if (other.hasNetRxErrors()) {
+          setNetRxErrors(other.getNetRxErrors());
+        }
+        if (other.hasNetRxDropped()) {
+          setNetRxDropped(other.getNetRxDropped());
+        }
+        if (other.hasNetTxPackets()) {
+          setNetTxPackets(other.getNetTxPackets());
+        }
+        if (other.hasNetTxBytes()) {
+          setNetTxBytes(other.getNetTxBytes());
+        }
+        if (other.hasNetTxErrors()) {
+          setNetTxErrors(other.getNetTxErrors());
+        }
+        if (other.hasNetTxDropped()) {
+          setNetTxDropped(other.getNetTxDropped());
+        }
+        if (other.hasNetTcpRttMicrosecsP50()) {
+          setNetTcpRttMicrosecsP50(other.getNetTcpRttMicrosecsP50());
+        }
+        if (other.hasNetTcpRttMicrosecsP90()) {
+          setNetTcpRttMicrosecsP90(other.getNetTcpRttMicrosecsP90());
+        }
+        if (other.hasNetTcpRttMicrosecsP95()) {
+          setNetTcpRttMicrosecsP95(other.getNetTcpRttMicrosecsP95());
+        }
+        if (other.hasNetTcpRttMicrosecsP99()) {
+          setNetTcpRttMicrosecsP99(other.getNetTcpRttMicrosecsP99());
+        }
+        if (other.hasNetTcpActiveConnections()) {
+          setNetTcpActiveConnections(other.getNetTcpActiveConnections());
+        }
+        if (other.hasNetTcpTimeWaitConnections()) {
+          setNetTcpTimeWaitConnections(other.getNetTcpTimeWaitConnections());
+        }
+        if (netTrafficControlStatisticsBuilder_ == null) {
+          if (!other.netTrafficControlStatistics_.isEmpty()) {
+            if (netTrafficControlStatistics_.isEmpty()) {
+              netTrafficControlStatistics_ = other.netTrafficControlStatistics_;
+              bitField1_ = (bitField1_ & ~0x00000400);
+            } else {
+              ensureNetTrafficControlStatisticsIsMutable();
+              netTrafficControlStatistics_.addAll(other.netTrafficControlStatistics_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.netTrafficControlStatistics_.isEmpty()) {
+            if (netTrafficControlStatisticsBuilder_.isEmpty()) {
+              netTrafficControlStatisticsBuilder_.dispose();
+              netTrafficControlStatisticsBuilder_ = null;
+              netTrafficControlStatistics_ = other.netTrafficControlStatistics_;
+              bitField1_ = (bitField1_ & ~0x00000400);
+              netTrafficControlStatisticsBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getNetTrafficControlStatisticsFieldBuilder() : null;
+            } else {
+              netTrafficControlStatisticsBuilder_.addAllMessages(other.netTrafficControlStatistics_);
+            }
+          }
+        }
+        if (other.hasNetSnmpStatistics()) {
+          mergeNetSnmpStatistics(other.getNetSnmpStatistics());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasTimestamp()) {
+          
+          return false;
+        }
+        for (int i = 0; i < getDiskStatisticsCount(); i++) {
+          if (!getDiskStatistics(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasBlkioStatistics()) {
+          if (!getBlkioStatistics().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasPerf()) {
+          if (!getPerf().isInitialized()) {
+            
+            return false;
+          }
+        }
+        for (int i = 0; i < getNetTrafficControlStatisticsCount(); i++) {
+          if (!getNetTrafficControlStatistics(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.ResourceStatistics parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.ResourceStatistics) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+      private int bitField1_;
+
+      // required double timestamp = 1;
+      private double timestamp_ ;
+      /**
+       * <code>required double timestamp = 1;</code>
+       *
+       * <pre>
+       * Snapshot time, in seconds since the Epoch.
+       * </pre>
+       */
+      public boolean hasTimestamp() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required double timestamp = 1;</code>
+       *
+       * <pre>
+       * Snapshot time, in seconds since the Epoch.
+       * </pre>
+       */
+      public double getTimestamp() {
+        return timestamp_;
+      }
+      /**
+       * <code>required double timestamp = 1;</code>
+       *
+       * <pre>
+       * Snapshot time, in seconds since the Epoch.
+       * </pre>
+       */
+      public Builder setTimestamp(double value) {
+        bitField0_ |= 0x00000001;
+        timestamp_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required double timestamp = 1;</code>
+       *
+       * <pre>
+       * Snapshot time, in seconds since the Epoch.
+       * </pre>
+       */
+      public Builder clearTimestamp() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        timestamp_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // optional uint32 processes = 30;
+      private int processes_ ;
+      /**
+       * <code>optional uint32 processes = 30;</code>
+       */
+      public boolean hasProcesses() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional uint32 processes = 30;</code>
+       */
+      public int getProcesses() {
+        return processes_;
+      }
+      /**
+       * <code>optional uint32 processes = 30;</code>
+       */
+      public Builder setProcesses(int value) {
+        bitField0_ |= 0x00000002;
+        processes_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint32 processes = 30;</code>
+       */
+      public Builder clearProcesses() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        processes_ = 0;
+        onChanged();
+        return this;
+      }
+
+      // optional uint32 threads = 31;
+      private int threads_ ;
+      /**
+       * <code>optional uint32 threads = 31;</code>
+       */
+      public boolean hasThreads() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional uint32 threads = 31;</code>
+       */
+      public int getThreads() {
+        return threads_;
+      }
+      /**
+       * <code>optional uint32 threads = 31;</code>
+       */
+      public Builder setThreads(int value) {
+        bitField0_ |= 0x00000004;
+        threads_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint32 threads = 31;</code>
+       */
+      public Builder clearThreads() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        threads_ = 0;
+        onChanged();
+        return this;
+      }
+
+      // optional double cpus_user_time_secs = 2;
+      private double cpusUserTimeSecs_ ;
+      /**
+       * <code>optional double cpus_user_time_secs = 2;</code>
+       *
+       * <pre>
+       * CPU Usage Information:
+       * Total CPU time spent in user mode, and kernel mode.
+       * </pre>
+       */
+      public boolean hasCpusUserTimeSecs() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional double cpus_user_time_secs = 2;</code>
+       *
+       * <pre>
+       * CPU Usage Information:
+       * Total CPU time spent in user mode, and kernel mode.
+       * </pre>
+       */
+      public double getCpusUserTimeSecs() {
+        return cpusUserTimeSecs_;
+      }
+      /**
+       * <code>optional double cpus_user_time_secs = 2;</code>
+       *
+       * <pre>
+       * CPU Usage Information:
+       * Total CPU time spent in user mode, and kernel mode.
+       * </pre>
+       */
+      public Builder setCpusUserTimeSecs(double value) {
+        bitField0_ |= 0x00000008;
+        cpusUserTimeSecs_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double cpus_user_time_secs = 2;</code>
+       *
+       * <pre>
+       * CPU Usage Information:
+       * Total CPU time spent in user mode, and kernel mode.
+       * </pre>
+       */
+      public Builder clearCpusUserTimeSecs() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        cpusUserTimeSecs_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // optional double cpus_system_time_secs = 3;
+      private double cpusSystemTimeSecs_ ;
+      /**
+       * <code>optional double cpus_system_time_secs = 3;</code>
+       */
+      public boolean hasCpusSystemTimeSecs() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional double cpus_system_time_secs = 3;</code>
+       */
+      public double getCpusSystemTimeSecs() {
+        return cpusSystemTimeSecs_;
+      }
+      /**
+       * <code>optional double cpus_system_time_secs = 3;</code>
+       */
+      public Builder setCpusSystemTimeSecs(double value) {
+        bitField0_ |= 0x00000010;
+        cpusSystemTimeSecs_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double cpus_system_time_secs = 3;</code>
+       */
+      public Builder clearCpusSystemTimeSecs() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        cpusSystemTimeSecs_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // optional double cpus_limit = 4;
+      private double cpusLimit_ ;
+      /**
+       * <code>optional double cpus_limit = 4;</code>
+       *
+       * <pre>
+       * Number of CPUs allocated.
+       * </pre>
+       */
+      public boolean hasCpusLimit() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional double cpus_limit = 4;</code>
+       *
+       * <pre>
+       * Number of CPUs allocated.
+       * </pre>
+       */
+      public double getCpusLimit() {
+        return cpusLimit_;
+      }
+      /**
+       * <code>optional double cpus_limit = 4;</code>
+       *
+       * <pre>
+       * Number of CPUs allocated.
+       * </pre>
+       */
+      public Builder setCpusLimit(double value) {
+        bitField0_ |= 0x00000020;
+        cpusLimit_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double cpus_limit = 4;</code>
+       *
+       * <pre>
+       * Number of CPUs allocated.
+       * </pre>
+       */
+      public Builder clearCpusLimit() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        cpusLimit_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // optional uint32 cpus_nr_periods = 7;
+      private int cpusNrPeriods_ ;
+      /**
+       * <code>optional uint32 cpus_nr_periods = 7;</code>
+       *
+       * <pre>
+       * cpu.stat on process throttling (for contention issues).
+       * </pre>
+       */
+      public boolean hasCpusNrPeriods() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional uint32 cpus_nr_periods = 7;</code>
+       *
+       * <pre>
+       * cpu.stat on process throttling (for contention issues).
+       * </pre>
+       */
+      public int getCpusNrPeriods() {
+        return cpusNrPeriods_;
+      }
+      /**
+       * <code>optional uint32 cpus_nr_periods = 7;</code>
+       *
+       * <pre>
+       * cpu.stat on process throttling (for contention issues).
+       * </pre>
+       */
+      public Builder setCpusNrPeriods(int value) {
+        bitField0_ |= 0x00000040;
+        cpusNrPeriods_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint32 cpus_nr_periods = 7;</code>
+       *
+       * <pre>
+       * cpu.stat on process throttling (for contention issues).
+       * </pre>
+       */
+      public Builder clearCpusNrPeriods() {
+        bitField0_ = (bitField0_ & ~0x00000040);
+        cpusNrPeriods_ = 0;
+        onChanged();
+        return this;
+      }
+
+      // optional uint32 cpus_nr_throttled = 8;
+      private int cpusNrThrottled_ ;
+      /**
+       * <code>optional uint32 cpus_nr_throttled = 8;</code>
+       */
+      public boolean hasCpusNrThrottled() {
+        return ((bitField0_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional uint32 cpus_nr_throttled = 8;</code>
+       */
+      public int getCpusNrThrottled() {
+        return cpusNrThrottled_;
+      }
+      /**
+       * <code>optional uint32 cpus_nr_throttled = 8;</code>
+       */
+      public Builder setCpusNrThrottled(int value) {
+        bitField0_ |= 0x00000080;
+        cpusNrThrottled_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint32 cpus_nr_throttled = 8;</code>
+       */
+      public Builder clearCpusNrThrottled() {
+        bitField0_ = (bitField0_ & ~0x00000080);
+        cpusNrThrottled_ = 0;
+        onChanged();
+        return this;
+      }
+
+      // optional double cpus_throttled_time_secs = 9;
+      private double cpusThrottledTimeSecs_ ;
+      /**
+       * <code>optional double cpus_throttled_time_secs = 9;</code>
+       */
+      public boolean hasCpusThrottledTimeSecs() {
+        return ((bitField0_ & 0x00000100) == 0x00000100);
+      }
+      /**
+       * <code>optional double cpus_throttled_time_secs = 9;</code>
+       */
+      public double getCpusThrottledTimeSecs() {
+        return cpusThrottledTimeSecs_;
+      }
+      /**
+       * <code>optional double cpus_throttled_time_secs = 9;</code>
+       */
+      public Builder setCpusThrottledTimeSecs(double value) {
+        bitField0_ |= 0x00000100;
+        cpusThrottledTimeSecs_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double cpus_throttled_time_secs = 9;</code>
+       */
+      public Builder clearCpusThrottledTimeSecs() {
+        bitField0_ = (bitField0_ & ~0x00000100);
+        cpusThrottledTimeSecs_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 mem_total_bytes = 36;
+      private long memTotalBytes_ ;
+      /**
+       * <code>optional uint64 mem_total_bytes = 36;</code>
+       *
+       * <pre>
+       * mem_total_bytes was added in 0.23.0 to represent the total memory
+       * of a process in RAM (as opposed to in Swap). This was previously
+       * reported as mem_rss_bytes, which was also changed in 0.23.0 to
+       * represent only the anonymous memory usage, to keep in sync with
+       * Linux kernel's (arguably erroneous) use of terminology.
+       * </pre>
+       */
+      public boolean hasMemTotalBytes() {
+        return ((bitField0_ & 0x00000200) == 0x00000200);
+      }
+      /**
+       * <code>optional uint64 mem_total_bytes = 36;</code>
+       *
+       * <pre>
+       * mem_total_bytes was added in 0.23.0 to represent the total memory
+       * of a process in RAM (as opposed to in Swap). This was previously
+       * reported as mem_rss_bytes, which was also changed in 0.23.0 to
+       * represent only the anonymous memory usage, to keep in sync with
+       * Linux kernel's (arguably erroneous) use of terminology.
+       * </pre>
+       */
+      public long getMemTotalBytes() {
+        return memTotalBytes_;
+      }
+      /**
+       * <code>optional uint64 mem_total_bytes = 36;</code>
+       *
+       * <pre>
+       * mem_total_bytes was added in 0.23.0 to represent the total memory
+       * of a process in RAM (as opposed to in Swap). This was previously
+       * reported as mem_rss_bytes, which was also changed in 0.23.0 to
+       * represent only the anonymous memory usage, to keep in sync with
+       * Linux kernel's (arguably erroneous) use of terminology.
+       * </pre>
+       */
+      public Builder setMemTotalBytes(long value) {
+        bitField0_ |= 0x00000200;
+        memTotalBytes_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 mem_total_bytes = 36;</code>
+       *
+       * <pre>
+       * mem_total_bytes was added in 0.23.0 to represent the total memory
+       * of a process in RAM (as opposed to in Swap). This was previously
+       * reported as mem_rss_bytes, which was also changed in 0.23.0 to
+       * represent only the anonymous memory usage, to keep in sync with
+       * Linux kernel's (arguably erroneous) use of terminology.
+       * </pre>
+       */
+      public Builder clearMemTotalBytes() {
+        bitField0_ = (bitField0_ & ~0x00000200);
+        memTotalBytes_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 mem_total_memsw_bytes = 37;
+      private long memTotalMemswBytes_ ;
+      /**
+       * <code>optional uint64 mem_total_memsw_bytes = 37;</code>
+       *
+       * <pre>
+       * Total memory + swap usage. This is set if swap is enabled.
+       * </pre>
+       */
+      public boolean hasMemTotalMemswBytes() {
+        return ((bitField0_ & 0x00000400) == 0x00000400);
+      }
+      /**
+       * <code>optional uint64 mem_total_memsw_bytes = 37;</code>
+       *
+       * <pre>
+       * Total memory + swap usage. This is set if swap is enabled.
+       * </pre>
+       */
+      public long getMemTotalMemswBytes() {
+        return memTotalMemswBytes_;
+      }
+      /**
+       * <code>optional uint64 mem_total_memsw_bytes = 37;</code>
+       *
+       * <pre>
+       * Total memory + swap usage. This is set if swap is enabled.
+       * </pre>
+       */
+      public Builder setMemTotalMemswBytes(long value) {
+        bitField0_ |= 0x00000400;
+        memTotalMemswBytes_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 mem_total_memsw_bytes = 37;</code>
+       *
+       * <pre>
+       * Total memory + swap usage. This is set if swap is enabled.
+       * </pre>
+       */
+      public Builder clearMemTotalMemswBytes() {
+        bitField0_ = (bitField0_ & ~0x00000400);
+        memTotalMemswBytes_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 mem_limit_bytes = 6;
+      private long memLimitBytes_ ;
+      /**
+       * <code>optional uint64 mem_limit_bytes = 6;</code>
+       *
+       * <pre>
+       * Hard memory limit for a container.
+       * </pre>
+       */
+      public boolean hasMemLimitBytes() {
+        return ((bitField0_ & 0x00000800) == 0x00000800);
+      }
+      /**
+       * <code>optional uint64 mem_limit_bytes = 6;</code>
+       *
+       * <pre>
+       * Hard memory limit for a container.
+       * </pre>
+       */
+      public long getMemLimitBytes() {
+        return memLimitBytes_;
+      }
+      /**
+       * <code>optional uint64 mem_limit_bytes = 6;</code>
+       *
+       * <pre>
+       * Hard memory limit for a container.
+       * </pre>
+       */
+      public Builder setMemLimitBytes(long value) {
+        bitField0_ |= 0x00000800;
+        memLimitBytes_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 mem_limit_bytes = 6;</code>
+       *
+       * <pre>
+       * Hard memory limit for a container.
+       * </pre>
+       */
+      public Builder clearMemLimitBytes() {
+        bitField0_ = (bitField0_ & ~0x00000800);
+        memLimitBytes_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 mem_soft_limit_bytes = 38;
+      private long memSoftLimitBytes_ ;
+      /**
+       * <code>optional uint64 mem_soft_limit_bytes = 38;</code>
+       *
+       * <pre>
+       * Soft memory limit for a container.
+       * </pre>
+       */
+      public boolean hasMemSoftLimitBytes() {
+        return ((bitField0_ & 0x00001000) == 0x00001000);
+      }
+      /**
+       * <code>optional uint64 mem_soft_limit_bytes = 38;</code>
+       *
+       * <pre>
+       * Soft memory limit for a container.
+       * </pre>
+       */
+      public long getMemSoftLimitBytes() {
+        return memSoftLimitBytes_;
+      }
+      /**
+       * <code>optional uint64 mem_soft_limit_bytes = 38;</code>
+       *
+       * <pre>
+       * Soft memory limit for a container.
+       * </pre>
+       */
+      public Builder setMemSoftLimitBytes(long value) {
+        bitField0_ |= 0x00001000;
+        memSoftLimitBytes_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 mem_soft_limit_bytes = 38;</code>
+       *
+       * <pre>
+       * Soft memory limit for a container.
+       * </pre>
+       */
+      public Builder clearMemSoftLimitBytes() {
+        bitField0_ = (bitField0_ & ~0x00001000);
+        memSoftLimitBytes_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 mem_file_bytes = 10;
+      private long memFileBytes_ ;
+      /**
+       * <code>optional uint64 mem_file_bytes = 10;</code>
+       *
+       * <pre>
+       * TODO(chzhcn) mem_file_bytes and mem_anon_bytes are deprecated in
+       * 0.23.0 and will be removed in 0.24.0.
+       * </pre>
+       */
+      public boolean hasMemFileBytes() {
+        return ((bitField0_ & 0x00002000) == 0x00002000);
+      }
+      /**
+       * <code>optional uint64 mem_file_bytes = 10;</code>
+       *
+       * <pre>
+       * TODO(chzhcn) mem_file_bytes and mem_anon_bytes are deprecated in
+       * 0.23.0 and will be removed in 0.24.0.
+       * </pre>
+       */
+      public long getMemFileBytes() {
+        return memFileBytes_;
+      }
+      /**
+       * <code>optional uint64 mem_file_bytes = 10;</code>
+       *
+       * <pre>
+       * TODO(chzhcn) mem_file_bytes and mem_anon_bytes are deprecated in
+       * 0.23.0 and will be removed in 0.24.0.
+       * </pre>
+       */
+      public Builder setMemFileBytes(long value) {
+        bitField0_ |= 0x00002000;
+        memFileBytes_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 mem_file_bytes = 10;</code>
+       *
+       * <pre>
+       * TODO(chzhcn) mem_file_bytes and mem_anon_bytes are deprecated in
+       * 0.23.0 and will be removed in 0.24.0.
+       * </pre>
+       */
+      public Builder clearMemFileBytes() {
+        bitField0_ = (bitField0_ & ~0x00002000);
+        memFileBytes_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 mem_anon_bytes = 11;
+      private long memAnonBytes_ ;
+      /**
+       * <code>optional uint64 mem_anon_bytes = 11;</code>
+       */
+      public boolean hasMemAnonBytes() {
+        return ((bitField0_ & 0x00004000) == 0x00004000);
+      }
+      /**
+       * <code>optional uint64 mem_anon_bytes = 11;</code>
+       */
+      public long getMemAnonBytes() {
+        return memAnonBytes_;
+      }
+      /**
+       * <code>optional uint64 mem_anon_bytes = 11;</code>
+       */
+      public Builder setMemAnonBytes(long value) {
+        bitField0_ |= 0x00004000;
+        memAnonBytes_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 mem_anon_bytes = 11;</code>
+       */
+      public Builder clearMemAnonBytes() {
+        bitField0_ = (bitField0_ & ~0x00004000);
+        memAnonBytes_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 mem_cache_bytes = 39;
+      private long memCacheBytes_ ;
+      /**
+       * <code>optional uint64 mem_cache_bytes = 39;</code>
+       *
+       * <pre>
+       * mem_cache_bytes is added in 0.23.0 to represent page cache usage.
+       * </pre>
+       */
+      public boolean hasMemCacheBytes() {
+        return ((bitField0_ & 0x00008000) == 0x00008000);
+      }
+      /**
+       * <code>optional uint64 mem_cache_bytes = 39;</code>
+       *
+       * <pre>
+       * mem_cache_bytes is added in 0.23.0 to represent page cache usage.
+       * </pre>
+       */
+      public long getMemCacheBytes() {
+        return memCacheBytes_;
+      }
+      /**
+       * <code>optional uint64 mem_cache_bytes = 39;</code>
+       *
+       * <pre>
+       * mem_cache_bytes is added in 0.23.0 to represent page cache usage.
+       * </pre>
+       */
+      public Builder setMemCacheBytes(long value) {
+        bitField0_ |= 0x00008000;
+        memCacheBytes_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 mem_cache_bytes = 39;</code>
+       *
+       * <pre>
+       * mem_cache_bytes is added in 0.23.0 to represent page cache usage.
+       * </pre>
+       */
+      public Builder clearMemCacheBytes() {
+        bitField0_ = (bitField0_ & ~0x00008000);
+        memCacheBytes_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 mem_rss_bytes = 5;
+      private long memRssBytes_ ;
+      /**
+       * <code>optional uint64 mem_rss_bytes = 5;</code>
+       *
+       * <pre>
+       * Since 0.23.0, mem_rss_bytes is changed to represent only
+       * anonymous memory usage. Note that neither its requiredness, type,
+       * name nor numeric tag has been changed.
+       * </pre>
+       */
+      public boolean hasMemRssBytes() {
+        return ((bitField0_ & 0x00010000) == 0x00010000);
+      }
+      /**
+       * <code>optional uint64 mem_rss_bytes = 5;</code>
+       *
+       * <pre>
+       * Since 0.23.0, mem_rss_bytes is changed to represent only
+       * anonymous memory usage. Note that neither its requiredness, type,
+       * name nor numeric tag has been changed.
+       * </pre>
+       */
+      public long getMemRssBytes() {
+        return memRssBytes_;
+      }
+      /**
+       * <code>optional uint64 mem_rss_bytes = 5;</code>
+       *
+       * <pre>
+       * Since 0.23.0, mem_rss_bytes is changed to represent only
+       * anonymous memory usage. Note that neither its requiredness, type,
+       * name nor numeric tag has been changed.
+       * </pre>
+       */
+      public Builder setMemRssBytes(long value) {
+        bitField0_ |= 0x00010000;
+        memRssBytes_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 mem_rss_bytes = 5;</code>
+       *
+       * <pre>
+       * Since 0.23.0, mem_rss_bytes is changed to represent only
+       * anonymous memory usage. Note that neither its requiredness, type,
+       * name nor numeric tag has been changed.
+       * </pre>
+       */
+      public Builder clearMemRssBytes() {
+        bitField0_ = (bitField0_ & ~0x00010000);
+        memRssBytes_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 mem_mapped_file_bytes = 12;
+      private long memMappedFileBytes_ ;
+      /**
+       * <code>optional uint64 mem_mapped_file_bytes = 12;</code>
+       */
+      public boolean hasMemMappedFileBytes() {
+        return ((bitField0_ & 0x00020000) == 0x00020000);
+      }
+      /**
+       * <code>optional uint64 mem_mapped_file_bytes = 12;</code>
+       */
+      public long getMemMappedFileBytes() {
+        return memMappedFileBytes_;
+      }
+      /**
+       * <code>optional uint64 mem_mapped_file_bytes = 12;</code>
+       */
+      public Builder setMemMappedFileBytes(long value) {
+        bitField0_ |= 0x00020000;
+        memMappedFileBytes_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 mem_mapped_file_bytes = 12;</code>
+       */
+      public Builder clearMemMappedFileBytes() {
+        bitField0_ = (bitField0_ & ~0x00020000);
+        memMappedFileBytes_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 mem_swap_bytes = 40;
+      private long memSwapBytes_ ;
+      /**
+       * <code>optional uint64 mem_swap_bytes = 40;</code>
+       *
+       * <pre>
+       * This is only set if swap is enabled.
+       * </pre>
+       */
+      public boolean hasMemSwapBytes() {
+        return ((bitField0_ & 0x00040000) == 0x00040000);
+      }
+      /**
+       * <code>optional uint64 mem_swap_bytes = 40;</code>
+       *
+       * <pre>
+       * This is only set if swap is enabled.
+       * </pre>
+       */
+      public long getMemSwapBytes() {
+        return memSwapBytes_;
+      }
+      /**
+       * <code>optional uint64 mem_swap_bytes = 40;</code>
+       *
+       * <pre>
+       * This is only set if swap is enabled.
+       * </pre>
+       */
+      public Builder setMemSwapBytes(long value) {
+        bitField0_ |= 0x00040000;
+        memSwapBytes_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 mem_swap_bytes = 40;</code>
+       *
+       * <pre>
+       * This is only set if swap is enabled.
+       * </pre>
+       */
+      public Builder clearMemSwapBytes() {
+        bitField0_ = (bitField0_ & ~0x00040000);
+        memSwapBytes_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 mem_unevictable_bytes = 41;
+      private long memUnevictableBytes_ ;
+      /**
+       * <code>optional uint64 mem_unevictable_bytes = 41;</code>
+       */
+      public boolean hasMemUnevictableBytes() {
+        return ((bitField0_ & 0x00080000) == 0x00080000);
+      }
+      /**
+       * <code>optional uint64 mem_unevictable_bytes = 41;</code>
+       */
+      public long getMemUnevictableBytes() {
+        return memUnevictableBytes_;
+      }
+      /**
+       * <code>optional uint64 mem_unevictable_bytes = 41;</code>
+       */
+      public Builder setMemUnevictableBytes(long value) {
+        bitField0_ |= 0x00080000;
+        memUnevictableBytes_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 mem_unevictable_bytes = 41;</code>
+       */
+      public Builder clearMemUnevictableBytes() {
+        bitField0_ = (bitField0_ & ~0x00080000);
+        memUnevictableBytes_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 mem_low_pressure_counter = 32;
+      private long memLowPressureCounter_ ;
+      /**
+       * <code>optional uint64 mem_low_pressure_counter = 32;</code>
+       *
+       * <pre>
+       * Number of occurrences of different levels of memory pressure
+       * events reported by memory cgroup. Pressure listening (re)starts
+       * with these values set to 0 when agent (re)starts. See
+       * https://www.kernel.org/doc/Documentation/cgroups/memory.txt for
+       * more details.
+       * </pre>
+       */
+      public boolean hasMemLowPressureCounter() {
+        return ((bitField0_ & 0x00100000) == 0x00100000);
+      }
+      /**
+       * <code>optional uint64 mem_low_pressure_counter = 32;</code>
+       *
+       * <pre>
+       * Number of occurrences of different levels of memory pressure
+       * events reported by memory cgroup. Pressure listening (re)starts
+       * with these values set to 0 when agent (re)starts. See
+       * https://www.kernel.org/doc/Documentation/cgroups/memory.txt for
+       * more details.
+       * </pre>
+       */
+      public long getMemLowPressureCounter() {
+        return memLowPressureCounter_;
+      }
+      /**
+       * <code>optional uint64 mem_low_pressure_counter = 32;</code>
+       *
+       * <pre>
+       * Number of occurrences of different levels of memory pressure
+       * events reported by memory cgroup. Pressure listening (re)starts
+       * with these values set to 0 when agent (re)starts. See
+       * https://www.kernel.org/doc/Documentation/cgroups/memory.txt for
+       * more details.
+       * </pre>
+       */
+      public Builder setMemLowPressureCounter(long value) {
+        bitField0_ |= 0x00100000;
+        memLowPressureCounter_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 mem_low_pressure_counter = 32;</code>
+       *
+       * <pre>
+       * Number of occurrences of different levels of memory pressure
+       * events reported by memory cgroup. Pressure listening (re)starts
+       * with these values set to 0 when agent (re)starts. See
+       * https://www.kernel.org/doc/Documentation/cgroups/memory.txt for
+       * more details.
+       * </pre>
+       */
+      public Builder clearMemLowPressureCounter() {
+        bitField0_ = (bitField0_ & ~0x00100000);
+        memLowPressureCounter_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 mem_medium_pressure_counter = 33;
+      private long memMediumPressureCounter_ ;
+      /**
+       * <code>optional uint64 mem_medium_pressure_counter = 33;</code>
+       */
+      public boolean hasMemMediumPressureCounter() {
+        return ((bitField0_ & 0x00200000) == 0x00200000);
+      }
+      /**
+       * <code>optional uint64 mem_medium_pressure_counter = 33;</code>
+       */
+      public long getMemMediumPressureCounter() {
+        return memMediumPressureCounter_;
+      }
+      /**
+       * <code>optional uint64 mem_medium_pressure_counter = 33;</code>
+       */
+      public Builder setMemMediumPressureCounter(long value) {
+        bitField0_ |= 0x00200000;
+        memMediumPressureCounter_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 mem_medium_pressure_counter = 33;</code>
+       */
+      public Builder clearMemMediumPressureCounter() {
+        bitField0_ = (bitField0_ & ~0x00200000);
+        memMediumPressureCounter_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 mem_critical_pressure_counter = 34;
+      private long memCriticalPressureCounter_ ;
+      /**
+       * <code>optional uint64 mem_critical_pressure_counter = 34;</code>
+       */
+      public boolean hasMemCriticalPressureCounter() {
+        return ((bitField0_ & 0x00400000) == 0x00400000);
+      }
+      /**
+       * <code>optional uint64 mem_critical_pressure_counter = 34;</code>
+       */
+      public long getMemCriticalPressureCounter() {
+        return memCriticalPressureCounter_;
+      }
+      /**
+       * <code>optional uint64 mem_critical_pressure_counter = 34;</code>
+       */
+      public Builder setMemCriticalPressureCounter(long value) {
+        bitField0_ |= 0x00400000;
+        memCriticalPressureCounter_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 mem_critical_pressure_counter = 34;</code>
+       */
+      public Builder clearMemCriticalPressureCounter() {
+        bitField0_ = (bitField0_ & ~0x00400000);
+        memCriticalPressureCounter_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 disk_limit_bytes = 26;
+      private long diskLimitBytes_ ;
+      /**
+       * <code>optional uint64 disk_limit_bytes = 26;</code>
+       *
+       * <pre>
+       * Disk Usage Information for executor working directory.
+       * </pre>
+       */
+      public boolean hasDiskLimitBytes() {
+        return ((bitField0_ & 0x00800000) == 0x00800000);
+      }
+      /**
+       * <code>optional uint64 disk_limit_bytes = 26;</code>
+       *
+       * <pre>
+       * Disk Usage Information for executor working directory.
+       * </pre>
+       */
+      public long getDiskLimitBytes() {
+        return diskLimitBytes_;
+      }
+      /**
+       * <code>optional uint64 disk_limit_bytes = 26;</code>
+       *
+       * <pre>
+       * Disk Usage Information for executor working directory.
+       * </pre>
+       */
+      public Builder setDiskLimitBytes(long value) {
+        bitField0_ |= 0x00800000;
+        diskLimitBytes_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 disk_limit_bytes = 26;</code>
+       *
+       * <pre>
+       * Disk Usage Information for executor working directory.
+       * </pre>
+       */
+      public Builder clearDiskLimitBytes() {
+        bitField0_ = (bitField0_ & ~0x00800000);
+        diskLimitBytes_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 disk_used_bytes = 27;
+      private long diskUsedBytes_ ;
+      /**
+       * <code>optional uint64 disk_used_bytes = 27;</code>
+       */
+      public boolean hasDiskUsedBytes() {
+        return ((bitField0_ & 0x01000000) == 0x01000000);
+      }
+      /**
+       * <code>optional uint64 disk_used_bytes = 27;</code>
+       */
+      public long getDiskUsedBytes() {
+        return diskUsedBytes_;
+      }
+      /**
+       * <code>optional uint64 disk_used_bytes = 27;</code>
+       */
+      public Builder setDiskUsedBytes(long value) {
+        bitField0_ |= 0x01000000;
+        diskUsedBytes_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 disk_used_bytes = 27;</code>
+       */
+      public Builder clearDiskUsedBytes() {
+        bitField0_ = (bitField0_ & ~0x01000000);
+        diskUsedBytes_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // repeated .mesos.v1.DiskStatistics disk_statistics = 43;
+      private java.util.List<org.apache.mesos.v1.Protos.DiskStatistics> diskStatistics_ =
+        java.util.Collections.emptyList();
+      private void ensureDiskStatisticsIsMutable() {
+        if (!((bitField0_ & 0x02000000) == 0x02000000)) {
+          diskStatistics_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.DiskStatistics>(diskStatistics_);
+          bitField0_ |= 0x02000000;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.DiskStatistics, org.apache.mesos.v1.Protos.DiskStatistics.Builder, org.apache.mesos.v1.Protos.DiskStatisticsOrBuilder> diskStatisticsBuilder_;
+
+      /**
+       * <code>repeated .mesos.v1.DiskStatistics disk_statistics = 43;</code>
+       *
+       * <pre>
+       * Per disk (resource) statistics.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.DiskStatistics> getDiskStatisticsList() {
+        if (diskStatisticsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(diskStatistics_);
+        } else {
+          return diskStatisticsBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.DiskStatistics disk_statistics = 43;</code>
+       *
+       * <pre>
+       * Per disk (resource) statistics.
+       * </pre>
+       */
+      public int getDiskStatisticsCount() {
+        if (diskStatisticsBuilder_ == null) {
+          return diskStatistics_.size();
+        } else {
+          return diskStatisticsBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.DiskStatistics disk_statistics = 43;</code>
+       *
+       * <pre>
+       * Per disk (resource) statistics.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.DiskStatistics getDiskStatistics(int index) {
+        if (diskStatisticsBuilder_ == null) {
+          return diskStatistics_.get(index);
+        } else {
+          return diskStatisticsBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.DiskStatistics disk_statistics = 43;</code>
+       *
+       * <pre>
+       * Per disk (resource) statistics.
+       * </pre>
+       */
+      public Builder setDiskStatistics(
+          int index, org.apache.mesos.v1.Protos.DiskStatistics value) {
+        if (diskStatisticsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureDiskStatisticsIsMutable();
+          diskStatistics_.set(index, value);
+          onChanged();
+        } else {
+          diskStatisticsBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.DiskStatistics disk_statistics = 43;</code>
+       *
+       * <pre>
+       * Per disk (resource) statistics.
+       * </pre>
+       */
+      public Builder setDiskStatistics(
+          int index, org.apache.mesos.v1.Protos.DiskStatistics.Builder builderForValue) {
+        if (diskStatisticsBuilder_ == null) {
+          ensureDiskStatisticsIsMutable();
+          diskStatistics_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          diskStatisticsBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.DiskStatistics disk_statistics = 43;</code>
+       *
+       * <pre>
+       * Per disk (resource) statistics.
+       * </pre>
+       */
+      public Builder addDiskStatistics(org.apache.mesos.v1.Protos.DiskStatistics value) {
+        if (diskStatisticsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureDiskStatisticsIsMutable();
+          diskStatistics_.add(value);
+          onChanged();
+        } else {
+          diskStatisticsBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.DiskStatistics disk_statistics = 43;</code>
+       *
+       * <pre>
+       * Per disk (resource) statistics.
+       * </pre>
+       */
+      public Builder addDiskStatistics(
+          int index, org.apache.mesos.v1.Protos.DiskStatistics value) {
+        if (diskStatisticsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureDiskStatisticsIsMutable();
+          diskStatistics_.add(index, value);
+          onChanged();
+        } else {
+          diskStatisticsBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.DiskStatistics disk_statistics = 43;</code>
+       *
+       * <pre>
+       * Per disk (resource) statistics.
+       * </pre>
+       */
+      public Builder addDiskStatistics(
+          org.apache.mesos.v1.Protos.DiskStatistics.Builder builderForValue) {
+        if (diskStatisticsBuilder_ == null) {
+          ensureDiskStatisticsIsMutable();
+          diskStatistics_.add(builderForValue.build());
+          onChanged();
+        } else {
+          diskStatisticsBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.DiskStatistics disk_statistics = 43;</code>
+       *
+       * <pre>
+       * Per disk (resource) statistics.
+       * </pre>
+       */
+      public Builder addDiskStatistics(
+          int index, org.apache.mesos.v1.Protos.DiskStatistics.Builder builderForValue) {
+        if (diskStatisticsBuilder_ == null) {
+          ensureDiskStatisticsIsMutable();
+          diskStatistics_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          diskStatisticsBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.DiskStatistics disk_statistics = 43;</code>
+       *
+       * <pre>
+       * Per disk (resource) statistics.
+       * </pre>
+       */
+      public Builder addAllDiskStatistics(
+          java.lang.Iterable<? extends org.apache.mesos.v1.Protos.DiskStatistics> values) {
+        if (diskStatisticsBuilder_ == null) {
+          ensureDiskStatisticsIsMutable();
+          super.addAll(values, diskStatistics_);
+          onChanged();
+        } else {
+          diskStatisticsBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.DiskStatistics disk_statistics = 43;</code>
+       *
+       * <pre>
+       * Per disk (resource) statistics.
+       * </pre>
+       */
+      public Builder clearDiskStatistics() {
+        if (diskStatisticsBuilder_ == null) {
+          diskStatistics_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x02000000);
+          onChanged();
+        } else {
+          diskStatisticsBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.DiskStatistics disk_statistics = 43;</code>
+       *
+       * <pre>
+       * Per disk (resource) statistics.
+       * </pre>
+       */
+      public Builder removeDiskStatistics(int index) {
+        if (diskStatisticsBuilder_ == null) {
+          ensureDiskStatisticsIsMutable();
+          diskStatistics_.remove(index);
+          onChanged();
+        } else {
+          diskStatisticsBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.DiskStatistics disk_statistics = 43;</code>
+       *
+       * <pre>
+       * Per disk (resource) statistics.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.DiskStatistics.Builder getDiskStatisticsBuilder(
+          int index) {
+        return getDiskStatisticsFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.DiskStatistics disk_statistics = 43;</code>
+       *
+       * <pre>
+       * Per disk (resource) statistics.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.DiskStatisticsOrBuilder getDiskStatisticsOrBuilder(
+          int index) {
+        if (diskStatisticsBuilder_ == null) {
+          return diskStatistics_.get(index);  } else {
+          return diskStatisticsBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.DiskStatistics disk_statistics = 43;</code>
+       *
+       * <pre>
+       * Per disk (resource) statistics.
+       * </pre>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.DiskStatisticsOrBuilder> 
+           getDiskStatisticsOrBuilderList() {
+        if (diskStatisticsBuilder_ != null) {
+          return diskStatisticsBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(diskStatistics_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.DiskStatistics disk_statistics = 43;</code>
+       *
+       * <pre>
+       * Per disk (resource) statistics.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.DiskStatistics.Builder addDiskStatisticsBuilder() {
+        return getDiskStatisticsFieldBuilder().addBuilder(
+            org.apache.mesos.v1.Protos.DiskStatistics.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.DiskStatistics disk_statistics = 43;</code>
+       *
+       * <pre>
+       * Per disk (resource) statistics.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.DiskStatistics.Builder addDiskStatisticsBuilder(
+          int index) {
+        return getDiskStatisticsFieldBuilder().addBuilder(
+            index, org.apache.mesos.v1.Protos.DiskStatistics.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.DiskStatistics disk_statistics = 43;</code>
+       *
+       * <pre>
+       * Per disk (resource) statistics.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.DiskStatistics.Builder> 
+           getDiskStatisticsBuilderList() {
+        return getDiskStatisticsFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.DiskStatistics, org.apache.mesos.v1.Protos.DiskStatistics.Builder, org.apache.mesos.v1.Protos.DiskStatisticsOrBuilder> 
+          getDiskStatisticsFieldBuilder() {
+        if (diskStatisticsBuilder_ == null) {
+          diskStatisticsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.DiskStatistics, org.apache.mesos.v1.Protos.DiskStatistics.Builder, org.apache.mesos.v1.Protos.DiskStatisticsOrBuilder>(
+                  diskStatistics_,
+                  ((bitField0_ & 0x02000000) == 0x02000000),
+                  getParentForChildren(),
+                  isClean());
+          diskStatistics_ = null;
+        }
+        return diskStatisticsBuilder_;
+      }
+
+      // optional .mesos.v1.CgroupInfo.Blkio.Statistics blkio_statistics = 44;
+      private org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics blkioStatistics_ = org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics.Builder, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.StatisticsOrBuilder> blkioStatisticsBuilder_;
+      /**
+       * <code>optional .mesos.v1.CgroupInfo.Blkio.Statistics blkio_statistics = 44;</code>
+       *
+       * <pre>
+       * Cgroups blkio statistics.
+       * </pre>
+       */
+      public boolean hasBlkioStatistics() {
+        return ((bitField0_ & 0x04000000) == 0x04000000);
+      }
+      /**
+       * <code>optional .mesos.v1.CgroupInfo.Blkio.Statistics blkio_statistics = 44;</code>
+       *
+       * <pre>
+       * Cgroups blkio statistics.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics getBlkioStatistics() {
+        if (blkioStatisticsBuilder_ == null) {
+          return blkioStatistics_;
+        } else {
+          return blkioStatisticsBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.CgroupInfo.Blkio.Statistics blkio_statistics = 44;</code>
+       *
+       * <pre>
+       * Cgroups blkio statistics.
+       * </pre>
+       */
+      public Builder setBlkioStatistics(org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics value) {
+        if (blkioStatisticsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          blkioStatistics_ = value;
+          onChanged();
+        } else {
+          blkioStatisticsBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x04000000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CgroupInfo.Blkio.Statistics blkio_statistics = 44;</code>
+       *
+       * <pre>
+       * Cgroups blkio statistics.
+       * </pre>
+       */
+      public Builder setBlkioStatistics(
+          org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics.Builder builderForValue) {
+        if (blkioStatisticsBuilder_ == null) {
+          blkioStatistics_ = builderForValue.build();
+          onChanged();
+        } else {
+          blkioStatisticsBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x04000000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CgroupInfo.Blkio.Statistics blkio_statistics = 44;</code>
+       *
+       * <pre>
+       * Cgroups blkio statistics.
+       * </pre>
+       */
+      public Builder mergeBlkioStatistics(org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics value) {
+        if (blkioStatisticsBuilder_ == null) {
+          if (((bitField0_ & 0x04000000) == 0x04000000) &&
+              blkioStatistics_ != org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics.getDefaultInstance()) {
+            blkioStatistics_ =
+              org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics.newBuilder(blkioStatistics_).mergeFrom(value).buildPartial();
+          } else {
+            blkioStatistics_ = value;
+          }
+          onChanged();
+        } else {
+          blkioStatisticsBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x04000000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CgroupInfo.Blkio.Statistics blkio_statistics = 44;</code>
+       *
+       * <pre>
+       * Cgroups blkio statistics.
+       * </pre>
+       */
+      public Builder clearBlkioStatistics() {
+        if (blkioStatisticsBuilder_ == null) {
+          blkioStatistics_ = org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics.getDefaultInstance();
+          onChanged();
+        } else {
+          blkioStatisticsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x04000000);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CgroupInfo.Blkio.Statistics blkio_statistics = 44;</code>
+       *
+       * <pre>
+       * Cgroups blkio statistics.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics.Builder getBlkioStatisticsBuilder() {
+        bitField0_ |= 0x04000000;
+        onChanged();
+        return getBlkioStatisticsFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.CgroupInfo.Blkio.Statistics blkio_statistics = 44;</code>
+       *
+       * <pre>
+       * Cgroups blkio statistics.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.StatisticsOrBuilder getBlkioStatisticsOrBuilder() {
+        if (blkioStatisticsBuilder_ != null) {
+          return blkioStatisticsBuilder_.getMessageOrBuilder();
+        } else {
+          return blkioStatistics_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.CgroupInfo.Blkio.Statistics blkio_statistics = 44;</code>
+       *
+       * <pre>
+       * Cgroups blkio statistics.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics.Builder, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.StatisticsOrBuilder> 
+          getBlkioStatisticsFieldBuilder() {
+        if (blkioStatisticsBuilder_ == null) {
+          blkioStatisticsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics.Builder, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.StatisticsOrBuilder>(
+                  blkioStatistics_,
+                  getParentForChildren(),
+                  isClean());
+          blkioStatistics_ = null;
+        }
+        return blkioStatisticsBuilder_;
+      }
+
+      // optional .mesos.v1.PerfStatistics perf = 13;
+      private org.apache.mesos.v1.Protos.PerfStatistics perf_ = org.apache.mesos.v1.Protos.PerfStatistics.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.PerfStatistics, org.apache.mesos.v1.Protos.PerfStatistics.Builder, org.apache.mesos.v1.Protos.PerfStatisticsOrBuilder> perfBuilder_;
+      /**
+       * <code>optional .mesos.v1.PerfStatistics perf = 13;</code>
+       *
+       * <pre>
+       * Perf statistics.
+       * </pre>
+       */
+      public boolean hasPerf() {
+        return ((bitField0_ & 0x08000000) == 0x08000000);
+      }
+      /**
+       * <code>optional .mesos.v1.PerfStatistics perf = 13;</code>
+       *
+       * <pre>
+       * Perf statistics.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.PerfStatistics getPerf() {
+        if (perfBuilder_ == null) {
+          return perf_;
+        } else {
+          return perfBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.PerfStatistics perf = 13;</code>
+       *
+       * <pre>
+       * Perf statistics.
+       * </pre>
+       */
+      public Builder setPerf(org.apache.mesos.v1.Protos.PerfStatistics value) {
+        if (perfBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          perf_ = value;
+          onChanged();
+        } else {
+          perfBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x08000000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.PerfStatistics perf = 13;</code>
+       *
+       * <pre>
+       * Perf statistics.
+       * </pre>
+       */
+      public Builder setPerf(
+          org.apache.mesos.v1.Protos.PerfStatistics.Builder builderForValue) {
+        if (perfBuilder_ == null) {
+          perf_ = builderForValue.build();
+          onChanged();
+        } else {
+          perfBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x08000000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.PerfStatistics perf = 13;</code>
+       *
+       * <pre>
+       * Perf statistics.
+       * </pre>
+       */
+      public Builder mergePerf(org.apache.mesos.v1.Protos.PerfStatistics value) {
+        if (perfBuilder_ == null) {
+          if (((bitField0_ & 0x08000000) == 0x08000000) &&
+              perf_ != org.apache.mesos.v1.Protos.PerfStatistics.getDefaultInstance()) {
+            perf_ =
+              org.apache.mesos.v1.Protos.PerfStatistics.newBuilder(perf_).mergeFrom(value).buildPartial();
+          } else {
+            perf_ = value;
+          }
+          onChanged();
+        } else {
+          perfBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x08000000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.PerfStatistics perf = 13;</code>
+       *
+       * <pre>
+       * Perf statistics.
+       * </pre>
+       */
+      public Builder clearPerf() {
+        if (perfBuilder_ == null) {
+          perf_ = org.apache.mesos.v1.Protos.PerfStatistics.getDefaultInstance();
+          onChanged();
+        } else {
+          perfBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x08000000);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.PerfStatistics perf = 13;</code>
+       *
+       * <pre>
+       * Perf statistics.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.PerfStatistics.Builder getPerfBuilder() {
+        bitField0_ |= 0x08000000;
+        onChanged();
+        return getPerfFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.PerfStatistics perf = 13;</code>
+       *
+       * <pre>
+       * Perf statistics.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.PerfStatisticsOrBuilder getPerfOrBuilder() {
+        if (perfBuilder_ != null) {
+          return perfBuilder_.getMessageOrBuilder();
+        } else {
+          return perf_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.PerfStatistics perf = 13;</code>
+       *
+       * <pre>
+       * Perf statistics.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.PerfStatistics, org.apache.mesos.v1.Protos.PerfStatistics.Builder, org.apache.mesos.v1.Protos.PerfStatisticsOrBuilder> 
+          getPerfFieldBuilder() {
+        if (perfBuilder_ == null) {
+          perfBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.PerfStatistics, org.apache.mesos.v1.Protos.PerfStatistics.Builder, org.apache.mesos.v1.Protos.PerfStatisticsOrBuilder>(
+                  perf_,
+                  getParentForChildren(),
+                  isClean());
+          perf_ = null;
+        }
+        return perfBuilder_;
+      }
+
+      // optional uint64 net_rx_packets = 14;
+      private long netRxPackets_ ;
+      /**
+       * <code>optional uint64 net_rx_packets = 14;</code>
+       *
+       * <pre>
+       * Network Usage Information:
+       * </pre>
+       */
+      public boolean hasNetRxPackets() {
+        return ((bitField0_ & 0x10000000) == 0x10000000);
+      }
+      /**
+       * <code>optional uint64 net_rx_packets = 14;</code>
+       *
+       * <pre>
+       * Network Usage Information:
+       * </pre>
+       */
+      public long getNetRxPackets() {
+        return netRxPackets_;
+      }
+      /**
+       * <code>optional uint64 net_rx_packets = 14;</code>
+       *
+       * <pre>
+       * Network Usage Information:
+       * </pre>
+       */
+      public Builder setNetRxPackets(long value) {
+        bitField0_ |= 0x10000000;
+        netRxPackets_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 net_rx_packets = 14;</code>
+       *
+       * <pre>
+       * Network Usage Information:
+       * </pre>
+       */
+      public Builder clearNetRxPackets() {
+        bitField0_ = (bitField0_ & ~0x10000000);
+        netRxPackets_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 net_rx_bytes = 15;
+      private long netRxBytes_ ;
+      /**
+       * <code>optional uint64 net_rx_bytes = 15;</code>
+       */
+      public boolean hasNetRxBytes() {
+        return ((bitField0_ & 0x20000000) == 0x20000000);
+      }
+      /**
+       * <code>optional uint64 net_rx_bytes = 15;</code>
+       */
+      public long getNetRxBytes() {
+        return netRxBytes_;
+      }
+      /**
+       * <code>optional uint64 net_rx_bytes = 15;</code>
+       */
+      public Builder setNetRxBytes(long value) {
+        bitField0_ |= 0x20000000;
+        netRxBytes_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 net_rx_bytes = 15;</code>
+       */
+      public Builder clearNetRxBytes() {
+        bitField0_ = (bitField0_ & ~0x20000000);
+        netRxBytes_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 net_rx_errors = 16;
+      private long netRxErrors_ ;
+      /**
+       * <code>optional uint64 net_rx_errors = 16;</code>
+       */
+      public boolean hasNetRxErrors() {
+        return ((bitField0_ & 0x40000000) == 0x40000000);
+      }
+      /**
+       * <code>optional uint64 net_rx_errors = 16;</code>
+       */
+      public long getNetRxErrors() {
+        return netRxErrors_;
+      }
+      /**
+       * <code>optional uint64 net_rx_errors = 16;</code>
+       */
+      public Builder setNetRxErrors(long value) {
+        bitField0_ |= 0x40000000;
+        netRxErrors_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 net_rx_errors = 16;</code>
+       */
+      public Builder clearNetRxErrors() {
+        bitField0_ = (bitField0_ & ~0x40000000);
+        netRxErrors_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 net_rx_dropped = 17;
+      private long netRxDropped_ ;
+      /**
+       * <code>optional uint64 net_rx_dropped = 17;</code>
+       */
+      public boolean hasNetRxDropped() {
+        return ((bitField0_ & 0x80000000) == 0x80000000);
+      }
+      /**
+       * <code>optional uint64 net_rx_dropped = 17;</code>
+       */
+      public long getNetRxDropped() {
+        return netRxDropped_;
+      }
+      /**
+       * <code>optional uint64 net_rx_dropped = 17;</code>
+       */
+      public Builder setNetRxDropped(long value) {
+        bitField0_ |= 0x80000000;
+        netRxDropped_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 net_rx_dropped = 17;</code>
+       */
+      public Builder clearNetRxDropped() {
+        bitField0_ = (bitField0_ & ~0x80000000);
+        netRxDropped_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 net_tx_packets = 18;
+      private long netTxPackets_ ;
+      /**
+       * <code>optional uint64 net_tx_packets = 18;</code>
+       */
+      public boolean hasNetTxPackets() {
+        return ((bitField1_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional uint64 net_tx_packets = 18;</code>
+       */
+      public long getNetTxPackets() {
+        return netTxPackets_;
+      }
+      /**
+       * <code>optional uint64 net_tx_packets = 18;</code>
+       */
+      public Builder setNetTxPackets(long value) {
+        bitField1_ |= 0x00000001;
+        netTxPackets_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 net_tx_packets = 18;</code>
+       */
+      public Builder clearNetTxPackets() {
+        bitField1_ = (bitField1_ & ~0x00000001);
+        netTxPackets_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 net_tx_bytes = 19;
+      private long netTxBytes_ ;
+      /**
+       * <code>optional uint64 net_tx_bytes = 19;</code>
+       */
+      public boolean hasNetTxBytes() {
+        return ((bitField1_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional uint64 net_tx_bytes = 19;</code>
+       */
+      public long getNetTxBytes() {
+        return netTxBytes_;
+      }
+      /**
+       * <code>optional uint64 net_tx_bytes = 19;</code>
+       */
+      public Builder setNetTxBytes(long value) {
+        bitField1_ |= 0x00000002;
+        netTxBytes_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 net_tx_bytes = 19;</code>
+       */
+      public Builder clearNetTxBytes() {
+        bitField1_ = (bitField1_ & ~0x00000002);
+        netTxBytes_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 net_tx_errors = 20;
+      private long netTxErrors_ ;
+      /**
+       * <code>optional uint64 net_tx_errors = 20;</code>
+       */
+      public boolean hasNetTxErrors() {
+        return ((bitField1_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional uint64 net_tx_errors = 20;</code>
+       */
+      public long getNetTxErrors() {
+        return netTxErrors_;
+      }
+      /**
+       * <code>optional uint64 net_tx_errors = 20;</code>
+       */
+      public Builder setNetTxErrors(long value) {
+        bitField1_ |= 0x00000004;
+        netTxErrors_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 net_tx_errors = 20;</code>
+       */
+      public Builder clearNetTxErrors() {
+        bitField1_ = (bitField1_ & ~0x00000004);
+        netTxErrors_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 net_tx_dropped = 21;
+      private long netTxDropped_ ;
+      /**
+       * <code>optional uint64 net_tx_dropped = 21;</code>
+       */
+      public boolean hasNetTxDropped() {
+        return ((bitField1_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional uint64 net_tx_dropped = 21;</code>
+       */
+      public long getNetTxDropped() {
+        return netTxDropped_;
+      }
+      /**
+       * <code>optional uint64 net_tx_dropped = 21;</code>
+       */
+      public Builder setNetTxDropped(long value) {
+        bitField1_ |= 0x00000008;
+        netTxDropped_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 net_tx_dropped = 21;</code>
+       */
+      public Builder clearNetTxDropped() {
+        bitField1_ = (bitField1_ & ~0x00000008);
+        netTxDropped_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional double net_tcp_rtt_microsecs_p50 = 22;
+      private double netTcpRttMicrosecsP50_ ;
+      /**
+       * <code>optional double net_tcp_rtt_microsecs_p50 = 22;</code>
+       *
+       * <pre>
+       * The kernel keeps track of RTT (round-trip time) for its TCP
+       * sockets. RTT is a way to tell the latency of a container.
+       * </pre>
+       */
+      public boolean hasNetTcpRttMicrosecsP50() {
+        return ((bitField1_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional double net_tcp_rtt_microsecs_p50 = 22;</code>
+       *
+       * <pre>
+       * The kernel keeps track of RTT (round-trip time) for its TCP
+       * sockets. RTT is a way to tell the latency of a container.
+       * </pre>
+       */
+      public double getNetTcpRttMicrosecsP50() {
+        return netTcpRttMicrosecsP50_;
+      }
+      /**
+       * <code>optional double net_tcp_rtt_microsecs_p50 = 22;</code>
+       *
+       * <pre>
+       * The kernel keeps track of RTT (round-trip time) for its TCP
+       * sockets. RTT is a way to tell the latency of a container.
+       * </pre>
+       */
+      public Builder setNetTcpRttMicrosecsP50(double value) {
+        bitField1_ |= 0x00000010;
+        netTcpRttMicrosecsP50_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double net_tcp_rtt_microsecs_p50 = 22;</code>
+       *
+       * <pre>
+       * The kernel keeps track of RTT (round-trip time) for its TCP
+       * sockets. RTT is a way to tell the latency of a container.
+       * </pre>
+       */
+      public Builder clearNetTcpRttMicrosecsP50() {
+        bitField1_ = (bitField1_ & ~0x00000010);
+        netTcpRttMicrosecsP50_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // optional double net_tcp_rtt_microsecs_p90 = 23;
+      private double netTcpRttMicrosecsP90_ ;
+      /**
+       * <code>optional double net_tcp_rtt_microsecs_p90 = 23;</code>
+       */
+      public boolean hasNetTcpRttMicrosecsP90() {
+        return ((bitField1_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional double net_tcp_rtt_microsecs_p90 = 23;</code>
+       */
+      public double getNetTcpRttMicrosecsP90() {
+        return netTcpRttMicrosecsP90_;
+      }
+      /**
+       * <code>optional double net_tcp_rtt_microsecs_p90 = 23;</code>
+       */
+      public Builder setNetTcpRttMicrosecsP90(double value) {
+        bitField1_ |= 0x00000020;
+        netTcpRttMicrosecsP90_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double net_tcp_rtt_microsecs_p90 = 23;</code>
+       */
+      public Builder clearNetTcpRttMicrosecsP90() {
+        bitField1_ = (bitField1_ & ~0x00000020);
+        netTcpRttMicrosecsP90_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // optional double net_tcp_rtt_microsecs_p95 = 24;
+      private double netTcpRttMicrosecsP95_ ;
+      /**
+       * <code>optional double net_tcp_rtt_microsecs_p95 = 24;</code>
+       */
+      public boolean hasNetTcpRttMicrosecsP95() {
+        return ((bitField1_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional double net_tcp_rtt_microsecs_p95 = 24;</code>
+       */
+      public double getNetTcpRttMicrosecsP95() {
+        return netTcpRttMicrosecsP95_;
+      }
+      /**
+       * <code>optional double net_tcp_rtt_microsecs_p95 = 24;</code>
+       */
+      public Builder setNetTcpRttMicrosecsP95(double value) {
+        bitField1_ |= 0x00000040;
+        netTcpRttMicrosecsP95_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double net_tcp_rtt_microsecs_p95 = 24;</code>
+       */
+      public Builder clearNetTcpRttMicrosecsP95() {
+        bitField1_ = (bitField1_ & ~0x00000040);
+        netTcpRttMicrosecsP95_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // optional double net_tcp_rtt_microsecs_p99 = 25;
+      private double netTcpRttMicrosecsP99_ ;
+      /**
+       * <code>optional double net_tcp_rtt_microsecs_p99 = 25;</code>
+       */
+      public boolean hasNetTcpRttMicrosecsP99() {
+        return ((bitField1_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional double net_tcp_rtt_microsecs_p99 = 25;</code>
+       */
+      public double getNetTcpRttMicrosecsP99() {
+        return netTcpRttMicrosecsP99_;
+      }
+      /**
+       * <code>optional double net_tcp_rtt_microsecs_p99 = 25;</code>
+       */
+      public Builder setNetTcpRttMicrosecsP99(double value) {
+        bitField1_ |= 0x00000080;
+        netTcpRttMicrosecsP99_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double net_tcp_rtt_microsecs_p99 = 25;</code>
+       */
+      public Builder clearNetTcpRttMicrosecsP99() {
+        bitField1_ = (bitField1_ & ~0x00000080);
+        netTcpRttMicrosecsP99_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // optional double net_tcp_active_connections = 28;
+      private double netTcpActiveConnections_ ;
+      /**
+       * <code>optional double net_tcp_active_connections = 28;</code>
+       */
+      public boolean hasNetTcpActiveConnections() {
+        return ((bitField1_ & 0x00000100) == 0x00000100);
+      }
+      /**
+       * <code>optional double net_tcp_active_connections = 28;</code>
+       */
+      public double getNetTcpActiveConnections() {
+        return netTcpActiveConnections_;
+      }
+      /**
+       * <code>optional double net_tcp_active_connections = 28;</code>
+       */
+      public Builder setNetTcpActiveConnections(double value) {
+        bitField1_ |= 0x00000100;
+        netTcpActiveConnections_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double net_tcp_active_connections = 28;</code>
+       */
+      public Builder clearNetTcpActiveConnections() {
+        bitField1_ = (bitField1_ & ~0x00000100);
+        netTcpActiveConnections_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // optional double net_tcp_time_wait_connections = 29;
+      private double netTcpTimeWaitConnections_ ;
+      /**
+       * <code>optional double net_tcp_time_wait_connections = 29;</code>
+       */
+      public boolean hasNetTcpTimeWaitConnections() {
+        return ((bitField1_ & 0x00000200) == 0x00000200);
+      }
+      /**
+       * <code>optional double net_tcp_time_wait_connections = 29;</code>
+       */
+      public double getNetTcpTimeWaitConnections() {
+        return netTcpTimeWaitConnections_;
+      }
+      /**
+       * <code>optional double net_tcp_time_wait_connections = 29;</code>
+       */
+      public Builder setNetTcpTimeWaitConnections(double value) {
+        bitField1_ |= 0x00000200;
+        netTcpTimeWaitConnections_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double net_tcp_time_wait_connections = 29;</code>
+       */
+      public Builder clearNetTcpTimeWaitConnections() {
+        bitField1_ = (bitField1_ & ~0x00000200);
+        netTcpTimeWaitConnections_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // repeated .mesos.v1.TrafficControlStatistics net_traffic_control_statistics = 35;
+      private java.util.List<org.apache.mesos.v1.Protos.TrafficControlStatistics> netTrafficControlStatistics_ =
+        java.util.Collections.emptyList();
+      private void ensureNetTrafficControlStatisticsIsMutable() {
+        if (!((bitField1_ & 0x00000400) == 0x00000400)) {
+          netTrafficControlStatistics_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.TrafficControlStatistics>(netTrafficControlStatistics_);
+          bitField1_ |= 0x00000400;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.TrafficControlStatistics, org.apache.mesos.v1.Protos.TrafficControlStatistics.Builder, org.apache.mesos.v1.Protos.TrafficControlStatisticsOrBuilder> netTrafficControlStatisticsBuilder_;
+
+      /**
+       * <code>repeated .mesos.v1.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+       *
+       * <pre>
+       * Network traffic flowing into or out of a container can be delayed
+       * or dropped due to congestion or policy inside and outside the
+       * container.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.TrafficControlStatistics> getNetTrafficControlStatisticsList() {
+        if (netTrafficControlStatisticsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(netTrafficControlStatistics_);
+        } else {
+          return netTrafficControlStatisticsBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+       *
+       * <pre>
+       * Network traffic flowing into or out of a container can be delayed
+       * or dropped due to congestion or policy inside and outside the
+       * container.
+       * </pre>
+       */
+      public int getNetTrafficControlStatisticsCount() {
+        if (netTrafficControlStatisticsBuilder_ == null) {
+          return netTrafficControlStatistics_.size();
+        } else {
+          return netTrafficControlStatisticsBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+       *
+       * <pre>
+       * Network traffic flowing into or out of a container can be delayed
+       * or dropped due to congestion or policy inside and outside the
+       * container.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.TrafficControlStatistics getNetTrafficControlStatistics(int index) {
+        if (netTrafficControlStatisticsBuilder_ == null) {
+          return netTrafficControlStatistics_.get(index);
+        } else {
+          return netTrafficControlStatisticsBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+       *
+       * <pre>
+       * Network traffic flowing into or out of a container can be delayed
+       * or dropped due to congestion or policy inside and outside the
+       * container.
+       * </pre>
+       */
+      public Builder setNetTrafficControlStatistics(
+          int index, org.apache.mesos.v1.Protos.TrafficControlStatistics value) {
+        if (netTrafficControlStatisticsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureNetTrafficControlStatisticsIsMutable();
+          netTrafficControlStatistics_.set(index, value);
+          onChanged();
+        } else {
+          netTrafficControlStatisticsBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+       *
+       * <pre>
+       * Network traffic flowing into or out of a container can be delayed
+       * or dropped due to congestion or policy inside and outside the
+       * container.
+       * </pre>
+       */
+      public Builder setNetTrafficControlStatistics(
+          int index, org.apache.mesos.v1.Protos.TrafficControlStatistics.Builder builderForValue) {
+        if (netTrafficControlStatisticsBuilder_ == null) {
+          ensureNetTrafficControlStatisticsIsMutable();
+          netTrafficControlStatistics_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          netTrafficControlStatisticsBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+       *
+       * <pre>
+       * Network traffic flowing into or out of a container can be delayed
+       * or dropped due to congestion or policy inside and outside the
+       * container.
+       * </pre>
+       */
+      public Builder addNetTrafficControlStatistics(org.apache.mesos.v1.Protos.TrafficControlStatistics value) {
+        if (netTrafficControlStatisticsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureNetTrafficControlStatisticsIsMutable();
+          netTrafficControlStatistics_.add(value);
+          onChanged();
+        } else {
+          netTrafficControlStatisticsBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+       *
+       * <pre>
+       * Network traffic flowing into or out of a container can be delayed
+       * or dropped due to congestion or policy inside and outside the
+       * container.
+       * </pre>
+       */
+      public Builder addNetTrafficControlStatistics(
+          int index, org.apache.mesos.v1.Protos.TrafficControlStatistics value) {
+        if (netTrafficControlStatisticsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureNetTrafficControlStatisticsIsMutable();
+          netTrafficControlStatistics_.add(index, value);
+          onChanged();
+        } else {
+          netTrafficControlStatisticsBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+       *
+       * <pre>
+       * Network traffic flowing into or out of a container can be delayed
+       * or dropped due to congestion or policy inside and outside the
+       * container.
+       * </pre>
+       */
+      public Builder addNetTrafficControlStatistics(
+          org.apache.mesos.v1.Protos.TrafficControlStatistics.Builder builderForValue) {
+        if (netTrafficControlStatisticsBuilder_ == null) {
+          ensureNetTrafficControlStatisticsIsMutable();
+          netTrafficControlStatistics_.add(builderForValue.build());
+          onChanged();
+        } else {
+          netTrafficControlStatisticsBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+       *
+       * <pre>
+       * Network traffic flowing into or out of a container can be delayed
+       * or dropped due to congestion or policy inside and outside the
+       * container.
+       * </pre>
+       */
+      public Builder addNetTrafficControlStatistics(
+          int index, org.apache.mesos.v1.Protos.TrafficControlStatistics.Builder builderForValue) {
+        if (netTrafficControlStatisticsBuilder_ == null) {
+          ensureNetTrafficControlStatisticsIsMutable();
+          netTrafficControlStatistics_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          netTrafficControlStatisticsBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+       *
+       * <pre>
+       * Network traffic flowing into or out of a container can be delayed
+       * or dropped due to congestion or policy inside and outside the
+       * container.
+       * </pre>
+       */
+      public Builder addAllNetTrafficControlStatistics(
+          java.lang.Iterable<? extends org.apache.mesos.v1.Protos.TrafficControlStatistics> values) {
+        if (netTrafficControlStatisticsBuilder_ == null) {
+          ensureNetTrafficControlStatisticsIsMutable();
+          super.addAll(values, netTrafficControlStatistics_);
+          onChanged();
+        } else {
+          netTrafficControlStatisticsBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+       *
+       * <pre>
+       * Network traffic flowing into or out of a container can be delayed
+       * or dropped due to congestion or policy inside and outside the
+       * container.
+       * </pre>
+       */
+      public Builder clearNetTrafficControlStatistics() {
+        if (netTrafficControlStatisticsBuilder_ == null) {
+          netTrafficControlStatistics_ = java.util.Collections.emptyList();
+          bitField1_ = (bitField1_ & ~0x00000400);
+          onChanged();
+        } else {
+          netTrafficControlStatisticsBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+       *
+       * <pre>
+       * Network traffic flowing into or out of a container can be delayed
+       * or dropped due to congestion or policy inside and outside the
+       * container.
+       * </pre>
+       */
+      public Builder removeNetTrafficControlStatistics(int index) {
+        if (netTrafficControlStatisticsBuilder_ == null) {
+          ensureNetTrafficControlStatisticsIsMutable();
+          netTrafficControlStatistics_.remove(index);
+          onChanged();
+        } else {
+          netTrafficControlStatisticsBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+       *
+       * <pre>
+       * Network traffic flowing into or out of a container can be delayed
+       * or dropped due to congestion or policy inside and outside the
+       * container.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.TrafficControlStatistics.Builder getNetTrafficControlStatisticsBuilder(
+          int index) {
+        return getNetTrafficControlStatisticsFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+       *
+       * <pre>
+       * Network traffic flowing into or out of a container can be delayed
+       * or dropped due to congestion or policy inside and outside the
+       * container.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.TrafficControlStatisticsOrBuilder getNetTrafficControlStatisticsOrBuilder(
+          int index) {
+        if (netTrafficControlStatisticsBuilder_ == null) {
+          return netTrafficControlStatistics_.get(index);  } else {
+          return netTrafficControlStatisticsBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+       *
+       * <pre>
+       * Network traffic flowing into or out of a container can be delayed
+       * or dropped due to congestion or policy inside and outside the
+       * container.
+       * </pre>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.TrafficControlStatisticsOrBuilder> 
+           getNetTrafficControlStatisticsOrBuilderList() {
+        if (netTrafficControlStatisticsBuilder_ != null) {
+          return netTrafficControlStatisticsBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(netTrafficControlStatistics_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+       *
+       * <pre>
+       * Network traffic flowing into or out of a container can be delayed
+       * or dropped due to congestion or policy inside and outside the
+       * container.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.TrafficControlStatistics.Builder addNetTrafficControlStatisticsBuilder() {
+        return getNetTrafficControlStatisticsFieldBuilder().addBuilder(
+            org.apache.mesos.v1.Protos.TrafficControlStatistics.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+       *
+       * <pre>
+       * Network traffic flowing into or out of a container can be delayed
+       * or dropped due to congestion or policy inside and outside the
+       * container.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.TrafficControlStatistics.Builder addNetTrafficControlStatisticsBuilder(
+          int index) {
+        return getNetTrafficControlStatisticsFieldBuilder().addBuilder(
+            index, org.apache.mesos.v1.Protos.TrafficControlStatistics.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.TrafficControlStatistics net_traffic_control_statistics = 35;</code>
+       *
+       * <pre>
+       * Network traffic flowing into or out of a container can be delayed
+       * or dropped due to congestion or policy inside and outside the
+       * container.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.TrafficControlStatistics.Builder> 
+           getNetTrafficControlStatisticsBuilderList() {
+        return getNetTrafficControlStatisticsFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.TrafficControlStatistics, org.apache.mesos.v1.Protos.TrafficControlStatistics.Builder, org.apache.mesos.v1.Protos.TrafficControlStatisticsOrBuilder> 
+          getNetTrafficControlStatisticsFieldBuilder() {
+        if (netTrafficControlStatisticsBuilder_ == null) {
+          netTrafficControlStatisticsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.TrafficControlStatistics, org.apache.mesos.v1.Protos.TrafficControlStatistics.Builder, org.apache.mesos.v1.Protos.TrafficControlStatisticsOrBuilder>(
+                  netTrafficControlStatistics_,
+                  ((bitField1_ & 0x00000400) == 0x00000400),
+                  getParentForChildren(),
+                  isClean());
+          netTrafficControlStatistics_ = null;
+        }
+        return netTrafficControlStatisticsBuilder_;
+      }
+
+      // optional .mesos.v1.SNMPStatistics net_snmp_statistics = 42;
+      private org.apache.mesos.v1.Protos.SNMPStatistics netSnmpStatistics_ = org.apache.mesos.v1.Protos.SNMPStatistics.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.SNMPStatistics, org.apache.mesos.v1.Protos.SNMPStatistics.Builder, org.apache.mesos.v1.Protos.SNMPStatisticsOrBuilder> netSnmpStatisticsBuilder_;
+      /**
+       * <code>optional .mesos.v1.SNMPStatistics net_snmp_statistics = 42;</code>
+       *
+       * <pre>
+       * Network SNMP statistics for each container.
+       * </pre>
+       */
+      public boolean hasNetSnmpStatistics() {
+        return ((bitField1_ & 0x00000800) == 0x00000800);
+      }
+      /**
+       * <code>optional .mesos.v1.SNMPStatistics net_snmp_statistics = 42;</code>
+       *
+       * <pre>
+       * Network SNMP statistics for each container.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.SNMPStatistics getNetSnmpStatistics() {
+        if (netSnmpStatisticsBuilder_ == null) {
+          return netSnmpStatistics_;
+        } else {
+          return netSnmpStatisticsBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.SNMPStatistics net_snmp_statistics = 42;</code>
+       *
+       * <pre>
+       * Network SNMP statistics for each container.
+       * </pre>
+       */
+      public Builder setNetSnmpStatistics(org.apache.mesos.v1.Protos.SNMPStatistics value) {
+        if (netSnmpStatisticsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          netSnmpStatistics_ = value;
+          onChanged();
+        } else {
+          netSnmpStatisticsBuilder_.setMessage(value);
+        }
+        bitField1_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.SNMPStatistics net_snmp_statistics = 42;</code>
+       *
+       * <pre>
+       * Network SNMP statistics for each container.
+       * </pre>
+       */
+      public Builder setNetSnmpStatistics(
+          org.apache.mesos.v1.Protos.SNMPStatistics.Builder builderForValue) {
+        if (netSnmpStatisticsBuilder_ == null) {
+          netSnmpStatistics_ = builderForValue.build();
+          onChanged();
+        } else {
+          netSnmpStatisticsBuilder_.setMessage(builderForValue.build());
+        }
+        bitField1_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.SNMPStatistics net_snmp_statistics = 42;</code>
+       *
+       * <pre>
+       * Network SNMP statistics for each container.
+       * </pre>
+       */
+      public Builder mergeNetSnmpStatistics(org.apache.mesos.v1.Protos.SNMPStatistics value) {
+        if (netSnmpStatisticsBuilder_ == null) {
+          if (((bitField1_ & 0x00000800) == 0x00000800) &&
+              netSnmpStatistics_ != org.apache.mesos.v1.Protos.SNMPStatistics.getDefaultInstance()) {
+            netSnmpStatistics_ =
+              org.apache.mesos.v1.Protos.SNMPStatistics.newBuilder(netSnmpStatistics_).mergeFrom(value).buildPartial();
+          } else {
+            netSnmpStatistics_ = value;
+          }
+          onChanged();
+        } else {
+          netSnmpStatisticsBuilder_.mergeFrom(value);
+        }
+        bitField1_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.SNMPStatistics net_snmp_statistics = 42;</code>
+       *
+       * <pre>
+       * Network SNMP statistics for each container.
+       * </pre>
+       */
+      public Builder clearNetSnmpStatistics() {
+        if (netSnmpStatisticsBuilder_ == null) {
+          netSnmpStatistics_ = org.apache.mesos.v1.Protos.SNMPStatistics.getDefaultInstance();
+          onChanged();
+        } else {
+          netSnmpStatisticsBuilder_.clear();
+        }
+        bitField1_ = (bitField1_ & ~0x00000800);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.SNMPStatistics net_snmp_statistics = 42;</code>
+       *
+       * <pre>
+       * Network SNMP statistics for each container.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.SNMPStatistics.Builder getNetSnmpStatisticsBuilder() {
+        bitField1_ |= 0x00000800;
+        onChanged();
+        return getNetSnmpStatisticsFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.SNMPStatistics net_snmp_statistics = 42;</code>
+       *
+       * <pre>
+       * Network SNMP statistics for each container.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.SNMPStatisticsOrBuilder getNetSnmpStatisticsOrBuilder() {
+        if (netSnmpStatisticsBuilder_ != null) {
+          return netSnmpStatisticsBuilder_.getMessageOrBuilder();
+        } else {
+          return netSnmpStatistics_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.SNMPStatistics net_snmp_statistics = 42;</code>
+       *
+       * <pre>
+       * Network SNMP statistics for each container.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.SNMPStatistics, org.apache.mesos.v1.Protos.SNMPStatistics.Builder, org.apache.mesos.v1.Protos.SNMPStatisticsOrBuilder> 
+          getNetSnmpStatisticsFieldBuilder() {
+        if (netSnmpStatisticsBuilder_ == null) {
+          netSnmpStatisticsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.SNMPStatistics, org.apache.mesos.v1.Protos.SNMPStatistics.Builder, org.apache.mesos.v1.Protos.SNMPStatisticsOrBuilder>(
+                  netSnmpStatistics_,
+                  getParentForChildren(),
+                  isClean());
+          netSnmpStatistics_ = null;
+        }
+        return netSnmpStatisticsBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.ResourceStatistics)
+    }
+
+    static {
+      defaultInstance = new ResourceStatistics(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.ResourceStatistics)
+  }
+
+  public interface ResourceUsageOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // repeated .mesos.v1.ResourceUsage.Executor executors = 1;
+    /**
+     * <code>repeated .mesos.v1.ResourceUsage.Executor executors = 1;</code>
+     */
+    java.util.List<org.apache.mesos.v1.Protos.ResourceUsage.Executor> 
+        getExecutorsList();
+    /**
+     * <code>repeated .mesos.v1.ResourceUsage.Executor executors = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.ResourceUsage.Executor getExecutors(int index);
+    /**
+     * <code>repeated .mesos.v1.ResourceUsage.Executor executors = 1;</code>
+     */
+    int getExecutorsCount();
+    /**
+     * <code>repeated .mesos.v1.ResourceUsage.Executor executors = 1;</code>
+     */
+    java.util.List<? extends org.apache.mesos.v1.Protos.ResourceUsage.ExecutorOrBuilder> 
+        getExecutorsOrBuilderList();
+    /**
+     * <code>repeated .mesos.v1.ResourceUsage.Executor executors = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.ResourceUsage.ExecutorOrBuilder getExecutorsOrBuilder(
+        int index);
+
+    // repeated .mesos.v1.Resource total = 2;
+    /**
+     * <code>repeated .mesos.v1.Resource total = 2;</code>
+     *
+     * <pre>
+     * Agent's total resources including checkpointed dynamic
+     * reservations and persistent volumes.
+     * </pre>
+     */
+    java.util.List<org.apache.mesos.v1.Protos.Resource> 
+        getTotalList();
+    /**
+     * <code>repeated .mesos.v1.Resource total = 2;</code>
+     *
+     * <pre>
+     * Agent's total resources including checkpointed dynamic
+     * reservations and persistent volumes.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.Resource getTotal(int index);
+    /**
+     * <code>repeated .mesos.v1.Resource total = 2;</code>
+     *
+     * <pre>
+     * Agent's total resources including checkpointed dynamic
+     * reservations and persistent volumes.
+     * </pre>
+     */
+    int getTotalCount();
+    /**
+     * <code>repeated .mesos.v1.Resource total = 2;</code>
+     *
+     * <pre>
+     * Agent's total resources including checkpointed dynamic
+     * reservations and persistent volumes.
+     * </pre>
+     */
+    java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+        getTotalOrBuilderList();
+    /**
+     * <code>repeated .mesos.v1.Resource total = 2;</code>
+     *
+     * <pre>
+     * Agent's total resources including checkpointed dynamic
+     * reservations and persistent volumes.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.ResourceOrBuilder getTotalOrBuilder(
+        int index);
+  }
+  /**
+   * Protobuf type {@code mesos.v1.ResourceUsage}
+   *
+   * <pre>
+   **
+   * Describes a snapshot of the resource usage for executors.
+   * </pre>
+   */
+  public static final class ResourceUsage extends
+      com.google.protobuf.GeneratedMessage
+      implements ResourceUsageOrBuilder {
+    // Use ResourceUsage.newBuilder() to construct.
+    private ResourceUsage(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private ResourceUsage(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final ResourceUsage defaultInstance;
+    public static ResourceUsage getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public ResourceUsage getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private ResourceUsage(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                executors_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.ResourceUsage.Executor>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              executors_.add(input.readMessage(org.apache.mesos.v1.Protos.ResourceUsage.Executor.PARSER, extensionRegistry));
+              break;
+            }
+            case 18: {
+              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+                total_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Resource>();
+                mutable_bitField0_ |= 0x00000002;
+              }
+              total_.add(input.readMessage(org.apache.mesos.v1.Protos.Resource.PARSER, extensionRegistry));
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+          executors_ = java.util.Collections.unmodifiableList(executors_);
+        }
+        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+          total_ = java.util.Collections.unmodifiableList(total_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ResourceUsage_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ResourceUsage_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.ResourceUsage.class, org.apache.mesos.v1.Protos.ResourceUsage.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<ResourceUsage> PARSER =
+        new com.google.protobuf.AbstractParser<ResourceUsage>() {
+      public ResourceUsage parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new ResourceUsage(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<ResourceUsage> getParserForType() {
+      return PARSER;
+    }
+
+    public interface ExecutorOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required .mesos.v1.ExecutorInfo executor_info = 1;
+      /**
+       * <code>required .mesos.v1.ExecutorInfo executor_info = 1;</code>
+       */
+      boolean hasExecutorInfo();
+      /**
+       * <code>required .mesos.v1.ExecutorInfo executor_info = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.ExecutorInfo getExecutorInfo();
+      /**
+       * <code>required .mesos.v1.ExecutorInfo executor_info = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.ExecutorInfoOrBuilder getExecutorInfoOrBuilder();
+
+      // repeated .mesos.v1.Resource allocated = 2;
+      /**
+       * <code>repeated .mesos.v1.Resource allocated = 2;</code>
+       *
+       * <pre>
+       * This includes resources used by the executor itself
+       * as well as its active tasks.
+       * </pre>
+       */
+      java.util.List<org.apache.mesos.v1.Protos.Resource> 
+          getAllocatedList();
+      /**
+       * <code>repeated .mesos.v1.Resource allocated = 2;</code>
+       *
+       * <pre>
+       * This includes resources used by the executor itself
+       * as well as its active tasks.
+       * </pre>
+       */
+      org.apache.mesos.v1.Protos.Resource getAllocated(int index);
+      /**
+       * <code>repeated .mesos.v1.Resource allocated = 2;</code>
+       *
+       * <pre>
+       * This includes resources used by the executor itself
+       * as well as its active tasks.
+       * </pre>
+       */
+      int getAllocatedCount();
+      /**
+       * <code>repeated .mesos.v1.Resource allocated = 2;</code>
+       *
+       * <pre>
+       * This includes resources used by the executor itself
+       * as well as its active tasks.
+       * </pre>
+       */
+      java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+          getAllocatedOrBuilderList();
+      /**
+       * <code>repeated .mesos.v1.Resource allocated = 2;</code>
+       *
+       * <pre>
+       * This includes resources used by the executor itself
+       * as well as its active tasks.
+       * </pre>
+       */
+      org.apache.mesos.v1.Protos.ResourceOrBuilder getAllocatedOrBuilder(
+          int index);
+
+      // optional .mesos.v1.ResourceStatistics statistics = 3;
+      /**
+       * <code>optional .mesos.v1.ResourceStatistics statistics = 3;</code>
+       *
+       * <pre>
+       * Current resource usage. If absent, the containerizer
+       * cannot provide resource usage.
+       * </pre>
+       */
+      boolean hasStatistics();
+      /**
+       * <code>optional .mesos.v1.ResourceStatistics statistics = 3;</code>
+       *
+       * <pre>
+       * Current resource usage. If absent, the containerizer
+       * cannot provide resource usage.
+       * </pre>
+       */
+      org.apache.mesos.v1.Protos.ResourceStatistics getStatistics();
+      /**
+       * <code>optional .mesos.v1.ResourceStatistics statistics = 3;</code>
+       *
+       * <pre>
+       * Current resource usage. If absent, the containerizer
+       * cannot provide resource usage.
+       * </pre>
+       */
+      org.apache.mesos.v1.Protos.ResourceStatisticsOrBuilder getStatisticsOrBuilder();
+
+      // required .mesos.v1.ContainerID container_id = 4;
+      /**
+       * <code>required .mesos.v1.ContainerID container_id = 4;</code>
+       *
+       * <pre>
+       * The container id for the executor specified in the executor_info field.
+       * </pre>
+       */
+      boolean hasContainerId();
+      /**
+       * <code>required .mesos.v1.ContainerID container_id = 4;</code>
+       *
+       * <pre>
+       * The container id for the executor specified in the executor_info field.
+       * </pre>
+       */
+      org.apache.mesos.v1.Protos.ContainerID getContainerId();
+      /**
+       * <code>required .mesos.v1.ContainerID container_id = 4;</code>
+       *
+       * <pre>
+       * The container id for the executor specified in the executor_info field.
+       * </pre>
+       */
+      org.apache.mesos.v1.Protos.ContainerIDOrBuilder getContainerIdOrBuilder();
+
+      // repeated .mesos.v1.ResourceUsage.Executor.Task tasks = 5;
+      /**
+       * <code>repeated .mesos.v1.ResourceUsage.Executor.Task tasks = 5;</code>
+       *
+       * <pre>
+       * Non-terminal tasks.
+       * </pre>
+       */
+      java.util.List<org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task> 
+          getTasksList();
+      /**
+       * <code>repeated .mesos.v1.ResourceUsage.Executor.Task tasks = 5;</code>
+       *
+       * <pre>
+       * Non-terminal tasks.
+       * </pre>
+       */
+      org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task getTasks(int index);
+      /**
+       * <code>repeated .mesos.v1.ResourceUsage.Executor.Task tasks = 5;</code>
+       *
+       * <pre>
+       * Non-terminal tasks.
+       * </pre>
+       */
+      int getTasksCount();
+      /**
+       * <code>repeated .mesos.v1.ResourceUsage.Executor.Task tasks = 5;</code>
+       *
+       * <pre>
+       * Non-terminal tasks.
+       * </pre>
+       */
+      java.util.List<? extends org.apache.mesos.v1.Protos.ResourceUsage.Executor.TaskOrBuilder> 
+          getTasksOrBuilderList();
+      /**
+       * <code>repeated .mesos.v1.ResourceUsage.Executor.Task tasks = 5;</code>
+       *
+       * <pre>
+       * Non-terminal tasks.
+       * </pre>
+       */
+      org.apache.mesos.v1.Protos.ResourceUsage.Executor.TaskOrBuilder getTasksOrBuilder(
+          int index);
+    }
+    /**
+     * Protobuf type {@code mesos.v1.ResourceUsage.Executor}
+     */
+    public static final class Executor extends
+        com.google.protobuf.GeneratedMessage
+        implements ExecutorOrBuilder {
+      // Use Executor.newBuilder() to construct.
+      private Executor(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Executor(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Executor defaultInstance;
+      public static Executor getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Executor getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Executor(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.v1.Protos.ExecutorInfo.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = executorInfo_.toBuilder();
+                }
+                executorInfo_ = input.readMessage(org.apache.mesos.v1.Protos.ExecutorInfo.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(executorInfo_);
+                  executorInfo_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+              case 18: {
+                if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+                  allocated_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Resource>();
+                  mutable_bitField0_ |= 0x00000002;
+                }
+                allocated_.add(input.readMessage(org.apache.mesos.v1.Protos.Resource.PARSER, extensionRegistry));
+                break;
+              }
+              case 26: {
+                org.apache.mesos.v1.Protos.ResourceStatistics.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                  subBuilder = statistics_.toBuilder();
+                }
+                statistics_ = input.readMessage(org.apache.mesos.v1.Protos.ResourceStatistics.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(statistics_);
+                  statistics_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000002;
+                break;
+              }
+              case 34: {
+                org.apache.mesos.v1.Protos.ContainerID.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                  subBuilder = containerId_.toBuilder();
+                }
+                containerId_ = input.readMessage(org.apache.mesos.v1.Protos.ContainerID.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(containerId_);
+                  containerId_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000004;
+                break;
+              }
+              case 42: {
+                if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
+                  tasks_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task>();
+                  mutable_bitField0_ |= 0x00000010;
+                }
+                tasks_.add(input.readMessage(org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task.PARSER, extensionRegistry));
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+            allocated_ = java.util.Collections.unmodifiableList(allocated_);
+          }
+          if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
+            tasks_ = java.util.Collections.unmodifiableList(tasks_);
+          }
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ResourceUsage_Executor_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ResourceUsage_Executor_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.ResourceUsage.Executor.class, org.apache.mesos.v1.Protos.ResourceUsage.Executor.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Executor> PARSER =
+          new com.google.protobuf.AbstractParser<Executor>() {
+        public Executor parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Executor(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Executor> getParserForType() {
+        return PARSER;
+      }
+
+      public interface TaskOrBuilder
+          extends com.google.protobuf.MessageOrBuilder {
+
+        // required string name = 1;
+        /**
+         * <code>required string name = 1;</code>
+         */
+        boolean hasName();
+        /**
+         * <code>required string name = 1;</code>
+         */
+        java.lang.String getName();
+        /**
+         * <code>required string name = 1;</code>
+         */
+        com.google.protobuf.ByteString
+            getNameBytes();
+
+        // required .mesos.v1.TaskID id = 2;
+        /**
+         * <code>required .mesos.v1.TaskID id = 2;</code>
+         */
+        boolean hasId();
+        /**
+         * <code>required .mesos.v1.TaskID id = 2;</code>
+         */
+        org.apache.mesos.v1.Protos.TaskID getId();
+        /**
+         * <code>required .mesos.v1.TaskID id = 2;</code>
+         */
+        org.apache.mesos.v1.Protos.TaskIDOrBuilder getIdOrBuilder();
+
+        // repeated .mesos.v1.Resource resources = 3;
+        /**
+         * <code>repeated .mesos.v1.Resource resources = 3;</code>
+         */
+        java.util.List<org.apache.mesos.v1.Protos.Resource> 
+            getResourcesList();
+        /**
+         * <code>repeated .mesos.v1.Resource resources = 3;</code>
+         */
+        org.apache.mesos.v1.Protos.Resource getResources(int index);
+        /**
+         * <code>repeated .mesos.v1.Resource resources = 3;</code>
+         */
+        int getResourcesCount();
+        /**
+         * <code>repeated .mesos.v1.Resource resources = 3;</code>
+         */
+        java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+            getResourcesOrBuilderList();
+        /**
+         * <code>repeated .mesos.v1.Resource resources = 3;</code>
+         */
+        org.apache.mesos.v1.Protos.ResourceOrBuilder getResourcesOrBuilder(
+            int index);
+
+        // optional .mesos.v1.Labels labels = 4;
+        /**
+         * <code>optional .mesos.v1.Labels labels = 4;</code>
+         */
+        boolean hasLabels();
+        /**
+         * <code>optional .mesos.v1.Labels labels = 4;</code>
+         */
+        org.apache.mesos.v1.Protos.Labels getLabels();
+        /**
+         * <code>optional .mesos.v1.Labels labels = 4;</code>
+         */
+        org.apache.mesos.v1.Protos.LabelsOrBuilder getLabelsOrBuilder();
+      }
+      /**
+       * Protobuf type {@code mesos.v1.ResourceUsage.Executor.Task}
+       */
+      public static final class Task extends
+          com.google.protobuf.GeneratedMessage
+          implements TaskOrBuilder {
+        // Use Task.newBuilder() to construct.
+        private Task(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+          super(builder);
+          this.unknownFields = builder.getUnknownFields();
+        }
+        private Task(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+        private static final Task defaultInstance;
+        public static Task getDefaultInstance() {
+          return defaultInstance;
+        }
+
+        public Task getDefaultInstanceForType() {
+          return defaultInstance;
+        }
+
+        private final com.google.protobuf.UnknownFieldSet unknownFields;
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet
+            getUnknownFields() {
+          return this.unknownFields;
+        }
+        private Task(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          initFields();
+          int mutable_bitField0_ = 0;
+          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+              com.google.protobuf.UnknownFieldSet.newBuilder();
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(input, unknownFields,
+                                         extensionRegistry, tag)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 10: {
+                  bitField0_ |= 0x00000001;
+                  name_ = input.readBytes();
+                  break;
+                }
+                case 18: {
+                  org.apache.mesos.v1.Protos.TaskID.Builder subBuilder = null;
+                  if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                    subBuilder = id_.toBuilder();
+                  }
+                  id_ = input.readMessage(org.apache.mesos.v1.Protos.TaskID.PARSER, extensionRegistry);
+                  if (subBuilder != null) {
+                    subBuilder.mergeFrom(id_);
+                    id_ = subBuilder.buildPartial();
+                  }
+                  bitField0_ |= 0x00000002;
+                  break;
+                }
+                case 26: {
+                  if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
+                    resources_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Resource>();
+                    mutable_bitField0_ |= 0x00000004;
+                  }
+                  resources_.add(input.readMessage(org.apache.mesos.v1.Protos.Resource.PARSER, extensionRegistry));
+                  break;
+                }
+                case 34: {
+                  org.apache.mesos.v1.Protos.Labels.Builder subBuilder = null;
+                  if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                    subBuilder = labels_.toBuilder();
+                  }
+                  labels_ = input.readMessage(org.apache.mesos.v1.Protos.Labels.PARSER, extensionRegistry);
+                  if (subBuilder != null) {
+                    subBuilder.mergeFrom(labels_);
+                    labels_ = subBuilder.buildPartial();
+                  }
+                  bitField0_ |= 0x00000004;
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw e.setUnfinishedMessage(this);
+          } catch (java.io.IOException e) {
+            throw new com.google.protobuf.InvalidProtocolBufferException(
+                e.getMessage()).setUnfinishedMessage(this);
+          } finally {
+            if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
+              resources_ = java.util.Collections.unmodifiableList(resources_);
+            }
+            this.unknownFields = unknownFields.build();
+            makeExtensionsImmutable();
+          }
+        }
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ResourceUsage_Executor_Task_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ResourceUsage_Executor_Task_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task.class, org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task.Builder.class);
+        }
+
+        public static com.google.protobuf.Parser<Task> PARSER =
+            new com.google.protobuf.AbstractParser<Task>() {
+          public Task parsePartialFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return new Task(input, extensionRegistry);
+          }
+        };
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<Task> getParserForType() {
+          return PARSER;
+        }
+
+        private int bitField0_;
+        // required string name = 1;
+        public static final int NAME_FIELD_NUMBER = 1;
+        private java.lang.Object name_;
+        /**
+         * <code>required string name = 1;</code>
+         */
+        public boolean hasName() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required string name = 1;</code>
+         */
+        public java.lang.String getName() {
+          java.lang.Object ref = name_;
+          if (ref instanceof java.lang.String) {
+            return (java.lang.String) ref;
+          } else {
+            com.google.protobuf.ByteString bs = 
+                (com.google.protobuf.ByteString) ref;
+            java.lang.String s = bs.toStringUtf8();
+            if (bs.isValidUtf8()) {
+              name_ = s;
+            }
+            return s;
+          }
+        }
+        /**
+         * <code>required string name = 1;</code>
+         */
+        public com.google.protobuf.ByteString
+            getNameBytes() {
+          java.lang.Object ref = name_;
+          if (ref instanceof java.lang.String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            name_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+
+        // required .mesos.v1.TaskID id = 2;
+        public static final int ID_FIELD_NUMBER = 2;
+        private org.apache.mesos.v1.Protos.TaskID id_;
+        /**
+         * <code>required .mesos.v1.TaskID id = 2;</code>
+         */
+        public boolean hasId() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>required .mesos.v1.TaskID id = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.TaskID getId() {
+          return id_;
+        }
+        /**
+         * <code>required .mesos.v1.TaskID id = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.TaskIDOrBuilder getIdOrBuilder() {
+          return id_;
+        }
+
+        // repeated .mesos.v1.Resource resources = 3;
+        public static final int RESOURCES_FIELD_NUMBER = 3;
+        private java.util.List<org.apache.mesos.v1.Protos.Resource> resources_;
+        /**
+         * <code>repeated .mesos.v1.Resource resources = 3;</code>
+         */
+        public java.util.List<org.apache.mesos.v1.Protos.Resource> getResourcesList() {
+          return resources_;
+        }
+        /**
+         * <code>repeated .mesos.v1.Resource resources = 3;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+            getResourcesOrBuilderList() {
+          return resources_;
+        }
+        /**
+         * <code>repeated .mesos.v1.Resource resources = 3;</code>
+         */
+        public int getResourcesCount() {
+          return resources_.size();
+        }
+        /**
+         * <code>repeated .mesos.v1.Resource resources = 3;</code>
+         */
+        public org.apache.mesos.v1.Protos.Resource getResources(int index) {
+          return resources_.get(index);
+        }
+        /**
+         * <code>repeated .mesos.v1.Resource resources = 3;</code>
+         */
+        public org.apache.mesos.v1.Protos.ResourceOrBuilder getResourcesOrBuilder(
+            int index) {
+          return resources_.get(index);
+        }
+
+        // optional .mesos.v1.Labels labels = 4;
+        public static final int LABELS_FIELD_NUMBER = 4;
+        private org.apache.mesos.v1.Protos.Labels labels_;
+        /**
+         * <code>optional .mesos.v1.Labels labels = 4;</code>
+         */
+        public boolean hasLabels() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional .mesos.v1.Labels labels = 4;</code>
+         */
+        public org.apache.mesos.v1.Protos.Labels getLabels() {
+          return labels_;
+        }
+        /**
+         * <code>optional .mesos.v1.Labels labels = 4;</code>
+         */
+        public org.apache.mesos.v1.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+          return labels_;
+        }
+
+        private void initFields() {
+          name_ = "";
+          id_ = org.apache.mesos.v1.Protos.TaskID.getDefaultInstance();
+          resources_ = java.util.Collections.emptyList();
+          labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+        }
+        private byte memoizedIsInitialized = -1;
+        public final boolean isInitialized() {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized != -1) return isInitialized == 1;
+
+          if (!hasName()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+          if (!hasId()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+          if (!getId().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+          for (int i = 0; i < getResourcesCount(); i++) {
+            if (!getResources(i).isInitialized()) {
+              memoizedIsInitialized = 0;
+              return false;
+            }
+          }
+          if (hasLabels()) {
+            if (!getLabels().isInitialized()) {
+              memoizedIsInitialized = 0;
+              return false;
+            }
+          }
+          memoizedIsInitialized = 1;
+          return true;
+        }
+
+        public void writeTo(com.google.protobuf.CodedOutputStream output)
+                            throws java.io.IOException {
+          getSerializedSize();
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            output.writeBytes(1, getNameBytes());
+          }
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            output.writeMessage(2, id_);
+          }
+          for (int i = 0; i < resources_.size(); i++) {
+            output.writeMessage(3, resources_.get(i));
+          }
+          if (((bitField0_ & 0x00000004) == 0x00000004)) {
+            output.writeMessage(4, labels_);
+          }
+          getUnknownFields().writeTo(output);
+        }
+
+        private int memoizedSerializedSize = -1;
+        public int getSerializedSize() {
+          int size = memoizedSerializedSize;
+          if (size != -1) return size;
+
+          size = 0;
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeBytesSize(1, getNameBytes());
+          }
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeMessageSize(2, id_);
+          }
+          for (int i = 0; i < resources_.size(); i++) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeMessageSize(3, resources_.get(i));
+          }
+          if (((bitField0_ & 0x00000004) == 0x00000004)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeMessageSize(4, labels_);
+          }
+          size += getUnknownFields().getSerializedSize();
+          memoizedSerializedSize = size;
+          return size;
+        }
+
+        private static final long serialVersionUID = 0L;
+        @java.lang.Override
+        protected java.lang.Object writeReplace()
+            throws java.io.ObjectStreamException {
+          return super.writeReplace();
+        }
+
+        public static org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task parseFrom(
+            com.google.protobuf.ByteString data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task parseFrom(
+            com.google.protobuf.ByteString data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task parseFrom(byte[] data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task parseFrom(
+            byte[] data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task parseFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task parseFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task parseDelimitedFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task parseDelimitedFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task parseFrom(
+            com.google.protobuf.CodedInputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task parseFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+
+        public static Builder newBuilder() { return Builder.create(); }
+        public Builder newBuilderForType() { return newBuilder(); }
+        public static Builder newBuilder(org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task prototype) {
+          return newBuilder().mergeFrom(prototype);
+        }
+        public Builder toBuilder() { return newBuilder(this); }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          Builder builder = new Builder(parent);
+          return builder;
+        }
+        /**
+         * Protobuf type {@code mesos.v1.ResourceUsage.Executor.Task}
+         */
+        public static final class Builder extends
+            com.google.protobuf.GeneratedMessage.Builder<Builder>
+           implements org.apache.mesos.v1.Protos.ResourceUsage.Executor.TaskOrBuilder {
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ResourceUsage_Executor_Task_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ResourceUsage_Executor_Task_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task.class, org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task.Builder.class);
+          }
+
+          // Construct using org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task.newBuilder()
+          private Builder() {
+            maybeForceBuilderInitialization();
+          }
+
+          private Builder(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            super(parent);
+            maybeForceBuilderInitialization();
+          }
+          private void maybeForceBuilderInitialization() {
+            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+              getIdFieldBuilder();
+              getResourcesFieldBuilder();
+              getLabelsFieldBuilder();
+            }
+          }
+          private static Builder create() {
+            return new Builder();
+          }
+
+          public Builder clear() {
+            super.clear();
+            name_ = "";
+            bitField0_ = (bitField0_ & ~0x00000001);
+            if (idBuilder_ == null) {
+              id_ = org.apache.mesos.v1.Protos.TaskID.getDefaultInstance();
+            } else {
+              idBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000002);
+            if (resourcesBuilder_ == null) {
+              resources_ = java.util.Collections.emptyList();
+              bitField0_ = (bitField0_ & ~0x00000004);
+            } else {
+              resourcesBuilder_.clear();
+            }
+            if (labelsBuilder_ == null) {
+              labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+            } else {
+              labelsBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000008);
+            return this;
+          }
+
+          public Builder clone() {
+            return create().mergeFrom(buildPartial());
+          }
+
+          public com.google.protobuf.Descriptors.Descriptor
+              getDescriptorForType() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ResourceUsage_Executor_Task_descriptor;
+          }
+
+          public org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task getDefaultInstanceForType() {
+            return org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task.getDefaultInstance();
+          }
+
+          public org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task build() {
+            org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task result = buildPartial();
+            if (!result.isInitialized()) {
+              throw newUninitializedMessageException(result);
+            }
+            return result;
+          }
+
+          public org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task buildPartial() {
+            org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task result = new org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task(this);
+            int from_bitField0_ = bitField0_;
+            int to_bitField0_ = 0;
+            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+              to_bitField0_ |= 0x00000001;
+            }
+            result.name_ = name_;
+            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+              to_bitField0_ |= 0x00000002;
+            }
+            if (idBuilder_ == null) {
+              result.id_ = id_;
+            } else {
+              result.id_ = idBuilder_.build();
+            }
+            if (resourcesBuilder_ == null) {
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                resources_ = java.util.Collections.unmodifiableList(resources_);
+                bitField0_ = (bitField0_ & ~0x00000004);
+              }
+              result.resources_ = resources_;
+            } else {
+              result.resources_ = resourcesBuilder_.build();
+            }
+            if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+              to_bitField0_ |= 0x00000004;
+            }
+            if (labelsBuilder_ == null) {
+              result.labels_ = labels_;
+            } else {
+              result.labels_ = labelsBuilder_.build();
+            }
+            result.bitField0_ = to_bitField0_;
+            onBuilt();
+            return result;
+          }
+
+          public Builder mergeFrom(com.google.protobuf.Message other) {
+            if (other instanceof org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task) {
+              return mergeFrom((org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task)other);
+            } else {
+              super.mergeFrom(other);
+              return this;
+            }
+          }
+
+          public Builder mergeFrom(org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task other) {
+            if (other == org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task.getDefaultInstance()) return this;
+            if (other.hasName()) {
+              bitField0_ |= 0x00000001;
+              name_ = other.name_;
+              onChanged();
+            }
+            if (other.hasId()) {
+              mergeId(other.getId());
+            }
+            if (resourcesBuilder_ == null) {
+              if (!other.resources_.isEmpty()) {
+                if (resources_.isEmpty()) {
+                  resources_ = other.resources_;
+                  bitField0_ = (bitField0_ & ~0x00000004);
+                } else {
+                  ensureResourcesIsMutable();
+                  resources_.addAll(other.resources_);
+                }
+                onChanged();
+              }
+            } else {
+              if (!other.resources_.isEmpty()) {
+                if (resourcesBuilder_.isEmpty()) {
+                  resourcesBuilder_.dispose();
+                  resourcesBuilder_ = null;
+                  resources_ = other.resources_;
+                  bitField0_ = (bitField0_ & ~0x00000004);
+                  resourcesBuilder_ = 
+                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                       getResourcesFieldBuilder() : null;
+                } else {
+                  resourcesBuilder_.addAllMessages(other.resources_);
+                }
+              }
+            }
+            if (other.hasLabels()) {
+              mergeLabels(other.getLabels());
+            }
+            this.mergeUnknownFields(other.getUnknownFields());
+            return this;
+          }
+
+          public final boolean isInitialized() {
+            if (!hasName()) {
+              
+              return false;
+            }
+            if (!hasId()) {
+              
+              return false;
+            }
+            if (!getId().isInitialized()) {
+              
+              return false;
+            }
+            for (int i = 0; i < getResourcesCount(); i++) {
+              if (!getResources(i).isInitialized()) {
+                
+                return false;
+              }
+            }
+            if (hasLabels()) {
+              if (!getLabels().isInitialized()) {
+                
+                return false;
+              }
+            }
+            return true;
+          }
+
+          public Builder mergeFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task parsedMessage = null;
+            try {
+              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              parsedMessage = (org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task) e.getUnfinishedMessage();
+              throw e;
+            } finally {
+              if (parsedMessage != null) {
+                mergeFrom(parsedMessage);
+              }
+            }
+            return this;
+          }
+          private int bitField0_;
+
+          // required string name = 1;
+          private java.lang.Object name_ = "";
+          /**
+           * <code>required string name = 1;</code>
+           */
+          public boolean hasName() {
+            return ((bitField0_ & 0x00000001) == 0x00000001);
+          }
+          /**
+           * <code>required string name = 1;</code>
+           */
+          public java.lang.String getName() {
+            java.lang.Object ref = name_;
+            if (!(ref instanceof java.lang.String)) {
+              java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                  .toStringUtf8();
+              name_ = s;
+              return s;
+            } else {
+              return (java.lang.String) ref;
+            }
+          }
+          /**
+           * <code>required string name = 1;</code>
+           */
+          public com.google.protobuf.ByteString
+              getNameBytes() {
+            java.lang.Object ref = name_;
+            if (ref instanceof String) {
+              com.google.protobuf.ByteString b = 
+                  com.google.protobuf.ByteString.copyFromUtf8(
+                      (java.lang.String) ref);
+              name_ = b;
+              return b;
+            } else {
+              return (com.google.protobuf.ByteString) ref;
+            }
+          }
+          /**
+           * <code>required string name = 1;</code>
+           */
+          public Builder setName(
+              java.lang.String value) {
+            if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+            name_ = value;
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>required string name = 1;</code>
+           */
+          public Builder clearName() {
+            bitField0_ = (bitField0_ & ~0x00000001);
+            name_ = getDefaultInstance().getName();
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>required string name = 1;</code>
+           */
+          public Builder setNameBytes(
+              com.google.protobuf.ByteString value) {
+            if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+            name_ = value;
+            onChanged();
+            return this;
+          }
+
+          // required .mesos.v1.TaskID id = 2;
+          private org.apache.mesos.v1.Protos.TaskID id_ = org.apache.mesos.v1.Protos.TaskID.getDefaultInstance();
+          private com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.TaskID, org.apache.mesos.v1.Protos.TaskID.Builder, org.apache.mesos.v1.Protos.TaskIDOrBuilder> idBuilder_;
+          /**
+           * <code>required .mesos.v1.TaskID id = 2;</code>
+           */
+          public boolean hasId() {
+            return ((bitField0_ & 0x00000002) == 0x00000002);
+          }
+          /**
+           * <code>required .mesos.v1.TaskID id = 2;</code>
+           */
+          public org.apache.mesos.v1.Protos.TaskID getId() {
+            if (idBuilder_ == null) {
+              return id_;
+            } else {
+              return idBuilder_.getMessage();
+            }
+          }
+          /**
+           * <code>required .mesos.v1.TaskID id = 2;</code>
+           */
+          public Builder setId(org.apache.mesos.v1.Protos.TaskID value) {
+            if (idBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              id_ = value;
+              onChanged();
+            } else {
+              idBuilder_.setMessage(value);
+            }
+            bitField0_ |= 0x00000002;
+            return this;
+          }
+          /**
+           * <code>required .mesos.v1.TaskID id = 2;</code>
+           */
+          public Builder setId(
+              org.apache.mesos.v1.Protos.TaskID.Builder builderForValue) {
+            if (idBuilder_ == null) {
+              id_ = builderForValue.build();
+              onChanged();
+            } else {
+              idBuilder_.setMessage(builderForValue.build());
+            }
+            bitField0_ |= 0x00000002;
+            return this;
+          }
+          /**
+           * <code>required .mesos.v1.TaskID id = 2;</code>
+           */
+          public Builder mergeId(org.apache.mesos.v1.Protos.TaskID value) {
+            if (idBuilder_ == null) {
+              if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                  id_ != org.apache.mesos.v1.Protos.TaskID.getDefaultInstance()) {
+                id_ =
+                  org.apache.mesos.v1.Protos.TaskID.newBuilder(id_).mergeFrom(value).buildPartial();
+              } else {
+                id_ = value;
+              }
+              onChanged();
+            } else {
+              idBuilder_.mergeFrom(value);
+            }
+            bitField0_ |= 0x00000002;
+            return this;
+          }
+          /**
+           * <code>required .mesos.v1.TaskID id = 2;</code>
+           */
+          public Builder clearId() {
+            if (idBuilder_ == null) {
+              id_ = org.apache.mesos.v1.Protos.TaskID.getDefaultInstance();
+              onChanged();
+            } else {
+              idBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000002);
+            return this;
+          }
+          /**
+           * <code>required .mesos.v1.TaskID id = 2;</code>
+           */
+          public org.apache.mesos.v1.Protos.TaskID.Builder getIdBuilder() {
+            bitField0_ |= 0x00000002;
+            onChanged();
+            return getIdFieldBuilder().getBuilder();
+          }
+          /**
+           * <code>required .mesos.v1.TaskID id = 2;</code>
+           */
+          public org.apache.mesos.v1.Protos.TaskIDOrBuilder getIdOrBuilder() {
+            if (idBuilder_ != null) {
+              return idBuilder_.getMessageOrBuilder();
+            } else {
+              return id_;
+            }
+          }
+          /**
+           * <code>required .mesos.v1.TaskID id = 2;</code>
+           */
+          private com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.TaskID, org.apache.mesos.v1.Protos.TaskID.Builder, org.apache.mesos.v1.Protos.TaskIDOrBuilder> 
+              getIdFieldBuilder() {
+            if (idBuilder_ == null) {
+              idBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                  org.apache.mesos.v1.Protos.TaskID, org.apache.mesos.v1.Protos.TaskID.Builder, org.apache.mesos.v1.Protos.TaskIDOrBuilder>(
+                      id_,
+                      getParentForChildren(),
+                      isClean());
+              id_ = null;
+            }
+            return idBuilder_;
+          }
+
+          // repeated .mesos.v1.Resource resources = 3;
+          private java.util.List<org.apache.mesos.v1.Protos.Resource> resources_ =
+            java.util.Collections.emptyList();
+          private void ensureResourcesIsMutable() {
+            if (!((bitField0_ & 0x00000004) == 0x00000004)) {
+              resources_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Resource>(resources_);
+              bitField0_ |= 0x00000004;
+             }
+          }
+
+          private com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder> resourcesBuilder_;
+
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 3;</code>
+           */
+          public java.util.List<org.apache.mesos.v1.Protos.Resource> getResourcesList() {
+            if (resourcesBuilder_ == null) {
+              return java.util.Collections.unmodifiableList(resources_);
+            } else {
+              return resourcesBuilder_.getMessageList();
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 3;</code>
+           */
+          public int getResourcesCount() {
+            if (resourcesBuilder_ == null) {
+              return resources_.size();
+            } else {
+              return resourcesBuilder_.getCount();
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 3;</code>
+           */
+          public org.apache.mesos.v1.Protos.Resource getResources(int index) {
+            if (resourcesBuilder_ == null) {
+              return resources_.get(index);
+            } else {
+              return resourcesBuilder_.getMessage(index);
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 3;</code>
+           */
+          public Builder setResources(
+              int index, org.apache.mesos.v1.Protos.Resource value) {
+            if (resourcesBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureResourcesIsMutable();
+              resources_.set(index, value);
+              onChanged();
+            } else {
+              resourcesBuilder_.setMessage(index, value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 3;</code>
+           */
+          public Builder setResources(
+              int index, org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+            if (resourcesBuilder_ == null) {
+              ensureResourcesIsMutable();
+              resources_.set(index, builderForValue.build());
+              onChanged();
+            } else {
+              resourcesBuilder_.setMessage(index, builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 3;</code>
+           */
+          public Builder addResources(org.apache.mesos.v1.Protos.Resource value) {
+            if (resourcesBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureResourcesIsMutable();
+              resources_.add(value);
+              onChanged();
+            } else {
+              resourcesBuilder_.addMessage(value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 3;</code>
+           */
+          public Builder addResources(
+              int index, org.apache.mesos.v1.Protos.Resource value) {
+            if (resourcesBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureResourcesIsMutable();
+              resources_.add(index, value);
+              onChanged();
+            } else {
+              resourcesBuilder_.addMessage(index, value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 3;</code>
+           */
+          public Builder addResources(
+              org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+            if (resourcesBuilder_ == null) {
+              ensureResourcesIsMutable();
+              resources_.add(builderForValue.build());
+              onChanged();
+            } else {
+              resourcesBuilder_.addMessage(builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 3;</code>
+           */
+          public Builder addResources(
+              int index, org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+            if (resourcesBuilder_ == null) {
+              ensureResourcesIsMutable();
+              resources_.add(index, builderForValue.build());
+              onChanged();
+            } else {
+              resourcesBuilder_.addMessage(index, builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 3;</code>
+           */
+          public Builder addAllResources(
+              java.lang.Iterable<? extends org.apache.mesos.v1.Protos.Resource> values) {
+            if (resourcesBuilder_ == null) {
+              ensureResourcesIsMutable();
+              super.addAll(values, resources_);
+              onChanged();
+            } else {
+              resourcesBuilder_.addAllMessages(values);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 3;</code>
+           */
+          public Builder clearResources() {
+            if (resourcesBuilder_ == null) {
+              resources_ = java.util.Collections.emptyList();
+              bitField0_ = (bitField0_ & ~0x00000004);
+              onChanged();
+            } else {
+              resourcesBuilder_.clear();
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 3;</code>
+           */
+          public Builder removeResources(int index) {
+            if (resourcesBuilder_ == null) {
+              ensureResourcesIsMutable();
+              resources_.remove(index);
+              onChanged();
+            } else {
+              resourcesBuilder_.remove(index);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 3;</code>
+           */
+          public org.apache.mesos.v1.Protos.Resource.Builder getResourcesBuilder(
+              int index) {
+            return getResourcesFieldBuilder().getBuilder(index);
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 3;</code>
+           */
+          public org.apache.mesos.v1.Protos.ResourceOrBuilder getResourcesOrBuilder(
+              int index) {
+            if (resourcesBuilder_ == null) {
+              return resources_.get(index);  } else {
+              return resourcesBuilder_.getMessageOrBuilder(index);
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 3;</code>
+           */
+          public java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+               getResourcesOrBuilderList() {
+            if (resourcesBuilder_ != null) {
+              return resourcesBuilder_.getMessageOrBuilderList();
+            } else {
+              return java.util.Collections.unmodifiableList(resources_);
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 3;</code>
+           */
+          public org.apache.mesos.v1.Protos.Resource.Builder addResourcesBuilder() {
+            return getResourcesFieldBuilder().addBuilder(
+                org.apache.mesos.v1.Protos.Resource.getDefaultInstance());
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 3;</code>
+           */
+          public org.apache.mesos.v1.Protos.Resource.Builder addResourcesBuilder(
+              int index) {
+            return getResourcesFieldBuilder().addBuilder(
+                index, org.apache.mesos.v1.Protos.Resource.getDefaultInstance());
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 3;</code>
+           */
+          public java.util.List<org.apache.mesos.v1.Protos.Resource.Builder> 
+               getResourcesBuilderList() {
+            return getResourcesFieldBuilder().getBuilderList();
+          }
+          private com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+              getResourcesFieldBuilder() {
+            if (resourcesBuilder_ == null) {
+              resourcesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                  org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder>(
+                      resources_,
+                      ((bitField0_ & 0x00000004) == 0x00000004),
+                      getParentForChildren(),
+                      isClean());
+              resources_ = null;
+            }
+            return resourcesBuilder_;
+          }
+
+          // optional .mesos.v1.Labels labels = 4;
+          private org.apache.mesos.v1.Protos.Labels labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+          private com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Labels, org.apache.mesos.v1.Protos.Labels.Builder, org.apache.mesos.v1.Protos.LabelsOrBuilder> labelsBuilder_;
+          /**
+           * <code>optional .mesos.v1.Labels labels = 4;</code>
+           */
+          public boolean hasLabels() {
+            return ((bitField0_ & 0x00000008) == 0x00000008);
+          }
+          /**
+           * <code>optional .mesos.v1.Labels labels = 4;</code>
+           */
+          public org.apache.mesos.v1.Protos.Labels getLabels() {
+            if (labelsBuilder_ == null) {
+              return labels_;
+            } else {
+              return labelsBuilder_.getMessage();
+            }
+          }
+          /**
+           * <code>optional .mesos.v1.Labels labels = 4;</code>
+           */
+          public Builder setLabels(org.apache.mesos.v1.Protos.Labels value) {
+            if (labelsBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              labels_ = value;
+              onChanged();
+            } else {
+              labelsBuilder_.setMessage(value);
+            }
+            bitField0_ |= 0x00000008;
+            return this;
+          }
+          /**
+           * <code>optional .mesos.v1.Labels labels = 4;</code>
+           */
+          public Builder setLabels(
+              org.apache.mesos.v1.Protos.Labels.Builder builderForValue) {
+            if (labelsBuilder_ == null) {
+              labels_ = builderForValue.build();
+              onChanged();
+            } else {
+              labelsBuilder_.setMessage(builderForValue.build());
+            }
+            bitField0_ |= 0x00000008;
+            return this;
+          }
+          /**
+           * <code>optional .mesos.v1.Labels labels = 4;</code>
+           */
+          public Builder mergeLabels(org.apache.mesos.v1.Protos.Labels value) {
+            if (labelsBuilder_ == null) {
+              if (((bitField0_ & 0x00000008) == 0x00000008) &&
+                  labels_ != org.apache.mesos.v1.Protos.Labels.getDefaultInstance()) {
+                labels_ =
+                  org.apache.mesos.v1.Protos.Labels.newBuilder(labels_).mergeFrom(value).buildPartial();
+              } else {
+                labels_ = value;
+              }
+              onChanged();
+            } else {
+              labelsBuilder_.mergeFrom(value);
+            }
+            bitField0_ |= 0x00000008;
+            return this;
+          }
+          /**
+           * <code>optional .mesos.v1.Labels labels = 4;</code>
+           */
+          public Builder clearLabels() {
+            if (labelsBuilder_ == null) {
+              labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+              onChanged();
+            } else {
+              labelsBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000008);
+            return this;
+          }
+          /**
+           * <code>optional .mesos.v1.Labels labels = 4;</code>
+           */
+          public org.apache.mesos.v1.Protos.Labels.Builder getLabelsBuilder() {
+            bitField0_ |= 0x00000008;
+            onChanged();
+            return getLabelsFieldBuilder().getBuilder();
+          }
+          /**
+           * <code>optional .mesos.v1.Labels labels = 4;</code>
+           */
+          public org.apache.mesos.v1.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+            if (labelsBuilder_ != null) {
+              return labelsBuilder_.getMessageOrBuilder();
+            } else {
+              return labels_;
+            }
+          }
+          /**
+           * <code>optional .mesos.v1.Labels labels = 4;</code>
+           */
+          private com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Labels, org.apache.mesos.v1.Protos.Labels.Builder, org.apache.mesos.v1.Protos.LabelsOrBuilder> 
+              getLabelsFieldBuilder() {
+            if (labelsBuilder_ == null) {
+              labelsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                  org.apache.mesos.v1.Protos.Labels, org.apache.mesos.v1.Protos.Labels.Builder, org.apache.mesos.v1.Protos.LabelsOrBuilder>(
+                      labels_,
+                      getParentForChildren(),
+                      isClean());
+              labels_ = null;
+            }
+            return labelsBuilder_;
+          }
+
+          // @@protoc_insertion_point(builder_scope:mesos.v1.ResourceUsage.Executor.Task)
+        }
+
+        static {
+          defaultInstance = new Task(true);
+          defaultInstance.initFields();
+        }
+
+        // @@protoc_insertion_point(class_scope:mesos.v1.ResourceUsage.Executor.Task)
+      }
+
+      private int bitField0_;
+      // required .mesos.v1.ExecutorInfo executor_info = 1;
+      public static final int EXECUTOR_INFO_FIELD_NUMBER = 1;
+      private org.apache.mesos.v1.Protos.ExecutorInfo executorInfo_;
+      /**
+       * <code>required .mesos.v1.ExecutorInfo executor_info = 1;</code>
+       */
+      public boolean hasExecutorInfo() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.v1.ExecutorInfo executor_info = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.ExecutorInfo getExecutorInfo() {
+        return executorInfo_;
+      }
+      /**
+       * <code>required .mesos.v1.ExecutorInfo executor_info = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.ExecutorInfoOrBuilder getExecutorInfoOrBuilder() {
+        return executorInfo_;
+      }
+
+      // repeated .mesos.v1.Resource allocated = 2;
+      public static final int ALLOCATED_FIELD_NUMBER = 2;
+      private java.util.List<org.apache.mesos.v1.Protos.Resource> allocated_;
+      /**
+       * <code>repeated .mesos.v1.Resource allocated = 2;</code>
+       *
+       * <pre>
+       * This includes resources used by the executor itself
+       * as well as its active tasks.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Resource> getAllocatedList() {
+        return allocated_;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource allocated = 2;</code>
+       *
+       * <pre>
+       * This includes resources used by the executor itself
+       * as well as its active tasks.
+       * </pre>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+          getAllocatedOrBuilderList() {
+        return allocated_;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource allocated = 2;</code>
+       *
+       * <pre>
+       * This includes resources used by the executor itself
+       * as well as its active tasks.
+       * </pre>
+       */
+      public int getAllocatedCount() {
+        return allocated_.size();
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource allocated = 2;</code>
+       *
+       * <pre>
+       * This includes resources used by the executor itself
+       * as well as its active tasks.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Resource getAllocated(int index) {
+        return allocated_.get(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource allocated = 2;</code>
+       *
+       * <pre>
+       * This includes resources used by the executor itself
+       * as well as its active tasks.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.ResourceOrBuilder getAllocatedOrBuilder(
+          int index) {
+        return allocated_.get(index);
+      }
+
+      // optional .mesos.v1.ResourceStatistics statistics = 3;
+      public static final int STATISTICS_FIELD_NUMBER = 3;
+      private org.apache.mesos.v1.Protos.ResourceStatistics statistics_;
+      /**
+       * <code>optional .mesos.v1.ResourceStatistics statistics = 3;</code>
+       *
+       * <pre>
+       * Current resource usage. If absent, the containerizer
+       * cannot provide resource usage.
+       * </pre>
+       */
+      public boolean hasStatistics() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.v1.ResourceStatistics statistics = 3;</code>
+       *
+       * <pre>
+       * Current resource usage. If absent, the containerizer
+       * cannot provide resource usage.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.ResourceStatistics getStatistics() {
+        return statistics_;
+      }
+      /**
+       * <code>optional .mesos.v1.ResourceStatistics statistics = 3;</code>
+       *
+       * <pre>
+       * Current resource usage. If absent, the containerizer
+       * cannot provide resource usage.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.ResourceStatisticsOrBuilder getStatisticsOrBuilder() {
+        return statistics_;
+      }
+
+      // required .mesos.v1.ContainerID container_id = 4;
+      public static final int CONTAINER_ID_FIELD_NUMBER = 4;
+      private org.apache.mesos.v1.Protos.ContainerID containerId_;
+      /**
+       * <code>required .mesos.v1.ContainerID container_id = 4;</code>
+       *
+       * <pre>
+       * The container id for the executor specified in the executor_info field.
+       * </pre>
+       */
+      public boolean hasContainerId() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>required .mesos.v1.ContainerID container_id = 4;</code>
+       *
+       * <pre>
+       * The container id for the executor specified in the executor_info field.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.ContainerID getContainerId() {
+        return containerId_;
+      }
+      /**
+       * <code>required .mesos.v1.ContainerID container_id = 4;</code>
+       *
+       * <pre>
+       * The container id for the executor specified in the executor_info field.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.ContainerIDOrBuilder getContainerIdOrBuilder() {
+        return containerId_;
+      }
+
+      // repeated .mesos.v1.ResourceUsage.Executor.Task tasks = 5;
+      public static final int TASKS_FIELD_NUMBER = 5;
+      private java.util.List<org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task> tasks_;
+      /**
+       * <code>repeated .mesos.v1.ResourceUsage.Executor.Task tasks = 5;</code>
+       *
+       * <pre>
+       * Non-terminal tasks.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task> getTasksList() {
+        return tasks_;
+      }
+      /**
+       * <code>repeated .mesos.v1.ResourceUsage.Executor.Task tasks = 5;</code>
+       *
+       * <pre>
+       * Non-terminal tasks.
+       * </pre>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.ResourceUsage.Executor.TaskOrBuilder> 
+          getTasksOrBuilderList() {
+        return tasks_;
+      }
+      /**
+       * <code>repeated .mesos.v1.ResourceUsage.Executor.Task tasks = 5;</code>
+       *
+       * <pre>
+       * Non-terminal tasks.
+       * </pre>
+       */
+      public int getTasksCount() {
+        return tasks_.size();
+      }
+      /**
+       * <code>repeated .mesos.v1.ResourceUsage.Executor.Task tasks = 5;</code>
+       *
+       * <pre>
+       * Non-terminal tasks.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task getTasks(int index) {
+        return tasks_.get(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.ResourceUsage.Executor.Task tasks = 5;</code>
+       *
+       * <pre>
+       * Non-terminal tasks.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.ResourceUsage.Executor.TaskOrBuilder getTasksOrBuilder(
+          int index) {
+        return tasks_.get(index);
+      }
+
+      private void initFields() {
+        executorInfo_ = org.apache.mesos.v1.Protos.ExecutorInfo.getDefaultInstance();
+        allocated_ = java.util.Collections.emptyList();
+        statistics_ = org.apache.mesos.v1.Protos.ResourceStatistics.getDefaultInstance();
+        containerId_ = org.apache.mesos.v1.Protos.ContainerID.getDefaultInstance();
+        tasks_ = java.util.Collections.emptyList();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasExecutorInfo()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!hasContainerId()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getExecutorInfo().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        for (int i = 0; i < getAllocatedCount(); i++) {
+          if (!getAllocated(i).isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        if (hasStatistics()) {
+          if (!getStatistics().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        if (!getContainerId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        for (int i = 0; i < getTasksCount(); i++) {
+          if (!getTasks(i).isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, executorInfo_);
+        }
+        for (int i = 0; i < allocated_.size(); i++) {
+          output.writeMessage(2, allocated_.get(i));
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeMessage(3, statistics_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeMessage(4, containerId_);
+        }
+        for (int i = 0; i < tasks_.size(); i++) {
+          output.writeMessage(5, tasks_.get(i));
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, executorInfo_);
+        }
+        for (int i = 0; i < allocated_.size(); i++) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(2, allocated_.get(i));
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(3, statistics_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(4, containerId_);
+        }
+        for (int i = 0; i < tasks_.size(); i++) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(5, tasks_.get(i));
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.Protos.ResourceUsage.Executor parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.ResourceUsage.Executor parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.ResourceUsage.Executor parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.ResourceUsage.Executor parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.ResourceUsage.Executor parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.ResourceUsage.Executor parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.ResourceUsage.Executor parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.ResourceUsage.Executor parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.ResourceUsage.Executor parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.ResourceUsage.Executor parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.Protos.ResourceUsage.Executor prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.ResourceUsage.Executor}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.Protos.ResourceUsage.ExecutorOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ResourceUsage_Executor_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ResourceUsage_Executor_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.ResourceUsage.Executor.class, org.apache.mesos.v1.Protos.ResourceUsage.Executor.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.Protos.ResourceUsage.Executor.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getExecutorInfoFieldBuilder();
+            getAllocatedFieldBuilder();
+            getStatisticsFieldBuilder();
+            getContainerIdFieldBuilder();
+            getTasksFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (executorInfoBuilder_ == null) {
+            executorInfo_ = org.apache.mesos.v1.Protos.ExecutorInfo.getDefaultInstance();
+          } else {
+            executorInfoBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          if (allocatedBuilder_ == null) {
+            allocated_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000002);
+          } else {
+            allocatedBuilder_.clear();
+          }
+          if (statisticsBuilder_ == null) {
+            statistics_ = org.apache.mesos.v1.Protos.ResourceStatistics.getDefaultInstance();
+          } else {
+            statisticsBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
+          if (containerIdBuilder_ == null) {
+            containerId_ = org.apache.mesos.v1.Protos.ContainerID.getDefaultInstance();
+          } else {
+            containerIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000008);
+          if (tasksBuilder_ == null) {
+            tasks_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000010);
+          } else {
+            tasksBuilder_.clear();
+          }
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ResourceUsage_Executor_descriptor;
+        }
+
+        public org.apache.mesos.v1.Protos.ResourceUsage.Executor getDefaultInstanceForType() {
+          return org.apache.mesos.v1.Protos.ResourceUsage.Executor.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.Protos.ResourceUsage.Executor build() {
+          org.apache.mesos.v1.Protos.ResourceUsage.Executor result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.Protos.ResourceUsage.Executor buildPartial() {
+          org.apache.mesos.v1.Protos.ResourceUsage.Executor result = new org.apache.mesos.v1.Protos.ResourceUsage.Executor(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (executorInfoBuilder_ == null) {
+            result.executorInfo_ = executorInfo_;
+          } else {
+            result.executorInfo_ = executorInfoBuilder_.build();
+          }
+          if (allocatedBuilder_ == null) {
+            if (((bitField0_ & 0x00000002) == 0x00000002)) {
+              allocated_ = java.util.Collections.unmodifiableList(allocated_);
+              bitField0_ = (bitField0_ & ~0x00000002);
+            }
+            result.allocated_ = allocated_;
+          } else {
+            result.allocated_ = allocatedBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          if (statisticsBuilder_ == null) {
+            result.statistics_ = statistics_;
+          } else {
+            result.statistics_ = statisticsBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          if (containerIdBuilder_ == null) {
+            result.containerId_ = containerId_;
+          } else {
+            result.containerId_ = containerIdBuilder_.build();
+          }
+          if (tasksBuilder_ == null) {
+            if (((bitField0_ & 0x00000010) == 0x00000010)) {
+              tasks_ = java.util.Collections.unmodifiableList(tasks_);
+              bitField0_ = (bitField0_ & ~0x00000010);
+            }
+            result.tasks_ = tasks_;
+          } else {
+            result.tasks_ = tasksBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.Protos.ResourceUsage.Executor) {
+            return mergeFrom((org.apache.mesos.v1.Protos.ResourceUsage.Executor)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.Protos.ResourceUsage.Executor other) {
+          if (other == org.apache.mesos.v1.Protos.ResourceUsage.Executor.getDefaultInstance()) return this;
+          if (other.hasExecutorInfo()) {
+            mergeExecutorInfo(other.getExecutorInfo());
+          }
+          if (allocatedBuilder_ == null) {
+            if (!other.allocated_.isEmpty()) {
+              if (allocated_.isEmpty()) {
+                allocated_ = other.allocated_;
+                bitField0_ = (bitField0_ & ~0x00000002);
+              } else {
+                ensureAllocatedIsMutable();
+                allocated_.addAll(other.allocated_);
+              }
+              onChanged();
+            }
+          } else {
+            if (!other.allocated_.isEmpty()) {
+              if (allocatedBuilder_.isEmpty()) {
+                allocatedBuilder_.dispose();
+                allocatedBuilder_ = null;
+                allocated_ = other.allocated_;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                allocatedBuilder_ = 
+                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                     getAllocatedFieldBuilder() : null;
+              } else {
+                allocatedBuilder_.addAllMessages(other.allocated_);
+              }
+            }
+          }
+          if (other.hasStatistics()) {
+            mergeStatistics(other.getStatistics());
+          }
+          if (other.hasContainerId()) {
+            mergeContainerId(other.getContainerId());
+          }
+          if (tasksBuilder_ == null) {
+            if (!other.tasks_.isEmpty()) {
+              if (tasks_.isEmpty()) {
+                tasks_ = other.tasks_;
+                bitField0_ = (bitField0_ & ~0x00000010);
+              } else {
+                ensureTasksIsMutable();
+                tasks_.addAll(other.tasks_);
+              }
+              onChanged();
+            }
+          } else {
+            if (!other.tasks_.isEmpty()) {
+              if (tasksBuilder_.isEmpty()) {
+                tasksBuilder_.dispose();
+                tasksBuilder_ = null;
+                tasks_ = other.tasks_;
+                bitField0_ = (bitField0_ & ~0x00000010);
+                tasksBuilder_ = 
+                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                     getTasksFieldBuilder() : null;
+              } else {
+                tasksBuilder_.addAllMessages(other.tasks_);
+              }
+            }
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasExecutorInfo()) {
+            
+            return false;
+          }
+          if (!hasContainerId()) {
+            
+            return false;
+          }
+          if (!getExecutorInfo().isInitialized()) {
+            
+            return false;
+          }
+          for (int i = 0; i < getAllocatedCount(); i++) {
+            if (!getAllocated(i).isInitialized()) {
+              
+              return false;
+            }
+          }
+          if (hasStatistics()) {
+            if (!getStatistics().isInitialized()) {
+              
+              return false;
+            }
+          }
+          if (!getContainerId().isInitialized()) {
+            
+            return false;
+          }
+          for (int i = 0; i < getTasksCount(); i++) {
+            if (!getTasks(i).isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.Protos.ResourceUsage.Executor parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.Protos.ResourceUsage.Executor) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required .mesos.v1.ExecutorInfo executor_info = 1;
+        private org.apache.mesos.v1.Protos.ExecutorInfo executorInfo_ = org.apache.mesos.v1.Protos.ExecutorInfo.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.ExecutorInfo, org.apache.mesos.v1.Protos.ExecutorInfo.Builder, org.apache.mesos.v1.Protos.ExecutorInfoOrBuilder> executorInfoBuilder_;
+        /**
+         * <code>required .mesos.v1.ExecutorInfo executor_info = 1;</code>
+         */
+        public boolean hasExecutorInfo() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.v1.ExecutorInfo executor_info = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.ExecutorInfo getExecutorInfo() {
+          if (executorInfoBuilder_ == null) {
+            return executorInfo_;
+          } else {
+            return executorInfoBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.v1.ExecutorInfo executor_info = 1;</code>
+         */
+        public Builder setExecutorInfo(org.apache.mesos.v1.Protos.ExecutorInfo value) {
+          if (executorInfoBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            executorInfo_ = value;
+            onChanged();
+          } else {
+            executorInfoBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.ExecutorInfo executor_info = 1;</code>
+         */
+        public Builder setExecutorInfo(
+            org.apache.mesos.v1.Protos.ExecutorInfo.Builder builderForValue) {
+          if (executorInfoBuilder_ == null) {
+            executorInfo_ = builderForValue.build();
+            onChanged();
+          } else {
+            executorInfoBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.ExecutorInfo executor_info = 1;</code>
+         */
+        public Builder mergeExecutorInfo(org.apache.mesos.v1.Protos.ExecutorInfo value) {
+          if (executorInfoBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                executorInfo_ != org.apache.mesos.v1.Protos.ExecutorInfo.getDefaultInstance()) {
+              executorInfo_ =
+                org.apache.mesos.v1.Protos.ExecutorInfo.newBuilder(executorInfo_).mergeFrom(value).buildPartial();
+            } else {
+              executorInfo_ = value;
+            }
+            onChanged();
+          } else {
+            executorInfoBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.ExecutorInfo executor_info = 1;</code>
+         */
+        public Builder clearExecutorInfo() {
+          if (executorInfoBuilder_ == null) {
+            executorInfo_ = org.apache.mesos.v1.Protos.ExecutorInfo.getDefaultInstance();
+            onChanged();
+          } else {
+            executorInfoBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.ExecutorInfo executor_info = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.ExecutorInfo.Builder getExecutorInfoBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getExecutorInfoFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.v1.ExecutorInfo executor_info = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.ExecutorInfoOrBuilder getExecutorInfoOrBuilder() {
+          if (executorInfoBuilder_ != null) {
+            return executorInfoBuilder_.getMessageOrBuilder();
+          } else {
+            return executorInfo_;
+          }
+        }
+        /**
+         * <code>required .mesos.v1.ExecutorInfo executor_info = 1;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.ExecutorInfo, org.apache.mesos.v1.Protos.ExecutorInfo.Builder, org.apache.mesos.v1.Protos.ExecutorInfoOrBuilder> 
+            getExecutorInfoFieldBuilder() {
+          if (executorInfoBuilder_ == null) {
+            executorInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.ExecutorInfo, org.apache.mesos.v1.Protos.ExecutorInfo.Builder, org.apache.mesos.v1.Protos.ExecutorInfoOrBuilder>(
+                    executorInfo_,
+                    getParentForChildren(),
+                    isClean());
+            executorInfo_ = null;
+          }
+          return executorInfoBuilder_;
+        }
+
+        // repeated .mesos.v1.Resource allocated = 2;
+        private java.util.List<org.apache.mesos.v1.Protos.Resource> allocated_ =
+          java.util.Collections.emptyList();
+        private void ensureAllocatedIsMutable() {
+          if (!((bitField0_ & 0x00000002) == 0x00000002)) {
+            allocated_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Resource>(allocated_);
+            bitField0_ |= 0x00000002;
+           }
+        }
+
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder> allocatedBuilder_;
+
+        /**
+         * <code>repeated .mesos.v1.Resource allocated = 2;</code>
+         *
+         * <pre>
+         * This includes resources used by the executor itself
+         * as well as its active tasks.
+         * </pre>
+         */
+        public java.util.List<org.apache.mesos.v1.Protos.Resource> getAllocatedList() {
+          if (allocatedBuilder_ == null) {
+            return java.util.Collections.unmodifiableList(allocated_);
+          } else {
+            return allocatedBuilder_.getMessageList();
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.Resource allocated = 2;</code>
+         *
+         * <pre>
+         * This includes resources used by the executor itself
+         * as well as its active tasks.
+         * </pre>
+         */
+        public int getAllocatedCount() {
+          if (allocatedBuilder_ == null) {
+            return allocated_.size();
+          } else {
+            return allocatedBuilder_.getCount();
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.Resource allocated = 2;</code>
+         *
+         * <pre>
+         * This includes resources used by the executor itself
+         * as well as its active tasks.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.Resource getAllocated(int index) {
+          if (allocatedBuilder_ == null) {
+            return allocated_.get(index);
+          } else {
+            return allocatedBuilder_.getMessage(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.Resource allocated = 2;</code>
+         *
+         * <pre>
+         * This includes resources used by the executor itself
+         * as well as its active tasks.
+         * </pre>
+         */
+        public Builder setAllocated(
+            int index, org.apache.mesos.v1.Protos.Resource value) {
+          if (allocatedBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureAllocatedIsMutable();
+            allocated_.set(index, value);
+            onChanged();
+          } else {
+            allocatedBuilder_.setMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Resource allocated = 2;</code>
+         *
+         * <pre>
+         * This includes resources used by the executor itself
+         * as well as its active tasks.
+         * </pre>
+         */
+        public Builder setAllocated(
+            int index, org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+          if (allocatedBuilder_ == null) {
+            ensureAllocatedIsMutable();
+            allocated_.set(index, builderForValue.build());
+            onChanged();
+          } else {
+            allocatedBuilder_.setMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Resource allocated = 2;</code>
+         *
+         * <pre>
+         * This includes resources used by the executor itself
+         * as well as its active tasks.
+         * </pre>
+         */
+        public Builder addAllocated(org.apache.mesos.v1.Protos.Resource value) {
+          if (allocatedBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureAllocatedIsMutable();
+            allocated_.add(value);
+            onChanged();
+          } else {
+            allocatedBuilder_.addMessage(value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Resource allocated = 2;</code>
+         *
+         * <pre>
+         * This includes resources used by the executor itself
+         * as well as its active tasks.
+         * </pre>
+         */
+        public Builder addAllocated(
+            int index, org.apache.mesos.v1.Protos.Resource value) {
+          if (allocatedBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureAllocatedIsMutable();
+            allocated_.add(index, value);
+            onChanged();
+          } else {
+            allocatedBuilder_.addMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Resource allocated = 2;</code>
+         *
+         * <pre>
+         * This includes resources used by the executor itself
+         * as well as its active tasks.
+         * </pre>
+         */
+        public Builder addAllocated(
+            org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+          if (allocatedBuilder_ == null) {
+            ensureAllocatedIsMutable();
+            allocated_.add(builderForValue.build());
+            onChanged();
+          } else {
+            allocatedBuilder_.addMessage(builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Resource allocated = 2;</code>
+         *
+         * <pre>
+         * This includes resources used by the executor itself
+         * as well as its active tasks.
+         * </pre>
+         */
+        public Builder addAllocated(
+            int index, org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+          if (allocatedBuilder_ == null) {
+            ensureAllocatedIsMutable();
+            allocated_.add(index, builderForValue.build());
+            onChanged();
+          } else {
+            allocatedBuilder_.addMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Resource allocated = 2;</code>
+         *
+         * <pre>
+         * This includes resources used by the executor itself
+         * as well as its active tasks.
+         * </pre>
+         */
+        public Builder addAllAllocated(
+            java.lang.Iterable<? extends org.apache.mesos.v1.Protos.Resource> values) {
+          if (allocatedBuilder_ == null) {
+            ensureAllocatedIsMutable();
+            super.addAll(values, allocated_);
+            onChanged();
+          } else {
+            allocatedBuilder_.addAllMessages(values);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Resource allocated = 2;</code>
+         *
+         * <pre>
+         * This includes resources used by the executor itself
+         * as well as its active tasks.
+         * </pre>
+         */
+        public Builder clearAllocated() {
+          if (allocatedBuilder_ == null) {
+            allocated_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000002);
+            onChanged();
+          } else {
+            allocatedBuilder_.clear();
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Resource allocated = 2;</code>
+         *
+         * <pre>
+         * This includes resources used by the executor itself
+         * as well as its active tasks.
+         * </pre>
+         */
+        public Builder removeAllocated(int index) {
+          if (allocatedBuilder_ == null) {
+            ensureAllocatedIsMutable();
+            allocated_.remove(index);
+            onChanged();
+          } else {
+            allocatedBuilder_.remove(index);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Resource allocated = 2;</code>
+         *
+         * <pre>
+         * This includes resources used by the executor itself
+         * as well as its active tasks.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.Resource.Builder getAllocatedBuilder(
+            int index) {
+          return getAllocatedFieldBuilder().getBuilder(index);
+        }
+        /**
+         * <code>repeated .mesos.v1.Resource allocated = 2;</code>
+         *
+         * <pre>
+         * This includes resources used by the executor itself
+         * as well as its active tasks.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.ResourceOrBuilder getAllocatedOrBuilder(
+            int index) {
+          if (allocatedBuilder_ == null) {
+            return allocated_.get(index);  } else {
+            return allocatedBuilder_.getMessageOrBuilder(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.Resource allocated = 2;</code>
+         *
+         * <pre>
+         * This includes resources used by the executor itself
+         * as well as its active tasks.
+         * </pre>
+         */
+        public java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+             getAllocatedOrBuilderList() {
+          if (allocatedBuilder_ != null) {
+            return allocatedBuilder_.getMessageOrBuilderList();
+          } else {
+            return java.util.Collections.unmodifiableList(allocated_);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.Resource allocated = 2;</code>
+         *
+         * <pre>
+         * This includes resources used by the executor itself
+         * as well as its active tasks.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.Resource.Builder addAllocatedBuilder() {
+          return getAllocatedFieldBuilder().addBuilder(
+              org.apache.mesos.v1.Protos.Resource.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.v1.Resource allocated = 2;</code>
+         *
+         * <pre>
+         * This includes resources used by the executor itself
+         * as well as its active tasks.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.Resource.Builder addAllocatedBuilder(
+            int index) {
+          return getAllocatedFieldBuilder().addBuilder(
+              index, org.apache.mesos.v1.Protos.Resource.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.v1.Resource allocated = 2;</code>
+         *
+         * <pre>
+         * This includes resources used by the executor itself
+         * as well as its active tasks.
+         * </pre>
+         */
+        public java.util.List<org.apache.mesos.v1.Protos.Resource.Builder> 
+             getAllocatedBuilderList() {
+          return getAllocatedFieldBuilder().getBuilderList();
+        }
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+            getAllocatedFieldBuilder() {
+          if (allocatedBuilder_ == null) {
+            allocatedBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder>(
+                    allocated_,
+                    ((bitField0_ & 0x00000002) == 0x00000002),
+                    getParentForChildren(),
+                    isClean());
+            allocated_ = null;
+          }
+          return allocatedBuilder_;
+        }
+
+        // optional .mesos.v1.ResourceStatistics statistics = 3;
+        private org.apache.mesos.v1.Protos.ResourceStatistics statistics_ = org.apache.mesos.v1.Protos.ResourceStatistics.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.ResourceStatistics, org.apache.mesos.v1.Protos.ResourceStatistics.Builder, org.apache.mesos.v1.Protos.ResourceStatisticsOrBuilder> statisticsBuilder_;
+        /**
+         * <code>optional .mesos.v1.ResourceStatistics statistics = 3;</code>
+         *
+         * <pre>
+         * Current resource usage. If absent, the containerizer
+         * cannot provide resource usage.
+         * </pre>
+         */
+        public boolean hasStatistics() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional .mesos.v1.ResourceStatistics statistics = 3;</code>
+         *
+         * <pre>
+         * Current resource usage. If absent, the containerizer
+         * cannot provide resource usage.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.ResourceStatistics getStatistics() {
+          if (statisticsBuilder_ == null) {
+            return statistics_;
+          } else {
+            return statisticsBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.ResourceStatistics statistics = 3;</code>
+         *
+         * <pre>
+         * Current resource usage. If absent, the containerizer
+         * cannot provide resource usage.
+         * </pre>
+         */
+        public Builder setStatistics(org.apache.mesos.v1.Protos.ResourceStatistics value) {
+          if (statisticsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            statistics_ = value;
+            onChanged();
+          } else {
+            statisticsBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.ResourceStatistics statistics = 3;</code>
+         *
+         * <pre>
+         * Current resource usage. If absent, the containerizer
+         * cannot provide resource usage.
+         * </pre>
+         */
+        public Builder setStatistics(
+            org.apache.mesos.v1.Protos.ResourceStatistics.Builder builderForValue) {
+          if (statisticsBuilder_ == null) {
+            statistics_ = builderForValue.build();
+            onChanged();
+          } else {
+            statisticsBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.ResourceStatistics statistics = 3;</code>
+         *
+         * <pre>
+         * Current resource usage. If absent, the containerizer
+         * cannot provide resource usage.
+         * </pre>
+         */
+        public Builder mergeStatistics(org.apache.mesos.v1.Protos.ResourceStatistics value) {
+          if (statisticsBuilder_ == null) {
+            if (((bitField0_ & 0x00000004) == 0x00000004) &&
+                statistics_ != org.apache.mesos.v1.Protos.ResourceStatistics.getDefaultInstance()) {
+              statistics_ =
+                org.apache.mesos.v1.Protos.ResourceStatistics.newBuilder(statistics_).mergeFrom(value).buildPartial();
+            } else {
+              statistics_ = value;
+            }
+            onChanged();
+          } else {
+            statisticsBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.ResourceStatistics statistics = 3;</code>
+         *
+         * <pre>
+         * Current resource usage. If absent, the containerizer
+         * cannot provide resource usage.
+         * </pre>
+         */
+        public Builder clearStatistics() {
+          if (statisticsBuilder_ == null) {
+            statistics_ = org.apache.mesos.v1.Protos.ResourceStatistics.getDefaultInstance();
+            onChanged();
+          } else {
+            statisticsBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.ResourceStatistics statistics = 3;</code>
+         *
+         * <pre>
+         * Current resource usage. If absent, the containerizer
+         * cannot provide resource usage.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.ResourceStatistics.Builder getStatisticsBuilder() {
+          bitField0_ |= 0x00000004;
+          onChanged();
+          return getStatisticsFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.v1.ResourceStatistics statistics = 3;</code>
+         *
+         * <pre>
+         * Current resource usage. If absent, the containerizer
+         * cannot provide resource usage.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.ResourceStatisticsOrBuilder getStatisticsOrBuilder() {
+          if (statisticsBuilder_ != null) {
+            return statisticsBuilder_.getMessageOrBuilder();
+          } else {
+            return statistics_;
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.ResourceStatistics statistics = 3;</code>
+         *
+         * <pre>
+         * Current resource usage. If absent, the containerizer
+         * cannot provide resource usage.
+         * </pre>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.ResourceStatistics, org.apache.mesos.v1.Protos.ResourceStatistics.Builder, org.apache.mesos.v1.Protos.ResourceStatisticsOrBuilder> 
+            getStatisticsFieldBuilder() {
+          if (statisticsBuilder_ == null) {
+            statisticsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.ResourceStatistics, org.apache.mesos.v1.Protos.ResourceStatistics.Builder, org.apache.mesos.v1.Protos.ResourceStatisticsOrBuilder>(
+                    statistics_,
+                    getParentForChildren(),
+                    isClean());
+            statistics_ = null;
+          }
+          return statisticsBuilder_;
+        }
+
+        // required .mesos.v1.ContainerID container_id = 4;
+        private org.apache.mesos.v1.Protos.ContainerID containerId_ = org.apache.mesos.v1.Protos.ContainerID.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.ContainerID, org.apache.mesos.v1.Protos.ContainerID.Builder, org.apache.mesos.v1.Protos.ContainerIDOrBuilder> containerIdBuilder_;
+        /**
+         * <code>required .mesos.v1.ContainerID container_id = 4;</code>
+         *
+         * <pre>
+         * The container id for the executor specified in the executor_info field.
+         * </pre>
+         */
+        public boolean hasContainerId() {
+          return ((bitField0_ & 0x00000008) == 0x00000008);
+        }
+        /**
+         * <code>required .mesos.v1.ContainerID container_id = 4;</code>
+         *
+         * <pre>
+         * The container id for the executor specified in the executor_info field.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.ContainerID getContainerId() {
+          if (containerIdBuilder_ == null) {
+            return containerId_;
+          } else {
+            return containerIdBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.v1.ContainerID container_id = 4;</code>
+         *
+         * <pre>
+         * The container id for the executor specified in the executor_info field.
+         * </pre>
+         */
+        public Builder setContainerId(org.apache.mesos.v1.Protos.ContainerID value) {
+          if (containerIdBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            containerId_ = value;
+            onChanged();
+          } else {
+            containerIdBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000008;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.ContainerID container_id = 4;</code>
+         *
+         * <pre>
+         * The container id for the executor specified in the executor_info field.
+         * </pre>
+         */
+        public Builder setContainerId(
+            org.apache.mesos.v1.Protos.ContainerID.Builder builderForValue) {
+          if (containerIdBuilder_ == null) {
+            containerId_ = builderForValue.build();
+            onChanged();
+          } else {
+            containerIdBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000008;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.ContainerID container_id = 4;</code>
+         *
+         * <pre>
+         * The container id for the executor specified in the executor_info field.
+         * </pre>
+         */
+        public Builder mergeContainerId(org.apache.mesos.v1.Protos.ContainerID value) {
+          if (containerIdBuilder_ == null) {
+            if (((bitField0_ & 0x00000008) == 0x00000008) &&
+                containerId_ != org.apache.mesos.v1.Protos.ContainerID.getDefaultInstance()) {
+              containerId_ =
+                org.apache.mesos.v1.Protos.ContainerID.newBuilder(containerId_).mergeFrom(value).buildPartial();
+            } else {
+              containerId_ = value;
+            }
+            onChanged();
+          } else {
+            containerIdBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000008;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.ContainerID container_id = 4;</code>
+         *
+         * <pre>
+         * The container id for the executor specified in the executor_info field.
+         * </pre>
+         */
+        public Builder clearContainerId() {
+          if (containerIdBuilder_ == null) {
+            containerId_ = org.apache.mesos.v1.Protos.ContainerID.getDefaultInstance();
+            onChanged();
+          } else {
+            containerIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000008);
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.ContainerID container_id = 4;</code>
+         *
+         * <pre>
+         * The container id for the executor specified in the executor_info field.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.ContainerID.Builder getContainerIdBuilder() {
+          bitField0_ |= 0x00000008;
+          onChanged();
+          return getContainerIdFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.v1.ContainerID container_id = 4;</code>
+         *
+         * <pre>
+         * The container id for the executor specified in the executor_info field.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.ContainerIDOrBuilder getContainerIdOrBuilder() {
+          if (containerIdBuilder_ != null) {
+            return containerIdBuilder_.getMessageOrBuilder();
+          } else {
+            return containerId_;
+          }
+        }
+        /**
+         * <code>required .mesos.v1.ContainerID container_id = 4;</code>
+         *
+         * <pre>
+         * The container id for the executor specified in the executor_info field.
+         * </pre>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.ContainerID, org.apache.mesos.v1.Protos.ContainerID.Builder, org.apache.mesos.v1.Protos.ContainerIDOrBuilder> 
+            getContainerIdFieldBuilder() {
+          if (containerIdBuilder_ == null) {
+            containerIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.ContainerID, org.apache.mesos.v1.Protos.ContainerID.Builder, org.apache.mesos.v1.Protos.ContainerIDOrBuilder>(
+                    containerId_,
+                    getParentForChildren(),
+                    isClean());
+            containerId_ = null;
+          }
+          return containerIdBuilder_;
+        }
+
+        // repeated .mesos.v1.ResourceUsage.Executor.Task tasks = 5;
+        private java.util.List<org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task> tasks_ =
+          java.util.Collections.emptyList();
+        private void ensureTasksIsMutable() {
+          if (!((bitField0_ & 0x00000010) == 0x00000010)) {
+            tasks_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task>(tasks_);
+            bitField0_ |= 0x00000010;
+           }
+        }
+
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task, org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task.Builder, org.apache.mesos.v1.Protos.ResourceUsage.Executor.TaskOrBuilder> tasksBuilder_;
+
+        /**
+         * <code>repeated .mesos.v1.ResourceUsage.Executor.Task tasks = 5;</code>
+         *
+         * <pre>
+         * Non-terminal tasks.
+         * </pre>
+         */
+        public java.util.List<org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task> getTasksList() {
+          if (tasksBuilder_ == null) {
+            return java.util.Collections.unmodifiableList(tasks_);
+          } else {
+            return tasksBuilder_.getMessageList();
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.ResourceUsage.Executor.Task tasks = 5;</code>
+         *
+         * <pre>
+         * Non-terminal tasks.
+         * </pre>
+         */
+        public int getTasksCount() {
+          if (tasksBuilder_ == null) {
+            return tasks_.size();
+          } else {
+            return tasksBuilder_.getCount();
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.ResourceUsage.Executor.Task tasks = 5;</code>
+         *
+         * <pre>
+         * Non-terminal tasks.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task getTasks(int index) {
+          if (tasksBuilder_ == null) {
+            return tasks_.get(index);
+          } else {
+            return tasksBuilder_.getMessage(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.ResourceUsage.Executor.Task tasks = 5;</code>
+         *
+         * <pre>
+         * Non-terminal tasks.
+         * </pre>
+         */
+        public Builder setTasks(
+            int index, org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task value) {
+          if (tasksBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureTasksIsMutable();
+            tasks_.set(index, value);
+            onChanged();
+          } else {
+            tasksBuilder_.setMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.ResourceUsage.Executor.Task tasks = 5;</code>
+         *
+         * <pre>
+         * Non-terminal tasks.
+         * </pre>
+         */
+        public Builder setTasks(
+            int index, org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task.Builder builderForValue) {
+          if (tasksBuilder_ == null) {
+            ensureTasksIsMutable();
+            tasks_.set(index, builderForValue.build());
+            onChanged();
+          } else {
+            tasksBuilder_.setMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.ResourceUsage.Executor.Task tasks = 5;</code>
+         *
+         * <pre>
+         * Non-terminal tasks.
+         * </pre>
+         */
+        public Builder addTasks(org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task value) {
+          if (tasksBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureTasksIsMutable();
+            tasks_.add(value);
+            onChanged();
+          } else {
+            tasksBuilder_.addMessage(value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.ResourceUsage.Executor.Task tasks = 5;</code>
+         *
+         * <pre>
+         * Non-terminal tasks.
+         * </pre>
+         */
+        public Builder addTasks(
+            int index, org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task value) {
+          if (tasksBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureTasksIsMutable();
+            tasks_.add(index, value);
+            onChanged();
+          } else {
+            tasksBuilder_.addMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.ResourceUsage.Executor.Task tasks = 5;</code>
+         *
+         * <pre>
+         * Non-terminal tasks.
+         * </pre>
+         */
+        public Builder addTasks(
+            org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task.Builder builderForValue) {
+          if (tasksBuilder_ == null) {
+            ensureTasksIsMutable();
+            tasks_.add(builderForValue.build());
+            onChanged();
+          } else {
+            tasksBuilder_.addMessage(builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.ResourceUsage.Executor.Task tasks = 5;</code>
+         *
+         * <pre>
+         * Non-terminal tasks.
+         * </pre>
+         */
+        public Builder addTasks(
+            int index, org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task.Builder builderForValue) {
+          if (tasksBuilder_ == null) {
+            ensureTasksIsMutable();
+            tasks_.add(index, builderForValue.build());
+            onChanged();
+          } else {
+            tasksBuilder_.addMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.ResourceUsage.Executor.Task tasks = 5;</code>
+         *
+         * <pre>
+         * Non-terminal tasks.
+         * </pre>
+         */
+        public Builder addAllTasks(
+            java.lang.Iterable<? extends org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task> values) {
+          if (tasksBuilder_ == null) {
+            ensureTasksIsMutable();
+            super.addAll(values, tasks_);
+            onChanged();
+          } else {
+            tasksBuilder_.addAllMessages(values);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.ResourceUsage.Executor.Task tasks = 5;</code>
+         *
+         * <pre>
+         * Non-terminal tasks.
+         * </pre>
+         */
+        public Builder clearTasks() {
+          if (tasksBuilder_ == null) {
+            tasks_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000010);
+            onChanged();
+          } else {
+            tasksBuilder_.clear();
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.ResourceUsage.Executor.Task tasks = 5;</code>
+         *
+         * <pre>
+         * Non-terminal tasks.
+         * </pre>
+         */
+        public Builder removeTasks(int index) {
+          if (tasksBuilder_ == null) {
+            ensureTasksIsMutable();
+            tasks_.remove(index);
+            onChanged();
+          } else {
+            tasksBuilder_.remove(index);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.ResourceUsage.Executor.Task tasks = 5;</code>
+         *
+         * <pre>
+         * Non-terminal tasks.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task.Builder getTasksBuilder(
+            int index) {
+          return getTasksFieldBuilder().getBuilder(index);
+        }
+        /**
+         * <code>repeated .mesos.v1.ResourceUsage.Executor.Task tasks = 5;</code>
+         *
+         * <pre>
+         * Non-terminal tasks.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.ResourceUsage.Executor.TaskOrBuilder getTasksOrBuilder(
+            int index) {
+          if (tasksBuilder_ == null) {
+            return tasks_.get(index);  } else {
+            return tasksBuilder_.getMessageOrBuilder(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.ResourceUsage.Executor.Task tasks = 5;</code>
+         *
+         * <pre>
+         * Non-terminal tasks.
+         * </pre>
+         */
+        public java.util.List<? extends org.apache.mesos.v1.Protos.ResourceUsage.Executor.TaskOrBuilder> 
+             getTasksOrBuilderList() {
+          if (tasksBuilder_ != null) {
+            return tasksBuilder_.getMessageOrBuilderList();
+          } else {
+            return java.util.Collections.unmodifiableList(tasks_);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.ResourceUsage.Executor.Task tasks = 5;</code>
+         *
+         * <pre>
+         * Non-terminal tasks.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task.Builder addTasksBuilder() {
+          return getTasksFieldBuilder().addBuilder(
+              org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.v1.ResourceUsage.Executor.Task tasks = 5;</code>
+         *
+         * <pre>
+         * Non-terminal tasks.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task.Builder addTasksBuilder(
+            int index) {
+          return getTasksFieldBuilder().addBuilder(
+              index, org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.v1.ResourceUsage.Executor.Task tasks = 5;</code>
+         *
+         * <pre>
+         * Non-terminal tasks.
+         * </pre>
+         */
+        public java.util.List<org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task.Builder> 
+             getTasksBuilderList() {
+          return getTasksFieldBuilder().getBuilderList();
+        }
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task, org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task.Builder, org.apache.mesos.v1.Protos.ResourceUsage.Executor.TaskOrBuilder> 
+            getTasksFieldBuilder() {
+          if (tasksBuilder_ == null) {
+            tasksBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task, org.apache.mesos.v1.Protos.ResourceUsage.Executor.Task.Builder, org.apache.mesos.v1.Protos.ResourceUsage.Executor.TaskOrBuilder>(
+                    tasks_,
+                    ((bitField0_ & 0x00000010) == 0x00000010),
+                    getParentForChildren(),
+                    isClean());
+            tasks_ = null;
+          }
+          return tasksBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.ResourceUsage.Executor)
+      }
+
+      static {
+        defaultInstance = new Executor(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.ResourceUsage.Executor)
+    }
+
+    // repeated .mesos.v1.ResourceUsage.Executor executors = 1;
+    public static final int EXECUTORS_FIELD_NUMBER = 1;
+    private java.util.List<org.apache.mesos.v1.Protos.ResourceUsage.Executor> executors_;
+    /**
+     * <code>repeated .mesos.v1.ResourceUsage.Executor executors = 1;</code>
+     */
+    public java.util.List<org.apache.mesos.v1.Protos.ResourceUsage.Executor> getExecutorsList() {
+      return executors_;
+    }
+    /**
+     * <code>repeated .mesos.v1.ResourceUsage.Executor executors = 1;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.v1.Protos.ResourceUsage.ExecutorOrBuilder> 
+        getExecutorsOrBuilderList() {
+      return executors_;
+    }
+    /**
+     * <code>repeated .mesos.v1.ResourceUsage.Executor executors = 1;</code>
+     */
+    public int getExecutorsCount() {
+      return executors_.size();
+    }
+    /**
+     * <code>repeated .mesos.v1.ResourceUsage.Executor executors = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.ResourceUsage.Executor getExecutors(int index) {
+      return executors_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.v1.ResourceUsage.Executor executors = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.ResourceUsage.ExecutorOrBuilder getExecutorsOrBuilder(
+        int index) {
+      return executors_.get(index);
+    }
+
+    // repeated .mesos.v1.Resource total = 2;
+    public static final int TOTAL_FIELD_NUMBER = 2;
+    private java.util.List<org.apache.mesos.v1.Protos.Resource> total_;
+    /**
+     * <code>repeated .mesos.v1.Resource total = 2;</code>
+     *
+     * <pre>
+     * Agent's total resources including checkpointed dynamic
+     * reservations and persistent volumes.
+     * </pre>
+     */
+    public java.util.List<org.apache.mesos.v1.Protos.Resource> getTotalList() {
+      return total_;
+    }
+    /**
+     * <code>repeated .mesos.v1.Resource total = 2;</code>
+     *
+     * <pre>
+     * Agent's total resources including checkpointed dynamic
+     * reservations and persistent volumes.
+     * </pre>
+     */
+    public java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+        getTotalOrBuilderList() {
+      return total_;
+    }
+    /**
+     * <code>repeated .mesos.v1.Resource total = 2;</code>
+     *
+     * <pre>
+     * Agent's total resources including checkpointed dynamic
+     * reservations and persistent volumes.
+     * </pre>
+     */
+    public int getTotalCount() {
+      return total_.size();
+    }
+    /**
+     * <code>repeated .mesos.v1.Resource total = 2;</code>
+     *
+     * <pre>
+     * Agent's total resources including checkpointed dynamic
+     * reservations and persistent volumes.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.Resource getTotal(int index) {
+      return total_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.v1.Resource total = 2;</code>
+     *
+     * <pre>
+     * Agent's total resources including checkpointed dynamic
+     * reservations and persistent volumes.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.ResourceOrBuilder getTotalOrBuilder(
+        int index) {
+      return total_.get(index);
+    }
+
+    private void initFields() {
+      executors_ = java.util.Collections.emptyList();
+      total_ = java.util.Collections.emptyList();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      for (int i = 0; i < getExecutorsCount(); i++) {
+        if (!getExecutors(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      for (int i = 0; i < getTotalCount(); i++) {
+        if (!getTotal(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      for (int i = 0; i < executors_.size(); i++) {
+        output.writeMessage(1, executors_.get(i));
+      }
+      for (int i = 0; i < total_.size(); i++) {
+        output.writeMessage(2, total_.get(i));
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      for (int i = 0; i < executors_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, executors_.get(i));
+      }
+      for (int i = 0; i < total_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, total_.get(i));
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.ResourceUsage parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.ResourceUsage parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.ResourceUsage parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.ResourceUsage parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.ResourceUsage parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.ResourceUsage parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.ResourceUsage parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.ResourceUsage parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.ResourceUsage parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.ResourceUsage parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.ResourceUsage prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.ResourceUsage}
+     *
+     * <pre>
+     **
+     * Describes a snapshot of the resource usage for executors.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.ResourceUsageOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ResourceUsage_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ResourceUsage_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.ResourceUsage.class, org.apache.mesos.v1.Protos.ResourceUsage.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.ResourceUsage.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getExecutorsFieldBuilder();
+          getTotalFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (executorsBuilder_ == null) {
+          executors_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+        } else {
+          executorsBuilder_.clear();
+        }
+        if (totalBuilder_ == null) {
+          total_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000002);
+        } else {
+          totalBuilder_.clear();
+        }
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ResourceUsage_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.ResourceUsage getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.ResourceUsage.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.ResourceUsage build() {
+        org.apache.mesos.v1.Protos.ResourceUsage result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.ResourceUsage buildPartial() {
+        org.apache.mesos.v1.Protos.ResourceUsage result = new org.apache.mesos.v1.Protos.ResourceUsage(this);
+        int from_bitField0_ = bitField0_;
+        if (executorsBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            executors_ = java.util.Collections.unmodifiableList(executors_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.executors_ = executors_;
+        } else {
+          result.executors_ = executorsBuilder_.build();
+        }
+        if (totalBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            total_ = java.util.Collections.unmodifiableList(total_);
+            bitField0_ = (bitField0_ & ~0x00000002);
+          }
+          result.total_ = total_;
+        } else {
+          result.total_ = totalBuilder_.build();
+        }
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.ResourceUsage) {
+          return mergeFrom((org.apache.mesos.v1.Protos.ResourceUsage)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.ResourceUsage other) {
+        if (other == org.apache.mesos.v1.Protos.ResourceUsage.getDefaultInstance()) return this;
+        if (executorsBuilder_ == null) {
+          if (!other.executors_.isEmpty()) {
+            if (executors_.isEmpty()) {
+              executors_ = other.executors_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureExecutorsIsMutable();
+              executors_.addAll(other.executors_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.executors_.isEmpty()) {
+            if (executorsBuilder_.isEmpty()) {
+              executorsBuilder_.dispose();
+              executorsBuilder_ = null;
+              executors_ = other.executors_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              executorsBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getExecutorsFieldBuilder() : null;
+            } else {
+              executorsBuilder_.addAllMessages(other.executors_);
+            }
+          }
+        }
+        if (totalBuilder_ == null) {
+          if (!other.total_.isEmpty()) {
+            if (total_.isEmpty()) {
+              total_ = other.total_;
+              bitField0_ = (bitField0_ & ~0x00000002);
+            } else {
+              ensureTotalIsMutable();
+              total_.addAll(other.total_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.total_.isEmpty()) {
+            if (totalBuilder_.isEmpty()) {
+              totalBuilder_.dispose();
+              totalBuilder_ = null;
+              total_ = other.total_;
+              bitField0_ = (bitField0_ & ~0x00000002);
+              totalBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getTotalFieldBuilder() : null;
+            } else {
+              totalBuilder_.addAllMessages(other.total_);
+            }
+          }
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        for (int i = 0; i < getExecutorsCount(); i++) {
+          if (!getExecutors(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        for (int i = 0; i < getTotalCount(); i++) {
+          if (!getTotal(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.ResourceUsage parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.ResourceUsage) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // repeated .mesos.v1.ResourceUsage.Executor executors = 1;
+      private java.util.List<org.apache.mesos.v1.Protos.ResourceUsage.Executor> executors_ =
+        java.util.Collections.emptyList();
+      private void ensureExecutorsIsMutable() {
+        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+          executors_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.ResourceUsage.Executor>(executors_);
+          bitField0_ |= 0x00000001;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.ResourceUsage.Executor, org.apache.mesos.v1.Protos.ResourceUsage.Executor.Builder, org.apache.mesos.v1.Protos.ResourceUsage.ExecutorOrBuilder> executorsBuilder_;
+
+      /**
+       * <code>repeated .mesos.v1.ResourceUsage.Executor executors = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.ResourceUsage.Executor> getExecutorsList() {
+        if (executorsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(executors_);
+        } else {
+          return executorsBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.ResourceUsage.Executor executors = 1;</code>
+       */
+      public int getExecutorsCount() {
+        if (executorsBuilder_ == null) {
+          return executors_.size();
+        } else {
+          return executorsBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.ResourceUsage.Executor executors = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.ResourceUsage.Executor getExecutors(int index) {
+        if (executorsBuilder_ == null) {
+          return executors_.get(index);
+        } else {
+          return executorsBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.ResourceUsage.Executor executors = 1;</code>
+       */
+      public Builder setExecutors(
+          int index, org.apache.mesos.v1.Protos.ResourceUsage.Executor value) {
+        if (executorsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureExecutorsIsMutable();
+          executors_.set(index, value);
+          onChanged();
+        } else {
+          executorsBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.ResourceUsage.Executor executors = 1;</code>
+       */
+      public Builder setExecutors(
+          int index, org.apache.mesos.v1.Protos.ResourceUsage.Executor.Builder builderForValue) {
+        if (executorsBuilder_ == null) {
+          ensureExecutorsIsMutable();
+          executors_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          executorsBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.ResourceUsage.Executor executors = 1;</code>
+       */
+      public Builder addExecutors(org.apache.mesos.v1.Protos.ResourceUsage.Executor value) {
+        if (executorsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureExecutorsIsMutable();
+          executors_.add(value);
+          onChanged();
+        } else {
+          executorsBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.ResourceUsage.Executor executors = 1;</code>
+       */
+      public Builder addExecutors(
+          int index, org.apache.mesos.v1.Protos.ResourceUsage.Executor value) {
+        if (executorsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureExecutorsIsMutable();
+          executors_.add(index, value);
+          onChanged();
+        } else {
+          executorsBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.ResourceUsage.Executor executors = 1;</code>
+       */
+      public Builder addExecutors(
+          org.apache.mesos.v1.Protos.ResourceUsage.Executor.Builder builderForValue) {
+        if (executorsBuilder_ == null) {
+          ensureExecutorsIsMutable();
+          executors_.add(builderForValue.build());
+          onChanged();
+        } else {
+          executorsBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.ResourceUsage.Executor executors = 1;</code>
+       */
+      public Builder addExecutors(
+          int index, org.apache.mesos.v1.Protos.ResourceUsage.Executor.Builder builderForValue) {
+        if (executorsBuilder_ == null) {
+          ensureExecutorsIsMutable();
+          executors_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          executorsBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.ResourceUsage.Executor executors = 1;</code>
+       */
+      public Builder addAllExecutors(
+          java.lang.Iterable<? extends org.apache.mesos.v1.Protos.ResourceUsage.Executor> values) {
+        if (executorsBuilder_ == null) {
+          ensureExecutorsIsMutable();
+          super.addAll(values, executors_);
+          onChanged();
+        } else {
+          executorsBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.ResourceUsage.Executor executors = 1;</code>
+       */
+      public Builder clearExecutors() {
+        if (executorsBuilder_ == null) {
+          executors_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+        } else {
+          executorsBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.ResourceUsage.Executor executors = 1;</code>
+       */
+      public Builder removeExecutors(int index) {
+        if (executorsBuilder_ == null) {
+          ensureExecutorsIsMutable();
+          executors_.remove(index);
+          onChanged();
+        } else {
+          executorsBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.ResourceUsage.Executor executors = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.ResourceUsage.Executor.Builder getExecutorsBuilder(
+          int index) {
+        return getExecutorsFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.ResourceUsage.Executor executors = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.ResourceUsage.ExecutorOrBuilder getExecutorsOrBuilder(
+          int index) {
+        if (executorsBuilder_ == null) {
+          return executors_.get(index);  } else {
+          return executorsBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.ResourceUsage.Executor executors = 1;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.ResourceUsage.ExecutorOrBuilder> 
+           getExecutorsOrBuilderList() {
+        if (executorsBuilder_ != null) {
+          return executorsBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(executors_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.ResourceUsage.Executor executors = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.ResourceUsage.Executor.Builder addExecutorsBuilder() {
+        return getExecutorsFieldBuilder().addBuilder(
+            org.apache.mesos.v1.Protos.ResourceUsage.Executor.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.ResourceUsage.Executor executors = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.ResourceUsage.Executor.Builder addExecutorsBuilder(
+          int index) {
+        return getExecutorsFieldBuilder().addBuilder(
+            index, org.apache.mesos.v1.Protos.ResourceUsage.Executor.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.ResourceUsage.Executor executors = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.ResourceUsage.Executor.Builder> 
+           getExecutorsBuilderList() {
+        return getExecutorsFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.ResourceUsage.Executor, org.apache.mesos.v1.Protos.ResourceUsage.Executor.Builder, org.apache.mesos.v1.Protos.ResourceUsage.ExecutorOrBuilder> 
+          getExecutorsFieldBuilder() {
+        if (executorsBuilder_ == null) {
+          executorsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.ResourceUsage.Executor, org.apache.mesos.v1.Protos.ResourceUsage.Executor.Builder, org.apache.mesos.v1.Protos.ResourceUsage.ExecutorOrBuilder>(
+                  executors_,
+                  ((bitField0_ & 0x00000001) == 0x00000001),
+                  getParentForChildren(),
+                  isClean());
+          executors_ = null;
+        }
+        return executorsBuilder_;
+      }
+
+      // repeated .mesos.v1.Resource total = 2;
+      private java.util.List<org.apache.mesos.v1.Protos.Resource> total_ =
+        java.util.Collections.emptyList();
+      private void ensureTotalIsMutable() {
+        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
+          total_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Resource>(total_);
+          bitField0_ |= 0x00000002;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder> totalBuilder_;
+
+      /**
+       * <code>repeated .mesos.v1.Resource total = 2;</code>
+       *
+       * <pre>
+       * Agent's total resources including checkpointed dynamic
+       * reservations and persistent volumes.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Resource> getTotalList() {
+        if (totalBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(total_);
+        } else {
+          return totalBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource total = 2;</code>
+       *
+       * <pre>
+       * Agent's total resources including checkpointed dynamic
+       * reservations and persistent volumes.
+       * </pre>
+       */
+      public int getTotalCount() {
+        if (totalBuilder_ == null) {
+          return total_.size();
+        } else {
+          return totalBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource total = 2;</code>
+       *
+       * <pre>
+       * Agent's total resources including checkpointed dynamic
+       * reservations and persistent volumes.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Resource getTotal(int index) {
+        if (totalBuilder_ == null) {
+          return total_.get(index);
+        } else {
+          return totalBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource total = 2;</code>
+       *
+       * <pre>
+       * Agent's total resources including checkpointed dynamic
+       * reservations and persistent volumes.
+       * </pre>
+       */
+      public Builder setTotal(
+          int index, org.apache.mesos.v1.Protos.Resource value) {
+        if (totalBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureTotalIsMutable();
+          total_.set(index, value);
+          onChanged();
+        } else {
+          totalBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource total = 2;</code>
+       *
+       * <pre>
+       * Agent's total resources including checkpointed dynamic
+       * reservations and persistent volumes.
+       * </pre>
+       */
+      public Builder setTotal(
+          int index, org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+        if (totalBuilder_ == null) {
+          ensureTotalIsMutable();
+          total_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          totalBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource total = 2;</code>
+       *
+       * <pre>
+       * Agent's total resources including checkpointed dynamic
+       * reservations and persistent volumes.
+       * </pre>
+       */
+      public Builder addTotal(org.apache.mesos.v1.Protos.Resource value) {
+        if (totalBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureTotalIsMutable();
+          total_.add(value);
+          onChanged();
+        } else {
+          totalBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource total = 2;</code>
+       *
+       * <pre>
+       * Agent's total resources including checkpointed dynamic
+       * reservations and persistent volumes.
+       * </pre>
+       */
+      public Builder addTotal(
+          int index, org.apache.mesos.v1.Protos.Resource value) {
+        if (totalBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureTotalIsMutable();
+          total_.add(index, value);
+          onChanged();
+        } else {
+          totalBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource total = 2;</code>
+       *
+       * <pre>
+       * Agent's total resources including checkpointed dynamic
+       * reservations and persistent volumes.
+       * </pre>
+       */
+      public Builder addTotal(
+          org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+        if (totalBuilder_ == null) {
+          ensureTotalIsMutable();
+          total_.add(builderForValue.build());
+          onChanged();
+        } else {
+          totalBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource total = 2;</code>
+       *
+       * <pre>
+       * Agent's total resources including checkpointed dynamic
+       * reservations and persistent volumes.
+       * </pre>
+       */
+      public Builder addTotal(
+          int index, org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+        if (totalBuilder_ == null) {
+          ensureTotalIsMutable();
+          total_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          totalBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource total = 2;</code>
+       *
+       * <pre>
+       * Agent's total resources including checkpointed dynamic
+       * reservations and persistent volumes.
+       * </pre>
+       */
+      public Builder addAllTotal(
+          java.lang.Iterable<? extends org.apache.mesos.v1.Protos.Resource> values) {
+        if (totalBuilder_ == null) {
+          ensureTotalIsMutable();
+          super.addAll(values, total_);
+          onChanged();
+        } else {
+          totalBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource total = 2;</code>
+       *
+       * <pre>
+       * Agent's total resources including checkpointed dynamic
+       * reservations and persistent volumes.
+       * </pre>
+       */
+      public Builder clearTotal() {
+        if (totalBuilder_ == null) {
+          total_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000002);
+          onChanged();
+        } else {
+          totalBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource total = 2;</code>
+       *
+       * <pre>
+       * Agent's total resources including checkpointed dynamic
+       * reservations and persistent volumes.
+       * </pre>
+       */
+      public Builder removeTotal(int index) {
+        if (totalBuilder_ == null) {
+          ensureTotalIsMutable();
+          total_.remove(index);
+          onChanged();
+        } else {
+          totalBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource total = 2;</code>
+       *
+       * <pre>
+       * Agent's total resources including checkpointed dynamic
+       * reservations and persistent volumes.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Resource.Builder getTotalBuilder(
+          int index) {
+        return getTotalFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource total = 2;</code>
+       *
+       * <pre>
+       * Agent's total resources including checkpointed dynamic
+       * reservations and persistent volumes.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.ResourceOrBuilder getTotalOrBuilder(
+          int index) {
+        if (totalBuilder_ == null) {
+          return total_.get(index);  } else {
+          return totalBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource total = 2;</code>
+       *
+       * <pre>
+       * Agent's total resources including checkpointed dynamic
+       * reservations and persistent volumes.
+       * </pre>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+           getTotalOrBuilderList() {
+        if (totalBuilder_ != null) {
+          return totalBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(total_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource total = 2;</code>
+       *
+       * <pre>
+       * Agent's total resources including checkpointed dynamic
+       * reservations and persistent volumes.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Resource.Builder addTotalBuilder() {
+        return getTotalFieldBuilder().addBuilder(
+            org.apache.mesos.v1.Protos.Resource.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource total = 2;</code>
+       *
+       * <pre>
+       * Agent's total resources including checkpointed dynamic
+       * reservations and persistent volumes.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Resource.Builder addTotalBuilder(
+          int index) {
+        return getTotalFieldBuilder().addBuilder(
+            index, org.apache.mesos.v1.Protos.Resource.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource total = 2;</code>
+       *
+       * <pre>
+       * Agent's total resources including checkpointed dynamic
+       * reservations and persistent volumes.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Resource.Builder> 
+           getTotalBuilderList() {
+        return getTotalFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+          getTotalFieldBuilder() {
+        if (totalBuilder_ == null) {
+          totalBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder>(
+                  total_,
+                  ((bitField0_ & 0x00000002) == 0x00000002),
+                  getParentForChildren(),
+                  isClean());
+          total_ = null;
+        }
+        return totalBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.ResourceUsage)
+    }
+
+    static {
+      defaultInstance = new ResourceUsage(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.ResourceUsage)
+  }
+
+  public interface PerfStatisticsOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required double timestamp = 1;
+    /**
+     * <code>required double timestamp = 1;</code>
+     *
+     * <pre>
+     * Start of sample interval, in seconds since the Epoch.
+     * </pre>
+     */
+    boolean hasTimestamp();
+    /**
+     * <code>required double timestamp = 1;</code>
+     *
+     * <pre>
+     * Start of sample interval, in seconds since the Epoch.
+     * </pre>
+     */
+    double getTimestamp();
+
+    // required double duration = 2;
+    /**
+     * <code>required double duration = 2;</code>
+     *
+     * <pre>
+     * Duration of sample interval, in seconds.
+     * </pre>
+     */
+    boolean hasDuration();
+    /**
+     * <code>required double duration = 2;</code>
+     *
+     * <pre>
+     * Duration of sample interval, in seconds.
+     * </pre>
+     */
+    double getDuration();
+
+    // optional uint64 cycles = 3;
+    /**
+     * <code>optional uint64 cycles = 3;</code>
+     *
+     * <pre>
+     * Hardware event.
+     * </pre>
+     */
+    boolean hasCycles();
+    /**
+     * <code>optional uint64 cycles = 3;</code>
+     *
+     * <pre>
+     * Hardware event.
+     * </pre>
+     */
+    long getCycles();
+
+    // optional uint64 stalled_cycles_frontend = 4;
+    /**
+     * <code>optional uint64 stalled_cycles_frontend = 4;</code>
+     */
+    boolean hasStalledCyclesFrontend();
+    /**
+     * <code>optional uint64 stalled_cycles_frontend = 4;</code>
+     */
+    long getStalledCyclesFrontend();
+
+    // optional uint64 stalled_cycles_backend = 5;
+    /**
+     * <code>optional uint64 stalled_cycles_backend = 5;</code>
+     */
+    boolean hasStalledCyclesBackend();
+    /**
+     * <code>optional uint64 stalled_cycles_backend = 5;</code>
+     */
+    long getStalledCyclesBackend();
+
+    // optional uint64 instructions = 6;
+    /**
+     * <code>optional uint64 instructions = 6;</code>
+     */
+    boolean hasInstructions();
+    /**
+     * <code>optional uint64 instructions = 6;</code>
+     */
+    long getInstructions();
+
+    // optional uint64 cache_references = 7;
+    /**
+     * <code>optional uint64 cache_references = 7;</code>
+     */
+    boolean hasCacheReferences();
+    /**
+     * <code>optional uint64 cache_references = 7;</code>
+     */
+    long getCacheReferences();
+
+    // optional uint64 cache_misses = 8;
+    /**
+     * <code>optional uint64 cache_misses = 8;</code>
+     */
+    boolean hasCacheMisses();
+    /**
+     * <code>optional uint64 cache_misses = 8;</code>
+     */
+    long getCacheMisses();
+
+    // optional uint64 branches = 9;
+    /**
+     * <code>optional uint64 branches = 9;</code>
+     */
+    boolean hasBranches();
+    /**
+     * <code>optional uint64 branches = 9;</code>
+     */
+    long getBranches();
+
+    // optional uint64 branch_misses = 10;
+    /**
+     * <code>optional uint64 branch_misses = 10;</code>
+     */
+    boolean hasBranchMisses();
+    /**
+     * <code>optional uint64 branch_misses = 10;</code>
+     */
+    long getBranchMisses();
+
+    // optional uint64 bus_cycles = 11;
+    /**
+     * <code>optional uint64 bus_cycles = 11;</code>
+     */
+    boolean hasBusCycles();
+    /**
+     * <code>optional uint64 bus_cycles = 11;</code>
+     */
+    long getBusCycles();
+
+    // optional uint64 ref_cycles = 12;
+    /**
+     * <code>optional uint64 ref_cycles = 12;</code>
+     */
+    boolean hasRefCycles();
+    /**
+     * <code>optional uint64 ref_cycles = 12;</code>
+     */
+    long getRefCycles();
+
+    // optional double cpu_clock = 13;
+    /**
+     * <code>optional double cpu_clock = 13;</code>
+     *
+     * <pre>
+     * Software event.
+     * </pre>
+     */
+    boolean hasCpuClock();
+    /**
+     * <code>optional double cpu_clock = 13;</code>
+     *
+     * <pre>
+     * Software event.
+     * </pre>
+     */
+    double getCpuClock();
+
+    // optional double task_clock = 14;
+    /**
+     * <code>optional double task_clock = 14;</code>
+     */
+    boolean hasTaskClock();
+    /**
+     * <code>optional double task_clock = 14;</code>
+     */
+    double getTaskClock();
+
+    // optional uint64 page_faults = 15;
+    /**
+     * <code>optional uint64 page_faults = 15;</code>
+     */
+    boolean hasPageFaults();
+    /**
+     * <code>optional uint64 page_faults = 15;</code>
+     */
+    long getPageFaults();
+
+    // optional uint64 minor_faults = 16;
+    /**
+     * <code>optional uint64 minor_faults = 16;</code>
+     */
+    boolean hasMinorFaults();
+    /**
+     * <code>optional uint64 minor_faults = 16;</code>
+     */
+    long getMinorFaults();
+
+    // optional uint64 major_faults = 17;
+    /**
+     * <code>optional uint64 major_faults = 17;</code>
+     */
+    boolean hasMajorFaults();
+    /**
+     * <code>optional uint64 major_faults = 17;</code>
+     */
+    long getMajorFaults();
+
+    // optional uint64 context_switches = 18;
+    /**
+     * <code>optional uint64 context_switches = 18;</code>
+     */
+    boolean hasContextSwitches();
+    /**
+     * <code>optional uint64 context_switches = 18;</code>
+     */
+    long getContextSwitches();
+
+    // optional uint64 cpu_migrations = 19;
+    /**
+     * <code>optional uint64 cpu_migrations = 19;</code>
+     */
+    boolean hasCpuMigrations();
+    /**
+     * <code>optional uint64 cpu_migrations = 19;</code>
+     */
+    long getCpuMigrations();
+
+    // optional uint64 alignment_faults = 20;
+    /**
+     * <code>optional uint64 alignment_faults = 20;</code>
+     */
+    boolean hasAlignmentFaults();
+    /**
+     * <code>optional uint64 alignment_faults = 20;</code>
+     */
+    long getAlignmentFaults();
+
+    // optional uint64 emulation_faults = 21;
+    /**
+     * <code>optional uint64 emulation_faults = 21;</code>
+     */
+    boolean hasEmulationFaults();
+    /**
+     * <code>optional uint64 emulation_faults = 21;</code>
+     */
+    long getEmulationFaults();
+
+    // optional uint64 l1_dcache_loads = 22;
+    /**
+     * <code>optional uint64 l1_dcache_loads = 22;</code>
+     *
+     * <pre>
+     * Hardware cache event.
+     * </pre>
+     */
+    boolean hasL1DcacheLoads();
+    /**
+     * <code>optional uint64 l1_dcache_loads = 22;</code>
+     *
+     * <pre>
+     * Hardware cache event.
+     * </pre>
+     */
+    long getL1DcacheLoads();
+
+    // optional uint64 l1_dcache_load_misses = 23;
+    /**
+     * <code>optional uint64 l1_dcache_load_misses = 23;</code>
+     */
+    boolean hasL1DcacheLoadMisses();
+    /**
+     * <code>optional uint64 l1_dcache_load_misses = 23;</code>
+     */
+    long getL1DcacheLoadMisses();
+
+    // optional uint64 l1_dcache_stores = 24;
+    /**
+     * <code>optional uint64 l1_dcache_stores = 24;</code>
+     */
+    boolean hasL1DcacheStores();
+    /**
+     * <code>optional uint64 l1_dcache_stores = 24;</code>
+     */
+    long getL1DcacheStores();
+
+    // optional uint64 l1_dcache_store_misses = 25;
+    /**
+     * <code>optional uint64 l1_dcache_store_misses = 25;</code>
+     */
+    boolean hasL1DcacheStoreMisses();
+    /**
+     * <code>optional uint64 l1_dcache_store_misses = 25;</code>
+     */
+    long getL1DcacheStoreMisses();
+
+    // optional uint64 l1_dcache_prefetches = 26;
+    /**
+     * <code>optional uint64 l1_dcache_prefetches = 26;</code>
+     */
+    boolean hasL1DcachePrefetches();
+    /**
+     * <code>optional uint64 l1_dcache_prefetches = 26;</code>
+     */
+    long getL1DcachePrefetches();
+
+    // optional uint64 l1_dcache_prefetch_misses = 27;
+    /**
+     * <code>optional uint64 l1_dcache_prefetch_misses = 27;</code>
+     */
+    boolean hasL1DcachePrefetchMisses();
+    /**
+     * <code>optional uint64 l1_dcache_prefetch_misses = 27;</code>
+     */
+    long getL1DcachePrefetchMisses();
+
+    // optional uint64 l1_icache_loads = 28;
+    /**
+     * <code>optional uint64 l1_icache_loads = 28;</code>
+     */
+    boolean hasL1IcacheLoads();
+    /**
+     * <code>optional uint64 l1_icache_loads = 28;</code>
+     */
+    long getL1IcacheLoads();
+
+    // optional uint64 l1_icache_load_misses = 29;
+    /**
+     * <code>optional uint64 l1_icache_load_misses = 29;</code>
+     */
+    boolean hasL1IcacheLoadMisses();
+    /**
+     * <code>optional uint64 l1_icache_load_misses = 29;</code>
+     */
+    long getL1IcacheLoadMisses();
+
+    // optional uint64 l1_icache_prefetches = 30;
+    /**
+     * <code>optional uint64 l1_icache_prefetches = 30;</code>
+     */
+    boolean hasL1IcachePrefetches();
+    /**
+     * <code>optional uint64 l1_icache_prefetches = 30;</code>
+     */
+    long getL1IcachePrefetches();
+
+    // optional uint64 l1_icache_prefetch_misses = 31;
+    /**
+     * <code>optional uint64 l1_icache_prefetch_misses = 31;</code>
+     */
+    boolean hasL1IcachePrefetchMisses();
+    /**
+     * <code>optional uint64 l1_icache_prefetch_misses = 31;</code>
+     */
+    long getL1IcachePrefetchMisses();
+
+    // optional uint64 llc_loads = 32;
+    /**
+     * <code>optional uint64 llc_loads = 32;</code>
+     */
+    boolean hasLlcLoads();
+    /**
+     * <code>optional uint64 llc_loads = 32;</code>
+     */
+    long getLlcLoads();
+
+    // optional uint64 llc_load_misses = 33;
+    /**
+     * <code>optional uint64 llc_load_misses = 33;</code>
+     */
+    boolean hasLlcLoadMisses();
+    /**
+     * <code>optional uint64 llc_load_misses = 33;</code>
+     */
+    long getLlcLoadMisses();
+
+    // optional uint64 llc_stores = 34;
+    /**
+     * <code>optional uint64 llc_stores = 34;</code>
+     */
+    boolean hasLlcStores();
+    /**
+     * <code>optional uint64 llc_stores = 34;</code>
+     */
+    long getLlcStores();
+
+    // optional uint64 llc_store_misses = 35;
+    /**
+     * <code>optional uint64 llc_store_misses = 35;</code>
+     */
+    boolean hasLlcStoreMisses();
+    /**
+     * <code>optional uint64 llc_store_misses = 35;</code>
+     */
+    long getLlcStoreMisses();
+
+    // optional uint64 llc_prefetches = 36;
+    /**
+     * <code>optional uint64 llc_prefetches = 36;</code>
+     */
+    boolean hasLlcPrefetches();
+    /**
+     * <code>optional uint64 llc_prefetches = 36;</code>
+     */
+    long getLlcPrefetches();
+
+    // optional uint64 llc_prefetch_misses = 37;
+    /**
+     * <code>optional uint64 llc_prefetch_misses = 37;</code>
+     */
+    boolean hasLlcPrefetchMisses();
+    /**
+     * <code>optional uint64 llc_prefetch_misses = 37;</code>
+     */
+    long getLlcPrefetchMisses();
+
+    // optional uint64 dtlb_loads = 38;
+    /**
+     * <code>optional uint64 dtlb_loads = 38;</code>
+     */
+    boolean hasDtlbLoads();
+    /**
+     * <code>optional uint64 dtlb_loads = 38;</code>
+     */
+    long getDtlbLoads();
+
+    // optional uint64 dtlb_load_misses = 39;
+    /**
+     * <code>optional uint64 dtlb_load_misses = 39;</code>
+     */
+    boolean hasDtlbLoadMisses();
+    /**
+     * <code>optional uint64 dtlb_load_misses = 39;</code>
+     */
+    long getDtlbLoadMisses();
+
+    // optional uint64 dtlb_stores = 40;
+    /**
+     * <code>optional uint64 dtlb_stores = 40;</code>
+     */
+    boolean hasDtlbStores();
+    /**
+     * <code>optional uint64 dtlb_stores = 40;</code>
+     */
+    long getDtlbStores();
+
+    // optional uint64 dtlb_store_misses = 41;
+    /**
+     * <code>optional uint64 dtlb_store_misses = 41;</code>
+     */
+    boolean hasDtlbStoreMisses();
+    /**
+     * <code>optional uint64 dtlb_store_misses = 41;</code>
+     */
+    long getDtlbStoreMisses();
+
+    // optional uint64 dtlb_prefetches = 42;
+    /**
+     * <code>optional uint64 dtlb_prefetches = 42;</code>
+     */
+    boolean hasDtlbPrefetches();
+    /**
+     * <code>optional uint64 dtlb_prefetches = 42;</code>
+     */
+    long getDtlbPrefetches();
+
+    // optional uint64 dtlb_prefetch_misses = 43;
+    /**
+     * <code>optional uint64 dtlb_prefetch_misses = 43;</code>
+     */
+    boolean hasDtlbPrefetchMisses();
+    /**
+     * <code>optional uint64 dtlb_prefetch_misses = 43;</code>
+     */
+    long getDtlbPrefetchMisses();
+
+    // optional uint64 itlb_loads = 44;
+    /**
+     * <code>optional uint64 itlb_loads = 44;</code>
+     */
+    boolean hasItlbLoads();
+    /**
+     * <code>optional uint64 itlb_loads = 44;</code>
+     */
+    long getItlbLoads();
+
+    // optional uint64 itlb_load_misses = 45;
+    /**
+     * <code>optional uint64 itlb_load_misses = 45;</code>
+     */
+    boolean hasItlbLoadMisses();
+    /**
+     * <code>optional uint64 itlb_load_misses = 45;</code>
+     */
+    long getItlbLoadMisses();
+
+    // optional uint64 branch_loads = 46;
+    /**
+     * <code>optional uint64 branch_loads = 46;</code>
+     */
+    boolean hasBranchLoads();
+    /**
+     * <code>optional uint64 branch_loads = 46;</code>
+     */
+    long getBranchLoads();
+
+    // optional uint64 branch_load_misses = 47;
+    /**
+     * <code>optional uint64 branch_load_misses = 47;</code>
+     */
+    boolean hasBranchLoadMisses();
+    /**
+     * <code>optional uint64 branch_load_misses = 47;</code>
+     */
+    long getBranchLoadMisses();
+
+    // optional uint64 node_loads = 48;
+    /**
+     * <code>optional uint64 node_loads = 48;</code>
+     */
+    boolean hasNodeLoads();
+    /**
+     * <code>optional uint64 node_loads = 48;</code>
+     */
+    long getNodeLoads();
+
+    // optional uint64 node_load_misses = 49;
+    /**
+     * <code>optional uint64 node_load_misses = 49;</code>
+     */
+    boolean hasNodeLoadMisses();
+    /**
+     * <code>optional uint64 node_load_misses = 49;</code>
+     */
+    long getNodeLoadMisses();
+
+    // optional uint64 node_stores = 50;
+    /**
+     * <code>optional uint64 node_stores = 50;</code>
+     */
+    boolean hasNodeStores();
+    /**
+     * <code>optional uint64 node_stores = 50;</code>
+     */
+    long getNodeStores();
+
+    // optional uint64 node_store_misses = 51;
+    /**
+     * <code>optional uint64 node_store_misses = 51;</code>
+     */
+    boolean hasNodeStoreMisses();
+    /**
+     * <code>optional uint64 node_store_misses = 51;</code>
+     */
+    long getNodeStoreMisses();
+
+    // optional uint64 node_prefetches = 52;
+    /**
+     * <code>optional uint64 node_prefetches = 52;</code>
+     */
+    boolean hasNodePrefetches();
+    /**
+     * <code>optional uint64 node_prefetches = 52;</code>
+     */
+    long getNodePrefetches();
+
+    // optional uint64 node_prefetch_misses = 53;
+    /**
+     * <code>optional uint64 node_prefetch_misses = 53;</code>
+     */
+    boolean hasNodePrefetchMisses();
+    /**
+     * <code>optional uint64 node_prefetch_misses = 53;</code>
+     */
+    long getNodePrefetchMisses();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.PerfStatistics}
+   *
+   * <pre>
+   **
+   * Describes a sample of events from "perf stat". Only available on
+   * Linux.
+   *
+   * NOTE: Each optional field matches the name of a perf event (see
+   * "perf list") with the following changes:
+   * 1. Names are downcased.
+   * 2. Hyphens ('-') are replaced with underscores ('_').
+   * 3. Events with alternate names use the name "perf stat" returns,
+   *    e.g., for the event "cycles OR cpu-cycles" perf always returns
+   *    cycles.
+   * </pre>
+   */
+  public static final class PerfStatistics extends
+      com.google.protobuf.GeneratedMessage
+      implements PerfStatisticsOrBuilder {
+    // Use PerfStatistics.newBuilder() to construct.
+    private PerfStatistics(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private PerfStatistics(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final PerfStatistics defaultInstance;
+    public static PerfStatistics getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public PerfStatistics getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private PerfStatistics(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      int mutable_bitField1_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 9: {
+              bitField0_ |= 0x00000001;
+              timestamp_ = input.readDouble();
+              break;
+            }
+            case 17: {
+              bitField0_ |= 0x00000002;
+              duration_ = input.readDouble();
+              break;
+            }
+            case 24: {
+              bitField0_ |= 0x00000004;
+              cycles_ = input.readUInt64();
+              break;
+            }
+            case 32: {
+              bitField0_ |= 0x00000008;
+              stalledCyclesFrontend_ = input.readUInt64();
+              break;
+            }
+            case 40: {
+              bitField0_ |= 0x00000010;
+              stalledCyclesBackend_ = input.readUInt64();
+              break;
+            }
+            case 48: {
+              bitField0_ |= 0x00000020;
+              instructions_ = input.readUInt64();
+              break;
+            }
+            case 56: {
+              bitField0_ |= 0x00000040;
+              cacheReferences_ = input.readUInt64();
+              break;
+            }
+            case 64: {
+              bitField0_ |= 0x00000080;
+              cacheMisses_ = input.readUInt64();
+              break;
+            }
+            case 72: {
+              bitField0_ |= 0x00000100;
+              branches_ = input.readUInt64();
+              break;
+            }
+            case 80: {
+              bitField0_ |= 0x00000200;
+              branchMisses_ = input.readUInt64();
+              break;
+            }
+            case 88: {
+              bitField0_ |= 0x00000400;
+              busCycles_ = input.readUInt64();
+              break;
+            }
+            case 96: {
+              bitField0_ |= 0x00000800;
+              refCycles_ = input.readUInt64();
+              break;
+            }
+            case 105: {
+              bitField0_ |= 0x00001000;
+              cpuClock_ = input.readDouble();
+              break;
+            }
+            case 113: {
+              bitField0_ |= 0x00002000;
+              taskClock_ = input.readDouble();
+              break;
+            }
+            case 120: {
+              bitField0_ |= 0x00004000;
+              pageFaults_ = input.readUInt64();
+              break;
+            }
+            case 128: {
+              bitField0_ |= 0x00008000;
+              minorFaults_ = input.readUInt64();
+              break;
+            }
+            case 136: {
+              bitField0_ |= 0x00010000;
+              majorFaults_ = input.readUInt64();
+              break;
+            }
+            case 144: {
+              bitField0_ |= 0x00020000;
+              contextSwitches_ = input.readUInt64();
+              break;
+            }
+            case 152: {
+              bitField0_ |= 0x00040000;
+              cpuMigrations_ = input.readUInt64();
+              break;
+            }
+            case 160: {
+              bitField0_ |= 0x00080000;
+              alignmentFaults_ = input.readUInt64();
+              break;
+            }
+            case 168: {
+              bitField0_ |= 0x00100000;
+              emulationFaults_ = input.readUInt64();
+              break;
+            }
+            case 176: {
+              bitField0_ |= 0x00200000;
+              l1DcacheLoads_ = input.readUInt64();
+              break;
+            }
+            case 184: {
+              bitField0_ |= 0x00400000;
+              l1DcacheLoadMisses_ = input.readUInt64();
+              break;
+            }
+            case 192: {
+              bitField0_ |= 0x00800000;
+              l1DcacheStores_ = input.readUInt64();
+              break;
+            }
+            case 200: {
+              bitField0_ |= 0x01000000;
+              l1DcacheStoreMisses_ = input.readUInt64();
+              break;
+            }
+            case 208: {
+              bitField0_ |= 0x02000000;
+              l1DcachePrefetches_ = input.readUInt64();
+              break;
+            }
+            case 216: {
+              bitField0_ |= 0x04000000;
+              l1DcachePrefetchMisses_ = input.readUInt64();
+              break;
+            }
+            case 224: {
+              bitField0_ |= 0x08000000;
+              l1IcacheLoads_ = input.readUInt64();
+              break;
+            }
+            case 232: {
+              bitField0_ |= 0x10000000;
+              l1IcacheLoadMisses_ = input.readUInt64();
+              break;
+            }
+            case 240: {
+              bitField0_ |= 0x20000000;
+              l1IcachePrefetches_ = input.readUInt64();
+              break;
+            }
+            case 248: {
+              bitField0_ |= 0x40000000;
+              l1IcachePrefetchMisses_ = input.readUInt64();
+              break;
+            }
+            case 256: {
+              bitField0_ |= 0x80000000;
+              llcLoads_ = input.readUInt64();
+              break;
+            }
+            case 264: {
+              bitField1_ |= 0x00000001;
+              llcLoadMisses_ = input.readUInt64();
+              break;
+            }
+            case 272: {
+              bitField1_ |= 0x00000002;
+              llcStores_ = input.readUInt64();
+              break;
+            }
+            case 280: {
+              bitField1_ |= 0x00000004;
+              llcStoreMisses_ = input.readUInt64();
+              break;
+            }
+            case 288: {
+              bitField1_ |= 0x00000008;
+              llcPrefetches_ = input.readUInt64();
+              break;
+            }
+            case 296: {
+              bitField1_ |= 0x00000010;
+              llcPrefetchMisses_ = input.readUInt64();
+              break;
+            }
+            case 304: {
+              bitField1_ |= 0x00000020;
+              dtlbLoads_ = input.readUInt64();
+              break;
+            }
+            case 312: {
+              bitField1_ |= 0x00000040;
+              dtlbLoadMisses_ = input.readUInt64();
+              break;
+            }
+            case 320: {
+              bitField1_ |= 0x00000080;
+              dtlbStores_ = input.readUInt64();
+              break;
+            }
+            case 328: {
+              bitField1_ |= 0x00000100;
+              dtlbStoreMisses_ = input.readUInt64();
+              break;
+            }
+            case 336: {
+              bitField1_ |= 0x00000200;
+              dtlbPrefetches_ = input.readUInt64();
+              break;
+            }
+            case 344: {
+              bitField1_ |= 0x00000400;
+              dtlbPrefetchMisses_ = input.readUInt64();
+              break;
+            }
+            case 352: {
+              bitField1_ |= 0x00000800;
+              itlbLoads_ = input.readUInt64();
+              break;
+            }
+            case 360: {
+              bitField1_ |= 0x00001000;
+              itlbLoadMisses_ = input.readUInt64();
+              break;
+            }
+            case 368: {
+              bitField1_ |= 0x00002000;
+              branchLoads_ = input.readUInt64();
+              break;
+            }
+            case 376: {
+              bitField1_ |= 0x00004000;
+              branchLoadMisses_ = input.readUInt64();
+              break;
+            }
+            case 384: {
+              bitField1_ |= 0x00008000;
+              nodeLoads_ = input.readUInt64();
+              break;
+            }
+            case 392: {
+              bitField1_ |= 0x00010000;
+              nodeLoadMisses_ = input.readUInt64();
+              break;
+            }
+            case 400: {
+              bitField1_ |= 0x00020000;
+              nodeStores_ = input.readUInt64();
+              break;
+            }
+            case 408: {
+              bitField1_ |= 0x00040000;
+              nodeStoreMisses_ = input.readUInt64();
+              break;
+            }
+            case 416: {
+              bitField1_ |= 0x00080000;
+              nodePrefetches_ = input.readUInt64();
+              break;
+            }
+            case 424: {
+              bitField1_ |= 0x00100000;
+              nodePrefetchMisses_ = input.readUInt64();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_PerfStatistics_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_PerfStatistics_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.PerfStatistics.class, org.apache.mesos.v1.Protos.PerfStatistics.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<PerfStatistics> PARSER =
+        new com.google.protobuf.AbstractParser<PerfStatistics>() {
+      public PerfStatistics parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new PerfStatistics(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<PerfStatistics> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    private int bitField1_;
+    // required double timestamp = 1;
+    public static final int TIMESTAMP_FIELD_NUMBER = 1;
+    private double timestamp_;
+    /**
+     * <code>required double timestamp = 1;</code>
+     *
+     * <pre>
+     * Start of sample interval, in seconds since the Epoch.
+     * </pre>
+     */
+    public boolean hasTimestamp() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required double timestamp = 1;</code>
+     *
+     * <pre>
+     * Start of sample interval, in seconds since the Epoch.
+     * </pre>
+     */
+    public double getTimestamp() {
+      return timestamp_;
+    }
+
+    // required double duration = 2;
+    public static final int DURATION_FIELD_NUMBER = 2;
+    private double duration_;
+    /**
+     * <code>required double duration = 2;</code>
+     *
+     * <pre>
+     * Duration of sample interval, in seconds.
+     * </pre>
+     */
+    public boolean hasDuration() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>required double duration = 2;</code>
+     *
+     * <pre>
+     * Duration of sample interval, in seconds.
+     * </pre>
+     */
+    public double getDuration() {
+      return duration_;
+    }
+
+    // optional uint64 cycles = 3;
+    public static final int CYCLES_FIELD_NUMBER = 3;
+    private long cycles_;
+    /**
+     * <code>optional uint64 cycles = 3;</code>
+     *
+     * <pre>
+     * Hardware event.
+     * </pre>
+     */
+    public boolean hasCycles() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional uint64 cycles = 3;</code>
+     *
+     * <pre>
+     * Hardware event.
+     * </pre>
+     */
+    public long getCycles() {
+      return cycles_;
+    }
+
+    // optional uint64 stalled_cycles_frontend = 4;
+    public static final int STALLED_CYCLES_FRONTEND_FIELD_NUMBER = 4;
+    private long stalledCyclesFrontend_;
+    /**
+     * <code>optional uint64 stalled_cycles_frontend = 4;</code>
+     */
+    public boolean hasStalledCyclesFrontend() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional uint64 stalled_cycles_frontend = 4;</code>
+     */
+    public long getStalledCyclesFrontend() {
+      return stalledCyclesFrontend_;
+    }
+
+    // optional uint64 stalled_cycles_backend = 5;
+    public static final int STALLED_CYCLES_BACKEND_FIELD_NUMBER = 5;
+    private long stalledCyclesBackend_;
+    /**
+     * <code>optional uint64 stalled_cycles_backend = 5;</code>
+     */
+    public boolean hasStalledCyclesBackend() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional uint64 stalled_cycles_backend = 5;</code>
+     */
+    public long getStalledCyclesBackend() {
+      return stalledCyclesBackend_;
+    }
+
+    // optional uint64 instructions = 6;
+    public static final int INSTRUCTIONS_FIELD_NUMBER = 6;
+    private long instructions_;
+    /**
+     * <code>optional uint64 instructions = 6;</code>
+     */
+    public boolean hasInstructions() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional uint64 instructions = 6;</code>
+     */
+    public long getInstructions() {
+      return instructions_;
+    }
+
+    // optional uint64 cache_references = 7;
+    public static final int CACHE_REFERENCES_FIELD_NUMBER = 7;
+    private long cacheReferences_;
+    /**
+     * <code>optional uint64 cache_references = 7;</code>
+     */
+    public boolean hasCacheReferences() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional uint64 cache_references = 7;</code>
+     */
+    public long getCacheReferences() {
+      return cacheReferences_;
+    }
+
+    // optional uint64 cache_misses = 8;
+    public static final int CACHE_MISSES_FIELD_NUMBER = 8;
+    private long cacheMisses_;
+    /**
+     * <code>optional uint64 cache_misses = 8;</code>
+     */
+    public boolean hasCacheMisses() {
+      return ((bitField0_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional uint64 cache_misses = 8;</code>
+     */
+    public long getCacheMisses() {
+      return cacheMisses_;
+    }
+
+    // optional uint64 branches = 9;
+    public static final int BRANCHES_FIELD_NUMBER = 9;
+    private long branches_;
+    /**
+     * <code>optional uint64 branches = 9;</code>
+     */
+    public boolean hasBranches() {
+      return ((bitField0_ & 0x00000100) == 0x00000100);
+    }
+    /**
+     * <code>optional uint64 branches = 9;</code>
+     */
+    public long getBranches() {
+      return branches_;
+    }
+
+    // optional uint64 branch_misses = 10;
+    public static final int BRANCH_MISSES_FIELD_NUMBER = 10;
+    private long branchMisses_;
+    /**
+     * <code>optional uint64 branch_misses = 10;</code>
+     */
+    public boolean hasBranchMisses() {
+      return ((bitField0_ & 0x00000200) == 0x00000200);
+    }
+    /**
+     * <code>optional uint64 branch_misses = 10;</code>
+     */
+    public long getBranchMisses() {
+      return branchMisses_;
+    }
+
+    // optional uint64 bus_cycles = 11;
+    public static final int BUS_CYCLES_FIELD_NUMBER = 11;
+    private long busCycles_;
+    /**
+     * <code>optional uint64 bus_cycles = 11;</code>
+     */
+    public boolean hasBusCycles() {
+      return ((bitField0_ & 0x00000400) == 0x00000400);
+    }
+    /**
+     * <code>optional uint64 bus_cycles = 11;</code>
+     */
+    public long getBusCycles() {
+      return busCycles_;
+    }
+
+    // optional uint64 ref_cycles = 12;
+    public static final int REF_CYCLES_FIELD_NUMBER = 12;
+    private long refCycles_;
+    /**
+     * <code>optional uint64 ref_cycles = 12;</code>
+     */
+    public boolean hasRefCycles() {
+      return ((bitField0_ & 0x00000800) == 0x00000800);
+    }
+    /**
+     * <code>optional uint64 ref_cycles = 12;</code>
+     */
+    public long getRefCycles() {
+      return refCycles_;
+    }
+
+    // optional double cpu_clock = 13;
+    public static final int CPU_CLOCK_FIELD_NUMBER = 13;
+    private double cpuClock_;
+    /**
+     * <code>optional double cpu_clock = 13;</code>
+     *
+     * <pre>
+     * Software event.
+     * </pre>
+     */
+    public boolean hasCpuClock() {
+      return ((bitField0_ & 0x00001000) == 0x00001000);
+    }
+    /**
+     * <code>optional double cpu_clock = 13;</code>
+     *
+     * <pre>
+     * Software event.
+     * </pre>
+     */
+    public double getCpuClock() {
+      return cpuClock_;
+    }
+
+    // optional double task_clock = 14;
+    public static final int TASK_CLOCK_FIELD_NUMBER = 14;
+    private double taskClock_;
+    /**
+     * <code>optional double task_clock = 14;</code>
+     */
+    public boolean hasTaskClock() {
+      return ((bitField0_ & 0x00002000) == 0x00002000);
+    }
+    /**
+     * <code>optional double task_clock = 14;</code>
+     */
+    public double getTaskClock() {
+      return taskClock_;
+    }
+
+    // optional uint64 page_faults = 15;
+    public static final int PAGE_FAULTS_FIELD_NUMBER = 15;
+    private long pageFaults_;
+    /**
+     * <code>optional uint64 page_faults = 15;</code>
+     */
+    public boolean hasPageFaults() {
+      return ((bitField0_ & 0x00004000) == 0x00004000);
+    }
+    /**
+     * <code>optional uint64 page_faults = 15;</code>
+     */
+    public long getPageFaults() {
+      return pageFaults_;
+    }
+
+    // optional uint64 minor_faults = 16;
+    public static final int MINOR_FAULTS_FIELD_NUMBER = 16;
+    private long minorFaults_;
+    /**
+     * <code>optional uint64 minor_faults = 16;</code>
+     */
+    public boolean hasMinorFaults() {
+      return ((bitField0_ & 0x00008000) == 0x00008000);
+    }
+    /**
+     * <code>optional uint64 minor_faults = 16;</code>
+     */
+    public long getMinorFaults() {
+      return minorFaults_;
+    }
+
+    // optional uint64 major_faults = 17;
+    public static final int MAJOR_FAULTS_FIELD_NUMBER = 17;
+    private long majorFaults_;
+    /**
+     * <code>optional uint64 major_faults = 17;</code>
+     */
+    public boolean hasMajorFaults() {
+      return ((bitField0_ & 0x00010000) == 0x00010000);
+    }
+    /**
+     * <code>optional uint64 major_faults = 17;</code>
+     */
+    public long getMajorFaults() {
+      return majorFaults_;
+    }
+
+    // optional uint64 context_switches = 18;
+    public static final int CONTEXT_SWITCHES_FIELD_NUMBER = 18;
+    private long contextSwitches_;
+    /**
+     * <code>optional uint64 context_switches = 18;</code>
+     */
+    public boolean hasContextSwitches() {
+      return ((bitField0_ & 0x00020000) == 0x00020000);
+    }
+    /**
+     * <code>optional uint64 context_switches = 18;</code>
+     */
+    public long getContextSwitches() {
+      return contextSwitches_;
+    }
+
+    // optional uint64 cpu_migrations = 19;
+    public static final int CPU_MIGRATIONS_FIELD_NUMBER = 19;
+    private long cpuMigrations_;
+    /**
+     * <code>optional uint64 cpu_migrations = 19;</code>
+     */
+    public boolean hasCpuMigrations() {
+      return ((bitField0_ & 0x00040000) == 0x00040000);
+    }
+    /**
+     * <code>optional uint64 cpu_migrations = 19;</code>
+     */
+    public long getCpuMigrations() {
+      return cpuMigrations_;
+    }
+
+    // optional uint64 alignment_faults = 20;
+    public static final int ALIGNMENT_FAULTS_FIELD_NUMBER = 20;
+    private long alignmentFaults_;
+    /**
+     * <code>optional uint64 alignment_faults = 20;</code>
+     */
+    public boolean hasAlignmentFaults() {
+      return ((bitField0_ & 0x00080000) == 0x00080000);
+    }
+    /**
+     * <code>optional uint64 alignment_faults = 20;</code>
+     */
+    public long getAlignmentFaults() {
+      return alignmentFaults_;
+    }
+
+    // optional uint64 emulation_faults = 21;
+    public static final int EMULATION_FAULTS_FIELD_NUMBER = 21;
+    private long emulationFaults_;
+    /**
+     * <code>optional uint64 emulation_faults = 21;</code>
+     */
+    public boolean hasEmulationFaults() {
+      return ((bitField0_ & 0x00100000) == 0x00100000);
+    }
+    /**
+     * <code>optional uint64 emulation_faults = 21;</code>
+     */
+    public long getEmulationFaults() {
+      return emulationFaults_;
+    }
+
+    // optional uint64 l1_dcache_loads = 22;
+    public static final int L1_DCACHE_LOADS_FIELD_NUMBER = 22;
+    private long l1DcacheLoads_;
+    /**
+     * <code>optional uint64 l1_dcache_loads = 22;</code>
+     *
+     * <pre>
+     * Hardware cache event.
+     * </pre>
+     */
+    public boolean hasL1DcacheLoads() {
+      return ((bitField0_ & 0x00200000) == 0x00200000);
+    }
+    /**
+     * <code>optional uint64 l1_dcache_loads = 22;</code>
+     *
+     * <pre>
+     * Hardware cache event.
+     * </pre>
+     */
+    public long getL1DcacheLoads() {
+      return l1DcacheLoads_;
+    }
+
+    // optional uint64 l1_dcache_load_misses = 23;
+    public static final int L1_DCACHE_LOAD_MISSES_FIELD_NUMBER = 23;
+    private long l1DcacheLoadMisses_;
+    /**
+     * <code>optional uint64 l1_dcache_load_misses = 23;</code>
+     */
+    public boolean hasL1DcacheLoadMisses() {
+      return ((bitField0_ & 0x00400000) == 0x00400000);
+    }
+    /**
+     * <code>optional uint64 l1_dcache_load_misses = 23;</code>
+     */
+    public long getL1DcacheLoadMisses() {
+      return l1DcacheLoadMisses_;
+    }
+
+    // optional uint64 l1_dcache_stores = 24;
+    public static final int L1_DCACHE_STORES_FIELD_NUMBER = 24;
+    private long l1DcacheStores_;
+    /**
+     * <code>optional uint64 l1_dcache_stores = 24;</code>
+     */
+    public boolean hasL1DcacheStores() {
+      return ((bitField0_ & 0x00800000) == 0x00800000);
+    }
+    /**
+     * <code>optional uint64 l1_dcache_stores = 24;</code>
+     */
+    public long getL1DcacheStores() {
+      return l1DcacheStores_;
+    }
+
+    // optional uint64 l1_dcache_store_misses = 25;
+    public static final int L1_DCACHE_STORE_MISSES_FIELD_NUMBER = 25;
+    private long l1DcacheStoreMisses_;
+    /**
+     * <code>optional uint64 l1_dcache_store_misses = 25;</code>
+     */
+    public boolean hasL1DcacheStoreMisses() {
+      return ((bitField0_ & 0x01000000) == 0x01000000);
+    }
+    /**
+     * <code>optional uint64 l1_dcache_store_misses = 25;</code>
+     */
+    public long getL1DcacheStoreMisses() {
+      return l1DcacheStoreMisses_;
+    }
+
+    // optional uint64 l1_dcache_prefetches = 26;
+    public static final int L1_DCACHE_PREFETCHES_FIELD_NUMBER = 26;
+    private long l1DcachePrefetches_;
+    /**
+     * <code>optional uint64 l1_dcache_prefetches = 26;</code>
+     */
+    public boolean hasL1DcachePrefetches() {
+      return ((bitField0_ & 0x02000000) == 0x02000000);
+    }
+    /**
+     * <code>optional uint64 l1_dcache_prefetches = 26;</code>
+     */
+    public long getL1DcachePrefetches() {
+      return l1DcachePrefetches_;
+    }
+
+    // optional uint64 l1_dcache_prefetch_misses = 27;
+    public static final int L1_DCACHE_PREFETCH_MISSES_FIELD_NUMBER = 27;
+    private long l1DcachePrefetchMisses_;
+    /**
+     * <code>optional uint64 l1_dcache_prefetch_misses = 27;</code>
+     */
+    public boolean hasL1DcachePrefetchMisses() {
+      return ((bitField0_ & 0x04000000) == 0x04000000);
+    }
+    /**
+     * <code>optional uint64 l1_dcache_prefetch_misses = 27;</code>
+     */
+    public long getL1DcachePrefetchMisses() {
+      return l1DcachePrefetchMisses_;
+    }
+
+    // optional uint64 l1_icache_loads = 28;
+    public static final int L1_ICACHE_LOADS_FIELD_NUMBER = 28;
+    private long l1IcacheLoads_;
+    /**
+     * <code>optional uint64 l1_icache_loads = 28;</code>
+     */
+    public boolean hasL1IcacheLoads() {
+      return ((bitField0_ & 0x08000000) == 0x08000000);
+    }
+    /**
+     * <code>optional uint64 l1_icache_loads = 28;</code>
+     */
+    public long getL1IcacheLoads() {
+      return l1IcacheLoads_;
+    }
+
+    // optional uint64 l1_icache_load_misses = 29;
+    public static final int L1_ICACHE_LOAD_MISSES_FIELD_NUMBER = 29;
+    private long l1IcacheLoadMisses_;
+    /**
+     * <code>optional uint64 l1_icache_load_misses = 29;</code>
+     */
+    public boolean hasL1IcacheLoadMisses() {
+      return ((bitField0_ & 0x10000000) == 0x10000000);
+    }
+    /**
+     * <code>optional uint64 l1_icache_load_misses = 29;</code>
+     */
+    public long getL1IcacheLoadMisses() {
+      return l1IcacheLoadMisses_;
+    }
+
+    // optional uint64 l1_icache_prefetches = 30;
+    public static final int L1_ICACHE_PREFETCHES_FIELD_NUMBER = 30;
+    private long l1IcachePrefetches_;
+    /**
+     * <code>optional uint64 l1_icache_prefetches = 30;</code>
+     */
+    public boolean hasL1IcachePrefetches() {
+      return ((bitField0_ & 0x20000000) == 0x20000000);
+    }
+    /**
+     * <code>optional uint64 l1_icache_prefetches = 30;</code>
+     */
+    public long getL1IcachePrefetches() {
+      return l1IcachePrefetches_;
+    }
+
+    // optional uint64 l1_icache_prefetch_misses = 31;
+    public static final int L1_ICACHE_PREFETCH_MISSES_FIELD_NUMBER = 31;
+    private long l1IcachePrefetchMisses_;
+    /**
+     * <code>optional uint64 l1_icache_prefetch_misses = 31;</code>
+     */
+    public boolean hasL1IcachePrefetchMisses() {
+      return ((bitField0_ & 0x40000000) == 0x40000000);
+    }
+    /**
+     * <code>optional uint64 l1_icache_prefetch_misses = 31;</code>
+     */
+    public long getL1IcachePrefetchMisses() {
+      return l1IcachePrefetchMisses_;
+    }
+
+    // optional uint64 llc_loads = 32;
+    public static final int LLC_LOADS_FIELD_NUMBER = 32;
+    private long llcLoads_;
+    /**
+     * <code>optional uint64 llc_loads = 32;</code>
+     */
+    public boolean hasLlcLoads() {
+      return ((bitField0_ & 0x80000000) == 0x80000000);
+    }
+    /**
+     * <code>optional uint64 llc_loads = 32;</code>
+     */
+    public long getLlcLoads() {
+      return llcLoads_;
+    }
+
+    // optional uint64 llc_load_misses = 33;
+    public static final int LLC_LOAD_MISSES_FIELD_NUMBER = 33;
+    private long llcLoadMisses_;
+    /**
+     * <code>optional uint64 llc_load_misses = 33;</code>
+     */
+    public boolean hasLlcLoadMisses() {
+      return ((bitField1_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional uint64 llc_load_misses = 33;</code>
+     */
+    public long getLlcLoadMisses() {
+      return llcLoadMisses_;
+    }
+
+    // optional uint64 llc_stores = 34;
+    public static final int LLC_STORES_FIELD_NUMBER = 34;
+    private long llcStores_;
+    /**
+     * <code>optional uint64 llc_stores = 34;</code>
+     */
+    public boolean hasLlcStores() {
+      return ((bitField1_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional uint64 llc_stores = 34;</code>
+     */
+    public long getLlcStores() {
+      return llcStores_;
+    }
+
+    // optional uint64 llc_store_misses = 35;
+    public static final int LLC_STORE_MISSES_FIELD_NUMBER = 35;
+    private long llcStoreMisses_;
+    /**
+     * <code>optional uint64 llc_store_misses = 35;</code>
+     */
+    public boolean hasLlcStoreMisses() {
+      return ((bitField1_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional uint64 llc_store_misses = 35;</code>
+     */
+    public long getLlcStoreMisses() {
+      return llcStoreMisses_;
+    }
+
+    // optional uint64 llc_prefetches = 36;
+    public static final int LLC_PREFETCHES_FIELD_NUMBER = 36;
+    private long llcPrefetches_;
+    /**
+     * <code>optional uint64 llc_prefetches = 36;</code>
+     */
+    public boolean hasLlcPrefetches() {
+      return ((bitField1_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional uint64 llc_prefetches = 36;</code>
+     */
+    public long getLlcPrefetches() {
+      return llcPrefetches_;
+    }
+
+    // optional uint64 llc_prefetch_misses = 37;
+    public static final int LLC_PREFETCH_MISSES_FIELD_NUMBER = 37;
+    private long llcPrefetchMisses_;
+    /**
+     * <code>optional uint64 llc_prefetch_misses = 37;</code>
+     */
+    public boolean hasLlcPrefetchMisses() {
+      return ((bitField1_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional uint64 llc_prefetch_misses = 37;</code>
+     */
+    public long getLlcPrefetchMisses() {
+      return llcPrefetchMisses_;
+    }
+
+    // optional uint64 dtlb_loads = 38;
+    public static final int DTLB_LOADS_FIELD_NUMBER = 38;
+    private long dtlbLoads_;
+    /**
+     * <code>optional uint64 dtlb_loads = 38;</code>
+     */
+    public boolean hasDtlbLoads() {
+      return ((bitField1_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional uint64 dtlb_loads = 38;</code>
+     */
+    public long getDtlbLoads() {
+      return dtlbLoads_;
+    }
+
+    // optional uint64 dtlb_load_misses = 39;
+    public static final int DTLB_LOAD_MISSES_FIELD_NUMBER = 39;
+    private long dtlbLoadMisses_;
+    /**
+     * <code>optional uint64 dtlb_load_misses = 39;</code>
+     */
+    public boolean hasDtlbLoadMisses() {
+      return ((bitField1_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional uint64 dtlb_load_misses = 39;</code>
+     */
+    public long getDtlbLoadMisses() {
+      return dtlbLoadMisses_;
+    }
+
+    // optional uint64 dtlb_stores = 40;
+    public static final int DTLB_STORES_FIELD_NUMBER = 40;
+    private long dtlbStores_;
+    /**
+     * <code>optional uint64 dtlb_stores = 40;</code>
+     */
+    public boolean hasDtlbStores() {
+      return ((bitField1_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional uint64 dtlb_stores = 40;</code>
+     */
+    public long getDtlbStores() {
+      return dtlbStores_;
+    }
+
+    // optional uint64 dtlb_store_misses = 41;
+    public static final int DTLB_STORE_MISSES_FIELD_NUMBER = 41;
+    private long dtlbStoreMisses_;
+    /**
+     * <code>optional uint64 dtlb_store_misses = 41;</code>
+     */
+    public boolean hasDtlbStoreMisses() {
+      return ((bitField1_ & 0x00000100) == 0x00000100);
+    }
+    /**
+     * <code>optional uint64 dtlb_store_misses = 41;</code>
+     */
+    public long getDtlbStoreMisses() {
+      return dtlbStoreMisses_;
+    }
+
+    // optional uint64 dtlb_prefetches = 42;
+    public static final int DTLB_PREFETCHES_FIELD_NUMBER = 42;
+    private long dtlbPrefetches_;
+    /**
+     * <code>optional uint64 dtlb_prefetches = 42;</code>
+     */
+    public boolean hasDtlbPrefetches() {
+      return ((bitField1_ & 0x00000200) == 0x00000200);
+    }
+    /**
+     * <code>optional uint64 dtlb_prefetches = 42;</code>
+     */
+    public long getDtlbPrefetches() {
+      return dtlbPrefetches_;
+    }
+
+    // optional uint64 dtlb_prefetch_misses = 43;
+    public static final int DTLB_PREFETCH_MISSES_FIELD_NUMBER = 43;
+    private long dtlbPrefetchMisses_;
+    /**
+     * <code>optional uint64 dtlb_prefetch_misses = 43;</code>
+     */
+    public boolean hasDtlbPrefetchMisses() {
+      return ((bitField1_ & 0x00000400) == 0x00000400);
+    }
+    /**
+     * <code>optional uint64 dtlb_prefetch_misses = 43;</code>
+     */
+    public long getDtlbPrefetchMisses() {
+      return dtlbPrefetchMisses_;
+    }
+
+    // optional uint64 itlb_loads = 44;
+    public static final int ITLB_LOADS_FIELD_NUMBER = 44;
+    private long itlbLoads_;
+    /**
+     * <code>optional uint64 itlb_loads = 44;</code>
+     */
+    public boolean hasItlbLoads() {
+      return ((bitField1_ & 0x00000800) == 0x00000800);
+    }
+    /**
+     * <code>optional uint64 itlb_loads = 44;</code>
+     */
+    public long getItlbLoads() {
+      return itlbLoads_;
+    }
+
+    // optional uint64 itlb_load_misses = 45;
+    public static final int ITLB_LOAD_MISSES_FIELD_NUMBER = 45;
+    private long itlbLoadMisses_;
+    /**
+     * <code>optional uint64 itlb_load_misses = 45;</code>
+     */
+    public boolean hasItlbLoadMisses() {
+      return ((bitField1_ & 0x00001000) == 0x00001000);
+    }
+    /**
+     * <code>optional uint64 itlb_load_misses = 45;</code>
+     */
+    public long getItlbLoadMisses() {
+      return itlbLoadMisses_;
+    }
+
+    // optional uint64 branch_loads = 46;
+    public static final int BRANCH_LOADS_FIELD_NUMBER = 46;
+    private long branchLoads_;
+    /**
+     * <code>optional uint64 branch_loads = 46;</code>
+     */
+    public boolean hasBranchLoads() {
+      return ((bitField1_ & 0x00002000) == 0x00002000);
+    }
+    /**
+     * <code>optional uint64 branch_loads = 46;</code>
+     */
+    public long getBranchLoads() {
+      return branchLoads_;
+    }
+
+    // optional uint64 branch_load_misses = 47;
+    public static final int BRANCH_LOAD_MISSES_FIELD_NUMBER = 47;
+    private long branchLoadMisses_;
+    /**
+     * <code>optional uint64 branch_load_misses = 47;</code>
+     */
+    public boolean hasBranchLoadMisses() {
+      return ((bitField1_ & 0x00004000) == 0x00004000);
+    }
+    /**
+     * <code>optional uint64 branch_load_misses = 47;</code>
+     */
+    public long getBranchLoadMisses() {
+      return branchLoadMisses_;
+    }
+
+    // optional uint64 node_loads = 48;
+    public static final int NODE_LOADS_FIELD_NUMBER = 48;
+    private long nodeLoads_;
+    /**
+     * <code>optional uint64 node_loads = 48;</code>
+     */
+    public boolean hasNodeLoads() {
+      return ((bitField1_ & 0x00008000) == 0x00008000);
+    }
+    /**
+     * <code>optional uint64 node_loads = 48;</code>
+     */
+    public long getNodeLoads() {
+      return nodeLoads_;
+    }
+
+    // optional uint64 node_load_misses = 49;
+    public static final int NODE_LOAD_MISSES_FIELD_NUMBER = 49;
+    private long nodeLoadMisses_;
+    /**
+     * <code>optional uint64 node_load_misses = 49;</code>
+     */
+    public boolean hasNodeLoadMisses() {
+      return ((bitField1_ & 0x00010000) == 0x00010000);
+    }
+    /**
+     * <code>optional uint64 node_load_misses = 49;</code>
+     */
+    public long getNodeLoadMisses() {
+      return nodeLoadMisses_;
+    }
+
+    // optional uint64 node_stores = 50;
+    public static final int NODE_STORES_FIELD_NUMBER = 50;
+    private long nodeStores_;
+    /**
+     * <code>optional uint64 node_stores = 50;</code>
+     */
+    public boolean hasNodeStores() {
+      return ((bitField1_ & 0x00020000) == 0x00020000);
+    }
+    /**
+     * <code>optional uint64 node_stores = 50;</code>
+     */
+    public long getNodeStores() {
+      return nodeStores_;
+    }
+
+    // optional uint64 node_store_misses = 51;
+    public static final int NODE_STORE_MISSES_FIELD_NUMBER = 51;
+    private long nodeStoreMisses_;
+    /**
+     * <code>optional uint64 node_store_misses = 51;</code>
+     */
+    public boolean hasNodeStoreMisses() {
+      return ((bitField1_ & 0x00040000) == 0x00040000);
+    }
+    /**
+     * <code>optional uint64 node_store_misses = 51;</code>
+     */
+    public long getNodeStoreMisses() {
+      return nodeStoreMisses_;
+    }
+
+    // optional uint64 node_prefetches = 52;
+    public static final int NODE_PREFETCHES_FIELD_NUMBER = 52;
+    private long nodePrefetches_;
+    /**
+     * <code>optional uint64 node_prefetches = 52;</code>
+     */
+    public boolean hasNodePrefetches() {
+      return ((bitField1_ & 0x00080000) == 0x00080000);
+    }
+    /**
+     * <code>optional uint64 node_prefetches = 52;</code>
+     */
+    public long getNodePrefetches() {
+      return nodePrefetches_;
+    }
+
+    // optional uint64 node_prefetch_misses = 53;
+    public static final int NODE_PREFETCH_MISSES_FIELD_NUMBER = 53;
+    private long nodePrefetchMisses_;
+    /**
+     * <code>optional uint64 node_prefetch_misses = 53;</code>
+     */
+    public boolean hasNodePrefetchMisses() {
+      return ((bitField1_ & 0x00100000) == 0x00100000);
+    }
+    /**
+     * <code>optional uint64 node_prefetch_misses = 53;</code>
+     */
+    public long getNodePrefetchMisses() {
+      return nodePrefetchMisses_;
+    }
+
+    private void initFields() {
+      timestamp_ = 0D;
+      duration_ = 0D;
+      cycles_ = 0L;
+      stalledCyclesFrontend_ = 0L;
+      stalledCyclesBackend_ = 0L;
+      instructions_ = 0L;
+      cacheReferences_ = 0L;
+      cacheMisses_ = 0L;
+      branches_ = 0L;
+      branchMisses_ = 0L;
+      busCycles_ = 0L;
+      refCycles_ = 0L;
+      cpuClock_ = 0D;
+      taskClock_ = 0D;
+      pageFaults_ = 0L;
+      minorFaults_ = 0L;
+      majorFaults_ = 0L;
+      contextSwitches_ = 0L;
+      cpuMigrations_ = 0L;
+      alignmentFaults_ = 0L;
+      emulationFaults_ = 0L;
+      l1DcacheLoads_ = 0L;
+      l1DcacheLoadMisses_ = 0L;
+      l1DcacheStores_ = 0L;
+      l1DcacheStoreMisses_ = 0L;
+      l1DcachePrefetches_ = 0L;
+      l1DcachePrefetchMisses_ = 0L;
+      l1IcacheLoads_ = 0L;
+      l1IcacheLoadMisses_ = 0L;
+      l1IcachePrefetches_ = 0L;
+      l1IcachePrefetchMisses_ = 0L;
+      llcLoads_ = 0L;
+      llcLoadMisses_ = 0L;
+      llcStores_ = 0L;
+      llcStoreMisses_ = 0L;
+      llcPrefetches_ = 0L;
+      llcPrefetchMisses_ = 0L;
+      dtlbLoads_ = 0L;
+      dtlbLoadMisses_ = 0L;
+      dtlbStores_ = 0L;
+      dtlbStoreMisses_ = 0L;
+      dtlbPrefetches_ = 0L;
+      dtlbPrefetchMisses_ = 0L;
+      itlbLoads_ = 0L;
+      itlbLoadMisses_ = 0L;
+      branchLoads_ = 0L;
+      branchLoadMisses_ = 0L;
+      nodeLoads_ = 0L;
+      nodeLoadMisses_ = 0L;
+      nodeStores_ = 0L;
+      nodeStoreMisses_ = 0L;
+      nodePrefetches_ = 0L;
+      nodePrefetchMisses_ = 0L;
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasTimestamp()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasDuration()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeDouble(1, timestamp_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeDouble(2, duration_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeUInt64(3, cycles_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeUInt64(4, stalledCyclesFrontend_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeUInt64(5, stalledCyclesBackend_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeUInt64(6, instructions_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeUInt64(7, cacheReferences_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        output.writeUInt64(8, cacheMisses_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        output.writeUInt64(9, branches_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        output.writeUInt64(10, branchMisses_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        output.writeUInt64(11, busCycles_);
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        output.writeUInt64(12, refCycles_);
+      }
+      if (((bitField0_ & 0x00001000) == 0x00001000)) {
+        output.writeDouble(13, cpuClock_);
+      }
+      if (((bitField0_ & 0x00002000) == 0x00002000)) {
+        output.writeDouble(14, taskClock_);
+      }
+      if (((bitField0_ & 0x00004000) == 0x00004000)) {
+        output.writeUInt64(15, pageFaults_);
+      }
+      if (((bitField0_ & 0x00008000) == 0x00008000)) {
+        output.writeUInt64(16, minorFaults_);
+      }
+      if (((bitField0_ & 0x00010000) == 0x00010000)) {
+        output.writeUInt64(17, majorFaults_);
+      }
+      if (((bitField0_ & 0x00020000) == 0x00020000)) {
+        output.writeUInt64(18, contextSwitches_);
+      }
+      if (((bitField0_ & 0x00040000) == 0x00040000)) {
+        output.writeUInt64(19, cpuMigrations_);
+      }
+      if (((bitField0_ & 0x00080000) == 0x00080000)) {
+        output.writeUInt64(20, alignmentFaults_);
+      }
+      if (((bitField0_ & 0x00100000) == 0x00100000)) {
+        output.writeUInt64(21, emulationFaults_);
+      }
+      if (((bitField0_ & 0x00200000) == 0x00200000)) {
+        output.writeUInt64(22, l1DcacheLoads_);
+      }
+      if (((bitField0_ & 0x00400000) == 0x00400000)) {
+        output.writeUInt64(23, l1DcacheLoadMisses_);
+      }
+      if (((bitField0_ & 0x00800000) == 0x00800000)) {
+        output.writeUInt64(24, l1DcacheStores_);
+      }
+      if (((bitField0_ & 0x01000000) == 0x01000000)) {
+        output.writeUInt64(25, l1DcacheStoreMisses_);
+      }
+      if (((bitField0_ & 0x02000000) == 0x02000000)) {
+        output.writeUInt64(26, l1DcachePrefetches_);
+      }
+      if (((bitField0_ & 0x04000000) == 0x04000000)) {
+        output.writeUInt64(27, l1DcachePrefetchMisses_);
+      }
+      if (((bitField0_ & 0x08000000) == 0x08000000)) {
+        output.writeUInt64(28, l1IcacheLoads_);
+      }
+      if (((bitField0_ & 0x10000000) == 0x10000000)) {
+        output.writeUInt64(29, l1IcacheLoadMisses_);
+      }
+      if (((bitField0_ & 0x20000000) == 0x20000000)) {
+        output.writeUInt64(30, l1IcachePrefetches_);
+      }
+      if (((bitField0_ & 0x40000000) == 0x40000000)) {
+        output.writeUInt64(31, l1IcachePrefetchMisses_);
+      }
+      if (((bitField0_ & 0x80000000) == 0x80000000)) {
+        output.writeUInt64(32, llcLoads_);
+      }
+      if (((bitField1_ & 0x00000001) == 0x00000001)) {
+        output.writeUInt64(33, llcLoadMisses_);
+      }
+      if (((bitField1_ & 0x00000002) == 0x00000002)) {
+        output.writeUInt64(34, llcStores_);
+      }
+      if (((bitField1_ & 0x00000004) == 0x00000004)) {
+        output.writeUInt64(35, llcStoreMisses_);
+      }
+      if (((bitField1_ & 0x00000008) == 0x00000008)) {
+        output.writeUInt64(36, llcPrefetches_);
+      }
+      if (((bitField1_ & 0x00000010) == 0x00000010)) {
+        output.writeUInt64(37, llcPrefetchMisses_);
+      }
+      if (((bitField1_ & 0x00000020) == 0x00000020)) {
+        output.writeUInt64(38, dtlbLoads_);
+      }
+      if (((bitField1_ & 0x00000040) == 0x00000040)) {
+        output.writeUInt64(39, dtlbLoadMisses_);
+      }
+      if (((bitField1_ & 0x00000080) == 0x00000080)) {
+        output.writeUInt64(40, dtlbStores_);
+      }
+      if (((bitField1_ & 0x00000100) == 0x00000100)) {
+        output.writeUInt64(41, dtlbStoreMisses_);
+      }
+      if (((bitField1_ & 0x00000200) == 0x00000200)) {
+        output.writeUInt64(42, dtlbPrefetches_);
+      }
+      if (((bitField1_ & 0x00000400) == 0x00000400)) {
+        output.writeUInt64(43, dtlbPrefetchMisses_);
+      }
+      if (((bitField1_ & 0x00000800) == 0x00000800)) {
+        output.writeUInt64(44, itlbLoads_);
+      }
+      if (((bitField1_ & 0x00001000) == 0x00001000)) {
+        output.writeUInt64(45, itlbLoadMisses_);
+      }
+      if (((bitField1_ & 0x00002000) == 0x00002000)) {
+        output.writeUInt64(46, branchLoads_);
+      }
+      if (((bitField1_ & 0x00004000) == 0x00004000)) {
+        output.writeUInt64(47, branchLoadMisses_);
+      }
+      if (((bitField1_ & 0x00008000) == 0x00008000)) {
+        output.writeUInt64(48, nodeLoads_);
+      }
+      if (((bitField1_ & 0x00010000) == 0x00010000)) {
+        output.writeUInt64(49, nodeLoadMisses_);
+      }
+      if (((bitField1_ & 0x00020000) == 0x00020000)) {
+        output.writeUInt64(50, nodeStores_);
+      }
+      if (((bitField1_ & 0x00040000) == 0x00040000)) {
+        output.writeUInt64(51, nodeStoreMisses_);
+      }
+      if (((bitField1_ & 0x00080000) == 0x00080000)) {
+        output.writeUInt64(52, nodePrefetches_);
+      }
+      if (((bitField1_ & 0x00100000) == 0x00100000)) {
+        output.writeUInt64(53, nodePrefetchMisses_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(1, timestamp_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(2, duration_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(3, cycles_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(4, stalledCyclesFrontend_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(5, stalledCyclesBackend_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(6, instructions_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(7, cacheReferences_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(8, cacheMisses_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(9, branches_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(10, branchMisses_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(11, busCycles_);
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(12, refCycles_);
+      }
+      if (((bitField0_ & 0x00001000) == 0x00001000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(13, cpuClock_);
+      }
+      if (((bitField0_ & 0x00002000) == 0x00002000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(14, taskClock_);
+      }
+      if (((bitField0_ & 0x00004000) == 0x00004000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(15, pageFaults_);
+      }
+      if (((bitField0_ & 0x00008000) == 0x00008000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(16, minorFaults_);
+      }
+      if (((bitField0_ & 0x00010000) == 0x00010000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(17, majorFaults_);
+      }
+      if (((bitField0_ & 0x00020000) == 0x00020000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(18, contextSwitches_);
+      }
+      if (((bitField0_ & 0x00040000) == 0x00040000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(19, cpuMigrations_);
+      }
+      if (((bitField0_ & 0x00080000) == 0x00080000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(20, alignmentFaults_);
+      }
+      if (((bitField0_ & 0x00100000) == 0x00100000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(21, emulationFaults_);
+      }
+      if (((bitField0_ & 0x00200000) == 0x00200000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(22, l1DcacheLoads_);
+      }
+      if (((bitField0_ & 0x00400000) == 0x00400000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(23, l1DcacheLoadMisses_);
+      }
+      if (((bitField0_ & 0x00800000) == 0x00800000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(24, l1DcacheStores_);
+      }
+      if (((bitField0_ & 0x01000000) == 0x01000000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(25, l1DcacheStoreMisses_);
+      }
+      if (((bitField0_ & 0x02000000) == 0x02000000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(26, l1DcachePrefetches_);
+      }
+      if (((bitField0_ & 0x04000000) == 0x04000000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(27, l1DcachePrefetchMisses_);
+      }
+      if (((bitField0_ & 0x08000000) == 0x08000000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(28, l1IcacheLoads_);
+      }
+      if (((bitField0_ & 0x10000000) == 0x10000000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(29, l1IcacheLoadMisses_);
+      }
+      if (((bitField0_ & 0x20000000) == 0x20000000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(30, l1IcachePrefetches_);
+      }
+      if (((bitField0_ & 0x40000000) == 0x40000000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(31, l1IcachePrefetchMisses_);
+      }
+      if (((bitField0_ & 0x80000000) == 0x80000000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(32, llcLoads_);
+      }
+      if (((bitField1_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(33, llcLoadMisses_);
+      }
+      if (((bitField1_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(34, llcStores_);
+      }
+      if (((bitField1_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(35, llcStoreMisses_);
+      }
+      if (((bitField1_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(36, llcPrefetches_);
+      }
+      if (((bitField1_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(37, llcPrefetchMisses_);
+      }
+      if (((bitField1_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(38, dtlbLoads_);
+      }
+      if (((bitField1_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(39, dtlbLoadMisses_);
+      }
+      if (((bitField1_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(40, dtlbStores_);
+      }
+      if (((bitField1_ & 0x00000100) == 0x00000100)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(41, dtlbStoreMisses_);
+      }
+      if (((bitField1_ & 0x00000200) == 0x00000200)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(42, dtlbPrefetches_);
+      }
+      if (((bitField1_ & 0x00000400) == 0x00000400)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(43, dtlbPrefetchMisses_);
+      }
+      if (((bitField1_ & 0x00000800) == 0x00000800)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(44, itlbLoads_);
+      }
+      if (((bitField1_ & 0x00001000) == 0x00001000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(45, itlbLoadMisses_);
+      }
+      if (((bitField1_ & 0x00002000) == 0x00002000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(46, branchLoads_);
+      }
+      if (((bitField1_ & 0x00004000) == 0x00004000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(47, branchLoadMisses_);
+      }
+      if (((bitField1_ & 0x00008000) == 0x00008000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(48, nodeLoads_);
+      }
+      if (((bitField1_ & 0x00010000) == 0x00010000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(49, nodeLoadMisses_);
+      }
+      if (((bitField1_ & 0x00020000) == 0x00020000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(50, nodeStores_);
+      }
+      if (((bitField1_ & 0x00040000) == 0x00040000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(51, nodeStoreMisses_);
+      }
+      if (((bitField1_ & 0x00080000) == 0x00080000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(52, nodePrefetches_);
+      }
+      if (((bitField1_ & 0x00100000) == 0x00100000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(53, nodePrefetchMisses_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.PerfStatistics parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.PerfStatistics parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.PerfStatistics parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.PerfStatistics parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.PerfStatistics parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.PerfStatistics parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.PerfStatistics parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.PerfStatistics parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.PerfStatistics parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.PerfStatistics parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.PerfStatistics prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.PerfStatistics}
+     *
+     * <pre>
+     **
+     * Describes a sample of events from "perf stat". Only available on
+     * Linux.
+     *
+     * NOTE: Each optional field matches the name of a perf event (see
+     * "perf list") with the following changes:
+     * 1. Names are downcased.
+     * 2. Hyphens ('-') are replaced with underscores ('_').
+     * 3. Events with alternate names use the name "perf stat" returns,
+     *    e.g., for the event "cycles OR cpu-cycles" perf always returns
+     *    cycles.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.PerfStatisticsOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_PerfStatistics_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_PerfStatistics_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.PerfStatistics.class, org.apache.mesos.v1.Protos.PerfStatistics.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.PerfStatistics.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        timestamp_ = 0D;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        duration_ = 0D;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        cycles_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        stalledCyclesFrontend_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        stalledCyclesBackend_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000010);
+        instructions_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000020);
+        cacheReferences_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000040);
+        cacheMisses_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000080);
+        branches_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000100);
+        branchMisses_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000200);
+        busCycles_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000400);
+        refCycles_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000800);
+        cpuClock_ = 0D;
+        bitField0_ = (bitField0_ & ~0x00001000);
+        taskClock_ = 0D;
+        bitField0_ = (bitField0_ & ~0x00002000);
+        pageFaults_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00004000);
+        minorFaults_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00008000);
+        majorFaults_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00010000);
+        contextSwitches_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00020000);
+        cpuMigrations_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00040000);
+        alignmentFaults_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00080000);
+        emulationFaults_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00100000);
+        l1DcacheLoads_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00200000);
+        l1DcacheLoadMisses_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00400000);
+        l1DcacheStores_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00800000);
+        l1DcacheStoreMisses_ = 0L;
+        bitField0_ = (bitField0_ & ~0x01000000);
+        l1DcachePrefetches_ = 0L;
+        bitField0_ = (bitField0_ & ~0x02000000);
+        l1DcachePrefetchMisses_ = 0L;
+        bitField0_ = (bitField0_ & ~0x04000000);
+        l1IcacheLoads_ = 0L;
+        bitField0_ = (bitField0_ & ~0x08000000);
+        l1IcacheLoadMisses_ = 0L;
+        bitField0_ = (bitField0_ & ~0x10000000);
+        l1IcachePrefetches_ = 0L;
+        bitField0_ = (bitField0_ & ~0x20000000);
+        l1IcachePrefetchMisses_ = 0L;
+        bitField0_ = (bitField0_ & ~0x40000000);
+        llcLoads_ = 0L;
+        bitField0_ = (bitField0_ & ~0x80000000);
+        llcLoadMisses_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00000001);
+        llcStores_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00000002);
+        llcStoreMisses_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00000004);
+        llcPrefetches_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00000008);
+        llcPrefetchMisses_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00000010);
+        dtlbLoads_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00000020);
+        dtlbLoadMisses_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00000040);
+        dtlbStores_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00000080);
+        dtlbStoreMisses_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00000100);
+        dtlbPrefetches_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00000200);
+        dtlbPrefetchMisses_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00000400);
+        itlbLoads_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00000800);
+        itlbLoadMisses_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00001000);
+        branchLoads_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00002000);
+        branchLoadMisses_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00004000);
+        nodeLoads_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00008000);
+        nodeLoadMisses_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00010000);
+        nodeStores_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00020000);
+        nodeStoreMisses_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00040000);
+        nodePrefetches_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00080000);
+        nodePrefetchMisses_ = 0L;
+        bitField1_ = (bitField1_ & ~0x00100000);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_PerfStatistics_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.PerfStatistics getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.PerfStatistics.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.PerfStatistics build() {
+        org.apache.mesos.v1.Protos.PerfStatistics result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.PerfStatistics buildPartial() {
+        org.apache.mesos.v1.Protos.PerfStatistics result = new org.apache.mesos.v1.Protos.PerfStatistics(this);
+        int from_bitField0_ = bitField0_;
+        int from_bitField1_ = bitField1_;
+        int to_bitField0_ = 0;
+        int to_bitField1_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.timestamp_ = timestamp_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.duration_ = duration_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.cycles_ = cycles_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.stalledCyclesFrontend_ = stalledCyclesFrontend_;
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.stalledCyclesBackend_ = stalledCyclesBackend_;
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        result.instructions_ = instructions_;
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        result.cacheReferences_ = cacheReferences_;
+        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+          to_bitField0_ |= 0x00000080;
+        }
+        result.cacheMisses_ = cacheMisses_;
+        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
+          to_bitField0_ |= 0x00000100;
+        }
+        result.branches_ = branches_;
+        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
+          to_bitField0_ |= 0x00000200;
+        }
+        result.branchMisses_ = branchMisses_;
+        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
+          to_bitField0_ |= 0x00000400;
+        }
+        result.busCycles_ = busCycles_;
+        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
+          to_bitField0_ |= 0x00000800;
+        }
+        result.refCycles_ = refCycles_;
+        if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
+          to_bitField0_ |= 0x00001000;
+        }
+        result.cpuClock_ = cpuClock_;
+        if (((from_bitField0_ & 0x00002000) == 0x00002000)) {
+          to_bitField0_ |= 0x00002000;
+        }
+        result.taskClock_ = taskClock_;
+        if (((from_bitField0_ & 0x00004000) == 0x00004000)) {
+          to_bitField0_ |= 0x00004000;
+        }
+        result.pageFaults_ = pageFaults_;
+        if (((from_bitField0_ & 0x00008000) == 0x00008000)) {
+          to_bitField0_ |= 0x00008000;
+        }
+        result.minorFaults_ = minorFaults_;
+        if (((from_bitField0_ & 0x00010000) == 0x00010000)) {
+          to_bitField0_ |= 0x00010000;
+        }
+        result.majorFaults_ = majorFaults_;
+        if (((from_bitField0_ & 0x00020000) == 0x00020000)) {
+          to_bitField0_ |= 0x00020000;
+        }
+        result.contextSwitches_ = contextSwitches_;
+        if (((from_bitField0_ & 0x00040000) == 0x00040000)) {
+          to_bitField0_ |= 0x00040000;
+        }
+        result.cpuMigrations_ = cpuMigrations_;
+        if (((from_bitField0_ & 0x00080000) == 0x00080000)) {
+          to_bitField0_ |= 0x00080000;
+        }
+        result.alignmentFaults_ = alignmentFaults_;
+        if (((from_bitField0_ & 0x00100000) == 0x00100000)) {
+          to_bitField0_ |= 0x00100000;
+        }
+        result.emulationFaults_ = emulationFaults_;
+        if (((from_bitField0_ & 0x00200000) == 0x00200000)) {
+          to_bitField0_ |= 0x00200000;
+        }
+        result.l1DcacheLoads_ = l1DcacheLoads_;
+        if (((from_bitField0_ & 0x00400000) == 0x00400000)) {
+          to_bitField0_ |= 0x00400000;
+        }
+        result.l1DcacheLoadMisses_ = l1DcacheLoadMisses_;
+        if (((from_bitField0_ & 0x00800000) == 0x00800000)) {
+          to_bitField0_ |= 0x00800000;
+        }
+        result.l1DcacheStores_ = l1DcacheStores_;
+        if (((from_bitField0_ & 0x01000000) == 0x01000000)) {
+          to_bitField0_ |= 0x01000000;
+        }
+        result.l1DcacheStoreMisses_ = l1DcacheStoreMisses_;
+        if (((from_bitField0_ & 0x02000000) == 0x02000000)) {
+          to_bitField0_ |= 0x02000000;
+        }
+        result.l1DcachePrefetches_ = l1DcachePrefetches_;
+        if (((from_bitField0_ & 0x04000000) == 0x04000000)) {
+          to_bitField0_ |= 0x04000000;
+        }
+        result.l1DcachePrefetchMisses_ = l1DcachePrefetchMisses_;
+        if (((from_bitField0_ & 0x08000000) == 0x08000000)) {
+          to_bitField0_ |= 0x08000000;
+        }
+        result.l1IcacheLoads_ = l1IcacheLoads_;
+        if (((from_bitField0_ & 0x10000000) == 0x10000000)) {
+          to_bitField0_ |= 0x10000000;
+        }
+        result.l1IcacheLoadMisses_ = l1IcacheLoadMisses_;
+        if (((from_bitField0_ & 0x20000000) == 0x20000000)) {
+          to_bitField0_ |= 0x20000000;
+        }
+        result.l1IcachePrefetches_ = l1IcachePrefetches_;
+        if (((from_bitField0_ & 0x40000000) == 0x40000000)) {
+          to_bitField0_ |= 0x40000000;
+        }
+        result.l1IcachePrefetchMisses_ = l1IcachePrefetchMisses_;
+        if (((from_bitField0_ & 0x80000000) == 0x80000000)) {
+          to_bitField0_ |= 0x80000000;
+        }
+        result.llcLoads_ = llcLoads_;
+        if (((from_bitField1_ & 0x00000001) == 0x00000001)) {
+          to_bitField1_ |= 0x00000001;
+        }
+        result.llcLoadMisses_ = llcLoadMisses_;
+        if (((from_bitField1_ & 0x00000002) == 0x00000002)) {
+          to_bitField1_ |= 0x00000002;
+        }
+        result.llcStores_ = llcStores_;
+        if (((from_bitField1_ & 0x00000004) == 0x00000004)) {
+          to_bitField1_ |= 0x00000004;
+        }
+        result.llcStoreMisses_ = llcStoreMisses_;
+        if (((from_bitField1_ & 0x00000008) == 0x00000008)) {
+          to_bitField1_ |= 0x00000008;
+        }
+        result.llcPrefetches_ = llcPrefetches_;
+        if (((from_bitField1_ & 0x00000010) == 0x00000010)) {
+          to_bitField1_ |= 0x00000010;
+        }
+        result.llcPrefetchMisses_ = llcPrefetchMisses_;
+        if (((from_bitField1_ & 0x00000020) == 0x00000020)) {
+          to_bitField1_ |= 0x00000020;
+        }
+        result.dtlbLoads_ = dtlbLoads_;
+        if (((from_bitField1_ & 0x00000040) == 0x00000040)) {
+          to_bitField1_ |= 0x00000040;
+        }
+        result.dtlbLoadMisses_ = dtlbLoadMisses_;
+        if (((from_bitField1_ & 0x00000080) == 0x00000080)) {
+          to_bitField1_ |= 0x00000080;
+        }
+        result.dtlbStores_ = dtlbStores_;
+        if (((from_bitField1_ & 0x00000100) == 0x00000100)) {
+          to_bitField1_ |= 0x00000100;
+        }
+        result.dtlbStoreMisses_ = dtlbStoreMisses_;
+        if (((from_bitField1_ & 0x00000200) == 0x00000200)) {
+          to_bitField1_ |= 0x00000200;
+        }
+        result.dtlbPrefetches_ = dtlbPrefetches_;
+        if (((from_bitField1_ & 0x00000400) == 0x00000400)) {
+          to_bitField1_ |= 0x00000400;
+        }
+        result.dtlbPrefetchMisses_ = dtlbPrefetchMisses_;
+        if (((from_bitField1_ & 0x00000800) == 0x00000800)) {
+          to_bitField1_ |= 0x00000800;
+        }
+        result.itlbLoads_ = itlbLoads_;
+        if (((from_bitField1_ & 0x00001000) == 0x00001000)) {
+          to_bitField1_ |= 0x00001000;
+        }
+        result.itlbLoadMisses_ = itlbLoadMisses_;
+        if (((from_bitField1_ & 0x00002000) == 0x00002000)) {
+          to_bitField1_ |= 0x00002000;
+        }
+        result.branchLoads_ = branchLoads_;
+        if (((from_bitField1_ & 0x00004000) == 0x00004000)) {
+          to_bitField1_ |= 0x00004000;
+        }
+        result.branchLoadMisses_ = branchLoadMisses_;
+        if (((from_bitField1_ & 0x00008000) == 0x00008000)) {
+          to_bitField1_ |= 0x00008000;
+        }
+        result.nodeLoads_ = nodeLoads_;
+        if (((from_bitField1_ & 0x00010000) == 0x00010000)) {
+          to_bitField1_ |= 0x00010000;
+        }
+        result.nodeLoadMisses_ = nodeLoadMisses_;
+        if (((from_bitField1_ & 0x00020000) == 0x00020000)) {
+          to_bitField1_ |= 0x00020000;
+        }
+        result.nodeStores_ = nodeStores_;
+        if (((from_bitField1_ & 0x00040000) == 0x00040000)) {
+          to_bitField1_ |= 0x00040000;
+        }
+        result.nodeStoreMisses_ = nodeStoreMisses_;
+        if (((from_bitField1_ & 0x00080000) == 0x00080000)) {
+          to_bitField1_ |= 0x00080000;
+        }
+        result.nodePrefetches_ = nodePrefetches_;
+        if (((from_bitField1_ & 0x00100000) == 0x00100000)) {
+          to_bitField1_ |= 0x00100000;
+        }
+        result.nodePrefetchMisses_ = nodePrefetchMisses_;
+        result.bitField0_ = to_bitField0_;
+        result.bitField1_ = to_bitField1_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.PerfStatistics) {
+          return mergeFrom((org.apache.mesos.v1.Protos.PerfStatistics)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.PerfStatistics other) {
+        if (other == org.apache.mesos.v1.Protos.PerfStatistics.getDefaultInstance()) return this;
+        if (other.hasTimestamp()) {
+          setTimestamp(other.getTimestamp());
+        }
+        if (other.hasDuration()) {
+          setDuration(other.getDuration());
+        }
+        if (other.hasCycles()) {
+          setCycles(other.getCycles());
+        }
+        if (other.hasStalledCyclesFrontend()) {
+          setStalledCyclesFrontend(other.getStalledCyclesFrontend());
+        }
+        if (other.hasStalledCyclesBackend()) {
+          setStalledCyclesBackend(other.getStalledCyclesBackend());
+        }
+        if (other.hasInstructions()) {
+          setInstructions(other.getInstructions());
+        }
+        if (other.hasCacheReferences()) {
+          setCacheReferences(other.getCacheReferences());
+        }
+        if (other.hasCacheMisses()) {
+          setCacheMisses(other.getCacheMisses());
+        }
+        if (other.hasBranches()) {
+          setBranches(other.getBranches());
+        }
+        if (other.hasBranchMisses()) {
+          setBranchMisses(other.getBranchMisses());
+        }
+        if (other.hasBusCycles()) {
+          setBusCycles(other.getBusCycles());
+        }
+        if (other.hasRefCycles()) {
+          setRefCycles(other.getRefCycles());
+        }
+        if (other.hasCpuClock()) {
+          setCpuClock(other.getCpuClock());
+        }
+        if (other.hasTaskClock()) {
+          setTaskClock(other.getTaskClock());
+        }
+        if (other.hasPageFaults()) {
+          setPageFaults(other.getPageFaults());
+        }
+        if (other.hasMinorFaults()) {
+          setMinorFaults(other.getMinorFaults());
+        }
+        if (other.hasMajorFaults()) {
+          setMajorFaults(other.getMajorFaults());
+        }
+        if (other.hasContextSwitches()) {
+          setContextSwitches(other.getContextSwitches());
+        }
+        if (other.hasCpuMigrations()) {
+          setCpuMigrations(other.getCpuMigrations());
+        }
+        if (other.hasAlignmentFaults()) {
+          setAlignmentFaults(other.getAlignmentFaults());
+        }
+        if (other.hasEmulationFaults()) {
+          setEmulationFaults(other.getEmulationFaults());
+        }
+        if (other.hasL1DcacheLoads()) {
+          setL1DcacheLoads(other.getL1DcacheLoads());
+        }
+        if (other.hasL1DcacheLoadMisses()) {
+          setL1DcacheLoadMisses(other.getL1DcacheLoadMisses());
+        }
+        if (other.hasL1DcacheStores()) {
+          setL1DcacheStores(other.getL1DcacheStores());
+        }
+        if (other.hasL1DcacheStoreMisses()) {
+          setL1DcacheStoreMisses(other.getL1DcacheStoreMisses());
+        }
+        if (other.hasL1DcachePrefetches()) {
+          setL1DcachePrefetches(other.getL1DcachePrefetches());
+        }
+        if (other.hasL1DcachePrefetchMisses()) {
+          setL1DcachePrefetchMisses(other.getL1DcachePrefetchMisses());
+        }
+        if (other.hasL1IcacheLoads()) {
+          setL1IcacheLoads(other.getL1IcacheLoads());
+        }
+        if (other.hasL1IcacheLoadMisses()) {
+          setL1IcacheLoadMisses(other.getL1IcacheLoadMisses());
+        }
+        if (other.hasL1IcachePrefetches()) {
+          setL1IcachePrefetches(other.getL1IcachePrefetches());
+        }
+        if (other.hasL1IcachePrefetchMisses()) {
+          setL1IcachePrefetchMisses(other.getL1IcachePrefetchMisses());
+        }
+        if (other.hasLlcLoads()) {
+          setLlcLoads(other.getLlcLoads());
+        }
+        if (other.hasLlcLoadMisses()) {
+          setLlcLoadMisses(other.getLlcLoadMisses());
+        }
+        if (other.hasLlcStores()) {
+          setLlcStores(other.getLlcStores());
+        }
+        if (other.hasLlcStoreMisses()) {
+          setLlcStoreMisses(other.getLlcStoreMisses());
+        }
+        if (other.hasLlcPrefetches()) {
+          setLlcPrefetches(other.getLlcPrefetches());
+        }
+        if (other.hasLlcPrefetchMisses()) {
+          setLlcPrefetchMisses(other.getLlcPrefetchMisses());
+        }
+        if (other.hasDtlbLoads()) {
+          setDtlbLoads(other.getDtlbLoads());
+        }
+        if (other.hasDtlbLoadMisses()) {
+          setDtlbLoadMisses(other.getDtlbLoadMisses());
+        }
+        if (other.hasDtlbStores()) {
+          setDtlbStores(other.getDtlbStores());
+        }
+        if (other.hasDtlbStoreMisses()) {
+          setDtlbStoreMisses(other.getDtlbStoreMisses());
+        }
+        if (other.hasDtlbPrefetches()) {
+          setDtlbPrefetches(other.getDtlbPrefetches());
+        }
+        if (other.hasDtlbPrefetchMisses()) {
+          setDtlbPrefetchMisses(other.getDtlbPrefetchMisses());
+        }
+        if (other.hasItlbLoads()) {
+          setItlbLoads(other.getItlbLoads());
+        }
+        if (other.hasItlbLoadMisses()) {
+          setItlbLoadMisses(other.getItlbLoadMisses());
+        }
+        if (other.hasBranchLoads()) {
+          setBranchLoads(other.getBranchLoads());
+        }
+        if (other.hasBranchLoadMisses()) {
+          setBranchLoadMisses(other.getBranchLoadMisses());
+        }
+        if (other.hasNodeLoads()) {
+          setNodeLoads(other.getNodeLoads());
+        }
+        if (other.hasNodeLoadMisses()) {
+          setNodeLoadMisses(other.getNodeLoadMisses());
+        }
+        if (other.hasNodeStores()) {
+          setNodeStores(other.getNodeStores());
+        }
+        if (other.hasNodeStoreMisses()) {
+          setNodeStoreMisses(other.getNodeStoreMisses());
+        }
+        if (other.hasNodePrefetches()) {
+          setNodePrefetches(other.getNodePrefetches());
+        }
+        if (other.hasNodePrefetchMisses()) {
+          setNodePrefetchMisses(other.getNodePrefetchMisses());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasTimestamp()) {
+          
+          return false;
+        }
+        if (!hasDuration()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.PerfStatistics parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.PerfStatistics) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+      private int bitField1_;
+
+      // required double timestamp = 1;
+      private double timestamp_ ;
+      /**
+       * <code>required double timestamp = 1;</code>
+       *
+       * <pre>
+       * Start of sample interval, in seconds since the Epoch.
+       * </pre>
+       */
+      public boolean hasTimestamp() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required double timestamp = 1;</code>
+       *
+       * <pre>
+       * Start of sample interval, in seconds since the Epoch.
+       * </pre>
+       */
+      public double getTimestamp() {
+        return timestamp_;
+      }
+      /**
+       * <code>required double timestamp = 1;</code>
+       *
+       * <pre>
+       * Start of sample interval, in seconds since the Epoch.
+       * </pre>
+       */
+      public Builder setTimestamp(double value) {
+        bitField0_ |= 0x00000001;
+        timestamp_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required double timestamp = 1;</code>
+       *
+       * <pre>
+       * Start of sample interval, in seconds since the Epoch.
+       * </pre>
+       */
+      public Builder clearTimestamp() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        timestamp_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // required double duration = 2;
+      private double duration_ ;
+      /**
+       * <code>required double duration = 2;</code>
+       *
+       * <pre>
+       * Duration of sample interval, in seconds.
+       * </pre>
+       */
+      public boolean hasDuration() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required double duration = 2;</code>
+       *
+       * <pre>
+       * Duration of sample interval, in seconds.
+       * </pre>
+       */
+      public double getDuration() {
+        return duration_;
+      }
+      /**
+       * <code>required double duration = 2;</code>
+       *
+       * <pre>
+       * Duration of sample interval, in seconds.
+       * </pre>
+       */
+      public Builder setDuration(double value) {
+        bitField0_ |= 0x00000002;
+        duration_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required double duration = 2;</code>
+       *
+       * <pre>
+       * Duration of sample interval, in seconds.
+       * </pre>
+       */
+      public Builder clearDuration() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        duration_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 cycles = 3;
+      private long cycles_ ;
+      /**
+       * <code>optional uint64 cycles = 3;</code>
+       *
+       * <pre>
+       * Hardware event.
+       * </pre>
+       */
+      public boolean hasCycles() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional uint64 cycles = 3;</code>
+       *
+       * <pre>
+       * Hardware event.
+       * </pre>
+       */
+      public long getCycles() {
+        return cycles_;
+      }
+      /**
+       * <code>optional uint64 cycles = 3;</code>
+       *
+       * <pre>
+       * Hardware event.
+       * </pre>
+       */
+      public Builder setCycles(long value) {
+        bitField0_ |= 0x00000004;
+        cycles_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 cycles = 3;</code>
+       *
+       * <pre>
+       * Hardware event.
+       * </pre>
+       */
+      public Builder clearCycles() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        cycles_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 stalled_cycles_frontend = 4;
+      private long stalledCyclesFrontend_ ;
+      /**
+       * <code>optional uint64 stalled_cycles_frontend = 4;</code>
+       */
+      public boolean hasStalledCyclesFrontend() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional uint64 stalled_cycles_frontend = 4;</code>
+       */
+      public long getStalledCyclesFrontend() {
+        return stalledCyclesFrontend_;
+      }
+      /**
+       * <code>optional uint64 stalled_cycles_frontend = 4;</code>
+       */
+      public Builder setStalledCyclesFrontend(long value) {
+        bitField0_ |= 0x00000008;
+        stalledCyclesFrontend_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 stalled_cycles_frontend = 4;</code>
+       */
+      public Builder clearStalledCyclesFrontend() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        stalledCyclesFrontend_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 stalled_cycles_backend = 5;
+      private long stalledCyclesBackend_ ;
+      /**
+       * <code>optional uint64 stalled_cycles_backend = 5;</code>
+       */
+      public boolean hasStalledCyclesBackend() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional uint64 stalled_cycles_backend = 5;</code>
+       */
+      public long getStalledCyclesBackend() {
+        return stalledCyclesBackend_;
+      }
+      /**
+       * <code>optional uint64 stalled_cycles_backend = 5;</code>
+       */
+      public Builder setStalledCyclesBackend(long value) {
+        bitField0_ |= 0x00000010;
+        stalledCyclesBackend_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 stalled_cycles_backend = 5;</code>
+       */
+      public Builder clearStalledCyclesBackend() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        stalledCyclesBackend_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 instructions = 6;
+      private long instructions_ ;
+      /**
+       * <code>optional uint64 instructions = 6;</code>
+       */
+      public boolean hasInstructions() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional uint64 instructions = 6;</code>
+       */
+      public long getInstructions() {
+        return instructions_;
+      }
+      /**
+       * <code>optional uint64 instructions = 6;</code>
+       */
+      public Builder setInstructions(long value) {
+        bitField0_ |= 0x00000020;
+        instructions_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 instructions = 6;</code>
+       */
+      public Builder clearInstructions() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        instructions_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 cache_references = 7;
+      private long cacheReferences_ ;
+      /**
+       * <code>optional uint64 cache_references = 7;</code>
+       */
+      public boolean hasCacheReferences() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional uint64 cache_references = 7;</code>
+       */
+      public long getCacheReferences() {
+        return cacheReferences_;
+      }
+      /**
+       * <code>optional uint64 cache_references = 7;</code>
+       */
+      public Builder setCacheReferences(long value) {
+        bitField0_ |= 0x00000040;
+        cacheReferences_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 cache_references = 7;</code>
+       */
+      public Builder clearCacheReferences() {
+        bitField0_ = (bitField0_ & ~0x00000040);
+        cacheReferences_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 cache_misses = 8;
+      private long cacheMisses_ ;
+      /**
+       * <code>optional uint64 cache_misses = 8;</code>
+       */
+      public boolean hasCacheMisses() {
+        return ((bitField0_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional uint64 cache_misses = 8;</code>
+       */
+      public long getCacheMisses() {
+        return cacheMisses_;
+      }
+      /**
+       * <code>optional uint64 cache_misses = 8;</code>
+       */
+      public Builder setCacheMisses(long value) {
+        bitField0_ |= 0x00000080;
+        cacheMisses_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 cache_misses = 8;</code>
+       */
+      public Builder clearCacheMisses() {
+        bitField0_ = (bitField0_ & ~0x00000080);
+        cacheMisses_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 branches = 9;
+      private long branches_ ;
+      /**
+       * <code>optional uint64 branches = 9;</code>
+       */
+      public boolean hasBranches() {
+        return ((bitField0_ & 0x00000100) == 0x00000100);
+      }
+      /**
+       * <code>optional uint64 branches = 9;</code>
+       */
+      public long getBranches() {
+        return branches_;
+      }
+      /**
+       * <code>optional uint64 branches = 9;</code>
+       */
+      public Builder setBranches(long value) {
+        bitField0_ |= 0x00000100;
+        branches_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 branches = 9;</code>
+       */
+      public Builder clearBranches() {
+        bitField0_ = (bitField0_ & ~0x00000100);
+        branches_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 branch_misses = 10;
+      private long branchMisses_ ;
+      /**
+       * <code>optional uint64 branch_misses = 10;</code>
+       */
+      public boolean hasBranchMisses() {
+        return ((bitField0_ & 0x00000200) == 0x00000200);
+      }
+      /**
+       * <code>optional uint64 branch_misses = 10;</code>
+       */
+      public long getBranchMisses() {
+        return branchMisses_;
+      }
+      /**
+       * <code>optional uint64 branch_misses = 10;</code>
+       */
+      public Builder setBranchMisses(long value) {
+        bitField0_ |= 0x00000200;
+        branchMisses_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 branch_misses = 10;</code>
+       */
+      public Builder clearBranchMisses() {
+        bitField0_ = (bitField0_ & ~0x00000200);
+        branchMisses_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 bus_cycles = 11;
+      private long busCycles_ ;
+      /**
+       * <code>optional uint64 bus_cycles = 11;</code>
+       */
+      public boolean hasBusCycles() {
+        return ((bitField0_ & 0x00000400) == 0x00000400);
+      }
+      /**
+       * <code>optional uint64 bus_cycles = 11;</code>
+       */
+      public long getBusCycles() {
+        return busCycles_;
+      }
+      /**
+       * <code>optional uint64 bus_cycles = 11;</code>
+       */
+      public Builder setBusCycles(long value) {
+        bitField0_ |= 0x00000400;
+        busCycles_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 bus_cycles = 11;</code>
+       */
+      public Builder clearBusCycles() {
+        bitField0_ = (bitField0_ & ~0x00000400);
+        busCycles_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 ref_cycles = 12;
+      private long refCycles_ ;
+      /**
+       * <code>optional uint64 ref_cycles = 12;</code>
+       */
+      public boolean hasRefCycles() {
+        return ((bitField0_ & 0x00000800) == 0x00000800);
+      }
+      /**
+       * <code>optional uint64 ref_cycles = 12;</code>
+       */
+      public long getRefCycles() {
+        return refCycles_;
+      }
+      /**
+       * <code>optional uint64 ref_cycles = 12;</code>
+       */
+      public Builder setRefCycles(long value) {
+        bitField0_ |= 0x00000800;
+        refCycles_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 ref_cycles = 12;</code>
+       */
+      public Builder clearRefCycles() {
+        bitField0_ = (bitField0_ & ~0x00000800);
+        refCycles_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional double cpu_clock = 13;
+      private double cpuClock_ ;
+      /**
+       * <code>optional double cpu_clock = 13;</code>
+       *
+       * <pre>
+       * Software event.
+       * </pre>
+       */
+      public boolean hasCpuClock() {
+        return ((bitField0_ & 0x00001000) == 0x00001000);
+      }
+      /**
+       * <code>optional double cpu_clock = 13;</code>
+       *
+       * <pre>
+       * Software event.
+       * </pre>
+       */
+      public double getCpuClock() {
+        return cpuClock_;
+      }
+      /**
+       * <code>optional double cpu_clock = 13;</code>
+       *
+       * <pre>
+       * Software event.
+       * </pre>
+       */
+      public Builder setCpuClock(double value) {
+        bitField0_ |= 0x00001000;
+        cpuClock_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double cpu_clock = 13;</code>
+       *
+       * <pre>
+       * Software event.
+       * </pre>
+       */
+      public Builder clearCpuClock() {
+        bitField0_ = (bitField0_ & ~0x00001000);
+        cpuClock_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // optional double task_clock = 14;
+      private double taskClock_ ;
+      /**
+       * <code>optional double task_clock = 14;</code>
+       */
+      public boolean hasTaskClock() {
+        return ((bitField0_ & 0x00002000) == 0x00002000);
+      }
+      /**
+       * <code>optional double task_clock = 14;</code>
+       */
+      public double getTaskClock() {
+        return taskClock_;
+      }
+      /**
+       * <code>optional double task_clock = 14;</code>
+       */
+      public Builder setTaskClock(double value) {
+        bitField0_ |= 0x00002000;
+        taskClock_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double task_clock = 14;</code>
+       */
+      public Builder clearTaskClock() {
+        bitField0_ = (bitField0_ & ~0x00002000);
+        taskClock_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 page_faults = 15;
+      private long pageFaults_ ;
+      /**
+       * <code>optional uint64 page_faults = 15;</code>
+       */
+      public boolean hasPageFaults() {
+        return ((bitField0_ & 0x00004000) == 0x00004000);
+      }
+      /**
+       * <code>optional uint64 page_faults = 15;</code>
+       */
+      public long getPageFaults() {
+        return pageFaults_;
+      }
+      /**
+       * <code>optional uint64 page_faults = 15;</code>
+       */
+      public Builder setPageFaults(long value) {
+        bitField0_ |= 0x00004000;
+        pageFaults_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 page_faults = 15;</code>
+       */
+      public Builder clearPageFaults() {
+        bitField0_ = (bitField0_ & ~0x00004000);
+        pageFaults_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 minor_faults = 16;
+      private long minorFaults_ ;
+      /**
+       * <code>optional uint64 minor_faults = 16;</code>
+       */
+      public boolean hasMinorFaults() {
+        return ((bitField0_ & 0x00008000) == 0x00008000);
+      }
+      /**
+       * <code>optional uint64 minor_faults = 16;</code>
+       */
+      public long getMinorFaults() {
+        return minorFaults_;
+      }
+      /**
+       * <code>optional uint64 minor_faults = 16;</code>
+       */
+      public Builder setMinorFaults(long value) {
+        bitField0_ |= 0x00008000;
+        minorFaults_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 minor_faults = 16;</code>
+       */
+      public Builder clearMinorFaults() {
+        bitField0_ = (bitField0_ & ~0x00008000);
+        minorFaults_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 major_faults = 17;
+      private long majorFaults_ ;
+      /**
+       * <code>optional uint64 major_faults = 17;</code>
+       */
+      public boolean hasMajorFaults() {
+        return ((bitField0_ & 0x00010000) == 0x00010000);
+      }
+      /**
+       * <code>optional uint64 major_faults = 17;</code>
+       */
+      public long getMajorFaults() {
+        return majorFaults_;
+      }
+      /**
+       * <code>optional uint64 major_faults = 17;</code>
+       */
+      public Builder setMajorFaults(long value) {
+        bitField0_ |= 0x00010000;
+        majorFaults_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 major_faults = 17;</code>
+       */
+      public Builder clearMajorFaults() {
+        bitField0_ = (bitField0_ & ~0x00010000);
+        majorFaults_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 context_switches = 18;
+      private long contextSwitches_ ;
+      /**
+       * <code>optional uint64 context_switches = 18;</code>
+       */
+      public boolean hasContextSwitches() {
+        return ((bitField0_ & 0x00020000) == 0x00020000);
+      }
+      /**
+       * <code>optional uint64 context_switches = 18;</code>
+       */
+      public long getContextSwitches() {
+        return contextSwitches_;
+      }
+      /**
+       * <code>optional uint64 context_switches = 18;</code>
+       */
+      public Builder setContextSwitches(long value) {
+        bitField0_ |= 0x00020000;
+        contextSwitches_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 context_switches = 18;</code>
+       */
+      public Builder clearContextSwitches() {
+        bitField0_ = (bitField0_ & ~0x00020000);
+        contextSwitches_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 cpu_migrations = 19;
+      private long cpuMigrations_ ;
+      /**
+       * <code>optional uint64 cpu_migrations = 19;</code>
+       */
+      public boolean hasCpuMigrations() {
+        return ((bitField0_ & 0x00040000) == 0x00040000);
+      }
+      /**
+       * <code>optional uint64 cpu_migrations = 19;</code>
+       */
+      public long getCpuMigrations() {
+        return cpuMigrations_;
+      }
+      /**
+       * <code>optional uint64 cpu_migrations = 19;</code>
+       */
+      public Builder setCpuMigrations(long value) {
+        bitField0_ |= 0x00040000;
+        cpuMigrations_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 cpu_migrations = 19;</code>
+       */
+      public Builder clearCpuMigrations() {
+        bitField0_ = (bitField0_ & ~0x00040000);
+        cpuMigrations_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 alignment_faults = 20;
+      private long alignmentFaults_ ;
+      /**
+       * <code>optional uint64 alignment_faults = 20;</code>
+       */
+      public boolean hasAlignmentFaults() {
+        return ((bitField0_ & 0x00080000) == 0x00080000);
+      }
+      /**
+       * <code>optional uint64 alignment_faults = 20;</code>
+       */
+      public long getAlignmentFaults() {
+        return alignmentFaults_;
+      }
+      /**
+       * <code>optional uint64 alignment_faults = 20;</code>
+       */
+      public Builder setAlignmentFaults(long value) {
+        bitField0_ |= 0x00080000;
+        alignmentFaults_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 alignment_faults = 20;</code>
+       */
+      public Builder clearAlignmentFaults() {
+        bitField0_ = (bitField0_ & ~0x00080000);
+        alignmentFaults_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 emulation_faults = 21;
+      private long emulationFaults_ ;
+      /**
+       * <code>optional uint64 emulation_faults = 21;</code>
+       */
+      public boolean hasEmulationFaults() {
+        return ((bitField0_ & 0x00100000) == 0x00100000);
+      }
+      /**
+       * <code>optional uint64 emulation_faults = 21;</code>
+       */
+      public long getEmulationFaults() {
+        return emulationFaults_;
+      }
+      /**
+       * <code>optional uint64 emulation_faults = 21;</code>
+       */
+      public Builder setEmulationFaults(long value) {
+        bitField0_ |= 0x00100000;
+        emulationFaults_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 emulation_faults = 21;</code>
+       */
+      public Builder clearEmulationFaults() {
+        bitField0_ = (bitField0_ & ~0x00100000);
+        emulationFaults_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 l1_dcache_loads = 22;
+      private long l1DcacheLoads_ ;
+      /**
+       * <code>optional uint64 l1_dcache_loads = 22;</code>
+       *
+       * <pre>
+       * Hardware cache event.
+       * </pre>
+       */
+      public boolean hasL1DcacheLoads() {
+        return ((bitField0_ & 0x00200000) == 0x00200000);
+      }
+      /**
+       * <code>optional uint64 l1_dcache_loads = 22;</code>
+       *
+       * <pre>
+       * Hardware cache event.
+       * </pre>
+       */
+      public long getL1DcacheLoads() {
+        return l1DcacheLoads_;
+      }
+      /**
+       * <code>optional uint64 l1_dcache_loads = 22;</code>
+       *
+       * <pre>
+       * Hardware cache event.
+       * </pre>
+       */
+      public Builder setL1DcacheLoads(long value) {
+        bitField0_ |= 0x00200000;
+        l1DcacheLoads_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 l1_dcache_loads = 22;</code>
+       *
+       * <pre>
+       * Hardware cache event.
+       * </pre>
+       */
+      public Builder clearL1DcacheLoads() {
+        bitField0_ = (bitField0_ & ~0x00200000);
+        l1DcacheLoads_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 l1_dcache_load_misses = 23;
+      private long l1DcacheLoadMisses_ ;
+      /**
+       * <code>optional uint64 l1_dcache_load_misses = 23;</code>
+       */
+      public boolean hasL1DcacheLoadMisses() {
+        return ((bitField0_ & 0x00400000) == 0x00400000);
+      }
+      /**
+       * <code>optional uint64 l1_dcache_load_misses = 23;</code>
+       */
+      public long getL1DcacheLoadMisses() {
+        return l1DcacheLoadMisses_;
+      }
+      /**
+       * <code>optional uint64 l1_dcache_load_misses = 23;</code>
+       */
+      public Builder setL1DcacheLoadMisses(long value) {
+        bitField0_ |= 0x00400000;
+        l1DcacheLoadMisses_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 l1_dcache_load_misses = 23;</code>
+       */
+      public Builder clearL1DcacheLoadMisses() {
+        bitField0_ = (bitField0_ & ~0x00400000);
+        l1DcacheLoadMisses_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 l1_dcache_stores = 24;
+      private long l1DcacheStores_ ;
+      /**
+       * <code>optional uint64 l1_dcache_stores = 24;</code>
+       */
+      public boolean hasL1DcacheStores() {
+        return ((bitField0_ & 0x00800000) == 0x00800000);
+      }
+      /**
+       * <code>optional uint64 l1_dcache_stores = 24;</code>
+       */
+      public long getL1DcacheStores() {
+        return l1DcacheStores_;
+      }
+      /**
+       * <code>optional uint64 l1_dcache_stores = 24;</code>
+       */
+      public Builder setL1DcacheStores(long value) {
+        bitField0_ |= 0x00800000;
+        l1DcacheStores_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 l1_dcache_stores = 24;</code>
+       */
+      public Builder clearL1DcacheStores() {
+        bitField0_ = (bitField0_ & ~0x00800000);
+        l1DcacheStores_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 l1_dcache_store_misses = 25;
+      private long l1DcacheStoreMisses_ ;
+      /**
+       * <code>optional uint64 l1_dcache_store_misses = 25;</code>
+       */
+      public boolean hasL1DcacheStoreMisses() {
+        return ((bitField0_ & 0x01000000) == 0x01000000);
+      }
+      /**
+       * <code>optional uint64 l1_dcache_store_misses = 25;</code>
+       */
+      public long getL1DcacheStoreMisses() {
+        return l1DcacheStoreMisses_;
+      }
+      /**
+       * <code>optional uint64 l1_dcache_store_misses = 25;</code>
+       */
+      public Builder setL1DcacheStoreMisses(long value) {
+        bitField0_ |= 0x01000000;
+        l1DcacheStoreMisses_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 l1_dcache_store_misses = 25;</code>
+       */
+      public Builder clearL1DcacheStoreMisses() {
+        bitField0_ = (bitField0_ & ~0x01000000);
+        l1DcacheStoreMisses_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 l1_dcache_prefetches = 26;
+      private long l1DcachePrefetches_ ;
+      /**
+       * <code>optional uint64 l1_dcache_prefetches = 26;</code>
+       */
+      public boolean hasL1DcachePrefetches() {
+        return ((bitField0_ & 0x02000000) == 0x02000000);
+      }
+      /**
+       * <code>optional uint64 l1_dcache_prefetches = 26;</code>
+       */
+      public long getL1DcachePrefetches() {
+        return l1DcachePrefetches_;
+      }
+      /**
+       * <code>optional uint64 l1_dcache_prefetches = 26;</code>
+       */
+      public Builder setL1DcachePrefetches(long value) {
+        bitField0_ |= 0x02000000;
+        l1DcachePrefetches_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 l1_dcache_prefetches = 26;</code>
+       */
+      public Builder clearL1DcachePrefetches() {
+        bitField0_ = (bitField0_ & ~0x02000000);
+        l1DcachePrefetches_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 l1_dcache_prefetch_misses = 27;
+      private long l1DcachePrefetchMisses_ ;
+      /**
+       * <code>optional uint64 l1_dcache_prefetch_misses = 27;</code>
+       */
+      public boolean hasL1DcachePrefetchMisses() {
+        return ((bitField0_ & 0x04000000) == 0x04000000);
+      }
+      /**
+       * <code>optional uint64 l1_dcache_prefetch_misses = 27;</code>
+       */
+      public long getL1DcachePrefetchMisses() {
+        return l1DcachePrefetchMisses_;
+      }
+      /**
+       * <code>optional uint64 l1_dcache_prefetch_misses = 27;</code>
+       */
+      public Builder setL1DcachePrefetchMisses(long value) {
+        bitField0_ |= 0x04000000;
+        l1DcachePrefetchMisses_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 l1_dcache_prefetch_misses = 27;</code>
+       */
+      public Builder clearL1DcachePrefetchMisses() {
+        bitField0_ = (bitField0_ & ~0x04000000);
+        l1DcachePrefetchMisses_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 l1_icache_loads = 28;
+      private long l1IcacheLoads_ ;
+      /**
+       * <code>optional uint64 l1_icache_loads = 28;</code>
+       */
+      public boolean hasL1IcacheLoads() {
+        return ((bitField0_ & 0x08000000) == 0x08000000);
+      }
+      /**
+       * <code>optional uint64 l1_icache_loads = 28;</code>
+       */
+      public long getL1IcacheLoads() {
+        return l1IcacheLoads_;
+      }
+      /**
+       * <code>optional uint64 l1_icache_loads = 28;</code>
+       */
+      public Builder setL1IcacheLoads(long value) {
+        bitField0_ |= 0x08000000;
+        l1IcacheLoads_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 l1_icache_loads = 28;</code>
+       */
+      public Builder clearL1IcacheLoads() {
+        bitField0_ = (bitField0_ & ~0x08000000);
+        l1IcacheLoads_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 l1_icache_load_misses = 29;
+      private long l1IcacheLoadMisses_ ;
+      /**
+       * <code>optional uint64 l1_icache_load_misses = 29;</code>
+       */
+      public boolean hasL1IcacheLoadMisses() {
+        return ((bitField0_ & 0x10000000) == 0x10000000);
+      }
+      /**
+       * <code>optional uint64 l1_icache_load_misses = 29;</code>
+       */
+      public long getL1IcacheLoadMisses() {
+        return l1IcacheLoadMisses_;
+      }
+      /**
+       * <code>optional uint64 l1_icache_load_misses = 29;</code>
+       */
+      public Builder setL1IcacheLoadMisses(long value) {
+        bitField0_ |= 0x10000000;
+        l1IcacheLoadMisses_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 l1_icache_load_misses = 29;</code>
+       */
+      public Builder clearL1IcacheLoadMisses() {
+        bitField0_ = (bitField0_ & ~0x10000000);
+        l1IcacheLoadMisses_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 l1_icache_prefetches = 30;
+      private long l1IcachePrefetches_ ;
+      /**
+       * <code>optional uint64 l1_icache_prefetches = 30;</code>
+       */
+      public boolean hasL1IcachePrefetches() {
+        return ((bitField0_ & 0x20000000) == 0x20000000);
+      }
+      /**
+       * <code>optional uint64 l1_icache_prefetches = 30;</code>
+       */
+      public long getL1IcachePrefetches() {
+        return l1IcachePrefetches_;
+      }
+      /**
+       * <code>optional uint64 l1_icache_prefetches = 30;</code>
+       */
+      public Builder setL1IcachePrefetches(long value) {
+        bitField0_ |= 0x20000000;
+        l1IcachePrefetches_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 l1_icache_prefetches = 30;</code>
+       */
+      public Builder clearL1IcachePrefetches() {
+        bitField0_ = (bitField0_ & ~0x20000000);
+        l1IcachePrefetches_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 l1_icache_prefetch_misses = 31;
+      private long l1IcachePrefetchMisses_ ;
+      /**
+       * <code>optional uint64 l1_icache_prefetch_misses = 31;</code>
+       */
+      public boolean hasL1IcachePrefetchMisses() {
+        return ((bitField0_ & 0x40000000) == 0x40000000);
+      }
+      /**
+       * <code>optional uint64 l1_icache_prefetch_misses = 31;</code>
+       */
+      public long getL1IcachePrefetchMisses() {
+        return l1IcachePrefetchMisses_;
+      }
+      /**
+       * <code>optional uint64 l1_icache_prefetch_misses = 31;</code>
+       */
+      public Builder setL1IcachePrefetchMisses(long value) {
+        bitField0_ |= 0x40000000;
+        l1IcachePrefetchMisses_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 l1_icache_prefetch_misses = 31;</code>
+       */
+      public Builder clearL1IcachePrefetchMisses() {
+        bitField0_ = (bitField0_ & ~0x40000000);
+        l1IcachePrefetchMisses_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 llc_loads = 32;
+      private long llcLoads_ ;
+      /**
+       * <code>optional uint64 llc_loads = 32;</code>
+       */
+      public boolean hasLlcLoads() {
+        return ((bitField0_ & 0x80000000) == 0x80000000);
+      }
+      /**
+       * <code>optional uint64 llc_loads = 32;</code>
+       */
+      public long getLlcLoads() {
+        return llcLoads_;
+      }
+      /**
+       * <code>optional uint64 llc_loads = 32;</code>
+       */
+      public Builder setLlcLoads(long value) {
+        bitField0_ |= 0x80000000;
+        llcLoads_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 llc_loads = 32;</code>
+       */
+      public Builder clearLlcLoads() {
+        bitField0_ = (bitField0_ & ~0x80000000);
+        llcLoads_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 llc_load_misses = 33;
+      private long llcLoadMisses_ ;
+      /**
+       * <code>optional uint64 llc_load_misses = 33;</code>
+       */
+      public boolean hasLlcLoadMisses() {
+        return ((bitField1_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional uint64 llc_load_misses = 33;</code>
+       */
+      public long getLlcLoadMisses() {
+        return llcLoadMisses_;
+      }
+      /**
+       * <code>optional uint64 llc_load_misses = 33;</code>
+       */
+      public Builder setLlcLoadMisses(long value) {
+        bitField1_ |= 0x00000001;
+        llcLoadMisses_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 llc_load_misses = 33;</code>
+       */
+      public Builder clearLlcLoadMisses() {
+        bitField1_ = (bitField1_ & ~0x00000001);
+        llcLoadMisses_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 llc_stores = 34;
+      private long llcStores_ ;
+      /**
+       * <code>optional uint64 llc_stores = 34;</code>
+       */
+      public boolean hasLlcStores() {
+        return ((bitField1_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional uint64 llc_stores = 34;</code>
+       */
+      public long getLlcStores() {
+        return llcStores_;
+      }
+      /**
+       * <code>optional uint64 llc_stores = 34;</code>
+       */
+      public Builder setLlcStores(long value) {
+        bitField1_ |= 0x00000002;
+        llcStores_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 llc_stores = 34;</code>
+       */
+      public Builder clearLlcStores() {
+        bitField1_ = (bitField1_ & ~0x00000002);
+        llcStores_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 llc_store_misses = 35;
+      private long llcStoreMisses_ ;
+      /**
+       * <code>optional uint64 llc_store_misses = 35;</code>
+       */
+      public boolean hasLlcStoreMisses() {
+        return ((bitField1_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional uint64 llc_store_misses = 35;</code>
+       */
+      public long getLlcStoreMisses() {
+        return llcStoreMisses_;
+      }
+      /**
+       * <code>optional uint64 llc_store_misses = 35;</code>
+       */
+      public Builder setLlcStoreMisses(long value) {
+        bitField1_ |= 0x00000004;
+        llcStoreMisses_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 llc_store_misses = 35;</code>
+       */
+      public Builder clearLlcStoreMisses() {
+        bitField1_ = (bitField1_ & ~0x00000004);
+        llcStoreMisses_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 llc_prefetches = 36;
+      private long llcPrefetches_ ;
+      /**
+       * <code>optional uint64 llc_prefetches = 36;</code>
+       */
+      public boolean hasLlcPrefetches() {
+        return ((bitField1_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional uint64 llc_prefetches = 36;</code>
+       */
+      public long getLlcPrefetches() {
+        return llcPrefetches_;
+      }
+      /**
+       * <code>optional uint64 llc_prefetches = 36;</code>
+       */
+      public Builder setLlcPrefetches(long value) {
+        bitField1_ |= 0x00000008;
+        llcPrefetches_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 llc_prefetches = 36;</code>
+       */
+      public Builder clearLlcPrefetches() {
+        bitField1_ = (bitField1_ & ~0x00000008);
+        llcPrefetches_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 llc_prefetch_misses = 37;
+      private long llcPrefetchMisses_ ;
+      /**
+       * <code>optional uint64 llc_prefetch_misses = 37;</code>
+       */
+      public boolean hasLlcPrefetchMisses() {
+        return ((bitField1_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional uint64 llc_prefetch_misses = 37;</code>
+       */
+      public long getLlcPrefetchMisses() {
+        return llcPrefetchMisses_;
+      }
+      /**
+       * <code>optional uint64 llc_prefetch_misses = 37;</code>
+       */
+      public Builder setLlcPrefetchMisses(long value) {
+        bitField1_ |= 0x00000010;
+        llcPrefetchMisses_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 llc_prefetch_misses = 37;</code>
+       */
+      public Builder clearLlcPrefetchMisses() {
+        bitField1_ = (bitField1_ & ~0x00000010);
+        llcPrefetchMisses_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 dtlb_loads = 38;
+      private long dtlbLoads_ ;
+      /**
+       * <code>optional uint64 dtlb_loads = 38;</code>
+       */
+      public boolean hasDtlbLoads() {
+        return ((bitField1_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional uint64 dtlb_loads = 38;</code>
+       */
+      public long getDtlbLoads() {
+        return dtlbLoads_;
+      }
+      /**
+       * <code>optional uint64 dtlb_loads = 38;</code>
+       */
+      public Builder setDtlbLoads(long value) {
+        bitField1_ |= 0x00000020;
+        dtlbLoads_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 dtlb_loads = 38;</code>
+       */
+      public Builder clearDtlbLoads() {
+        bitField1_ = (bitField1_ & ~0x00000020);
+        dtlbLoads_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 dtlb_load_misses = 39;
+      private long dtlbLoadMisses_ ;
+      /**
+       * <code>optional uint64 dtlb_load_misses = 39;</code>
+       */
+      public boolean hasDtlbLoadMisses() {
+        return ((bitField1_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional uint64 dtlb_load_misses = 39;</code>
+       */
+      public long getDtlbLoadMisses() {
+        return dtlbLoadMisses_;
+      }
+      /**
+       * <code>optional uint64 dtlb_load_misses = 39;</code>
+       */
+      public Builder setDtlbLoadMisses(long value) {
+        bitField1_ |= 0x00000040;
+        dtlbLoadMisses_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 dtlb_load_misses = 39;</code>
+       */
+      public Builder clearDtlbLoadMisses() {
+        bitField1_ = (bitField1_ & ~0x00000040);
+        dtlbLoadMisses_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 dtlb_stores = 40;
+      private long dtlbStores_ ;
+      /**
+       * <code>optional uint64 dtlb_stores = 40;</code>
+       */
+      public boolean hasDtlbStores() {
+        return ((bitField1_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional uint64 dtlb_stores = 40;</code>
+       */
+      public long getDtlbStores() {
+        return dtlbStores_;
+      }
+      /**
+       * <code>optional uint64 dtlb_stores = 40;</code>
+       */
+      public Builder setDtlbStores(long value) {
+        bitField1_ |= 0x00000080;
+        dtlbStores_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 dtlb_stores = 40;</code>
+       */
+      public Builder clearDtlbStores() {
+        bitField1_ = (bitField1_ & ~0x00000080);
+        dtlbStores_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 dtlb_store_misses = 41;
+      private long dtlbStoreMisses_ ;
+      /**
+       * <code>optional uint64 dtlb_store_misses = 41;</code>
+       */
+      public boolean hasDtlbStoreMisses() {
+        return ((bitField1_ & 0x00000100) == 0x00000100);
+      }
+      /**
+       * <code>optional uint64 dtlb_store_misses = 41;</code>
+       */
+      public long getDtlbStoreMisses() {
+        return dtlbStoreMisses_;
+      }
+      /**
+       * <code>optional uint64 dtlb_store_misses = 41;</code>
+       */
+      public Builder setDtlbStoreMisses(long value) {
+        bitField1_ |= 0x00000100;
+        dtlbStoreMisses_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 dtlb_store_misses = 41;</code>
+       */
+      public Builder clearDtlbStoreMisses() {
+        bitField1_ = (bitField1_ & ~0x00000100);
+        dtlbStoreMisses_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 dtlb_prefetches = 42;
+      private long dtlbPrefetches_ ;
+      /**
+       * <code>optional uint64 dtlb_prefetches = 42;</code>
+       */
+      public boolean hasDtlbPrefetches() {
+        return ((bitField1_ & 0x00000200) == 0x00000200);
+      }
+      /**
+       * <code>optional uint64 dtlb_prefetches = 42;</code>
+       */
+      public long getDtlbPrefetches() {
+        return dtlbPrefetches_;
+      }
+      /**
+       * <code>optional uint64 dtlb_prefetches = 42;</code>
+       */
+      public Builder setDtlbPrefetches(long value) {
+        bitField1_ |= 0x00000200;
+        dtlbPrefetches_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 dtlb_prefetches = 42;</code>
+       */
+      public Builder clearDtlbPrefetches() {
+        bitField1_ = (bitField1_ & ~0x00000200);
+        dtlbPrefetches_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 dtlb_prefetch_misses = 43;
+      private long dtlbPrefetchMisses_ ;
+      /**
+       * <code>optional uint64 dtlb_prefetch_misses = 43;</code>
+       */
+      public boolean hasDtlbPrefetchMisses() {
+        return ((bitField1_ & 0x00000400) == 0x00000400);
+      }
+      /**
+       * <code>optional uint64 dtlb_prefetch_misses = 43;</code>
+       */
+      public long getDtlbPrefetchMisses() {
+        return dtlbPrefetchMisses_;
+      }
+      /**
+       * <code>optional uint64 dtlb_prefetch_misses = 43;</code>
+       */
+      public Builder setDtlbPrefetchMisses(long value) {
+        bitField1_ |= 0x00000400;
+        dtlbPrefetchMisses_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 dtlb_prefetch_misses = 43;</code>
+       */
+      public Builder clearDtlbPrefetchMisses() {
+        bitField1_ = (bitField1_ & ~0x00000400);
+        dtlbPrefetchMisses_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 itlb_loads = 44;
+      private long itlbLoads_ ;
+      /**
+       * <code>optional uint64 itlb_loads = 44;</code>
+       */
+      public boolean hasItlbLoads() {
+        return ((bitField1_ & 0x00000800) == 0x00000800);
+      }
+      /**
+       * <code>optional uint64 itlb_loads = 44;</code>
+       */
+      public long getItlbLoads() {
+        return itlbLoads_;
+      }
+      /**
+       * <code>optional uint64 itlb_loads = 44;</code>
+       */
+      public Builder setItlbLoads(long value) {
+        bitField1_ |= 0x00000800;
+        itlbLoads_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 itlb_loads = 44;</code>
+       */
+      public Builder clearItlbLoads() {
+        bitField1_ = (bitField1_ & ~0x00000800);
+        itlbLoads_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 itlb_load_misses = 45;
+      private long itlbLoadMisses_ ;
+      /**
+       * <code>optional uint64 itlb_load_misses = 45;</code>
+       */
+      public boolean hasItlbLoadMisses() {
+        return ((bitField1_ & 0x00001000) == 0x00001000);
+      }
+      /**
+       * <code>optional uint64 itlb_load_misses = 45;</code>
+       */
+      public long getItlbLoadMisses() {
+        return itlbLoadMisses_;
+      }
+      /**
+       * <code>optional uint64 itlb_load_misses = 45;</code>
+       */
+      public Builder setItlbLoadMisses(long value) {
+        bitField1_ |= 0x00001000;
+        itlbLoadMisses_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 itlb_load_misses = 45;</code>
+       */
+      public Builder clearItlbLoadMisses() {
+        bitField1_ = (bitField1_ & ~0x00001000);
+        itlbLoadMisses_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 branch_loads = 46;
+      private long branchLoads_ ;
+      /**
+       * <code>optional uint64 branch_loads = 46;</code>
+       */
+      public boolean hasBranchLoads() {
+        return ((bitField1_ & 0x00002000) == 0x00002000);
+      }
+      /**
+       * <code>optional uint64 branch_loads = 46;</code>
+       */
+      public long getBranchLoads() {
+        return branchLoads_;
+      }
+      /**
+       * <code>optional uint64 branch_loads = 46;</code>
+       */
+      public Builder setBranchLoads(long value) {
+        bitField1_ |= 0x00002000;
+        branchLoads_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 branch_loads = 46;</code>
+       */
+      public Builder clearBranchLoads() {
+        bitField1_ = (bitField1_ & ~0x00002000);
+        branchLoads_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 branch_load_misses = 47;
+      private long branchLoadMisses_ ;
+      /**
+       * <code>optional uint64 branch_load_misses = 47;</code>
+       */
+      public boolean hasBranchLoadMisses() {
+        return ((bitField1_ & 0x00004000) == 0x00004000);
+      }
+      /**
+       * <code>optional uint64 branch_load_misses = 47;</code>
+       */
+      public long getBranchLoadMisses() {
+        return branchLoadMisses_;
+      }
+      /**
+       * <code>optional uint64 branch_load_misses = 47;</code>
+       */
+      public Builder setBranchLoadMisses(long value) {
+        bitField1_ |= 0x00004000;
+        branchLoadMisses_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 branch_load_misses = 47;</code>
+       */
+      public Builder clearBranchLoadMisses() {
+        bitField1_ = (bitField1_ & ~0x00004000);
+        branchLoadMisses_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 node_loads = 48;
+      private long nodeLoads_ ;
+      /**
+       * <code>optional uint64 node_loads = 48;</code>
+       */
+      public boolean hasNodeLoads() {
+        return ((bitField1_ & 0x00008000) == 0x00008000);
+      }
+      /**
+       * <code>optional uint64 node_loads = 48;</code>
+       */
+      public long getNodeLoads() {
+        return nodeLoads_;
+      }
+      /**
+       * <code>optional uint64 node_loads = 48;</code>
+       */
+      public Builder setNodeLoads(long value) {
+        bitField1_ |= 0x00008000;
+        nodeLoads_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 node_loads = 48;</code>
+       */
+      public Builder clearNodeLoads() {
+        bitField1_ = (bitField1_ & ~0x00008000);
+        nodeLoads_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 node_load_misses = 49;
+      private long nodeLoadMisses_ ;
+      /**
+       * <code>optional uint64 node_load_misses = 49;</code>
+       */
+      public boolean hasNodeLoadMisses() {
+        return ((bitField1_ & 0x00010000) == 0x00010000);
+      }
+      /**
+       * <code>optional uint64 node_load_misses = 49;</code>
+       */
+      public long getNodeLoadMisses() {
+        return nodeLoadMisses_;
+      }
+      /**
+       * <code>optional uint64 node_load_misses = 49;</code>
+       */
+      public Builder setNodeLoadMisses(long value) {
+        bitField1_ |= 0x00010000;
+        nodeLoadMisses_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 node_load_misses = 49;</code>
+       */
+      public Builder clearNodeLoadMisses() {
+        bitField1_ = (bitField1_ & ~0x00010000);
+        nodeLoadMisses_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 node_stores = 50;
+      private long nodeStores_ ;
+      /**
+       * <code>optional uint64 node_stores = 50;</code>
+       */
+      public boolean hasNodeStores() {
+        return ((bitField1_ & 0x00020000) == 0x00020000);
+      }
+      /**
+       * <code>optional uint64 node_stores = 50;</code>
+       */
+      public long getNodeStores() {
+        return nodeStores_;
+      }
+      /**
+       * <code>optional uint64 node_stores = 50;</code>
+       */
+      public Builder setNodeStores(long value) {
+        bitField1_ |= 0x00020000;
+        nodeStores_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 node_stores = 50;</code>
+       */
+      public Builder clearNodeStores() {
+        bitField1_ = (bitField1_ & ~0x00020000);
+        nodeStores_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 node_store_misses = 51;
+      private long nodeStoreMisses_ ;
+      /**
+       * <code>optional uint64 node_store_misses = 51;</code>
+       */
+      public boolean hasNodeStoreMisses() {
+        return ((bitField1_ & 0x00040000) == 0x00040000);
+      }
+      /**
+       * <code>optional uint64 node_store_misses = 51;</code>
+       */
+      public long getNodeStoreMisses() {
+        return nodeStoreMisses_;
+      }
+      /**
+       * <code>optional uint64 node_store_misses = 51;</code>
+       */
+      public Builder setNodeStoreMisses(long value) {
+        bitField1_ |= 0x00040000;
+        nodeStoreMisses_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 node_store_misses = 51;</code>
+       */
+      public Builder clearNodeStoreMisses() {
+        bitField1_ = (bitField1_ & ~0x00040000);
+        nodeStoreMisses_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 node_prefetches = 52;
+      private long nodePrefetches_ ;
+      /**
+       * <code>optional uint64 node_prefetches = 52;</code>
+       */
+      public boolean hasNodePrefetches() {
+        return ((bitField1_ & 0x00080000) == 0x00080000);
+      }
+      /**
+       * <code>optional uint64 node_prefetches = 52;</code>
+       */
+      public long getNodePrefetches() {
+        return nodePrefetches_;
+      }
+      /**
+       * <code>optional uint64 node_prefetches = 52;</code>
+       */
+      public Builder setNodePrefetches(long value) {
+        bitField1_ |= 0x00080000;
+        nodePrefetches_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 node_prefetches = 52;</code>
+       */
+      public Builder clearNodePrefetches() {
+        bitField1_ = (bitField1_ & ~0x00080000);
+        nodePrefetches_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 node_prefetch_misses = 53;
+      private long nodePrefetchMisses_ ;
+      /**
+       * <code>optional uint64 node_prefetch_misses = 53;</code>
+       */
+      public boolean hasNodePrefetchMisses() {
+        return ((bitField1_ & 0x00100000) == 0x00100000);
+      }
+      /**
+       * <code>optional uint64 node_prefetch_misses = 53;</code>
+       */
+      public long getNodePrefetchMisses() {
+        return nodePrefetchMisses_;
+      }
+      /**
+       * <code>optional uint64 node_prefetch_misses = 53;</code>
+       */
+      public Builder setNodePrefetchMisses(long value) {
+        bitField1_ |= 0x00100000;
+        nodePrefetchMisses_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 node_prefetch_misses = 53;</code>
+       */
+      public Builder clearNodePrefetchMisses() {
+        bitField1_ = (bitField1_ & ~0x00100000);
+        nodePrefetchMisses_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.PerfStatistics)
+    }
+
+    static {
+      defaultInstance = new PerfStatistics(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.PerfStatistics)
+  }
+
+  public interface RequestOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional .mesos.v1.AgentID agent_id = 1;
+    /**
+     * <code>optional .mesos.v1.AgentID agent_id = 1;</code>
+     */
+    boolean hasAgentId();
+    /**
+     * <code>optional .mesos.v1.AgentID agent_id = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.AgentID getAgentId();
+    /**
+     * <code>optional .mesos.v1.AgentID agent_id = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.AgentIDOrBuilder getAgentIdOrBuilder();
+
+    // repeated .mesos.v1.Resource resources = 2;
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 2;</code>
+     */
+    java.util.List<org.apache.mesos.v1.Protos.Resource> 
+        getResourcesList();
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 2;</code>
+     */
+    org.apache.mesos.v1.Protos.Resource getResources(int index);
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 2;</code>
+     */
+    int getResourcesCount();
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 2;</code>
+     */
+    java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+        getResourcesOrBuilderList();
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 2;</code>
+     */
+    org.apache.mesos.v1.Protos.ResourceOrBuilder getResourcesOrBuilder(
+        int index);
+  }
+  /**
+   * Protobuf type {@code mesos.v1.Request}
+   *
+   * <pre>
+   **
+   * Describes a request for resources that can be used by a framework
+   * to proactively influence the allocator.  If 'agent_id' is provided
+   * then this request is assumed to only apply to resources on that
+   * agent.
+   * </pre>
+   */
+  public static final class Request extends
+      com.google.protobuf.GeneratedMessage
+      implements RequestOrBuilder {
+    // Use Request.newBuilder() to construct.
+    private Request(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Request(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Request defaultInstance;
+    public static Request getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Request getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Request(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              org.apache.mesos.v1.Protos.AgentID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                subBuilder = agentId_.toBuilder();
+              }
+              agentId_ = input.readMessage(org.apache.mesos.v1.Protos.AgentID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(agentId_);
+                agentId_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+            case 18: {
+              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+                resources_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Resource>();
+                mutable_bitField0_ |= 0x00000002;
+              }
+              resources_.add(input.readMessage(org.apache.mesos.v1.Protos.Resource.PARSER, extensionRegistry));
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+          resources_ = java.util.Collections.unmodifiableList(resources_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Request_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Request_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.Request.class, org.apache.mesos.v1.Protos.Request.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Request> PARSER =
+        new com.google.protobuf.AbstractParser<Request>() {
+      public Request parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Request(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Request> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // optional .mesos.v1.AgentID agent_id = 1;
+    public static final int AGENT_ID_FIELD_NUMBER = 1;
+    private org.apache.mesos.v1.Protos.AgentID agentId_;
+    /**
+     * <code>optional .mesos.v1.AgentID agent_id = 1;</code>
+     */
+    public boolean hasAgentId() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional .mesos.v1.AgentID agent_id = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.AgentID getAgentId() {
+      return agentId_;
+    }
+    /**
+     * <code>optional .mesos.v1.AgentID agent_id = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.AgentIDOrBuilder getAgentIdOrBuilder() {
+      return agentId_;
+    }
+
+    // repeated .mesos.v1.Resource resources = 2;
+    public static final int RESOURCES_FIELD_NUMBER = 2;
+    private java.util.List<org.apache.mesos.v1.Protos.Resource> resources_;
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 2;</code>
+     */
+    public java.util.List<org.apache.mesos.v1.Protos.Resource> getResourcesList() {
+      return resources_;
+    }
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 2;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+        getResourcesOrBuilderList() {
+      return resources_;
+    }
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 2;</code>
+     */
+    public int getResourcesCount() {
+      return resources_.size();
+    }
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 2;</code>
+     */
+    public org.apache.mesos.v1.Protos.Resource getResources(int index) {
+      return resources_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 2;</code>
+     */
+    public org.apache.mesos.v1.Protos.ResourceOrBuilder getResourcesOrBuilder(
+        int index) {
+      return resources_.get(index);
+    }
+
+    private void initFields() {
+      agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+      resources_ = java.util.Collections.emptyList();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (hasAgentId()) {
+        if (!getAgentId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      for (int i = 0; i < getResourcesCount(); i++) {
+        if (!getResources(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeMessage(1, agentId_);
+      }
+      for (int i = 0; i < resources_.size(); i++) {
+        output.writeMessage(2, resources_.get(i));
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, agentId_);
+      }
+      for (int i = 0; i < resources_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, resources_.get(i));
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.Request parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Request parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Request parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Request parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Request parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Request parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Request parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Request parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Request parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Request parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.Request prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.Request}
+     *
+     * <pre>
+     **
+     * Describes a request for resources that can be used by a framework
+     * to proactively influence the allocator.  If 'agent_id' is provided
+     * then this request is assumed to only apply to resources on that
+     * agent.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.RequestOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Request_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Request_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.Request.class, org.apache.mesos.v1.Protos.Request.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.Request.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getAgentIdFieldBuilder();
+          getResourcesFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (agentIdBuilder_ == null) {
+          agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+        } else {
+          agentIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (resourcesBuilder_ == null) {
+          resources_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000002);
+        } else {
+          resourcesBuilder_.clear();
+        }
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Request_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.Request getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.Request.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.Request build() {
+        org.apache.mesos.v1.Protos.Request result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.Request buildPartial() {
+        org.apache.mesos.v1.Protos.Request result = new org.apache.mesos.v1.Protos.Request(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        if (agentIdBuilder_ == null) {
+          result.agentId_ = agentId_;
+        } else {
+          result.agentId_ = agentIdBuilder_.build();
+        }
+        if (resourcesBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            resources_ = java.util.Collections.unmodifiableList(resources_);
+            bitField0_ = (bitField0_ & ~0x00000002);
+          }
+          result.resources_ = resources_;
+        } else {
+          result.resources_ = resourcesBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.Request) {
+          return mergeFrom((org.apache.mesos.v1.Protos.Request)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.Request other) {
+        if (other == org.apache.mesos.v1.Protos.Request.getDefaultInstance()) return this;
+        if (other.hasAgentId()) {
+          mergeAgentId(other.getAgentId());
+        }
+        if (resourcesBuilder_ == null) {
+          if (!other.resources_.isEmpty()) {
+            if (resources_.isEmpty()) {
+              resources_ = other.resources_;
+              bitField0_ = (bitField0_ & ~0x00000002);
+            } else {
+              ensureResourcesIsMutable();
+              resources_.addAll(other.resources_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.resources_.isEmpty()) {
+            if (resourcesBuilder_.isEmpty()) {
+              resourcesBuilder_.dispose();
+              resourcesBuilder_ = null;
+              resources_ = other.resources_;
+              bitField0_ = (bitField0_ & ~0x00000002);
+              resourcesBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getResourcesFieldBuilder() : null;
+            } else {
+              resourcesBuilder_.addAllMessages(other.resources_);
+            }
+          }
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (hasAgentId()) {
+          if (!getAgentId().isInitialized()) {
+            
+            return false;
+          }
+        }
+        for (int i = 0; i < getResourcesCount(); i++) {
+          if (!getResources(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.Request parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.Request) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional .mesos.v1.AgentID agent_id = 1;
+      private org.apache.mesos.v1.Protos.AgentID agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.AgentID, org.apache.mesos.v1.Protos.AgentID.Builder, org.apache.mesos.v1.Protos.AgentIDOrBuilder> agentIdBuilder_;
+      /**
+       * <code>optional .mesos.v1.AgentID agent_id = 1;</code>
+       */
+      public boolean hasAgentId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.v1.AgentID agent_id = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.AgentID getAgentId() {
+        if (agentIdBuilder_ == null) {
+          return agentId_;
+        } else {
+          return agentIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.AgentID agent_id = 1;</code>
+       */
+      public Builder setAgentId(org.apache.mesos.v1.Protos.AgentID value) {
+        if (agentIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          agentId_ = value;
+          onChanged();
+        } else {
+          agentIdBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.AgentID agent_id = 1;</code>
+       */
+      public Builder setAgentId(
+          org.apache.mesos.v1.Protos.AgentID.Builder builderForValue) {
+        if (agentIdBuilder_ == null) {
+          agentId_ = builderForValue.build();
+          onChanged();
+        } else {
+          agentIdBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.AgentID agent_id = 1;</code>
+       */
+      public Builder mergeAgentId(org.apache.mesos.v1.Protos.AgentID value) {
+        if (agentIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001) &&
+              agentId_ != org.apache.mesos.v1.Protos.AgentID.getDefaultInstance()) {
+            agentId_ =
+              org.apache.mesos.v1.Protos.AgentID.newBuilder(agentId_).mergeFrom(value).buildPartial();
+          } else {
+            agentId_ = value;
+          }
+          onChanged();
+        } else {
+          agentIdBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.AgentID agent_id = 1;</code>
+       */
+      public Builder clearAgentId() {
+        if (agentIdBuilder_ == null) {
+          agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+          onChanged();
+        } else {
+          agentIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.AgentID agent_id = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.AgentID.Builder getAgentIdBuilder() {
+        bitField0_ |= 0x00000001;
+        onChanged();
+        return getAgentIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.AgentID agent_id = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.AgentIDOrBuilder getAgentIdOrBuilder() {
+        if (agentIdBuilder_ != null) {
+          return agentIdBuilder_.getMessageOrBuilder();
+        } else {
+          return agentId_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.AgentID agent_id = 1;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.AgentID, org.apache.mesos.v1.Protos.AgentID.Builder, org.apache.mesos.v1.Protos.AgentIDOrBuilder> 
+          getAgentIdFieldBuilder() {
+        if (agentIdBuilder_ == null) {
+          agentIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.AgentID, org.apache.mesos.v1.Protos.AgentID.Builder, org.apache.mesos.v1.Protos.AgentIDOrBuilder>(
+                  agentId_,
+                  getParentForChildren(),
+                  isClean());
+          agentId_ = null;
+        }
+        return agentIdBuilder_;
+      }
+
+      // repeated .mesos.v1.Resource resources = 2;
+      private java.util.List<org.apache.mesos.v1.Protos.Resource> resources_ =
+        java.util.Collections.emptyList();
+      private void ensureResourcesIsMutable() {
+        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
+          resources_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Resource>(resources_);
+          bitField0_ |= 0x00000002;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder> resourcesBuilder_;
+
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 2;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Resource> getResourcesList() {
+        if (resourcesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(resources_);
+        } else {
+          return resourcesBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 2;</code>
+       */
+      public int getResourcesCount() {
+        if (resourcesBuilder_ == null) {
+          return resources_.size();
+        } else {
+          return resourcesBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.Resource getResources(int index) {
+        if (resourcesBuilder_ == null) {
+          return resources_.get(index);
+        } else {
+          return resourcesBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 2;</code>
+       */
+      public Builder setResources(
+          int index, org.apache.mesos.v1.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.set(index, value);
+          onChanged();
+        } else {
+          resourcesBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 2;</code>
+       */
+      public Builder setResources(
+          int index, org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 2;</code>
+       */
+      public Builder addResources(org.apache.mesos.v1.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.add(value);
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 2;</code>
+       */
+      public Builder addResources(
+          int index, org.apache.mesos.v1.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.add(index, value);
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 2;</code>
+       */
+      public Builder addResources(
+          org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.add(builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 2;</code>
+       */
+      public Builder addResources(
+          int index, org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 2;</code>
+       */
+      public Builder addAllResources(
+          java.lang.Iterable<? extends org.apache.mesos.v1.Protos.Resource> values) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          super.addAll(values, resources_);
+          onChanged();
+        } else {
+          resourcesBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 2;</code>
+       */
+      public Builder clearResources() {
+        if (resourcesBuilder_ == null) {
+          resources_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000002);
+          onChanged();
+        } else {
+          resourcesBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 2;</code>
+       */
+      public Builder removeResources(int index) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.remove(index);
+          onChanged();
+        } else {
+          resourcesBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.Resource.Builder getResourcesBuilder(
+          int index) {
+        return getResourcesFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.ResourceOrBuilder getResourcesOrBuilder(
+          int index) {
+        if (resourcesBuilder_ == null) {
+          return resources_.get(index);  } else {
+          return resourcesBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 2;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+           getResourcesOrBuilderList() {
+        if (resourcesBuilder_ != null) {
+          return resourcesBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(resources_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.Resource.Builder addResourcesBuilder() {
+        return getResourcesFieldBuilder().addBuilder(
+            org.apache.mesos.v1.Protos.Resource.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.Resource.Builder addResourcesBuilder(
+          int index) {
+        return getResourcesFieldBuilder().addBuilder(
+            index, org.apache.mesos.v1.Protos.Resource.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 2;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Resource.Builder> 
+           getResourcesBuilderList() {
+        return getResourcesFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+          getResourcesFieldBuilder() {
+        if (resourcesBuilder_ == null) {
+          resourcesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder>(
+                  resources_,
+                  ((bitField0_ & 0x00000002) == 0x00000002),
+                  getParentForChildren(),
+                  isClean());
+          resources_ = null;
+        }
+        return resourcesBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.Request)
+    }
+
+    static {
+      defaultInstance = new Request(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.Request)
+  }
+
+  public interface OfferOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required .mesos.v1.OfferID id = 1;
+    /**
+     * <code>required .mesos.v1.OfferID id = 1;</code>
+     */
+    boolean hasId();
+    /**
+     * <code>required .mesos.v1.OfferID id = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.OfferID getId();
+    /**
+     * <code>required .mesos.v1.OfferID id = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.OfferIDOrBuilder getIdOrBuilder();
+
+    // required .mesos.v1.FrameworkID framework_id = 2;
+    /**
+     * <code>required .mesos.v1.FrameworkID framework_id = 2;</code>
+     */
+    boolean hasFrameworkId();
+    /**
+     * <code>required .mesos.v1.FrameworkID framework_id = 2;</code>
+     */
+    org.apache.mesos.v1.Protos.FrameworkID getFrameworkId();
+    /**
+     * <code>required .mesos.v1.FrameworkID framework_id = 2;</code>
+     */
+    org.apache.mesos.v1.Protos.FrameworkIDOrBuilder getFrameworkIdOrBuilder();
+
+    // required .mesos.v1.AgentID agent_id = 3;
+    /**
+     * <code>required .mesos.v1.AgentID agent_id = 3;</code>
+     */
+    boolean hasAgentId();
+    /**
+     * <code>required .mesos.v1.AgentID agent_id = 3;</code>
+     */
+    org.apache.mesos.v1.Protos.AgentID getAgentId();
+    /**
+     * <code>required .mesos.v1.AgentID agent_id = 3;</code>
+     */
+    org.apache.mesos.v1.Protos.AgentIDOrBuilder getAgentIdOrBuilder();
+
+    // required string hostname = 4;
+    /**
+     * <code>required string hostname = 4;</code>
+     */
+    boolean hasHostname();
+    /**
+     * <code>required string hostname = 4;</code>
+     */
+    java.lang.String getHostname();
+    /**
+     * <code>required string hostname = 4;</code>
+     */
+    com.google.protobuf.ByteString
+        getHostnameBytes();
+
+    // optional .mesos.v1.URL url = 8;
+    /**
+     * <code>optional .mesos.v1.URL url = 8;</code>
+     *
+     * <pre>
+     * URL for reaching the agent running on the host.
+     * </pre>
+     */
+    boolean hasUrl();
+    /**
+     * <code>optional .mesos.v1.URL url = 8;</code>
+     *
+     * <pre>
+     * URL for reaching the agent running on the host.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.URL getUrl();
+    /**
+     * <code>optional .mesos.v1.URL url = 8;</code>
+     *
+     * <pre>
+     * URL for reaching the agent running on the host.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.URLOrBuilder getUrlOrBuilder();
+
+    // optional .mesos.v1.DomainInfo domain = 11;
+    /**
+     * <code>optional .mesos.v1.DomainInfo domain = 11;</code>
+     *
+     * <pre>
+     * The domain of the agent.
+     * </pre>
+     */
+    boolean hasDomain();
+    /**
+     * <code>optional .mesos.v1.DomainInfo domain = 11;</code>
+     *
+     * <pre>
+     * The domain of the agent.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.DomainInfo getDomain();
+    /**
+     * <code>optional .mesos.v1.DomainInfo domain = 11;</code>
+     *
+     * <pre>
+     * The domain of the agent.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.DomainInfoOrBuilder getDomainOrBuilder();
+
+    // repeated .mesos.v1.Resource resources = 5;
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 5;</code>
+     */
+    java.util.List<org.apache.mesos.v1.Protos.Resource> 
+        getResourcesList();
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 5;</code>
+     */
+    org.apache.mesos.v1.Protos.Resource getResources(int index);
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 5;</code>
+     */
+    int getResourcesCount();
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 5;</code>
+     */
+    java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+        getResourcesOrBuilderList();
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 5;</code>
+     */
+    org.apache.mesos.v1.Protos.ResourceOrBuilder getResourcesOrBuilder(
+        int index);
+
+    // repeated .mesos.v1.Attribute attributes = 7;
+    /**
+     * <code>repeated .mesos.v1.Attribute attributes = 7;</code>
+     */
+    java.util.List<org.apache.mesos.v1.Protos.Attribute> 
+        getAttributesList();
+    /**
+     * <code>repeated .mesos.v1.Attribute attributes = 7;</code>
+     */
+    org.apache.mesos.v1.Protos.Attribute getAttributes(int index);
+    /**
+     * <code>repeated .mesos.v1.Attribute attributes = 7;</code>
+     */
+    int getAttributesCount();
+    /**
+     * <code>repeated .mesos.v1.Attribute attributes = 7;</code>
+     */
+    java.util.List<? extends org.apache.mesos.v1.Protos.AttributeOrBuilder> 
+        getAttributesOrBuilderList();
+    /**
+     * <code>repeated .mesos.v1.Attribute attributes = 7;</code>
+     */
+    org.apache.mesos.v1.Protos.AttributeOrBuilder getAttributesOrBuilder(
+        int index);
+
+    // repeated .mesos.v1.ExecutorID executor_ids = 6;
+    /**
+     * <code>repeated .mesos.v1.ExecutorID executor_ids = 6;</code>
+     */
+    java.util.List<org.apache.mesos.v1.Protos.ExecutorID> 
+        getExecutorIdsList();
+    /**
+     * <code>repeated .mesos.v1.ExecutorID executor_ids = 6;</code>
+     */
+    org.apache.mesos.v1.Protos.ExecutorID getExecutorIds(int index);
+    /**
+     * <code>repeated .mesos.v1.ExecutorID executor_ids = 6;</code>
+     */
+    int getExecutorIdsCount();
+    /**
+     * <code>repeated .mesos.v1.ExecutorID executor_ids = 6;</code>
+     */
+    java.util.List<? extends org.apache.mesos.v1.Protos.ExecutorIDOrBuilder> 
+        getExecutorIdsOrBuilderList();
+    /**
+     * <code>repeated .mesos.v1.ExecutorID executor_ids = 6;</code>
+     */
+    org.apache.mesos.v1.Protos.ExecutorIDOrBuilder getExecutorIdsOrBuilder(
+        int index);
+
+    // optional .mesos.v1.Unavailability unavailability = 9;
+    /**
+     * <code>optional .mesos.v1.Unavailability unavailability = 9;</code>
+     *
+     * <pre>
+     * Signifies that the resources in this Offer may be unavailable during
+     * the given interval.  Any tasks launched using these resources may be
+     * killed when the interval arrives.  For example, these resources may be
+     * part of a planned maintenance schedule.
+     *
+     * This field only provides information about a planned unavailability.
+     * The unavailability interval may not necessarily start at exactly this
+     * interval, nor last for exactly the duration of this interval.
+     * The unavailability may also be forever!  See comments in
+     * `Unavailability` for more details.
+     * </pre>
+     */
+    boolean hasUnavailability();
+    /**
+     * <code>optional .mesos.v1.Unavailability unavailability = 9;</code>
+     *
+     * <pre>
+     * Signifies that the resources in this Offer may be unavailable during
+     * the given interval.  Any tasks launched using these resources may be
+     * killed when the interval arrives.  For example, these resources may be
+     * part of a planned maintenance schedule.
+     *
+     * This field only provides information about a planned unavailability.
+     * The unavailability interval may not necessarily start at exactly this
+     * interval, nor last for exactly the duration of this interval.
+     * The unavailability may also be forever!  See comments in
+     * `Unavailability` for more details.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.Unavailability getUnavailability();
+    /**
+     * <code>optional .mesos.v1.Unavailability unavailability = 9;</code>
+     *
+     * <pre>
+     * Signifies that the resources in this Offer may be unavailable during
+     * the given interval.  Any tasks launched using these resources may be
+     * killed when the interval arrives.  For example, these resources may be
+     * part of a planned maintenance schedule.
+     *
+     * This field only provides information about a planned unavailability.
+     * The unavailability interval may not necessarily start at exactly this
+     * interval, nor last for exactly the duration of this interval.
+     * The unavailability may also be forever!  See comments in
+     * `Unavailability` for more details.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.UnavailabilityOrBuilder getUnavailabilityOrBuilder();
+
+    // optional .mesos.v1.Resource.AllocationInfo allocation_info = 10;
+    /**
+     * <code>optional .mesos.v1.Resource.AllocationInfo allocation_info = 10;</code>
+     *
+     * <pre>
+     * An offer represents resources allocated to *one* of the
+     * roles managed by the scheduler. (Therefore, each
+     * `Offer.resources[i].allocation_info` will match the
+     * top level `Offer.allocation_info`).
+     * </pre>
+     */
+    boolean hasAllocationInfo();
+    /**
+     * <code>optional .mesos.v1.Resource.AllocationInfo allocation_info = 10;</code>
+     *
+     * <pre>
+     * An offer represents resources allocated to *one* of the
+     * roles managed by the scheduler. (Therefore, each
+     * `Offer.resources[i].allocation_info` will match the
+     * top level `Offer.allocation_info`).
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.Resource.AllocationInfo getAllocationInfo();
+    /**
+     * <code>optional .mesos.v1.Resource.AllocationInfo allocation_info = 10;</code>
+     *
+     * <pre>
+     * An offer represents resources allocated to *one* of the
+     * roles managed by the scheduler. (Therefore, each
+     * `Offer.resources[i].allocation_info` will match the
+     * top level `Offer.allocation_info`).
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.Resource.AllocationInfoOrBuilder getAllocationInfoOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.Offer}
+   *
+   * <pre>
+   **
+   * Describes some resources available on an agent. An offer only
+   * contains resources from a single agent.
+   * </pre>
+   */
+  public static final class Offer extends
+      com.google.protobuf.GeneratedMessage
+      implements OfferOrBuilder {
+    // Use Offer.newBuilder() to construct.
+    private Offer(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Offer(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Offer defaultInstance;
+    public static Offer getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Offer getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Offer(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              org.apache.mesos.v1.Protos.OfferID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                subBuilder = id_.toBuilder();
+              }
+              id_ = input.readMessage(org.apache.mesos.v1.Protos.OfferID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(id_);
+                id_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+            case 18: {
+              org.apache.mesos.v1.Protos.FrameworkID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = frameworkId_.toBuilder();
+              }
+              frameworkId_ = input.readMessage(org.apache.mesos.v1.Protos.FrameworkID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(frameworkId_);
+                frameworkId_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+            case 26: {
+              org.apache.mesos.v1.Protos.AgentID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                subBuilder = agentId_.toBuilder();
+              }
+              agentId_ = input.readMessage(org.apache.mesos.v1.Protos.AgentID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(agentId_);
+                agentId_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000004;
+              break;
+            }
+            case 34: {
+              bitField0_ |= 0x00000008;
+              hostname_ = input.readBytes();
+              break;
+            }
+            case 42: {
+              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
+                resources_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Resource>();
+                mutable_bitField0_ |= 0x00000040;
+              }
+              resources_.add(input.readMessage(org.apache.mesos.v1.Protos.Resource.PARSER, extensionRegistry));
+              break;
+            }
+            case 50: {
+              if (!((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
+                executorIds_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.ExecutorID>();
+                mutable_bitField0_ |= 0x00000100;
+              }
+              executorIds_.add(input.readMessage(org.apache.mesos.v1.Protos.ExecutorID.PARSER, extensionRegistry));
+              break;
+            }
+            case 58: {
+              if (!((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
+                attributes_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Attribute>();
+                mutable_bitField0_ |= 0x00000080;
+              }
+              attributes_.add(input.readMessage(org.apache.mesos.v1.Protos.Attribute.PARSER, extensionRegistry));
+              break;
+            }
+            case 66: {
+              org.apache.mesos.v1.Protos.URL.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000010) == 0x00000010)) {
+                subBuilder = url_.toBuilder();
+              }
+              url_ = input.readMessage(org.apache.mesos.v1.Protos.URL.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(url_);
+                url_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000010;
+              break;
+            }
+            case 74: {
+              org.apache.mesos.v1.Protos.Unavailability.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000040) == 0x00000040)) {
+                subBuilder = unavailability_.toBuilder();
+              }
+              unavailability_ = input.readMessage(org.apache.mesos.v1.Protos.Unavailability.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(unavailability_);
+                unavailability_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000040;
+              break;
+            }
+            case 82: {
+              org.apache.mesos.v1.Protos.Resource.AllocationInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000080) == 0x00000080)) {
+                subBuilder = allocationInfo_.toBuilder();
+              }
+              allocationInfo_ = input.readMessage(org.apache.mesos.v1.Protos.Resource.AllocationInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(allocationInfo_);
+                allocationInfo_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000080;
+              break;
+            }
+            case 90: {
+              org.apache.mesos.v1.Protos.DomainInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000020) == 0x00000020)) {
+                subBuilder = domain_.toBuilder();
+              }
+              domain_ = input.readMessage(org.apache.mesos.v1.Protos.DomainInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(domain_);
+                domain_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000020;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
+          resources_ = java.util.Collections.unmodifiableList(resources_);
+        }
+        if (((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
+          executorIds_ = java.util.Collections.unmodifiableList(executorIds_);
+        }
+        if (((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
+          attributes_ = java.util.Collections.unmodifiableList(attributes_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Offer_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Offer_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.Offer.class, org.apache.mesos.v1.Protos.Offer.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Offer> PARSER =
+        new com.google.protobuf.AbstractParser<Offer>() {
+      public Offer parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Offer(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Offer> getParserForType() {
+      return PARSER;
+    }
+
+    public interface OperationOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // optional .mesos.v1.Offer.Operation.Type type = 1;
+      /**
+       * <code>optional .mesos.v1.Offer.Operation.Type type = 1;</code>
+       */
+      boolean hasType();
+      /**
+       * <code>optional .mesos.v1.Offer.Operation.Type type = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.Offer.Operation.Type getType();
+
+      // optional .mesos.v1.Offer.Operation.Launch launch = 2;
+      /**
+       * <code>optional .mesos.v1.Offer.Operation.Launch launch = 2;</code>
+       */
+      boolean hasLaunch();
+      /**
+       * <code>optional .mesos.v1.Offer.Operation.Launch launch = 2;</code>
+       */
+      org.apache.mesos.v1.Protos.Offer.Operation.Launch getLaunch();
+      /**
+       * <code>optional .mesos.v1.Offer.Operation.Launch launch = 2;</code>
+       */
+      org.apache.mesos.v1.Protos.Offer.Operation.LaunchOrBuilder getLaunchOrBuilder();
+
+      // optional .mesos.v1.Offer.Operation.LaunchGroup launch_group = 7;
+      /**
+       * <code>optional .mesos.v1.Offer.Operation.LaunchGroup launch_group = 7;</code>
+       */
+      boolean hasLaunchGroup();
+      /**
+       * <code>optional .mesos.v1.Offer.Operation.LaunchGroup launch_group = 7;</code>
+       */
+      org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup getLaunchGroup();
+      /**
+       * <code>optional .mesos.v1.Offer.Operation.LaunchGroup launch_group = 7;</code>
+       */
+      org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroupOrBuilder getLaunchGroupOrBuilder();
+
+      // optional .mesos.v1.Offer.Operation.Reserve reserve = 3;
+      /**
+       * <code>optional .mesos.v1.Offer.Operation.Reserve reserve = 3;</code>
+       */
+      boolean hasReserve();
+      /**
+       * <code>optional .mesos.v1.Offer.Operation.Reserve reserve = 3;</code>
+       */
+      org.apache.mesos.v1.Protos.Offer.Operation.Reserve getReserve();
+      /**
+       * <code>optional .mesos.v1.Offer.Operation.Reserve reserve = 3;</code>
+       */
+      org.apache.mesos.v1.Protos.Offer.Operation.ReserveOrBuilder getReserveOrBuilder();
+
+      // optional .mesos.v1.Offer.Operation.Unreserve unreserve = 4;
+      /**
+       * <code>optional .mesos.v1.Offer.Operation.Unreserve unreserve = 4;</code>
+       */
+      boolean hasUnreserve();
+      /**
+       * <code>optional .mesos.v1.Offer.Operation.Unreserve unreserve = 4;</code>
+       */
+      org.apache.mesos.v1.Protos.Offer.Operation.Unreserve getUnreserve();
+      /**
+       * <code>optional .mesos.v1.Offer.Operation.Unreserve unreserve = 4;</code>
+       */
+      org.apache.mesos.v1.Protos.Offer.Operation.UnreserveOrBuilder getUnreserveOrBuilder();
+
+      // optional .mesos.v1.Offer.Operation.Create create = 5;
+      /**
+       * <code>optional .mesos.v1.Offer.Operation.Create create = 5;</code>
+       */
+      boolean hasCreate();
+      /**
+       * <code>optional .mesos.v1.Offer.Operation.Create create = 5;</code>
+       */
+      org.apache.mesos.v1.Protos.Offer.Operation.Create getCreate();
+      /**
+       * <code>optional .mesos.v1.Offer.Operation.Create create = 5;</code>
+       */
+      org.apache.mesos.v1.Protos.Offer.Operation.CreateOrBuilder getCreateOrBuilder();
+
+      // optional .mesos.v1.Offer.Operation.Destroy destroy = 6;
+      /**
+       * <code>optional .mesos.v1.Offer.Operation.Destroy destroy = 6;</code>
+       */
+      boolean hasDestroy();
+      /**
+       * <code>optional .mesos.v1.Offer.Operation.Destroy destroy = 6;</code>
+       */
+      org.apache.mesos.v1.Protos.Offer.Operation.Destroy getDestroy();
+      /**
+       * <code>optional .mesos.v1.Offer.Operation.Destroy destroy = 6;</code>
+       */
+      org.apache.mesos.v1.Protos.Offer.Operation.DestroyOrBuilder getDestroyOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.Offer.Operation}
+     *
+     * <pre>
+     * Defines an operation that can be performed against offers.
+     * </pre>
+     */
+    public static final class Operation extends
+        com.google.protobuf.GeneratedMessage
+        implements OperationOrBuilder {
+      // Use Operation.newBuilder() to construct.
+      private Operation(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Operation(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Operation defaultInstance;
+      public static Operation getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Operation getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Operation(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 8: {
+                int rawValue = input.readEnum();
+                org.apache.mesos.v1.Protos.Offer.Operation.Type value = org.apache.mesos.v1.Protos.Offer.Operation.Type.valueOf(rawValue);
+                if (value == null) {
+                  unknownFields.mergeVarintField(1, rawValue);
+                } else {
+                  bitField0_ |= 0x00000001;
+                  type_ = value;
+                }
+                break;
+              }
+              case 18: {
+                org.apache.mesos.v1.Protos.Offer.Operation.Launch.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                  subBuilder = launch_.toBuilder();
+                }
+                launch_ = input.readMessage(org.apache.mesos.v1.Protos.Offer.Operation.Launch.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(launch_);
+                  launch_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000002;
+                break;
+              }
+              case 26: {
+                org.apache.mesos.v1.Protos.Offer.Operation.Reserve.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                  subBuilder = reserve_.toBuilder();
+                }
+                reserve_ = input.readMessage(org.apache.mesos.v1.Protos.Offer.Operation.Reserve.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(reserve_);
+                  reserve_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000008;
+                break;
+              }
+              case 34: {
+                org.apache.mesos.v1.Protos.Offer.Operation.Unreserve.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000010) == 0x00000010)) {
+                  subBuilder = unreserve_.toBuilder();
+                }
+                unreserve_ = input.readMessage(org.apache.mesos.v1.Protos.Offer.Operation.Unreserve.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(unreserve_);
+                  unreserve_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000010;
+                break;
+              }
+              case 42: {
+                org.apache.mesos.v1.Protos.Offer.Operation.Create.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000020) == 0x00000020)) {
+                  subBuilder = create_.toBuilder();
+                }
+                create_ = input.readMessage(org.apache.mesos.v1.Protos.Offer.Operation.Create.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(create_);
+                  create_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000020;
+                break;
+              }
+              case 50: {
+                org.apache.mesos.v1.Protos.Offer.Operation.Destroy.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000040) == 0x00000040)) {
+                  subBuilder = destroy_.toBuilder();
+                }
+                destroy_ = input.readMessage(org.apache.mesos.v1.Protos.Offer.Operation.Destroy.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(destroy_);
+                  destroy_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000040;
+                break;
+              }
+              case 58: {
+                org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                  subBuilder = launchGroup_.toBuilder();
+                }
+                launchGroup_ = input.readMessage(org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(launchGroup_);
+                  launchGroup_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000004;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Offer_Operation_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Offer_Operation_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.Offer.Operation.class, org.apache.mesos.v1.Protos.Offer.Operation.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Operation> PARSER =
+          new com.google.protobuf.AbstractParser<Operation>() {
+        public Operation parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Operation(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Operation> getParserForType() {
+        return PARSER;
+      }
+
+      /**
+       * Protobuf enum {@code mesos.v1.Offer.Operation.Type}
+       */
+      public enum Type
+          implements com.google.protobuf.ProtocolMessageEnum {
+        /**
+         * <code>UNKNOWN = 0;</code>
+         */
+        UNKNOWN(0, 0),
+        /**
+         * <code>LAUNCH = 1;</code>
+         */
+        LAUNCH(1, 1),
+        /**
+         * <code>LAUNCH_GROUP = 6;</code>
+         */
+        LAUNCH_GROUP(2, 6),
+        /**
+         * <code>RESERVE = 2;</code>
+         */
+        RESERVE(3, 2),
+        /**
+         * <code>UNRESERVE = 3;</code>
+         */
+        UNRESERVE(4, 3),
+        /**
+         * <code>CREATE = 4;</code>
+         */
+        CREATE(5, 4),
+        /**
+         * <code>DESTROY = 5;</code>
+         */
+        DESTROY(6, 5),
+        ;
+
+        /**
+         * <code>UNKNOWN = 0;</code>
+         */
+        public static final int UNKNOWN_VALUE = 0;
+        /**
+         * <code>LAUNCH = 1;</code>
+         */
+        public static final int LAUNCH_VALUE = 1;
+        /**
+         * <code>LAUNCH_GROUP = 6;</code>
+         */
+        public static final int LAUNCH_GROUP_VALUE = 6;
+        /**
+         * <code>RESERVE = 2;</code>
+         */
+        public static final int RESERVE_VALUE = 2;
+        /**
+         * <code>UNRESERVE = 3;</code>
+         */
+        public static final int UNRESERVE_VALUE = 3;
+        /**
+         * <code>CREATE = 4;</code>
+         */
+        public static final int CREATE_VALUE = 4;
+        /**
+         * <code>DESTROY = 5;</code>
+         */
+        public static final int DESTROY_VALUE = 5;
+
+
+        public final int getNumber() { return value; }
+
+        public static Type valueOf(int value) {
+          switch (value) {
+            case 0: return UNKNOWN;
+            case 1: return LAUNCH;
+            case 6: return LAUNCH_GROUP;
+            case 2: return RESERVE;
+            case 3: return UNRESERVE;
+            case 4: return CREATE;
+            case 5: return DESTROY;
+            default: return null;
+          }
+        }
+
+        public static com.google.protobuf.Internal.EnumLiteMap<Type>
+            internalGetValueMap() {
+          return internalValueMap;
+        }
+        private static com.google.protobuf.Internal.EnumLiteMap<Type>
+            internalValueMap =
+              new com.google.protobuf.Internal.EnumLiteMap<Type>() {
+                public Type findValueByNumber(int number) {
+                  return Type.valueOf(number);
+                }
+              };
+
+        public final com.google.protobuf.Descriptors.EnumValueDescriptor
+            getValueDescriptor() {
+          return getDescriptor().getValues().get(index);
+        }
+        public final com.google.protobuf.Descriptors.EnumDescriptor
+            getDescriptorForType() {
+          return getDescriptor();
+        }
+        public static final com.google.protobuf.Descriptors.EnumDescriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.Offer.Operation.getDescriptor().getEnumTypes().get(0);
+        }
+
+        private static final Type[] VALUES = values();
+
+        public static Type valueOf(
+            com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+          if (desc.getType() != getDescriptor()) {
+            throw new java.lang.IllegalArgumentException(
+              "EnumValueDescriptor is not for this type.");
+          }
+          return VALUES[desc.getIndex()];
+        }
+
+        private final int index;
+        private final int value;
+
+        private Type(int index, int value) {
+          this.index = index;
+          this.value = value;
+        }
+
+        // @@protoc_insertion_point(enum_scope:mesos.v1.Offer.Operation.Type)
+      }
+
+      public interface LaunchOrBuilder
+          extends com.google.protobuf.MessageOrBuilder {
+
+        // repeated .mesos.v1.TaskInfo task_infos = 1;
+        /**
+         * <code>repeated .mesos.v1.TaskInfo task_infos = 1;</code>
+         */
+        java.util.List<org.apache.mesos.v1.Protos.TaskInfo> 
+            getTaskInfosList();
+        /**
+         * <code>repeated .mesos.v1.TaskInfo task_infos = 1;</code>
+         */
+        org.apache.mesos.v1.Protos.TaskInfo getTaskInfos(int index);
+        /**
+         * <code>repeated .mesos.v1.TaskInfo task_infos = 1;</code>
+         */
+        int getTaskInfosCount();
+        /**
+         * <code>repeated .mesos.v1.TaskInfo task_infos = 1;</code>
+         */
+        java.util.List<? extends org.apache.mesos.v1.Protos.TaskInfoOrBuilder> 
+            getTaskInfosOrBuilderList();
+        /**
+         * <code>repeated .mesos.v1.TaskInfo task_infos = 1;</code>
+         */
+        org.apache.mesos.v1.Protos.TaskInfoOrBuilder getTaskInfosOrBuilder(
+            int index);
+      }
+      /**
+       * Protobuf type {@code mesos.v1.Offer.Operation.Launch}
+       *
+       * <pre>
+       * TODO(vinod): Deprecate this in favor of `LaunchGroup` below.
+       * </pre>
+       */
+      public static final class Launch extends
+          com.google.protobuf.GeneratedMessage
+          implements LaunchOrBuilder {
+        // Use Launch.newBuilder() to construct.
+        private Launch(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+          super(builder);
+          this.unknownFields = builder.getUnknownFields();
+        }
+        private Launch(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+        private static final Launch defaultInstance;
+        public static Launch getDefaultInstance() {
+          return defaultInstance;
+        }
+
+        public Launch getDefaultInstanceForType() {
+          return defaultInstance;
+        }
+
+        private final com.google.protobuf.UnknownFieldSet unknownFields;
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet
+            getUnknownFields() {
+          return this.unknownFields;
+        }
+        private Launch(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          initFields();
+          int mutable_bitField0_ = 0;
+          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+              com.google.protobuf.UnknownFieldSet.newBuilder();
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(input, unknownFields,
+                                         extensionRegistry, tag)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 10: {
+                  if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                    taskInfos_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.TaskInfo>();
+                    mutable_bitField0_ |= 0x00000001;
+                  }
+                  taskInfos_.add(input.readMessage(org.apache.mesos.v1.Protos.TaskInfo.PARSER, extensionRegistry));
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw e.setUnfinishedMessage(this);
+          } catch (java.io.IOException e) {
+            throw new com.google.protobuf.InvalidProtocolBufferException(
+                e.getMessage()).setUnfinishedMessage(this);
+          } finally {
+            if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+              taskInfos_ = java.util.Collections.unmodifiableList(taskInfos_);
+            }
+            this.unknownFields = unknownFields.build();
+            makeExtensionsImmutable();
+          }
+        }
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Offer_Operation_Launch_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Offer_Operation_Launch_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.Offer.Operation.Launch.class, org.apache.mesos.v1.Protos.Offer.Operation.Launch.Builder.class);
+        }
+
+        public static com.google.protobuf.Parser<Launch> PARSER =
+            new com.google.protobuf.AbstractParser<Launch>() {
+          public Launch parsePartialFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return new Launch(input, extensionRegistry);
+          }
+        };
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<Launch> getParserForType() {
+          return PARSER;
+        }
+
+        // repeated .mesos.v1.TaskInfo task_infos = 1;
+        public static final int TASK_INFOS_FIELD_NUMBER = 1;
+        private java.util.List<org.apache.mesos.v1.Protos.TaskInfo> taskInfos_;
+        /**
+         * <code>repeated .mesos.v1.TaskInfo task_infos = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.v1.Protos.TaskInfo> getTaskInfosList() {
+          return taskInfos_;
+        }
+        /**
+         * <code>repeated .mesos.v1.TaskInfo task_infos = 1;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.v1.Protos.TaskInfoOrBuilder> 
+            getTaskInfosOrBuilderList() {
+          return taskInfos_;
+        }
+        /**
+         * <code>repeated .mesos.v1.TaskInfo task_infos = 1;</code>
+         */
+        public int getTaskInfosCount() {
+          return taskInfos_.size();
+        }
+        /**
+         * <code>repeated .mesos.v1.TaskInfo task_infos = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.TaskInfo getTaskInfos(int index) {
+          return taskInfos_.get(index);
+        }
+        /**
+         * <code>repeated .mesos.v1.TaskInfo task_infos = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.TaskInfoOrBuilder getTaskInfosOrBuilder(
+            int index) {
+          return taskInfos_.get(index);
+        }
+
+        private void initFields() {
+          taskInfos_ = java.util.Collections.emptyList();
+        }
+        private byte memoizedIsInitialized = -1;
+        public final boolean isInitialized() {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized != -1) return isInitialized == 1;
+
+          for (int i = 0; i < getTaskInfosCount(); i++) {
+            if (!getTaskInfos(i).isInitialized()) {
+              memoizedIsInitialized = 0;
+              return false;
+            }
+          }
+          memoizedIsInitialized = 1;
+          return true;
+        }
+
+        public void writeTo(com.google.protobuf.CodedOutputStream output)
+                            throws java.io.IOException {
+          getSerializedSize();
+          for (int i = 0; i < taskInfos_.size(); i++) {
+            output.writeMessage(1, taskInfos_.get(i));
+          }
+          getUnknownFields().writeTo(output);
+        }
+
+        private int memoizedSerializedSize = -1;
+        public int getSerializedSize() {
+          int size = memoizedSerializedSize;
+          if (size != -1) return size;
+
+          size = 0;
+          for (int i = 0; i < taskInfos_.size(); i++) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeMessageSize(1, taskInfos_.get(i));
+          }
+          size += getUnknownFields().getSerializedSize();
+          memoizedSerializedSize = size;
+          return size;
+        }
+
+        private static final long serialVersionUID = 0L;
+        @java.lang.Override
+        protected java.lang.Object writeReplace()
+            throws java.io.ObjectStreamException {
+          return super.writeReplace();
+        }
+
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Launch parseFrom(
+            com.google.protobuf.ByteString data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Launch parseFrom(
+            com.google.protobuf.ByteString data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Launch parseFrom(byte[] data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Launch parseFrom(
+            byte[] data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Launch parseFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Launch parseFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Launch parseDelimitedFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Launch parseDelimitedFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Launch parseFrom(
+            com.google.protobuf.CodedInputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Launch parseFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+
+        public static Builder newBuilder() { return Builder.create(); }
+        public Builder newBuilderForType() { return newBuilder(); }
+        public static Builder newBuilder(org.apache.mesos.v1.Protos.Offer.Operation.Launch prototype) {
+          return newBuilder().mergeFrom(prototype);
+        }
+        public Builder toBuilder() { return newBuilder(this); }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          Builder builder = new Builder(parent);
+          return builder;
+        }
+        /**
+         * Protobuf type {@code mesos.v1.Offer.Operation.Launch}
+         *
+         * <pre>
+         * TODO(vinod): Deprecate this in favor of `LaunchGroup` below.
+         * </pre>
+         */
+        public static final class Builder extends
+            com.google.protobuf.GeneratedMessage.Builder<Builder>
+           implements org.apache.mesos.v1.Protos.Offer.Operation.LaunchOrBuilder {
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Offer_Operation_Launch_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Offer_Operation_Launch_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.v1.Protos.Offer.Operation.Launch.class, org.apache.mesos.v1.Protos.Offer.Operation.Launch.Builder.class);
+          }
+
+          // Construct using org.apache.mesos.v1.Protos.Offer.Operation.Launch.newBuilder()
+          private Builder() {
+            maybeForceBuilderInitialization();
+          }
+
+          private Builder(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            super(parent);
+            maybeForceBuilderInitialization();
+          }
+          private void maybeForceBuilderInitialization() {
+            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+              getTaskInfosFieldBuilder();
+            }
+          }
+          private static Builder create() {
+            return new Builder();
+          }
+
+          public Builder clear() {
+            super.clear();
+            if (taskInfosBuilder_ == null) {
+              taskInfos_ = java.util.Collections.emptyList();
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              taskInfosBuilder_.clear();
+            }
+            return this;
+          }
+
+          public Builder clone() {
+            return create().mergeFrom(buildPartial());
+          }
+
+          public com.google.protobuf.Descriptors.Descriptor
+              getDescriptorForType() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Offer_Operation_Launch_descriptor;
+          }
+
+          public org.apache.mesos.v1.Protos.Offer.Operation.Launch getDefaultInstanceForType() {
+            return org.apache.mesos.v1.Protos.Offer.Operation.Launch.getDefaultInstance();
+          }
+
+          public org.apache.mesos.v1.Protos.Offer.Operation.Launch build() {
+            org.apache.mesos.v1.Protos.Offer.Operation.Launch result = buildPartial();
+            if (!result.isInitialized()) {
+              throw newUninitializedMessageException(result);
+            }
+            return result;
+          }
+
+          public org.apache.mesos.v1.Protos.Offer.Operation.Launch buildPartial() {
+            org.apache.mesos.v1.Protos.Offer.Operation.Launch result = new org.apache.mesos.v1.Protos.Offer.Operation.Launch(this);
+            int from_bitField0_ = bitField0_;
+            if (taskInfosBuilder_ == null) {
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                taskInfos_ = java.util.Collections.unmodifiableList(taskInfos_);
+                bitField0_ = (bitField0_ & ~0x00000001);
+              }
+              result.taskInfos_ = taskInfos_;
+            } else {
+              result.taskInfos_ = taskInfosBuilder_.build();
+            }
+            onBuilt();
+            return result;
+          }
+
+          public Builder mergeFrom(com.google.protobuf.Message other) {
+            if (other instanceof org.apache.mesos.v1.Protos.Offer.Operation.Launch) {
+              return mergeFrom((org.apache.mesos.v1.Protos.Offer.Operation.Launch)other);
+            } else {
+              super.mergeFrom(other);
+              return this;
+            }
+          }
+
+          public Builder mergeFrom(org.apache.mesos.v1.Protos.Offer.Operation.Launch other) {
+            if (other == org.apache.mesos.v1.Protos.Offer.Operation.Launch.getDefaultInstance()) return this;
+            if (taskInfosBuilder_ == null) {
+              if (!other.taskInfos_.isEmpty()) {
+                if (taskInfos_.isEmpty()) {
+                  taskInfos_ = other.taskInfos_;
+                  bitField0_ = (bitField0_ & ~0x00000001);
+                } else {
+                  ensureTaskInfosIsMutable();
+                  taskInfos_.addAll(other.taskInfos_);
+                }
+                onChanged();
+              }
+            } else {
+              if (!other.taskInfos_.isEmpty()) {
+                if (taskInfosBuilder_.isEmpty()) {
+                  taskInfosBuilder_.dispose();
+                  taskInfosBuilder_ = null;
+                  taskInfos_ = other.taskInfos_;
+                  bitField0_ = (bitField0_ & ~0x00000001);
+                  taskInfosBuilder_ = 
+                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                       getTaskInfosFieldBuilder() : null;
+                } else {
+                  taskInfosBuilder_.addAllMessages(other.taskInfos_);
+                }
+              }
+            }
+            this.mergeUnknownFields(other.getUnknownFields());
+            return this;
+          }
+
+          public final boolean isInitialized() {
+            for (int i = 0; i < getTaskInfosCount(); i++) {
+              if (!getTaskInfos(i).isInitialized()) {
+                
+                return false;
+              }
+            }
+            return true;
+          }
+
+          public Builder mergeFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            org.apache.mesos.v1.Protos.Offer.Operation.Launch parsedMessage = null;
+            try {
+              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              parsedMessage = (org.apache.mesos.v1.Protos.Offer.Operation.Launch) e.getUnfinishedMessage();
+              throw e;
+            } finally {
+              if (parsedMessage != null) {
+                mergeFrom(parsedMessage);
+              }
+            }
+            return this;
+          }
+          private int bitField0_;
+
+          // repeated .mesos.v1.TaskInfo task_infos = 1;
+          private java.util.List<org.apache.mesos.v1.Protos.TaskInfo> taskInfos_ =
+            java.util.Collections.emptyList();
+          private void ensureTaskInfosIsMutable() {
+            if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+              taskInfos_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.TaskInfo>(taskInfos_);
+              bitField0_ |= 0x00000001;
+             }
+          }
+
+          private com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.TaskInfo, org.apache.mesos.v1.Protos.TaskInfo.Builder, org.apache.mesos.v1.Protos.TaskInfoOrBuilder> taskInfosBuilder_;
+
+          /**
+           * <code>repeated .mesos.v1.TaskInfo task_infos = 1;</code>
+           */
+          public java.util.List<org.apache.mesos.v1.Protos.TaskInfo> getTaskInfosList() {
+            if (taskInfosBuilder_ == null) {
+              return java.util.Collections.unmodifiableList(taskInfos_);
+            } else {
+              return taskInfosBuilder_.getMessageList();
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.TaskInfo task_infos = 1;</code>
+           */
+          public int getTaskInfosCount() {
+            if (taskInfosBuilder_ == null) {
+              return taskInfos_.size();
+            } else {
+              return taskInfosBuilder_.getCount();
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.TaskInfo task_infos = 1;</code>
+           */
+          public org.apache.mesos.v1.Protos.TaskInfo getTaskInfos(int index) {
+            if (taskInfosBuilder_ == null) {
+              return taskInfos_.get(index);
+            } else {
+              return taskInfosBuilder_.getMessage(index);
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.TaskInfo task_infos = 1;</code>
+           */
+          public Builder setTaskInfos(
+              int index, org.apache.mesos.v1.Protos.TaskInfo value) {
+            if (taskInfosBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureTaskInfosIsMutable();
+              taskInfos_.set(index, value);
+              onChanged();
+            } else {
+              taskInfosBuilder_.setMessage(index, value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.TaskInfo task_infos = 1;</code>
+           */
+          public Builder setTaskInfos(
+              int index, org.apache.mesos.v1.Protos.TaskInfo.Builder builderForValue) {
+            if (taskInfosBuilder_ == null) {
+              ensureTaskInfosIsMutable();
+              taskInfos_.set(index, builderForValue.build());
+              onChanged();
+            } else {
+              taskInfosBuilder_.setMessage(index, builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.TaskInfo task_infos = 1;</code>
+           */
+          public Builder addTaskInfos(org.apache.mesos.v1.Protos.TaskInfo value) {
+            if (taskInfosBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureTaskInfosIsMutable();
+              taskInfos_.add(value);
+              onChanged();
+            } else {
+              taskInfosBuilder_.addMessage(value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.TaskInfo task_infos = 1;</code>
+           */
+          public Builder addTaskInfos(
+              int index, org.apache.mesos.v1.Protos.TaskInfo value) {
+            if (taskInfosBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureTaskInfosIsMutable();
+              taskInfos_.add(index, value);
+              onChanged();
+            } else {
+              taskInfosBuilder_.addMessage(index, value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.TaskInfo task_infos = 1;</code>
+           */
+          public Builder addTaskInfos(
+              org.apache.mesos.v1.Protos.TaskInfo.Builder builderForValue) {
+            if (taskInfosBuilder_ == null) {
+              ensureTaskInfosIsMutable();
+              taskInfos_.add(builderForValue.build());
+              onChanged();
+            } else {
+              taskInfosBuilder_.addMessage(builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.TaskInfo task_infos = 1;</code>
+           */
+          public Builder addTaskInfos(
+              int index, org.apache.mesos.v1.Protos.TaskInfo.Builder builderForValue) {
+            if (taskInfosBuilder_ == null) {
+              ensureTaskInfosIsMutable();
+              taskInfos_.add(index, builderForValue.build());
+              onChanged();
+            } else {
+              taskInfosBuilder_.addMessage(index, builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.TaskInfo task_infos = 1;</code>
+           */
+          public Builder addAllTaskInfos(
+              java.lang.Iterable<? extends org.apache.mesos.v1.Protos.TaskInfo> values) {
+            if (taskInfosBuilder_ == null) {
+              ensureTaskInfosIsMutable();
+              super.addAll(values, taskInfos_);
+              onChanged();
+            } else {
+              taskInfosBuilder_.addAllMessages(values);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.TaskInfo task_infos = 1;</code>
+           */
+          public Builder clearTaskInfos() {
+            if (taskInfosBuilder_ == null) {
+              taskInfos_ = java.util.Collections.emptyList();
+              bitField0_ = (bitField0_ & ~0x00000001);
+              onChanged();
+            } else {
+              taskInfosBuilder_.clear();
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.TaskInfo task_infos = 1;</code>
+           */
+          public Builder removeTaskInfos(int index) {
+            if (taskInfosBuilder_ == null) {
+              ensureTaskInfosIsMutable();
+              taskInfos_.remove(index);
+              onChanged();
+            } else {
+              taskInfosBuilder_.remove(index);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.TaskInfo task_infos = 1;</code>
+           */
+          public org.apache.mesos.v1.Protos.TaskInfo.Builder getTaskInfosBuilder(
+              int index) {
+            return getTaskInfosFieldBuilder().getBuilder(index);
+          }
+          /**
+           * <code>repeated .mesos.v1.TaskInfo task_infos = 1;</code>
+           */
+          public org.apache.mesos.v1.Protos.TaskInfoOrBuilder getTaskInfosOrBuilder(
+              int index) {
+            if (taskInfosBuilder_ == null) {
+              return taskInfos_.get(index);  } else {
+              return taskInfosBuilder_.getMessageOrBuilder(index);
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.TaskInfo task_infos = 1;</code>
+           */
+          public java.util.List<? extends org.apache.mesos.v1.Protos.TaskInfoOrBuilder> 
+               getTaskInfosOrBuilderList() {
+            if (taskInfosBuilder_ != null) {
+              return taskInfosBuilder_.getMessageOrBuilderList();
+            } else {
+              return java.util.Collections.unmodifiableList(taskInfos_);
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.TaskInfo task_infos = 1;</code>
+           */
+          public org.apache.mesos.v1.Protos.TaskInfo.Builder addTaskInfosBuilder() {
+            return getTaskInfosFieldBuilder().addBuilder(
+                org.apache.mesos.v1.Protos.TaskInfo.getDefaultInstance());
+          }
+          /**
+           * <code>repeated .mesos.v1.TaskInfo task_infos = 1;</code>
+           */
+          public org.apache.mesos.v1.Protos.TaskInfo.Builder addTaskInfosBuilder(
+              int index) {
+            return getTaskInfosFieldBuilder().addBuilder(
+                index, org.apache.mesos.v1.Protos.TaskInfo.getDefaultInstance());
+          }
+          /**
+           * <code>repeated .mesos.v1.TaskInfo task_infos = 1;</code>
+           */
+          public java.util.List<org.apache.mesos.v1.Protos.TaskInfo.Builder> 
+               getTaskInfosBuilderList() {
+            return getTaskInfosFieldBuilder().getBuilderList();
+          }
+          private com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.TaskInfo, org.apache.mesos.v1.Protos.TaskInfo.Builder, org.apache.mesos.v1.Protos.TaskInfoOrBuilder> 
+              getTaskInfosFieldBuilder() {
+            if (taskInfosBuilder_ == null) {
+              taskInfosBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                  org.apache.mesos.v1.Protos.TaskInfo, org.apache.mesos.v1.Protos.TaskInfo.Builder, org.apache.mesos.v1.Protos.TaskInfoOrBuilder>(
+                      taskInfos_,
+                      ((bitField0_ & 0x00000001) == 0x00000001),
+                      getParentForChildren(),
+                      isClean());
+              taskInfos_ = null;
+            }
+            return taskInfosBuilder_;
+          }
+
+          // @@protoc_insertion_point(builder_scope:mesos.v1.Offer.Operation.Launch)
+        }
+
+        static {
+          defaultInstance = new Launch(true);
+          defaultInstance.initFields();
+        }
+
+        // @@protoc_insertion_point(class_scope:mesos.v1.Offer.Operation.Launch)
+      }
+
+      public interface LaunchGroupOrBuilder
+          extends com.google.protobuf.MessageOrBuilder {
+
+        // required .mesos.v1.ExecutorInfo executor = 1;
+        /**
+         * <code>required .mesos.v1.ExecutorInfo executor = 1;</code>
+         */
+        boolean hasExecutor();
+        /**
+         * <code>required .mesos.v1.ExecutorInfo executor = 1;</code>
+         */
+        org.apache.mesos.v1.Protos.ExecutorInfo getExecutor();
+        /**
+         * <code>required .mesos.v1.ExecutorInfo executor = 1;</code>
+         */
+        org.apache.mesos.v1.Protos.ExecutorInfoOrBuilder getExecutorOrBuilder();
+
+        // required .mesos.v1.TaskGroupInfo task_group = 2;
+        /**
+         * <code>required .mesos.v1.TaskGroupInfo task_group = 2;</code>
+         */
+        boolean hasTaskGroup();
+        /**
+         * <code>required .mesos.v1.TaskGroupInfo task_group = 2;</code>
+         */
+        org.apache.mesos.v1.Protos.TaskGroupInfo getTaskGroup();
+        /**
+         * <code>required .mesos.v1.TaskGroupInfo task_group = 2;</code>
+         */
+        org.apache.mesos.v1.Protos.TaskGroupInfoOrBuilder getTaskGroupOrBuilder();
+      }
+      /**
+       * Protobuf type {@code mesos.v1.Offer.Operation.LaunchGroup}
+       *
+       * <pre>
+       * Unlike `Launch` above, all the tasks in a `task_group` are
+       * atomically delivered to an executor.
+       *
+       * `NetworkInfo` set on executor will be shared by all tasks in
+       * the task group.
+       *
+       * TODO(vinod): Any volumes set on executor could be used by a
+       * task by explicitly setting `Volume.source` in its resources.
+       * </pre>
+       */
+      public static final class LaunchGroup extends
+          com.google.protobuf.GeneratedMessage
+          implements LaunchGroupOrBuilder {
+        // Use LaunchGroup.newBuilder() to construct.
+        private LaunchGroup(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+          super(builder);
+          this.unknownFields = builder.getUnknownFields();
+        }
+        private LaunchGroup(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+        private static final LaunchGroup defaultInstance;
+        public static LaunchGroup getDefaultInstance() {
+          return defaultInstance;
+        }
+
+        public LaunchGroup getDefaultInstanceForType() {
+          return defaultInstance;
+        }
+
+        private final com.google.protobuf.UnknownFieldSet unknownFields;
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet
+            getUnknownFields() {
+          return this.unknownFields;
+        }
+        private LaunchGroup(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          initFields();
+          int mutable_bitField0_ = 0;
+          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+              com.google.protobuf.UnknownFieldSet.newBuilder();
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(input, unknownFields,
+                                         extensionRegistry, tag)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 10: {
+                  org.apache.mesos.v1.Protos.ExecutorInfo.Builder subBuilder = null;
+                  if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                    subBuilder = executor_.toBuilder();
+                  }
+                  executor_ = input.readMessage(org.apache.mesos.v1.Protos.ExecutorInfo.PARSER, extensionRegistry);
+                  if (subBuilder != null) {
+                    subBuilder.mergeFrom(executor_);
+                    executor_ = subBuilder.buildPartial();
+                  }
+                  bitField0_ |= 0x00000001;
+                  break;
+                }
+                case 18: {
+                  org.apache.mesos.v1.Protos.TaskGroupInfo.Builder subBuilder = null;
+                  if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                    subBuilder = taskGroup_.toBuilder();
+                  }
+                  taskGroup_ = input.readMessage(org.apache.mesos.v1.Protos.TaskGroupInfo.PARSER, extensionRegistry);
+                  if (subBuilder != null) {
+                    subBuilder.mergeFrom(taskGroup_);
+                    taskGroup_ = subBuilder.buildPartial();
+                  }
+                  bitField0_ |= 0x00000002;
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw e.setUnfinishedMessage(this);
+          } catch (java.io.IOException e) {
+            throw new com.google.protobuf.InvalidProtocolBufferException(
+                e.getMessage()).setUnfinishedMessage(this);
+          } finally {
+            this.unknownFields = unknownFields.build();
+            makeExtensionsImmutable();
+          }
+        }
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Offer_Operation_LaunchGroup_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Offer_Operation_LaunchGroup_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup.class, org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup.Builder.class);
+        }
+
+        public static com.google.protobuf.Parser<LaunchGroup> PARSER =
+            new com.google.protobuf.AbstractParser<LaunchGroup>() {
+          public LaunchGroup parsePartialFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return new LaunchGroup(input, extensionRegistry);
+          }
+        };
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<LaunchGroup> getParserForType() {
+          return PARSER;
+        }
+
+        private int bitField0_;
+        // required .mesos.v1.ExecutorInfo executor = 1;
+        public static final int EXECUTOR_FIELD_NUMBER = 1;
+        private org.apache.mesos.v1.Protos.ExecutorInfo executor_;
+        /**
+         * <code>required .mesos.v1.ExecutorInfo executor = 1;</code>
+         */
+        public boolean hasExecutor() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.v1.ExecutorInfo executor = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.ExecutorInfo getExecutor() {
+          return executor_;
+        }
+        /**
+         * <code>required .mesos.v1.ExecutorInfo executor = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.ExecutorInfoOrBuilder getExecutorOrBuilder() {
+          return executor_;
+        }
+
+        // required .mesos.v1.TaskGroupInfo task_group = 2;
+        public static final int TASK_GROUP_FIELD_NUMBER = 2;
+        private org.apache.mesos.v1.Protos.TaskGroupInfo taskGroup_;
+        /**
+         * <code>required .mesos.v1.TaskGroupInfo task_group = 2;</code>
+         */
+        public boolean hasTaskGroup() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>required .mesos.v1.TaskGroupInfo task_group = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.TaskGroupInfo getTaskGroup() {
+          return taskGroup_;
+        }
+        /**
+         * <code>required .mesos.v1.TaskGroupInfo task_group = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.TaskGroupInfoOrBuilder getTaskGroupOrBuilder() {
+          return taskGroup_;
+        }
+
+        private void initFields() {
+          executor_ = org.apache.mesos.v1.Protos.ExecutorInfo.getDefaultInstance();
+          taskGroup_ = org.apache.mesos.v1.Protos.TaskGroupInfo.getDefaultInstance();
+        }
+        private byte memoizedIsInitialized = -1;
+        public final boolean isInitialized() {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized != -1) return isInitialized == 1;
+
+          if (!hasExecutor()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+          if (!hasTaskGroup()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+          if (!getExecutor().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+          if (!getTaskGroup().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+          memoizedIsInitialized = 1;
+          return true;
+        }
+
+        public void writeTo(com.google.protobuf.CodedOutputStream output)
+                            throws java.io.IOException {
+          getSerializedSize();
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            output.writeMessage(1, executor_);
+          }
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            output.writeMessage(2, taskGroup_);
+          }
+          getUnknownFields().writeTo(output);
+        }
+
+        private int memoizedSerializedSize = -1;
+        public int getSerializedSize() {
+          int size = memoizedSerializedSize;
+          if (size != -1) return size;
+
+          size = 0;
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeMessageSize(1, executor_);
+          }
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeMessageSize(2, taskGroup_);
+          }
+          size += getUnknownFields().getSerializedSize();
+          memoizedSerializedSize = size;
+          return size;
+        }
+
+        private static final long serialVersionUID = 0L;
+        @java.lang.Override
+        protected java.lang.Object writeReplace()
+            throws java.io.ObjectStreamException {
+          return super.writeReplace();
+        }
+
+        public static org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup parseFrom(
+            com.google.protobuf.ByteString data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup parseFrom(
+            com.google.protobuf.ByteString data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup parseFrom(byte[] data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup parseFrom(
+            byte[] data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup parseFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup parseFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup parseDelimitedFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup parseDelimitedFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup parseFrom(
+            com.google.protobuf.CodedInputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup parseFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+
+        public static Builder newBuilder() { return Builder.create(); }
+        public Builder newBuilderForType() { return newBuilder(); }
+        public static Builder newBuilder(org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup prototype) {
+          return newBuilder().mergeFrom(prototype);
+        }
+        public Builder toBuilder() { return newBuilder(this); }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          Builder builder = new Builder(parent);
+          return builder;
+        }
+        /**
+         * Protobuf type {@code mesos.v1.Offer.Operation.LaunchGroup}
+         *
+         * <pre>
+         * Unlike `Launch` above, all the tasks in a `task_group` are
+         * atomically delivered to an executor.
+         *
+         * `NetworkInfo` set on executor will be shared by all tasks in
+         * the task group.
+         *
+         * TODO(vinod): Any volumes set on executor could be used by a
+         * task by explicitly setting `Volume.source` in its resources.
+         * </pre>
+         */
+        public static final class Builder extends
+            com.google.protobuf.GeneratedMessage.Builder<Builder>
+           implements org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroupOrBuilder {
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Offer_Operation_LaunchGroup_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Offer_Operation_LaunchGroup_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup.class, org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup.Builder.class);
+          }
+
+          // Construct using org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup.newBuilder()
+          private Builder() {
+            maybeForceBuilderInitialization();
+          }
+
+          private Builder(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            super(parent);
+            maybeForceBuilderInitialization();
+          }
+          private void maybeForceBuilderInitialization() {
+            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+              getExecutorFieldBuilder();
+              getTaskGroupFieldBuilder();
+            }
+          }
+          private static Builder create() {
+            return new Builder();
+          }
+
+          public Builder clear() {
+            super.clear();
+            if (executorBuilder_ == null) {
+              executor_ = org.apache.mesos.v1.Protos.ExecutorInfo.getDefaultInstance();
+            } else {
+              executorBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000001);
+            if (taskGroupBuilder_ == null) {
+              taskGroup_ = org.apache.mesos.v1.Protos.TaskGroupInfo.getDefaultInstance();
+            } else {
+              taskGroupBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000002);
+            return this;
+          }
+
+          public Builder clone() {
+            return create().mergeFrom(buildPartial());
+          }
+
+          public com.google.protobuf.Descriptors.Descriptor
+              getDescriptorForType() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Offer_Operation_LaunchGroup_descriptor;
+          }
+
+          public org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup getDefaultInstanceForType() {
+            return org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup.getDefaultInstance();
+          }
+
+          public org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup build() {
+            org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup result = buildPartial();
+            if (!result.isInitialized()) {
+              throw newUninitializedMessageException(result);
+            }
+            return result;
+          }
+
+          public org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup buildPartial() {
+            org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup result = new org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup(this);
+            int from_bitField0_ = bitField0_;
+            int to_bitField0_ = 0;
+            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+              to_bitField0_ |= 0x00000001;
+            }
+            if (executorBuilder_ == null) {
+              result.executor_ = executor_;
+            } else {
+              result.executor_ = executorBuilder_.build();
+            }
+            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+              to_bitField0_ |= 0x00000002;
+            }
+            if (taskGroupBuilder_ == null) {
+              result.taskGroup_ = taskGroup_;
+            } else {
+              result.taskGroup_ = taskGroupBuilder_.build();
+            }
+            result.bitField0_ = to_bitField0_;
+            onBuilt();
+            return result;
+          }
+
+          public Builder mergeFrom(com.google.protobuf.Message other) {
+            if (other instanceof org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup) {
+              return mergeFrom((org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup)other);
+            } else {
+              super.mergeFrom(other);
+              return this;
+            }
+          }
+
+          public Builder mergeFrom(org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup other) {
+            if (other == org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup.getDefaultInstance()) return this;
+            if (other.hasExecutor()) {
+              mergeExecutor(other.getExecutor());
+            }
+            if (other.hasTaskGroup()) {
+              mergeTaskGroup(other.getTaskGroup());
+            }
+            this.mergeUnknownFields(other.getUnknownFields());
+            return this;
+          }
+
+          public final boolean isInitialized() {
+            if (!hasExecutor()) {
+              
+              return false;
+            }
+            if (!hasTaskGroup()) {
+              
+              return false;
+            }
+            if (!getExecutor().isInitialized()) {
+              
+              return false;
+            }
+            if (!getTaskGroup().isInitialized()) {
+              
+              return false;
+            }
+            return true;
+          }
+
+          public Builder mergeFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup parsedMessage = null;
+            try {
+              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              parsedMessage = (org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup) e.getUnfinishedMessage();
+              throw e;
+            } finally {
+              if (parsedMessage != null) {
+                mergeFrom(parsedMessage);
+              }
+            }
+            return this;
+          }
+          private int bitField0_;
+
+          // required .mesos.v1.ExecutorInfo executor = 1;
+          private org.apache.mesos.v1.Protos.ExecutorInfo executor_ = org.apache.mesos.v1.Protos.ExecutorInfo.getDefaultInstance();
+          private com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.ExecutorInfo, org.apache.mesos.v1.Protos.ExecutorInfo.Builder, org.apache.mesos.v1.Protos.ExecutorInfoOrBuilder> executorBuilder_;
+          /**
+           * <code>required .mesos.v1.ExecutorInfo executor = 1;</code>
+           */
+          public boolean hasExecutor() {
+            return ((bitField0_ & 0x00000001) == 0x00000001);
+          }
+          /**
+           * <code>required .mesos.v1.ExecutorInfo executor = 1;</code>
+           */
+          public org.apache.mesos.v1.Protos.ExecutorInfo getExecutor() {
+            if (executorBuilder_ == null) {
+              return executor_;
+            } else {
+              return executorBuilder_.getMessage();
+            }
+          }
+          /**
+           * <code>required .mesos.v1.ExecutorInfo executor = 1;</code>
+           */
+          public Builder setExecutor(org.apache.mesos.v1.Protos.ExecutorInfo value) {
+            if (executorBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              executor_ = value;
+              onChanged();
+            } else {
+              executorBuilder_.setMessage(value);
+            }
+            bitField0_ |= 0x00000001;
+            return this;
+          }
+          /**
+           * <code>required .mesos.v1.ExecutorInfo executor = 1;</code>
+           */
+          public Builder setExecutor(
+              org.apache.mesos.v1.Protos.ExecutorInfo.Builder builderForValue) {
+            if (executorBuilder_ == null) {
+              executor_ = builderForValue.build();
+              onChanged();
+            } else {
+              executorBuilder_.setMessage(builderForValue.build());
+            }
+            bitField0_ |= 0x00000001;
+            return this;
+          }
+          /**
+           * <code>required .mesos.v1.ExecutorInfo executor = 1;</code>
+           */
+          public Builder mergeExecutor(org.apache.mesos.v1.Protos.ExecutorInfo value) {
+            if (executorBuilder_ == null) {
+              if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                  executor_ != org.apache.mesos.v1.Protos.ExecutorInfo.getDefaultInstance()) {
+                executor_ =
+                  org.apache.mesos.v1.Protos.ExecutorInfo.newBuilder(executor_).mergeFrom(value).buildPartial();
+              } else {
+                executor_ = value;
+              }
+              onChanged();
+            } else {
+              executorBuilder_.mergeFrom(value);
+            }
+            bitField0_ |= 0x00000001;
+            return this;
+          }
+          /**
+           * <code>required .mesos.v1.ExecutorInfo executor = 1;</code>
+           */
+          public Builder clearExecutor() {
+            if (executorBuilder_ == null) {
+              executor_ = org.apache.mesos.v1.Protos.ExecutorInfo.getDefaultInstance();
+              onChanged();
+            } else {
+              executorBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000001);
+            return this;
+          }
+          /**
+           * <code>required .mesos.v1.ExecutorInfo executor = 1;</code>
+           */
+          public org.apache.mesos.v1.Protos.ExecutorInfo.Builder getExecutorBuilder() {
+            bitField0_ |= 0x00000001;
+            onChanged();
+            return getExecutorFieldBuilder().getBuilder();
+          }
+          /**
+           * <code>required .mesos.v1.ExecutorInfo executor = 1;</code>
+           */
+          public org.apache.mesos.v1.Protos.ExecutorInfoOrBuilder getExecutorOrBuilder() {
+            if (executorBuilder_ != null) {
+              return executorBuilder_.getMessageOrBuilder();
+            } else {
+              return executor_;
+            }
+          }
+          /**
+           * <code>required .mesos.v1.ExecutorInfo executor = 1;</code>
+           */
+          private com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.ExecutorInfo, org.apache.mesos.v1.Protos.ExecutorInfo.Builder, org.apache.mesos.v1.Protos.ExecutorInfoOrBuilder> 
+              getExecutorFieldBuilder() {
+            if (executorBuilder_ == null) {
+              executorBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                  org.apache.mesos.v1.Protos.ExecutorInfo, org.apache.mesos.v1.Protos.ExecutorInfo.Builder, org.apache.mesos.v1.Protos.ExecutorInfoOrBuilder>(
+                      executor_,
+                      getParentForChildren(),
+                      isClean());
+              executor_ = null;
+            }
+            return executorBuilder_;
+          }
+
+          // required .mesos.v1.TaskGroupInfo task_group = 2;
+          private org.apache.mesos.v1.Protos.TaskGroupInfo taskGroup_ = org.apache.mesos.v1.Protos.TaskGroupInfo.getDefaultInstance();
+          private com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.TaskGroupInfo, org.apache.mesos.v1.Protos.TaskGroupInfo.Builder, org.apache.mesos.v1.Protos.TaskGroupInfoOrBuilder> taskGroupBuilder_;
+          /**
+           * <code>required .mesos.v1.TaskGroupInfo task_group = 2;</code>
+           */
+          public boolean hasTaskGroup() {
+            return ((bitField0_ & 0x00000002) == 0x00000002);
+          }
+          /**
+           * <code>required .mesos.v1.TaskGroupInfo task_group = 2;</code>
+           */
+          public org.apache.mesos.v1.Protos.TaskGroupInfo getTaskGroup() {
+            if (taskGroupBuilder_ == null) {
+              return taskGroup_;
+            } else {
+              return taskGroupBuilder_.getMessage();
+            }
+          }
+          /**
+           * <code>required .mesos.v1.TaskGroupInfo task_group = 2;</code>
+           */
+          public Builder setTaskGroup(org.apache.mesos.v1.Protos.TaskGroupInfo value) {
+            if (taskGroupBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              taskGroup_ = value;
+              onChanged();
+            } else {
+              taskGroupBuilder_.setMessage(value);
+            }
+            bitField0_ |= 0x00000002;
+            return this;
+          }
+          /**
+           * <code>required .mesos.v1.TaskGroupInfo task_group = 2;</code>
+           */
+          public Builder setTaskGroup(
+              org.apache.mesos.v1.Protos.TaskGroupInfo.Builder builderForValue) {
+            if (taskGroupBuilder_ == null) {
+              taskGroup_ = builderForValue.build();
+              onChanged();
+            } else {
+              taskGroupBuilder_.setMessage(builderForValue.build());
+            }
+            bitField0_ |= 0x00000002;
+            return this;
+          }
+          /**
+           * <code>required .mesos.v1.TaskGroupInfo task_group = 2;</code>
+           */
+          public Builder mergeTaskGroup(org.apache.mesos.v1.Protos.TaskGroupInfo value) {
+            if (taskGroupBuilder_ == null) {
+              if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                  taskGroup_ != org.apache.mesos.v1.Protos.TaskGroupInfo.getDefaultInstance()) {
+                taskGroup_ =
+                  org.apache.mesos.v1.Protos.TaskGroupInfo.newBuilder(taskGroup_).mergeFrom(value).buildPartial();
+              } else {
+                taskGroup_ = value;
+              }
+              onChanged();
+            } else {
+              taskGroupBuilder_.mergeFrom(value);
+            }
+            bitField0_ |= 0x00000002;
+            return this;
+          }
+          /**
+           * <code>required .mesos.v1.TaskGroupInfo task_group = 2;</code>
+           */
+          public Builder clearTaskGroup() {
+            if (taskGroupBuilder_ == null) {
+              taskGroup_ = org.apache.mesos.v1.Protos.TaskGroupInfo.getDefaultInstance();
+              onChanged();
+            } else {
+              taskGroupBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000002);
+            return this;
+          }
+          /**
+           * <code>required .mesos.v1.TaskGroupInfo task_group = 2;</code>
+           */
+          public org.apache.mesos.v1.Protos.TaskGroupInfo.Builder getTaskGroupBuilder() {
+            bitField0_ |= 0x00000002;
+            onChanged();
+            return getTaskGroupFieldBuilder().getBuilder();
+          }
+          /**
+           * <code>required .mesos.v1.TaskGroupInfo task_group = 2;</code>
+           */
+          public org.apache.mesos.v1.Protos.TaskGroupInfoOrBuilder getTaskGroupOrBuilder() {
+            if (taskGroupBuilder_ != null) {
+              return taskGroupBuilder_.getMessageOrBuilder();
+            } else {
+              return taskGroup_;
+            }
+          }
+          /**
+           * <code>required .mesos.v1.TaskGroupInfo task_group = 2;</code>
+           */
+          private com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.TaskGroupInfo, org.apache.mesos.v1.Protos.TaskGroupInfo.Builder, org.apache.mesos.v1.Protos.TaskGroupInfoOrBuilder> 
+              getTaskGroupFieldBuilder() {
+            if (taskGroupBuilder_ == null) {
+              taskGroupBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                  org.apache.mesos.v1.Protos.TaskGroupInfo, org.apache.mesos.v1.Protos.TaskGroupInfo.Builder, org.apache.mesos.v1.Protos.TaskGroupInfoOrBuilder>(
+                      taskGroup_,
+                      getParentForChildren(),
+                      isClean());
+              taskGroup_ = null;
+            }
+            return taskGroupBuilder_;
+          }
+
+          // @@protoc_insertion_point(builder_scope:mesos.v1.Offer.Operation.LaunchGroup)
+        }
+
+        static {
+          defaultInstance = new LaunchGroup(true);
+          defaultInstance.initFields();
+        }
+
+        // @@protoc_insertion_point(class_scope:mesos.v1.Offer.Operation.LaunchGroup)
+      }
+
+      public interface ReserveOrBuilder
+          extends com.google.protobuf.MessageOrBuilder {
+
+        // repeated .mesos.v1.Resource resources = 1;
+        /**
+         * <code>repeated .mesos.v1.Resource resources = 1;</code>
+         */
+        java.util.List<org.apache.mesos.v1.Protos.Resource> 
+            getResourcesList();
+        /**
+         * <code>repeated .mesos.v1.Resource resources = 1;</code>
+         */
+        org.apache.mesos.v1.Protos.Resource getResources(int index);
+        /**
+         * <code>repeated .mesos.v1.Resource resources = 1;</code>
+         */
+        int getResourcesCount();
+        /**
+         * <code>repeated .mesos.v1.Resource resources = 1;</code>
+         */
+        java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+            getResourcesOrBuilderList();
+        /**
+         * <code>repeated .mesos.v1.Resource resources = 1;</code>
+         */
+        org.apache.mesos.v1.Protos.ResourceOrBuilder getResourcesOrBuilder(
+            int index);
+      }
+      /**
+       * Protobuf type {@code mesos.v1.Offer.Operation.Reserve}
+       */
+      public static final class Reserve extends
+          com.google.protobuf.GeneratedMessage
+          implements ReserveOrBuilder {
+        // Use Reserve.newBuilder() to construct.
+        private Reserve(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+          super(builder);
+          this.unknownFields = builder.getUnknownFields();
+        }
+        private Reserve(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+        private static final Reserve defaultInstance;
+        public static Reserve getDefaultInstance() {
+          return defaultInstance;
+        }
+
+        public Reserve getDefaultInstanceForType() {
+          return defaultInstance;
+        }
+
+        private final com.google.protobuf.UnknownFieldSet unknownFields;
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet
+            getUnknownFields() {
+          return this.unknownFields;
+        }
+        private Reserve(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          initFields();
+          int mutable_bitField0_ = 0;
+          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+              com.google.protobuf.UnknownFieldSet.newBuilder();
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(input, unknownFields,
+                                         extensionRegistry, tag)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 10: {
+                  if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                    resources_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Resource>();
+                    mutable_bitField0_ |= 0x00000001;
+                  }
+                  resources_.add(input.readMessage(org.apache.mesos.v1.Protos.Resource.PARSER, extensionRegistry));
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw e.setUnfinishedMessage(this);
+          } catch (java.io.IOException e) {
+            throw new com.google.protobuf.InvalidProtocolBufferException(
+                e.getMessage()).setUnfinishedMessage(this);
+          } finally {
+            if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+              resources_ = java.util.Collections.unmodifiableList(resources_);
+            }
+            this.unknownFields = unknownFields.build();
+            makeExtensionsImmutable();
+          }
+        }
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Offer_Operation_Reserve_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Offer_Operation_Reserve_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.Offer.Operation.Reserve.class, org.apache.mesos.v1.Protos.Offer.Operation.Reserve.Builder.class);
+        }
+
+        public static com.google.protobuf.Parser<Reserve> PARSER =
+            new com.google.protobuf.AbstractParser<Reserve>() {
+          public Reserve parsePartialFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return new Reserve(input, extensionRegistry);
+          }
+        };
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<Reserve> getParserForType() {
+          return PARSER;
+        }
+
+        // repeated .mesos.v1.Resource resources = 1;
+        public static final int RESOURCES_FIELD_NUMBER = 1;
+        private java.util.List<org.apache.mesos.v1.Protos.Resource> resources_;
+        /**
+         * <code>repeated .mesos.v1.Resource resources = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.v1.Protos.Resource> getResourcesList() {
+          return resources_;
+        }
+        /**
+         * <code>repeated .mesos.v1.Resource resources = 1;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+            getResourcesOrBuilderList() {
+          return resources_;
+        }
+        /**
+         * <code>repeated .mesos.v1.Resource resources = 1;</code>
+         */
+        public int getResourcesCount() {
+          return resources_.size();
+        }
+        /**
+         * <code>repeated .mesos.v1.Resource resources = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.Resource getResources(int index) {
+          return resources_.get(index);
+        }
+        /**
+         * <code>repeated .mesos.v1.Resource resources = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.ResourceOrBuilder getResourcesOrBuilder(
+            int index) {
+          return resources_.get(index);
+        }
+
+        private void initFields() {
+          resources_ = java.util.Collections.emptyList();
+        }
+        private byte memoizedIsInitialized = -1;
+        public final boolean isInitialized() {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized != -1) return isInitialized == 1;
+
+          for (int i = 0; i < getResourcesCount(); i++) {
+            if (!getResources(i).isInitialized()) {
+              memoizedIsInitialized = 0;
+              return false;
+            }
+          }
+          memoizedIsInitialized = 1;
+          return true;
+        }
+
+        public void writeTo(com.google.protobuf.CodedOutputStream output)
+                            throws java.io.IOException {
+          getSerializedSize();
+          for (int i = 0; i < resources_.size(); i++) {
+            output.writeMessage(1, resources_.get(i));
+          }
+          getUnknownFields().writeTo(output);
+        }
+
+        private int memoizedSerializedSize = -1;
+        public int getSerializedSize() {
+          int size = memoizedSerializedSize;
+          if (size != -1) return size;
+
+          size = 0;
+          for (int i = 0; i < resources_.size(); i++) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeMessageSize(1, resources_.get(i));
+          }
+          size += getUnknownFields().getSerializedSize();
+          memoizedSerializedSize = size;
+          return size;
+        }
+
+        private static final long serialVersionUID = 0L;
+        @java.lang.Override
+        protected java.lang.Object writeReplace()
+            throws java.io.ObjectStreamException {
+          return super.writeReplace();
+        }
+
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Reserve parseFrom(
+            com.google.protobuf.ByteString data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Reserve parseFrom(
+            com.google.protobuf.ByteString data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Reserve parseFrom(byte[] data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Reserve parseFrom(
+            byte[] data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Reserve parseFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Reserve parseFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Reserve parseDelimitedFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Reserve parseDelimitedFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Reserve parseFrom(
+            com.google.protobuf.CodedInputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Reserve parseFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+
+        public static Builder newBuilder() { return Builder.create(); }
+        public Builder newBuilderForType() { return newBuilder(); }
+        public static Builder newBuilder(org.apache.mesos.v1.Protos.Offer.Operation.Reserve prototype) {
+          return newBuilder().mergeFrom(prototype);
+        }
+        public Builder toBuilder() { return newBuilder(this); }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          Builder builder = new Builder(parent);
+          return builder;
+        }
+        /**
+         * Protobuf type {@code mesos.v1.Offer.Operation.Reserve}
+         */
+        public static final class Builder extends
+            com.google.protobuf.GeneratedMessage.Builder<Builder>
+           implements org.apache.mesos.v1.Protos.Offer.Operation.ReserveOrBuilder {
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Offer_Operation_Reserve_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Offer_Operation_Reserve_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.v1.Protos.Offer.Operation.Reserve.class, org.apache.mesos.v1.Protos.Offer.Operation.Reserve.Builder.class);
+          }
+
+          // Construct using org.apache.mesos.v1.Protos.Offer.Operation.Reserve.newBuilder()
+          private Builder() {
+            maybeForceBuilderInitialization();
+          }
+
+          private Builder(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            super(parent);
+            maybeForceBuilderInitialization();
+          }
+          private void maybeForceBuilderInitialization() {
+            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+              getResourcesFieldBuilder();
+            }
+          }
+          private static Builder create() {
+            return new Builder();
+          }
+
+          public Builder clear() {
+            super.clear();
+            if (resourcesBuilder_ == null) {
+              resources_ = java.util.Collections.emptyList();
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              resourcesBuilder_.clear();
+            }
+            return this;
+          }
+
+          public Builder clone() {
+            return create().mergeFrom(buildPartial());
+          }
+
+          public com.google.protobuf.Descriptors.Descriptor
+              getDescriptorForType() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Offer_Operation_Reserve_descriptor;
+          }
+
+          public org.apache.mesos.v1.Protos.Offer.Operation.Reserve getDefaultInstanceForType() {
+            return org.apache.mesos.v1.Protos.Offer.Operation.Reserve.getDefaultInstance();
+          }
+
+          public org.apache.mesos.v1.Protos.Offer.Operation.Reserve build() {
+            org.apache.mesos.v1.Protos.Offer.Operation.Reserve result = buildPartial();
+            if (!result.isInitialized()) {
+              throw newUninitializedMessageException(result);
+            }
+            return result;
+          }
+
+          public org.apache.mesos.v1.Protos.Offer.Operation.Reserve buildPartial() {
+            org.apache.mesos.v1.Protos.Offer.Operation.Reserve result = new org.apache.mesos.v1.Protos.Offer.Operation.Reserve(this);
+            int from_bitField0_ = bitField0_;
+            if (resourcesBuilder_ == null) {
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                resources_ = java.util.Collections.unmodifiableList(resources_);
+                bitField0_ = (bitField0_ & ~0x00000001);
+              }
+              result.resources_ = resources_;
+            } else {
+              result.resources_ = resourcesBuilder_.build();
+            }
+            onBuilt();
+            return result;
+          }
+
+          public Builder mergeFrom(com.google.protobuf.Message other) {
+            if (other instanceof org.apache.mesos.v1.Protos.Offer.Operation.Reserve) {
+              return mergeFrom((org.apache.mesos.v1.Protos.Offer.Operation.Reserve)other);
+            } else {
+              super.mergeFrom(other);
+              return this;
+            }
+          }
+
+          public Builder mergeFrom(org.apache.mesos.v1.Protos.Offer.Operation.Reserve other) {
+            if (other == org.apache.mesos.v1.Protos.Offer.Operation.Reserve.getDefaultInstance()) return this;
+            if (resourcesBuilder_ == null) {
+              if (!other.resources_.isEmpty()) {
+                if (resources_.isEmpty()) {
+                  resources_ = other.resources_;
+                  bitField0_ = (bitField0_ & ~0x00000001);
+                } else {
+                  ensureResourcesIsMutable();
+                  resources_.addAll(other.resources_);
+                }
+                onChanged();
+              }
+            } else {
+              if (!other.resources_.isEmpty()) {
+                if (resourcesBuilder_.isEmpty()) {
+                  resourcesBuilder_.dispose();
+                  resourcesBuilder_ = null;
+                  resources_ = other.resources_;
+                  bitField0_ = (bitField0_ & ~0x00000001);
+                  resourcesBuilder_ = 
+                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                       getResourcesFieldBuilder() : null;
+                } else {
+                  resourcesBuilder_.addAllMessages(other.resources_);
+                }
+              }
+            }
+            this.mergeUnknownFields(other.getUnknownFields());
+            return this;
+          }
+
+          public final boolean isInitialized() {
+            for (int i = 0; i < getResourcesCount(); i++) {
+              if (!getResources(i).isInitialized()) {
+                
+                return false;
+              }
+            }
+            return true;
+          }
+
+          public Builder mergeFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            org.apache.mesos.v1.Protos.Offer.Operation.Reserve parsedMessage = null;
+            try {
+              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              parsedMessage = (org.apache.mesos.v1.Protos.Offer.Operation.Reserve) e.getUnfinishedMessage();
+              throw e;
+            } finally {
+              if (parsedMessage != null) {
+                mergeFrom(parsedMessage);
+              }
+            }
+            return this;
+          }
+          private int bitField0_;
+
+          // repeated .mesos.v1.Resource resources = 1;
+          private java.util.List<org.apache.mesos.v1.Protos.Resource> resources_ =
+            java.util.Collections.emptyList();
+          private void ensureResourcesIsMutable() {
+            if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+              resources_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Resource>(resources_);
+              bitField0_ |= 0x00000001;
+             }
+          }
+
+          private com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder> resourcesBuilder_;
+
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 1;</code>
+           */
+          public java.util.List<org.apache.mesos.v1.Protos.Resource> getResourcesList() {
+            if (resourcesBuilder_ == null) {
+              return java.util.Collections.unmodifiableList(resources_);
+            } else {
+              return resourcesBuilder_.getMessageList();
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 1;</code>
+           */
+          public int getResourcesCount() {
+            if (resourcesBuilder_ == null) {
+              return resources_.size();
+            } else {
+              return resourcesBuilder_.getCount();
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 1;</code>
+           */
+          public org.apache.mesos.v1.Protos.Resource getResources(int index) {
+            if (resourcesBuilder_ == null) {
+              return resources_.get(index);
+            } else {
+              return resourcesBuilder_.getMessage(index);
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 1;</code>
+           */
+          public Builder setResources(
+              int index, org.apache.mesos.v1.Protos.Resource value) {
+            if (resourcesBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureResourcesIsMutable();
+              resources_.set(index, value);
+              onChanged();
+            } else {
+              resourcesBuilder_.setMessage(index, value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 1;</code>
+           */
+          public Builder setResources(
+              int index, org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+            if (resourcesBuilder_ == null) {
+              ensureResourcesIsMutable();
+              resources_.set(index, builderForValue.build());
+              onChanged();
+            } else {
+              resourcesBuilder_.setMessage(index, builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 1;</code>
+           */
+          public Builder addResources(org.apache.mesos.v1.Protos.Resource value) {
+            if (resourcesBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureResourcesIsMutable();
+              resources_.add(value);
+              onChanged();
+            } else {
+              resourcesBuilder_.addMessage(value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 1;</code>
+           */
+          public Builder addResources(
+              int index, org.apache.mesos.v1.Protos.Resource value) {
+            if (resourcesBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureResourcesIsMutable();
+              resources_.add(index, value);
+              onChanged();
+            } else {
+              resourcesBuilder_.addMessage(index, value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 1;</code>
+           */
+          public Builder addResources(
+              org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+            if (resourcesBuilder_ == null) {
+              ensureResourcesIsMutable();
+              resources_.add(builderForValue.build());
+              onChanged();
+            } else {
+              resourcesBuilder_.addMessage(builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 1;</code>
+           */
+          public Builder addResources(
+              int index, org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+            if (resourcesBuilder_ == null) {
+              ensureResourcesIsMutable();
+              resources_.add(index, builderForValue.build());
+              onChanged();
+            } else {
+              resourcesBuilder_.addMessage(index, builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 1;</code>
+           */
+          public Builder addAllResources(
+              java.lang.Iterable<? extends org.apache.mesos.v1.Protos.Resource> values) {
+            if (resourcesBuilder_ == null) {
+              ensureResourcesIsMutable();
+              super.addAll(values, resources_);
+              onChanged();
+            } else {
+              resourcesBuilder_.addAllMessages(values);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 1;</code>
+           */
+          public Builder clearResources() {
+            if (resourcesBuilder_ == null) {
+              resources_ = java.util.Collections.emptyList();
+              bitField0_ = (bitField0_ & ~0x00000001);
+              onChanged();
+            } else {
+              resourcesBuilder_.clear();
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 1;</code>
+           */
+          public Builder removeResources(int index) {
+            if (resourcesBuilder_ == null) {
+              ensureResourcesIsMutable();
+              resources_.remove(index);
+              onChanged();
+            } else {
+              resourcesBuilder_.remove(index);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 1;</code>
+           */
+          public org.apache.mesos.v1.Protos.Resource.Builder getResourcesBuilder(
+              int index) {
+            return getResourcesFieldBuilder().getBuilder(index);
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 1;</code>
+           */
+          public org.apache.mesos.v1.Protos.ResourceOrBuilder getResourcesOrBuilder(
+              int index) {
+            if (resourcesBuilder_ == null) {
+              return resources_.get(index);  } else {
+              return resourcesBuilder_.getMessageOrBuilder(index);
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 1;</code>
+           */
+          public java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+               getResourcesOrBuilderList() {
+            if (resourcesBuilder_ != null) {
+              return resourcesBuilder_.getMessageOrBuilderList();
+            } else {
+              return java.util.Collections.unmodifiableList(resources_);
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 1;</code>
+           */
+          public org.apache.mesos.v1.Protos.Resource.Builder addResourcesBuilder() {
+            return getResourcesFieldBuilder().addBuilder(
+                org.apache.mesos.v1.Protos.Resource.getDefaultInstance());
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 1;</code>
+           */
+          public org.apache.mesos.v1.Protos.Resource.Builder addResourcesBuilder(
+              int index) {
+            return getResourcesFieldBuilder().addBuilder(
+                index, org.apache.mesos.v1.Protos.Resource.getDefaultInstance());
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 1;</code>
+           */
+          public java.util.List<org.apache.mesos.v1.Protos.Resource.Builder> 
+               getResourcesBuilderList() {
+            return getResourcesFieldBuilder().getBuilderList();
+          }
+          private com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+              getResourcesFieldBuilder() {
+            if (resourcesBuilder_ == null) {
+              resourcesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                  org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder>(
+                      resources_,
+                      ((bitField0_ & 0x00000001) == 0x00000001),
+                      getParentForChildren(),
+                      isClean());
+              resources_ = null;
+            }
+            return resourcesBuilder_;
+          }
+
+          // @@protoc_insertion_point(builder_scope:mesos.v1.Offer.Operation.Reserve)
+        }
+
+        static {
+          defaultInstance = new Reserve(true);
+          defaultInstance.initFields();
+        }
+
+        // @@protoc_insertion_point(class_scope:mesos.v1.Offer.Operation.Reserve)
+      }
+
+      public interface UnreserveOrBuilder
+          extends com.google.protobuf.MessageOrBuilder {
+
+        // repeated .mesos.v1.Resource resources = 1;
+        /**
+         * <code>repeated .mesos.v1.Resource resources = 1;</code>
+         */
+        java.util.List<org.apache.mesos.v1.Protos.Resource> 
+            getResourcesList();
+        /**
+         * <code>repeated .mesos.v1.Resource resources = 1;</code>
+         */
+        org.apache.mesos.v1.Protos.Resource getResources(int index);
+        /**
+         * <code>repeated .mesos.v1.Resource resources = 1;</code>
+         */
+        int getResourcesCount();
+        /**
+         * <code>repeated .mesos.v1.Resource resources = 1;</code>
+         */
+        java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+            getResourcesOrBuilderList();
+        /**
+         * <code>repeated .mesos.v1.Resource resources = 1;</code>
+         */
+        org.apache.mesos.v1.Protos.ResourceOrBuilder getResourcesOrBuilder(
+            int index);
+      }
+      /**
+       * Protobuf type {@code mesos.v1.Offer.Operation.Unreserve}
+       */
+      public static final class Unreserve extends
+          com.google.protobuf.GeneratedMessage
+          implements UnreserveOrBuilder {
+        // Use Unreserve.newBuilder() to construct.
+        private Unreserve(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+          super(builder);
+          this.unknownFields = builder.getUnknownFields();
+        }
+        private Unreserve(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+        private static final Unreserve defaultInstance;
+        public static Unreserve getDefaultInstance() {
+          return defaultInstance;
+        }
+
+        public Unreserve getDefaultInstanceForType() {
+          return defaultInstance;
+        }
+
+        private final com.google.protobuf.UnknownFieldSet unknownFields;
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet
+            getUnknownFields() {
+          return this.unknownFields;
+        }
+        private Unreserve(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          initFields();
+          int mutable_bitField0_ = 0;
+          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+              com.google.protobuf.UnknownFieldSet.newBuilder();
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(input, unknownFields,
+                                         extensionRegistry, tag)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 10: {
+                  if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                    resources_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Resource>();
+                    mutable_bitField0_ |= 0x00000001;
+                  }
+                  resources_.add(input.readMessage(org.apache.mesos.v1.Protos.Resource.PARSER, extensionRegistry));
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw e.setUnfinishedMessage(this);
+          } catch (java.io.IOException e) {
+            throw new com.google.protobuf.InvalidProtocolBufferException(
+                e.getMessage()).setUnfinishedMessage(this);
+          } finally {
+            if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+              resources_ = java.util.Collections.unmodifiableList(resources_);
+            }
+            this.unknownFields = unknownFields.build();
+            makeExtensionsImmutable();
+          }
+        }
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Offer_Operation_Unreserve_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Offer_Operation_Unreserve_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.Offer.Operation.Unreserve.class, org.apache.mesos.v1.Protos.Offer.Operation.Unreserve.Builder.class);
+        }
+
+        public static com.google.protobuf.Parser<Unreserve> PARSER =
+            new com.google.protobuf.AbstractParser<Unreserve>() {
+          public Unreserve parsePartialFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return new Unreserve(input, extensionRegistry);
+          }
+        };
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<Unreserve> getParserForType() {
+          return PARSER;
+        }
+
+        // repeated .mesos.v1.Resource resources = 1;
+        public static final int RESOURCES_FIELD_NUMBER = 1;
+        private java.util.List<org.apache.mesos.v1.Protos.Resource> resources_;
+        /**
+         * <code>repeated .mesos.v1.Resource resources = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.v1.Protos.Resource> getResourcesList() {
+          return resources_;
+        }
+        /**
+         * <code>repeated .mesos.v1.Resource resources = 1;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+            getResourcesOrBuilderList() {
+          return resources_;
+        }
+        /**
+         * <code>repeated .mesos.v1.Resource resources = 1;</code>
+         */
+        public int getResourcesCount() {
+          return resources_.size();
+        }
+        /**
+         * <code>repeated .mesos.v1.Resource resources = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.Resource getResources(int index) {
+          return resources_.get(index);
+        }
+        /**
+         * <code>repeated .mesos.v1.Resource resources = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.ResourceOrBuilder getResourcesOrBuilder(
+            int index) {
+          return resources_.get(index);
+        }
+
+        private void initFields() {
+          resources_ = java.util.Collections.emptyList();
+        }
+        private byte memoizedIsInitialized = -1;
+        public final boolean isInitialized() {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized != -1) return isInitialized == 1;
+
+          for (int i = 0; i < getResourcesCount(); i++) {
+            if (!getResources(i).isInitialized()) {
+              memoizedIsInitialized = 0;
+              return false;
+            }
+          }
+          memoizedIsInitialized = 1;
+          return true;
+        }
+
+        public void writeTo(com.google.protobuf.CodedOutputStream output)
+                            throws java.io.IOException {
+          getSerializedSize();
+          for (int i = 0; i < resources_.size(); i++) {
+            output.writeMessage(1, resources_.get(i));
+          }
+          getUnknownFields().writeTo(output);
+        }
+
+        private int memoizedSerializedSize = -1;
+        public int getSerializedSize() {
+          int size = memoizedSerializedSize;
+          if (size != -1) return size;
+
+          size = 0;
+          for (int i = 0; i < resources_.size(); i++) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeMessageSize(1, resources_.get(i));
+          }
+          size += getUnknownFields().getSerializedSize();
+          memoizedSerializedSize = size;
+          return size;
+        }
+
+        private static final long serialVersionUID = 0L;
+        @java.lang.Override
+        protected java.lang.Object writeReplace()
+            throws java.io.ObjectStreamException {
+          return super.writeReplace();
+        }
+
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Unreserve parseFrom(
+            com.google.protobuf.ByteString data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Unreserve parseFrom(
+            com.google.protobuf.ByteString data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Unreserve parseFrom(byte[] data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Unreserve parseFrom(
+            byte[] data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Unreserve parseFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Unreserve parseFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Unreserve parseDelimitedFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Unreserve parseDelimitedFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Unreserve parseFrom(
+            com.google.protobuf.CodedInputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Unreserve parseFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+
+        public static Builder newBuilder() { return Builder.create(); }
+        public Builder newBuilderForType() { return newBuilder(); }
+        public static Builder newBuilder(org.apache.mesos.v1.Protos.Offer.Operation.Unreserve prototype) {
+          return newBuilder().mergeFrom(prototype);
+        }
+        public Builder toBuilder() { return newBuilder(this); }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          Builder builder = new Builder(parent);
+          return builder;
+        }
+        /**
+         * Protobuf type {@code mesos.v1.Offer.Operation.Unreserve}
+         */
+        public static final class Builder extends
+            com.google.protobuf.GeneratedMessage.Builder<Builder>
+           implements org.apache.mesos.v1.Protos.Offer.Operation.UnreserveOrBuilder {
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Offer_Operation_Unreserve_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Offer_Operation_Unreserve_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.v1.Protos.Offer.Operation.Unreserve.class, org.apache.mesos.v1.Protos.Offer.Operation.Unreserve.Builder.class);
+          }
+
+          // Construct using org.apache.mesos.v1.Protos.Offer.Operation.Unreserve.newBuilder()
+          private Builder() {
+            maybeForceBuilderInitialization();
+          }
+
+          private Builder(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            super(parent);
+            maybeForceBuilderInitialization();
+          }
+          private void maybeForceBuilderInitialization() {
+            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+              getResourcesFieldBuilder();
+            }
+          }
+          private static Builder create() {
+            return new Builder();
+          }
+
+          public Builder clear() {
+            super.clear();
+            if (resourcesBuilder_ == null) {
+              resources_ = java.util.Collections.emptyList();
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              resourcesBuilder_.clear();
+            }
+            return this;
+          }
+
+          public Builder clone() {
+            return create().mergeFrom(buildPartial());
+          }
+
+          public com.google.protobuf.Descriptors.Descriptor
+              getDescriptorForType() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Offer_Operation_Unreserve_descriptor;
+          }
+
+          public org.apache.mesos.v1.Protos.Offer.Operation.Unreserve getDefaultInstanceForType() {
+            return org.apache.mesos.v1.Protos.Offer.Operation.Unreserve.getDefaultInstance();
+          }
+
+          public org.apache.mesos.v1.Protos.Offer.Operation.Unreserve build() {
+            org.apache.mesos.v1.Protos.Offer.Operation.Unreserve result = buildPartial();
+            if (!result.isInitialized()) {
+              throw newUninitializedMessageException(result);
+            }
+            return result;
+          }
+
+          public org.apache.mesos.v1.Protos.Offer.Operation.Unreserve buildPartial() {
+            org.apache.mesos.v1.Protos.Offer.Operation.Unreserve result = new org.apache.mesos.v1.Protos.Offer.Operation.Unreserve(this);
+            int from_bitField0_ = bitField0_;
+            if (resourcesBuilder_ == null) {
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                resources_ = java.util.Collections.unmodifiableList(resources_);
+                bitField0_ = (bitField0_ & ~0x00000001);
+              }
+              result.resources_ = resources_;
+            } else {
+              result.resources_ = resourcesBuilder_.build();
+            }
+            onBuilt();
+            return result;
+          }
+
+          public Builder mergeFrom(com.google.protobuf.Message other) {
+            if (other instanceof org.apache.mesos.v1.Protos.Offer.Operation.Unreserve) {
+              return mergeFrom((org.apache.mesos.v1.Protos.Offer.Operation.Unreserve)other);
+            } else {
+              super.mergeFrom(other);
+              return this;
+            }
+          }
+
+          public Builder mergeFrom(org.apache.mesos.v1.Protos.Offer.Operation.Unreserve other) {
+            if (other == org.apache.mesos.v1.Protos.Offer.Operation.Unreserve.getDefaultInstance()) return this;
+            if (resourcesBuilder_ == null) {
+              if (!other.resources_.isEmpty()) {
+                if (resources_.isEmpty()) {
+                  resources_ = other.resources_;
+                  bitField0_ = (bitField0_ & ~0x00000001);
+                } else {
+                  ensureResourcesIsMutable();
+                  resources_.addAll(other.resources_);
+                }
+                onChanged();
+              }
+            } else {
+              if (!other.resources_.isEmpty()) {
+                if (resourcesBuilder_.isEmpty()) {
+                  resourcesBuilder_.dispose();
+                  resourcesBuilder_ = null;
+                  resources_ = other.resources_;
+                  bitField0_ = (bitField0_ & ~0x00000001);
+                  resourcesBuilder_ = 
+                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                       getResourcesFieldBuilder() : null;
+                } else {
+                  resourcesBuilder_.addAllMessages(other.resources_);
+                }
+              }
+            }
+            this.mergeUnknownFields(other.getUnknownFields());
+            return this;
+          }
+
+          public final boolean isInitialized() {
+            for (int i = 0; i < getResourcesCount(); i++) {
+              if (!getResources(i).isInitialized()) {
+                
+                return false;
+              }
+            }
+            return true;
+          }
+
+          public Builder mergeFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            org.apache.mesos.v1.Protos.Offer.Operation.Unreserve parsedMessage = null;
+            try {
+              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              parsedMessage = (org.apache.mesos.v1.Protos.Offer.Operation.Unreserve) e.getUnfinishedMessage();
+              throw e;
+            } finally {
+              if (parsedMessage != null) {
+                mergeFrom(parsedMessage);
+              }
+            }
+            return this;
+          }
+          private int bitField0_;
+
+          // repeated .mesos.v1.Resource resources = 1;
+          private java.util.List<org.apache.mesos.v1.Protos.Resource> resources_ =
+            java.util.Collections.emptyList();
+          private void ensureResourcesIsMutable() {
+            if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+              resources_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Resource>(resources_);
+              bitField0_ |= 0x00000001;
+             }
+          }
+
+          private com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder> resourcesBuilder_;
+
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 1;</code>
+           */
+          public java.util.List<org.apache.mesos.v1.Protos.Resource> getResourcesList() {
+            if (resourcesBuilder_ == null) {
+              return java.util.Collections.unmodifiableList(resources_);
+            } else {
+              return resourcesBuilder_.getMessageList();
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 1;</code>
+           */
+          public int getResourcesCount() {
+            if (resourcesBuilder_ == null) {
+              return resources_.size();
+            } else {
+              return resourcesBuilder_.getCount();
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 1;</code>
+           */
+          public org.apache.mesos.v1.Protos.Resource getResources(int index) {
+            if (resourcesBuilder_ == null) {
+              return resources_.get(index);
+            } else {
+              return resourcesBuilder_.getMessage(index);
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 1;</code>
+           */
+          public Builder setResources(
+              int index, org.apache.mesos.v1.Protos.Resource value) {
+            if (resourcesBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureResourcesIsMutable();
+              resources_.set(index, value);
+              onChanged();
+            } else {
+              resourcesBuilder_.setMessage(index, value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 1;</code>
+           */
+          public Builder setResources(
+              int index, org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+            if (resourcesBuilder_ == null) {
+              ensureResourcesIsMutable();
+              resources_.set(index, builderForValue.build());
+              onChanged();
+            } else {
+              resourcesBuilder_.setMessage(index, builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 1;</code>
+           */
+          public Builder addResources(org.apache.mesos.v1.Protos.Resource value) {
+            if (resourcesBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureResourcesIsMutable();
+              resources_.add(value);
+              onChanged();
+            } else {
+              resourcesBuilder_.addMessage(value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 1;</code>
+           */
+          public Builder addResources(
+              int index, org.apache.mesos.v1.Protos.Resource value) {
+            if (resourcesBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureResourcesIsMutable();
+              resources_.add(index, value);
+              onChanged();
+            } else {
+              resourcesBuilder_.addMessage(index, value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 1;</code>
+           */
+          public Builder addResources(
+              org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+            if (resourcesBuilder_ == null) {
+              ensureResourcesIsMutable();
+              resources_.add(builderForValue.build());
+              onChanged();
+            } else {
+              resourcesBuilder_.addMessage(builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 1;</code>
+           */
+          public Builder addResources(
+              int index, org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+            if (resourcesBuilder_ == null) {
+              ensureResourcesIsMutable();
+              resources_.add(index, builderForValue.build());
+              onChanged();
+            } else {
+              resourcesBuilder_.addMessage(index, builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 1;</code>
+           */
+          public Builder addAllResources(
+              java.lang.Iterable<? extends org.apache.mesos.v1.Protos.Resource> values) {
+            if (resourcesBuilder_ == null) {
+              ensureResourcesIsMutable();
+              super.addAll(values, resources_);
+              onChanged();
+            } else {
+              resourcesBuilder_.addAllMessages(values);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 1;</code>
+           */
+          public Builder clearResources() {
+            if (resourcesBuilder_ == null) {
+              resources_ = java.util.Collections.emptyList();
+              bitField0_ = (bitField0_ & ~0x00000001);
+              onChanged();
+            } else {
+              resourcesBuilder_.clear();
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 1;</code>
+           */
+          public Builder removeResources(int index) {
+            if (resourcesBuilder_ == null) {
+              ensureResourcesIsMutable();
+              resources_.remove(index);
+              onChanged();
+            } else {
+              resourcesBuilder_.remove(index);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 1;</code>
+           */
+          public org.apache.mesos.v1.Protos.Resource.Builder getResourcesBuilder(
+              int index) {
+            return getResourcesFieldBuilder().getBuilder(index);
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 1;</code>
+           */
+          public org.apache.mesos.v1.Protos.ResourceOrBuilder getResourcesOrBuilder(
+              int index) {
+            if (resourcesBuilder_ == null) {
+              return resources_.get(index);  } else {
+              return resourcesBuilder_.getMessageOrBuilder(index);
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 1;</code>
+           */
+          public java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+               getResourcesOrBuilderList() {
+            if (resourcesBuilder_ != null) {
+              return resourcesBuilder_.getMessageOrBuilderList();
+            } else {
+              return java.util.Collections.unmodifiableList(resources_);
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 1;</code>
+           */
+          public org.apache.mesos.v1.Protos.Resource.Builder addResourcesBuilder() {
+            return getResourcesFieldBuilder().addBuilder(
+                org.apache.mesos.v1.Protos.Resource.getDefaultInstance());
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 1;</code>
+           */
+          public org.apache.mesos.v1.Protos.Resource.Builder addResourcesBuilder(
+              int index) {
+            return getResourcesFieldBuilder().addBuilder(
+                index, org.apache.mesos.v1.Protos.Resource.getDefaultInstance());
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource resources = 1;</code>
+           */
+          public java.util.List<org.apache.mesos.v1.Protos.Resource.Builder> 
+               getResourcesBuilderList() {
+            return getResourcesFieldBuilder().getBuilderList();
+          }
+          private com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+              getResourcesFieldBuilder() {
+            if (resourcesBuilder_ == null) {
+              resourcesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                  org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder>(
+                      resources_,
+                      ((bitField0_ & 0x00000001) == 0x00000001),
+                      getParentForChildren(),
+                      isClean());
+              resources_ = null;
+            }
+            return resourcesBuilder_;
+          }
+
+          // @@protoc_insertion_point(builder_scope:mesos.v1.Offer.Operation.Unreserve)
+        }
+
+        static {
+          defaultInstance = new Unreserve(true);
+          defaultInstance.initFields();
+        }
+
+        // @@protoc_insertion_point(class_scope:mesos.v1.Offer.Operation.Unreserve)
+      }
+
+      public interface CreateOrBuilder
+          extends com.google.protobuf.MessageOrBuilder {
+
+        // repeated .mesos.v1.Resource volumes = 1;
+        /**
+         * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+         */
+        java.util.List<org.apache.mesos.v1.Protos.Resource> 
+            getVolumesList();
+        /**
+         * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+         */
+        org.apache.mesos.v1.Protos.Resource getVolumes(int index);
+        /**
+         * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+         */
+        int getVolumesCount();
+        /**
+         * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+         */
+        java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+            getVolumesOrBuilderList();
+        /**
+         * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+         */
+        org.apache.mesos.v1.Protos.ResourceOrBuilder getVolumesOrBuilder(
+            int index);
+      }
+      /**
+       * Protobuf type {@code mesos.v1.Offer.Operation.Create}
+       */
+      public static final class Create extends
+          com.google.protobuf.GeneratedMessage
+          implements CreateOrBuilder {
+        // Use Create.newBuilder() to construct.
+        private Create(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+          super(builder);
+          this.unknownFields = builder.getUnknownFields();
+        }
+        private Create(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+        private static final Create defaultInstance;
+        public static Create getDefaultInstance() {
+          return defaultInstance;
+        }
+
+        public Create getDefaultInstanceForType() {
+          return defaultInstance;
+        }
+
+        private final com.google.protobuf.UnknownFieldSet unknownFields;
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet
+            getUnknownFields() {
+          return this.unknownFields;
+        }
+        private Create(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          initFields();
+          int mutable_bitField0_ = 0;
+          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+              com.google.protobuf.UnknownFieldSet.newBuilder();
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(input, unknownFields,
+                                         extensionRegistry, tag)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 10: {
+                  if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                    volumes_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Resource>();
+                    mutable_bitField0_ |= 0x00000001;
+                  }
+                  volumes_.add(input.readMessage(org.apache.mesos.v1.Protos.Resource.PARSER, extensionRegistry));
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw e.setUnfinishedMessage(this);
+          } catch (java.io.IOException e) {
+            throw new com.google.protobuf.InvalidProtocolBufferException(
+                e.getMessage()).setUnfinishedMessage(this);
+          } finally {
+            if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+              volumes_ = java.util.Collections.unmodifiableList(volumes_);
+            }
+            this.unknownFields = unknownFields.build();
+            makeExtensionsImmutable();
+          }
+        }
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Offer_Operation_Create_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Offer_Operation_Create_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.Offer.Operation.Create.class, org.apache.mesos.v1.Protos.Offer.Operation.Create.Builder.class);
+        }
+
+        public static com.google.protobuf.Parser<Create> PARSER =
+            new com.google.protobuf.AbstractParser<Create>() {
+          public Create parsePartialFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return new Create(input, extensionRegistry);
+          }
+        };
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<Create> getParserForType() {
+          return PARSER;
+        }
+
+        // repeated .mesos.v1.Resource volumes = 1;
+        public static final int VOLUMES_FIELD_NUMBER = 1;
+        private java.util.List<org.apache.mesos.v1.Protos.Resource> volumes_;
+        /**
+         * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.v1.Protos.Resource> getVolumesList() {
+          return volumes_;
+        }
+        /**
+         * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+            getVolumesOrBuilderList() {
+          return volumes_;
+        }
+        /**
+         * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+         */
+        public int getVolumesCount() {
+          return volumes_.size();
+        }
+        /**
+         * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.Resource getVolumes(int index) {
+          return volumes_.get(index);
+        }
+        /**
+         * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.ResourceOrBuilder getVolumesOrBuilder(
+            int index) {
+          return volumes_.get(index);
+        }
+
+        private void initFields() {
+          volumes_ = java.util.Collections.emptyList();
+        }
+        private byte memoizedIsInitialized = -1;
+        public final boolean isInitialized() {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized != -1) return isInitialized == 1;
+
+          for (int i = 0; i < getVolumesCount(); i++) {
+            if (!getVolumes(i).isInitialized()) {
+              memoizedIsInitialized = 0;
+              return false;
+            }
+          }
+          memoizedIsInitialized = 1;
+          return true;
+        }
+
+        public void writeTo(com.google.protobuf.CodedOutputStream output)
+                            throws java.io.IOException {
+          getSerializedSize();
+          for (int i = 0; i < volumes_.size(); i++) {
+            output.writeMessage(1, volumes_.get(i));
+          }
+          getUnknownFields().writeTo(output);
+        }
+
+        private int memoizedSerializedSize = -1;
+        public int getSerializedSize() {
+          int size = memoizedSerializedSize;
+          if (size != -1) return size;
+
+          size = 0;
+          for (int i = 0; i < volumes_.size(); i++) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeMessageSize(1, volumes_.get(i));
+          }
+          size += getUnknownFields().getSerializedSize();
+          memoizedSerializedSize = size;
+          return size;
+        }
+
+        private static final long serialVersionUID = 0L;
+        @java.lang.Override
+        protected java.lang.Object writeReplace()
+            throws java.io.ObjectStreamException {
+          return super.writeReplace();
+        }
+
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Create parseFrom(
+            com.google.protobuf.ByteString data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Create parseFrom(
+            com.google.protobuf.ByteString data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Create parseFrom(byte[] data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Create parseFrom(
+            byte[] data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Create parseFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Create parseFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Create parseDelimitedFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Create parseDelimitedFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Create parseFrom(
+            com.google.protobuf.CodedInputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Create parseFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+
+        public static Builder newBuilder() { return Builder.create(); }
+        public Builder newBuilderForType() { return newBuilder(); }
+        public static Builder newBuilder(org.apache.mesos.v1.Protos.Offer.Operation.Create prototype) {
+          return newBuilder().mergeFrom(prototype);
+        }
+        public Builder toBuilder() { return newBuilder(this); }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          Builder builder = new Builder(parent);
+          return builder;
+        }
+        /**
+         * Protobuf type {@code mesos.v1.Offer.Operation.Create}
+         */
+        public static final class Builder extends
+            com.google.protobuf.GeneratedMessage.Builder<Builder>
+           implements org.apache.mesos.v1.Protos.Offer.Operation.CreateOrBuilder {
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Offer_Operation_Create_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Offer_Operation_Create_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.v1.Protos.Offer.Operation.Create.class, org.apache.mesos.v1.Protos.Offer.Operation.Create.Builder.class);
+          }
+
+          // Construct using org.apache.mesos.v1.Protos.Offer.Operation.Create.newBuilder()
+          private Builder() {
+            maybeForceBuilderInitialization();
+          }
+
+          private Builder(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            super(parent);
+            maybeForceBuilderInitialization();
+          }
+          private void maybeForceBuilderInitialization() {
+            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+              getVolumesFieldBuilder();
+            }
+          }
+          private static Builder create() {
+            return new Builder();
+          }
+
+          public Builder clear() {
+            super.clear();
+            if (volumesBuilder_ == null) {
+              volumes_ = java.util.Collections.emptyList();
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              volumesBuilder_.clear();
+            }
+            return this;
+          }
+
+          public Builder clone() {
+            return create().mergeFrom(buildPartial());
+          }
+
+          public com.google.protobuf.Descriptors.Descriptor
+              getDescriptorForType() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Offer_Operation_Create_descriptor;
+          }
+
+          public org.apache.mesos.v1.Protos.Offer.Operation.Create getDefaultInstanceForType() {
+            return org.apache.mesos.v1.Protos.Offer.Operation.Create.getDefaultInstance();
+          }
+
+          public org.apache.mesos.v1.Protos.Offer.Operation.Create build() {
+            org.apache.mesos.v1.Protos.Offer.Operation.Create result = buildPartial();
+            if (!result.isInitialized()) {
+              throw newUninitializedMessageException(result);
+            }
+            return result;
+          }
+
+          public org.apache.mesos.v1.Protos.Offer.Operation.Create buildPartial() {
+            org.apache.mesos.v1.Protos.Offer.Operation.Create result = new org.apache.mesos.v1.Protos.Offer.Operation.Create(this);
+            int from_bitField0_ = bitField0_;
+            if (volumesBuilder_ == null) {
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                volumes_ = java.util.Collections.unmodifiableList(volumes_);
+                bitField0_ = (bitField0_ & ~0x00000001);
+              }
+              result.volumes_ = volumes_;
+            } else {
+              result.volumes_ = volumesBuilder_.build();
+            }
+            onBuilt();
+            return result;
+          }
+
+          public Builder mergeFrom(com.google.protobuf.Message other) {
+            if (other instanceof org.apache.mesos.v1.Protos.Offer.Operation.Create) {
+              return mergeFrom((org.apache.mesos.v1.Protos.Offer.Operation.Create)other);
+            } else {
+              super.mergeFrom(other);
+              return this;
+            }
+          }
+
+          public Builder mergeFrom(org.apache.mesos.v1.Protos.Offer.Operation.Create other) {
+            if (other == org.apache.mesos.v1.Protos.Offer.Operation.Create.getDefaultInstance()) return this;
+            if (volumesBuilder_ == null) {
+              if (!other.volumes_.isEmpty()) {
+                if (volumes_.isEmpty()) {
+                  volumes_ = other.volumes_;
+                  bitField0_ = (bitField0_ & ~0x00000001);
+                } else {
+                  ensureVolumesIsMutable();
+                  volumes_.addAll(other.volumes_);
+                }
+                onChanged();
+              }
+            } else {
+              if (!other.volumes_.isEmpty()) {
+                if (volumesBuilder_.isEmpty()) {
+                  volumesBuilder_.dispose();
+                  volumesBuilder_ = null;
+                  volumes_ = other.volumes_;
+                  bitField0_ = (bitField0_ & ~0x00000001);
+                  volumesBuilder_ = 
+                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                       getVolumesFieldBuilder() : null;
+                } else {
+                  volumesBuilder_.addAllMessages(other.volumes_);
+                }
+              }
+            }
+            this.mergeUnknownFields(other.getUnknownFields());
+            return this;
+          }
+
+          public final boolean isInitialized() {
+            for (int i = 0; i < getVolumesCount(); i++) {
+              if (!getVolumes(i).isInitialized()) {
+                
+                return false;
+              }
+            }
+            return true;
+          }
+
+          public Builder mergeFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            org.apache.mesos.v1.Protos.Offer.Operation.Create parsedMessage = null;
+            try {
+              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              parsedMessage = (org.apache.mesos.v1.Protos.Offer.Operation.Create) e.getUnfinishedMessage();
+              throw e;
+            } finally {
+              if (parsedMessage != null) {
+                mergeFrom(parsedMessage);
+              }
+            }
+            return this;
+          }
+          private int bitField0_;
+
+          // repeated .mesos.v1.Resource volumes = 1;
+          private java.util.List<org.apache.mesos.v1.Protos.Resource> volumes_ =
+            java.util.Collections.emptyList();
+          private void ensureVolumesIsMutable() {
+            if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+              volumes_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Resource>(volumes_);
+              bitField0_ |= 0x00000001;
+             }
+          }
+
+          private com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder> volumesBuilder_;
+
+          /**
+           * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+           */
+          public java.util.List<org.apache.mesos.v1.Protos.Resource> getVolumesList() {
+            if (volumesBuilder_ == null) {
+              return java.util.Collections.unmodifiableList(volumes_);
+            } else {
+              return volumesBuilder_.getMessageList();
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+           */
+          public int getVolumesCount() {
+            if (volumesBuilder_ == null) {
+              return volumes_.size();
+            } else {
+              return volumesBuilder_.getCount();
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+           */
+          public org.apache.mesos.v1.Protos.Resource getVolumes(int index) {
+            if (volumesBuilder_ == null) {
+              return volumes_.get(index);
+            } else {
+              return volumesBuilder_.getMessage(index);
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+           */
+          public Builder setVolumes(
+              int index, org.apache.mesos.v1.Protos.Resource value) {
+            if (volumesBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureVolumesIsMutable();
+              volumes_.set(index, value);
+              onChanged();
+            } else {
+              volumesBuilder_.setMessage(index, value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+           */
+          public Builder setVolumes(
+              int index, org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+            if (volumesBuilder_ == null) {
+              ensureVolumesIsMutable();
+              volumes_.set(index, builderForValue.build());
+              onChanged();
+            } else {
+              volumesBuilder_.setMessage(index, builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+           */
+          public Builder addVolumes(org.apache.mesos.v1.Protos.Resource value) {
+            if (volumesBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureVolumesIsMutable();
+              volumes_.add(value);
+              onChanged();
+            } else {
+              volumesBuilder_.addMessage(value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+           */
+          public Builder addVolumes(
+              int index, org.apache.mesos.v1.Protos.Resource value) {
+            if (volumesBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureVolumesIsMutable();
+              volumes_.add(index, value);
+              onChanged();
+            } else {
+              volumesBuilder_.addMessage(index, value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+           */
+          public Builder addVolumes(
+              org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+            if (volumesBuilder_ == null) {
+              ensureVolumesIsMutable();
+              volumes_.add(builderForValue.build());
+              onChanged();
+            } else {
+              volumesBuilder_.addMessage(builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+           */
+          public Builder addVolumes(
+              int index, org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+            if (volumesBuilder_ == null) {
+              ensureVolumesIsMutable();
+              volumes_.add(index, builderForValue.build());
+              onChanged();
+            } else {
+              volumesBuilder_.addMessage(index, builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+           */
+          public Builder addAllVolumes(
+              java.lang.Iterable<? extends org.apache.mesos.v1.Protos.Resource> values) {
+            if (volumesBuilder_ == null) {
+              ensureVolumesIsMutable();
+              super.addAll(values, volumes_);
+              onChanged();
+            } else {
+              volumesBuilder_.addAllMessages(values);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+           */
+          public Builder clearVolumes() {
+            if (volumesBuilder_ == null) {
+              volumes_ = java.util.Collections.emptyList();
+              bitField0_ = (bitField0_ & ~0x00000001);
+              onChanged();
+            } else {
+              volumesBuilder_.clear();
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+           */
+          public Builder removeVolumes(int index) {
+            if (volumesBuilder_ == null) {
+              ensureVolumesIsMutable();
+              volumes_.remove(index);
+              onChanged();
+            } else {
+              volumesBuilder_.remove(index);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+           */
+          public org.apache.mesos.v1.Protos.Resource.Builder getVolumesBuilder(
+              int index) {
+            return getVolumesFieldBuilder().getBuilder(index);
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+           */
+          public org.apache.mesos.v1.Protos.ResourceOrBuilder getVolumesOrBuilder(
+              int index) {
+            if (volumesBuilder_ == null) {
+              return volumes_.get(index);  } else {
+              return volumesBuilder_.getMessageOrBuilder(index);
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+           */
+          public java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+               getVolumesOrBuilderList() {
+            if (volumesBuilder_ != null) {
+              return volumesBuilder_.getMessageOrBuilderList();
+            } else {
+              return java.util.Collections.unmodifiableList(volumes_);
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+           */
+          public org.apache.mesos.v1.Protos.Resource.Builder addVolumesBuilder() {
+            return getVolumesFieldBuilder().addBuilder(
+                org.apache.mesos.v1.Protos.Resource.getDefaultInstance());
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+           */
+          public org.apache.mesos.v1.Protos.Resource.Builder addVolumesBuilder(
+              int index) {
+            return getVolumesFieldBuilder().addBuilder(
+                index, org.apache.mesos.v1.Protos.Resource.getDefaultInstance());
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+           */
+          public java.util.List<org.apache.mesos.v1.Protos.Resource.Builder> 
+               getVolumesBuilderList() {
+            return getVolumesFieldBuilder().getBuilderList();
+          }
+          private com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+              getVolumesFieldBuilder() {
+            if (volumesBuilder_ == null) {
+              volumesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                  org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder>(
+                      volumes_,
+                      ((bitField0_ & 0x00000001) == 0x00000001),
+                      getParentForChildren(),
+                      isClean());
+              volumes_ = null;
+            }
+            return volumesBuilder_;
+          }
+
+          // @@protoc_insertion_point(builder_scope:mesos.v1.Offer.Operation.Create)
+        }
+
+        static {
+          defaultInstance = new Create(true);
+          defaultInstance.initFields();
+        }
+
+        // @@protoc_insertion_point(class_scope:mesos.v1.Offer.Operation.Create)
+      }
+
+      public interface DestroyOrBuilder
+          extends com.google.protobuf.MessageOrBuilder {
+
+        // repeated .mesos.v1.Resource volumes = 1;
+        /**
+         * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+         */
+        java.util.List<org.apache.mesos.v1.Protos.Resource> 
+            getVolumesList();
+        /**
+         * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+         */
+        org.apache.mesos.v1.Protos.Resource getVolumes(int index);
+        /**
+         * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+         */
+        int getVolumesCount();
+        /**
+         * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+         */
+        java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+            getVolumesOrBuilderList();
+        /**
+         * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+         */
+        org.apache.mesos.v1.Protos.ResourceOrBuilder getVolumesOrBuilder(
+            int index);
+      }
+      /**
+       * Protobuf type {@code mesos.v1.Offer.Operation.Destroy}
+       */
+      public static final class Destroy extends
+          com.google.protobuf.GeneratedMessage
+          implements DestroyOrBuilder {
+        // Use Destroy.newBuilder() to construct.
+        private Destroy(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+          super(builder);
+          this.unknownFields = builder.getUnknownFields();
+        }
+        private Destroy(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+        private static final Destroy defaultInstance;
+        public static Destroy getDefaultInstance() {
+          return defaultInstance;
+        }
+
+        public Destroy getDefaultInstanceForType() {
+          return defaultInstance;
+        }
+
+        private final com.google.protobuf.UnknownFieldSet unknownFields;
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet
+            getUnknownFields() {
+          return this.unknownFields;
+        }
+        private Destroy(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          initFields();
+          int mutable_bitField0_ = 0;
+          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+              com.google.protobuf.UnknownFieldSet.newBuilder();
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(input, unknownFields,
+                                         extensionRegistry, tag)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 10: {
+                  if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                    volumes_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Resource>();
+                    mutable_bitField0_ |= 0x00000001;
+                  }
+                  volumes_.add(input.readMessage(org.apache.mesos.v1.Protos.Resource.PARSER, extensionRegistry));
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw e.setUnfinishedMessage(this);
+          } catch (java.io.IOException e) {
+            throw new com.google.protobuf.InvalidProtocolBufferException(
+                e.getMessage()).setUnfinishedMessage(this);
+          } finally {
+            if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+              volumes_ = java.util.Collections.unmodifiableList(volumes_);
+            }
+            this.unknownFields = unknownFields.build();
+            makeExtensionsImmutable();
+          }
+        }
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Offer_Operation_Destroy_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Offer_Operation_Destroy_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.Offer.Operation.Destroy.class, org.apache.mesos.v1.Protos.Offer.Operation.Destroy.Builder.class);
+        }
+
+        public static com.google.protobuf.Parser<Destroy> PARSER =
+            new com.google.protobuf.AbstractParser<Destroy>() {
+          public Destroy parsePartialFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return new Destroy(input, extensionRegistry);
+          }
+        };
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<Destroy> getParserForType() {
+          return PARSER;
+        }
+
+        // repeated .mesos.v1.Resource volumes = 1;
+        public static final int VOLUMES_FIELD_NUMBER = 1;
+        private java.util.List<org.apache.mesos.v1.Protos.Resource> volumes_;
+        /**
+         * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.v1.Protos.Resource> getVolumesList() {
+          return volumes_;
+        }
+        /**
+         * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+            getVolumesOrBuilderList() {
+          return volumes_;
+        }
+        /**
+         * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+         */
+        public int getVolumesCount() {
+          return volumes_.size();
+        }
+        /**
+         * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.Resource getVolumes(int index) {
+          return volumes_.get(index);
+        }
+        /**
+         * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.ResourceOrBuilder getVolumesOrBuilder(
+            int index) {
+          return volumes_.get(index);
+        }
+
+        private void initFields() {
+          volumes_ = java.util.Collections.emptyList();
+        }
+        private byte memoizedIsInitialized = -1;
+        public final boolean isInitialized() {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized != -1) return isInitialized == 1;
+
+          for (int i = 0; i < getVolumesCount(); i++) {
+            if (!getVolumes(i).isInitialized()) {
+              memoizedIsInitialized = 0;
+              return false;
+            }
+          }
+          memoizedIsInitialized = 1;
+          return true;
+        }
+
+        public void writeTo(com.google.protobuf.CodedOutputStream output)
+                            throws java.io.IOException {
+          getSerializedSize();
+          for (int i = 0; i < volumes_.size(); i++) {
+            output.writeMessage(1, volumes_.get(i));
+          }
+          getUnknownFields().writeTo(output);
+        }
+
+        private int memoizedSerializedSize = -1;
+        public int getSerializedSize() {
+          int size = memoizedSerializedSize;
+          if (size != -1) return size;
+
+          size = 0;
+          for (int i = 0; i < volumes_.size(); i++) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeMessageSize(1, volumes_.get(i));
+          }
+          size += getUnknownFields().getSerializedSize();
+          memoizedSerializedSize = size;
+          return size;
+        }
+
+        private static final long serialVersionUID = 0L;
+        @java.lang.Override
+        protected java.lang.Object writeReplace()
+            throws java.io.ObjectStreamException {
+          return super.writeReplace();
+        }
+
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Destroy parseFrom(
+            com.google.protobuf.ByteString data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Destroy parseFrom(
+            com.google.protobuf.ByteString data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Destroy parseFrom(byte[] data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Destroy parseFrom(
+            byte[] data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Destroy parseFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Destroy parseFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Destroy parseDelimitedFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Destroy parseDelimitedFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Destroy parseFrom(
+            com.google.protobuf.CodedInputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.Offer.Operation.Destroy parseFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+
+        public static Builder newBuilder() { return Builder.create(); }
+        public Builder newBuilderForType() { return newBuilder(); }
+        public static Builder newBuilder(org.apache.mesos.v1.Protos.Offer.Operation.Destroy prototype) {
+          return newBuilder().mergeFrom(prototype);
+        }
+        public Builder toBuilder() { return newBuilder(this); }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          Builder builder = new Builder(parent);
+          return builder;
+        }
+        /**
+         * Protobuf type {@code mesos.v1.Offer.Operation.Destroy}
+         */
+        public static final class Builder extends
+            com.google.protobuf.GeneratedMessage.Builder<Builder>
+           implements org.apache.mesos.v1.Protos.Offer.Operation.DestroyOrBuilder {
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Offer_Operation_Destroy_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Offer_Operation_Destroy_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.v1.Protos.Offer.Operation.Destroy.class, org.apache.mesos.v1.Protos.Offer.Operation.Destroy.Builder.class);
+          }
+
+          // Construct using org.apache.mesos.v1.Protos.Offer.Operation.Destroy.newBuilder()
+          private Builder() {
+            maybeForceBuilderInitialization();
+          }
+
+          private Builder(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            super(parent);
+            maybeForceBuilderInitialization();
+          }
+          private void maybeForceBuilderInitialization() {
+            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+              getVolumesFieldBuilder();
+            }
+          }
+          private static Builder create() {
+            return new Builder();
+          }
+
+          public Builder clear() {
+            super.clear();
+            if (volumesBuilder_ == null) {
+              volumes_ = java.util.Collections.emptyList();
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              volumesBuilder_.clear();
+            }
+            return this;
+          }
+
+          public Builder clone() {
+            return create().mergeFrom(buildPartial());
+          }
+
+          public com.google.protobuf.Descriptors.Descriptor
+              getDescriptorForType() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Offer_Operation_Destroy_descriptor;
+          }
+
+          public org.apache.mesos.v1.Protos.Offer.Operation.Destroy getDefaultInstanceForType() {
+            return org.apache.mesos.v1.Protos.Offer.Operation.Destroy.getDefaultInstance();
+          }
+
+          public org.apache.mesos.v1.Protos.Offer.Operation.Destroy build() {
+            org.apache.mesos.v1.Protos.Offer.Operation.Destroy result = buildPartial();
+            if (!result.isInitialized()) {
+              throw newUninitializedMessageException(result);
+            }
+            return result;
+          }
+
+          public org.apache.mesos.v1.Protos.Offer.Operation.Destroy buildPartial() {
+            org.apache.mesos.v1.Protos.Offer.Operation.Destroy result = new org.apache.mesos.v1.Protos.Offer.Operation.Destroy(this);
+            int from_bitField0_ = bitField0_;
+            if (volumesBuilder_ == null) {
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                volumes_ = java.util.Collections.unmodifiableList(volumes_);
+                bitField0_ = (bitField0_ & ~0x00000001);
+              }
+              result.volumes_ = volumes_;
+            } else {
+              result.volumes_ = volumesBuilder_.build();
+            }
+            onBuilt();
+            return result;
+          }
+
+          public Builder mergeFrom(com.google.protobuf.Message other) {
+            if (other instanceof org.apache.mesos.v1.Protos.Offer.Operation.Destroy) {
+              return mergeFrom((org.apache.mesos.v1.Protos.Offer.Operation.Destroy)other);
+            } else {
+              super.mergeFrom(other);
+              return this;
+            }
+          }
+
+          public Builder mergeFrom(org.apache.mesos.v1.Protos.Offer.Operation.Destroy other) {
+            if (other == org.apache.mesos.v1.Protos.Offer.Operation.Destroy.getDefaultInstance()) return this;
+            if (volumesBuilder_ == null) {
+              if (!other.volumes_.isEmpty()) {
+                if (volumes_.isEmpty()) {
+                  volumes_ = other.volumes_;
+                  bitField0_ = (bitField0_ & ~0x00000001);
+                } else {
+                  ensureVolumesIsMutable();
+                  volumes_.addAll(other.volumes_);
+                }
+                onChanged();
+              }
+            } else {
+              if (!other.volumes_.isEmpty()) {
+                if (volumesBuilder_.isEmpty()) {
+                  volumesBuilder_.dispose();
+                  volumesBuilder_ = null;
+                  volumes_ = other.volumes_;
+                  bitField0_ = (bitField0_ & ~0x00000001);
+                  volumesBuilder_ = 
+                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                       getVolumesFieldBuilder() : null;
+                } else {
+                  volumesBuilder_.addAllMessages(other.volumes_);
+                }
+              }
+            }
+            this.mergeUnknownFields(other.getUnknownFields());
+            return this;
+          }
+
+          public final boolean isInitialized() {
+            for (int i = 0; i < getVolumesCount(); i++) {
+              if (!getVolumes(i).isInitialized()) {
+                
+                return false;
+              }
+            }
+            return true;
+          }
+
+          public Builder mergeFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            org.apache.mesos.v1.Protos.Offer.Operation.Destroy parsedMessage = null;
+            try {
+              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              parsedMessage = (org.apache.mesos.v1.Protos.Offer.Operation.Destroy) e.getUnfinishedMessage();
+              throw e;
+            } finally {
+              if (parsedMessage != null) {
+                mergeFrom(parsedMessage);
+              }
+            }
+            return this;
+          }
+          private int bitField0_;
+
+          // repeated .mesos.v1.Resource volumes = 1;
+          private java.util.List<org.apache.mesos.v1.Protos.Resource> volumes_ =
+            java.util.Collections.emptyList();
+          private void ensureVolumesIsMutable() {
+            if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+              volumes_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Resource>(volumes_);
+              bitField0_ |= 0x00000001;
+             }
+          }
+
+          private com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder> volumesBuilder_;
+
+          /**
+           * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+           */
+          public java.util.List<org.apache.mesos.v1.Protos.Resource> getVolumesList() {
+            if (volumesBuilder_ == null) {
+              return java.util.Collections.unmodifiableList(volumes_);
+            } else {
+              return volumesBuilder_.getMessageList();
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+           */
+          public int getVolumesCount() {
+            if (volumesBuilder_ == null) {
+              return volumes_.size();
+            } else {
+              return volumesBuilder_.getCount();
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+           */
+          public org.apache.mesos.v1.Protos.Resource getVolumes(int index) {
+            if (volumesBuilder_ == null) {
+              return volumes_.get(index);
+            } else {
+              return volumesBuilder_.getMessage(index);
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+           */
+          public Builder setVolumes(
+              int index, org.apache.mesos.v1.Protos.Resource value) {
+            if (volumesBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureVolumesIsMutable();
+              volumes_.set(index, value);
+              onChanged();
+            } else {
+              volumesBuilder_.setMessage(index, value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+           */
+          public Builder setVolumes(
+              int index, org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+            if (volumesBuilder_ == null) {
+              ensureVolumesIsMutable();
+              volumes_.set(index, builderForValue.build());
+              onChanged();
+            } else {
+              volumesBuilder_.setMessage(index, builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+           */
+          public Builder addVolumes(org.apache.mesos.v1.Protos.Resource value) {
+            if (volumesBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureVolumesIsMutable();
+              volumes_.add(value);
+              onChanged();
+            } else {
+              volumesBuilder_.addMessage(value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+           */
+          public Builder addVolumes(
+              int index, org.apache.mesos.v1.Protos.Resource value) {
+            if (volumesBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureVolumesIsMutable();
+              volumes_.add(index, value);
+              onChanged();
+            } else {
+              volumesBuilder_.addMessage(index, value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+           */
+          public Builder addVolumes(
+              org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+            if (volumesBuilder_ == null) {
+              ensureVolumesIsMutable();
+              volumes_.add(builderForValue.build());
+              onChanged();
+            } else {
+              volumesBuilder_.addMessage(builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+           */
+          public Builder addVolumes(
+              int index, org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+            if (volumesBuilder_ == null) {
+              ensureVolumesIsMutable();
+              volumes_.add(index, builderForValue.build());
+              onChanged();
+            } else {
+              volumesBuilder_.addMessage(index, builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+           */
+          public Builder addAllVolumes(
+              java.lang.Iterable<? extends org.apache.mesos.v1.Protos.Resource> values) {
+            if (volumesBuilder_ == null) {
+              ensureVolumesIsMutable();
+              super.addAll(values, volumes_);
+              onChanged();
+            } else {
+              volumesBuilder_.addAllMessages(values);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+           */
+          public Builder clearVolumes() {
+            if (volumesBuilder_ == null) {
+              volumes_ = java.util.Collections.emptyList();
+              bitField0_ = (bitField0_ & ~0x00000001);
+              onChanged();
+            } else {
+              volumesBuilder_.clear();
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+           */
+          public Builder removeVolumes(int index) {
+            if (volumesBuilder_ == null) {
+              ensureVolumesIsMutable();
+              volumes_.remove(index);
+              onChanged();
+            } else {
+              volumesBuilder_.remove(index);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+           */
+          public org.apache.mesos.v1.Protos.Resource.Builder getVolumesBuilder(
+              int index) {
+            return getVolumesFieldBuilder().getBuilder(index);
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+           */
+          public org.apache.mesos.v1.Protos.ResourceOrBuilder getVolumesOrBuilder(
+              int index) {
+            if (volumesBuilder_ == null) {
+              return volumes_.get(index);  } else {
+              return volumesBuilder_.getMessageOrBuilder(index);
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+           */
+          public java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+               getVolumesOrBuilderList() {
+            if (volumesBuilder_ != null) {
+              return volumesBuilder_.getMessageOrBuilderList();
+            } else {
+              return java.util.Collections.unmodifiableList(volumes_);
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+           */
+          public org.apache.mesos.v1.Protos.Resource.Builder addVolumesBuilder() {
+            return getVolumesFieldBuilder().addBuilder(
+                org.apache.mesos.v1.Protos.Resource.getDefaultInstance());
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+           */
+          public org.apache.mesos.v1.Protos.Resource.Builder addVolumesBuilder(
+              int index) {
+            return getVolumesFieldBuilder().addBuilder(
+                index, org.apache.mesos.v1.Protos.Resource.getDefaultInstance());
+          }
+          /**
+           * <code>repeated .mesos.v1.Resource volumes = 1;</code>
+           */
+          public java.util.List<org.apache.mesos.v1.Protos.Resource.Builder> 
+               getVolumesBuilderList() {
+            return getVolumesFieldBuilder().getBuilderList();
+          }
+          private com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+              getVolumesFieldBuilder() {
+            if (volumesBuilder_ == null) {
+              volumesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                  org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder>(
+                      volumes_,
+                      ((bitField0_ & 0x00000001) == 0x00000001),
+                      getParentForChildren(),
+                      isClean());
+              volumes_ = null;
+            }
+            return volumesBuilder_;
+          }
+
+          // @@protoc_insertion_point(builder_scope:mesos.v1.Offer.Operation.Destroy)
+        }
+
+        static {
+          defaultInstance = new Destroy(true);
+          defaultInstance.initFields();
+        }
+
+        // @@protoc_insertion_point(class_scope:mesos.v1.Offer.Operation.Destroy)
+      }
+
+      private int bitField0_;
+      // optional .mesos.v1.Offer.Operation.Type type = 1;
+      public static final int TYPE_FIELD_NUMBER = 1;
+      private org.apache.mesos.v1.Protos.Offer.Operation.Type type_;
+      /**
+       * <code>optional .mesos.v1.Offer.Operation.Type type = 1;</code>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.v1.Offer.Operation.Type type = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.Offer.Operation.Type getType() {
+        return type_;
+      }
+
+      // optional .mesos.v1.Offer.Operation.Launch launch = 2;
+      public static final int LAUNCH_FIELD_NUMBER = 2;
+      private org.apache.mesos.v1.Protos.Offer.Operation.Launch launch_;
+      /**
+       * <code>optional .mesos.v1.Offer.Operation.Launch launch = 2;</code>
+       */
+      public boolean hasLaunch() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.v1.Offer.Operation.Launch launch = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.Offer.Operation.Launch getLaunch() {
+        return launch_;
+      }
+      /**
+       * <code>optional .mesos.v1.Offer.Operation.Launch launch = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.Offer.Operation.LaunchOrBuilder getLaunchOrBuilder() {
+        return launch_;
+      }
+
+      // optional .mesos.v1.Offer.Operation.LaunchGroup launch_group = 7;
+      public static final int LAUNCH_GROUP_FIELD_NUMBER = 7;
+      private org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup launchGroup_;
+      /**
+       * <code>optional .mesos.v1.Offer.Operation.LaunchGroup launch_group = 7;</code>
+       */
+      public boolean hasLaunchGroup() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.v1.Offer.Operation.LaunchGroup launch_group = 7;</code>
+       */
+      public org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup getLaunchGroup() {
+        return launchGroup_;
+      }
+      /**
+       * <code>optional .mesos.v1.Offer.Operation.LaunchGroup launch_group = 7;</code>
+       */
+      public org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroupOrBuilder getLaunchGroupOrBuilder() {
+        return launchGroup_;
+      }
+
+      // optional .mesos.v1.Offer.Operation.Reserve reserve = 3;
+      public static final int RESERVE_FIELD_NUMBER = 3;
+      private org.apache.mesos.v1.Protos.Offer.Operation.Reserve reserve_;
+      /**
+       * <code>optional .mesos.v1.Offer.Operation.Reserve reserve = 3;</code>
+       */
+      public boolean hasReserve() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.v1.Offer.Operation.Reserve reserve = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.Offer.Operation.Reserve getReserve() {
+        return reserve_;
+      }
+      /**
+       * <code>optional .mesos.v1.Offer.Operation.Reserve reserve = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.Offer.Operation.ReserveOrBuilder getReserveOrBuilder() {
+        return reserve_;
+      }
+
+      // optional .mesos.v1.Offer.Operation.Unreserve unreserve = 4;
+      public static final int UNRESERVE_FIELD_NUMBER = 4;
+      private org.apache.mesos.v1.Protos.Offer.Operation.Unreserve unreserve_;
+      /**
+       * <code>optional .mesos.v1.Offer.Operation.Unreserve unreserve = 4;</code>
+       */
+      public boolean hasUnreserve() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional .mesos.v1.Offer.Operation.Unreserve unreserve = 4;</code>
+       */
+      public org.apache.mesos.v1.Protos.Offer.Operation.Unreserve getUnreserve() {
+        return unreserve_;
+      }
+      /**
+       * <code>optional .mesos.v1.Offer.Operation.Unreserve unreserve = 4;</code>
+       */
+      public org.apache.mesos.v1.Protos.Offer.Operation.UnreserveOrBuilder getUnreserveOrBuilder() {
+        return unreserve_;
+      }
+
+      // optional .mesos.v1.Offer.Operation.Create create = 5;
+      public static final int CREATE_FIELD_NUMBER = 5;
+      private org.apache.mesos.v1.Protos.Offer.Operation.Create create_;
+      /**
+       * <code>optional .mesos.v1.Offer.Operation.Create create = 5;</code>
+       */
+      public boolean hasCreate() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional .mesos.v1.Offer.Operation.Create create = 5;</code>
+       */
+      public org.apache.mesos.v1.Protos.Offer.Operation.Create getCreate() {
+        return create_;
+      }
+      /**
+       * <code>optional .mesos.v1.Offer.Operation.Create create = 5;</code>
+       */
+      public org.apache.mesos.v1.Protos.Offer.Operation.CreateOrBuilder getCreateOrBuilder() {
+        return create_;
+      }
+
+      // optional .mesos.v1.Offer.Operation.Destroy destroy = 6;
+      public static final int DESTROY_FIELD_NUMBER = 6;
+      private org.apache.mesos.v1.Protos.Offer.Operation.Destroy destroy_;
+      /**
+       * <code>optional .mesos.v1.Offer.Operation.Destroy destroy = 6;</code>
+       */
+      public boolean hasDestroy() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional .mesos.v1.Offer.Operation.Destroy destroy = 6;</code>
+       */
+      public org.apache.mesos.v1.Protos.Offer.Operation.Destroy getDestroy() {
+        return destroy_;
+      }
+      /**
+       * <code>optional .mesos.v1.Offer.Operation.Destroy destroy = 6;</code>
+       */
+      public org.apache.mesos.v1.Protos.Offer.Operation.DestroyOrBuilder getDestroyOrBuilder() {
+        return destroy_;
+      }
+
+      private void initFields() {
+        type_ = org.apache.mesos.v1.Protos.Offer.Operation.Type.UNKNOWN;
+        launch_ = org.apache.mesos.v1.Protos.Offer.Operation.Launch.getDefaultInstance();
+        launchGroup_ = org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup.getDefaultInstance();
+        reserve_ = org.apache.mesos.v1.Protos.Offer.Operation.Reserve.getDefaultInstance();
+        unreserve_ = org.apache.mesos.v1.Protos.Offer.Operation.Unreserve.getDefaultInstance();
+        create_ = org.apache.mesos.v1.Protos.Offer.Operation.Create.getDefaultInstance();
+        destroy_ = org.apache.mesos.v1.Protos.Offer.Operation.Destroy.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (hasLaunch()) {
+          if (!getLaunch().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        if (hasLaunchGroup()) {
+          if (!getLaunchGroup().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        if (hasReserve()) {
+          if (!getReserve().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        if (hasUnreserve()) {
+          if (!getUnreserve().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        if (hasCreate()) {
+          if (!getCreate().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        if (hasDestroy()) {
+          if (!getDestroy().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeEnum(1, type_.getNumber());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeMessage(2, launch_);
+        }
+        if (((bitField0_ & 0x00000008) == 0x00000008)) {
+          output.writeMessage(3, reserve_);
+        }
+        if (((bitField0_ & 0x00000010) == 0x00000010)) {
+          output.writeMessage(4, unreserve_);
+        }
+        if (((bitField0_ & 0x00000020) == 0x00000020)) {
+          output.writeMessage(5, create_);
+        }
+        if (((bitField0_ & 0x00000040) == 0x00000040)) {
+          output.writeMessage(6, destroy_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeMessage(7, launchGroup_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeEnumSize(1, type_.getNumber());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(2, launch_);
+        }
+        if (((bitField0_ & 0x00000008) == 0x00000008)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(3, reserve_);
+        }
+        if (((bitField0_ & 0x00000010) == 0x00000010)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(4, unreserve_);
+        }
+        if (((bitField0_ & 0x00000020) == 0x00000020)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(5, create_);
+        }
+        if (((bitField0_ & 0x00000040) == 0x00000040)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(6, destroy_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(7, launchGroup_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.Protos.Offer.Operation parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.Offer.Operation parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Offer.Operation parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.Offer.Operation parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Offer.Operation parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Offer.Operation parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Offer.Operation parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Offer.Operation parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Offer.Operation parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Offer.Operation parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.Protos.Offer.Operation prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.Offer.Operation}
+       *
+       * <pre>
+       * Defines an operation that can be performed against offers.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.Protos.Offer.OperationOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Offer_Operation_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Offer_Operation_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.Offer.Operation.class, org.apache.mesos.v1.Protos.Offer.Operation.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.Protos.Offer.Operation.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getLaunchFieldBuilder();
+            getLaunchGroupFieldBuilder();
+            getReserveFieldBuilder();
+            getUnreserveFieldBuilder();
+            getCreateFieldBuilder();
+            getDestroyFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          type_ = org.apache.mesos.v1.Protos.Offer.Operation.Type.UNKNOWN;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          if (launchBuilder_ == null) {
+            launch_ = org.apache.mesos.v1.Protos.Offer.Operation.Launch.getDefaultInstance();
+          } else {
+            launchBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          if (launchGroupBuilder_ == null) {
+            launchGroup_ = org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup.getDefaultInstance();
+          } else {
+            launchGroupBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
+          if (reserveBuilder_ == null) {
+            reserve_ = org.apache.mesos.v1.Protos.Offer.Operation.Reserve.getDefaultInstance();
+          } else {
+            reserveBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000008);
+          if (unreserveBuilder_ == null) {
+            unreserve_ = org.apache.mesos.v1.Protos.Offer.Operation.Unreserve.getDefaultInstance();
+          } else {
+            unreserveBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000010);
+          if (createBuilder_ == null) {
+            create_ = org.apache.mesos.v1.Protos.Offer.Operation.Create.getDefaultInstance();
+          } else {
+            createBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000020);
+          if (destroyBuilder_ == null) {
+            destroy_ = org.apache.mesos.v1.Protos.Offer.Operation.Destroy.getDefaultInstance();
+          } else {
+            destroyBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000040);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Offer_Operation_descriptor;
+        }
+
+        public org.apache.mesos.v1.Protos.Offer.Operation getDefaultInstanceForType() {
+          return org.apache.mesos.v1.Protos.Offer.Operation.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.Protos.Offer.Operation build() {
+          org.apache.mesos.v1.Protos.Offer.Operation result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.Protos.Offer.Operation buildPartial() {
+          org.apache.mesos.v1.Protos.Offer.Operation result = new org.apache.mesos.v1.Protos.Offer.Operation(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.type_ = type_;
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          if (launchBuilder_ == null) {
+            result.launch_ = launch_;
+          } else {
+            result.launch_ = launchBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          if (launchGroupBuilder_ == null) {
+            result.launchGroup_ = launchGroup_;
+          } else {
+            result.launchGroup_ = launchGroupBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+            to_bitField0_ |= 0x00000008;
+          }
+          if (reserveBuilder_ == null) {
+            result.reserve_ = reserve_;
+          } else {
+            result.reserve_ = reserveBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+            to_bitField0_ |= 0x00000010;
+          }
+          if (unreserveBuilder_ == null) {
+            result.unreserve_ = unreserve_;
+          } else {
+            result.unreserve_ = unreserveBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+            to_bitField0_ |= 0x00000020;
+          }
+          if (createBuilder_ == null) {
+            result.create_ = create_;
+          } else {
+            result.create_ = createBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+            to_bitField0_ |= 0x00000040;
+          }
+          if (destroyBuilder_ == null) {
+            result.destroy_ = destroy_;
+          } else {
+            result.destroy_ = destroyBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.Protos.Offer.Operation) {
+            return mergeFrom((org.apache.mesos.v1.Protos.Offer.Operation)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.Protos.Offer.Operation other) {
+          if (other == org.apache.mesos.v1.Protos.Offer.Operation.getDefaultInstance()) return this;
+          if (other.hasType()) {
+            setType(other.getType());
+          }
+          if (other.hasLaunch()) {
+            mergeLaunch(other.getLaunch());
+          }
+          if (other.hasLaunchGroup()) {
+            mergeLaunchGroup(other.getLaunchGroup());
+          }
+          if (other.hasReserve()) {
+            mergeReserve(other.getReserve());
+          }
+          if (other.hasUnreserve()) {
+            mergeUnreserve(other.getUnreserve());
+          }
+          if (other.hasCreate()) {
+            mergeCreate(other.getCreate());
+          }
+          if (other.hasDestroy()) {
+            mergeDestroy(other.getDestroy());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (hasLaunch()) {
+            if (!getLaunch().isInitialized()) {
+              
+              return false;
+            }
+          }
+          if (hasLaunchGroup()) {
+            if (!getLaunchGroup().isInitialized()) {
+              
+              return false;
+            }
+          }
+          if (hasReserve()) {
+            if (!getReserve().isInitialized()) {
+              
+              return false;
+            }
+          }
+          if (hasUnreserve()) {
+            if (!getUnreserve().isInitialized()) {
+              
+              return false;
+            }
+          }
+          if (hasCreate()) {
+            if (!getCreate().isInitialized()) {
+              
+              return false;
+            }
+          }
+          if (hasDestroy()) {
+            if (!getDestroy().isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.Protos.Offer.Operation parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.Protos.Offer.Operation) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // optional .mesos.v1.Offer.Operation.Type type = 1;
+        private org.apache.mesos.v1.Protos.Offer.Operation.Type type_ = org.apache.mesos.v1.Protos.Offer.Operation.Type.UNKNOWN;
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Type type = 1;</code>
+         */
+        public boolean hasType() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Type type = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.Offer.Operation.Type getType() {
+          return type_;
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Type type = 1;</code>
+         */
+        public Builder setType(org.apache.mesos.v1.Protos.Offer.Operation.Type value) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          bitField0_ |= 0x00000001;
+          type_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Type type = 1;</code>
+         */
+        public Builder clearType() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          type_ = org.apache.mesos.v1.Protos.Offer.Operation.Type.UNKNOWN;
+          onChanged();
+          return this;
+        }
+
+        // optional .mesos.v1.Offer.Operation.Launch launch = 2;
+        private org.apache.mesos.v1.Protos.Offer.Operation.Launch launch_ = org.apache.mesos.v1.Protos.Offer.Operation.Launch.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Offer.Operation.Launch, org.apache.mesos.v1.Protos.Offer.Operation.Launch.Builder, org.apache.mesos.v1.Protos.Offer.Operation.LaunchOrBuilder> launchBuilder_;
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Launch launch = 2;</code>
+         */
+        public boolean hasLaunch() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Launch launch = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.Offer.Operation.Launch getLaunch() {
+          if (launchBuilder_ == null) {
+            return launch_;
+          } else {
+            return launchBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Launch launch = 2;</code>
+         */
+        public Builder setLaunch(org.apache.mesos.v1.Protos.Offer.Operation.Launch value) {
+          if (launchBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            launch_ = value;
+            onChanged();
+          } else {
+            launchBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Launch launch = 2;</code>
+         */
+        public Builder setLaunch(
+            org.apache.mesos.v1.Protos.Offer.Operation.Launch.Builder builderForValue) {
+          if (launchBuilder_ == null) {
+            launch_ = builderForValue.build();
+            onChanged();
+          } else {
+            launchBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Launch launch = 2;</code>
+         */
+        public Builder mergeLaunch(org.apache.mesos.v1.Protos.Offer.Operation.Launch value) {
+          if (launchBuilder_ == null) {
+            if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                launch_ != org.apache.mesos.v1.Protos.Offer.Operation.Launch.getDefaultInstance()) {
+              launch_ =
+                org.apache.mesos.v1.Protos.Offer.Operation.Launch.newBuilder(launch_).mergeFrom(value).buildPartial();
+            } else {
+              launch_ = value;
+            }
+            onChanged();
+          } else {
+            launchBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Launch launch = 2;</code>
+         */
+        public Builder clearLaunch() {
+          if (launchBuilder_ == null) {
+            launch_ = org.apache.mesos.v1.Protos.Offer.Operation.Launch.getDefaultInstance();
+            onChanged();
+          } else {
+            launchBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Launch launch = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.Offer.Operation.Launch.Builder getLaunchBuilder() {
+          bitField0_ |= 0x00000002;
+          onChanged();
+          return getLaunchFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Launch launch = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.Offer.Operation.LaunchOrBuilder getLaunchOrBuilder() {
+          if (launchBuilder_ != null) {
+            return launchBuilder_.getMessageOrBuilder();
+          } else {
+            return launch_;
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Launch launch = 2;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Offer.Operation.Launch, org.apache.mesos.v1.Protos.Offer.Operation.Launch.Builder, org.apache.mesos.v1.Protos.Offer.Operation.LaunchOrBuilder> 
+            getLaunchFieldBuilder() {
+          if (launchBuilder_ == null) {
+            launchBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.Offer.Operation.Launch, org.apache.mesos.v1.Protos.Offer.Operation.Launch.Builder, org.apache.mesos.v1.Protos.Offer.Operation.LaunchOrBuilder>(
+                    launch_,
+                    getParentForChildren(),
+                    isClean());
+            launch_ = null;
+          }
+          return launchBuilder_;
+        }
+
+        // optional .mesos.v1.Offer.Operation.LaunchGroup launch_group = 7;
+        private org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup launchGroup_ = org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup, org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup.Builder, org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroupOrBuilder> launchGroupBuilder_;
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.LaunchGroup launch_group = 7;</code>
+         */
+        public boolean hasLaunchGroup() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.LaunchGroup launch_group = 7;</code>
+         */
+        public org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup getLaunchGroup() {
+          if (launchGroupBuilder_ == null) {
+            return launchGroup_;
+          } else {
+            return launchGroupBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.LaunchGroup launch_group = 7;</code>
+         */
+        public Builder setLaunchGroup(org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup value) {
+          if (launchGroupBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            launchGroup_ = value;
+            onChanged();
+          } else {
+            launchGroupBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.LaunchGroup launch_group = 7;</code>
+         */
+        public Builder setLaunchGroup(
+            org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup.Builder builderForValue) {
+          if (launchGroupBuilder_ == null) {
+            launchGroup_ = builderForValue.build();
+            onChanged();
+          } else {
+            launchGroupBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.LaunchGroup launch_group = 7;</code>
+         */
+        public Builder mergeLaunchGroup(org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup value) {
+          if (launchGroupBuilder_ == null) {
+            if (((bitField0_ & 0x00000004) == 0x00000004) &&
+                launchGroup_ != org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup.getDefaultInstance()) {
+              launchGroup_ =
+                org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup.newBuilder(launchGroup_).mergeFrom(value).buildPartial();
+            } else {
+              launchGroup_ = value;
+            }
+            onChanged();
+          } else {
+            launchGroupBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.LaunchGroup launch_group = 7;</code>
+         */
+        public Builder clearLaunchGroup() {
+          if (launchGroupBuilder_ == null) {
+            launchGroup_ = org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup.getDefaultInstance();
+            onChanged();
+          } else {
+            launchGroupBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.LaunchGroup launch_group = 7;</code>
+         */
+        public org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup.Builder getLaunchGroupBuilder() {
+          bitField0_ |= 0x00000004;
+          onChanged();
+          return getLaunchGroupFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.LaunchGroup launch_group = 7;</code>
+         */
+        public org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroupOrBuilder getLaunchGroupOrBuilder() {
+          if (launchGroupBuilder_ != null) {
+            return launchGroupBuilder_.getMessageOrBuilder();
+          } else {
+            return launchGroup_;
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.LaunchGroup launch_group = 7;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup, org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup.Builder, org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroupOrBuilder> 
+            getLaunchGroupFieldBuilder() {
+          if (launchGroupBuilder_ == null) {
+            launchGroupBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup, org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroup.Builder, org.apache.mesos.v1.Protos.Offer.Operation.LaunchGroupOrBuilder>(
+                    launchGroup_,
+                    getParentForChildren(),
+                    isClean());
+            launchGroup_ = null;
+          }
+          return launchGroupBuilder_;
+        }
+
+        // optional .mesos.v1.Offer.Operation.Reserve reserve = 3;
+        private org.apache.mesos.v1.Protos.Offer.Operation.Reserve reserve_ = org.apache.mesos.v1.Protos.Offer.Operation.Reserve.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Offer.Operation.Reserve, org.apache.mesos.v1.Protos.Offer.Operation.Reserve.Builder, org.apache.mesos.v1.Protos.Offer.Operation.ReserveOrBuilder> reserveBuilder_;
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Reserve reserve = 3;</code>
+         */
+        public boolean hasReserve() {
+          return ((bitField0_ & 0x00000008) == 0x00000008);
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Reserve reserve = 3;</code>
+         */
+        public org.apache.mesos.v1.Protos.Offer.Operation.Reserve getReserve() {
+          if (reserveBuilder_ == null) {
+            return reserve_;
+          } else {
+            return reserveBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Reserve reserve = 3;</code>
+         */
+        public Builder setReserve(org.apache.mesos.v1.Protos.Offer.Operation.Reserve value) {
+          if (reserveBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            reserve_ = value;
+            onChanged();
+          } else {
+            reserveBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000008;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Reserve reserve = 3;</code>
+         */
+        public Builder setReserve(
+            org.apache.mesos.v1.Protos.Offer.Operation.Reserve.Builder builderForValue) {
+          if (reserveBuilder_ == null) {
+            reserve_ = builderForValue.build();
+            onChanged();
+          } else {
+            reserveBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000008;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Reserve reserve = 3;</code>
+         */
+        public Builder mergeReserve(org.apache.mesos.v1.Protos.Offer.Operation.Reserve value) {
+          if (reserveBuilder_ == null) {
+            if (((bitField0_ & 0x00000008) == 0x00000008) &&
+                reserve_ != org.apache.mesos.v1.Protos.Offer.Operation.Reserve.getDefaultInstance()) {
+              reserve_ =
+                org.apache.mesos.v1.Protos.Offer.Operation.Reserve.newBuilder(reserve_).mergeFrom(value).buildPartial();
+            } else {
+              reserve_ = value;
+            }
+            onChanged();
+          } else {
+            reserveBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000008;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Reserve reserve = 3;</code>
+         */
+        public Builder clearReserve() {
+          if (reserveBuilder_ == null) {
+            reserve_ = org.apache.mesos.v1.Protos.Offer.Operation.Reserve.getDefaultInstance();
+            onChanged();
+          } else {
+            reserveBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000008);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Reserve reserve = 3;</code>
+         */
+        public org.apache.mesos.v1.Protos.Offer.Operation.Reserve.Builder getReserveBuilder() {
+          bitField0_ |= 0x00000008;
+          onChanged();
+          return getReserveFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Reserve reserve = 3;</code>
+         */
+        public org.apache.mesos.v1.Protos.Offer.Operation.ReserveOrBuilder getReserveOrBuilder() {
+          if (reserveBuilder_ != null) {
+            return reserveBuilder_.getMessageOrBuilder();
+          } else {
+            return reserve_;
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Reserve reserve = 3;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Offer.Operation.Reserve, org.apache.mesos.v1.Protos.Offer.Operation.Reserve.Builder, org.apache.mesos.v1.Protos.Offer.Operation.ReserveOrBuilder> 
+            getReserveFieldBuilder() {
+          if (reserveBuilder_ == null) {
+            reserveBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.Offer.Operation.Reserve, org.apache.mesos.v1.Protos.Offer.Operation.Reserve.Builder, org.apache.mesos.v1.Protos.Offer.Operation.ReserveOrBuilder>(
+                    reserve_,
+                    getParentForChildren(),
+                    isClean());
+            reserve_ = null;
+          }
+          return reserveBuilder_;
+        }
+
+        // optional .mesos.v1.Offer.Operation.Unreserve unreserve = 4;
+        private org.apache.mesos.v1.Protos.Offer.Operation.Unreserve unreserve_ = org.apache.mesos.v1.Protos.Offer.Operation.Unreserve.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Offer.Operation.Unreserve, org.apache.mesos.v1.Protos.Offer.Operation.Unreserve.Builder, org.apache.mesos.v1.Protos.Offer.Operation.UnreserveOrBuilder> unreserveBuilder_;
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Unreserve unreserve = 4;</code>
+         */
+        public boolean hasUnreserve() {
+          return ((bitField0_ & 0x00000010) == 0x00000010);
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Unreserve unreserve = 4;</code>
+         */
+        public org.apache.mesos.v1.Protos.Offer.Operation.Unreserve getUnreserve() {
+          if (unreserveBuilder_ == null) {
+            return unreserve_;
+          } else {
+            return unreserveBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Unreserve unreserve = 4;</code>
+         */
+        public Builder setUnreserve(org.apache.mesos.v1.Protos.Offer.Operation.Unreserve value) {
+          if (unreserveBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            unreserve_ = value;
+            onChanged();
+          } else {
+            unreserveBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000010;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Unreserve unreserve = 4;</code>
+         */
+        public Builder setUnreserve(
+            org.apache.mesos.v1.Protos.Offer.Operation.Unreserve.Builder builderForValue) {
+          if (unreserveBuilder_ == null) {
+            unreserve_ = builderForValue.build();
+            onChanged();
+          } else {
+            unreserveBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000010;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Unreserve unreserve = 4;</code>
+         */
+        public Builder mergeUnreserve(org.apache.mesos.v1.Protos.Offer.Operation.Unreserve value) {
+          if (unreserveBuilder_ == null) {
+            if (((bitField0_ & 0x00000010) == 0x00000010) &&
+                unreserve_ != org.apache.mesos.v1.Protos.Offer.Operation.Unreserve.getDefaultInstance()) {
+              unreserve_ =
+                org.apache.mesos.v1.Protos.Offer.Operation.Unreserve.newBuilder(unreserve_).mergeFrom(value).buildPartial();
+            } else {
+              unreserve_ = value;
+            }
+            onChanged();
+          } else {
+            unreserveBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000010;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Unreserve unreserve = 4;</code>
+         */
+        public Builder clearUnreserve() {
+          if (unreserveBuilder_ == null) {
+            unreserve_ = org.apache.mesos.v1.Protos.Offer.Operation.Unreserve.getDefaultInstance();
+            onChanged();
+          } else {
+            unreserveBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000010);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Unreserve unreserve = 4;</code>
+         */
+        public org.apache.mesos.v1.Protos.Offer.Operation.Unreserve.Builder getUnreserveBuilder() {
+          bitField0_ |= 0x00000010;
+          onChanged();
+          return getUnreserveFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Unreserve unreserve = 4;</code>
+         */
+        public org.apache.mesos.v1.Protos.Offer.Operation.UnreserveOrBuilder getUnreserveOrBuilder() {
+          if (unreserveBuilder_ != null) {
+            return unreserveBuilder_.getMessageOrBuilder();
+          } else {
+            return unreserve_;
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Unreserve unreserve = 4;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Offer.Operation.Unreserve, org.apache.mesos.v1.Protos.Offer.Operation.Unreserve.Builder, org.apache.mesos.v1.Protos.Offer.Operation.UnreserveOrBuilder> 
+            getUnreserveFieldBuilder() {
+          if (unreserveBuilder_ == null) {
+            unreserveBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.Offer.Operation.Unreserve, org.apache.mesos.v1.Protos.Offer.Operation.Unreserve.Builder, org.apache.mesos.v1.Protos.Offer.Operation.UnreserveOrBuilder>(
+                    unreserve_,
+                    getParentForChildren(),
+                    isClean());
+            unreserve_ = null;
+          }
+          return unreserveBuilder_;
+        }
+
+        // optional .mesos.v1.Offer.Operation.Create create = 5;
+        private org.apache.mesos.v1.Protos.Offer.Operation.Create create_ = org.apache.mesos.v1.Protos.Offer.Operation.Create.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Offer.Operation.Create, org.apache.mesos.v1.Protos.Offer.Operation.Create.Builder, org.apache.mesos.v1.Protos.Offer.Operation.CreateOrBuilder> createBuilder_;
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Create create = 5;</code>
+         */
+        public boolean hasCreate() {
+          return ((bitField0_ & 0x00000020) == 0x00000020);
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Create create = 5;</code>
+         */
+        public org.apache.mesos.v1.Protos.Offer.Operation.Create getCreate() {
+          if (createBuilder_ == null) {
+            return create_;
+          } else {
+            return createBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Create create = 5;</code>
+         */
+        public Builder setCreate(org.apache.mesos.v1.Protos.Offer.Operation.Create value) {
+          if (createBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            create_ = value;
+            onChanged();
+          } else {
+            createBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000020;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Create create = 5;</code>
+         */
+        public Builder setCreate(
+            org.apache.mesos.v1.Protos.Offer.Operation.Create.Builder builderForValue) {
+          if (createBuilder_ == null) {
+            create_ = builderForValue.build();
+            onChanged();
+          } else {
+            createBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000020;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Create create = 5;</code>
+         */
+        public Builder mergeCreate(org.apache.mesos.v1.Protos.Offer.Operation.Create value) {
+          if (createBuilder_ == null) {
+            if (((bitField0_ & 0x00000020) == 0x00000020) &&
+                create_ != org.apache.mesos.v1.Protos.Offer.Operation.Create.getDefaultInstance()) {
+              create_ =
+                org.apache.mesos.v1.Protos.Offer.Operation.Create.newBuilder(create_).mergeFrom(value).buildPartial();
+            } else {
+              create_ = value;
+            }
+            onChanged();
+          } else {
+            createBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000020;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Create create = 5;</code>
+         */
+        public Builder clearCreate() {
+          if (createBuilder_ == null) {
+            create_ = org.apache.mesos.v1.Protos.Offer.Operation.Create.getDefaultInstance();
+            onChanged();
+          } else {
+            createBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000020);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Create create = 5;</code>
+         */
+        public org.apache.mesos.v1.Protos.Offer.Operation.Create.Builder getCreateBuilder() {
+          bitField0_ |= 0x00000020;
+          onChanged();
+          return getCreateFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Create create = 5;</code>
+         */
+        public org.apache.mesos.v1.Protos.Offer.Operation.CreateOrBuilder getCreateOrBuilder() {
+          if (createBuilder_ != null) {
+            return createBuilder_.getMessageOrBuilder();
+          } else {
+            return create_;
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Create create = 5;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Offer.Operation.Create, org.apache.mesos.v1.Protos.Offer.Operation.Create.Builder, org.apache.mesos.v1.Protos.Offer.Operation.CreateOrBuilder> 
+            getCreateFieldBuilder() {
+          if (createBuilder_ == null) {
+            createBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.Offer.Operation.Create, org.apache.mesos.v1.Protos.Offer.Operation.Create.Builder, org.apache.mesos.v1.Protos.Offer.Operation.CreateOrBuilder>(
+                    create_,
+                    getParentForChildren(),
+                    isClean());
+            create_ = null;
+          }
+          return createBuilder_;
+        }
+
+        // optional .mesos.v1.Offer.Operation.Destroy destroy = 6;
+        private org.apache.mesos.v1.Protos.Offer.Operation.Destroy destroy_ = org.apache.mesos.v1.Protos.Offer.Operation.Destroy.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Offer.Operation.Destroy, org.apache.mesos.v1.Protos.Offer.Operation.Destroy.Builder, org.apache.mesos.v1.Protos.Offer.Operation.DestroyOrBuilder> destroyBuilder_;
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Destroy destroy = 6;</code>
+         */
+        public boolean hasDestroy() {
+          return ((bitField0_ & 0x00000040) == 0x00000040);
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Destroy destroy = 6;</code>
+         */
+        public org.apache.mesos.v1.Protos.Offer.Operation.Destroy getDestroy() {
+          if (destroyBuilder_ == null) {
+            return destroy_;
+          } else {
+            return destroyBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Destroy destroy = 6;</code>
+         */
+        public Builder setDestroy(org.apache.mesos.v1.Protos.Offer.Operation.Destroy value) {
+          if (destroyBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            destroy_ = value;
+            onChanged();
+          } else {
+            destroyBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000040;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Destroy destroy = 6;</code>
+         */
+        public Builder setDestroy(
+            org.apache.mesos.v1.Protos.Offer.Operation.Destroy.Builder builderForValue) {
+          if (destroyBuilder_ == null) {
+            destroy_ = builderForValue.build();
+            onChanged();
+          } else {
+            destroyBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000040;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Destroy destroy = 6;</code>
+         */
+        public Builder mergeDestroy(org.apache.mesos.v1.Protos.Offer.Operation.Destroy value) {
+          if (destroyBuilder_ == null) {
+            if (((bitField0_ & 0x00000040) == 0x00000040) &&
+                destroy_ != org.apache.mesos.v1.Protos.Offer.Operation.Destroy.getDefaultInstance()) {
+              destroy_ =
+                org.apache.mesos.v1.Protos.Offer.Operation.Destroy.newBuilder(destroy_).mergeFrom(value).buildPartial();
+            } else {
+              destroy_ = value;
+            }
+            onChanged();
+          } else {
+            destroyBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000040;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Destroy destroy = 6;</code>
+         */
+        public Builder clearDestroy() {
+          if (destroyBuilder_ == null) {
+            destroy_ = org.apache.mesos.v1.Protos.Offer.Operation.Destroy.getDefaultInstance();
+            onChanged();
+          } else {
+            destroyBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000040);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Destroy destroy = 6;</code>
+         */
+        public org.apache.mesos.v1.Protos.Offer.Operation.Destroy.Builder getDestroyBuilder() {
+          bitField0_ |= 0x00000040;
+          onChanged();
+          return getDestroyFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Destroy destroy = 6;</code>
+         */
+        public org.apache.mesos.v1.Protos.Offer.Operation.DestroyOrBuilder getDestroyOrBuilder() {
+          if (destroyBuilder_ != null) {
+            return destroyBuilder_.getMessageOrBuilder();
+          } else {
+            return destroy_;
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Offer.Operation.Destroy destroy = 6;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Offer.Operation.Destroy, org.apache.mesos.v1.Protos.Offer.Operation.Destroy.Builder, org.apache.mesos.v1.Protos.Offer.Operation.DestroyOrBuilder> 
+            getDestroyFieldBuilder() {
+          if (destroyBuilder_ == null) {
+            destroyBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.Offer.Operation.Destroy, org.apache.mesos.v1.Protos.Offer.Operation.Destroy.Builder, org.apache.mesos.v1.Protos.Offer.Operation.DestroyOrBuilder>(
+                    destroy_,
+                    getParentForChildren(),
+                    isClean());
+            destroy_ = null;
+          }
+          return destroyBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.Offer.Operation)
+      }
+
+      static {
+        defaultInstance = new Operation(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.Offer.Operation)
+    }
+
+    private int bitField0_;
+    // required .mesos.v1.OfferID id = 1;
+    public static final int ID_FIELD_NUMBER = 1;
+    private org.apache.mesos.v1.Protos.OfferID id_;
+    /**
+     * <code>required .mesos.v1.OfferID id = 1;</code>
+     */
+    public boolean hasId() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required .mesos.v1.OfferID id = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.OfferID getId() {
+      return id_;
+    }
+    /**
+     * <code>required .mesos.v1.OfferID id = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.OfferIDOrBuilder getIdOrBuilder() {
+      return id_;
+    }
+
+    // required .mesos.v1.FrameworkID framework_id = 2;
+    public static final int FRAMEWORK_ID_FIELD_NUMBER = 2;
+    private org.apache.mesos.v1.Protos.FrameworkID frameworkId_;
+    /**
+     * <code>required .mesos.v1.FrameworkID framework_id = 2;</code>
+     */
+    public boolean hasFrameworkId() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>required .mesos.v1.FrameworkID framework_id = 2;</code>
+     */
+    public org.apache.mesos.v1.Protos.FrameworkID getFrameworkId() {
+      return frameworkId_;
+    }
+    /**
+     * <code>required .mesos.v1.FrameworkID framework_id = 2;</code>
+     */
+    public org.apache.mesos.v1.Protos.FrameworkIDOrBuilder getFrameworkIdOrBuilder() {
+      return frameworkId_;
+    }
+
+    // required .mesos.v1.AgentID agent_id = 3;
+    public static final int AGENT_ID_FIELD_NUMBER = 3;
+    private org.apache.mesos.v1.Protos.AgentID agentId_;
+    /**
+     * <code>required .mesos.v1.AgentID agent_id = 3;</code>
+     */
+    public boolean hasAgentId() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>required .mesos.v1.AgentID agent_id = 3;</code>
+     */
+    public org.apache.mesos.v1.Protos.AgentID getAgentId() {
+      return agentId_;
+    }
+    /**
+     * <code>required .mesos.v1.AgentID agent_id = 3;</code>
+     */
+    public org.apache.mesos.v1.Protos.AgentIDOrBuilder getAgentIdOrBuilder() {
+      return agentId_;
+    }
+
+    // required string hostname = 4;
+    public static final int HOSTNAME_FIELD_NUMBER = 4;
+    private java.lang.Object hostname_;
+    /**
+     * <code>required string hostname = 4;</code>
+     */
+    public boolean hasHostname() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>required string hostname = 4;</code>
+     */
+    public java.lang.String getHostname() {
+      java.lang.Object ref = hostname_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          hostname_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string hostname = 4;</code>
+     */
+    public com.google.protobuf.ByteString
+        getHostnameBytes() {
+      java.lang.Object ref = hostname_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        hostname_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional .mesos.v1.URL url = 8;
+    public static final int URL_FIELD_NUMBER = 8;
+    private org.apache.mesos.v1.Protos.URL url_;
+    /**
+     * <code>optional .mesos.v1.URL url = 8;</code>
+     *
+     * <pre>
+     * URL for reaching the agent running on the host.
+     * </pre>
+     */
+    public boolean hasUrl() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional .mesos.v1.URL url = 8;</code>
+     *
+     * <pre>
+     * URL for reaching the agent running on the host.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.URL getUrl() {
+      return url_;
+    }
+    /**
+     * <code>optional .mesos.v1.URL url = 8;</code>
+     *
+     * <pre>
+     * URL for reaching the agent running on the host.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.URLOrBuilder getUrlOrBuilder() {
+      return url_;
+    }
+
+    // optional .mesos.v1.DomainInfo domain = 11;
+    public static final int DOMAIN_FIELD_NUMBER = 11;
+    private org.apache.mesos.v1.Protos.DomainInfo domain_;
+    /**
+     * <code>optional .mesos.v1.DomainInfo domain = 11;</code>
+     *
+     * <pre>
+     * The domain of the agent.
+     * </pre>
+     */
+    public boolean hasDomain() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional .mesos.v1.DomainInfo domain = 11;</code>
+     *
+     * <pre>
+     * The domain of the agent.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.DomainInfo getDomain() {
+      return domain_;
+    }
+    /**
+     * <code>optional .mesos.v1.DomainInfo domain = 11;</code>
+     *
+     * <pre>
+     * The domain of the agent.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.DomainInfoOrBuilder getDomainOrBuilder() {
+      return domain_;
+    }
+
+    // repeated .mesos.v1.Resource resources = 5;
+    public static final int RESOURCES_FIELD_NUMBER = 5;
+    private java.util.List<org.apache.mesos.v1.Protos.Resource> resources_;
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 5;</code>
+     */
+    public java.util.List<org.apache.mesos.v1.Protos.Resource> getResourcesList() {
+      return resources_;
+    }
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 5;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+        getResourcesOrBuilderList() {
+      return resources_;
+    }
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 5;</code>
+     */
+    public int getResourcesCount() {
+      return resources_.size();
+    }
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 5;</code>
+     */
+    public org.apache.mesos.v1.Protos.Resource getResources(int index) {
+      return resources_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 5;</code>
+     */
+    public org.apache.mesos.v1.Protos.ResourceOrBuilder getResourcesOrBuilder(
+        int index) {
+      return resources_.get(index);
+    }
+
+    // repeated .mesos.v1.Attribute attributes = 7;
+    public static final int ATTRIBUTES_FIELD_NUMBER = 7;
+    private java.util.List<org.apache.mesos.v1.Protos.Attribute> attributes_;
+    /**
+     * <code>repeated .mesos.v1.Attribute attributes = 7;</code>
+     */
+    public java.util.List<org.apache.mesos.v1.Protos.Attribute> getAttributesList() {
+      return attributes_;
+    }
+    /**
+     * <code>repeated .mesos.v1.Attribute attributes = 7;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.v1.Protos.AttributeOrBuilder> 
+        getAttributesOrBuilderList() {
+      return attributes_;
+    }
+    /**
+     * <code>repeated .mesos.v1.Attribute attributes = 7;</code>
+     */
+    public int getAttributesCount() {
+      return attributes_.size();
+    }
+    /**
+     * <code>repeated .mesos.v1.Attribute attributes = 7;</code>
+     */
+    public org.apache.mesos.v1.Protos.Attribute getAttributes(int index) {
+      return attributes_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.v1.Attribute attributes = 7;</code>
+     */
+    public org.apache.mesos.v1.Protos.AttributeOrBuilder getAttributesOrBuilder(
+        int index) {
+      return attributes_.get(index);
+    }
+
+    // repeated .mesos.v1.ExecutorID executor_ids = 6;
+    public static final int EXECUTOR_IDS_FIELD_NUMBER = 6;
+    private java.util.List<org.apache.mesos.v1.Protos.ExecutorID> executorIds_;
+    /**
+     * <code>repeated .mesos.v1.ExecutorID executor_ids = 6;</code>
+     */
+    public java.util.List<org.apache.mesos.v1.Protos.ExecutorID> getExecutorIdsList() {
+      return executorIds_;
+    }
+    /**
+     * <code>repeated .mesos.v1.ExecutorID executor_ids = 6;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.v1.Protos.ExecutorIDOrBuilder> 
+        getExecutorIdsOrBuilderList() {
+      return executorIds_;
+    }
+    /**
+     * <code>repeated .mesos.v1.ExecutorID executor_ids = 6;</code>
+     */
+    public int getExecutorIdsCount() {
+      return executorIds_.size();
+    }
+    /**
+     * <code>repeated .mesos.v1.ExecutorID executor_ids = 6;</code>
+     */
+    public org.apache.mesos.v1.Protos.ExecutorID getExecutorIds(int index) {
+      return executorIds_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.v1.ExecutorID executor_ids = 6;</code>
+     */
+    public org.apache.mesos.v1.Protos.ExecutorIDOrBuilder getExecutorIdsOrBuilder(
+        int index) {
+      return executorIds_.get(index);
+    }
+
+    // optional .mesos.v1.Unavailability unavailability = 9;
+    public static final int UNAVAILABILITY_FIELD_NUMBER = 9;
+    private org.apache.mesos.v1.Protos.Unavailability unavailability_;
+    /**
+     * <code>optional .mesos.v1.Unavailability unavailability = 9;</code>
+     *
+     * <pre>
+     * Signifies that the resources in this Offer may be unavailable during
+     * the given interval.  Any tasks launched using these resources may be
+     * killed when the interval arrives.  For example, these resources may be
+     * part of a planned maintenance schedule.
+     *
+     * This field only provides information about a planned unavailability.
+     * The unavailability interval may not necessarily start at exactly this
+     * interval, nor last for exactly the duration of this interval.
+     * The unavailability may also be forever!  See comments in
+     * `Unavailability` for more details.
+     * </pre>
+     */
+    public boolean hasUnavailability() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional .mesos.v1.Unavailability unavailability = 9;</code>
+     *
+     * <pre>
+     * Signifies that the resources in this Offer may be unavailable during
+     * the given interval.  Any tasks launched using these resources may be
+     * killed when the interval arrives.  For example, these resources may be
+     * part of a planned maintenance schedule.
+     *
+     * This field only provides information about a planned unavailability.
+     * The unavailability interval may not necessarily start at exactly this
+     * interval, nor last for exactly the duration of this interval.
+     * The unavailability may also be forever!  See comments in
+     * `Unavailability` for more details.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.Unavailability getUnavailability() {
+      return unavailability_;
+    }
+    /**
+     * <code>optional .mesos.v1.Unavailability unavailability = 9;</code>
+     *
+     * <pre>
+     * Signifies that the resources in this Offer may be unavailable during
+     * the given interval.  Any tasks launched using these resources may be
+     * killed when the interval arrives.  For example, these resources may be
+     * part of a planned maintenance schedule.
+     *
+     * This field only provides information about a planned unavailability.
+     * The unavailability interval may not necessarily start at exactly this
+     * interval, nor last for exactly the duration of this interval.
+     * The unavailability may also be forever!  See comments in
+     * `Unavailability` for more details.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.UnavailabilityOrBuilder getUnavailabilityOrBuilder() {
+      return unavailability_;
+    }
+
+    // optional .mesos.v1.Resource.AllocationInfo allocation_info = 10;
+    public static final int ALLOCATION_INFO_FIELD_NUMBER = 10;
+    private org.apache.mesos.v1.Protos.Resource.AllocationInfo allocationInfo_;
+    /**
+     * <code>optional .mesos.v1.Resource.AllocationInfo allocation_info = 10;</code>
+     *
+     * <pre>
+     * An offer represents resources allocated to *one* of the
+     * roles managed by the scheduler. (Therefore, each
+     * `Offer.resources[i].allocation_info` will match the
+     * top level `Offer.allocation_info`).
+     * </pre>
+     */
+    public boolean hasAllocationInfo() {
+      return ((bitField0_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional .mesos.v1.Resource.AllocationInfo allocation_info = 10;</code>
+     *
+     * <pre>
+     * An offer represents resources allocated to *one* of the
+     * roles managed by the scheduler. (Therefore, each
+     * `Offer.resources[i].allocation_info` will match the
+     * top level `Offer.allocation_info`).
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.Resource.AllocationInfo getAllocationInfo() {
+      return allocationInfo_;
+    }
+    /**
+     * <code>optional .mesos.v1.Resource.AllocationInfo allocation_info = 10;</code>
+     *
+     * <pre>
+     * An offer represents resources allocated to *one* of the
+     * roles managed by the scheduler. (Therefore, each
+     * `Offer.resources[i].allocation_info` will match the
+     * top level `Offer.allocation_info`).
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.Resource.AllocationInfoOrBuilder getAllocationInfoOrBuilder() {
+      return allocationInfo_;
+    }
+
+    private void initFields() {
+      id_ = org.apache.mesos.v1.Protos.OfferID.getDefaultInstance();
+      frameworkId_ = org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance();
+      agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+      hostname_ = "";
+      url_ = org.apache.mesos.v1.Protos.URL.getDefaultInstance();
+      domain_ = org.apache.mesos.v1.Protos.DomainInfo.getDefaultInstance();
+      resources_ = java.util.Collections.emptyList();
+      attributes_ = java.util.Collections.emptyList();
+      executorIds_ = java.util.Collections.emptyList();
+      unavailability_ = org.apache.mesos.v1.Protos.Unavailability.getDefaultInstance();
+      allocationInfo_ = org.apache.mesos.v1.Protos.Resource.AllocationInfo.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasId()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasFrameworkId()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasAgentId()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasHostname()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!getId().isInitialized()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!getFrameworkId().isInitialized()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!getAgentId().isInitialized()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (hasUrl()) {
+        if (!getUrl().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasDomain()) {
+        if (!getDomain().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      for (int i = 0; i < getResourcesCount(); i++) {
+        if (!getResources(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      for (int i = 0; i < getAttributesCount(); i++) {
+        if (!getAttributes(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      for (int i = 0; i < getExecutorIdsCount(); i++) {
+        if (!getExecutorIds(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasUnavailability()) {
+        if (!getUnavailability().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeMessage(1, id_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(2, frameworkId_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeMessage(3, agentId_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeBytes(4, getHostnameBytes());
+      }
+      for (int i = 0; i < resources_.size(); i++) {
+        output.writeMessage(5, resources_.get(i));
+      }
+      for (int i = 0; i < executorIds_.size(); i++) {
+        output.writeMessage(6, executorIds_.get(i));
+      }
+      for (int i = 0; i < attributes_.size(); i++) {
+        output.writeMessage(7, attributes_.get(i));
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeMessage(8, url_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeMessage(9, unavailability_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        output.writeMessage(10, allocationInfo_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeMessage(11, domain_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, id_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, frameworkId_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, agentId_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(4, getHostnameBytes());
+      }
+      for (int i = 0; i < resources_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(5, resources_.get(i));
+      }
+      for (int i = 0; i < executorIds_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(6, executorIds_.get(i));
+      }
+      for (int i = 0; i < attributes_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(7, attributes_.get(i));
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(8, url_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(9, unavailability_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(10, allocationInfo_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(11, domain_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.Offer parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Offer parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Offer parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Offer parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Offer parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Offer parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Offer parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Offer parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Offer parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Offer parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.Offer prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.Offer}
+     *
+     * <pre>
+     **
+     * Describes some resources available on an agent. An offer only
+     * contains resources from a single agent.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.OfferOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Offer_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Offer_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.Offer.class, org.apache.mesos.v1.Protos.Offer.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.Offer.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getIdFieldBuilder();
+          getFrameworkIdFieldBuilder();
+          getAgentIdFieldBuilder();
+          getUrlFieldBuilder();
+          getDomainFieldBuilder();
+          getResourcesFieldBuilder();
+          getAttributesFieldBuilder();
+          getExecutorIdsFieldBuilder();
+          getUnavailabilityFieldBuilder();
+          getAllocationInfoFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (idBuilder_ == null) {
+          id_ = org.apache.mesos.v1.Protos.OfferID.getDefaultInstance();
+        } else {
+          idBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (frameworkIdBuilder_ == null) {
+          frameworkId_ = org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance();
+        } else {
+          frameworkIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        if (agentIdBuilder_ == null) {
+          agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+        } else {
+          agentIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        hostname_ = "";
+        bitField0_ = (bitField0_ & ~0x00000008);
+        if (urlBuilder_ == null) {
+          url_ = org.apache.mesos.v1.Protos.URL.getDefaultInstance();
+        } else {
+          urlBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        if (domainBuilder_ == null) {
+          domain_ = org.apache.mesos.v1.Protos.DomainInfo.getDefaultInstance();
+        } else {
+          domainBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
+        if (resourcesBuilder_ == null) {
+          resources_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000040);
+        } else {
+          resourcesBuilder_.clear();
+        }
+        if (attributesBuilder_ == null) {
+          attributes_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000080);
+        } else {
+          attributesBuilder_.clear();
+        }
+        if (executorIdsBuilder_ == null) {
+          executorIds_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000100);
+        } else {
+          executorIdsBuilder_.clear();
+        }
+        if (unavailabilityBuilder_ == null) {
+          unavailability_ = org.apache.mesos.v1.Protos.Unavailability.getDefaultInstance();
+        } else {
+          unavailabilityBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000200);
+        if (allocationInfoBuilder_ == null) {
+          allocationInfo_ = org.apache.mesos.v1.Protos.Resource.AllocationInfo.getDefaultInstance();
+        } else {
+          allocationInfoBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000400);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Offer_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.Offer getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.Offer.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.Offer build() {
+        org.apache.mesos.v1.Protos.Offer result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.Offer buildPartial() {
+        org.apache.mesos.v1.Protos.Offer result = new org.apache.mesos.v1.Protos.Offer(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        if (idBuilder_ == null) {
+          result.id_ = id_;
+        } else {
+          result.id_ = idBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (frameworkIdBuilder_ == null) {
+          result.frameworkId_ = frameworkId_;
+        } else {
+          result.frameworkId_ = frameworkIdBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        if (agentIdBuilder_ == null) {
+          result.agentId_ = agentId_;
+        } else {
+          result.agentId_ = agentIdBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.hostname_ = hostname_;
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        if (urlBuilder_ == null) {
+          result.url_ = url_;
+        } else {
+          result.url_ = urlBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        if (domainBuilder_ == null) {
+          result.domain_ = domain_;
+        } else {
+          result.domain_ = domainBuilder_.build();
+        }
+        if (resourcesBuilder_ == null) {
+          if (((bitField0_ & 0x00000040) == 0x00000040)) {
+            resources_ = java.util.Collections.unmodifiableList(resources_);
+            bitField0_ = (bitField0_ & ~0x00000040);
+          }
+          result.resources_ = resources_;
+        } else {
+          result.resources_ = resourcesBuilder_.build();
+        }
+        if (attributesBuilder_ == null) {
+          if (((bitField0_ & 0x00000080) == 0x00000080)) {
+            attributes_ = java.util.Collections.unmodifiableList(attributes_);
+            bitField0_ = (bitField0_ & ~0x00000080);
+          }
+          result.attributes_ = attributes_;
+        } else {
+          result.attributes_ = attributesBuilder_.build();
+        }
+        if (executorIdsBuilder_ == null) {
+          if (((bitField0_ & 0x00000100) == 0x00000100)) {
+            executorIds_ = java.util.Collections.unmodifiableList(executorIds_);
+            bitField0_ = (bitField0_ & ~0x00000100);
+          }
+          result.executorIds_ = executorIds_;
+        } else {
+          result.executorIds_ = executorIdsBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        if (unavailabilityBuilder_ == null) {
+          result.unavailability_ = unavailability_;
+        } else {
+          result.unavailability_ = unavailabilityBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
+          to_bitField0_ |= 0x00000080;
+        }
+        if (allocationInfoBuilder_ == null) {
+          result.allocationInfo_ = allocationInfo_;
+        } else {
+          result.allocationInfo_ = allocationInfoBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.Offer) {
+          return mergeFrom((org.apache.mesos.v1.Protos.Offer)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.Offer other) {
+        if (other == org.apache.mesos.v1.Protos.Offer.getDefaultInstance()) return this;
+        if (other.hasId()) {
+          mergeId(other.getId());
+        }
+        if (other.hasFrameworkId()) {
+          mergeFrameworkId(other.getFrameworkId());
+        }
+        if (other.hasAgentId()) {
+          mergeAgentId(other.getAgentId());
+        }
+        if (other.hasHostname()) {
+          bitField0_ |= 0x00000008;
+          hostname_ = other.hostname_;
+          onChanged();
+        }
+        if (other.hasUrl()) {
+          mergeUrl(other.getUrl());
+        }
+        if (other.hasDomain()) {
+          mergeDomain(other.getDomain());
+        }
+        if (resourcesBuilder_ == null) {
+          if (!other.resources_.isEmpty()) {
+            if (resources_.isEmpty()) {
+              resources_ = other.resources_;
+              bitField0_ = (bitField0_ & ~0x00000040);
+            } else {
+              ensureResourcesIsMutable();
+              resources_.addAll(other.resources_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.resources_.isEmpty()) {
+            if (resourcesBuilder_.isEmpty()) {
+              resourcesBuilder_.dispose();
+              resourcesBuilder_ = null;
+              resources_ = other.resources_;
+              bitField0_ = (bitField0_ & ~0x00000040);
+              resourcesBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getResourcesFieldBuilder() : null;
+            } else {
+              resourcesBuilder_.addAllMessages(other.resources_);
+            }
+          }
+        }
+        if (attributesBuilder_ == null) {
+          if (!other.attributes_.isEmpty()) {
+            if (attributes_.isEmpty()) {
+              attributes_ = other.attributes_;
+              bitField0_ = (bitField0_ & ~0x00000080);
+            } else {
+              ensureAttributesIsMutable();
+              attributes_.addAll(other.attributes_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.attributes_.isEmpty()) {
+            if (attributesBuilder_.isEmpty()) {
+              attributesBuilder_.dispose();
+              attributesBuilder_ = null;
+              attributes_ = other.attributes_;
+              bitField0_ = (bitField0_ & ~0x00000080);
+              attributesBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getAttributesFieldBuilder() : null;
+            } else {
+              attributesBuilder_.addAllMessages(other.attributes_);
+            }
+          }
+        }
+        if (executorIdsBuilder_ == null) {
+          if (!other.executorIds_.isEmpty()) {
+            if (executorIds_.isEmpty()) {
+              executorIds_ = other.executorIds_;
+              bitField0_ = (bitField0_ & ~0x00000100);
+            } else {
+              ensureExecutorIdsIsMutable();
+              executorIds_.addAll(other.executorIds_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.executorIds_.isEmpty()) {
+            if (executorIdsBuilder_.isEmpty()) {
+              executorIdsBuilder_.dispose();
+              executorIdsBuilder_ = null;
+              executorIds_ = other.executorIds_;
+              bitField0_ = (bitField0_ & ~0x00000100);
+              executorIdsBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getExecutorIdsFieldBuilder() : null;
+            } else {
+              executorIdsBuilder_.addAllMessages(other.executorIds_);
+            }
+          }
+        }
+        if (other.hasUnavailability()) {
+          mergeUnavailability(other.getUnavailability());
+        }
+        if (other.hasAllocationInfo()) {
+          mergeAllocationInfo(other.getAllocationInfo());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasId()) {
+          
+          return false;
+        }
+        if (!hasFrameworkId()) {
+          
+          return false;
+        }
+        if (!hasAgentId()) {
+          
+          return false;
+        }
+        if (!hasHostname()) {
+          
+          return false;
+        }
+        if (!getId().isInitialized()) {
+          
+          return false;
+        }
+        if (!getFrameworkId().isInitialized()) {
+          
+          return false;
+        }
+        if (!getAgentId().isInitialized()) {
+          
+          return false;
+        }
+        if (hasUrl()) {
+          if (!getUrl().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasDomain()) {
+          if (!getDomain().isInitialized()) {
+            
+            return false;
+          }
+        }
+        for (int i = 0; i < getResourcesCount(); i++) {
+          if (!getResources(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        for (int i = 0; i < getAttributesCount(); i++) {
+          if (!getAttributes(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        for (int i = 0; i < getExecutorIdsCount(); i++) {
+          if (!getExecutorIds(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasUnavailability()) {
+          if (!getUnavailability().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.Offer parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.Offer) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required .mesos.v1.OfferID id = 1;
+      private org.apache.mesos.v1.Protos.OfferID id_ = org.apache.mesos.v1.Protos.OfferID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.OfferID, org.apache.mesos.v1.Protos.OfferID.Builder, org.apache.mesos.v1.Protos.OfferIDOrBuilder> idBuilder_;
+      /**
+       * <code>required .mesos.v1.OfferID id = 1;</code>
+       */
+      public boolean hasId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.v1.OfferID id = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.OfferID getId() {
+        if (idBuilder_ == null) {
+          return id_;
+        } else {
+          return idBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>required .mesos.v1.OfferID id = 1;</code>
+       */
+      public Builder setId(org.apache.mesos.v1.Protos.OfferID value) {
+        if (idBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          id_ = value;
+          onChanged();
+        } else {
+          idBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.OfferID id = 1;</code>
+       */
+      public Builder setId(
+          org.apache.mesos.v1.Protos.OfferID.Builder builderForValue) {
+        if (idBuilder_ == null) {
+          id_ = builderForValue.build();
+          onChanged();
+        } else {
+          idBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.OfferID id = 1;</code>
+       */
+      public Builder mergeId(org.apache.mesos.v1.Protos.OfferID value) {
+        if (idBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001) &&
+              id_ != org.apache.mesos.v1.Protos.OfferID.getDefaultInstance()) {
+            id_ =
+              org.apache.mesos.v1.Protos.OfferID.newBuilder(id_).mergeFrom(value).buildPartial();
+          } else {
+            id_ = value;
+          }
+          onChanged();
+        } else {
+          idBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.OfferID id = 1;</code>
+       */
+      public Builder clearId() {
+        if (idBuilder_ == null) {
+          id_ = org.apache.mesos.v1.Protos.OfferID.getDefaultInstance();
+          onChanged();
+        } else {
+          idBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.OfferID id = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.OfferID.Builder getIdBuilder() {
+        bitField0_ |= 0x00000001;
+        onChanged();
+        return getIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>required .mesos.v1.OfferID id = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.OfferIDOrBuilder getIdOrBuilder() {
+        if (idBuilder_ != null) {
+          return idBuilder_.getMessageOrBuilder();
+        } else {
+          return id_;
+        }
+      }
+      /**
+       * <code>required .mesos.v1.OfferID id = 1;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.OfferID, org.apache.mesos.v1.Protos.OfferID.Builder, org.apache.mesos.v1.Protos.OfferIDOrBuilder> 
+          getIdFieldBuilder() {
+        if (idBuilder_ == null) {
+          idBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.OfferID, org.apache.mesos.v1.Protos.OfferID.Builder, org.apache.mesos.v1.Protos.OfferIDOrBuilder>(
+                  id_,
+                  getParentForChildren(),
+                  isClean());
+          id_ = null;
+        }
+        return idBuilder_;
+      }
+
+      // required .mesos.v1.FrameworkID framework_id = 2;
+      private org.apache.mesos.v1.Protos.FrameworkID frameworkId_ = org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.FrameworkID, org.apache.mesos.v1.Protos.FrameworkID.Builder, org.apache.mesos.v1.Protos.FrameworkIDOrBuilder> frameworkIdBuilder_;
+      /**
+       * <code>required .mesos.v1.FrameworkID framework_id = 2;</code>
+       */
+      public boolean hasFrameworkId() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required .mesos.v1.FrameworkID framework_id = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.FrameworkID getFrameworkId() {
+        if (frameworkIdBuilder_ == null) {
+          return frameworkId_;
+        } else {
+          return frameworkIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>required .mesos.v1.FrameworkID framework_id = 2;</code>
+       */
+      public Builder setFrameworkId(org.apache.mesos.v1.Protos.FrameworkID value) {
+        if (frameworkIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          frameworkId_ = value;
+          onChanged();
+        } else {
+          frameworkIdBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.FrameworkID framework_id = 2;</code>
+       */
+      public Builder setFrameworkId(
+          org.apache.mesos.v1.Protos.FrameworkID.Builder builderForValue) {
+        if (frameworkIdBuilder_ == null) {
+          frameworkId_ = builderForValue.build();
+          onChanged();
+        } else {
+          frameworkIdBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.FrameworkID framework_id = 2;</code>
+       */
+      public Builder mergeFrameworkId(org.apache.mesos.v1.Protos.FrameworkID value) {
+        if (frameworkIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              frameworkId_ != org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance()) {
+            frameworkId_ =
+              org.apache.mesos.v1.Protos.FrameworkID.newBuilder(frameworkId_).mergeFrom(value).buildPartial();
+          } else {
+            frameworkId_ = value;
+          }
+          onChanged();
+        } else {
+          frameworkIdBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.FrameworkID framework_id = 2;</code>
+       */
+      public Builder clearFrameworkId() {
+        if (frameworkIdBuilder_ == null) {
+          frameworkId_ = org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance();
+          onChanged();
+        } else {
+          frameworkIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.FrameworkID framework_id = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.FrameworkID.Builder getFrameworkIdBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getFrameworkIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>required .mesos.v1.FrameworkID framework_id = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.FrameworkIDOrBuilder getFrameworkIdOrBuilder() {
+        if (frameworkIdBuilder_ != null) {
+          return frameworkIdBuilder_.getMessageOrBuilder();
+        } else {
+          return frameworkId_;
+        }
+      }
+      /**
+       * <code>required .mesos.v1.FrameworkID framework_id = 2;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.FrameworkID, org.apache.mesos.v1.Protos.FrameworkID.Builder, org.apache.mesos.v1.Protos.FrameworkIDOrBuilder> 
+          getFrameworkIdFieldBuilder() {
+        if (frameworkIdBuilder_ == null) {
+          frameworkIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.FrameworkID, org.apache.mesos.v1.Protos.FrameworkID.Builder, org.apache.mesos.v1.Protos.FrameworkIDOrBuilder>(
+                  frameworkId_,
+                  getParentForChildren(),
+                  isClean());
+          frameworkId_ = null;
+        }
+        return frameworkIdBuilder_;
+      }
+
+      // required .mesos.v1.AgentID agent_id = 3;
+      private org.apache.mesos.v1.Protos.AgentID agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.AgentID, org.apache.mesos.v1.Protos.AgentID.Builder, org.apache.mesos.v1.Protos.AgentIDOrBuilder> agentIdBuilder_;
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 3;</code>
+       */
+      public boolean hasAgentId() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.AgentID getAgentId() {
+        if (agentIdBuilder_ == null) {
+          return agentId_;
+        } else {
+          return agentIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 3;</code>
+       */
+      public Builder setAgentId(org.apache.mesos.v1.Protos.AgentID value) {
+        if (agentIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          agentId_ = value;
+          onChanged();
+        } else {
+          agentIdBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 3;</code>
+       */
+      public Builder setAgentId(
+          org.apache.mesos.v1.Protos.AgentID.Builder builderForValue) {
+        if (agentIdBuilder_ == null) {
+          agentId_ = builderForValue.build();
+          onChanged();
+        } else {
+          agentIdBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 3;</code>
+       */
+      public Builder mergeAgentId(org.apache.mesos.v1.Protos.AgentID value) {
+        if (agentIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) == 0x00000004) &&
+              agentId_ != org.apache.mesos.v1.Protos.AgentID.getDefaultInstance()) {
+            agentId_ =
+              org.apache.mesos.v1.Protos.AgentID.newBuilder(agentId_).mergeFrom(value).buildPartial();
+          } else {
+            agentId_ = value;
+          }
+          onChanged();
+        } else {
+          agentIdBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 3;</code>
+       */
+      public Builder clearAgentId() {
+        if (agentIdBuilder_ == null) {
+          agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+          onChanged();
+        } else {
+          agentIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.AgentID.Builder getAgentIdBuilder() {
+        bitField0_ |= 0x00000004;
+        onChanged();
+        return getAgentIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.AgentIDOrBuilder getAgentIdOrBuilder() {
+        if (agentIdBuilder_ != null) {
+          return agentIdBuilder_.getMessageOrBuilder();
+        } else {
+          return agentId_;
+        }
+      }
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 3;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.AgentID, org.apache.mesos.v1.Protos.AgentID.Builder, org.apache.mesos.v1.Protos.AgentIDOrBuilder> 
+          getAgentIdFieldBuilder() {
+        if (agentIdBuilder_ == null) {
+          agentIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.AgentID, org.apache.mesos.v1.Protos.AgentID.Builder, org.apache.mesos.v1.Protos.AgentIDOrBuilder>(
+                  agentId_,
+                  getParentForChildren(),
+                  isClean());
+          agentId_ = null;
+        }
+        return agentIdBuilder_;
+      }
+
+      // required string hostname = 4;
+      private java.lang.Object hostname_ = "";
+      /**
+       * <code>required string hostname = 4;</code>
+       */
+      public boolean hasHostname() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>required string hostname = 4;</code>
+       */
+      public java.lang.String getHostname() {
+        java.lang.Object ref = hostname_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          hostname_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string hostname = 4;</code>
+       */
+      public com.google.protobuf.ByteString
+          getHostnameBytes() {
+        java.lang.Object ref = hostname_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          hostname_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string hostname = 4;</code>
+       */
+      public Builder setHostname(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+        hostname_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string hostname = 4;</code>
+       */
+      public Builder clearHostname() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        hostname_ = getDefaultInstance().getHostname();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string hostname = 4;</code>
+       */
+      public Builder setHostnameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+        hostname_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.v1.URL url = 8;
+      private org.apache.mesos.v1.Protos.URL url_ = org.apache.mesos.v1.Protos.URL.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.URL, org.apache.mesos.v1.Protos.URL.Builder, org.apache.mesos.v1.Protos.URLOrBuilder> urlBuilder_;
+      /**
+       * <code>optional .mesos.v1.URL url = 8;</code>
+       *
+       * <pre>
+       * URL for reaching the agent running on the host.
+       * </pre>
+       */
+      public boolean hasUrl() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional .mesos.v1.URL url = 8;</code>
+       *
+       * <pre>
+       * URL for reaching the agent running on the host.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.URL getUrl() {
+        if (urlBuilder_ == null) {
+          return url_;
+        } else {
+          return urlBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.URL url = 8;</code>
+       *
+       * <pre>
+       * URL for reaching the agent running on the host.
+       * </pre>
+       */
+      public Builder setUrl(org.apache.mesos.v1.Protos.URL value) {
+        if (urlBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          url_ = value;
+          onChanged();
+        } else {
+          urlBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.URL url = 8;</code>
+       *
+       * <pre>
+       * URL for reaching the agent running on the host.
+       * </pre>
+       */
+      public Builder setUrl(
+          org.apache.mesos.v1.Protos.URL.Builder builderForValue) {
+        if (urlBuilder_ == null) {
+          url_ = builderForValue.build();
+          onChanged();
+        } else {
+          urlBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.URL url = 8;</code>
+       *
+       * <pre>
+       * URL for reaching the agent running on the host.
+       * </pre>
+       */
+      public Builder mergeUrl(org.apache.mesos.v1.Protos.URL value) {
+        if (urlBuilder_ == null) {
+          if (((bitField0_ & 0x00000010) == 0x00000010) &&
+              url_ != org.apache.mesos.v1.Protos.URL.getDefaultInstance()) {
+            url_ =
+              org.apache.mesos.v1.Protos.URL.newBuilder(url_).mergeFrom(value).buildPartial();
+          } else {
+            url_ = value;
+          }
+          onChanged();
+        } else {
+          urlBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.URL url = 8;</code>
+       *
+       * <pre>
+       * URL for reaching the agent running on the host.
+       * </pre>
+       */
+      public Builder clearUrl() {
+        if (urlBuilder_ == null) {
+          url_ = org.apache.mesos.v1.Protos.URL.getDefaultInstance();
+          onChanged();
+        } else {
+          urlBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.URL url = 8;</code>
+       *
+       * <pre>
+       * URL for reaching the agent running on the host.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.URL.Builder getUrlBuilder() {
+        bitField0_ |= 0x00000010;
+        onChanged();
+        return getUrlFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.URL url = 8;</code>
+       *
+       * <pre>
+       * URL for reaching the agent running on the host.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.URLOrBuilder getUrlOrBuilder() {
+        if (urlBuilder_ != null) {
+          return urlBuilder_.getMessageOrBuilder();
+        } else {
+          return url_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.URL url = 8;</code>
+       *
+       * <pre>
+       * URL for reaching the agent running on the host.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.URL, org.apache.mesos.v1.Protos.URL.Builder, org.apache.mesos.v1.Protos.URLOrBuilder> 
+          getUrlFieldBuilder() {
+        if (urlBuilder_ == null) {
+          urlBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.URL, org.apache.mesos.v1.Protos.URL.Builder, org.apache.mesos.v1.Protos.URLOrBuilder>(
+                  url_,
+                  getParentForChildren(),
+                  isClean());
+          url_ = null;
+        }
+        return urlBuilder_;
+      }
+
+      // optional .mesos.v1.DomainInfo domain = 11;
+      private org.apache.mesos.v1.Protos.DomainInfo domain_ = org.apache.mesos.v1.Protos.DomainInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.DomainInfo, org.apache.mesos.v1.Protos.DomainInfo.Builder, org.apache.mesos.v1.Protos.DomainInfoOrBuilder> domainBuilder_;
+      /**
+       * <code>optional .mesos.v1.DomainInfo domain = 11;</code>
+       *
+       * <pre>
+       * The domain of the agent.
+       * </pre>
+       */
+      public boolean hasDomain() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional .mesos.v1.DomainInfo domain = 11;</code>
+       *
+       * <pre>
+       * The domain of the agent.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.DomainInfo getDomain() {
+        if (domainBuilder_ == null) {
+          return domain_;
+        } else {
+          return domainBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.DomainInfo domain = 11;</code>
+       *
+       * <pre>
+       * The domain of the agent.
+       * </pre>
+       */
+      public Builder setDomain(org.apache.mesos.v1.Protos.DomainInfo value) {
+        if (domainBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          domain_ = value;
+          onChanged();
+        } else {
+          domainBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.DomainInfo domain = 11;</code>
+       *
+       * <pre>
+       * The domain of the agent.
+       * </pre>
+       */
+      public Builder setDomain(
+          org.apache.mesos.v1.Protos.DomainInfo.Builder builderForValue) {
+        if (domainBuilder_ == null) {
+          domain_ = builderForValue.build();
+          onChanged();
+        } else {
+          domainBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.DomainInfo domain = 11;</code>
+       *
+       * <pre>
+       * The domain of the agent.
+       * </pre>
+       */
+      public Builder mergeDomain(org.apache.mesos.v1.Protos.DomainInfo value) {
+        if (domainBuilder_ == null) {
+          if (((bitField0_ & 0x00000020) == 0x00000020) &&
+              domain_ != org.apache.mesos.v1.Protos.DomainInfo.getDefaultInstance()) {
+            domain_ =
+              org.apache.mesos.v1.Protos.DomainInfo.newBuilder(domain_).mergeFrom(value).buildPartial();
+          } else {
+            domain_ = value;
+          }
+          onChanged();
+        } else {
+          domainBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.DomainInfo domain = 11;</code>
+       *
+       * <pre>
+       * The domain of the agent.
+       * </pre>
+       */
+      public Builder clearDomain() {
+        if (domainBuilder_ == null) {
+          domain_ = org.apache.mesos.v1.Protos.DomainInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          domainBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.DomainInfo domain = 11;</code>
+       *
+       * <pre>
+       * The domain of the agent.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.DomainInfo.Builder getDomainBuilder() {
+        bitField0_ |= 0x00000020;
+        onChanged();
+        return getDomainFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.DomainInfo domain = 11;</code>
+       *
+       * <pre>
+       * The domain of the agent.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.DomainInfoOrBuilder getDomainOrBuilder() {
+        if (domainBuilder_ != null) {
+          return domainBuilder_.getMessageOrBuilder();
+        } else {
+          return domain_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.DomainInfo domain = 11;</code>
+       *
+       * <pre>
+       * The domain of the agent.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.DomainInfo, org.apache.mesos.v1.Protos.DomainInfo.Builder, org.apache.mesos.v1.Protos.DomainInfoOrBuilder> 
+          getDomainFieldBuilder() {
+        if (domainBuilder_ == null) {
+          domainBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.DomainInfo, org.apache.mesos.v1.Protos.DomainInfo.Builder, org.apache.mesos.v1.Protos.DomainInfoOrBuilder>(
+                  domain_,
+                  getParentForChildren(),
+                  isClean());
+          domain_ = null;
+        }
+        return domainBuilder_;
+      }
+
+      // repeated .mesos.v1.Resource resources = 5;
+      private java.util.List<org.apache.mesos.v1.Protos.Resource> resources_ =
+        java.util.Collections.emptyList();
+      private void ensureResourcesIsMutable() {
+        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
+          resources_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Resource>(resources_);
+          bitField0_ |= 0x00000040;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder> resourcesBuilder_;
+
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 5;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Resource> getResourcesList() {
+        if (resourcesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(resources_);
+        } else {
+          return resourcesBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 5;</code>
+       */
+      public int getResourcesCount() {
+        if (resourcesBuilder_ == null) {
+          return resources_.size();
+        } else {
+          return resourcesBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 5;</code>
+       */
+      public org.apache.mesos.v1.Protos.Resource getResources(int index) {
+        if (resourcesBuilder_ == null) {
+          return resources_.get(index);
+        } else {
+          return resourcesBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 5;</code>
+       */
+      public Builder setResources(
+          int index, org.apache.mesos.v1.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.set(index, value);
+          onChanged();
+        } else {
+          resourcesBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 5;</code>
+       */
+      public Builder setResources(
+          int index, org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 5;</code>
+       */
+      public Builder addResources(org.apache.mesos.v1.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.add(value);
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 5;</code>
+       */
+      public Builder addResources(
+          int index, org.apache.mesos.v1.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.add(index, value);
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 5;</code>
+       */
+      public Builder addResources(
+          org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.add(builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 5;</code>
+       */
+      public Builder addResources(
+          int index, org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 5;</code>
+       */
+      public Builder addAllResources(
+          java.lang.Iterable<? extends org.apache.mesos.v1.Protos.Resource> values) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          super.addAll(values, resources_);
+          onChanged();
+        } else {
+          resourcesBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 5;</code>
+       */
+      public Builder clearResources() {
+        if (resourcesBuilder_ == null) {
+          resources_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000040);
+          onChanged();
+        } else {
+          resourcesBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 5;</code>
+       */
+      public Builder removeResources(int index) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.remove(index);
+          onChanged();
+        } else {
+          resourcesBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 5;</code>
+       */
+      public org.apache.mesos.v1.Protos.Resource.Builder getResourcesBuilder(
+          int index) {
+        return getResourcesFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 5;</code>
+       */
+      public org.apache.mesos.v1.Protos.ResourceOrBuilder getResourcesOrBuilder(
+          int index) {
+        if (resourcesBuilder_ == null) {
+          return resources_.get(index);  } else {
+          return resourcesBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 5;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+           getResourcesOrBuilderList() {
+        if (resourcesBuilder_ != null) {
+          return resourcesBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(resources_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 5;</code>
+       */
+      public org.apache.mesos.v1.Protos.Resource.Builder addResourcesBuilder() {
+        return getResourcesFieldBuilder().addBuilder(
+            org.apache.mesos.v1.Protos.Resource.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 5;</code>
+       */
+      public org.apache.mesos.v1.Protos.Resource.Builder addResourcesBuilder(
+          int index) {
+        return getResourcesFieldBuilder().addBuilder(
+            index, org.apache.mesos.v1.Protos.Resource.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 5;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Resource.Builder> 
+           getResourcesBuilderList() {
+        return getResourcesFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+          getResourcesFieldBuilder() {
+        if (resourcesBuilder_ == null) {
+          resourcesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder>(
+                  resources_,
+                  ((bitField0_ & 0x00000040) == 0x00000040),
+                  getParentForChildren(),
+                  isClean());
+          resources_ = null;
+        }
+        return resourcesBuilder_;
+      }
+
+      // repeated .mesos.v1.Attribute attributes = 7;
+      private java.util.List<org.apache.mesos.v1.Protos.Attribute> attributes_ =
+        java.util.Collections.emptyList();
+      private void ensureAttributesIsMutable() {
+        if (!((bitField0_ & 0x00000080) == 0x00000080)) {
+          attributes_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Attribute>(attributes_);
+          bitField0_ |= 0x00000080;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.Attribute, org.apache.mesos.v1.Protos.Attribute.Builder, org.apache.mesos.v1.Protos.AttributeOrBuilder> attributesBuilder_;
+
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 7;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Attribute> getAttributesList() {
+        if (attributesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(attributes_);
+        } else {
+          return attributesBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 7;</code>
+       */
+      public int getAttributesCount() {
+        if (attributesBuilder_ == null) {
+          return attributes_.size();
+        } else {
+          return attributesBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 7;</code>
+       */
+      public org.apache.mesos.v1.Protos.Attribute getAttributes(int index) {
+        if (attributesBuilder_ == null) {
+          return attributes_.get(index);
+        } else {
+          return attributesBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 7;</code>
+       */
+      public Builder setAttributes(
+          int index, org.apache.mesos.v1.Protos.Attribute value) {
+        if (attributesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureAttributesIsMutable();
+          attributes_.set(index, value);
+          onChanged();
+        } else {
+          attributesBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 7;</code>
+       */
+      public Builder setAttributes(
+          int index, org.apache.mesos.v1.Protos.Attribute.Builder builderForValue) {
+        if (attributesBuilder_ == null) {
+          ensureAttributesIsMutable();
+          attributes_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          attributesBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 7;</code>
+       */
+      public Builder addAttributes(org.apache.mesos.v1.Protos.Attribute value) {
+        if (attributesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureAttributesIsMutable();
+          attributes_.add(value);
+          onChanged();
+        } else {
+          attributesBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 7;</code>
+       */
+      public Builder addAttributes(
+          int index, org.apache.mesos.v1.Protos.Attribute value) {
+        if (attributesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureAttributesIsMutable();
+          attributes_.add(index, value);
+          onChanged();
+        } else {
+          attributesBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 7;</code>
+       */
+      public Builder addAttributes(
+          org.apache.mesos.v1.Protos.Attribute.Builder builderForValue) {
+        if (attributesBuilder_ == null) {
+          ensureAttributesIsMutable();
+          attributes_.add(builderForValue.build());
+          onChanged();
+        } else {
+          attributesBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 7;</code>
+       */
+      public Builder addAttributes(
+          int index, org.apache.mesos.v1.Protos.Attribute.Builder builderForValue) {
+        if (attributesBuilder_ == null) {
+          ensureAttributesIsMutable();
+          attributes_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          attributesBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 7;</code>
+       */
+      public Builder addAllAttributes(
+          java.lang.Iterable<? extends org.apache.mesos.v1.Protos.Attribute> values) {
+        if (attributesBuilder_ == null) {
+          ensureAttributesIsMutable();
+          super.addAll(values, attributes_);
+          onChanged();
+        } else {
+          attributesBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 7;</code>
+       */
+      public Builder clearAttributes() {
+        if (attributesBuilder_ == null) {
+          attributes_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000080);
+          onChanged();
+        } else {
+          attributesBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 7;</code>
+       */
+      public Builder removeAttributes(int index) {
+        if (attributesBuilder_ == null) {
+          ensureAttributesIsMutable();
+          attributes_.remove(index);
+          onChanged();
+        } else {
+          attributesBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 7;</code>
+       */
+      public org.apache.mesos.v1.Protos.Attribute.Builder getAttributesBuilder(
+          int index) {
+        return getAttributesFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 7;</code>
+       */
+      public org.apache.mesos.v1.Protos.AttributeOrBuilder getAttributesOrBuilder(
+          int index) {
+        if (attributesBuilder_ == null) {
+          return attributes_.get(index);  } else {
+          return attributesBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 7;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.AttributeOrBuilder> 
+           getAttributesOrBuilderList() {
+        if (attributesBuilder_ != null) {
+          return attributesBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(attributes_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 7;</code>
+       */
+      public org.apache.mesos.v1.Protos.Attribute.Builder addAttributesBuilder() {
+        return getAttributesFieldBuilder().addBuilder(
+            org.apache.mesos.v1.Protos.Attribute.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 7;</code>
+       */
+      public org.apache.mesos.v1.Protos.Attribute.Builder addAttributesBuilder(
+          int index) {
+        return getAttributesFieldBuilder().addBuilder(
+            index, org.apache.mesos.v1.Protos.Attribute.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.Attribute attributes = 7;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Attribute.Builder> 
+           getAttributesBuilderList() {
+        return getAttributesFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.Attribute, org.apache.mesos.v1.Protos.Attribute.Builder, org.apache.mesos.v1.Protos.AttributeOrBuilder> 
+          getAttributesFieldBuilder() {
+        if (attributesBuilder_ == null) {
+          attributesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.Attribute, org.apache.mesos.v1.Protos.Attribute.Builder, org.apache.mesos.v1.Protos.AttributeOrBuilder>(
+                  attributes_,
+                  ((bitField0_ & 0x00000080) == 0x00000080),
+                  getParentForChildren(),
+                  isClean());
+          attributes_ = null;
+        }
+        return attributesBuilder_;
+      }
+
+      // repeated .mesos.v1.ExecutorID executor_ids = 6;
+      private java.util.List<org.apache.mesos.v1.Protos.ExecutorID> executorIds_ =
+        java.util.Collections.emptyList();
+      private void ensureExecutorIdsIsMutable() {
+        if (!((bitField0_ & 0x00000100) == 0x00000100)) {
+          executorIds_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.ExecutorID>(executorIds_);
+          bitField0_ |= 0x00000100;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.ExecutorID, org.apache.mesos.v1.Protos.ExecutorID.Builder, org.apache.mesos.v1.Protos.ExecutorIDOrBuilder> executorIdsBuilder_;
+
+      /**
+       * <code>repeated .mesos.v1.ExecutorID executor_ids = 6;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.ExecutorID> getExecutorIdsList() {
+        if (executorIdsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(executorIds_);
+        } else {
+          return executorIdsBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.ExecutorID executor_ids = 6;</code>
+       */
+      public int getExecutorIdsCount() {
+        if (executorIdsBuilder_ == null) {
+          return executorIds_.size();
+        } else {
+          return executorIdsBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.ExecutorID executor_ids = 6;</code>
+       */
+      public org.apache.mesos.v1.Protos.ExecutorID getExecutorIds(int index) {
+        if (executorIdsBuilder_ == null) {
+          return executorIds_.get(index);
+        } else {
+          return executorIdsBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.ExecutorID executor_ids = 6;</code>
+       */
+      public Builder setExecutorIds(
+          int index, org.apache.mesos.v1.Protos.ExecutorID value) {
+        if (executorIdsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureExecutorIdsIsMutable();
+          executorIds_.set(index, value);
+          onChanged();
+        } else {
+          executorIdsBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.ExecutorID executor_ids = 6;</code>
+       */
+      public Builder setExecutorIds(
+          int index, org.apache.mesos.v1.Protos.ExecutorID.Builder builderForValue) {
+        if (executorIdsBuilder_ == null) {
+          ensureExecutorIdsIsMutable();
+          executorIds_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          executorIdsBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.ExecutorID executor_ids = 6;</code>
+       */
+      public Builder addExecutorIds(org.apache.mesos.v1.Protos.ExecutorID value) {
+        if (executorIdsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureExecutorIdsIsMutable();
+          executorIds_.add(value);
+          onChanged();
+        } else {
+          executorIdsBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.ExecutorID executor_ids = 6;</code>
+       */
+      public Builder addExecutorIds(
+          int index, org.apache.mesos.v1.Protos.ExecutorID value) {
+        if (executorIdsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureExecutorIdsIsMutable();
+          executorIds_.add(index, value);
+          onChanged();
+        } else {
+          executorIdsBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.ExecutorID executor_ids = 6;</code>
+       */
+      public Builder addExecutorIds(
+          org.apache.mesos.v1.Protos.ExecutorID.Builder builderForValue) {
+        if (executorIdsBuilder_ == null) {
+          ensureExecutorIdsIsMutable();
+          executorIds_.add(builderForValue.build());
+          onChanged();
+        } else {
+          executorIdsBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.ExecutorID executor_ids = 6;</code>
+       */
+      public Builder addExecutorIds(
+          int index, org.apache.mesos.v1.Protos.ExecutorID.Builder builderForValue) {
+        if (executorIdsBuilder_ == null) {
+          ensureExecutorIdsIsMutable();
+          executorIds_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          executorIdsBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.ExecutorID executor_ids = 6;</code>
+       */
+      public Builder addAllExecutorIds(
+          java.lang.Iterable<? extends org.apache.mesos.v1.Protos.ExecutorID> values) {
+        if (executorIdsBuilder_ == null) {
+          ensureExecutorIdsIsMutable();
+          super.addAll(values, executorIds_);
+          onChanged();
+        } else {
+          executorIdsBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.ExecutorID executor_ids = 6;</code>
+       */
+      public Builder clearExecutorIds() {
+        if (executorIdsBuilder_ == null) {
+          executorIds_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000100);
+          onChanged();
+        } else {
+          executorIdsBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.ExecutorID executor_ids = 6;</code>
+       */
+      public Builder removeExecutorIds(int index) {
+        if (executorIdsBuilder_ == null) {
+          ensureExecutorIdsIsMutable();
+          executorIds_.remove(index);
+          onChanged();
+        } else {
+          executorIdsBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.ExecutorID executor_ids = 6;</code>
+       */
+      public org.apache.mesos.v1.Protos.ExecutorID.Builder getExecutorIdsBuilder(
+          int index) {
+        return getExecutorIdsFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.ExecutorID executor_ids = 6;</code>
+       */
+      public org.apache.mesos.v1.Protos.ExecutorIDOrBuilder getExecutorIdsOrBuilder(
+          int index) {
+        if (executorIdsBuilder_ == null) {
+          return executorIds_.get(index);  } else {
+          return executorIdsBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.ExecutorID executor_ids = 6;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.ExecutorIDOrBuilder> 
+           getExecutorIdsOrBuilderList() {
+        if (executorIdsBuilder_ != null) {
+          return executorIdsBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(executorIds_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.ExecutorID executor_ids = 6;</code>
+       */
+      public org.apache.mesos.v1.Protos.ExecutorID.Builder addExecutorIdsBuilder() {
+        return getExecutorIdsFieldBuilder().addBuilder(
+            org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.ExecutorID executor_ids = 6;</code>
+       */
+      public org.apache.mesos.v1.Protos.ExecutorID.Builder addExecutorIdsBuilder(
+          int index) {
+        return getExecutorIdsFieldBuilder().addBuilder(
+            index, org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.ExecutorID executor_ids = 6;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.ExecutorID.Builder> 
+           getExecutorIdsBuilderList() {
+        return getExecutorIdsFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.ExecutorID, org.apache.mesos.v1.Protos.ExecutorID.Builder, org.apache.mesos.v1.Protos.ExecutorIDOrBuilder> 
+          getExecutorIdsFieldBuilder() {
+        if (executorIdsBuilder_ == null) {
+          executorIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.ExecutorID, org.apache.mesos.v1.Protos.ExecutorID.Builder, org.apache.mesos.v1.Protos.ExecutorIDOrBuilder>(
+                  executorIds_,
+                  ((bitField0_ & 0x00000100) == 0x00000100),
+                  getParentForChildren(),
+                  isClean());
+          executorIds_ = null;
+        }
+        return executorIdsBuilder_;
+      }
+
+      // optional .mesos.v1.Unavailability unavailability = 9;
+      private org.apache.mesos.v1.Protos.Unavailability unavailability_ = org.apache.mesos.v1.Protos.Unavailability.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Unavailability, org.apache.mesos.v1.Protos.Unavailability.Builder, org.apache.mesos.v1.Protos.UnavailabilityOrBuilder> unavailabilityBuilder_;
+      /**
+       * <code>optional .mesos.v1.Unavailability unavailability = 9;</code>
+       *
+       * <pre>
+       * Signifies that the resources in this Offer may be unavailable during
+       * the given interval.  Any tasks launched using these resources may be
+       * killed when the interval arrives.  For example, these resources may be
+       * part of a planned maintenance schedule.
+       *
+       * This field only provides information about a planned unavailability.
+       * The unavailability interval may not necessarily start at exactly this
+       * interval, nor last for exactly the duration of this interval.
+       * The unavailability may also be forever!  See comments in
+       * `Unavailability` for more details.
+       * </pre>
+       */
+      public boolean hasUnavailability() {
+        return ((bitField0_ & 0x00000200) == 0x00000200);
+      }
+      /**
+       * <code>optional .mesos.v1.Unavailability unavailability = 9;</code>
+       *
+       * <pre>
+       * Signifies that the resources in this Offer may be unavailable during
+       * the given interval.  Any tasks launched using these resources may be
+       * killed when the interval arrives.  For example, these resources may be
+       * part of a planned maintenance schedule.
+       *
+       * This field only provides information about a planned unavailability.
+       * The unavailability interval may not necessarily start at exactly this
+       * interval, nor last for exactly the duration of this interval.
+       * The unavailability may also be forever!  See comments in
+       * `Unavailability` for more details.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Unavailability getUnavailability() {
+        if (unavailabilityBuilder_ == null) {
+          return unavailability_;
+        } else {
+          return unavailabilityBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Unavailability unavailability = 9;</code>
+       *
+       * <pre>
+       * Signifies that the resources in this Offer may be unavailable during
+       * the given interval.  Any tasks launched using these resources may be
+       * killed when the interval arrives.  For example, these resources may be
+       * part of a planned maintenance schedule.
+       *
+       * This field only provides information about a planned unavailability.
+       * The unavailability interval may not necessarily start at exactly this
+       * interval, nor last for exactly the duration of this interval.
+       * The unavailability may also be forever!  See comments in
+       * `Unavailability` for more details.
+       * </pre>
+       */
+      public Builder setUnavailability(org.apache.mesos.v1.Protos.Unavailability value) {
+        if (unavailabilityBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          unavailability_ = value;
+          onChanged();
+        } else {
+          unavailabilityBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000200;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Unavailability unavailability = 9;</code>
+       *
+       * <pre>
+       * Signifies that the resources in this Offer may be unavailable during
+       * the given interval.  Any tasks launched using these resources may be
+       * killed when the interval arrives.  For example, these resources may be
+       * part of a planned maintenance schedule.
+       *
+       * This field only provides information about a planned unavailability.
+       * The unavailability interval may not necessarily start at exactly this
+       * interval, nor last for exactly the duration of this interval.
+       * The unavailability may also be forever!  See comments in
+       * `Unavailability` for more details.
+       * </pre>
+       */
+      public Builder setUnavailability(
+          org.apache.mesos.v1.Protos.Unavailability.Builder builderForValue) {
+        if (unavailabilityBuilder_ == null) {
+          unavailability_ = builderForValue.build();
+          onChanged();
+        } else {
+          unavailabilityBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000200;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Unavailability unavailability = 9;</code>
+       *
+       * <pre>
+       * Signifies that the resources in this Offer may be unavailable during
+       * the given interval.  Any tasks launched using these resources may be
+       * killed when the interval arrives.  For example, these resources may be
+       * part of a planned maintenance schedule.
+       *
+       * This field only provides information about a planned unavailability.
+       * The unavailability interval may not necessarily start at exactly this
+       * interval, nor last for exactly the duration of this interval.
+       * The unavailability may also be forever!  See comments in
+       * `Unavailability` for more details.
+       * </pre>
+       */
+      public Builder mergeUnavailability(org.apache.mesos.v1.Protos.Unavailability value) {
+        if (unavailabilityBuilder_ == null) {
+          if (((bitField0_ & 0x00000200) == 0x00000200) &&
+              unavailability_ != org.apache.mesos.v1.Protos.Unavailability.getDefaultInstance()) {
+            unavailability_ =
+              org.apache.mesos.v1.Protos.Unavailability.newBuilder(unavailability_).mergeFrom(value).buildPartial();
+          } else {
+            unavailability_ = value;
+          }
+          onChanged();
+        } else {
+          unavailabilityBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000200;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Unavailability unavailability = 9;</code>
+       *
+       * <pre>
+       * Signifies that the resources in this Offer may be unavailable during
+       * the given interval.  Any tasks launched using these resources may be
+       * killed when the interval arrives.  For example, these resources may be
+       * part of a planned maintenance schedule.
+       *
+       * This field only provides information about a planned unavailability.
+       * The unavailability interval may not necessarily start at exactly this
+       * interval, nor last for exactly the duration of this interval.
+       * The unavailability may also be forever!  See comments in
+       * `Unavailability` for more details.
+       * </pre>
+       */
+      public Builder clearUnavailability() {
+        if (unavailabilityBuilder_ == null) {
+          unavailability_ = org.apache.mesos.v1.Protos.Unavailability.getDefaultInstance();
+          onChanged();
+        } else {
+          unavailabilityBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000200);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Unavailability unavailability = 9;</code>
+       *
+       * <pre>
+       * Signifies that the resources in this Offer may be unavailable during
+       * the given interval.  Any tasks launched using these resources may be
+       * killed when the interval arrives.  For example, these resources may be
+       * part of a planned maintenance schedule.
+       *
+       * This field only provides information about a planned unavailability.
+       * The unavailability interval may not necessarily start at exactly this
+       * interval, nor last for exactly the duration of this interval.
+       * The unavailability may also be forever!  See comments in
+       * `Unavailability` for more details.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Unavailability.Builder getUnavailabilityBuilder() {
+        bitField0_ |= 0x00000200;
+        onChanged();
+        return getUnavailabilityFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.Unavailability unavailability = 9;</code>
+       *
+       * <pre>
+       * Signifies that the resources in this Offer may be unavailable during
+       * the given interval.  Any tasks launched using these resources may be
+       * killed when the interval arrives.  For example, these resources may be
+       * part of a planned maintenance schedule.
+       *
+       * This field only provides information about a planned unavailability.
+       * The unavailability interval may not necessarily start at exactly this
+       * interval, nor last for exactly the duration of this interval.
+       * The unavailability may also be forever!  See comments in
+       * `Unavailability` for more details.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.UnavailabilityOrBuilder getUnavailabilityOrBuilder() {
+        if (unavailabilityBuilder_ != null) {
+          return unavailabilityBuilder_.getMessageOrBuilder();
+        } else {
+          return unavailability_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Unavailability unavailability = 9;</code>
+       *
+       * <pre>
+       * Signifies that the resources in this Offer may be unavailable during
+       * the given interval.  Any tasks launched using these resources may be
+       * killed when the interval arrives.  For example, these resources may be
+       * part of a planned maintenance schedule.
+       *
+       * This field only provides information about a planned unavailability.
+       * The unavailability interval may not necessarily start at exactly this
+       * interval, nor last for exactly the duration of this interval.
+       * The unavailability may also be forever!  See comments in
+       * `Unavailability` for more details.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Unavailability, org.apache.mesos.v1.Protos.Unavailability.Builder, org.apache.mesos.v1.Protos.UnavailabilityOrBuilder> 
+          getUnavailabilityFieldBuilder() {
+        if (unavailabilityBuilder_ == null) {
+          unavailabilityBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Unavailability, org.apache.mesos.v1.Protos.Unavailability.Builder, org.apache.mesos.v1.Protos.UnavailabilityOrBuilder>(
+                  unavailability_,
+                  getParentForChildren(),
+                  isClean());
+          unavailability_ = null;
+        }
+        return unavailabilityBuilder_;
+      }
+
+      // optional .mesos.v1.Resource.AllocationInfo allocation_info = 10;
+      private org.apache.mesos.v1.Protos.Resource.AllocationInfo allocationInfo_ = org.apache.mesos.v1.Protos.Resource.AllocationInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Resource.AllocationInfo, org.apache.mesos.v1.Protos.Resource.AllocationInfo.Builder, org.apache.mesos.v1.Protos.Resource.AllocationInfoOrBuilder> allocationInfoBuilder_;
+      /**
+       * <code>optional .mesos.v1.Resource.AllocationInfo allocation_info = 10;</code>
+       *
+       * <pre>
+       * An offer represents resources allocated to *one* of the
+       * roles managed by the scheduler. (Therefore, each
+       * `Offer.resources[i].allocation_info` will match the
+       * top level `Offer.allocation_info`).
+       * </pre>
+       */
+      public boolean hasAllocationInfo() {
+        return ((bitField0_ & 0x00000400) == 0x00000400);
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.AllocationInfo allocation_info = 10;</code>
+       *
+       * <pre>
+       * An offer represents resources allocated to *one* of the
+       * roles managed by the scheduler. (Therefore, each
+       * `Offer.resources[i].allocation_info` will match the
+       * top level `Offer.allocation_info`).
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Resource.AllocationInfo getAllocationInfo() {
+        if (allocationInfoBuilder_ == null) {
+          return allocationInfo_;
+        } else {
+          return allocationInfoBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.AllocationInfo allocation_info = 10;</code>
+       *
+       * <pre>
+       * An offer represents resources allocated to *one* of the
+       * roles managed by the scheduler. (Therefore, each
+       * `Offer.resources[i].allocation_info` will match the
+       * top level `Offer.allocation_info`).
+       * </pre>
+       */
+      public Builder setAllocationInfo(org.apache.mesos.v1.Protos.Resource.AllocationInfo value) {
+        if (allocationInfoBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          allocationInfo_ = value;
+          onChanged();
+        } else {
+          allocationInfoBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000400;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.AllocationInfo allocation_info = 10;</code>
+       *
+       * <pre>
+       * An offer represents resources allocated to *one* of the
+       * roles managed by the scheduler. (Therefore, each
+       * `Offer.resources[i].allocation_info` will match the
+       * top level `Offer.allocation_info`).
+       * </pre>
+       */
+      public Builder setAllocationInfo(
+          org.apache.mesos.v1.Protos.Resource.AllocationInfo.Builder builderForValue) {
+        if (allocationInfoBuilder_ == null) {
+          allocationInfo_ = builderForValue.build();
+          onChanged();
+        } else {
+          allocationInfoBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000400;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.AllocationInfo allocation_info = 10;</code>
+       *
+       * <pre>
+       * An offer represents resources allocated to *one* of the
+       * roles managed by the scheduler. (Therefore, each
+       * `Offer.resources[i].allocation_info` will match the
+       * top level `Offer.allocation_info`).
+       * </pre>
+       */
+      public Builder mergeAllocationInfo(org.apache.mesos.v1.Protos.Resource.AllocationInfo value) {
+        if (allocationInfoBuilder_ == null) {
+          if (((bitField0_ & 0x00000400) == 0x00000400) &&
+              allocationInfo_ != org.apache.mesos.v1.Protos.Resource.AllocationInfo.getDefaultInstance()) {
+            allocationInfo_ =
+              org.apache.mesos.v1.Protos.Resource.AllocationInfo.newBuilder(allocationInfo_).mergeFrom(value).buildPartial();
+          } else {
+            allocationInfo_ = value;
+          }
+          onChanged();
+        } else {
+          allocationInfoBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000400;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.AllocationInfo allocation_info = 10;</code>
+       *
+       * <pre>
+       * An offer represents resources allocated to *one* of the
+       * roles managed by the scheduler. (Therefore, each
+       * `Offer.resources[i].allocation_info` will match the
+       * top level `Offer.allocation_info`).
+       * </pre>
+       */
+      public Builder clearAllocationInfo() {
+        if (allocationInfoBuilder_ == null) {
+          allocationInfo_ = org.apache.mesos.v1.Protos.Resource.AllocationInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          allocationInfoBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000400);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.AllocationInfo allocation_info = 10;</code>
+       *
+       * <pre>
+       * An offer represents resources allocated to *one* of the
+       * roles managed by the scheduler. (Therefore, each
+       * `Offer.resources[i].allocation_info` will match the
+       * top level `Offer.allocation_info`).
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Resource.AllocationInfo.Builder getAllocationInfoBuilder() {
+        bitField0_ |= 0x00000400;
+        onChanged();
+        return getAllocationInfoFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.AllocationInfo allocation_info = 10;</code>
+       *
+       * <pre>
+       * An offer represents resources allocated to *one* of the
+       * roles managed by the scheduler. (Therefore, each
+       * `Offer.resources[i].allocation_info` will match the
+       * top level `Offer.allocation_info`).
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Resource.AllocationInfoOrBuilder getAllocationInfoOrBuilder() {
+        if (allocationInfoBuilder_ != null) {
+          return allocationInfoBuilder_.getMessageOrBuilder();
+        } else {
+          return allocationInfo_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Resource.AllocationInfo allocation_info = 10;</code>
+       *
+       * <pre>
+       * An offer represents resources allocated to *one* of the
+       * roles managed by the scheduler. (Therefore, each
+       * `Offer.resources[i].allocation_info` will match the
+       * top level `Offer.allocation_info`).
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Resource.AllocationInfo, org.apache.mesos.v1.Protos.Resource.AllocationInfo.Builder, org.apache.mesos.v1.Protos.Resource.AllocationInfoOrBuilder> 
+          getAllocationInfoFieldBuilder() {
+        if (allocationInfoBuilder_ == null) {
+          allocationInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Resource.AllocationInfo, org.apache.mesos.v1.Protos.Resource.AllocationInfo.Builder, org.apache.mesos.v1.Protos.Resource.AllocationInfoOrBuilder>(
+                  allocationInfo_,
+                  getParentForChildren(),
+                  isClean());
+          allocationInfo_ = null;
+        }
+        return allocationInfoBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.Offer)
+    }
+
+    static {
+      defaultInstance = new Offer(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.Offer)
+  }
+
+  public interface InverseOfferOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required .mesos.v1.OfferID id = 1;
+    /**
+     * <code>required .mesos.v1.OfferID id = 1;</code>
+     *
+     * <pre>
+     * This is the same OfferID as found in normal offers, which allows
+     * re-use of some of the OfferID-only messages.
+     * </pre>
+     */
+    boolean hasId();
+    /**
+     * <code>required .mesos.v1.OfferID id = 1;</code>
+     *
+     * <pre>
+     * This is the same OfferID as found in normal offers, which allows
+     * re-use of some of the OfferID-only messages.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.OfferID getId();
+    /**
+     * <code>required .mesos.v1.OfferID id = 1;</code>
+     *
+     * <pre>
+     * This is the same OfferID as found in normal offers, which allows
+     * re-use of some of the OfferID-only messages.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.OfferIDOrBuilder getIdOrBuilder();
+
+    // optional .mesos.v1.URL url = 2;
+    /**
+     * <code>optional .mesos.v1.URL url = 2;</code>
+     *
+     * <pre>
+     * URL for reaching the agent running on the host.  This enables some
+     * optimizations as described in MESOS-3012, such as allowing the
+     * scheduler driver to bypass the master and talk directly with an agent.
+     * </pre>
+     */
+    boolean hasUrl();
+    /**
+     * <code>optional .mesos.v1.URL url = 2;</code>
+     *
+     * <pre>
+     * URL for reaching the agent running on the host.  This enables some
+     * optimizations as described in MESOS-3012, such as allowing the
+     * scheduler driver to bypass the master and talk directly with an agent.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.URL getUrl();
+    /**
+     * <code>optional .mesos.v1.URL url = 2;</code>
+     *
+     * <pre>
+     * URL for reaching the agent running on the host.  This enables some
+     * optimizations as described in MESOS-3012, such as allowing the
+     * scheduler driver to bypass the master and talk directly with an agent.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.URLOrBuilder getUrlOrBuilder();
+
+    // required .mesos.v1.FrameworkID framework_id = 3;
+    /**
+     * <code>required .mesos.v1.FrameworkID framework_id = 3;</code>
+     *
+     * <pre>
+     * The framework that should release its resources.
+     * If no specifics are provided (i.e. which agent), all the framework's
+     * resources are requested back.
+     * </pre>
+     */
+    boolean hasFrameworkId();
+    /**
+     * <code>required .mesos.v1.FrameworkID framework_id = 3;</code>
+     *
+     * <pre>
+     * The framework that should release its resources.
+     * If no specifics are provided (i.e. which agent), all the framework's
+     * resources are requested back.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.FrameworkID getFrameworkId();
+    /**
+     * <code>required .mesos.v1.FrameworkID framework_id = 3;</code>
+     *
+     * <pre>
+     * The framework that should release its resources.
+     * If no specifics are provided (i.e. which agent), all the framework's
+     * resources are requested back.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.FrameworkIDOrBuilder getFrameworkIdOrBuilder();
+
+    // optional .mesos.v1.AgentID agent_id = 4;
+    /**
+     * <code>optional .mesos.v1.AgentID agent_id = 4;</code>
+     *
+     * <pre>
+     * Specified if the resources need to be released from a particular agent.
+     * All the framework's resources on this agent are requested back,
+     * unless further qualified by the `resources` field.
+     * </pre>
+     */
+    boolean hasAgentId();
+    /**
+     * <code>optional .mesos.v1.AgentID agent_id = 4;</code>
+     *
+     * <pre>
+     * Specified if the resources need to be released from a particular agent.
+     * All the framework's resources on this agent are requested back,
+     * unless further qualified by the `resources` field.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.AgentID getAgentId();
+    /**
+     * <code>optional .mesos.v1.AgentID agent_id = 4;</code>
+     *
+     * <pre>
+     * Specified if the resources need to be released from a particular agent.
+     * All the framework's resources on this agent are requested back,
+     * unless further qualified by the `resources` field.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.AgentIDOrBuilder getAgentIdOrBuilder();
+
+    // required .mesos.v1.Unavailability unavailability = 5;
+    /**
+     * <code>required .mesos.v1.Unavailability unavailability = 5;</code>
+     *
+     * <pre>
+     * This InverseOffer represents a planned unavailability event in the
+     * specified interval.  Any tasks running on the given framework or agent
+     * may be killed when the interval arrives.  Therefore, frameworks should
+     * aim to gracefully terminate tasks prior to the arrival of the interval.
+     *
+     * For reserved resources, the resources are expected to be returned to the
+     * framework after the unavailability interval.  This is an expectation,
+     * not a guarantee.  For example, if the unavailability duration is not set,
+     * the resources may be removed permanently.
+     *
+     * For other resources, there is no guarantee that requested resources will
+     * be returned after the unavailability interval.  The allocator has no
+     * obligation to re-offer these resources to the prior framework after
+     * the unavailability.
+     * </pre>
+     */
+    boolean hasUnavailability();
+    /**
+     * <code>required .mesos.v1.Unavailability unavailability = 5;</code>
+     *
+     * <pre>
+     * This InverseOffer represents a planned unavailability event in the
+     * specified interval.  Any tasks running on the given framework or agent
+     * may be killed when the interval arrives.  Therefore, frameworks should
+     * aim to gracefully terminate tasks prior to the arrival of the interval.
+     *
+     * For reserved resources, the resources are expected to be returned to the
+     * framework after the unavailability interval.  This is an expectation,
+     * not a guarantee.  For example, if the unavailability duration is not set,
+     * the resources may be removed permanently.
+     *
+     * For other resources, there is no guarantee that requested resources will
+     * be returned after the unavailability interval.  The allocator has no
+     * obligation to re-offer these resources to the prior framework after
+     * the unavailability.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.Unavailability getUnavailability();
+    /**
+     * <code>required .mesos.v1.Unavailability unavailability = 5;</code>
+     *
+     * <pre>
+     * This InverseOffer represents a planned unavailability event in the
+     * specified interval.  Any tasks running on the given framework or agent
+     * may be killed when the interval arrives.  Therefore, frameworks should
+     * aim to gracefully terminate tasks prior to the arrival of the interval.
+     *
+     * For reserved resources, the resources are expected to be returned to the
+     * framework after the unavailability interval.  This is an expectation,
+     * not a guarantee.  For example, if the unavailability duration is not set,
+     * the resources may be removed permanently.
+     *
+     * For other resources, there is no guarantee that requested resources will
+     * be returned after the unavailability interval.  The allocator has no
+     * obligation to re-offer these resources to the prior framework after
+     * the unavailability.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.UnavailabilityOrBuilder getUnavailabilityOrBuilder();
+
+    // repeated .mesos.v1.Resource resources = 6;
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 6;</code>
+     *
+     * <pre>
+     * A list of resources being requested back from the framework,
+     * on the agent identified by `agent_id`.  If no resources are specified
+     * then all resources are being requested back.  For the purpose of
+     * maintenance, this field is always empty (maintenance always requests
+     * all resources back).
+     * </pre>
+     */
+    java.util.List<org.apache.mesos.v1.Protos.Resource> 
+        getResourcesList();
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 6;</code>
+     *
+     * <pre>
+     * A list of resources being requested back from the framework,
+     * on the agent identified by `agent_id`.  If no resources are specified
+     * then all resources are being requested back.  For the purpose of
+     * maintenance, this field is always empty (maintenance always requests
+     * all resources back).
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.Resource getResources(int index);
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 6;</code>
+     *
+     * <pre>
+     * A list of resources being requested back from the framework,
+     * on the agent identified by `agent_id`.  If no resources are specified
+     * then all resources are being requested back.  For the purpose of
+     * maintenance, this field is always empty (maintenance always requests
+     * all resources back).
+     * </pre>
+     */
+    int getResourcesCount();
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 6;</code>
+     *
+     * <pre>
+     * A list of resources being requested back from the framework,
+     * on the agent identified by `agent_id`.  If no resources are specified
+     * then all resources are being requested back.  For the purpose of
+     * maintenance, this field is always empty (maintenance always requests
+     * all resources back).
+     * </pre>
+     */
+    java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+        getResourcesOrBuilderList();
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 6;</code>
+     *
+     * <pre>
+     * A list of resources being requested back from the framework,
+     * on the agent identified by `agent_id`.  If no resources are specified
+     * then all resources are being requested back.  For the purpose of
+     * maintenance, this field is always empty (maintenance always requests
+     * all resources back).
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.ResourceOrBuilder getResourcesOrBuilder(
+        int index);
+  }
+  /**
+   * Protobuf type {@code mesos.v1.InverseOffer}
+   *
+   * <pre>
+   **
+   * A request to return some resources occupied by a framework.
+   * </pre>
+   */
+  public static final class InverseOffer extends
+      com.google.protobuf.GeneratedMessage
+      implements InverseOfferOrBuilder {
+    // Use InverseOffer.newBuilder() to construct.
+    private InverseOffer(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private InverseOffer(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final InverseOffer defaultInstance;
+    public static InverseOffer getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public InverseOffer getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private InverseOffer(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              org.apache.mesos.v1.Protos.OfferID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                subBuilder = id_.toBuilder();
+              }
+              id_ = input.readMessage(org.apache.mesos.v1.Protos.OfferID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(id_);
+                id_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+            case 18: {
+              org.apache.mesos.v1.Protos.URL.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = url_.toBuilder();
+              }
+              url_ = input.readMessage(org.apache.mesos.v1.Protos.URL.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(url_);
+                url_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+            case 26: {
+              org.apache.mesos.v1.Protos.FrameworkID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                subBuilder = frameworkId_.toBuilder();
+              }
+              frameworkId_ = input.readMessage(org.apache.mesos.v1.Protos.FrameworkID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(frameworkId_);
+                frameworkId_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000004;
+              break;
+            }
+            case 34: {
+              org.apache.mesos.v1.Protos.AgentID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                subBuilder = agentId_.toBuilder();
+              }
+              agentId_ = input.readMessage(org.apache.mesos.v1.Protos.AgentID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(agentId_);
+                agentId_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000008;
+              break;
+            }
+            case 42: {
+              org.apache.mesos.v1.Protos.Unavailability.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000010) == 0x00000010)) {
+                subBuilder = unavailability_.toBuilder();
+              }
+              unavailability_ = input.readMessage(org.apache.mesos.v1.Protos.Unavailability.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(unavailability_);
+                unavailability_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000010;
+              break;
+            }
+            case 50: {
+              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
+                resources_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Resource>();
+                mutable_bitField0_ |= 0x00000020;
+              }
+              resources_.add(input.readMessage(org.apache.mesos.v1.Protos.Resource.PARSER, extensionRegistry));
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
+          resources_ = java.util.Collections.unmodifiableList(resources_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_InverseOffer_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_InverseOffer_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.InverseOffer.class, org.apache.mesos.v1.Protos.InverseOffer.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<InverseOffer> PARSER =
+        new com.google.protobuf.AbstractParser<InverseOffer>() {
+      public InverseOffer parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new InverseOffer(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<InverseOffer> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required .mesos.v1.OfferID id = 1;
+    public static final int ID_FIELD_NUMBER = 1;
+    private org.apache.mesos.v1.Protos.OfferID id_;
+    /**
+     * <code>required .mesos.v1.OfferID id = 1;</code>
+     *
+     * <pre>
+     * This is the same OfferID as found in normal offers, which allows
+     * re-use of some of the OfferID-only messages.
+     * </pre>
+     */
+    public boolean hasId() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required .mesos.v1.OfferID id = 1;</code>
+     *
+     * <pre>
+     * This is the same OfferID as found in normal offers, which allows
+     * re-use of some of the OfferID-only messages.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.OfferID getId() {
+      return id_;
+    }
+    /**
+     * <code>required .mesos.v1.OfferID id = 1;</code>
+     *
+     * <pre>
+     * This is the same OfferID as found in normal offers, which allows
+     * re-use of some of the OfferID-only messages.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.OfferIDOrBuilder getIdOrBuilder() {
+      return id_;
+    }
+
+    // optional .mesos.v1.URL url = 2;
+    public static final int URL_FIELD_NUMBER = 2;
+    private org.apache.mesos.v1.Protos.URL url_;
+    /**
+     * <code>optional .mesos.v1.URL url = 2;</code>
+     *
+     * <pre>
+     * URL for reaching the agent running on the host.  This enables some
+     * optimizations as described in MESOS-3012, such as allowing the
+     * scheduler driver to bypass the master and talk directly with an agent.
+     * </pre>
+     */
+    public boolean hasUrl() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional .mesos.v1.URL url = 2;</code>
+     *
+     * <pre>
+     * URL for reaching the agent running on the host.  This enables some
+     * optimizations as described in MESOS-3012, such as allowing the
+     * scheduler driver to bypass the master and talk directly with an agent.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.URL getUrl() {
+      return url_;
+    }
+    /**
+     * <code>optional .mesos.v1.URL url = 2;</code>
+     *
+     * <pre>
+     * URL for reaching the agent running on the host.  This enables some
+     * optimizations as described in MESOS-3012, such as allowing the
+     * scheduler driver to bypass the master and talk directly with an agent.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.URLOrBuilder getUrlOrBuilder() {
+      return url_;
+    }
+
+    // required .mesos.v1.FrameworkID framework_id = 3;
+    public static final int FRAMEWORK_ID_FIELD_NUMBER = 3;
+    private org.apache.mesos.v1.Protos.FrameworkID frameworkId_;
+    /**
+     * <code>required .mesos.v1.FrameworkID framework_id = 3;</code>
+     *
+     * <pre>
+     * The framework that should release its resources.
+     * If no specifics are provided (i.e. which agent), all the framework's
+     * resources are requested back.
+     * </pre>
+     */
+    public boolean hasFrameworkId() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>required .mesos.v1.FrameworkID framework_id = 3;</code>
+     *
+     * <pre>
+     * The framework that should release its resources.
+     * If no specifics are provided (i.e. which agent), all the framework's
+     * resources are requested back.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.FrameworkID getFrameworkId() {
+      return frameworkId_;
+    }
+    /**
+     * <code>required .mesos.v1.FrameworkID framework_id = 3;</code>
+     *
+     * <pre>
+     * The framework that should release its resources.
+     * If no specifics are provided (i.e. which agent), all the framework's
+     * resources are requested back.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.FrameworkIDOrBuilder getFrameworkIdOrBuilder() {
+      return frameworkId_;
+    }
+
+    // optional .mesos.v1.AgentID agent_id = 4;
+    public static final int AGENT_ID_FIELD_NUMBER = 4;
+    private org.apache.mesos.v1.Protos.AgentID agentId_;
+    /**
+     * <code>optional .mesos.v1.AgentID agent_id = 4;</code>
+     *
+     * <pre>
+     * Specified if the resources need to be released from a particular agent.
+     * All the framework's resources on this agent are requested back,
+     * unless further qualified by the `resources` field.
+     * </pre>
+     */
+    public boolean hasAgentId() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional .mesos.v1.AgentID agent_id = 4;</code>
+     *
+     * <pre>
+     * Specified if the resources need to be released from a particular agent.
+     * All the framework's resources on this agent are requested back,
+     * unless further qualified by the `resources` field.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.AgentID getAgentId() {
+      return agentId_;
+    }
+    /**
+     * <code>optional .mesos.v1.AgentID agent_id = 4;</code>
+     *
+     * <pre>
+     * Specified if the resources need to be released from a particular agent.
+     * All the framework's resources on this agent are requested back,
+     * unless further qualified by the `resources` field.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.AgentIDOrBuilder getAgentIdOrBuilder() {
+      return agentId_;
+    }
+
+    // required .mesos.v1.Unavailability unavailability = 5;
+    public static final int UNAVAILABILITY_FIELD_NUMBER = 5;
+    private org.apache.mesos.v1.Protos.Unavailability unavailability_;
+    /**
+     * <code>required .mesos.v1.Unavailability unavailability = 5;</code>
+     *
+     * <pre>
+     * This InverseOffer represents a planned unavailability event in the
+     * specified interval.  Any tasks running on the given framework or agent
+     * may be killed when the interval arrives.  Therefore, frameworks should
+     * aim to gracefully terminate tasks prior to the arrival of the interval.
+     *
+     * For reserved resources, the resources are expected to be returned to the
+     * framework after the unavailability interval.  This is an expectation,
+     * not a guarantee.  For example, if the unavailability duration is not set,
+     * the resources may be removed permanently.
+     *
+     * For other resources, there is no guarantee that requested resources will
+     * be returned after the unavailability interval.  The allocator has no
+     * obligation to re-offer these resources to the prior framework after
+     * the unavailability.
+     * </pre>
+     */
+    public boolean hasUnavailability() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>required .mesos.v1.Unavailability unavailability = 5;</code>
+     *
+     * <pre>
+     * This InverseOffer represents a planned unavailability event in the
+     * specified interval.  Any tasks running on the given framework or agent
+     * may be killed when the interval arrives.  Therefore, frameworks should
+     * aim to gracefully terminate tasks prior to the arrival of the interval.
+     *
+     * For reserved resources, the resources are expected to be returned to the
+     * framework after the unavailability interval.  This is an expectation,
+     * not a guarantee.  For example, if the unavailability duration is not set,
+     * the resources may be removed permanently.
+     *
+     * For other resources, there is no guarantee that requested resources will
+     * be returned after the unavailability interval.  The allocator has no
+     * obligation to re-offer these resources to the prior framework after
+     * the unavailability.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.Unavailability getUnavailability() {
+      return unavailability_;
+    }
+    /**
+     * <code>required .mesos.v1.Unavailability unavailability = 5;</code>
+     *
+     * <pre>
+     * This InverseOffer represents a planned unavailability event in the
+     * specified interval.  Any tasks running on the given framework or agent
+     * may be killed when the interval arrives.  Therefore, frameworks should
+     * aim to gracefully terminate tasks prior to the arrival of the interval.
+     *
+     * For reserved resources, the resources are expected to be returned to the
+     * framework after the unavailability interval.  This is an expectation,
+     * not a guarantee.  For example, if the unavailability duration is not set,
+     * the resources may be removed permanently.
+     *
+     * For other resources, there is no guarantee that requested resources will
+     * be returned after the unavailability interval.  The allocator has no
+     * obligation to re-offer these resources to the prior framework after
+     * the unavailability.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.UnavailabilityOrBuilder getUnavailabilityOrBuilder() {
+      return unavailability_;
+    }
+
+    // repeated .mesos.v1.Resource resources = 6;
+    public static final int RESOURCES_FIELD_NUMBER = 6;
+    private java.util.List<org.apache.mesos.v1.Protos.Resource> resources_;
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 6;</code>
+     *
+     * <pre>
+     * A list of resources being requested back from the framework,
+     * on the agent identified by `agent_id`.  If no resources are specified
+     * then all resources are being requested back.  For the purpose of
+     * maintenance, this field is always empty (maintenance always requests
+     * all resources back).
+     * </pre>
+     */
+    public java.util.List<org.apache.mesos.v1.Protos.Resource> getResourcesList() {
+      return resources_;
+    }
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 6;</code>
+     *
+     * <pre>
+     * A list of resources being requested back from the framework,
+     * on the agent identified by `agent_id`.  If no resources are specified
+     * then all resources are being requested back.  For the purpose of
+     * maintenance, this field is always empty (maintenance always requests
+     * all resources back).
+     * </pre>
+     */
+    public java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+        getResourcesOrBuilderList() {
+      return resources_;
+    }
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 6;</code>
+     *
+     * <pre>
+     * A list of resources being requested back from the framework,
+     * on the agent identified by `agent_id`.  If no resources are specified
+     * then all resources are being requested back.  For the purpose of
+     * maintenance, this field is always empty (maintenance always requests
+     * all resources back).
+     * </pre>
+     */
+    public int getResourcesCount() {
+      return resources_.size();
+    }
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 6;</code>
+     *
+     * <pre>
+     * A list of resources being requested back from the framework,
+     * on the agent identified by `agent_id`.  If no resources are specified
+     * then all resources are being requested back.  For the purpose of
+     * maintenance, this field is always empty (maintenance always requests
+     * all resources back).
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.Resource getResources(int index) {
+      return resources_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 6;</code>
+     *
+     * <pre>
+     * A list of resources being requested back from the framework,
+     * on the agent identified by `agent_id`.  If no resources are specified
+     * then all resources are being requested back.  For the purpose of
+     * maintenance, this field is always empty (maintenance always requests
+     * all resources back).
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.ResourceOrBuilder getResourcesOrBuilder(
+        int index) {
+      return resources_.get(index);
+    }
+
+    private void initFields() {
+      id_ = org.apache.mesos.v1.Protos.OfferID.getDefaultInstance();
+      url_ = org.apache.mesos.v1.Protos.URL.getDefaultInstance();
+      frameworkId_ = org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance();
+      agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+      unavailability_ = org.apache.mesos.v1.Protos.Unavailability.getDefaultInstance();
+      resources_ = java.util.Collections.emptyList();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasId()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasFrameworkId()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasUnavailability()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!getId().isInitialized()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (hasUrl()) {
+        if (!getUrl().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (!getFrameworkId().isInitialized()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (hasAgentId()) {
+        if (!getAgentId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (!getUnavailability().isInitialized()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      for (int i = 0; i < getResourcesCount(); i++) {
+        if (!getResources(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeMessage(1, id_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(2, url_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeMessage(3, frameworkId_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeMessage(4, agentId_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeMessage(5, unavailability_);
+      }
+      for (int i = 0; i < resources_.size(); i++) {
+        output.writeMessage(6, resources_.get(i));
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, id_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, url_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, frameworkId_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, agentId_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(5, unavailability_);
+      }
+      for (int i = 0; i < resources_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(6, resources_.get(i));
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.InverseOffer parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.InverseOffer parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.InverseOffer parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.InverseOffer parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.InverseOffer parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.InverseOffer parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.InverseOffer parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.InverseOffer parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.InverseOffer parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.InverseOffer parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.InverseOffer prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.InverseOffer}
+     *
+     * <pre>
+     **
+     * A request to return some resources occupied by a framework.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.InverseOfferOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_InverseOffer_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_InverseOffer_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.InverseOffer.class, org.apache.mesos.v1.Protos.InverseOffer.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.InverseOffer.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getIdFieldBuilder();
+          getUrlFieldBuilder();
+          getFrameworkIdFieldBuilder();
+          getAgentIdFieldBuilder();
+          getUnavailabilityFieldBuilder();
+          getResourcesFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (idBuilder_ == null) {
+          id_ = org.apache.mesos.v1.Protos.OfferID.getDefaultInstance();
+        } else {
+          idBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (urlBuilder_ == null) {
+          url_ = org.apache.mesos.v1.Protos.URL.getDefaultInstance();
+        } else {
+          urlBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        if (frameworkIdBuilder_ == null) {
+          frameworkId_ = org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance();
+        } else {
+          frameworkIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        if (agentIdBuilder_ == null) {
+          agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+        } else {
+          agentIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        if (unavailabilityBuilder_ == null) {
+          unavailability_ = org.apache.mesos.v1.Protos.Unavailability.getDefaultInstance();
+        } else {
+          unavailabilityBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        if (resourcesBuilder_ == null) {
+          resources_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000020);
+        } else {
+          resourcesBuilder_.clear();
+        }
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_InverseOffer_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.InverseOffer getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.InverseOffer.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.InverseOffer build() {
+        org.apache.mesos.v1.Protos.InverseOffer result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.InverseOffer buildPartial() {
+        org.apache.mesos.v1.Protos.InverseOffer result = new org.apache.mesos.v1.Protos.InverseOffer(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        if (idBuilder_ == null) {
+          result.id_ = id_;
+        } else {
+          result.id_ = idBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (urlBuilder_ == null) {
+          result.url_ = url_;
+        } else {
+          result.url_ = urlBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        if (frameworkIdBuilder_ == null) {
+          result.frameworkId_ = frameworkId_;
+        } else {
+          result.frameworkId_ = frameworkIdBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        if (agentIdBuilder_ == null) {
+          result.agentId_ = agentId_;
+        } else {
+          result.agentId_ = agentIdBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        if (unavailabilityBuilder_ == null) {
+          result.unavailability_ = unavailability_;
+        } else {
+          result.unavailability_ = unavailabilityBuilder_.build();
+        }
+        if (resourcesBuilder_ == null) {
+          if (((bitField0_ & 0x00000020) == 0x00000020)) {
+            resources_ = java.util.Collections.unmodifiableList(resources_);
+            bitField0_ = (bitField0_ & ~0x00000020);
+          }
+          result.resources_ = resources_;
+        } else {
+          result.resources_ = resourcesBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.InverseOffer) {
+          return mergeFrom((org.apache.mesos.v1.Protos.InverseOffer)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.InverseOffer other) {
+        if (other == org.apache.mesos.v1.Protos.InverseOffer.getDefaultInstance()) return this;
+        if (other.hasId()) {
+          mergeId(other.getId());
+        }
+        if (other.hasUrl()) {
+          mergeUrl(other.getUrl());
+        }
+        if (other.hasFrameworkId()) {
+          mergeFrameworkId(other.getFrameworkId());
+        }
+        if (other.hasAgentId()) {
+          mergeAgentId(other.getAgentId());
+        }
+        if (other.hasUnavailability()) {
+          mergeUnavailability(other.getUnavailability());
+        }
+        if (resourcesBuilder_ == null) {
+          if (!other.resources_.isEmpty()) {
+            if (resources_.isEmpty()) {
+              resources_ = other.resources_;
+              bitField0_ = (bitField0_ & ~0x00000020);
+            } else {
+              ensureResourcesIsMutable();
+              resources_.addAll(other.resources_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.resources_.isEmpty()) {
+            if (resourcesBuilder_.isEmpty()) {
+              resourcesBuilder_.dispose();
+              resourcesBuilder_ = null;
+              resources_ = other.resources_;
+              bitField0_ = (bitField0_ & ~0x00000020);
+              resourcesBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getResourcesFieldBuilder() : null;
+            } else {
+              resourcesBuilder_.addAllMessages(other.resources_);
+            }
+          }
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasId()) {
+          
+          return false;
+        }
+        if (!hasFrameworkId()) {
+          
+          return false;
+        }
+        if (!hasUnavailability()) {
+          
+          return false;
+        }
+        if (!getId().isInitialized()) {
+          
+          return false;
+        }
+        if (hasUrl()) {
+          if (!getUrl().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (!getFrameworkId().isInitialized()) {
+          
+          return false;
+        }
+        if (hasAgentId()) {
+          if (!getAgentId().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (!getUnavailability().isInitialized()) {
+          
+          return false;
+        }
+        for (int i = 0; i < getResourcesCount(); i++) {
+          if (!getResources(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.InverseOffer parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.InverseOffer) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required .mesos.v1.OfferID id = 1;
+      private org.apache.mesos.v1.Protos.OfferID id_ = org.apache.mesos.v1.Protos.OfferID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.OfferID, org.apache.mesos.v1.Protos.OfferID.Builder, org.apache.mesos.v1.Protos.OfferIDOrBuilder> idBuilder_;
+      /**
+       * <code>required .mesos.v1.OfferID id = 1;</code>
+       *
+       * <pre>
+       * This is the same OfferID as found in normal offers, which allows
+       * re-use of some of the OfferID-only messages.
+       * </pre>
+       */
+      public boolean hasId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.v1.OfferID id = 1;</code>
+       *
+       * <pre>
+       * This is the same OfferID as found in normal offers, which allows
+       * re-use of some of the OfferID-only messages.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.OfferID getId() {
+        if (idBuilder_ == null) {
+          return id_;
+        } else {
+          return idBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>required .mesos.v1.OfferID id = 1;</code>
+       *
+       * <pre>
+       * This is the same OfferID as found in normal offers, which allows
+       * re-use of some of the OfferID-only messages.
+       * </pre>
+       */
+      public Builder setId(org.apache.mesos.v1.Protos.OfferID value) {
+        if (idBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          id_ = value;
+          onChanged();
+        } else {
+          idBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.OfferID id = 1;</code>
+       *
+       * <pre>
+       * This is the same OfferID as found in normal offers, which allows
+       * re-use of some of the OfferID-only messages.
+       * </pre>
+       */
+      public Builder setId(
+          org.apache.mesos.v1.Protos.OfferID.Builder builderForValue) {
+        if (idBuilder_ == null) {
+          id_ = builderForValue.build();
+          onChanged();
+        } else {
+          idBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.OfferID id = 1;</code>
+       *
+       * <pre>
+       * This is the same OfferID as found in normal offers, which allows
+       * re-use of some of the OfferID-only messages.
+       * </pre>
+       */
+      public Builder mergeId(org.apache.mesos.v1.Protos.OfferID value) {
+        if (idBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001) &&
+              id_ != org.apache.mesos.v1.Protos.OfferID.getDefaultInstance()) {
+            id_ =
+              org.apache.mesos.v1.Protos.OfferID.newBuilder(id_).mergeFrom(value).buildPartial();
+          } else {
+            id_ = value;
+          }
+          onChanged();
+        } else {
+          idBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.OfferID id = 1;</code>
+       *
+       * <pre>
+       * This is the same OfferID as found in normal offers, which allows
+       * re-use of some of the OfferID-only messages.
+       * </pre>
+       */
+      public Builder clearId() {
+        if (idBuilder_ == null) {
+          id_ = org.apache.mesos.v1.Protos.OfferID.getDefaultInstance();
+          onChanged();
+        } else {
+          idBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.OfferID id = 1;</code>
+       *
+       * <pre>
+       * This is the same OfferID as found in normal offers, which allows
+       * re-use of some of the OfferID-only messages.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.OfferID.Builder getIdBuilder() {
+        bitField0_ |= 0x00000001;
+        onChanged();
+        return getIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>required .mesos.v1.OfferID id = 1;</code>
+       *
+       * <pre>
+       * This is the same OfferID as found in normal offers, which allows
+       * re-use of some of the OfferID-only messages.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.OfferIDOrBuilder getIdOrBuilder() {
+        if (idBuilder_ != null) {
+          return idBuilder_.getMessageOrBuilder();
+        } else {
+          return id_;
+        }
+      }
+      /**
+       * <code>required .mesos.v1.OfferID id = 1;</code>
+       *
+       * <pre>
+       * This is the same OfferID as found in normal offers, which allows
+       * re-use of some of the OfferID-only messages.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.OfferID, org.apache.mesos.v1.Protos.OfferID.Builder, org.apache.mesos.v1.Protos.OfferIDOrBuilder> 
+          getIdFieldBuilder() {
+        if (idBuilder_ == null) {
+          idBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.OfferID, org.apache.mesos.v1.Protos.OfferID.Builder, org.apache.mesos.v1.Protos.OfferIDOrBuilder>(
+                  id_,
+                  getParentForChildren(),
+                  isClean());
+          id_ = null;
+        }
+        return idBuilder_;
+      }
+
+      // optional .mesos.v1.URL url = 2;
+      private org.apache.mesos.v1.Protos.URL url_ = org.apache.mesos.v1.Protos.URL.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.URL, org.apache.mesos.v1.Protos.URL.Builder, org.apache.mesos.v1.Protos.URLOrBuilder> urlBuilder_;
+      /**
+       * <code>optional .mesos.v1.URL url = 2;</code>
+       *
+       * <pre>
+       * URL for reaching the agent running on the host.  This enables some
+       * optimizations as described in MESOS-3012, such as allowing the
+       * scheduler driver to bypass the master and talk directly with an agent.
+       * </pre>
+       */
+      public boolean hasUrl() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.v1.URL url = 2;</code>
+       *
+       * <pre>
+       * URL for reaching the agent running on the host.  This enables some
+       * optimizations as described in MESOS-3012, such as allowing the
+       * scheduler driver to bypass the master and talk directly with an agent.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.URL getUrl() {
+        if (urlBuilder_ == null) {
+          return url_;
+        } else {
+          return urlBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.URL url = 2;</code>
+       *
+       * <pre>
+       * URL for reaching the agent running on the host.  This enables some
+       * optimizations as described in MESOS-3012, such as allowing the
+       * scheduler driver to bypass the master and talk directly with an agent.
+       * </pre>
+       */
+      public Builder setUrl(org.apache.mesos.v1.Protos.URL value) {
+        if (urlBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          url_ = value;
+          onChanged();
+        } else {
+          urlBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.URL url = 2;</code>
+       *
+       * <pre>
+       * URL for reaching the agent running on the host.  This enables some
+       * optimizations as described in MESOS-3012, such as allowing the
+       * scheduler driver to bypass the master and talk directly with an agent.
+       * </pre>
+       */
+      public Builder setUrl(
+          org.apache.mesos.v1.Protos.URL.Builder builderForValue) {
+        if (urlBuilder_ == null) {
+          url_ = builderForValue.build();
+          onChanged();
+        } else {
+          urlBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.URL url = 2;</code>
+       *
+       * <pre>
+       * URL for reaching the agent running on the host.  This enables some
+       * optimizations as described in MESOS-3012, such as allowing the
+       * scheduler driver to bypass the master and talk directly with an agent.
+       * </pre>
+       */
+      public Builder mergeUrl(org.apache.mesos.v1.Protos.URL value) {
+        if (urlBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              url_ != org.apache.mesos.v1.Protos.URL.getDefaultInstance()) {
+            url_ =
+              org.apache.mesos.v1.Protos.URL.newBuilder(url_).mergeFrom(value).buildPartial();
+          } else {
+            url_ = value;
+          }
+          onChanged();
+        } else {
+          urlBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.URL url = 2;</code>
+       *
+       * <pre>
+       * URL for reaching the agent running on the host.  This enables some
+       * optimizations as described in MESOS-3012, such as allowing the
+       * scheduler driver to bypass the master and talk directly with an agent.
+       * </pre>
+       */
+      public Builder clearUrl() {
+        if (urlBuilder_ == null) {
+          url_ = org.apache.mesos.v1.Protos.URL.getDefaultInstance();
+          onChanged();
+        } else {
+          urlBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.URL url = 2;</code>
+       *
+       * <pre>
+       * URL for reaching the agent running on the host.  This enables some
+       * optimizations as described in MESOS-3012, such as allowing the
+       * scheduler driver to bypass the master and talk directly with an agent.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.URL.Builder getUrlBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getUrlFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.URL url = 2;</code>
+       *
+       * <pre>
+       * URL for reaching the agent running on the host.  This enables some
+       * optimizations as described in MESOS-3012, such as allowing the
+       * scheduler driver to bypass the master and talk directly with an agent.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.URLOrBuilder getUrlOrBuilder() {
+        if (urlBuilder_ != null) {
+          return urlBuilder_.getMessageOrBuilder();
+        } else {
+          return url_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.URL url = 2;</code>
+       *
+       * <pre>
+       * URL for reaching the agent running on the host.  This enables some
+       * optimizations as described in MESOS-3012, such as allowing the
+       * scheduler driver to bypass the master and talk directly with an agent.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.URL, org.apache.mesos.v1.Protos.URL.Builder, org.apache.mesos.v1.Protos.URLOrBuilder> 
+          getUrlFieldBuilder() {
+        if (urlBuilder_ == null) {
+          urlBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.URL, org.apache.mesos.v1.Protos.URL.Builder, org.apache.mesos.v1.Protos.URLOrBuilder>(
+                  url_,
+                  getParentForChildren(),
+                  isClean());
+          url_ = null;
+        }
+        return urlBuilder_;
+      }
+
+      // required .mesos.v1.FrameworkID framework_id = 3;
+      private org.apache.mesos.v1.Protos.FrameworkID frameworkId_ = org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.FrameworkID, org.apache.mesos.v1.Protos.FrameworkID.Builder, org.apache.mesos.v1.Protos.FrameworkIDOrBuilder> frameworkIdBuilder_;
+      /**
+       * <code>required .mesos.v1.FrameworkID framework_id = 3;</code>
+       *
+       * <pre>
+       * The framework that should release its resources.
+       * If no specifics are provided (i.e. which agent), all the framework's
+       * resources are requested back.
+       * </pre>
+       */
+      public boolean hasFrameworkId() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>required .mesos.v1.FrameworkID framework_id = 3;</code>
+       *
+       * <pre>
+       * The framework that should release its resources.
+       * If no specifics are provided (i.e. which agent), all the framework's
+       * resources are requested back.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.FrameworkID getFrameworkId() {
+        if (frameworkIdBuilder_ == null) {
+          return frameworkId_;
+        } else {
+          return frameworkIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>required .mesos.v1.FrameworkID framework_id = 3;</code>
+       *
+       * <pre>
+       * The framework that should release its resources.
+       * If no specifics are provided (i.e. which agent), all the framework's
+       * resources are requested back.
+       * </pre>
+       */
+      public Builder setFrameworkId(org.apache.mesos.v1.Protos.FrameworkID value) {
+        if (frameworkIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          frameworkId_ = value;
+          onChanged();
+        } else {
+          frameworkIdBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.FrameworkID framework_id = 3;</code>
+       *
+       * <pre>
+       * The framework that should release its resources.
+       * If no specifics are provided (i.e. which agent), all the framework's
+       * resources are requested back.
+       * </pre>
+       */
+      public Builder setFrameworkId(
+          org.apache.mesos.v1.Protos.FrameworkID.Builder builderForValue) {
+        if (frameworkIdBuilder_ == null) {
+          frameworkId_ = builderForValue.build();
+          onChanged();
+        } else {
+          frameworkIdBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.FrameworkID framework_id = 3;</code>
+       *
+       * <pre>
+       * The framework that should release its resources.
+       * If no specifics are provided (i.e. which agent), all the framework's
+       * resources are requested back.
+       * </pre>
+       */
+      public Builder mergeFrameworkId(org.apache.mesos.v1.Protos.FrameworkID value) {
+        if (frameworkIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) == 0x00000004) &&
+              frameworkId_ != org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance()) {
+            frameworkId_ =
+              org.apache.mesos.v1.Protos.FrameworkID.newBuilder(frameworkId_).mergeFrom(value).buildPartial();
+          } else {
+            frameworkId_ = value;
+          }
+          onChanged();
+        } else {
+          frameworkIdBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.FrameworkID framework_id = 3;</code>
+       *
+       * <pre>
+       * The framework that should release its resources.
+       * If no specifics are provided (i.e. which agent), all the framework's
+       * resources are requested back.
+       * </pre>
+       */
+      public Builder clearFrameworkId() {
+        if (frameworkIdBuilder_ == null) {
+          frameworkId_ = org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance();
+          onChanged();
+        } else {
+          frameworkIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.FrameworkID framework_id = 3;</code>
+       *
+       * <pre>
+       * The framework that should release its resources.
+       * If no specifics are provided (i.e. which agent), all the framework's
+       * resources are requested back.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.FrameworkID.Builder getFrameworkIdBuilder() {
+        bitField0_ |= 0x00000004;
+        onChanged();
+        return getFrameworkIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>required .mesos.v1.FrameworkID framework_id = 3;</code>
+       *
+       * <pre>
+       * The framework that should release its resources.
+       * If no specifics are provided (i.e. which agent), all the framework's
+       * resources are requested back.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.FrameworkIDOrBuilder getFrameworkIdOrBuilder() {
+        if (frameworkIdBuilder_ != null) {
+          return frameworkIdBuilder_.getMessageOrBuilder();
+        } else {
+          return frameworkId_;
+        }
+      }
+      /**
+       * <code>required .mesos.v1.FrameworkID framework_id = 3;</code>
+       *
+       * <pre>
+       * The framework that should release its resources.
+       * If no specifics are provided (i.e. which agent), all the framework's
+       * resources are requested back.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.FrameworkID, org.apache.mesos.v1.Protos.FrameworkID.Builder, org.apache.mesos.v1.Protos.FrameworkIDOrBuilder> 
+          getFrameworkIdFieldBuilder() {
+        if (frameworkIdBuilder_ == null) {
+          frameworkIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.FrameworkID, org.apache.mesos.v1.Protos.FrameworkID.Builder, org.apache.mesos.v1.Protos.FrameworkIDOrBuilder>(
+                  frameworkId_,
+                  getParentForChildren(),
+                  isClean());
+          frameworkId_ = null;
+        }
+        return frameworkIdBuilder_;
+      }
+
+      // optional .mesos.v1.AgentID agent_id = 4;
+      private org.apache.mesos.v1.Protos.AgentID agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.AgentID, org.apache.mesos.v1.Protos.AgentID.Builder, org.apache.mesos.v1.Protos.AgentIDOrBuilder> agentIdBuilder_;
+      /**
+       * <code>optional .mesos.v1.AgentID agent_id = 4;</code>
+       *
+       * <pre>
+       * Specified if the resources need to be released from a particular agent.
+       * All the framework's resources on this agent are requested back,
+       * unless further qualified by the `resources` field.
+       * </pre>
+       */
+      public boolean hasAgentId() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.v1.AgentID agent_id = 4;</code>
+       *
+       * <pre>
+       * Specified if the resources need to be released from a particular agent.
+       * All the framework's resources on this agent are requested back,
+       * unless further qualified by the `resources` field.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.AgentID getAgentId() {
+        if (agentIdBuilder_ == null) {
+          return agentId_;
+        } else {
+          return agentIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.AgentID agent_id = 4;</code>
+       *
+       * <pre>
+       * Specified if the resources need to be released from a particular agent.
+       * All the framework's resources on this agent are requested back,
+       * unless further qualified by the `resources` field.
+       * </pre>
+       */
+      public Builder setAgentId(org.apache.mesos.v1.Protos.AgentID value) {
+        if (agentIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          agentId_ = value;
+          onChanged();
+        } else {
+          agentIdBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.AgentID agent_id = 4;</code>
+       *
+       * <pre>
+       * Specified if the resources need to be released from a particular agent.
+       * All the framework's resources on this agent are requested back,
+       * unless further qualified by the `resources` field.
+       * </pre>
+       */
+      public Builder setAgentId(
+          org.apache.mesos.v1.Protos.AgentID.Builder builderForValue) {
+        if (agentIdBuilder_ == null) {
+          agentId_ = builderForValue.build();
+          onChanged();
+        } else {
+          agentIdBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.AgentID agent_id = 4;</code>
+       *
+       * <pre>
+       * Specified if the resources need to be released from a particular agent.
+       * All the framework's resources on this agent are requested back,
+       * unless further qualified by the `resources` field.
+       * </pre>
+       */
+      public Builder mergeAgentId(org.apache.mesos.v1.Protos.AgentID value) {
+        if (agentIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008) &&
+              agentId_ != org.apache.mesos.v1.Protos.AgentID.getDefaultInstance()) {
+            agentId_ =
+              org.apache.mesos.v1.Protos.AgentID.newBuilder(agentId_).mergeFrom(value).buildPartial();
+          } else {
+            agentId_ = value;
+          }
+          onChanged();
+        } else {
+          agentIdBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.AgentID agent_id = 4;</code>
+       *
+       * <pre>
+       * Specified if the resources need to be released from a particular agent.
+       * All the framework's resources on this agent are requested back,
+       * unless further qualified by the `resources` field.
+       * </pre>
+       */
+      public Builder clearAgentId() {
+        if (agentIdBuilder_ == null) {
+          agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+          onChanged();
+        } else {
+          agentIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.AgentID agent_id = 4;</code>
+       *
+       * <pre>
+       * Specified if the resources need to be released from a particular agent.
+       * All the framework's resources on this agent are requested back,
+       * unless further qualified by the `resources` field.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.AgentID.Builder getAgentIdBuilder() {
+        bitField0_ |= 0x00000008;
+        onChanged();
+        return getAgentIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.AgentID agent_id = 4;</code>
+       *
+       * <pre>
+       * Specified if the resources need to be released from a particular agent.
+       * All the framework's resources on this agent are requested back,
+       * unless further qualified by the `resources` field.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.AgentIDOrBuilder getAgentIdOrBuilder() {
+        if (agentIdBuilder_ != null) {
+          return agentIdBuilder_.getMessageOrBuilder();
+        } else {
+          return agentId_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.AgentID agent_id = 4;</code>
+       *
+       * <pre>
+       * Specified if the resources need to be released from a particular agent.
+       * All the framework's resources on this agent are requested back,
+       * unless further qualified by the `resources` field.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.AgentID, org.apache.mesos.v1.Protos.AgentID.Builder, org.apache.mesos.v1.Protos.AgentIDOrBuilder> 
+          getAgentIdFieldBuilder() {
+        if (agentIdBuilder_ == null) {
+          agentIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.AgentID, org.apache.mesos.v1.Protos.AgentID.Builder, org.apache.mesos.v1.Protos.AgentIDOrBuilder>(
+                  agentId_,
+                  getParentForChildren(),
+                  isClean());
+          agentId_ = null;
+        }
+        return agentIdBuilder_;
+      }
+
+      // required .mesos.v1.Unavailability unavailability = 5;
+      private org.apache.mesos.v1.Protos.Unavailability unavailability_ = org.apache.mesos.v1.Protos.Unavailability.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Unavailability, org.apache.mesos.v1.Protos.Unavailability.Builder, org.apache.mesos.v1.Protos.UnavailabilityOrBuilder> unavailabilityBuilder_;
+      /**
+       * <code>required .mesos.v1.Unavailability unavailability = 5;</code>
+       *
+       * <pre>
+       * This InverseOffer represents a planned unavailability event in the
+       * specified interval.  Any tasks running on the given framework or agent
+       * may be killed when the interval arrives.  Therefore, frameworks should
+       * aim to gracefully terminate tasks prior to the arrival of the interval.
+       *
+       * For reserved resources, the resources are expected to be returned to the
+       * framework after the unavailability interval.  This is an expectation,
+       * not a guarantee.  For example, if the unavailability duration is not set,
+       * the resources may be removed permanently.
+       *
+       * For other resources, there is no guarantee that requested resources will
+       * be returned after the unavailability interval.  The allocator has no
+       * obligation to re-offer these resources to the prior framework after
+       * the unavailability.
+       * </pre>
+       */
+      public boolean hasUnavailability() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>required .mesos.v1.Unavailability unavailability = 5;</code>
+       *
+       * <pre>
+       * This InverseOffer represents a planned unavailability event in the
+       * specified interval.  Any tasks running on the given framework or agent
+       * may be killed when the interval arrives.  Therefore, frameworks should
+       * aim to gracefully terminate tasks prior to the arrival of the interval.
+       *
+       * For reserved resources, the resources are expected to be returned to the
+       * framework after the unavailability interval.  This is an expectation,
+       * not a guarantee.  For example, if the unavailability duration is not set,
+       * the resources may be removed permanently.
+       *
+       * For other resources, there is no guarantee that requested resources will
+       * be returned after the unavailability interval.  The allocator has no
+       * obligation to re-offer these resources to the prior framework after
+       * the unavailability.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Unavailability getUnavailability() {
+        if (unavailabilityBuilder_ == null) {
+          return unavailability_;
+        } else {
+          return unavailabilityBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>required .mesos.v1.Unavailability unavailability = 5;</code>
+       *
+       * <pre>
+       * This InverseOffer represents a planned unavailability event in the
+       * specified interval.  Any tasks running on the given framework or agent
+       * may be killed when the interval arrives.  Therefore, frameworks should
+       * aim to gracefully terminate tasks prior to the arrival of the interval.
+       *
+       * For reserved resources, the resources are expected to be returned to the
+       * framework after the unavailability interval.  This is an expectation,
+       * not a guarantee.  For example, if the unavailability duration is not set,
+       * the resources may be removed permanently.
+       *
+       * For other resources, there is no guarantee that requested resources will
+       * be returned after the unavailability interval.  The allocator has no
+       * obligation to re-offer these resources to the prior framework after
+       * the unavailability.
+       * </pre>
+       */
+      public Builder setUnavailability(org.apache.mesos.v1.Protos.Unavailability value) {
+        if (unavailabilityBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          unavailability_ = value;
+          onChanged();
+        } else {
+          unavailabilityBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.Unavailability unavailability = 5;</code>
+       *
+       * <pre>
+       * This InverseOffer represents a planned unavailability event in the
+       * specified interval.  Any tasks running on the given framework or agent
+       * may be killed when the interval arrives.  Therefore, frameworks should
+       * aim to gracefully terminate tasks prior to the arrival of the interval.
+       *
+       * For reserved resources, the resources are expected to be returned to the
+       * framework after the unavailability interval.  This is an expectation,
+       * not a guarantee.  For example, if the unavailability duration is not set,
+       * the resources may be removed permanently.
+       *
+       * For other resources, there is no guarantee that requested resources will
+       * be returned after the unavailability interval.  The allocator has no
+       * obligation to re-offer these resources to the prior framework after
+       * the unavailability.
+       * </pre>
+       */
+      public Builder setUnavailability(
+          org.apache.mesos.v1.Protos.Unavailability.Builder builderForValue) {
+        if (unavailabilityBuilder_ == null) {
+          unavailability_ = builderForValue.build();
+          onChanged();
+        } else {
+          unavailabilityBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.Unavailability unavailability = 5;</code>
+       *
+       * <pre>
+       * This InverseOffer represents a planned unavailability event in the
+       * specified interval.  Any tasks running on the given framework or agent
+       * may be killed when the interval arrives.  Therefore, frameworks should
+       * aim to gracefully terminate tasks prior to the arrival of the interval.
+       *
+       * For reserved resources, the resources are expected to be returned to the
+       * framework after the unavailability interval.  This is an expectation,
+       * not a guarantee.  For example, if the unavailability duration is not set,
+       * the resources may be removed permanently.
+       *
+       * For other resources, there is no guarantee that requested resources will
+       * be returned after the unavailability interval.  The allocator has no
+       * obligation to re-offer these resources to the prior framework after
+       * the unavailability.
+       * </pre>
+       */
+      public Builder mergeUnavailability(org.apache.mesos.v1.Protos.Unavailability value) {
+        if (unavailabilityBuilder_ == null) {
+          if (((bitField0_ & 0x00000010) == 0x00000010) &&
+              unavailability_ != org.apache.mesos.v1.Protos.Unavailability.getDefaultInstance()) {
+            unavailability_ =
+              org.apache.mesos.v1.Protos.Unavailability.newBuilder(unavailability_).mergeFrom(value).buildPartial();
+          } else {
+            unavailability_ = value;
+          }
+          onChanged();
+        } else {
+          unavailabilityBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.Unavailability unavailability = 5;</code>
+       *
+       * <pre>
+       * This InverseOffer represents a planned unavailability event in the
+       * specified interval.  Any tasks running on the given framework or agent
+       * may be killed when the interval arrives.  Therefore, frameworks should
+       * aim to gracefully terminate tasks prior to the arrival of the interval.
+       *
+       * For reserved resources, the resources are expected to be returned to the
+       * framework after the unavailability interval.  This is an expectation,
+       * not a guarantee.  For example, if the unavailability duration is not set,
+       * the resources may be removed permanently.
+       *
+       * For other resources, there is no guarantee that requested resources will
+       * be returned after the unavailability interval.  The allocator has no
+       * obligation to re-offer these resources to the prior framework after
+       * the unavailability.
+       * </pre>
+       */
+      public Builder clearUnavailability() {
+        if (unavailabilityBuilder_ == null) {
+          unavailability_ = org.apache.mesos.v1.Protos.Unavailability.getDefaultInstance();
+          onChanged();
+        } else {
+          unavailabilityBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.Unavailability unavailability = 5;</code>
+       *
+       * <pre>
+       * This InverseOffer represents a planned unavailability event in the
+       * specified interval.  Any tasks running on the given framework or agent
+       * may be killed when the interval arrives.  Therefore, frameworks should
+       * aim to gracefully terminate tasks prior to the arrival of the interval.
+       *
+       * For reserved resources, the resources are expected to be returned to the
+       * framework after the unavailability interval.  This is an expectation,
+       * not a guarantee.  For example, if the unavailability duration is not set,
+       * the resources may be removed permanently.
+       *
+       * For other resources, there is no guarantee that requested resources will
+       * be returned after the unavailability interval.  The allocator has no
+       * obligation to re-offer these resources to the prior framework after
+       * the unavailability.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Unavailability.Builder getUnavailabilityBuilder() {
+        bitField0_ |= 0x00000010;
+        onChanged();
+        return getUnavailabilityFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>required .mesos.v1.Unavailability unavailability = 5;</code>
+       *
+       * <pre>
+       * This InverseOffer represents a planned unavailability event in the
+       * specified interval.  Any tasks running on the given framework or agent
+       * may be killed when the interval arrives.  Therefore, frameworks should
+       * aim to gracefully terminate tasks prior to the arrival of the interval.
+       *
+       * For reserved resources, the resources are expected to be returned to the
+       * framework after the unavailability interval.  This is an expectation,
+       * not a guarantee.  For example, if the unavailability duration is not set,
+       * the resources may be removed permanently.
+       *
+       * For other resources, there is no guarantee that requested resources will
+       * be returned after the unavailability interval.  The allocator has no
+       * obligation to re-offer these resources to the prior framework after
+       * the unavailability.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.UnavailabilityOrBuilder getUnavailabilityOrBuilder() {
+        if (unavailabilityBuilder_ != null) {
+          return unavailabilityBuilder_.getMessageOrBuilder();
+        } else {
+          return unavailability_;
+        }
+      }
+      /**
+       * <code>required .mesos.v1.Unavailability unavailability = 5;</code>
+       *
+       * <pre>
+       * This InverseOffer represents a planned unavailability event in the
+       * specified interval.  Any tasks running on the given framework or agent
+       * may be killed when the interval arrives.  Therefore, frameworks should
+       * aim to gracefully terminate tasks prior to the arrival of the interval.
+       *
+       * For reserved resources, the resources are expected to be returned to the
+       * framework after the unavailability interval.  This is an expectation,
+       * not a guarantee.  For example, if the unavailability duration is not set,
+       * the resources may be removed permanently.
+       *
+       * For other resources, there is no guarantee that requested resources will
+       * be returned after the unavailability interval.  The allocator has no
+       * obligation to re-offer these resources to the prior framework after
+       * the unavailability.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Unavailability, org.apache.mesos.v1.Protos.Unavailability.Builder, org.apache.mesos.v1.Protos.UnavailabilityOrBuilder> 
+          getUnavailabilityFieldBuilder() {
+        if (unavailabilityBuilder_ == null) {
+          unavailabilityBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Unavailability, org.apache.mesos.v1.Protos.Unavailability.Builder, org.apache.mesos.v1.Protos.UnavailabilityOrBuilder>(
+                  unavailability_,
+                  getParentForChildren(),
+                  isClean());
+          unavailability_ = null;
+        }
+        return unavailabilityBuilder_;
+      }
+
+      // repeated .mesos.v1.Resource resources = 6;
+      private java.util.List<org.apache.mesos.v1.Protos.Resource> resources_ =
+        java.util.Collections.emptyList();
+      private void ensureResourcesIsMutable() {
+        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
+          resources_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Resource>(resources_);
+          bitField0_ |= 0x00000020;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder> resourcesBuilder_;
+
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 6;</code>
+       *
+       * <pre>
+       * A list of resources being requested back from the framework,
+       * on the agent identified by `agent_id`.  If no resources are specified
+       * then all resources are being requested back.  For the purpose of
+       * maintenance, this field is always empty (maintenance always requests
+       * all resources back).
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Resource> getResourcesList() {
+        if (resourcesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(resources_);
+        } else {
+          return resourcesBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 6;</code>
+       *
+       * <pre>
+       * A list of resources being requested back from the framework,
+       * on the agent identified by `agent_id`.  If no resources are specified
+       * then all resources are being requested back.  For the purpose of
+       * maintenance, this field is always empty (maintenance always requests
+       * all resources back).
+       * </pre>
+       */
+      public int getResourcesCount() {
+        if (resourcesBuilder_ == null) {
+          return resources_.size();
+        } else {
+          return resourcesBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 6;</code>
+       *
+       * <pre>
+       * A list of resources being requested back from the framework,
+       * on the agent identified by `agent_id`.  If no resources are specified
+       * then all resources are being requested back.  For the purpose of
+       * maintenance, this field is always empty (maintenance always requests
+       * all resources back).
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Resource getResources(int index) {
+        if (resourcesBuilder_ == null) {
+          return resources_.get(index);
+        } else {
+          return resourcesBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 6;</code>
+       *
+       * <pre>
+       * A list of resources being requested back from the framework,
+       * on the agent identified by `agent_id`.  If no resources are specified
+       * then all resources are being requested back.  For the purpose of
+       * maintenance, this field is always empty (maintenance always requests
+       * all resources back).
+       * </pre>
+       */
+      public Builder setResources(
+          int index, org.apache.mesos.v1.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.set(index, value);
+          onChanged();
+        } else {
+          resourcesBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 6;</code>
+       *
+       * <pre>
+       * A list of resources being requested back from the framework,
+       * on the agent identified by `agent_id`.  If no resources are specified
+       * then all resources are being requested back.  For the purpose of
+       * maintenance, this field is always empty (maintenance always requests
+       * all resources back).
+       * </pre>
+       */
+      public Builder setResources(
+          int index, org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 6;</code>
+       *
+       * <pre>
+       * A list of resources being requested back from the framework,
+       * on the agent identified by `agent_id`.  If no resources are specified
+       * then all resources are being requested back.  For the purpose of
+       * maintenance, this field is always empty (maintenance always requests
+       * all resources back).
+       * </pre>
+       */
+      public Builder addResources(org.apache.mesos.v1.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.add(value);
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 6;</code>
+       *
+       * <pre>
+       * A list of resources being requested back from the framework,
+       * on the agent identified by `agent_id`.  If no resources are specified
+       * then all resources are being requested back.  For the purpose of
+       * maintenance, this field is always empty (maintenance always requests
+       * all resources back).
+       * </pre>
+       */
+      public Builder addResources(
+          int index, org.apache.mesos.v1.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.add(index, value);
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 6;</code>
+       *
+       * <pre>
+       * A list of resources being requested back from the framework,
+       * on the agent identified by `agent_id`.  If no resources are specified
+       * then all resources are being requested back.  For the purpose of
+       * maintenance, this field is always empty (maintenance always requests
+       * all resources back).
+       * </pre>
+       */
+      public Builder addResources(
+          org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.add(builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 6;</code>
+       *
+       * <pre>
+       * A list of resources being requested back from the framework,
+       * on the agent identified by `agent_id`.  If no resources are specified
+       * then all resources are being requested back.  For the purpose of
+       * maintenance, this field is always empty (maintenance always requests
+       * all resources back).
+       * </pre>
+       */
+      public Builder addResources(
+          int index, org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 6;</code>
+       *
+       * <pre>
+       * A list of resources being requested back from the framework,
+       * on the agent identified by `agent_id`.  If no resources are specified
+       * then all resources are being requested back.  For the purpose of
+       * maintenance, this field is always empty (maintenance always requests
+       * all resources back).
+       * </pre>
+       */
+      public Builder addAllResources(
+          java.lang.Iterable<? extends org.apache.mesos.v1.Protos.Resource> values) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          super.addAll(values, resources_);
+          onChanged();
+        } else {
+          resourcesBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 6;</code>
+       *
+       * <pre>
+       * A list of resources being requested back from the framework,
+       * on the agent identified by `agent_id`.  If no resources are specified
+       * then all resources are being requested back.  For the purpose of
+       * maintenance, this field is always empty (maintenance always requests
+       * all resources back).
+       * </pre>
+       */
+      public Builder clearResources() {
+        if (resourcesBuilder_ == null) {
+          resources_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000020);
+          onChanged();
+        } else {
+          resourcesBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 6;</code>
+       *
+       * <pre>
+       * A list of resources being requested back from the framework,
+       * on the agent identified by `agent_id`.  If no resources are specified
+       * then all resources are being requested back.  For the purpose of
+       * maintenance, this field is always empty (maintenance always requests
+       * all resources back).
+       * </pre>
+       */
+      public Builder removeResources(int index) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.remove(index);
+          onChanged();
+        } else {
+          resourcesBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 6;</code>
+       *
+       * <pre>
+       * A list of resources being requested back from the framework,
+       * on the agent identified by `agent_id`.  If no resources are specified
+       * then all resources are being requested back.  For the purpose of
+       * maintenance, this field is always empty (maintenance always requests
+       * all resources back).
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Resource.Builder getResourcesBuilder(
+          int index) {
+        return getResourcesFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 6;</code>
+       *
+       * <pre>
+       * A list of resources being requested back from the framework,
+       * on the agent identified by `agent_id`.  If no resources are specified
+       * then all resources are being requested back.  For the purpose of
+       * maintenance, this field is always empty (maintenance always requests
+       * all resources back).
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.ResourceOrBuilder getResourcesOrBuilder(
+          int index) {
+        if (resourcesBuilder_ == null) {
+          return resources_.get(index);  } else {
+          return resourcesBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 6;</code>
+       *
+       * <pre>
+       * A list of resources being requested back from the framework,
+       * on the agent identified by `agent_id`.  If no resources are specified
+       * then all resources are being requested back.  For the purpose of
+       * maintenance, this field is always empty (maintenance always requests
+       * all resources back).
+       * </pre>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+           getResourcesOrBuilderList() {
+        if (resourcesBuilder_ != null) {
+          return resourcesBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(resources_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 6;</code>
+       *
+       * <pre>
+       * A list of resources being requested back from the framework,
+       * on the agent identified by `agent_id`.  If no resources are specified
+       * then all resources are being requested back.  For the purpose of
+       * maintenance, this field is always empty (maintenance always requests
+       * all resources back).
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Resource.Builder addResourcesBuilder() {
+        return getResourcesFieldBuilder().addBuilder(
+            org.apache.mesos.v1.Protos.Resource.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 6;</code>
+       *
+       * <pre>
+       * A list of resources being requested back from the framework,
+       * on the agent identified by `agent_id`.  If no resources are specified
+       * then all resources are being requested back.  For the purpose of
+       * maintenance, this field is always empty (maintenance always requests
+       * all resources back).
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Resource.Builder addResourcesBuilder(
+          int index) {
+        return getResourcesFieldBuilder().addBuilder(
+            index, org.apache.mesos.v1.Protos.Resource.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 6;</code>
+       *
+       * <pre>
+       * A list of resources being requested back from the framework,
+       * on the agent identified by `agent_id`.  If no resources are specified
+       * then all resources are being requested back.  For the purpose of
+       * maintenance, this field is always empty (maintenance always requests
+       * all resources back).
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Resource.Builder> 
+           getResourcesBuilderList() {
+        return getResourcesFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+          getResourcesFieldBuilder() {
+        if (resourcesBuilder_ == null) {
+          resourcesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder>(
+                  resources_,
+                  ((bitField0_ & 0x00000020) == 0x00000020),
+                  getParentForChildren(),
+                  isClean());
+          resources_ = null;
+        }
+        return resourcesBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.InverseOffer)
+    }
+
+    static {
+      defaultInstance = new InverseOffer(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.InverseOffer)
+  }
+
+  public interface TaskInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string name = 1;
+    /**
+     * <code>required string name = 1;</code>
+     */
+    boolean hasName();
+    /**
+     * <code>required string name = 1;</code>
+     */
+    java.lang.String getName();
+    /**
+     * <code>required string name = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getNameBytes();
+
+    // required .mesos.v1.TaskID task_id = 2;
+    /**
+     * <code>required .mesos.v1.TaskID task_id = 2;</code>
+     */
+    boolean hasTaskId();
+    /**
+     * <code>required .mesos.v1.TaskID task_id = 2;</code>
+     */
+    org.apache.mesos.v1.Protos.TaskID getTaskId();
+    /**
+     * <code>required .mesos.v1.TaskID task_id = 2;</code>
+     */
+    org.apache.mesos.v1.Protos.TaskIDOrBuilder getTaskIdOrBuilder();
+
+    // required .mesos.v1.AgentID agent_id = 3;
+    /**
+     * <code>required .mesos.v1.AgentID agent_id = 3;</code>
+     */
+    boolean hasAgentId();
+    /**
+     * <code>required .mesos.v1.AgentID agent_id = 3;</code>
+     */
+    org.apache.mesos.v1.Protos.AgentID getAgentId();
+    /**
+     * <code>required .mesos.v1.AgentID agent_id = 3;</code>
+     */
+    org.apache.mesos.v1.Protos.AgentIDOrBuilder getAgentIdOrBuilder();
+
+    // repeated .mesos.v1.Resource resources = 4;
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 4;</code>
+     */
+    java.util.List<org.apache.mesos.v1.Protos.Resource> 
+        getResourcesList();
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 4;</code>
+     */
+    org.apache.mesos.v1.Protos.Resource getResources(int index);
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 4;</code>
+     */
+    int getResourcesCount();
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 4;</code>
+     */
+    java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+        getResourcesOrBuilderList();
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 4;</code>
+     */
+    org.apache.mesos.v1.Protos.ResourceOrBuilder getResourcesOrBuilder(
+        int index);
+
+    // optional .mesos.v1.ExecutorInfo executor = 5;
+    /**
+     * <code>optional .mesos.v1.ExecutorInfo executor = 5;</code>
+     */
+    boolean hasExecutor();
+    /**
+     * <code>optional .mesos.v1.ExecutorInfo executor = 5;</code>
+     */
+    org.apache.mesos.v1.Protos.ExecutorInfo getExecutor();
+    /**
+     * <code>optional .mesos.v1.ExecutorInfo executor = 5;</code>
+     */
+    org.apache.mesos.v1.Protos.ExecutorInfoOrBuilder getExecutorOrBuilder();
+
+    // optional .mesos.v1.CommandInfo command = 7;
+    /**
+     * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+     */
+    boolean hasCommand();
+    /**
+     * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+     */
+    org.apache.mesos.v1.Protos.CommandInfo getCommand();
+    /**
+     * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+     */
+    org.apache.mesos.v1.Protos.CommandInfoOrBuilder getCommandOrBuilder();
+
+    // optional .mesos.v1.ContainerInfo container = 9;
+    /**
+     * <code>optional .mesos.v1.ContainerInfo container = 9;</code>
+     *
+     * <pre>
+     * Task provided with a container will launch the container as part
+     * of this task paired with the task's CommandInfo.
+     * </pre>
+     */
+    boolean hasContainer();
+    /**
+     * <code>optional .mesos.v1.ContainerInfo container = 9;</code>
+     *
+     * <pre>
+     * Task provided with a container will launch the container as part
+     * of this task paired with the task's CommandInfo.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.ContainerInfo getContainer();
+    /**
+     * <code>optional .mesos.v1.ContainerInfo container = 9;</code>
+     *
+     * <pre>
+     * Task provided with a container will launch the container as part
+     * of this task paired with the task's CommandInfo.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.ContainerInfoOrBuilder getContainerOrBuilder();
+
+    // optional .mesos.v1.HealthCheck health_check = 8;
+    /**
+     * <code>optional .mesos.v1.HealthCheck health_check = 8;</code>
+     *
+     * <pre>
+     * A health check for the task. Implemented for executor-less
+     * command-based tasks. For tasks that specify an executor, it is
+     * the executor's responsibility to implement the health checking.
+     * </pre>
+     */
+    boolean hasHealthCheck();
+    /**
+     * <code>optional .mesos.v1.HealthCheck health_check = 8;</code>
+     *
+     * <pre>
+     * A health check for the task. Implemented for executor-less
+     * command-based tasks. For tasks that specify an executor, it is
+     * the executor's responsibility to implement the health checking.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.HealthCheck getHealthCheck();
+    /**
+     * <code>optional .mesos.v1.HealthCheck health_check = 8;</code>
+     *
+     * <pre>
+     * A health check for the task. Implemented for executor-less
+     * command-based tasks. For tasks that specify an executor, it is
+     * the executor's responsibility to implement the health checking.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.HealthCheckOrBuilder getHealthCheckOrBuilder();
+
+    // optional .mesos.v1.CheckInfo check = 13;
+    /**
+     * <code>optional .mesos.v1.CheckInfo check = 13;</code>
+     *
+     * <pre>
+     * A general check for the task. Implemented for all built-in executors.
+     * For tasks that specify an executor, it is the executor's responsibility
+     * to implement checking support. Executors should (all built-in executors
+     * will) neither interpret nor act on the check's result.
+     *
+     * NOTE: Check support in built-in executors is experimental.
+     *
+     * TODO(alexr): Consider supporting multiple checks per task.
+     * </pre>
+     */
+    boolean hasCheck();
+    /**
+     * <code>optional .mesos.v1.CheckInfo check = 13;</code>
+     *
+     * <pre>
+     * A general check for the task. Implemented for all built-in executors.
+     * For tasks that specify an executor, it is the executor's responsibility
+     * to implement checking support. Executors should (all built-in executors
+     * will) neither interpret nor act on the check's result.
+     *
+     * NOTE: Check support in built-in executors is experimental.
+     *
+     * TODO(alexr): Consider supporting multiple checks per task.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.CheckInfo getCheck();
+    /**
+     * <code>optional .mesos.v1.CheckInfo check = 13;</code>
+     *
+     * <pre>
+     * A general check for the task. Implemented for all built-in executors.
+     * For tasks that specify an executor, it is the executor's responsibility
+     * to implement checking support. Executors should (all built-in executors
+     * will) neither interpret nor act on the check's result.
+     *
+     * NOTE: Check support in built-in executors is experimental.
+     *
+     * TODO(alexr): Consider supporting multiple checks per task.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.CheckInfoOrBuilder getCheckOrBuilder();
+
+    // optional .mesos.v1.KillPolicy kill_policy = 12;
+    /**
+     * <code>optional .mesos.v1.KillPolicy kill_policy = 12;</code>
+     *
+     * <pre>
+     * A kill policy for the task. Implemented for executor-less
+     * command-based and docker tasks. For tasks that specify an
+     * executor, it is the executor's responsibility to implement
+     * the kill policy.
+     * </pre>
+     */
+    boolean hasKillPolicy();
+    /**
+     * <code>optional .mesos.v1.KillPolicy kill_policy = 12;</code>
+     *
+     * <pre>
+     * A kill policy for the task. Implemented for executor-less
+     * command-based and docker tasks. For tasks that specify an
+     * executor, it is the executor's responsibility to implement
+     * the kill policy.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.KillPolicy getKillPolicy();
+    /**
+     * <code>optional .mesos.v1.KillPolicy kill_policy = 12;</code>
+     *
+     * <pre>
+     * A kill policy for the task. Implemented for executor-less
+     * command-based and docker tasks. For tasks that specify an
+     * executor, it is the executor's responsibility to implement
+     * the kill policy.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.KillPolicyOrBuilder getKillPolicyOrBuilder();
+
+    // optional bytes data = 6;
+    /**
+     * <code>optional bytes data = 6;</code>
+     */
+    boolean hasData();
+    /**
+     * <code>optional bytes data = 6;</code>
+     */
+    com.google.protobuf.ByteString getData();
+
+    // optional .mesos.v1.Labels labels = 10;
+    /**
+     * <code>optional .mesos.v1.Labels labels = 10;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs which are exposed through
+     * master and agent endpoints. Labels will not be interpreted or
+     * acted upon by Mesos itself. As opposed to the data field, labels
+     * will be kept in memory on master and agent processes. Therefore,
+     * labels should be used to tag tasks with light-weight meta-data.
+     * Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    boolean hasLabels();
+    /**
+     * <code>optional .mesos.v1.Labels labels = 10;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs which are exposed through
+     * master and agent endpoints. Labels will not be interpreted or
+     * acted upon by Mesos itself. As opposed to the data field, labels
+     * will be kept in memory on master and agent processes. Therefore,
+     * labels should be used to tag tasks with light-weight meta-data.
+     * Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.Labels getLabels();
+    /**
+     * <code>optional .mesos.v1.Labels labels = 10;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs which are exposed through
+     * master and agent endpoints. Labels will not be interpreted or
+     * acted upon by Mesos itself. As opposed to the data field, labels
+     * will be kept in memory on master and agent processes. Therefore,
+     * labels should be used to tag tasks with light-weight meta-data.
+     * Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.LabelsOrBuilder getLabelsOrBuilder();
+
+    // optional .mesos.v1.DiscoveryInfo discovery = 11;
+    /**
+     * <code>optional .mesos.v1.DiscoveryInfo discovery = 11;</code>
+     *
+     * <pre>
+     * Service discovery information for the task. It is not interpreted
+     * or acted upon by Mesos. It is up to a service discovery system
+     * to use this information as needed and to handle tasks without
+     * service discovery information.
+     * </pre>
+     */
+    boolean hasDiscovery();
+    /**
+     * <code>optional .mesos.v1.DiscoveryInfo discovery = 11;</code>
+     *
+     * <pre>
+     * Service discovery information for the task. It is not interpreted
+     * or acted upon by Mesos. It is up to a service discovery system
+     * to use this information as needed and to handle tasks without
+     * service discovery information.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.DiscoveryInfo getDiscovery();
+    /**
+     * <code>optional .mesos.v1.DiscoveryInfo discovery = 11;</code>
+     *
+     * <pre>
+     * Service discovery information for the task. It is not interpreted
+     * or acted upon by Mesos. It is up to a service discovery system
+     * to use this information as needed and to handle tasks without
+     * service discovery information.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.DiscoveryInfoOrBuilder getDiscoveryOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.TaskInfo}
+   *
+   * <pre>
+   **
+   * Describes a task. Passed from the scheduler all the way to an
+   * executor (see SchedulerDriver::launchTasks and
+   * Executor::launchTask). Either ExecutorInfo or CommandInfo should be set.
+   * A different executor can be used to launch this task, and subsequent tasks
+   * meant for the same executor can reuse the same ExecutorInfo struct.
+   * </pre>
+   */
+  public static final class TaskInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements TaskInfoOrBuilder {
+    // Use TaskInfo.newBuilder() to construct.
+    private TaskInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private TaskInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final TaskInfo defaultInstance;
+    public static TaskInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public TaskInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private TaskInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              name_ = input.readBytes();
+              break;
+            }
+            case 18: {
+              org.apache.mesos.v1.Protos.TaskID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = taskId_.toBuilder();
+              }
+              taskId_ = input.readMessage(org.apache.mesos.v1.Protos.TaskID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(taskId_);
+                taskId_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+            case 26: {
+              org.apache.mesos.v1.Protos.AgentID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                subBuilder = agentId_.toBuilder();
+              }
+              agentId_ = input.readMessage(org.apache.mesos.v1.Protos.AgentID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(agentId_);
+                agentId_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000004;
+              break;
+            }
+            case 34: {
+              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
+                resources_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Resource>();
+                mutable_bitField0_ |= 0x00000008;
+              }
+              resources_.add(input.readMessage(org.apache.mesos.v1.Protos.Resource.PARSER, extensionRegistry));
+              break;
+            }
+            case 42: {
+              org.apache.mesos.v1.Protos.ExecutorInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                subBuilder = executor_.toBuilder();
+              }
+              executor_ = input.readMessage(org.apache.mesos.v1.Protos.ExecutorInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(executor_);
+                executor_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000008;
+              break;
+            }
+            case 50: {
+              bitField0_ |= 0x00000200;
+              data_ = input.readBytes();
+              break;
+            }
+            case 58: {
+              org.apache.mesos.v1.Protos.CommandInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000010) == 0x00000010)) {
+                subBuilder = command_.toBuilder();
+              }
+              command_ = input.readMessage(org.apache.mesos.v1.Protos.CommandInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(command_);
+                command_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000010;
+              break;
+            }
+            case 66: {
+              org.apache.mesos.v1.Protos.HealthCheck.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000040) == 0x00000040)) {
+                subBuilder = healthCheck_.toBuilder();
+              }
+              healthCheck_ = input.readMessage(org.apache.mesos.v1.Protos.HealthCheck.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(healthCheck_);
+                healthCheck_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000040;
+              break;
+            }
+            case 74: {
+              org.apache.mesos.v1.Protos.ContainerInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000020) == 0x00000020)) {
+                subBuilder = container_.toBuilder();
+              }
+              container_ = input.readMessage(org.apache.mesos.v1.Protos.ContainerInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(container_);
+                container_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000020;
+              break;
+            }
+            case 82: {
+              org.apache.mesos.v1.Protos.Labels.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000400) == 0x00000400)) {
+                subBuilder = labels_.toBuilder();
+              }
+              labels_ = input.readMessage(org.apache.mesos.v1.Protos.Labels.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(labels_);
+                labels_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000400;
+              break;
+            }
+            case 90: {
+              org.apache.mesos.v1.Protos.DiscoveryInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000800) == 0x00000800)) {
+                subBuilder = discovery_.toBuilder();
+              }
+              discovery_ = input.readMessage(org.apache.mesos.v1.Protos.DiscoveryInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(discovery_);
+                discovery_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000800;
+              break;
+            }
+            case 98: {
+              org.apache.mesos.v1.Protos.KillPolicy.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000100) == 0x00000100)) {
+                subBuilder = killPolicy_.toBuilder();
+              }
+              killPolicy_ = input.readMessage(org.apache.mesos.v1.Protos.KillPolicy.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(killPolicy_);
+                killPolicy_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000100;
+              break;
+            }
+            case 106: {
+              org.apache.mesos.v1.Protos.CheckInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000080) == 0x00000080)) {
+                subBuilder = check_.toBuilder();
+              }
+              check_ = input.readMessage(org.apache.mesos.v1.Protos.CheckInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(check_);
+                check_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000080;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
+          resources_ = java.util.Collections.unmodifiableList(resources_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TaskInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TaskInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.TaskInfo.class, org.apache.mesos.v1.Protos.TaskInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<TaskInfo> PARSER =
+        new com.google.protobuf.AbstractParser<TaskInfo>() {
+      public TaskInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new TaskInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<TaskInfo> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string name = 1;
+    public static final int NAME_FIELD_NUMBER = 1;
+    private java.lang.Object name_;
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public boolean hasName() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public java.lang.String getName() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          name_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getNameBytes() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        name_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // required .mesos.v1.TaskID task_id = 2;
+    public static final int TASK_ID_FIELD_NUMBER = 2;
+    private org.apache.mesos.v1.Protos.TaskID taskId_;
+    /**
+     * <code>required .mesos.v1.TaskID task_id = 2;</code>
+     */
+    public boolean hasTaskId() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>required .mesos.v1.TaskID task_id = 2;</code>
+     */
+    public org.apache.mesos.v1.Protos.TaskID getTaskId() {
+      return taskId_;
+    }
+    /**
+     * <code>required .mesos.v1.TaskID task_id = 2;</code>
+     */
+    public org.apache.mesos.v1.Protos.TaskIDOrBuilder getTaskIdOrBuilder() {
+      return taskId_;
+    }
+
+    // required .mesos.v1.AgentID agent_id = 3;
+    public static final int AGENT_ID_FIELD_NUMBER = 3;
+    private org.apache.mesos.v1.Protos.AgentID agentId_;
+    /**
+     * <code>required .mesos.v1.AgentID agent_id = 3;</code>
+     */
+    public boolean hasAgentId() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>required .mesos.v1.AgentID agent_id = 3;</code>
+     */
+    public org.apache.mesos.v1.Protos.AgentID getAgentId() {
+      return agentId_;
+    }
+    /**
+     * <code>required .mesos.v1.AgentID agent_id = 3;</code>
+     */
+    public org.apache.mesos.v1.Protos.AgentIDOrBuilder getAgentIdOrBuilder() {
+      return agentId_;
+    }
+
+    // repeated .mesos.v1.Resource resources = 4;
+    public static final int RESOURCES_FIELD_NUMBER = 4;
+    private java.util.List<org.apache.mesos.v1.Protos.Resource> resources_;
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 4;</code>
+     */
+    public java.util.List<org.apache.mesos.v1.Protos.Resource> getResourcesList() {
+      return resources_;
+    }
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 4;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+        getResourcesOrBuilderList() {
+      return resources_;
+    }
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 4;</code>
+     */
+    public int getResourcesCount() {
+      return resources_.size();
+    }
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 4;</code>
+     */
+    public org.apache.mesos.v1.Protos.Resource getResources(int index) {
+      return resources_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 4;</code>
+     */
+    public org.apache.mesos.v1.Protos.ResourceOrBuilder getResourcesOrBuilder(
+        int index) {
+      return resources_.get(index);
+    }
+
+    // optional .mesos.v1.ExecutorInfo executor = 5;
+    public static final int EXECUTOR_FIELD_NUMBER = 5;
+    private org.apache.mesos.v1.Protos.ExecutorInfo executor_;
+    /**
+     * <code>optional .mesos.v1.ExecutorInfo executor = 5;</code>
+     */
+    public boolean hasExecutor() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional .mesos.v1.ExecutorInfo executor = 5;</code>
+     */
+    public org.apache.mesos.v1.Protos.ExecutorInfo getExecutor() {
+      return executor_;
+    }
+    /**
+     * <code>optional .mesos.v1.ExecutorInfo executor = 5;</code>
+     */
+    public org.apache.mesos.v1.Protos.ExecutorInfoOrBuilder getExecutorOrBuilder() {
+      return executor_;
+    }
+
+    // optional .mesos.v1.CommandInfo command = 7;
+    public static final int COMMAND_FIELD_NUMBER = 7;
+    private org.apache.mesos.v1.Protos.CommandInfo command_;
+    /**
+     * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+     */
+    public boolean hasCommand() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+     */
+    public org.apache.mesos.v1.Protos.CommandInfo getCommand() {
+      return command_;
+    }
+    /**
+     * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+     */
+    public org.apache.mesos.v1.Protos.CommandInfoOrBuilder getCommandOrBuilder() {
+      return command_;
+    }
+
+    // optional .mesos.v1.ContainerInfo container = 9;
+    public static final int CONTAINER_FIELD_NUMBER = 9;
+    private org.apache.mesos.v1.Protos.ContainerInfo container_;
+    /**
+     * <code>optional .mesos.v1.ContainerInfo container = 9;</code>
+     *
+     * <pre>
+     * Task provided with a container will launch the container as part
+     * of this task paired with the task's CommandInfo.
+     * </pre>
+     */
+    public boolean hasContainer() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional .mesos.v1.ContainerInfo container = 9;</code>
+     *
+     * <pre>
+     * Task provided with a container will launch the container as part
+     * of this task paired with the task's CommandInfo.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.ContainerInfo getContainer() {
+      return container_;
+    }
+    /**
+     * <code>optional .mesos.v1.ContainerInfo container = 9;</code>
+     *
+     * <pre>
+     * Task provided with a container will launch the container as part
+     * of this task paired with the task's CommandInfo.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.ContainerInfoOrBuilder getContainerOrBuilder() {
+      return container_;
+    }
+
+    // optional .mesos.v1.HealthCheck health_check = 8;
+    public static final int HEALTH_CHECK_FIELD_NUMBER = 8;
+    private org.apache.mesos.v1.Protos.HealthCheck healthCheck_;
+    /**
+     * <code>optional .mesos.v1.HealthCheck health_check = 8;</code>
+     *
+     * <pre>
+     * A health check for the task. Implemented for executor-less
+     * command-based tasks. For tasks that specify an executor, it is
+     * the executor's responsibility to implement the health checking.
+     * </pre>
+     */
+    public boolean hasHealthCheck() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional .mesos.v1.HealthCheck health_check = 8;</code>
+     *
+     * <pre>
+     * A health check for the task. Implemented for executor-less
+     * command-based tasks. For tasks that specify an executor, it is
+     * the executor's responsibility to implement the health checking.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.HealthCheck getHealthCheck() {
+      return healthCheck_;
+    }
+    /**
+     * <code>optional .mesos.v1.HealthCheck health_check = 8;</code>
+     *
+     * <pre>
+     * A health check for the task. Implemented for executor-less
+     * command-based tasks. For tasks that specify an executor, it is
+     * the executor's responsibility to implement the health checking.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.HealthCheckOrBuilder getHealthCheckOrBuilder() {
+      return healthCheck_;
+    }
+
+    // optional .mesos.v1.CheckInfo check = 13;
+    public static final int CHECK_FIELD_NUMBER = 13;
+    private org.apache.mesos.v1.Protos.CheckInfo check_;
+    /**
+     * <code>optional .mesos.v1.CheckInfo check = 13;</code>
+     *
+     * <pre>
+     * A general check for the task. Implemented for all built-in executors.
+     * For tasks that specify an executor, it is the executor's responsibility
+     * to implement checking support. Executors should (all built-in executors
+     * will) neither interpret nor act on the check's result.
+     *
+     * NOTE: Check support in built-in executors is experimental.
+     *
+     * TODO(alexr): Consider supporting multiple checks per task.
+     * </pre>
+     */
+    public boolean hasCheck() {
+      return ((bitField0_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional .mesos.v1.CheckInfo check = 13;</code>
+     *
+     * <pre>
+     * A general check for the task. Implemented for all built-in executors.
+     * For tasks that specify an executor, it is the executor's responsibility
+     * to implement checking support. Executors should (all built-in executors
+     * will) neither interpret nor act on the check's result.
+     *
+     * NOTE: Check support in built-in executors is experimental.
+     *
+     * TODO(alexr): Consider supporting multiple checks per task.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.CheckInfo getCheck() {
+      return check_;
+    }
+    /**
+     * <code>optional .mesos.v1.CheckInfo check = 13;</code>
+     *
+     * <pre>
+     * A general check for the task. Implemented for all built-in executors.
+     * For tasks that specify an executor, it is the executor's responsibility
+     * to implement checking support. Executors should (all built-in executors
+     * will) neither interpret nor act on the check's result.
+     *
+     * NOTE: Check support in built-in executors is experimental.
+     *
+     * TODO(alexr): Consider supporting multiple checks per task.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.CheckInfoOrBuilder getCheckOrBuilder() {
+      return check_;
+    }
+
+    // optional .mesos.v1.KillPolicy kill_policy = 12;
+    public static final int KILL_POLICY_FIELD_NUMBER = 12;
+    private org.apache.mesos.v1.Protos.KillPolicy killPolicy_;
+    /**
+     * <code>optional .mesos.v1.KillPolicy kill_policy = 12;</code>
+     *
+     * <pre>
+     * A kill policy for the task. Implemented for executor-less
+     * command-based and docker tasks. For tasks that specify an
+     * executor, it is the executor's responsibility to implement
+     * the kill policy.
+     * </pre>
+     */
+    public boolean hasKillPolicy() {
+      return ((bitField0_ & 0x00000100) == 0x00000100);
+    }
+    /**
+     * <code>optional .mesos.v1.KillPolicy kill_policy = 12;</code>
+     *
+     * <pre>
+     * A kill policy for the task. Implemented for executor-less
+     * command-based and docker tasks. For tasks that specify an
+     * executor, it is the executor's responsibility to implement
+     * the kill policy.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.KillPolicy getKillPolicy() {
+      return killPolicy_;
+    }
+    /**
+     * <code>optional .mesos.v1.KillPolicy kill_policy = 12;</code>
+     *
+     * <pre>
+     * A kill policy for the task. Implemented for executor-less
+     * command-based and docker tasks. For tasks that specify an
+     * executor, it is the executor's responsibility to implement
+     * the kill policy.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.KillPolicyOrBuilder getKillPolicyOrBuilder() {
+      return killPolicy_;
+    }
+
+    // optional bytes data = 6;
+    public static final int DATA_FIELD_NUMBER = 6;
+    private com.google.protobuf.ByteString data_;
+    /**
+     * <code>optional bytes data = 6;</code>
+     */
+    public boolean hasData() {
+      return ((bitField0_ & 0x00000200) == 0x00000200);
+    }
+    /**
+     * <code>optional bytes data = 6;</code>
+     */
+    public com.google.protobuf.ByteString getData() {
+      return data_;
+    }
+
+    // optional .mesos.v1.Labels labels = 10;
+    public static final int LABELS_FIELD_NUMBER = 10;
+    private org.apache.mesos.v1.Protos.Labels labels_;
+    /**
+     * <code>optional .mesos.v1.Labels labels = 10;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs which are exposed through
+     * master and agent endpoints. Labels will not be interpreted or
+     * acted upon by Mesos itself. As opposed to the data field, labels
+     * will be kept in memory on master and agent processes. Therefore,
+     * labels should be used to tag tasks with light-weight meta-data.
+     * Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    public boolean hasLabels() {
+      return ((bitField0_ & 0x00000400) == 0x00000400);
+    }
+    /**
+     * <code>optional .mesos.v1.Labels labels = 10;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs which are exposed through
+     * master and agent endpoints. Labels will not be interpreted or
+     * acted upon by Mesos itself. As opposed to the data field, labels
+     * will be kept in memory on master and agent processes. Therefore,
+     * labels should be used to tag tasks with light-weight meta-data.
+     * Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.Labels getLabels() {
+      return labels_;
+    }
+    /**
+     * <code>optional .mesos.v1.Labels labels = 10;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs which are exposed through
+     * master and agent endpoints. Labels will not be interpreted or
+     * acted upon by Mesos itself. As opposed to the data field, labels
+     * will be kept in memory on master and agent processes. Therefore,
+     * labels should be used to tag tasks with light-weight meta-data.
+     * Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+      return labels_;
+    }
+
+    // optional .mesos.v1.DiscoveryInfo discovery = 11;
+    public static final int DISCOVERY_FIELD_NUMBER = 11;
+    private org.apache.mesos.v1.Protos.DiscoveryInfo discovery_;
+    /**
+     * <code>optional .mesos.v1.DiscoveryInfo discovery = 11;</code>
+     *
+     * <pre>
+     * Service discovery information for the task. It is not interpreted
+     * or acted upon by Mesos. It is up to a service discovery system
+     * to use this information as needed and to handle tasks without
+     * service discovery information.
+     * </pre>
+     */
+    public boolean hasDiscovery() {
+      return ((bitField0_ & 0x00000800) == 0x00000800);
+    }
+    /**
+     * <code>optional .mesos.v1.DiscoveryInfo discovery = 11;</code>
+     *
+     * <pre>
+     * Service discovery information for the task. It is not interpreted
+     * or acted upon by Mesos. It is up to a service discovery system
+     * to use this information as needed and to handle tasks without
+     * service discovery information.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.DiscoveryInfo getDiscovery() {
+      return discovery_;
+    }
+    /**
+     * <code>optional .mesos.v1.DiscoveryInfo discovery = 11;</code>
+     *
+     * <pre>
+     * Service discovery information for the task. It is not interpreted
+     * or acted upon by Mesos. It is up to a service discovery system
+     * to use this information as needed and to handle tasks without
+     * service discovery information.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.DiscoveryInfoOrBuilder getDiscoveryOrBuilder() {
+      return discovery_;
+    }
+
+    private void initFields() {
+      name_ = "";
+      taskId_ = org.apache.mesos.v1.Protos.TaskID.getDefaultInstance();
+      agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+      resources_ = java.util.Collections.emptyList();
+      executor_ = org.apache.mesos.v1.Protos.ExecutorInfo.getDefaultInstance();
+      command_ = org.apache.mesos.v1.Protos.CommandInfo.getDefaultInstance();
+      container_ = org.apache.mesos.v1.Protos.ContainerInfo.getDefaultInstance();
+      healthCheck_ = org.apache.mesos.v1.Protos.HealthCheck.getDefaultInstance();
+      check_ = org.apache.mesos.v1.Protos.CheckInfo.getDefaultInstance();
+      killPolicy_ = org.apache.mesos.v1.Protos.KillPolicy.getDefaultInstance();
+      data_ = com.google.protobuf.ByteString.EMPTY;
+      labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+      discovery_ = org.apache.mesos.v1.Protos.DiscoveryInfo.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasName()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasTaskId()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasAgentId()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!getTaskId().isInitialized()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!getAgentId().isInitialized()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      for (int i = 0; i < getResourcesCount(); i++) {
+        if (!getResources(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasExecutor()) {
+        if (!getExecutor().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasCommand()) {
+        if (!getCommand().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasContainer()) {
+        if (!getContainer().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasHealthCheck()) {
+        if (!getHealthCheck().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasCheck()) {
+        if (!getCheck().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasKillPolicy()) {
+        if (!getKillPolicy().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasLabels()) {
+        if (!getLabels().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasDiscovery()) {
+        if (!getDiscovery().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(2, taskId_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeMessage(3, agentId_);
+      }
+      for (int i = 0; i < resources_.size(); i++) {
+        output.writeMessage(4, resources_.get(i));
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeMessage(5, executor_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        output.writeBytes(6, data_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeMessage(7, command_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeMessage(8, healthCheck_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeMessage(9, container_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        output.writeMessage(10, labels_);
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        output.writeMessage(11, discovery_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        output.writeMessage(12, killPolicy_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        output.writeMessage(13, check_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, taskId_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, agentId_);
+      }
+      for (int i = 0; i < resources_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, resources_.get(i));
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(5, executor_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(6, data_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(7, command_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(8, healthCheck_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(9, container_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(10, labels_);
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(11, discovery_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(12, killPolicy_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(13, check_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.TaskInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.TaskInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.TaskInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.TaskInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.TaskInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.TaskInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.TaskInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.TaskInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.TaskInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.TaskInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.TaskInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.TaskInfo}
+     *
+     * <pre>
+     **
+     * Describes a task. Passed from the scheduler all the way to an
+     * executor (see SchedulerDriver::launchTasks and
+     * Executor::launchTask). Either ExecutorInfo or CommandInfo should be set.
+     * A different executor can be used to launch this task, and subsequent tasks
+     * meant for the same executor can reuse the same ExecutorInfo struct.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.TaskInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TaskInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TaskInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.TaskInfo.class, org.apache.mesos.v1.Protos.TaskInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.TaskInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getTaskIdFieldBuilder();
+          getAgentIdFieldBuilder();
+          getResourcesFieldBuilder();
+          getExecutorFieldBuilder();
+          getCommandFieldBuilder();
+          getContainerFieldBuilder();
+          getHealthCheckFieldBuilder();
+          getCheckFieldBuilder();
+          getKillPolicyFieldBuilder();
+          getLabelsFieldBuilder();
+          getDiscoveryFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        name_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (taskIdBuilder_ == null) {
+          taskId_ = org.apache.mesos.v1.Protos.TaskID.getDefaultInstance();
+        } else {
+          taskIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        if (agentIdBuilder_ == null) {
+          agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+        } else {
+          agentIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        if (resourcesBuilder_ == null) {
+          resources_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000008);
+        } else {
+          resourcesBuilder_.clear();
+        }
+        if (executorBuilder_ == null) {
+          executor_ = org.apache.mesos.v1.Protos.ExecutorInfo.getDefaultInstance();
+        } else {
+          executorBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        if (commandBuilder_ == null) {
+          command_ = org.apache.mesos.v1.Protos.CommandInfo.getDefaultInstance();
+        } else {
+          commandBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
+        if (containerBuilder_ == null) {
+          container_ = org.apache.mesos.v1.Protos.ContainerInfo.getDefaultInstance();
+        } else {
+          containerBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000040);
+        if (healthCheckBuilder_ == null) {
+          healthCheck_ = org.apache.mesos.v1.Protos.HealthCheck.getDefaultInstance();
+        } else {
+          healthCheckBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000080);
+        if (checkBuilder_ == null) {
+          check_ = org.apache.mesos.v1.Protos.CheckInfo.getDefaultInstance();
+        } else {
+          checkBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000100);
+        if (killPolicyBuilder_ == null) {
+          killPolicy_ = org.apache.mesos.v1.Protos.KillPolicy.getDefaultInstance();
+        } else {
+          killPolicyBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000200);
+        data_ = com.google.protobuf.ByteString.EMPTY;
+        bitField0_ = (bitField0_ & ~0x00000400);
+        if (labelsBuilder_ == null) {
+          labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+        } else {
+          labelsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000800);
+        if (discoveryBuilder_ == null) {
+          discovery_ = org.apache.mesos.v1.Protos.DiscoveryInfo.getDefaultInstance();
+        } else {
+          discoveryBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00001000);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TaskInfo_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.TaskInfo getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.TaskInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.TaskInfo build() {
+        org.apache.mesos.v1.Protos.TaskInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.TaskInfo buildPartial() {
+        org.apache.mesos.v1.Protos.TaskInfo result = new org.apache.mesos.v1.Protos.TaskInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.name_ = name_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (taskIdBuilder_ == null) {
+          result.taskId_ = taskId_;
+        } else {
+          result.taskId_ = taskIdBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        if (agentIdBuilder_ == null) {
+          result.agentId_ = agentId_;
+        } else {
+          result.agentId_ = agentIdBuilder_.build();
+        }
+        if (resourcesBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008)) {
+            resources_ = java.util.Collections.unmodifiableList(resources_);
+            bitField0_ = (bitField0_ & ~0x00000008);
+          }
+          result.resources_ = resources_;
+        } else {
+          result.resources_ = resourcesBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        if (executorBuilder_ == null) {
+          result.executor_ = executor_;
+        } else {
+          result.executor_ = executorBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        if (commandBuilder_ == null) {
+          result.command_ = command_;
+        } else {
+          result.command_ = commandBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        if (containerBuilder_ == null) {
+          result.container_ = container_;
+        } else {
+          result.container_ = containerBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        if (healthCheckBuilder_ == null) {
+          result.healthCheck_ = healthCheck_;
+        } else {
+          result.healthCheck_ = healthCheckBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
+          to_bitField0_ |= 0x00000080;
+        }
+        if (checkBuilder_ == null) {
+          result.check_ = check_;
+        } else {
+          result.check_ = checkBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
+          to_bitField0_ |= 0x00000100;
+        }
+        if (killPolicyBuilder_ == null) {
+          result.killPolicy_ = killPolicy_;
+        } else {
+          result.killPolicy_ = killPolicyBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
+          to_bitField0_ |= 0x00000200;
+        }
+        result.data_ = data_;
+        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
+          to_bitField0_ |= 0x00000400;
+        }
+        if (labelsBuilder_ == null) {
+          result.labels_ = labels_;
+        } else {
+          result.labels_ = labelsBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
+          to_bitField0_ |= 0x00000800;
+        }
+        if (discoveryBuilder_ == null) {
+          result.discovery_ = discovery_;
+        } else {
+          result.discovery_ = discoveryBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.TaskInfo) {
+          return mergeFrom((org.apache.mesos.v1.Protos.TaskInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.TaskInfo other) {
+        if (other == org.apache.mesos.v1.Protos.TaskInfo.getDefaultInstance()) return this;
+        if (other.hasName()) {
+          bitField0_ |= 0x00000001;
+          name_ = other.name_;
+          onChanged();
+        }
+        if (other.hasTaskId()) {
+          mergeTaskId(other.getTaskId());
+        }
+        if (other.hasAgentId()) {
+          mergeAgentId(other.getAgentId());
+        }
+        if (resourcesBuilder_ == null) {
+          if (!other.resources_.isEmpty()) {
+            if (resources_.isEmpty()) {
+              resources_ = other.resources_;
+              bitField0_ = (bitField0_ & ~0x00000008);
+            } else {
+              ensureResourcesIsMutable();
+              resources_.addAll(other.resources_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.resources_.isEmpty()) {
+            if (resourcesBuilder_.isEmpty()) {
+              resourcesBuilder_.dispose();
+              resourcesBuilder_ = null;
+              resources_ = other.resources_;
+              bitField0_ = (bitField0_ & ~0x00000008);
+              resourcesBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getResourcesFieldBuilder() : null;
+            } else {
+              resourcesBuilder_.addAllMessages(other.resources_);
+            }
+          }
+        }
+        if (other.hasExecutor()) {
+          mergeExecutor(other.getExecutor());
+        }
+        if (other.hasCommand()) {
+          mergeCommand(other.getCommand());
+        }
+        if (other.hasContainer()) {
+          mergeContainer(other.getContainer());
+        }
+        if (other.hasHealthCheck()) {
+          mergeHealthCheck(other.getHealthCheck());
+        }
+        if (other.hasCheck()) {
+          mergeCheck(other.getCheck());
+        }
+        if (other.hasKillPolicy()) {
+          mergeKillPolicy(other.getKillPolicy());
+        }
+        if (other.hasData()) {
+          setData(other.getData());
+        }
+        if (other.hasLabels()) {
+          mergeLabels(other.getLabels());
+        }
+        if (other.hasDiscovery()) {
+          mergeDiscovery(other.getDiscovery());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasName()) {
+          
+          return false;
+        }
+        if (!hasTaskId()) {
+          
+          return false;
+        }
+        if (!hasAgentId()) {
+          
+          return false;
+        }
+        if (!getTaskId().isInitialized()) {
+          
+          return false;
+        }
+        if (!getAgentId().isInitialized()) {
+          
+          return false;
+        }
+        for (int i = 0; i < getResourcesCount(); i++) {
+          if (!getResources(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasExecutor()) {
+          if (!getExecutor().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasCommand()) {
+          if (!getCommand().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasContainer()) {
+          if (!getContainer().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasHealthCheck()) {
+          if (!getHealthCheck().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasCheck()) {
+          if (!getCheck().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasKillPolicy()) {
+          if (!getKillPolicy().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasLabels()) {
+          if (!getLabels().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasDiscovery()) {
+          if (!getDiscovery().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.TaskInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.TaskInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string name = 1;
+      private java.lang.Object name_ = "";
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public boolean hasName() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public java.lang.String getName() {
+        java.lang.Object ref = name_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          name_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        java.lang.Object ref = name_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          name_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder setName(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder clearName() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        name_ = getDefaultInstance().getName();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder setNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+
+      // required .mesos.v1.TaskID task_id = 2;
+      private org.apache.mesos.v1.Protos.TaskID taskId_ = org.apache.mesos.v1.Protos.TaskID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.TaskID, org.apache.mesos.v1.Protos.TaskID.Builder, org.apache.mesos.v1.Protos.TaskIDOrBuilder> taskIdBuilder_;
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 2;</code>
+       */
+      public boolean hasTaskId() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.TaskID getTaskId() {
+        if (taskIdBuilder_ == null) {
+          return taskId_;
+        } else {
+          return taskIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 2;</code>
+       */
+      public Builder setTaskId(org.apache.mesos.v1.Protos.TaskID value) {
+        if (taskIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          taskId_ = value;
+          onChanged();
+        } else {
+          taskIdBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 2;</code>
+       */
+      public Builder setTaskId(
+          org.apache.mesos.v1.Protos.TaskID.Builder builderForValue) {
+        if (taskIdBuilder_ == null) {
+          taskId_ = builderForValue.build();
+          onChanged();
+        } else {
+          taskIdBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 2;</code>
+       */
+      public Builder mergeTaskId(org.apache.mesos.v1.Protos.TaskID value) {
+        if (taskIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              taskId_ != org.apache.mesos.v1.Protos.TaskID.getDefaultInstance()) {
+            taskId_ =
+              org.apache.mesos.v1.Protos.TaskID.newBuilder(taskId_).mergeFrom(value).buildPartial();
+          } else {
+            taskId_ = value;
+          }
+          onChanged();
+        } else {
+          taskIdBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 2;</code>
+       */
+      public Builder clearTaskId() {
+        if (taskIdBuilder_ == null) {
+          taskId_ = org.apache.mesos.v1.Protos.TaskID.getDefaultInstance();
+          onChanged();
+        } else {
+          taskIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.TaskID.Builder getTaskIdBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getTaskIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.TaskIDOrBuilder getTaskIdOrBuilder() {
+        if (taskIdBuilder_ != null) {
+          return taskIdBuilder_.getMessageOrBuilder();
+        } else {
+          return taskId_;
+        }
+      }
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 2;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.TaskID, org.apache.mesos.v1.Protos.TaskID.Builder, org.apache.mesos.v1.Protos.TaskIDOrBuilder> 
+          getTaskIdFieldBuilder() {
+        if (taskIdBuilder_ == null) {
+          taskIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.TaskID, org.apache.mesos.v1.Protos.TaskID.Builder, org.apache.mesos.v1.Protos.TaskIDOrBuilder>(
+                  taskId_,
+                  getParentForChildren(),
+                  isClean());
+          taskId_ = null;
+        }
+        return taskIdBuilder_;
+      }
+
+      // required .mesos.v1.AgentID agent_id = 3;
+      private org.apache.mesos.v1.Protos.AgentID agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.AgentID, org.apache.mesos.v1.Protos.AgentID.Builder, org.apache.mesos.v1.Protos.AgentIDOrBuilder> agentIdBuilder_;
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 3;</code>
+       */
+      public boolean hasAgentId() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.AgentID getAgentId() {
+        if (agentIdBuilder_ == null) {
+          return agentId_;
+        } else {
+          return agentIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 3;</code>
+       */
+      public Builder setAgentId(org.apache.mesos.v1.Protos.AgentID value) {
+        if (agentIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          agentId_ = value;
+          onChanged();
+        } else {
+          agentIdBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 3;</code>
+       */
+      public Builder setAgentId(
+          org.apache.mesos.v1.Protos.AgentID.Builder builderForValue) {
+        if (agentIdBuilder_ == null) {
+          agentId_ = builderForValue.build();
+          onChanged();
+        } else {
+          agentIdBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 3;</code>
+       */
+      public Builder mergeAgentId(org.apache.mesos.v1.Protos.AgentID value) {
+        if (agentIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) == 0x00000004) &&
+              agentId_ != org.apache.mesos.v1.Protos.AgentID.getDefaultInstance()) {
+            agentId_ =
+              org.apache.mesos.v1.Protos.AgentID.newBuilder(agentId_).mergeFrom(value).buildPartial();
+          } else {
+            agentId_ = value;
+          }
+          onChanged();
+        } else {
+          agentIdBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 3;</code>
+       */
+      public Builder clearAgentId() {
+        if (agentIdBuilder_ == null) {
+          agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+          onChanged();
+        } else {
+          agentIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.AgentID.Builder getAgentIdBuilder() {
+        bitField0_ |= 0x00000004;
+        onChanged();
+        return getAgentIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.AgentIDOrBuilder getAgentIdOrBuilder() {
+        if (agentIdBuilder_ != null) {
+          return agentIdBuilder_.getMessageOrBuilder();
+        } else {
+          return agentId_;
+        }
+      }
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 3;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.AgentID, org.apache.mesos.v1.Protos.AgentID.Builder, org.apache.mesos.v1.Protos.AgentIDOrBuilder> 
+          getAgentIdFieldBuilder() {
+        if (agentIdBuilder_ == null) {
+          agentIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.AgentID, org.apache.mesos.v1.Protos.AgentID.Builder, org.apache.mesos.v1.Protos.AgentIDOrBuilder>(
+                  agentId_,
+                  getParentForChildren(),
+                  isClean());
+          agentId_ = null;
+        }
+        return agentIdBuilder_;
+      }
+
+      // repeated .mesos.v1.Resource resources = 4;
+      private java.util.List<org.apache.mesos.v1.Protos.Resource> resources_ =
+        java.util.Collections.emptyList();
+      private void ensureResourcesIsMutable() {
+        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
+          resources_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Resource>(resources_);
+          bitField0_ |= 0x00000008;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder> resourcesBuilder_;
+
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 4;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Resource> getResourcesList() {
+        if (resourcesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(resources_);
+        } else {
+          return resourcesBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 4;</code>
+       */
+      public int getResourcesCount() {
+        if (resourcesBuilder_ == null) {
+          return resources_.size();
+        } else {
+          return resourcesBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 4;</code>
+       */
+      public org.apache.mesos.v1.Protos.Resource getResources(int index) {
+        if (resourcesBuilder_ == null) {
+          return resources_.get(index);
+        } else {
+          return resourcesBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 4;</code>
+       */
+      public Builder setResources(
+          int index, org.apache.mesos.v1.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.set(index, value);
+          onChanged();
+        } else {
+          resourcesBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 4;</code>
+       */
+      public Builder setResources(
+          int index, org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 4;</code>
+       */
+      public Builder addResources(org.apache.mesos.v1.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.add(value);
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 4;</code>
+       */
+      public Builder addResources(
+          int index, org.apache.mesos.v1.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.add(index, value);
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 4;</code>
+       */
+      public Builder addResources(
+          org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.add(builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 4;</code>
+       */
+      public Builder addResources(
+          int index, org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 4;</code>
+       */
+      public Builder addAllResources(
+          java.lang.Iterable<? extends org.apache.mesos.v1.Protos.Resource> values) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          super.addAll(values, resources_);
+          onChanged();
+        } else {
+          resourcesBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 4;</code>
+       */
+      public Builder clearResources() {
+        if (resourcesBuilder_ == null) {
+          resources_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000008);
+          onChanged();
+        } else {
+          resourcesBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 4;</code>
+       */
+      public Builder removeResources(int index) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.remove(index);
+          onChanged();
+        } else {
+          resourcesBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 4;</code>
+       */
+      public org.apache.mesos.v1.Protos.Resource.Builder getResourcesBuilder(
+          int index) {
+        return getResourcesFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 4;</code>
+       */
+      public org.apache.mesos.v1.Protos.ResourceOrBuilder getResourcesOrBuilder(
+          int index) {
+        if (resourcesBuilder_ == null) {
+          return resources_.get(index);  } else {
+          return resourcesBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 4;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+           getResourcesOrBuilderList() {
+        if (resourcesBuilder_ != null) {
+          return resourcesBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(resources_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 4;</code>
+       */
+      public org.apache.mesos.v1.Protos.Resource.Builder addResourcesBuilder() {
+        return getResourcesFieldBuilder().addBuilder(
+            org.apache.mesos.v1.Protos.Resource.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 4;</code>
+       */
+      public org.apache.mesos.v1.Protos.Resource.Builder addResourcesBuilder(
+          int index) {
+        return getResourcesFieldBuilder().addBuilder(
+            index, org.apache.mesos.v1.Protos.Resource.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 4;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Resource.Builder> 
+           getResourcesBuilderList() {
+        return getResourcesFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+          getResourcesFieldBuilder() {
+        if (resourcesBuilder_ == null) {
+          resourcesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder>(
+                  resources_,
+                  ((bitField0_ & 0x00000008) == 0x00000008),
+                  getParentForChildren(),
+                  isClean());
+          resources_ = null;
+        }
+        return resourcesBuilder_;
+      }
+
+      // optional .mesos.v1.ExecutorInfo executor = 5;
+      private org.apache.mesos.v1.Protos.ExecutorInfo executor_ = org.apache.mesos.v1.Protos.ExecutorInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.ExecutorInfo, org.apache.mesos.v1.Protos.ExecutorInfo.Builder, org.apache.mesos.v1.Protos.ExecutorInfoOrBuilder> executorBuilder_;
+      /**
+       * <code>optional .mesos.v1.ExecutorInfo executor = 5;</code>
+       */
+      public boolean hasExecutor() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional .mesos.v1.ExecutorInfo executor = 5;</code>
+       */
+      public org.apache.mesos.v1.Protos.ExecutorInfo getExecutor() {
+        if (executorBuilder_ == null) {
+          return executor_;
+        } else {
+          return executorBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.ExecutorInfo executor = 5;</code>
+       */
+      public Builder setExecutor(org.apache.mesos.v1.Protos.ExecutorInfo value) {
+        if (executorBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          executor_ = value;
+          onChanged();
+        } else {
+          executorBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ExecutorInfo executor = 5;</code>
+       */
+      public Builder setExecutor(
+          org.apache.mesos.v1.Protos.ExecutorInfo.Builder builderForValue) {
+        if (executorBuilder_ == null) {
+          executor_ = builderForValue.build();
+          onChanged();
+        } else {
+          executorBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ExecutorInfo executor = 5;</code>
+       */
+      public Builder mergeExecutor(org.apache.mesos.v1.Protos.ExecutorInfo value) {
+        if (executorBuilder_ == null) {
+          if (((bitField0_ & 0x00000010) == 0x00000010) &&
+              executor_ != org.apache.mesos.v1.Protos.ExecutorInfo.getDefaultInstance()) {
+            executor_ =
+              org.apache.mesos.v1.Protos.ExecutorInfo.newBuilder(executor_).mergeFrom(value).buildPartial();
+          } else {
+            executor_ = value;
+          }
+          onChanged();
+        } else {
+          executorBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ExecutorInfo executor = 5;</code>
+       */
+      public Builder clearExecutor() {
+        if (executorBuilder_ == null) {
+          executor_ = org.apache.mesos.v1.Protos.ExecutorInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          executorBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ExecutorInfo executor = 5;</code>
+       */
+      public org.apache.mesos.v1.Protos.ExecutorInfo.Builder getExecutorBuilder() {
+        bitField0_ |= 0x00000010;
+        onChanged();
+        return getExecutorFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.ExecutorInfo executor = 5;</code>
+       */
+      public org.apache.mesos.v1.Protos.ExecutorInfoOrBuilder getExecutorOrBuilder() {
+        if (executorBuilder_ != null) {
+          return executorBuilder_.getMessageOrBuilder();
+        } else {
+          return executor_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.ExecutorInfo executor = 5;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.ExecutorInfo, org.apache.mesos.v1.Protos.ExecutorInfo.Builder, org.apache.mesos.v1.Protos.ExecutorInfoOrBuilder> 
+          getExecutorFieldBuilder() {
+        if (executorBuilder_ == null) {
+          executorBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.ExecutorInfo, org.apache.mesos.v1.Protos.ExecutorInfo.Builder, org.apache.mesos.v1.Protos.ExecutorInfoOrBuilder>(
+                  executor_,
+                  getParentForChildren(),
+                  isClean());
+          executor_ = null;
+        }
+        return executorBuilder_;
+      }
+
+      // optional .mesos.v1.CommandInfo command = 7;
+      private org.apache.mesos.v1.Protos.CommandInfo command_ = org.apache.mesos.v1.Protos.CommandInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.CommandInfo, org.apache.mesos.v1.Protos.CommandInfo.Builder, org.apache.mesos.v1.Protos.CommandInfoOrBuilder> commandBuilder_;
+      /**
+       * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+       */
+      public boolean hasCommand() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+       */
+      public org.apache.mesos.v1.Protos.CommandInfo getCommand() {
+        if (commandBuilder_ == null) {
+          return command_;
+        } else {
+          return commandBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+       */
+      public Builder setCommand(org.apache.mesos.v1.Protos.CommandInfo value) {
+        if (commandBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          command_ = value;
+          onChanged();
+        } else {
+          commandBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+       */
+      public Builder setCommand(
+          org.apache.mesos.v1.Protos.CommandInfo.Builder builderForValue) {
+        if (commandBuilder_ == null) {
+          command_ = builderForValue.build();
+          onChanged();
+        } else {
+          commandBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+       */
+      public Builder mergeCommand(org.apache.mesos.v1.Protos.CommandInfo value) {
+        if (commandBuilder_ == null) {
+          if (((bitField0_ & 0x00000020) == 0x00000020) &&
+              command_ != org.apache.mesos.v1.Protos.CommandInfo.getDefaultInstance()) {
+            command_ =
+              org.apache.mesos.v1.Protos.CommandInfo.newBuilder(command_).mergeFrom(value).buildPartial();
+          } else {
+            command_ = value;
+          }
+          onChanged();
+        } else {
+          commandBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+       */
+      public Builder clearCommand() {
+        if (commandBuilder_ == null) {
+          command_ = org.apache.mesos.v1.Protos.CommandInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          commandBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+       */
+      public org.apache.mesos.v1.Protos.CommandInfo.Builder getCommandBuilder() {
+        bitField0_ |= 0x00000020;
+        onChanged();
+        return getCommandFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+       */
+      public org.apache.mesos.v1.Protos.CommandInfoOrBuilder getCommandOrBuilder() {
+        if (commandBuilder_ != null) {
+          return commandBuilder_.getMessageOrBuilder();
+        } else {
+          return command_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.CommandInfo command = 7;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.CommandInfo, org.apache.mesos.v1.Protos.CommandInfo.Builder, org.apache.mesos.v1.Protos.CommandInfoOrBuilder> 
+          getCommandFieldBuilder() {
+        if (commandBuilder_ == null) {
+          commandBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.CommandInfo, org.apache.mesos.v1.Protos.CommandInfo.Builder, org.apache.mesos.v1.Protos.CommandInfoOrBuilder>(
+                  command_,
+                  getParentForChildren(),
+                  isClean());
+          command_ = null;
+        }
+        return commandBuilder_;
+      }
+
+      // optional .mesos.v1.ContainerInfo container = 9;
+      private org.apache.mesos.v1.Protos.ContainerInfo container_ = org.apache.mesos.v1.Protos.ContainerInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.ContainerInfo, org.apache.mesos.v1.Protos.ContainerInfo.Builder, org.apache.mesos.v1.Protos.ContainerInfoOrBuilder> containerBuilder_;
+      /**
+       * <code>optional .mesos.v1.ContainerInfo container = 9;</code>
+       *
+       * <pre>
+       * Task provided with a container will launch the container as part
+       * of this task paired with the task's CommandInfo.
+       * </pre>
+       */
+      public boolean hasContainer() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerInfo container = 9;</code>
+       *
+       * <pre>
+       * Task provided with a container will launch the container as part
+       * of this task paired with the task's CommandInfo.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.ContainerInfo getContainer() {
+        if (containerBuilder_ == null) {
+          return container_;
+        } else {
+          return containerBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerInfo container = 9;</code>
+       *
+       * <pre>
+       * Task provided with a container will launch the container as part
+       * of this task paired with the task's CommandInfo.
+       * </pre>
+       */
+      public Builder setContainer(org.apache.mesos.v1.Protos.ContainerInfo value) {
+        if (containerBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          container_ = value;
+          onChanged();
+        } else {
+          containerBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerInfo container = 9;</code>
+       *
+       * <pre>
+       * Task provided with a container will launch the container as part
+       * of this task paired with the task's CommandInfo.
+       * </pre>
+       */
+      public Builder setContainer(
+          org.apache.mesos.v1.Protos.ContainerInfo.Builder builderForValue) {
+        if (containerBuilder_ == null) {
+          container_ = builderForValue.build();
+          onChanged();
+        } else {
+          containerBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerInfo container = 9;</code>
+       *
+       * <pre>
+       * Task provided with a container will launch the container as part
+       * of this task paired with the task's CommandInfo.
+       * </pre>
+       */
+      public Builder mergeContainer(org.apache.mesos.v1.Protos.ContainerInfo value) {
+        if (containerBuilder_ == null) {
+          if (((bitField0_ & 0x00000040) == 0x00000040) &&
+              container_ != org.apache.mesos.v1.Protos.ContainerInfo.getDefaultInstance()) {
+            container_ =
+              org.apache.mesos.v1.Protos.ContainerInfo.newBuilder(container_).mergeFrom(value).buildPartial();
+          } else {
+            container_ = value;
+          }
+          onChanged();
+        } else {
+          containerBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerInfo container = 9;</code>
+       *
+       * <pre>
+       * Task provided with a container will launch the container as part
+       * of this task paired with the task's CommandInfo.
+       * </pre>
+       */
+      public Builder clearContainer() {
+        if (containerBuilder_ == null) {
+          container_ = org.apache.mesos.v1.Protos.ContainerInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          containerBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000040);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerInfo container = 9;</code>
+       *
+       * <pre>
+       * Task provided with a container will launch the container as part
+       * of this task paired with the task's CommandInfo.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.ContainerInfo.Builder getContainerBuilder() {
+        bitField0_ |= 0x00000040;
+        onChanged();
+        return getContainerFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerInfo container = 9;</code>
+       *
+       * <pre>
+       * Task provided with a container will launch the container as part
+       * of this task paired with the task's CommandInfo.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.ContainerInfoOrBuilder getContainerOrBuilder() {
+        if (containerBuilder_ != null) {
+          return containerBuilder_.getMessageOrBuilder();
+        } else {
+          return container_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerInfo container = 9;</code>
+       *
+       * <pre>
+       * Task provided with a container will launch the container as part
+       * of this task paired with the task's CommandInfo.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.ContainerInfo, org.apache.mesos.v1.Protos.ContainerInfo.Builder, org.apache.mesos.v1.Protos.ContainerInfoOrBuilder> 
+          getContainerFieldBuilder() {
+        if (containerBuilder_ == null) {
+          containerBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.ContainerInfo, org.apache.mesos.v1.Protos.ContainerInfo.Builder, org.apache.mesos.v1.Protos.ContainerInfoOrBuilder>(
+                  container_,
+                  getParentForChildren(),
+                  isClean());
+          container_ = null;
+        }
+        return containerBuilder_;
+      }
+
+      // optional .mesos.v1.HealthCheck health_check = 8;
+      private org.apache.mesos.v1.Protos.HealthCheck healthCheck_ = org.apache.mesos.v1.Protos.HealthCheck.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.HealthCheck, org.apache.mesos.v1.Protos.HealthCheck.Builder, org.apache.mesos.v1.Protos.HealthCheckOrBuilder> healthCheckBuilder_;
+      /**
+       * <code>optional .mesos.v1.HealthCheck health_check = 8;</code>
+       *
+       * <pre>
+       * A health check for the task. Implemented for executor-less
+       * command-based tasks. For tasks that specify an executor, it is
+       * the executor's responsibility to implement the health checking.
+       * </pre>
+       */
+      public boolean hasHealthCheck() {
+        return ((bitField0_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional .mesos.v1.HealthCheck health_check = 8;</code>
+       *
+       * <pre>
+       * A health check for the task. Implemented for executor-less
+       * command-based tasks. For tasks that specify an executor, it is
+       * the executor's responsibility to implement the health checking.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.HealthCheck getHealthCheck() {
+        if (healthCheckBuilder_ == null) {
+          return healthCheck_;
+        } else {
+          return healthCheckBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.HealthCheck health_check = 8;</code>
+       *
+       * <pre>
+       * A health check for the task. Implemented for executor-less
+       * command-based tasks. For tasks that specify an executor, it is
+       * the executor's responsibility to implement the health checking.
+       * </pre>
+       */
+      public Builder setHealthCheck(org.apache.mesos.v1.Protos.HealthCheck value) {
+        if (healthCheckBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          healthCheck_ = value;
+          onChanged();
+        } else {
+          healthCheckBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.HealthCheck health_check = 8;</code>
+       *
+       * <pre>
+       * A health check for the task. Implemented for executor-less
+       * command-based tasks. For tasks that specify an executor, it is
+       * the executor's responsibility to implement the health checking.
+       * </pre>
+       */
+      public Builder setHealthCheck(
+          org.apache.mesos.v1.Protos.HealthCheck.Builder builderForValue) {
+        if (healthCheckBuilder_ == null) {
+          healthCheck_ = builderForValue.build();
+          onChanged();
+        } else {
+          healthCheckBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.HealthCheck health_check = 8;</code>
+       *
+       * <pre>
+       * A health check for the task. Implemented for executor-less
+       * command-based tasks. For tasks that specify an executor, it is
+       * the executor's responsibility to implement the health checking.
+       * </pre>
+       */
+      public Builder mergeHealthCheck(org.apache.mesos.v1.Protos.HealthCheck value) {
+        if (healthCheckBuilder_ == null) {
+          if (((bitField0_ & 0x00000080) == 0x00000080) &&
+              healthCheck_ != org.apache.mesos.v1.Protos.HealthCheck.getDefaultInstance()) {
+            healthCheck_ =
+              org.apache.mesos.v1.Protos.HealthCheck.newBuilder(healthCheck_).mergeFrom(value).buildPartial();
+          } else {
+            healthCheck_ = value;
+          }
+          onChanged();
+        } else {
+          healthCheckBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.HealthCheck health_check = 8;</code>
+       *
+       * <pre>
+       * A health check for the task. Implemented for executor-less
+       * command-based tasks. For tasks that specify an executor, it is
+       * the executor's responsibility to implement the health checking.
+       * </pre>
+       */
+      public Builder clearHealthCheck() {
+        if (healthCheckBuilder_ == null) {
+          healthCheck_ = org.apache.mesos.v1.Protos.HealthCheck.getDefaultInstance();
+          onChanged();
+        } else {
+          healthCheckBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000080);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.HealthCheck health_check = 8;</code>
+       *
+       * <pre>
+       * A health check for the task. Implemented for executor-less
+       * command-based tasks. For tasks that specify an executor, it is
+       * the executor's responsibility to implement the health checking.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.HealthCheck.Builder getHealthCheckBuilder() {
+        bitField0_ |= 0x00000080;
+        onChanged();
+        return getHealthCheckFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.HealthCheck health_check = 8;</code>
+       *
+       * <pre>
+       * A health check for the task. Implemented for executor-less
+       * command-based tasks. For tasks that specify an executor, it is
+       * the executor's responsibility to implement the health checking.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.HealthCheckOrBuilder getHealthCheckOrBuilder() {
+        if (healthCheckBuilder_ != null) {
+          return healthCheckBuilder_.getMessageOrBuilder();
+        } else {
+          return healthCheck_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.HealthCheck health_check = 8;</code>
+       *
+       * <pre>
+       * A health check for the task. Implemented for executor-less
+       * command-based tasks. For tasks that specify an executor, it is
+       * the executor's responsibility to implement the health checking.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.HealthCheck, org.apache.mesos.v1.Protos.HealthCheck.Builder, org.apache.mesos.v1.Protos.HealthCheckOrBuilder> 
+          getHealthCheckFieldBuilder() {
+        if (healthCheckBuilder_ == null) {
+          healthCheckBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.HealthCheck, org.apache.mesos.v1.Protos.HealthCheck.Builder, org.apache.mesos.v1.Protos.HealthCheckOrBuilder>(
+                  healthCheck_,
+                  getParentForChildren(),
+                  isClean());
+          healthCheck_ = null;
+        }
+        return healthCheckBuilder_;
+      }
+
+      // optional .mesos.v1.CheckInfo check = 13;
+      private org.apache.mesos.v1.Protos.CheckInfo check_ = org.apache.mesos.v1.Protos.CheckInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.CheckInfo, org.apache.mesos.v1.Protos.CheckInfo.Builder, org.apache.mesos.v1.Protos.CheckInfoOrBuilder> checkBuilder_;
+      /**
+       * <code>optional .mesos.v1.CheckInfo check = 13;</code>
+       *
+       * <pre>
+       * A general check for the task. Implemented for all built-in executors.
+       * For tasks that specify an executor, it is the executor's responsibility
+       * to implement checking support. Executors should (all built-in executors
+       * will) neither interpret nor act on the check's result.
+       *
+       * NOTE: Check support in built-in executors is experimental.
+       *
+       * TODO(alexr): Consider supporting multiple checks per task.
+       * </pre>
+       */
+      public boolean hasCheck() {
+        return ((bitField0_ & 0x00000100) == 0x00000100);
+      }
+      /**
+       * <code>optional .mesos.v1.CheckInfo check = 13;</code>
+       *
+       * <pre>
+       * A general check for the task. Implemented for all built-in executors.
+       * For tasks that specify an executor, it is the executor's responsibility
+       * to implement checking support. Executors should (all built-in executors
+       * will) neither interpret nor act on the check's result.
+       *
+       * NOTE: Check support in built-in executors is experimental.
+       *
+       * TODO(alexr): Consider supporting multiple checks per task.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.CheckInfo getCheck() {
+        if (checkBuilder_ == null) {
+          return check_;
+        } else {
+          return checkBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.CheckInfo check = 13;</code>
+       *
+       * <pre>
+       * A general check for the task. Implemented for all built-in executors.
+       * For tasks that specify an executor, it is the executor's responsibility
+       * to implement checking support. Executors should (all built-in executors
+       * will) neither interpret nor act on the check's result.
+       *
+       * NOTE: Check support in built-in executors is experimental.
+       *
+       * TODO(alexr): Consider supporting multiple checks per task.
+       * </pre>
+       */
+      public Builder setCheck(org.apache.mesos.v1.Protos.CheckInfo value) {
+        if (checkBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          check_ = value;
+          onChanged();
+        } else {
+          checkBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000100;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CheckInfo check = 13;</code>
+       *
+       * <pre>
+       * A general check for the task. Implemented for all built-in executors.
+       * For tasks that specify an executor, it is the executor's responsibility
+       * to implement checking support. Executors should (all built-in executors
+       * will) neither interpret nor act on the check's result.
+       *
+       * NOTE: Check support in built-in executors is experimental.
+       *
+       * TODO(alexr): Consider supporting multiple checks per task.
+       * </pre>
+       */
+      public Builder setCheck(
+          org.apache.mesos.v1.Protos.CheckInfo.Builder builderForValue) {
+        if (checkBuilder_ == null) {
+          check_ = builderForValue.build();
+          onChanged();
+        } else {
+          checkBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000100;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CheckInfo check = 13;</code>
+       *
+       * <pre>
+       * A general check for the task. Implemented for all built-in executors.
+       * For tasks that specify an executor, it is the executor's responsibility
+       * to implement checking support. Executors should (all built-in executors
+       * will) neither interpret nor act on the check's result.
+       *
+       * NOTE: Check support in built-in executors is experimental.
+       *
+       * TODO(alexr): Consider supporting multiple checks per task.
+       * </pre>
+       */
+      public Builder mergeCheck(org.apache.mesos.v1.Protos.CheckInfo value) {
+        if (checkBuilder_ == null) {
+          if (((bitField0_ & 0x00000100) == 0x00000100) &&
+              check_ != org.apache.mesos.v1.Protos.CheckInfo.getDefaultInstance()) {
+            check_ =
+              org.apache.mesos.v1.Protos.CheckInfo.newBuilder(check_).mergeFrom(value).buildPartial();
+          } else {
+            check_ = value;
+          }
+          onChanged();
+        } else {
+          checkBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000100;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CheckInfo check = 13;</code>
+       *
+       * <pre>
+       * A general check for the task. Implemented for all built-in executors.
+       * For tasks that specify an executor, it is the executor's responsibility
+       * to implement checking support. Executors should (all built-in executors
+       * will) neither interpret nor act on the check's result.
+       *
+       * NOTE: Check support in built-in executors is experimental.
+       *
+       * TODO(alexr): Consider supporting multiple checks per task.
+       * </pre>
+       */
+      public Builder clearCheck() {
+        if (checkBuilder_ == null) {
+          check_ = org.apache.mesos.v1.Protos.CheckInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          checkBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000100);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CheckInfo check = 13;</code>
+       *
+       * <pre>
+       * A general check for the task. Implemented for all built-in executors.
+       * For tasks that specify an executor, it is the executor's responsibility
+       * to implement checking support. Executors should (all built-in executors
+       * will) neither interpret nor act on the check's result.
+       *
+       * NOTE: Check support in built-in executors is experimental.
+       *
+       * TODO(alexr): Consider supporting multiple checks per task.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.CheckInfo.Builder getCheckBuilder() {
+        bitField0_ |= 0x00000100;
+        onChanged();
+        return getCheckFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.CheckInfo check = 13;</code>
+       *
+       * <pre>
+       * A general check for the task. Implemented for all built-in executors.
+       * For tasks that specify an executor, it is the executor's responsibility
+       * to implement checking support. Executors should (all built-in executors
+       * will) neither interpret nor act on the check's result.
+       *
+       * NOTE: Check support in built-in executors is experimental.
+       *
+       * TODO(alexr): Consider supporting multiple checks per task.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.CheckInfoOrBuilder getCheckOrBuilder() {
+        if (checkBuilder_ != null) {
+          return checkBuilder_.getMessageOrBuilder();
+        } else {
+          return check_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.CheckInfo check = 13;</code>
+       *
+       * <pre>
+       * A general check for the task. Implemented for all built-in executors.
+       * For tasks that specify an executor, it is the executor's responsibility
+       * to implement checking support. Executors should (all built-in executors
+       * will) neither interpret nor act on the check's result.
+       *
+       * NOTE: Check support in built-in executors is experimental.
+       *
+       * TODO(alexr): Consider supporting multiple checks per task.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.CheckInfo, org.apache.mesos.v1.Protos.CheckInfo.Builder, org.apache.mesos.v1.Protos.CheckInfoOrBuilder> 
+          getCheckFieldBuilder() {
+        if (checkBuilder_ == null) {
+          checkBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.CheckInfo, org.apache.mesos.v1.Protos.CheckInfo.Builder, org.apache.mesos.v1.Protos.CheckInfoOrBuilder>(
+                  check_,
+                  getParentForChildren(),
+                  isClean());
+          check_ = null;
+        }
+        return checkBuilder_;
+      }
+
+      // optional .mesos.v1.KillPolicy kill_policy = 12;
+      private org.apache.mesos.v1.Protos.KillPolicy killPolicy_ = org.apache.mesos.v1.Protos.KillPolicy.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.KillPolicy, org.apache.mesos.v1.Protos.KillPolicy.Builder, org.apache.mesos.v1.Protos.KillPolicyOrBuilder> killPolicyBuilder_;
+      /**
+       * <code>optional .mesos.v1.KillPolicy kill_policy = 12;</code>
+       *
+       * <pre>
+       * A kill policy for the task. Implemented for executor-less
+       * command-based and docker tasks. For tasks that specify an
+       * executor, it is the executor's responsibility to implement
+       * the kill policy.
+       * </pre>
+       */
+      public boolean hasKillPolicy() {
+        return ((bitField0_ & 0x00000200) == 0x00000200);
+      }
+      /**
+       * <code>optional .mesos.v1.KillPolicy kill_policy = 12;</code>
+       *
+       * <pre>
+       * A kill policy for the task. Implemented for executor-less
+       * command-based and docker tasks. For tasks that specify an
+       * executor, it is the executor's responsibility to implement
+       * the kill policy.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.KillPolicy getKillPolicy() {
+        if (killPolicyBuilder_ == null) {
+          return killPolicy_;
+        } else {
+          return killPolicyBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.KillPolicy kill_policy = 12;</code>
+       *
+       * <pre>
+       * A kill policy for the task. Implemented for executor-less
+       * command-based and docker tasks. For tasks that specify an
+       * executor, it is the executor's responsibility to implement
+       * the kill policy.
+       * </pre>
+       */
+      public Builder setKillPolicy(org.apache.mesos.v1.Protos.KillPolicy value) {
+        if (killPolicyBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          killPolicy_ = value;
+          onChanged();
+        } else {
+          killPolicyBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000200;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.KillPolicy kill_policy = 12;</code>
+       *
+       * <pre>
+       * A kill policy for the task. Implemented for executor-less
+       * command-based and docker tasks. For tasks that specify an
+       * executor, it is the executor's responsibility to implement
+       * the kill policy.
+       * </pre>
+       */
+      public Builder setKillPolicy(
+          org.apache.mesos.v1.Protos.KillPolicy.Builder builderForValue) {
+        if (killPolicyBuilder_ == null) {
+          killPolicy_ = builderForValue.build();
+          onChanged();
+        } else {
+          killPolicyBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000200;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.KillPolicy kill_policy = 12;</code>
+       *
+       * <pre>
+       * A kill policy for the task. Implemented for executor-less
+       * command-based and docker tasks. For tasks that specify an
+       * executor, it is the executor's responsibility to implement
+       * the kill policy.
+       * </pre>
+       */
+      public Builder mergeKillPolicy(org.apache.mesos.v1.Protos.KillPolicy value) {
+        if (killPolicyBuilder_ == null) {
+          if (((bitField0_ & 0x00000200) == 0x00000200) &&
+              killPolicy_ != org.apache.mesos.v1.Protos.KillPolicy.getDefaultInstance()) {
+            killPolicy_ =
+              org.apache.mesos.v1.Protos.KillPolicy.newBuilder(killPolicy_).mergeFrom(value).buildPartial();
+          } else {
+            killPolicy_ = value;
+          }
+          onChanged();
+        } else {
+          killPolicyBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000200;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.KillPolicy kill_policy = 12;</code>
+       *
+       * <pre>
+       * A kill policy for the task. Implemented for executor-less
+       * command-based and docker tasks. For tasks that specify an
+       * executor, it is the executor's responsibility to implement
+       * the kill policy.
+       * </pre>
+       */
+      public Builder clearKillPolicy() {
+        if (killPolicyBuilder_ == null) {
+          killPolicy_ = org.apache.mesos.v1.Protos.KillPolicy.getDefaultInstance();
+          onChanged();
+        } else {
+          killPolicyBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000200);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.KillPolicy kill_policy = 12;</code>
+       *
+       * <pre>
+       * A kill policy for the task. Implemented for executor-less
+       * command-based and docker tasks. For tasks that specify an
+       * executor, it is the executor's responsibility to implement
+       * the kill policy.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.KillPolicy.Builder getKillPolicyBuilder() {
+        bitField0_ |= 0x00000200;
+        onChanged();
+        return getKillPolicyFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.KillPolicy kill_policy = 12;</code>
+       *
+       * <pre>
+       * A kill policy for the task. Implemented for executor-less
+       * command-based and docker tasks. For tasks that specify an
+       * executor, it is the executor's responsibility to implement
+       * the kill policy.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.KillPolicyOrBuilder getKillPolicyOrBuilder() {
+        if (killPolicyBuilder_ != null) {
+          return killPolicyBuilder_.getMessageOrBuilder();
+        } else {
+          return killPolicy_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.KillPolicy kill_policy = 12;</code>
+       *
+       * <pre>
+       * A kill policy for the task. Implemented for executor-less
+       * command-based and docker tasks. For tasks that specify an
+       * executor, it is the executor's responsibility to implement
+       * the kill policy.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.KillPolicy, org.apache.mesos.v1.Protos.KillPolicy.Builder, org.apache.mesos.v1.Protos.KillPolicyOrBuilder> 
+          getKillPolicyFieldBuilder() {
+        if (killPolicyBuilder_ == null) {
+          killPolicyBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.KillPolicy, org.apache.mesos.v1.Protos.KillPolicy.Builder, org.apache.mesos.v1.Protos.KillPolicyOrBuilder>(
+                  killPolicy_,
+                  getParentForChildren(),
+                  isClean());
+          killPolicy_ = null;
+        }
+        return killPolicyBuilder_;
+      }
+
+      // optional bytes data = 6;
+      private com.google.protobuf.ByteString data_ = com.google.protobuf.ByteString.EMPTY;
+      /**
+       * <code>optional bytes data = 6;</code>
+       */
+      public boolean hasData() {
+        return ((bitField0_ & 0x00000400) == 0x00000400);
+      }
+      /**
+       * <code>optional bytes data = 6;</code>
+       */
+      public com.google.protobuf.ByteString getData() {
+        return data_;
+      }
+      /**
+       * <code>optional bytes data = 6;</code>
+       */
+      public Builder setData(com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000400;
+        data_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional bytes data = 6;</code>
+       */
+      public Builder clearData() {
+        bitField0_ = (bitField0_ & ~0x00000400);
+        data_ = getDefaultInstance().getData();
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.v1.Labels labels = 10;
+      private org.apache.mesos.v1.Protos.Labels labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Labels, org.apache.mesos.v1.Protos.Labels.Builder, org.apache.mesos.v1.Protos.LabelsOrBuilder> labelsBuilder_;
+      /**
+       * <code>optional .mesos.v1.Labels labels = 10;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and agent endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and agent processes. Therefore,
+       * labels should be used to tag tasks with light-weight meta-data.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public boolean hasLabels() {
+        return ((bitField0_ & 0x00000800) == 0x00000800);
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 10;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and agent endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and agent processes. Therefore,
+       * labels should be used to tag tasks with light-weight meta-data.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Labels getLabels() {
+        if (labelsBuilder_ == null) {
+          return labels_;
+        } else {
+          return labelsBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 10;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and agent endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and agent processes. Therefore,
+       * labels should be used to tag tasks with light-weight meta-data.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public Builder setLabels(org.apache.mesos.v1.Protos.Labels value) {
+        if (labelsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          labels_ = value;
+          onChanged();
+        } else {
+          labelsBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 10;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and agent endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and agent processes. Therefore,
+       * labels should be used to tag tasks with light-weight meta-data.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public Builder setLabels(
+          org.apache.mesos.v1.Protos.Labels.Builder builderForValue) {
+        if (labelsBuilder_ == null) {
+          labels_ = builderForValue.build();
+          onChanged();
+        } else {
+          labelsBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 10;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and agent endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and agent processes. Therefore,
+       * labels should be used to tag tasks with light-weight meta-data.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public Builder mergeLabels(org.apache.mesos.v1.Protos.Labels value) {
+        if (labelsBuilder_ == null) {
+          if (((bitField0_ & 0x00000800) == 0x00000800) &&
+              labels_ != org.apache.mesos.v1.Protos.Labels.getDefaultInstance()) {
+            labels_ =
+              org.apache.mesos.v1.Protos.Labels.newBuilder(labels_).mergeFrom(value).buildPartial();
+          } else {
+            labels_ = value;
+          }
+          onChanged();
+        } else {
+          labelsBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 10;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and agent endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and agent processes. Therefore,
+       * labels should be used to tag tasks with light-weight meta-data.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public Builder clearLabels() {
+        if (labelsBuilder_ == null) {
+          labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+          onChanged();
+        } else {
+          labelsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000800);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 10;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and agent endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and agent processes. Therefore,
+       * labels should be used to tag tasks with light-weight meta-data.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Labels.Builder getLabelsBuilder() {
+        bitField0_ |= 0x00000800;
+        onChanged();
+        return getLabelsFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 10;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and agent endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and agent processes. Therefore,
+       * labels should be used to tag tasks with light-weight meta-data.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+        if (labelsBuilder_ != null) {
+          return labelsBuilder_.getMessageOrBuilder();
+        } else {
+          return labels_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 10;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and agent endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and agent processes. Therefore,
+       * labels should be used to tag tasks with light-weight meta-data.
+       * Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Labels, org.apache.mesos.v1.Protos.Labels.Builder, org.apache.mesos.v1.Protos.LabelsOrBuilder> 
+          getLabelsFieldBuilder() {
+        if (labelsBuilder_ == null) {
+          labelsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Labels, org.apache.mesos.v1.Protos.Labels.Builder, org.apache.mesos.v1.Protos.LabelsOrBuilder>(
+                  labels_,
+                  getParentForChildren(),
+                  isClean());
+          labels_ = null;
+        }
+        return labelsBuilder_;
+      }
+
+      // optional .mesos.v1.DiscoveryInfo discovery = 11;
+      private org.apache.mesos.v1.Protos.DiscoveryInfo discovery_ = org.apache.mesos.v1.Protos.DiscoveryInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.DiscoveryInfo, org.apache.mesos.v1.Protos.DiscoveryInfo.Builder, org.apache.mesos.v1.Protos.DiscoveryInfoOrBuilder> discoveryBuilder_;
+      /**
+       * <code>optional .mesos.v1.DiscoveryInfo discovery = 11;</code>
+       *
+       * <pre>
+       * Service discovery information for the task. It is not interpreted
+       * or acted upon by Mesos. It is up to a service discovery system
+       * to use this information as needed and to handle tasks without
+       * service discovery information.
+       * </pre>
+       */
+      public boolean hasDiscovery() {
+        return ((bitField0_ & 0x00001000) == 0x00001000);
+      }
+      /**
+       * <code>optional .mesos.v1.DiscoveryInfo discovery = 11;</code>
+       *
+       * <pre>
+       * Service discovery information for the task. It is not interpreted
+       * or acted upon by Mesos. It is up to a service discovery system
+       * to use this information as needed and to handle tasks without
+       * service discovery information.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.DiscoveryInfo getDiscovery() {
+        if (discoveryBuilder_ == null) {
+          return discovery_;
+        } else {
+          return discoveryBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.DiscoveryInfo discovery = 11;</code>
+       *
+       * <pre>
+       * Service discovery information for the task. It is not interpreted
+       * or acted upon by Mesos. It is up to a service discovery system
+       * to use this information as needed and to handle tasks without
+       * service discovery information.
+       * </pre>
+       */
+      public Builder setDiscovery(org.apache.mesos.v1.Protos.DiscoveryInfo value) {
+        if (discoveryBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          discovery_ = value;
+          onChanged();
+        } else {
+          discoveryBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00001000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.DiscoveryInfo discovery = 11;</code>
+       *
+       * <pre>
+       * Service discovery information for the task. It is not interpreted
+       * or acted upon by Mesos. It is up to a service discovery system
+       * to use this information as needed and to handle tasks without
+       * service discovery information.
+       * </pre>
+       */
+      public Builder setDiscovery(
+          org.apache.mesos.v1.Protos.DiscoveryInfo.Builder builderForValue) {
+        if (discoveryBuilder_ == null) {
+          discovery_ = builderForValue.build();
+          onChanged();
+        } else {
+          discoveryBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00001000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.DiscoveryInfo discovery = 11;</code>
+       *
+       * <pre>
+       * Service discovery information for the task. It is not interpreted
+       * or acted upon by Mesos. It is up to a service discovery system
+       * to use this information as needed and to handle tasks without
+       * service discovery information.
+       * </pre>
+       */
+      public Builder mergeDiscovery(org.apache.mesos.v1.Protos.DiscoveryInfo value) {
+        if (discoveryBuilder_ == null) {
+          if (((bitField0_ & 0x00001000) == 0x00001000) &&
+              discovery_ != org.apache.mesos.v1.Protos.DiscoveryInfo.getDefaultInstance()) {
+            discovery_ =
+              org.apache.mesos.v1.Protos.DiscoveryInfo.newBuilder(discovery_).mergeFrom(value).buildPartial();
+          } else {
+            discovery_ = value;
+          }
+          onChanged();
+        } else {
+          discoveryBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00001000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.DiscoveryInfo discovery = 11;</code>
+       *
+       * <pre>
+       * Service discovery information for the task. It is not interpreted
+       * or acted upon by Mesos. It is up to a service discovery system
+       * to use this information as needed and to handle tasks without
+       * service discovery information.
+       * </pre>
+       */
+      public Builder clearDiscovery() {
+        if (discoveryBuilder_ == null) {
+          discovery_ = org.apache.mesos.v1.Protos.DiscoveryInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          discoveryBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00001000);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.DiscoveryInfo discovery = 11;</code>
+       *
+       * <pre>
+       * Service discovery information for the task. It is not interpreted
+       * or acted upon by Mesos. It is up to a service discovery system
+       * to use this information as needed and to handle tasks without
+       * service discovery information.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.DiscoveryInfo.Builder getDiscoveryBuilder() {
+        bitField0_ |= 0x00001000;
+        onChanged();
+        return getDiscoveryFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.DiscoveryInfo discovery = 11;</code>
+       *
+       * <pre>
+       * Service discovery information for the task. It is not interpreted
+       * or acted upon by Mesos. It is up to a service discovery system
+       * to use this information as needed and to handle tasks without
+       * service discovery information.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.DiscoveryInfoOrBuilder getDiscoveryOrBuilder() {
+        if (discoveryBuilder_ != null) {
+          return discoveryBuilder_.getMessageOrBuilder();
+        } else {
+          return discovery_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.DiscoveryInfo discovery = 11;</code>
+       *
+       * <pre>
+       * Service discovery information for the task. It is not interpreted
+       * or acted upon by Mesos. It is up to a service discovery system
+       * to use this information as needed and to handle tasks without
+       * service discovery information.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.DiscoveryInfo, org.apache.mesos.v1.Protos.DiscoveryInfo.Builder, org.apache.mesos.v1.Protos.DiscoveryInfoOrBuilder> 
+          getDiscoveryFieldBuilder() {
+        if (discoveryBuilder_ == null) {
+          discoveryBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.DiscoveryInfo, org.apache.mesos.v1.Protos.DiscoveryInfo.Builder, org.apache.mesos.v1.Protos.DiscoveryInfoOrBuilder>(
+                  discovery_,
+                  getParentForChildren(),
+                  isClean());
+          discovery_ = null;
+        }
+        return discoveryBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.TaskInfo)
+    }
+
+    static {
+      defaultInstance = new TaskInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.TaskInfo)
+  }
+
+  public interface TaskGroupInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // repeated .mesos.v1.TaskInfo tasks = 1;
+    /**
+     * <code>repeated .mesos.v1.TaskInfo tasks = 1;</code>
+     */
+    java.util.List<org.apache.mesos.v1.Protos.TaskInfo> 
+        getTasksList();
+    /**
+     * <code>repeated .mesos.v1.TaskInfo tasks = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.TaskInfo getTasks(int index);
+    /**
+     * <code>repeated .mesos.v1.TaskInfo tasks = 1;</code>
+     */
+    int getTasksCount();
+    /**
+     * <code>repeated .mesos.v1.TaskInfo tasks = 1;</code>
+     */
+    java.util.List<? extends org.apache.mesos.v1.Protos.TaskInfoOrBuilder> 
+        getTasksOrBuilderList();
+    /**
+     * <code>repeated .mesos.v1.TaskInfo tasks = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.TaskInfoOrBuilder getTasksOrBuilder(
+        int index);
+  }
+  /**
+   * Protobuf type {@code mesos.v1.TaskGroupInfo}
+   *
+   * <pre>
+   **
+   * Describes a group of tasks that belong to an executor. The
+   * executor will receive the task group in a single message to
+   * allow the group to be launched "atomically".
+   *
+   * NOTES:
+   * 1) `NetworkInfo` must not be set inside task's `ContainerInfo`.
+   * 2) `TaskInfo.executor` doesn't need to set. If set, it should match
+   *    `LaunchGroup.executor`.
+   * </pre>
+   */
+  public static final class TaskGroupInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements TaskGroupInfoOrBuilder {
+    // Use TaskGroupInfo.newBuilder() to construct.
+    private TaskGroupInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private TaskGroupInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final TaskGroupInfo defaultInstance;
+    public static TaskGroupInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public TaskGroupInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private TaskGroupInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                tasks_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.TaskInfo>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              tasks_.add(input.readMessage(org.apache.mesos.v1.Protos.TaskInfo.PARSER, extensionRegistry));
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+          tasks_ = java.util.Collections.unmodifiableList(tasks_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TaskGroupInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TaskGroupInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.TaskGroupInfo.class, org.apache.mesos.v1.Protos.TaskGroupInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<TaskGroupInfo> PARSER =
+        new com.google.protobuf.AbstractParser<TaskGroupInfo>() {
+      public TaskGroupInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new TaskGroupInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<TaskGroupInfo> getParserForType() {
+      return PARSER;
+    }
+
+    // repeated .mesos.v1.TaskInfo tasks = 1;
+    public static final int TASKS_FIELD_NUMBER = 1;
+    private java.util.List<org.apache.mesos.v1.Protos.TaskInfo> tasks_;
+    /**
+     * <code>repeated .mesos.v1.TaskInfo tasks = 1;</code>
+     */
+    public java.util.List<org.apache.mesos.v1.Protos.TaskInfo> getTasksList() {
+      return tasks_;
+    }
+    /**
+     * <code>repeated .mesos.v1.TaskInfo tasks = 1;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.v1.Protos.TaskInfoOrBuilder> 
+        getTasksOrBuilderList() {
+      return tasks_;
+    }
+    /**
+     * <code>repeated .mesos.v1.TaskInfo tasks = 1;</code>
+     */
+    public int getTasksCount() {
+      return tasks_.size();
+    }
+    /**
+     * <code>repeated .mesos.v1.TaskInfo tasks = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.TaskInfo getTasks(int index) {
+      return tasks_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.v1.TaskInfo tasks = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.TaskInfoOrBuilder getTasksOrBuilder(
+        int index) {
+      return tasks_.get(index);
+    }
+
+    private void initFields() {
+      tasks_ = java.util.Collections.emptyList();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      for (int i = 0; i < getTasksCount(); i++) {
+        if (!getTasks(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      for (int i = 0; i < tasks_.size(); i++) {
+        output.writeMessage(1, tasks_.get(i));
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      for (int i = 0; i < tasks_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, tasks_.get(i));
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.TaskGroupInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.TaskGroupInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.TaskGroupInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.TaskGroupInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.TaskGroupInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.TaskGroupInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.TaskGroupInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.TaskGroupInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.TaskGroupInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.TaskGroupInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.TaskGroupInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.TaskGroupInfo}
+     *
+     * <pre>
+     **
+     * Describes a group of tasks that belong to an executor. The
+     * executor will receive the task group in a single message to
+     * allow the group to be launched "atomically".
+     *
+     * NOTES:
+     * 1) `NetworkInfo` must not be set inside task's `ContainerInfo`.
+     * 2) `TaskInfo.executor` doesn't need to set. If set, it should match
+     *    `LaunchGroup.executor`.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.TaskGroupInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TaskGroupInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TaskGroupInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.TaskGroupInfo.class, org.apache.mesos.v1.Protos.TaskGroupInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.TaskGroupInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getTasksFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (tasksBuilder_ == null) {
+          tasks_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+        } else {
+          tasksBuilder_.clear();
+        }
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TaskGroupInfo_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.TaskGroupInfo getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.TaskGroupInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.TaskGroupInfo build() {
+        org.apache.mesos.v1.Protos.TaskGroupInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.TaskGroupInfo buildPartial() {
+        org.apache.mesos.v1.Protos.TaskGroupInfo result = new org.apache.mesos.v1.Protos.TaskGroupInfo(this);
+        int from_bitField0_ = bitField0_;
+        if (tasksBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            tasks_ = java.util.Collections.unmodifiableList(tasks_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.tasks_ = tasks_;
+        } else {
+          result.tasks_ = tasksBuilder_.build();
+        }
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.TaskGroupInfo) {
+          return mergeFrom((org.apache.mesos.v1.Protos.TaskGroupInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.TaskGroupInfo other) {
+        if (other == org.apache.mesos.v1.Protos.TaskGroupInfo.getDefaultInstance()) return this;
+        if (tasksBuilder_ == null) {
+          if (!other.tasks_.isEmpty()) {
+            if (tasks_.isEmpty()) {
+              tasks_ = other.tasks_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureTasksIsMutable();
+              tasks_.addAll(other.tasks_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.tasks_.isEmpty()) {
+            if (tasksBuilder_.isEmpty()) {
+              tasksBuilder_.dispose();
+              tasksBuilder_ = null;
+              tasks_ = other.tasks_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              tasksBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getTasksFieldBuilder() : null;
+            } else {
+              tasksBuilder_.addAllMessages(other.tasks_);
+            }
+          }
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        for (int i = 0; i < getTasksCount(); i++) {
+          if (!getTasks(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.TaskGroupInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.TaskGroupInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // repeated .mesos.v1.TaskInfo tasks = 1;
+      private java.util.List<org.apache.mesos.v1.Protos.TaskInfo> tasks_ =
+        java.util.Collections.emptyList();
+      private void ensureTasksIsMutable() {
+        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+          tasks_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.TaskInfo>(tasks_);
+          bitField0_ |= 0x00000001;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.TaskInfo, org.apache.mesos.v1.Protos.TaskInfo.Builder, org.apache.mesos.v1.Protos.TaskInfoOrBuilder> tasksBuilder_;
+
+      /**
+       * <code>repeated .mesos.v1.TaskInfo tasks = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.TaskInfo> getTasksList() {
+        if (tasksBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(tasks_);
+        } else {
+          return tasksBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.TaskInfo tasks = 1;</code>
+       */
+      public int getTasksCount() {
+        if (tasksBuilder_ == null) {
+          return tasks_.size();
+        } else {
+          return tasksBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.TaskInfo tasks = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.TaskInfo getTasks(int index) {
+        if (tasksBuilder_ == null) {
+          return tasks_.get(index);
+        } else {
+          return tasksBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.TaskInfo tasks = 1;</code>
+       */
+      public Builder setTasks(
+          int index, org.apache.mesos.v1.Protos.TaskInfo value) {
+        if (tasksBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureTasksIsMutable();
+          tasks_.set(index, value);
+          onChanged();
+        } else {
+          tasksBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.TaskInfo tasks = 1;</code>
+       */
+      public Builder setTasks(
+          int index, org.apache.mesos.v1.Protos.TaskInfo.Builder builderForValue) {
+        if (tasksBuilder_ == null) {
+          ensureTasksIsMutable();
+          tasks_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          tasksBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.TaskInfo tasks = 1;</code>
+       */
+      public Builder addTasks(org.apache.mesos.v1.Protos.TaskInfo value) {
+        if (tasksBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureTasksIsMutable();
+          tasks_.add(value);
+          onChanged();
+        } else {
+          tasksBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.TaskInfo tasks = 1;</code>
+       */
+      public Builder addTasks(
+          int index, org.apache.mesos.v1.Protos.TaskInfo value) {
+        if (tasksBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureTasksIsMutable();
+          tasks_.add(index, value);
+          onChanged();
+        } else {
+          tasksBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.TaskInfo tasks = 1;</code>
+       */
+      public Builder addTasks(
+          org.apache.mesos.v1.Protos.TaskInfo.Builder builderForValue) {
+        if (tasksBuilder_ == null) {
+          ensureTasksIsMutable();
+          tasks_.add(builderForValue.build());
+          onChanged();
+        } else {
+          tasksBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.TaskInfo tasks = 1;</code>
+       */
+      public Builder addTasks(
+          int index, org.apache.mesos.v1.Protos.TaskInfo.Builder builderForValue) {
+        if (tasksBuilder_ == null) {
+          ensureTasksIsMutable();
+          tasks_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          tasksBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.TaskInfo tasks = 1;</code>
+       */
+      public Builder addAllTasks(
+          java.lang.Iterable<? extends org.apache.mesos.v1.Protos.TaskInfo> values) {
+        if (tasksBuilder_ == null) {
+          ensureTasksIsMutable();
+          super.addAll(values, tasks_);
+          onChanged();
+        } else {
+          tasksBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.TaskInfo tasks = 1;</code>
+       */
+      public Builder clearTasks() {
+        if (tasksBuilder_ == null) {
+          tasks_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+        } else {
+          tasksBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.TaskInfo tasks = 1;</code>
+       */
+      public Builder removeTasks(int index) {
+        if (tasksBuilder_ == null) {
+          ensureTasksIsMutable();
+          tasks_.remove(index);
+          onChanged();
+        } else {
+          tasksBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.TaskInfo tasks = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.TaskInfo.Builder getTasksBuilder(
+          int index) {
+        return getTasksFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.TaskInfo tasks = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.TaskInfoOrBuilder getTasksOrBuilder(
+          int index) {
+        if (tasksBuilder_ == null) {
+          return tasks_.get(index);  } else {
+          return tasksBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.TaskInfo tasks = 1;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.TaskInfoOrBuilder> 
+           getTasksOrBuilderList() {
+        if (tasksBuilder_ != null) {
+          return tasksBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(tasks_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.TaskInfo tasks = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.TaskInfo.Builder addTasksBuilder() {
+        return getTasksFieldBuilder().addBuilder(
+            org.apache.mesos.v1.Protos.TaskInfo.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.TaskInfo tasks = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.TaskInfo.Builder addTasksBuilder(
+          int index) {
+        return getTasksFieldBuilder().addBuilder(
+            index, org.apache.mesos.v1.Protos.TaskInfo.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.TaskInfo tasks = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.TaskInfo.Builder> 
+           getTasksBuilderList() {
+        return getTasksFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.TaskInfo, org.apache.mesos.v1.Protos.TaskInfo.Builder, org.apache.mesos.v1.Protos.TaskInfoOrBuilder> 
+          getTasksFieldBuilder() {
+        if (tasksBuilder_ == null) {
+          tasksBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.TaskInfo, org.apache.mesos.v1.Protos.TaskInfo.Builder, org.apache.mesos.v1.Protos.TaskInfoOrBuilder>(
+                  tasks_,
+                  ((bitField0_ & 0x00000001) == 0x00000001),
+                  getParentForChildren(),
+                  isClean());
+          tasks_ = null;
+        }
+        return tasksBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.TaskGroupInfo)
+    }
+
+    static {
+      defaultInstance = new TaskGroupInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.TaskGroupInfo)
+  }
+
+  public interface TaskOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string name = 1;
+    /**
+     * <code>required string name = 1;</code>
+     */
+    boolean hasName();
+    /**
+     * <code>required string name = 1;</code>
+     */
+    java.lang.String getName();
+    /**
+     * <code>required string name = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getNameBytes();
+
+    // required .mesos.v1.TaskID task_id = 2;
+    /**
+     * <code>required .mesos.v1.TaskID task_id = 2;</code>
+     */
+    boolean hasTaskId();
+    /**
+     * <code>required .mesos.v1.TaskID task_id = 2;</code>
+     */
+    org.apache.mesos.v1.Protos.TaskID getTaskId();
+    /**
+     * <code>required .mesos.v1.TaskID task_id = 2;</code>
+     */
+    org.apache.mesos.v1.Protos.TaskIDOrBuilder getTaskIdOrBuilder();
+
+    // required .mesos.v1.FrameworkID framework_id = 3;
+    /**
+     * <code>required .mesos.v1.FrameworkID framework_id = 3;</code>
+     */
+    boolean hasFrameworkId();
+    /**
+     * <code>required .mesos.v1.FrameworkID framework_id = 3;</code>
+     */
+    org.apache.mesos.v1.Protos.FrameworkID getFrameworkId();
+    /**
+     * <code>required .mesos.v1.FrameworkID framework_id = 3;</code>
+     */
+    org.apache.mesos.v1.Protos.FrameworkIDOrBuilder getFrameworkIdOrBuilder();
+
+    // optional .mesos.v1.ExecutorID executor_id = 4;
+    /**
+     * <code>optional .mesos.v1.ExecutorID executor_id = 4;</code>
+     */
+    boolean hasExecutorId();
+    /**
+     * <code>optional .mesos.v1.ExecutorID executor_id = 4;</code>
+     */
+    org.apache.mesos.v1.Protos.ExecutorID getExecutorId();
+    /**
+     * <code>optional .mesos.v1.ExecutorID executor_id = 4;</code>
+     */
+    org.apache.mesos.v1.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder();
+
+    // required .mesos.v1.AgentID agent_id = 5;
+    /**
+     * <code>required .mesos.v1.AgentID agent_id = 5;</code>
+     */
+    boolean hasAgentId();
+    /**
+     * <code>required .mesos.v1.AgentID agent_id = 5;</code>
+     */
+    org.apache.mesos.v1.Protos.AgentID getAgentId();
+    /**
+     * <code>required .mesos.v1.AgentID agent_id = 5;</code>
+     */
+    org.apache.mesos.v1.Protos.AgentIDOrBuilder getAgentIdOrBuilder();
+
+    // required .mesos.v1.TaskState state = 6;
+    /**
+     * <code>required .mesos.v1.TaskState state = 6;</code>
+     *
+     * <pre>
+     * Latest state of the task.
+     * </pre>
+     */
+    boolean hasState();
+    /**
+     * <code>required .mesos.v1.TaskState state = 6;</code>
+     *
+     * <pre>
+     * Latest state of the task.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.TaskState getState();
+
+    // repeated .mesos.v1.Resource resources = 7;
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 7;</code>
+     */
+    java.util.List<org.apache.mesos.v1.Protos.Resource> 
+        getResourcesList();
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 7;</code>
+     */
+    org.apache.mesos.v1.Protos.Resource getResources(int index);
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 7;</code>
+     */
+    int getResourcesCount();
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 7;</code>
+     */
+    java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+        getResourcesOrBuilderList();
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 7;</code>
+     */
+    org.apache.mesos.v1.Protos.ResourceOrBuilder getResourcesOrBuilder(
+        int index);
+
+    // repeated .mesos.v1.TaskStatus statuses = 8;
+    /**
+     * <code>repeated .mesos.v1.TaskStatus statuses = 8;</code>
+     */
+    java.util.List<org.apache.mesos.v1.Protos.TaskStatus> 
+        getStatusesList();
+    /**
+     * <code>repeated .mesos.v1.TaskStatus statuses = 8;</code>
+     */
+    org.apache.mesos.v1.Protos.TaskStatus getStatuses(int index);
+    /**
+     * <code>repeated .mesos.v1.TaskStatus statuses = 8;</code>
+     */
+    int getStatusesCount();
+    /**
+     * <code>repeated .mesos.v1.TaskStatus statuses = 8;</code>
+     */
+    java.util.List<? extends org.apache.mesos.v1.Protos.TaskStatusOrBuilder> 
+        getStatusesOrBuilderList();
+    /**
+     * <code>repeated .mesos.v1.TaskStatus statuses = 8;</code>
+     */
+    org.apache.mesos.v1.Protos.TaskStatusOrBuilder getStatusesOrBuilder(
+        int index);
+
+    // optional .mesos.v1.TaskState status_update_state = 9;
+    /**
+     * <code>optional .mesos.v1.TaskState status_update_state = 9;</code>
+     *
+     * <pre>
+     * These fields correspond to the state and uuid of the latest
+     * status update forwarded to the master.
+     * NOTE: Either both the fields must be set or both must be unset.
+     * </pre>
+     */
+    boolean hasStatusUpdateState();
+    /**
+     * <code>optional .mesos.v1.TaskState status_update_state = 9;</code>
+     *
+     * <pre>
+     * These fields correspond to the state and uuid of the latest
+     * status update forwarded to the master.
+     * NOTE: Either both the fields must be set or both must be unset.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.TaskState getStatusUpdateState();
+
+    // optional bytes status_update_uuid = 10;
+    /**
+     * <code>optional bytes status_update_uuid = 10;</code>
+     */
+    boolean hasStatusUpdateUuid();
+    /**
+     * <code>optional bytes status_update_uuid = 10;</code>
+     */
+    com.google.protobuf.ByteString getStatusUpdateUuid();
+
+    // optional .mesos.v1.Labels labels = 11;
+    /**
+     * <code>optional .mesos.v1.Labels labels = 11;</code>
+     */
+    boolean hasLabels();
+    /**
+     * <code>optional .mesos.v1.Labels labels = 11;</code>
+     */
+    org.apache.mesos.v1.Protos.Labels getLabels();
+    /**
+     * <code>optional .mesos.v1.Labels labels = 11;</code>
+     */
+    org.apache.mesos.v1.Protos.LabelsOrBuilder getLabelsOrBuilder();
+
+    // optional .mesos.v1.DiscoveryInfo discovery = 12;
+    /**
+     * <code>optional .mesos.v1.DiscoveryInfo discovery = 12;</code>
+     *
+     * <pre>
+     * Service discovery information for the task. It is not interpreted
+     * or acted upon by Mesos. It is up to a service discovery system
+     * to use this information as needed and to handle tasks without
+     * service discovery information.
+     * </pre>
+     */
+    boolean hasDiscovery();
+    /**
+     * <code>optional .mesos.v1.DiscoveryInfo discovery = 12;</code>
+     *
+     * <pre>
+     * Service discovery information for the task. It is not interpreted
+     * or acted upon by Mesos. It is up to a service discovery system
+     * to use this information as needed and to handle tasks without
+     * service discovery information.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.DiscoveryInfo getDiscovery();
+    /**
+     * <code>optional .mesos.v1.DiscoveryInfo discovery = 12;</code>
+     *
+     * <pre>
+     * Service discovery information for the task. It is not interpreted
+     * or acted upon by Mesos. It is up to a service discovery system
+     * to use this information as needed and to handle tasks without
+     * service discovery information.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.DiscoveryInfoOrBuilder getDiscoveryOrBuilder();
+
+    // optional .mesos.v1.ContainerInfo container = 13;
+    /**
+     * <code>optional .mesos.v1.ContainerInfo container = 13;</code>
+     *
+     * <pre>
+     * Container information for the task.
+     * </pre>
+     */
+    boolean hasContainer();
+    /**
+     * <code>optional .mesos.v1.ContainerInfo container = 13;</code>
+     *
+     * <pre>
+     * Container information for the task.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.ContainerInfo getContainer();
+    /**
+     * <code>optional .mesos.v1.ContainerInfo container = 13;</code>
+     *
+     * <pre>
+     * Container information for the task.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.ContainerInfoOrBuilder getContainerOrBuilder();
+
+    // optional string user = 14;
+    /**
+     * <code>optional string user = 14;</code>
+     *
+     * <pre>
+     * Specific user under which task is running.
+     * </pre>
+     */
+    boolean hasUser();
+    /**
+     * <code>optional string user = 14;</code>
+     *
+     * <pre>
+     * Specific user under which task is running.
+     * </pre>
+     */
+    java.lang.String getUser();
+    /**
+     * <code>optional string user = 14;</code>
+     *
+     * <pre>
+     * Specific user under which task is running.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getUserBytes();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.Task}
+   *
+   * <pre>
+   **
+   * Describes a task, similar to `TaskInfo`.
+   *
+   * `Task` is used in some of the Mesos messages found below.
+   * `Task` is used instead of `TaskInfo` if:
+   *   1) we need additional IDs, such as a specific
+   *      framework, executor, or agent; or
+   *   2) we do not need the additional data, such as the command run by the
+   *      task or the health checks.  These additional fields may be large and
+   *      unnecessary for some Mesos messages.
+   *
+   * `Task` is generally constructed from a `TaskInfo`.  See protobuf::createTask.
+   * </pre>
+   */
+  public static final class Task extends
+      com.google.protobuf.GeneratedMessage
+      implements TaskOrBuilder {
+    // Use Task.newBuilder() to construct.
+    private Task(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Task(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Task defaultInstance;
+    public static Task getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Task getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Task(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              name_ = input.readBytes();
+              break;
+            }
+            case 18: {
+              org.apache.mesos.v1.Protos.TaskID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = taskId_.toBuilder();
+              }
+              taskId_ = input.readMessage(org.apache.mesos.v1.Protos.TaskID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(taskId_);
+                taskId_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+            case 26: {
+              org.apache.mesos.v1.Protos.FrameworkID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                subBuilder = frameworkId_.toBuilder();
+              }
+              frameworkId_ = input.readMessage(org.apache.mesos.v1.Protos.FrameworkID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(frameworkId_);
+                frameworkId_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000004;
+              break;
+            }
+            case 34: {
+              org.apache.mesos.v1.Protos.ExecutorID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                subBuilder = executorId_.toBuilder();
+              }
+              executorId_ = input.readMessage(org.apache.mesos.v1.Protos.ExecutorID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(executorId_);
+                executorId_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000008;
+              break;
+            }
+            case 42: {
+              org.apache.mesos.v1.Protos.AgentID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000010) == 0x00000010)) {
+                subBuilder = agentId_.toBuilder();
+              }
+              agentId_ = input.readMessage(org.apache.mesos.v1.Protos.AgentID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(agentId_);
+                agentId_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000010;
+              break;
+            }
+            case 48: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.v1.Protos.TaskState value = org.apache.mesos.v1.Protos.TaskState.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(6, rawValue);
+              } else {
+                bitField0_ |= 0x00000020;
+                state_ = value;
+              }
+              break;
+            }
+            case 58: {
+              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
+                resources_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Resource>();
+                mutable_bitField0_ |= 0x00000040;
+              }
+              resources_.add(input.readMessage(org.apache.mesos.v1.Protos.Resource.PARSER, extensionRegistry));
+              break;
+            }
+            case 66: {
+              if (!((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
+                statuses_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.TaskStatus>();
+                mutable_bitField0_ |= 0x00000080;
+              }
+              statuses_.add(input.readMessage(org.apache.mesos.v1.Protos.TaskStatus.PARSER, extensionRegistry));
+              break;
+            }
+            case 72: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.v1.Protos.TaskState value = org.apache.mesos.v1.Protos.TaskState.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(9, rawValue);
+              } else {
+                bitField0_ |= 0x00000040;
+                statusUpdateState_ = value;
+              }
+              break;
+            }
+            case 82: {
+              bitField0_ |= 0x00000080;
+              statusUpdateUuid_ = input.readBytes();
+              break;
+            }
+            case 90: {
+              org.apache.mesos.v1.Protos.Labels.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000100) == 0x00000100)) {
+                subBuilder = labels_.toBuilder();
+              }
+              labels_ = input.readMessage(org.apache.mesos.v1.Protos.Labels.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(labels_);
+                labels_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000100;
+              break;
+            }
+            case 98: {
+              org.apache.mesos.v1.Protos.DiscoveryInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000200) == 0x00000200)) {
+                subBuilder = discovery_.toBuilder();
+              }
+              discovery_ = input.readMessage(org.apache.mesos.v1.Protos.DiscoveryInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(discovery_);
+                discovery_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000200;
+              break;
+            }
+            case 106: {
+              org.apache.mesos.v1.Protos.ContainerInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000400) == 0x00000400)) {
+                subBuilder = container_.toBuilder();
+              }
+              container_ = input.readMessage(org.apache.mesos.v1.Protos.ContainerInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(container_);
+                container_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000400;
+              break;
+            }
+            case 114: {
+              bitField0_ |= 0x00000800;
+              user_ = input.readBytes();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
+          resources_ = java.util.Collections.unmodifiableList(resources_);
+        }
+        if (((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
+          statuses_ = java.util.Collections.unmodifiableList(statuses_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Task_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Task_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.Task.class, org.apache.mesos.v1.Protos.Task.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Task> PARSER =
+        new com.google.protobuf.AbstractParser<Task>() {
+      public Task parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Task(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Task> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string name = 1;
+    public static final int NAME_FIELD_NUMBER = 1;
+    private java.lang.Object name_;
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public boolean hasName() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public java.lang.String getName() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          name_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getNameBytes() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        name_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // required .mesos.v1.TaskID task_id = 2;
+    public static final int TASK_ID_FIELD_NUMBER = 2;
+    private org.apache.mesos.v1.Protos.TaskID taskId_;
+    /**
+     * <code>required .mesos.v1.TaskID task_id = 2;</code>
+     */
+    public boolean hasTaskId() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>required .mesos.v1.TaskID task_id = 2;</code>
+     */
+    public org.apache.mesos.v1.Protos.TaskID getTaskId() {
+      return taskId_;
+    }
+    /**
+     * <code>required .mesos.v1.TaskID task_id = 2;</code>
+     */
+    public org.apache.mesos.v1.Protos.TaskIDOrBuilder getTaskIdOrBuilder() {
+      return taskId_;
+    }
+
+    // required .mesos.v1.FrameworkID framework_id = 3;
+    public static final int FRAMEWORK_ID_FIELD_NUMBER = 3;
+    private org.apache.mesos.v1.Protos.FrameworkID frameworkId_;
+    /**
+     * <code>required .mesos.v1.FrameworkID framework_id = 3;</code>
+     */
+    public boolean hasFrameworkId() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>required .mesos.v1.FrameworkID framework_id = 3;</code>
+     */
+    public org.apache.mesos.v1.Protos.FrameworkID getFrameworkId() {
+      return frameworkId_;
+    }
+    /**
+     * <code>required .mesos.v1.FrameworkID framework_id = 3;</code>
+     */
+    public org.apache.mesos.v1.Protos.FrameworkIDOrBuilder getFrameworkIdOrBuilder() {
+      return frameworkId_;
+    }
+
+    // optional .mesos.v1.ExecutorID executor_id = 4;
+    public static final int EXECUTOR_ID_FIELD_NUMBER = 4;
+    private org.apache.mesos.v1.Protos.ExecutorID executorId_;
+    /**
+     * <code>optional .mesos.v1.ExecutorID executor_id = 4;</code>
+     */
+    public boolean hasExecutorId() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional .mesos.v1.ExecutorID executor_id = 4;</code>
+     */
+    public org.apache.mesos.v1.Protos.ExecutorID getExecutorId() {
+      return executorId_;
+    }
+    /**
+     * <code>optional .mesos.v1.ExecutorID executor_id = 4;</code>
+     */
+    public org.apache.mesos.v1.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder() {
+      return executorId_;
+    }
+
+    // required .mesos.v1.AgentID agent_id = 5;
+    public static final int AGENT_ID_FIELD_NUMBER = 5;
+    private org.apache.mesos.v1.Protos.AgentID agentId_;
+    /**
+     * <code>required .mesos.v1.AgentID agent_id = 5;</code>
+     */
+    public boolean hasAgentId() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>required .mesos.v1.AgentID agent_id = 5;</code>
+     */
+    public org.apache.mesos.v1.Protos.AgentID getAgentId() {
+      return agentId_;
+    }
+    /**
+     * <code>required .mesos.v1.AgentID agent_id = 5;</code>
+     */
+    public org.apache.mesos.v1.Protos.AgentIDOrBuilder getAgentIdOrBuilder() {
+      return agentId_;
+    }
+
+    // required .mesos.v1.TaskState state = 6;
+    public static final int STATE_FIELD_NUMBER = 6;
+    private org.apache.mesos.v1.Protos.TaskState state_;
+    /**
+     * <code>required .mesos.v1.TaskState state = 6;</code>
+     *
+     * <pre>
+     * Latest state of the task.
+     * </pre>
+     */
+    public boolean hasState() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>required .mesos.v1.TaskState state = 6;</code>
+     *
+     * <pre>
+     * Latest state of the task.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.TaskState getState() {
+      return state_;
+    }
+
+    // repeated .mesos.v1.Resource resources = 7;
+    public static final int RESOURCES_FIELD_NUMBER = 7;
+    private java.util.List<org.apache.mesos.v1.Protos.Resource> resources_;
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 7;</code>
+     */
+    public java.util.List<org.apache.mesos.v1.Protos.Resource> getResourcesList() {
+      return resources_;
+    }
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 7;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+        getResourcesOrBuilderList() {
+      return resources_;
+    }
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 7;</code>
+     */
+    public int getResourcesCount() {
+      return resources_.size();
+    }
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 7;</code>
+     */
+    public org.apache.mesos.v1.Protos.Resource getResources(int index) {
+      return resources_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 7;</code>
+     */
+    public org.apache.mesos.v1.Protos.ResourceOrBuilder getResourcesOrBuilder(
+        int index) {
+      return resources_.get(index);
+    }
+
+    // repeated .mesos.v1.TaskStatus statuses = 8;
+    public static final int STATUSES_FIELD_NUMBER = 8;
+    private java.util.List<org.apache.mesos.v1.Protos.TaskStatus> statuses_;
+    /**
+     * <code>repeated .mesos.v1.TaskStatus statuses = 8;</code>
+     */
+    public java.util.List<org.apache.mesos.v1.Protos.TaskStatus> getStatusesList() {
+      return statuses_;
+    }
+    /**
+     * <code>repeated .mesos.v1.TaskStatus statuses = 8;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.v1.Protos.TaskStatusOrBuilder> 
+        getStatusesOrBuilderList() {
+      return statuses_;
+    }
+    /**
+     * <code>repeated .mesos.v1.TaskStatus statuses = 8;</code>
+     */
+    public int getStatusesCount() {
+      return statuses_.size();
+    }
+    /**
+     * <code>repeated .mesos.v1.TaskStatus statuses = 8;</code>
+     */
+    public org.apache.mesos.v1.Protos.TaskStatus getStatuses(int index) {
+      return statuses_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.v1.TaskStatus statuses = 8;</code>
+     */
+    public org.apache.mesos.v1.Protos.TaskStatusOrBuilder getStatusesOrBuilder(
+        int index) {
+      return statuses_.get(index);
+    }
+
+    // optional .mesos.v1.TaskState status_update_state = 9;
+    public static final int STATUS_UPDATE_STATE_FIELD_NUMBER = 9;
+    private org.apache.mesos.v1.Protos.TaskState statusUpdateState_;
+    /**
+     * <code>optional .mesos.v1.TaskState status_update_state = 9;</code>
+     *
+     * <pre>
+     * These fields correspond to the state and uuid of the latest
+     * status update forwarded to the master.
+     * NOTE: Either both the fields must be set or both must be unset.
+     * </pre>
+     */
+    public boolean hasStatusUpdateState() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional .mesos.v1.TaskState status_update_state = 9;</code>
+     *
+     * <pre>
+     * These fields correspond to the state and uuid of the latest
+     * status update forwarded to the master.
+     * NOTE: Either both the fields must be set or both must be unset.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.TaskState getStatusUpdateState() {
+      return statusUpdateState_;
+    }
+
+    // optional bytes status_update_uuid = 10;
+    public static final int STATUS_UPDATE_UUID_FIELD_NUMBER = 10;
+    private com.google.protobuf.ByteString statusUpdateUuid_;
+    /**
+     * <code>optional bytes status_update_uuid = 10;</code>
+     */
+    public boolean hasStatusUpdateUuid() {
+      return ((bitField0_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional bytes status_update_uuid = 10;</code>
+     */
+    public com.google.protobuf.ByteString getStatusUpdateUuid() {
+      return statusUpdateUuid_;
+    }
+
+    // optional .mesos.v1.Labels labels = 11;
+    public static final int LABELS_FIELD_NUMBER = 11;
+    private org.apache.mesos.v1.Protos.Labels labels_;
+    /**
+     * <code>optional .mesos.v1.Labels labels = 11;</code>
+     */
+    public boolean hasLabels() {
+      return ((bitField0_ & 0x00000100) == 0x00000100);
+    }
+    /**
+     * <code>optional .mesos.v1.Labels labels = 11;</code>
+     */
+    public org.apache.mesos.v1.Protos.Labels getLabels() {
+      return labels_;
+    }
+    /**
+     * <code>optional .mesos.v1.Labels labels = 11;</code>
+     */
+    public org.apache.mesos.v1.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+      return labels_;
+    }
+
+    // optional .mesos.v1.DiscoveryInfo discovery = 12;
+    public static final int DISCOVERY_FIELD_NUMBER = 12;
+    private org.apache.mesos.v1.Protos.DiscoveryInfo discovery_;
+    /**
+     * <code>optional .mesos.v1.DiscoveryInfo discovery = 12;</code>
+     *
+     * <pre>
+     * Service discovery information for the task. It is not interpreted
+     * or acted upon by Mesos. It is up to a service discovery system
+     * to use this information as needed and to handle tasks without
+     * service discovery information.
+     * </pre>
+     */
+    public boolean hasDiscovery() {
+      return ((bitField0_ & 0x00000200) == 0x00000200);
+    }
+    /**
+     * <code>optional .mesos.v1.DiscoveryInfo discovery = 12;</code>
+     *
+     * <pre>
+     * Service discovery information for the task. It is not interpreted
+     * or acted upon by Mesos. It is up to a service discovery system
+     * to use this information as needed and to handle tasks without
+     * service discovery information.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.DiscoveryInfo getDiscovery() {
+      return discovery_;
+    }
+    /**
+     * <code>optional .mesos.v1.DiscoveryInfo discovery = 12;</code>
+     *
+     * <pre>
+     * Service discovery information for the task. It is not interpreted
+     * or acted upon by Mesos. It is up to a service discovery system
+     * to use this information as needed and to handle tasks without
+     * service discovery information.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.DiscoveryInfoOrBuilder getDiscoveryOrBuilder() {
+      return discovery_;
+    }
+
+    // optional .mesos.v1.ContainerInfo container = 13;
+    public static final int CONTAINER_FIELD_NUMBER = 13;
+    private org.apache.mesos.v1.Protos.ContainerInfo container_;
+    /**
+     * <code>optional .mesos.v1.ContainerInfo container = 13;</code>
+     *
+     * <pre>
+     * Container information for the task.
+     * </pre>
+     */
+    public boolean hasContainer() {
+      return ((bitField0_ & 0x00000400) == 0x00000400);
+    }
+    /**
+     * <code>optional .mesos.v1.ContainerInfo container = 13;</code>
+     *
+     * <pre>
+     * Container information for the task.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.ContainerInfo getContainer() {
+      return container_;
+    }
+    /**
+     * <code>optional .mesos.v1.ContainerInfo container = 13;</code>
+     *
+     * <pre>
+     * Container information for the task.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.ContainerInfoOrBuilder getContainerOrBuilder() {
+      return container_;
+    }
+
+    // optional string user = 14;
+    public static final int USER_FIELD_NUMBER = 14;
+    private java.lang.Object user_;
+    /**
+     * <code>optional string user = 14;</code>
+     *
+     * <pre>
+     * Specific user under which task is running.
+     * </pre>
+     */
+    public boolean hasUser() {
+      return ((bitField0_ & 0x00000800) == 0x00000800);
+    }
+    /**
+     * <code>optional string user = 14;</code>
+     *
+     * <pre>
+     * Specific user under which task is running.
+     * </pre>
+     */
+    public java.lang.String getUser() {
+      java.lang.Object ref = user_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          user_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string user = 14;</code>
+     *
+     * <pre>
+     * Specific user under which task is running.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getUserBytes() {
+      java.lang.Object ref = user_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        user_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      name_ = "";
+      taskId_ = org.apache.mesos.v1.Protos.TaskID.getDefaultInstance();
+      frameworkId_ = org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance();
+      executorId_ = org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance();
+      agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+      state_ = org.apache.mesos.v1.Protos.TaskState.TASK_STAGING;
+      resources_ = java.util.Collections.emptyList();
+      statuses_ = java.util.Collections.emptyList();
+      statusUpdateState_ = org.apache.mesos.v1.Protos.TaskState.TASK_STAGING;
+      statusUpdateUuid_ = com.google.protobuf.ByteString.EMPTY;
+      labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+      discovery_ = org.apache.mesos.v1.Protos.DiscoveryInfo.getDefaultInstance();
+      container_ = org.apache.mesos.v1.Protos.ContainerInfo.getDefaultInstance();
+      user_ = "";
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasName()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasTaskId()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasFrameworkId()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasAgentId()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasState()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!getTaskId().isInitialized()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!getFrameworkId().isInitialized()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (hasExecutorId()) {
+        if (!getExecutorId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (!getAgentId().isInitialized()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      for (int i = 0; i < getResourcesCount(); i++) {
+        if (!getResources(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      for (int i = 0; i < getStatusesCount(); i++) {
+        if (!getStatuses(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasLabels()) {
+        if (!getLabels().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasDiscovery()) {
+        if (!getDiscovery().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasContainer()) {
+        if (!getContainer().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(2, taskId_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeMessage(3, frameworkId_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeMessage(4, executorId_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeMessage(5, agentId_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeEnum(6, state_.getNumber());
+      }
+      for (int i = 0; i < resources_.size(); i++) {
+        output.writeMessage(7, resources_.get(i));
+      }
+      for (int i = 0; i < statuses_.size(); i++) {
+        output.writeMessage(8, statuses_.get(i));
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeEnum(9, statusUpdateState_.getNumber());
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        output.writeBytes(10, statusUpdateUuid_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        output.writeMessage(11, labels_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        output.writeMessage(12, discovery_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        output.writeMessage(13, container_);
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        output.writeBytes(14, getUserBytes());
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, taskId_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, frameworkId_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, executorId_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(5, agentId_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(6, state_.getNumber());
+      }
+      for (int i = 0; i < resources_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(7, resources_.get(i));
+      }
+      for (int i = 0; i < statuses_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(8, statuses_.get(i));
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(9, statusUpdateState_.getNumber());
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(10, statusUpdateUuid_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(11, labels_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(12, discovery_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(13, container_);
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(14, getUserBytes());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.Task parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Task parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Task parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Task parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Task parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Task parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Task parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Task parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Task parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Task parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.Task prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.Task}
+     *
+     * <pre>
+     **
+     * Describes a task, similar to `TaskInfo`.
+     *
+     * `Task` is used in some of the Mesos messages found below.
+     * `Task` is used instead of `TaskInfo` if:
+     *   1) we need additional IDs, such as a specific
+     *      framework, executor, or agent; or
+     *   2) we do not need the additional data, such as the command run by the
+     *      task or the health checks.  These additional fields may be large and
+     *      unnecessary for some Mesos messages.
+     *
+     * `Task` is generally constructed from a `TaskInfo`.  See protobuf::createTask.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.TaskOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Task_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Task_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.Task.class, org.apache.mesos.v1.Protos.Task.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.Task.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getTaskIdFieldBuilder();
+          getFrameworkIdFieldBuilder();
+          getExecutorIdFieldBuilder();
+          getAgentIdFieldBuilder();
+          getResourcesFieldBuilder();
+          getStatusesFieldBuilder();
+          getLabelsFieldBuilder();
+          getDiscoveryFieldBuilder();
+          getContainerFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        name_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (taskIdBuilder_ == null) {
+          taskId_ = org.apache.mesos.v1.Protos.TaskID.getDefaultInstance();
+        } else {
+          taskIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        if (frameworkIdBuilder_ == null) {
+          frameworkId_ = org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance();
+        } else {
+          frameworkIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        if (executorIdBuilder_ == null) {
+          executorId_ = org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance();
+        } else {
+          executorIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        if (agentIdBuilder_ == null) {
+          agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+        } else {
+          agentIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        state_ = org.apache.mesos.v1.Protos.TaskState.TASK_STAGING;
+        bitField0_ = (bitField0_ & ~0x00000020);
+        if (resourcesBuilder_ == null) {
+          resources_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000040);
+        } else {
+          resourcesBuilder_.clear();
+        }
+        if (statusesBuilder_ == null) {
+          statuses_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000080);
+        } else {
+          statusesBuilder_.clear();
+        }
+        statusUpdateState_ = org.apache.mesos.v1.Protos.TaskState.TASK_STAGING;
+        bitField0_ = (bitField0_ & ~0x00000100);
+        statusUpdateUuid_ = com.google.protobuf.ByteString.EMPTY;
+        bitField0_ = (bitField0_ & ~0x00000200);
+        if (labelsBuilder_ == null) {
+          labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+        } else {
+          labelsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000400);
+        if (discoveryBuilder_ == null) {
+          discovery_ = org.apache.mesos.v1.Protos.DiscoveryInfo.getDefaultInstance();
+        } else {
+          discoveryBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000800);
+        if (containerBuilder_ == null) {
+          container_ = org.apache.mesos.v1.Protos.ContainerInfo.getDefaultInstance();
+        } else {
+          containerBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00001000);
+        user_ = "";
+        bitField0_ = (bitField0_ & ~0x00002000);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Task_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.Task getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.Task.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.Task build() {
+        org.apache.mesos.v1.Protos.Task result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.Task buildPartial() {
+        org.apache.mesos.v1.Protos.Task result = new org.apache.mesos.v1.Protos.Task(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.name_ = name_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (taskIdBuilder_ == null) {
+          result.taskId_ = taskId_;
+        } else {
+          result.taskId_ = taskIdBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        if (frameworkIdBuilder_ == null) {
+          result.frameworkId_ = frameworkId_;
+        } else {
+          result.frameworkId_ = frameworkIdBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        if (executorIdBuilder_ == null) {
+          result.executorId_ = executorId_;
+        } else {
+          result.executorId_ = executorIdBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        if (agentIdBuilder_ == null) {
+          result.agentId_ = agentId_;
+        } else {
+          result.agentId_ = agentIdBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        result.state_ = state_;
+        if (resourcesBuilder_ == null) {
+          if (((bitField0_ & 0x00000040) == 0x00000040)) {
+            resources_ = java.util.Collections.unmodifiableList(resources_);
+            bitField0_ = (bitField0_ & ~0x00000040);
+          }
+          result.resources_ = resources_;
+        } else {
+          result.resources_ = resourcesBuilder_.build();
+        }
+        if (statusesBuilder_ == null) {
+          if (((bitField0_ & 0x00000080) == 0x00000080)) {
+            statuses_ = java.util.Collections.unmodifiableList(statuses_);
+            bitField0_ = (bitField0_ & ~0x00000080);
+          }
+          result.statuses_ = statuses_;
+        } else {
+          result.statuses_ = statusesBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        result.statusUpdateState_ = statusUpdateState_;
+        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
+          to_bitField0_ |= 0x00000080;
+        }
+        result.statusUpdateUuid_ = statusUpdateUuid_;
+        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
+          to_bitField0_ |= 0x00000100;
+        }
+        if (labelsBuilder_ == null) {
+          result.labels_ = labels_;
+        } else {
+          result.labels_ = labelsBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
+          to_bitField0_ |= 0x00000200;
+        }
+        if (discoveryBuilder_ == null) {
+          result.discovery_ = discovery_;
+        } else {
+          result.discovery_ = discoveryBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
+          to_bitField0_ |= 0x00000400;
+        }
+        if (containerBuilder_ == null) {
+          result.container_ = container_;
+        } else {
+          result.container_ = containerBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00002000) == 0x00002000)) {
+          to_bitField0_ |= 0x00000800;
+        }
+        result.user_ = user_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.Task) {
+          return mergeFrom((org.apache.mesos.v1.Protos.Task)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.Task other) {
+        if (other == org.apache.mesos.v1.Protos.Task.getDefaultInstance()) return this;
+        if (other.hasName()) {
+          bitField0_ |= 0x00000001;
+          name_ = other.name_;
+          onChanged();
+        }
+        if (other.hasTaskId()) {
+          mergeTaskId(other.getTaskId());
+        }
+        if (other.hasFrameworkId()) {
+          mergeFrameworkId(other.getFrameworkId());
+        }
+        if (other.hasExecutorId()) {
+          mergeExecutorId(other.getExecutorId());
+        }
+        if (other.hasAgentId()) {
+          mergeAgentId(other.getAgentId());
+        }
+        if (other.hasState()) {
+          setState(other.getState());
+        }
+        if (resourcesBuilder_ == null) {
+          if (!other.resources_.isEmpty()) {
+            if (resources_.isEmpty()) {
+              resources_ = other.resources_;
+              bitField0_ = (bitField0_ & ~0x00000040);
+            } else {
+              ensureResourcesIsMutable();
+              resources_.addAll(other.resources_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.resources_.isEmpty()) {
+            if (resourcesBuilder_.isEmpty()) {
+              resourcesBuilder_.dispose();
+              resourcesBuilder_ = null;
+              resources_ = other.resources_;
+              bitField0_ = (bitField0_ & ~0x00000040);
+              resourcesBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getResourcesFieldBuilder() : null;
+            } else {
+              resourcesBuilder_.addAllMessages(other.resources_);
+            }
+          }
+        }
+        if (statusesBuilder_ == null) {
+          if (!other.statuses_.isEmpty()) {
+            if (statuses_.isEmpty()) {
+              statuses_ = other.statuses_;
+              bitField0_ = (bitField0_ & ~0x00000080);
+            } else {
+              ensureStatusesIsMutable();
+              statuses_.addAll(other.statuses_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.statuses_.isEmpty()) {
+            if (statusesBuilder_.isEmpty()) {
+              statusesBuilder_.dispose();
+              statusesBuilder_ = null;
+              statuses_ = other.statuses_;
+              bitField0_ = (bitField0_ & ~0x00000080);
+              statusesBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getStatusesFieldBuilder() : null;
+            } else {
+              statusesBuilder_.addAllMessages(other.statuses_);
+            }
+          }
+        }
+        if (other.hasStatusUpdateState()) {
+          setStatusUpdateState(other.getStatusUpdateState());
+        }
+        if (other.hasStatusUpdateUuid()) {
+          setStatusUpdateUuid(other.getStatusUpdateUuid());
+        }
+        if (other.hasLabels()) {
+          mergeLabels(other.getLabels());
+        }
+        if (other.hasDiscovery()) {
+          mergeDiscovery(other.getDiscovery());
+        }
+        if (other.hasContainer()) {
+          mergeContainer(other.getContainer());
+        }
+        if (other.hasUser()) {
+          bitField0_ |= 0x00002000;
+          user_ = other.user_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasName()) {
+          
+          return false;
+        }
+        if (!hasTaskId()) {
+          
+          return false;
+        }
+        if (!hasFrameworkId()) {
+          
+          return false;
+        }
+        if (!hasAgentId()) {
+          
+          return false;
+        }
+        if (!hasState()) {
+          
+          return false;
+        }
+        if (!getTaskId().isInitialized()) {
+          
+          return false;
+        }
+        if (!getFrameworkId().isInitialized()) {
+          
+          return false;
+        }
+        if (hasExecutorId()) {
+          if (!getExecutorId().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (!getAgentId().isInitialized()) {
+          
+          return false;
+        }
+        for (int i = 0; i < getResourcesCount(); i++) {
+          if (!getResources(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        for (int i = 0; i < getStatusesCount(); i++) {
+          if (!getStatuses(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasLabels()) {
+          if (!getLabels().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasDiscovery()) {
+          if (!getDiscovery().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasContainer()) {
+          if (!getContainer().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.Task parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.Task) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string name = 1;
+      private java.lang.Object name_ = "";
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public boolean hasName() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public java.lang.String getName() {
+        java.lang.Object ref = name_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          name_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        java.lang.Object ref = name_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          name_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder setName(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder clearName() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        name_ = getDefaultInstance().getName();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder setNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+
+      // required .mesos.v1.TaskID task_id = 2;
+      private org.apache.mesos.v1.Protos.TaskID taskId_ = org.apache.mesos.v1.Protos.TaskID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.TaskID, org.apache.mesos.v1.Protos.TaskID.Builder, org.apache.mesos.v1.Protos.TaskIDOrBuilder> taskIdBuilder_;
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 2;</code>
+       */
+      public boolean hasTaskId() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.TaskID getTaskId() {
+        if (taskIdBuilder_ == null) {
+          return taskId_;
+        } else {
+          return taskIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 2;</code>
+       */
+      public Builder setTaskId(org.apache.mesos.v1.Protos.TaskID value) {
+        if (taskIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          taskId_ = value;
+          onChanged();
+        } else {
+          taskIdBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 2;</code>
+       */
+      public Builder setTaskId(
+          org.apache.mesos.v1.Protos.TaskID.Builder builderForValue) {
+        if (taskIdBuilder_ == null) {
+          taskId_ = builderForValue.build();
+          onChanged();
+        } else {
+          taskIdBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 2;</code>
+       */
+      public Builder mergeTaskId(org.apache.mesos.v1.Protos.TaskID value) {
+        if (taskIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              taskId_ != org.apache.mesos.v1.Protos.TaskID.getDefaultInstance()) {
+            taskId_ =
+              org.apache.mesos.v1.Protos.TaskID.newBuilder(taskId_).mergeFrom(value).buildPartial();
+          } else {
+            taskId_ = value;
+          }
+          onChanged();
+        } else {
+          taskIdBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 2;</code>
+       */
+      public Builder clearTaskId() {
+        if (taskIdBuilder_ == null) {
+          taskId_ = org.apache.mesos.v1.Protos.TaskID.getDefaultInstance();
+          onChanged();
+        } else {
+          taskIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.TaskID.Builder getTaskIdBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getTaskIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.TaskIDOrBuilder getTaskIdOrBuilder() {
+        if (taskIdBuilder_ != null) {
+          return taskIdBuilder_.getMessageOrBuilder();
+        } else {
+          return taskId_;
+        }
+      }
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 2;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.TaskID, org.apache.mesos.v1.Protos.TaskID.Builder, org.apache.mesos.v1.Protos.TaskIDOrBuilder> 
+          getTaskIdFieldBuilder() {
+        if (taskIdBuilder_ == null) {
+          taskIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.TaskID, org.apache.mesos.v1.Protos.TaskID.Builder, org.apache.mesos.v1.Protos.TaskIDOrBuilder>(
+                  taskId_,
+                  getParentForChildren(),
+                  isClean());
+          taskId_ = null;
+        }
+        return taskIdBuilder_;
+      }
+
+      // required .mesos.v1.FrameworkID framework_id = 3;
+      private org.apache.mesos.v1.Protos.FrameworkID frameworkId_ = org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.FrameworkID, org.apache.mesos.v1.Protos.FrameworkID.Builder, org.apache.mesos.v1.Protos.FrameworkIDOrBuilder> frameworkIdBuilder_;
+      /**
+       * <code>required .mesos.v1.FrameworkID framework_id = 3;</code>
+       */
+      public boolean hasFrameworkId() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>required .mesos.v1.FrameworkID framework_id = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.FrameworkID getFrameworkId() {
+        if (frameworkIdBuilder_ == null) {
+          return frameworkId_;
+        } else {
+          return frameworkIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>required .mesos.v1.FrameworkID framework_id = 3;</code>
+       */
+      public Builder setFrameworkId(org.apache.mesos.v1.Protos.FrameworkID value) {
+        if (frameworkIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          frameworkId_ = value;
+          onChanged();
+        } else {
+          frameworkIdBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.FrameworkID framework_id = 3;</code>
+       */
+      public Builder setFrameworkId(
+          org.apache.mesos.v1.Protos.FrameworkID.Builder builderForValue) {
+        if (frameworkIdBuilder_ == null) {
+          frameworkId_ = builderForValue.build();
+          onChanged();
+        } else {
+          frameworkIdBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.FrameworkID framework_id = 3;</code>
+       */
+      public Builder mergeFrameworkId(org.apache.mesos.v1.Protos.FrameworkID value) {
+        if (frameworkIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) == 0x00000004) &&
+              frameworkId_ != org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance()) {
+            frameworkId_ =
+              org.apache.mesos.v1.Protos.FrameworkID.newBuilder(frameworkId_).mergeFrom(value).buildPartial();
+          } else {
+            frameworkId_ = value;
+          }
+          onChanged();
+        } else {
+          frameworkIdBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.FrameworkID framework_id = 3;</code>
+       */
+      public Builder clearFrameworkId() {
+        if (frameworkIdBuilder_ == null) {
+          frameworkId_ = org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance();
+          onChanged();
+        } else {
+          frameworkIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.FrameworkID framework_id = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.FrameworkID.Builder getFrameworkIdBuilder() {
+        bitField0_ |= 0x00000004;
+        onChanged();
+        return getFrameworkIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>required .mesos.v1.FrameworkID framework_id = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.FrameworkIDOrBuilder getFrameworkIdOrBuilder() {
+        if (frameworkIdBuilder_ != null) {
+          return frameworkIdBuilder_.getMessageOrBuilder();
+        } else {
+          return frameworkId_;
+        }
+      }
+      /**
+       * <code>required .mesos.v1.FrameworkID framework_id = 3;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.FrameworkID, org.apache.mesos.v1.Protos.FrameworkID.Builder, org.apache.mesos.v1.Protos.FrameworkIDOrBuilder> 
+          getFrameworkIdFieldBuilder() {
+        if (frameworkIdBuilder_ == null) {
+          frameworkIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.FrameworkID, org.apache.mesos.v1.Protos.FrameworkID.Builder, org.apache.mesos.v1.Protos.FrameworkIDOrBuilder>(
+                  frameworkId_,
+                  getParentForChildren(),
+                  isClean());
+          frameworkId_ = null;
+        }
+        return frameworkIdBuilder_;
+      }
+
+      // optional .mesos.v1.ExecutorID executor_id = 4;
+      private org.apache.mesos.v1.Protos.ExecutorID executorId_ = org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.ExecutorID, org.apache.mesos.v1.Protos.ExecutorID.Builder, org.apache.mesos.v1.Protos.ExecutorIDOrBuilder> executorIdBuilder_;
+      /**
+       * <code>optional .mesos.v1.ExecutorID executor_id = 4;</code>
+       */
+      public boolean hasExecutorId() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.v1.ExecutorID executor_id = 4;</code>
+       */
+      public org.apache.mesos.v1.Protos.ExecutorID getExecutorId() {
+        if (executorIdBuilder_ == null) {
+          return executorId_;
+        } else {
+          return executorIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.ExecutorID executor_id = 4;</code>
+       */
+      public Builder setExecutorId(org.apache.mesos.v1.Protos.ExecutorID value) {
+        if (executorIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          executorId_ = value;
+          onChanged();
+        } else {
+          executorIdBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ExecutorID executor_id = 4;</code>
+       */
+      public Builder setExecutorId(
+          org.apache.mesos.v1.Protos.ExecutorID.Builder builderForValue) {
+        if (executorIdBuilder_ == null) {
+          executorId_ = builderForValue.build();
+          onChanged();
+        } else {
+          executorIdBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ExecutorID executor_id = 4;</code>
+       */
+      public Builder mergeExecutorId(org.apache.mesos.v1.Protos.ExecutorID value) {
+        if (executorIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008) &&
+              executorId_ != org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance()) {
+            executorId_ =
+              org.apache.mesos.v1.Protos.ExecutorID.newBuilder(executorId_).mergeFrom(value).buildPartial();
+          } else {
+            executorId_ = value;
+          }
+          onChanged();
+        } else {
+          executorIdBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ExecutorID executor_id = 4;</code>
+       */
+      public Builder clearExecutorId() {
+        if (executorIdBuilder_ == null) {
+          executorId_ = org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance();
+          onChanged();
+        } else {
+          executorIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ExecutorID executor_id = 4;</code>
+       */
+      public org.apache.mesos.v1.Protos.ExecutorID.Builder getExecutorIdBuilder() {
+        bitField0_ |= 0x00000008;
+        onChanged();
+        return getExecutorIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.ExecutorID executor_id = 4;</code>
+       */
+      public org.apache.mesos.v1.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder() {
+        if (executorIdBuilder_ != null) {
+          return executorIdBuilder_.getMessageOrBuilder();
+        } else {
+          return executorId_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.ExecutorID executor_id = 4;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.ExecutorID, org.apache.mesos.v1.Protos.ExecutorID.Builder, org.apache.mesos.v1.Protos.ExecutorIDOrBuilder> 
+          getExecutorIdFieldBuilder() {
+        if (executorIdBuilder_ == null) {
+          executorIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.ExecutorID, org.apache.mesos.v1.Protos.ExecutorID.Builder, org.apache.mesos.v1.Protos.ExecutorIDOrBuilder>(
+                  executorId_,
+                  getParentForChildren(),
+                  isClean());
+          executorId_ = null;
+        }
+        return executorIdBuilder_;
+      }
+
+      // required .mesos.v1.AgentID agent_id = 5;
+      private org.apache.mesos.v1.Protos.AgentID agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.AgentID, org.apache.mesos.v1.Protos.AgentID.Builder, org.apache.mesos.v1.Protos.AgentIDOrBuilder> agentIdBuilder_;
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 5;</code>
+       */
+      public boolean hasAgentId() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 5;</code>
+       */
+      public org.apache.mesos.v1.Protos.AgentID getAgentId() {
+        if (agentIdBuilder_ == null) {
+          return agentId_;
+        } else {
+          return agentIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 5;</code>
+       */
+      public Builder setAgentId(org.apache.mesos.v1.Protos.AgentID value) {
+        if (agentIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          agentId_ = value;
+          onChanged();
+        } else {
+          agentIdBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 5;</code>
+       */
+      public Builder setAgentId(
+          org.apache.mesos.v1.Protos.AgentID.Builder builderForValue) {
+        if (agentIdBuilder_ == null) {
+          agentId_ = builderForValue.build();
+          onChanged();
+        } else {
+          agentIdBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 5;</code>
+       */
+      public Builder mergeAgentId(org.apache.mesos.v1.Protos.AgentID value) {
+        if (agentIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000010) == 0x00000010) &&
+              agentId_ != org.apache.mesos.v1.Protos.AgentID.getDefaultInstance()) {
+            agentId_ =
+              org.apache.mesos.v1.Protos.AgentID.newBuilder(agentId_).mergeFrom(value).buildPartial();
+          } else {
+            agentId_ = value;
+          }
+          onChanged();
+        } else {
+          agentIdBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 5;</code>
+       */
+      public Builder clearAgentId() {
+        if (agentIdBuilder_ == null) {
+          agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+          onChanged();
+        } else {
+          agentIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 5;</code>
+       */
+      public org.apache.mesos.v1.Protos.AgentID.Builder getAgentIdBuilder() {
+        bitField0_ |= 0x00000010;
+        onChanged();
+        return getAgentIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 5;</code>
+       */
+      public org.apache.mesos.v1.Protos.AgentIDOrBuilder getAgentIdOrBuilder() {
+        if (agentIdBuilder_ != null) {
+          return agentIdBuilder_.getMessageOrBuilder();
+        } else {
+          return agentId_;
+        }
+      }
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 5;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.AgentID, org.apache.mesos.v1.Protos.AgentID.Builder, org.apache.mesos.v1.Protos.AgentIDOrBuilder> 
+          getAgentIdFieldBuilder() {
+        if (agentIdBuilder_ == null) {
+          agentIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.AgentID, org.apache.mesos.v1.Protos.AgentID.Builder, org.apache.mesos.v1.Protos.AgentIDOrBuilder>(
+                  agentId_,
+                  getParentForChildren(),
+                  isClean());
+          agentId_ = null;
+        }
+        return agentIdBuilder_;
+      }
+
+      // required .mesos.v1.TaskState state = 6;
+      private org.apache.mesos.v1.Protos.TaskState state_ = org.apache.mesos.v1.Protos.TaskState.TASK_STAGING;
+      /**
+       * <code>required .mesos.v1.TaskState state = 6;</code>
+       *
+       * <pre>
+       * Latest state of the task.
+       * </pre>
+       */
+      public boolean hasState() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>required .mesos.v1.TaskState state = 6;</code>
+       *
+       * <pre>
+       * Latest state of the task.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.TaskState getState() {
+        return state_;
+      }
+      /**
+       * <code>required .mesos.v1.TaskState state = 6;</code>
+       *
+       * <pre>
+       * Latest state of the task.
+       * </pre>
+       */
+      public Builder setState(org.apache.mesos.v1.Protos.TaskState value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000020;
+        state_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.TaskState state = 6;</code>
+       *
+       * <pre>
+       * Latest state of the task.
+       * </pre>
+       */
+      public Builder clearState() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        state_ = org.apache.mesos.v1.Protos.TaskState.TASK_STAGING;
+        onChanged();
+        return this;
+      }
+
+      // repeated .mesos.v1.Resource resources = 7;
+      private java.util.List<org.apache.mesos.v1.Protos.Resource> resources_ =
+        java.util.Collections.emptyList();
+      private void ensureResourcesIsMutable() {
+        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
+          resources_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Resource>(resources_);
+          bitField0_ |= 0x00000040;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder> resourcesBuilder_;
+
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 7;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Resource> getResourcesList() {
+        if (resourcesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(resources_);
+        } else {
+          return resourcesBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 7;</code>
+       */
+      public int getResourcesCount() {
+        if (resourcesBuilder_ == null) {
+          return resources_.size();
+        } else {
+          return resourcesBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 7;</code>
+       */
+      public org.apache.mesos.v1.Protos.Resource getResources(int index) {
+        if (resourcesBuilder_ == null) {
+          return resources_.get(index);
+        } else {
+          return resourcesBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 7;</code>
+       */
+      public Builder setResources(
+          int index, org.apache.mesos.v1.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.set(index, value);
+          onChanged();
+        } else {
+          resourcesBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 7;</code>
+       */
+      public Builder setResources(
+          int index, org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 7;</code>
+       */
+      public Builder addResources(org.apache.mesos.v1.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.add(value);
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 7;</code>
+       */
+      public Builder addResources(
+          int index, org.apache.mesos.v1.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.add(index, value);
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 7;</code>
+       */
+      public Builder addResources(
+          org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.add(builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 7;</code>
+       */
+      public Builder addResources(
+          int index, org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 7;</code>
+       */
+      public Builder addAllResources(
+          java.lang.Iterable<? extends org.apache.mesos.v1.Protos.Resource> values) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          super.addAll(values, resources_);
+          onChanged();
+        } else {
+          resourcesBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 7;</code>
+       */
+      public Builder clearResources() {
+        if (resourcesBuilder_ == null) {
+          resources_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000040);
+          onChanged();
+        } else {
+          resourcesBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 7;</code>
+       */
+      public Builder removeResources(int index) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.remove(index);
+          onChanged();
+        } else {
+          resourcesBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 7;</code>
+       */
+      public org.apache.mesos.v1.Protos.Resource.Builder getResourcesBuilder(
+          int index) {
+        return getResourcesFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 7;</code>
+       */
+      public org.apache.mesos.v1.Protos.ResourceOrBuilder getResourcesOrBuilder(
+          int index) {
+        if (resourcesBuilder_ == null) {
+          return resources_.get(index);  } else {
+          return resourcesBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 7;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+           getResourcesOrBuilderList() {
+        if (resourcesBuilder_ != null) {
+          return resourcesBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(resources_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 7;</code>
+       */
+      public org.apache.mesos.v1.Protos.Resource.Builder addResourcesBuilder() {
+        return getResourcesFieldBuilder().addBuilder(
+            org.apache.mesos.v1.Protos.Resource.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 7;</code>
+       */
+      public org.apache.mesos.v1.Protos.Resource.Builder addResourcesBuilder(
+          int index) {
+        return getResourcesFieldBuilder().addBuilder(
+            index, org.apache.mesos.v1.Protos.Resource.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 7;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Resource.Builder> 
+           getResourcesBuilderList() {
+        return getResourcesFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+          getResourcesFieldBuilder() {
+        if (resourcesBuilder_ == null) {
+          resourcesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder>(
+                  resources_,
+                  ((bitField0_ & 0x00000040) == 0x00000040),
+                  getParentForChildren(),
+                  isClean());
+          resources_ = null;
+        }
+        return resourcesBuilder_;
+      }
+
+      // repeated .mesos.v1.TaskStatus statuses = 8;
+      private java.util.List<org.apache.mesos.v1.Protos.TaskStatus> statuses_ =
+        java.util.Collections.emptyList();
+      private void ensureStatusesIsMutable() {
+        if (!((bitField0_ & 0x00000080) == 0x00000080)) {
+          statuses_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.TaskStatus>(statuses_);
+          bitField0_ |= 0x00000080;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.TaskStatus, org.apache.mesos.v1.Protos.TaskStatus.Builder, org.apache.mesos.v1.Protos.TaskStatusOrBuilder> statusesBuilder_;
+
+      /**
+       * <code>repeated .mesos.v1.TaskStatus statuses = 8;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.TaskStatus> getStatusesList() {
+        if (statusesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(statuses_);
+        } else {
+          return statusesBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.TaskStatus statuses = 8;</code>
+       */
+      public int getStatusesCount() {
+        if (statusesBuilder_ == null) {
+          return statuses_.size();
+        } else {
+          return statusesBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.TaskStatus statuses = 8;</code>
+       */
+      public org.apache.mesos.v1.Protos.TaskStatus getStatuses(int index) {
+        if (statusesBuilder_ == null) {
+          return statuses_.get(index);
+        } else {
+          return statusesBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.TaskStatus statuses = 8;</code>
+       */
+      public Builder setStatuses(
+          int index, org.apache.mesos.v1.Protos.TaskStatus value) {
+        if (statusesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureStatusesIsMutable();
+          statuses_.set(index, value);
+          onChanged();
+        } else {
+          statusesBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.TaskStatus statuses = 8;</code>
+       */
+      public Builder setStatuses(
+          int index, org.apache.mesos.v1.Protos.TaskStatus.Builder builderForValue) {
+        if (statusesBuilder_ == null) {
+          ensureStatusesIsMutable();
+          statuses_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          statusesBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.TaskStatus statuses = 8;</code>
+       */
+      public Builder addStatuses(org.apache.mesos.v1.Protos.TaskStatus value) {
+        if (statusesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureStatusesIsMutable();
+          statuses_.add(value);
+          onChanged();
+        } else {
+          statusesBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.TaskStatus statuses = 8;</code>
+       */
+      public Builder addStatuses(
+          int index, org.apache.mesos.v1.Protos.TaskStatus value) {
+        if (statusesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureStatusesIsMutable();
+          statuses_.add(index, value);
+          onChanged();
+        } else {
+          statusesBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.TaskStatus statuses = 8;</code>
+       */
+      public Builder addStatuses(
+          org.apache.mesos.v1.Protos.TaskStatus.Builder builderForValue) {
+        if (statusesBuilder_ == null) {
+          ensureStatusesIsMutable();
+          statuses_.add(builderForValue.build());
+          onChanged();
+        } else {
+          statusesBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.TaskStatus statuses = 8;</code>
+       */
+      public Builder addStatuses(
+          int index, org.apache.mesos.v1.Protos.TaskStatus.Builder builderForValue) {
+        if (statusesBuilder_ == null) {
+          ensureStatusesIsMutable();
+          statuses_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          statusesBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.TaskStatus statuses = 8;</code>
+       */
+      public Builder addAllStatuses(
+          java.lang.Iterable<? extends org.apache.mesos.v1.Protos.TaskStatus> values) {
+        if (statusesBuilder_ == null) {
+          ensureStatusesIsMutable();
+          super.addAll(values, statuses_);
+          onChanged();
+        } else {
+          statusesBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.TaskStatus statuses = 8;</code>
+       */
+      public Builder clearStatuses() {
+        if (statusesBuilder_ == null) {
+          statuses_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000080);
+          onChanged();
+        } else {
+          statusesBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.TaskStatus statuses = 8;</code>
+       */
+      public Builder removeStatuses(int index) {
+        if (statusesBuilder_ == null) {
+          ensureStatusesIsMutable();
+          statuses_.remove(index);
+          onChanged();
+        } else {
+          statusesBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.TaskStatus statuses = 8;</code>
+       */
+      public org.apache.mesos.v1.Protos.TaskStatus.Builder getStatusesBuilder(
+          int index) {
+        return getStatusesFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.TaskStatus statuses = 8;</code>
+       */
+      public org.apache.mesos.v1.Protos.TaskStatusOrBuilder getStatusesOrBuilder(
+          int index) {
+        if (statusesBuilder_ == null) {
+          return statuses_.get(index);  } else {
+          return statusesBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.TaskStatus statuses = 8;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.TaskStatusOrBuilder> 
+           getStatusesOrBuilderList() {
+        if (statusesBuilder_ != null) {
+          return statusesBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(statuses_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.TaskStatus statuses = 8;</code>
+       */
+      public org.apache.mesos.v1.Protos.TaskStatus.Builder addStatusesBuilder() {
+        return getStatusesFieldBuilder().addBuilder(
+            org.apache.mesos.v1.Protos.TaskStatus.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.TaskStatus statuses = 8;</code>
+       */
+      public org.apache.mesos.v1.Protos.TaskStatus.Builder addStatusesBuilder(
+          int index) {
+        return getStatusesFieldBuilder().addBuilder(
+            index, org.apache.mesos.v1.Protos.TaskStatus.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.TaskStatus statuses = 8;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.TaskStatus.Builder> 
+           getStatusesBuilderList() {
+        return getStatusesFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.TaskStatus, org.apache.mesos.v1.Protos.TaskStatus.Builder, org.apache.mesos.v1.Protos.TaskStatusOrBuilder> 
+          getStatusesFieldBuilder() {
+        if (statusesBuilder_ == null) {
+          statusesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.TaskStatus, org.apache.mesos.v1.Protos.TaskStatus.Builder, org.apache.mesos.v1.Protos.TaskStatusOrBuilder>(
+                  statuses_,
+                  ((bitField0_ & 0x00000080) == 0x00000080),
+                  getParentForChildren(),
+                  isClean());
+          statuses_ = null;
+        }
+        return statusesBuilder_;
+      }
+
+      // optional .mesos.v1.TaskState status_update_state = 9;
+      private org.apache.mesos.v1.Protos.TaskState statusUpdateState_ = org.apache.mesos.v1.Protos.TaskState.TASK_STAGING;
+      /**
+       * <code>optional .mesos.v1.TaskState status_update_state = 9;</code>
+       *
+       * <pre>
+       * These fields correspond to the state and uuid of the latest
+       * status update forwarded to the master.
+       * NOTE: Either both the fields must be set or both must be unset.
+       * </pre>
+       */
+      public boolean hasStatusUpdateState() {
+        return ((bitField0_ & 0x00000100) == 0x00000100);
+      }
+      /**
+       * <code>optional .mesos.v1.TaskState status_update_state = 9;</code>
+       *
+       * <pre>
+       * These fields correspond to the state and uuid of the latest
+       * status update forwarded to the master.
+       * NOTE: Either both the fields must be set or both must be unset.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.TaskState getStatusUpdateState() {
+        return statusUpdateState_;
+      }
+      /**
+       * <code>optional .mesos.v1.TaskState status_update_state = 9;</code>
+       *
+       * <pre>
+       * These fields correspond to the state and uuid of the latest
+       * status update forwarded to the master.
+       * NOTE: Either both the fields must be set or both must be unset.
+       * </pre>
+       */
+      public Builder setStatusUpdateState(org.apache.mesos.v1.Protos.TaskState value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000100;
+        statusUpdateState_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.TaskState status_update_state = 9;</code>
+       *
+       * <pre>
+       * These fields correspond to the state and uuid of the latest
+       * status update forwarded to the master.
+       * NOTE: Either both the fields must be set or both must be unset.
+       * </pre>
+       */
+      public Builder clearStatusUpdateState() {
+        bitField0_ = (bitField0_ & ~0x00000100);
+        statusUpdateState_ = org.apache.mesos.v1.Protos.TaskState.TASK_STAGING;
+        onChanged();
+        return this;
+      }
+
+      // optional bytes status_update_uuid = 10;
+      private com.google.protobuf.ByteString statusUpdateUuid_ = com.google.protobuf.ByteString.EMPTY;
+      /**
+       * <code>optional bytes status_update_uuid = 10;</code>
+       */
+      public boolean hasStatusUpdateUuid() {
+        return ((bitField0_ & 0x00000200) == 0x00000200);
+      }
+      /**
+       * <code>optional bytes status_update_uuid = 10;</code>
+       */
+      public com.google.protobuf.ByteString getStatusUpdateUuid() {
+        return statusUpdateUuid_;
+      }
+      /**
+       * <code>optional bytes status_update_uuid = 10;</code>
+       */
+      public Builder setStatusUpdateUuid(com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000200;
+        statusUpdateUuid_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional bytes status_update_uuid = 10;</code>
+       */
+      public Builder clearStatusUpdateUuid() {
+        bitField0_ = (bitField0_ & ~0x00000200);
+        statusUpdateUuid_ = getDefaultInstance().getStatusUpdateUuid();
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.v1.Labels labels = 11;
+      private org.apache.mesos.v1.Protos.Labels labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Labels, org.apache.mesos.v1.Protos.Labels.Builder, org.apache.mesos.v1.Protos.LabelsOrBuilder> labelsBuilder_;
+      /**
+       * <code>optional .mesos.v1.Labels labels = 11;</code>
+       */
+      public boolean hasLabels() {
+        return ((bitField0_ & 0x00000400) == 0x00000400);
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 11;</code>
+       */
+      public org.apache.mesos.v1.Protos.Labels getLabels() {
+        if (labelsBuilder_ == null) {
+          return labels_;
+        } else {
+          return labelsBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 11;</code>
+       */
+      public Builder setLabels(org.apache.mesos.v1.Protos.Labels value) {
+        if (labelsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          labels_ = value;
+          onChanged();
+        } else {
+          labelsBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000400;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 11;</code>
+       */
+      public Builder setLabels(
+          org.apache.mesos.v1.Protos.Labels.Builder builderForValue) {
+        if (labelsBuilder_ == null) {
+          labels_ = builderForValue.build();
+          onChanged();
+        } else {
+          labelsBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000400;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 11;</code>
+       */
+      public Builder mergeLabels(org.apache.mesos.v1.Protos.Labels value) {
+        if (labelsBuilder_ == null) {
+          if (((bitField0_ & 0x00000400) == 0x00000400) &&
+              labels_ != org.apache.mesos.v1.Protos.Labels.getDefaultInstance()) {
+            labels_ =
+              org.apache.mesos.v1.Protos.Labels.newBuilder(labels_).mergeFrom(value).buildPartial();
+          } else {
+            labels_ = value;
+          }
+          onChanged();
+        } else {
+          labelsBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000400;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 11;</code>
+       */
+      public Builder clearLabels() {
+        if (labelsBuilder_ == null) {
+          labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+          onChanged();
+        } else {
+          labelsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000400);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 11;</code>
+       */
+      public org.apache.mesos.v1.Protos.Labels.Builder getLabelsBuilder() {
+        bitField0_ |= 0x00000400;
+        onChanged();
+        return getLabelsFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 11;</code>
+       */
+      public org.apache.mesos.v1.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+        if (labelsBuilder_ != null) {
+          return labelsBuilder_.getMessageOrBuilder();
+        } else {
+          return labels_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 11;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Labels, org.apache.mesos.v1.Protos.Labels.Builder, org.apache.mesos.v1.Protos.LabelsOrBuilder> 
+          getLabelsFieldBuilder() {
+        if (labelsBuilder_ == null) {
+          labelsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Labels, org.apache.mesos.v1.Protos.Labels.Builder, org.apache.mesos.v1.Protos.LabelsOrBuilder>(
+                  labels_,
+                  getParentForChildren(),
+                  isClean());
+          labels_ = null;
+        }
+        return labelsBuilder_;
+      }
+
+      // optional .mesos.v1.DiscoveryInfo discovery = 12;
+      private org.apache.mesos.v1.Protos.DiscoveryInfo discovery_ = org.apache.mesos.v1.Protos.DiscoveryInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.DiscoveryInfo, org.apache.mesos.v1.Protos.DiscoveryInfo.Builder, org.apache.mesos.v1.Protos.DiscoveryInfoOrBuilder> discoveryBuilder_;
+      /**
+       * <code>optional .mesos.v1.DiscoveryInfo discovery = 12;</code>
+       *
+       * <pre>
+       * Service discovery information for the task. It is not interpreted
+       * or acted upon by Mesos. It is up to a service discovery system
+       * to use this information as needed and to handle tasks without
+       * service discovery information.
+       * </pre>
+       */
+      public boolean hasDiscovery() {
+        return ((bitField0_ & 0x00000800) == 0x00000800);
+      }
+      /**
+       * <code>optional .mesos.v1.DiscoveryInfo discovery = 12;</code>
+       *
+       * <pre>
+       * Service discovery information for the task. It is not interpreted
+       * or acted upon by Mesos. It is up to a service discovery system
+       * to use this information as needed and to handle tasks without
+       * service discovery information.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.DiscoveryInfo getDiscovery() {
+        if (discoveryBuilder_ == null) {
+          return discovery_;
+        } else {
+          return discoveryBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.DiscoveryInfo discovery = 12;</code>
+       *
+       * <pre>
+       * Service discovery information for the task. It is not interpreted
+       * or acted upon by Mesos. It is up to a service discovery system
+       * to use this information as needed and to handle tasks without
+       * service discovery information.
+       * </pre>
+       */
+      public Builder setDiscovery(org.apache.mesos.v1.Protos.DiscoveryInfo value) {
+        if (discoveryBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          discovery_ = value;
+          onChanged();
+        } else {
+          discoveryBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.DiscoveryInfo discovery = 12;</code>
+       *
+       * <pre>
+       * Service discovery information for the task. It is not interpreted
+       * or acted upon by Mesos. It is up to a service discovery system
+       * to use this information as needed and to handle tasks without
+       * service discovery information.
+       * </pre>
+       */
+      public Builder setDiscovery(
+          org.apache.mesos.v1.Protos.DiscoveryInfo.Builder builderForValue) {
+        if (discoveryBuilder_ == null) {
+          discovery_ = builderForValue.build();
+          onChanged();
+        } else {
+          discoveryBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.DiscoveryInfo discovery = 12;</code>
+       *
+       * <pre>
+       * Service discovery information for the task. It is not interpreted
+       * or acted upon by Mesos. It is up to a service discovery system
+       * to use this information as needed and to handle tasks without
+       * service discovery information.
+       * </pre>
+       */
+      public Builder mergeDiscovery(org.apache.mesos.v1.Protos.DiscoveryInfo value) {
+        if (discoveryBuilder_ == null) {
+          if (((bitField0_ & 0x00000800) == 0x00000800) &&
+              discovery_ != org.apache.mesos.v1.Protos.DiscoveryInfo.getDefaultInstance()) {
+            discovery_ =
+              org.apache.mesos.v1.Protos.DiscoveryInfo.newBuilder(discovery_).mergeFrom(value).buildPartial();
+          } else {
+            discovery_ = value;
+          }
+          onChanged();
+        } else {
+          discoveryBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.DiscoveryInfo discovery = 12;</code>
+       *
+       * <pre>
+       * Service discovery information for the task. It is not interpreted
+       * or acted upon by Mesos. It is up to a service discovery system
+       * to use this information as needed and to handle tasks without
+       * service discovery information.
+       * </pre>
+       */
+      public Builder clearDiscovery() {
+        if (discoveryBuilder_ == null) {
+          discovery_ = org.apache.mesos.v1.Protos.DiscoveryInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          discoveryBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000800);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.DiscoveryInfo discovery = 12;</code>
+       *
+       * <pre>
+       * Service discovery information for the task. It is not interpreted
+       * or acted upon by Mesos. It is up to a service discovery system
+       * to use this information as needed and to handle tasks without
+       * service discovery information.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.DiscoveryInfo.Builder getDiscoveryBuilder() {
+        bitField0_ |= 0x00000800;
+        onChanged();
+        return getDiscoveryFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.DiscoveryInfo discovery = 12;</code>
+       *
+       * <pre>
+       * Service discovery information for the task. It is not interpreted
+       * or acted upon by Mesos. It is up to a service discovery system
+       * to use this information as needed and to handle tasks without
+       * service discovery information.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.DiscoveryInfoOrBuilder getDiscoveryOrBuilder() {
+        if (discoveryBuilder_ != null) {
+          return discoveryBuilder_.getMessageOrBuilder();
+        } else {
+          return discovery_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.DiscoveryInfo discovery = 12;</code>
+       *
+       * <pre>
+       * Service discovery information for the task. It is not interpreted
+       * or acted upon by Mesos. It is up to a service discovery system
+       * to use this information as needed and to handle tasks without
+       * service discovery information.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.DiscoveryInfo, org.apache.mesos.v1.Protos.DiscoveryInfo.Builder, org.apache.mesos.v1.Protos.DiscoveryInfoOrBuilder> 
+          getDiscoveryFieldBuilder() {
+        if (discoveryBuilder_ == null) {
+          discoveryBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.DiscoveryInfo, org.apache.mesos.v1.Protos.DiscoveryInfo.Builder, org.apache.mesos.v1.Protos.DiscoveryInfoOrBuilder>(
+                  discovery_,
+                  getParentForChildren(),
+                  isClean());
+          discovery_ = null;
+        }
+        return discoveryBuilder_;
+      }
+
+      // optional .mesos.v1.ContainerInfo container = 13;
+      private org.apache.mesos.v1.Protos.ContainerInfo container_ = org.apache.mesos.v1.Protos.ContainerInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.ContainerInfo, org.apache.mesos.v1.Protos.ContainerInfo.Builder, org.apache.mesos.v1.Protos.ContainerInfoOrBuilder> containerBuilder_;
+      /**
+       * <code>optional .mesos.v1.ContainerInfo container = 13;</code>
+       *
+       * <pre>
+       * Container information for the task.
+       * </pre>
+       */
+      public boolean hasContainer() {
+        return ((bitField0_ & 0x00001000) == 0x00001000);
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerInfo container = 13;</code>
+       *
+       * <pre>
+       * Container information for the task.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.ContainerInfo getContainer() {
+        if (containerBuilder_ == null) {
+          return container_;
+        } else {
+          return containerBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerInfo container = 13;</code>
+       *
+       * <pre>
+       * Container information for the task.
+       * </pre>
+       */
+      public Builder setContainer(org.apache.mesos.v1.Protos.ContainerInfo value) {
+        if (containerBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          container_ = value;
+          onChanged();
+        } else {
+          containerBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00001000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerInfo container = 13;</code>
+       *
+       * <pre>
+       * Container information for the task.
+       * </pre>
+       */
+      public Builder setContainer(
+          org.apache.mesos.v1.Protos.ContainerInfo.Builder builderForValue) {
+        if (containerBuilder_ == null) {
+          container_ = builderForValue.build();
+          onChanged();
+        } else {
+          containerBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00001000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerInfo container = 13;</code>
+       *
+       * <pre>
+       * Container information for the task.
+       * </pre>
+       */
+      public Builder mergeContainer(org.apache.mesos.v1.Protos.ContainerInfo value) {
+        if (containerBuilder_ == null) {
+          if (((bitField0_ & 0x00001000) == 0x00001000) &&
+              container_ != org.apache.mesos.v1.Protos.ContainerInfo.getDefaultInstance()) {
+            container_ =
+              org.apache.mesos.v1.Protos.ContainerInfo.newBuilder(container_).mergeFrom(value).buildPartial();
+          } else {
+            container_ = value;
+          }
+          onChanged();
+        } else {
+          containerBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00001000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerInfo container = 13;</code>
+       *
+       * <pre>
+       * Container information for the task.
+       * </pre>
+       */
+      public Builder clearContainer() {
+        if (containerBuilder_ == null) {
+          container_ = org.apache.mesos.v1.Protos.ContainerInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          containerBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00001000);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerInfo container = 13;</code>
+       *
+       * <pre>
+       * Container information for the task.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.ContainerInfo.Builder getContainerBuilder() {
+        bitField0_ |= 0x00001000;
+        onChanged();
+        return getContainerFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerInfo container = 13;</code>
+       *
+       * <pre>
+       * Container information for the task.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.ContainerInfoOrBuilder getContainerOrBuilder() {
+        if (containerBuilder_ != null) {
+          return containerBuilder_.getMessageOrBuilder();
+        } else {
+          return container_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerInfo container = 13;</code>
+       *
+       * <pre>
+       * Container information for the task.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.ContainerInfo, org.apache.mesos.v1.Protos.ContainerInfo.Builder, org.apache.mesos.v1.Protos.ContainerInfoOrBuilder> 
+          getContainerFieldBuilder() {
+        if (containerBuilder_ == null) {
+          containerBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.ContainerInfo, org.apache.mesos.v1.Protos.ContainerInfo.Builder, org.apache.mesos.v1.Protos.ContainerInfoOrBuilder>(
+                  container_,
+                  getParentForChildren(),
+                  isClean());
+          container_ = null;
+        }
+        return containerBuilder_;
+      }
+
+      // optional string user = 14;
+      private java.lang.Object user_ = "";
+      /**
+       * <code>optional string user = 14;</code>
+       *
+       * <pre>
+       * Specific user under which task is running.
+       * </pre>
+       */
+      public boolean hasUser() {
+        return ((bitField0_ & 0x00002000) == 0x00002000);
+      }
+      /**
+       * <code>optional string user = 14;</code>
+       *
+       * <pre>
+       * Specific user under which task is running.
+       * </pre>
+       */
+      public java.lang.String getUser() {
+        java.lang.Object ref = user_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          user_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string user = 14;</code>
+       *
+       * <pre>
+       * Specific user under which task is running.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getUserBytes() {
+        java.lang.Object ref = user_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          user_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string user = 14;</code>
+       *
+       * <pre>
+       * Specific user under which task is running.
+       * </pre>
+       */
+      public Builder setUser(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00002000;
+        user_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string user = 14;</code>
+       *
+       * <pre>
+       * Specific user under which task is running.
+       * </pre>
+       */
+      public Builder clearUser() {
+        bitField0_ = (bitField0_ & ~0x00002000);
+        user_ = getDefaultInstance().getUser();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string user = 14;</code>
+       *
+       * <pre>
+       * Specific user under which task is running.
+       * </pre>
+       */
+      public Builder setUserBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00002000;
+        user_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.Task)
+    }
+
+    static {
+      defaultInstance = new Task(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.Task)
+  }
+
+  public interface CheckStatusInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional .mesos.v1.CheckInfo.Type type = 1;
+    /**
+     * <code>optional .mesos.v1.CheckInfo.Type type = 1;</code>
+     *
+     * <pre>
+     * The type of the check this status corresponds to.
+     * </pre>
+     */
+    boolean hasType();
+    /**
+     * <code>optional .mesos.v1.CheckInfo.Type type = 1;</code>
+     *
+     * <pre>
+     * The type of the check this status corresponds to.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.CheckInfo.Type getType();
+
+    // optional .mesos.v1.CheckStatusInfo.Command command = 2;
+    /**
+     * <code>optional .mesos.v1.CheckStatusInfo.Command command = 2;</code>
+     *
+     * <pre>
+     * Status of a command check.
+     * </pre>
+     */
+    boolean hasCommand();
+    /**
+     * <code>optional .mesos.v1.CheckStatusInfo.Command command = 2;</code>
+     *
+     * <pre>
+     * Status of a command check.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.CheckStatusInfo.Command getCommand();
+    /**
+     * <code>optional .mesos.v1.CheckStatusInfo.Command command = 2;</code>
+     *
+     * <pre>
+     * Status of a command check.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.CheckStatusInfo.CommandOrBuilder getCommandOrBuilder();
+
+    // optional .mesos.v1.CheckStatusInfo.Http http = 3;
+    /**
+     * <code>optional .mesos.v1.CheckStatusInfo.Http http = 3;</code>
+     *
+     * <pre>
+     * Status of an HTTP check.
+     * </pre>
+     */
+    boolean hasHttp();
+    /**
+     * <code>optional .mesos.v1.CheckStatusInfo.Http http = 3;</code>
+     *
+     * <pre>
+     * Status of an HTTP check.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.CheckStatusInfo.Http getHttp();
+    /**
+     * <code>optional .mesos.v1.CheckStatusInfo.Http http = 3;</code>
+     *
+     * <pre>
+     * Status of an HTTP check.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.CheckStatusInfo.HttpOrBuilder getHttpOrBuilder();
+
+    // optional .mesos.v1.CheckStatusInfo.Tcp tcp = 4;
+    /**
+     * <code>optional .mesos.v1.CheckStatusInfo.Tcp tcp = 4;</code>
+     *
+     * <pre>
+     * Status of a TCP check.
+     * </pre>
+     */
+    boolean hasTcp();
+    /**
+     * <code>optional .mesos.v1.CheckStatusInfo.Tcp tcp = 4;</code>
+     *
+     * <pre>
+     * Status of a TCP check.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp getTcp();
+    /**
+     * <code>optional .mesos.v1.CheckStatusInfo.Tcp tcp = 4;</code>
+     *
+     * <pre>
+     * Status of a TCP check.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.CheckStatusInfo.TcpOrBuilder getTcpOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.CheckStatusInfo}
+   *
+   * <pre>
+   **
+   * Describes the status of a check. Type and the corresponding field, i.e.,
+   * `command` or `http` must be set. If the result of the check is not available
+   * (e.g., the check timed out), these fields must contain empty messages, i.e.,
+   * `exit_code` or `status_code` will be unset.
+   *
+   * NOTE: This API is unstable and the related feature is experimental.
+   * </pre>
+   */
+  public static final class CheckStatusInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements CheckStatusInfoOrBuilder {
+    // Use CheckStatusInfo.newBuilder() to construct.
+    private CheckStatusInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private CheckStatusInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final CheckStatusInfo defaultInstance;
+    public static CheckStatusInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public CheckStatusInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private CheckStatusInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 8: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.v1.Protos.CheckInfo.Type value = org.apache.mesos.v1.Protos.CheckInfo.Type.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(1, rawValue);
+              } else {
+                bitField0_ |= 0x00000001;
+                type_ = value;
+              }
+              break;
+            }
+            case 18: {
+              org.apache.mesos.v1.Protos.CheckStatusInfo.Command.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = command_.toBuilder();
+              }
+              command_ = input.readMessage(org.apache.mesos.v1.Protos.CheckStatusInfo.Command.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(command_);
+                command_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+            case 26: {
+              org.apache.mesos.v1.Protos.CheckStatusInfo.Http.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                subBuilder = http_.toBuilder();
+              }
+              http_ = input.readMessage(org.apache.mesos.v1.Protos.CheckStatusInfo.Http.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(http_);
+                http_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000004;
+              break;
+            }
+            case 34: {
+              org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                subBuilder = tcp_.toBuilder();
+              }
+              tcp_ = input.readMessage(org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(tcp_);
+                tcp_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000008;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CheckStatusInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CheckStatusInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.CheckStatusInfo.class, org.apache.mesos.v1.Protos.CheckStatusInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<CheckStatusInfo> PARSER =
+        new com.google.protobuf.AbstractParser<CheckStatusInfo>() {
+      public CheckStatusInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new CheckStatusInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<CheckStatusInfo> getParserForType() {
+      return PARSER;
+    }
+
+    public interface CommandOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // optional int32 exit_code = 1;
+      /**
+       * <code>optional int32 exit_code = 1;</code>
+       *
+       * <pre>
+       * Exit code of a command check. It is the result of calling
+       * `WEXITSTATUS()` on `waitpid()` termination information on
+       * Posix and calling `GetExitCodeProcess()` on Windows.
+       * </pre>
+       */
+      boolean hasExitCode();
+      /**
+       * <code>optional int32 exit_code = 1;</code>
+       *
+       * <pre>
+       * Exit code of a command check. It is the result of calling
+       * `WEXITSTATUS()` on `waitpid()` termination information on
+       * Posix and calling `GetExitCodeProcess()` on Windows.
+       * </pre>
+       */
+      int getExitCode();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.CheckStatusInfo.Command}
+     */
+    public static final class Command extends
+        com.google.protobuf.GeneratedMessage
+        implements CommandOrBuilder {
+      // Use Command.newBuilder() to construct.
+      private Command(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Command(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Command defaultInstance;
+      public static Command getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Command getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Command(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 8: {
+                bitField0_ |= 0x00000001;
+                exitCode_ = input.readInt32();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CheckStatusInfo_Command_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CheckStatusInfo_Command_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.CheckStatusInfo.Command.class, org.apache.mesos.v1.Protos.CheckStatusInfo.Command.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Command> PARSER =
+          new com.google.protobuf.AbstractParser<Command>() {
+        public Command parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Command(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Command> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // optional int32 exit_code = 1;
+      public static final int EXIT_CODE_FIELD_NUMBER = 1;
+      private int exitCode_;
+      /**
+       * <code>optional int32 exit_code = 1;</code>
+       *
+       * <pre>
+       * Exit code of a command check. It is the result of calling
+       * `WEXITSTATUS()` on `waitpid()` termination information on
+       * Posix and calling `GetExitCodeProcess()` on Windows.
+       * </pre>
+       */
+      public boolean hasExitCode() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional int32 exit_code = 1;</code>
+       *
+       * <pre>
+       * Exit code of a command check. It is the result of calling
+       * `WEXITSTATUS()` on `waitpid()` termination information on
+       * Posix and calling `GetExitCodeProcess()` on Windows.
+       * </pre>
+       */
+      public int getExitCode() {
+        return exitCode_;
+      }
+
+      private void initFields() {
+        exitCode_ = 0;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeInt32(1, exitCode_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeInt32Size(1, exitCode_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.Protos.CheckStatusInfo.Command parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.CheckStatusInfo.Command parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.CheckStatusInfo.Command parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.CheckStatusInfo.Command parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.CheckStatusInfo.Command parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.CheckStatusInfo.Command parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.CheckStatusInfo.Command parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.CheckStatusInfo.Command parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.CheckStatusInfo.Command parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.CheckStatusInfo.Command parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.Protos.CheckStatusInfo.Command prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.CheckStatusInfo.Command}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.Protos.CheckStatusInfo.CommandOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CheckStatusInfo_Command_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CheckStatusInfo_Command_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.CheckStatusInfo.Command.class, org.apache.mesos.v1.Protos.CheckStatusInfo.Command.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.Protos.CheckStatusInfo.Command.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          exitCode_ = 0;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CheckStatusInfo_Command_descriptor;
+        }
+
+        public org.apache.mesos.v1.Protos.CheckStatusInfo.Command getDefaultInstanceForType() {
+          return org.apache.mesos.v1.Protos.CheckStatusInfo.Command.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.Protos.CheckStatusInfo.Command build() {
+          org.apache.mesos.v1.Protos.CheckStatusInfo.Command result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.Protos.CheckStatusInfo.Command buildPartial() {
+          org.apache.mesos.v1.Protos.CheckStatusInfo.Command result = new org.apache.mesos.v1.Protos.CheckStatusInfo.Command(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.exitCode_ = exitCode_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.Protos.CheckStatusInfo.Command) {
+            return mergeFrom((org.apache.mesos.v1.Protos.CheckStatusInfo.Command)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.Protos.CheckStatusInfo.Command other) {
+          if (other == org.apache.mesos.v1.Protos.CheckStatusInfo.Command.getDefaultInstance()) return this;
+          if (other.hasExitCode()) {
+            setExitCode(other.getExitCode());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.Protos.CheckStatusInfo.Command parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.Protos.CheckStatusInfo.Command) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // optional int32 exit_code = 1;
+        private int exitCode_ ;
+        /**
+         * <code>optional int32 exit_code = 1;</code>
+         *
+         * <pre>
+         * Exit code of a command check. It is the result of calling
+         * `WEXITSTATUS()` on `waitpid()` termination information on
+         * Posix and calling `GetExitCodeProcess()` on Windows.
+         * </pre>
+         */
+        public boolean hasExitCode() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional int32 exit_code = 1;</code>
+         *
+         * <pre>
+         * Exit code of a command check. It is the result of calling
+         * `WEXITSTATUS()` on `waitpid()` termination information on
+         * Posix and calling `GetExitCodeProcess()` on Windows.
+         * </pre>
+         */
+        public int getExitCode() {
+          return exitCode_;
+        }
+        /**
+         * <code>optional int32 exit_code = 1;</code>
+         *
+         * <pre>
+         * Exit code of a command check. It is the result of calling
+         * `WEXITSTATUS()` on `waitpid()` termination information on
+         * Posix and calling `GetExitCodeProcess()` on Windows.
+         * </pre>
+         */
+        public Builder setExitCode(int value) {
+          bitField0_ |= 0x00000001;
+          exitCode_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional int32 exit_code = 1;</code>
+         *
+         * <pre>
+         * Exit code of a command check. It is the result of calling
+         * `WEXITSTATUS()` on `waitpid()` termination information on
+         * Posix and calling `GetExitCodeProcess()` on Windows.
+         * </pre>
+         */
+        public Builder clearExitCode() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          exitCode_ = 0;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.CheckStatusInfo.Command)
+      }
+
+      static {
+        defaultInstance = new Command(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.CheckStatusInfo.Command)
+    }
+
+    public interface HttpOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // optional uint32 status_code = 1;
+      /**
+       * <code>optional uint32 status_code = 1;</code>
+       *
+       * <pre>
+       * HTTP status code of an HTTP check.
+       * </pre>
+       */
+      boolean hasStatusCode();
+      /**
+       * <code>optional uint32 status_code = 1;</code>
+       *
+       * <pre>
+       * HTTP status code of an HTTP check.
+       * </pre>
+       */
+      int getStatusCode();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.CheckStatusInfo.Http}
+     */
+    public static final class Http extends
+        com.google.protobuf.GeneratedMessage
+        implements HttpOrBuilder {
+      // Use Http.newBuilder() to construct.
+      private Http(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Http(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Http defaultInstance;
+      public static Http getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Http getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Http(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 8: {
+                bitField0_ |= 0x00000001;
+                statusCode_ = input.readUInt32();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CheckStatusInfo_Http_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CheckStatusInfo_Http_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.CheckStatusInfo.Http.class, org.apache.mesos.v1.Protos.CheckStatusInfo.Http.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Http> PARSER =
+          new com.google.protobuf.AbstractParser<Http>() {
+        public Http parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Http(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Http> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // optional uint32 status_code = 1;
+      public static final int STATUS_CODE_FIELD_NUMBER = 1;
+      private int statusCode_;
+      /**
+       * <code>optional uint32 status_code = 1;</code>
+       *
+       * <pre>
+       * HTTP status code of an HTTP check.
+       * </pre>
+       */
+      public boolean hasStatusCode() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional uint32 status_code = 1;</code>
+       *
+       * <pre>
+       * HTTP status code of an HTTP check.
+       * </pre>
+       */
+      public int getStatusCode() {
+        return statusCode_;
+      }
+
+      private void initFields() {
+        statusCode_ = 0;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeUInt32(1, statusCode_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeUInt32Size(1, statusCode_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.Protos.CheckStatusInfo.Http parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.CheckStatusInfo.Http parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.CheckStatusInfo.Http parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.CheckStatusInfo.Http parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.CheckStatusInfo.Http parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.CheckStatusInfo.Http parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.CheckStatusInfo.Http parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.CheckStatusInfo.Http parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.CheckStatusInfo.Http parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.CheckStatusInfo.Http parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.Protos.CheckStatusInfo.Http prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.CheckStatusInfo.Http}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.Protos.CheckStatusInfo.HttpOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CheckStatusInfo_Http_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CheckStatusInfo_Http_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.CheckStatusInfo.Http.class, org.apache.mesos.v1.Protos.CheckStatusInfo.Http.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.Protos.CheckStatusInfo.Http.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          statusCode_ = 0;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CheckStatusInfo_Http_descriptor;
+        }
+
+        public org.apache.mesos.v1.Protos.CheckStatusInfo.Http getDefaultInstanceForType() {
+          return org.apache.mesos.v1.Protos.CheckStatusInfo.Http.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.Protos.CheckStatusInfo.Http build() {
+          org.apache.mesos.v1.Protos.CheckStatusInfo.Http result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.Protos.CheckStatusInfo.Http buildPartial() {
+          org.apache.mesos.v1.Protos.CheckStatusInfo.Http result = new org.apache.mesos.v1.Protos.CheckStatusInfo.Http(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.statusCode_ = statusCode_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.Protos.CheckStatusInfo.Http) {
+            return mergeFrom((org.apache.mesos.v1.Protos.CheckStatusInfo.Http)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.Protos.CheckStatusInfo.Http other) {
+          if (other == org.apache.mesos.v1.Protos.CheckStatusInfo.Http.getDefaultInstance()) return this;
+          if (other.hasStatusCode()) {
+            setStatusCode(other.getStatusCode());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.Protos.CheckStatusInfo.Http parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.Protos.CheckStatusInfo.Http) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // optional uint32 status_code = 1;
+        private int statusCode_ ;
+        /**
+         * <code>optional uint32 status_code = 1;</code>
+         *
+         * <pre>
+         * HTTP status code of an HTTP check.
+         * </pre>
+         */
+        public boolean hasStatusCode() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional uint32 status_code = 1;</code>
+         *
+         * <pre>
+         * HTTP status code of an HTTP check.
+         * </pre>
+         */
+        public int getStatusCode() {
+          return statusCode_;
+        }
+        /**
+         * <code>optional uint32 status_code = 1;</code>
+         *
+         * <pre>
+         * HTTP status code of an HTTP check.
+         * </pre>
+         */
+        public Builder setStatusCode(int value) {
+          bitField0_ |= 0x00000001;
+          statusCode_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional uint32 status_code = 1;</code>
+         *
+         * <pre>
+         * HTTP status code of an HTTP check.
+         * </pre>
+         */
+        public Builder clearStatusCode() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          statusCode_ = 0;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.CheckStatusInfo.Http)
+      }
+
+      static {
+        defaultInstance = new Http(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.CheckStatusInfo.Http)
+    }
+
+    public interface TcpOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // optional bool succeeded = 1;
+      /**
+       * <code>optional bool succeeded = 1;</code>
+       *
+       * <pre>
+       * Whether a TCP connection succeeded.
+       * </pre>
+       */
+      boolean hasSucceeded();
+      /**
+       * <code>optional bool succeeded = 1;</code>
+       *
+       * <pre>
+       * Whether a TCP connection succeeded.
+       * </pre>
+       */
+      boolean getSucceeded();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.CheckStatusInfo.Tcp}
+     */
+    public static final class Tcp extends
+        com.google.protobuf.GeneratedMessage
+        implements TcpOrBuilder {
+      // Use Tcp.newBuilder() to construct.
+      private Tcp(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Tcp(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Tcp defaultInstance;
+      public static Tcp getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Tcp getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Tcp(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 8: {
+                bitField0_ |= 0x00000001;
+                succeeded_ = input.readBool();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CheckStatusInfo_Tcp_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CheckStatusInfo_Tcp_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp.class, org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Tcp> PARSER =
+          new com.google.protobuf.AbstractParser<Tcp>() {
+        public Tcp parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Tcp(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Tcp> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // optional bool succeeded = 1;
+      public static final int SUCCEEDED_FIELD_NUMBER = 1;
+      private boolean succeeded_;
+      /**
+       * <code>optional bool succeeded = 1;</code>
+       *
+       * <pre>
+       * Whether a TCP connection succeeded.
+       * </pre>
+       */
+      public boolean hasSucceeded() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional bool succeeded = 1;</code>
+       *
+       * <pre>
+       * Whether a TCP connection succeeded.
+       * </pre>
+       */
+      public boolean getSucceeded() {
+        return succeeded_;
+      }
+
+      private void initFields() {
+        succeeded_ = false;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeBool(1, succeeded_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBoolSize(1, succeeded_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.CheckStatusInfo.Tcp}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.Protos.CheckStatusInfo.TcpOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CheckStatusInfo_Tcp_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CheckStatusInfo_Tcp_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp.class, org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          succeeded_ = false;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CheckStatusInfo_Tcp_descriptor;
+        }
+
+        public org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp getDefaultInstanceForType() {
+          return org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp build() {
+          org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp buildPartial() {
+          org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp result = new org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.succeeded_ = succeeded_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp) {
+            return mergeFrom((org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp other) {
+          if (other == org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp.getDefaultInstance()) return this;
+          if (other.hasSucceeded()) {
+            setSucceeded(other.getSucceeded());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // optional bool succeeded = 1;
+        private boolean succeeded_ ;
+        /**
+         * <code>optional bool succeeded = 1;</code>
+         *
+         * <pre>
+         * Whether a TCP connection succeeded.
+         * </pre>
+         */
+        public boolean hasSucceeded() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional bool succeeded = 1;</code>
+         *
+         * <pre>
+         * Whether a TCP connection succeeded.
+         * </pre>
+         */
+        public boolean getSucceeded() {
+          return succeeded_;
+        }
+        /**
+         * <code>optional bool succeeded = 1;</code>
+         *
+         * <pre>
+         * Whether a TCP connection succeeded.
+         * </pre>
+         */
+        public Builder setSucceeded(boolean value) {
+          bitField0_ |= 0x00000001;
+          succeeded_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional bool succeeded = 1;</code>
+         *
+         * <pre>
+         * Whether a TCP connection succeeded.
+         * </pre>
+         */
+        public Builder clearSucceeded() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          succeeded_ = false;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.CheckStatusInfo.Tcp)
+      }
+
+      static {
+        defaultInstance = new Tcp(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.CheckStatusInfo.Tcp)
+    }
+
+    private int bitField0_;
+    // optional .mesos.v1.CheckInfo.Type type = 1;
+    public static final int TYPE_FIELD_NUMBER = 1;
+    private org.apache.mesos.v1.Protos.CheckInfo.Type type_;
+    /**
+     * <code>optional .mesos.v1.CheckInfo.Type type = 1;</code>
+     *
+     * <pre>
+     * The type of the check this status corresponds to.
+     * </pre>
+     */
+    public boolean hasType() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional .mesos.v1.CheckInfo.Type type = 1;</code>
+     *
+     * <pre>
+     * The type of the check this status corresponds to.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.CheckInfo.Type getType() {
+      return type_;
+    }
+
+    // optional .mesos.v1.CheckStatusInfo.Command command = 2;
+    public static final int COMMAND_FIELD_NUMBER = 2;
+    private org.apache.mesos.v1.Protos.CheckStatusInfo.Command command_;
+    /**
+     * <code>optional .mesos.v1.CheckStatusInfo.Command command = 2;</code>
+     *
+     * <pre>
+     * Status of a command check.
+     * </pre>
+     */
+    public boolean hasCommand() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional .mesos.v1.CheckStatusInfo.Command command = 2;</code>
+     *
+     * <pre>
+     * Status of a command check.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.CheckStatusInfo.Command getCommand() {
+      return command_;
+    }
+    /**
+     * <code>optional .mesos.v1.CheckStatusInfo.Command command = 2;</code>
+     *
+     * <pre>
+     * Status of a command check.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.CheckStatusInfo.CommandOrBuilder getCommandOrBuilder() {
+      return command_;
+    }
+
+    // optional .mesos.v1.CheckStatusInfo.Http http = 3;
+    public static final int HTTP_FIELD_NUMBER = 3;
+    private org.apache.mesos.v1.Protos.CheckStatusInfo.Http http_;
+    /**
+     * <code>optional .mesos.v1.CheckStatusInfo.Http http = 3;</code>
+     *
+     * <pre>
+     * Status of an HTTP check.
+     * </pre>
+     */
+    public boolean hasHttp() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional .mesos.v1.CheckStatusInfo.Http http = 3;</code>
+     *
+     * <pre>
+     * Status of an HTTP check.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.CheckStatusInfo.Http getHttp() {
+      return http_;
+    }
+    /**
+     * <code>optional .mesos.v1.CheckStatusInfo.Http http = 3;</code>
+     *
+     * <pre>
+     * Status of an HTTP check.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.CheckStatusInfo.HttpOrBuilder getHttpOrBuilder() {
+      return http_;
+    }
+
+    // optional .mesos.v1.CheckStatusInfo.Tcp tcp = 4;
+    public static final int TCP_FIELD_NUMBER = 4;
+    private org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp tcp_;
+    /**
+     * <code>optional .mesos.v1.CheckStatusInfo.Tcp tcp = 4;</code>
+     *
+     * <pre>
+     * Status of a TCP check.
+     * </pre>
+     */
+    public boolean hasTcp() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional .mesos.v1.CheckStatusInfo.Tcp tcp = 4;</code>
+     *
+     * <pre>
+     * Status of a TCP check.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp getTcp() {
+      return tcp_;
+    }
+    /**
+     * <code>optional .mesos.v1.CheckStatusInfo.Tcp tcp = 4;</code>
+     *
+     * <pre>
+     * Status of a TCP check.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.CheckStatusInfo.TcpOrBuilder getTcpOrBuilder() {
+      return tcp_;
+    }
+
+    private void initFields() {
+      type_ = org.apache.mesos.v1.Protos.CheckInfo.Type.UNKNOWN;
+      command_ = org.apache.mesos.v1.Protos.CheckStatusInfo.Command.getDefaultInstance();
+      http_ = org.apache.mesos.v1.Protos.CheckStatusInfo.Http.getDefaultInstance();
+      tcp_ = org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeEnum(1, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(2, command_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeMessage(3, http_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeMessage(4, tcp_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(1, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, command_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, http_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, tcp_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.CheckStatusInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.CheckStatusInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.CheckStatusInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.CheckStatusInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.CheckStatusInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.CheckStatusInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.CheckStatusInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.CheckStatusInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.CheckStatusInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.CheckStatusInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.CheckStatusInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.CheckStatusInfo}
+     *
+     * <pre>
+     **
+     * Describes the status of a check. Type and the corresponding field, i.e.,
+     * `command` or `http` must be set. If the result of the check is not available
+     * (e.g., the check timed out), these fields must contain empty messages, i.e.,
+     * `exit_code` or `status_code` will be unset.
+     *
+     * NOTE: This API is unstable and the related feature is experimental.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.CheckStatusInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CheckStatusInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CheckStatusInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.CheckStatusInfo.class, org.apache.mesos.v1.Protos.CheckStatusInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.CheckStatusInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getCommandFieldBuilder();
+          getHttpFieldBuilder();
+          getTcpFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        type_ = org.apache.mesos.v1.Protos.CheckInfo.Type.UNKNOWN;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (commandBuilder_ == null) {
+          command_ = org.apache.mesos.v1.Protos.CheckStatusInfo.Command.getDefaultInstance();
+        } else {
+          commandBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        if (httpBuilder_ == null) {
+          http_ = org.apache.mesos.v1.Protos.CheckStatusInfo.Http.getDefaultInstance();
+        } else {
+          httpBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        if (tcpBuilder_ == null) {
+          tcp_ = org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp.getDefaultInstance();
+        } else {
+          tcpBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CheckStatusInfo_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.CheckStatusInfo getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.CheckStatusInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.CheckStatusInfo build() {
+        org.apache.mesos.v1.Protos.CheckStatusInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.CheckStatusInfo buildPartial() {
+        org.apache.mesos.v1.Protos.CheckStatusInfo result = new org.apache.mesos.v1.Protos.CheckStatusInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.type_ = type_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (commandBuilder_ == null) {
+          result.command_ = command_;
+        } else {
+          result.command_ = commandBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        if (httpBuilder_ == null) {
+          result.http_ = http_;
+        } else {
+          result.http_ = httpBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        if (tcpBuilder_ == null) {
+          result.tcp_ = tcp_;
+        } else {
+          result.tcp_ = tcpBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.CheckStatusInfo) {
+          return mergeFrom((org.apache.mesos.v1.Protos.CheckStatusInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.CheckStatusInfo other) {
+        if (other == org.apache.mesos.v1.Protos.CheckStatusInfo.getDefaultInstance()) return this;
+        if (other.hasType()) {
+          setType(other.getType());
+        }
+        if (other.hasCommand()) {
+          mergeCommand(other.getCommand());
+        }
+        if (other.hasHttp()) {
+          mergeHttp(other.getHttp());
+        }
+        if (other.hasTcp()) {
+          mergeTcp(other.getTcp());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.CheckStatusInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.CheckStatusInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional .mesos.v1.CheckInfo.Type type = 1;
+      private org.apache.mesos.v1.Protos.CheckInfo.Type type_ = org.apache.mesos.v1.Protos.CheckInfo.Type.UNKNOWN;
+      /**
+       * <code>optional .mesos.v1.CheckInfo.Type type = 1;</code>
+       *
+       * <pre>
+       * The type of the check this status corresponds to.
+       * </pre>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.v1.CheckInfo.Type type = 1;</code>
+       *
+       * <pre>
+       * The type of the check this status corresponds to.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.CheckInfo.Type getType() {
+        return type_;
+      }
+      /**
+       * <code>optional .mesos.v1.CheckInfo.Type type = 1;</code>
+       *
+       * <pre>
+       * The type of the check this status corresponds to.
+       * </pre>
+       */
+      public Builder setType(org.apache.mesos.v1.Protos.CheckInfo.Type value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000001;
+        type_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CheckInfo.Type type = 1;</code>
+       *
+       * <pre>
+       * The type of the check this status corresponds to.
+       * </pre>
+       */
+      public Builder clearType() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        type_ = org.apache.mesos.v1.Protos.CheckInfo.Type.UNKNOWN;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.v1.CheckStatusInfo.Command command = 2;
+      private org.apache.mesos.v1.Protos.CheckStatusInfo.Command command_ = org.apache.mesos.v1.Protos.CheckStatusInfo.Command.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.CheckStatusInfo.Command, org.apache.mesos.v1.Protos.CheckStatusInfo.Command.Builder, org.apache.mesos.v1.Protos.CheckStatusInfo.CommandOrBuilder> commandBuilder_;
+      /**
+       * <code>optional .mesos.v1.CheckStatusInfo.Command command = 2;</code>
+       *
+       * <pre>
+       * Status of a command check.
+       * </pre>
+       */
+      public boolean hasCommand() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.v1.CheckStatusInfo.Command command = 2;</code>
+       *
+       * <pre>
+       * Status of a command check.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.CheckStatusInfo.Command getCommand() {
+        if (commandBuilder_ == null) {
+          return command_;
+        } else {
+          return commandBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.CheckStatusInfo.Command command = 2;</code>
+       *
+       * <pre>
+       * Status of a command check.
+       * </pre>
+       */
+      public Builder setCommand(org.apache.mesos.v1.Protos.CheckStatusInfo.Command value) {
+        if (commandBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          command_ = value;
+          onChanged();
+        } else {
+          commandBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CheckStatusInfo.Command command = 2;</code>
+       *
+       * <pre>
+       * Status of a command check.
+       * </pre>
+       */
+      public Builder setCommand(
+          org.apache.mesos.v1.Protos.CheckStatusInfo.Command.Builder builderForValue) {
+        if (commandBuilder_ == null) {
+          command_ = builderForValue.build();
+          onChanged();
+        } else {
+          commandBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CheckStatusInfo.Command command = 2;</code>
+       *
+       * <pre>
+       * Status of a command check.
+       * </pre>
+       */
+      public Builder mergeCommand(org.apache.mesos.v1.Protos.CheckStatusInfo.Command value) {
+        if (commandBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              command_ != org.apache.mesos.v1.Protos.CheckStatusInfo.Command.getDefaultInstance()) {
+            command_ =
+              org.apache.mesos.v1.Protos.CheckStatusInfo.Command.newBuilder(command_).mergeFrom(value).buildPartial();
+          } else {
+            command_ = value;
+          }
+          onChanged();
+        } else {
+          commandBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CheckStatusInfo.Command command = 2;</code>
+       *
+       * <pre>
+       * Status of a command check.
+       * </pre>
+       */
+      public Builder clearCommand() {
+        if (commandBuilder_ == null) {
+          command_ = org.apache.mesos.v1.Protos.CheckStatusInfo.Command.getDefaultInstance();
+          onChanged();
+        } else {
+          commandBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CheckStatusInfo.Command command = 2;</code>
+       *
+       * <pre>
+       * Status of a command check.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.CheckStatusInfo.Command.Builder getCommandBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getCommandFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.CheckStatusInfo.Command command = 2;</code>
+       *
+       * <pre>
+       * Status of a command check.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.CheckStatusInfo.CommandOrBuilder getCommandOrBuilder() {
+        if (commandBuilder_ != null) {
+          return commandBuilder_.getMessageOrBuilder();
+        } else {
+          return command_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.CheckStatusInfo.Command command = 2;</code>
+       *
+       * <pre>
+       * Status of a command check.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.CheckStatusInfo.Command, org.apache.mesos.v1.Protos.CheckStatusInfo.Command.Builder, org.apache.mesos.v1.Protos.CheckStatusInfo.CommandOrBuilder> 
+          getCommandFieldBuilder() {
+        if (commandBuilder_ == null) {
+          commandBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.CheckStatusInfo.Command, org.apache.mesos.v1.Protos.CheckStatusInfo.Command.Builder, org.apache.mesos.v1.Protos.CheckStatusInfo.CommandOrBuilder>(
+                  command_,
+                  getParentForChildren(),
+                  isClean());
+          command_ = null;
+        }
+        return commandBuilder_;
+      }
+
+      // optional .mesos.v1.CheckStatusInfo.Http http = 3;
+      private org.apache.mesos.v1.Protos.CheckStatusInfo.Http http_ = org.apache.mesos.v1.Protos.CheckStatusInfo.Http.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.CheckStatusInfo.Http, org.apache.mesos.v1.Protos.CheckStatusInfo.Http.Builder, org.apache.mesos.v1.Protos.CheckStatusInfo.HttpOrBuilder> httpBuilder_;
+      /**
+       * <code>optional .mesos.v1.CheckStatusInfo.Http http = 3;</code>
+       *
+       * <pre>
+       * Status of an HTTP check.
+       * </pre>
+       */
+      public boolean hasHttp() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.v1.CheckStatusInfo.Http http = 3;</code>
+       *
+       * <pre>
+       * Status of an HTTP check.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.CheckStatusInfo.Http getHttp() {
+        if (httpBuilder_ == null) {
+          return http_;
+        } else {
+          return httpBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.CheckStatusInfo.Http http = 3;</code>
+       *
+       * <pre>
+       * Status of an HTTP check.
+       * </pre>
+       */
+      public Builder setHttp(org.apache.mesos.v1.Protos.CheckStatusInfo.Http value) {
+        if (httpBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          http_ = value;
+          onChanged();
+        } else {
+          httpBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CheckStatusInfo.Http http = 3;</code>
+       *
+       * <pre>
+       * Status of an HTTP check.
+       * </pre>
+       */
+      public Builder setHttp(
+          org.apache.mesos.v1.Protos.CheckStatusInfo.Http.Builder builderForValue) {
+        if (httpBuilder_ == null) {
+          http_ = builderForValue.build();
+          onChanged();
+        } else {
+          httpBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CheckStatusInfo.Http http = 3;</code>
+       *
+       * <pre>
+       * Status of an HTTP check.
+       * </pre>
+       */
+      public Builder mergeHttp(org.apache.mesos.v1.Protos.CheckStatusInfo.Http value) {
+        if (httpBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) == 0x00000004) &&
+              http_ != org.apache.mesos.v1.Protos.CheckStatusInfo.Http.getDefaultInstance()) {
+            http_ =
+              org.apache.mesos.v1.Protos.CheckStatusInfo.Http.newBuilder(http_).mergeFrom(value).buildPartial();
+          } else {
+            http_ = value;
+          }
+          onChanged();
+        } else {
+          httpBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CheckStatusInfo.Http http = 3;</code>
+       *
+       * <pre>
+       * Status of an HTTP check.
+       * </pre>
+       */
+      public Builder clearHttp() {
+        if (httpBuilder_ == null) {
+          http_ = org.apache.mesos.v1.Protos.CheckStatusInfo.Http.getDefaultInstance();
+          onChanged();
+        } else {
+          httpBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CheckStatusInfo.Http http = 3;</code>
+       *
+       * <pre>
+       * Status of an HTTP check.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.CheckStatusInfo.Http.Builder getHttpBuilder() {
+        bitField0_ |= 0x00000004;
+        onChanged();
+        return getHttpFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.CheckStatusInfo.Http http = 3;</code>
+       *
+       * <pre>
+       * Status of an HTTP check.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.CheckStatusInfo.HttpOrBuilder getHttpOrBuilder() {
+        if (httpBuilder_ != null) {
+          return httpBuilder_.getMessageOrBuilder();
+        } else {
+          return http_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.CheckStatusInfo.Http http = 3;</code>
+       *
+       * <pre>
+       * Status of an HTTP check.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.CheckStatusInfo.Http, org.apache.mesos.v1.Protos.CheckStatusInfo.Http.Builder, org.apache.mesos.v1.Protos.CheckStatusInfo.HttpOrBuilder> 
+          getHttpFieldBuilder() {
+        if (httpBuilder_ == null) {
+          httpBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.CheckStatusInfo.Http, org.apache.mesos.v1.Protos.CheckStatusInfo.Http.Builder, org.apache.mesos.v1.Protos.CheckStatusInfo.HttpOrBuilder>(
+                  http_,
+                  getParentForChildren(),
+                  isClean());
+          http_ = null;
+        }
+        return httpBuilder_;
+      }
+
+      // optional .mesos.v1.CheckStatusInfo.Tcp tcp = 4;
+      private org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp tcp_ = org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp, org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp.Builder, org.apache.mesos.v1.Protos.CheckStatusInfo.TcpOrBuilder> tcpBuilder_;
+      /**
+       * <code>optional .mesos.v1.CheckStatusInfo.Tcp tcp = 4;</code>
+       *
+       * <pre>
+       * Status of a TCP check.
+       * </pre>
+       */
+      public boolean hasTcp() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.v1.CheckStatusInfo.Tcp tcp = 4;</code>
+       *
+       * <pre>
+       * Status of a TCP check.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp getTcp() {
+        if (tcpBuilder_ == null) {
+          return tcp_;
+        } else {
+          return tcpBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.CheckStatusInfo.Tcp tcp = 4;</code>
+       *
+       * <pre>
+       * Status of a TCP check.
+       * </pre>
+       */
+      public Builder setTcp(org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp value) {
+        if (tcpBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          tcp_ = value;
+          onChanged();
+        } else {
+          tcpBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CheckStatusInfo.Tcp tcp = 4;</code>
+       *
+       * <pre>
+       * Status of a TCP check.
+       * </pre>
+       */
+      public Builder setTcp(
+          org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp.Builder builderForValue) {
+        if (tcpBuilder_ == null) {
+          tcp_ = builderForValue.build();
+          onChanged();
+        } else {
+          tcpBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CheckStatusInfo.Tcp tcp = 4;</code>
+       *
+       * <pre>
+       * Status of a TCP check.
+       * </pre>
+       */
+      public Builder mergeTcp(org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp value) {
+        if (tcpBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008) &&
+              tcp_ != org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp.getDefaultInstance()) {
+            tcp_ =
+              org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp.newBuilder(tcp_).mergeFrom(value).buildPartial();
+          } else {
+            tcp_ = value;
+          }
+          onChanged();
+        } else {
+          tcpBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CheckStatusInfo.Tcp tcp = 4;</code>
+       *
+       * <pre>
+       * Status of a TCP check.
+       * </pre>
+       */
+      public Builder clearTcp() {
+        if (tcpBuilder_ == null) {
+          tcp_ = org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp.getDefaultInstance();
+          onChanged();
+        } else {
+          tcpBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CheckStatusInfo.Tcp tcp = 4;</code>
+       *
+       * <pre>
+       * Status of a TCP check.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp.Builder getTcpBuilder() {
+        bitField0_ |= 0x00000008;
+        onChanged();
+        return getTcpFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.CheckStatusInfo.Tcp tcp = 4;</code>
+       *
+       * <pre>
+       * Status of a TCP check.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.CheckStatusInfo.TcpOrBuilder getTcpOrBuilder() {
+        if (tcpBuilder_ != null) {
+          return tcpBuilder_.getMessageOrBuilder();
+        } else {
+          return tcp_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.CheckStatusInfo.Tcp tcp = 4;</code>
+       *
+       * <pre>
+       * Status of a TCP check.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp, org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp.Builder, org.apache.mesos.v1.Protos.CheckStatusInfo.TcpOrBuilder> 
+          getTcpFieldBuilder() {
+        if (tcpBuilder_ == null) {
+          tcpBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp, org.apache.mesos.v1.Protos.CheckStatusInfo.Tcp.Builder, org.apache.mesos.v1.Protos.CheckStatusInfo.TcpOrBuilder>(
+                  tcp_,
+                  getParentForChildren(),
+                  isClean());
+          tcp_ = null;
+        }
+        return tcpBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.CheckStatusInfo)
+    }
+
+    static {
+      defaultInstance = new CheckStatusInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.CheckStatusInfo)
+  }
+
+  public interface TaskStatusOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required .mesos.v1.TaskID task_id = 1;
+    /**
+     * <code>required .mesos.v1.TaskID task_id = 1;</code>
+     */
+    boolean hasTaskId();
+    /**
+     * <code>required .mesos.v1.TaskID task_id = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.TaskID getTaskId();
+    /**
+     * <code>required .mesos.v1.TaskID task_id = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.TaskIDOrBuilder getTaskIdOrBuilder();
+
+    // required .mesos.v1.TaskState state = 2;
+    /**
+     * <code>required .mesos.v1.TaskState state = 2;</code>
+     */
+    boolean hasState();
+    /**
+     * <code>required .mesos.v1.TaskState state = 2;</code>
+     */
+    org.apache.mesos.v1.Protos.TaskState getState();
+
+    // optional string message = 4;
+    /**
+     * <code>optional string message = 4;</code>
+     *
+     * <pre>
+     * Possible message explaining state.
+     * </pre>
+     */
+    boolean hasMessage();
+    /**
+     * <code>optional string message = 4;</code>
+     *
+     * <pre>
+     * Possible message explaining state.
+     * </pre>
+     */
+    java.lang.String getMessage();
+    /**
+     * <code>optional string message = 4;</code>
+     *
+     * <pre>
+     * Possible message explaining state.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getMessageBytes();
+
+    // optional .mesos.v1.TaskStatus.Source source = 9;
+    /**
+     * <code>optional .mesos.v1.TaskStatus.Source source = 9;</code>
+     */
+    boolean hasSource();
+    /**
+     * <code>optional .mesos.v1.TaskStatus.Source source = 9;</code>
+     */
+    org.apache.mesos.v1.Protos.TaskStatus.Source getSource();
+
+    // optional .mesos.v1.TaskStatus.Reason reason = 10;
+    /**
+     * <code>optional .mesos.v1.TaskStatus.Reason reason = 10;</code>
+     */
+    boolean hasReason();
+    /**
+     * <code>optional .mesos.v1.TaskStatus.Reason reason = 10;</code>
+     */
+    org.apache.mesos.v1.Protos.TaskStatus.Reason getReason();
+
+    // optional bytes data = 3;
+    /**
+     * <code>optional bytes data = 3;</code>
+     */
+    boolean hasData();
+    /**
+     * <code>optional bytes data = 3;</code>
+     */
+    com.google.protobuf.ByteString getData();
+
+    // optional .mesos.v1.AgentID agent_id = 5;
+    /**
+     * <code>optional .mesos.v1.AgentID agent_id = 5;</code>
+     */
+    boolean hasAgentId();
+    /**
+     * <code>optional .mesos.v1.AgentID agent_id = 5;</code>
+     */
+    org.apache.mesos.v1.Protos.AgentID getAgentId();
+    /**
+     * <code>optional .mesos.v1.AgentID agent_id = 5;</code>
+     */
+    org.apache.mesos.v1.Protos.AgentIDOrBuilder getAgentIdOrBuilder();
+
+    // optional .mesos.v1.ExecutorID executor_id = 7;
+    /**
+     * <code>optional .mesos.v1.ExecutorID executor_id = 7;</code>
+     *
+     * <pre>
+     * TODO(benh): Use in master/agent.
+     * </pre>
+     */
+    boolean hasExecutorId();
+    /**
+     * <code>optional .mesos.v1.ExecutorID executor_id = 7;</code>
+     *
+     * <pre>
+     * TODO(benh): Use in master/agent.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.ExecutorID getExecutorId();
+    /**
+     * <code>optional .mesos.v1.ExecutorID executor_id = 7;</code>
+     *
+     * <pre>
+     * TODO(benh): Use in master/agent.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder();
+
+    // optional double timestamp = 6;
+    /**
+     * <code>optional double timestamp = 6;</code>
+     */
+    boolean hasTimestamp();
+    /**
+     * <code>optional double timestamp = 6;</code>
+     */
+    double getTimestamp();
+
+    // optional bytes uuid = 11;
+    /**
+     * <code>optional bytes uuid = 11;</code>
+     *
+     * <pre>
+     * Statuses that are delivered reliably to the scheduler will
+     * include a 'uuid'. The status is considered delivered once
+     * it is acknowledged by the scheduler. Schedulers can choose
+     * to either explicitly acknowledge statuses or let the scheduler
+     * driver implicitly acknowledge (default).
+     *
+     * TODO(bmahler): This is currently overwritten in the scheduler
+     * driver and executor driver, but executors will need to set this
+     * to a valid RFC-4122 UUID if using the HTTP API.
+     * </pre>
+     */
+    boolean hasUuid();
+    /**
+     * <code>optional bytes uuid = 11;</code>
+     *
+     * <pre>
+     * Statuses that are delivered reliably to the scheduler will
+     * include a 'uuid'. The status is considered delivered once
+     * it is acknowledged by the scheduler. Schedulers can choose
+     * to either explicitly acknowledge statuses or let the scheduler
+     * driver implicitly acknowledge (default).
+     *
+     * TODO(bmahler): This is currently overwritten in the scheduler
+     * driver and executor driver, but executors will need to set this
+     * to a valid RFC-4122 UUID if using the HTTP API.
+     * </pre>
+     */
+    com.google.protobuf.ByteString getUuid();
+
+    // optional bool healthy = 8;
+    /**
+     * <code>optional bool healthy = 8;</code>
+     *
+     * <pre>
+     * Describes whether the task has been determined to be healthy (true) or
+     * unhealthy (false) according to the `health_check` field in `TaskInfo`.
+     * </pre>
+     */
+    boolean hasHealthy();
+    /**
+     * <code>optional bool healthy = 8;</code>
+     *
+     * <pre>
+     * Describes whether the task has been determined to be healthy (true) or
+     * unhealthy (false) according to the `health_check` field in `TaskInfo`.
+     * </pre>
+     */
+    boolean getHealthy();
+
+    // optional .mesos.v1.CheckStatusInfo check_status = 15;
+    /**
+     * <code>optional .mesos.v1.CheckStatusInfo check_status = 15;</code>
+     *
+     * <pre>
+     * Contains check status for the check specified in the corresponding
+     * `TaskInfo`. If no check has been specified, this field must be
+     * absent, otherwise it must be present even if the check status is
+     * not available yet. If the status update is triggered for a different
+     * reason than `REASON_TASK_CHECK_STATUS_UPDATED`, this field will contain
+     * the last known value.
+     *
+     * NOTE: A check-related task status update is triggered if and only if
+     * the value or presence of any field in `CheckStatusInfo` changes.
+     *
+     * NOTE: Check support in built-in executors is experimental.
+     * </pre>
+     */
+    boolean hasCheckStatus();
+    /**
+     * <code>optional .mesos.v1.CheckStatusInfo check_status = 15;</code>
+     *
+     * <pre>
+     * Contains check status for the check specified in the corresponding
+     * `TaskInfo`. If no check has been specified, this field must be
+     * absent, otherwise it must be present even if the check status is
+     * not available yet. If the status update is triggered for a different
+     * reason than `REASON_TASK_CHECK_STATUS_UPDATED`, this field will contain
+     * the last known value.
+     *
+     * NOTE: A check-related task status update is triggered if and only if
+     * the value or presence of any field in `CheckStatusInfo` changes.
+     *
+     * NOTE: Check support in built-in executors is experimental.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.CheckStatusInfo getCheckStatus();
+    /**
+     * <code>optional .mesos.v1.CheckStatusInfo check_status = 15;</code>
+     *
+     * <pre>
+     * Contains check status for the check specified in the corresponding
+     * `TaskInfo`. If no check has been specified, this field must be
+     * absent, otherwise it must be present even if the check status is
+     * not available yet. If the status update is triggered for a different
+     * reason than `REASON_TASK_CHECK_STATUS_UPDATED`, this field will contain
+     * the last known value.
+     *
+     * NOTE: A check-related task status update is triggered if and only if
+     * the value or presence of any field in `CheckStatusInfo` changes.
+     *
+     * NOTE: Check support in built-in executors is experimental.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.CheckStatusInfoOrBuilder getCheckStatusOrBuilder();
+
+    // optional .mesos.v1.Labels labels = 12;
+    /**
+     * <code>optional .mesos.v1.Labels labels = 12;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs which are exposed through
+     * master and agent endpoints. Labels will not be interpreted or
+     * acted upon by Mesos itself. As opposed to the data field, labels
+     * will be kept in memory on master and agent processes. Therefore,
+     * labels should be used to tag TaskStatus message with light-weight
+     * meta-data.  Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    boolean hasLabels();
+    /**
+     * <code>optional .mesos.v1.Labels labels = 12;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs which are exposed through
+     * master and agent endpoints. Labels will not be interpreted or
+     * acted upon by Mesos itself. As opposed to the data field, labels
+     * will be kept in memory on master and agent processes. Therefore,
+     * labels should be used to tag TaskStatus message with light-weight
+     * meta-data.  Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.Labels getLabels();
+    /**
+     * <code>optional .mesos.v1.Labels labels = 12;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs which are exposed through
+     * master and agent endpoints. Labels will not be interpreted or
+     * acted upon by Mesos itself. As opposed to the data field, labels
+     * will be kept in memory on master and agent processes. Therefore,
+     * labels should be used to tag TaskStatus message with light-weight
+     * meta-data.  Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.LabelsOrBuilder getLabelsOrBuilder();
+
+    // optional .mesos.v1.ContainerStatus container_status = 13;
+    /**
+     * <code>optional .mesos.v1.ContainerStatus container_status = 13;</code>
+     *
+     * <pre>
+     * Container related information that is resolved dynamically such as
+     * network address.
+     * </pre>
+     */
+    boolean hasContainerStatus();
+    /**
+     * <code>optional .mesos.v1.ContainerStatus container_status = 13;</code>
+     *
+     * <pre>
+     * Container related information that is resolved dynamically such as
+     * network address.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.ContainerStatus getContainerStatus();
+    /**
+     * <code>optional .mesos.v1.ContainerStatus container_status = 13;</code>
+     *
+     * <pre>
+     * Container related information that is resolved dynamically such as
+     * network address.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.ContainerStatusOrBuilder getContainerStatusOrBuilder();
+
+    // optional .mesos.v1.TimeInfo unreachable_time = 14;
+    /**
+     * <code>optional .mesos.v1.TimeInfo unreachable_time = 14;</code>
+     *
+     * <pre>
+     * The time (according to the master's clock) when the agent where
+     * this task was running became unreachable. This is only set on
+     * status updates for tasks running on agents that are unreachable
+     * (e.g., partitioned away from the master).
+     * </pre>
+     */
+    boolean hasUnreachableTime();
+    /**
+     * <code>optional .mesos.v1.TimeInfo unreachable_time = 14;</code>
+     *
+     * <pre>
+     * The time (according to the master's clock) when the agent where
+     * this task was running became unreachable. This is only set on
+     * status updates for tasks running on agents that are unreachable
+     * (e.g., partitioned away from the master).
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.TimeInfo getUnreachableTime();
+    /**
+     * <code>optional .mesos.v1.TimeInfo unreachable_time = 14;</code>
+     *
+     * <pre>
+     * The time (according to the master's clock) when the agent where
+     * this task was running became unreachable. This is only set on
+     * status updates for tasks running on agents that are unreachable
+     * (e.g., partitioned away from the master).
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.TimeInfoOrBuilder getUnreachableTimeOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.TaskStatus}
+   *
+   * <pre>
+   **
+   * Describes the current status of a task.
+   * </pre>
+   */
+  public static final class TaskStatus extends
+      com.google.protobuf.GeneratedMessage
+      implements TaskStatusOrBuilder {
+    // Use TaskStatus.newBuilder() to construct.
+    private TaskStatus(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private TaskStatus(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final TaskStatus defaultInstance;
+    public static TaskStatus getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public TaskStatus getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private TaskStatus(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              org.apache.mesos.v1.Protos.TaskID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                subBuilder = taskId_.toBuilder();
+              }
+              taskId_ = input.readMessage(org.apache.mesos.v1.Protos.TaskID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(taskId_);
+                taskId_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+            case 16: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.v1.Protos.TaskState value = org.apache.mesos.v1.Protos.TaskState.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(2, rawValue);
+              } else {
+                bitField0_ |= 0x00000002;
+                state_ = value;
+              }
+              break;
+            }
+            case 26: {
+              bitField0_ |= 0x00000020;
+              data_ = input.readBytes();
+              break;
+            }
+            case 34: {
+              bitField0_ |= 0x00000004;
+              message_ = input.readBytes();
+              break;
+            }
+            case 42: {
+              org.apache.mesos.v1.Protos.AgentID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000040) == 0x00000040)) {
+                subBuilder = agentId_.toBuilder();
+              }
+              agentId_ = input.readMessage(org.apache.mesos.v1.Protos.AgentID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(agentId_);
+                agentId_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000040;
+              break;
+            }
+            case 49: {
+              bitField0_ |= 0x00000100;
+              timestamp_ = input.readDouble();
+              break;
+            }
+            case 58: {
+              org.apache.mesos.v1.Protos.ExecutorID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000080) == 0x00000080)) {
+                subBuilder = executorId_.toBuilder();
+              }
+              executorId_ = input.readMessage(org.apache.mesos.v1.Protos.ExecutorID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(executorId_);
+                executorId_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000080;
+              break;
+            }
+            case 64: {
+              bitField0_ |= 0x00000400;
+              healthy_ = input.readBool();
+              break;
+            }
+            case 72: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.v1.Protos.TaskStatus.Source value = org.apache.mesos.v1.Protos.TaskStatus.Source.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(9, rawValue);
+              } else {
+                bitField0_ |= 0x00000008;
+                source_ = value;
+              }
+              break;
+            }
+            case 80: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.v1.Protos.TaskStatus.Reason value = org.apache.mesos.v1.Protos.TaskStatus.Reason.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(10, rawValue);
+              } else {
+                bitField0_ |= 0x00000010;
+                reason_ = value;
+              }
+              break;
+            }
+            case 90: {
+              bitField0_ |= 0x00000200;
+              uuid_ = input.readBytes();
+              break;
+            }
+            case 98: {
+              org.apache.mesos.v1.Protos.Labels.Builder subBuilder = null;
+              if (((bitField0_ & 0x00001000) == 0x00001000)) {
+                subBuilder = labels_.toBuilder();
+              }
+              labels_ = input.readMessage(org.apache.mesos.v1.Protos.Labels.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(labels_);
+                labels_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00001000;
+              break;
+            }
+            case 106: {
+              org.apache.mesos.v1.Protos.ContainerStatus.Builder subBuilder = null;
+              if (((bitField0_ & 0x00002000) == 0x00002000)) {
+                subBuilder = containerStatus_.toBuilder();
+              }
+              containerStatus_ = input.readMessage(org.apache.mesos.v1.Protos.ContainerStatus.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(containerStatus_);
+                containerStatus_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00002000;
+              break;
+            }
+            case 114: {
+              org.apache.mesos.v1.Protos.TimeInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00004000) == 0x00004000)) {
+                subBuilder = unreachableTime_.toBuilder();
+              }
+              unreachableTime_ = input.readMessage(org.apache.mesos.v1.Protos.TimeInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(unreachableTime_);
+                unreachableTime_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00004000;
+              break;
+            }
+            case 122: {
+              org.apache.mesos.v1.Protos.CheckStatusInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000800) == 0x00000800)) {
+                subBuilder = checkStatus_.toBuilder();
+              }
+              checkStatus_ = input.readMessage(org.apache.mesos.v1.Protos.CheckStatusInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(checkStatus_);
+                checkStatus_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000800;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TaskStatus_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TaskStatus_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.TaskStatus.class, org.apache.mesos.v1.Protos.TaskStatus.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<TaskStatus> PARSER =
+        new com.google.protobuf.AbstractParser<TaskStatus>() {
+      public TaskStatus parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new TaskStatus(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<TaskStatus> getParserForType() {
+      return PARSER;
+    }
+
+    /**
+     * Protobuf enum {@code mesos.v1.TaskStatus.Source}
+     *
+     * <pre>
+     * Describes the source of the task status update.
+     * </pre>
+     */
+    public enum Source
+        implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>SOURCE_MASTER = 0;</code>
+       */
+      SOURCE_MASTER(0, 0),
+      /**
+       * <code>SOURCE_AGENT = 1;</code>
+       */
+      SOURCE_AGENT(1, 1),
+      /**
+       * <code>SOURCE_EXECUTOR = 2;</code>
+       */
+      SOURCE_EXECUTOR(2, 2),
+      ;
+
+      /**
+       * <code>SOURCE_MASTER = 0;</code>
+       */
+      public static final int SOURCE_MASTER_VALUE = 0;
+      /**
+       * <code>SOURCE_AGENT = 1;</code>
+       */
+      public static final int SOURCE_AGENT_VALUE = 1;
+      /**
+       * <code>SOURCE_EXECUTOR = 2;</code>
+       */
+      public static final int SOURCE_EXECUTOR_VALUE = 2;
+
+
+      public final int getNumber() { return value; }
+
+      public static Source valueOf(int value) {
+        switch (value) {
+          case 0: return SOURCE_MASTER;
+          case 1: return SOURCE_AGENT;
+          case 2: return SOURCE_EXECUTOR;
+          default: return null;
+        }
+      }
+
+      public static com.google.protobuf.Internal.EnumLiteMap<Source>
+          internalGetValueMap() {
+        return internalValueMap;
+      }
+      private static com.google.protobuf.Internal.EnumLiteMap<Source>
+          internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap<Source>() {
+              public Source findValueByNumber(int number) {
+                return Source.valueOf(number);
+              }
+            };
+
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
+          getValueDescriptor() {
+        return getDescriptor().getValues().get(index);
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptorForType() {
+        return getDescriptor();
+      }
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.TaskStatus.getDescriptor().getEnumTypes().get(0);
+      }
+
+      private static final Source[] VALUES = values();
+
+      public static Source valueOf(
+          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+        if (desc.getType() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "EnumValueDescriptor is not for this type.");
+        }
+        return VALUES[desc.getIndex()];
+      }
+
+      private final int index;
+      private final int value;
+
+      private Source(int index, int value) {
+        this.index = index;
+        this.value = value;
+      }
+
+      // @@protoc_insertion_point(enum_scope:mesos.v1.TaskStatus.Source)
+    }
+
+    /**
+     * Protobuf enum {@code mesos.v1.TaskStatus.Reason}
+     *
+     * <pre>
+     * Detailed reason for the task status update.
+     *
+     * TODO(bmahler): Differentiate between agent removal reasons
+     * (e.g. unhealthy vs. unregistered for maintenance).
+     * </pre>
+     */
+    public enum Reason
+        implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>REASON_COMMAND_EXECUTOR_FAILED = 0;</code>
+       *
+       * <pre>
+       * TODO(jieyu): The default value when a caller doesn't check for
+       * presence is 0 and so ideally the 0 reason is not a valid one.
+       * Since this is not used anywhere, consider removing this reason.
+       * </pre>
+       */
+      REASON_COMMAND_EXECUTOR_FAILED(0, 0),
+      /**
+       * <code>REASON_CONTAINER_LAUNCH_FAILED = 21;</code>
+       */
+      REASON_CONTAINER_LAUNCH_FAILED(1, 21),
+      /**
+       * <code>REASON_CONTAINER_LIMITATION = 19;</code>
+       */
+      REASON_CONTAINER_LIMITATION(2, 19),
+      /**
+       * <code>REASON_CONTAINER_LIMITATION_DISK = 20;</code>
+       */
+      REASON_CONTAINER_LIMITATION_DISK(3, 20),
+      /**
+       * <code>REASON_CONTAINER_LIMITATION_MEMORY = 8;</code>
+       */
+      REASON_CONTAINER_LIMITATION_MEMORY(4, 8),
+      /**
+       * <code>REASON_CONTAINER_PREEMPTED = 17;</code>
+       */
+      REASON_CONTAINER_PREEMPTED(5, 17),
+      /**
+       * <code>REASON_CONTAINER_UPDATE_FAILED = 22;</code>
+       */
+      REASON_CONTAINER_UPDATE_FAILED(6, 22),
+      /**
+       * <code>REASON_EXECUTOR_REGISTRATION_TIMEOUT = 23;</code>
+       */
+      REASON_EXECUTOR_REGISTRATION_TIMEOUT(7, 23),
+      /**
+       * <code>REASON_EXECUTOR_REREGISTRATION_TIMEOUT = 24;</code>
+       */
+      REASON_EXECUTOR_REREGISTRATION_TIMEOUT(8, 24),
+      /**
+       * <code>REASON_EXECUTOR_TERMINATED = 1;</code>
+       */
+      REASON_EXECUTOR_TERMINATED(9, 1),
+      /**
+       * <code>REASON_EXECUTOR_UNREGISTERED = 2;</code>
+       *
+       * <pre>
+       * No longer used.
+       * </pre>
+       */
+      REASON_EXECUTOR_UNREGISTERED(10, 2),
+      /**
+       * <code>REASON_FRAMEWORK_REMOVED = 3;</code>
+       */
+      REASON_FRAMEWORK_REMOVED(11, 3),
+      /**
+       * <code>REASON_GC_ERROR = 4;</code>
+       */
+      REASON_GC_ERROR(12, 4),
+      /**
+       * <code>REASON_INVALID_FRAMEWORKID = 5;</code>
+       */
+      REASON_INVALID_FRAMEWORKID(13, 5),
+      /**
+       * <code>REASON_INVALID_OFFERS = 6;</code>
+       */
+      REASON_INVALID_OFFERS(14, 6),
+      /**
+       * <code>REASON_IO_SWITCHBOARD_EXITED = 27;</code>
+       */
+      REASON_IO_SWITCHBOARD_EXITED(15, 27),
+      /**
+       * <code>REASON_MASTER_DISCONNECTED = 7;</code>
+       */
+      REASON_MASTER_DISCONNECTED(16, 7),
+      /**
+       * <code>REASON_RECONCILIATION = 9;</code>
+       */
+      REASON_RECONCILIATION(17, 9),
+      /**
+       * <code>REASON_RESOURCES_UNKNOWN = 18;</code>
+       */
+      REASON_RESOURCES_UNKNOWN(18, 18),
+      /**
+       * <code>REASON_AGENT_DISCONNECTED = 10;</code>
+       */
+      REASON_AGENT_DISCONNECTED(19, 10),
+      /**
+       * <code>REASON_AGENT_REMOVED = 11;</code>
+       */
+      REASON_AGENT_REMOVED(20, 11),
+      /**
+       * <code>REASON_AGENT_RESTARTED = 12;</code>
+       */
+      REASON_AGENT_RESTARTED(21, 12),
+      /**
+       * <code>REASON_AGENT_UNKNOWN = 13;</code>
+       */
+      REASON_AGENT_UNKNOWN(22, 13),
+      /**
+       * <code>REASON_TASK_KILLED_DURING_LAUNCH = 30;</code>
+       */
+      REASON_TASK_KILLED_DURING_LAUNCH(23, 30),
+      /**
+       * <code>REASON_TASK_CHECK_STATUS_UPDATED = 28;</code>
+       */
+      REASON_TASK_CHECK_STATUS_UPDATED(24, 28),
+      /**
+       * <code>REASON_TASK_HEALTH_CHECK_STATUS_UPDATED = 29;</code>
+       */
+      REASON_TASK_HEALTH_CHECK_STATUS_UPDATED(25, 29),
+      /**
+       * <code>REASON_TASK_GROUP_INVALID = 25;</code>
+       */
+      REASON_TASK_GROUP_INVALID(26, 25),
+      /**
+       * <code>REASON_TASK_GROUP_UNAUTHORIZED = 26;</code>
+       */
+      REASON_TASK_GROUP_UNAUTHORIZED(27, 26),
+      /**
+       * <code>REASON_TASK_INVALID = 14;</code>
+       */
+      REASON_TASK_INVALID(28, 14),
+      /**
+       * <code>REASON_TASK_UNAUTHORIZED = 15;</code>
+       */
+      REASON_TASK_UNAUTHORIZED(29, 15),
+      /**
+       * <code>REASON_TASK_UNKNOWN = 16;</code>
+       */
+      REASON_TASK_UNKNOWN(30, 16),
+      ;
+
+      /**
+       * <code>REASON_COMMAND_EXECUTOR_FAILED = 0;</code>
+       *
+       * <pre>
+       * TODO(jieyu): The default value when a caller doesn't check for
+       * presence is 0 and so ideally the 0 reason is not a valid one.
+       * Since this is not used anywhere, consider removing this reason.
+       * </pre>
+       */
+      public static final int REASON_COMMAND_EXECUTOR_FAILED_VALUE = 0;
+      /**
+       * <code>REASON_CONTAINER_LAUNCH_FAILED = 21;</code>
+       */
+      public static final int REASON_CONTAINER_LAUNCH_FAILED_VALUE = 21;
+      /**
+       * <code>REASON_CONTAINER_LIMITATION = 19;</code>
+       */
+      public static final int REASON_CONTAINER_LIMITATION_VALUE = 19;
+      /**
+       * <code>REASON_CONTAINER_LIMITATION_DISK = 20;</code>
+       */
+      public static final int REASON_CONTAINER_LIMITATION_DISK_VALUE = 20;
+      /**
+       * <code>REASON_CONTAINER_LIMITATION_MEMORY = 8;</code>
+       */
+      public static final int REASON_CONTAINER_LIMITATION_MEMORY_VALUE = 8;
+      /**
+       * <code>REASON_CONTAINER_PREEMPTED = 17;</code>
+       */
+      public static final int REASON_CONTAINER_PREEMPTED_VALUE = 17;
+      /**
+       * <code>REASON_CONTAINER_UPDATE_FAILED = 22;</code>
+       */
+      public static final int REASON_CONTAINER_UPDATE_FAILED_VALUE = 22;
+      /**
+       * <code>REASON_EXECUTOR_REGISTRATION_TIMEOUT = 23;</code>
+       */
+      public static final int REASON_EXECUTOR_REGISTRATION_TIMEOUT_VALUE = 23;
+      /**
+       * <code>REASON_EXECUTOR_REREGISTRATION_TIMEOUT = 24;</code>
+       */
+      public static final int REASON_EXECUTOR_REREGISTRATION_TIMEOUT_VALUE = 24;
+      /**
+       * <code>REASON_EXECUTOR_TERMINATED = 1;</code>
+       */
+      public static final int REASON_EXECUTOR_TERMINATED_VALUE = 1;
+      /**
+       * <code>REASON_EXECUTOR_UNREGISTERED = 2;</code>
+       *
+       * <pre>
+       * No longer used.
+       * </pre>
+       */
+      public static final int REASON_EXECUTOR_UNREGISTERED_VALUE = 2;
+      /**
+       * <code>REASON_FRAMEWORK_REMOVED = 3;</code>
+       */
+      public static final int REASON_FRAMEWORK_REMOVED_VALUE = 3;
+      /**
+       * <code>REASON_GC_ERROR = 4;</code>
+       */
+      public static final int REASON_GC_ERROR_VALUE = 4;
+      /**
+       * <code>REASON_INVALID_FRAMEWORKID = 5;</code>
+       */
+      public static final int REASON_INVALID_FRAMEWORKID_VALUE = 5;
+      /**
+       * <code>REASON_INVALID_OFFERS = 6;</code>
+       */
+      public static final int REASON_INVALID_OFFERS_VALUE = 6;
+      /**
+       * <code>REASON_IO_SWITCHBOARD_EXITED = 27;</code>
+       */
+      public static final int REASON_IO_SWITCHBOARD_EXITED_VALUE = 27;
+      /**
+       * <code>REASON_MASTER_DISCONNECTED = 7;</code>
+       */
+      public static final int REASON_MASTER_DISCONNECTED_VALUE = 7;
+      /**
+       * <code>REASON_RECONCILIATION = 9;</code>
+       */
+      public static final int REASON_RECONCILIATION_VALUE = 9;
+      /**
+       * <code>REASON_RESOURCES_UNKNOWN = 18;</code>
+       */
+      public static final int REASON_RESOURCES_UNKNOWN_VALUE = 18;
+      /**
+       * <code>REASON_AGENT_DISCONNECTED = 10;</code>
+       */
+      public static final int REASON_AGENT_DISCONNECTED_VALUE = 10;
+      /**
+       * <code>REASON_AGENT_REMOVED = 11;</code>
+       */
+      public static final int REASON_AGENT_REMOVED_VALUE = 11;
+      /**
+       * <code>REASON_AGENT_RESTARTED = 12;</code>
+       */
+      public static final int REASON_AGENT_RESTARTED_VALUE = 12;
+      /**
+       * <code>REASON_AGENT_UNKNOWN = 13;</code>
+       */
+      public static final int REASON_AGENT_UNKNOWN_VALUE = 13;
+      /**
+       * <code>REASON_TASK_KILLED_DURING_LAUNCH = 30;</code>
+       */
+      public static final int REASON_TASK_KILLED_DURING_LAUNCH_VALUE = 30;
+      /**
+       * <code>REASON_TASK_CHECK_STATUS_UPDATED = 28;</code>
+       */
+      public static final int REASON_TASK_CHECK_STATUS_UPDATED_VALUE = 28;
+      /**
+       * <code>REASON_TASK_HEALTH_CHECK_STATUS_UPDATED = 29;</code>
+       */
+      public static final int REASON_TASK_HEALTH_CHECK_STATUS_UPDATED_VALUE = 29;
+      /**
+       * <code>REASON_TASK_GROUP_INVALID = 25;</code>
+       */
+      public static final int REASON_TASK_GROUP_INVALID_VALUE = 25;
+      /**
+       * <code>REASON_TASK_GROUP_UNAUTHORIZED = 26;</code>
+       */
+      public static final int REASON_TASK_GROUP_UNAUTHORIZED_VALUE = 26;
+      /**
+       * <code>REASON_TASK_INVALID = 14;</code>
+       */
+      public static final int REASON_TASK_INVALID_VALUE = 14;
+      /**
+       * <code>REASON_TASK_UNAUTHORIZED = 15;</code>
+       */
+      public static final int REASON_TASK_UNAUTHORIZED_VALUE = 15;
+      /**
+       * <code>REASON_TASK_UNKNOWN = 16;</code>
+       */
+      public static final int REASON_TASK_UNKNOWN_VALUE = 16;
+
+
+      public final int getNumber() { return value; }
+
+      public static Reason valueOf(int value) {
+        switch (value) {
+          case 0: return REASON_COMMAND_EXECUTOR_FAILED;
+          case 21: return REASON_CONTAINER_LAUNCH_FAILED;
+          case 19: return REASON_CONTAINER_LIMITATION;
+          case 20: return REASON_CONTAINER_LIMITATION_DISK;
+          case 8: return REASON_CONTAINER_LIMITATION_MEMORY;
+          case 17: return REASON_CONTAINER_PREEMPTED;
+          case 22: return REASON_CONTAINER_UPDATE_FAILED;
+          case 23: return REASON_EXECUTOR_REGISTRATION_TIMEOUT;
+          case 24: return REASON_EXECUTOR_REREGISTRATION_TIMEOUT;
+          case 1: return REASON_EXECUTOR_TERMINATED;
+          case 2: return REASON_EXECUTOR_UNREGISTERED;
+          case 3: return REASON_FRAMEWORK_REMOVED;
+          case 4: return REASON_GC_ERROR;
+          case 5: return REASON_INVALID_FRAMEWORKID;
+          case 6: return REASON_INVALID_OFFERS;
+          case 27: return REASON_IO_SWITCHBOARD_EXITED;
+          case 7: return REASON_MASTER_DISCONNECTED;
+          case 9: return REASON_RECONCILIATION;
+          case 18: return REASON_RESOURCES_UNKNOWN;
+          case 10: return REASON_AGENT_DISCONNECTED;
+          case 11: return REASON_AGENT_REMOVED;
+          case 12: return REASON_AGENT_RESTARTED;
+          case 13: return REASON_AGENT_UNKNOWN;
+          case 30: return REASON_TASK_KILLED_DURING_LAUNCH;
+          case 28: return REASON_TASK_CHECK_STATUS_UPDATED;
+          case 29: return REASON_TASK_HEALTH_CHECK_STATUS_UPDATED;
+          case 25: return REASON_TASK_GROUP_INVALID;
+          case 26: return REASON_TASK_GROUP_UNAUTHORIZED;
+          case 14: return REASON_TASK_INVALID;
+          case 15: return REASON_TASK_UNAUTHORIZED;
+          case 16: return REASON_TASK_UNKNOWN;
+          default: return null;
+        }
+      }
+
+      public static com.google.protobuf.Internal.EnumLiteMap<Reason>
+          internalGetValueMap() {
+        return internalValueMap;
+      }
+      private static com.google.protobuf.Internal.EnumLiteMap<Reason>
+          internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap<Reason>() {
+              public Reason findValueByNumber(int number) {
+                return Reason.valueOf(number);
+              }
+            };
+
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
+          getValueDescriptor() {
+        return getDescriptor().getValues().get(index);
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptorForType() {
+        return getDescriptor();
+      }
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.TaskStatus.getDescriptor().getEnumTypes().get(1);
+      }
+
+      private static final Reason[] VALUES = values();
+
+      public static Reason valueOf(
+          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+        if (desc.getType() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "EnumValueDescriptor is not for this type.");
+        }
+        return VALUES[desc.getIndex()];
+      }
+
+      private final int index;
+      private final int value;
+
+      private Reason(int index, int value) {
+        this.index = index;
+        this.value = value;
+      }
+
+      // @@protoc_insertion_point(enum_scope:mesos.v1.TaskStatus.Reason)
+    }
+
+    private int bitField0_;
+    // required .mesos.v1.TaskID task_id = 1;
+    public static final int TASK_ID_FIELD_NUMBER = 1;
+    private org.apache.mesos.v1.Protos.TaskID taskId_;
+    /**
+     * <code>required .mesos.v1.TaskID task_id = 1;</code>
+     */
+    public boolean hasTaskId() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required .mesos.v1.TaskID task_id = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.TaskID getTaskId() {
+      return taskId_;
+    }
+    /**
+     * <code>required .mesos.v1.TaskID task_id = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.TaskIDOrBuilder getTaskIdOrBuilder() {
+      return taskId_;
+    }
+
+    // required .mesos.v1.TaskState state = 2;
+    public static final int STATE_FIELD_NUMBER = 2;
+    private org.apache.mesos.v1.Protos.TaskState state_;
+    /**
+     * <code>required .mesos.v1.TaskState state = 2;</code>
+     */
+    public boolean hasState() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>required .mesos.v1.TaskState state = 2;</code>
+     */
+    public org.apache.mesos.v1.Protos.TaskState getState() {
+      return state_;
+    }
+
+    // optional string message = 4;
+    public static final int MESSAGE_FIELD_NUMBER = 4;
+    private java.lang.Object message_;
+    /**
+     * <code>optional string message = 4;</code>
+     *
+     * <pre>
+     * Possible message explaining state.
+     * </pre>
+     */
+    public boolean hasMessage() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional string message = 4;</code>
+     *
+     * <pre>
+     * Possible message explaining state.
+     * </pre>
+     */
+    public java.lang.String getMessage() {
+      java.lang.Object ref = message_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          message_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string message = 4;</code>
+     *
+     * <pre>
+     * Possible message explaining state.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getMessageBytes() {
+      java.lang.Object ref = message_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        message_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional .mesos.v1.TaskStatus.Source source = 9;
+    public static final int SOURCE_FIELD_NUMBER = 9;
+    private org.apache.mesos.v1.Protos.TaskStatus.Source source_;
+    /**
+     * <code>optional .mesos.v1.TaskStatus.Source source = 9;</code>
+     */
+    public boolean hasSource() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional .mesos.v1.TaskStatus.Source source = 9;</code>
+     */
+    public org.apache.mesos.v1.Protos.TaskStatus.Source getSource() {
+      return source_;
+    }
+
+    // optional .mesos.v1.TaskStatus.Reason reason = 10;
+    public static final int REASON_FIELD_NUMBER = 10;
+    private org.apache.mesos.v1.Protos.TaskStatus.Reason reason_;
+    /**
+     * <code>optional .mesos.v1.TaskStatus.Reason reason = 10;</code>
+     */
+    public boolean hasReason() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional .mesos.v1.TaskStatus.Reason reason = 10;</code>
+     */
+    public org.apache.mesos.v1.Protos.TaskStatus.Reason getReason() {
+      return reason_;
+    }
+
+    // optional bytes data = 3;
+    public static final int DATA_FIELD_NUMBER = 3;
+    private com.google.protobuf.ByteString data_;
+    /**
+     * <code>optional bytes data = 3;</code>
+     */
+    public boolean hasData() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional bytes data = 3;</code>
+     */
+    public com.google.protobuf.ByteString getData() {
+      return data_;
+    }
+
+    // optional .mesos.v1.AgentID agent_id = 5;
+    public static final int AGENT_ID_FIELD_NUMBER = 5;
+    private org.apache.mesos.v1.Protos.AgentID agentId_;
+    /**
+     * <code>optional .mesos.v1.AgentID agent_id = 5;</code>
+     */
+    public boolean hasAgentId() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional .mesos.v1.AgentID agent_id = 5;</code>
+     */
+    public org.apache.mesos.v1.Protos.AgentID getAgentId() {
+      return agentId_;
+    }
+    /**
+     * <code>optional .mesos.v1.AgentID agent_id = 5;</code>
+     */
+    public org.apache.mesos.v1.Protos.AgentIDOrBuilder getAgentIdOrBuilder() {
+      return agentId_;
+    }
+
+    // optional .mesos.v1.ExecutorID executor_id = 7;
+    public static final int EXECUTOR_ID_FIELD_NUMBER = 7;
+    private org.apache.mesos.v1.Protos.ExecutorID executorId_;
+    /**
+     * <code>optional .mesos.v1.ExecutorID executor_id = 7;</code>
+     *
+     * <pre>
+     * TODO(benh): Use in master/agent.
+     * </pre>
+     */
+    public boolean hasExecutorId() {
+      return ((bitField0_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional .mesos.v1.ExecutorID executor_id = 7;</code>
+     *
+     * <pre>
+     * TODO(benh): Use in master/agent.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.ExecutorID getExecutorId() {
+      return executorId_;
+    }
+    /**
+     * <code>optional .mesos.v1.ExecutorID executor_id = 7;</code>
+     *
+     * <pre>
+     * TODO(benh): Use in master/agent.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder() {
+      return executorId_;
+    }
+
+    // optional double timestamp = 6;
+    public static final int TIMESTAMP_FIELD_NUMBER = 6;
+    private double timestamp_;
+    /**
+     * <code>optional double timestamp = 6;</code>
+     */
+    public boolean hasTimestamp() {
+      return ((bitField0_ & 0x00000100) == 0x00000100);
+    }
+    /**
+     * <code>optional double timestamp = 6;</code>
+     */
+    public double getTimestamp() {
+      return timestamp_;
+    }
+
+    // optional bytes uuid = 11;
+    public static final int UUID_FIELD_NUMBER = 11;
+    private com.google.protobuf.ByteString uuid_;
+    /**
+     * <code>optional bytes uuid = 11;</code>
+     *
+     * <pre>
+     * Statuses that are delivered reliably to the scheduler will
+     * include a 'uuid'. The status is considered delivered once
+     * it is acknowledged by the scheduler. Schedulers can choose
+     * to either explicitly acknowledge statuses or let the scheduler
+     * driver implicitly acknowledge (default).
+     *
+     * TODO(bmahler): This is currently overwritten in the scheduler
+     * driver and executor driver, but executors will need to set this
+     * to a valid RFC-4122 UUID if using the HTTP API.
+     * </pre>
+     */
+    public boolean hasUuid() {
+      return ((bitField0_ & 0x00000200) == 0x00000200);
+    }
+    /**
+     * <code>optional bytes uuid = 11;</code>
+     *
+     * <pre>
+     * Statuses that are delivered reliably to the scheduler will
+     * include a 'uuid'. The status is considered delivered once
+     * it is acknowledged by the scheduler. Schedulers can choose
+     * to either explicitly acknowledge statuses or let the scheduler
+     * driver implicitly acknowledge (default).
+     *
+     * TODO(bmahler): This is currently overwritten in the scheduler
+     * driver and executor driver, but executors will need to set this
+     * to a valid RFC-4122 UUID if using the HTTP API.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString getUuid() {
+      return uuid_;
+    }
+
+    // optional bool healthy = 8;
+    public static final int HEALTHY_FIELD_NUMBER = 8;
+    private boolean healthy_;
+    /**
+     * <code>optional bool healthy = 8;</code>
+     *
+     * <pre>
+     * Describes whether the task has been determined to be healthy (true) or
+     * unhealthy (false) according to the `health_check` field in `TaskInfo`.
+     * </pre>
+     */
+    public boolean hasHealthy() {
+      return ((bitField0_ & 0x00000400) == 0x00000400);
+    }
+    /**
+     * <code>optional bool healthy = 8;</code>
+     *
+     * <pre>
+     * Describes whether the task has been determined to be healthy (true) or
+     * unhealthy (false) according to the `health_check` field in `TaskInfo`.
+     * </pre>
+     */
+    public boolean getHealthy() {
+      return healthy_;
+    }
+
+    // optional .mesos.v1.CheckStatusInfo check_status = 15;
+    public static final int CHECK_STATUS_FIELD_NUMBER = 15;
+    private org.apache.mesos.v1.Protos.CheckStatusInfo checkStatus_;
+    /**
+     * <code>optional .mesos.v1.CheckStatusInfo check_status = 15;</code>
+     *
+     * <pre>
+     * Contains check status for the check specified in the corresponding
+     * `TaskInfo`. If no check has been specified, this field must be
+     * absent, otherwise it must be present even if the check status is
+     * not available yet. If the status update is triggered for a different
+     * reason than `REASON_TASK_CHECK_STATUS_UPDATED`, this field will contain
+     * the last known value.
+     *
+     * NOTE: A check-related task status update is triggered if and only if
+     * the value or presence of any field in `CheckStatusInfo` changes.
+     *
+     * NOTE: Check support in built-in executors is experimental.
+     * </pre>
+     */
+    public boolean hasCheckStatus() {
+      return ((bitField0_ & 0x00000800) == 0x00000800);
+    }
+    /**
+     * <code>optional .mesos.v1.CheckStatusInfo check_status = 15;</code>
+     *
+     * <pre>
+     * Contains check status for the check specified in the corresponding
+     * `TaskInfo`. If no check has been specified, this field must be
+     * absent, otherwise it must be present even if the check status is
+     * not available yet. If the status update is triggered for a different
+     * reason than `REASON_TASK_CHECK_STATUS_UPDATED`, this field will contain
+     * the last known value.
+     *
+     * NOTE: A check-related task status update is triggered if and only if
+     * the value or presence of any field in `CheckStatusInfo` changes.
+     *
+     * NOTE: Check support in built-in executors is experimental.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.CheckStatusInfo getCheckStatus() {
+      return checkStatus_;
+    }
+    /**
+     * <code>optional .mesos.v1.CheckStatusInfo check_status = 15;</code>
+     *
+     * <pre>
+     * Contains check status for the check specified in the corresponding
+     * `TaskInfo`. If no check has been specified, this field must be
+     * absent, otherwise it must be present even if the check status is
+     * not available yet. If the status update is triggered for a different
+     * reason than `REASON_TASK_CHECK_STATUS_UPDATED`, this field will contain
+     * the last known value.
+     *
+     * NOTE: A check-related task status update is triggered if and only if
+     * the value or presence of any field in `CheckStatusInfo` changes.
+     *
+     * NOTE: Check support in built-in executors is experimental.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.CheckStatusInfoOrBuilder getCheckStatusOrBuilder() {
+      return checkStatus_;
+    }
+
+    // optional .mesos.v1.Labels labels = 12;
+    public static final int LABELS_FIELD_NUMBER = 12;
+    private org.apache.mesos.v1.Protos.Labels labels_;
+    /**
+     * <code>optional .mesos.v1.Labels labels = 12;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs which are exposed through
+     * master and agent endpoints. Labels will not be interpreted or
+     * acted upon by Mesos itself. As opposed to the data field, labels
+     * will be kept in memory on master and agent processes. Therefore,
+     * labels should be used to tag TaskStatus message with light-weight
+     * meta-data.  Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    public boolean hasLabels() {
+      return ((bitField0_ & 0x00001000) == 0x00001000);
+    }
+    /**
+     * <code>optional .mesos.v1.Labels labels = 12;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs which are exposed through
+     * master and agent endpoints. Labels will not be interpreted or
+     * acted upon by Mesos itself. As opposed to the data field, labels
+     * will be kept in memory on master and agent processes. Therefore,
+     * labels should be used to tag TaskStatus message with light-weight
+     * meta-data.  Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.Labels getLabels() {
+      return labels_;
+    }
+    /**
+     * <code>optional .mesos.v1.Labels labels = 12;</code>
+     *
+     * <pre>
+     * Labels are free-form key value pairs which are exposed through
+     * master and agent endpoints. Labels will not be interpreted or
+     * acted upon by Mesos itself. As opposed to the data field, labels
+     * will be kept in memory on master and agent processes. Therefore,
+     * labels should be used to tag TaskStatus message with light-weight
+     * meta-data.  Labels should not contain duplicate key-value pairs.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+      return labels_;
+    }
+
+    // optional .mesos.v1.ContainerStatus container_status = 13;
+    public static final int CONTAINER_STATUS_FIELD_NUMBER = 13;
+    private org.apache.mesos.v1.Protos.ContainerStatus containerStatus_;
+    /**
+     * <code>optional .mesos.v1.ContainerStatus container_status = 13;</code>
+     *
+     * <pre>
+     * Container related information that is resolved dynamically such as
+     * network address.
+     * </pre>
+     */
+    public boolean hasContainerStatus() {
+      return ((bitField0_ & 0x00002000) == 0x00002000);
+    }
+    /**
+     * <code>optional .mesos.v1.ContainerStatus container_status = 13;</code>
+     *
+     * <pre>
+     * Container related information that is resolved dynamically such as
+     * network address.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.ContainerStatus getContainerStatus() {
+      return containerStatus_;
+    }
+    /**
+     * <code>optional .mesos.v1.ContainerStatus container_status = 13;</code>
+     *
+     * <pre>
+     * Container related information that is resolved dynamically such as
+     * network address.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.ContainerStatusOrBuilder getContainerStatusOrBuilder() {
+      return containerStatus_;
+    }
+
+    // optional .mesos.v1.TimeInfo unreachable_time = 14;
+    public static final int UNREACHABLE_TIME_FIELD_NUMBER = 14;
+    private org.apache.mesos.v1.Protos.TimeInfo unreachableTime_;
+    /**
+     * <code>optional .mesos.v1.TimeInfo unreachable_time = 14;</code>
+     *
+     * <pre>
+     * The time (according to the master's clock) when the agent where
+     * this task was running became unreachable. This is only set on
+     * status updates for tasks running on agents that are unreachable
+     * (e.g., partitioned away from the master).
+     * </pre>
+     */
+    public boolean hasUnreachableTime() {
+      return ((bitField0_ & 0x00004000) == 0x00004000);
+    }
+    /**
+     * <code>optional .mesos.v1.TimeInfo unreachable_time = 14;</code>
+     *
+     * <pre>
+     * The time (according to the master's clock) when the agent where
+     * this task was running became unreachable. This is only set on
+     * status updates for tasks running on agents that are unreachable
+     * (e.g., partitioned away from the master).
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.TimeInfo getUnreachableTime() {
+      return unreachableTime_;
+    }
+    /**
+     * <code>optional .mesos.v1.TimeInfo unreachable_time = 14;</code>
+     *
+     * <pre>
+     * The time (according to the master's clock) when the agent where
+     * this task was running became unreachable. This is only set on
+     * status updates for tasks running on agents that are unreachable
+     * (e.g., partitioned away from the master).
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.TimeInfoOrBuilder getUnreachableTimeOrBuilder() {
+      return unreachableTime_;
+    }
+
+    private void initFields() {
+      taskId_ = org.apache.mesos.v1.Protos.TaskID.getDefaultInstance();
+      state_ = org.apache.mesos.v1.Protos.TaskState.TASK_STAGING;
+      message_ = "";
+      source_ = org.apache.mesos.v1.Protos.TaskStatus.Source.SOURCE_MASTER;
+      reason_ = org.apache.mesos.v1.Protos.TaskStatus.Reason.REASON_COMMAND_EXECUTOR_FAILED;
+      data_ = com.google.protobuf.ByteString.EMPTY;
+      agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+      executorId_ = org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance();
+      timestamp_ = 0D;
+      uuid_ = com.google.protobuf.ByteString.EMPTY;
+      healthy_ = false;
+      checkStatus_ = org.apache.mesos.v1.Protos.CheckStatusInfo.getDefaultInstance();
+      labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+      containerStatus_ = org.apache.mesos.v1.Protos.ContainerStatus.getDefaultInstance();
+      unreachableTime_ = org.apache.mesos.v1.Protos.TimeInfo.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasTaskId()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasState()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!getTaskId().isInitialized()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (hasAgentId()) {
+        if (!getAgentId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasExecutorId()) {
+        if (!getExecutorId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasLabels()) {
+        if (!getLabels().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasContainerStatus()) {
+        if (!getContainerStatus().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasUnreachableTime()) {
+        if (!getUnreachableTime().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeMessage(1, taskId_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeEnum(2, state_.getNumber());
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeBytes(3, data_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeBytes(4, getMessageBytes());
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeMessage(5, agentId_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        output.writeDouble(6, timestamp_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        output.writeMessage(7, executorId_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        output.writeBool(8, healthy_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeEnum(9, source_.getNumber());
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeEnum(10, reason_.getNumber());
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        output.writeBytes(11, uuid_);
+      }
+      if (((bitField0_ & 0x00001000) == 0x00001000)) {
+        output.writeMessage(12, labels_);
+      }
+      if (((bitField0_ & 0x00002000) == 0x00002000)) {
+        output.writeMessage(13, containerStatus_);
+      }
+      if (((bitField0_ & 0x00004000) == 0x00004000)) {
+        output.writeMessage(14, unreachableTime_);
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        output.writeMessage(15, checkStatus_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, taskId_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(2, state_.getNumber());
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(3, data_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(4, getMessageBytes());
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(5, agentId_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(6, timestamp_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(7, executorId_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(8, healthy_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(9, source_.getNumber());
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(10, reason_.getNumber());
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(11, uuid_);
+      }
+      if (((bitField0_ & 0x00001000) == 0x00001000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(12, labels_);
+      }
+      if (((bitField0_ & 0x00002000) == 0x00002000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(13, containerStatus_);
+      }
+      if (((bitField0_ & 0x00004000) == 0x00004000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(14, unreachableTime_);
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(15, checkStatus_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.TaskStatus parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.TaskStatus parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.TaskStatus parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.TaskStatus parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.TaskStatus parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.TaskStatus parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.TaskStatus parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.TaskStatus parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.TaskStatus parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.TaskStatus parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.TaskStatus prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.TaskStatus}
+     *
+     * <pre>
+     **
+     * Describes the current status of a task.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.TaskStatusOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TaskStatus_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TaskStatus_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.TaskStatus.class, org.apache.mesos.v1.Protos.TaskStatus.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.TaskStatus.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getTaskIdFieldBuilder();
+          getAgentIdFieldBuilder();
+          getExecutorIdFieldBuilder();
+          getCheckStatusFieldBuilder();
+          getLabelsFieldBuilder();
+          getContainerStatusFieldBuilder();
+          getUnreachableTimeFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (taskIdBuilder_ == null) {
+          taskId_ = org.apache.mesos.v1.Protos.TaskID.getDefaultInstance();
+        } else {
+          taskIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        state_ = org.apache.mesos.v1.Protos.TaskState.TASK_STAGING;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        message_ = "";
+        bitField0_ = (bitField0_ & ~0x00000004);
+        source_ = org.apache.mesos.v1.Protos.TaskStatus.Source.SOURCE_MASTER;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        reason_ = org.apache.mesos.v1.Protos.TaskStatus.Reason.REASON_COMMAND_EXECUTOR_FAILED;
+        bitField0_ = (bitField0_ & ~0x00000010);
+        data_ = com.google.protobuf.ByteString.EMPTY;
+        bitField0_ = (bitField0_ & ~0x00000020);
+        if (agentIdBuilder_ == null) {
+          agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+        } else {
+          agentIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000040);
+        if (executorIdBuilder_ == null) {
+          executorId_ = org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance();
+        } else {
+          executorIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000080);
+        timestamp_ = 0D;
+        bitField0_ = (bitField0_ & ~0x00000100);
+        uuid_ = com.google.protobuf.ByteString.EMPTY;
+        bitField0_ = (bitField0_ & ~0x00000200);
+        healthy_ = false;
+        bitField0_ = (bitField0_ & ~0x00000400);
+        if (checkStatusBuilder_ == null) {
+          checkStatus_ = org.apache.mesos.v1.Protos.CheckStatusInfo.getDefaultInstance();
+        } else {
+          checkStatusBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000800);
+        if (labelsBuilder_ == null) {
+          labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+        } else {
+          labelsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00001000);
+        if (containerStatusBuilder_ == null) {
+          containerStatus_ = org.apache.mesos.v1.Protos.ContainerStatus.getDefaultInstance();
+        } else {
+          containerStatusBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00002000);
+        if (unreachableTimeBuilder_ == null) {
+          unreachableTime_ = org.apache.mesos.v1.Protos.TimeInfo.getDefaultInstance();
+        } else {
+          unreachableTimeBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00004000);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TaskStatus_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.TaskStatus getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.TaskStatus.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.TaskStatus build() {
+        org.apache.mesos.v1.Protos.TaskStatus result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.TaskStatus buildPartial() {
+        org.apache.mesos.v1.Protos.TaskStatus result = new org.apache.mesos.v1.Protos.TaskStatus(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        if (taskIdBuilder_ == null) {
+          result.taskId_ = taskId_;
+        } else {
+          result.taskId_ = taskIdBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.state_ = state_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.message_ = message_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.source_ = source_;
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.reason_ = reason_;
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        result.data_ = data_;
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        if (agentIdBuilder_ == null) {
+          result.agentId_ = agentId_;
+        } else {
+          result.agentId_ = agentIdBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+          to_bitField0_ |= 0x00000080;
+        }
+        if (executorIdBuilder_ == null) {
+          result.executorId_ = executorId_;
+        } else {
+          result.executorId_ = executorIdBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
+          to_bitField0_ |= 0x00000100;
+        }
+        result.timestamp_ = timestamp_;
+        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
+          to_bitField0_ |= 0x00000200;
+        }
+        result.uuid_ = uuid_;
+        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
+          to_bitField0_ |= 0x00000400;
+        }
+        result.healthy_ = healthy_;
+        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
+          to_bitField0_ |= 0x00000800;
+        }
+        if (checkStatusBuilder_ == null) {
+          result.checkStatus_ = checkStatus_;
+        } else {
+          result.checkStatus_ = checkStatusBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
+          to_bitField0_ |= 0x00001000;
+        }
+        if (labelsBuilder_ == null) {
+          result.labels_ = labels_;
+        } else {
+          result.labels_ = labelsBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00002000) == 0x00002000)) {
+          to_bitField0_ |= 0x00002000;
+        }
+        if (containerStatusBuilder_ == null) {
+          result.containerStatus_ = containerStatus_;
+        } else {
+          result.containerStatus_ = containerStatusBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00004000) == 0x00004000)) {
+          to_bitField0_ |= 0x00004000;
+        }
+        if (unreachableTimeBuilder_ == null) {
+          result.unreachableTime_ = unreachableTime_;
+        } else {
+          result.unreachableTime_ = unreachableTimeBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.TaskStatus) {
+          return mergeFrom((org.apache.mesos.v1.Protos.TaskStatus)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.TaskStatus other) {
+        if (other == org.apache.mesos.v1.Protos.TaskStatus.getDefaultInstance()) return this;
+        if (other.hasTaskId()) {
+          mergeTaskId(other.getTaskId());
+        }
+        if (other.hasState()) {
+          setState(other.getState());
+        }
+        if (other.hasMessage()) {
+          bitField0_ |= 0x00000004;
+          message_ = other.message_;
+          onChanged();
+        }
+        if (other.hasSource()) {
+          setSource(other.getSource());
+        }
+        if (other.hasReason()) {
+          setReason(other.getReason());
+        }
+        if (other.hasData()) {
+          setData(other.getData());
+        }
+        if (other.hasAgentId()) {
+          mergeAgentId(other.getAgentId());
+        }
+        if (other.hasExecutorId()) {
+          mergeExecutorId(other.getExecutorId());
+        }
+        if (other.hasTimestamp()) {
+          setTimestamp(other.getTimestamp());
+        }
+        if (other.hasUuid()) {
+          setUuid(other.getUuid());
+        }
+        if (other.hasHealthy()) {
+          setHealthy(other.getHealthy());
+        }
+        if (other.hasCheckStatus()) {
+          mergeCheckStatus(other.getCheckStatus());
+        }
+        if (other.hasLabels()) {
+          mergeLabels(other.getLabels());
+        }
+        if (other.hasContainerStatus()) {
+          mergeContainerStatus(other.getContainerStatus());
+        }
+        if (other.hasUnreachableTime()) {
+          mergeUnreachableTime(other.getUnreachableTime());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasTaskId()) {
+          
+          return false;
+        }
+        if (!hasState()) {
+          
+          return false;
+        }
+        if (!getTaskId().isInitialized()) {
+          
+          return false;
+        }
+        if (hasAgentId()) {
+          if (!getAgentId().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasExecutorId()) {
+          if (!getExecutorId().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasLabels()) {
+          if (!getLabels().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasContainerStatus()) {
+          if (!getContainerStatus().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasUnreachableTime()) {
+          if (!getUnreachableTime().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.TaskStatus parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.TaskStatus) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required .mesos.v1.TaskID task_id = 1;
+      private org.apache.mesos.v1.Protos.TaskID taskId_ = org.apache.mesos.v1.Protos.TaskID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.TaskID, org.apache.mesos.v1.Protos.TaskID.Builder, org.apache.mesos.v1.Protos.TaskIDOrBuilder> taskIdBuilder_;
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 1;</code>
+       */
+      public boolean hasTaskId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.TaskID getTaskId() {
+        if (taskIdBuilder_ == null) {
+          return taskId_;
+        } else {
+          return taskIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 1;</code>
+       */
+      public Builder setTaskId(org.apache.mesos.v1.Protos.TaskID value) {
+        if (taskIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          taskId_ = value;
+          onChanged();
+        } else {
+          taskIdBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 1;</code>
+       */
+      public Builder setTaskId(
+          org.apache.mesos.v1.Protos.TaskID.Builder builderForValue) {
+        if (taskIdBuilder_ == null) {
+          taskId_ = builderForValue.build();
+          onChanged();
+        } else {
+          taskIdBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 1;</code>
+       */
+      public Builder mergeTaskId(org.apache.mesos.v1.Protos.TaskID value) {
+        if (taskIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001) &&
+              taskId_ != org.apache.mesos.v1.Protos.TaskID.getDefaultInstance()) {
+            taskId_ =
+              org.apache.mesos.v1.Protos.TaskID.newBuilder(taskId_).mergeFrom(value).buildPartial();
+          } else {
+            taskId_ = value;
+          }
+          onChanged();
+        } else {
+          taskIdBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 1;</code>
+       */
+      public Builder clearTaskId() {
+        if (taskIdBuilder_ == null) {
+          taskId_ = org.apache.mesos.v1.Protos.TaskID.getDefaultInstance();
+          onChanged();
+        } else {
+          taskIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.TaskID.Builder getTaskIdBuilder() {
+        bitField0_ |= 0x00000001;
+        onChanged();
+        return getTaskIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.TaskIDOrBuilder getTaskIdOrBuilder() {
+        if (taskIdBuilder_ != null) {
+          return taskIdBuilder_.getMessageOrBuilder();
+        } else {
+          return taskId_;
+        }
+      }
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 1;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.TaskID, org.apache.mesos.v1.Protos.TaskID.Builder, org.apache.mesos.v1.Protos.TaskIDOrBuilder> 
+          getTaskIdFieldBuilder() {
+        if (taskIdBuilder_ == null) {
+          taskIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.TaskID, org.apache.mesos.v1.Protos.TaskID.Builder, org.apache.mesos.v1.Protos.TaskIDOrBuilder>(
+                  taskId_,
+                  getParentForChildren(),
+                  isClean());
+          taskId_ = null;
+        }
+        return taskIdBuilder_;
+      }
+
+      // required .mesos.v1.TaskState state = 2;
+      private org.apache.mesos.v1.Protos.TaskState state_ = org.apache.mesos.v1.Protos.TaskState.TASK_STAGING;
+      /**
+       * <code>required .mesos.v1.TaskState state = 2;</code>
+       */
+      public boolean hasState() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required .mesos.v1.TaskState state = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.TaskState getState() {
+        return state_;
+      }
+      /**
+       * <code>required .mesos.v1.TaskState state = 2;</code>
+       */
+      public Builder setState(org.apache.mesos.v1.Protos.TaskState value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000002;
+        state_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.TaskState state = 2;</code>
+       */
+      public Builder clearState() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        state_ = org.apache.mesos.v1.Protos.TaskState.TASK_STAGING;
+        onChanged();
+        return this;
+      }
+
+      // optional string message = 4;
+      private java.lang.Object message_ = "";
+      /**
+       * <code>optional string message = 4;</code>
+       *
+       * <pre>
+       * Possible message explaining state.
+       * </pre>
+       */
+      public boolean hasMessage() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional string message = 4;</code>
+       *
+       * <pre>
+       * Possible message explaining state.
+       * </pre>
+       */
+      public java.lang.String getMessage() {
+        java.lang.Object ref = message_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          message_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string message = 4;</code>
+       *
+       * <pre>
+       * Possible message explaining state.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getMessageBytes() {
+        java.lang.Object ref = message_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          message_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string message = 4;</code>
+       *
+       * <pre>
+       * Possible message explaining state.
+       * </pre>
+       */
+      public Builder setMessage(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        message_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string message = 4;</code>
+       *
+       * <pre>
+       * Possible message explaining state.
+       * </pre>
+       */
+      public Builder clearMessage() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        message_ = getDefaultInstance().getMessage();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string message = 4;</code>
+       *
+       * <pre>
+       * Possible message explaining state.
+       * </pre>
+       */
+      public Builder setMessageBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        message_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.v1.TaskStatus.Source source = 9;
+      private org.apache.mesos.v1.Protos.TaskStatus.Source source_ = org.apache.mesos.v1.Protos.TaskStatus.Source.SOURCE_MASTER;
+      /**
+       * <code>optional .mesos.v1.TaskStatus.Source source = 9;</code>
+       */
+      public boolean hasSource() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.v1.TaskStatus.Source source = 9;</code>
+       */
+      public org.apache.mesos.v1.Protos.TaskStatus.Source getSource() {
+        return source_;
+      }
+      /**
+       * <code>optional .mesos.v1.TaskStatus.Source source = 9;</code>
+       */
+      public Builder setSource(org.apache.mesos.v1.Protos.TaskStatus.Source value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000008;
+        source_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.TaskStatus.Source source = 9;</code>
+       */
+      public Builder clearSource() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        source_ = org.apache.mesos.v1.Protos.TaskStatus.Source.SOURCE_MASTER;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.v1.TaskStatus.Reason reason = 10;
+      private org.apache.mesos.v1.Protos.TaskStatus.Reason reason_ = org.apache.mesos.v1.Protos.TaskStatus.Reason.REASON_COMMAND_EXECUTOR_FAILED;
+      /**
+       * <code>optional .mesos.v1.TaskStatus.Reason reason = 10;</code>
+       */
+      public boolean hasReason() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional .mesos.v1.TaskStatus.Reason reason = 10;</code>
+       */
+      public org.apache.mesos.v1.Protos.TaskStatus.Reason getReason() {
+        return reason_;
+      }
+      /**
+       * <code>optional .mesos.v1.TaskStatus.Reason reason = 10;</code>
+       */
+      public Builder setReason(org.apache.mesos.v1.Protos.TaskStatus.Reason value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000010;
+        reason_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.TaskStatus.Reason reason = 10;</code>
+       */
+      public Builder clearReason() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        reason_ = org.apache.mesos.v1.Protos.TaskStatus.Reason.REASON_COMMAND_EXECUTOR_FAILED;
+        onChanged();
+        return this;
+      }
+
+      // optional bytes data = 3;
+      private com.google.protobuf.ByteString data_ = com.google.protobuf.ByteString.EMPTY;
+      /**
+       * <code>optional bytes data = 3;</code>
+       */
+      public boolean hasData() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional bytes data = 3;</code>
+       */
+      public com.google.protobuf.ByteString getData() {
+        return data_;
+      }
+      /**
+       * <code>optional bytes data = 3;</code>
+       */
+      public Builder setData(com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000020;
+        data_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional bytes data = 3;</code>
+       */
+      public Builder clearData() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        data_ = getDefaultInstance().getData();
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.v1.AgentID agent_id = 5;
+      private org.apache.mesos.v1.Protos.AgentID agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.AgentID, org.apache.mesos.v1.Protos.AgentID.Builder, org.apache.mesos.v1.Protos.AgentIDOrBuilder> agentIdBuilder_;
+      /**
+       * <code>optional .mesos.v1.AgentID agent_id = 5;</code>
+       */
+      public boolean hasAgentId() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional .mesos.v1.AgentID agent_id = 5;</code>
+       */
+      public org.apache.mesos.v1.Protos.AgentID getAgentId() {
+        if (agentIdBuilder_ == null) {
+          return agentId_;
+        } else {
+          return agentIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.AgentID agent_id = 5;</code>
+       */
+      public Builder setAgentId(org.apache.mesos.v1.Protos.AgentID value) {
+        if (agentIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          agentId_ = value;
+          onChanged();
+        } else {
+          agentIdBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.AgentID agent_id = 5;</code>
+       */
+      public Builder setAgentId(
+          org.apache.mesos.v1.Protos.AgentID.Builder builderForValue) {
+        if (agentIdBuilder_ == null) {
+          agentId_ = builderForValue.build();
+          onChanged();
+        } else {
+          agentIdBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.AgentID agent_id = 5;</code>
+       */
+      public Builder mergeAgentId(org.apache.mesos.v1.Protos.AgentID value) {
+        if (agentIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000040) == 0x00000040) &&
+              agentId_ != org.apache.mesos.v1.Protos.AgentID.getDefaultInstance()) {
+            agentId_ =
+              org.apache.mesos.v1.Protos.AgentID.newBuilder(agentId_).mergeFrom(value).buildPartial();
+          } else {
+            agentId_ = value;
+          }
+          onChanged();
+        } else {
+          agentIdBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.AgentID agent_id = 5;</code>
+       */
+      public Builder clearAgentId() {
+        if (agentIdBuilder_ == null) {
+          agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+          onChanged();
+        } else {
+          agentIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000040);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.AgentID agent_id = 5;</code>
+       */
+      public org.apache.mesos.v1.Protos.AgentID.Builder getAgentIdBuilder() {
+        bitField0_ |= 0x00000040;
+        onChanged();
+        return getAgentIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.AgentID agent_id = 5;</code>
+       */
+      public org.apache.mesos.v1.Protos.AgentIDOrBuilder getAgentIdOrBuilder() {
+        if (agentIdBuilder_ != null) {
+          return agentIdBuilder_.getMessageOrBuilder();
+        } else {
+          return agentId_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.AgentID agent_id = 5;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.AgentID, org.apache.mesos.v1.Protos.AgentID.Builder, org.apache.mesos.v1.Protos.AgentIDOrBuilder> 
+          getAgentIdFieldBuilder() {
+        if (agentIdBuilder_ == null) {
+          agentIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.AgentID, org.apache.mesos.v1.Protos.AgentID.Builder, org.apache.mesos.v1.Protos.AgentIDOrBuilder>(
+                  agentId_,
+                  getParentForChildren(),
+                  isClean());
+          agentId_ = null;
+        }
+        return agentIdBuilder_;
+      }
+
+      // optional .mesos.v1.ExecutorID executor_id = 7;
+      private org.apache.mesos.v1.Protos.ExecutorID executorId_ = org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.ExecutorID, org.apache.mesos.v1.Protos.ExecutorID.Builder, org.apache.mesos.v1.Protos.ExecutorIDOrBuilder> executorIdBuilder_;
+      /**
+       * <code>optional .mesos.v1.ExecutorID executor_id = 7;</code>
+       *
+       * <pre>
+       * TODO(benh): Use in master/agent.
+       * </pre>
+       */
+      public boolean hasExecutorId() {
+        return ((bitField0_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional .mesos.v1.ExecutorID executor_id = 7;</code>
+       *
+       * <pre>
+       * TODO(benh): Use in master/agent.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.ExecutorID getExecutorId() {
+        if (executorIdBuilder_ == null) {
+          return executorId_;
+        } else {
+          return executorIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.ExecutorID executor_id = 7;</code>
+       *
+       * <pre>
+       * TODO(benh): Use in master/agent.
+       * </pre>
+       */
+      public Builder setExecutorId(org.apache.mesos.v1.Protos.ExecutorID value) {
+        if (executorIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          executorId_ = value;
+          onChanged();
+        } else {
+          executorIdBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ExecutorID executor_id = 7;</code>
+       *
+       * <pre>
+       * TODO(benh): Use in master/agent.
+       * </pre>
+       */
+      public Builder setExecutorId(
+          org.apache.mesos.v1.Protos.ExecutorID.Builder builderForValue) {
+        if (executorIdBuilder_ == null) {
+          executorId_ = builderForValue.build();
+          onChanged();
+        } else {
+          executorIdBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ExecutorID executor_id = 7;</code>
+       *
+       * <pre>
+       * TODO(benh): Use in master/agent.
+       * </pre>
+       */
+      public Builder mergeExecutorId(org.apache.mesos.v1.Protos.ExecutorID value) {
+        if (executorIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000080) == 0x00000080) &&
+              executorId_ != org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance()) {
+            executorId_ =
+              org.apache.mesos.v1.Protos.ExecutorID.newBuilder(executorId_).mergeFrom(value).buildPartial();
+          } else {
+            executorId_ = value;
+          }
+          onChanged();
+        } else {
+          executorIdBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ExecutorID executor_id = 7;</code>
+       *
+       * <pre>
+       * TODO(benh): Use in master/agent.
+       * </pre>
+       */
+      public Builder clearExecutorId() {
+        if (executorIdBuilder_ == null) {
+          executorId_ = org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance();
+          onChanged();
+        } else {
+          executorIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000080);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ExecutorID executor_id = 7;</code>
+       *
+       * <pre>
+       * TODO(benh): Use in master/agent.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.ExecutorID.Builder getExecutorIdBuilder() {
+        bitField0_ |= 0x00000080;
+        onChanged();
+        return getExecutorIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.ExecutorID executor_id = 7;</code>
+       *
+       * <pre>
+       * TODO(benh): Use in master/agent.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder() {
+        if (executorIdBuilder_ != null) {
+          return executorIdBuilder_.getMessageOrBuilder();
+        } else {
+          return executorId_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.ExecutorID executor_id = 7;</code>
+       *
+       * <pre>
+       * TODO(benh): Use in master/agent.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.ExecutorID, org.apache.mesos.v1.Protos.ExecutorID.Builder, org.apache.mesos.v1.Protos.ExecutorIDOrBuilder> 
+          getExecutorIdFieldBuilder() {
+        if (executorIdBuilder_ == null) {
+          executorIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.ExecutorID, org.apache.mesos.v1.Protos.ExecutorID.Builder, org.apache.mesos.v1.Protos.ExecutorIDOrBuilder>(
+                  executorId_,
+                  getParentForChildren(),
+                  isClean());
+          executorId_ = null;
+        }
+        return executorIdBuilder_;
+      }
+
+      // optional double timestamp = 6;
+      private double timestamp_ ;
+      /**
+       * <code>optional double timestamp = 6;</code>
+       */
+      public boolean hasTimestamp() {
+        return ((bitField0_ & 0x00000100) == 0x00000100);
+      }
+      /**
+       * <code>optional double timestamp = 6;</code>
+       */
+      public double getTimestamp() {
+        return timestamp_;
+      }
+      /**
+       * <code>optional double timestamp = 6;</code>
+       */
+      public Builder setTimestamp(double value) {
+        bitField0_ |= 0x00000100;
+        timestamp_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double timestamp = 6;</code>
+       */
+      public Builder clearTimestamp() {
+        bitField0_ = (bitField0_ & ~0x00000100);
+        timestamp_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // optional bytes uuid = 11;
+      private com.google.protobuf.ByteString uuid_ = com.google.protobuf.ByteString.EMPTY;
+      /**
+       * <code>optional bytes uuid = 11;</code>
+       *
+       * <pre>
+       * Statuses that are delivered reliably to the scheduler will
+       * include a 'uuid'. The status is considered delivered once
+       * it is acknowledged by the scheduler. Schedulers can choose
+       * to either explicitly acknowledge statuses or let the scheduler
+       * driver implicitly acknowledge (default).
+       *
+       * TODO(bmahler): This is currently overwritten in the scheduler
+       * driver and executor driver, but executors will need to set this
+       * to a valid RFC-4122 UUID if using the HTTP API.
+       * </pre>
+       */
+      public boolean hasUuid() {
+        return ((bitField0_ & 0x00000200) == 0x00000200);
+      }
+      /**
+       * <code>optional bytes uuid = 11;</code>
+       *
+       * <pre>
+       * Statuses that are delivered reliably to the scheduler will
+       * include a 'uuid'. The status is considered delivered once
+       * it is acknowledged by the scheduler. Schedulers can choose
+       * to either explicitly acknowledge statuses or let the scheduler
+       * driver implicitly acknowledge (default).
+       *
+       * TODO(bmahler): This is currently overwritten in the scheduler
+       * driver and executor driver, but executors will need to set this
+       * to a valid RFC-4122 UUID if using the HTTP API.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString getUuid() {
+        return uuid_;
+      }
+      /**
+       * <code>optional bytes uuid = 11;</code>
+       *
+       * <pre>
+       * Statuses that are delivered reliably to the scheduler will
+       * include a 'uuid'. The status is considered delivered once
+       * it is acknowledged by the scheduler. Schedulers can choose
+       * to either explicitly acknowledge statuses or let the scheduler
+       * driver implicitly acknowledge (default).
+       *
+       * TODO(bmahler): This is currently overwritten in the scheduler
+       * driver and executor driver, but executors will need to set this
+       * to a valid RFC-4122 UUID if using the HTTP API.
+       * </pre>
+       */
+      public Builder setUuid(com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000200;
+        uuid_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional bytes uuid = 11;</code>
+       *
+       * <pre>
+       * Statuses that are delivered reliably to the scheduler will
+       * include a 'uuid'. The status is considered delivered once
+       * it is acknowledged by the scheduler. Schedulers can choose
+       * to either explicitly acknowledge statuses or let the scheduler
+       * driver implicitly acknowledge (default).
+       *
+       * TODO(bmahler): This is currently overwritten in the scheduler
+       * driver and executor driver, but executors will need to set this
+       * to a valid RFC-4122 UUID if using the HTTP API.
+       * </pre>
+       */
+      public Builder clearUuid() {
+        bitField0_ = (bitField0_ & ~0x00000200);
+        uuid_ = getDefaultInstance().getUuid();
+        onChanged();
+        return this;
+      }
+
+      // optional bool healthy = 8;
+      private boolean healthy_ ;
+      /**
+       * <code>optional bool healthy = 8;</code>
+       *
+       * <pre>
+       * Describes whether the task has been determined to be healthy (true) or
+       * unhealthy (false) according to the `health_check` field in `TaskInfo`.
+       * </pre>
+       */
+      public boolean hasHealthy() {
+        return ((bitField0_ & 0x00000400) == 0x00000400);
+      }
+      /**
+       * <code>optional bool healthy = 8;</code>
+       *
+       * <pre>
+       * Describes whether the task has been determined to be healthy (true) or
+       * unhealthy (false) according to the `health_check` field in `TaskInfo`.
+       * </pre>
+       */
+      public boolean getHealthy() {
+        return healthy_;
+      }
+      /**
+       * <code>optional bool healthy = 8;</code>
+       *
+       * <pre>
+       * Describes whether the task has been determined to be healthy (true) or
+       * unhealthy (false) according to the `health_check` field in `TaskInfo`.
+       * </pre>
+       */
+      public Builder setHealthy(boolean value) {
+        bitField0_ |= 0x00000400;
+        healthy_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional bool healthy = 8;</code>
+       *
+       * <pre>
+       * Describes whether the task has been determined to be healthy (true) or
+       * unhealthy (false) according to the `health_check` field in `TaskInfo`.
+       * </pre>
+       */
+      public Builder clearHealthy() {
+        bitField0_ = (bitField0_ & ~0x00000400);
+        healthy_ = false;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.v1.CheckStatusInfo check_status = 15;
+      private org.apache.mesos.v1.Protos.CheckStatusInfo checkStatus_ = org.apache.mesos.v1.Protos.CheckStatusInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.CheckStatusInfo, org.apache.mesos.v1.Protos.CheckStatusInfo.Builder, org.apache.mesos.v1.Protos.CheckStatusInfoOrBuilder> checkStatusBuilder_;
+      /**
+       * <code>optional .mesos.v1.CheckStatusInfo check_status = 15;</code>
+       *
+       * <pre>
+       * Contains check status for the check specified in the corresponding
+       * `TaskInfo`. If no check has been specified, this field must be
+       * absent, otherwise it must be present even if the check status is
+       * not available yet. If the status update is triggered for a different
+       * reason than `REASON_TASK_CHECK_STATUS_UPDATED`, this field will contain
+       * the last known value.
+       *
+       * NOTE: A check-related task status update is triggered if and only if
+       * the value or presence of any field in `CheckStatusInfo` changes.
+       *
+       * NOTE: Check support in built-in executors is experimental.
+       * </pre>
+       */
+      public boolean hasCheckStatus() {
+        return ((bitField0_ & 0x00000800) == 0x00000800);
+      }
+      /**
+       * <code>optional .mesos.v1.CheckStatusInfo check_status = 15;</code>
+       *
+       * <pre>
+       * Contains check status for the check specified in the corresponding
+       * `TaskInfo`. If no check has been specified, this field must be
+       * absent, otherwise it must be present even if the check status is
+       * not available yet. If the status update is triggered for a different
+       * reason than `REASON_TASK_CHECK_STATUS_UPDATED`, this field will contain
+       * the last known value.
+       *
+       * NOTE: A check-related task status update is triggered if and only if
+       * the value or presence of any field in `CheckStatusInfo` changes.
+       *
+       * NOTE: Check support in built-in executors is experimental.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.CheckStatusInfo getCheckStatus() {
+        if (checkStatusBuilder_ == null) {
+          return checkStatus_;
+        } else {
+          return checkStatusBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.CheckStatusInfo check_status = 15;</code>
+       *
+       * <pre>
+       * Contains check status for the check specified in the corresponding
+       * `TaskInfo`. If no check has been specified, this field must be
+       * absent, otherwise it must be present even if the check status is
+       * not available yet. If the status update is triggered for a different
+       * reason than `REASON_TASK_CHECK_STATUS_UPDATED`, this field will contain
+       * the last known value.
+       *
+       * NOTE: A check-related task status update is triggered if and only if
+       * the value or presence of any field in `CheckStatusInfo` changes.
+       *
+       * NOTE: Check support in built-in executors is experimental.
+       * </pre>
+       */
+      public Builder setCheckStatus(org.apache.mesos.v1.Protos.CheckStatusInfo value) {
+        if (checkStatusBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          checkStatus_ = value;
+          onChanged();
+        } else {
+          checkStatusBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CheckStatusInfo check_status = 15;</code>
+       *
+       * <pre>
+       * Contains check status for the check specified in the corresponding
+       * `TaskInfo`. If no check has been specified, this field must be
+       * absent, otherwise it must be present even if the check status is
+       * not available yet. If the status update is triggered for a different
+       * reason than `REASON_TASK_CHECK_STATUS_UPDATED`, this field will contain
+       * the last known value.
+       *
+       * NOTE: A check-related task status update is triggered if and only if
+       * the value or presence of any field in `CheckStatusInfo` changes.
+       *
+       * NOTE: Check support in built-in executors is experimental.
+       * </pre>
+       */
+      public Builder setCheckStatus(
+          org.apache.mesos.v1.Protos.CheckStatusInfo.Builder builderForValue) {
+        if (checkStatusBuilder_ == null) {
+          checkStatus_ = builderForValue.build();
+          onChanged();
+        } else {
+          checkStatusBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CheckStatusInfo check_status = 15;</code>
+       *
+       * <pre>
+       * Contains check status for the check specified in the corresponding
+       * `TaskInfo`. If no check has been specified, this field must be
+       * absent, otherwise it must be present even if the check status is
+       * not available yet. If the status update is triggered for a different
+       * reason than `REASON_TASK_CHECK_STATUS_UPDATED`, this field will contain
+       * the last known value.
+       *
+       * NOTE: A check-related task status update is triggered if and only if
+       * the value or presence of any field in `CheckStatusInfo` changes.
+       *
+       * NOTE: Check support in built-in executors is experimental.
+       * </pre>
+       */
+      public Builder mergeCheckStatus(org.apache.mesos.v1.Protos.CheckStatusInfo value) {
+        if (checkStatusBuilder_ == null) {
+          if (((bitField0_ & 0x00000800) == 0x00000800) &&
+              checkStatus_ != org.apache.mesos.v1.Protos.CheckStatusInfo.getDefaultInstance()) {
+            checkStatus_ =
+              org.apache.mesos.v1.Protos.CheckStatusInfo.newBuilder(checkStatus_).mergeFrom(value).buildPartial();
+          } else {
+            checkStatus_ = value;
+          }
+          onChanged();
+        } else {
+          checkStatusBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CheckStatusInfo check_status = 15;</code>
+       *
+       * <pre>
+       * Contains check status for the check specified in the corresponding
+       * `TaskInfo`. If no check has been specified, this field must be
+       * absent, otherwise it must be present even if the check status is
+       * not available yet. If the status update is triggered for a different
+       * reason than `REASON_TASK_CHECK_STATUS_UPDATED`, this field will contain
+       * the last known value.
+       *
+       * NOTE: A check-related task status update is triggered if and only if
+       * the value or presence of any field in `CheckStatusInfo` changes.
+       *
+       * NOTE: Check support in built-in executors is experimental.
+       * </pre>
+       */
+      public Builder clearCheckStatus() {
+        if (checkStatusBuilder_ == null) {
+          checkStatus_ = org.apache.mesos.v1.Protos.CheckStatusInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          checkStatusBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000800);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CheckStatusInfo check_status = 15;</code>
+       *
+       * <pre>
+       * Contains check status for the check specified in the corresponding
+       * `TaskInfo`. If no check has been specified, this field must be
+       * absent, otherwise it must be present even if the check status is
+       * not available yet. If the status update is triggered for a different
+       * reason than `REASON_TASK_CHECK_STATUS_UPDATED`, this field will contain
+       * the last known value.
+       *
+       * NOTE: A check-related task status update is triggered if and only if
+       * the value or presence of any field in `CheckStatusInfo` changes.
+       *
+       * NOTE: Check support in built-in executors is experimental.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.CheckStatusInfo.Builder getCheckStatusBuilder() {
+        bitField0_ |= 0x00000800;
+        onChanged();
+        return getCheckStatusFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.CheckStatusInfo check_status = 15;</code>
+       *
+       * <pre>
+       * Contains check status for the check specified in the corresponding
+       * `TaskInfo`. If no check has been specified, this field must be
+       * absent, otherwise it must be present even if the check status is
+       * not available yet. If the status update is triggered for a different
+       * reason than `REASON_TASK_CHECK_STATUS_UPDATED`, this field will contain
+       * the last known value.
+       *
+       * NOTE: A check-related task status update is triggered if and only if
+       * the value or presence of any field in `CheckStatusInfo` changes.
+       *
+       * NOTE: Check support in built-in executors is experimental.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.CheckStatusInfoOrBuilder getCheckStatusOrBuilder() {
+        if (checkStatusBuilder_ != null) {
+          return checkStatusBuilder_.getMessageOrBuilder();
+        } else {
+          return checkStatus_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.CheckStatusInfo check_status = 15;</code>
+       *
+       * <pre>
+       * Contains check status for the check specified in the corresponding
+       * `TaskInfo`. If no check has been specified, this field must be
+       * absent, otherwise it must be present even if the check status is
+       * not available yet. If the status update is triggered for a different
+       * reason than `REASON_TASK_CHECK_STATUS_UPDATED`, this field will contain
+       * the last known value.
+       *
+       * NOTE: A check-related task status update is triggered if and only if
+       * the value or presence of any field in `CheckStatusInfo` changes.
+       *
+       * NOTE: Check support in built-in executors is experimental.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.CheckStatusInfo, org.apache.mesos.v1.Protos.CheckStatusInfo.Builder, org.apache.mesos.v1.Protos.CheckStatusInfoOrBuilder> 
+          getCheckStatusFieldBuilder() {
+        if (checkStatusBuilder_ == null) {
+          checkStatusBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.CheckStatusInfo, org.apache.mesos.v1.Protos.CheckStatusInfo.Builder, org.apache.mesos.v1.Protos.CheckStatusInfoOrBuilder>(
+                  checkStatus_,
+                  getParentForChildren(),
+                  isClean());
+          checkStatus_ = null;
+        }
+        return checkStatusBuilder_;
+      }
+
+      // optional .mesos.v1.Labels labels = 12;
+      private org.apache.mesos.v1.Protos.Labels labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Labels, org.apache.mesos.v1.Protos.Labels.Builder, org.apache.mesos.v1.Protos.LabelsOrBuilder> labelsBuilder_;
+      /**
+       * <code>optional .mesos.v1.Labels labels = 12;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and agent endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and agent processes. Therefore,
+       * labels should be used to tag TaskStatus message with light-weight
+       * meta-data.  Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public boolean hasLabels() {
+        return ((bitField0_ & 0x00001000) == 0x00001000);
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 12;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and agent endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and agent processes. Therefore,
+       * labels should be used to tag TaskStatus message with light-weight
+       * meta-data.  Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Labels getLabels() {
+        if (labelsBuilder_ == null) {
+          return labels_;
+        } else {
+          return labelsBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 12;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and agent endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and agent processes. Therefore,
+       * labels should be used to tag TaskStatus message with light-weight
+       * meta-data.  Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public Builder setLabels(org.apache.mesos.v1.Protos.Labels value) {
+        if (labelsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          labels_ = value;
+          onChanged();
+        } else {
+          labelsBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00001000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 12;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and agent endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and agent processes. Therefore,
+       * labels should be used to tag TaskStatus message with light-weight
+       * meta-data.  Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public Builder setLabels(
+          org.apache.mesos.v1.Protos.Labels.Builder builderForValue) {
+        if (labelsBuilder_ == null) {
+          labels_ = builderForValue.build();
+          onChanged();
+        } else {
+          labelsBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00001000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 12;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and agent endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and agent processes. Therefore,
+       * labels should be used to tag TaskStatus message with light-weight
+       * meta-data.  Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public Builder mergeLabels(org.apache.mesos.v1.Protos.Labels value) {
+        if (labelsBuilder_ == null) {
+          if (((bitField0_ & 0x00001000) == 0x00001000) &&
+              labels_ != org.apache.mesos.v1.Protos.Labels.getDefaultInstance()) {
+            labels_ =
+              org.apache.mesos.v1.Protos.Labels.newBuilder(labels_).mergeFrom(value).buildPartial();
+          } else {
+            labels_ = value;
+          }
+          onChanged();
+        } else {
+          labelsBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00001000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 12;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and agent endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and agent processes. Therefore,
+       * labels should be used to tag TaskStatus message with light-weight
+       * meta-data.  Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public Builder clearLabels() {
+        if (labelsBuilder_ == null) {
+          labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+          onChanged();
+        } else {
+          labelsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00001000);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 12;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and agent endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and agent processes. Therefore,
+       * labels should be used to tag TaskStatus message with light-weight
+       * meta-data.  Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Labels.Builder getLabelsBuilder() {
+        bitField0_ |= 0x00001000;
+        onChanged();
+        return getLabelsFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 12;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and agent endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and agent processes. Therefore,
+       * labels should be used to tag TaskStatus message with light-weight
+       * meta-data.  Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+        if (labelsBuilder_ != null) {
+          return labelsBuilder_.getMessageOrBuilder();
+        } else {
+          return labels_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 12;</code>
+       *
+       * <pre>
+       * Labels are free-form key value pairs which are exposed through
+       * master and agent endpoints. Labels will not be interpreted or
+       * acted upon by Mesos itself. As opposed to the data field, labels
+       * will be kept in memory on master and agent processes. Therefore,
+       * labels should be used to tag TaskStatus message with light-weight
+       * meta-data.  Labels should not contain duplicate key-value pairs.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Labels, org.apache.mesos.v1.Protos.Labels.Builder, org.apache.mesos.v1.Protos.LabelsOrBuilder> 
+          getLabelsFieldBuilder() {
+        if (labelsBuilder_ == null) {
+          labelsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Labels, org.apache.mesos.v1.Protos.Labels.Builder, org.apache.mesos.v1.Protos.LabelsOrBuilder>(
+                  labels_,
+                  getParentForChildren(),
+                  isClean());
+          labels_ = null;
+        }
+        return labelsBuilder_;
+      }
+
+      // optional .mesos.v1.ContainerStatus container_status = 13;
+      private org.apache.mesos.v1.Protos.ContainerStatus containerStatus_ = org.apache.mesos.v1.Protos.ContainerStatus.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.ContainerStatus, org.apache.mesos.v1.Protos.ContainerStatus.Builder, org.apache.mesos.v1.Protos.ContainerStatusOrBuilder> containerStatusBuilder_;
+      /**
+       * <code>optional .mesos.v1.ContainerStatus container_status = 13;</code>
+       *
+       * <pre>
+       * Container related information that is resolved dynamically such as
+       * network address.
+       * </pre>
+       */
+      public boolean hasContainerStatus() {
+        return ((bitField0_ & 0x00002000) == 0x00002000);
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerStatus container_status = 13;</code>
+       *
+       * <pre>
+       * Container related information that is resolved dynamically such as
+       * network address.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.ContainerStatus getContainerStatus() {
+        if (containerStatusBuilder_ == null) {
+          return containerStatus_;
+        } else {
+          return containerStatusBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerStatus container_status = 13;</code>
+       *
+       * <pre>
+       * Container related information that is resolved dynamically such as
+       * network address.
+       * </pre>
+       */
+      public Builder setContainerStatus(org.apache.mesos.v1.Protos.ContainerStatus value) {
+        if (containerStatusBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          containerStatus_ = value;
+          onChanged();
+        } else {
+          containerStatusBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00002000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerStatus container_status = 13;</code>
+       *
+       * <pre>
+       * Container related information that is resolved dynamically such as
+       * network address.
+       * </pre>
+       */
+      public Builder setContainerStatus(
+          org.apache.mesos.v1.Protos.ContainerStatus.Builder builderForValue) {
+        if (containerStatusBuilder_ == null) {
+          containerStatus_ = builderForValue.build();
+          onChanged();
+        } else {
+          containerStatusBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00002000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerStatus container_status = 13;</code>
+       *
+       * <pre>
+       * Container related information that is resolved dynamically such as
+       * network address.
+       * </pre>
+       */
+      public Builder mergeContainerStatus(org.apache.mesos.v1.Protos.ContainerStatus value) {
+        if (containerStatusBuilder_ == null) {
+          if (((bitField0_ & 0x00002000) == 0x00002000) &&
+              containerStatus_ != org.apache.mesos.v1.Protos.ContainerStatus.getDefaultInstance()) {
+            containerStatus_ =
+              org.apache.mesos.v1.Protos.ContainerStatus.newBuilder(containerStatus_).mergeFrom(value).buildPartial();
+          } else {
+            containerStatus_ = value;
+          }
+          onChanged();
+        } else {
+          containerStatusBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00002000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerStatus container_status = 13;</code>
+       *
+       * <pre>
+       * Container related information that is resolved dynamically such as
+       * network address.
+       * </pre>
+       */
+      public Builder clearContainerStatus() {
+        if (containerStatusBuilder_ == null) {
+          containerStatus_ = org.apache.mesos.v1.Protos.ContainerStatus.getDefaultInstance();
+          onChanged();
+        } else {
+          containerStatusBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00002000);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerStatus container_status = 13;</code>
+       *
+       * <pre>
+       * Container related information that is resolved dynamically such as
+       * network address.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.ContainerStatus.Builder getContainerStatusBuilder() {
+        bitField0_ |= 0x00002000;
+        onChanged();
+        return getContainerStatusFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerStatus container_status = 13;</code>
+       *
+       * <pre>
+       * Container related information that is resolved dynamically such as
+       * network address.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.ContainerStatusOrBuilder getContainerStatusOrBuilder() {
+        if (containerStatusBuilder_ != null) {
+          return containerStatusBuilder_.getMessageOrBuilder();
+        } else {
+          return containerStatus_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerStatus container_status = 13;</code>
+       *
+       * <pre>
+       * Container related information that is resolved dynamically such as
+       * network address.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.ContainerStatus, org.apache.mesos.v1.Protos.ContainerStatus.Builder, org.apache.mesos.v1.Protos.ContainerStatusOrBuilder> 
+          getContainerStatusFieldBuilder() {
+        if (containerStatusBuilder_ == null) {
+          containerStatusBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.ContainerStatus, org.apache.mesos.v1.Protos.ContainerStatus.Builder, org.apache.mesos.v1.Protos.ContainerStatusOrBuilder>(
+                  containerStatus_,
+                  getParentForChildren(),
+                  isClean());
+          containerStatus_ = null;
+        }
+        return containerStatusBuilder_;
+      }
+
+      // optional .mesos.v1.TimeInfo unreachable_time = 14;
+      private org.apache.mesos.v1.Protos.TimeInfo unreachableTime_ = org.apache.mesos.v1.Protos.TimeInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.TimeInfo, org.apache.mesos.v1.Protos.TimeInfo.Builder, org.apache.mesos.v1.Protos.TimeInfoOrBuilder> unreachableTimeBuilder_;
+      /**
+       * <code>optional .mesos.v1.TimeInfo unreachable_time = 14;</code>
+       *
+       * <pre>
+       * The time (according to the master's clock) when the agent where
+       * this task was running became unreachable. This is only set on
+       * status updates for tasks running on agents that are unreachable
+       * (e.g., partitioned away from the master).
+       * </pre>
+       */
+      public boolean hasUnreachableTime() {
+        return ((bitField0_ & 0x00004000) == 0x00004000);
+      }
+      /**
+       * <code>optional .mesos.v1.TimeInfo unreachable_time = 14;</code>
+       *
+       * <pre>
+       * The time (according to the master's clock) when the agent where
+       * this task was running became unreachable. This is only set on
+       * status updates for tasks running on agents that are unreachable
+       * (e.g., partitioned away from the master).
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.TimeInfo getUnreachableTime() {
+        if (unreachableTimeBuilder_ == null) {
+          return unreachableTime_;
+        } else {
+          return unreachableTimeBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.TimeInfo unreachable_time = 14;</code>
+       *
+       * <pre>
+       * The time (according to the master's clock) when the agent where
+       * this task was running became unreachable. This is only set on
+       * status updates for tasks running on agents that are unreachable
+       * (e.g., partitioned away from the master).
+       * </pre>
+       */
+      public Builder setUnreachableTime(org.apache.mesos.v1.Protos.TimeInfo value) {
+        if (unreachableTimeBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          unreachableTime_ = value;
+          onChanged();
+        } else {
+          unreachableTimeBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00004000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.TimeInfo unreachable_time = 14;</code>
+       *
+       * <pre>
+       * The time (according to the master's clock) when the agent where
+       * this task was running became unreachable. This is only set on
+       * status updates for tasks running on agents that are unreachable
+       * (e.g., partitioned away from the master).
+       * </pre>
+       */
+      public Builder setUnreachableTime(
+          org.apache.mesos.v1.Protos.TimeInfo.Builder builderForValue) {
+        if (unreachableTimeBuilder_ == null) {
+          unreachableTime_ = builderForValue.build();
+          onChanged();
+        } else {
+          unreachableTimeBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00004000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.TimeInfo unreachable_time = 14;</code>
+       *
+       * <pre>
+       * The time (according to the master's clock) when the agent where
+       * this task was running became unreachable. This is only set on
+       * status updates for tasks running on agents that are unreachable
+       * (e.g., partitioned away from the master).
+       * </pre>
+       */
+      public Builder mergeUnreachableTime(org.apache.mesos.v1.Protos.TimeInfo value) {
+        if (unreachableTimeBuilder_ == null) {
+          if (((bitField0_ & 0x00004000) == 0x00004000) &&
+              unreachableTime_ != org.apache.mesos.v1.Protos.TimeInfo.getDefaultInstance()) {
+            unreachableTime_ =
+              org.apache.mesos.v1.Protos.TimeInfo.newBuilder(unreachableTime_).mergeFrom(value).buildPartial();
+          } else {
+            unreachableTime_ = value;
+          }
+          onChanged();
+        } else {
+          unreachableTimeBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00004000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.TimeInfo unreachable_time = 14;</code>
+       *
+       * <pre>
+       * The time (according to the master's clock) when the agent where
+       * this task was running became unreachable. This is only set on
+       * status updates for tasks running on agents that are unreachable
+       * (e.g., partitioned away from the master).
+       * </pre>
+       */
+      public Builder clearUnreachableTime() {
+        if (unreachableTimeBuilder_ == null) {
+          unreachableTime_ = org.apache.mesos.v1.Protos.TimeInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          unreachableTimeBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00004000);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.TimeInfo unreachable_time = 14;</code>
+       *
+       * <pre>
+       * The time (according to the master's clock) when the agent where
+       * this task was running became unreachable. This is only set on
+       * status updates for tasks running on agents that are unreachable
+       * (e.g., partitioned away from the master).
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.TimeInfo.Builder getUnreachableTimeBuilder() {
+        bitField0_ |= 0x00004000;
+        onChanged();
+        return getUnreachableTimeFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.TimeInfo unreachable_time = 14;</code>
+       *
+       * <pre>
+       * The time (according to the master's clock) when the agent where
+       * this task was running became unreachable. This is only set on
+       * status updates for tasks running on agents that are unreachable
+       * (e.g., partitioned away from the master).
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.TimeInfoOrBuilder getUnreachableTimeOrBuilder() {
+        if (unreachableTimeBuilder_ != null) {
+          return unreachableTimeBuilder_.getMessageOrBuilder();
+        } else {
+          return unreachableTime_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.TimeInfo unreachable_time = 14;</code>
+       *
+       * <pre>
+       * The time (according to the master's clock) when the agent where
+       * this task was running became unreachable. This is only set on
+       * status updates for tasks running on agents that are unreachable
+       * (e.g., partitioned away from the master).
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.TimeInfo, org.apache.mesos.v1.Protos.TimeInfo.Builder, org.apache.mesos.v1.Protos.TimeInfoOrBuilder> 
+          getUnreachableTimeFieldBuilder() {
+        if (unreachableTimeBuilder_ == null) {
+          unreachableTimeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.TimeInfo, org.apache.mesos.v1.Protos.TimeInfo.Builder, org.apache.mesos.v1.Protos.TimeInfoOrBuilder>(
+                  unreachableTime_,
+                  getParentForChildren(),
+                  isClean());
+          unreachableTime_ = null;
+        }
+        return unreachableTimeBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.TaskStatus)
+    }
+
+    static {
+      defaultInstance = new TaskStatus(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.TaskStatus)
+  }
+
+  public interface FiltersOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional double refuse_seconds = 1 [default = 5];
+    /**
+     * <code>optional double refuse_seconds = 1 [default = 5];</code>
+     *
+     * <pre>
+     * Time to consider unused resources refused. Note that all unused
+     * resources will be considered refused and use the default value
+     * (below) regardless of whether Filters was passed to
+     * SchedulerDriver::launchTasks. You MUST pass Filters with this
+     * field set to change this behavior (i.e., get another offer which
+     * includes unused resources sooner or later than the default).
+     * </pre>
+     */
+    boolean hasRefuseSeconds();
+    /**
+     * <code>optional double refuse_seconds = 1 [default = 5];</code>
+     *
+     * <pre>
+     * Time to consider unused resources refused. Note that all unused
+     * resources will be considered refused and use the default value
+     * (below) regardless of whether Filters was passed to
+     * SchedulerDriver::launchTasks. You MUST pass Filters with this
+     * field set to change this behavior (i.e., get another offer which
+     * includes unused resources sooner or later than the default).
+     * </pre>
+     */
+    double getRefuseSeconds();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.Filters}
+   *
+   * <pre>
+   **
+   * Describes possible filters that can be applied to unused resources
+   * (see SchedulerDriver::launchTasks) to influence the allocator.
+   * </pre>
+   */
+  public static final class Filters extends
+      com.google.protobuf.GeneratedMessage
+      implements FiltersOrBuilder {
+    // Use Filters.newBuilder() to construct.
+    private Filters(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Filters(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Filters defaultInstance;
+    public static Filters getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Filters getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Filters(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 9: {
+              bitField0_ |= 0x00000001;
+              refuseSeconds_ = input.readDouble();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Filters_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Filters_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.Filters.class, org.apache.mesos.v1.Protos.Filters.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Filters> PARSER =
+        new com.google.protobuf.AbstractParser<Filters>() {
+      public Filters parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Filters(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Filters> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // optional double refuse_seconds = 1 [default = 5];
+    public static final int REFUSE_SECONDS_FIELD_NUMBER = 1;
+    private double refuseSeconds_;
+    /**
+     * <code>optional double refuse_seconds = 1 [default = 5];</code>
+     *
+     * <pre>
+     * Time to consider unused resources refused. Note that all unused
+     * resources will be considered refused and use the default value
+     * (below) regardless of whether Filters was passed to
+     * SchedulerDriver::launchTasks. You MUST pass Filters with this
+     * field set to change this behavior (i.e., get another offer which
+     * includes unused resources sooner or later than the default).
+     * </pre>
+     */
+    public boolean hasRefuseSeconds() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional double refuse_seconds = 1 [default = 5];</code>
+     *
+     * <pre>
+     * Time to consider unused resources refused. Note that all unused
+     * resources will be considered refused and use the default value
+     * (below) regardless of whether Filters was passed to
+     * SchedulerDriver::launchTasks. You MUST pass Filters with this
+     * field set to change this behavior (i.e., get another offer which
+     * includes unused resources sooner or later than the default).
+     * </pre>
+     */
+    public double getRefuseSeconds() {
+      return refuseSeconds_;
+    }
+
+    private void initFields() {
+      refuseSeconds_ = 5D;
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeDouble(1, refuseSeconds_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(1, refuseSeconds_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.Filters parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Filters parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Filters parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Filters parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Filters parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Filters parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Filters parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Filters parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Filters parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Filters parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.Filters prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.Filters}
+     *
+     * <pre>
+     **
+     * Describes possible filters that can be applied to unused resources
+     * (see SchedulerDriver::launchTasks) to influence the allocator.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.FiltersOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Filters_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Filters_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.Filters.class, org.apache.mesos.v1.Protos.Filters.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.Filters.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        refuseSeconds_ = 5D;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Filters_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.Filters getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.Filters.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.Filters build() {
+        org.apache.mesos.v1.Protos.Filters result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.Filters buildPartial() {
+        org.apache.mesos.v1.Protos.Filters result = new org.apache.mesos.v1.Protos.Filters(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.refuseSeconds_ = refuseSeconds_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.Filters) {
+          return mergeFrom((org.apache.mesos.v1.Protos.Filters)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.Filters other) {
+        if (other == org.apache.mesos.v1.Protos.Filters.getDefaultInstance()) return this;
+        if (other.hasRefuseSeconds()) {
+          setRefuseSeconds(other.getRefuseSeconds());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.Filters parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.Filters) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional double refuse_seconds = 1 [default = 5];
+      private double refuseSeconds_ = 5D;
+      /**
+       * <code>optional double refuse_seconds = 1 [default = 5];</code>
+       *
+       * <pre>
+       * Time to consider unused resources refused. Note that all unused
+       * resources will be considered refused and use the default value
+       * (below) regardless of whether Filters was passed to
+       * SchedulerDriver::launchTasks. You MUST pass Filters with this
+       * field set to change this behavior (i.e., get another offer which
+       * includes unused resources sooner or later than the default).
+       * </pre>
+       */
+      public boolean hasRefuseSeconds() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional double refuse_seconds = 1 [default = 5];</code>
+       *
+       * <pre>
+       * Time to consider unused resources refused. Note that all unused
+       * resources will be considered refused and use the default value
+       * (below) regardless of whether Filters was passed to
+       * SchedulerDriver::launchTasks. You MUST pass Filters with this
+       * field set to change this behavior (i.e., get another offer which
+       * includes unused resources sooner or later than the default).
+       * </pre>
+       */
+      public double getRefuseSeconds() {
+        return refuseSeconds_;
+      }
+      /**
+       * <code>optional double refuse_seconds = 1 [default = 5];</code>
+       *
+       * <pre>
+       * Time to consider unused resources refused. Note that all unused
+       * resources will be considered refused and use the default value
+       * (below) regardless of whether Filters was passed to
+       * SchedulerDriver::launchTasks. You MUST pass Filters with this
+       * field set to change this behavior (i.e., get another offer which
+       * includes unused resources sooner or later than the default).
+       * </pre>
+       */
+      public Builder setRefuseSeconds(double value) {
+        bitField0_ |= 0x00000001;
+        refuseSeconds_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double refuse_seconds = 1 [default = 5];</code>
+       *
+       * <pre>
+       * Time to consider unused resources refused. Note that all unused
+       * resources will be considered refused and use the default value
+       * (below) regardless of whether Filters was passed to
+       * SchedulerDriver::launchTasks. You MUST pass Filters with this
+       * field set to change this behavior (i.e., get another offer which
+       * includes unused resources sooner or later than the default).
+       * </pre>
+       */
+      public Builder clearRefuseSeconds() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        refuseSeconds_ = 5D;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.Filters)
+    }
+
+    static {
+      defaultInstance = new Filters(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.Filters)
+  }
+
+  public interface EnvironmentOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // repeated .mesos.v1.Environment.Variable variables = 1;
+    /**
+     * <code>repeated .mesos.v1.Environment.Variable variables = 1;</code>
+     */
+    java.util.List<org.apache.mesos.v1.Protos.Environment.Variable> 
+        getVariablesList();
+    /**
+     * <code>repeated .mesos.v1.Environment.Variable variables = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.Environment.Variable getVariables(int index);
+    /**
+     * <code>repeated .mesos.v1.Environment.Variable variables = 1;</code>
+     */
+    int getVariablesCount();
+    /**
+     * <code>repeated .mesos.v1.Environment.Variable variables = 1;</code>
+     */
+    java.util.List<? extends org.apache.mesos.v1.Protos.Environment.VariableOrBuilder> 
+        getVariablesOrBuilderList();
+    /**
+     * <code>repeated .mesos.v1.Environment.Variable variables = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.Environment.VariableOrBuilder getVariablesOrBuilder(
+        int index);
+  }
+  /**
+   * Protobuf type {@code mesos.v1.Environment}
+   *
+   * <pre>
+   **
+   * Describes a collection of environment variables. This is used with
+   * CommandInfo in order to set environment variables before running a
+   * command. The contents of each variable may be specified as a string
+   * or a Secret; only one of `value` and `secret` must be set.
+   * </pre>
+   */
+  public static final class Environment extends
+      com.google.protobuf.GeneratedMessage
+      implements EnvironmentOrBuilder {
+    // Use Environment.newBuilder() to construct.
+    private Environment(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Environment(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Environment defaultInstance;
+    public static Environment getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Environment getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Environment(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                variables_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Environment.Variable>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              variables_.add(input.readMessage(org.apache.mesos.v1.Protos.Environment.Variable.PARSER, extensionRegistry));
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+          variables_ = java.util.Collections.unmodifiableList(variables_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Environment_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Environment_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.Environment.class, org.apache.mesos.v1.Protos.Environment.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Environment> PARSER =
+        new com.google.protobuf.AbstractParser<Environment>() {
+      public Environment parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Environment(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Environment> getParserForType() {
+      return PARSER;
+    }
+
+    public interface VariableOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required string name = 1;
+      /**
+       * <code>required string name = 1;</code>
+       */
+      boolean hasName();
+      /**
+       * <code>required string name = 1;</code>
+       */
+      java.lang.String getName();
+      /**
+       * <code>required string name = 1;</code>
+       */
+      com.google.protobuf.ByteString
+          getNameBytes();
+
+      // optional .mesos.v1.Environment.Variable.Type type = 3 [default = VALUE];
+      /**
+       * <code>optional .mesos.v1.Environment.Variable.Type type = 3 [default = VALUE];</code>
+       *
+       * <pre>
+       * In Mesos 1.2, the `Environment.variables.value` message was made
+       * optional. The default type for `Environment.variables.type` is now VALUE,
+       * which requires `value` to be set, maintaining backward compatibility.
+       *
+       * TODO(greggomann): The default can be removed in Mesos 2.1 (MESOS-7134).
+       * </pre>
+       */
+      boolean hasType();
+      /**
+       * <code>optional .mesos.v1.Environment.Variable.Type type = 3 [default = VALUE];</code>
+       *
+       * <pre>
+       * In Mesos 1.2, the `Environment.variables.value` message was made
+       * optional. The default type for `Environment.variables.type` is now VALUE,
+       * which requires `value` to be set, maintaining backward compatibility.
+       *
+       * TODO(greggomann): The default can be removed in Mesos 2.1 (MESOS-7134).
+       * </pre>
+       */
+      org.apache.mesos.v1.Protos.Environment.Variable.Type getType();
+
+      // optional string value = 2;
+      /**
+       * <code>optional string value = 2;</code>
+       *
+       * <pre>
+       * Only one of `value` and `secret` must be set.
+       * </pre>
+       */
+      boolean hasValue();
+      /**
+       * <code>optional string value = 2;</code>
+       *
+       * <pre>
+       * Only one of `value` and `secret` must be set.
+       * </pre>
+       */
+      java.lang.String getValue();
+      /**
+       * <code>optional string value = 2;</code>
+       *
+       * <pre>
+       * Only one of `value` and `secret` must be set.
+       * </pre>
+       */
+      com.google.protobuf.ByteString
+          getValueBytes();
+
+      // optional .mesos.v1.Secret secret = 4;
+      /**
+       * <code>optional .mesos.v1.Secret secret = 4;</code>
+       */
+      boolean hasSecret();
+      /**
+       * <code>optional .mesos.v1.Secret secret = 4;</code>
+       */
+      org.apache.mesos.v1.Protos.Secret getSecret();
+      /**
+       * <code>optional .mesos.v1.Secret secret = 4;</code>
+       */
+      org.apache.mesos.v1.Protos.SecretOrBuilder getSecretOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.Environment.Variable}
+     */
+    public static final class Variable extends
+        com.google.protobuf.GeneratedMessage
+        implements VariableOrBuilder {
+      // Use Variable.newBuilder() to construct.
+      private Variable(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Variable(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Variable defaultInstance;
+      public static Variable getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Variable getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Variable(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                bitField0_ |= 0x00000001;
+                name_ = input.readBytes();
+                break;
+              }
+              case 18: {
+                bitField0_ |= 0x00000004;
+                value_ = input.readBytes();
+                break;
+              }
+              case 24: {
+                int rawValue = input.readEnum();
+                org.apache.mesos.v1.Protos.Environment.Variable.Type value = org.apache.mesos.v1.Protos.Environment.Variable.Type.valueOf(rawValue);
+                if (value == null) {
+                  unknownFields.mergeVarintField(3, rawValue);
+                } else {
+                  bitField0_ |= 0x00000002;
+                  type_ = value;
+                }
+                break;
+              }
+              case 34: {
+                org.apache.mesos.v1.Protos.Secret.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                  subBuilder = secret_.toBuilder();
+                }
+                secret_ = input.readMessage(org.apache.mesos.v1.Protos.Secret.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(secret_);
+                  secret_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000008;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Environment_Variable_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Environment_Variable_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.Environment.Variable.class, org.apache.mesos.v1.Protos.Environment.Variable.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Variable> PARSER =
+          new com.google.protobuf.AbstractParser<Variable>() {
+        public Variable parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Variable(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Variable> getParserForType() {
+        return PARSER;
+      }
+
+      /**
+       * Protobuf enum {@code mesos.v1.Environment.Variable.Type}
+       */
+      public enum Type
+          implements com.google.protobuf.ProtocolMessageEnum {
+        /**
+         * <code>UNKNOWN = 0;</code>
+         */
+        UNKNOWN(0, 0),
+        /**
+         * <code>VALUE = 1;</code>
+         */
+        VALUE(1, 1),
+        /**
+         * <code>SECRET = 2;</code>
+         */
+        SECRET(2, 2),
+        ;
+
+        /**
+         * <code>UNKNOWN = 0;</code>
+         */
+        public static final int UNKNOWN_VALUE = 0;
+        /**
+         * <code>VALUE = 1;</code>
+         */
+        public static final int VALUE_VALUE = 1;
+        /**
+         * <code>SECRET = 2;</code>
+         */
+        public static final int SECRET_VALUE = 2;
+
+
+        public final int getNumber() { return value; }
+
+        public static Type valueOf(int value) {
+          switch (value) {
+            case 0: return UNKNOWN;
+            case 1: return VALUE;
+            case 2: return SECRET;
+            default: return null;
+          }
+        }
+
+        public static com.google.protobuf.Internal.EnumLiteMap<Type>
+            internalGetValueMap() {
+          return internalValueMap;
+        }
+        private static com.google.protobuf.Internal.EnumLiteMap<Type>
+            internalValueMap =
+              new com.google.protobuf.Internal.EnumLiteMap<Type>() {
+                public Type findValueByNumber(int number) {
+                  return Type.valueOf(number);
+                }
+              };
+
+        public final com.google.protobuf.Descriptors.EnumValueDescriptor
+            getValueDescriptor() {
+          return getDescriptor().getValues().get(index);
+        }
+        public final com.google.protobuf.Descriptors.EnumDescriptor
+            getDescriptorForType() {
+          return getDescriptor();
+        }
+        public static final com.google.protobuf.Descriptors.EnumDescriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.Environment.Variable.getDescriptor().getEnumTypes().get(0);
+        }
+
+        private static final Type[] VALUES = values();
+
+        public static Type valueOf(
+            com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+          if (desc.getType() != getDescriptor()) {
+            throw new java.lang.IllegalArgumentException(
+              "EnumValueDescriptor is not for this type.");
+          }
+          return VALUES[desc.getIndex()];
+        }
+
+        private final int index;
+        private final int value;
+
+        private Type(int index, int value) {
+          this.index = index;
+          this.value = value;
+        }
+
+        // @@protoc_insertion_point(enum_scope:mesos.v1.Environment.Variable.Type)
+      }
+
+      private int bitField0_;
+      // required string name = 1;
+      public static final int NAME_FIELD_NUMBER = 1;
+      private java.lang.Object name_;
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public boolean hasName() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public java.lang.String getName() {
+        java.lang.Object ref = name_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            name_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        java.lang.Object ref = name_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          name_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      // optional .mesos.v1.Environment.Variable.Type type = 3 [default = VALUE];
+      public static final int TYPE_FIELD_NUMBER = 3;
+      private org.apache.mesos.v1.Protos.Environment.Variable.Type type_;
+      /**
+       * <code>optional .mesos.v1.Environment.Variable.Type type = 3 [default = VALUE];</code>
+       *
+       * <pre>
+       * In Mesos 1.2, the `Environment.variables.value` message was made
+       * optional. The default type for `Environment.variables.type` is now VALUE,
+       * which requires `value` to be set, maintaining backward compatibility.
+       *
+       * TODO(greggomann): The default can be removed in Mesos 2.1 (MESOS-7134).
+       * </pre>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.v1.Environment.Variable.Type type = 3 [default = VALUE];</code>
+       *
+       * <pre>
+       * In Mesos 1.2, the `Environment.variables.value` message was made
+       * optional. The default type for `Environment.variables.type` is now VALUE,
+       * which requires `value` to be set, maintaining backward compatibility.
+       *
+       * TODO(greggomann): The default can be removed in Mesos 2.1 (MESOS-7134).
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Environment.Variable.Type getType() {
+        return type_;
+      }
+
+      // optional string value = 2;
+      public static final int VALUE_FIELD_NUMBER = 2;
+      private java.lang.Object value_;
+      /**
+       * <code>optional string value = 2;</code>
+       *
+       * <pre>
+       * Only one of `value` and `secret` must be set.
+       * </pre>
+       */
+      public boolean hasValue() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional string value = 2;</code>
+       *
+       * <pre>
+       * Only one of `value` and `secret` must be set.
+       * </pre>
+       */
+      public java.lang.String getValue() {
+        java.lang.Object ref = value_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            value_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>optional string value = 2;</code>
+       *
+       * <pre>
+       * Only one of `value` and `secret` must be set.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getValueBytes() {
+        java.lang.Object ref = value_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          value_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      // optional .mesos.v1.Secret secret = 4;
+      public static final int SECRET_FIELD_NUMBER = 4;
+      private org.apache.mesos.v1.Protos.Secret secret_;
+      /**
+       * <code>optional .mesos.v1.Secret secret = 4;</code>
+       */
+      public boolean hasSecret() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.v1.Secret secret = 4;</code>
+       */
+      public org.apache.mesos.v1.Protos.Secret getSecret() {
+        return secret_;
+      }
+      /**
+       * <code>optional .mesos.v1.Secret secret = 4;</code>
+       */
+      public org.apache.mesos.v1.Protos.SecretOrBuilder getSecretOrBuilder() {
+        return secret_;
+      }
+
+      private void initFields() {
+        name_ = "";
+        type_ = org.apache.mesos.v1.Protos.Environment.Variable.Type.VALUE;
+        value_ = "";
+        secret_ = org.apache.mesos.v1.Protos.Secret.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasName()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (hasSecret()) {
+          if (!getSecret().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeBytes(1, getNameBytes());
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeBytes(2, getValueBytes());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeEnum(3, type_.getNumber());
+        }
+        if (((bitField0_ & 0x00000008) == 0x00000008)) {
+          output.writeMessage(4, secret_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(1, getNameBytes());
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(2, getValueBytes());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeEnumSize(3, type_.getNumber());
+        }
+        if (((bitField0_ & 0x00000008) == 0x00000008)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(4, secret_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.Protos.Environment.Variable parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.Environment.Variable parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Environment.Variable parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.Environment.Variable parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Environment.Variable parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Environment.Variable parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Environment.Variable parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Environment.Variable parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Environment.Variable parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Environment.Variable parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.Protos.Environment.Variable prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.Environment.Variable}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.Protos.Environment.VariableOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Environment_Variable_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Environment_Variable_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.Environment.Variable.class, org.apache.mesos.v1.Protos.Environment.Variable.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.Protos.Environment.Variable.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getSecretFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          name_ = "";
+          bitField0_ = (bitField0_ & ~0x00000001);
+          type_ = org.apache.mesos.v1.Protos.Environment.Variable.Type.VALUE;
+          bitField0_ = (bitField0_ & ~0x00000002);
+          value_ = "";
+          bitField0_ = (bitField0_ & ~0x00000004);
+          if (secretBuilder_ == null) {
+            secret_ = org.apache.mesos.v1.Protos.Secret.getDefaultInstance();
+          } else {
+            secretBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000008);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Environment_Variable_descriptor;
+        }
+
+        public org.apache.mesos.v1.Protos.Environment.Variable getDefaultInstanceForType() {
+          return org.apache.mesos.v1.Protos.Environment.Variable.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.Protos.Environment.Variable build() {
+          org.apache.mesos.v1.Protos.Environment.Variable result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.Protos.Environment.Variable buildPartial() {
+          org.apache.mesos.v1.Protos.Environment.Variable result = new org.apache.mesos.v1.Protos.Environment.Variable(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.name_ = name_;
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          result.type_ = type_;
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          result.value_ = value_;
+          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+            to_bitField0_ |= 0x00000008;
+          }
+          if (secretBuilder_ == null) {
+            result.secret_ = secret_;
+          } else {
+            result.secret_ = secretBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.Protos.Environment.Variable) {
+            return mergeFrom((org.apache.mesos.v1.Protos.Environment.Variable)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.Protos.Environment.Variable other) {
+          if (other == org.apache.mesos.v1.Protos.Environment.Variable.getDefaultInstance()) return this;
+          if (other.hasName()) {
+            bitField0_ |= 0x00000001;
+            name_ = other.name_;
+            onChanged();
+          }
+          if (other.hasType()) {
+            setType(other.getType());
+          }
+          if (other.hasValue()) {
+            bitField0_ |= 0x00000004;
+            value_ = other.value_;
+            onChanged();
+          }
+          if (other.hasSecret()) {
+            mergeSecret(other.getSecret());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasName()) {
+            
+            return false;
+          }
+          if (hasSecret()) {
+            if (!getSecret().isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.Protos.Environment.Variable parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.Protos.Environment.Variable) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required string name = 1;
+        private java.lang.Object name_ = "";
+        /**
+         * <code>required string name = 1;</code>
+         */
+        public boolean hasName() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required string name = 1;</code>
+         */
+        public java.lang.String getName() {
+          java.lang.Object ref = name_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            name_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>required string name = 1;</code>
+         */
+        public com.google.protobuf.ByteString
+            getNameBytes() {
+          java.lang.Object ref = name_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            name_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>required string name = 1;</code>
+         */
+        public Builder setName(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          name_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required string name = 1;</code>
+         */
+        public Builder clearName() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          name_ = getDefaultInstance().getName();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required string name = 1;</code>
+         */
+        public Builder setNameBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          name_ = value;
+          onChanged();
+          return this;
+        }
+
+        // optional .mesos.v1.Environment.Variable.Type type = 3 [default = VALUE];
+        private org.apache.mesos.v1.Protos.Environment.Variable.Type type_ = org.apache.mesos.v1.Protos.Environment.Variable.Type.VALUE;
+        /**
+         * <code>optional .mesos.v1.Environment.Variable.Type type = 3 [default = VALUE];</code>
+         *
+         * <pre>
+         * In Mesos 1.2, the `Environment.variables.value` message was made
+         * optional. The default type for `Environment.variables.type` is now VALUE,
+         * which requires `value` to be set, maintaining backward compatibility.
+         *
+         * TODO(greggomann): The default can be removed in Mesos 2.1 (MESOS-7134).
+         * </pre>
+         */
+        public boolean hasType() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional .mesos.v1.Environment.Variable.Type type = 3 [default = VALUE];</code>
+         *
+         * <pre>
+         * In Mesos 1.2, the `Environment.variables.value` message was made
+         * optional. The default type for `Environment.variables.type` is now VALUE,
+         * which requires `value` to be set, maintaining backward compatibility.
+         *
+         * TODO(greggomann): The default can be removed in Mesos 2.1 (MESOS-7134).
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.Environment.Variable.Type getType() {
+          return type_;
+        }
+        /**
+         * <code>optional .mesos.v1.Environment.Variable.Type type = 3 [default = VALUE];</code>
+         *
+         * <pre>
+         * In Mesos 1.2, the `Environment.variables.value` message was made
+         * optional. The default type for `Environment.variables.type` is now VALUE,
+         * which requires `value` to be set, maintaining backward compatibility.
+         *
+         * TODO(greggomann): The default can be removed in Mesos 2.1 (MESOS-7134).
+         * </pre>
+         */
+        public Builder setType(org.apache.mesos.v1.Protos.Environment.Variable.Type value) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          bitField0_ |= 0x00000002;
+          type_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Environment.Variable.Type type = 3 [default = VALUE];</code>
+         *
+         * <pre>
+         * In Mesos 1.2, the `Environment.variables.value` message was made
+         * optional. The default type for `Environment.variables.type` is now VALUE,
+         * which requires `value` to be set, maintaining backward compatibility.
+         *
+         * TODO(greggomann): The default can be removed in Mesos 2.1 (MESOS-7134).
+         * </pre>
+         */
+        public Builder clearType() {
+          bitField0_ = (bitField0_ & ~0x00000002);
+          type_ = org.apache.mesos.v1.Protos.Environment.Variable.Type.VALUE;
+          onChanged();
+          return this;
+        }
+
+        // optional string value = 2;
+        private java.lang.Object value_ = "";
+        /**
+         * <code>optional string value = 2;</code>
+         *
+         * <pre>
+         * Only one of `value` and `secret` must be set.
+         * </pre>
+         */
+        public boolean hasValue() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional string value = 2;</code>
+         *
+         * <pre>
+         * Only one of `value` and `secret` must be set.
+         * </pre>
+         */
+        public java.lang.String getValue() {
+          java.lang.Object ref = value_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            value_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>optional string value = 2;</code>
+         *
+         * <pre>
+         * Only one of `value` and `secret` must be set.
+         * </pre>
+         */
+        public com.google.protobuf.ByteString
+            getValueBytes() {
+          java.lang.Object ref = value_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            value_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>optional string value = 2;</code>
+         *
+         * <pre>
+         * Only one of `value` and `secret` must be set.
+         * </pre>
+         */
+        public Builder setValue(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+          value_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string value = 2;</code>
+         *
+         * <pre>
+         * Only one of `value` and `secret` must be set.
+         * </pre>
+         */
+        public Builder clearValue() {
+          bitField0_ = (bitField0_ & ~0x00000004);
+          value_ = getDefaultInstance().getValue();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string value = 2;</code>
+         *
+         * <pre>
+         * Only one of `value` and `secret` must be set.
+         * </pre>
+         */
+        public Builder setValueBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+          value_ = value;
+          onChanged();
+          return this;
+        }
+
+        // optional .mesos.v1.Secret secret = 4;
+        private org.apache.mesos.v1.Protos.Secret secret_ = org.apache.mesos.v1.Protos.Secret.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Secret, org.apache.mesos.v1.Protos.Secret.Builder, org.apache.mesos.v1.Protos.SecretOrBuilder> secretBuilder_;
+        /**
+         * <code>optional .mesos.v1.Secret secret = 4;</code>
+         */
+        public boolean hasSecret() {
+          return ((bitField0_ & 0x00000008) == 0x00000008);
+        }
+        /**
+         * <code>optional .mesos.v1.Secret secret = 4;</code>
+         */
+        public org.apache.mesos.v1.Protos.Secret getSecret() {
+          if (secretBuilder_ == null) {
+            return secret_;
+          } else {
+            return secretBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Secret secret = 4;</code>
+         */
+        public Builder setSecret(org.apache.mesos.v1.Protos.Secret value) {
+          if (secretBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            secret_ = value;
+            onChanged();
+          } else {
+            secretBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000008;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Secret secret = 4;</code>
+         */
+        public Builder setSecret(
+            org.apache.mesos.v1.Protos.Secret.Builder builderForValue) {
+          if (secretBuilder_ == null) {
+            secret_ = builderForValue.build();
+            onChanged();
+          } else {
+            secretBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000008;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Secret secret = 4;</code>
+         */
+        public Builder mergeSecret(org.apache.mesos.v1.Protos.Secret value) {
+          if (secretBuilder_ == null) {
+            if (((bitField0_ & 0x00000008) == 0x00000008) &&
+                secret_ != org.apache.mesos.v1.Protos.Secret.getDefaultInstance()) {
+              secret_ =
+                org.apache.mesos.v1.Protos.Secret.newBuilder(secret_).mergeFrom(value).buildPartial();
+            } else {
+              secret_ = value;
+            }
+            onChanged();
+          } else {
+            secretBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000008;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Secret secret = 4;</code>
+         */
+        public Builder clearSecret() {
+          if (secretBuilder_ == null) {
+            secret_ = org.apache.mesos.v1.Protos.Secret.getDefaultInstance();
+            onChanged();
+          } else {
+            secretBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000008);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Secret secret = 4;</code>
+         */
+        public org.apache.mesos.v1.Protos.Secret.Builder getSecretBuilder() {
+          bitField0_ |= 0x00000008;
+          onChanged();
+          return getSecretFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.v1.Secret secret = 4;</code>
+         */
+        public org.apache.mesos.v1.Protos.SecretOrBuilder getSecretOrBuilder() {
+          if (secretBuilder_ != null) {
+            return secretBuilder_.getMessageOrBuilder();
+          } else {
+            return secret_;
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Secret secret = 4;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Secret, org.apache.mesos.v1.Protos.Secret.Builder, org.apache.mesos.v1.Protos.SecretOrBuilder> 
+            getSecretFieldBuilder() {
+          if (secretBuilder_ == null) {
+            secretBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.Secret, org.apache.mesos.v1.Protos.Secret.Builder, org.apache.mesos.v1.Protos.SecretOrBuilder>(
+                    secret_,
+                    getParentForChildren(),
+                    isClean());
+            secret_ = null;
+          }
+          return secretBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.Environment.Variable)
+      }
+
+      static {
+        defaultInstance = new Variable(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.Environment.Variable)
+    }
+
+    // repeated .mesos.v1.Environment.Variable variables = 1;
+    public static final int VARIABLES_FIELD_NUMBER = 1;
+    private java.util.List<org.apache.mesos.v1.Protos.Environment.Variable> variables_;
+    /**
+     * <code>repeated .mesos.v1.Environment.Variable variables = 1;</code>
+     */
+    public java.util.List<org.apache.mesos.v1.Protos.Environment.Variable> getVariablesList() {
+      return variables_;
+    }
+    /**
+     * <code>repeated .mesos.v1.Environment.Variable variables = 1;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.v1.Protos.Environment.VariableOrBuilder> 
+        getVariablesOrBuilderList() {
+      return variables_;
+    }
+    /**
+     * <code>repeated .mesos.v1.Environment.Variable variables = 1;</code>
+     */
+    public int getVariablesCount() {
+      return variables_.size();
+    }
+    /**
+     * <code>repeated .mesos.v1.Environment.Variable variables = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.Environment.Variable getVariables(int index) {
+      return variables_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.v1.Environment.Variable variables = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.Environment.VariableOrBuilder getVariablesOrBuilder(
+        int index) {
+      return variables_.get(index);
+    }
+
+    private void initFields() {
+      variables_ = java.util.Collections.emptyList();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      for (int i = 0; i < getVariablesCount(); i++) {
+        if (!getVariables(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      for (int i = 0; i < variables_.size(); i++) {
+        output.writeMessage(1, variables_.get(i));
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      for (int i = 0; i < variables_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, variables_.get(i));
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.Environment parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Environment parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Environment parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Environment parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Environment parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Environment parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Environment parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Environment parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Environment parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Environment parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.Environment prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.Environment}
+     *
+     * <pre>
+     **
+     * Describes a collection of environment variables. This is used with
+     * CommandInfo in order to set environment variables before running a
+     * command. The contents of each variable may be specified as a string
+     * or a Secret; only one of `value` and `secret` must be set.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.EnvironmentOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Environment_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Environment_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.Environment.class, org.apache.mesos.v1.Protos.Environment.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.Environment.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getVariablesFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (variablesBuilder_ == null) {
+          variables_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+        } else {
+          variablesBuilder_.clear();
+        }
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Environment_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.Environment getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.Environment.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.Environment build() {
+        org.apache.mesos.v1.Protos.Environment result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.Environment buildPartial() {
+        org.apache.mesos.v1.Protos.Environment result = new org.apache.mesos.v1.Protos.Environment(this);
+        int from_bitField0_ = bitField0_;
+        if (variablesBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            variables_ = java.util.Collections.unmodifiableList(variables_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.variables_ = variables_;
+        } else {
+          result.variables_ = variablesBuilder_.build();
+        }
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.Environment) {
+          return mergeFrom((org.apache.mesos.v1.Protos.Environment)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.Environment other) {
+        if (other == org.apache.mesos.v1.Protos.Environment.getDefaultInstance()) return this;
+        if (variablesBuilder_ == null) {
+          if (!other.variables_.isEmpty()) {
+            if (variables_.isEmpty()) {
+              variables_ = other.variables_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureVariablesIsMutable();
+              variables_.addAll(other.variables_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.variables_.isEmpty()) {
+            if (variablesBuilder_.isEmpty()) {
+              variablesBuilder_.dispose();
+              variablesBuilder_ = null;
+              variables_ = other.variables_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              variablesBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getVariablesFieldBuilder() : null;
+            } else {
+              variablesBuilder_.addAllMessages(other.variables_);
+            }
+          }
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        for (int i = 0; i < getVariablesCount(); i++) {
+          if (!getVariables(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.Environment parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.Environment) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // repeated .mesos.v1.Environment.Variable variables = 1;
+      private java.util.List<org.apache.mesos.v1.Protos.Environment.Variable> variables_ =
+        java.util.Collections.emptyList();
+      private void ensureVariablesIsMutable() {
+        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+          variables_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Environment.Variable>(variables_);
+          bitField0_ |= 0x00000001;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.Environment.Variable, org.apache.mesos.v1.Protos.Environment.Variable.Builder, org.apache.mesos.v1.Protos.Environment.VariableOrBuilder> variablesBuilder_;
+
+      /**
+       * <code>repeated .mesos.v1.Environment.Variable variables = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Environment.Variable> getVariablesList() {
+        if (variablesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(variables_);
+        } else {
+          return variablesBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Environment.Variable variables = 1;</code>
+       */
+      public int getVariablesCount() {
+        if (variablesBuilder_ == null) {
+          return variables_.size();
+        } else {
+          return variablesBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Environment.Variable variables = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.Environment.Variable getVariables(int index) {
+        if (variablesBuilder_ == null) {
+          return variables_.get(index);
+        } else {
+          return variablesBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Environment.Variable variables = 1;</code>
+       */
+      public Builder setVariables(
+          int index, org.apache.mesos.v1.Protos.Environment.Variable value) {
+        if (variablesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureVariablesIsMutable();
+          variables_.set(index, value);
+          onChanged();
+        } else {
+          variablesBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Environment.Variable variables = 1;</code>
+       */
+      public Builder setVariables(
+          int index, org.apache.mesos.v1.Protos.Environment.Variable.Builder builderForValue) {
+        if (variablesBuilder_ == null) {
+          ensureVariablesIsMutable();
+          variables_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          variablesBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Environment.Variable variables = 1;</code>
+       */
+      public Builder addVariables(org.apache.mesos.v1.Protos.Environment.Variable value) {
+        if (variablesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureVariablesIsMutable();
+          variables_.add(value);
+          onChanged();
+        } else {
+          variablesBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Environment.Variable variables = 1;</code>
+       */
+      public Builder addVariables(
+          int index, org.apache.mesos.v1.Protos.Environment.Variable value) {
+        if (variablesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureVariablesIsMutable();
+          variables_.add(index, value);
+          onChanged();
+        } else {
+          variablesBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Environment.Variable variables = 1;</code>
+       */
+      public Builder addVariables(
+          org.apache.mesos.v1.Protos.Environment.Variable.Builder builderForValue) {
+        if (variablesBuilder_ == null) {
+          ensureVariablesIsMutable();
+          variables_.add(builderForValue.build());
+          onChanged();
+        } else {
+          variablesBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Environment.Variable variables = 1;</code>
+       */
+      public Builder addVariables(
+          int index, org.apache.mesos.v1.Protos.Environment.Variable.Builder builderForValue) {
+        if (variablesBuilder_ == null) {
+          ensureVariablesIsMutable();
+          variables_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          variablesBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Environment.Variable variables = 1;</code>
+       */
+      public Builder addAllVariables(
+          java.lang.Iterable<? extends org.apache.mesos.v1.Protos.Environment.Variable> values) {
+        if (variablesBuilder_ == null) {
+          ensureVariablesIsMutable();
+          super.addAll(values, variables_);
+          onChanged();
+        } else {
+          variablesBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Environment.Variable variables = 1;</code>
+       */
+      public Builder clearVariables() {
+        if (variablesBuilder_ == null) {
+          variables_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+        } else {
+          variablesBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Environment.Variable variables = 1;</code>
+       */
+      public Builder removeVariables(int index) {
+        if (variablesBuilder_ == null) {
+          ensureVariablesIsMutable();
+          variables_.remove(index);
+          onChanged();
+        } else {
+          variablesBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Environment.Variable variables = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.Environment.Variable.Builder getVariablesBuilder(
+          int index) {
+        return getVariablesFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.Environment.Variable variables = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.Environment.VariableOrBuilder getVariablesOrBuilder(
+          int index) {
+        if (variablesBuilder_ == null) {
+          return variables_.get(index);  } else {
+          return variablesBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Environment.Variable variables = 1;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.Environment.VariableOrBuilder> 
+           getVariablesOrBuilderList() {
+        if (variablesBuilder_ != null) {
+          return variablesBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(variables_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Environment.Variable variables = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.Environment.Variable.Builder addVariablesBuilder() {
+        return getVariablesFieldBuilder().addBuilder(
+            org.apache.mesos.v1.Protos.Environment.Variable.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.Environment.Variable variables = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.Environment.Variable.Builder addVariablesBuilder(
+          int index) {
+        return getVariablesFieldBuilder().addBuilder(
+            index, org.apache.mesos.v1.Protos.Environment.Variable.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.Environment.Variable variables = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Environment.Variable.Builder> 
+           getVariablesBuilderList() {
+        return getVariablesFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.Environment.Variable, org.apache.mesos.v1.Protos.Environment.Variable.Builder, org.apache.mesos.v1.Protos.Environment.VariableOrBuilder> 
+          getVariablesFieldBuilder() {
+        if (variablesBuilder_ == null) {
+          variablesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.Environment.Variable, org.apache.mesos.v1.Protos.Environment.Variable.Builder, org.apache.mesos.v1.Protos.Environment.VariableOrBuilder>(
+                  variables_,
+                  ((bitField0_ & 0x00000001) == 0x00000001),
+                  getParentForChildren(),
+                  isClean());
+          variables_ = null;
+        }
+        return variablesBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.Environment)
+    }
+
+    static {
+      defaultInstance = new Environment(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.Environment)
+  }
+
+  public interface ParameterOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string key = 1;
+    /**
+     * <code>required string key = 1;</code>
+     */
+    boolean hasKey();
+    /**
+     * <code>required string key = 1;</code>
+     */
+    java.lang.String getKey();
+    /**
+     * <code>required string key = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getKeyBytes();
+
+    // required string value = 2;
+    /**
+     * <code>required string value = 2;</code>
+     */
+    boolean hasValue();
+    /**
+     * <code>required string value = 2;</code>
+     */
+    java.lang.String getValue();
+    /**
+     * <code>required string value = 2;</code>
+     */
+    com.google.protobuf.ByteString
+        getValueBytes();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.Parameter}
+   *
+   * <pre>
+   **
+   * A generic (key, value) pair used in various places for parameters.
+   * </pre>
+   */
+  public static final class Parameter extends
+      com.google.protobuf.GeneratedMessage
+      implements ParameterOrBuilder {
+    // Use Parameter.newBuilder() to construct.
+    private Parameter(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Parameter(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Parameter defaultInstance;
+    public static Parameter getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Parameter getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Parameter(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              key_ = input.readBytes();
+              break;
+            }
+            case 18: {
+              bitField0_ |= 0x00000002;
+              value_ = input.readBytes();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Parameter_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Parameter_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.Parameter.class, org.apache.mesos.v1.Protos.Parameter.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Parameter> PARSER =
+        new com.google.protobuf.AbstractParser<Parameter>() {
+      public Parameter parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Parameter(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Parameter> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string key = 1;
+    public static final int KEY_FIELD_NUMBER = 1;
+    private java.lang.Object key_;
+    /**
+     * <code>required string key = 1;</code>
+     */
+    public boolean hasKey() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string key = 1;</code>
+     */
+    public java.lang.String getKey() {
+      java.lang.Object ref = key_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          key_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string key = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getKeyBytes() {
+      java.lang.Object ref = key_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        key_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // required string value = 2;
+    public static final int VALUE_FIELD_NUMBER = 2;
+    private java.lang.Object value_;
+    /**
+     * <code>required string value = 2;</code>
+     */
+    public boolean hasValue() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>required string value = 2;</code>
+     */
+    public java.lang.String getValue() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          value_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string value = 2;</code>
+     */
+    public com.google.protobuf.ByteString
+        getValueBytes() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        value_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      key_ = "";
+      value_ = "";
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasKey()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasValue()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getKeyBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(2, getValueBytes());
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getKeyBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(2, getValueBytes());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.Parameter parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Parameter parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Parameter parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Parameter parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Parameter parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Parameter parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Parameter parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Parameter parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Parameter parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Parameter parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.Parameter prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.Parameter}
+     *
+     * <pre>
+     **
+     * A generic (key, value) pair used in various places for parameters.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.ParameterOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Parameter_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Parameter_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.Parameter.class, org.apache.mesos.v1.Protos.Parameter.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.Parameter.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        key_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        value_ = "";
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Parameter_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.Parameter getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.Parameter.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.Parameter build() {
+        org.apache.mesos.v1.Protos.Parameter result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.Parameter buildPartial() {
+        org.apache.mesos.v1.Protos.Parameter result = new org.apache.mesos.v1.Protos.Parameter(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.key_ = key_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.value_ = value_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.Parameter) {
+          return mergeFrom((org.apache.mesos.v1.Protos.Parameter)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.Parameter other) {
+        if (other == org.apache.mesos.v1.Protos.Parameter.getDefaultInstance()) return this;
+        if (other.hasKey()) {
+          bitField0_ |= 0x00000001;
+          key_ = other.key_;
+          onChanged();
+        }
+        if (other.hasValue()) {
+          bitField0_ |= 0x00000002;
+          value_ = other.value_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasKey()) {
+          
+          return false;
+        }
+        if (!hasValue()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.Parameter parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.Parameter) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string key = 1;
+      private java.lang.Object key_ = "";
+      /**
+       * <code>required string key = 1;</code>
+       */
+      public boolean hasKey() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string key = 1;</code>
+       */
+      public java.lang.String getKey() {
+        java.lang.Object ref = key_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          key_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string key = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getKeyBytes() {
+        java.lang.Object ref = key_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          key_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string key = 1;</code>
+       */
+      public Builder setKey(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        key_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string key = 1;</code>
+       */
+      public Builder clearKey() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        key_ = getDefaultInstance().getKey();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string key = 1;</code>
+       */
+      public Builder setKeyBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        key_ = value;
+        onChanged();
+        return this;
+      }
+
+      // required string value = 2;
+      private java.lang.Object value_ = "";
+      /**
+       * <code>required string value = 2;</code>
+       */
+      public boolean hasValue() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required string value = 2;</code>
+       */
+      public java.lang.String getValue() {
+        java.lang.Object ref = value_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          value_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string value = 2;</code>
+       */
+      public com.google.protobuf.ByteString
+          getValueBytes() {
+        java.lang.Object ref = value_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          value_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string value = 2;</code>
+       */
+      public Builder setValue(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string value = 2;</code>
+       */
+      public Builder clearValue() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        value_ = getDefaultInstance().getValue();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string value = 2;</code>
+       */
+      public Builder setValueBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.Parameter)
+    }
+
+    static {
+      defaultInstance = new Parameter(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.Parameter)
+  }
+
+  public interface ParametersOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // repeated .mesos.v1.Parameter parameter = 1;
+    /**
+     * <code>repeated .mesos.v1.Parameter parameter = 1;</code>
+     */
+    java.util.List<org.apache.mesos.v1.Protos.Parameter> 
+        getParameterList();
+    /**
+     * <code>repeated .mesos.v1.Parameter parameter = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.Parameter getParameter(int index);
+    /**
+     * <code>repeated .mesos.v1.Parameter parameter = 1;</code>
+     */
+    int getParameterCount();
+    /**
+     * <code>repeated .mesos.v1.Parameter parameter = 1;</code>
+     */
+    java.util.List<? extends org.apache.mesos.v1.Protos.ParameterOrBuilder> 
+        getParameterOrBuilderList();
+    /**
+     * <code>repeated .mesos.v1.Parameter parameter = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.ParameterOrBuilder getParameterOrBuilder(
+        int index);
+  }
+  /**
+   * Protobuf type {@code mesos.v1.Parameters}
+   *
+   * <pre>
+   **
+   * Collection of Parameter.
+   * </pre>
+   */
+  public static final class Parameters extends
+      com.google.protobuf.GeneratedMessage
+      implements ParametersOrBuilder {
+    // Use Parameters.newBuilder() to construct.
+    private Parameters(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Parameters(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Parameters defaultInstance;
+    public static Parameters getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Parameters getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Parameters(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                parameter_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Parameter>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              parameter_.add(input.readMessage(org.apache.mesos.v1.Protos.Parameter.PARSER, extensionRegistry));
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+          parameter_ = java.util.Collections.unmodifiableList(parameter_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Parameters_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Parameters_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.Parameters.class, org.apache.mesos.v1.Protos.Parameters.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Parameters> PARSER =
+        new com.google.protobuf.AbstractParser<Parameters>() {
+      public Parameters parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Parameters(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Parameters> getParserForType() {
+      return PARSER;
+    }
+
+    // repeated .mesos.v1.Parameter parameter = 1;
+    public static final int PARAMETER_FIELD_NUMBER = 1;
+    private java.util.List<org.apache.mesos.v1.Protos.Parameter> parameter_;
+    /**
+     * <code>repeated .mesos.v1.Parameter parameter = 1;</code>
+     */
+    public java.util.List<org.apache.mesos.v1.Protos.Parameter> getParameterList() {
+      return parameter_;
+    }
+    /**
+     * <code>repeated .mesos.v1.Parameter parameter = 1;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.v1.Protos.ParameterOrBuilder> 
+        getParameterOrBuilderList() {
+      return parameter_;
+    }
+    /**
+     * <code>repeated .mesos.v1.Parameter parameter = 1;</code>
+     */
+    public int getParameterCount() {
+      return parameter_.size();
+    }
+    /**
+     * <code>repeated .mesos.v1.Parameter parameter = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.Parameter getParameter(int index) {
+      return parameter_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.v1.Parameter parameter = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.ParameterOrBuilder getParameterOrBuilder(
+        int index) {
+      return parameter_.get(index);
+    }
+
+    private void initFields() {
+      parameter_ = java.util.Collections.emptyList();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      for (int i = 0; i < getParameterCount(); i++) {
+        if (!getParameter(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      for (int i = 0; i < parameter_.size(); i++) {
+        output.writeMessage(1, parameter_.get(i));
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      for (int i = 0; i < parameter_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, parameter_.get(i));
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.Parameters parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Parameters parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Parameters parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Parameters parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Parameters parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Parameters parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Parameters parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Parameters parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Parameters parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Parameters parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.Parameters prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.Parameters}
+     *
+     * <pre>
+     **
+     * Collection of Parameter.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.ParametersOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Parameters_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Parameters_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.Parameters.class, org.apache.mesos.v1.Protos.Parameters.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.Parameters.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getParameterFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (parameterBuilder_ == null) {
+          parameter_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+        } else {
+          parameterBuilder_.clear();
+        }
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Parameters_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.Parameters getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.Parameters.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.Parameters build() {
+        org.apache.mesos.v1.Protos.Parameters result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.Parameters buildPartial() {
+        org.apache.mesos.v1.Protos.Parameters result = new org.apache.mesos.v1.Protos.Parameters(this);
+        int from_bitField0_ = bitField0_;
+        if (parameterBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            parameter_ = java.util.Collections.unmodifiableList(parameter_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.parameter_ = parameter_;
+        } else {
+          result.parameter_ = parameterBuilder_.build();
+        }
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.Parameters) {
+          return mergeFrom((org.apache.mesos.v1.Protos.Parameters)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.Parameters other) {
+        if (other == org.apache.mesos.v1.Protos.Parameters.getDefaultInstance()) return this;
+        if (parameterBuilder_ == null) {
+          if (!other.parameter_.isEmpty()) {
+            if (parameter_.isEmpty()) {
+              parameter_ = other.parameter_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureParameterIsMutable();
+              parameter_.addAll(other.parameter_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.parameter_.isEmpty()) {
+            if (parameterBuilder_.isEmpty()) {
+              parameterBuilder_.dispose();
+              parameterBuilder_ = null;
+              parameter_ = other.parameter_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              parameterBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getParameterFieldBuilder() : null;
+            } else {
+              parameterBuilder_.addAllMessages(other.parameter_);
+            }
+          }
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        for (int i = 0; i < getParameterCount(); i++) {
+          if (!getParameter(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.Parameters parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.Parameters) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // repeated .mesos.v1.Parameter parameter = 1;
+      private java.util.List<org.apache.mesos.v1.Protos.Parameter> parameter_ =
+        java.util.Collections.emptyList();
+      private void ensureParameterIsMutable() {
+        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+          parameter_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Parameter>(parameter_);
+          bitField0_ |= 0x00000001;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.Parameter, org.apache.mesos.v1.Protos.Parameter.Builder, org.apache.mesos.v1.Protos.ParameterOrBuilder> parameterBuilder_;
+
+      /**
+       * <code>repeated .mesos.v1.Parameter parameter = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Parameter> getParameterList() {
+        if (parameterBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(parameter_);
+        } else {
+          return parameterBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Parameter parameter = 1;</code>
+       */
+      public int getParameterCount() {
+        if (parameterBuilder_ == null) {
+          return parameter_.size();
+        } else {
+          return parameterBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Parameter parameter = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.Parameter getParameter(int index) {
+        if (parameterBuilder_ == null) {
+          return parameter_.get(index);
+        } else {
+          return parameterBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Parameter parameter = 1;</code>
+       */
+      public Builder setParameter(
+          int index, org.apache.mesos.v1.Protos.Parameter value) {
+        if (parameterBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureParameterIsMutable();
+          parameter_.set(index, value);
+          onChanged();
+        } else {
+          parameterBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Parameter parameter = 1;</code>
+       */
+      public Builder setParameter(
+          int index, org.apache.mesos.v1.Protos.Parameter.Builder builderForValue) {
+        if (parameterBuilder_ == null) {
+          ensureParameterIsMutable();
+          parameter_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          parameterBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Parameter parameter = 1;</code>
+       */
+      public Builder addParameter(org.apache.mesos.v1.Protos.Parameter value) {
+        if (parameterBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureParameterIsMutable();
+          parameter_.add(value);
+          onChanged();
+        } else {
+          parameterBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Parameter parameter = 1;</code>
+       */
+      public Builder addParameter(
+          int index, org.apache.mesos.v1.Protos.Parameter value) {
+        if (parameterBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureParameterIsMutable();
+          parameter_.add(index, value);
+          onChanged();
+        } else {
+          parameterBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Parameter parameter = 1;</code>
+       */
+      public Builder addParameter(
+          org.apache.mesos.v1.Protos.Parameter.Builder builderForValue) {
+        if (parameterBuilder_ == null) {
+          ensureParameterIsMutable();
+          parameter_.add(builderForValue.build());
+          onChanged();
+        } else {
+          parameterBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Parameter parameter = 1;</code>
+       */
+      public Builder addParameter(
+          int index, org.apache.mesos.v1.Protos.Parameter.Builder builderForValue) {
+        if (parameterBuilder_ == null) {
+          ensureParameterIsMutable();
+          parameter_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          parameterBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Parameter parameter = 1;</code>
+       */
+      public Builder addAllParameter(
+          java.lang.Iterable<? extends org.apache.mesos.v1.Protos.Parameter> values) {
+        if (parameterBuilder_ == null) {
+          ensureParameterIsMutable();
+          super.addAll(values, parameter_);
+          onChanged();
+        } else {
+          parameterBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Parameter parameter = 1;</code>
+       */
+      public Builder clearParameter() {
+        if (parameterBuilder_ == null) {
+          parameter_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+        } else {
+          parameterBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Parameter parameter = 1;</code>
+       */
+      public Builder removeParameter(int index) {
+        if (parameterBuilder_ == null) {
+          ensureParameterIsMutable();
+          parameter_.remove(index);
+          onChanged();
+        } else {
+          parameterBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Parameter parameter = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.Parameter.Builder getParameterBuilder(
+          int index) {
+        return getParameterFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.Parameter parameter = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.ParameterOrBuilder getParameterOrBuilder(
+          int index) {
+        if (parameterBuilder_ == null) {
+          return parameter_.get(index);  } else {
+          return parameterBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Parameter parameter = 1;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.ParameterOrBuilder> 
+           getParameterOrBuilderList() {
+        if (parameterBuilder_ != null) {
+          return parameterBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(parameter_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Parameter parameter = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.Parameter.Builder addParameterBuilder() {
+        return getParameterFieldBuilder().addBuilder(
+            org.apache.mesos.v1.Protos.Parameter.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.Parameter parameter = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.Parameter.Builder addParameterBuilder(
+          int index) {
+        return getParameterFieldBuilder().addBuilder(
+            index, org.apache.mesos.v1.Protos.Parameter.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.Parameter parameter = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Parameter.Builder> 
+           getParameterBuilderList() {
+        return getParameterFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.Parameter, org.apache.mesos.v1.Protos.Parameter.Builder, org.apache.mesos.v1.Protos.ParameterOrBuilder> 
+          getParameterFieldBuilder() {
+        if (parameterBuilder_ == null) {
+          parameterBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.Parameter, org.apache.mesos.v1.Protos.Parameter.Builder, org.apache.mesos.v1.Protos.ParameterOrBuilder>(
+                  parameter_,
+                  ((bitField0_ & 0x00000001) == 0x00000001),
+                  getParentForChildren(),
+                  isClean());
+          parameter_ = null;
+        }
+        return parameterBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.Parameters)
+    }
+
+    static {
+      defaultInstance = new Parameters(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.Parameters)
+  }
+
+  public interface CredentialOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string principal = 1;
+    /**
+     * <code>required string principal = 1;</code>
+     */
+    boolean hasPrincipal();
+    /**
+     * <code>required string principal = 1;</code>
+     */
+    java.lang.String getPrincipal();
+    /**
+     * <code>required string principal = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getPrincipalBytes();
+
+    // optional string secret = 2;
+    /**
+     * <code>optional string secret = 2;</code>
+     */
+    boolean hasSecret();
+    /**
+     * <code>optional string secret = 2;</code>
+     */
+    java.lang.String getSecret();
+    /**
+     * <code>optional string secret = 2;</code>
+     */
+    com.google.protobuf.ByteString
+        getSecretBytes();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.Credential}
+   *
+   * <pre>
+   **
+   * Credential used in various places for authentication and
+   * authorization.
+   *
+   * NOTE: A 'principal' is different from 'FrameworkInfo.user'. The
+   * former is used for authentication and authorization while the
+   * latter is used to determine the default user under which the
+   * framework's executors/tasks are run.
+   * </pre>
+   */
+  public static final class Credential extends
+      com.google.protobuf.GeneratedMessage
+      implements CredentialOrBuilder {
+    // Use Credential.newBuilder() to construct.
+    private Credential(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Credential(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Credential defaultInstance;
+    public static Credential getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Credential getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Credential(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              principal_ = input.readBytes();
+              break;
+            }
+            case 18: {
+              bitField0_ |= 0x00000002;
+              secret_ = input.readBytes();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Credential_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Credential_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.Credential.class, org.apache.mesos.v1.Protos.Credential.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Credential> PARSER =
+        new com.google.protobuf.AbstractParser<Credential>() {
+      public Credential parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Credential(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Credential> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string principal = 1;
+    public static final int PRINCIPAL_FIELD_NUMBER = 1;
+    private java.lang.Object principal_;
+    /**
+     * <code>required string principal = 1;</code>
+     */
+    public boolean hasPrincipal() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string principal = 1;</code>
+     */
+    public java.lang.String getPrincipal() {
+      java.lang.Object ref = principal_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          principal_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string principal = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getPrincipalBytes() {
+      java.lang.Object ref = principal_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        principal_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional string secret = 2;
+    public static final int SECRET_FIELD_NUMBER = 2;
+    private java.lang.Object secret_;
+    /**
+     * <code>optional string secret = 2;</code>
+     */
+    public boolean hasSecret() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional string secret = 2;</code>
+     */
+    public java.lang.String getSecret() {
+      java.lang.Object ref = secret_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          secret_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string secret = 2;</code>
+     */
+    public com.google.protobuf.ByteString
+        getSecretBytes() {
+      java.lang.Object ref = secret_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        secret_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      principal_ = "";
+      secret_ = "";
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasPrincipal()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getPrincipalBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(2, getSecretBytes());
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getPrincipalBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(2, getSecretBytes());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.Credential parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Credential parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Credential parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Credential parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Credential parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Credential parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Credential parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Credential parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Credential parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Credential parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.Credential prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.Credential}
+     *
+     * <pre>
+     **
+     * Credential used in various places for authentication and
+     * authorization.
+     *
+     * NOTE: A 'principal' is different from 'FrameworkInfo.user'. The
+     * former is used for authentication and authorization while the
+     * latter is used to determine the default user under which the
+     * framework's executors/tasks are run.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.CredentialOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Credential_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Credential_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.Credential.class, org.apache.mesos.v1.Protos.Credential.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.Credential.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        principal_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        secret_ = "";
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Credential_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.Credential getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.Credential.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.Credential build() {
+        org.apache.mesos.v1.Protos.Credential result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.Credential buildPartial() {
+        org.apache.mesos.v1.Protos.Credential result = new org.apache.mesos.v1.Protos.Credential(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.principal_ = principal_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.secret_ = secret_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.Credential) {
+          return mergeFrom((org.apache.mesos.v1.Protos.Credential)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.Credential other) {
+        if (other == org.apache.mesos.v1.Protos.Credential.getDefaultInstance()) return this;
+        if (other.hasPrincipal()) {
+          bitField0_ |= 0x00000001;
+          principal_ = other.principal_;
+          onChanged();
+        }
+        if (other.hasSecret()) {
+          bitField0_ |= 0x00000002;
+          secret_ = other.secret_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasPrincipal()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.Credential parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.Credential) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string principal = 1;
+      private java.lang.Object principal_ = "";
+      /**
+       * <code>required string principal = 1;</code>
+       */
+      public boolean hasPrincipal() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string principal = 1;</code>
+       */
+      public java.lang.String getPrincipal() {
+        java.lang.Object ref = principal_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          principal_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string principal = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getPrincipalBytes() {
+        java.lang.Object ref = principal_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          principal_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string principal = 1;</code>
+       */
+      public Builder setPrincipal(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        principal_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string principal = 1;</code>
+       */
+      public Builder clearPrincipal() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        principal_ = getDefaultInstance().getPrincipal();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string principal = 1;</code>
+       */
+      public Builder setPrincipalBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        principal_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional string secret = 2;
+      private java.lang.Object secret_ = "";
+      /**
+       * <code>optional string secret = 2;</code>
+       */
+      public boolean hasSecret() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional string secret = 2;</code>
+       */
+      public java.lang.String getSecret() {
+        java.lang.Object ref = secret_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          secret_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string secret = 2;</code>
+       */
+      public com.google.protobuf.ByteString
+          getSecretBytes() {
+        java.lang.Object ref = secret_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          secret_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string secret = 2;</code>
+       */
+      public Builder setSecret(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        secret_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string secret = 2;</code>
+       */
+      public Builder clearSecret() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        secret_ = getDefaultInstance().getSecret();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string secret = 2;</code>
+       */
+      public Builder setSecretBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        secret_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.Credential)
+    }
+
+    static {
+      defaultInstance = new Credential(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.Credential)
+  }
+
+  public interface CredentialsOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // repeated .mesos.v1.Credential credentials = 1;
+    /**
+     * <code>repeated .mesos.v1.Credential credentials = 1;</code>
+     */
+    java.util.List<org.apache.mesos.v1.Protos.Credential> 
+        getCredentialsList();
+    /**
+     * <code>repeated .mesos.v1.Credential credentials = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.Credential getCredentials(int index);
+    /**
+     * <code>repeated .mesos.v1.Credential credentials = 1;</code>
+     */
+    int getCredentialsCount();
+    /**
+     * <code>repeated .mesos.v1.Credential credentials = 1;</code>
+     */
+    java.util.List<? extends org.apache.mesos.v1.Protos.CredentialOrBuilder> 
+        getCredentialsOrBuilderList();
+    /**
+     * <code>repeated .mesos.v1.Credential credentials = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.CredentialOrBuilder getCredentialsOrBuilder(
+        int index);
+  }
+  /**
+   * Protobuf type {@code mesos.v1.Credentials}
+   *
+   * <pre>
+   **
+   * Credentials used for framework authentication, HTTP authentication
+   * (where the common 'username' and 'password' are captured as
+   * 'principal' and 'secret' respectively), etc.
+   * </pre>
+   */
+  public static final class Credentials extends
+      com.google.protobuf.GeneratedMessage
+      implements CredentialsOrBuilder {
+    // Use Credentials.newBuilder() to construct.
+    private Credentials(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Credentials(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Credentials defaultInstance;
+    public static Credentials getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Credentials getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Credentials(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                credentials_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Credential>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              credentials_.add(input.readMessage(org.apache.mesos.v1.Protos.Credential.PARSER, extensionRegistry));
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+          credentials_ = java.util.Collections.unmodifiableList(credentials_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Credentials_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Credentials_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.Credentials.class, org.apache.mesos.v1.Protos.Credentials.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Credentials> PARSER =
+        new com.google.protobuf.AbstractParser<Credentials>() {
+      public Credentials parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Credentials(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Credentials> getParserForType() {
+      return PARSER;
+    }
+
+    // repeated .mesos.v1.Credential credentials = 1;
+    public static final int CREDENTIALS_FIELD_NUMBER = 1;
+    private java.util.List<org.apache.mesos.v1.Protos.Credential> credentials_;
+    /**
+     * <code>repeated .mesos.v1.Credential credentials = 1;</code>
+     */
+    public java.util.List<org.apache.mesos.v1.Protos.Credential> getCredentialsList() {
+      return credentials_;
+    }
+    /**
+     * <code>repeated .mesos.v1.Credential credentials = 1;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.v1.Protos.CredentialOrBuilder> 
+        getCredentialsOrBuilderList() {
+      return credentials_;
+    }
+    /**
+     * <code>repeated .mesos.v1.Credential credentials = 1;</code>
+     */
+    public int getCredentialsCount() {
+      return credentials_.size();
+    }
+    /**
+     * <code>repeated .mesos.v1.Credential credentials = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.Credential getCredentials(int index) {
+      return credentials_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.v1.Credential credentials = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.CredentialOrBuilder getCredentialsOrBuilder(
+        int index) {
+      return credentials_.get(index);
+    }
+
+    private void initFields() {
+      credentials_ = java.util.Collections.emptyList();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      for (int i = 0; i < getCredentialsCount(); i++) {
+        if (!getCredentials(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      for (int i = 0; i < credentials_.size(); i++) {
+        output.writeMessage(1, credentials_.get(i));
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      for (int i = 0; i < credentials_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, credentials_.get(i));
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.Credentials parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Credentials parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Credentials parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Credentials parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Credentials parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Credentials parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Credentials parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Credentials parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Credentials parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Credentials parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.Credentials prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.Credentials}
+     *
+     * <pre>
+     **
+     * Credentials used for framework authentication, HTTP authentication
+     * (where the common 'username' and 'password' are captured as
+     * 'principal' and 'secret' respectively), etc.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.CredentialsOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Credentials_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Credentials_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.Credentials.class, org.apache.mesos.v1.Protos.Credentials.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.Credentials.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getCredentialsFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (credentialsBuilder_ == null) {
+          credentials_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+        } else {
+          credentialsBuilder_.clear();
+        }
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Credentials_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.Credentials getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.Credentials.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.Credentials build() {
+        org.apache.mesos.v1.Protos.Credentials result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.Credentials buildPartial() {
+        org.apache.mesos.v1.Protos.Credentials result = new org.apache.mesos.v1.Protos.Credentials(this);
+        int from_bitField0_ = bitField0_;
+        if (credentialsBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            credentials_ = java.util.Collections.unmodifiableList(credentials_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.credentials_ = credentials_;
+        } else {
+          result.credentials_ = credentialsBuilder_.build();
+        }
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.Credentials) {
+          return mergeFrom((org.apache.mesos.v1.Protos.Credentials)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.Credentials other) {
+        if (other == org.apache.mesos.v1.Protos.Credentials.getDefaultInstance()) return this;
+        if (credentialsBuilder_ == null) {
+          if (!other.credentials_.isEmpty()) {
+            if (credentials_.isEmpty()) {
+              credentials_ = other.credentials_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureCredentialsIsMutable();
+              credentials_.addAll(other.credentials_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.credentials_.isEmpty()) {
+            if (credentialsBuilder_.isEmpty()) {
+              credentialsBuilder_.dispose();
+              credentialsBuilder_ = null;
+              credentials_ = other.credentials_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              credentialsBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getCredentialsFieldBuilder() : null;
+            } else {
+              credentialsBuilder_.addAllMessages(other.credentials_);
+            }
+          }
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        for (int i = 0; i < getCredentialsCount(); i++) {
+          if (!getCredentials(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.Credentials parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.Credentials) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // repeated .mesos.v1.Credential credentials = 1;
+      private java.util.List<org.apache.mesos.v1.Protos.Credential> credentials_ =
+        java.util.Collections.emptyList();
+      private void ensureCredentialsIsMutable() {
+        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+          credentials_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Credential>(credentials_);
+          bitField0_ |= 0x00000001;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.Credential, org.apache.mesos.v1.Protos.Credential.Builder, org.apache.mesos.v1.Protos.CredentialOrBuilder> credentialsBuilder_;
+
+      /**
+       * <code>repeated .mesos.v1.Credential credentials = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Credential> getCredentialsList() {
+        if (credentialsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(credentials_);
+        } else {
+          return credentialsBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Credential credentials = 1;</code>
+       */
+      public int getCredentialsCount() {
+        if (credentialsBuilder_ == null) {
+          return credentials_.size();
+        } else {
+          return credentialsBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Credential credentials = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.Credential getCredentials(int index) {
+        if (credentialsBuilder_ == null) {
+          return credentials_.get(index);
+        } else {
+          return credentialsBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Credential credentials = 1;</code>
+       */
+      public Builder setCredentials(
+          int index, org.apache.mesos.v1.Protos.Credential value) {
+        if (credentialsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureCredentialsIsMutable();
+          credentials_.set(index, value);
+          onChanged();
+        } else {
+          credentialsBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Credential credentials = 1;</code>
+       */
+      public Builder setCredentials(
+          int index, org.apache.mesos.v1.Protos.Credential.Builder builderForValue) {
+        if (credentialsBuilder_ == null) {
+          ensureCredentialsIsMutable();
+          credentials_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          credentialsBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Credential credentials = 1;</code>
+       */
+      public Builder addCredentials(org.apache.mesos.v1.Protos.Credential value) {
+        if (credentialsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureCredentialsIsMutable();
+          credentials_.add(value);
+          onChanged();
+        } else {
+          credentialsBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Credential credentials = 1;</code>
+       */
+      public Builder addCredentials(
+          int index, org.apache.mesos.v1.Protos.Credential value) {
+        if (credentialsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureCredentialsIsMutable();
+          credentials_.add(index, value);
+          onChanged();
+        } else {
+          credentialsBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Credential credentials = 1;</code>
+       */
+      public Builder addCredentials(
+          org.apache.mesos.v1.Protos.Credential.Builder builderForValue) {
+        if (credentialsBuilder_ == null) {
+          ensureCredentialsIsMutable();
+          credentials_.add(builderForValue.build());
+          onChanged();
+        } else {
+          credentialsBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Credential credentials = 1;</code>
+       */
+      public Builder addCredentials(
+          int index, org.apache.mesos.v1.Protos.Credential.Builder builderForValue) {
+        if (credentialsBuilder_ == null) {
+          ensureCredentialsIsMutable();
+          credentials_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          credentialsBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Credential credentials = 1;</code>
+       */
+      public Builder addAllCredentials(
+          java.lang.Iterable<? extends org.apache.mesos.v1.Protos.Credential> values) {
+        if (credentialsBuilder_ == null) {
+          ensureCredentialsIsMutable();
+          super.addAll(values, credentials_);
+          onChanged();
+        } else {
+          credentialsBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Credential credentials = 1;</code>
+       */
+      public Builder clearCredentials() {
+        if (credentialsBuilder_ == null) {
+          credentials_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+        } else {
+          credentialsBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Credential credentials = 1;</code>
+       */
+      public Builder removeCredentials(int index) {
+        if (credentialsBuilder_ == null) {
+          ensureCredentialsIsMutable();
+          credentials_.remove(index);
+          onChanged();
+        } else {
+          credentialsBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Credential credentials = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.Credential.Builder getCredentialsBuilder(
+          int index) {
+        return getCredentialsFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.Credential credentials = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.CredentialOrBuilder getCredentialsOrBuilder(
+          int index) {
+        if (credentialsBuilder_ == null) {
+          return credentials_.get(index);  } else {
+          return credentialsBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Credential credentials = 1;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.CredentialOrBuilder> 
+           getCredentialsOrBuilderList() {
+        if (credentialsBuilder_ != null) {
+          return credentialsBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(credentials_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Credential credentials = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.Credential.Builder addCredentialsBuilder() {
+        return getCredentialsFieldBuilder().addBuilder(
+            org.apache.mesos.v1.Protos.Credential.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.Credential credentials = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.Credential.Builder addCredentialsBuilder(
+          int index) {
+        return getCredentialsFieldBuilder().addBuilder(
+            index, org.apache.mesos.v1.Protos.Credential.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.Credential credentials = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Credential.Builder> 
+           getCredentialsBuilderList() {
+        return getCredentialsFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.Credential, org.apache.mesos.v1.Protos.Credential.Builder, org.apache.mesos.v1.Protos.CredentialOrBuilder> 
+          getCredentialsFieldBuilder() {
+        if (credentialsBuilder_ == null) {
+          credentialsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.Credential, org.apache.mesos.v1.Protos.Credential.Builder, org.apache.mesos.v1.Protos.CredentialOrBuilder>(
+                  credentials_,
+                  ((bitField0_ & 0x00000001) == 0x00000001),
+                  getParentForChildren(),
+                  isClean());
+          credentials_ = null;
+        }
+        return credentialsBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.Credentials)
+    }
+
+    static {
+      defaultInstance = new Credentials(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.Credentials)
+  }
+
+  public interface SecretOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional .mesos.v1.Secret.Type type = 1;
+    /**
+     * <code>optional .mesos.v1.Secret.Type type = 1;</code>
+     */
+    boolean hasType();
+    /**
+     * <code>optional .mesos.v1.Secret.Type type = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.Secret.Type getType();
+
+    // optional .mesos.v1.Secret.Reference reference = 2;
+    /**
+     * <code>optional .mesos.v1.Secret.Reference reference = 2;</code>
+     *
+     * <pre>
+     * Only one of `reference` and `value` must be set.
+     * </pre>
+     */
+    boolean hasReference();
+    /**
+     * <code>optional .mesos.v1.Secret.Reference reference = 2;</code>
+     *
+     * <pre>
+     * Only one of `reference` and `value` must be set.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.Secret.Reference getReference();
+    /**
+     * <code>optional .mesos.v1.Secret.Reference reference = 2;</code>
+     *
+     * <pre>
+     * Only one of `reference` and `value` must be set.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.Secret.ReferenceOrBuilder getReferenceOrBuilder();
+
+    // optional .mesos.v1.Secret.Value value = 3;
+    /**
+     * <code>optional .mesos.v1.Secret.Value value = 3;</code>
+     */
+    boolean hasValue();
+    /**
+     * <code>optional .mesos.v1.Secret.Value value = 3;</code>
+     */
+    org.apache.mesos.v1.Protos.Secret.Value getValue();
+    /**
+     * <code>optional .mesos.v1.Secret.Value value = 3;</code>
+     */
+    org.apache.mesos.v1.Protos.Secret.ValueOrBuilder getValueOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.Secret}
+   *
+   * <pre>
+   **
+   * Secret used to pass privileged information. It is designed to provide
+   * pass-by-value or pass-by-reference semantics, where the REFERENCE type can be
+   * used by custom modules which interact with a secure back-end.
+   * </pre>
+   */
+  public static final class Secret extends
+      com.google.protobuf.GeneratedMessage
+      implements SecretOrBuilder {
+    // Use Secret.newBuilder() to construct.
+    private Secret(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Secret(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Secret defaultInstance;
+    public static Secret getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Secret getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Secret(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 8: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.v1.Protos.Secret.Type value = org.apache.mesos.v1.Protos.Secret.Type.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(1, rawValue);
+              } else {
+                bitField0_ |= 0x00000001;
+                type_ = value;
+              }
+              break;
+            }
+            case 18: {
+              org.apache.mesos.v1.Protos.Secret.Reference.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = reference_.toBuilder();
+              }
+              reference_ = input.readMessage(org.apache.mesos.v1.Protos.Secret.Reference.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(reference_);
+                reference_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+            case 26: {
+              org.apache.mesos.v1.Protos.Secret.Value.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                subBuilder = value_.toBuilder();
+              }
+              value_ = input.readMessage(org.apache.mesos.v1.Protos.Secret.Value.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(value_);
+                value_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000004;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Secret_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Secret_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.Secret.class, org.apache.mesos.v1.Protos.Secret.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Secret> PARSER =
+        new com.google.protobuf.AbstractParser<Secret>() {
+      public Secret parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Secret(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Secret> getParserForType() {
+      return PARSER;
+    }
+
+    /**
+     * Protobuf enum {@code mesos.v1.Secret.Type}
+     */
+    public enum Type
+        implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>UNKNOWN = 0;</code>
+       */
+      UNKNOWN(0, 0),
+      /**
+       * <code>REFERENCE = 1;</code>
+       */
+      REFERENCE(1, 1),
+      /**
+       * <code>VALUE = 2;</code>
+       */
+      VALUE(2, 2),
+      ;
+
+      /**
+       * <code>UNKNOWN = 0;</code>
+       */
+      public static final int UNKNOWN_VALUE = 0;
+      /**
+       * <code>REFERENCE = 1;</code>
+       */
+      public static final int REFERENCE_VALUE = 1;
+      /**
+       * <code>VALUE = 2;</code>
+       */
+      public static final int VALUE_VALUE = 2;
+
+
+      public final int getNumber() { return value; }
+
+      public static Type valueOf(int value) {
+        switch (value) {
+          case 0: return UNKNOWN;
+          case 1: return REFERENCE;
+          case 2: return VALUE;
+          default: return null;
+        }
+      }
+
+      public static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalGetValueMap() {
+        return internalValueMap;
+      }
+      private static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap<Type>() {
+              public Type findValueByNumber(int number) {
+                return Type.valueOf(number);
+              }
+            };
+
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
+          getValueDescriptor() {
+        return getDescriptor().getValues().get(index);
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptorForType() {
+        return getDescriptor();
+      }
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.Secret.getDescriptor().getEnumTypes().get(0);
+      }
+
+      private static final Type[] VALUES = values();
+
+      public static Type valueOf(
+          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+        if (desc.getType() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "EnumValueDescriptor is not for this type.");
+        }
+        return VALUES[desc.getIndex()];
+      }
+
+      private final int index;
+      private final int value;
+
+      private Type(int index, int value) {
+        this.index = index;
+        this.value = value;
+      }
+
+      // @@protoc_insertion_point(enum_scope:mesos.v1.Secret.Type)
+    }
+
+    public interface ReferenceOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required string name = 1;
+      /**
+       * <code>required string name = 1;</code>
+       */
+      boolean hasName();
+      /**
+       * <code>required string name = 1;</code>
+       */
+      java.lang.String getName();
+      /**
+       * <code>required string name = 1;</code>
+       */
+      com.google.protobuf.ByteString
+          getNameBytes();
+
+      // optional string key = 2;
+      /**
+       * <code>optional string key = 2;</code>
+       */
+      boolean hasKey();
+      /**
+       * <code>optional string key = 2;</code>
+       */
+      java.lang.String getKey();
+      /**
+       * <code>optional string key = 2;</code>
+       */
+      com.google.protobuf.ByteString
+          getKeyBytes();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.Secret.Reference}
+     *
+     * <pre>
+     * Can be used by modules to refer to a secret stored in a secure back-end.
+     * The `key` field is provided to permit reference to a single value within a
+     * secret containing arbitrary key-value pairs.
+     *
+     * For example, given a back-end secret store with a secret named
+     * "my-secret" containing the following key-value pairs:
+     *
+     *   {
+     *     "username": "my-user",
+     *     "password": "my-password
+     *   }
+     *
+     * the username could be referred to in a `Secret` by specifying
+     * "my-secret" for the `name` and "username" for the `key`.
+     * </pre>
+     */
+    public static final class Reference extends
+        com.google.protobuf.GeneratedMessage
+        implements ReferenceOrBuilder {
+      // Use Reference.newBuilder() to construct.
+      private Reference(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Reference(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Reference defaultInstance;
+      public static Reference getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Reference getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Reference(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                bitField0_ |= 0x00000001;
+                name_ = input.readBytes();
+                break;
+              }
+              case 18: {
+                bitField0_ |= 0x00000002;
+                key_ = input.readBytes();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Secret_Reference_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Secret_Reference_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.Secret.Reference.class, org.apache.mesos.v1.Protos.Secret.Reference.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Reference> PARSER =
+          new com.google.protobuf.AbstractParser<Reference>() {
+        public Reference parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Reference(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Reference> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required string name = 1;
+      public static final int NAME_FIELD_NUMBER = 1;
+      private java.lang.Object name_;
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public boolean hasName() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public java.lang.String getName() {
+        java.lang.Object ref = name_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            name_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        java.lang.Object ref = name_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          name_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      // optional string key = 2;
+      public static final int KEY_FIELD_NUMBER = 2;
+      private java.lang.Object key_;
+      /**
+       * <code>optional string key = 2;</code>
+       */
+      public boolean hasKey() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional string key = 2;</code>
+       */
+      public java.lang.String getKey() {
+        java.lang.Object ref = key_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            key_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>optional string key = 2;</code>
+       */
+      public com.google.protobuf.ByteString
+          getKeyBytes() {
+        java.lang.Object ref = key_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          key_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      private void initFields() {
+        name_ = "";
+        key_ = "";
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasName()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeBytes(1, getNameBytes());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeBytes(2, getKeyBytes());
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(1, getNameBytes());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(2, getKeyBytes());
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.Protos.Secret.Reference parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.Secret.Reference parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Secret.Reference parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.Secret.Reference parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Secret.Reference parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Secret.Reference parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Secret.Reference parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Secret.Reference parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Secret.Reference parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Secret.Reference parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.Protos.Secret.Reference prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.Secret.Reference}
+       *
+       * <pre>
+       * Can be used by modules to refer to a secret stored in a secure back-end.
+       * The `key` field is provided to permit reference to a single value within a
+       * secret containing arbitrary key-value pairs.
+       *
+       * For example, given a back-end secret store with a secret named
+       * "my-secret" containing the following key-value pairs:
+       *
+       *   {
+       *     "username": "my-user",
+       *     "password": "my-password
+       *   }
+       *
+       * the username could be referred to in a `Secret` by specifying
+       * "my-secret" for the `name` and "username" for the `key`.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.Protos.Secret.ReferenceOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Secret_Reference_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Secret_Reference_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.Secret.Reference.class, org.apache.mesos.v1.Protos.Secret.Reference.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.Protos.Secret.Reference.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          name_ = "";
+          bitField0_ = (bitField0_ & ~0x00000001);
+          key_ = "";
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Secret_Reference_descriptor;
+        }
+
+        public org.apache.mesos.v1.Protos.Secret.Reference getDefaultInstanceForType() {
+          return org.apache.mesos.v1.Protos.Secret.Reference.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.Protos.Secret.Reference build() {
+          org.apache.mesos.v1.Protos.Secret.Reference result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.Protos.Secret.Reference buildPartial() {
+          org.apache.mesos.v1.Protos.Secret.Reference result = new org.apache.mesos.v1.Protos.Secret.Reference(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.name_ = name_;
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          result.key_ = key_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.Protos.Secret.Reference) {
+            return mergeFrom((org.apache.mesos.v1.Protos.Secret.Reference)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.Protos.Secret.Reference other) {
+          if (other == org.apache.mesos.v1.Protos.Secret.Reference.getDefaultInstance()) return this;
+          if (other.hasName()) {
+            bitField0_ |= 0x00000001;
+            name_ = other.name_;
+            onChanged();
+          }
+          if (other.hasKey()) {
+            bitField0_ |= 0x00000002;
+            key_ = other.key_;
+            onChanged();
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasName()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.Protos.Secret.Reference parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.Protos.Secret.Reference) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required string name = 1;
+        private java.lang.Object name_ = "";
+        /**
+         * <code>required string name = 1;</code>
+         */
+        public boolean hasName() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required string name = 1;</code>
+         */
+        public java.lang.String getName() {
+          java.lang.Object ref = name_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            name_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>required string name = 1;</code>
+         */
+        public com.google.protobuf.ByteString
+            getNameBytes() {
+          java.lang.Object ref = name_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            name_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>required string name = 1;</code>
+         */
+        public Builder setName(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          name_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required string name = 1;</code>
+         */
+        public Builder clearName() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          name_ = getDefaultInstance().getName();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required string name = 1;</code>
+         */
+        public Builder setNameBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          name_ = value;
+          onChanged();
+          return this;
+        }
+
+        // optional string key = 2;
+        private java.lang.Object key_ = "";
+        /**
+         * <code>optional string key = 2;</code>
+         */
+        public boolean hasKey() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional string key = 2;</code>
+         */
+        public java.lang.String getKey() {
+          java.lang.Object ref = key_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            key_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>optional string key = 2;</code>
+         */
+        public com.google.protobuf.ByteString
+            getKeyBytes() {
+          java.lang.Object ref = key_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            key_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>optional string key = 2;</code>
+         */
+        public Builder setKey(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+          key_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string key = 2;</code>
+         */
+        public Builder clearKey() {
+          bitField0_ = (bitField0_ & ~0x00000002);
+          key_ = getDefaultInstance().getKey();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string key = 2;</code>
+         */
+        public Builder setKeyBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+          key_ = value;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.Secret.Reference)
+      }
+
+      static {
+        defaultInstance = new Reference(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.Secret.Reference)
+    }
+
+    public interface ValueOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required bytes data = 1;
+      /**
+       * <code>required bytes data = 1;</code>
+       */
+      boolean hasData();
+      /**
+       * <code>required bytes data = 1;</code>
+       */
+      com.google.protobuf.ByteString getData();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.Secret.Value}
+     *
+     * <pre>
+     * Used to pass the value of a secret.
+     * </pre>
+     */
+    public static final class Value extends
+        com.google.protobuf.GeneratedMessage
+        implements ValueOrBuilder {
+      // Use Value.newBuilder() to construct.
+      private Value(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Value(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Value defaultInstance;
+      public static Value getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Value getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Value(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                bitField0_ |= 0x00000001;
+                data_ = input.readBytes();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Secret_Value_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Secret_Value_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.Secret.Value.class, org.apache.mesos.v1.Protos.Secret.Value.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Value> PARSER =
+          new com.google.protobuf.AbstractParser<Value>() {
+        public Value parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Value(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Value> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required bytes data = 1;
+      public static final int DATA_FIELD_NUMBER = 1;
+      private com.google.protobuf.ByteString data_;
+      /**
+       * <code>required bytes data = 1;</code>
+       */
+      public boolean hasData() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required bytes data = 1;</code>
+       */
+      public com.google.protobuf.ByteString getData() {
+        return data_;
+      }
+
+      private void initFields() {
+        data_ = com.google.protobuf.ByteString.EMPTY;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasData()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeBytes(1, data_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(1, data_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.Protos.Secret.Value parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.Secret.Value parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Secret.Value parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.Secret.Value parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Secret.Value parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Secret.Value parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Secret.Value parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Secret.Value parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Secret.Value parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Secret.Value parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.Protos.Secret.Value prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.Secret.Value}
+       *
+       * <pre>
+       * Used to pass the value of a secret.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.Protos.Secret.ValueOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Secret_Value_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Secret_Value_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.Secret.Value.class, org.apache.mesos.v1.Protos.Secret.Value.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.Protos.Secret.Value.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          data_ = com.google.protobuf.ByteString.EMPTY;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Secret_Value_descriptor;
+        }
+
+        public org.apache.mesos.v1.Protos.Secret.Value getDefaultInstanceForType() {
+          return org.apache.mesos.v1.Protos.Secret.Value.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.Protos.Secret.Value build() {
+          org.apache.mesos.v1.Protos.Secret.Value result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.Protos.Secret.Value buildPartial() {
+          org.apache.mesos.v1.Protos.Secret.Value result = new org.apache.mesos.v1.Protos.Secret.Value(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.data_ = data_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.Protos.Secret.Value) {
+            return mergeFrom((org.apache.mesos.v1.Protos.Secret.Value)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.Protos.Secret.Value other) {
+          if (other == org.apache.mesos.v1.Protos.Secret.Value.getDefaultInstance()) return this;
+          if (other.hasData()) {
+            setData(other.getData());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasData()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.Protos.Secret.Value parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.Protos.Secret.Value) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required bytes data = 1;
+        private com.google.protobuf.ByteString data_ = com.google.protobuf.ByteString.EMPTY;
+        /**
+         * <code>required bytes data = 1;</code>
+         */
+        public boolean hasData() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required bytes data = 1;</code>
+         */
+        public com.google.protobuf.ByteString getData() {
+          return data_;
+        }
+        /**
+         * <code>required bytes data = 1;</code>
+         */
+        public Builder setData(com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          data_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required bytes data = 1;</code>
+         */
+        public Builder clearData() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          data_ = getDefaultInstance().getData();
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.Secret.Value)
+      }
+
+      static {
+        defaultInstance = new Value(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.Secret.Value)
+    }
+
+    private int bitField0_;
+    // optional .mesos.v1.Secret.Type type = 1;
+    public static final int TYPE_FIELD_NUMBER = 1;
+    private org.apache.mesos.v1.Protos.Secret.Type type_;
+    /**
+     * <code>optional .mesos.v1.Secret.Type type = 1;</code>
+     */
+    public boolean hasType() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional .mesos.v1.Secret.Type type = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.Secret.Type getType() {
+      return type_;
+    }
+
+    // optional .mesos.v1.Secret.Reference reference = 2;
+    public static final int REFERENCE_FIELD_NUMBER = 2;
+    private org.apache.mesos.v1.Protos.Secret.Reference reference_;
+    /**
+     * <code>optional .mesos.v1.Secret.Reference reference = 2;</code>
+     *
+     * <pre>
+     * Only one of `reference` and `value` must be set.
+     * </pre>
+     */
+    public boolean hasReference() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional .mesos.v1.Secret.Reference reference = 2;</code>
+     *
+     * <pre>
+     * Only one of `reference` and `value` must be set.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.Secret.Reference getReference() {
+      return reference_;
+    }
+    /**
+     * <code>optional .mesos.v1.Secret.Reference reference = 2;</code>
+     *
+     * <pre>
+     * Only one of `reference` and `value` must be set.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.Secret.ReferenceOrBuilder getReferenceOrBuilder() {
+      return reference_;
+    }
+
+    // optional .mesos.v1.Secret.Value value = 3;
+    public static final int VALUE_FIELD_NUMBER = 3;
+    private org.apache.mesos.v1.Protos.Secret.Value value_;
+    /**
+     * <code>optional .mesos.v1.Secret.Value value = 3;</code>
+     */
+    public boolean hasValue() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional .mesos.v1.Secret.Value value = 3;</code>
+     */
+    public org.apache.mesos.v1.Protos.Secret.Value getValue() {
+      return value_;
+    }
+    /**
+     * <code>optional .mesos.v1.Secret.Value value = 3;</code>
+     */
+    public org.apache.mesos.v1.Protos.Secret.ValueOrBuilder getValueOrBuilder() {
+      return value_;
+    }
+
+    private void initFields() {
+      type_ = org.apache.mesos.v1.Protos.Secret.Type.UNKNOWN;
+      reference_ = org.apache.mesos.v1.Protos.Secret.Reference.getDefaultInstance();
+      value_ = org.apache.mesos.v1.Protos.Secret.Value.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (hasReference()) {
+        if (!getReference().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasValue()) {
+        if (!getValue().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeEnum(1, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(2, reference_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeMessage(3, value_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(1, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, reference_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, value_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.Secret parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Secret parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Secret parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Secret parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Secret parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Secret parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Secret parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Secret parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Secret parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Secret parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.Secret prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.Secret}
+     *
+     * <pre>
+     **
+     * Secret used to pass privileged information. It is designed to provide
+     * pass-by-value or pass-by-reference semantics, where the REFERENCE type can be
+     * used by custom modules which interact with a secure back-end.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.SecretOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Secret_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Secret_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.Secret.class, org.apache.mesos.v1.Protos.Secret.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.Secret.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getReferenceFieldBuilder();
+          getValueFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        type_ = org.apache.mesos.v1.Protos.Secret.Type.UNKNOWN;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (referenceBuilder_ == null) {
+          reference_ = org.apache.mesos.v1.Protos.Secret.Reference.getDefaultInstance();
+        } else {
+          referenceBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        if (valueBuilder_ == null) {
+          value_ = org.apache.mesos.v1.Protos.Secret.Value.getDefaultInstance();
+        } else {
+          valueBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Secret_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.Secret getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.Secret.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.Secret build() {
+        org.apache.mesos.v1.Protos.Secret result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.Secret buildPartial() {
+        org.apache.mesos.v1.Protos.Secret result = new org.apache.mesos.v1.Protos.Secret(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.type_ = type_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (referenceBuilder_ == null) {
+          result.reference_ = reference_;
+        } else {
+          result.reference_ = referenceBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        if (valueBuilder_ == null) {
+          result.value_ = value_;
+        } else {
+          result.value_ = valueBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.Secret) {
+          return mergeFrom((org.apache.mesos.v1.Protos.Secret)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.Secret other) {
+        if (other == org.apache.mesos.v1.Protos.Secret.getDefaultInstance()) return this;
+        if (other.hasType()) {
+          setType(other.getType());
+        }
+        if (other.hasReference()) {
+          mergeReference(other.getReference());
+        }
+        if (other.hasValue()) {
+          mergeValue(other.getValue());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (hasReference()) {
+          if (!getReference().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasValue()) {
+          if (!getValue().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.Secret parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.Secret) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional .mesos.v1.Secret.Type type = 1;
+      private org.apache.mesos.v1.Protos.Secret.Type type_ = org.apache.mesos.v1.Protos.Secret.Type.UNKNOWN;
+      /**
+       * <code>optional .mesos.v1.Secret.Type type = 1;</code>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.v1.Secret.Type type = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.Secret.Type getType() {
+        return type_;
+      }
+      /**
+       * <code>optional .mesos.v1.Secret.Type type = 1;</code>
+       */
+      public Builder setType(org.apache.mesos.v1.Protos.Secret.Type value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000001;
+        type_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Secret.Type type = 1;</code>
+       */
+      public Builder clearType() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        type_ = org.apache.mesos.v1.Protos.Secret.Type.UNKNOWN;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.v1.Secret.Reference reference = 2;
+      private org.apache.mesos.v1.Protos.Secret.Reference reference_ = org.apache.mesos.v1.Protos.Secret.Reference.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Secret.Reference, org.apache.mesos.v1.Protos.Secret.Reference.Builder, org.apache.mesos.v1.Protos.Secret.ReferenceOrBuilder> referenceBuilder_;
+      /**
+       * <code>optional .mesos.v1.Secret.Reference reference = 2;</code>
+       *
+       * <pre>
+       * Only one of `reference` and `value` must be set.
+       * </pre>
+       */
+      public boolean hasReference() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.v1.Secret.Reference reference = 2;</code>
+       *
+       * <pre>
+       * Only one of `reference` and `value` must be set.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Secret.Reference getReference() {
+        if (referenceBuilder_ == null) {
+          return reference_;
+        } else {
+          return referenceBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Secret.Reference reference = 2;</code>
+       *
+       * <pre>
+       * Only one of `reference` and `value` must be set.
+       * </pre>
+       */
+      public Builder setReference(org.apache.mesos.v1.Protos.Secret.Reference value) {
+        if (referenceBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          reference_ = value;
+          onChanged();
+        } else {
+          referenceBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Secret.Reference reference = 2;</code>
+       *
+       * <pre>
+       * Only one of `reference` and `value` must be set.
+       * </pre>
+       */
+      public Builder setReference(
+          org.apache.mesos.v1.Protos.Secret.Reference.Builder builderForValue) {
+        if (referenceBuilder_ == null) {
+          reference_ = builderForValue.build();
+          onChanged();
+        } else {
+          referenceBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Secret.Reference reference = 2;</code>
+       *
+       * <pre>
+       * Only one of `reference` and `value` must be set.
+       * </pre>
+       */
+      public Builder mergeReference(org.apache.mesos.v1.Protos.Secret.Reference value) {
+        if (referenceBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              reference_ != org.apache.mesos.v1.Protos.Secret.Reference.getDefaultInstance()) {
+            reference_ =
+              org.apache.mesos.v1.Protos.Secret.Reference.newBuilder(reference_).mergeFrom(value).buildPartial();
+          } else {
+            reference_ = value;
+          }
+          onChanged();
+        } else {
+          referenceBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Secret.Reference reference = 2;</code>
+       *
+       * <pre>
+       * Only one of `reference` and `value` must be set.
+       * </pre>
+       */
+      public Builder clearReference() {
+        if (referenceBuilder_ == null) {
+          reference_ = org.apache.mesos.v1.Protos.Secret.Reference.getDefaultInstance();
+          onChanged();
+        } else {
+          referenceBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Secret.Reference reference = 2;</code>
+       *
+       * <pre>
+       * Only one of `reference` and `value` must be set.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Secret.Reference.Builder getReferenceBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getReferenceFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.Secret.Reference reference = 2;</code>
+       *
+       * <pre>
+       * Only one of `reference` and `value` must be set.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Secret.ReferenceOrBuilder getReferenceOrBuilder() {
+        if (referenceBuilder_ != null) {
+          return referenceBuilder_.getMessageOrBuilder();
+        } else {
+          return reference_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Secret.Reference reference = 2;</code>
+       *
+       * <pre>
+       * Only one of `reference` and `value` must be set.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Secret.Reference, org.apache.mesos.v1.Protos.Secret.Reference.Builder, org.apache.mesos.v1.Protos.Secret.ReferenceOrBuilder> 
+          getReferenceFieldBuilder() {
+        if (referenceBuilder_ == null) {
+          referenceBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Secret.Reference, org.apache.mesos.v1.Protos.Secret.Reference.Builder, org.apache.mesos.v1.Protos.Secret.ReferenceOrBuilder>(
+                  reference_,
+                  getParentForChildren(),
+                  isClean());
+          reference_ = null;
+        }
+        return referenceBuilder_;
+      }
+
+      // optional .mesos.v1.Secret.Value value = 3;
+      private org.apache.mesos.v1.Protos.Secret.Value value_ = org.apache.mesos.v1.Protos.Secret.Value.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Secret.Value, org.apache.mesos.v1.Protos.Secret.Value.Builder, org.apache.mesos.v1.Protos.Secret.ValueOrBuilder> valueBuilder_;
+      /**
+       * <code>optional .mesos.v1.Secret.Value value = 3;</code>
+       */
+      public boolean hasValue() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.v1.Secret.Value value = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.Secret.Value getValue() {
+        if (valueBuilder_ == null) {
+          return value_;
+        } else {
+          return valueBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Secret.Value value = 3;</code>
+       */
+      public Builder setValue(org.apache.mesos.v1.Protos.Secret.Value value) {
+        if (valueBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          value_ = value;
+          onChanged();
+        } else {
+          valueBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Secret.Value value = 3;</code>
+       */
+      public Builder setValue(
+          org.apache.mesos.v1.Protos.Secret.Value.Builder builderForValue) {
+        if (valueBuilder_ == null) {
+          value_ = builderForValue.build();
+          onChanged();
+        } else {
+          valueBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Secret.Value value = 3;</code>
+       */
+      public Builder mergeValue(org.apache.mesos.v1.Protos.Secret.Value value) {
+        if (valueBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) == 0x00000004) &&
+              value_ != org.apache.mesos.v1.Protos.Secret.Value.getDefaultInstance()) {
+            value_ =
+              org.apache.mesos.v1.Protos.Secret.Value.newBuilder(value_).mergeFrom(value).buildPartial();
+          } else {
+            value_ = value;
+          }
+          onChanged();
+        } else {
+          valueBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Secret.Value value = 3;</code>
+       */
+      public Builder clearValue() {
+        if (valueBuilder_ == null) {
+          value_ = org.apache.mesos.v1.Protos.Secret.Value.getDefaultInstance();
+          onChanged();
+        } else {
+          valueBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Secret.Value value = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.Secret.Value.Builder getValueBuilder() {
+        bitField0_ |= 0x00000004;
+        onChanged();
+        return getValueFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.Secret.Value value = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.Secret.ValueOrBuilder getValueOrBuilder() {
+        if (valueBuilder_ != null) {
+          return valueBuilder_.getMessageOrBuilder();
+        } else {
+          return value_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Secret.Value value = 3;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Secret.Value, org.apache.mesos.v1.Protos.Secret.Value.Builder, org.apache.mesos.v1.Protos.Secret.ValueOrBuilder> 
+          getValueFieldBuilder() {
+        if (valueBuilder_ == null) {
+          valueBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Secret.Value, org.apache.mesos.v1.Protos.Secret.Value.Builder, org.apache.mesos.v1.Protos.Secret.ValueOrBuilder>(
+                  value_,
+                  getParentForChildren(),
+                  isClean());
+          value_ = null;
+        }
+        return valueBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.Secret)
+    }
+
+    static {
+      defaultInstance = new Secret(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.Secret)
+  }
+
+  public interface RateLimitOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional double qps = 1;
+    /**
+     * <code>optional double qps = 1;</code>
+     *
+     * <pre>
+     * Leaving QPS unset gives it unlimited rate (i.e., not throttled),
+     * which also implies unlimited capacity.
+     * </pre>
+     */
+    boolean hasQps();
+    /**
+     * <code>optional double qps = 1;</code>
+     *
+     * <pre>
+     * Leaving QPS unset gives it unlimited rate (i.e., not throttled),
+     * which also implies unlimited capacity.
+     * </pre>
+     */
+    double getQps();
+
+    // required string principal = 2;
+    /**
+     * <code>required string principal = 2;</code>
+     *
+     * <pre>
+     * Principal of framework(s) to be throttled. Should match
+     * FrameworkInfo.principal and Credential.principal (if using authentication).
+     * </pre>
+     */
+    boolean hasPrincipal();
+    /**
+     * <code>required string principal = 2;</code>
+     *
+     * <pre>
+     * Principal of framework(s) to be throttled. Should match
+     * FrameworkInfo.principal and Credential.principal (if using authentication).
+     * </pre>
+     */
+    java.lang.String getPrincipal();
+    /**
+     * <code>required string principal = 2;</code>
+     *
+     * <pre>
+     * Principal of framework(s) to be throttled. Should match
+     * FrameworkInfo.principal and Credential.principal (if using authentication).
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getPrincipalBytes();
+
+    // optional uint64 capacity = 3;
+    /**
+     * <code>optional uint64 capacity = 3;</code>
+     *
+     * <pre>
+     * Max number of outstanding messages from frameworks of this principal
+     * allowed by master before the next message is dropped and an error is sent
+     * back to the sender. Messages received before the capacity is reached are
+     * still going to be processed after the error is sent.
+     * If unspecified, this principal is assigned unlimited capacity.
+     * NOTE: This value is ignored if 'qps' is not set.
+     * </pre>
+     */
+    boolean hasCapacity();
+    /**
+     * <code>optional uint64 capacity = 3;</code>
+     *
+     * <pre>
+     * Max number of outstanding messages from frameworks of this principal
+     * allowed by master before the next message is dropped and an error is sent
+     * back to the sender. Messages received before the capacity is reached are
+     * still going to be processed after the error is sent.
+     * If unspecified, this principal is assigned unlimited capacity.
+     * NOTE: This value is ignored if 'qps' is not set.
+     * </pre>
+     */
+    long getCapacity();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.RateLimit}
+   *
+   * <pre>
+   **
+   * Rate (queries per second, QPS) limit for messages from a framework to master.
+   * Strictly speaking they are the combined rate from all frameworks of the same
+   * principal.
+   * </pre>
+   */
+  public static final class RateLimit extends
+      com.google.protobuf.GeneratedMessage
+      implements RateLimitOrBuilder {
+    // Use RateLimit.newBuilder() to construct.
+    private RateLimit(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private RateLimit(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final RateLimit defaultInstance;
+    public static RateLimit getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public RateLimit getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private RateLimit(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 9: {
+              bitField0_ |= 0x00000001;
+              qps_ = input.readDouble();
+              break;
+            }
+            case 18: {
+              bitField0_ |= 0x00000002;
+              principal_ = input.readBytes();
+              break;
+            }
+            case 24: {
+              bitField0_ |= 0x00000004;
+              capacity_ = input.readUInt64();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_RateLimit_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_RateLimit_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.RateLimit.class, org.apache.mesos.v1.Protos.RateLimit.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<RateLimit> PARSER =
+        new com.google.protobuf.AbstractParser<RateLimit>() {
+      public RateLimit parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new RateLimit(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<RateLimit> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // optional double qps = 1;
+    public static final int QPS_FIELD_NUMBER = 1;
+    private double qps_;
+    /**
+     * <code>optional double qps = 1;</code>
+     *
+     * <pre>
+     * Leaving QPS unset gives it unlimited rate (i.e., not throttled),
+     * which also implies unlimited capacity.
+     * </pre>
+     */
+    public boolean hasQps() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional double qps = 1;</code>
+     *
+     * <pre>
+     * Leaving QPS unset gives it unlimited rate (i.e., not throttled),
+     * which also implies unlimited capacity.
+     * </pre>
+     */
+    public double getQps() {
+      return qps_;
+    }
+
+    // required string principal = 2;
+    public static final int PRINCIPAL_FIELD_NUMBER = 2;
+    private java.lang.Object principal_;
+    /**
+     * <code>required string principal = 2;</code>
+     *
+     * <pre>
+     * Principal of framework(s) to be throttled. Should match
+     * FrameworkInfo.principal and Credential.principal (if using authentication).
+     * </pre>
+     */
+    public boolean hasPrincipal() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>required string principal = 2;</code>
+     *
+     * <pre>
+     * Principal of framework(s) to be throttled. Should match
+     * FrameworkInfo.principal and Credential.principal (if using authentication).
+     * </pre>
+     */
+    public java.lang.String getPrincipal() {
+      java.lang.Object ref = principal_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          principal_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string principal = 2;</code>
+     *
+     * <pre>
+     * Principal of framework(s) to be throttled. Should match
+     * FrameworkInfo.principal and Credential.principal (if using authentication).
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getPrincipalBytes() {
+      java.lang.Object ref = principal_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        principal_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional uint64 capacity = 3;
+    public static final int CAPACITY_FIELD_NUMBER = 3;
+    private long capacity_;
+    /**
+     * <code>optional uint64 capacity = 3;</code>
+     *
+     * <pre>
+     * Max number of outstanding messages from frameworks of this principal
+     * allowed by master before the next message is dropped and an error is sent
+     * back to the sender. Messages received before the capacity is reached are
+     * still going to be processed after the error is sent.
+     * If unspecified, this principal is assigned unlimited capacity.
+     * NOTE: This value is ignored if 'qps' is not set.
+     * </pre>
+     */
+    public boolean hasCapacity() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional uint64 capacity = 3;</code>
+     *
+     * <pre>
+     * Max number of outstanding messages from frameworks of this principal
+     * allowed by master before the next message is dropped and an error is sent
+     * back to the sender. Messages received before the capacity is reached are
+     * still going to be processed after the error is sent.
+     * If unspecified, this principal is assigned unlimited capacity.
+     * NOTE: This value is ignored if 'qps' is not set.
+     * </pre>
+     */
+    public long getCapacity() {
+      return capacity_;
+    }
+
+    private void initFields() {
+      qps_ = 0D;
+      principal_ = "";
+      capacity_ = 0L;
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasPrincipal()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeDouble(1, qps_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(2, getPrincipalBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeUInt64(3, capacity_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(1, qps_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(2, getPrincipalBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(3, capacity_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.RateLimit parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.RateLimit parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.RateLimit parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.RateLimit parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.RateLimit parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.RateLimit parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.RateLimit parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.RateLimit parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.RateLimit parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.RateLimit parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.RateLimit prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.RateLimit}
+     *
+     * <pre>
+     **
+     * Rate (queries per second, QPS) limit for messages from a framework to master.
+     * Strictly speaking they are the combined rate from all frameworks of the same
+     * principal.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.RateLimitOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_RateLimit_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_RateLimit_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.RateLimit.class, org.apache.mesos.v1.Protos.RateLimit.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.RateLimit.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        qps_ = 0D;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        principal_ = "";
+        bitField0_ = (bitField0_ & ~0x00000002);
+        capacity_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_RateLimit_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.RateLimit getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.RateLimit.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.RateLimit build() {
+        org.apache.mesos.v1.Protos.RateLimit result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.RateLimit buildPartial() {
+        org.apache.mesos.v1.Protos.RateLimit result = new org.apache.mesos.v1.Protos.RateLimit(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.qps_ = qps_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.principal_ = principal_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.capacity_ = capacity_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.RateLimit) {
+          return mergeFrom((org.apache.mesos.v1.Protos.RateLimit)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.RateLimit other) {
+        if (other == org.apache.mesos.v1.Protos.RateLimit.getDefaultInstance()) return this;
+        if (other.hasQps()) {
+          setQps(other.getQps());
+        }
+        if (other.hasPrincipal()) {
+          bitField0_ |= 0x00000002;
+          principal_ = other.principal_;
+          onChanged();
+        }
+        if (other.hasCapacity()) {
+          setCapacity(other.getCapacity());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasPrincipal()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.RateLimit parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.RateLimit) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional double qps = 1;
+      private double qps_ ;
+      /**
+       * <code>optional double qps = 1;</code>
+       *
+       * <pre>
+       * Leaving QPS unset gives it unlimited rate (i.e., not throttled),
+       * which also implies unlimited capacity.
+       * </pre>
+       */
+      public boolean hasQps() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional double qps = 1;</code>
+       *
+       * <pre>
+       * Leaving QPS unset gives it unlimited rate (i.e., not throttled),
+       * which also implies unlimited capacity.
+       * </pre>
+       */
+      public double getQps() {
+        return qps_;
+      }
+      /**
+       * <code>optional double qps = 1;</code>
+       *
+       * <pre>
+       * Leaving QPS unset gives it unlimited rate (i.e., not throttled),
+       * which also implies unlimited capacity.
+       * </pre>
+       */
+      public Builder setQps(double value) {
+        bitField0_ |= 0x00000001;
+        qps_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double qps = 1;</code>
+       *
+       * <pre>
+       * Leaving QPS unset gives it unlimited rate (i.e., not throttled),
+       * which also implies unlimited capacity.
+       * </pre>
+       */
+      public Builder clearQps() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        qps_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // required string principal = 2;
+      private java.lang.Object principal_ = "";
+      /**
+       * <code>required string principal = 2;</code>
+       *
+       * <pre>
+       * Principal of framework(s) to be throttled. Should match
+       * FrameworkInfo.principal and Credential.principal (if using authentication).
+       * </pre>
+       */
+      public boolean hasPrincipal() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required string principal = 2;</code>
+       *
+       * <pre>
+       * Principal of framework(s) to be throttled. Should match
+       * FrameworkInfo.principal and Credential.principal (if using authentication).
+       * </pre>
+       */
+      public java.lang.String getPrincipal() {
+        java.lang.Object ref = principal_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          principal_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string principal = 2;</code>
+       *
+       * <pre>
+       * Principal of framework(s) to be throttled. Should match
+       * FrameworkInfo.principal and Credential.principal (if using authentication).
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getPrincipalBytes() {
+        java.lang.Object ref = principal_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          principal_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string principal = 2;</code>
+       *
+       * <pre>
+       * Principal of framework(s) to be throttled. Should match
+       * FrameworkInfo.principal and Credential.principal (if using authentication).
+       * </pre>
+       */
+      public Builder setPrincipal(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        principal_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string principal = 2;</code>
+       *
+       * <pre>
+       * Principal of framework(s) to be throttled. Should match
+       * FrameworkInfo.principal and Credential.principal (if using authentication).
+       * </pre>
+       */
+      public Builder clearPrincipal() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        principal_ = getDefaultInstance().getPrincipal();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string principal = 2;</code>
+       *
+       * <pre>
+       * Principal of framework(s) to be throttled. Should match
+       * FrameworkInfo.principal and Credential.principal (if using authentication).
+       * </pre>
+       */
+      public Builder setPrincipalBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        principal_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 capacity = 3;
+      private long capacity_ ;
+      /**
+       * <code>optional uint64 capacity = 3;</code>
+       *
+       * <pre>
+       * Max number of outstanding messages from frameworks of this principal
+       * allowed by master before the next message is dropped and an error is sent
+       * back to the sender. Messages received before the capacity is reached are
+       * still going to be processed after the error is sent.
+       * If unspecified, this principal is assigned unlimited capacity.
+       * NOTE: This value is ignored if 'qps' is not set.
+       * </pre>
+       */
+      public boolean hasCapacity() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional uint64 capacity = 3;</code>
+       *
+       * <pre>
+       * Max number of outstanding messages from frameworks of this principal
+       * allowed by master before the next message is dropped and an error is sent
+       * back to the sender. Messages received before the capacity is reached are
+       * still going to be processed after the error is sent.
+       * If unspecified, this principal is assigned unlimited capacity.
+       * NOTE: This value is ignored if 'qps' is not set.
+       * </pre>
+       */
+      public long getCapacity() {
+        return capacity_;
+      }
+      /**
+       * <code>optional uint64 capacity = 3;</code>
+       *
+       * <pre>
+       * Max number of outstanding messages from frameworks of this principal
+       * allowed by master before the next message is dropped and an error is sent
+       * back to the sender. Messages received before the capacity is reached are
+       * still going to be processed after the error is sent.
+       * If unspecified, this principal is assigned unlimited capacity.
+       * NOTE: This value is ignored if 'qps' is not set.
+       * </pre>
+       */
+      public Builder setCapacity(long value) {
+        bitField0_ |= 0x00000004;
+        capacity_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 capacity = 3;</code>
+       *
+       * <pre>
+       * Max number of outstanding messages from frameworks of this principal
+       * allowed by master before the next message is dropped and an error is sent
+       * back to the sender. Messages received before the capacity is reached are
+       * still going to be processed after the error is sent.
+       * If unspecified, this principal is assigned unlimited capacity.
+       * NOTE: This value is ignored if 'qps' is not set.
+       * </pre>
+       */
+      public Builder clearCapacity() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        capacity_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.RateLimit)
+    }
+
+    static {
+      defaultInstance = new RateLimit(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.RateLimit)
+  }
+
+  public interface RateLimitsOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // repeated .mesos.v1.RateLimit limits = 1;
+    /**
+     * <code>repeated .mesos.v1.RateLimit limits = 1;</code>
+     *
+     * <pre>
+     * Items should have unique principals.
+     * </pre>
+     */
+    java.util.List<org.apache.mesos.v1.Protos.RateLimit> 
+        getLimitsList();
+    /**
+     * <code>repeated .mesos.v1.RateLimit limits = 1;</code>
+     *
+     * <pre>
+     * Items should have unique principals.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.RateLimit getLimits(int index);
+    /**
+     * <code>repeated .mesos.v1.RateLimit limits = 1;</code>
+     *
+     * <pre>
+     * Items should have unique principals.
+     * </pre>
+     */
+    int getLimitsCount();
+    /**
+     * <code>repeated .mesos.v1.RateLimit limits = 1;</code>
+     *
+     * <pre>
+     * Items should have unique principals.
+     * </pre>
+     */
+    java.util.List<? extends org.apache.mesos.v1.Protos.RateLimitOrBuilder> 
+        getLimitsOrBuilderList();
+    /**
+     * <code>repeated .mesos.v1.RateLimit limits = 1;</code>
+     *
+     * <pre>
+     * Items should have unique principals.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.RateLimitOrBuilder getLimitsOrBuilder(
+        int index);
+
+    // optional double aggregate_default_qps = 2;
+    /**
+     * <code>optional double aggregate_default_qps = 2;</code>
+     *
+     * <pre>
+     * All the frameworks not specified in 'limits' get this default rate.
+     * This rate is an aggregate rate for all of them, i.e., their combined
+     * traffic is throttled together at this rate.
+     * </pre>
+     */
+    boolean hasAggregateDefaultQps();
+    /**
+     * <code>optional double aggregate_default_qps = 2;</code>
+     *
+     * <pre>
+     * All the frameworks not specified in 'limits' get this default rate.
+     * This rate is an aggregate rate for all of them, i.e., their combined
+     * traffic is throttled together at this rate.
+     * </pre>
+     */
+    double getAggregateDefaultQps();
+
+    // optional uint64 aggregate_default_capacity = 3;
+    /**
+     * <code>optional uint64 aggregate_default_capacity = 3;</code>
+     *
+     * <pre>
+     * All the frameworks not specified in 'limits' get this default capacity.
+     * This is an aggregate value similar to 'aggregate_default_qps'.
+     * </pre>
+     */
+    boolean hasAggregateDefaultCapacity();
+    /**
+     * <code>optional uint64 aggregate_default_capacity = 3;</code>
+     *
+     * <pre>
+     * All the frameworks not specified in 'limits' get this default capacity.
+     * This is an aggregate value similar to 'aggregate_default_qps'.
+     * </pre>
+     */
+    long getAggregateDefaultCapacity();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.RateLimits}
+   *
+   * <pre>
+   **
+   * Collection of RateLimit.
+   * Frameworks without rate limits defined here are not throttled unless
+   * 'aggregate_default_qps' is specified.
+   * </pre>
+   */
+  public static final class RateLimits extends
+      com.google.protobuf.GeneratedMessage
+      implements RateLimitsOrBuilder {
+    // Use RateLimits.newBuilder() to construct.
+    private RateLimits(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private RateLimits(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final RateLimits defaultInstance;
+    public static RateLimits getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public RateLimits getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private RateLimits(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                limits_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.RateLimit>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              limits_.add(input.readMessage(org.apache.mesos.v1.Protos.RateLimit.PARSER, extensionRegistry));
+              break;
+            }
+            case 17: {
+              bitField0_ |= 0x00000001;
+              aggregateDefaultQps_ = input.readDouble();
+              break;
+            }
+            case 24: {
+              bitField0_ |= 0x00000002;
+              aggregateDefaultCapacity_ = input.readUInt64();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+          limits_ = java.util.Collections.unmodifiableList(limits_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_RateLimits_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_RateLimits_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.RateLimits.class, org.apache.mesos.v1.Protos.RateLimits.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<RateLimits> PARSER =
+        new com.google.protobuf.AbstractParser<RateLimits>() {
+      public RateLimits parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new RateLimits(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<RateLimits> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // repeated .mesos.v1.RateLimit limits = 1;
+    public static final int LIMITS_FIELD_NUMBER = 1;
+    private java.util.List<org.apache.mesos.v1.Protos.RateLimit> limits_;
+    /**
+     * <code>repeated .mesos.v1.RateLimit limits = 1;</code>
+     *
+     * <pre>
+     * Items should have unique principals.
+     * </pre>
+     */
+    public java.util.List<org.apache.mesos.v1.Protos.RateLimit> getLimitsList() {
+      return limits_;
+    }
+    /**
+     * <code>repeated .mesos.v1.RateLimit limits = 1;</code>
+     *
+     * <pre>
+     * Items should have unique principals.
+     * </pre>
+     */
+    public java.util.List<? extends org.apache.mesos.v1.Protos.RateLimitOrBuilder> 
+        getLimitsOrBuilderList() {
+      return limits_;
+    }
+    /**
+     * <code>repeated .mesos.v1.RateLimit limits = 1;</code>
+     *
+     * <pre>
+     * Items should have unique principals.
+     * </pre>
+     */
+    public int getLimitsCount() {
+      return limits_.size();
+    }
+    /**
+     * <code>repeated .mesos.v1.RateLimit limits = 1;</code>
+     *
+     * <pre>
+     * Items should have unique principals.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.RateLimit getLimits(int index) {
+      return limits_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.v1.RateLimit limits = 1;</code>
+     *
+     * <pre>
+     * Items should have unique principals.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.RateLimitOrBuilder getLimitsOrBuilder(
+        int index) {
+      return limits_.get(index);
+    }
+
+    // optional double aggregate_default_qps = 2;
+    public static final int AGGREGATE_DEFAULT_QPS_FIELD_NUMBER = 2;
+    private double aggregateDefaultQps_;
+    /**
+     * <code>optional double aggregate_default_qps = 2;</code>
+     *
+     * <pre>
+     * All the frameworks not specified in 'limits' get this default rate.
+     * This rate is an aggregate rate for all of them, i.e., their combined
+     * traffic is throttled together at this rate.
+     * </pre>
+     */
+    public boolean hasAggregateDefaultQps() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional double aggregate_default_qps = 2;</code>
+     *
+     * <pre>
+     * All the frameworks not specified in 'limits' get this default rate.
+     * This rate is an aggregate rate for all of them, i.e., their combined
+     * traffic is throttled together at this rate.
+     * </pre>
+     */
+    public double getAggregateDefaultQps() {
+      return aggregateDefaultQps_;
+    }
+
+    // optional uint64 aggregate_default_capacity = 3;
+    public static final int AGGREGATE_DEFAULT_CAPACITY_FIELD_NUMBER = 3;
+    private long aggregateDefaultCapacity_;
+    /**
+     * <code>optional uint64 aggregate_default_capacity = 3;</code>
+     *
+     * <pre>
+     * All the frameworks not specified in 'limits' get this default capacity.
+     * This is an aggregate value similar to 'aggregate_default_qps'.
+     * </pre>
+     */
+    public boolean hasAggregateDefaultCapacity() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional uint64 aggregate_default_capacity = 3;</code>
+     *
+     * <pre>
+     * All the frameworks not specified in 'limits' get this default capacity.
+     * This is an aggregate value similar to 'aggregate_default_qps'.
+     * </pre>
+     */
+    public long getAggregateDefaultCapacity() {
+      return aggregateDefaultCapacity_;
+    }
+
+    private void initFields() {
+      limits_ = java.util.Collections.emptyList();
+      aggregateDefaultQps_ = 0D;
+      aggregateDefaultCapacity_ = 0L;
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      for (int i = 0; i < getLimitsCount(); i++) {
+        if (!getLimits(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      for (int i = 0; i < limits_.size(); i++) {
+        output.writeMessage(1, limits_.get(i));
+      }
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeDouble(2, aggregateDefaultQps_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeUInt64(3, aggregateDefaultCapacity_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      for (int i = 0; i < limits_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, limits_.get(i));
+      }
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(2, aggregateDefaultQps_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(3, aggregateDefaultCapacity_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.RateLimits parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.RateLimits parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.RateLimits parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.RateLimits parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.RateLimits parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.RateLimits parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.RateLimits parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.RateLimits parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.RateLimits parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.RateLimits parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.RateLimits prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.RateLimits}
+     *
+     * <pre>
+     **
+     * Collection of RateLimit.
+     * Frameworks without rate limits defined here are not throttled unless
+     * 'aggregate_default_qps' is specified.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.RateLimitsOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_RateLimits_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_RateLimits_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.RateLimits.class, org.apache.mesos.v1.Protos.RateLimits.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.RateLimits.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getLimitsFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (limitsBuilder_ == null) {
+          limits_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+        } else {
+          limitsBuilder_.clear();
+        }
+        aggregateDefaultQps_ = 0D;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        aggregateDefaultCapacity_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_RateLimits_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.RateLimits getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.RateLimits.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.RateLimits build() {
+        org.apache.mesos.v1.Protos.RateLimits result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.RateLimits buildPartial() {
+        org.apache.mesos.v1.Protos.RateLimits result = new org.apache.mesos.v1.Protos.RateLimits(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (limitsBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            limits_ = java.util.Collections.unmodifiableList(limits_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.limits_ = limits_;
+        } else {
+          result.limits_ = limitsBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.aggregateDefaultQps_ = aggregateDefaultQps_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.aggregateDefaultCapacity_ = aggregateDefaultCapacity_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.RateLimits) {
+          return mergeFrom((org.apache.mesos.v1.Protos.RateLimits)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.RateLimits other) {
+        if (other == org.apache.mesos.v1.Protos.RateLimits.getDefaultInstance()) return this;
+        if (limitsBuilder_ == null) {
+          if (!other.limits_.isEmpty()) {
+            if (limits_.isEmpty()) {
+              limits_ = other.limits_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureLimitsIsMutable();
+              limits_.addAll(other.limits_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.limits_.isEmpty()) {
+            if (limitsBuilder_.isEmpty()) {
+              limitsBuilder_.dispose();
+              limitsBuilder_ = null;
+              limits_ = other.limits_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              limitsBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getLimitsFieldBuilder() : null;
+            } else {
+              limitsBuilder_.addAllMessages(other.limits_);
+            }
+          }
+        }
+        if (other.hasAggregateDefaultQps()) {
+          setAggregateDefaultQps(other.getAggregateDefaultQps());
+        }
+        if (other.hasAggregateDefaultCapacity()) {
+          setAggregateDefaultCapacity(other.getAggregateDefaultCapacity());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        for (int i = 0; i < getLimitsCount(); i++) {
+          if (!getLimits(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.RateLimits parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.RateLimits) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // repeated .mesos.v1.RateLimit limits = 1;
+      private java.util.List<org.apache.mesos.v1.Protos.RateLimit> limits_ =
+        java.util.Collections.emptyList();
+      private void ensureLimitsIsMutable() {
+        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+          limits_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.RateLimit>(limits_);
+          bitField0_ |= 0x00000001;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.RateLimit, org.apache.mesos.v1.Protos.RateLimit.Builder, org.apache.mesos.v1.Protos.RateLimitOrBuilder> limitsBuilder_;
+
+      /**
+       * <code>repeated .mesos.v1.RateLimit limits = 1;</code>
+       *
+       * <pre>
+       * Items should have unique principals.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.RateLimit> getLimitsList() {
+        if (limitsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(limits_);
+        } else {
+          return limitsBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.RateLimit limits = 1;</code>
+       *
+       * <pre>
+       * Items should have unique principals.
+       * </pre>
+       */
+      public int getLimitsCount() {
+        if (limitsBuilder_ == null) {
+          return limits_.size();
+        } else {
+          return limitsBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.RateLimit limits = 1;</code>
+       *
+       * <pre>
+       * Items should have unique principals.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.RateLimit getLimits(int index) {
+        if (limitsBuilder_ == null) {
+          return limits_.get(index);
+        } else {
+          return limitsBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.RateLimit limits = 1;</code>
+       *
+       * <pre>
+       * Items should have unique principals.
+       * </pre>
+       */
+      public Builder setLimits(
+          int index, org.apache.mesos.v1.Protos.RateLimit value) {
+        if (limitsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureLimitsIsMutable();
+          limits_.set(index, value);
+          onChanged();
+        } else {
+          limitsBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.RateLimit limits = 1;</code>
+       *
+       * <pre>
+       * Items should have unique principals.
+       * </pre>
+       */
+      public Builder setLimits(
+          int index, org.apache.mesos.v1.Protos.RateLimit.Builder builderForValue) {
+        if (limitsBuilder_ == null) {
+          ensureLimitsIsMutable();
+          limits_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          limitsBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.RateLimit limits = 1;</code>
+       *
+       * <pre>
+       * Items should have unique principals.
+       * </pre>
+       */
+      public Builder addLimits(org.apache.mesos.v1.Protos.RateLimit value) {
+        if (limitsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureLimitsIsMutable();
+          limits_.add(value);
+          onChanged();
+        } else {
+          limitsBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.RateLimit limits = 1;</code>
+       *
+       * <pre>
+       * Items should have unique principals.
+       * </pre>
+       */
+      public Builder addLimits(
+          int index, org.apache.mesos.v1.Protos.RateLimit value) {
+        if (limitsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureLimitsIsMutable();
+          limits_.add(index, value);
+          onChanged();
+        } else {
+          limitsBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.RateLimit limits = 1;</code>
+       *
+       * <pre>
+       * Items should have unique principals.
+       * </pre>
+       */
+      public Builder addLimits(
+          org.apache.mesos.v1.Protos.RateLimit.Builder builderForValue) {
+        if (limitsBuilder_ == null) {
+          ensureLimitsIsMutable();
+          limits_.add(builderForValue.build());
+          onChanged();
+        } else {
+          limitsBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.RateLimit limits = 1;</code>
+       *
+       * <pre>
+       * Items should have unique principals.
+       * </pre>
+       */
+      public Builder addLimits(
+          int index, org.apache.mesos.v1.Protos.RateLimit.Builder builderForValue) {
+        if (limitsBuilder_ == null) {
+          ensureLimitsIsMutable();
+          limits_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          limitsBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.RateLimit limits = 1;</code>
+       *
+       * <pre>
+       * Items should have unique principals.
+       * </pre>
+       */
+      public Builder addAllLimits(
+          java.lang.Iterable<? extends org.apache.mesos.v1.Protos.RateLimit> values) {
+        if (limitsBuilder_ == null) {
+          ensureLimitsIsMutable();
+          super.addAll(values, limits_);
+          onChanged();
+        } else {
+          limitsBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.RateLimit limits = 1;</code>
+       *
+       * <pre>
+       * Items should have unique principals.
+       * </pre>
+       */
+      public Builder clearLimits() {
+        if (limitsBuilder_ == null) {
+          limits_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+        } else {
+          limitsBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.RateLimit limits = 1;</code>
+       *
+       * <pre>
+       * Items should have unique principals.
+       * </pre>
+       */
+      public Builder removeLimits(int index) {
+        if (limitsBuilder_ == null) {
+          ensureLimitsIsMutable();
+          limits_.remove(index);
+          onChanged();
+        } else {
+          limitsBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.RateLimit limits = 1;</code>
+       *
+       * <pre>
+       * Items should have unique principals.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.RateLimit.Builder getLimitsBuilder(
+          int index) {
+        return getLimitsFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.RateLimit limits = 1;</code>
+       *
+       * <pre>
+       * Items should have unique principals.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.RateLimitOrBuilder getLimitsOrBuilder(
+          int index) {
+        if (limitsBuilder_ == null) {
+          return limits_.get(index);  } else {
+          return limitsBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.RateLimit limits = 1;</code>
+       *
+       * <pre>
+       * Items should have unique principals.
+       * </pre>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.RateLimitOrBuilder> 
+           getLimitsOrBuilderList() {
+        if (limitsBuilder_ != null) {
+          return limitsBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(limits_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.RateLimit limits = 1;</code>
+       *
+       * <pre>
+       * Items should have unique principals.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.RateLimit.Builder addLimitsBuilder() {
+        return getLimitsFieldBuilder().addBuilder(
+            org.apache.mesos.v1.Protos.RateLimit.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.RateLimit limits = 1;</code>
+       *
+       * <pre>
+       * Items should have unique principals.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.RateLimit.Builder addLimitsBuilder(
+          int index) {
+        return getLimitsFieldBuilder().addBuilder(
+            index, org.apache.mesos.v1.Protos.RateLimit.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.RateLimit limits = 1;</code>
+       *
+       * <pre>
+       * Items should have unique principals.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.RateLimit.Builder> 
+           getLimitsBuilderList() {
+        return getLimitsFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.RateLimit, org.apache.mesos.v1.Protos.RateLimit.Builder, org.apache.mesos.v1.Protos.RateLimitOrBuilder> 
+          getLimitsFieldBuilder() {
+        if (limitsBuilder_ == null) {
+          limitsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.RateLimit, org.apache.mesos.v1.Protos.RateLimit.Builder, org.apache.mesos.v1.Protos.RateLimitOrBuilder>(
+                  limits_,
+                  ((bitField0_ & 0x00000001) == 0x00000001),
+                  getParentForChildren(),
+                  isClean());
+          limits_ = null;
+        }
+        return limitsBuilder_;
+      }
+
+      // optional double aggregate_default_qps = 2;
+      private double aggregateDefaultQps_ ;
+      /**
+       * <code>optional double aggregate_default_qps = 2;</code>
+       *
+       * <pre>
+       * All the frameworks not specified in 'limits' get this default rate.
+       * This rate is an aggregate rate for all of them, i.e., their combined
+       * traffic is throttled together at this rate.
+       * </pre>
+       */
+      public boolean hasAggregateDefaultQps() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional double aggregate_default_qps = 2;</code>
+       *
+       * <pre>
+       * All the frameworks not specified in 'limits' get this default rate.
+       * This rate is an aggregate rate for all of them, i.e., their combined
+       * traffic is throttled together at this rate.
+       * </pre>
+       */
+      public double getAggregateDefaultQps() {
+        return aggregateDefaultQps_;
+      }
+      /**
+       * <code>optional double aggregate_default_qps = 2;</code>
+       *
+       * <pre>
+       * All the frameworks not specified in 'limits' get this default rate.
+       * This rate is an aggregate rate for all of them, i.e., their combined
+       * traffic is throttled together at this rate.
+       * </pre>
+       */
+      public Builder setAggregateDefaultQps(double value) {
+        bitField0_ |= 0x00000002;
+        aggregateDefaultQps_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double aggregate_default_qps = 2;</code>
+       *
+       * <pre>
+       * All the frameworks not specified in 'limits' get this default rate.
+       * This rate is an aggregate rate for all of them, i.e., their combined
+       * traffic is throttled together at this rate.
+       * </pre>
+       */
+      public Builder clearAggregateDefaultQps() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        aggregateDefaultQps_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 aggregate_default_capacity = 3;
+      private long aggregateDefaultCapacity_ ;
+      /**
+       * <code>optional uint64 aggregate_default_capacity = 3;</code>
+       *
+       * <pre>
+       * All the frameworks not specified in 'limits' get this default capacity.
+       * This is an aggregate value similar to 'aggregate_default_qps'.
+       * </pre>
+       */
+      public boolean hasAggregateDefaultCapacity() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional uint64 aggregate_default_capacity = 3;</code>
+       *
+       * <pre>
+       * All the frameworks not specified in 'limits' get this default capacity.
+       * This is an aggregate value similar to 'aggregate_default_qps'.
+       * </pre>
+       */
+      public long getAggregateDefaultCapacity() {
+        return aggregateDefaultCapacity_;
+      }
+      /**
+       * <code>optional uint64 aggregate_default_capacity = 3;</code>
+       *
+       * <pre>
+       * All the frameworks not specified in 'limits' get this default capacity.
+       * This is an aggregate value similar to 'aggregate_default_qps'.
+       * </pre>
+       */
+      public Builder setAggregateDefaultCapacity(long value) {
+        bitField0_ |= 0x00000004;
+        aggregateDefaultCapacity_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 aggregate_default_capacity = 3;</code>
+       *
+       * <pre>
+       * All the frameworks not specified in 'limits' get this default capacity.
+       * This is an aggregate value similar to 'aggregate_default_qps'.
+       * </pre>
+       */
+      public Builder clearAggregateDefaultCapacity() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        aggregateDefaultCapacity_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.RateLimits)
+    }
+
+    static {
+      defaultInstance = new RateLimits(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.RateLimits)
+  }
+
+  public interface ImageOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required .mesos.v1.Image.Type type = 1;
+    /**
+     * <code>required .mesos.v1.Image.Type type = 1;</code>
+     */
+    boolean hasType();
+    /**
+     * <code>required .mesos.v1.Image.Type type = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.Image.Type getType();
+
+    // optional .mesos.v1.Image.Appc appc = 2;
+    /**
+     * <code>optional .mesos.v1.Image.Appc appc = 2;</code>
+     *
+     * <pre>
+     * Only one of the following image messages should be set to match
+     * the type.
+     * </pre>
+     */
+    boolean hasAppc();
+    /**
+     * <code>optional .mesos.v1.Image.Appc appc = 2;</code>
+     *
+     * <pre>
+     * Only one of the following image messages should be set to match
+     * the type.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.Image.Appc getAppc();
+    /**
+     * <code>optional .mesos.v1.Image.Appc appc = 2;</code>
+     *
+     * <pre>
+     * Only one of the following image messages should be set to match
+     * the type.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.Image.AppcOrBuilder getAppcOrBuilder();
+
+    // optional .mesos.v1.Image.Docker docker = 3;
+    /**
+     * <code>optional .mesos.v1.Image.Docker docker = 3;</code>
+     */
+    boolean hasDocker();
+    /**
+     * <code>optional .mesos.v1.Image.Docker docker = 3;</code>
+     */
+    org.apache.mesos.v1.Protos.Image.Docker getDocker();
+    /**
+     * <code>optional .mesos.v1.Image.Docker docker = 3;</code>
+     */
+    org.apache.mesos.v1.Protos.Image.DockerOrBuilder getDockerOrBuilder();
+
+    // optional bool cached = 4 [default = true];
+    /**
+     * <code>optional bool cached = 4 [default = true];</code>
+     *
+     * <pre>
+     * With this flag set to false, the mesos containerizer will pull
+     * the docker/appc image from the registry even if the image is
+     * already downloaded on the agent.
+     * </pre>
+     */
+    boolean hasCached();
+    /**
+     * <code>optional bool cached = 4 [default = true];</code>
+     *
+     * <pre>
+     * With this flag set to false, the mesos containerizer will pull
+     * the docker/appc image from the registry even if the image is
+     * already downloaded on the agent.
+     * </pre>
+     */
+    boolean getCached();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.Image}
+   *
+   * <pre>
+   **
+   * Describe an image used by tasks or executors. Note that it's only
+   * for tasks or executors launched by MesosContainerizer currently.
+   * </pre>
+   */
+  public static final class Image extends
+      com.google.protobuf.GeneratedMessage
+      implements ImageOrBuilder {
+    // Use Image.newBuilder() to construct.
+    private Image(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Image(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Image defaultInstance;
+    public static Image getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Image getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Image(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 8: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.v1.Protos.Image.Type value = org.apache.mesos.v1.Protos.Image.Type.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(1, rawValue);
+              } else {
+                bitField0_ |= 0x00000001;
+                type_ = value;
+              }
+              break;
+            }
+            case 18: {
+              org.apache.mesos.v1.Protos.Image.Appc.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = appc_.toBuilder();
+              }
+              appc_ = input.readMessage(org.apache.mesos.v1.Protos.Image.Appc.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(appc_);
+                appc_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+            case 26: {
+              org.apache.mesos.v1.Protos.Image.Docker.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                subBuilder = docker_.toBuilder();
+              }
+              docker_ = input.readMessage(org.apache.mesos.v1.Protos.Image.Docker.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(docker_);
+                docker_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000004;
+              break;
+            }
+            case 32: {
+              bitField0_ |= 0x00000008;
+              cached_ = input.readBool();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Image_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Image_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.Image.class, org.apache.mesos.v1.Protos.Image.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Image> PARSER =
+        new com.google.protobuf.AbstractParser<Image>() {
+      public Image parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Image(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Image> getParserForType() {
+      return PARSER;
+    }
+
+    /**
+     * Protobuf enum {@code mesos.v1.Image.Type}
+     */
+    public enum Type
+        implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>APPC = 1;</code>
+       */
+      APPC(0, 1),
+      /**
+       * <code>DOCKER = 2;</code>
+       */
+      DOCKER(1, 2),
+      ;
+
+      /**
+       * <code>APPC = 1;</code>
+       */
+      public static final int APPC_VALUE = 1;
+      /**
+       * <code>DOCKER = 2;</code>
+       */
+      public static final int DOCKER_VALUE = 2;
+
+
+      public final int getNumber() { return value; }
+
+      public static Type valueOf(int value) {
+        switch (value) {
+          case 1: return APPC;
+          case 2: return DOCKER;
+          default: return null;
+        }
+      }
+
+      public static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalGetValueMap() {
+        return internalValueMap;
+      }
+      private static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap<Type>() {
+              public Type findValueByNumber(int number) {
+                return Type.valueOf(number);
+              }
+            };
+
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
+          getValueDescriptor() {
+        return getDescriptor().getValues().get(index);
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptorForType() {
+        return getDescriptor();
+      }
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.Image.getDescriptor().getEnumTypes().get(0);
+      }
+
+      private static final Type[] VALUES = values();
+
+      public static Type valueOf(
+          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+        if (desc.getType() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "EnumValueDescriptor is not for this type.");
+        }
+        return VALUES[desc.getIndex()];
+      }
+
+      private final int index;
+      private final int value;
+
+      private Type(int index, int value) {
+        this.index = index;
+        this.value = value;
+      }
+
+      // @@protoc_insertion_point(enum_scope:mesos.v1.Image.Type)
+    }
+
+    public interface AppcOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required string name = 1;
+      /**
+       * <code>required string name = 1;</code>
+       *
+       * <pre>
+       * The name of the image.
+       * </pre>
+       */
+      boolean hasName();
+      /**
+       * <code>required string name = 1;</code>
+       *
+       * <pre>
+       * The name of the image.
+       * </pre>
+       */
+      java.lang.String getName();
+      /**
+       * <code>required string name = 1;</code>
+       *
+       * <pre>
+       * The name of the image.
+       * </pre>
+       */
+      com.google.protobuf.ByteString
+          getNameBytes();
+
+      // optional string id = 2;
+      /**
+       * <code>optional string id = 2;</code>
+       *
+       * <pre>
+       * An image ID is a string of the format "hash-value", where
+       * "hash" is the hash algorithm used and "value" is the hex
+       * encoded string of the digest. Currently the only permitted
+       * hash algorithm is sha512.
+       * </pre>
+       */
+      boolean hasId();
+      /**
+       * <code>optional string id = 2;</code>
+       *
+       * <pre>
+       * An image ID is a string of the format "hash-value", where
+       * "hash" is the hash algorithm used and "value" is the hex
+       * encoded string of the digest. Currently the only permitted
+       * hash algorithm is sha512.
+       * </pre>
+       */
+      java.lang.String getId();
+      /**
+       * <code>optional string id = 2;</code>
+       *
+       * <pre>
+       * An image ID is a string of the format "hash-value", where
+       * "hash" is the hash algorithm used and "value" is the hex
+       * encoded string of the digest. Currently the only permitted
+       * hash algorithm is sha512.
+       * </pre>
+       */
+      com.google.protobuf.ByteString
+          getIdBytes();
+
+      // optional .mesos.v1.Labels labels = 3;
+      /**
+       * <code>optional .mesos.v1.Labels labels = 3;</code>
+       *
+       * <pre>
+       * Optional labels. Suggested labels: "version", "os", and "arch".
+       * </pre>
+       */
+      boolean hasLabels();
+      /**
+       * <code>optional .mesos.v1.Labels labels = 3;</code>
+       *
+       * <pre>
+       * Optional labels. Suggested labels: "version", "os", and "arch".
+       * </pre>
+       */
+      org.apache.mesos.v1.Protos.Labels getLabels();
+      /**
+       * <code>optional .mesos.v1.Labels labels = 3;</code>
+       *
+       * <pre>
+       * Optional labels. Suggested labels: "version", "os", and "arch".
+       * </pre>
+       */
+      org.apache.mesos.v1.Protos.LabelsOrBuilder getLabelsOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.Image.Appc}
+     *
+     * <pre>
+     * Protobuf for specifying an Appc container image. See:
+     * https://github.com/appc/spec/blob/master/spec/aci.md
+     * </pre>
+     */
+    public static final class Appc extends
+        com.google.protobuf.GeneratedMessage
+        implements AppcOrBuilder {
+      // Use Appc.newBuilder() to construct.
+      private Appc(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Appc(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Appc defaultInstance;
+      public static Appc getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Appc getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Appc(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                bitField0_ |= 0x00000001;
+                name_ = input.readBytes();
+                break;
+              }
+              case 18: {
+                bitField0_ |= 0x00000002;
+                id_ = input.readBytes();
+                break;
+              }
+              case 26: {
+                org.apache.mesos.v1.Protos.Labels.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                  subBuilder = labels_.toBuilder();
+                }
+                labels_ = input.readMessage(org.apache.mesos.v1.Protos.Labels.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(labels_);
+                  labels_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000004;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Image_Appc_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Image_Appc_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.Image.Appc.class, org.apache.mesos.v1.Protos.Image.Appc.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Appc> PARSER =
+          new com.google.protobuf.AbstractParser<Appc>() {
+        public Appc parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Appc(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Appc> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required string name = 1;
+      public static final int NAME_FIELD_NUMBER = 1;
+      private java.lang.Object name_;
+      /**
+       * <code>required string name = 1;</code>
+       *
+       * <pre>
+       * The name of the image.
+       * </pre>
+       */
+      public boolean hasName() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string name = 1;</code>
+       *
+       * <pre>
+       * The name of the image.
+       * </pre>
+       */
+      public java.lang.String getName() {
+        java.lang.Object ref = name_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            name_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>required string name = 1;</code>
+       *
+       * <pre>
+       * The name of the image.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        java.lang.Object ref = name_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          name_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      // optional string id = 2;
+      public static final int ID_FIELD_NUMBER = 2;
+      private java.lang.Object id_;
+      /**
+       * <code>optional string id = 2;</code>
+       *
+       * <pre>
+       * An image ID is a string of the format "hash-value", where
+       * "hash" is the hash algorithm used and "value" is the hex
+       * encoded string of the digest. Currently the only permitted
+       * hash algorithm is sha512.
+       * </pre>
+       */
+      public boolean hasId() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional string id = 2;</code>
+       *
+       * <pre>
+       * An image ID is a string of the format "hash-value", where
+       * "hash" is the hash algorithm used and "value" is the hex
+       * encoded string of the digest. Currently the only permitted
+       * hash algorithm is sha512.
+       * </pre>
+       */
+      public java.lang.String getId() {
+        java.lang.Object ref = id_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            id_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>optional string id = 2;</code>
+       *
+       * <pre>
+       * An image ID is a string of the format "hash-value", where
+       * "hash" is the hash algorithm used and "value" is the hex
+       * encoded string of the digest. Currently the only permitted
+       * hash algorithm is sha512.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getIdBytes() {
+        java.lang.Object ref = id_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          id_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      // optional .mesos.v1.Labels labels = 3;
+      public static final int LABELS_FIELD_NUMBER = 3;
+      private org.apache.mesos.v1.Protos.Labels labels_;
+      /**
+       * <code>optional .mesos.v1.Labels labels = 3;</code>
+       *
+       * <pre>
+       * Optional labels. Suggested labels: "version", "os", and "arch".
+       * </pre>
+       */
+      public boolean hasLabels() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 3;</code>
+       *
+       * <pre>
+       * Optional labels. Suggested labels: "version", "os", and "arch".
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Labels getLabels() {
+        return labels_;
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 3;</code>
+       *
+       * <pre>
+       * Optional labels. Suggested labels: "version", "os", and "arch".
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+        return labels_;
+      }
+
+      private void initFields() {
+        name_ = "";
+        id_ = "";
+        labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasName()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (hasLabels()) {
+          if (!getLabels().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeBytes(1, getNameBytes());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeBytes(2, getIdBytes());
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeMessage(3, labels_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(1, getNameBytes());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(2, getIdBytes());
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(3, labels_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.Protos.Image.Appc parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.Image.Appc parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Image.Appc parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.Image.Appc parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Image.Appc parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Image.Appc parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Image.Appc parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Image.Appc parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Image.Appc parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Image.Appc parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.Protos.Image.Appc prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.Image.Appc}
+       *
+       * <pre>
+       * Protobuf for specifying an Appc container image. See:
+       * https://github.com/appc/spec/blob/master/spec/aci.md
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.Protos.Image.AppcOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Image_Appc_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Image_Appc_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.Image.Appc.class, org.apache.mesos.v1.Protos.Image.Appc.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.Protos.Image.Appc.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getLabelsFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          name_ = "";
+          bitField0_ = (bitField0_ & ~0x00000001);
+          id_ = "";
+          bitField0_ = (bitField0_ & ~0x00000002);
+          if (labelsBuilder_ == null) {
+            labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+          } else {
+            labelsBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Image_Appc_descriptor;
+        }
+
+        public org.apache.mesos.v1.Protos.Image.Appc getDefaultInstanceForType() {
+          return org.apache.mesos.v1.Protos.Image.Appc.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.Protos.Image.Appc build() {
+          org.apache.mesos.v1.Protos.Image.Appc result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.Protos.Image.Appc buildPartial() {
+          org.apache.mesos.v1.Protos.Image.Appc result = new org.apache.mesos.v1.Protos.Image.Appc(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.name_ = name_;
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          result.id_ = id_;
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          if (labelsBuilder_ == null) {
+            result.labels_ = labels_;
+          } else {
+            result.labels_ = labelsBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.Protos.Image.Appc) {
+            return mergeFrom((org.apache.mesos.v1.Protos.Image.Appc)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.Protos.Image.Appc other) {
+          if (other == org.apache.mesos.v1.Protos.Image.Appc.getDefaultInstance()) return this;
+          if (other.hasName()) {
+            bitField0_ |= 0x00000001;
+            name_ = other.name_;
+            onChanged();
+          }
+          if (other.hasId()) {
+            bitField0_ |= 0x00000002;
+            id_ = other.id_;
+            onChanged();
+          }
+          if (other.hasLabels()) {
+            mergeLabels(other.getLabels());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasName()) {
+            
+            return false;
+          }
+          if (hasLabels()) {
+            if (!getLabels().isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.Protos.Image.Appc parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.Protos.Image.Appc) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required string name = 1;
+        private java.lang.Object name_ = "";
+        /**
+         * <code>required string name = 1;</code>
+         *
+         * <pre>
+         * The name of the image.
+         * </pre>
+         */
+        public boolean hasName() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required string name = 1;</code>
+         *
+         * <pre>
+         * The name of the image.
+         * </pre>
+         */
+        public java.lang.String getName() {
+          java.lang.Object ref = name_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            name_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>required string name = 1;</code>
+         *
+         * <pre>
+         * The name of the image.
+         * </pre>
+         */
+        public com.google.protobuf.ByteString
+            getNameBytes() {
+          java.lang.Object ref = name_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            name_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>required string name = 1;</code>
+         *
+         * <pre>
+         * The name of the image.
+         * </pre>
+         */
+        public Builder setName(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          name_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required string name = 1;</code>
+         *
+         * <pre>
+         * The name of the image.
+         * </pre>
+         */
+        public Builder clearName() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          name_ = getDefaultInstance().getName();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required string name = 1;</code>
+         *
+         * <pre>
+         * The name of the image.
+         * </pre>
+         */
+        public Builder setNameBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          name_ = value;
+          onChanged();
+          return this;
+        }
+
+        // optional string id = 2;
+        private java.lang.Object id_ = "";
+        /**
+         * <code>optional string id = 2;</code>
+         *
+         * <pre>
+         * An image ID is a string of the format "hash-value", where
+         * "hash" is the hash algorithm used and "value" is the hex
+         * encoded string of the digest. Currently the only permitted
+         * hash algorithm is sha512.
+         * </pre>
+         */
+        public boolean hasId() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional string id = 2;</code>
+         *
+         * <pre>
+         * An image ID is a string of the format "hash-value", where
+         * "hash" is the hash algorithm used and "value" is the hex
+         * encoded string of the digest. Currently the only permitted
+         * hash algorithm is sha512.
+         * </pre>
+         */
+        public java.lang.String getId() {
+          java.lang.Object ref = id_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            id_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>optional string id = 2;</code>
+         *
+         * <pre>
+         * An image ID is a string of the format "hash-value", where
+         * "hash" is the hash algorithm used and "value" is the hex
+         * encoded string of the digest. Currently the only permitted
+         * hash algorithm is sha512.
+         * </pre>
+         */
+        public com.google.protobuf.ByteString
+            getIdBytes() {
+          java.lang.Object ref = id_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            id_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>optional string id = 2;</code>
+         *
+         * <pre>
+         * An image ID is a string of the format "hash-value", where
+         * "hash" is the hash algorithm used and "value" is the hex
+         * encoded string of the digest. Currently the only permitted
+         * hash algorithm is sha512.
+         * </pre>
+         */
+        public Builder setId(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+          id_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string id = 2;</code>
+         *
+         * <pre>
+         * An image ID is a string of the format "hash-value", where
+         * "hash" is the hash algorithm used and "value" is the hex
+         * encoded string of the digest. Currently the only permitted
+         * hash algorithm is sha512.
+         * </pre>
+         */
+        public Builder clearId() {
+          bitField0_ = (bitField0_ & ~0x00000002);
+          id_ = getDefaultInstance().getId();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string id = 2;</code>
+         *
+         * <pre>
+         * An image ID is a string of the format "hash-value", where
+         * "hash" is the hash algorithm used and "value" is the hex
+         * encoded string of the digest. Currently the only permitted
+         * hash algorithm is sha512.
+         * </pre>
+         */
+        public Builder setIdBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+          id_ = value;
+          onChanged();
+          return this;
+        }
+
+        // optional .mesos.v1.Labels labels = 3;
+        private org.apache.mesos.v1.Protos.Labels labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Labels, org.apache.mesos.v1.Protos.Labels.Builder, org.apache.mesos.v1.Protos.LabelsOrBuilder> labelsBuilder_;
+        /**
+         * <code>optional .mesos.v1.Labels labels = 3;</code>
+         *
+         * <pre>
+         * Optional labels. Suggested labels: "version", "os", and "arch".
+         * </pre>
+         */
+        public boolean hasLabels() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional .mesos.v1.Labels labels = 3;</code>
+         *
+         * <pre>
+         * Optional labels. Suggested labels: "version", "os", and "arch".
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.Labels getLabels() {
+          if (labelsBuilder_ == null) {
+            return labels_;
+          } else {
+            return labelsBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Labels labels = 3;</code>
+         *
+         * <pre>
+         * Optional labels. Suggested labels: "version", "os", and "arch".
+         * </pre>
+         */
+        public Builder setLabels(org.apache.mesos.v1.Protos.Labels value) {
+          if (labelsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            labels_ = value;
+            onChanged();
+          } else {
+            labelsBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Labels labels = 3;</code>
+         *
+         * <pre>
+         * Optional labels. Suggested labels: "version", "os", and "arch".
+         * </pre>
+         */
+        public Builder setLabels(
+            org.apache.mesos.v1.Protos.Labels.Builder builderForValue) {
+          if (labelsBuilder_ == null) {
+            labels_ = builderForValue.build();
+            onChanged();
+          } else {
+            labelsBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Labels labels = 3;</code>
+         *
+         * <pre>
+         * Optional labels. Suggested labels: "version", "os", and "arch".
+         * </pre>
+         */
+        public Builder mergeLabels(org.apache.mesos.v1.Protos.Labels value) {
+          if (labelsBuilder_ == null) {
+            if (((bitField0_ & 0x00000004) == 0x00000004) &&
+                labels_ != org.apache.mesos.v1.Protos.Labels.getDefaultInstance()) {
+              labels_ =
+                org.apache.mesos.v1.Protos.Labels.newBuilder(labels_).mergeFrom(value).buildPartial();
+            } else {
+              labels_ = value;
+            }
+            onChanged();
+          } else {
+            labelsBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Labels labels = 3;</code>
+         *
+         * <pre>
+         * Optional labels. Suggested labels: "version", "os", and "arch".
+         * </pre>
+         */
+        public Builder clearLabels() {
+          if (labelsBuilder_ == null) {
+            labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+            onChanged();
+          } else {
+            labelsBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Labels labels = 3;</code>
+         *
+         * <pre>
+         * Optional labels. Suggested labels: "version", "os", and "arch".
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.Labels.Builder getLabelsBuilder() {
+          bitField0_ |= 0x00000004;
+          onChanged();
+          return getLabelsFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.v1.Labels labels = 3;</code>
+         *
+         * <pre>
+         * Optional labels. Suggested labels: "version", "os", and "arch".
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+          if (labelsBuilder_ != null) {
+            return labelsBuilder_.getMessageOrBuilder();
+          } else {
+            return labels_;
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Labels labels = 3;</code>
+         *
+         * <pre>
+         * Optional labels. Suggested labels: "version", "os", and "arch".
+         * </pre>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Labels, org.apache.mesos.v1.Protos.Labels.Builder, org.apache.mesos.v1.Protos.LabelsOrBuilder> 
+            getLabelsFieldBuilder() {
+          if (labelsBuilder_ == null) {
+            labelsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.Labels, org.apache.mesos.v1.Protos.Labels.Builder, org.apache.mesos.v1.Protos.LabelsOrBuilder>(
+                    labels_,
+                    getParentForChildren(),
+                    isClean());
+            labels_ = null;
+          }
+          return labelsBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.Image.Appc)
+      }
+
+      static {
+        defaultInstance = new Appc(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.Image.Appc)
+    }
+
+    public interface DockerOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required string name = 1;
+      /**
+       * <code>required string name = 1;</code>
+       *
+       * <pre>
+       * The name of the image. Expected format:
+       *   [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG|@TYPE:DIGEST]
+       *
+       * See: https://docs.docker.com/reference/commandline/pull/
+       * </pre>
+       */
+      boolean hasName();
+      /**
+       * <code>required string name = 1;</code>
+       *
+       * <pre>
+       * The name of the image. Expected format:
+       *   [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG|@TYPE:DIGEST]
+       *
+       * See: https://docs.docker.com/reference/commandline/pull/
+       * </pre>
+       */
+      java.lang.String getName();
+      /**
+       * <code>required string name = 1;</code>
+       *
+       * <pre>
+       * The name of the image. Expected format:
+       *   [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG|@TYPE:DIGEST]
+       *
+       * See: https://docs.docker.com/reference/commandline/pull/
+       * </pre>
+       */
+      com.google.protobuf.ByteString
+          getNameBytes();
+
+      // optional .mesos.v1.Credential credential = 2 [deprecated = true];
+      /**
+       * <code>optional .mesos.v1.Credential credential = 2 [deprecated = true];</code>
+       *
+       * <pre>
+       * Credential to authenticate with docker registry.
+       * NOTE: This is not encrypted, therefore framework and operators
+       * should enable SSL when passing this information.
+       *
+       * This field has never been used in Mesos before and is
+       * deprecated since Mesos 1.3. Please use `config` below
+       * (see MESOS-7088 for details).
+       * </pre>
+       */
+      @java.lang.Deprecated boolean hasCredential();
+      /**
+       * <code>optional .mesos.v1.Credential credential = 2 [deprecated = true];</code>
+       *
+       * <pre>
+       * Credential to authenticate with docker registry.
+       * NOTE: This is not encrypted, therefore framework and operators
+       * should enable SSL when passing this information.
+       *
+       * This field has never been used in Mesos before and is
+       * deprecated since Mesos 1.3. Please use `config` below
+       * (see MESOS-7088 for details).
+       * </pre>
+       */
+      @java.lang.Deprecated org.apache.mesos.v1.Protos.Credential getCredential();
+      /**
+       * <code>optional .mesos.v1.Credential credential = 2 [deprecated = true];</code>
+       *
+       * <pre>
+       * Credential to authenticate with docker registry.
+       * NOTE: This is not encrypted, therefore framework and operators
+       * should enable SSL when passing this information.
+       *
+       * This field has never been used in Mesos before and is
+       * deprecated since Mesos 1.3. Please use `config` below
+       * (see MESOS-7088 for details).
+       * </pre>
+       */
+      @java.lang.Deprecated org.apache.mesos.v1.Protos.CredentialOrBuilder getCredentialOrBuilder();
+
+      // optional .mesos.v1.Secret config = 3;
+      /**
+       * <code>optional .mesos.v1.Secret config = 3;</code>
+       *
+       * <pre>
+       * Docker config containing credentails to authenticate with
+       * docker registry. The secret is expected to be a docker
+       * config file in JSON format with UTF-8 character encoding.
+       * </pre>
+       */
+      boolean hasConfig();
+      /**
+       * <code>optional .mesos.v1.Secret config = 3;</code>
+       *
+       * <pre>
+       * Docker config containing credentails to authenticate with
+       * docker registry. The secret is expected to be a docker
+       * config file in JSON format with UTF-8 character encoding.
+       * </pre>
+       */
+      org.apache.mesos.v1.Protos.Secret getConfig();
+      /**
+       * <code>optional .mesos.v1.Secret config = 3;</code>
+       *
+       * <pre>
+       * Docker config containing credentails to authenticate with
+       * docker registry. The secret is expected to be a docker
+       * config file in JSON format with UTF-8 character encoding.
+       * </pre>
+       */
+      org.apache.mesos.v1.Protos.SecretOrBuilder getConfigOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.Image.Docker}
+     */
+    public static final class Docker extends
+        com.google.protobuf.GeneratedMessage
+        implements DockerOrBuilder {
+      // Use Docker.newBuilder() to construct.
+      private Docker(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Docker(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Docker defaultInstance;
+      public static Docker getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Docker getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Docker(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                bitField0_ |= 0x00000001;
+                name_ = input.readBytes();
+                break;
+              }
+              case 18: {
+                org.apache.mesos.v1.Protos.Credential.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                  subBuilder = credential_.toBuilder();
+                }
+                credential_ = input.readMessage(org.apache.mesos.v1.Protos.Credential.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(credential_);
+                  credential_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000002;
+                break;
+              }
+              case 26: {
+                org.apache.mesos.v1.Protos.Secret.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                  subBuilder = config_.toBuilder();
+                }
+                config_ = input.readMessage(org.apache.mesos.v1.Protos.Secret.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(config_);
+                  config_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000004;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Image_Docker_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Image_Docker_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.Image.Docker.class, org.apache.mesos.v1.Protos.Image.Docker.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Docker> PARSER =
+          new com.google.protobuf.AbstractParser<Docker>() {
+        public Docker parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Docker(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Docker> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required string name = 1;
+      public static final int NAME_FIELD_NUMBER = 1;
+      private java.lang.Object name_;
+      /**
+       * <code>required string name = 1;</code>
+       *
+       * <pre>
+       * The name of the image. Expected format:
+       *   [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG|@TYPE:DIGEST]
+       *
+       * See: https://docs.docker.com/reference/commandline/pull/
+       * </pre>
+       */
+      public boolean hasName() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string name = 1;</code>
+       *
+       * <pre>
+       * The name of the image. Expected format:
+       *   [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG|@TYPE:DIGEST]
+       *
+       * See: https://docs.docker.com/reference/commandline/pull/
+       * </pre>
+       */
+      public java.lang.String getName() {
+        java.lang.Object ref = name_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            name_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>required string name = 1;</code>
+       *
+       * <pre>
+       * The name of the image. Expected format:
+       *   [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG|@TYPE:DIGEST]
+       *
+       * See: https://docs.docker.com/reference/commandline/pull/
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        java.lang.Object ref = name_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          name_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      // optional .mesos.v1.Credential credential = 2 [deprecated = true];
+      public static final int CREDENTIAL_FIELD_NUMBER = 2;
+      private org.apache.mesos.v1.Protos.Credential credential_;
+      /**
+       * <code>optional .mesos.v1.Credential credential = 2 [deprecated = true];</code>
+       *
+       * <pre>
+       * Credential to authenticate with docker registry.
+       * NOTE: This is not encrypted, therefore framework and operators
+       * should enable SSL when passing this information.
+       *
+       * This field has never been used in Mesos before and is
+       * deprecated since Mesos 1.3. Please use `config` below
+       * (see MESOS-7088 for details).
+       * </pre>
+       */
+      @java.lang.Deprecated public boolean hasCredential() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.v1.Credential credential = 2 [deprecated = true];</code>
+       *
+       * <pre>
+       * Credential to authenticate with docker registry.
+       * NOTE: This is not encrypted, therefore framework and operators
+       * should enable SSL when passing this information.
+       *
+       * This field has never been used in Mesos before and is
+       * deprecated since Mesos 1.3. Please use `config` below
+       * (see MESOS-7088 for details).
+       * </pre>
+       */
+      @java.lang.Deprecated public org.apache.mesos.v1.Protos.Credential getCredential() {
+        return credential_;
+      }
+      /**
+       * <code>optional .mesos.v1.Credential credential = 2 [deprecated = true];</code>
+       *
+       * <pre>
+       * Credential to authenticate with docker registry.
+       * NOTE: This is not encrypted, therefore framework and operators
+       * should enable SSL when passing this information.
+       *
+       * This field has never been used in Mesos before and is
+       * deprecated since Mesos 1.3. Please use `config` below
+       * (see MESOS-7088 for details).
+       * </pre>
+       */
+      @java.lang.Deprecated public org.apache.mesos.v1.Protos.CredentialOrBuilder getCredentialOrBuilder() {
+        return credential_;
+      }
+
+      // optional .mesos.v1.Secret config = 3;
+      public static final int CONFIG_FIELD_NUMBER = 3;
+      private org.apache.mesos.v1.Protos.Secret config_;
+      /**
+       * <code>optional .mesos.v1.Secret config = 3;</code>
+       *
+       * <pre>
+       * Docker config containing credentails to authenticate with
+       * docker registry. The secret is expected to be a docker
+       * config file in JSON format with UTF-8 character encoding.
+       * </pre>
+       */
+      public boolean hasConfig() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.v1.Secret config = 3;</code>
+       *
+       * <pre>
+       * Docker config containing credentails to authenticate with
+       * docker registry. The secret is expected to be a docker
+       * config file in JSON format with UTF-8 character encoding.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Secret getConfig() {
+        return config_;
+      }
+      /**
+       * <code>optional .mesos.v1.Secret config = 3;</code>
+       *
+       * <pre>
+       * Docker config containing credentails to authenticate with
+       * docker registry. The secret is expected to be a docker
+       * config file in JSON format with UTF-8 character encoding.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.SecretOrBuilder getConfigOrBuilder() {
+        return config_;
+      }
+
+      private void initFields() {
+        name_ = "";
+        credential_ = org.apache.mesos.v1.Protos.Credential.getDefaultInstance();
+        config_ = org.apache.mesos.v1.Protos.Secret.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasName()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (hasCredential()) {
+          if (!getCredential().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        if (hasConfig()) {
+          if (!getConfig().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeBytes(1, getNameBytes());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeMessage(2, credential_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeMessage(3, config_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(1, getNameBytes());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(2, credential_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(3, config_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.Protos.Image.Docker parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.Image.Docker parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Image.Docker parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.Image.Docker parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Image.Docker parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Image.Docker parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Image.Docker parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Image.Docker parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Image.Docker parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Image.Docker parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.Protos.Image.Docker prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.Image.Docker}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.Protos.Image.DockerOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Image_Docker_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Image_Docker_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.Image.Docker.class, org.apache.mesos.v1.Protos.Image.Docker.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.Protos.Image.Docker.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getCredentialFieldBuilder();
+            getConfigFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          name_ = "";
+          bitField0_ = (bitField0_ & ~0x00000001);
+          if (credentialBuilder_ == null) {
+            credential_ = org.apache.mesos.v1.Protos.Credential.getDefaultInstance();
+          } else {
+            credentialBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          if (configBuilder_ == null) {
+            config_ = org.apache.mesos.v1.Protos.Secret.getDefaultInstance();
+          } else {
+            configBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Image_Docker_descriptor;
+        }
+
+        public org.apache.mesos.v1.Protos.Image.Docker getDefaultInstanceForType() {
+          return org.apache.mesos.v1.Protos.Image.Docker.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.Protos.Image.Docker build() {
+          org.apache.mesos.v1.Protos.Image.Docker result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.Protos.Image.Docker buildPartial() {
+          org.apache.mesos.v1.Protos.Image.Docker result = new org.apache.mesos.v1.Protos.Image.Docker(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.name_ = name_;
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          if (credentialBuilder_ == null) {
+            result.credential_ = credential_;
+          } else {
+            result.credential_ = credentialBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          if (configBuilder_ == null) {
+            result.config_ = config_;
+          } else {
+            result.config_ = configBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.Protos.Image.Docker) {
+            return mergeFrom((org.apache.mesos.v1.Protos.Image.Docker)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.Protos.Image.Docker other) {
+          if (other == org.apache.mesos.v1.Protos.Image.Docker.getDefaultInstance()) return this;
+          if (other.hasName()) {
+            bitField0_ |= 0x00000001;
+            name_ = other.name_;
+            onChanged();
+          }
+          if (other.hasCredential()) {
+            mergeCredential(other.getCredential());
+          }
+          if (other.hasConfig()) {
+            mergeConfig(other.getConfig());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasName()) {
+            
+            return false;
+          }
+          if (hasCredential()) {
+            if (!getCredential().isInitialized()) {
+              
+              return false;
+            }
+          }
+          if (hasConfig()) {
+            if (!getConfig().isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.Protos.Image.Docker parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.Protos.Image.Docker) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required string name = 1;
+        private java.lang.Object name_ = "";
+        /**
+         * <code>required string name = 1;</code>
+         *
+         * <pre>
+         * The name of the image. Expected format:
+         *   [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG|@TYPE:DIGEST]
+         *
+         * See: https://docs.docker.com/reference/commandline/pull/
+         * </pre>
+         */
+        public boolean hasName() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required string name = 1;</code>
+         *
+         * <pre>
+         * The name of the image. Expected format:
+         *   [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG|@TYPE:DIGEST]
+         *
+         * See: https://docs.docker.com/reference/commandline/pull/
+         * </pre>
+         */
+        public java.lang.String getName() {
+          java.lang.Object ref = name_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            name_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>required string name = 1;</code>
+         *
+         * <pre>
+         * The name of the image. Expected format:
+         *   [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG|@TYPE:DIGEST]
+         *
+         * See: https://docs.docker.com/reference/commandline/pull/
+         * </pre>
+         */
+        public com.google.protobuf.ByteString
+            getNameBytes() {
+          java.lang.Object ref = name_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            name_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>required string name = 1;</code>
+         *
+         * <pre>
+         * The name of the image. Expected format:
+         *   [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG|@TYPE:DIGEST]
+         *
+         * See: https://docs.docker.com/reference/commandline/pull/
+         * </pre>
+         */
+        public Builder setName(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          name_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required string name = 1;</code>
+         *
+         * <pre>
+         * The name of the image. Expected format:
+         *   [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG|@TYPE:DIGEST]
+         *
+         * See: https://docs.docker.com/reference/commandline/pull/
+         * </pre>
+         */
+        public Builder clearName() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          name_ = getDefaultInstance().getName();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required string name = 1;</code>
+         *
+         * <pre>
+         * The name of the image. Expected format:
+         *   [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG|@TYPE:DIGEST]
+         *
+         * See: https://docs.docker.com/reference/commandline/pull/
+         * </pre>
+         */
+        public Builder setNameBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          name_ = value;
+          onChanged();
+          return this;
+        }
+
+        // optional .mesos.v1.Credential credential = 2 [deprecated = true];
+        private org.apache.mesos.v1.Protos.Credential credential_ = org.apache.mesos.v1.Protos.Credential.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Credential, org.apache.mesos.v1.Protos.Credential.Builder, org.apache.mesos.v1.Protos.CredentialOrBuilder> credentialBuilder_;
+        /**
+         * <code>optional .mesos.v1.Credential credential = 2 [deprecated = true];</code>
+         *
+         * <pre>
+         * Credential to authenticate with docker registry.
+         * NOTE: This is not encrypted, therefore framework and operators
+         * should enable SSL when passing this information.
+         *
+         * This field has never been used in Mesos before and is
+         * deprecated since Mesos 1.3. Please use `config` below
+         * (see MESOS-7088 for details).
+         * </pre>
+         */
+        @java.lang.Deprecated public boolean hasCredential() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional .mesos.v1.Credential credential = 2 [deprecated = true];</code>
+         *
+         * <pre>
+         * Credential to authenticate with docker registry.
+         * NOTE: This is not encrypted, therefore framework and operators
+         * should enable SSL when passing this information.
+         *
+         * This field has never been used in Mesos before and is
+         * deprecated since Mesos 1.3. Please use `config` below
+         * (see MESOS-7088 for details).
+         * </pre>
+         */
+        @java.lang.Deprecated public org.apache.mesos.v1.Protos.Credential getCredential() {
+          if (credentialBuilder_ == null) {
+            return credential_;
+          } else {
+            return credentialBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Credential credential = 2 [deprecated = true];</code>
+         *
+         * <pre>
+         * Credential to authenticate with docker registry.
+         * NOTE: This is not encrypted, therefore framework and operators
+         * should enable SSL when passing this information.
+         *
+         * This field has never been used in Mesos before and is
+         * deprecated since Mesos 1.3. Please use `config` below
+         * (see MESOS-7088 for details).
+         * </pre>
+         */
+        @java.lang.Deprecated public Builder setCredential(org.apache.mesos.v1.Protos.Credential value) {
+          if (credentialBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            credential_ = value;
+            onChanged();
+          } else {
+            credentialBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Credential credential = 2 [deprecated = true];</code>
+         *
+         * <pre>
+         * Credential to authenticate with docker registry.
+         * NOTE: This is not encrypted, therefore framework and operators
+         * should enable SSL when passing this information.
+         *
+         * This field has never been used in Mesos before and is
+         * deprecated since Mesos 1.3. Please use `config` below
+         * (see MESOS-7088 for details).
+         * </pre>
+         */
+        @java.lang.Deprecated public Builder setCredential(
+            org.apache.mesos.v1.Protos.Credential.Builder builderForValue) {
+          if (credentialBuilder_ == null) {
+            credential_ = builderForValue.build();
+            onChanged();
+          } else {
+            credentialBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Credential credential = 2 [deprecated = true];</code>
+         *
+         * <pre>
+         * Credential to authenticate with docker registry.
+         * NOTE: This is not encrypted, therefore framework and operators
+         * should enable SSL when passing this information.
+         *
+         * This field has never been used in Mesos before and is
+         * deprecated since Mesos 1.3. Please use `config` below
+         * (see MESOS-7088 for details).
+         * </pre>
+         */
+        @java.lang.Deprecated public Builder mergeCredential(org.apache.mesos.v1.Protos.Credential value) {
+          if (credentialBuilder_ == null) {
+            if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                credential_ != org.apache.mesos.v1.Protos.Credential.getDefaultInstance()) {
+              credential_ =
+                org.apache.mesos.v1.Protos.Credential.newBuilder(credential_).mergeFrom(value).buildPartial();
+            } else {
+              credential_ = value;
+            }
+            onChanged();
+          } else {
+            credentialBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Credential credential = 2 [deprecated = true];</code>
+         *
+         * <pre>
+         * Credential to authenticate with docker registry.
+         * NOTE: This is not encrypted, therefore framework and operators
+         * should enable SSL when passing this information.
+         *
+         * This field has never been used in Mesos before and is
+         * deprecated since Mesos 1.3. Please use `config` below
+         * (see MESOS-7088 for details).
+         * </pre>
+         */
+        @java.lang.Deprecated public Builder clearCredential() {
+          if (credentialBuilder_ == null) {
+            credential_ = org.apache.mesos.v1.Protos.Credential.getDefaultInstance();
+            onChanged();
+          } else {
+            credentialBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Credential credential = 2 [deprecated = true];</code>
+         *
+         * <pre>
+         * Credential to authenticate with docker registry.
+         * NOTE: This is not encrypted, therefore framework and operators
+         * should enable SSL when passing this information.
+         *
+         * This field has never been used in Mesos before and is
+         * deprecated since Mesos 1.3. Please use `config` below
+         * (see MESOS-7088 for details).
+         * </pre>
+         */
+        @java.lang.Deprecated public org.apache.mesos.v1.Protos.Credential.Builder getCredentialBuilder() {
+          bitField0_ |= 0x00000002;
+          onChanged();
+          return getCredentialFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.v1.Credential credential = 2 [deprecated = true];</code>
+         *
+         * <pre>
+         * Credential to authenticate with docker registry.
+         * NOTE: This is not encrypted, therefore framework and operators
+         * should enable SSL when passing this information.
+         *
+         * This field has never been used in Mesos before and is
+         * deprecated since Mesos 1.3. Please use `config` below
+         * (see MESOS-7088 for details).
+         * </pre>
+         */
+        @java.lang.Deprecated public org.apache.mesos.v1.Protos.CredentialOrBuilder getCredentialOrBuilder() {
+          if (credentialBuilder_ != null) {
+            return credentialBuilder_.getMessageOrBuilder();
+          } else {
+            return credential_;
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Credential credential = 2 [deprecated = true];</code>
+         *
+         * <pre>
+         * Credential to authenticate with docker registry.
+         * NOTE: This is not encrypted, therefore framework and operators
+         * should enable SSL when passing this information.
+         *
+         * This field has never been used in Mesos before and is
+         * deprecated since Mesos 1.3. Please use `config` below
+         * (see MESOS-7088 for details).
+         * </pre>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Credential, org.apache.mesos.v1.Protos.Credential.Builder, org.apache.mesos.v1.Protos.CredentialOrBuilder> 
+            getCredentialFieldBuilder() {
+          if (credentialBuilder_ == null) {
+            credentialBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.Credential, org.apache.mesos.v1.Protos.Credential.Builder, org.apache.mesos.v1.Protos.CredentialOrBuilder>(
+                    credential_,
+                    getParentForChildren(),
+                    isClean());
+            credential_ = null;
+          }
+          return credentialBuilder_;
+        }
+
+        // optional .mesos.v1.Secret config = 3;
+        private org.apache.mesos.v1.Protos.Secret config_ = org.apache.mesos.v1.Protos.Secret.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Secret, org.apache.mesos.v1.Protos.Secret.Builder, org.apache.mesos.v1.Protos.SecretOrBuilder> configBuilder_;
+        /**
+         * <code>optional .mesos.v1.Secret config = 3;</code>
+         *
+         * <pre>
+         * Docker config containing credentails to authenticate with
+         * docker registry. The secret is expected to be a docker
+         * config file in JSON format with UTF-8 character encoding.
+         * </pre>
+         */
+        public boolean hasConfig() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional .mesos.v1.Secret config = 3;</code>
+         *
+         * <pre>
+         * Docker config containing credentails to authenticate with
+         * docker registry. The secret is expected to be a docker
+         * config file in JSON format with UTF-8 character encoding.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.Secret getConfig() {
+          if (configBuilder_ == null) {
+            return config_;
+          } else {
+            return configBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Secret config = 3;</code>
+         *
+         * <pre>
+         * Docker config containing credentails to authenticate with
+         * docker registry. The secret is expected to be a docker
+         * config file in JSON format with UTF-8 character encoding.
+         * </pre>
+         */
+        public Builder setConfig(org.apache.mesos.v1.Protos.Secret value) {
+          if (configBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            config_ = value;
+            onChanged();
+          } else {
+            configBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Secret config = 3;</code>
+         *
+         * <pre>
+         * Docker config containing credentails to authenticate with
+         * docker registry. The secret is expected to be a docker
+         * config file in JSON format with UTF-8 character encoding.
+         * </pre>
+         */
+        public Builder setConfig(
+            org.apache.mesos.v1.Protos.Secret.Builder builderForValue) {
+          if (configBuilder_ == null) {
+            config_ = builderForValue.build();
+            onChanged();
+          } else {
+            configBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Secret config = 3;</code>
+         *
+         * <pre>
+         * Docker config containing credentails to authenticate with
+         * docker registry. The secret is expected to be a docker
+         * config file in JSON format with UTF-8 character encoding.
+         * </pre>
+         */
+        public Builder mergeConfig(org.apache.mesos.v1.Protos.Secret value) {
+          if (configBuilder_ == null) {
+            if (((bitField0_ & 0x00000004) == 0x00000004) &&
+                config_ != org.apache.mesos.v1.Protos.Secret.getDefaultInstance()) {
+              config_ =
+                org.apache.mesos.v1.Protos.Secret.newBuilder(config_).mergeFrom(value).buildPartial();
+            } else {
+              config_ = value;
+            }
+            onChanged();
+          } else {
+            configBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Secret config = 3;</code>
+         *
+         * <pre>
+         * Docker config containing credentails to authenticate with
+         * docker registry. The secret is expected to be a docker
+         * config file in JSON format with UTF-8 character encoding.
+         * </pre>
+         */
+        public Builder clearConfig() {
+          if (configBuilder_ == null) {
+            config_ = org.apache.mesos.v1.Protos.Secret.getDefaultInstance();
+            onChanged();
+          } else {
+            configBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Secret config = 3;</code>
+         *
+         * <pre>
+         * Docker config containing credentails to authenticate with
+         * docker registry. The secret is expected to be a docker
+         * config file in JSON format with UTF-8 character encoding.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.Secret.Builder getConfigBuilder() {
+          bitField0_ |= 0x00000004;
+          onChanged();
+          return getConfigFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.v1.Secret config = 3;</code>
+         *
+         * <pre>
+         * Docker config containing credentails to authenticate with
+         * docker registry. The secret is expected to be a docker
+         * config file in JSON format with UTF-8 character encoding.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.SecretOrBuilder getConfigOrBuilder() {
+          if (configBuilder_ != null) {
+            return configBuilder_.getMessageOrBuilder();
+          } else {
+            return config_;
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Secret config = 3;</code>
+         *
+         * <pre>
+         * Docker config containing credentails to authenticate with
+         * docker registry. The secret is expected to be a docker
+         * config file in JSON format with UTF-8 character encoding.
+         * </pre>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Secret, org.apache.mesos.v1.Protos.Secret.Builder, org.apache.mesos.v1.Protos.SecretOrBuilder> 
+            getConfigFieldBuilder() {
+          if (configBuilder_ == null) {
+            configBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.Secret, org.apache.mesos.v1.Protos.Secret.Builder, org.apache.mesos.v1.Protos.SecretOrBuilder>(
+                    config_,
+                    getParentForChildren(),
+                    isClean());
+            config_ = null;
+          }
+          return configBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.Image.Docker)
+      }
+
+      static {
+        defaultInstance = new Docker(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.Image.Docker)
+    }
+
+    private int bitField0_;
+    // required .mesos.v1.Image.Type type = 1;
+    public static final int TYPE_FIELD_NUMBER = 1;
+    private org.apache.mesos.v1.Protos.Image.Type type_;
+    /**
+     * <code>required .mesos.v1.Image.Type type = 1;</code>
+     */
+    public boolean hasType() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required .mesos.v1.Image.Type type = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.Image.Type getType() {
+      return type_;
+    }
+
+    // optional .mesos.v1.Image.Appc appc = 2;
+    public static final int APPC_FIELD_NUMBER = 2;
+    private org.apache.mesos.v1.Protos.Image.Appc appc_;
+    /**
+     * <code>optional .mesos.v1.Image.Appc appc = 2;</code>
+     *
+     * <pre>
+     * Only one of the following image messages should be set to match
+     * the type.
+     * </pre>
+     */
+    public boolean hasAppc() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional .mesos.v1.Image.Appc appc = 2;</code>
+     *
+     * <pre>
+     * Only one of the following image messages should be set to match
+     * the type.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.Image.Appc getAppc() {
+      return appc_;
+    }
+    /**
+     * <code>optional .mesos.v1.Image.Appc appc = 2;</code>
+     *
+     * <pre>
+     * Only one of the following image messages should be set to match
+     * the type.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.Image.AppcOrBuilder getAppcOrBuilder() {
+      return appc_;
+    }
+
+    // optional .mesos.v1.Image.Docker docker = 3;
+    public static final int DOCKER_FIELD_NUMBER = 3;
+    private org.apache.mesos.v1.Protos.Image.Docker docker_;
+    /**
+     * <code>optional .mesos.v1.Image.Docker docker = 3;</code>
+     */
+    public boolean hasDocker() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional .mesos.v1.Image.Docker docker = 3;</code>
+     */
+    public org.apache.mesos.v1.Protos.Image.Docker getDocker() {
+      return docker_;
+    }
+    /**
+     * <code>optional .mesos.v1.Image.Docker docker = 3;</code>
+     */
+    public org.apache.mesos.v1.Protos.Image.DockerOrBuilder getDockerOrBuilder() {
+      return docker_;
+    }
+
+    // optional bool cached = 4 [default = true];
+    public static final int CACHED_FIELD_NUMBER = 4;
+    private boolean cached_;
+    /**
+     * <code>optional bool cached = 4 [default = true];</code>
+     *
+     * <pre>
+     * With this flag set to false, the mesos containerizer will pull
+     * the docker/appc image from the registry even if the image is
+     * already downloaded on the agent.
+     * </pre>
+     */
+    public boolean hasCached() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional bool cached = 4 [default = true];</code>
+     *
+     * <pre>
+     * With this flag set to false, the mesos containerizer will pull
+     * the docker/appc image from the registry even if the image is
+     * already downloaded on the agent.
+     * </pre>
+     */
+    public boolean getCached() {
+      return cached_;
+    }
+
+    private void initFields() {
+      type_ = org.apache.mesos.v1.Protos.Image.Type.APPC;
+      appc_ = org.apache.mesos.v1.Protos.Image.Appc.getDefaultInstance();
+      docker_ = org.apache.mesos.v1.Protos.Image.Docker.getDefaultInstance();
+      cached_ = true;
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasType()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (hasAppc()) {
+        if (!getAppc().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasDocker()) {
+        if (!getDocker().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeEnum(1, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(2, appc_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeMessage(3, docker_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeBool(4, cached_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(1, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, appc_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, docker_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(4, cached_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.Image parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Image parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Image parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Image parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Image parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Image parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Image parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Image parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Image parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Image parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.Image prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.Image}
+     *
+     * <pre>
+     **
+     * Describe an image used by tasks or executors. Note that it's only
+     * for tasks or executors launched by MesosContainerizer currently.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.ImageOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Image_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Image_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.Image.class, org.apache.mesos.v1.Protos.Image.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.Image.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getAppcFieldBuilder();
+          getDockerFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        type_ = org.apache.mesos.v1.Protos.Image.Type.APPC;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (appcBuilder_ == null) {
+          appc_ = org.apache.mesos.v1.Protos.Image.Appc.getDefaultInstance();
+        } else {
+          appcBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        if (dockerBuilder_ == null) {
+          docker_ = org.apache.mesos.v1.Protos.Image.Docker.getDefaultInstance();
+        } else {
+          dockerBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        cached_ = true;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Image_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.Image getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.Image.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.Image build() {
+        org.apache.mesos.v1.Protos.Image result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.Image buildPartial() {
+        org.apache.mesos.v1.Protos.Image result = new org.apache.mesos.v1.Protos.Image(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.type_ = type_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (appcBuilder_ == null) {
+          result.appc_ = appc_;
+        } else {
+          result.appc_ = appcBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        if (dockerBuilder_ == null) {
+          result.docker_ = docker_;
+        } else {
+          result.docker_ = dockerBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.cached_ = cached_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.Image) {
+          return mergeFrom((org.apache.mesos.v1.Protos.Image)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.Image other) {
+        if (other == org.apache.mesos.v1.Protos.Image.getDefaultInstance()) return this;
+        if (other.hasType()) {
+          setType(other.getType());
+        }
+        if (other.hasAppc()) {
+          mergeAppc(other.getAppc());
+        }
+        if (other.hasDocker()) {
+          mergeDocker(other.getDocker());
+        }
+        if (other.hasCached()) {
+          setCached(other.getCached());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasType()) {
+          
+          return false;
+        }
+        if (hasAppc()) {
+          if (!getAppc().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasDocker()) {
+          if (!getDocker().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.Image parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.Image) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required .mesos.v1.Image.Type type = 1;
+      private org.apache.mesos.v1.Protos.Image.Type type_ = org.apache.mesos.v1.Protos.Image.Type.APPC;
+      /**
+       * <code>required .mesos.v1.Image.Type type = 1;</code>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.v1.Image.Type type = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.Image.Type getType() {
+        return type_;
+      }
+      /**
+       * <code>required .mesos.v1.Image.Type type = 1;</code>
+       */
+      public Builder setType(org.apache.mesos.v1.Protos.Image.Type value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000001;
+        type_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.Image.Type type = 1;</code>
+       */
+      public Builder clearType() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        type_ = org.apache.mesos.v1.Protos.Image.Type.APPC;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.v1.Image.Appc appc = 2;
+      private org.apache.mesos.v1.Protos.Image.Appc appc_ = org.apache.mesos.v1.Protos.Image.Appc.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Image.Appc, org.apache.mesos.v1.Protos.Image.Appc.Builder, org.apache.mesos.v1.Protos.Image.AppcOrBuilder> appcBuilder_;
+      /**
+       * <code>optional .mesos.v1.Image.Appc appc = 2;</code>
+       *
+       * <pre>
+       * Only one of the following image messages should be set to match
+       * the type.
+       * </pre>
+       */
+      public boolean hasAppc() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.v1.Image.Appc appc = 2;</code>
+       *
+       * <pre>
+       * Only one of the following image messages should be set to match
+       * the type.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Image.Appc getAppc() {
+        if (appcBuilder_ == null) {
+          return appc_;
+        } else {
+          return appcBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Image.Appc appc = 2;</code>
+       *
+       * <pre>
+       * Only one of the following image messages should be set to match
+       * the type.
+       * </pre>
+       */
+      public Builder setAppc(org.apache.mesos.v1.Protos.Image.Appc value) {
+        if (appcBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          appc_ = value;
+          onChanged();
+        } else {
+          appcBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Image.Appc appc = 2;</code>
+       *
+       * <pre>
+       * Only one of the following image messages should be set to match
+       * the type.
+       * </pre>
+       */
+      public Builder setAppc(
+          org.apache.mesos.v1.Protos.Image.Appc.Builder builderForValue) {
+        if (appcBuilder_ == null) {
+          appc_ = builderForValue.build();
+          onChanged();
+        } else {
+          appcBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Image.Appc appc = 2;</code>
+       *
+       * <pre>
+       * Only one of the following image messages should be set to match
+       * the type.
+       * </pre>
+       */
+      public Builder mergeAppc(org.apache.mesos.v1.Protos.Image.Appc value) {
+        if (appcBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              appc_ != org.apache.mesos.v1.Protos.Image.Appc.getDefaultInstance()) {
+            appc_ =
+              org.apache.mesos.v1.Protos.Image.Appc.newBuilder(appc_).mergeFrom(value).buildPartial();
+          } else {
+            appc_ = value;
+          }
+          onChanged();
+        } else {
+          appcBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Image.Appc appc = 2;</code>
+       *
+       * <pre>
+       * Only one of the following image messages should be set to match
+       * the type.
+       * </pre>
+       */
+      public Builder clearAppc() {
+        if (appcBuilder_ == null) {
+          appc_ = org.apache.mesos.v1.Protos.Image.Appc.getDefaultInstance();
+          onChanged();
+        } else {
+          appcBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Image.Appc appc = 2;</code>
+       *
+       * <pre>
+       * Only one of the following image messages should be set to match
+       * the type.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Image.Appc.Builder getAppcBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getAppcFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.Image.Appc appc = 2;</code>
+       *
+       * <pre>
+       * Only one of the following image messages should be set to match
+       * the type.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Image.AppcOrBuilder getAppcOrBuilder() {
+        if (appcBuilder_ != null) {
+          return appcBuilder_.getMessageOrBuilder();
+        } else {
+          return appc_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Image.Appc appc = 2;</code>
+       *
+       * <pre>
+       * Only one of the following image messages should be set to match
+       * the type.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Image.Appc, org.apache.mesos.v1.Protos.Image.Appc.Builder, org.apache.mesos.v1.Protos.Image.AppcOrBuilder> 
+          getAppcFieldBuilder() {
+        if (appcBuilder_ == null) {
+          appcBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Image.Appc, org.apache.mesos.v1.Protos.Image.Appc.Builder, org.apache.mesos.v1.Protos.Image.AppcOrBuilder>(
+                  appc_,
+                  getParentForChildren(),
+                  isClean());
+          appc_ = null;
+        }
+        return appcBuilder_;
+      }
+
+      // optional .mesos.v1.Image.Docker docker = 3;
+      private org.apache.mesos.v1.Protos.Image.Docker docker_ = org.apache.mesos.v1.Protos.Image.Docker.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Image.Docker, org.apache.mesos.v1.Protos.Image.Docker.Builder, org.apache.mesos.v1.Protos.Image.DockerOrBuilder> dockerBuilder_;
+      /**
+       * <code>optional .mesos.v1.Image.Docker docker = 3;</code>
+       */
+      public boolean hasDocker() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.v1.Image.Docker docker = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.Image.Docker getDocker() {
+        if (dockerBuilder_ == null) {
+          return docker_;
+        } else {
+          return dockerBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Image.Docker docker = 3;</code>
+       */
+      public Builder setDocker(org.apache.mesos.v1.Protos.Image.Docker value) {
+        if (dockerBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          docker_ = value;
+          onChanged();
+        } else {
+          dockerBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Image.Docker docker = 3;</code>
+       */
+      public Builder setDocker(
+          org.apache.mesos.v1.Protos.Image.Docker.Builder builderForValue) {
+        if (dockerBuilder_ == null) {
+          docker_ = builderForValue.build();
+          onChanged();
+        } else {
+          dockerBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Image.Docker docker = 3;</code>
+       */
+      public Builder mergeDocker(org.apache.mesos.v1.Protos.Image.Docker value) {
+        if (dockerBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) == 0x00000004) &&
+              docker_ != org.apache.mesos.v1.Protos.Image.Docker.getDefaultInstance()) {
+            docker_ =
+              org.apache.mesos.v1.Protos.Image.Docker.newBuilder(docker_).mergeFrom(value).buildPartial();
+          } else {
+            docker_ = value;
+          }
+          onChanged();
+        } else {
+          dockerBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Image.Docker docker = 3;</code>
+       */
+      public Builder clearDocker() {
+        if (dockerBuilder_ == null) {
+          docker_ = org.apache.mesos.v1.Protos.Image.Docker.getDefaultInstance();
+          onChanged();
+        } else {
+          dockerBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Image.Docker docker = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.Image.Docker.Builder getDockerBuilder() {
+        bitField0_ |= 0x00000004;
+        onChanged();
+        return getDockerFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.Image.Docker docker = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.Image.DockerOrBuilder getDockerOrBuilder() {
+        if (dockerBuilder_ != null) {
+          return dockerBuilder_.getMessageOrBuilder();
+        } else {
+          return docker_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Image.Docker docker = 3;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Image.Docker, org.apache.mesos.v1.Protos.Image.Docker.Builder, org.apache.mesos.v1.Protos.Image.DockerOrBuilder> 
+          getDockerFieldBuilder() {
+        if (dockerBuilder_ == null) {
+          dockerBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Image.Docker, org.apache.mesos.v1.Protos.Image.Docker.Builder, org.apache.mesos.v1.Protos.Image.DockerOrBuilder>(
+                  docker_,
+                  getParentForChildren(),
+                  isClean());
+          docker_ = null;
+        }
+        return dockerBuilder_;
+      }
+
+      // optional bool cached = 4 [default = true];
+      private boolean cached_ = true;
+      /**
+       * <code>optional bool cached = 4 [default = true];</code>
+       *
+       * <pre>
+       * With this flag set to false, the mesos containerizer will pull
+       * the docker/appc image from the registry even if the image is
+       * already downloaded on the agent.
+       * </pre>
+       */
+      public boolean hasCached() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional bool cached = 4 [default = true];</code>
+       *
+       * <pre>
+       * With this flag set to false, the mesos containerizer will pull
+       * the docker/appc image from the registry even if the image is
+       * already downloaded on the agent.
+       * </pre>
+       */
+      public boolean getCached() {
+        return cached_;
+      }
+      /**
+       * <code>optional bool cached = 4 [default = true];</code>
+       *
+       * <pre>
+       * With this flag set to false, the mesos containerizer will pull
+       * the docker/appc image from the registry even if the image is
+       * already downloaded on the agent.
+       * </pre>
+       */
+      public Builder setCached(boolean value) {
+        bitField0_ |= 0x00000008;
+        cached_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional bool cached = 4 [default = true];</code>
+       *
+       * <pre>
+       * With this flag set to false, the mesos containerizer will pull
+       * the docker/appc image from the registry even if the image is
+       * already downloaded on the agent.
+       * </pre>
+       */
+      public Builder clearCached() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        cached_ = true;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.Image)
+    }
+
+    static {
+      defaultInstance = new Image(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.Image)
+  }
+
+  public interface VolumeOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required .mesos.v1.Volume.Mode mode = 3;
+    /**
+     * <code>required .mesos.v1.Volume.Mode mode = 3;</code>
+     *
+     * <pre>
+     * TODO(gyliu513): Make this as `optional` after deprecation cycle of 1.0.
+     * </pre>
+     */
+    boolean hasMode();
+    /**
+     * <code>required .mesos.v1.Volume.Mode mode = 3;</code>
+     *
+     * <pre>
+     * TODO(gyliu513): Make this as `optional` after deprecation cycle of 1.0.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.Volume.Mode getMode();
+
+    // required string container_path = 1;
+    /**
+     * <code>required string container_path = 1;</code>
+     *
+     * <pre>
+     * Path pointing to a directory or file in the container. If the
+     * path is a relative path, it is relative to the container work
+     * directory. If the path is an absolute path, that path must
+     * already exist.
+     * </pre>
+     */
+    boolean hasContainerPath();
+    /**
+     * <code>required string container_path = 1;</code>
+     *
+     * <pre>
+     * Path pointing to a directory or file in the container. If the
+     * path is a relative path, it is relative to the container work
+     * directory. If the path is an absolute path, that path must
+     * already exist.
+     * </pre>
+     */
+    java.lang.String getContainerPath();
+    /**
+     * <code>required string container_path = 1;</code>
+     *
+     * <pre>
+     * Path pointing to a directory or file in the container. If the
+     * path is a relative path, it is relative to the container work
+     * directory. If the path is an absolute path, that path must
+     * already exist.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getContainerPathBytes();
+
+    // optional string host_path = 2;
+    /**
+     * <code>optional string host_path = 2;</code>
+     *
+     * <pre>
+     * Absolute path pointing to a directory or file on the host or a
+     * path relative to the container work directory.
+     * </pre>
+     */
+    boolean hasHostPath();
+    /**
+     * <code>optional string host_path = 2;</code>
+     *
+     * <pre>
+     * Absolute path pointing to a directory or file on the host or a
+     * path relative to the container work directory.
+     * </pre>
+     */
+    java.lang.String getHostPath();
+    /**
+     * <code>optional string host_path = 2;</code>
+     *
+     * <pre>
+     * Absolute path pointing to a directory or file on the host or a
+     * path relative to the container work directory.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getHostPathBytes();
+
+    // optional .mesos.v1.Image image = 4;
+    /**
+     * <code>optional .mesos.v1.Image image = 4;</code>
+     *
+     * <pre>
+     * The source of the volume is an Image which describes a root
+     * filesystem which will be provisioned by Mesos.
+     * </pre>
+     */
+    boolean hasImage();
+    /**
+     * <code>optional .mesos.v1.Image image = 4;</code>
+     *
+     * <pre>
+     * The source of the volume is an Image which describes a root
+     * filesystem which will be provisioned by Mesos.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.Image getImage();
+    /**
+     * <code>optional .mesos.v1.Image image = 4;</code>
+     *
+     * <pre>
+     * The source of the volume is an Image which describes a root
+     * filesystem which will be provisioned by Mesos.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.ImageOrBuilder getImageOrBuilder();
+
+    // optional .mesos.v1.Volume.Source source = 5;
+    /**
+     * <code>optional .mesos.v1.Volume.Source source = 5;</code>
+     */
+    boolean hasSource();
+    /**
+     * <code>optional .mesos.v1.Volume.Source source = 5;</code>
+     */
+    org.apache.mesos.v1.Protos.Volume.Source getSource();
+    /**
+     * <code>optional .mesos.v1.Volume.Source source = 5;</code>
+     */
+    org.apache.mesos.v1.Protos.Volume.SourceOrBuilder getSourceOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.Volume}
+   *
+   * <pre>
+   **
+   * Describes a volume mapping either from host to container or vice
+   * versa. Both paths can either refer to a directory or a file.
+   * </pre>
+   */
+  public static final class Volume extends
+      com.google.protobuf.GeneratedMessage
+      implements VolumeOrBuilder {
+    // Use Volume.newBuilder() to construct.
+    private Volume(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Volume(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Volume defaultInstance;
+    public static Volume getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Volume getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Volume(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000002;
+              containerPath_ = input.readBytes();
+              break;
+            }
+            case 18: {
+              bitField0_ |= 0x00000004;
+              hostPath_ = input.readBytes();
+              break;
+            }
+            case 24: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.v1.Protos.Volume.Mode value = org.apache.mesos.v1.Protos.Volume.Mode.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(3, rawValue);
+              } else {
+                bitField0_ |= 0x00000001;
+                mode_ = value;
+              }
+              break;
+            }
+            case 34: {
+              org.apache.mesos.v1.Protos.Image.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                subBuilder = image_.toBuilder();
+              }
+              image_ = input.readMessage(org.apache.mesos.v1.Protos.Image.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(image_);
+                image_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000008;
+              break;
+            }
+            case 42: {
+              org.apache.mesos.v1.Protos.Volume.Source.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000010) == 0x00000010)) {
+                subBuilder = source_.toBuilder();
+              }
+              source_ = input.readMessage(org.apache.mesos.v1.Protos.Volume.Source.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(source_);
+                source_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000010;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Volume_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Volume_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.Volume.class, org.apache.mesos.v1.Protos.Volume.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Volume> PARSER =
+        new com.google.protobuf.AbstractParser<Volume>() {
+      public Volume parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Volume(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Volume> getParserForType() {
+      return PARSER;
+    }
+
+    /**
+     * Protobuf enum {@code mesos.v1.Volume.Mode}
+     */
+    public enum Mode
+        implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>RW = 1;</code>
+       *
+       * <pre>
+       * read-write.
+       * </pre>
+       */
+      RW(0, 1),
+      /**
+       * <code>RO = 2;</code>
+       *
+       * <pre>
+       * read-only.
+       * </pre>
+       */
+      RO(1, 2),
+      ;
+
+      /**
+       * <code>RW = 1;</code>
+       *
+       * <pre>
+       * read-write.
+       * </pre>
+       */
+      public static final int RW_VALUE = 1;
+      /**
+       * <code>RO = 2;</code>
+       *
+       * <pre>
+       * read-only.
+       * </pre>
+       */
+      public static final int RO_VALUE = 2;
+
+
+      public final int getNumber() { return value; }
+
+      public static Mode valueOf(int value) {
+        switch (value) {
+          case 1: return RW;
+          case 2: return RO;
+          default: return null;
+        }
+      }
+
+      public static com.google.protobuf.Internal.EnumLiteMap<Mode>
+          internalGetValueMap() {
+        return internalValueMap;
+      }
+      private static com.google.protobuf.Internal.EnumLiteMap<Mode>
+          internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap<Mode>() {
+              public Mode findValueByNumber(int number) {
+                return Mode.valueOf(number);
+              }
+            };
+
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
+          getValueDescriptor() {
+        return getDescriptor().getValues().get(index);
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptorForType() {
+        return getDescriptor();
+      }
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.Volume.getDescriptor().getEnumTypes().get(0);
+      }
+
+      private static final Mode[] VALUES = values();
+
+      public static Mode valueOf(
+          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+        if (desc.getType() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "EnumValueDescriptor is not for this type.");
+        }
+        return VALUES[desc.getIndex()];
+      }
+
+      private final int index;
+      private final int value;
+
+      private Mode(int index, int value) {
+        this.index = index;
+        this.value = value;
+      }
+
+      // @@protoc_insertion_point(enum_scope:mesos.v1.Volume.Mode)
+    }
+
+    public interface SourceOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // optional .mesos.v1.Volume.Source.Type type = 1;
+      /**
+       * <code>optional .mesos.v1.Volume.Source.Type type = 1;</code>
+       *
+       * <pre>
+       * Enum fields should be optional, see: MESOS-4997.
+       * </pre>
+       */
+      boolean hasType();
+      /**
+       * <code>optional .mesos.v1.Volume.Source.Type type = 1;</code>
+       *
+       * <pre>
+       * Enum fields should be optional, see: MESOS-4997.
+       * </pre>
+       */
+      org.apache.mesos.v1.Protos.Volume.Source.Type getType();
+
+      // optional .mesos.v1.Volume.Source.DockerVolume docker_volume = 2;
+      /**
+       * <code>optional .mesos.v1.Volume.Source.DockerVolume docker_volume = 2;</code>
+       *
+       * <pre>
+       * The source of the volume created by docker volume driver.
+       * </pre>
+       */
+      boolean hasDockerVolume();
+      /**
+       * <code>optional .mesos.v1.Volume.Source.DockerVolume docker_volume = 2;</code>
+       *
+       * <pre>
+       * The source of the volume created by docker volume driver.
+       * </pre>
+       */
+      org.apache.mesos.v1.Protos.Volume.Source.DockerVolume getDockerVolume();
+      /**
+       * <code>optional .mesos.v1.Volume.Source.DockerVolume docker_volume = 2;</code>
+       *
+       * <pre>
+       * The source of the volume created by docker volume driver.
+       * </pre>
+       */
+      org.apache.mesos.v1.Protos.Volume.Source.DockerVolumeOrBuilder getDockerVolumeOrBuilder();
+
+      // optional .mesos.v1.Volume.Source.SandboxPath sandbox_path = 3;
+      /**
+       * <code>optional .mesos.v1.Volume.Source.SandboxPath sandbox_path = 3;</code>
+       */
+      boolean hasSandboxPath();
+      /**
+       * <code>optional .mesos.v1.Volume.Source.SandboxPath sandbox_path = 3;</code>
+       */
+      org.apache.mesos.v1.Protos.Volume.Source.SandboxPath getSandboxPath();
+      /**
+       * <code>optional .mesos.v1.Volume.Source.SandboxPath sandbox_path = 3;</code>
+       */
+      org.apache.mesos.v1.Protos.Volume.Source.SandboxPathOrBuilder getSandboxPathOrBuilder();
+
+      // optional .mesos.v1.Secret secret = 4;
+      /**
+       * <code>optional .mesos.v1.Secret secret = 4;</code>
+       *
+       * <pre>
+       * The volume/secret isolator uses the secret-fetcher module (third-party or
+       * internal) downloads the secret and makes it available at container_path.
+       * </pre>
+       */
+      boolean hasSecret();
+      /**
+       * <code>optional .mesos.v1.Secret secret = 4;</code>
+       *
+       * <pre>
+       * The volume/secret isolator uses the secret-fetcher module (third-party or
+       * internal) downloads the secret and makes it available at container_path.
+       * </pre>
+       */
+      org.apache.mesos.v1.Protos.Secret getSecret();
+      /**
+       * <code>optional .mesos.v1.Secret secret = 4;</code>
+       *
+       * <pre>
+       * The volume/secret isolator uses the secret-fetcher module (third-party or
+       * internal) downloads the secret and makes it available at container_path.
+       * </pre>
+       */
+      org.apache.mesos.v1.Protos.SecretOrBuilder getSecretOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.Volume.Source}
+     *
+     * <pre>
+     * Describes where a volume originates from.
+     * </pre>
+     */
+    public static final class Source extends
+        com.google.protobuf.GeneratedMessage
+        implements SourceOrBuilder {
+      // Use Source.newBuilder() to construct.
+      private Source(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Source(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Source defaultInstance;
+      public static Source getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Source getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Source(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 8: {
+                int rawValue = input.readEnum();
+                org.apache.mesos.v1.Protos.Volume.Source.Type value = org.apache.mesos.v1.Protos.Volume.Source.Type.valueOf(rawValue);
+                if (value == null) {
+                  unknownFields.mergeVarintField(1, rawValue);
+                } else {
+                  bitField0_ |= 0x00000001;
+                  type_ = value;
+                }
+                break;
+              }
+              case 18: {
+                org.apache.mesos.v1.Protos.Volume.Source.DockerVolume.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                  subBuilder = dockerVolume_.toBuilder();
+                }
+                dockerVolume_ = input.readMessage(org.apache.mesos.v1.Protos.Volume.Source.DockerVolume.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(dockerVolume_);
+                  dockerVolume_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000002;
+                break;
+              }
+              case 26: {
+                org.apache.mesos.v1.Protos.Volume.Source.SandboxPath.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                  subBuilder = sandboxPath_.toBuilder();
+                }
+                sandboxPath_ = input.readMessage(org.apache.mesos.v1.Protos.Volume.Source.SandboxPath.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(sandboxPath_);
+                  sandboxPath_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000004;
+                break;
+              }
+              case 34: {
+                org.apache.mesos.v1.Protos.Secret.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                  subBuilder = secret_.toBuilder();
+                }
+                secret_ = input.readMessage(org.apache.mesos.v1.Protos.Secret.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(secret_);
+                  secret_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000008;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Volume_Source_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Volume_Source_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.Volume.Source.class, org.apache.mesos.v1.Protos.Volume.Source.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Source> PARSER =
+          new com.google.protobuf.AbstractParser<Source>() {
+        public Source parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Source(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Source> getParserForType() {
+        return PARSER;
+      }
+
+      /**
+       * Protobuf enum {@code mesos.v1.Volume.Source.Type}
+       */
+      public enum Type
+          implements com.google.protobuf.ProtocolMessageEnum {
+        /**
+         * <code>UNKNOWN = 0;</code>
+         *
+         * <pre>
+         * This must be the first enum value in this list, to
+         * ensure that if 'type' is not set, the default value
+         * is UNKNOWN. This enables enum values to be added
+         * in a backwards-compatible way. See: MESOS-4997.
+         * </pre>
+         */
+        UNKNOWN(0, 0),
+        /**
+         * <code>DOCKER_VOLUME = 1;</code>
+         *
+         * <pre>
+         * TODO(gyliu513): Add HOST_PATH and IMAGE as volume source type.
+         * </pre>
+         */
+        DOCKER_VOLUME(1, 1),
+        /**
+         * <code>SANDBOX_PATH = 2;</code>
+         */
+        SANDBOX_PATH(2, 2),
+        /**
+         * <code>SECRET = 3;</code>
+         */
+        SECRET(3, 3),
+        ;
+
+        /**
+         * <code>UNKNOWN = 0;</code>
+         *
+         * <pre>
+         * This must be the first enum value in this list, to
+         * ensure that if 'type' is not set, the default value
+         * is UNKNOWN. This enables enum values to be added
+         * in a backwards-compatible way. See: MESOS-4997.
+         * </pre>
+         */
+        public static final int UNKNOWN_VALUE = 0;
+        /**
+         * <code>DOCKER_VOLUME = 1;</code>
+         *
+         * <pre>
+         * TODO(gyliu513): Add HOST_PATH and IMAGE as volume source type.
+         * </pre>
+         */
+        public static final int DOCKER_VOLUME_VALUE = 1;
+        /**
+         * <code>SANDBOX_PATH = 2;</code>
+         */
+        public static final int SANDBOX_PATH_VALUE = 2;
+        /**
+         * <code>SECRET = 3;</code>
+         */
+        public static final int SECRET_VALUE = 3;
+
+
+        public final int getNumber() { return value; }
+
+        public static Type valueOf(int value) {
+          switch (value) {
+            case 0: return UNKNOWN;
+            case 1: return DOCKER_VOLUME;
+            case 2: return SANDBOX_PATH;
+            case 3: return SECRET;
+            default: return null;
+          }
+        }
+
+        public static com.google.protobuf.Internal.EnumLiteMap<Type>
+            internalGetValueMap() {
+          return internalValueMap;
+        }
+        private static com.google.protobuf.Internal.EnumLiteMap<Type>
+            internalValueMap =
+              new com.google.protobuf.Internal.EnumLiteMap<Type>() {
+                public Type findValueByNumber(int number) {
+                  return Type.valueOf(number);
+                }
+              };
+
+        public final com.google.protobuf.Descriptors.EnumValueDescriptor
+            getValueDescriptor() {
+          return getDescriptor().getValues().get(index);
+        }
+        public final com.google.protobuf.Descriptors.EnumDescriptor
+            getDescriptorForType() {
+          return getDescriptor();
+        }
+        public static final com.google.protobuf.Descriptors.EnumDescriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.Volume.Source.getDescriptor().getEnumTypes().get(0);
+        }
+
+        private static final Type[] VALUES = values();
+
+        public static Type valueOf(
+            com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+          if (desc.getType() != getDescriptor()) {
+            throw new java.lang.IllegalArgumentException(
+              "EnumValueDescriptor is not for this type.");
+          }
+          return VALUES[desc.getIndex()];
+        }
+
+        private final int index;
+        private final int value;
+
+        private Type(int index, int value) {
+          this.index = index;
+          this.value = value;
+        }
+
+        // @@protoc_insertion_point(enum_scope:mesos.v1.Volume.Source.Type)
+      }
+
+      public interface DockerVolumeOrBuilder
+          extends com.google.protobuf.MessageOrBuilder {
+
+        // optional string driver = 1;
+        /**
+         * <code>optional string driver = 1;</code>
+         *
+         * <pre>
+         * Driver of the volume, it can be flocker, convoy, raxrey etc.
+         * </pre>
+         */
+        boolean hasDriver();
+        /**
+         * <code>optional string driver = 1;</code>
+         *
+         * <pre>
+         * Driver of the volume, it can be flocker, convoy, raxrey etc.
+         * </pre>
+         */
+        java.lang.String getDriver();
+        /**
+         * <code>optional string driver = 1;</code>
+         *
+         * <pre>
+         * Driver of the volume, it can be flocker, convoy, raxrey etc.
+         * </pre>
+         */
+        com.google.protobuf.ByteString
+            getDriverBytes();
+
+        // required string name = 2;
+        /**
+         * <code>required string name = 2;</code>
+         *
+         * <pre>
+         * Name of the volume.
+         * </pre>
+         */
+        boolean hasName();
+        /**
+         * <code>required string name = 2;</code>
+         *
+         * <pre>
+         * Name of the volume.
+         * </pre>
+         */
+        java.lang.String getName();
+        /**
+         * <code>required string name = 2;</code>
+         *
+         * <pre>
+         * Name of the volume.
+         * </pre>
+         */
+        com.google.protobuf.ByteString
+            getNameBytes();
+
+        // optional .mesos.v1.Parameters driver_options = 3;
+        /**
+         * <code>optional .mesos.v1.Parameters driver_options = 3;</code>
+         *
+         * <pre>
+         * Volume driver specific options.
+         * </pre>
+         */
+        boolean hasDriverOptions();
+        /**
+         * <code>optional .mesos.v1.Parameters driver_options = 3;</code>
+         *
+         * <pre>
+         * Volume driver specific options.
+         * </pre>
+         */
+        org.apache.mesos.v1.Protos.Parameters getDriverOptions();
+        /**
+         * <code>optional .mesos.v1.Parameters driver_options = 3;</code>
+         *
+         * <pre>
+         * Volume driver specific options.
+         * </pre>
+         */
+        org.apache.mesos.v1.Protos.ParametersOrBuilder getDriverOptionsOrBuilder();
+      }
+      /**
+       * Protobuf type {@code mesos.v1.Volume.Source.DockerVolume}
+       */
+      public static final class DockerVolume extends
+          com.google.protobuf.GeneratedMessage
+          implements DockerVolumeOrBuilder {
+        // Use DockerVolume.newBuilder() to construct.
+        private DockerVolume(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+          super(builder);
+          this.unknownFields = builder.getUnknownFields();
+        }
+        private DockerVolume(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+        private static final DockerVolume defaultInstance;
+        public static DockerVolume getDefaultInstance() {
+          return defaultInstance;
+        }
+
+        public DockerVolume getDefaultInstanceForType() {
+          return defaultInstance;
+        }
+
+        private final com.google.protobuf.UnknownFieldSet unknownFields;
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet
+            getUnknownFields() {
+          return this.unknownFields;
+        }
+        private DockerVolume(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          initFields();
+          int mutable_bitField0_ = 0;
+          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+              com.google.protobuf.UnknownFieldSet.newBuilder();
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(input, unknownFields,
+                                         extensionRegistry, tag)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 10: {
+                  bitField0_ |= 0x00000001;
+                  driver_ = input.readBytes();
+                  break;
+                }
+                case 18: {
+                  bitField0_ |= 0x00000002;
+                  name_ = input.readBytes();
+                  break;
+                }
+                case 26: {
+                  org.apache.mesos.v1.Protos.Parameters.Builder subBuilder = null;
+                  if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                    subBuilder = driverOptions_.toBuilder();
+                  }
+                  driverOptions_ = input.readMessage(org.apache.mesos.v1.Protos.Parameters.PARSER, extensionRegistry);
+                  if (subBuilder != null) {
+                    subBuilder.mergeFrom(driverOptions_);
+                    driverOptions_ = subBuilder.buildPartial();
+                  }
+                  bitField0_ |= 0x00000004;
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw e.setUnfinishedMessage(this);
+          } catch (java.io.IOException e) {
+            throw new com.google.protobuf.InvalidProtocolBufferException(
+                e.getMessage()).setUnfinishedMessage(this);
+          } finally {
+            this.unknownFields = unknownFields.build();
+            makeExtensionsImmutable();
+          }
+        }
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Volume_Source_DockerVolume_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Volume_Source_DockerVolume_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.Volume.Source.DockerVolume.class, org.apache.mesos.v1.Protos.Volume.Source.DockerVolume.Builder.class);
+        }
+
+        public static com.google.protobuf.Parser<DockerVolume> PARSER =
+            new com.google.protobuf.AbstractParser<DockerVolume>() {
+          public DockerVolume parsePartialFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return new DockerVolume(input, extensionRegistry);
+          }
+        };
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<DockerVolume> getParserForType() {
+          return PARSER;
+        }
+
+        private int bitField0_;
+        // optional string driver = 1;
+        public static final int DRIVER_FIELD_NUMBER = 1;
+        private java.lang.Object driver_;
+        /**
+         * <code>optional string driver = 1;</code>
+         *
+         * <pre>
+         * Driver of the volume, it can be flocker, convoy, raxrey etc.
+         * </pre>
+         */
+        public boolean hasDriver() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional string driver = 1;</code>
+         *
+         * <pre>
+         * Driver of the volume, it can be flocker, convoy, raxrey etc.
+         * </pre>
+         */
+        public java.lang.String getDriver() {
+          java.lang.Object ref = driver_;
+          if (ref instanceof java.lang.String) {
+            return (java.lang.String) ref;
+          } else {
+            com.google.protobuf.ByteString bs = 
+                (com.google.protobuf.ByteString) ref;
+            java.lang.String s = bs.toStringUtf8();
+            if (bs.isValidUtf8()) {
+              driver_ = s;
+            }
+            return s;
+          }
+        }
+        /**
+         * <code>optional string driver = 1;</code>
+         *
+         * <pre>
+         * Driver of the volume, it can be flocker, convoy, raxrey etc.
+         * </pre>
+         */
+        public com.google.protobuf.ByteString
+            getDriverBytes() {
+          java.lang.Object ref = driver_;
+          if (ref instanceof java.lang.String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            driver_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+
+        // required string name = 2;
+        public static final int NAME_FIELD_NUMBER = 2;
+        private java.lang.Object name_;
+        /**
+         * <code>required string name = 2;</code>
+         *
+         * <pre>
+         * Name of the volume.
+         * </pre>
+         */
+        public boolean hasName() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>required string name = 2;</code>
+         *
+         * <pre>
+         * Name of the volume.
+         * </pre>
+         */
+        public java.lang.String getName() {
+          java.lang.Object ref = name_;
+          if (ref instanceof java.lang.String) {
+            return (java.lang.String) ref;
+          } else {
+            com.google.protobuf.ByteString bs = 
+                (com.google.protobuf.ByteString) ref;
+            java.lang.String s = bs.toStringUtf8();
+            if (bs.isValidUtf8()) {
+              name_ = s;
+            }
+            return s;
+          }
+        }
+        /**
+         * <code>required string name = 2;</code>
+         *
+         * <pre>
+         * Name of the volume.
+         * </pre>
+         */
+        public com.google.protobuf.ByteString
+            getNameBytes() {
+          java.lang.Object ref = name_;
+          if (ref instanceof java.lang.String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            name_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+
+        // optional .mesos.v1.Parameters driver_options = 3;
+        public static final int DRIVER_OPTIONS_FIELD_NUMBER = 3;
+        private org.apache.mesos.v1.Protos.Parameters driverOptions_;
+        /**
+         * <code>optional .mesos.v1.Parameters driver_options = 3;</code>
+         *
+         * <pre>
+         * Volume driver specific options.
+         * </pre>
+         */
+        public boolean hasDriverOptions() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional .mesos.v1.Parameters driver_options = 3;</code>
+         *
+         * <pre>
+         * Volume driver specific options.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.Parameters getDriverOptions() {
+          return driverOptions_;
+        }
+        /**
+         * <code>optional .mesos.v1.Parameters driver_options = 3;</code>
+         *
+         * <pre>
+         * Volume driver specific options.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.ParametersOrBuilder getDriverOptionsOrBuilder() {
+          return driverOptions_;
+        }
+
+        private void initFields() {
+          driver_ = "";
+          name_ = "";
+          driverOptions_ = org.apache.mesos.v1.Protos.Parameters.getDefaultInstance();
+        }
+        private byte memoizedIsInitialized = -1;
+        public final boolean isInitialized() {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized != -1) return isInitialized == 1;
+
+          if (!hasName()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+          if (hasDriverOptions()) {
+            if (!getDriverOptions().isInitialized()) {
+              memoizedIsInitialized = 0;
+              return false;
+            }
+          }
+          memoizedIsInitialized = 1;
+          return true;
+        }
+
+        public void writeTo(com.google.protobuf.CodedOutputStream output)
+                            throws java.io.IOException {
+          getSerializedSize();
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            output.writeBytes(1, getDriverBytes());
+          }
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            output.writeBytes(2, getNameBytes());
+          }
+          if (((bitField0_ & 0x00000004) == 0x00000004)) {
+            output.writeMessage(3, driverOptions_);
+          }
+          getUnknownFields().writeTo(output);
+        }
+
+        private int memoizedSerializedSize = -1;
+        public int getSerializedSize() {
+          int size = memoizedSerializedSize;
+          if (size != -1) return size;
+
+          size = 0;
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeBytesSize(1, getDriverBytes());
+          }
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeBytesSize(2, getNameBytes());
+          }
+          if (((bitField0_ & 0x00000004) == 0x00000004)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeMessageSize(3, driverOptions_);
+          }
+          size += getUnknownFields().getSerializedSize();
+          memoizedSerializedSize = size;
+          return size;
+        }
+
+        private static final long serialVersionUID = 0L;
+        @java.lang.Override
+        protected java.lang.Object writeReplace()
+            throws java.io.ObjectStreamException {
+          return super.writeReplace();
+        }
+
+        public static org.apache.mesos.v1.Protos.Volume.Source.DockerVolume parseFrom(
+            com.google.protobuf.ByteString data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.v1.Protos.Volume.Source.DockerVolume parseFrom(
+            com.google.protobuf.ByteString data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.Volume.Source.DockerVolume parseFrom(byte[] data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.v1.Protos.Volume.Source.DockerVolume parseFrom(
+            byte[] data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.Volume.Source.DockerVolume parseFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.Volume.Source.DockerVolume parseFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.Volume.Source.DockerVolume parseDelimitedFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.Volume.Source.DockerVolume parseDelimitedFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.Volume.Source.DockerVolume parseFrom(
+            com.google.protobuf.CodedInputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.Volume.Source.DockerVolume parseFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+
+        public static Builder newBuilder() { return Builder.create(); }
+        public Builder newBuilderForType() { return newBuilder(); }
+        public static Builder newBuilder(org.apache.mesos.v1.Protos.Volume.Source.DockerVolume prototype) {
+          return newBuilder().mergeFrom(prototype);
+        }
+        public Builder toBuilder() { return newBuilder(this); }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          Builder builder = new Builder(parent);
+          return builder;
+        }
+        /**
+         * Protobuf type {@code mesos.v1.Volume.Source.DockerVolume}
+         */
+        public static final class Builder extends
+            com.google.protobuf.GeneratedMessage.Builder<Builder>
+           implements org.apache.mesos.v1.Protos.Volume.Source.DockerVolumeOrBuilder {
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Volume_Source_DockerVolume_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Volume_Source_DockerVolume_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.v1.Protos.Volume.Source.DockerVolume.class, org.apache.mesos.v1.Protos.Volume.Source.DockerVolume.Builder.class);
+          }
+
+          // Construct using org.apache.mesos.v1.Protos.Volume.Source.DockerVolume.newBuilder()
+          private Builder() {
+            maybeForceBuilderInitialization();
+          }
+
+          private Builder(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            super(parent);
+            maybeForceBuilderInitialization();
+          }
+          private void maybeForceBuilderInitialization() {
+            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+              getDriverOptionsFieldBuilder();
+            }
+          }
+          private static Builder create() {
+            return new Builder();
+          }
+
+          public Builder clear() {
+            super.clear();
+            driver_ = "";
+            bitField0_ = (bitField0_ & ~0x00000001);
+            name_ = "";
+            bitField0_ = (bitField0_ & ~0x00000002);
+            if (driverOptionsBuilder_ == null) {
+              driverOptions_ = org.apache.mesos.v1.Protos.Parameters.getDefaultInstance();
+            } else {
+              driverOptionsBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000004);
+            return this;
+          }
+
+          public Builder clone() {
+            return create().mergeFrom(buildPartial());
+          }
+
+          public com.google.protobuf.Descriptors.Descriptor
+              getDescriptorForType() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Volume_Source_DockerVolume_descriptor;
+          }
+
+          public org.apache.mesos.v1.Protos.Volume.Source.DockerVolume getDefaultInstanceForType() {
+            return org.apache.mesos.v1.Protos.Volume.Source.DockerVolume.getDefaultInstance();
+          }
+
+          public org.apache.mesos.v1.Protos.Volume.Source.DockerVolume build() {
+            org.apache.mesos.v1.Protos.Volume.Source.DockerVolume result = buildPartial();
+            if (!result.isInitialized()) {
+              throw newUninitializedMessageException(result);
+            }
+            return result;
+          }
+
+          public org.apache.mesos.v1.Protos.Volume.Source.DockerVolume buildPartial() {
+            org.apache.mesos.v1.Protos.Volume.Source.DockerVolume result = new org.apache.mesos.v1.Protos.Volume.Source.DockerVolume(this);
+            int from_bitField0_ = bitField0_;
+            int to_bitField0_ = 0;
+            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+              to_bitField0_ |= 0x00000001;
+            }
+            result.driver_ = driver_;
+            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+              to_bitField0_ |= 0x00000002;
+            }
+            result.name_ = name_;
+            if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+              to_bitField0_ |= 0x00000004;
+            }
+            if (driverOptionsBuilder_ == null) {
+              result.driverOptions_ = driverOptions_;
+            } else {
+              result.driverOptions_ = driverOptionsBuilder_.build();
+            }
+            result.bitField0_ = to_bitField0_;
+            onBuilt();
+            return result;
+          }
+
+          public Builder mergeFrom(com.google.protobuf.Message other) {
+            if (other instanceof org.apache.mesos.v1.Protos.Volume.Source.DockerVolume) {
+              return mergeFrom((org.apache.mesos.v1.Protos.Volume.Source.DockerVolume)other);
+            } else {
+              super.mergeFrom(other);
+              return this;
+            }
+          }
+
+          public Builder mergeFrom(org.apache.mesos.v1.Protos.Volume.Source.DockerVolume other) {
+            if (other == org.apache.mesos.v1.Protos.Volume.Source.DockerVolume.getDefaultInstance()) return this;
+            if (other.hasDriver()) {
+              bitField0_ |= 0x00000001;
+              driver_ = other.driver_;
+              onChanged();
+            }
+            if (other.hasName()) {
+              bitField0_ |= 0x00000002;
+              name_ = other.name_;
+              onChanged();
+            }
+            if (other.hasDriverOptions()) {
+              mergeDriverOptions(other.getDriverOptions());
+            }
+            this.mergeUnknownFields(other.getUnknownFields());
+            return this;
+          }
+
+          public final boolean isInitialized() {
+            if (!hasName()) {
+              
+              return false;
+            }
+            if (hasDriverOptions()) {
+              if (!getDriverOptions().isInitialized()) {
+                
+                return false;
+              }
+            }
+            return true;
+          }
+
+          public Builder mergeFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            org.apache.mesos.v1.Protos.Volume.Source.DockerVolume parsedMessage = null;
+            try {
+              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              parsedMessage = (org.apache.mesos.v1.Protos.Volume.Source.DockerVolume) e.getUnfinishedMessage();
+              throw e;
+            } finally {
+              if (parsedMessage != null) {
+                mergeFrom(parsedMessage);
+              }
+            }
+            return this;
+          }
+          private int bitField0_;
+
+          // optional string driver = 1;
+          private java.lang.Object driver_ = "";
+          /**
+           * <code>optional string driver = 1;</code>
+           *
+           * <pre>
+           * Driver of the volume, it can be flocker, convoy, raxrey etc.
+           * </pre>
+           */
+          public boolean hasDriver() {
+            return ((bitField0_ & 0x00000001) == 0x00000001);
+          }
+          /**
+           * <code>optional string driver = 1;</code>
+           *
+           * <pre>
+           * Driver of the volume, it can be flocker, convoy, raxrey etc.
+           * </pre>
+           */
+          public java.lang.String getDriver() {
+            java.lang.Object ref = driver_;
+            if (!(ref instanceof java.lang.String)) {
+              java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                  .toStringUtf8();
+              driver_ = s;
+              return s;
+            } else {
+              return (java.lang.String) ref;
+            }
+          }
+          /**
+           * <code>optional string driver = 1;</code>
+           *
+           * <pre>
+           * Driver of the volume, it can be flocker, convoy, raxrey etc.
+           * </pre>
+           */
+          public com.google.protobuf.ByteString
+              getDriverBytes() {
+            java.lang.Object ref = driver_;
+            if (ref instanceof String) {
+              com.google.protobuf.ByteString b = 
+                  com.google.protobuf.ByteString.copyFromUtf8(
+                      (java.lang.String) ref);
+              driver_ = b;
+              return b;
+            } else {
+              return (com.google.protobuf.ByteString) ref;
+            }
+          }
+          /**
+           * <code>optional string driver = 1;</code>
+           *
+           * <pre>
+           * Driver of the volume, it can be flocker, convoy, raxrey etc.
+           * </pre>
+           */
+          public Builder setDriver(
+              java.lang.String value) {
+            if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+            driver_ = value;
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>optional string driver = 1;</code>
+           *
+           * <pre>
+           * Driver of the volume, it can be flocker, convoy, raxrey etc.
+           * </pre>
+           */
+          public Builder clearDriver() {
+            bitField0_ = (bitField0_ & ~0x00000001);
+            driver_ = getDefaultInstance().getDriver();
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>optional string driver = 1;</code>
+           *
+           * <pre>
+           * Driver of the volume, it can be flocker, convoy, raxrey etc.
+           * </pre>
+           */
+          public Builder setDriverBytes(
+              com.google.protobuf.ByteString value) {
+            if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+            driver_ = value;
+            onChanged();
+            return this;
+          }
+
+          // required string name = 2;
+          private java.lang.Object name_ = "";
+          /**
+           * <code>required string name = 2;</code>
+           *
+           * <pre>
+           * Name of the volume.
+           * </pre>
+           */
+          public boolean hasName() {
+            return ((bitField0_ & 0x00000002) == 0x00000002);
+          }
+          /**
+           * <code>required string name = 2;</code>
+           *
+           * <pre>
+           * Name of the volume.
+           * </pre>
+           */
+          public java.lang.String getName() {
+            java.lang.Object ref = name_;
+            if (!(ref instanceof java.lang.String)) {
+              java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                  .toStringUtf8();
+              name_ = s;
+              return s;
+            } else {
+              return (java.lang.String) ref;
+            }
+          }
+          /**
+           * <code>required string name = 2;</code>
+           *
+           * <pre>
+           * Name of the volume.
+           * </pre>
+           */
+          public com.google.protobuf.ByteString
+              getNameBytes() {
+            java.lang.Object ref = name_;
+            if (ref instanceof String) {
+              com.google.protobuf.ByteString b = 
+                  com.google.protobuf.ByteString.copyFromUtf8(
+                      (java.lang.String) ref);
+              name_ = b;
+              return b;
+            } else {
+              return (com.google.protobuf.ByteString) ref;
+            }
+          }
+          /**
+           * <code>required string name = 2;</code>
+           *
+           * <pre>
+           * Name of the volume.
+           * </pre>
+           */
+          public Builder setName(
+              java.lang.String value) {
+            if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+            name_ = value;
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>required string name = 2;</code>
+           *
+           * <pre>
+           * Name of the volume.
+           * </pre>
+           */
+          public Builder clearName() {
+            bitField0_ = (bitField0_ & ~0x00000002);
+            name_ = getDefaultInstance().getName();
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>required string name = 2;</code>
+           *
+           * <pre>
+           * Name of the volume.
+           * </pre>
+           */
+          public Builder setNameBytes(
+              com.google.protobuf.ByteString value) {
+            if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+            name_ = value;
+            onChanged();
+            return this;
+          }
+
+          // optional .mesos.v1.Parameters driver_options = 3;
+          private org.apache.mesos.v1.Protos.Parameters driverOptions_ = org.apache.mesos.v1.Protos.Parameters.getDefaultInstance();
+          private com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Parameters, org.apache.mesos.v1.Protos.Parameters.Builder, org.apache.mesos.v1.Protos.ParametersOrBuilder> driverOptionsBuilder_;
+          /**
+           * <code>optional .mesos.v1.Parameters driver_options = 3;</code>
+           *
+           * <pre>
+           * Volume driver specific options.
+           * </pre>
+           */
+          public boolean hasDriverOptions() {
+            return ((bitField0_ & 0x00000004) == 0x00000004);
+          }
+          /**
+           * <code>optional .mesos.v1.Parameters driver_options = 3;</code>
+           *
+           * <pre>
+           * Volume driver specific options.
+           * </pre>
+           */
+          public org.apache.mesos.v1.Protos.Parameters getDriverOptions() {
+            if (driverOptionsBuilder_ == null) {
+              return driverOptions_;
+            } else {
+              return driverOptionsBuilder_.getMessage();
+            }
+          }
+          /**
+           * <code>optional .mesos.v1.Parameters driver_options = 3;</code>
+           *
+           * <pre>
+           * Volume driver specific options.
+           * </pre>
+           */
+          public Builder setDriverOptions(org.apache.mesos.v1.Protos.Parameters value) {
+            if (driverOptionsBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              driverOptions_ = value;
+              onChanged();
+            } else {
+              driverOptionsBuilder_.setMessage(value);
+            }
+            bitField0_ |= 0x00000004;
+            return this;
+          }
+          /**
+           * <code>optional .mesos.v1.Parameters driver_options = 3;</code>
+           *
+           * <pre>
+           * Volume driver specific options.
+           * </pre>
+           */
+          public Builder setDriverOptions(
+              org.apache.mesos.v1.Protos.Parameters.Builder builderForValue) {
+            if (driverOptionsBuilder_ == null) {
+              driverOptions_ = builderForValue.build();
+              onChanged();
+            } else {
+              driverOptionsBuilder_.setMessage(builderForValue.build());
+            }
+            bitField0_ |= 0x00000004;
+            return this;
+          }
+          /**
+           * <code>optional .mesos.v1.Parameters driver_options = 3;</code>
+           *
+           * <pre>
+           * Volume driver specific options.
+           * </pre>
+           */
+          public Builder mergeDriverOptions(org.apache.mesos.v1.Protos.Parameters value) {
+            if (driverOptionsBuilder_ == null) {
+              if (((bitField0_ & 0x00000004) == 0x00000004) &&
+                  driverOptions_ != org.apache.mesos.v1.Protos.Parameters.getDefaultInstance()) {
+                driverOptions_ =
+                  org.apache.mesos.v1.Protos.Parameters.newBuilder(driverOptions_).mergeFrom(value).buildPartial();
+              } else {
+                driverOptions_ = value;
+              }
+              onChanged();
+            } else {
+              driverOptionsBuilder_.mergeFrom(value);
+            }
+            bitField0_ |= 0x00000004;
+            return this;
+          }
+          /**
+           * <code>optional .mesos.v1.Parameters driver_options = 3;</code>
+           *
+           * <pre>
+           * Volume driver specific options.
+           * </pre>
+           */
+          public Builder clearDriverOptions() {
+            if (driverOptionsBuilder_ == null) {
+              driverOptions_ = org.apache.mesos.v1.Protos.Parameters.getDefaultInstance();
+              onChanged();
+            } else {
+              driverOptionsBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000004);
+            return this;
+          }
+          /**
+           * <code>optional .mesos.v1.Parameters driver_options = 3;</code>
+           *
+           * <pre>
+           * Volume driver specific options.
+           * </pre>
+           */
+          public org.apache.mesos.v1.Protos.Parameters.Builder getDriverOptionsBuilder() {
+            bitField0_ |= 0x00000004;
+            onChanged();
+            return getDriverOptionsFieldBuilder().getBuilder();
+          }
+          /**
+           * <code>optional .mesos.v1.Parameters driver_options = 3;</code>
+           *
+           * <pre>
+           * Volume driver specific options.
+           * </pre>
+           */
+          public org.apache.mesos.v1.Protos.ParametersOrBuilder getDriverOptionsOrBuilder() {
+            if (driverOptionsBuilder_ != null) {
+              return driverOptionsBuilder_.getMessageOrBuilder();
+            } else {
+              return driverOptions_;
+            }
+          }
+          /**
+           * <code>optional .mesos.v1.Parameters driver_options = 3;</code>
+           *
+           * <pre>
+           * Volume driver specific options.
+           * </pre>
+           */
+          private com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Parameters, org.apache.mesos.v1.Protos.Parameters.Builder, org.apache.mesos.v1.Protos.ParametersOrBuilder> 
+              getDriverOptionsFieldBuilder() {
+            if (driverOptionsBuilder_ == null) {
+              driverOptionsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                  org.apache.mesos.v1.Protos.Parameters, org.apache.mesos.v1.Protos.Parameters.Builder, org.apache.mesos.v1.Protos.ParametersOrBuilder>(
+                      driverOptions_,
+                      getParentForChildren(),
+                      isClean());
+              driverOptions_ = null;
+            }
+            return driverOptionsBuilder_;
+          }
+
+          // @@protoc_insertion_point(builder_scope:mesos.v1.Volume.Source.DockerVolume)
+        }
+
+        static {
+          defaultInstance = new DockerVolume(true);
+          defaultInstance.initFields();
+        }
+
+        // @@protoc_insertion_point(class_scope:mesos.v1.Volume.Source.DockerVolume)
+      }
+
+      public interface SandboxPathOrBuilder
+          extends com.google.protobuf.MessageOrBuilder {
+
+        // optional .mesos.v1.Volume.Source.SandboxPath.Type type = 1;
+        /**
+         * <code>optional .mesos.v1.Volume.Source.SandboxPath.Type type = 1;</code>
+         */
+        boolean hasType();
+        /**
+         * <code>optional .mesos.v1.Volume.Source.SandboxPath.Type type = 1;</code>
+         */
+        org.apache.mesos.v1.Protos.Volume.Source.SandboxPath.Type getType();
+
+        // required string path = 2;
+        /**
+         * <code>required string path = 2;</code>
+         *
+         * <pre>
+         * A path relative to the corresponding container's sandbox.
+         * Note that upwards traversal (i.e. ../../abc) is not allowed.
+         * </pre>
+         */
+        boolean hasPath();
+        /**
+         * <code>required string path = 2;</code>
+         *
+         * <pre>
+         * A path relative to the corresponding container's sandbox.
+         * Note that upwards traversal (i.e. ../../abc) is not allowed.
+         * </pre>
+         */
+        java.lang.String getPath();
+        /**
+         * <code>required string path = 2;</code>
+         *
+         * <pre>
+         * A path relative to the corresponding container's sandbox.
+         * Note that upwards traversal (i.e. ../../abc) is not allowed.
+         * </pre>
+         */
+        com.google.protobuf.ByteString
+            getPathBytes();
+      }
+      /**
+       * Protobuf type {@code mesos.v1.Volume.Source.SandboxPath}
+       *
+       * <pre>
+       * Describe a path from a container's sandbox. The container can
+       * be the current container (SELF), or its parent container
+       * (PARENT). PARENT allows all child containers to share a volume
+       * from their parent container's sandbox. It'll be an error if
+       * the current container is a top level container.
+       * </pre>
+       */
+      public static final class SandboxPath extends
+          com.google.protobuf.GeneratedMessage
+          implements SandboxPathOrBuilder {
+        // Use SandboxPath.newBuilder() to construct.
+        private SandboxPath(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+          super(builder);
+          this.unknownFields = builder.getUnknownFields();
+        }
+        private SandboxPath(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+        private static final SandboxPath defaultInstance;
+        public static SandboxPath getDefaultInstance() {
+          return defaultInstance;
+        }
+
+        public SandboxPath getDefaultInstanceForType() {
+          return defaultInstance;
+        }
+
+        private final com.google.protobuf.UnknownFieldSet unknownFields;
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet
+            getUnknownFields() {
+          return this.unknownFields;
+        }
+        private SandboxPath(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          initFields();
+          int mutable_bitField0_ = 0;
+          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+              com.google.protobuf.UnknownFieldSet.newBuilder();
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(input, unknownFields,
+                                         extensionRegistry, tag)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 8: {
+                  int rawValue = input.readEnum();
+                  org.apache.mesos.v1.Protos.Volume.Source.SandboxPath.Type value = org.apache.mesos.v1.Protos.Volume.Source.SandboxPath.Type.valueOf(rawValue);
+                  if (value == null) {
+                    unknownFields.mergeVarintField(1, rawValue);
+                  } else {
+                    bitField0_ |= 0x00000001;
+                    type_ = value;
+                  }
+                  break;
+                }
+                case 18: {
+                  bitField0_ |= 0x00000002;
+                  path_ = input.readBytes();
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw e.setUnfinishedMessage(this);
+          } catch (java.io.IOException e) {
+            throw new com.google.protobuf.InvalidProtocolBufferException(
+                e.getMessage()).setUnfinishedMessage(this);
+          } finally {
+            this.unknownFields = unknownFields.build();
+            makeExtensionsImmutable();
+          }
+        }
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Volume_Source_SandboxPath_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Volume_Source_SandboxPath_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.Volume.Source.SandboxPath.class, org.apache.mesos.v1.Protos.Volume.Source.SandboxPath.Builder.class);
+        }
+
+        public static com.google.protobuf.Parser<SandboxPath> PARSER =
+            new com.google.protobuf.AbstractParser<SandboxPath>() {
+          public SandboxPath parsePartialFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return new SandboxPath(input, extensionRegistry);
+          }
+        };
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<SandboxPath> getParserForType() {
+          return PARSER;
+        }
+
+        /**
+         * Protobuf enum {@code mesos.v1.Volume.Source.SandboxPath.Type}
+         */
+        public enum Type
+            implements com.google.protobuf.ProtocolMessageEnum {
+          /**
+           * <code>UNKNOWN = 0;</code>
+           */
+          UNKNOWN(0, 0),
+          /**
+           * <code>SELF = 1;</code>
+           */
+          SELF(1, 1),
+          /**
+           * <code>PARENT = 2;</code>
+           */
+          PARENT(2, 2),
+          ;
+
+          /**
+           * <code>UNKNOWN = 0;</code>
+           */
+          public static final int UNKNOWN_VALUE = 0;
+          /**
+           * <code>SELF = 1;</code>
+           */
+          public static final int SELF_VALUE = 1;
+          /**
+           * <code>PARENT = 2;</code>
+           */
+          public static final int PARENT_VALUE = 2;
+
+
+          public final int getNumber() { return value; }
+
+          public static Type valueOf(int value) {
+            switch (value) {
+              case 0: return UNKNOWN;
+              case 1: return SELF;
+              case 2: return PARENT;
+              default: return null;
+            }
+          }
+
+          public static com.google.protobuf.Internal.EnumLiteMap<Type>
+              internalGetValueMap() {
+            return internalValueMap;
+          }
+          private static com.google.protobuf.Internal.EnumLiteMap<Type>
+              internalValueMap =
+                new com.google.protobuf.Internal.EnumLiteMap<Type>() {
+                  public Type findValueByNumber(int number) {
+                    return Type.valueOf(number);
+                  }
+                };
+
+          public final com.google.protobuf.Descriptors.EnumValueDescriptor
+              getValueDescriptor() {
+            return getDescriptor().getValues().get(index);
+          }
+          public final com.google.protobuf.Descriptors.EnumDescriptor
+              getDescriptorForType() {
+            return getDescriptor();
+          }
+          public static final com.google.protobuf.Descriptors.EnumDescriptor
+              getDescriptor() {
+            return org.apache.mesos.v1.Protos.Volume.Source.SandboxPath.getDescriptor().getEnumTypes().get(0);
+          }
+
+          private static final Type[] VALUES = values();
+
+          public static Type valueOf(
+              com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+            if (desc.getType() != getDescriptor()) {
+              throw new java.lang.IllegalArgumentException(
+                "EnumValueDescriptor is not for this type.");
+            }
+            return VALUES[desc.getIndex()];
+          }
+
+          private final int index;
+          private final int value;
+
+          private Type(int index, int value) {
+            this.index = index;
+            this.value = value;
+          }
+
+          // @@protoc_insertion_point(enum_scope:mesos.v1.Volume.Source.SandboxPath.Type)
+        }
+
+        private int bitField0_;
+        // optional .mesos.v1.Volume.Source.SandboxPath.Type type = 1;
+        public static final int TYPE_FIELD_NUMBER = 1;
+        private org.apache.mesos.v1.Protos.Volume.Source.SandboxPath.Type type_;
+        /**
+         * <code>optional .mesos.v1.Volume.Source.SandboxPath.Type type = 1;</code>
+         */
+        public boolean hasType() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional .mesos.v1.Volume.Source.SandboxPath.Type type = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.Volume.Source.SandboxPath.Type getType() {
+          return type_;
+        }
+
+        // required string path = 2;
+        public static final int PATH_FIELD_NUMBER = 2;
+        private java.lang.Object path_;
+        /**
+         * <code>required string path = 2;</code>
+         *
+         * <pre>
+         * A path relative to the corresponding container's sandbox.
+         * Note that upwards traversal (i.e. ../../abc) is not allowed.
+         * </pre>
+         */
+        public boolean hasPath() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>required string path = 2;</code>
+         *
+         * <pre>
+         * A path relative to the corresponding container's sandbox.
+         * Note that upwards traversal (i.e. ../../abc) is not allowed.
+         * </pre>
+         */
+        public java.lang.String getPath() {
+          java.lang.Object ref = path_;
+          if (ref instanceof java.lang.String) {
+            return (java.lang.String) ref;
+          } else {
+            com.google.protobuf.ByteString bs = 
+                (com.google.protobuf.ByteString) ref;
+            java.lang.String s = bs.toStringUtf8();
+            if (bs.isValidUtf8()) {
+              path_ = s;
+            }
+            return s;
+          }
+        }
+        /**
+         * <code>required string path = 2;</code>
+         *
+         * <pre>
+         * A path relative to the corresponding container's sandbox.
+         * Note that upwards traversal (i.e. ../../abc) is not allowed.
+         * </pre>
+         */
+        public com.google.protobuf.ByteString
+            getPathBytes() {
+          java.lang.Object ref = path_;
+          if (ref instanceof java.lang.String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            path_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+
+        private void initFields() {
+          type_ = org.apache.mesos.v1.Protos.Volume.Source.SandboxPath.Type.UNKNOWN;
+          path_ = "";
+        }
+        private byte memoizedIsInitialized = -1;
+        public final boolean isInitialized() {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized != -1) return isInitialized == 1;
+
+          if (!hasPath()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+          memoizedIsInitialized = 1;
+          return true;
+        }
+
+        public void writeTo(com.google.protobuf.CodedOutputStream output)
+                            throws java.io.IOException {
+          getSerializedSize();
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            output.writeEnum(1, type_.getNumber());
+          }
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            output.writeBytes(2, getPathBytes());
+          }
+          getUnknownFields().writeTo(output);
+        }
+
+        private int memoizedSerializedSize = -1;
+        public int getSerializedSize() {
+          int size = memoizedSerializedSize;
+          if (size != -1) return size;
+
+          size = 0;
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeEnumSize(1, type_.getNumber());
+          }
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeBytesSize(2, getPathBytes());
+          }
+          size += getUnknownFields().getSerializedSize();
+          memoizedSerializedSize = size;
+          return size;
+        }
+
+        private static final long serialVersionUID = 0L;
+        @java.lang.Override
+        protected java.lang.Object writeReplace()
+            throws java.io.ObjectStreamException {
+          return super.writeReplace();
+        }
+
+        public static org.apache.mesos.v1.Protos.Volume.Source.SandboxPath parseFrom(
+            com.google.protobuf.ByteString data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.v1.Protos.Volume.Source.SandboxPath parseFrom(
+            com.google.protobuf.ByteString data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.Volume.Source.SandboxPath parseFrom(byte[] data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.v1.Protos.Volume.Source.SandboxPath parseFrom(
+            byte[] data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.Volume.Source.SandboxPath parseFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.Volume.Source.SandboxPath parseFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.Volume.Source.SandboxPath parseDelimitedFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.Volume.Source.SandboxPath parseDelimitedFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.Volume.Source.SandboxPath parseFrom(
+            com.google.protobuf.CodedInputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.Volume.Source.SandboxPath parseFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+
+        public static Builder newBuilder() { return Builder.create(); }
+        public Builder newBuilderForType() { return newBuilder(); }
+        public static Builder newBuilder(org.apache.mesos.v1.Protos.Volume.Source.SandboxPath prototype) {
+          return newBuilder().mergeFrom(prototype);
+        }
+        public Builder toBuilder() { return newBuilder(this); }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          Builder builder = new Builder(parent);
+          return builder;
+        }
+        /**
+         * Protobuf type {@code mesos.v1.Volume.Source.SandboxPath}
+         *
+         * <pre>
+         * Describe a path from a container's sandbox. The container can
+         * be the current container (SELF), or its parent container
+         * (PARENT). PARENT allows all child containers to share a volume
+         * from their parent container's sandbox. It'll be an error if
+         * the current container is a top level container.
+         * </pre>
+         */
+        public static final class Builder extends
+            com.google.protobuf.GeneratedMessage.Builder<Builder>
+           implements org.apache.mesos.v1.Protos.Volume.Source.SandboxPathOrBuilder {
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Volume_Source_SandboxPath_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Volume_Source_SandboxPath_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.v1.Protos.Volume.Source.SandboxPath.class, org.apache.mesos.v1.Protos.Volume.Source.SandboxPath.Builder.class);
+          }
+
+          // Construct using org.apache.mesos.v1.Protos.Volume.Source.SandboxPath.newBuilder()
+          private Builder() {
+            maybeForceBuilderInitialization();
+          }
+
+          private Builder(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            super(parent);
+            maybeForceBuilderInitialization();
+          }
+          private void maybeForceBuilderInitialization() {
+            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            }
+          }
+          private static Builder create() {
+            return new Builder();
+          }
+
+          public Builder clear() {
+            super.clear();
+            type_ = org.apache.mesos.v1.Protos.Volume.Source.SandboxPath.Type.UNKNOWN;
+            bitField0_ = (bitField0_ & ~0x00000001);
+            path_ = "";
+            bitField0_ = (bitField0_ & ~0x00000002);
+            return this;
+          }
+
+          public Builder clone() {
+            return create().mergeFrom(buildPartial());
+          }
+
+          public com.google.protobuf.Descriptors.Descriptor
+              getDescriptorForType() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Volume_Source_SandboxPath_descriptor;
+          }
+
+          public org.apache.mesos.v1.Protos.Volume.Source.SandboxPath getDefaultInstanceForType() {
+            return org.apache.mesos.v1.Protos.Volume.Source.SandboxPath.getDefaultInstance();
+          }
+
+          public org.apache.mesos.v1.Protos.Volume.Source.SandboxPath build() {
+            org.apache.mesos.v1.Protos.Volume.Source.SandboxPath result = buildPartial();
+            if (!result.isInitialized()) {
+              throw newUninitializedMessageException(result);
+            }
+            return result;
+          }
+
+          public org.apache.mesos.v1.Protos.Volume.Source.SandboxPath buildPartial() {
+            org.apache.mesos.v1.Protos.Volume.Source.SandboxPath result = new org.apache.mesos.v1.Protos.Volume.Source.SandboxPath(this);
+            int from_bitField0_ = bitField0_;
+            int to_bitField0_ = 0;
+            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+              to_bitField0_ |= 0x00000001;
+            }
+            result.type_ = type_;
+            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+              to_bitField0_ |= 0x00000002;
+            }
+            result.path_ = path_;
+            result.bitField0_ = to_bitField0_;
+            onBuilt();
+            return result;
+          }
+
+          public Builder mergeFrom(com.google.protobuf.Message other) {
+            if (other instanceof org.apache.mesos.v1.Protos.Volume.Source.SandboxPath) {
+              return mergeFrom((org.apache.mesos.v1.Protos.Volume.Source.SandboxPath)other);
+            } else {
+              super.mergeFrom(other);
+              return this;
+            }
+          }
+
+          public Builder mergeFrom(org.apache.mesos.v1.Protos.Volume.Source.SandboxPath other) {
+            if (other == org.apache.mesos.v1.Protos.Volume.Source.SandboxPath.getDefaultInstance()) return this;
+            if (other.hasType()) {
+              setType(other.getType());
+            }
+            if (other.hasPath()) {
+              bitField0_ |= 0x00000002;
+              path_ = other.path_;
+              onChanged();
+            }
+            this.mergeUnknownFields(other.getUnknownFields());
+            return this;
+          }
+
+          public final boolean isInitialized() {
+            if (!hasPath()) {
+              
+              return false;
+            }
+            return true;
+          }
+
+          public Builder mergeFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            org.apache.mesos.v1.Protos.Volume.Source.SandboxPath parsedMessage = null;
+            try {
+              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              parsedMessage = (org.apache.mesos.v1.Protos.Volume.Source.SandboxPath) e.getUnfinishedMessage();
+              throw e;
+            } finally {
+              if (parsedMessage != null) {
+                mergeFrom(parsedMessage);
+              }
+            }
+            return this;
+          }
+          private int bitField0_;
+
+          // optional .mesos.v1.Volume.Source.SandboxPath.Type type = 1;
+          private org.apache.mesos.v1.Protos.Volume.Source.SandboxPath.Type type_ = org.apache.mesos.v1.Protos.Volume.Source.SandboxPath.Type.UNKNOWN;
+          /**
+           * <code>optional .mesos.v1.Volume.Source.SandboxPath.Type type = 1;</code>
+           */
+          public boolean hasType() {
+            return ((bitField0_ & 0x00000001) == 0x00000001);
+          }
+          /**
+           * <code>optional .mesos.v1.Volume.Source.SandboxPath.Type type = 1;</code>
+           */
+          public org.apache.mesos.v1.Protos.Volume.Source.SandboxPath.Type getType() {
+            return type_;
+          }
+          /**
+           * <code>optional .mesos.v1.Volume.Source.SandboxPath.Type type = 1;</code>
+           */
+          public Builder setType(org.apache.mesos.v1.Protos.Volume.Source.SandboxPath.Type value) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            bitField0_ |= 0x00000001;
+            type_ = value;
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>optional .mesos.v1.Volume.Source.SandboxPath.Type type = 1;</code>
+           */
+          public Builder clearType() {
+            bitField0_ = (bitField0_ & ~0x00000001);
+            type_ = org.apache.mesos.v1.Protos.Volume.Source.SandboxPath.Type.UNKNOWN;
+            onChanged();
+            return this;
+          }
+
+          // required string path = 2;
+          private java.lang.Object path_ = "";
+          /**
+           * <code>required string path = 2;</code>
+           *
+           * <pre>
+           * A path relative to the corresponding container's sandbox.
+           * Note that upwards traversal (i.e. ../../abc) is not allowed.
+           * </pre>
+           */
+          public boolean hasPath() {
+            return ((bitField0_ & 0x00000002) == 0x00000002);
+          }
+          /**
+           * <code>required string path = 2;</code>
+           *
+           * <pre>
+           * A path relative to the corresponding container's sandbox.
+           * Note that upwards traversal (i.e. ../../abc) is not allowed.
+           * </pre>
+           */
+          public java.lang.String getPath() {
+            java.lang.Object ref = path_;
+            if (!(ref instanceof java.lang.String)) {
+              java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                  .toStringUtf8();
+              path_ = s;
+              return s;
+            } else {
+              return (java.lang.String) ref;
+            }
+          }
+          /**
+           * <code>required string path = 2;</code>
+           *
+           * <pre>
+           * A path relative to the corresponding container's sandbox.
+           * Note that upwards traversal (i.e. ../../abc) is not allowed.
+           * </pre>
+           */
+          public com.google.protobuf.ByteString
+              getPathBytes() {
+            java.lang.Object ref = path_;
+            if (ref instanceof String) {
+              com.google.protobuf.ByteString b = 
+                  com.google.protobuf.ByteString.copyFromUtf8(
+                      (java.lang.String) ref);
+              path_ = b;
+              return b;
+            } else {
+              return (com.google.protobuf.ByteString) ref;
+            }
+          }
+          /**
+           * <code>required string path = 2;</code>
+           *
+           * <pre>
+           * A path relative to the corresponding container's sandbox.
+           * Note that upwards traversal (i.e. ../../abc) is not allowed.
+           * </pre>
+           */
+          public Builder setPath(
+              java.lang.String value) {
+            if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+            path_ = value;
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>required string path = 2;</code>
+           *
+           * <pre>
+           * A path relative to the corresponding container's sandbox.
+           * Note that upwards traversal (i.e. ../../abc) is not allowed.
+           * </pre>
+           */
+          public Builder clearPath() {
+            bitField0_ = (bitField0_ & ~0x00000002);
+            path_ = getDefaultInstance().getPath();
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>required string path = 2;</code>
+           *
+           * <pre>
+           * A path relative to the corresponding container's sandbox.
+           * Note that upwards traversal (i.e. ../../abc) is not allowed.
+           * </pre>
+           */
+          public Builder setPathBytes(
+              com.google.protobuf.ByteString value) {
+            if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+            path_ = value;
+            onChanged();
+            return this;
+          }
+
+          // @@protoc_insertion_point(builder_scope:mesos.v1.Volume.Source.SandboxPath)
+        }
+
+        static {
+          defaultInstance = new SandboxPath(true);
+          defaultInstance.initFields();
+        }
+
+        // @@protoc_insertion_point(class_scope:mesos.v1.Volume.Source.SandboxPath)
+      }
+
+      private int bitField0_;
+      // optional .mesos.v1.Volume.Source.Type type = 1;
+      public static final int TYPE_FIELD_NUMBER = 1;
+      private org.apache.mesos.v1.Protos.Volume.Source.Type type_;
+      /**
+       * <code>optional .mesos.v1.Volume.Source.Type type = 1;</code>
+       *
+       * <pre>
+       * Enum fields should be optional, see: MESOS-4997.
+       * </pre>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.v1.Volume.Source.Type type = 1;</code>
+       *
+       * <pre>
+       * Enum fields should be optional, see: MESOS-4997.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Volume.Source.Type getType() {
+        return type_;
+      }
+
+      // optional .mesos.v1.Volume.Source.DockerVolume docker_volume = 2;
+      public static final int DOCKER_VOLUME_FIELD_NUMBER = 2;
+      private org.apache.mesos.v1.Protos.Volume.Source.DockerVolume dockerVolume_;
+      /**
+       * <code>optional .mesos.v1.Volume.Source.DockerVolume docker_volume = 2;</code>
+       *
+       * <pre>
+       * The source of the volume created by docker volume driver.
+       * </pre>
+       */
+      public boolean hasDockerVolume() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.v1.Volume.Source.DockerVolume docker_volume = 2;</code>
+       *
+       * <pre>
+       * The source of the volume created by docker volume driver.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Volume.Source.DockerVolume getDockerVolume() {
+        return dockerVolume_;
+      }
+      /**
+       * <code>optional .mesos.v1.Volume.Source.DockerVolume docker_volume = 2;</code>
+       *
+       * <pre>
+       * The source of the volume created by docker volume driver.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Volume.Source.DockerVolumeOrBuilder getDockerVolumeOrBuilder() {
+        return dockerVolume_;
+      }
+
+      // optional .mesos.v1.Volume.Source.SandboxPath sandbox_path = 3;
+      public static final int SANDBOX_PATH_FIELD_NUMBER = 3;
+      private org.apache.mesos.v1.Protos.Volume.Source.SandboxPath sandboxPath_;
+      /**
+       * <code>optional .mesos.v1.Volume.Source.SandboxPath sandbox_path = 3;</code>
+       */
+      public boolean hasSandboxPath() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.v1.Volume.Source.SandboxPath sandbox_path = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.Volume.Source.SandboxPath getSandboxPath() {
+        return sandboxPath_;
+      }
+      /**
+       * <code>optional .mesos.v1.Volume.Source.SandboxPath sandbox_path = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.Volume.Source.SandboxPathOrBuilder getSandboxPathOrBuilder() {
+        return sandboxPath_;
+      }
+
+      // optional .mesos.v1.Secret secret = 4;
+      public static final int SECRET_FIELD_NUMBER = 4;
+      private org.apache.mesos.v1.Protos.Secret secret_;
+      /**
+       * <code>optional .mesos.v1.Secret secret = 4;</code>
+       *
+       * <pre>
+       * The volume/secret isolator uses the secret-fetcher module (third-party or
+       * internal) downloads the secret and makes it available at container_path.
+       * </pre>
+       */
+      public boolean hasSecret() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.v1.Secret secret = 4;</code>
+       *
+       * <pre>
+       * The volume/secret isolator uses the secret-fetcher module (third-party or
+       * internal) downloads the secret and makes it available at container_path.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Secret getSecret() {
+        return secret_;
+      }
+      /**
+       * <code>optional .mesos.v1.Secret secret = 4;</code>
+       *
+       * <pre>
+       * The volume/secret isolator uses the secret-fetcher module (third-party or
+       * internal) downloads the secret and makes it available at container_path.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.SecretOrBuilder getSecretOrBuilder() {
+        return secret_;
+      }
+
+      private void initFields() {
+        type_ = org.apache.mesos.v1.Protos.Volume.Source.Type.UNKNOWN;
+        dockerVolume_ = org.apache.mesos.v1.Protos.Volume.Source.DockerVolume.getDefaultInstance();
+        sandboxPath_ = org.apache.mesos.v1.Protos.Volume.Source.SandboxPath.getDefaultInstance();
+        secret_ = org.apache.mesos.v1.Protos.Secret.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (hasDockerVolume()) {
+          if (!getDockerVolume().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        if (hasSandboxPath()) {
+          if (!getSandboxPath().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        if (hasSecret()) {
+          if (!getSecret().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeEnum(1, type_.getNumber());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeMessage(2, dockerVolume_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeMessage(3, sandboxPath_);
+        }
+        if (((bitField0_ & 0x00000008) == 0x00000008)) {
+          output.writeMessage(4, secret_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeEnumSize(1, type_.getNumber());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(2, dockerVolume_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(3, sandboxPath_);
+        }
+        if (((bitField0_ & 0x00000008) == 0x00000008)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(4, secret_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.Protos.Volume.Source parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.Volume.Source parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Volume.Source parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.Volume.Source parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Volume.Source parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Volume.Source parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Volume.Source parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Volume.Source parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Volume.Source parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Volume.Source parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.Protos.Volume.Source prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.Volume.Source}
+       *
+       * <pre>
+       * Describes where a volume originates from.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.Protos.Volume.SourceOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Volume_Source_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Volume_Source_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.Volume.Source.class, org.apache.mesos.v1.Protos.Volume.Source.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.Protos.Volume.Source.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getDockerVolumeFieldBuilder();
+            getSandboxPathFieldBuilder();
+            getSecretFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          type_ = org.apache.mesos.v1.Protos.Volume.Source.Type.UNKNOWN;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          if (dockerVolumeBuilder_ == null) {
+            dockerVolume_ = org.apache.mesos.v1.Protos.Volume.Source.DockerVolume.getDefaultInstance();
+          } else {
+            dockerVolumeBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          if (sandboxPathBuilder_ == null) {
+            sandboxPath_ = org.apache.mesos.v1.Protos.Volume.Source.SandboxPath.getDefaultInstance();
+          } else {
+            sandboxPathBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
+          if (secretBuilder_ == null) {
+            secret_ = org.apache.mesos.v1.Protos.Secret.getDefaultInstance();
+          } else {
+            secretBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000008);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Volume_Source_descriptor;
+        }
+
+        public org.apache.mesos.v1.Protos.Volume.Source getDefaultInstanceForType() {
+          return org.apache.mesos.v1.Protos.Volume.Source.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.Protos.Volume.Source build() {
+          org.apache.mesos.v1.Protos.Volume.Source result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.Protos.Volume.Source buildPartial() {
+          org.apache.mesos.v1.Protos.Volume.Source result = new org.apache.mesos.v1.Protos.Volume.Source(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.type_ = type_;
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          if (dockerVolumeBuilder_ == null) {
+            result.dockerVolume_ = dockerVolume_;
+          } else {
+            result.dockerVolume_ = dockerVolumeBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          if (sandboxPathBuilder_ == null) {
+            result.sandboxPath_ = sandboxPath_;
+          } else {
+            result.sandboxPath_ = sandboxPathBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+            to_bitField0_ |= 0x00000008;
+          }
+          if (secretBuilder_ == null) {
+            result.secret_ = secret_;
+          } else {
+            result.secret_ = secretBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.Protos.Volume.Source) {
+            return mergeFrom((org.apache.mesos.v1.Protos.Volume.Source)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.Protos.Volume.Source other) {
+          if (other == org.apache.mesos.v1.Protos.Volume.Source.getDefaultInstance()) return this;
+          if (other.hasType()) {
+            setType(other.getType());
+          }
+          if (other.hasDockerVolume()) {
+            mergeDockerVolume(other.getDockerVolume());
+          }
+          if (other.hasSandboxPath()) {
+            mergeSandboxPath(other.getSandboxPath());
+          }
+          if (other.hasSecret()) {
+            mergeSecret(other.getSecret());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (hasDockerVolume()) {
+            if (!getDockerVolume().isInitialized()) {
+              
+              return false;
+            }
+          }
+          if (hasSandboxPath()) {
+            if (!getSandboxPath().isInitialized()) {
+              
+              return false;
+            }
+          }
+          if (hasSecret()) {
+            if (!getSecret().isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.Protos.Volume.Source parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.Protos.Volume.Source) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // optional .mesos.v1.Volume.Source.Type type = 1;
+        private org.apache.mesos.v1.Protos.Volume.Source.Type type_ = org.apache.mesos.v1.Protos.Volume.Source.Type.UNKNOWN;
+        /**
+         * <code>optional .mesos.v1.Volume.Source.Type type = 1;</code>
+         *
+         * <pre>
+         * Enum fields should be optional, see: MESOS-4997.
+         * </pre>
+         */
+        public boolean hasType() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional .mesos.v1.Volume.Source.Type type = 1;</code>
+         *
+         * <pre>
+         * Enum fields should be optional, see: MESOS-4997.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.Volume.Source.Type getType() {
+          return type_;
+        }
+        /**
+         * <code>optional .mesos.v1.Volume.Source.Type type = 1;</code>
+         *
+         * <pre>
+         * Enum fields should be optional, see: MESOS-4997.
+         * </pre>
+         */
+        public Builder setType(org.apache.mesos.v1.Protos.Volume.Source.Type value) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          bitField0_ |= 0x00000001;
+          type_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Volume.Source.Type type = 1;</code>
+         *
+         * <pre>
+         * Enum fields should be optional, see: MESOS-4997.
+         * </pre>
+         */
+        public Builder clearType() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          type_ = org.apache.mesos.v1.Protos.Volume.Source.Type.UNKNOWN;
+          onChanged();
+          return this;
+        }
+
+        // optional .mesos.v1.Volume.Source.DockerVolume docker_volume = 2;
+        private org.apache.mesos.v1.Protos.Volume.Source.DockerVolume dockerVolume_ = org.apache.mesos.v1.Protos.Volume.Source.DockerVolume.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Volume.Source.DockerVolume, org.apache.mesos.v1.Protos.Volume.Source.DockerVolume.Builder, org.apache.mesos.v1.Protos.Volume.Source.DockerVolumeOrBuilder> dockerVolumeBuilder_;
+        /**
+         * <code>optional .mesos.v1.Volume.Source.DockerVolume docker_volume = 2;</code>
+         *
+         * <pre>
+         * The source of the volume created by docker volume driver.
+         * </pre>
+         */
+        public boolean hasDockerVolume() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional .mesos.v1.Volume.Source.DockerVolume docker_volume = 2;</code>
+         *
+         * <pre>
+         * The source of the volume created by docker volume driver.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.Volume.Source.DockerVolume getDockerVolume() {
+          if (dockerVolumeBuilder_ == null) {
+            return dockerVolume_;
+          } else {
+            return dockerVolumeBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Volume.Source.DockerVolume docker_volume = 2;</code>
+         *
+         * <pre>
+         * The source of the volume created by docker volume driver.
+         * </pre>
+         */
+        public Builder setDockerVolume(org.apache.mesos.v1.Protos.Volume.Source.DockerVolume value) {
+          if (dockerVolumeBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            dockerVolume_ = value;
+            onChanged();
+          } else {
+            dockerVolumeBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Volume.Source.DockerVolume docker_volume = 2;</code>
+         *
+         * <pre>
+         * The source of the volume created by docker volume driver.
+         * </pre>
+         */
+        public Builder setDockerVolume(
+            org.apache.mesos.v1.Protos.Volume.Source.DockerVolume.Builder builderForValue) {
+          if (dockerVolumeBuilder_ == null) {
+            dockerVolume_ = builderForValue.build();
+            onChanged();
+          } else {
+            dockerVolumeBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Volume.Source.DockerVolume docker_volume = 2;</code>
+         *
+         * <pre>
+         * The source of the volume created by docker volume driver.
+         * </pre>
+         */
+        public Builder mergeDockerVolume(org.apache.mesos.v1.Protos.Volume.Source.DockerVolume value) {
+          if (dockerVolumeBuilder_ == null) {
+            if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                dockerVolume_ != org.apache.mesos.v1.Protos.Volume.Source.DockerVolume.getDefaultInstance()) {
+              dockerVolume_ =
+                org.apache.mesos.v1.Protos.Volume.Source.DockerVolume.newBuilder(dockerVolume_).mergeFrom(value).buildPartial();
+            } else {
+              dockerVolume_ = value;
+            }
+            onChanged();
+          } else {
+            dockerVolumeBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Volume.Source.DockerVolume docker_volume = 2;</code>
+         *
+         * <pre>
+         * The source of the volume created by docker volume driver.
+         * </pre>
+         */
+        public Builder clearDockerVolume() {
+          if (dockerVolumeBuilder_ == null) {
+            dockerVolume_ = org.apache.mesos.v1.Protos.Volume.Source.DockerVolume.getDefaultInstance();
+            onChanged();
+          } else {
+            dockerVolumeBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Volume.Source.DockerVolume docker_volume = 2;</code>
+         *
+         * <pre>
+         * The source of the volume created by docker volume driver.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.Volume.Source.DockerVolume.Builder getDockerVolumeBuilder() {
+          bitField0_ |= 0x00000002;
+          onChanged();
+          return getDockerVolumeFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.v1.Volume.Source.DockerVolume docker_volume = 2;</code>
+         *
+         * <pre>
+         * The source of the volume created by docker volume driver.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.Volume.Source.DockerVolumeOrBuilder getDockerVolumeOrBuilder() {
+          if (dockerVolumeBuilder_ != null) {
+            return dockerVolumeBuilder_.getMessageOrBuilder();
+          } else {
+            return dockerVolume_;
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Volume.Source.DockerVolume docker_volume = 2;</code>
+         *
+         * <pre>
+         * The source of the volume created by docker volume driver.
+         * </pre>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Volume.Source.DockerVolume, org.apache.mesos.v1.Protos.Volume.Source.DockerVolume.Builder, org.apache.mesos.v1.Protos.Volume.Source.DockerVolumeOrBuilder> 
+            getDockerVolumeFieldBuilder() {
+          if (dockerVolumeBuilder_ == null) {
+            dockerVolumeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.Volume.Source.DockerVolume, org.apache.mesos.v1.Protos.Volume.Source.DockerVolume.Builder, org.apache.mesos.v1.Protos.Volume.Source.DockerVolumeOrBuilder>(
+                    dockerVolume_,
+                    getParentForChildren(),
+                    isClean());
+            dockerVolume_ = null;
+          }
+          return dockerVolumeBuilder_;
+        }
+
+        // optional .mesos.v1.Volume.Source.SandboxPath sandbox_path = 3;
+        private org.apache.mesos.v1.Protos.Volume.Source.SandboxPath sandboxPath_ = org.apache.mesos.v1.Protos.Volume.Source.SandboxPath.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Volume.Source.SandboxPath, org.apache.mesos.v1.Protos.Volume.Source.SandboxPath.Builder, org.apache.mesos.v1.Protos.Volume.Source.SandboxPathOrBuilder> sandboxPathBuilder_;
+        /**
+         * <code>optional .mesos.v1.Volume.Source.SandboxPath sandbox_path = 3;</code>
+         */
+        public boolean hasSandboxPath() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional .mesos.v1.Volume.Source.SandboxPath sandbox_path = 3;</code>
+         */
+        public org.apache.mesos.v1.Protos.Volume.Source.SandboxPath getSandboxPath() {
+          if (sandboxPathBuilder_ == null) {
+            return sandboxPath_;
+          } else {
+            return sandboxPathBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Volume.Source.SandboxPath sandbox_path = 3;</code>
+         */
+        public Builder setSandboxPath(org.apache.mesos.v1.Protos.Volume.Source.SandboxPath value) {
+          if (sandboxPathBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            sandboxPath_ = value;
+            onChanged();
+          } else {
+            sandboxPathBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Volume.Source.SandboxPath sandbox_path = 3;</code>
+         */
+        public Builder setSandboxPath(
+            org.apache.mesos.v1.Protos.Volume.Source.SandboxPath.Builder builderForValue) {
+          if (sandboxPathBuilder_ == null) {
+            sandboxPath_ = builderForValue.build();
+            onChanged();
+          } else {
+            sandboxPathBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Volume.Source.SandboxPath sandbox_path = 3;</code>
+         */
+        public Builder mergeSandboxPath(org.apache.mesos.v1.Protos.Volume.Source.SandboxPath value) {
+          if (sandboxPathBuilder_ == null) {
+            if (((bitField0_ & 0x00000004) == 0x00000004) &&
+                sandboxPath_ != org.apache.mesos.v1.Protos.Volume.Source.SandboxPath.getDefaultInstance()) {
+              sandboxPath_ =
+                org.apache.mesos.v1.Protos.Volume.Source.SandboxPath.newBuilder(sandboxPath_).mergeFrom(value).buildPartial();
+            } else {
+              sandboxPath_ = value;
+            }
+            onChanged();
+          } else {
+            sandboxPathBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Volume.Source.SandboxPath sandbox_path = 3;</code>
+         */
+        public Builder clearSandboxPath() {
+          if (sandboxPathBuilder_ == null) {
+            sandboxPath_ = org.apache.mesos.v1.Protos.Volume.Source.SandboxPath.getDefaultInstance();
+            onChanged();
+          } else {
+            sandboxPathBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Volume.Source.SandboxPath sandbox_path = 3;</code>
+         */
+        public org.apache.mesos.v1.Protos.Volume.Source.SandboxPath.Builder getSandboxPathBuilder() {
+          bitField0_ |= 0x00000004;
+          onChanged();
+          return getSandboxPathFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.v1.Volume.Source.SandboxPath sandbox_path = 3;</code>
+         */
+        public org.apache.mesos.v1.Protos.Volume.Source.SandboxPathOrBuilder getSandboxPathOrBuilder() {
+          if (sandboxPathBuilder_ != null) {
+            return sandboxPathBuilder_.getMessageOrBuilder();
+          } else {
+            return sandboxPath_;
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Volume.Source.SandboxPath sandbox_path = 3;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Volume.Source.SandboxPath, org.apache.mesos.v1.Protos.Volume.Source.SandboxPath.Builder, org.apache.mesos.v1.Protos.Volume.Source.SandboxPathOrBuilder> 
+            getSandboxPathFieldBuilder() {
+          if (sandboxPathBuilder_ == null) {
+            sandboxPathBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.Volume.Source.SandboxPath, org.apache.mesos.v1.Protos.Volume.Source.SandboxPath.Builder, org.apache.mesos.v1.Protos.Volume.Source.SandboxPathOrBuilder>(
+                    sandboxPath_,
+                    getParentForChildren(),
+                    isClean());
+            sandboxPath_ = null;
+          }
+          return sandboxPathBuilder_;
+        }
+
+        // optional .mesos.v1.Secret secret = 4;
+        private org.apache.mesos.v1.Protos.Secret secret_ = org.apache.mesos.v1.Protos.Secret.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Secret, org.apache.mesos.v1.Protos.Secret.Builder, org.apache.mesos.v1.Protos.SecretOrBuilder> secretBuilder_;
+        /**
+         * <code>optional .mesos.v1.Secret secret = 4;</code>
+         *
+         * <pre>
+         * The volume/secret isolator uses the secret-fetcher module (third-party or
+         * internal) downloads the secret and makes it available at container_path.
+         * </pre>
+         */
+        public boolean hasSecret() {
+          return ((bitField0_ & 0x00000008) == 0x00000008);
+        }
+        /**
+         * <code>optional .mesos.v1.Secret secret = 4;</code>
+         *
+         * <pre>
+         * The volume/secret isolator uses the secret-fetcher module (third-party or
+         * internal) downloads the secret and makes it available at container_path.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.Secret getSecret() {
+          if (secretBuilder_ == null) {
+            return secret_;
+          } else {
+            return secretBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Secret secret = 4;</code>
+         *
+         * <pre>
+         * The volume/secret isolator uses the secret-fetcher module (third-party or
+         * internal) downloads the secret and makes it available at container_path.
+         * </pre>
+         */
+        public Builder setSecret(org.apache.mesos.v1.Protos.Secret value) {
+          if (secretBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            secret_ = value;
+            onChanged();
+          } else {
+            secretBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000008;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Secret secret = 4;</code>
+         *
+         * <pre>
+         * The volume/secret isolator uses the secret-fetcher module (third-party or
+         * internal) downloads the secret and makes it available at container_path.
+         * </pre>
+         */
+        public Builder setSecret(
+            org.apache.mesos.v1.Protos.Secret.Builder builderForValue) {
+          if (secretBuilder_ == null) {
+            secret_ = builderForValue.build();
+            onChanged();
+          } else {
+            secretBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000008;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Secret secret = 4;</code>
+         *
+         * <pre>
+         * The volume/secret isolator uses the secret-fetcher module (third-party or
+         * internal) downloads the secret and makes it available at container_path.
+         * </pre>
+         */
+        public Builder mergeSecret(org.apache.mesos.v1.Protos.Secret value) {
+          if (secretBuilder_ == null) {
+            if (((bitField0_ & 0x00000008) == 0x00000008) &&
+                secret_ != org.apache.mesos.v1.Protos.Secret.getDefaultInstance()) {
+              secret_ =
+                org.apache.mesos.v1.Protos.Secret.newBuilder(secret_).mergeFrom(value).buildPartial();
+            } else {
+              secret_ = value;
+            }
+            onChanged();
+          } else {
+            secretBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000008;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Secret secret = 4;</code>
+         *
+         * <pre>
+         * The volume/secret isolator uses the secret-fetcher module (third-party or
+         * internal) downloads the secret and makes it available at container_path.
+         * </pre>
+         */
+        public Builder clearSecret() {
+          if (secretBuilder_ == null) {
+            secret_ = org.apache.mesos.v1.Protos.Secret.getDefaultInstance();
+            onChanged();
+          } else {
+            secretBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000008);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Secret secret = 4;</code>
+         *
+         * <pre>
+         * The volume/secret isolator uses the secret-fetcher module (third-party or
+         * internal) downloads the secret and makes it available at container_path.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.Secret.Builder getSecretBuilder() {
+          bitField0_ |= 0x00000008;
+          onChanged();
+          return getSecretFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.v1.Secret secret = 4;</code>
+         *
+         * <pre>
+         * The volume/secret isolator uses the secret-fetcher module (third-party or
+         * internal) downloads the secret and makes it available at container_path.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.SecretOrBuilder getSecretOrBuilder() {
+          if (secretBuilder_ != null) {
+            return secretBuilder_.getMessageOrBuilder();
+          } else {
+            return secret_;
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Secret secret = 4;</code>
+         *
+         * <pre>
+         * The volume/secret isolator uses the secret-fetcher module (third-party or
+         * internal) downloads the secret and makes it available at container_path.
+         * </pre>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Secret, org.apache.mesos.v1.Protos.Secret.Builder, org.apache.mesos.v1.Protos.SecretOrBuilder> 
+            getSecretFieldBuilder() {
+          if (secretBuilder_ == null) {
+            secretBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.Secret, org.apache.mesos.v1.Protos.Secret.Builder, org.apache.mesos.v1.Protos.SecretOrBuilder>(
+                    secret_,
+                    getParentForChildren(),
+                    isClean());
+            secret_ = null;
+          }
+          return secretBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.Volume.Source)
+      }
+
+      static {
+        defaultInstance = new Source(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.Volume.Source)
+    }
+
+    private int bitField0_;
+    // required .mesos.v1.Volume.Mode mode = 3;
+    public static final int MODE_FIELD_NUMBER = 3;
+    private org.apache.mesos.v1.Protos.Volume.Mode mode_;
+    /**
+     * <code>required .mesos.v1.Volume.Mode mode = 3;</code>
+     *
+     * <pre>
+     * TODO(gyliu513): Make this as `optional` after deprecation cycle of 1.0.
+     * </pre>
+     */
+    public boolean hasMode() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required .mesos.v1.Volume.Mode mode = 3;</code>
+     *
+     * <pre>
+     * TODO(gyliu513): Make this as `optional` after deprecation cycle of 1.0.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.Volume.Mode getMode() {
+      return mode_;
+    }
+
+    // required string container_path = 1;
+    public static final int CONTAINER_PATH_FIELD_NUMBER = 1;
+    private java.lang.Object containerPath_;
+    /**
+     * <code>required string container_path = 1;</code>
+     *
+     * <pre>
+     * Path pointing to a directory or file in the container. If the
+     * path is a relative path, it is relative to the container work
+     * directory. If the path is an absolute path, that path must
+     * already exist.
+     * </pre>
+     */
+    public boolean hasContainerPath() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>required string container_path = 1;</code>
+     *
+     * <pre>
+     * Path pointing to a directory or file in the container. If the
+     * path is a relative path, it is relative to the container work
+     * directory. If the path is an absolute path, that path must
+     * already exist.
+     * </pre>
+     */
+    public java.lang.String getContainerPath() {
+      java.lang.Object ref = containerPath_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          containerPath_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string container_path = 1;</code>
+     *
+     * <pre>
+     * Path pointing to a directory or file in the container. If the
+     * path is a relative path, it is relative to the container work
+     * directory. If the path is an absolute path, that path must
+     * already exist.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getContainerPathBytes() {
+      java.lang.Object ref = containerPath_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        containerPath_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional string host_path = 2;
+    public static final int HOST_PATH_FIELD_NUMBER = 2;
+    private java.lang.Object hostPath_;
+    /**
+     * <code>optional string host_path = 2;</code>
+     *
+     * <pre>
+     * Absolute path pointing to a directory or file on the host or a
+     * path relative to the container work directory.
+     * </pre>
+     */
+    public boolean hasHostPath() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional string host_path = 2;</code>
+     *
+     * <pre>
+     * Absolute path pointing to a directory or file on the host or a
+     * path relative to the container work directory.
+     * </pre>
+     */
+    public java.lang.String getHostPath() {
+      java.lang.Object ref = hostPath_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          hostPath_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string host_path = 2;</code>
+     *
+     * <pre>
+     * Absolute path pointing to a directory or file on the host or a
+     * path relative to the container work directory.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getHostPathBytes() {
+      java.lang.Object ref = hostPath_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        hostPath_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional .mesos.v1.Image image = 4;
+    public static final int IMAGE_FIELD_NUMBER = 4;
+    private org.apache.mesos.v1.Protos.Image image_;
+    /**
+     * <code>optional .mesos.v1.Image image = 4;</code>
+     *
+     * <pre>
+     * The source of the volume is an Image which describes a root
+     * filesystem which will be provisioned by Mesos.
+     * </pre>
+     */
+    public boolean hasImage() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional .mesos.v1.Image image = 4;</code>
+     *
+     * <pre>
+     * The source of the volume is an Image which describes a root
+     * filesystem which will be provisioned by Mesos.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.Image getImage() {
+      return image_;
+    }
+    /**
+     * <code>optional .mesos.v1.Image image = 4;</code>
+     *
+     * <pre>
+     * The source of the volume is an Image which describes a root
+     * filesystem which will be provisioned by Mesos.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.ImageOrBuilder getImageOrBuilder() {
+      return image_;
+    }
+
+    // optional .mesos.v1.Volume.Source source = 5;
+    public static final int SOURCE_FIELD_NUMBER = 5;
+    private org.apache.mesos.v1.Protos.Volume.Source source_;
+    /**
+     * <code>optional .mesos.v1.Volume.Source source = 5;</code>
+     */
+    public boolean hasSource() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional .mesos.v1.Volume.Source source = 5;</code>
+     */
+    public org.apache.mesos.v1.Protos.Volume.Source getSource() {
+      return source_;
+    }
+    /**
+     * <code>optional .mesos.v1.Volume.Source source = 5;</code>
+     */
+    public org.apache.mesos.v1.Protos.Volume.SourceOrBuilder getSourceOrBuilder() {
+      return source_;
+    }
+
+    private void initFields() {
+      mode_ = org.apache.mesos.v1.Protos.Volume.Mode.RW;
+      containerPath_ = "";
+      hostPath_ = "";
+      image_ = org.apache.mesos.v1.Protos.Image.getDefaultInstance();
+      source_ = org.apache.mesos.v1.Protos.Volume.Source.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasMode()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasContainerPath()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (hasImage()) {
+        if (!getImage().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasSource()) {
+        if (!getSource().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(1, getContainerPathBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeBytes(2, getHostPathBytes());
+      }
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeEnum(3, mode_.getNumber());
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeMessage(4, image_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeMessage(5, source_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getContainerPathBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(2, getHostPathBytes());
+      }
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(3, mode_.getNumber());
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, image_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(5, source_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.Volume parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Volume parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Volume parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Volume parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Volume parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Volume parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Volume parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Volume parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Volume parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Volume parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.Volume prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.Volume}
+     *
+     * <pre>
+     **
+     * Describes a volume mapping either from host to container or vice
+     * versa. Both paths can either refer to a directory or a file.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.VolumeOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Volume_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Volume_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.Volume.class, org.apache.mesos.v1.Protos.Volume.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.Volume.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getImageFieldBuilder();
+          getSourceFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        mode_ = org.apache.mesos.v1.Protos.Volume.Mode.RW;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        containerPath_ = "";
+        bitField0_ = (bitField0_ & ~0x00000002);
+        hostPath_ = "";
+        bitField0_ = (bitField0_ & ~0x00000004);
+        if (imageBuilder_ == null) {
+          image_ = org.apache.mesos.v1.Protos.Image.getDefaultInstance();
+        } else {
+          imageBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        if (sourceBuilder_ == null) {
+          source_ = org.apache.mesos.v1.Protos.Volume.Source.getDefaultInstance();
+        } else {
+          sourceBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Volume_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.Volume getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.Volume.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.Volume build() {
+        org.apache.mesos.v1.Protos.Volume result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.Volume buildPartial() {
+        org.apache.mesos.v1.Protos.Volume result = new org.apache.mesos.v1.Protos.Volume(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.mode_ = mode_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.containerPath_ = containerPath_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.hostPath_ = hostPath_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        if (imageBuilder_ == null) {
+          result.image_ = image_;
+        } else {
+          result.image_ = imageBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        if (sourceBuilder_ == null) {
+          result.source_ = source_;
+        } else {
+          result.source_ = sourceBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.Volume) {
+          return mergeFrom((org.apache.mesos.v1.Protos.Volume)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.Volume other) {
+        if (other == org.apache.mesos.v1.Protos.Volume.getDefaultInstance()) return this;
+        if (other.hasMode()) {
+          setMode(other.getMode());
+        }
+        if (other.hasContainerPath()) {
+          bitField0_ |= 0x00000002;
+          containerPath_ = other.containerPath_;
+          onChanged();
+        }
+        if (other.hasHostPath()) {
+          bitField0_ |= 0x00000004;
+          hostPath_ = other.hostPath_;
+          onChanged();
+        }
+        if (other.hasImage()) {
+          mergeImage(other.getImage());
+        }
+        if (other.hasSource()) {
+          mergeSource(other.getSource());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasMode()) {
+          
+          return false;
+        }
+        if (!hasContainerPath()) {
+          
+          return false;
+        }
+        if (hasImage()) {
+          if (!getImage().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasSource()) {
+          if (!getSource().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.Volume parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.Volume) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required .mesos.v1.Volume.Mode mode = 3;
+      private org.apache.mesos.v1.Protos.Volume.Mode mode_ = org.apache.mesos.v1.Protos.Volume.Mode.RW;
+      /**
+       * <code>required .mesos.v1.Volume.Mode mode = 3;</code>
+       *
+       * <pre>
+       * TODO(gyliu513): Make this as `optional` after deprecation cycle of 1.0.
+       * </pre>
+       */
+      public boolean hasMode() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.v1.Volume.Mode mode = 3;</code>
+       *
+       * <pre>
+       * TODO(gyliu513): Make this as `optional` after deprecation cycle of 1.0.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Volume.Mode getMode() {
+        return mode_;
+      }
+      /**
+       * <code>required .mesos.v1.Volume.Mode mode = 3;</code>
+       *
+       * <pre>
+       * TODO(gyliu513): Make this as `optional` after deprecation cycle of 1.0.
+       * </pre>
+       */
+      public Builder setMode(org.apache.mesos.v1.Protos.Volume.Mode value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000001;
+        mode_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.Volume.Mode mode = 3;</code>
+       *
+       * <pre>
+       * TODO(gyliu513): Make this as `optional` after deprecation cycle of 1.0.
+       * </pre>
+       */
+      public Builder clearMode() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        mode_ = org.apache.mesos.v1.Protos.Volume.Mode.RW;
+        onChanged();
+        return this;
+      }
+
+      // required string container_path = 1;
+      private java.lang.Object containerPath_ = "";
+      /**
+       * <code>required string container_path = 1;</code>
+       *
+       * <pre>
+       * Path pointing to a directory or file in the container. If the
+       * path is a relative path, it is relative to the container work
+       * directory. If the path is an absolute path, that path must
+       * already exist.
+       * </pre>
+       */
+      public boolean hasContainerPath() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required string container_path = 1;</code>
+       *
+       * <pre>
+       * Path pointing to a directory or file in the container. If the
+       * path is a relative path, it is relative to the container work
+       * directory. If the path is an absolute path, that path must
+       * already exist.
+       * </pre>
+       */
+      public java.lang.String getContainerPath() {
+        java.lang.Object ref = containerPath_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          containerPath_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string container_path = 1;</code>
+       *
+       * <pre>
+       * Path pointing to a directory or file in the container. If the
+       * path is a relative path, it is relative to the container work
+       * directory. If the path is an absolute path, that path must
+       * already exist.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getContainerPathBytes() {
+        java.lang.Object ref = containerPath_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          containerPath_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string container_path = 1;</code>
+       *
+       * <pre>
+       * Path pointing to a directory or file in the container. If the
+       * path is a relative path, it is relative to the container work
+       * directory. If the path is an absolute path, that path must
+       * already exist.
+       * </pre>
+       */
+      public Builder setContainerPath(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        containerPath_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string container_path = 1;</code>
+       *
+       * <pre>
+       * Path pointing to a directory or file in the container. If the
+       * path is a relative path, it is relative to the container work
+       * directory. If the path is an absolute path, that path must
+       * already exist.
+       * </pre>
+       */
+      public Builder clearContainerPath() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        containerPath_ = getDefaultInstance().getContainerPath();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string container_path = 1;</code>
+       *
+       * <pre>
+       * Path pointing to a directory or file in the container. If the
+       * path is a relative path, it is relative to the container work
+       * directory. If the path is an absolute path, that path must
+       * already exist.
+       * </pre>
+       */
+      public Builder setContainerPathBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        containerPath_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional string host_path = 2;
+      private java.lang.Object hostPath_ = "";
+      /**
+       * <code>optional string host_path = 2;</code>
+       *
+       * <pre>
+       * Absolute path pointing to a directory or file on the host or a
+       * path relative to the container work directory.
+       * </pre>
+       */
+      public boolean hasHostPath() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional string host_path = 2;</code>
+       *
+       * <pre>
+       * Absolute path pointing to a directory or file on the host or a
+       * path relative to the container work directory.
+       * </pre>
+       */
+      public java.lang.String getHostPath() {
+        java.lang.Object ref = hostPath_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          hostPath_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string host_path = 2;</code>
+       *
+       * <pre>
+       * Absolute path pointing to a directory or file on the host or a
+       * path relative to the container work directory.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getHostPathBytes() {
+        java.lang.Object ref = hostPath_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          hostPath_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string host_path = 2;</code>
+       *
+       * <pre>
+       * Absolute path pointing to a directory or file on the host or a
+       * path relative to the container work directory.
+       * </pre>
+       */
+      public Builder setHostPath(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        hostPath_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string host_path = 2;</code>
+       *
+       * <pre>
+       * Absolute path pointing to a directory or file on the host or a
+       * path relative to the container work directory.
+       * </pre>
+       */
+      public Builder clearHostPath() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        hostPath_ = getDefaultInstance().getHostPath();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string host_path = 2;</code>
+       *
+       * <pre>
+       * Absolute path pointing to a directory or file on the host or a
+       * path relative to the container work directory.
+       * </pre>
+       */
+      public Builder setHostPathBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        hostPath_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.v1.Image image = 4;
+      private org.apache.mesos.v1.Protos.Image image_ = org.apache.mesos.v1.Protos.Image.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Image, org.apache.mesos.v1.Protos.Image.Builder, org.apache.mesos.v1.Protos.ImageOrBuilder> imageBuilder_;
+      /**
+       * <code>optional .mesos.v1.Image image = 4;</code>
+       *
+       * <pre>
+       * The source of the volume is an Image which describes a root
+       * filesystem which will be provisioned by Mesos.
+       * </pre>
+       */
+      public boolean hasImage() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.v1.Image image = 4;</code>
+       *
+       * <pre>
+       * The source of the volume is an Image which describes a root
+       * filesystem which will be provisioned by Mesos.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Image getImage() {
+        if (imageBuilder_ == null) {
+          return image_;
+        } else {
+          return imageBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Image image = 4;</code>
+       *
+       * <pre>
+       * The source of the volume is an Image which describes a root
+       * filesystem which will be provisioned by Mesos.
+       * </pre>
+       */
+      public Builder setImage(org.apache.mesos.v1.Protos.Image value) {
+        if (imageBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          image_ = value;
+          onChanged();
+        } else {
+          imageBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Image image = 4;</code>
+       *
+       * <pre>
+       * The source of the volume is an Image which describes a root
+       * filesystem which will be provisioned by Mesos.
+       * </pre>
+       */
+      public Builder setImage(
+          org.apache.mesos.v1.Protos.Image.Builder builderForValue) {
+        if (imageBuilder_ == null) {
+          image_ = builderForValue.build();
+          onChanged();
+        } else {
+          imageBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Image image = 4;</code>
+       *
+       * <pre>
+       * The source of the volume is an Image which describes a root
+       * filesystem which will be provisioned by Mesos.
+       * </pre>
+       */
+      public Builder mergeImage(org.apache.mesos.v1.Protos.Image value) {
+        if (imageBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008) &&
+              image_ != org.apache.mesos.v1.Protos.Image.getDefaultInstance()) {
+            image_ =
+              org.apache.mesos.v1.Protos.Image.newBuilder(image_).mergeFrom(value).buildPartial();
+          } else {
+            image_ = value;
+          }
+          onChanged();
+        } else {
+          imageBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Image image = 4;</code>
+       *
+       * <pre>
+       * The source of the volume is an Image which describes a root
+       * filesystem which will be provisioned by Mesos.
+       * </pre>
+       */
+      public Builder clearImage() {
+        if (imageBuilder_ == null) {
+          image_ = org.apache.mesos.v1.Protos.Image.getDefaultInstance();
+          onChanged();
+        } else {
+          imageBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Image image = 4;</code>
+       *
+       * <pre>
+       * The source of the volume is an Image which describes a root
+       * filesystem which will be provisioned by Mesos.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Image.Builder getImageBuilder() {
+        bitField0_ |= 0x00000008;
+        onChanged();
+        return getImageFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.Image image = 4;</code>
+       *
+       * <pre>
+       * The source of the volume is an Image which describes a root
+       * filesystem which will be provisioned by Mesos.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.ImageOrBuilder getImageOrBuilder() {
+        if (imageBuilder_ != null) {
+          return imageBuilder_.getMessageOrBuilder();
+        } else {
+          return image_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Image image = 4;</code>
+       *
+       * <pre>
+       * The source of the volume is an Image which describes a root
+       * filesystem which will be provisioned by Mesos.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Image, org.apache.mesos.v1.Protos.Image.Builder, org.apache.mesos.v1.Protos.ImageOrBuilder> 
+          getImageFieldBuilder() {
+        if (imageBuilder_ == null) {
+          imageBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Image, org.apache.mesos.v1.Protos.Image.Builder, org.apache.mesos.v1.Protos.ImageOrBuilder>(
+                  image_,
+                  getParentForChildren(),
+                  isClean());
+          image_ = null;
+        }
+        return imageBuilder_;
+      }
+
+      // optional .mesos.v1.Volume.Source source = 5;
+      private org.apache.mesos.v1.Protos.Volume.Source source_ = org.apache.mesos.v1.Protos.Volume.Source.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Volume.Source, org.apache.mesos.v1.Protos.Volume.Source.Builder, org.apache.mesos.v1.Protos.Volume.SourceOrBuilder> sourceBuilder_;
+      /**
+       * <code>optional .mesos.v1.Volume.Source source = 5;</code>
+       */
+      public boolean hasSource() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional .mesos.v1.Volume.Source source = 5;</code>
+       */
+      public org.apache.mesos.v1.Protos.Volume.Source getSource() {
+        if (sourceBuilder_ == null) {
+          return source_;
+        } else {
+          return sourceBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Volume.Source source = 5;</code>
+       */
+      public Builder setSource(org.apache.mesos.v1.Protos.Volume.Source value) {
+        if (sourceBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          source_ = value;
+          onChanged();
+        } else {
+          sourceBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Volume.Source source = 5;</code>
+       */
+      public Builder setSource(
+          org.apache.mesos.v1.Protos.Volume.Source.Builder builderForValue) {
+        if (sourceBuilder_ == null) {
+          source_ = builderForValue.build();
+          onChanged();
+        } else {
+          sourceBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Volume.Source source = 5;</code>
+       */
+      public Builder mergeSource(org.apache.mesos.v1.Protos.Volume.Source value) {
+        if (sourceBuilder_ == null) {
+          if (((bitField0_ & 0x00000010) == 0x00000010) &&
+              source_ != org.apache.mesos.v1.Protos.Volume.Source.getDefaultInstance()) {
+            source_ =
+              org.apache.mesos.v1.Protos.Volume.Source.newBuilder(source_).mergeFrom(value).buildPartial();
+          } else {
+            source_ = value;
+          }
+          onChanged();
+        } else {
+          sourceBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Volume.Source source = 5;</code>
+       */
+      public Builder clearSource() {
+        if (sourceBuilder_ == null) {
+          source_ = org.apache.mesos.v1.Protos.Volume.Source.getDefaultInstance();
+          onChanged();
+        } else {
+          sourceBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Volume.Source source = 5;</code>
+       */
+      public org.apache.mesos.v1.Protos.Volume.Source.Builder getSourceBuilder() {
+        bitField0_ |= 0x00000010;
+        onChanged();
+        return getSourceFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.Volume.Source source = 5;</code>
+       */
+      public org.apache.mesos.v1.Protos.Volume.SourceOrBuilder getSourceOrBuilder() {
+        if (sourceBuilder_ != null) {
+          return sourceBuilder_.getMessageOrBuilder();
+        } else {
+          return source_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Volume.Source source = 5;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Volume.Source, org.apache.mesos.v1.Protos.Volume.Source.Builder, org.apache.mesos.v1.Protos.Volume.SourceOrBuilder> 
+          getSourceFieldBuilder() {
+        if (sourceBuilder_ == null) {
+          sourceBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Volume.Source, org.apache.mesos.v1.Protos.Volume.Source.Builder, org.apache.mesos.v1.Protos.Volume.SourceOrBuilder>(
+                  source_,
+                  getParentForChildren(),
+                  isClean());
+          source_ = null;
+        }
+        return sourceBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.Volume)
+    }
+
+    static {
+      defaultInstance = new Volume(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.Volume)
+  }
+
+  public interface NetworkInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // repeated .mesos.v1.NetworkInfo.IPAddress ip_addresses = 5;
+    /**
+     * <code>repeated .mesos.v1.NetworkInfo.IPAddress ip_addresses = 5;</code>
+     *
+     * <pre>
+     * When included in a ContainerInfo, each of these represent a
+     * request for an IP address. Each request can specify an explicit address
+     * or the IP protocol to use.
+     *
+     * When included in a TaskStatus message, these inform the framework
+     * scheduler about the IP addresses that are bound to the container
+     * interface. When there are no custom network isolator modules installed,
+     * this field is filled in automatically with the Agent IP address.
+     * </pre>
+     */
+    java.util.List<org.apache.mesos.v1.Protos.NetworkInfo.IPAddress> 
+        getIpAddressesList();
+    /**
+     * <code>repeated .mesos.v1.NetworkInfo.IPAddress ip_addresses = 5;</code>
+     *
+     * <pre>
+     * When included in a ContainerInfo, each of these represent a
+     * request for an IP address. Each request can specify an explicit address
+     * or the IP protocol to use.
+     *
+     * When included in a TaskStatus message, these inform the framework
+     * scheduler about the IP addresses that are bound to the container
+     * interface. When there are no custom network isolator modules installed,
+     * this field is filled in automatically with the Agent IP address.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.NetworkInfo.IPAddress getIpAddresses(int index);
+    /**
+     * <code>repeated .mesos.v1.NetworkInfo.IPAddress ip_addresses = 5;</code>
+     *
+     * <pre>
+     * When included in a ContainerInfo, each of these represent a
+     * request for an IP address. Each request can specify an explicit address
+     * or the IP protocol to use.
+     *
+     * When included in a TaskStatus message, these inform the framework
+     * scheduler about the IP addresses that are bound to the container
+     * interface. When there are no custom network isolator modules installed,
+     * this field is filled in automatically with the Agent IP address.
+     * </pre>
+     */
+    int getIpAddressesCount();
+    /**
+     * <code>repeated .mesos.v1.NetworkInfo.IPAddress ip_addresses = 5;</code>
+     *
+     * <pre>
+     * When included in a ContainerInfo, each of these represent a
+     * request for an IP address. Each request can specify an explicit address
+     * or the IP protocol to use.
+     *
+     * When included in a TaskStatus message, these inform the framework
+     * scheduler about the IP addresses that are bound to the container
+     * interface. When there are no custom network isolator modules installed,
+     * this field is filled in automatically with the Agent IP address.
+     * </pre>
+     */
+    java.util.List<? extends org.apache.mesos.v1.Protos.NetworkInfo.IPAddressOrBuilder> 
+        getIpAddressesOrBuilderList();
+    /**
+     * <code>repeated .mesos.v1.NetworkInfo.IPAddress ip_addresses = 5;</code>
+     *
+     * <pre>
+     * When included in a ContainerInfo, each of these represent a
+     * request for an IP address. Each request can specify an explicit address
+     * or the IP protocol to use.
+     *
+     * When included in a TaskStatus message, these inform the framework
+     * scheduler about the IP addresses that are bound to the container
+     * interface. When there are no custom network isolator modules installed,
+     * this field is filled in automatically with the Agent IP address.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.NetworkInfo.IPAddressOrBuilder getIpAddressesOrBuilder(
+        int index);
+
+    // optional string name = 6;
+    /**
+     * <code>optional string name = 6;</code>
+     *
+     * <pre>
+     * Name of the network which will be used by network isolator to determine
+     * the network that the container joins. It's up to the network isolator
+     * to decide how to interpret this field.
+     * </pre>
+     */
+    boolean hasName();
+    /**
+     * <code>optional string name = 6;</code>
+     *
+     * <pre>
+     * Name of the network which will be used by network isolator to determine
+     * the network that the container joins. It's up to the network isolator
+     * to decide how to interpret this field.
+     * </pre>
+     */
+    java.lang.String getName();
+    /**
+     * <code>optional string name = 6;</code>
+     *
+     * <pre>
+     * Name of the network which will be used by network isolator to determine
+     * the network that the container joins. It's up to the network isolator
+     * to decide how to interpret this field.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getNameBytes();
+
+    // repeated string groups = 3;
+    /**
+     * <code>repeated string groups = 3;</code>
+     *
+     * <pre>
+     * A group is the name given to a set of logically-related interfaces that
+     * are allowed to communicate among themselves. Network traffic is allowed
+     * between two container interfaces that share at least one network group.
+     * For example, one might want to create separate groups for isolating dev,
+     * testing, qa and prod deployment environments.
+     * </pre>
+     */
+    java.util.List<java.lang.String>
+    getGroupsList();
+    /**
+     * <code>repeated string groups = 3;</code>
+     *
+     * <pre>
+     * A group is the name given to a set of logically-related interfaces that
+     * are allowed to communicate among themselves. Network traffic is allowed
+     * between two container interfaces that share at least one network group.
+     * For example, one might want to create separate groups for isolating dev,
+     * testing, qa and prod deployment environments.
+     * </pre>
+     */
+    int getGroupsCount();
+    /**
+     * <code>repeated string groups = 3;</code>
+     *
+     * <pre>
+     * A group is the name given to a set of logically-related interfaces that
+     * are allowed to communicate among themselves. Network traffic is allowed
+     * between two container interfaces that share at least one network group.
+     * For example, one might want to create separate groups for isolating dev,
+     * testing, qa and prod deployment environments.
+     * </pre>
+     */
+    java.lang.String getGroups(int index);
+    /**
+     * <code>repeated string groups = 3;</code>
+     *
+     * <pre>
+     * A group is the name given to a set of logically-related interfaces that
+     * are allowed to communicate among themselves. Network traffic is allowed
+     * between two container interfaces that share at least one network group.
+     * For example, one might want to create separate groups for isolating dev,
+     * testing, qa and prod deployment environments.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getGroupsBytes(int index);
+
+    // optional .mesos.v1.Labels labels = 4;
+    /**
+     * <code>optional .mesos.v1.Labels labels = 4;</code>
+     *
+     * <pre>
+     * To tag certain metadata to be used by Isolator/IPAM, e.g., rack, etc.
+     * </pre>
+     */
+    boolean hasLabels();
+    /**
+     * <code>optional .mesos.v1.Labels labels = 4;</code>
+     *
+     * <pre>
+     * To tag certain metadata to be used by Isolator/IPAM, e.g., rack, etc.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.Labels getLabels();
+    /**
+     * <code>optional .mesos.v1.Labels labels = 4;</code>
+     *
+     * <pre>
+     * To tag certain metadata to be used by Isolator/IPAM, e.g., rack, etc.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.LabelsOrBuilder getLabelsOrBuilder();
+
+    // repeated .mesos.v1.NetworkInfo.PortMapping port_mappings = 7;
+    /**
+     * <code>repeated .mesos.v1.NetworkInfo.PortMapping port_mappings = 7;</code>
+     */
+    java.util.List<org.apache.mesos.v1.Protos.NetworkInfo.PortMapping> 
+        getPortMappingsList();
+    /**
+     * <code>repeated .mesos.v1.NetworkInfo.PortMapping port_mappings = 7;</code>
+     */
+    org.apache.mesos.v1.Protos.NetworkInfo.PortMapping getPortMappings(int index);
+    /**
+     * <code>repeated .mesos.v1.NetworkInfo.PortMapping port_mappings = 7;</code>
+     */
+    int getPortMappingsCount();
+    /**
+     * <code>repeated .mesos.v1.NetworkInfo.PortMapping port_mappings = 7;</code>
+     */
+    java.util.List<? extends org.apache.mesos.v1.Protos.NetworkInfo.PortMappingOrBuilder> 
+        getPortMappingsOrBuilderList();
+    /**
+     * <code>repeated .mesos.v1.NetworkInfo.PortMapping port_mappings = 7;</code>
+     */
+    org.apache.mesos.v1.Protos.NetworkInfo.PortMappingOrBuilder getPortMappingsOrBuilder(
+        int index);
+  }
+  /**
+   * Protobuf type {@code mesos.v1.NetworkInfo}
+   *
+   * <pre>
+   **
+   * Describes a network request from a framework as well as network resolution
+   * provided by Mesos.
+   *
+   * A framework may request the network isolator on the Agent to isolate the
+   * container in a network namespace and create a virtual network interface.
+   * The `NetworkInfo` message describes the properties of that virtual
+   * interface, including the IP addresses and network isolation policy
+   * (network group membership).
+   *
+   * The NetworkInfo message is not interpreted by the Master or Agent and is
+   * intended to be used by Agent and Master modules implementing network
+   * isolation. If the modules are missing, the message is simply ignored. In
+   * future, the task launch will fail if there is no module providing the
+   * network isolation capabilities (MESOS-3390).
+   *
+   * An executor, Agent, or an Agent module may append NetworkInfos inside
+   * TaskStatus::container_status to provide information such as the container IP
+   * address and isolation groups.
+   * </pre>
+   */
+  public static final class NetworkInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements NetworkInfoOrBuilder {
+    // Use NetworkInfo.newBuilder() to construct.
+    private NetworkInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private NetworkInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final NetworkInfo defaultInstance;
+    public static NetworkInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public NetworkInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private NetworkInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 26: {
+              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
+                groups_ = new com.google.protobuf.LazyStringArrayList();
+                mutable_bitField0_ |= 0x00000004;
+              }
+              groups_.add(input.readBytes());
+              break;
+            }
+            case 34: {
+              org.apache.mesos.v1.Protos.Labels.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = labels_.toBuilder();
+              }
+              labels_ = input.readMessage(org.apache.mesos.v1.Protos.Labels.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(labels_);
+                labels_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+            case 42: {
+              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                ipAddresses_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.NetworkInfo.IPAddress>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              ipAddresses_.add(input.readMessage(org.apache.mesos.v1.Protos.NetworkInfo.IPAddress.PARSER, extensionRegistry));
+              break;
+            }
+            case 50: {
+              bitField0_ |= 0x00000001;
+              name_ = input.readBytes();
+              break;
+            }
+            case 58: {
+              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
+                portMappings_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.NetworkInfo.PortMapping>();
+                mutable_bitField0_ |= 0x00000010;
+              }
+              portMappings_.add(input.readMessage(org.apache.mesos.v1.Protos.NetworkInfo.PortMapping.PARSER, extensionRegistry));
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
+          groups_ = new com.google.protobuf.UnmodifiableLazyStringList(groups_);
+        }
+        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+          ipAddresses_ = java.util.Collections.unmodifiableList(ipAddresses_);
+        }
+        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
+          portMappings_ = java.util.Collections.unmodifiableList(portMappings_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_NetworkInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_NetworkInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.NetworkInfo.class, org.apache.mesos.v1.Protos.NetworkInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<NetworkInfo> PARSER =
+        new com.google.protobuf.AbstractParser<NetworkInfo>() {
+      public NetworkInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new NetworkInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<NetworkInfo> getParserForType() {
+      return PARSER;
+    }
+
+    /**
+     * Protobuf enum {@code mesos.v1.NetworkInfo.Protocol}
+     */
+    public enum Protocol
+        implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>IPv4 = 1;</code>
+       */
+      IPv4(0, 1),
+      /**
+       * <code>IPv6 = 2;</code>
+       */
+      IPv6(1, 2),
+      ;
+
+      /**
+       * <code>IPv4 = 1;</code>
+       */
+      public static final int IPv4_VALUE = 1;
+      /**
+       * <code>IPv6 = 2;</code>
+       */
+      public static final int IPv6_VALUE = 2;
+
+
+      public final int getNumber() { return value; }
+
+      public static Protocol valueOf(int value) {
+        switch (value) {
+          case 1: return IPv4;
+          case 2: return IPv6;
+          default: return null;
+        }
+      }
+
+      public static com.google.protobuf.Internal.EnumLiteMap<Protocol>
+          internalGetValueMap() {
+        return internalValueMap;
+      }
+      private static com.google.protobuf.Internal.EnumLiteMap<Protocol>
+          internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap<Protocol>() {
+              public Protocol findValueByNumber(int number) {
+                return Protocol.valueOf(number);
+              }
+            };
+
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
+          getValueDescriptor() {
+        return getDescriptor().getValues().get(index);
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptorForType() {
+        return getDescriptor();
+      }
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.NetworkInfo.getDescriptor().getEnumTypes().get(0);
+      }
+
+      private static final Protocol[] VALUES = values();
+
+      public static Protocol valueOf(
+          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+        if (desc.getType() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "EnumValueDescriptor is not for this type.");
+        }
+        return VALUES[desc.getIndex()];
+      }
+
+      private final int index;
+      private final int value;
+
+      private Protocol(int index, int value) {
+        this.index = index;
+        this.value = value;
+      }
+
+      // @@protoc_insertion_point(enum_scope:mesos.v1.NetworkInfo.Protocol)
+    }
+
+    public interface IPAddressOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // optional .mesos.v1.NetworkInfo.Protocol protocol = 1 [default = IPv4];
+      /**
+       * <code>optional .mesos.v1.NetworkInfo.Protocol protocol = 1 [default = IPv4];</code>
+       *
+       * <pre>
+       * Specify IP address requirement. Set protocol to the desired value to
+       * request the network isolator on the Agent to assign an IP address to the
+       * container being launched. If a specific IP address is specified in
+       * ip_address, this field should not be set.
+       * </pre>
+       */
+      boolean hasProtocol();
+      /**
+       * <code>optional .mesos.v1.NetworkInfo.Protocol protocol = 1 [default = IPv4];</code>
+       *
+       * <pre>
+       * Specify IP address requirement. Set protocol to the desired value to
+       * request the network isolator on the Agent to assign an IP address to the
+       * container being launched. If a specific IP address is specified in
+       * ip_address, this field should not be set.
+       * </pre>
+       */
+      org.apache.mesos.v1.Protos.NetworkInfo.Protocol getProtocol();
+
+      // optional string ip_address = 2;
+      /**
+       * <code>optional string ip_address = 2;</code>
+       *
+       * <pre>
+       * Statically assigned IP provided by the Framework. This IP will be
+       * assigned to the container by the network isolator module on the Agent.
+       * This field should not be used with the protocol field above.
+       *
+       * If an explicit address is requested but is unavailable, the network
+       * isolator should fail the task.
+       * </pre>
+       */
+      boolean hasIpAddress();
+      /**
+       * <code>optional string ip_address = 2;</code>
+       *
+       * <pre>
+       * Statically assigned IP provided by the Framework. This IP will be
+       * assigned to the container by the network isolator module on the Agent.
+       * This field should not be used with the protocol field above.
+       *
+       * If an explicit address is requested but is unavailable, the network
+       * isolator should fail the task.
+       * </pre>
+       */
+      java.lang.String getIpAddress();
+      /**
+       * <code>optional string ip_address = 2;</code>
+       *
+       * <pre>
+       * Statically assigned IP provided by the Framework. This IP will be
+       * assigned to the container by the network isolator module on the Agent.
+       * This field should not be used with the protocol field above.
+       *
+       * If an explicit address is requested but is unavailable, the network
+       * isolator should fail the task.
+       * </pre>
+       */
+      com.google.protobuf.ByteString
+          getIpAddressBytes();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.NetworkInfo.IPAddress}
+     *
+     * <pre>
+     * Specifies a request for an IP address, or reports the assigned container
+     * IP address.
+     *
+     * Users can request an automatically assigned IP (for example, via an
+     * IPAM service) or a specific IP by adding a NetworkInfo to the
+     * ContainerInfo for a task.  On a request, specifying neither `protocol`
+     * nor `ip_address` means that any available address may be assigned.
+     * </pre>
+     */
+    public static final class IPAddress extends
+        com.google.protobuf.GeneratedMessage
+        implements IPAddressOrBuilder {
+      // Use IPAddress.newBuilder() to construct.
+      private IPAddress(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private IPAddress(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final IPAddress defaultInstance;
+      public static IPAddress getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public IPAddress getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private IPAddress(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 8: {
+                int rawValue = input.readEnum();
+                org.apache.mesos.v1.Protos.NetworkInfo.Protocol value = org.apache.mesos.v1.Protos.NetworkInfo.Protocol.valueOf(rawValue);
+                if (value == null) {
+                  unknownFields.mergeVarintField(1, rawValue);
+                } else {
+                  bitField0_ |= 0x00000001;
+                  protocol_ = value;
+                }
+                break;
+              }
+              case 18: {
+                bitField0_ |= 0x00000002;
+                ipAddress_ = input.readBytes();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_NetworkInfo_IPAddress_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_NetworkInfo_IPAddress_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.NetworkInfo.IPAddress.class, org.apache.mesos.v1.Protos.NetworkInfo.IPAddress.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<IPAddress> PARSER =
+          new com.google.protobuf.AbstractParser<IPAddress>() {
+        public IPAddress parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new IPAddress(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<IPAddress> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // optional .mesos.v1.NetworkInfo.Protocol protocol = 1 [default = IPv4];
+      public static final int PROTOCOL_FIELD_NUMBER = 1;
+      private org.apache.mesos.v1.Protos.NetworkInfo.Protocol protocol_;
+      /**
+       * <code>optional .mesos.v1.NetworkInfo.Protocol protocol = 1 [default = IPv4];</code>
+       *
+       * <pre>
+       * Specify IP address requirement. Set protocol to the desired value to
+       * request the network isolator on the Agent to assign an IP address to the
+       * container being launched. If a specific IP address is specified in
+       * ip_address, this field should not be set.
+       * </pre>
+       */
+      public boolean hasProtocol() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.v1.NetworkInfo.Protocol protocol = 1 [default = IPv4];</code>
+       *
+       * <pre>
+       * Specify IP address requirement. Set protocol to the desired value to
+       * request the network isolator on the Agent to assign an IP address to the
+       * container being launched. If a specific IP address is specified in
+       * ip_address, this field should not be set.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.NetworkInfo.Protocol getProtocol() {
+        return protocol_;
+      }
+
+      // optional string ip_address = 2;
+      public static final int IP_ADDRESS_FIELD_NUMBER = 2;
+      private java.lang.Object ipAddress_;
+      /**
+       * <code>optional string ip_address = 2;</code>
+       *
+       * <pre>
+       * Statically assigned IP provided by the Framework. This IP will be
+       * assigned to the container by the network isolator module on the Agent.
+       * This field should not be used with the protocol field above.
+       *
+       * If an explicit address is requested but is unavailable, the network
+       * isolator should fail the task.
+       * </pre>
+       */
+      public boolean hasIpAddress() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional string ip_address = 2;</code>
+       *
+       * <pre>
+       * Statically assigned IP provided by the Framework. This IP will be
+       * assigned to the container by the network isolator module on the Agent.
+       * This field should not be used with the protocol field above.
+       *
+       * If an explicit address is requested but is unavailable, the network
+       * isolator should fail the task.
+       * </pre>
+       */
+      public java.lang.String getIpAddress() {
+        java.lang.Object ref = ipAddress_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            ipAddress_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>optional string ip_address = 2;</code>
+       *
+       * <pre>
+       * Statically assigned IP provided by the Framework. This IP will be
+       * assigned to the container by the network isolator module on the Agent.
+       * This field should not be used with the protocol field above.
+       *
+       * If an explicit address is requested but is unavailable, the network
+       * isolator should fail the task.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getIpAddressBytes() {
+        java.lang.Object ref = ipAddress_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          ipAddress_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      private void initFields() {
+        protocol_ = org.apache.mesos.v1.Protos.NetworkInfo.Protocol.IPv4;
+        ipAddress_ = "";
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeEnum(1, protocol_.getNumber());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeBytes(2, getIpAddressBytes());
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeEnumSize(1, protocol_.getNumber());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(2, getIpAddressBytes());
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.Protos.NetworkInfo.IPAddress parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.NetworkInfo.IPAddress parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.NetworkInfo.IPAddress parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.NetworkInfo.IPAddress parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.NetworkInfo.IPAddress parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.NetworkInfo.IPAddress parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.NetworkInfo.IPAddress parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.NetworkInfo.IPAddress parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.NetworkInfo.IPAddress parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.NetworkInfo.IPAddress parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.Protos.NetworkInfo.IPAddress prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.NetworkInfo.IPAddress}
+       *
+       * <pre>
+       * Specifies a request for an IP address, or reports the assigned container
+       * IP address.
+       *
+       * Users can request an automatically assigned IP (for example, via an
+       * IPAM service) or a specific IP by adding a NetworkInfo to the
+       * ContainerInfo for a task.  On a request, specifying neither `protocol`
+       * nor `ip_address` means that any available address may be assigned.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.Protos.NetworkInfo.IPAddressOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_NetworkInfo_IPAddress_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_NetworkInfo_IPAddress_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.NetworkInfo.IPAddress.class, org.apache.mesos.v1.Protos.NetworkInfo.IPAddress.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.Protos.NetworkInfo.IPAddress.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          protocol_ = org.apache.mesos.v1.Protos.NetworkInfo.Protocol.IPv4;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          ipAddress_ = "";
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_NetworkInfo_IPAddress_descriptor;
+        }
+
+        public org.apache.mesos.v1.Protos.NetworkInfo.IPAddress getDefaultInstanceForType() {
+          return org.apache.mesos.v1.Protos.NetworkInfo.IPAddress.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.Protos.NetworkInfo.IPAddress build() {
+          org.apache.mesos.v1.Protos.NetworkInfo.IPAddress result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.Protos.NetworkInfo.IPAddress buildPartial() {
+          org.apache.mesos.v1.Protos.NetworkInfo.IPAddress result = new org.apache.mesos.v1.Protos.NetworkInfo.IPAddress(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.protocol_ = protocol_;
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          result.ipAddress_ = ipAddress_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.Protos.NetworkInfo.IPAddress) {
+            return mergeFrom((org.apache.mesos.v1.Protos.NetworkInfo.IPAddress)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.Protos.NetworkInfo.IPAddress other) {
+          if (other == org.apache.mesos.v1.Protos.NetworkInfo.IPAddress.getDefaultInstance()) return this;
+          if (other.hasProtocol()) {
+            setProtocol(other.getProtocol());
+          }
+          if (other.hasIpAddress()) {
+            bitField0_ |= 0x00000002;
+            ipAddress_ = other.ipAddress_;
+            onChanged();
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.Protos.NetworkInfo.IPAddress parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.Protos.NetworkInfo.IPAddress) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // optional .mesos.v1.NetworkInfo.Protocol protocol = 1 [default = IPv4];
+        private org.apache.mesos.v1.Protos.NetworkInfo.Protocol protocol_ = org.apache.mesos.v1.Protos.NetworkInfo.Protocol.IPv4;
+        /**
+         * <code>optional .mesos.v1.NetworkInfo.Protocol protocol = 1 [default = IPv4];</code>
+         *
+         * <pre>
+         * Specify IP address requirement. Set protocol to the desired value to
+         * request the network isolator on the Agent to assign an IP address to the
+         * container being launched. If a specific IP address is specified in
+         * ip_address, this field should not be set.
+         * </pre>
+         */
+        public boolean hasProtocol() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional .mesos.v1.NetworkInfo.Protocol protocol = 1 [default = IPv4];</code>
+         *
+         * <pre>
+         * Specify IP address requirement. Set protocol to the desired value to
+         * request the network isolator on the Agent to assign an IP address to the
+         * container being launched. If a specific IP address is specified in
+         * ip_address, this field should not be set.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.NetworkInfo.Protocol getProtocol() {
+          return protocol_;
+        }
+        /**
+         * <code>optional .mesos.v1.NetworkInfo.Protocol protocol = 1 [default = IPv4];</code>
+         *
+         * <pre>
+         * Specify IP address requirement. Set protocol to the desired value to
+         * request the network isolator on the Agent to assign an IP address to the
+         * container being launched. If a specific IP address is specified in
+         * ip_address, this field should not be set.
+         * </pre>
+         */
+        public Builder setProtocol(org.apache.mesos.v1.Protos.NetworkInfo.Protocol value) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          bitField0_ |= 0x00000001;
+          protocol_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.NetworkInfo.Protocol protocol = 1 [default = IPv4];</code>
+         *
+         * <pre>
+         * Specify IP address requirement. Set protocol to the desired value to
+         * request the network isolator on the Agent to assign an IP address to the
+         * container being launched. If a specific IP address is specified in
+         * ip_address, this field should not be set.
+         * </pre>
+         */
+        public Builder clearProtocol() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          protocol_ = org.apache.mesos.v1.Protos.NetworkInfo.Protocol.IPv4;
+          onChanged();
+          return this;
+        }
+
+        // optional string ip_address = 2;
+        private java.lang.Object ipAddress_ = "";
+        /**
+         * <code>optional string ip_address = 2;</code>
+         *
+         * <pre>
+         * Statically assigned IP provided by the Framework. This IP will be
+         * assigned to the container by the network isolator module on the Agent.
+         * This field should not be used with the protocol field above.
+         *
+         * If an explicit address is requested but is unavailable, the network
+         * isolator should fail the task.
+         * </pre>
+         */
+        public boolean hasIpAddress() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional string ip_address = 2;</code>
+         *
+         * <pre>
+         * Statically assigned IP provided by the Framework. This IP will be
+         * assigned to the container by the network isolator module on the Agent.
+         * This field should not be used with the protocol field above.
+         *
+         * If an explicit address is requested but is unavailable, the network
+         * isolator should fail the task.
+         * </pre>
+         */
+        public java.lang.String getIpAddress() {
+          java.lang.Object ref = ipAddress_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            ipAddress_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>optional string ip_address = 2;</code>
+         *
+         * <pre>
+         * Statically assigned IP provided by the Framework. This IP will be
+         * assigned to the container by the network isolator module on the Agent.
+         * This field should not be used with the protocol field above.
+         *
+         * If an explicit address is requested but is unavailable, the network
+         * isolator should fail the task.
+         * </pre>
+         */
+        public com.google.protobuf.ByteString
+            getIpAddressBytes() {
+          java.lang.Object ref = ipAddress_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            ipAddress_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>optional string ip_address = 2;</code>
+         *
+         * <pre>
+         * Statically assigned IP provided by the Framework. This IP will be
+         * assigned to the container by the network isolator module on the Agent.
+         * This field should not be used with the protocol field above.
+         *
+         * If an explicit address is requested but is unavailable, the network
+         * isolator should fail the task.
+         * </pre>
+         */
+        public Builder setIpAddress(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+          ipAddress_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string ip_address = 2;</code>
+         *
+         * <pre>
+         * Statically assigned IP provided by the Framework. This IP will be
+         * assigned to the container by the network isolator module on the Agent.
+         * This field should not be used with the protocol field above.
+         *
+         * If an explicit address is requested but is unavailable, the network
+         * isolator should fail the task.
+         * </pre>
+         */
+        public Builder clearIpAddress() {
+          bitField0_ = (bitField0_ & ~0x00000002);
+          ipAddress_ = getDefaultInstance().getIpAddress();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string ip_address = 2;</code>
+         *
+         * <pre>
+         * Statically assigned IP provided by the Framework. This IP will be
+         * assigned to the container by the network isolator module on the Agent.
+         * This field should not be used with the protocol field above.
+         *
+         * If an explicit address is requested but is unavailable, the network
+         * isolator should fail the task.
+         * </pre>
+         */
+        public Builder setIpAddressBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+          ipAddress_ = value;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.NetworkInfo.IPAddress)
+      }
+
+      static {
+        defaultInstance = new IPAddress(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.NetworkInfo.IPAddress)
+    }
+
+    public interface PortMappingOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required uint32 host_port = 1;
+      /**
+       * <code>required uint32 host_port = 1;</code>
+       */
+      boolean hasHostPort();
+      /**
+       * <code>required uint32 host_port = 1;</code>
+       */
+      int getHostPort();
+
+      // required uint32 container_port = 2;
+      /**
+       * <code>required uint32 container_port = 2;</code>
+       */
+      boolean hasContainerPort();
+      /**
+       * <code>required uint32 container_port = 2;</code>
+       */
+      int getContainerPort();
+
+      // optional string protocol = 3;
+      /**
+       * <code>optional string protocol = 3;</code>
+       *
+       * <pre>
+       * Protocol to expose as (ie: tcp, udp).
+       * </pre>
+       */
+      boolean hasProtocol();
+      /**
+       * <code>optional string protocol = 3;</code>
+       *
+       * <pre>
+       * Protocol to expose as (ie: tcp, udp).
+       * </pre>
+       */
+      java.lang.String getProtocol();
+      /**
+       * <code>optional string protocol = 3;</code>
+       *
+       * <pre>
+       * Protocol to expose as (ie: tcp, udp).
+       * </pre>
+       */
+      com.google.protobuf.ByteString
+          getProtocolBytes();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.NetworkInfo.PortMapping}
+     *
+     * <pre>
+     * Specifies a port mapping request for the task on this network.
+     * </pre>
+     */
+    public static final class PortMapping extends
+        com.google.protobuf.GeneratedMessage
+        implements PortMappingOrBuilder {
+      // Use PortMapping.newBuilder() to construct.
+      private PortMapping(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private PortMapping(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final PortMapping defaultInstance;
+      public static PortMapping getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public PortMapping getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private PortMapping(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 8: {
+                bitField0_ |= 0x00000001;
+                hostPort_ = input.readUInt32();
+                break;
+              }
+              case 16: {
+                bitField0_ |= 0x00000002;
+                containerPort_ = input.readUInt32();
+                break;
+              }
+              case 26: {
+                bitField0_ |= 0x00000004;
+                protocol_ = input.readBytes();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_NetworkInfo_PortMapping_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_NetworkInfo_PortMapping_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.NetworkInfo.PortMapping.class, org.apache.mesos.v1.Protos.NetworkInfo.PortMapping.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<PortMapping> PARSER =
+          new com.google.protobuf.AbstractParser<PortMapping>() {
+        public PortMapping parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new PortMapping(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<PortMapping> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required uint32 host_port = 1;
+      public static final int HOST_PORT_FIELD_NUMBER = 1;
+      private int hostPort_;
+      /**
+       * <code>required uint32 host_port = 1;</code>
+       */
+      public boolean hasHostPort() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required uint32 host_port = 1;</code>
+       */
+      public int getHostPort() {
+        return hostPort_;
+      }
+
+      // required uint32 container_port = 2;
+      public static final int CONTAINER_PORT_FIELD_NUMBER = 2;
+      private int containerPort_;
+      /**
+       * <code>required uint32 container_port = 2;</code>
+       */
+      public boolean hasContainerPort() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required uint32 container_port = 2;</code>
+       */
+      public int getContainerPort() {
+        return containerPort_;
+      }
+
+      // optional string protocol = 3;
+      public static final int PROTOCOL_FIELD_NUMBER = 3;
+      private java.lang.Object protocol_;
+      /**
+       * <code>optional string protocol = 3;</code>
+       *
+       * <pre>
+       * Protocol to expose as (ie: tcp, udp).
+       * </pre>
+       */
+      public boolean hasProtocol() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional string protocol = 3;</code>
+       *
+       * <pre>
+       * Protocol to expose as (ie: tcp, udp).
+       * </pre>
+       */
+      public java.lang.String getProtocol() {
+        java.lang.Object ref = protocol_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            protocol_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>optional string protocol = 3;</code>
+       *
+       * <pre>
+       * Protocol to expose as (ie: tcp, udp).
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getProtocolBytes() {
+        java.lang.Object ref = protocol_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          protocol_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      private void initFields() {
+        hostPort_ = 0;
+        containerPort_ = 0;
+        protocol_ = "";
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasHostPort()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!hasContainerPort()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeUInt32(1, hostPort_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeUInt32(2, containerPort_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeBytes(3, getProtocolBytes());
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeUInt32Size(1, hostPort_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeUInt32Size(2, containerPort_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(3, getProtocolBytes());
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.Protos.NetworkInfo.PortMapping parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.NetworkInfo.PortMapping parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.NetworkInfo.PortMapping parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.NetworkInfo.PortMapping parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.NetworkInfo.PortMapping parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.NetworkInfo.PortMapping parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.NetworkInfo.PortMapping parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.NetworkInfo.PortMapping parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.NetworkInfo.PortMapping parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.NetworkInfo.PortMapping parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.Protos.NetworkInfo.PortMapping prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.NetworkInfo.PortMapping}
+       *
+       * <pre>
+       * Specifies a port mapping request for the task on this network.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.Protos.NetworkInfo.PortMappingOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_NetworkInfo_PortMapping_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_NetworkInfo_PortMapping_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.NetworkInfo.PortMapping.class, org.apache.mesos.v1.Protos.NetworkInfo.PortMapping.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.Protos.NetworkInfo.PortMapping.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          hostPort_ = 0;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          containerPort_ = 0;
+          bitField0_ = (bitField0_ & ~0x00000002);
+          protocol_ = "";
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_NetworkInfo_PortMapping_descriptor;
+        }
+
+        public org.apache.mesos.v1.Protos.NetworkInfo.PortMapping getDefaultInstanceForType() {
+          return org.apache.mesos.v1.Protos.NetworkInfo.PortMapping.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.Protos.NetworkInfo.PortMapping build() {
+          org.apache.mesos.v1.Protos.NetworkInfo.PortMapping result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.Protos.NetworkInfo.PortMapping buildPartial() {
+          org.apache.mesos.v1.Protos.NetworkInfo.PortMapping result = new org.apache.mesos.v1.Protos.NetworkInfo.PortMapping(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.hostPort_ = hostPort_;
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          result.containerPort_ = containerPort_;
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          result.protocol_ = protocol_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.Protos.NetworkInfo.PortMapping) {
+            return mergeFrom((org.apache.mesos.v1.Protos.NetworkInfo.PortMapping)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.Protos.NetworkInfo.PortMapping other) {
+          if (other == org.apache.mesos.v1.Protos.NetworkInfo.PortMapping.getDefaultInstance()) return this;
+          if (other.hasHostPort()) {
+            setHostPort(other.getHostPort());
+          }
+          if (other.hasContainerPort()) {
+            setContainerPort(other.getContainerPort());
+          }
+          if (other.hasProtocol()) {
+            bitField0_ |= 0x00000004;
+            protocol_ = other.protocol_;
+            onChanged();
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasHostPort()) {
+            
+            return false;
+          }
+          if (!hasContainerPort()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.Protos.NetworkInfo.PortMapping parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.Protos.NetworkInfo.PortMapping) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required uint32 host_port = 1;
+        private int hostPort_ ;
+        /**
+         * <code>required uint32 host_port = 1;</code>
+         */
+        public boolean hasHostPort() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required uint32 host_port = 1;</code>
+         */
+        public int getHostPort() {
+          return hostPort_;
+        }
+        /**
+         * <code>required uint32 host_port = 1;</code>
+         */
+        public Builder setHostPort(int value) {
+          bitField0_ |= 0x00000001;
+          hostPort_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required uint32 host_port = 1;</code>
+         */
+        public Builder clearHostPort() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          hostPort_ = 0;
+          onChanged();
+          return this;
+        }
+
+        // required uint32 container_port = 2;
+        private int containerPort_ ;
+        /**
+         * <code>required uint32 container_port = 2;</code>
+         */
+        public boolean hasContainerPort() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>required uint32 container_port = 2;</code>
+         */
+        public int getContainerPort() {
+          return containerPort_;
+        }
+        /**
+         * <code>required uint32 container_port = 2;</code>
+         */
+        public Builder setContainerPort(int value) {
+          bitField0_ |= 0x00000002;
+          containerPort_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required uint32 container_port = 2;</code>
+         */
+        public Builder clearContainerPort() {
+          bitField0_ = (bitField0_ & ~0x00000002);
+          containerPort_ = 0;
+          onChanged();
+          return this;
+        }
+
+        // optional string protocol = 3;
+        private java.lang.Object protocol_ = "";
+        /**
+         * <code>optional string protocol = 3;</code>
+         *
+         * <pre>
+         * Protocol to expose as (ie: tcp, udp).
+         * </pre>
+         */
+        public boolean hasProtocol() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional string protocol = 3;</code>
+         *
+         * <pre>
+         * Protocol to expose as (ie: tcp, udp).
+         * </pre>
+         */
+        public java.lang.String getProtocol() {
+          java.lang.Object ref = protocol_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            protocol_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>optional string protocol = 3;</code>
+         *
+         * <pre>
+         * Protocol to expose as (ie: tcp, udp).
+         * </pre>
+         */
+        public com.google.protobuf.ByteString
+            getProtocolBytes() {
+          java.lang.Object ref = protocol_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            protocol_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>optional string protocol = 3;</code>
+         *
+         * <pre>
+         * Protocol to expose as (ie: tcp, udp).
+         * </pre>
+         */
+        public Builder setProtocol(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+          protocol_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string protocol = 3;</code>
+         *
+         * <pre>
+         * Protocol to expose as (ie: tcp, udp).
+         * </pre>
+         */
+        public Builder clearProtocol() {
+          bitField0_ = (bitField0_ & ~0x00000004);
+          protocol_ = getDefaultInstance().getProtocol();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string protocol = 3;</code>
+         *
+         * <pre>
+         * Protocol to expose as (ie: tcp, udp).
+         * </pre>
+         */
+        public Builder setProtocolBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+          protocol_ = value;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.NetworkInfo.PortMapping)
+      }
+
+      static {
+        defaultInstance = new PortMapping(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.NetworkInfo.PortMapping)
+    }
+
+    private int bitField0_;
+    // repeated .mesos.v1.NetworkInfo.IPAddress ip_addresses = 5;
+    public static final int IP_ADDRESSES_FIELD_NUMBER = 5;
+    private java.util.List<org.apache.mesos.v1.Protos.NetworkInfo.IPAddress> ipAddresses_;
+    /**
+     * <code>repeated .mesos.v1.NetworkInfo.IPAddress ip_addresses = 5;</code>
+     *
+     * <pre>
+     * When included in a ContainerInfo, each of these represent a
+     * request for an IP address. Each request can specify an explicit address
+     * or the IP protocol to use.
+     *
+     * When included in a TaskStatus message, these inform the framework
+     * scheduler about the IP addresses that are bound to the container
+     * interface. When there are no custom network isolator modules installed,
+     * this field is filled in automatically with the Agent IP address.
+     * </pre>
+     */
+    public java.util.List<org.apache.mesos.v1.Protos.NetworkInfo.IPAddress> getIpAddressesList() {
+      return ipAddresses_;
+    }
+    /**
+     * <code>repeated .mesos.v1.NetworkInfo.IPAddress ip_addresses = 5;</code>
+     *
+     * <pre>
+     * When included in a ContainerInfo, each of these represent a
+     * request for an IP address. Each request can specify an explicit address
+     * or the IP protocol to use.
+     *
+     * When included in a TaskStatus message, these inform the framework
+     * scheduler about the IP addresses that are bound to the container
+     * interface. When there are no custom network isolator modules installed,
+     * this field is filled in automatically with the Agent IP address.
+     * </pre>
+     */
+    public java.util.List<? extends org.apache.mesos.v1.Protos.NetworkInfo.IPAddressOrBuilder> 
+        getIpAddressesOrBuilderList() {
+      return ipAddresses_;
+    }
+    /**
+     * <code>repeated .mesos.v1.NetworkInfo.IPAddress ip_addresses = 5;</code>
+     *
+     * <pre>
+     * When included in a ContainerInfo, each of these represent a
+     * request for an IP address. Each request can specify an explicit address
+     * or the IP protocol to use.
+     *
+     * When included in a TaskStatus message, these inform the framework
+     * scheduler about the IP addresses that are bound to the container
+     * interface. When there are no custom network isolator modules installed,
+     * this field is filled in automatically with the Agent IP address.
+     * </pre>
+     */
+    public int getIpAddressesCount() {
+      return ipAddresses_.size();
+    }
+    /**
+     * <code>repeated .mesos.v1.NetworkInfo.IPAddress ip_addresses = 5;</code>
+     *
+     * <pre>
+     * When included in a ContainerInfo, each of these represent a
+     * request for an IP address. Each request can specify an explicit address
+     * or the IP protocol to use.
+     *
+     * When included in a TaskStatus message, these inform the framework
+     * scheduler about the IP addresses that are bound to the container
+     * interface. When there are no custom network isolator modules installed,
+     * this field is filled in automatically with the Agent IP address.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.NetworkInfo.IPAddress getIpAddresses(int index) {
+      return ipAddresses_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.v1.NetworkInfo.IPAddress ip_addresses = 5;</code>
+     *
+     * <pre>
+     * When included in a ContainerInfo, each of these represent a
+     * request for an IP address. Each request can specify an explicit address
+     * or the IP protocol to use.
+     *
+     * When included in a TaskStatus message, these inform the framework
+     * scheduler about the IP addresses that are bound to the container
+     * interface. When there are no custom network isolator modules installed,
+     * this field is filled in automatically with the Agent IP address.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.NetworkInfo.IPAddressOrBuilder getIpAddressesOrBuilder(
+        int index) {
+      return ipAddresses_.get(index);
+    }
+
+    // optional string name = 6;
+    public static final int NAME_FIELD_NUMBER = 6;
+    private java.lang.Object name_;
+    /**
+     * <code>optional string name = 6;</code>
+     *
+     * <pre>
+     * Name of the network which will be used by network isolator to determine
+     * the network that the container joins. It's up to the network isolator
+     * to decide how to interpret this field.
+     * </pre>
+     */
+    public boolean hasName() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional string name = 6;</code>
+     *
+     * <pre>
+     * Name of the network which will be used by network isolator to determine
+     * the network that the container joins. It's up to the network isolator
+     * to decide how to interpret this field.
+     * </pre>
+     */
+    public java.lang.String getName() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          name_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string name = 6;</code>
+     *
+     * <pre>
+     * Name of the network which will be used by network isolator to determine
+     * the network that the container joins. It's up to the network isolator
+     * to decide how to interpret this field.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getNameBytes() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        name_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // repeated string groups = 3;
+    public static final int GROUPS_FIELD_NUMBER = 3;
+    private com.google.protobuf.LazyStringList groups_;
+    /**
+     * <code>repeated string groups = 3;</code>
+     *
+     * <pre>
+     * A group is the name given to a set of logically-related interfaces that
+     * are allowed to communicate among themselves. Network traffic is allowed
+     * between two container interfaces that share at least one network group.
+     * For example, one might want to create separate groups for isolating dev,
+     * testing, qa and prod deployment environments.
+     * </pre>
+     */
+    public java.util.List<java.lang.String>
+        getGroupsList() {
+      return groups_;
+    }
+    /**
+     * <code>repeated string groups = 3;</code>
+     *
+     * <pre>
+     * A group is the name given to a set of logically-related interfaces that
+     * are allowed to communicate among themselves. Network traffic is allowed
+     * between two container interfaces that share at least one network group.
+     * For example, one might want to create separate groups for isolating dev,
+     * testing, qa and prod deployment environments.
+     * </pre>
+     */
+    public int getGroupsCount() {
+      return groups_.size();
+    }
+    /**
+     * <code>repeated string groups = 3;</code>
+     *
+     * <pre>
+     * A group is the name given to a set of logically-related interfaces that
+     * are allowed to communicate among themselves. Network traffic is allowed
+     * between two container interfaces that share at least one network group.
+     * For example, one might want to create separate groups for isolating dev,
+     * testing, qa and prod deployment environments.
+     * </pre>
+     */
+    public java.lang.String getGroups(int index) {
+      return groups_.get(index);
+    }
+    /**
+     * <code>repeated string groups = 3;</code>
+     *
+     * <pre>
+     * A group is the name given to a set of logically-related interfaces that
+     * are allowed to communicate among themselves. Network traffic is allowed
+     * between two container interfaces that share at least one network group.
+     * For example, one might want to create separate groups for isolating dev,
+     * testing, qa and prod deployment environments.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getGroupsBytes(int index) {
+      return groups_.getByteString(index);
+    }
+
+    // optional .mesos.v1.Labels labels = 4;
+    public static final int LABELS_FIELD_NUMBER = 4;
+    private org.apache.mesos.v1.Protos.Labels labels_;
+    /**
+     * <code>optional .mesos.v1.Labels labels = 4;</code>
+     *
+     * <pre>
+     * To tag certain metadata to be used by Isolator/IPAM, e.g., rack, etc.
+     * </pre>
+     */
+    public boolean hasLabels() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional .mesos.v1.Labels labels = 4;</code>
+     *
+     * <pre>
+     * To tag certain metadata to be used by Isolator/IPAM, e.g., rack, etc.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.Labels getLabels() {
+      return labels_;
+    }
+    /**
+     * <code>optional .mesos.v1.Labels labels = 4;</code>
+     *
+     * <pre>
+     * To tag certain metadata to be used by Isolator/IPAM, e.g., rack, etc.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+      return labels_;
+    }
+
+    // repeated .mesos.v1.NetworkInfo.PortMapping port_mappings = 7;
+    public static final int PORT_MAPPINGS_FIELD_NUMBER = 7;
+    private java.util.List<org.apache.mesos.v1.Protos.NetworkInfo.PortMapping> portMappings_;
+    /**
+     * <code>repeated .mesos.v1.NetworkInfo.PortMapping port_mappings = 7;</code>
+     */
+    public java.util.List<org.apache.mesos.v1.Protos.NetworkInfo.PortMapping> getPortMappingsList() {
+      return portMappings_;
+    }
+    /**
+     * <code>repeated .mesos.v1.NetworkInfo.PortMapping port_mappings = 7;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.v1.Protos.NetworkInfo.PortMappingOrBuilder> 
+        getPortMappingsOrBuilderList() {
+      return portMappings_;
+    }
+    /**
+     * <code>repeated .mesos.v1.NetworkInfo.PortMapping port_mappings = 7;</code>
+     */
+    public int getPortMappingsCount() {
+      return portMappings_.size();
+    }
+    /**
+     * <code>repeated .mesos.v1.NetworkInfo.PortMapping port_mappings = 7;</code>
+     */
+    public org.apache.mesos.v1.Protos.NetworkInfo.PortMapping getPortMappings(int index) {
+      return portMappings_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.v1.NetworkInfo.PortMapping port_mappings = 7;</code>
+     */
+    public org.apache.mesos.v1.Protos.NetworkInfo.PortMappingOrBuilder getPortMappingsOrBuilder(
+        int index) {
+      return portMappings_.get(index);
+    }
+
+    private void initFields() {
+      ipAddresses_ = java.util.Collections.emptyList();
+      name_ = "";
+      groups_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+      labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+      portMappings_ = java.util.Collections.emptyList();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (hasLabels()) {
+        if (!getLabels().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      for (int i = 0; i < getPortMappingsCount(); i++) {
+        if (!getPortMappings(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      for (int i = 0; i < groups_.size(); i++) {
+        output.writeBytes(3, groups_.getByteString(i));
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(4, labels_);
+      }
+      for (int i = 0; i < ipAddresses_.size(); i++) {
+        output.writeMessage(5, ipAddresses_.get(i));
+      }
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(6, getNameBytes());
+      }
+      for (int i = 0; i < portMappings_.size(); i++) {
+        output.writeMessage(7, portMappings_.get(i));
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      {
+        int dataSize = 0;
+        for (int i = 0; i < groups_.size(); i++) {
+          dataSize += com.google.protobuf.CodedOutputStream
+            .computeBytesSizeNoTag(groups_.getByteString(i));
+        }
+        size += dataSize;
+        size += 1 * getGroupsList().size();
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, labels_);
+      }
+      for (int i = 0; i < ipAddresses_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(5, ipAddresses_.get(i));
+      }
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(6, getNameBytes());
+      }
+      for (int i = 0; i < portMappings_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(7, portMappings_.get(i));
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.NetworkInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.NetworkInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.NetworkInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.NetworkInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.NetworkInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.NetworkInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.NetworkInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.NetworkInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.NetworkInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.NetworkInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.NetworkInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.NetworkInfo}
+     *
+     * <pre>
+     **
+     * Describes a network request from a framework as well as network resolution
+     * provided by Mesos.
+     *
+     * A framework may request the network isolator on the Agent to isolate the
+     * container in a network namespace and create a virtual network interface.
+     * The `NetworkInfo` message describes the properties of that virtual
+     * interface, including the IP addresses and network isolation policy
+     * (network group membership).
+     *
+     * The NetworkInfo message is not interpreted by the Master or Agent and is
+     * intended to be used by Agent and Master modules implementing network
+     * isolation. If the modules are missing, the message is simply ignored. In
+     * future, the task launch will fail if there is no module providing the
+     * network isolation capabilities (MESOS-3390).
+     *
+     * An executor, Agent, or an Agent module may append NetworkInfos inside
+     * TaskStatus::container_status to provide information such as the container IP
+     * address and isolation groups.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.NetworkInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_NetworkInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_NetworkInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.NetworkInfo.class, org.apache.mesos.v1.Protos.NetworkInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.NetworkInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getIpAddressesFieldBuilder();
+          getLabelsFieldBuilder();
+          getPortMappingsFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (ipAddressesBuilder_ == null) {
+          ipAddresses_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+        } else {
+          ipAddressesBuilder_.clear();
+        }
+        name_ = "";
+        bitField0_ = (bitField0_ & ~0x00000002);
+        groups_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        if (labelsBuilder_ == null) {
+          labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+        } else {
+          labelsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        if (portMappingsBuilder_ == null) {
+          portMappings_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000010);
+        } else {
+          portMappingsBuilder_.clear();
+        }
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_NetworkInfo_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.NetworkInfo getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.NetworkInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.NetworkInfo build() {
+        org.apache.mesos.v1.Protos.NetworkInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.NetworkInfo buildPartial() {
+        org.apache.mesos.v1.Protos.NetworkInfo result = new org.apache.mesos.v1.Protos.NetworkInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (ipAddressesBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            ipAddresses_ = java.util.Collections.unmodifiableList(ipAddresses_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.ipAddresses_ = ipAddresses_;
+        } else {
+          result.ipAddresses_ = ipAddressesBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.name_ = name_;
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          groups_ = new com.google.protobuf.UnmodifiableLazyStringList(
+              groups_);
+          bitField0_ = (bitField0_ & ~0x00000004);
+        }
+        result.groups_ = groups_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (labelsBuilder_ == null) {
+          result.labels_ = labels_;
+        } else {
+          result.labels_ = labelsBuilder_.build();
+        }
+        if (portMappingsBuilder_ == null) {
+          if (((bitField0_ & 0x00000010) == 0x00000010)) {
+            portMappings_ = java.util.Collections.unmodifiableList(portMappings_);
+            bitField0_ = (bitField0_ & ~0x00000010);
+          }
+          result.portMappings_ = portMappings_;
+        } else {
+          result.portMappings_ = portMappingsBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.NetworkInfo) {
+          return mergeFrom((org.apache.mesos.v1.Protos.NetworkInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.NetworkInfo other) {
+        if (other == org.apache.mesos.v1.Protos.NetworkInfo.getDefaultInstance()) return this;
+        if (ipAddressesBuilder_ == null) {
+          if (!other.ipAddresses_.isEmpty()) {
+            if (ipAddresses_.isEmpty()) {
+              ipAddresses_ = other.ipAddresses_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureIpAddressesIsMutable();
+              ipAddresses_.addAll(other.ipAddresses_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.ipAddresses_.isEmpty()) {
+            if (ipAddressesBuilder_.isEmpty()) {
+              ipAddressesBuilder_.dispose();
+              ipAddressesBuilder_ = null;
+              ipAddresses_ = other.ipAddresses_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              ipAddressesBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getIpAddressesFieldBuilder() : null;
+            } else {
+              ipAddressesBuilder_.addAllMessages(other.ipAddresses_);
+            }
+          }
+        }
+        if (other.hasName()) {
+          bitField0_ |= 0x00000002;
+          name_ = other.name_;
+          onChanged();
+        }
+        if (!other.groups_.isEmpty()) {
+          if (groups_.isEmpty()) {
+            groups_ = other.groups_;
+            bitField0_ = (bitField0_ & ~0x00000004);
+          } else {
+            ensureGroupsIsMutable();
+            groups_.addAll(other.groups_);
+          }
+          onChanged();
+        }
+        if (other.hasLabels()) {
+          mergeLabels(other.getLabels());
+        }
+        if (portMappingsBuilder_ == null) {
+          if (!other.portMappings_.isEmpty()) {
+            if (portMappings_.isEmpty()) {
+              portMappings_ = other.portMappings_;
+              bitField0_ = (bitField0_ & ~0x00000010);
+            } else {
+              ensurePortMappingsIsMutable();
+              portMappings_.addAll(other.portMappings_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.portMappings_.isEmpty()) {
+            if (portMappingsBuilder_.isEmpty()) {
+              portMappingsBuilder_.dispose();
+              portMappingsBuilder_ = null;
+              portMappings_ = other.portMappings_;
+              bitField0_ = (bitField0_ & ~0x00000010);
+              portMappingsBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getPortMappingsFieldBuilder() : null;
+            } else {
+              portMappingsBuilder_.addAllMessages(other.portMappings_);
+            }
+          }
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (hasLabels()) {
+          if (!getLabels().isInitialized()) {
+            
+            return false;
+          }
+        }
+        for (int i = 0; i < getPortMappingsCount(); i++) {
+          if (!getPortMappings(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.NetworkInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.NetworkInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // repeated .mesos.v1.NetworkInfo.IPAddress ip_addresses = 5;
+      private java.util.List<org.apache.mesos.v1.Protos.NetworkInfo.IPAddress> ipAddresses_ =
+        java.util.Collections.emptyList();
+      private void ensureIpAddressesIsMutable() {
+        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+          ipAddresses_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.NetworkInfo.IPAddress>(ipAddresses_);
+          bitField0_ |= 0x00000001;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.NetworkInfo.IPAddress, org.apache.mesos.v1.Protos.NetworkInfo.IPAddress.Builder, org.apache.mesos.v1.Protos.NetworkInfo.IPAddressOrBuilder> ipAddressesBuilder_;
+
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo.IPAddress ip_addresses = 5;</code>
+       *
+       * <pre>
+       * When included in a ContainerInfo, each of these represent a
+       * request for an IP address. Each request can specify an explicit address
+       * or the IP protocol to use.
+       *
+       * When included in a TaskStatus message, these inform the framework
+       * scheduler about the IP addresses that are bound to the container
+       * interface. When there are no custom network isolator modules installed,
+       * this field is filled in automatically with the Agent IP address.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.NetworkInfo.IPAddress> getIpAddressesList() {
+        if (ipAddressesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(ipAddresses_);
+        } else {
+          return ipAddressesBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo.IPAddress ip_addresses = 5;</code>
+       *
+       * <pre>
+       * When included in a ContainerInfo, each of these represent a
+       * request for an IP address. Each request can specify an explicit address
+       * or the IP protocol to use.
+       *
+       * When included in a TaskStatus message, these inform the framework
+       * scheduler about the IP addresses that are bound to the container
+       * interface. When there are no custom network isolator modules installed,
+       * this field is filled in automatically with the Agent IP address.
+       * </pre>
+       */
+      public int getIpAddressesCount() {
+        if (ipAddressesBuilder_ == null) {
+          return ipAddresses_.size();
+        } else {
+          return ipAddressesBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo.IPAddress ip_addresses = 5;</code>
+       *
+       * <pre>
+       * When included in a ContainerInfo, each of these represent a
+       * request for an IP address. Each request can specify an explicit address
+       * or the IP protocol to use.
+       *
+       * When included in a TaskStatus message, these inform the framework
+       * scheduler about the IP addresses that are bound to the container
+       * interface. When there are no custom network isolator modules installed,
+       * this field is filled in automatically with the Agent IP address.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.NetworkInfo.IPAddress getIpAddresses(int index) {
+        if (ipAddressesBuilder_ == null) {
+          return ipAddresses_.get(index);
+        } else {
+          return ipAddressesBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo.IPAddress ip_addresses = 5;</code>
+       *
+       * <pre>
+       * When included in a ContainerInfo, each of these represent a
+       * request for an IP address. Each request can specify an explicit address
+       * or the IP protocol to use.
+       *
+       * When included in a TaskStatus message, these inform the framework
+       * scheduler about the IP addresses that are bound to the container
+       * interface. When there are no custom network isolator modules installed,
+       * this field is filled in automatically with the Agent IP address.
+       * </pre>
+       */
+      public Builder setIpAddresses(
+          int index, org.apache.mesos.v1.Protos.NetworkInfo.IPAddress value) {
+        if (ipAddressesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureIpAddressesIsMutable();
+          ipAddresses_.set(index, value);
+          onChanged();
+        } else {
+          ipAddressesBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo.IPAddress ip_addresses = 5;</code>
+       *
+       * <pre>
+       * When included in a ContainerInfo, each of these represent a
+       * request for an IP address. Each request can specify an explicit address
+       * or the IP protocol to use.
+       *
+       * When included in a TaskStatus message, these inform the framework
+       * scheduler about the IP addresses that are bound to the container
+       * interface. When there are no custom network isolator modules installed,
+       * this field is filled in automatically with the Agent IP address.
+       * </pre>
+       */
+      public Builder setIpAddresses(
+          int index, org.apache.mesos.v1.Protos.NetworkInfo.IPAddress.Builder builderForValue) {
+        if (ipAddressesBuilder_ == null) {
+          ensureIpAddressesIsMutable();
+          ipAddresses_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          ipAddressesBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo.IPAddress ip_addresses = 5;</code>
+       *
+       * <pre>
+       * When included in a ContainerInfo, each of these represent a
+       * request for an IP address. Each request can specify an explicit address
+       * or the IP protocol to use.
+       *
+       * When included in a TaskStatus message, these inform the framework
+       * scheduler about the IP addresses that are bound to the container
+       * interface. When there are no custom network isolator modules installed,
+       * this field is filled in automatically with the Agent IP address.
+       * </pre>
+       */
+      public Builder addIpAddresses(org.apache.mesos.v1.Protos.NetworkInfo.IPAddress value) {
+        if (ipAddressesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureIpAddressesIsMutable();
+          ipAddresses_.add(value);
+          onChanged();
+        } else {
+          ipAddressesBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo.IPAddress ip_addresses = 5;</code>
+       *
+       * <pre>
+       * When included in a ContainerInfo, each of these represent a
+       * request for an IP address. Each request can specify an explicit address
+       * or the IP protocol to use.
+       *
+       * When included in a TaskStatus message, these inform the framework
+       * scheduler about the IP addresses that are bound to the container
+       * interface. When there are no custom network isolator modules installed,
+       * this field is filled in automatically with the Agent IP address.
+       * </pre>
+       */
+      public Builder addIpAddresses(
+          int index, org.apache.mesos.v1.Protos.NetworkInfo.IPAddress value) {
+        if (ipAddressesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureIpAddressesIsMutable();
+          ipAddresses_.add(index, value);
+          onChanged();
+        } else {
+          ipAddressesBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo.IPAddress ip_addresses = 5;</code>
+       *
+       * <pre>
+       * When included in a ContainerInfo, each of these represent a
+       * request for an IP address. Each request can specify an explicit address
+       * or the IP protocol to use.
+       *
+       * When included in a TaskStatus message, these inform the framework
+       * scheduler about the IP addresses that are bound to the container
+       * interface. When there are no custom network isolator modules installed,
+       * this field is filled in automatically with the Agent IP address.
+       * </pre>
+       */
+      public Builder addIpAddresses(
+          org.apache.mesos.v1.Protos.NetworkInfo.IPAddress.Builder builderForValue) {
+        if (ipAddressesBuilder_ == null) {
+          ensureIpAddressesIsMutable();
+          ipAddresses_.add(builderForValue.build());
+          onChanged();
+        } else {
+          ipAddressesBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo.IPAddress ip_addresses = 5;</code>
+       *
+       * <pre>
+       * When included in a ContainerInfo, each of these represent a
+       * request for an IP address. Each request can specify an explicit address
+       * or the IP protocol to use.
+       *
+       * When included in a TaskStatus message, these inform the framework
+       * scheduler about the IP addresses that are bound to the container
+       * interface. When there are no custom network isolator modules installed,
+       * this field is filled in automatically with the Agent IP address.
+       * </pre>
+       */
+      public Builder addIpAddresses(
+          int index, org.apache.mesos.v1.Protos.NetworkInfo.IPAddress.Builder builderForValue) {
+        if (ipAddressesBuilder_ == null) {
+          ensureIpAddressesIsMutable();
+          ipAddresses_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          ipAddressesBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo.IPAddress ip_addresses = 5;</code>
+       *
+       * <pre>
+       * When included in a ContainerInfo, each of these represent a
+       * request for an IP address. Each request can specify an explicit address
+       * or the IP protocol to use.
+       *
+       * When included in a TaskStatus message, these inform the framework
+       * scheduler about the IP addresses that are bound to the container
+       * interface. When there are no custom network isolator modules installed,
+       * this field is filled in automatically with the Agent IP address.
+       * </pre>
+       */
+      public Builder addAllIpAddresses(
+          java.lang.Iterable<? extends org.apache.mesos.v1.Protos.NetworkInfo.IPAddress> values) {
+        if (ipAddressesBuilder_ == null) {
+          ensureIpAddressesIsMutable();
+          super.addAll(values, ipAddresses_);
+          onChanged();
+        } else {
+          ipAddressesBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo.IPAddress ip_addresses = 5;</code>
+       *
+       * <pre>
+       * When included in a ContainerInfo, each of these represent a
+       * request for an IP address. Each request can specify an explicit address
+       * or the IP protocol to use.
+       *
+       * When included in a TaskStatus message, these inform the framework
+       * scheduler about the IP addresses that are bound to the container
+       * interface. When there are no custom network isolator modules installed,
+       * this field is filled in automatically with the Agent IP address.
+       * </pre>
+       */
+      public Builder clearIpAddresses() {
+        if (ipAddressesBuilder_ == null) {
+          ipAddresses_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+        } else {
+          ipAddressesBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo.IPAddress ip_addresses = 5;</code>
+       *
+       * <pre>
+       * When included in a ContainerInfo, each of these represent a
+       * request for an IP address. Each request can specify an explicit address
+       * or the IP protocol to use.
+       *
+       * When included in a TaskStatus message, these inform the framework
+       * scheduler about the IP addresses that are bound to the container
+       * interface. When there are no custom network isolator modules installed,
+       * this field is filled in automatically with the Agent IP address.
+       * </pre>
+       */
+      public Builder removeIpAddresses(int index) {
+        if (ipAddressesBuilder_ == null) {
+          ensureIpAddressesIsMutable();
+          ipAddresses_.remove(index);
+          onChanged();
+        } else {
+          ipAddressesBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo.IPAddress ip_addresses = 5;</code>
+       *
+       * <pre>
+       * When included in a ContainerInfo, each of these represent a
+       * request for an IP address. Each request can specify an explicit address
+       * or the IP protocol to use.
+       *
+       * When included in a TaskStatus message, these inform the framework
+       * scheduler about the IP addresses that are bound to the container
+       * interface. When there are no custom network isolator modules installed,
+       * this field is filled in automatically with the Agent IP address.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.NetworkInfo.IPAddress.Builder getIpAddressesBuilder(
+          int index) {
+        return getIpAddressesFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo.IPAddress ip_addresses = 5;</code>
+       *
+       * <pre>
+       * When included in a ContainerInfo, each of these represent a
+       * request for an IP address. Each request can specify an explicit address
+       * or the IP protocol to use.
+       *
+       * When included in a TaskStatus message, these inform the framework
+       * scheduler about the IP addresses that are bound to the container
+       * interface. When there are no custom network isolator modules installed,
+       * this field is filled in automatically with the Agent IP address.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.NetworkInfo.IPAddressOrBuilder getIpAddressesOrBuilder(
+          int index) {
+        if (ipAddressesBuilder_ == null) {
+          return ipAddresses_.get(index);  } else {
+          return ipAddressesBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo.IPAddress ip_addresses = 5;</code>
+       *
+       * <pre>
+       * When included in a ContainerInfo, each of these represent a
+       * request for an IP address. Each request can specify an explicit address
+       * or the IP protocol to use.
+       *
+       * When included in a TaskStatus message, these inform the framework
+       * scheduler about the IP addresses that are bound to the container
+       * interface. When there are no custom network isolator modules installed,
+       * this field is filled in automatically with the Agent IP address.
+       * </pre>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.NetworkInfo.IPAddressOrBuilder> 
+           getIpAddressesOrBuilderList() {
+        if (ipAddressesBuilder_ != null) {
+          return ipAddressesBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(ipAddresses_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo.IPAddress ip_addresses = 5;</code>
+       *
+       * <pre>
+       * When included in a ContainerInfo, each of these represent a
+       * request for an IP address. Each request can specify an explicit address
+       * or the IP protocol to use.
+       *
+       * When included in a TaskStatus message, these inform the framework
+       * scheduler about the IP addresses that are bound to the container
+       * interface. When there are no custom network isolator modules installed,
+       * this field is filled in automatically with the Agent IP address.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.NetworkInfo.IPAddress.Builder addIpAddressesBuilder() {
+        return getIpAddressesFieldBuilder().addBuilder(
+            org.apache.mesos.v1.Protos.NetworkInfo.IPAddress.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo.IPAddress ip_addresses = 5;</code>
+       *
+       * <pre>
+       * When included in a ContainerInfo, each of these represent a
+       * request for an IP address. Each request can specify an explicit address
+       * or the IP protocol to use.
+       *
+       * When included in a TaskStatus message, these inform the framework
+       * scheduler about the IP addresses that are bound to the container
+       * interface. When there are no custom network isolator modules installed,
+       * this field is filled in automatically with the Agent IP address.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.NetworkInfo.IPAddress.Builder addIpAddressesBuilder(
+          int index) {
+        return getIpAddressesFieldBuilder().addBuilder(
+            index, org.apache.mesos.v1.Protos.NetworkInfo.IPAddress.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo.IPAddress ip_addresses = 5;</code>
+       *
+       * <pre>
+       * When included in a ContainerInfo, each of these represent a
+       * request for an IP address. Each request can specify an explicit address
+       * or the IP protocol to use.
+       *
+       * When included in a TaskStatus message, these inform the framework
+       * scheduler about the IP addresses that are bound to the container
+       * interface. When there are no custom network isolator modules installed,
+       * this field is filled in automatically with the Agent IP address.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.NetworkInfo.IPAddress.Builder> 
+           getIpAddressesBuilderList() {
+        return getIpAddressesFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.NetworkInfo.IPAddress, org.apache.mesos.v1.Protos.NetworkInfo.IPAddress.Builder, org.apache.mesos.v1.Protos.NetworkInfo.IPAddressOrBuilder> 
+          getIpAddressesFieldBuilder() {
+        if (ipAddressesBuilder_ == null) {
+          ipAddressesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.NetworkInfo.IPAddress, org.apache.mesos.v1.Protos.NetworkInfo.IPAddress.Builder, org.apache.mesos.v1.Protos.NetworkInfo.IPAddressOrBuilder>(
+                  ipAddresses_,
+                  ((bitField0_ & 0x00000001) == 0x00000001),
+                  getParentForChildren(),
+                  isClean());
+          ipAddresses_ = null;
+        }
+        return ipAddressesBuilder_;
+      }
+
+      // optional string name = 6;
+      private java.lang.Object name_ = "";
+      /**
+       * <code>optional string name = 6;</code>
+       *
+       * <pre>
+       * Name of the network which will be used by network isolator to determine
+       * the network that the container joins. It's up to the network isolator
+       * to decide how to interpret this field.
+       * </pre>
+       */
+      public boolean hasName() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional string name = 6;</code>
+       *
+       * <pre>
+       * Name of the network which will be used by network isolator to determine
+       * the network that the container joins. It's up to the network isolator
+       * to decide how to interpret this field.
+       * </pre>
+       */
+      public java.lang.String getName() {
+        java.lang.Object ref = name_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          name_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string name = 6;</code>
+       *
+       * <pre>
+       * Name of the network which will be used by network isolator to determine
+       * the network that the container joins. It's up to the network isolator
+       * to decide how to interpret this field.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        java.lang.Object ref = name_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          name_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string name = 6;</code>
+       *
+       * <pre>
+       * Name of the network which will be used by network isolator to determine
+       * the network that the container joins. It's up to the network isolator
+       * to decide how to interpret this field.
+       * </pre>
+       */
+      public Builder setName(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string name = 6;</code>
+       *
+       * <pre>
+       * Name of the network which will be used by network isolator to determine
+       * the network that the container joins. It's up to the network isolator
+       * to decide how to interpret this field.
+       * </pre>
+       */
+      public Builder clearName() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        name_ = getDefaultInstance().getName();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string name = 6;</code>
+       *
+       * <pre>
+       * Name of the network which will be used by network isolator to determine
+       * the network that the container joins. It's up to the network isolator
+       * to decide how to interpret this field.
+       * </pre>
+       */
+      public Builder setNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+
+      // repeated string groups = 3;
+      private com.google.protobuf.LazyStringList groups_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+      private void ensureGroupsIsMutable() {
+        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
+          groups_ = new com.google.protobuf.LazyStringArrayList(groups_);
+          bitField0_ |= 0x00000004;
+         }
+      }
+      /**
+       * <code>repeated string groups = 3;</code>
+       *
+       * <pre>
+       * A group is the name given to a set of logically-related interfaces that
+       * are allowed to communicate among themselves. Network traffic is allowed
+       * between two container interfaces that share at least one network group.
+       * For example, one might want to create separate groups for isolating dev,
+       * testing, qa and prod deployment environments.
+       * </pre>
+       */
+      public java.util.List<java.lang.String>
+          getGroupsList() {
+        return java.util.Collections.unmodifiableList(groups_);
+      }
+      /**
+       * <code>repeated string groups = 3;</code>
+       *
+       * <pre>
+       * A group is the name given to a set of logically-related interfaces that
+       * are allowed to communicate among themselves. Network traffic is allowed
+       * between two container interfaces that share at least one network group.
+       * For example, one might want to create separate groups for isolating dev,
+       * testing, qa and prod deployment environments.
+       * </pre>
+       */
+      public int getGroupsCount() {
+        return groups_.size();
+      }
+      /**
+       * <code>repeated string groups = 3;</code>
+       *
+       * <pre>
+       * A group is the name given to a set of logically-related interfaces that
+       * are allowed to communicate among themselves. Network traffic is allowed
+       * between two container interfaces that share at least one network group.
+       * For example, one might want to create separate groups for isolating dev,
+       * testing, qa and prod deployment environments.
+       * </pre>
+       */
+      public java.lang.String getGroups(int index) {
+        return groups_.get(index);
+      }
+      /**
+       * <code>repeated string groups = 3;</code>
+       *
+       * <pre>
+       * A group is the name given to a set of logically-related interfaces that
+       * are allowed to communicate among themselves. Network traffic is allowed
+       * between two container interfaces that share at least one network group.
+       * For example, one might want to create separate groups for isolating dev,
+       * testing, qa and prod deployment environments.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getGroupsBytes(int index) {
+        return groups_.getByteString(index);
+      }
+      /**
+       * <code>repeated string groups = 3;</code>
+       *
+       * <pre>
+       * A group is the name given to a set of logically-related interfaces that
+       * are allowed to communicate among themselves. Network traffic is allowed
+       * between two container interfaces that share at least one network group.
+       * For example, one might want to create separate groups for isolating dev,
+       * testing, qa and prod deployment environments.
+       * </pre>
+       */
+      public Builder setGroups(
+          int index, java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureGroupsIsMutable();
+        groups_.set(index, value);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated string groups = 3;</code>
+       *
+       * <pre>
+       * A group is the name given to a set of logically-related interfaces that
+       * are allowed to communicate among themselves. Network traffic is allowed
+       * between two container interfaces that share at least one network group.
+       * For example, one might want to create separate groups for isolating dev,
+       * testing, qa and prod deployment environments.
+       * </pre>
+       */
+      public Builder addGroups(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureGroupsIsMutable();
+        groups_.add(value);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated string groups = 3;</code>
+       *
+       * <pre>
+       * A group is the name given to a set of logically-related interfaces that
+       * are allowed to communicate among themselves. Network traffic is allowed
+       * between two container interfaces that share at least one network group.
+       * For example, one might want to create separate groups for isolating dev,
+       * testing, qa and prod deployment environments.
+       * </pre>
+       */
+      public Builder addAllGroups(
+          java.lang.Iterable<java.lang.String> values) {
+        ensureGroupsIsMutable();
+        super.addAll(values, groups_);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated string groups = 3;</code>
+       *
+       * <pre>
+       * A group is the name given to a set of logically-related interfaces that
+       * are allowed to communicate among themselves. Network traffic is allowed
+       * between two container interfaces that share at least one network group.
+       * For example, one might want to create separate groups for isolating dev,
+       * testing, qa and prod deployment environments.
+       * </pre>
+       */
+      public Builder clearGroups() {
+        groups_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated string groups = 3;</code>
+       *
+       * <pre>
+       * A group is the name given to a set of logically-related interfaces that
+       * are allowed to communicate among themselves. Network traffic is allowed
+       * between two container interfaces that share at least one network group.
+       * For example, one might want to create separate groups for isolating dev,
+       * testing, qa and prod deployment environments.
+       * </pre>
+       */
+      public Builder addGroupsBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureGroupsIsMutable();
+        groups_.add(value);
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.v1.Labels labels = 4;
+      private org.apache.mesos.v1.Protos.Labels labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Labels, org.apache.mesos.v1.Protos.Labels.Builder, org.apache.mesos.v1.Protos.LabelsOrBuilder> labelsBuilder_;
+      /**
+       * <code>optional .mesos.v1.Labels labels = 4;</code>
+       *
+       * <pre>
+       * To tag certain metadata to be used by Isolator/IPAM, e.g., rack, etc.
+       * </pre>
+       */
+      public boolean hasLabels() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 4;</code>
+       *
+       * <pre>
+       * To tag certain metadata to be used by Isolator/IPAM, e.g., rack, etc.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Labels getLabels() {
+        if (labelsBuilder_ == null) {
+          return labels_;
+        } else {
+          return labelsBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 4;</code>
+       *
+       * <pre>
+       * To tag certain metadata to be used by Isolator/IPAM, e.g., rack, etc.
+       * </pre>
+       */
+      public Builder setLabels(org.apache.mesos.v1.Protos.Labels value) {
+        if (labelsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          labels_ = value;
+          onChanged();
+        } else {
+          labelsBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 4;</code>
+       *
+       * <pre>
+       * To tag certain metadata to be used by Isolator/IPAM, e.g., rack, etc.
+       * </pre>
+       */
+      public Builder setLabels(
+          org.apache.mesos.v1.Protos.Labels.Builder builderForValue) {
+        if (labelsBuilder_ == null) {
+          labels_ = builderForValue.build();
+          onChanged();
+        } else {
+          labelsBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 4;</code>
+       *
+       * <pre>
+       * To tag certain metadata to be used by Isolator/IPAM, e.g., rack, etc.
+       * </pre>
+       */
+      public Builder mergeLabels(org.apache.mesos.v1.Protos.Labels value) {
+        if (labelsBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008) &&
+              labels_ != org.apache.mesos.v1.Protos.Labels.getDefaultInstance()) {
+            labels_ =
+              org.apache.mesos.v1.Protos.Labels.newBuilder(labels_).mergeFrom(value).buildPartial();
+          } else {
+            labels_ = value;
+          }
+          onChanged();
+        } else {
+          labelsBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 4;</code>
+       *
+       * <pre>
+       * To tag certain metadata to be used by Isolator/IPAM, e.g., rack, etc.
+       * </pre>
+       */
+      public Builder clearLabels() {
+        if (labelsBuilder_ == null) {
+          labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+          onChanged();
+        } else {
+          labelsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 4;</code>
+       *
+       * <pre>
+       * To tag certain metadata to be used by Isolator/IPAM, e.g., rack, etc.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Labels.Builder getLabelsBuilder() {
+        bitField0_ |= 0x00000008;
+        onChanged();
+        return getLabelsFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 4;</code>
+       *
+       * <pre>
+       * To tag certain metadata to be used by Isolator/IPAM, e.g., rack, etc.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+        if (labelsBuilder_ != null) {
+          return labelsBuilder_.getMessageOrBuilder();
+        } else {
+          return labels_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 4;</code>
+       *
+       * <pre>
+       * To tag certain metadata to be used by Isolator/IPAM, e.g., rack, etc.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Labels, org.apache.mesos.v1.Protos.Labels.Builder, org.apache.mesos.v1.Protos.LabelsOrBuilder> 
+          getLabelsFieldBuilder() {
+        if (labelsBuilder_ == null) {
+          labelsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Labels, org.apache.mesos.v1.Protos.Labels.Builder, org.apache.mesos.v1.Protos.LabelsOrBuilder>(
+                  labels_,
+                  getParentForChildren(),
+                  isClean());
+          labels_ = null;
+        }
+        return labelsBuilder_;
+      }
+
+      // repeated .mesos.v1.NetworkInfo.PortMapping port_mappings = 7;
+      private java.util.List<org.apache.mesos.v1.Protos.NetworkInfo.PortMapping> portMappings_ =
+        java.util.Collections.emptyList();
+      private void ensurePortMappingsIsMutable() {
+        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
+          portMappings_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.NetworkInfo.PortMapping>(portMappings_);
+          bitField0_ |= 0x00000010;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.NetworkInfo.PortMapping, org.apache.mesos.v1.Protos.NetworkInfo.PortMapping.Builder, org.apache.mesos.v1.Protos.NetworkInfo.PortMappingOrBuilder> portMappingsBuilder_;
+
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo.PortMapping port_mappings = 7;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.NetworkInfo.PortMapping> getPortMappingsList() {
+        if (portMappingsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(portMappings_);
+        } else {
+          return portMappingsBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo.PortMapping port_mappings = 7;</code>
+       */
+      public int getPortMappingsCount() {
+        if (portMappingsBuilder_ == null) {
+          return portMappings_.size();
+        } else {
+          return portMappingsBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo.PortMapping port_mappings = 7;</code>
+       */
+      public org.apache.mesos.v1.Protos.NetworkInfo.PortMapping getPortMappings(int index) {
+        if (portMappingsBuilder_ == null) {
+          return portMappings_.get(index);
+        } else {
+          return portMappingsBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo.PortMapping port_mappings = 7;</code>
+       */
+      public Builder setPortMappings(
+          int index, org.apache.mesos.v1.Protos.NetworkInfo.PortMapping value) {
+        if (portMappingsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensurePortMappingsIsMutable();
+          portMappings_.set(index, value);
+          onChanged();
+        } else {
+          portMappingsBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo.PortMapping port_mappings = 7;</code>
+       */
+      public Builder setPortMappings(
+          int index, org.apache.mesos.v1.Protos.NetworkInfo.PortMapping.Builder builderForValue) {
+        if (portMappingsBuilder_ == null) {
+          ensurePortMappingsIsMutable();
+          portMappings_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          portMappingsBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo.PortMapping port_mappings = 7;</code>
+       */
+      public Builder addPortMappings(org.apache.mesos.v1.Protos.NetworkInfo.PortMapping value) {
+        if (portMappingsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensurePortMappingsIsMutable();
+          portMappings_.add(value);
+          onChanged();
+        } else {
+          portMappingsBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo.PortMapping port_mappings = 7;</code>
+       */
+      public Builder addPortMappings(
+          int index, org.apache.mesos.v1.Protos.NetworkInfo.PortMapping value) {
+        if (portMappingsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensurePortMappingsIsMutable();
+          portMappings_.add(index, value);
+          onChanged();
+        } else {
+          portMappingsBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo.PortMapping port_mappings = 7;</code>
+       */
+      public Builder addPortMappings(
+          org.apache.mesos.v1.Protos.NetworkInfo.PortMapping.Builder builderForValue) {
+        if (portMappingsBuilder_ == null) {
+          ensurePortMappingsIsMutable();
+          portMappings_.add(builderForValue.build());
+          onChanged();
+        } else {
+          portMappingsBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo.PortMapping port_mappings = 7;</code>
+       */
+      public Builder addPortMappings(
+          int index, org.apache.mesos.v1.Protos.NetworkInfo.PortMapping.Builder builderForValue) {
+        if (portMappingsBuilder_ == null) {
+          ensurePortMappingsIsMutable();
+          portMappings_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          portMappingsBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo.PortMapping port_mappings = 7;</code>
+       */
+      public Builder addAllPortMappings(
+          java.lang.Iterable<? extends org.apache.mesos.v1.Protos.NetworkInfo.PortMapping> values) {
+        if (portMappingsBuilder_ == null) {
+          ensurePortMappingsIsMutable();
+          super.addAll(values, portMappings_);
+          onChanged();
+        } else {
+          portMappingsBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo.PortMapping port_mappings = 7;</code>
+       */
+      public Builder clearPortMappings() {
+        if (portMappingsBuilder_ == null) {
+          portMappings_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000010);
+          onChanged();
+        } else {
+          portMappingsBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo.PortMapping port_mappings = 7;</code>
+       */
+      public Builder removePortMappings(int index) {
+        if (portMappingsBuilder_ == null) {
+          ensurePortMappingsIsMutable();
+          portMappings_.remove(index);
+          onChanged();
+        } else {
+          portMappingsBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo.PortMapping port_mappings = 7;</code>
+       */
+      public org.apache.mesos.v1.Protos.NetworkInfo.PortMapping.Builder getPortMappingsBuilder(
+          int index) {
+        return getPortMappingsFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo.PortMapping port_mappings = 7;</code>
+       */
+      public org.apache.mesos.v1.Protos.NetworkInfo.PortMappingOrBuilder getPortMappingsOrBuilder(
+          int index) {
+        if (portMappingsBuilder_ == null) {
+          return portMappings_.get(index);  } else {
+          return portMappingsBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo.PortMapping port_mappings = 7;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.NetworkInfo.PortMappingOrBuilder> 
+           getPortMappingsOrBuilderList() {
+        if (portMappingsBuilder_ != null) {
+          return portMappingsBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(portMappings_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo.PortMapping port_mappings = 7;</code>
+       */
+      public org.apache.mesos.v1.Protos.NetworkInfo.PortMapping.Builder addPortMappingsBuilder() {
+        return getPortMappingsFieldBuilder().addBuilder(
+            org.apache.mesos.v1.Protos.NetworkInfo.PortMapping.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo.PortMapping port_mappings = 7;</code>
+       */
+      public org.apache.mesos.v1.Protos.NetworkInfo.PortMapping.Builder addPortMappingsBuilder(
+          int index) {
+        return getPortMappingsFieldBuilder().addBuilder(
+            index, org.apache.mesos.v1.Protos.NetworkInfo.PortMapping.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo.PortMapping port_mappings = 7;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.NetworkInfo.PortMapping.Builder> 
+           getPortMappingsBuilderList() {
+        return getPortMappingsFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.NetworkInfo.PortMapping, org.apache.mesos.v1.Protos.NetworkInfo.PortMapping.Builder, org.apache.mesos.v1.Protos.NetworkInfo.PortMappingOrBuilder> 
+          getPortMappingsFieldBuilder() {
+        if (portMappingsBuilder_ == null) {
+          portMappingsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.NetworkInfo.PortMapping, org.apache.mesos.v1.Protos.NetworkInfo.PortMapping.Builder, org.apache.mesos.v1.Protos.NetworkInfo.PortMappingOrBuilder>(
+                  portMappings_,
+                  ((bitField0_ & 0x00000010) == 0x00000010),
+                  getParentForChildren(),
+                  isClean());
+          portMappings_ = null;
+        }
+        return portMappingsBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.NetworkInfo)
+    }
+
+    static {
+      defaultInstance = new NetworkInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.NetworkInfo)
+  }
+
+  public interface CapabilityInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // repeated .mesos.v1.CapabilityInfo.Capability capabilities = 1;
+    /**
+     * <code>repeated .mesos.v1.CapabilityInfo.Capability capabilities = 1;</code>
+     */
+    java.util.List<org.apache.mesos.v1.Protos.CapabilityInfo.Capability> getCapabilitiesList();
+    /**
+     * <code>repeated .mesos.v1.CapabilityInfo.Capability capabilities = 1;</code>
+     */
+    int getCapabilitiesCount();
+    /**
+     * <code>repeated .mesos.v1.CapabilityInfo.Capability capabilities = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.CapabilityInfo.Capability getCapabilities(int index);
+  }
+  /**
+   * Protobuf type {@code mesos.v1.CapabilityInfo}
+   *
+   * <pre>
+   **
+   * Encapsulation of `Capabilities` supported by Linux.
+   * Reference: http://linux.die.net/man/7/capabilities.
+   * </pre>
+   */
+  public static final class CapabilityInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements CapabilityInfoOrBuilder {
+    // Use CapabilityInfo.newBuilder() to construct.
+    private CapabilityInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private CapabilityInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final CapabilityInfo defaultInstance;
+    public static CapabilityInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public CapabilityInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private CapabilityInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 8: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.v1.Protos.CapabilityInfo.Capability value = org.apache.mesos.v1.Protos.CapabilityInfo.Capability.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(1, rawValue);
+              } else {
+                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                  capabilities_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.CapabilityInfo.Capability>();
+                  mutable_bitField0_ |= 0x00000001;
+                }
+                capabilities_.add(value);
+              }
+              break;
+            }
+            case 10: {
+              int length = input.readRawVarint32();
+              int oldLimit = input.pushLimit(length);
+              while(input.getBytesUntilLimit() > 0) {
+                int rawValue = input.readEnum();
+                org.apache.mesos.v1.Protos.CapabilityInfo.Capability value = org.apache.mesos.v1.Protos.CapabilityInfo.Capability.valueOf(rawValue);
+                if (value == null) {
+                  unknownFields.mergeVarintField(1, rawValue);
+                } else {
+                  if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                    capabilities_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.CapabilityInfo.Capability>();
+                    mutable_bitField0_ |= 0x00000001;
+                  }
+                  capabilities_.add(value);
+                }
+              }
+              input.popLimit(oldLimit);
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+          capabilities_ = java.util.Collections.unmodifiableList(capabilities_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CapabilityInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CapabilityInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.CapabilityInfo.class, org.apache.mesos.v1.Protos.CapabilityInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<CapabilityInfo> PARSER =
+        new com.google.protobuf.AbstractParser<CapabilityInfo>() {
+      public CapabilityInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new CapabilityInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<CapabilityInfo> getParserForType() {
+      return PARSER;
+    }
+
+    /**
+     * Protobuf enum {@code mesos.v1.CapabilityInfo.Capability}
+     *
+     * <pre>
+     * We start the actual values at an offset(1000) because Protobuf 2
+     * uses the first value as the default one. Separating the default
+     * value from the real first value helps to disambiguate them. This
+     * is especially valuable for backward compatibility.
+     * See: MESOS-4997.
+     * </pre>
+     */
+    public enum Capability
+        implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>UNKNOWN = 0;</code>
+       */
+      UNKNOWN(0, 0),
+      /**
+       * <code>CHOWN = 1000;</code>
+       */
+      CHOWN(1, 1000),
+      /**
+       * <code>DAC_OVERRIDE = 1001;</code>
+       */
+      DAC_OVERRIDE(2, 1001),
+      /**
+       * <code>DAC_READ_SEARCH = 1002;</code>
+       */
+      DAC_READ_SEARCH(3, 1002),
+      /**
+       * <code>FOWNER = 1003;</code>
+       */
+      FOWNER(4, 1003),
+      /**
+       * <code>FSETID = 1004;</code>
+       */
+      FSETID(5, 1004),
+      /**
+       * <code>KILL = 1005;</code>
+       */
+      KILL(6, 1005),
+      /**
+       * <code>SETGID = 1006;</code>
+       */
+      SETGID(7, 1006),
+      /**
+       * <code>SETUID = 1007;</code>
+       */
+      SETUID(8, 1007),
+      /**
+       * <code>SETPCAP = 1008;</code>
+       */
+      SETPCAP(9, 1008),
+      /**
+       * <code>LINUX_IMMUTABLE = 1009;</code>
+       */
+      LINUX_IMMUTABLE(10, 1009),
+      /**
+       * <code>NET_BIND_SERVICE = 1010;</code>
+       */
+      NET_BIND_SERVICE(11, 1010),
+      /**
+       * <code>NET_BROADCAST = 1011;</code>
+       */
+      NET_BROADCAST(12, 1011),
+      /**
+       * <code>NET_ADMIN = 1012;</code>
+       */
+      NET_ADMIN(13, 1012),
+      /**
+       * <code>NET_RAW = 1013;</code>
+       */
+      NET_RAW(14, 1013),
+      /**
+       * <code>IPC_LOCK = 1014;</code>
+       */
+      IPC_LOCK(15, 1014),
+      /**
+       * <code>IPC_OWNER = 1015;</code>
+       */
+      IPC_OWNER(16, 1015),
+      /**
+       * <code>SYS_MODULE = 1016;</code>
+       */
+      SYS_MODULE(17, 1016),
+      /**
+       * <code>SYS_RAWIO = 1017;</code>
+       */
+      SYS_RAWIO(18, 1017),
+      /**
+       * <code>SYS_CHROOT = 1018;</code>
+       */
+      SYS_CHROOT(19, 1018),
+      /**
+       * <code>SYS_PTRACE = 1019;</code>
+       */
+      SYS_PTRACE(20, 1019),
+      /**
+       * <code>SYS_PACCT = 1020;</code>
+       */
+      SYS_PACCT(21, 1020),
+      /**
+       * <code>SYS_ADMIN = 1021;</code>
+       */
+      SYS_ADMIN(22, 1021),
+      /**
+       * <code>SYS_BOOT = 1022;</code>
+       */
+      SYS_BOOT(23, 1022),
+      /**
+       * <code>SYS_NICE = 1023;</code>
+       */
+      SYS_NICE(24, 1023),
+      /**
+       * <code>SYS_RESOURCE = 1024;</code>
+       */
+      SYS_RESOURCE(25, 1024),
+      /**
+       * <code>SYS_TIME = 1025;</code>
+       */
+      SYS_TIME(26, 1025),
+      /**
+       * <code>SYS_TTY_CONFIG = 1026;</code>
+       */
+      SYS_TTY_CONFIG(27, 1026),
+      /**
+       * <code>MKNOD = 1027;</code>
+       */
+      MKNOD(28, 1027),
+      /**
+       * <code>LEASE = 1028;</code>
+       */
+      LEASE(29, 1028),
+      /**
+       * <code>AUDIT_WRITE = 1029;</code>
+       */
+      AUDIT_WRITE(30, 1029),
+      /**
+       * <code>AUDIT_CONTROL = 1030;</code>
+       */
+      AUDIT_CONTROL(31, 1030),
+      /**
+       * <code>SETFCAP = 1031;</code>
+       */
+      SETFCAP(32, 1031),
+      /**
+       * <code>MAC_OVERRIDE = 1032;</code>
+       */
+      MAC_OVERRIDE(33, 1032),
+      /**
+       * <code>MAC_ADMIN = 1033;</code>
+       */
+      MAC_ADMIN(34, 1033),
+      /**
+       * <code>SYSLOG = 1034;</code>
+       */
+      SYSLOG(35, 1034),
+      /**
+       * <code>WAKE_ALARM = 1035;</code>
+       */
+      WAKE_ALARM(36, 1035),
+      /**
+       * <code>BLOCK_SUSPEND = 1036;</code>
+       */
+      BLOCK_SUSPEND(37, 1036),
+      /**
+       * <code>AUDIT_READ = 1037;</code>
+       */
+      AUDIT_READ(38, 1037),
+      ;
+
+      /**
+       * <code>UNKNOWN = 0;</code>
+       */
+      public static final int UNKNOWN_VALUE = 0;
+      /**
+       * <code>CHOWN = 1000;</code>
+       */
+      public static final int CHOWN_VALUE = 1000;
+      /**
+       * <code>DAC_OVERRIDE = 1001;</code>
+       */
+      public static final int DAC_OVERRIDE_VALUE = 1001;
+      /**
+       * <code>DAC_READ_SEARCH = 1002;</code>
+       */
+      public static final int DAC_READ_SEARCH_VALUE = 1002;
+      /**
+       * <code>FOWNER = 1003;</code>
+       */
+      public static final int FOWNER_VALUE = 1003;
+      /**
+       * <code>FSETID = 1004;</code>
+       */
+      public static final int FSETID_VALUE = 1004;
+      /**
+       * <code>KILL = 1005;</code>
+       */
+      public static final int KILL_VALUE = 1005;
+      /**
+       * <code>SETGID = 1006;</code>
+       */
+      public static final int SETGID_VALUE = 1006;
+      /**
+       * <code>SETUID = 1007;</code>
+       */
+      public static final int SETUID_VALUE = 1007;
+      /**
+       * <code>SETPCAP = 1008;</code>
+       */
+      public static final int SETPCAP_VALUE = 1008;
+      /**
+       * <code>LINUX_IMMUTABLE = 1009;</code>
+       */
+      public static final int LINUX_IMMUTABLE_VALUE = 1009;
+      /**
+       * <code>NET_BIND_SERVICE = 1010;</code>
+       */
+      public static final int NET_BIND_SERVICE_VALUE = 1010;
+      /**
+       * <code>NET_BROADCAST = 1011;</code>
+       */
+      public static final int NET_BROADCAST_VALUE = 1011;
+      /**
+       * <code>NET_ADMIN = 1012;</code>
+       */
+      public static final int NET_ADMIN_VALUE = 1012;
+      /**
+       * <code>NET_RAW = 1013;</code>
+       */
+      public static final int NET_RAW_VALUE = 1013;
+      /**
+       * <code>IPC_LOCK = 1014;</code>
+       */
+      public static final int IPC_LOCK_VALUE = 1014;
+      /**
+       * <code>IPC_OWNER = 1015;</code>
+       */
+      public static final int IPC_OWNER_VALUE = 1015;
+      /**
+       * <code>SYS_MODULE = 1016;</code>
+       */
+      public static final int SYS_MODULE_VALUE = 1016;
+      /**
+       * <code>SYS_RAWIO = 1017;</code>
+       */
+      public static final int SYS_RAWIO_VALUE = 1017;
+      /**
+       * <code>SYS_CHROOT = 1018;</code>
+       */
+      public static final int SYS_CHROOT_VALUE = 1018;
+      /**
+       * <code>SYS_PTRACE = 1019;</code>
+       */
+      public static final int SYS_PTRACE_VALUE = 1019;
+      /**
+       * <code>SYS_PACCT = 1020;</code>
+       */
+      public static final int SYS_PACCT_VALUE = 1020;
+      /**
+       * <code>SYS_ADMIN = 1021;</code>
+       */
+      public static final int SYS_ADMIN_VALUE = 1021;
+      /**
+       * <code>SYS_BOOT = 1022;</code>
+       */
+      public static final int SYS_BOOT_VALUE = 1022;
+      /**
+       * <code>SYS_NICE = 1023;</code>
+       */
+      public static final int SYS_NICE_VALUE = 1023;
+      /**
+       * <code>SYS_RESOURCE = 1024;</code>
+       */
+      public static final int SYS_RESOURCE_VALUE = 1024;
+      /**
+       * <code>SYS_TIME = 1025;</code>
+       */
+      public static final int SYS_TIME_VALUE = 1025;
+      /**
+       * <code>SYS_TTY_CONFIG = 1026;</code>
+       */
+      public static final int SYS_TTY_CONFIG_VALUE = 1026;
+      /**
+       * <code>MKNOD = 1027;</code>
+       */
+      public static final int MKNOD_VALUE = 1027;
+      /**
+       * <code>LEASE = 1028;</code>
+       */
+      public static final int LEASE_VALUE = 1028;
+      /**
+       * <code>AUDIT_WRITE = 1029;</code>
+       */
+      public static final int AUDIT_WRITE_VALUE = 1029;
+      /**
+       * <code>AUDIT_CONTROL = 1030;</code>
+       */
+      public static final int AUDIT_CONTROL_VALUE = 1030;
+      /**
+       * <code>SETFCAP = 1031;</code>
+       */
+      public static final int SETFCAP_VALUE = 1031;
+      /**
+       * <code>MAC_OVERRIDE = 1032;</code>
+       */
+      public static final int MAC_OVERRIDE_VALUE = 1032;
+      /**
+       * <code>MAC_ADMIN = 1033;</code>
+       */
+      public static final int MAC_ADMIN_VALUE = 1033;
+      /**
+       * <code>SYSLOG = 1034;</code>
+       */
+      public static final int SYSLOG_VALUE = 1034;
+      /**
+       * <code>WAKE_ALARM = 1035;</code>
+       */
+      public static final int WAKE_ALARM_VALUE = 1035;
+      /**
+       * <code>BLOCK_SUSPEND = 1036;</code>
+       */
+      public static final int BLOCK_SUSPEND_VALUE = 1036;
+      /**
+       * <code>AUDIT_READ = 1037;</code>
+       */
+      public static final int AUDIT_READ_VALUE = 1037;
+
+
+      public final int getNumber() { return value; }
+
+      public static Capability valueOf(int value) {
+        switch (value) {
+          case 0: return UNKNOWN;
+          case 1000: return CHOWN;
+          case 1001: return DAC_OVERRIDE;
+          case 1002: return DAC_READ_SEARCH;
+          case 1003: return FOWNER;
+          case 1004: return FSETID;
+          case 1005: return KILL;
+          case 1006: return SETGID;
+          case 1007: return SETUID;
+          case 1008: return SETPCAP;
+          case 1009: return LINUX_IMMUTABLE;
+          case 1010: return NET_BIND_SERVICE;
+          case 1011: return NET_BROADCAST;
+          case 1012: return NET_ADMIN;
+          case 1013: return NET_RAW;
+          case 1014: return IPC_LOCK;
+          case 1015: return IPC_OWNER;
+          case 1016: return SYS_MODULE;
+          case 1017: return SYS_RAWIO;
+          case 1018: return SYS_CHROOT;
+          case 1019: return SYS_PTRACE;
+          case 1020: return SYS_PACCT;
+          case 1021: return SYS_ADMIN;
+          case 1022: return SYS_BOOT;
+          case 1023: return SYS_NICE;
+          case 1024: return SYS_RESOURCE;
+          case 1025: return SYS_TIME;
+          case 1026: return SYS_TTY_CONFIG;
+          case 1027: return MKNOD;
+          case 1028: return LEASE;
+          case 1029: return AUDIT_WRITE;
+          case 1030: return AUDIT_CONTROL;
+          case 1031: return SETFCAP;
+          case 1032: return MAC_OVERRIDE;
+          case 1033: return MAC_ADMIN;
+          case 1034: return SYSLOG;
+          case 1035: return WAKE_ALARM;
+          case 1036: return BLOCK_SUSPEND;
+          case 1037: return AUDIT_READ;
+          default: return null;
+        }
+      }
+
+      public static com.google.protobuf.Internal.EnumLiteMap<Capability>
+          internalGetValueMap() {
+        return internalValueMap;
+      }
+      private static com.google.protobuf.Internal.EnumLiteMap<Capability>
+          internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap<Capability>() {
+              public Capability findValueByNumber(int number) {
+                return Capability.valueOf(number);
+              }
+            };
+
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
+          getValueDescriptor() {
+        return getDescriptor().getValues().get(index);
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptorForType() {
+        return getDescriptor();
+      }
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.CapabilityInfo.getDescriptor().getEnumTypes().get(0);
+      }
+
+      private static final Capability[] VALUES = values();
+
+      public static Capability valueOf(
+          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+        if (desc.getType() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "EnumValueDescriptor is not for this type.");
+        }
+        return VALUES[desc.getIndex()];
+      }
+
+      private final int index;
+      private final int value;
+
+      private Capability(int index, int value) {
+        this.index = index;
+        this.value = value;
+      }
+
+      // @@protoc_insertion_point(enum_scope:mesos.v1.CapabilityInfo.Capability)
+    }
+
+    // repeated .mesos.v1.CapabilityInfo.Capability capabilities = 1;
+    public static final int CAPABILITIES_FIELD_NUMBER = 1;
+    private java.util.List<org.apache.mesos.v1.Protos.CapabilityInfo.Capability> capabilities_;
+    /**
+     * <code>repeated .mesos.v1.CapabilityInfo.Capability capabilities = 1;</code>
+     */
+    public java.util.List<org.apache.mesos.v1.Protos.CapabilityInfo.Capability> getCapabilitiesList() {
+      return capabilities_;
+    }
+    /**
+     * <code>repeated .mesos.v1.CapabilityInfo.Capability capabilities = 1;</code>
+     */
+    public int getCapabilitiesCount() {
+      return capabilities_.size();
+    }
+    /**
+     * <code>repeated .mesos.v1.CapabilityInfo.Capability capabilities = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.CapabilityInfo.Capability getCapabilities(int index) {
+      return capabilities_.get(index);
+    }
+
+    private void initFields() {
+      capabilities_ = java.util.Collections.emptyList();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      for (int i = 0; i < capabilities_.size(); i++) {
+        output.writeEnum(1, capabilities_.get(i).getNumber());
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      {
+        int dataSize = 0;
+        for (int i = 0; i < capabilities_.size(); i++) {
+          dataSize += com.google.protobuf.CodedOutputStream
+            .computeEnumSizeNoTag(capabilities_.get(i).getNumber());
+        }
+        size += dataSize;
+        size += 1 * capabilities_.size();
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.CapabilityInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.CapabilityInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.CapabilityInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.CapabilityInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.CapabilityInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.CapabilityInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.CapabilityInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.CapabilityInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.CapabilityInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.CapabilityInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.CapabilityInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.CapabilityInfo}
+     *
+     * <pre>
+     **
+     * Encapsulation of `Capabilities` supported by Linux.
+     * Reference: http://linux.die.net/man/7/capabilities.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.CapabilityInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CapabilityInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CapabilityInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.CapabilityInfo.class, org.apache.mesos.v1.Protos.CapabilityInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.CapabilityInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        capabilities_ = java.util.Collections.emptyList();
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CapabilityInfo_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.CapabilityInfo getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.CapabilityInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.CapabilityInfo build() {
+        org.apache.mesos.v1.Protos.CapabilityInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.CapabilityInfo buildPartial() {
+        org.apache.mesos.v1.Protos.CapabilityInfo result = new org.apache.mesos.v1.Protos.CapabilityInfo(this);
+        int from_bitField0_ = bitField0_;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          capabilities_ = java.util.Collections.unmodifiableList(capabilities_);
+          bitField0_ = (bitField0_ & ~0x00000001);
+        }
+        result.capabilities_ = capabilities_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.CapabilityInfo) {
+          return mergeFrom((org.apache.mesos.v1.Protos.CapabilityInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.CapabilityInfo other) {
+        if (other == org.apache.mesos.v1.Protos.CapabilityInfo.getDefaultInstance()) return this;
+        if (!other.capabilities_.isEmpty()) {
+          if (capabilities_.isEmpty()) {
+            capabilities_ = other.capabilities_;
+            bitField0_ = (bitField0_ & ~0x00000001);
+          } else {
+            ensureCapabilitiesIsMutable();
+            capabilities_.addAll(other.capabilities_);
+          }
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.CapabilityInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.CapabilityInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // repeated .mesos.v1.CapabilityInfo.Capability capabilities = 1;
+      private java.util.List<org.apache.mesos.v1.Protos.CapabilityInfo.Capability> capabilities_ =
+        java.util.Collections.emptyList();
+      private void ensureCapabilitiesIsMutable() {
+        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+          capabilities_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.CapabilityInfo.Capability>(capabilities_);
+          bitField0_ |= 0x00000001;
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.CapabilityInfo.Capability capabilities = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.CapabilityInfo.Capability> getCapabilitiesList() {
+        return java.util.Collections.unmodifiableList(capabilities_);
+      }
+      /**
+       * <code>repeated .mesos.v1.CapabilityInfo.Capability capabilities = 1;</code>
+       */
+      public int getCapabilitiesCount() {
+        return capabilities_.size();
+      }
+      /**
+       * <code>repeated .mesos.v1.CapabilityInfo.Capability capabilities = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.CapabilityInfo.Capability getCapabilities(int index) {
+        return capabilities_.get(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.CapabilityInfo.Capability capabilities = 1;</code>
+       */
+      public Builder setCapabilities(
+          int index, org.apache.mesos.v1.Protos.CapabilityInfo.Capability value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        ensureCapabilitiesIsMutable();
+        capabilities_.set(index, value);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.CapabilityInfo.Capability capabilities = 1;</code>
+       */
+      public Builder addCapabilities(org.apache.mesos.v1.Protos.CapabilityInfo.Capability value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        ensureCapabilitiesIsMutable();
+        capabilities_.add(value);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.CapabilityInfo.Capability capabilities = 1;</code>
+       */
+      public Builder addAllCapabilities(
+          java.lang.Iterable<? extends org.apache.mesos.v1.Protos.CapabilityInfo.Capability> values) {
+        ensureCapabilitiesIsMutable();
+        super.addAll(values, capabilities_);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.CapabilityInfo.Capability capabilities = 1;</code>
+       */
+      public Builder clearCapabilities() {
+        capabilities_ = java.util.Collections.emptyList();
+        bitField0_ = (bitField0_ & ~0x00000001);
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.CapabilityInfo)
+    }
+
+    static {
+      defaultInstance = new CapabilityInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.CapabilityInfo)
+  }
+
+  public interface LinuxInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional .mesos.v1.CapabilityInfo capability_info = 1 [deprecated = true];
+    /**
+     * <code>optional .mesos.v1.CapabilityInfo capability_info = 1 [deprecated = true];</code>
+     *
+     * <pre>
+     * Since 1.4.0, deprecated in favor of `effective_capabilities`.
+     * </pre>
+     */
+    @java.lang.Deprecated boolean hasCapabilityInfo();
+    /**
+     * <code>optional .mesos.v1.CapabilityInfo capability_info = 1 [deprecated = true];</code>
+     *
+     * <pre>
+     * Since 1.4.0, deprecated in favor of `effective_capabilities`.
+     * </pre>
+     */
+    @java.lang.Deprecated org.apache.mesos.v1.Protos.CapabilityInfo getCapabilityInfo();
+    /**
+     * <code>optional .mesos.v1.CapabilityInfo capability_info = 1 [deprecated = true];</code>
+     *
+     * <pre>
+     * Since 1.4.0, deprecated in favor of `effective_capabilities`.
+     * </pre>
+     */
+    @java.lang.Deprecated org.apache.mesos.v1.Protos.CapabilityInfoOrBuilder getCapabilityInfoOrBuilder();
+
+    // optional .mesos.v1.CapabilityInfo bounding_capabilities = 2;
+    /**
+     * <code>optional .mesos.v1.CapabilityInfo bounding_capabilities = 2;</code>
+     *
+     * <pre>
+     * The set of capabilities that are allowed but not initially
+     * granted to tasks.
+     * </pre>
+     */
+    boolean hasBoundingCapabilities();
+    /**
+     * <code>optional .mesos.v1.CapabilityInfo bounding_capabilities = 2;</code>
+     *
+     * <pre>
+     * The set of capabilities that are allowed but not initially
+     * granted to tasks.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.CapabilityInfo getBoundingCapabilities();
+    /**
+     * <code>optional .mesos.v1.CapabilityInfo bounding_capabilities = 2;</code>
+     *
+     * <pre>
+     * The set of capabilities that are allowed but not initially
+     * granted to tasks.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.CapabilityInfoOrBuilder getBoundingCapabilitiesOrBuilder();
+
+    // optional .mesos.v1.CapabilityInfo effective_capabilities = 3;
+    /**
+     * <code>optional .mesos.v1.CapabilityInfo effective_capabilities = 3;</code>
+     *
+     * <pre>
+     * Represents the set of capabilities that the task will
+     * be executed with.
+     * </pre>
+     */
+    boolean hasEffectiveCapabilities();
+    /**
+     * <code>optional .mesos.v1.CapabilityInfo effective_capabilities = 3;</code>
+     *
+     * <pre>
+     * Represents the set of capabilities that the task will
+     * be executed with.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.CapabilityInfo getEffectiveCapabilities();
+    /**
+     * <code>optional .mesos.v1.CapabilityInfo effective_capabilities = 3;</code>
+     *
+     * <pre>
+     * Represents the set of capabilities that the task will
+     * be executed with.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.CapabilityInfoOrBuilder getEffectiveCapabilitiesOrBuilder();
+
+    // optional bool share_pid_namespace = 4;
+    /**
+     * <code>optional bool share_pid_namespace = 4;</code>
+     *
+     * <pre>
+     * If set as 'true', the container shares the pid namespace with
+     * its parent. If the container is a top level container, it will
+     * share the pid namespace with the agent. If the container is a
+     * nested container, it will share the pid namespace with its
+     * parent container. This field will be ignored if 'namespaces/pid'
+     * isolator is not enabled.
+     * </pre>
+     */
+    boolean hasSharePidNamespace();
+    /**
+     * <code>optional bool share_pid_namespace = 4;</code>
+     *
+     * <pre>
+     * If set as 'true', the container shares the pid namespace with
+     * its parent. If the container is a top level container, it will
+     * share the pid namespace with the agent. If the container is a
+     * nested container, it will share the pid namespace with its
+     * parent container. This field will be ignored if 'namespaces/pid'
+     * isolator is not enabled.
+     * </pre>
+     */
+    boolean getSharePidNamespace();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.LinuxInfo}
+   *
+   * <pre>
+   **
+   * Encapsulation for Linux specific configuration.
+   * E.g, capabilities, limits etc.
+   * </pre>
+   */
+  public static final class LinuxInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements LinuxInfoOrBuilder {
+    // Use LinuxInfo.newBuilder() to construct.
+    private LinuxInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private LinuxInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final LinuxInfo defaultInstance;
+    public static LinuxInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public LinuxInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private LinuxInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              org.apache.mesos.v1.Protos.CapabilityInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                subBuilder = capabilityInfo_.toBuilder();
+              }
+              capabilityInfo_ = input.readMessage(org.apache.mesos.v1.Protos.CapabilityInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(capabilityInfo_);
+                capabilityInfo_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+            case 18: {
+              org.apache.mesos.v1.Protos.CapabilityInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = boundingCapabilities_.toBuilder();
+              }
+              boundingCapabilities_ = input.readMessage(org.apache.mesos.v1.Protos.CapabilityInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(boundingCapabilities_);
+                boundingCapabilities_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+            case 26: {
+              org.apache.mesos.v1.Protos.CapabilityInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                subBuilder = effectiveCapabilities_.toBuilder();
+              }
+              effectiveCapabilities_ = input.readMessage(org.apache.mesos.v1.Protos.CapabilityInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(effectiveCapabilities_);
+                effectiveCapabilities_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000004;
+              break;
+            }
+            case 32: {
+              bitField0_ |= 0x00000008;
+              sharePidNamespace_ = input.readBool();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_LinuxInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_LinuxInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.LinuxInfo.class, org.apache.mesos.v1.Protos.LinuxInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<LinuxInfo> PARSER =
+        new com.google.protobuf.AbstractParser<LinuxInfo>() {
+      public LinuxInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new LinuxInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<LinuxInfo> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // optional .mesos.v1.CapabilityInfo capability_info = 1 [deprecated = true];
+    public static final int CAPABILITY_INFO_FIELD_NUMBER = 1;
+    private org.apache.mesos.v1.Protos.CapabilityInfo capabilityInfo_;
+    /**
+     * <code>optional .mesos.v1.CapabilityInfo capability_info = 1 [deprecated = true];</code>
+     *
+     * <pre>
+     * Since 1.4.0, deprecated in favor of `effective_capabilities`.
+     * </pre>
+     */
+    @java.lang.Deprecated public boolean hasCapabilityInfo() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional .mesos.v1.CapabilityInfo capability_info = 1 [deprecated = true];</code>
+     *
+     * <pre>
+     * Since 1.4.0, deprecated in favor of `effective_capabilities`.
+     * </pre>
+     */
+    @java.lang.Deprecated public org.apache.mesos.v1.Protos.CapabilityInfo getCapabilityInfo() {
+      return capabilityInfo_;
+    }
+    /**
+     * <code>optional .mesos.v1.CapabilityInfo capability_info = 1 [deprecated = true];</code>
+     *
+     * <pre>
+     * Since 1.4.0, deprecated in favor of `effective_capabilities`.
+     * </pre>
+     */
+    @java.lang.Deprecated public org.apache.mesos.v1.Protos.CapabilityInfoOrBuilder getCapabilityInfoOrBuilder() {
+      return capabilityInfo_;
+    }
+
+    // optional .mesos.v1.CapabilityInfo bounding_capabilities = 2;
+    public static final int BOUNDING_CAPABILITIES_FIELD_NUMBER = 2;
+    private org.apache.mesos.v1.Protos.CapabilityInfo boundingCapabilities_;
+    /**
+     * <code>optional .mesos.v1.CapabilityInfo bounding_capabilities = 2;</code>
+     *
+     * <pre>
+     * The set of capabilities that are allowed but not initially
+     * granted to tasks.
+     * </pre>
+     */
+    public boolean hasBoundingCapabilities() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional .mesos.v1.CapabilityInfo bounding_capabilities = 2;</code>
+     *
+     * <pre>
+     * The set of capabilities that are allowed but not initially
+     * granted to tasks.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.CapabilityInfo getBoundingCapabilities() {
+      return boundingCapabilities_;
+    }
+    /**
+     * <code>optional .mesos.v1.CapabilityInfo bounding_capabilities = 2;</code>
+     *
+     * <pre>
+     * The set of capabilities that are allowed but not initially
+     * granted to tasks.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.CapabilityInfoOrBuilder getBoundingCapabilitiesOrBuilder() {
+      return boundingCapabilities_;
+    }
+
+    // optional .mesos.v1.CapabilityInfo effective_capabilities = 3;
+    public static final int EFFECTIVE_CAPABILITIES_FIELD_NUMBER = 3;
+    private org.apache.mesos.v1.Protos.CapabilityInfo effectiveCapabilities_;
+    /**
+     * <code>optional .mesos.v1.CapabilityInfo effective_capabilities = 3;</code>
+     *
+     * <pre>
+     * Represents the set of capabilities that the task will
+     * be executed with.
+     * </pre>
+     */
+    public boolean hasEffectiveCapabilities() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional .mesos.v1.CapabilityInfo effective_capabilities = 3;</code>
+     *
+     * <pre>
+     * Represents the set of capabilities that the task will
+     * be executed with.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.CapabilityInfo getEffectiveCapabilities() {
+      return effectiveCapabilities_;
+    }
+    /**
+     * <code>optional .mesos.v1.CapabilityInfo effective_capabilities = 3;</code>
+     *
+     * <pre>
+     * Represents the set of capabilities that the task will
+     * be executed with.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.CapabilityInfoOrBuilder getEffectiveCapabilitiesOrBuilder() {
+      return effectiveCapabilities_;
+    }
+
+    // optional bool share_pid_namespace = 4;
+    public static final int SHARE_PID_NAMESPACE_FIELD_NUMBER = 4;
+    private boolean sharePidNamespace_;
+    /**
+     * <code>optional bool share_pid_namespace = 4;</code>
+     *
+     * <pre>
+     * If set as 'true', the container shares the pid namespace with
+     * its parent. If the container is a top level container, it will
+     * share the pid namespace with the agent. If the container is a
+     * nested container, it will share the pid namespace with its
+     * parent container. This field will be ignored if 'namespaces/pid'
+     * isolator is not enabled.
+     * </pre>
+     */
+    public boolean hasSharePidNamespace() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional bool share_pid_namespace = 4;</code>
+     *
+     * <pre>
+     * If set as 'true', the container shares the pid namespace with
+     * its parent. If the container is a top level container, it will
+     * share the pid namespace with the agent. If the container is a
+     * nested container, it will share the pid namespace with its
+     * parent container. This field will be ignored if 'namespaces/pid'
+     * isolator is not enabled.
+     * </pre>
+     */
+    public boolean getSharePidNamespace() {
+      return sharePidNamespace_;
+    }
+
+    private void initFields() {
+      capabilityInfo_ = org.apache.mesos.v1.Protos.CapabilityInfo.getDefaultInstance();
+      boundingCapabilities_ = org.apache.mesos.v1.Protos.CapabilityInfo.getDefaultInstance();
+      effectiveCapabilities_ = org.apache.mesos.v1.Protos.CapabilityInfo.getDefaultInstance();
+      sharePidNamespace_ = false;
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeMessage(1, capabilityInfo_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(2, boundingCapabilities_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeMessage(3, effectiveCapabilities_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeBool(4, sharePidNamespace_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, capabilityInfo_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, boundingCapabilities_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, effectiveCapabilities_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(4, sharePidNamespace_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.LinuxInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.LinuxInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.LinuxInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.LinuxInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.LinuxInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.LinuxInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.LinuxInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.LinuxInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.LinuxInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.LinuxInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.LinuxInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.LinuxInfo}
+     *
+     * <pre>
+     **
+     * Encapsulation for Linux specific configuration.
+     * E.g, capabilities, limits etc.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.LinuxInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_LinuxInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_LinuxInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.LinuxInfo.class, org.apache.mesos.v1.Protos.LinuxInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.LinuxInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getCapabilityInfoFieldBuilder();
+          getBoundingCapabilitiesFieldBuilder();
+          getEffectiveCapabilitiesFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (capabilityInfoBuilder_ == null) {
+          capabilityInfo_ = org.apache.mesos.v1.Protos.CapabilityInfo.getDefaultInstance();
+        } else {
+          capabilityInfoBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (boundingCapabilitiesBuilder_ == null) {
+          boundingCapabilities_ = org.apache.mesos.v1.Protos.CapabilityInfo.getDefaultInstance();
+        } else {
+          boundingCapabilitiesBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        if (effectiveCapabilitiesBuilder_ == null) {
+          effectiveCapabilities_ = org.apache.mesos.v1.Protos.CapabilityInfo.getDefaultInstance();
+        } else {
+          effectiveCapabilitiesBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        sharePidNamespace_ = false;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_LinuxInfo_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.LinuxInfo getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.LinuxInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.LinuxInfo build() {
+        org.apache.mesos.v1.Protos.LinuxInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.LinuxInfo buildPartial() {
+        org.apache.mesos.v1.Protos.LinuxInfo result = new org.apache.mesos.v1.Protos.LinuxInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        if (capabilityInfoBuilder_ == null) {
+          result.capabilityInfo_ = capabilityInfo_;
+        } else {
+          result.capabilityInfo_ = capabilityInfoBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (boundingCapabilitiesBuilder_ == null) {
+          result.boundingCapabilities_ = boundingCapabilities_;
+        } else {
+          result.boundingCapabilities_ = boundingCapabilitiesBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        if (effectiveCapabilitiesBuilder_ == null) {
+          result.effectiveCapabilities_ = effectiveCapabilities_;
+        } else {
+          result.effectiveCapabilities_ = effectiveCapabilitiesBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.sharePidNamespace_ = sharePidNamespace_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.LinuxInfo) {
+          return mergeFrom((org.apache.mesos.v1.Protos.LinuxInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.LinuxInfo other) {
+        if (other == org.apache.mesos.v1.Protos.LinuxInfo.getDefaultInstance()) return this;
+        if (other.hasCapabilityInfo()) {
+          mergeCapabilityInfo(other.getCapabilityInfo());
+        }
+        if (other.hasBoundingCapabilities()) {
+          mergeBoundingCapabilities(other.getBoundingCapabilities());
+        }
+        if (other.hasEffectiveCapabilities()) {
+          mergeEffectiveCapabilities(other.getEffectiveCapabilities());
+        }
+        if (other.hasSharePidNamespace()) {
+          setSharePidNamespace(other.getSharePidNamespace());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.LinuxInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.LinuxInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional .mesos.v1.CapabilityInfo capability_info = 1 [deprecated = true];
+      private org.apache.mesos.v1.Protos.CapabilityInfo capabilityInfo_ = org.apache.mesos.v1.Protos.CapabilityInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.CapabilityInfo, org.apache.mesos.v1.Protos.CapabilityInfo.Builder, org.apache.mesos.v1.Protos.CapabilityInfoOrBuilder> capabilityInfoBuilder_;
+      /**
+       * <code>optional .mesos.v1.CapabilityInfo capability_info = 1 [deprecated = true];</code>
+       *
+       * <pre>
+       * Since 1.4.0, deprecated in favor of `effective_capabilities`.
+       * </pre>
+       */
+      @java.lang.Deprecated public boolean hasCapabilityInfo() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.v1.CapabilityInfo capability_info = 1 [deprecated = true];</code>
+       *
+       * <pre>
+       * Since 1.4.0, deprecated in favor of `effective_capabilities`.
+       * </pre>
+       */
+      @java.lang.Deprecated public org.apache.mesos.v1.Protos.CapabilityInfo getCapabilityInfo() {
+        if (capabilityInfoBuilder_ == null) {
+          return capabilityInfo_;
+        } else {
+          return capabilityInfoBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.CapabilityInfo capability_info = 1 [deprecated = true];</code>
+       *
+       * <pre>
+       * Since 1.4.0, deprecated in favor of `effective_capabilities`.
+       * </pre>
+       */
+      @java.lang.Deprecated public Builder setCapabilityInfo(org.apache.mesos.v1.Protos.CapabilityInfo value) {
+        if (capabilityInfoBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          capabilityInfo_ = value;
+          onChanged();
+        } else {
+          capabilityInfoBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CapabilityInfo capability_info = 1 [deprecated = true];</code>
+       *
+       * <pre>
+       * Since 1.4.0, deprecated in favor of `effective_capabilities`.
+       * </pre>
+       */
+      @java.lang.Deprecated public Builder setCapabilityInfo(
+          org.apache.mesos.v1.Protos.CapabilityInfo.Builder builderForValue) {
+        if (capabilityInfoBuilder_ == null) {
+          capabilityInfo_ = builderForValue.build();
+          onChanged();
+        } else {
+          capabilityInfoBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CapabilityInfo capability_info = 1 [deprecated = true];</code>
+       *
+       * <pre>
+       * Since 1.4.0, deprecated in favor of `effective_capabilities`.
+       * </pre>
+       */
+      @java.lang.Deprecated public Builder mergeCapabilityInfo(org.apache.mesos.v1.Protos.CapabilityInfo value) {
+        if (capabilityInfoBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001) &&
+              capabilityInfo_ != org.apache.mesos.v1.Protos.CapabilityInfo.getDefaultInstance()) {
+            capabilityInfo_ =
+              org.apache.mesos.v1.Protos.CapabilityInfo.newBuilder(capabilityInfo_).mergeFrom(value).buildPartial();
+          } else {
+            capabilityInfo_ = value;
+          }
+          onChanged();
+        } else {
+          capabilityInfoBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CapabilityInfo capability_info = 1 [deprecated = true];</code>
+       *
+       * <pre>
+       * Since 1.4.0, deprecated in favor of `effective_capabilities`.
+       * </pre>
+       */
+      @java.lang.Deprecated public Builder clearCapabilityInfo() {
+        if (capabilityInfoBuilder_ == null) {
+          capabilityInfo_ = org.apache.mesos.v1.Protos.CapabilityInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          capabilityInfoBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CapabilityInfo capability_info = 1 [deprecated = true];</code>
+       *
+       * <pre>
+       * Since 1.4.0, deprecated in favor of `effective_capabilities`.
+       * </pre>
+       */
+      @java.lang.Deprecated public org.apache.mesos.v1.Protos.CapabilityInfo.Builder getCapabilityInfoBuilder() {
+        bitField0_ |= 0x00000001;
+        onChanged();
+        return getCapabilityInfoFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.CapabilityInfo capability_info = 1 [deprecated = true];</code>
+       *
+       * <pre>
+       * Since 1.4.0, deprecated in favor of `effective_capabilities`.
+       * </pre>
+       */
+      @java.lang.Deprecated public org.apache.mesos.v1.Protos.CapabilityInfoOrBuilder getCapabilityInfoOrBuilder() {
+        if (capabilityInfoBuilder_ != null) {
+          return capabilityInfoBuilder_.getMessageOrBuilder();
+        } else {
+          return capabilityInfo_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.CapabilityInfo capability_info = 1 [deprecated = true];</code>
+       *
+       * <pre>
+       * Since 1.4.0, deprecated in favor of `effective_capabilities`.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.CapabilityInfo, org.apache.mesos.v1.Protos.CapabilityInfo.Builder, org.apache.mesos.v1.Protos.CapabilityInfoOrBuilder> 
+          getCapabilityInfoFieldBuilder() {
+        if (capabilityInfoBuilder_ == null) {
+          capabilityInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.CapabilityInfo, org.apache.mesos.v1.Protos.CapabilityInfo.Builder, org.apache.mesos.v1.Protos.CapabilityInfoOrBuilder>(
+                  capabilityInfo_,
+                  getParentForChildren(),
+                  isClean());
+          capabilityInfo_ = null;
+        }
+        return capabilityInfoBuilder_;
+      }
+
+      // optional .mesos.v1.CapabilityInfo bounding_capabilities = 2;
+      private org.apache.mesos.v1.Protos.CapabilityInfo boundingCapabilities_ = org.apache.mesos.v1.Protos.CapabilityInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.CapabilityInfo, org.apache.mesos.v1.Protos.CapabilityInfo.Builder, org.apache.mesos.v1.Protos.CapabilityInfoOrBuilder> boundingCapabilitiesBuilder_;
+      /**
+       * <code>optional .mesos.v1.CapabilityInfo bounding_capabilities = 2;</code>
+       *
+       * <pre>
+       * The set of capabilities that are allowed but not initially
+       * granted to tasks.
+       * </pre>
+       */
+      public boolean hasBoundingCapabilities() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.v1.CapabilityInfo bounding_capabilities = 2;</code>
+       *
+       * <pre>
+       * The set of capabilities that are allowed but not initially
+       * granted to tasks.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.CapabilityInfo getBoundingCapabilities() {
+        if (boundingCapabilitiesBuilder_ == null) {
+          return boundingCapabilities_;
+        } else {
+          return boundingCapabilitiesBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.CapabilityInfo bounding_capabilities = 2;</code>
+       *
+       * <pre>
+       * The set of capabilities that are allowed but not initially
+       * granted to tasks.
+       * </pre>
+       */
+      public Builder setBoundingCapabilities(org.apache.mesos.v1.Protos.CapabilityInfo value) {
+        if (boundingCapabilitiesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          boundingCapabilities_ = value;
+          onChanged();
+        } else {
+          boundingCapabilitiesBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CapabilityInfo bounding_capabilities = 2;</code>
+       *
+       * <pre>
+       * The set of capabilities that are allowed but not initially
+       * granted to tasks.
+       * </pre>
+       */
+      public Builder setBoundingCapabilities(
+          org.apache.mesos.v1.Protos.CapabilityInfo.Builder builderForValue) {
+        if (boundingCapabilitiesBuilder_ == null) {
+          boundingCapabilities_ = builderForValue.build();
+          onChanged();
+        } else {
+          boundingCapabilitiesBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CapabilityInfo bounding_capabilities = 2;</code>
+       *
+       * <pre>
+       * The set of capabilities that are allowed but not initially
+       * granted to tasks.
+       * </pre>
+       */
+      public Builder mergeBoundingCapabilities(org.apache.mesos.v1.Protos.CapabilityInfo value) {
+        if (boundingCapabilitiesBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              boundingCapabilities_ != org.apache.mesos.v1.Protos.CapabilityInfo.getDefaultInstance()) {
+            boundingCapabilities_ =
+              org.apache.mesos.v1.Protos.CapabilityInfo.newBuilder(boundingCapabilities_).mergeFrom(value).buildPartial();
+          } else {
+            boundingCapabilities_ = value;
+          }
+          onChanged();
+        } else {
+          boundingCapabilitiesBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CapabilityInfo bounding_capabilities = 2;</code>
+       *
+       * <pre>
+       * The set of capabilities that are allowed but not initially
+       * granted to tasks.
+       * </pre>
+       */
+      public Builder clearBoundingCapabilities() {
+        if (boundingCapabilitiesBuilder_ == null) {
+          boundingCapabilities_ = org.apache.mesos.v1.Protos.CapabilityInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          boundingCapabilitiesBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CapabilityInfo bounding_capabilities = 2;</code>
+       *
+       * <pre>
+       * The set of capabilities that are allowed but not initially
+       * granted to tasks.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.CapabilityInfo.Builder getBoundingCapabilitiesBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getBoundingCapabilitiesFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.CapabilityInfo bounding_capabilities = 2;</code>
+       *
+       * <pre>
+       * The set of capabilities that are allowed but not initially
+       * granted to tasks.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.CapabilityInfoOrBuilder getBoundingCapabilitiesOrBuilder() {
+        if (boundingCapabilitiesBuilder_ != null) {
+          return boundingCapabilitiesBuilder_.getMessageOrBuilder();
+        } else {
+          return boundingCapabilities_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.CapabilityInfo bounding_capabilities = 2;</code>
+       *
+       * <pre>
+       * The set of capabilities that are allowed but not initially
+       * granted to tasks.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.CapabilityInfo, org.apache.mesos.v1.Protos.CapabilityInfo.Builder, org.apache.mesos.v1.Protos.CapabilityInfoOrBuilder> 
+          getBoundingCapabilitiesFieldBuilder() {
+        if (boundingCapabilitiesBuilder_ == null) {
+          boundingCapabilitiesBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.CapabilityInfo, org.apache.mesos.v1.Protos.CapabilityInfo.Builder, org.apache.mesos.v1.Protos.CapabilityInfoOrBuilder>(
+                  boundingCapabilities_,
+                  getParentForChildren(),
+                  isClean());
+          boundingCapabilities_ = null;
+        }
+        return boundingCapabilitiesBuilder_;
+      }
+
+      // optional .mesos.v1.CapabilityInfo effective_capabilities = 3;
+      private org.apache.mesos.v1.Protos.CapabilityInfo effectiveCapabilities_ = org.apache.mesos.v1.Protos.CapabilityInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.CapabilityInfo, org.apache.mesos.v1.Protos.CapabilityInfo.Builder, org.apache.mesos.v1.Protos.CapabilityInfoOrBuilder> effectiveCapabilitiesBuilder_;
+      /**
+       * <code>optional .mesos.v1.CapabilityInfo effective_capabilities = 3;</code>
+       *
+       * <pre>
+       * Represents the set of capabilities that the task will
+       * be executed with.
+       * </pre>
+       */
+      public boolean hasEffectiveCapabilities() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.v1.CapabilityInfo effective_capabilities = 3;</code>
+       *
+       * <pre>
+       * Represents the set of capabilities that the task will
+       * be executed with.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.CapabilityInfo getEffectiveCapabilities() {
+        if (effectiveCapabilitiesBuilder_ == null) {
+          return effectiveCapabilities_;
+        } else {
+          return effectiveCapabilitiesBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.CapabilityInfo effective_capabilities = 3;</code>
+       *
+       * <pre>
+       * Represents the set of capabilities that the task will
+       * be executed with.
+       * </pre>
+       */
+      public Builder setEffectiveCapabilities(org.apache.mesos.v1.Protos.CapabilityInfo value) {
+        if (effectiveCapabilitiesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          effectiveCapabilities_ = value;
+          onChanged();
+        } else {
+          effectiveCapabilitiesBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CapabilityInfo effective_capabilities = 3;</code>
+       *
+       * <pre>
+       * Represents the set of capabilities that the task will
+       * be executed with.
+       * </pre>
+       */
+      public Builder setEffectiveCapabilities(
+          org.apache.mesos.v1.Protos.CapabilityInfo.Builder builderForValue) {
+        if (effectiveCapabilitiesBuilder_ == null) {
+          effectiveCapabilities_ = builderForValue.build();
+          onChanged();
+        } else {
+          effectiveCapabilitiesBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CapabilityInfo effective_capabilities = 3;</code>
+       *
+       * <pre>
+       * Represents the set of capabilities that the task will
+       * be executed with.
+       * </pre>
+       */
+      public Builder mergeEffectiveCapabilities(org.apache.mesos.v1.Protos.CapabilityInfo value) {
+        if (effectiveCapabilitiesBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) == 0x00000004) &&
+              effectiveCapabilities_ != org.apache.mesos.v1.Protos.CapabilityInfo.getDefaultInstance()) {
+            effectiveCapabilities_ =
+              org.apache.mesos.v1.Protos.CapabilityInfo.newBuilder(effectiveCapabilities_).mergeFrom(value).buildPartial();
+          } else {
+            effectiveCapabilities_ = value;
+          }
+          onChanged();
+        } else {
+          effectiveCapabilitiesBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CapabilityInfo effective_capabilities = 3;</code>
+       *
+       * <pre>
+       * Represents the set of capabilities that the task will
+       * be executed with.
+       * </pre>
+       */
+      public Builder clearEffectiveCapabilities() {
+        if (effectiveCapabilitiesBuilder_ == null) {
+          effectiveCapabilities_ = org.apache.mesos.v1.Protos.CapabilityInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          effectiveCapabilitiesBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CapabilityInfo effective_capabilities = 3;</code>
+       *
+       * <pre>
+       * Represents the set of capabilities that the task will
+       * be executed with.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.CapabilityInfo.Builder getEffectiveCapabilitiesBuilder() {
+        bitField0_ |= 0x00000004;
+        onChanged();
+        return getEffectiveCapabilitiesFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.CapabilityInfo effective_capabilities = 3;</code>
+       *
+       * <pre>
+       * Represents the set of capabilities that the task will
+       * be executed with.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.CapabilityInfoOrBuilder getEffectiveCapabilitiesOrBuilder() {
+        if (effectiveCapabilitiesBuilder_ != null) {
+          return effectiveCapabilitiesBuilder_.getMessageOrBuilder();
+        } else {
+          return effectiveCapabilities_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.CapabilityInfo effective_capabilities = 3;</code>
+       *
+       * <pre>
+       * Represents the set of capabilities that the task will
+       * be executed with.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.CapabilityInfo, org.apache.mesos.v1.Protos.CapabilityInfo.Builder, org.apache.mesos.v1.Protos.CapabilityInfoOrBuilder> 
+          getEffectiveCapabilitiesFieldBuilder() {
+        if (effectiveCapabilitiesBuilder_ == null) {
+          effectiveCapabilitiesBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.CapabilityInfo, org.apache.mesos.v1.Protos.CapabilityInfo.Builder, org.apache.mesos.v1.Protos.CapabilityInfoOrBuilder>(
+                  effectiveCapabilities_,
+                  getParentForChildren(),
+                  isClean());
+          effectiveCapabilities_ = null;
+        }
+        return effectiveCapabilitiesBuilder_;
+      }
+
+      // optional bool share_pid_namespace = 4;
+      private boolean sharePidNamespace_ ;
+      /**
+       * <code>optional bool share_pid_namespace = 4;</code>
+       *
+       * <pre>
+       * If set as 'true', the container shares the pid namespace with
+       * its parent. If the container is a top level container, it will
+       * share the pid namespace with the agent. If the container is a
+       * nested container, it will share the pid namespace with its
+       * parent container. This field will be ignored if 'namespaces/pid'
+       * isolator is not enabled.
+       * </pre>
+       */
+      public boolean hasSharePidNamespace() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional bool share_pid_namespace = 4;</code>
+       *
+       * <pre>
+       * If set as 'true', the container shares the pid namespace with
+       * its parent. If the container is a top level container, it will
+       * share the pid namespace with the agent. If the container is a
+       * nested container, it will share the pid namespace with its
+       * parent container. This field will be ignored if 'namespaces/pid'
+       * isolator is not enabled.
+       * </pre>
+       */
+      public boolean getSharePidNamespace() {
+        return sharePidNamespace_;
+      }
+      /**
+       * <code>optional bool share_pid_namespace = 4;</code>
+       *
+       * <pre>
+       * If set as 'true', the container shares the pid namespace with
+       * its parent. If the container is a top level container, it will
+       * share the pid namespace with the agent. If the container is a
+       * nested container, it will share the pid namespace with its
+       * parent container. This field will be ignored if 'namespaces/pid'
+       * isolator is not enabled.
+       * </pre>
+       */
+      public Builder setSharePidNamespace(boolean value) {
+        bitField0_ |= 0x00000008;
+        sharePidNamespace_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional bool share_pid_namespace = 4;</code>
+       *
+       * <pre>
+       * If set as 'true', the container shares the pid namespace with
+       * its parent. If the container is a top level container, it will
+       * share the pid namespace with the agent. If the container is a
+       * nested container, it will share the pid namespace with its
+       * parent container. This field will be ignored if 'namespaces/pid'
+       * isolator is not enabled.
+       * </pre>
+       */
+      public Builder clearSharePidNamespace() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        sharePidNamespace_ = false;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.LinuxInfo)
+    }
+
+    static {
+      defaultInstance = new LinuxInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.LinuxInfo)
+  }
+
+  public interface RLimitInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // repeated .mesos.v1.RLimitInfo.RLimit rlimits = 1;
+    /**
+     * <code>repeated .mesos.v1.RLimitInfo.RLimit rlimits = 1;</code>
+     */
+    java.util.List<org.apache.mesos.v1.Protos.RLimitInfo.RLimit> 
+        getRlimitsList();
+    /**
+     * <code>repeated .mesos.v1.RLimitInfo.RLimit rlimits = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.RLimitInfo.RLimit getRlimits(int index);
+    /**
+     * <code>repeated .mesos.v1.RLimitInfo.RLimit rlimits = 1;</code>
+     */
+    int getRlimitsCount();
+    /**
+     * <code>repeated .mesos.v1.RLimitInfo.RLimit rlimits = 1;</code>
+     */
+    java.util.List<? extends org.apache.mesos.v1.Protos.RLimitInfo.RLimitOrBuilder> 
+        getRlimitsOrBuilderList();
+    /**
+     * <code>repeated .mesos.v1.RLimitInfo.RLimit rlimits = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.RLimitInfo.RLimitOrBuilder getRlimitsOrBuilder(
+        int index);
+  }
+  /**
+   * Protobuf type {@code mesos.v1.RLimitInfo}
+   *
+   * <pre>
+   **
+   * Encapsulation for POSIX rlimits, see
+   * http://pubs.opengroup.org/onlinepubs/009695399/functions/getrlimit.html.
+   * Note that some types might only be defined for Linux.
+   * We use a custom prefix to avoid conflict with existing system macros
+   * (e.g., `RLIMIT_CPU` or `NOFILE`).
+   * </pre>
+   */
+  public static final class RLimitInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements RLimitInfoOrBuilder {
+    // Use RLimitInfo.newBuilder() to construct.
+    private RLimitInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private RLimitInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final RLimitInfo defaultInstance;
+    public static RLimitInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public RLimitInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private RLimitInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                rlimits_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.RLimitInfo.RLimit>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              rlimits_.add(input.readMessage(org.apache.mesos.v1.Protos.RLimitInfo.RLimit.PARSER, extensionRegistry));
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+          rlimits_ = java.util.Collections.unmodifiableList(rlimits_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_RLimitInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_RLimitInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.RLimitInfo.class, org.apache.mesos.v1.Protos.RLimitInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<RLimitInfo> PARSER =
+        new com.google.protobuf.AbstractParser<RLimitInfo>() {
+      public RLimitInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new RLimitInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<RLimitInfo> getParserForType() {
+      return PARSER;
+    }
+
+    public interface RLimitOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // optional .mesos.v1.RLimitInfo.RLimit.Type type = 1;
+      /**
+       * <code>optional .mesos.v1.RLimitInfo.RLimit.Type type = 1;</code>
+       */
+      boolean hasType();
+      /**
+       * <code>optional .mesos.v1.RLimitInfo.RLimit.Type type = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.RLimitInfo.RLimit.Type getType();
+
+      // optional uint64 hard = 2;
+      /**
+       * <code>optional uint64 hard = 2;</code>
+       *
+       * <pre>
+       * Either both are set or both are not set.
+       * If both are not set, it represents unlimited.
+       * If both are set, we require `soft` &lt;= `hard`.
+       * </pre>
+       */
+      boolean hasHard();
+      /**
+       * <code>optional uint64 hard = 2;</code>
+       *
+       * <pre>
+       * Either both are set or both are not set.
+       * If both are not set, it represents unlimited.
+       * If both are set, we require `soft` &lt;= `hard`.
+       * </pre>
+       */
+      long getHard();
+
+      // optional uint64 soft = 3;
+      /**
+       * <code>optional uint64 soft = 3;</code>
+       */
+      boolean hasSoft();
+      /**
+       * <code>optional uint64 soft = 3;</code>
+       */
+      long getSoft();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.RLimitInfo.RLimit}
+     */
+    public static final class RLimit extends
+        com.google.protobuf.GeneratedMessage
+        implements RLimitOrBuilder {
+      // Use RLimit.newBuilder() to construct.
+      private RLimit(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private RLimit(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final RLimit defaultInstance;
+      public static RLimit getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public RLimit getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private RLimit(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 8: {
+                int rawValue = input.readEnum();
+                org.apache.mesos.v1.Protos.RLimitInfo.RLimit.Type value = org.apache.mesos.v1.Protos.RLimitInfo.RLimit.Type.valueOf(rawValue);
+                if (value == null) {
+                  unknownFields.mergeVarintField(1, rawValue);
+                } else {
+                  bitField0_ |= 0x00000001;
+                  type_ = value;
+                }
+                break;
+              }
+              case 16: {
+                bitField0_ |= 0x00000002;
+                hard_ = input.readUInt64();
+                break;
+              }
+              case 24: {
+                bitField0_ |= 0x00000004;
+                soft_ = input.readUInt64();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_RLimitInfo_RLimit_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_RLimitInfo_RLimit_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.RLimitInfo.RLimit.class, org.apache.mesos.v1.Protos.RLimitInfo.RLimit.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<RLimit> PARSER =
+          new com.google.protobuf.AbstractParser<RLimit>() {
+        public RLimit parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new RLimit(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<RLimit> getParserForType() {
+        return PARSER;
+      }
+
+      /**
+       * Protobuf enum {@code mesos.v1.RLimitInfo.RLimit.Type}
+       */
+      public enum Type
+          implements com.google.protobuf.ProtocolMessageEnum {
+        /**
+         * <code>UNKNOWN = 0;</code>
+         */
+        UNKNOWN(0, 0),
+        /**
+         * <code>RLMT_AS = 1;</code>
+         */
+        RLMT_AS(1, 1),
+        /**
+         * <code>RLMT_CORE = 2;</code>
+         */
+        RLMT_CORE(2, 2),
+        /**
+         * <code>RLMT_CPU = 3;</code>
+         */
+        RLMT_CPU(3, 3),
+        /**
+         * <code>RLMT_DATA = 4;</code>
+         */
+        RLMT_DATA(4, 4),
+        /**
+         * <code>RLMT_FSIZE = 5;</code>
+         */
+        RLMT_FSIZE(5, 5),
+        /**
+         * <code>RLMT_LOCKS = 6;</code>
+         */
+        RLMT_LOCKS(6, 6),
+        /**
+         * <code>RLMT_MEMLOCK = 7;</code>
+         */
+        RLMT_MEMLOCK(7, 7),
+        /**
+         * <code>RLMT_MSGQUEUE = 8;</code>
+         */
+        RLMT_MSGQUEUE(8, 8),
+        /**
+         * <code>RLMT_NICE = 9;</code>
+         */
+        RLMT_NICE(9, 9),
+        /**
+         * <code>RLMT_NOFILE = 10;</code>
+         */
+        RLMT_NOFILE(10, 10),
+        /**
+         * <code>RLMT_NPROC = 11;</code>
+         */
+        RLMT_NPROC(11, 11),
+        /**
+         * <code>RLMT_RSS = 12;</code>
+         */
+        RLMT_RSS(12, 12),
+        /**
+         * <code>RLMT_RTPRIO = 13;</code>
+         */
+        RLMT_RTPRIO(13, 13),
+        /**
+         * <code>RLMT_RTTIME = 14;</code>
+         */
+        RLMT_RTTIME(14, 14),
+        /**
+         * <code>RLMT_SIGPENDING = 15;</code>
+         */
+        RLMT_SIGPENDING(15, 15),
+        /**
+         * <code>RLMT_STACK = 16;</code>
+         */
+        RLMT_STACK(16, 16),
+        ;
+
+        /**
+         * <code>UNKNOWN = 0;</code>
+         */
+        public static final int UNKNOWN_VALUE = 0;
+        /**
+         * <code>RLMT_AS = 1;</code>
+         */
+        public static final int RLMT_AS_VALUE = 1;
+        /**
+         * <code>RLMT_CORE = 2;</code>
+         */
+        public static final int RLMT_CORE_VALUE = 2;
+        /**
+         * <code>RLMT_CPU = 3;</code>
+         */
+        public static final int RLMT_CPU_VALUE = 3;
+        /**
+         * <code>RLMT_DATA = 4;</code>
+         */
+        public static final int RLMT_DATA_VALUE = 4;
+        /**
+         * <code>RLMT_FSIZE = 5;</code>
+         */
+        public static final int RLMT_FSIZE_VALUE = 5;
+        /**
+         * <code>RLMT_LOCKS = 6;</code>
+         */
+        public static final int RLMT_LOCKS_VALUE = 6;
+        /**
+         * <code>RLMT_MEMLOCK = 7;</code>
+         */
+        public static final int RLMT_MEMLOCK_VALUE = 7;
+        /**
+         * <code>RLMT_MSGQUEUE = 8;</code>
+         */
+        public static final int RLMT_MSGQUEUE_VALUE = 8;
+        /**
+         * <code>RLMT_NICE = 9;</code>
+         */
+        public static final int RLMT_NICE_VALUE = 9;
+        /**
+         * <code>RLMT_NOFILE = 10;</code>
+         */
+        public static final int RLMT_NOFILE_VALUE = 10;
+        /**
+         * <code>RLMT_NPROC = 11;</code>
+         */
+        public static final int RLMT_NPROC_VALUE = 11;
+        /**
+         * <code>RLMT_RSS = 12;</code>
+         */
+        public static final int RLMT_RSS_VALUE = 12;
+        /**
+         * <code>RLMT_RTPRIO = 13;</code>
+         */
+        public static final int RLMT_RTPRIO_VALUE = 13;
+        /**
+         * <code>RLMT_RTTIME = 14;</code>
+         */
+        public static final int RLMT_RTTIME_VALUE = 14;
+        /**
+         * <code>RLMT_SIGPENDING = 15;</code>
+         */
+        public static final int RLMT_SIGPENDING_VALUE = 15;
+        /**
+         * <code>RLMT_STACK = 16;</code>
+         */
+        public static final int RLMT_STACK_VALUE = 16;
+
+
+        public final int getNumber() { return value; }
+
+        public static Type valueOf(int value) {
+          switch (value) {
+            case 0: return UNKNOWN;
+            case 1: return RLMT_AS;
+            case 2: return RLMT_CORE;
+            case 3: return RLMT_CPU;
+            case 4: return RLMT_DATA;
+            case 5: return RLMT_FSIZE;
+            case 6: return RLMT_LOCKS;
+            case 7: return RLMT_MEMLOCK;
+            case 8: return RLMT_MSGQUEUE;
+            case 9: return RLMT_NICE;
+            case 10: return RLMT_NOFILE;
+            case 11: return RLMT_NPROC;
+            case 12: return RLMT_RSS;
+            case 13: return RLMT_RTPRIO;
+            case 14: return RLMT_RTTIME;
+            case 15: return RLMT_SIGPENDING;
+            case 16: return RLMT_STACK;
+            default: return null;
+          }
+        }
+
+        public static com.google.protobuf.Internal.EnumLiteMap<Type>
+            internalGetValueMap() {
+          return internalValueMap;
+        }
+        private static com.google.protobuf.Internal.EnumLiteMap<Type>
+            internalValueMap =
+              new com.google.protobuf.Internal.EnumLiteMap<Type>() {
+                public Type findValueByNumber(int number) {
+                  return Type.valueOf(number);
+                }
+              };
+
+        public final com.google.protobuf.Descriptors.EnumValueDescriptor
+            getValueDescriptor() {
+          return getDescriptor().getValues().get(index);
+        }
+        public final com.google.protobuf.Descriptors.EnumDescriptor
+            getDescriptorForType() {
+          return getDescriptor();
+        }
+        public static final com.google.protobuf.Descriptors.EnumDescriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.RLimitInfo.RLimit.getDescriptor().getEnumTypes().get(0);
+        }
+
+        private static final Type[] VALUES = values();
+
+        public static Type valueOf(
+            com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+          if (desc.getType() != getDescriptor()) {
+            throw new java.lang.IllegalArgumentException(
+              "EnumValueDescriptor is not for this type.");
+          }
+          return VALUES[desc.getIndex()];
+        }
+
+        private final int index;
+        private final int value;
+
+        private Type(int index, int value) {
+          this.index = index;
+          this.value = value;
+        }
+
+        // @@protoc_insertion_point(enum_scope:mesos.v1.RLimitInfo.RLimit.Type)
+      }
+
+      private int bitField0_;
+      // optional .mesos.v1.RLimitInfo.RLimit.Type type = 1;
+      public static final int TYPE_FIELD_NUMBER = 1;
+      private org.apache.mesos.v1.Protos.RLimitInfo.RLimit.Type type_;
+      /**
+       * <code>optional .mesos.v1.RLimitInfo.RLimit.Type type = 1;</code>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.v1.RLimitInfo.RLimit.Type type = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.RLimitInfo.RLimit.Type getType() {
+        return type_;
+      }
+
+      // optional uint64 hard = 2;
+      public static final int HARD_FIELD_NUMBER = 2;
+      private long hard_;
+      /**
+       * <code>optional uint64 hard = 2;</code>
+       *
+       * <pre>
+       * Either both are set or both are not set.
+       * If both are not set, it represents unlimited.
+       * If both are set, we require `soft` &lt;= `hard`.
+       * </pre>
+       */
+      public boolean hasHard() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional uint64 hard = 2;</code>
+       *
+       * <pre>
+       * Either both are set or both are not set.
+       * If both are not set, it represents unlimited.
+       * If both are set, we require `soft` &lt;= `hard`.
+       * </pre>
+       */
+      public long getHard() {
+        return hard_;
+      }
+
+      // optional uint64 soft = 3;
+      public static final int SOFT_FIELD_NUMBER = 3;
+      private long soft_;
+      /**
+       * <code>optional uint64 soft = 3;</code>
+       */
+      public boolean hasSoft() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional uint64 soft = 3;</code>
+       */
+      public long getSoft() {
+        return soft_;
+      }
+
+      private void initFields() {
+        type_ = org.apache.mesos.v1.Protos.RLimitInfo.RLimit.Type.UNKNOWN;
+        hard_ = 0L;
+        soft_ = 0L;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeEnum(1, type_.getNumber());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeUInt64(2, hard_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeUInt64(3, soft_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeEnumSize(1, type_.getNumber());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeUInt64Size(2, hard_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeUInt64Size(3, soft_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.Protos.RLimitInfo.RLimit parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.RLimitInfo.RLimit parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.RLimitInfo.RLimit parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.RLimitInfo.RLimit parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.RLimitInfo.RLimit parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.RLimitInfo.RLimit parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.RLimitInfo.RLimit parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.RLimitInfo.RLimit parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.RLimitInfo.RLimit parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.RLimitInfo.RLimit parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.Protos.RLimitInfo.RLimit prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.RLimitInfo.RLimit}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.Protos.RLimitInfo.RLimitOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_RLimitInfo_RLimit_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_RLimitInfo_RLimit_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.RLimitInfo.RLimit.class, org.apache.mesos.v1.Protos.RLimitInfo.RLimit.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.Protos.RLimitInfo.RLimit.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          type_ = org.apache.mesos.v1.Protos.RLimitInfo.RLimit.Type.UNKNOWN;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          hard_ = 0L;
+          bitField0_ = (bitField0_ & ~0x00000002);
+          soft_ = 0L;
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_RLimitInfo_RLimit_descriptor;
+        }
+
+        public org.apache.mesos.v1.Protos.RLimitInfo.RLimit getDefaultInstanceForType() {
+          return org.apache.mesos.v1.Protos.RLimitInfo.RLimit.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.Protos.RLimitInfo.RLimit build() {
+          org.apache.mesos.v1.Protos.RLimitInfo.RLimit result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.Protos.RLimitInfo.RLimit buildPartial() {
+          org.apache.mesos.v1.Protos.RLimitInfo.RLimit result = new org.apache.mesos.v1.Protos.RLimitInfo.RLimit(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.type_ = type_;
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          result.hard_ = hard_;
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          result.soft_ = soft_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.Protos.RLimitInfo.RLimit) {
+            return mergeFrom((org.apache.mesos.v1.Protos.RLimitInfo.RLimit)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.Protos.RLimitInfo.RLimit other) {
+          if (other == org.apache.mesos.v1.Protos.RLimitInfo.RLimit.getDefaultInstance()) return this;
+          if (other.hasType()) {
+            setType(other.getType());
+          }
+          if (other.hasHard()) {
+            setHard(other.getHard());
+          }
+          if (other.hasSoft()) {
+            setSoft(other.getSoft());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.Protos.RLimitInfo.RLimit parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.Protos.RLimitInfo.RLimit) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // optional .mesos.v1.RLimitInfo.RLimit.Type type = 1;
+        private org.apache.mesos.v1.Protos.RLimitInfo.RLimit.Type type_ = org.apache.mesos.v1.Protos.RLimitInfo.RLimit.Type.UNKNOWN;
+        /**
+         * <code>optional .mesos.v1.RLimitInfo.RLimit.Type type = 1;</code>
+         */
+        public boolean hasType() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional .mesos.v1.RLimitInfo.RLimit.Type type = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.RLimitInfo.RLimit.Type getType() {
+          return type_;
+        }
+        /**
+         * <code>optional .mesos.v1.RLimitInfo.RLimit.Type type = 1;</code>
+         */
+        public Builder setType(org.apache.mesos.v1.Protos.RLimitInfo.RLimit.Type value) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          bitField0_ |= 0x00000001;
+          type_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.RLimitInfo.RLimit.Type type = 1;</code>
+         */
+        public Builder clearType() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          type_ = org.apache.mesos.v1.Protos.RLimitInfo.RLimit.Type.UNKNOWN;
+          onChanged();
+          return this;
+        }
+
+        // optional uint64 hard = 2;
+        private long hard_ ;
+        /**
+         * <code>optional uint64 hard = 2;</code>
+         *
+         * <pre>
+         * Either both are set or both are not set.
+         * If both are not set, it represents unlimited.
+         * If both are set, we require `soft` &lt;= `hard`.
+         * </pre>
+         */
+        public boolean hasHard() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional uint64 hard = 2;</code>
+         *
+         * <pre>
+         * Either both are set or both are not set.
+         * If both are not set, it represents unlimited.
+         * If both are set, we require `soft` &lt;= `hard`.
+         * </pre>
+         */
+        public long getHard() {
+          return hard_;
+        }
+        /**
+         * <code>optional uint64 hard = 2;</code>
+         *
+         * <pre>
+         * Either both are set or both are not set.
+         * If both are not set, it represents unlimited.
+         * If both are set, we require `soft` &lt;= `hard`.
+         * </pre>
+         */
+        public Builder setHard(long value) {
+          bitField0_ |= 0x00000002;
+          hard_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional uint64 hard = 2;</code>
+         *
+         * <pre>
+         * Either both are set or both are not set.
+         * If both are not set, it represents unlimited.
+         * If both are set, we require `soft` &lt;= `hard`.
+         * </pre>
+         */
+        public Builder clearHard() {
+          bitField0_ = (bitField0_ & ~0x00000002);
+          hard_ = 0L;
+          onChanged();
+          return this;
+        }
+
+        // optional uint64 soft = 3;
+        private long soft_ ;
+        /**
+         * <code>optional uint64 soft = 3;</code>
+         */
+        public boolean hasSoft() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional uint64 soft = 3;</code>
+         */
+        public long getSoft() {
+          return soft_;
+        }
+        /**
+         * <code>optional uint64 soft = 3;</code>
+         */
+        public Builder setSoft(long value) {
+          bitField0_ |= 0x00000004;
+          soft_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional uint64 soft = 3;</code>
+         */
+        public Builder clearSoft() {
+          bitField0_ = (bitField0_ & ~0x00000004);
+          soft_ = 0L;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.RLimitInfo.RLimit)
+      }
+
+      static {
+        defaultInstance = new RLimit(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.RLimitInfo.RLimit)
+    }
+
+    // repeated .mesos.v1.RLimitInfo.RLimit rlimits = 1;
+    public static final int RLIMITS_FIELD_NUMBER = 1;
+    private java.util.List<org.apache.mesos.v1.Protos.RLimitInfo.RLimit> rlimits_;
+    /**
+     * <code>repeated .mesos.v1.RLimitInfo.RLimit rlimits = 1;</code>
+     */
+    public java.util.List<org.apache.mesos.v1.Protos.RLimitInfo.RLimit> getRlimitsList() {
+      return rlimits_;
+    }
+    /**
+     * <code>repeated .mesos.v1.RLimitInfo.RLimit rlimits = 1;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.v1.Protos.RLimitInfo.RLimitOrBuilder> 
+        getRlimitsOrBuilderList() {
+      return rlimits_;
+    }
+    /**
+     * <code>repeated .mesos.v1.RLimitInfo.RLimit rlimits = 1;</code>
+     */
+    public int getRlimitsCount() {
+      return rlimits_.size();
+    }
+    /**
+     * <code>repeated .mesos.v1.RLimitInfo.RLimit rlimits = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.RLimitInfo.RLimit getRlimits(int index) {
+      return rlimits_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.v1.RLimitInfo.RLimit rlimits = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.RLimitInfo.RLimitOrBuilder getRlimitsOrBuilder(
+        int index) {
+      return rlimits_.get(index);
+    }
+
+    private void initFields() {
+      rlimits_ = java.util.Collections.emptyList();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      for (int i = 0; i < rlimits_.size(); i++) {
+        output.writeMessage(1, rlimits_.get(i));
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      for (int i = 0; i < rlimits_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, rlimits_.get(i));
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.RLimitInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.RLimitInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.RLimitInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.RLimitInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.RLimitInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.RLimitInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.RLimitInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.RLimitInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.RLimitInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.RLimitInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.RLimitInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.RLimitInfo}
+     *
+     * <pre>
+     **
+     * Encapsulation for POSIX rlimits, see
+     * http://pubs.opengroup.org/onlinepubs/009695399/functions/getrlimit.html.
+     * Note that some types might only be defined for Linux.
+     * We use a custom prefix to avoid conflict with existing system macros
+     * (e.g., `RLIMIT_CPU` or `NOFILE`).
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.RLimitInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_RLimitInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_RLimitInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.RLimitInfo.class, org.apache.mesos.v1.Protos.RLimitInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.RLimitInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getRlimitsFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (rlimitsBuilder_ == null) {
+          rlimits_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+        } else {
+          rlimitsBuilder_.clear();
+        }
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_RLimitInfo_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.RLimitInfo getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.RLimitInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.RLimitInfo build() {
+        org.apache.mesos.v1.Protos.RLimitInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.RLimitInfo buildPartial() {
+        org.apache.mesos.v1.Protos.RLimitInfo result = new org.apache.mesos.v1.Protos.RLimitInfo(this);
+        int from_bitField0_ = bitField0_;
+        if (rlimitsBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            rlimits_ = java.util.Collections.unmodifiableList(rlimits_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.rlimits_ = rlimits_;
+        } else {
+          result.rlimits_ = rlimitsBuilder_.build();
+        }
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.RLimitInfo) {
+          return mergeFrom((org.apache.mesos.v1.Protos.RLimitInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.RLimitInfo other) {
+        if (other == org.apache.mesos.v1.Protos.RLimitInfo.getDefaultInstance()) return this;
+        if (rlimitsBuilder_ == null) {
+          if (!other.rlimits_.isEmpty()) {
+            if (rlimits_.isEmpty()) {
+              rlimits_ = other.rlimits_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureRlimitsIsMutable();
+              rlimits_.addAll(other.rlimits_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.rlimits_.isEmpty()) {
+            if (rlimitsBuilder_.isEmpty()) {
+              rlimitsBuilder_.dispose();
+              rlimitsBuilder_ = null;
+              rlimits_ = other.rlimits_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              rlimitsBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getRlimitsFieldBuilder() : null;
+            } else {
+              rlimitsBuilder_.addAllMessages(other.rlimits_);
+            }
+          }
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.RLimitInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.RLimitInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // repeated .mesos.v1.RLimitInfo.RLimit rlimits = 1;
+      private java.util.List<org.apache.mesos.v1.Protos.RLimitInfo.RLimit> rlimits_ =
+        java.util.Collections.emptyList();
+      private void ensureRlimitsIsMutable() {
+        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+          rlimits_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.RLimitInfo.RLimit>(rlimits_);
+          bitField0_ |= 0x00000001;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.RLimitInfo.RLimit, org.apache.mesos.v1.Protos.RLimitInfo.RLimit.Builder, org.apache.mesos.v1.Protos.RLimitInfo.RLimitOrBuilder> rlimitsBuilder_;
+
+      /**
+       * <code>repeated .mesos.v1.RLimitInfo.RLimit rlimits = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.RLimitInfo.RLimit> getRlimitsList() {
+        if (rlimitsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(rlimits_);
+        } else {
+          return rlimitsBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.RLimitInfo.RLimit rlimits = 1;</code>
+       */
+      public int getRlimitsCount() {
+        if (rlimitsBuilder_ == null) {
+          return rlimits_.size();
+        } else {
+          return rlimitsBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.RLimitInfo.RLimit rlimits = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.RLimitInfo.RLimit getRlimits(int index) {
+        if (rlimitsBuilder_ == null) {
+          return rlimits_.get(index);
+        } else {
+          return rlimitsBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.RLimitInfo.RLimit rlimits = 1;</code>
+       */
+      public Builder setRlimits(
+          int index, org.apache.mesos.v1.Protos.RLimitInfo.RLimit value) {
+        if (rlimitsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureRlimitsIsMutable();
+          rlimits_.set(index, value);
+          onChanged();
+        } else {
+          rlimitsBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.RLimitInfo.RLimit rlimits = 1;</code>
+       */
+      public Builder setRlimits(
+          int index, org.apache.mesos.v1.Protos.RLimitInfo.RLimit.Builder builderForValue) {
+        if (rlimitsBuilder_ == null) {
+          ensureRlimitsIsMutable();
+          rlimits_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          rlimitsBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.RLimitInfo.RLimit rlimits = 1;</code>
+       */
+      public Builder addRlimits(org.apache.mesos.v1.Protos.RLimitInfo.RLimit value) {
+        if (rlimitsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureRlimitsIsMutable();
+          rlimits_.add(value);
+          onChanged();
+        } else {
+          rlimitsBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.RLimitInfo.RLimit rlimits = 1;</code>
+       */
+      public Builder addRlimits(
+          int index, org.apache.mesos.v1.Protos.RLimitInfo.RLimit value) {
+        if (rlimitsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureRlimitsIsMutable();
+          rlimits_.add(index, value);
+          onChanged();
+        } else {
+          rlimitsBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.RLimitInfo.RLimit rlimits = 1;</code>
+       */
+      public Builder addRlimits(
+          org.apache.mesos.v1.Protos.RLimitInfo.RLimit.Builder builderForValue) {
+        if (rlimitsBuilder_ == null) {
+          ensureRlimitsIsMutable();
+          rlimits_.add(builderForValue.build());
+          onChanged();
+        } else {
+          rlimitsBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.RLimitInfo.RLimit rlimits = 1;</code>
+       */
+      public Builder addRlimits(
+          int index, org.apache.mesos.v1.Protos.RLimitInfo.RLimit.Builder builderForValue) {
+        if (rlimitsBuilder_ == null) {
+          ensureRlimitsIsMutable();
+          rlimits_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          rlimitsBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.RLimitInfo.RLimit rlimits = 1;</code>
+       */
+      public Builder addAllRlimits(
+          java.lang.Iterable<? extends org.apache.mesos.v1.Protos.RLimitInfo.RLimit> values) {
+        if (rlimitsBuilder_ == null) {
+          ensureRlimitsIsMutable();
+          super.addAll(values, rlimits_);
+          onChanged();
+        } else {
+          rlimitsBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.RLimitInfo.RLimit rlimits = 1;</code>
+       */
+      public Builder clearRlimits() {
+        if (rlimitsBuilder_ == null) {
+          rlimits_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+        } else {
+          rlimitsBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.RLimitInfo.RLimit rlimits = 1;</code>
+       */
+      public Builder removeRlimits(int index) {
+        if (rlimitsBuilder_ == null) {
+          ensureRlimitsIsMutable();
+          rlimits_.remove(index);
+          onChanged();
+        } else {
+          rlimitsBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.RLimitInfo.RLimit rlimits = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.RLimitInfo.RLimit.Builder getRlimitsBuilder(
+          int index) {
+        return getRlimitsFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.RLimitInfo.RLimit rlimits = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.RLimitInfo.RLimitOrBuilder getRlimitsOrBuilder(
+          int index) {
+        if (rlimitsBuilder_ == null) {
+          return rlimits_.get(index);  } else {
+          return rlimitsBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.RLimitInfo.RLimit rlimits = 1;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.RLimitInfo.RLimitOrBuilder> 
+           getRlimitsOrBuilderList() {
+        if (rlimitsBuilder_ != null) {
+          return rlimitsBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(rlimits_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.RLimitInfo.RLimit rlimits = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.RLimitInfo.RLimit.Builder addRlimitsBuilder() {
+        return getRlimitsFieldBuilder().addBuilder(
+            org.apache.mesos.v1.Protos.RLimitInfo.RLimit.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.RLimitInfo.RLimit rlimits = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.RLimitInfo.RLimit.Builder addRlimitsBuilder(
+          int index) {
+        return getRlimitsFieldBuilder().addBuilder(
+            index, org.apache.mesos.v1.Protos.RLimitInfo.RLimit.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.RLimitInfo.RLimit rlimits = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.RLimitInfo.RLimit.Builder> 
+           getRlimitsBuilderList() {
+        return getRlimitsFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.RLimitInfo.RLimit, org.apache.mesos.v1.Protos.RLimitInfo.RLimit.Builder, org.apache.mesos.v1.Protos.RLimitInfo.RLimitOrBuilder> 
+          getRlimitsFieldBuilder() {
+        if (rlimitsBuilder_ == null) {
+          rlimitsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.RLimitInfo.RLimit, org.apache.mesos.v1.Protos.RLimitInfo.RLimit.Builder, org.apache.mesos.v1.Protos.RLimitInfo.RLimitOrBuilder>(
+                  rlimits_,
+                  ((bitField0_ & 0x00000001) == 0x00000001),
+                  getParentForChildren(),
+                  isClean());
+          rlimits_ = null;
+        }
+        return rlimitsBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.RLimitInfo)
+    }
+
+    static {
+      defaultInstance = new RLimitInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.RLimitInfo)
+  }
+
+  public interface TTYInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional .mesos.v1.TTYInfo.WindowSize window_size = 1;
+    /**
+     * <code>optional .mesos.v1.TTYInfo.WindowSize window_size = 1;</code>
+     */
+    boolean hasWindowSize();
+    /**
+     * <code>optional .mesos.v1.TTYInfo.WindowSize window_size = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.TTYInfo.WindowSize getWindowSize();
+    /**
+     * <code>optional .mesos.v1.TTYInfo.WindowSize window_size = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.TTYInfo.WindowSizeOrBuilder getWindowSizeOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.TTYInfo}
+   *
+   * <pre>
+   **
+   * Describes the information about (pseudo) TTY that can
+   * be attached to a process running in a container.
+   * </pre>
+   */
+  public static final class TTYInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements TTYInfoOrBuilder {
+    // Use TTYInfo.newBuilder() to construct.
+    private TTYInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private TTYInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final TTYInfo defaultInstance;
+    public static TTYInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public TTYInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private TTYInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              org.apache.mesos.v1.Protos.TTYInfo.WindowSize.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                subBuilder = windowSize_.toBuilder();
+              }
+              windowSize_ = input.readMessage(org.apache.mesos.v1.Protos.TTYInfo.WindowSize.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(windowSize_);
+                windowSize_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TTYInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TTYInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.TTYInfo.class, org.apache.mesos.v1.Protos.TTYInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<TTYInfo> PARSER =
+        new com.google.protobuf.AbstractParser<TTYInfo>() {
+      public TTYInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new TTYInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<TTYInfo> getParserForType() {
+      return PARSER;
+    }
+
+    public interface WindowSizeOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required uint32 rows = 1;
+      /**
+       * <code>required uint32 rows = 1;</code>
+       */
+      boolean hasRows();
+      /**
+       * <code>required uint32 rows = 1;</code>
+       */
+      int getRows();
+
+      // required uint32 columns = 2;
+      /**
+       * <code>required uint32 columns = 2;</code>
+       */
+      boolean hasColumns();
+      /**
+       * <code>required uint32 columns = 2;</code>
+       */
+      int getColumns();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.TTYInfo.WindowSize}
+     */
+    public static final class WindowSize extends
+        com.google.protobuf.GeneratedMessage
+        implements WindowSizeOrBuilder {
+      // Use WindowSize.newBuilder() to construct.
+      private WindowSize(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private WindowSize(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final WindowSize defaultInstance;
+      public static WindowSize getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public WindowSize getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private WindowSize(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 8: {
+                bitField0_ |= 0x00000001;
+                rows_ = input.readUInt32();
+                break;
+              }
+              case 16: {
+                bitField0_ |= 0x00000002;
+                columns_ = input.readUInt32();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TTYInfo_WindowSize_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TTYInfo_WindowSize_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.TTYInfo.WindowSize.class, org.apache.mesos.v1.Protos.TTYInfo.WindowSize.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<WindowSize> PARSER =
+          new com.google.protobuf.AbstractParser<WindowSize>() {
+        public WindowSize parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new WindowSize(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<WindowSize> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required uint32 rows = 1;
+      public static final int ROWS_FIELD_NUMBER = 1;
+      private int rows_;
+      /**
+       * <code>required uint32 rows = 1;</code>
+       */
+      public boolean hasRows() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required uint32 rows = 1;</code>
+       */
+      public int getRows() {
+        return rows_;
+      }
+
+      // required uint32 columns = 2;
+      public static final int COLUMNS_FIELD_NUMBER = 2;
+      private int columns_;
+      /**
+       * <code>required uint32 columns = 2;</code>
+       */
+      public boolean hasColumns() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required uint32 columns = 2;</code>
+       */
+      public int getColumns() {
+        return columns_;
+      }
+
+      private void initFields() {
+        rows_ = 0;
+        columns_ = 0;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasRows()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!hasColumns()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeUInt32(1, rows_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeUInt32(2, columns_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeUInt32Size(1, rows_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeUInt32Size(2, columns_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.Protos.TTYInfo.WindowSize parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.TTYInfo.WindowSize parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.TTYInfo.WindowSize parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.TTYInfo.WindowSize parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.TTYInfo.WindowSize parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.TTYInfo.WindowSize parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.TTYInfo.WindowSize parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.TTYInfo.WindowSize parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.TTYInfo.WindowSize parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.TTYInfo.WindowSize parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.Protos.TTYInfo.WindowSize prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.TTYInfo.WindowSize}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.Protos.TTYInfo.WindowSizeOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TTYInfo_WindowSize_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TTYInfo_WindowSize_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.TTYInfo.WindowSize.class, org.apache.mesos.v1.Protos.TTYInfo.WindowSize.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.Protos.TTYInfo.WindowSize.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          rows_ = 0;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          columns_ = 0;
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TTYInfo_WindowSize_descriptor;
+        }
+
+        public org.apache.mesos.v1.Protos.TTYInfo.WindowSize getDefaultInstanceForType() {
+          return org.apache.mesos.v1.Protos.TTYInfo.WindowSize.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.Protos.TTYInfo.WindowSize build() {
+          org.apache.mesos.v1.Protos.TTYInfo.WindowSize result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.Protos.TTYInfo.WindowSize buildPartial() {
+          org.apache.mesos.v1.Protos.TTYInfo.WindowSize result = new org.apache.mesos.v1.Protos.TTYInfo.WindowSize(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.rows_ = rows_;
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          result.columns_ = columns_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.Protos.TTYInfo.WindowSize) {
+            return mergeFrom((org.apache.mesos.v1.Protos.TTYInfo.WindowSize)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.Protos.TTYInfo.WindowSize other) {
+          if (other == org.apache.mesos.v1.Protos.TTYInfo.WindowSize.getDefaultInstance()) return this;
+          if (other.hasRows()) {
+            setRows(other.getRows());
+          }
+          if (other.hasColumns()) {
+            setColumns(other.getColumns());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasRows()) {
+            
+            return false;
+          }
+          if (!hasColumns()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.Protos.TTYInfo.WindowSize parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.Protos.TTYInfo.WindowSize) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required uint32 rows = 1;
+        private int rows_ ;
+        /**
+         * <code>required uint32 rows = 1;</code>
+         */
+        public boolean hasRows() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required uint32 rows = 1;</code>
+         */
+        public int getRows() {
+          return rows_;
+        }
+        /**
+         * <code>required uint32 rows = 1;</code>
+         */
+        public Builder setRows(int value) {
+          bitField0_ |= 0x00000001;
+          rows_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required uint32 rows = 1;</code>
+         */
+        public Builder clearRows() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          rows_ = 0;
+          onChanged();
+          return this;
+        }
+
+        // required uint32 columns = 2;
+        private int columns_ ;
+        /**
+         * <code>required uint32 columns = 2;</code>
+         */
+        public boolean hasColumns() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>required uint32 columns = 2;</code>
+         */
+        public int getColumns() {
+          return columns_;
+        }
+        /**
+         * <code>required uint32 columns = 2;</code>
+         */
+        public Builder setColumns(int value) {
+          bitField0_ |= 0x00000002;
+          columns_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required uint32 columns = 2;</code>
+         */
+        public Builder clearColumns() {
+          bitField0_ = (bitField0_ & ~0x00000002);
+          columns_ = 0;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.TTYInfo.WindowSize)
+      }
+
+      static {
+        defaultInstance = new WindowSize(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.TTYInfo.WindowSize)
+    }
+
+    private int bitField0_;
+    // optional .mesos.v1.TTYInfo.WindowSize window_size = 1;
+    public static final int WINDOW_SIZE_FIELD_NUMBER = 1;
+    private org.apache.mesos.v1.Protos.TTYInfo.WindowSize windowSize_;
+    /**
+     * <code>optional .mesos.v1.TTYInfo.WindowSize window_size = 1;</code>
+     */
+    public boolean hasWindowSize() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional .mesos.v1.TTYInfo.WindowSize window_size = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.TTYInfo.WindowSize getWindowSize() {
+      return windowSize_;
+    }
+    /**
+     * <code>optional .mesos.v1.TTYInfo.WindowSize window_size = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.TTYInfo.WindowSizeOrBuilder getWindowSizeOrBuilder() {
+      return windowSize_;
+    }
+
+    private void initFields() {
+      windowSize_ = org.apache.mesos.v1.Protos.TTYInfo.WindowSize.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (hasWindowSize()) {
+        if (!getWindowSize().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeMessage(1, windowSize_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, windowSize_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.TTYInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.TTYInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.TTYInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.TTYInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.TTYInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.TTYInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.TTYInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.TTYInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.TTYInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.TTYInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.TTYInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.TTYInfo}
+     *
+     * <pre>
+     **
+     * Describes the information about (pseudo) TTY that can
+     * be attached to a process running in a container.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.TTYInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TTYInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TTYInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.TTYInfo.class, org.apache.mesos.v1.Protos.TTYInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.TTYInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getWindowSizeFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (windowSizeBuilder_ == null) {
+          windowSize_ = org.apache.mesos.v1.Protos.TTYInfo.WindowSize.getDefaultInstance();
+        } else {
+          windowSizeBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_TTYInfo_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.TTYInfo getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.TTYInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.TTYInfo build() {
+        org.apache.mesos.v1.Protos.TTYInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.TTYInfo buildPartial() {
+        org.apache.mesos.v1.Protos.TTYInfo result = new org.apache.mesos.v1.Protos.TTYInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        if (windowSizeBuilder_ == null) {
+          result.windowSize_ = windowSize_;
+        } else {
+          result.windowSize_ = windowSizeBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.TTYInfo) {
+          return mergeFrom((org.apache.mesos.v1.Protos.TTYInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.TTYInfo other) {
+        if (other == org.apache.mesos.v1.Protos.TTYInfo.getDefaultInstance()) return this;
+        if (other.hasWindowSize()) {
+          mergeWindowSize(other.getWindowSize());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (hasWindowSize()) {
+          if (!getWindowSize().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.TTYInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.TTYInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional .mesos.v1.TTYInfo.WindowSize window_size = 1;
+      private org.apache.mesos.v1.Protos.TTYInfo.WindowSize windowSize_ = org.apache.mesos.v1.Protos.TTYInfo.WindowSize.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.TTYInfo.WindowSize, org.apache.mesos.v1.Protos.TTYInfo.WindowSize.Builder, org.apache.mesos.v1.Protos.TTYInfo.WindowSizeOrBuilder> windowSizeBuilder_;
+      /**
+       * <code>optional .mesos.v1.TTYInfo.WindowSize window_size = 1;</code>
+       */
+      public boolean hasWindowSize() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.v1.TTYInfo.WindowSize window_size = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.TTYInfo.WindowSize getWindowSize() {
+        if (windowSizeBuilder_ == null) {
+          return windowSize_;
+        } else {
+          return windowSizeBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.TTYInfo.WindowSize window_size = 1;</code>
+       */
+      public Builder setWindowSize(org.apache.mesos.v1.Protos.TTYInfo.WindowSize value) {
+        if (windowSizeBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          windowSize_ = value;
+          onChanged();
+        } else {
+          windowSizeBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.TTYInfo.WindowSize window_size = 1;</code>
+       */
+      public Builder setWindowSize(
+          org.apache.mesos.v1.Protos.TTYInfo.WindowSize.Builder builderForValue) {
+        if (windowSizeBuilder_ == null) {
+          windowSize_ = builderForValue.build();
+          onChanged();
+        } else {
+          windowSizeBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.TTYInfo.WindowSize window_size = 1;</code>
+       */
+      public Builder mergeWindowSize(org.apache.mesos.v1.Protos.TTYInfo.WindowSize value) {
+        if (windowSizeBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001) &&
+              windowSize_ != org.apache.mesos.v1.Protos.TTYInfo.WindowSize.getDefaultInstance()) {
+            windowSize_ =
+              org.apache.mesos.v1.Protos.TTYInfo.WindowSize.newBuilder(windowSize_).mergeFrom(value).buildPartial();
+          } else {
+            windowSize_ = value;
+          }
+          onChanged();
+        } else {
+          windowSizeBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.TTYInfo.WindowSize window_size = 1;</code>
+       */
+      public Builder clearWindowSize() {
+        if (windowSizeBuilder_ == null) {
+          windowSize_ = org.apache.mesos.v1.Protos.TTYInfo.WindowSize.getDefaultInstance();
+          onChanged();
+        } else {
+          windowSizeBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.TTYInfo.WindowSize window_size = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.TTYInfo.WindowSize.Builder getWindowSizeBuilder() {
+        bitField0_ |= 0x00000001;
+        onChanged();
+        return getWindowSizeFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.TTYInfo.WindowSize window_size = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.TTYInfo.WindowSizeOrBuilder getWindowSizeOrBuilder() {
+        if (windowSizeBuilder_ != null) {
+          return windowSizeBuilder_.getMessageOrBuilder();
+        } else {
+          return windowSize_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.TTYInfo.WindowSize window_size = 1;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.TTYInfo.WindowSize, org.apache.mesos.v1.Protos.TTYInfo.WindowSize.Builder, org.apache.mesos.v1.Protos.TTYInfo.WindowSizeOrBuilder> 
+          getWindowSizeFieldBuilder() {
+        if (windowSizeBuilder_ == null) {
+          windowSizeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.TTYInfo.WindowSize, org.apache.mesos.v1.Protos.TTYInfo.WindowSize.Builder, org.apache.mesos.v1.Protos.TTYInfo.WindowSizeOrBuilder>(
+                  windowSize_,
+                  getParentForChildren(),
+                  isClean());
+          windowSize_ = null;
+        }
+        return windowSizeBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.TTYInfo)
+    }
+
+    static {
+      defaultInstance = new TTYInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.TTYInfo)
+  }
+
+  public interface ContainerInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required .mesos.v1.ContainerInfo.Type type = 1;
+    /**
+     * <code>required .mesos.v1.ContainerInfo.Type type = 1;</code>
+     */
+    boolean hasType();
+    /**
+     * <code>required .mesos.v1.ContainerInfo.Type type = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.ContainerInfo.Type getType();
+
+    // repeated .mesos.v1.Volume volumes = 2;
+    /**
+     * <code>repeated .mesos.v1.Volume volumes = 2;</code>
+     */
+    java.util.List<org.apache.mesos.v1.Protos.Volume> 
+        getVolumesList();
+    /**
+     * <code>repeated .mesos.v1.Volume volumes = 2;</code>
+     */
+    org.apache.mesos.v1.Protos.Volume getVolumes(int index);
+    /**
+     * <code>repeated .mesos.v1.Volume volumes = 2;</code>
+     */
+    int getVolumesCount();
+    /**
+     * <code>repeated .mesos.v1.Volume volumes = 2;</code>
+     */
+    java.util.List<? extends org.apache.mesos.v1.Protos.VolumeOrBuilder> 
+        getVolumesOrBuilderList();
+    /**
+     * <code>repeated .mesos.v1.Volume volumes = 2;</code>
+     */
+    org.apache.mesos.v1.Protos.VolumeOrBuilder getVolumesOrBuilder(
+        int index);
+
+    // optional string hostname = 4;
+    /**
+     * <code>optional string hostname = 4;</code>
+     */
+    boolean hasHostname();
+    /**
+     * <code>optional string hostname = 4;</code>
+     */
+    java.lang.String getHostname();
+    /**
+     * <code>optional string hostname = 4;</code>
+     */
+    com.google.protobuf.ByteString
+        getHostnameBytes();
+
+    // optional .mesos.v1.ContainerInfo.DockerInfo docker = 3;
+    /**
+     * <code>optional .mesos.v1.ContainerInfo.DockerInfo docker = 3;</code>
+     *
+     * <pre>
+     * Only one of the following *Info messages should be set to match
+     * the type.
+     * </pre>
+     */
+    boolean hasDocker();
+    /**
+     * <code>optional .mesos.v1.ContainerInfo.DockerInfo docker = 3;</code>
+     *
+     * <pre>
+     * Only one of the following *Info messages should be set to match
+     * the type.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo getDocker();
+    /**
+     * <code>optional .mesos.v1.ContainerInfo.DockerInfo docker = 3;</code>
+     *
+     * <pre>
+     * Only one of the following *Info messages should be set to match
+     * the type.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.ContainerInfo.DockerInfoOrBuilder getDockerOrBuilder();
+
+    // optional .mesos.v1.ContainerInfo.MesosInfo mesos = 5;
+    /**
+     * <code>optional .mesos.v1.ContainerInfo.MesosInfo mesos = 5;</code>
+     */
+    boolean hasMesos();
+    /**
+     * <code>optional .mesos.v1.ContainerInfo.MesosInfo mesos = 5;</code>
+     */
+    org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo getMesos();
+    /**
+     * <code>optional .mesos.v1.ContainerInfo.MesosInfo mesos = 5;</code>
+     */
+    org.apache.mesos.v1.Protos.ContainerInfo.MesosInfoOrBuilder getMesosOrBuilder();
+
+    // repeated .mesos.v1.NetworkInfo network_infos = 7;
+    /**
+     * <code>repeated .mesos.v1.NetworkInfo network_infos = 7;</code>
+     *
+     * <pre>
+     * A list of network requests. A framework can request multiple IP addresses
+     * for the container.
+     * </pre>
+     */
+    java.util.List<org.apache.mesos.v1.Protos.NetworkInfo> 
+        getNetworkInfosList();
+    /**
+     * <code>repeated .mesos.v1.NetworkInfo network_infos = 7;</code>
+     *
+     * <pre>
+     * A list of network requests. A framework can request multiple IP addresses
+     * for the container.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.NetworkInfo getNetworkInfos(int index);
+    /**
+     * <code>repeated .mesos.v1.NetworkInfo network_infos = 7;</code>
+     *
+     * <pre>
+     * A list of network requests. A framework can request multiple IP addresses
+     * for the container.
+     * </pre>
+     */
+    int getNetworkInfosCount();
+    /**
+     * <code>repeated .mesos.v1.NetworkInfo network_infos = 7;</code>
+     *
+     * <pre>
+     * A list of network requests. A framework can request multiple IP addresses
+     * for the container.
+     * </pre>
+     */
+    java.util.List<? extends org.apache.mesos.v1.Protos.NetworkInfoOrBuilder> 
+        getNetworkInfosOrBuilderList();
+    /**
+     * <code>repeated .mesos.v1.NetworkInfo network_infos = 7;</code>
+     *
+     * <pre>
+     * A list of network requests. A framework can request multiple IP addresses
+     * for the container.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.NetworkInfoOrBuilder getNetworkInfosOrBuilder(
+        int index);
+
+    // optional .mesos.v1.LinuxInfo linux_info = 8;
+    /**
+     * <code>optional .mesos.v1.LinuxInfo linux_info = 8;</code>
+     *
+     * <pre>
+     * Linux specific information for the container.
+     * </pre>
+     */
+    boolean hasLinuxInfo();
+    /**
+     * <code>optional .mesos.v1.LinuxInfo linux_info = 8;</code>
+     *
+     * <pre>
+     * Linux specific information for the container.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.LinuxInfo getLinuxInfo();
+    /**
+     * <code>optional .mesos.v1.LinuxInfo linux_info = 8;</code>
+     *
+     * <pre>
+     * Linux specific information for the container.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.LinuxInfoOrBuilder getLinuxInfoOrBuilder();
+
+    // optional .mesos.v1.RLimitInfo rlimit_info = 9;
+    /**
+     * <code>optional .mesos.v1.RLimitInfo rlimit_info = 9;</code>
+     *
+     * <pre>
+     * (POSIX only) rlimits of the container.
+     * </pre>
+     */
+    boolean hasRlimitInfo();
+    /**
+     * <code>optional .mesos.v1.RLimitInfo rlimit_info = 9;</code>
+     *
+     * <pre>
+     * (POSIX only) rlimits of the container.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.RLimitInfo getRlimitInfo();
+    /**
+     * <code>optional .mesos.v1.RLimitInfo rlimit_info = 9;</code>
+     *
+     * <pre>
+     * (POSIX only) rlimits of the container.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.RLimitInfoOrBuilder getRlimitInfoOrBuilder();
+
+    // optional .mesos.v1.TTYInfo tty_info = 10;
+    /**
+     * <code>optional .mesos.v1.TTYInfo tty_info = 10;</code>
+     *
+     * <pre>
+     * If specified a tty will be attached to the container entrypoint.
+     * </pre>
+     */
+    boolean hasTtyInfo();
+    /**
+     * <code>optional .mesos.v1.TTYInfo tty_info = 10;</code>
+     *
+     * <pre>
+     * If specified a tty will be attached to the container entrypoint.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.TTYInfo getTtyInfo();
+    /**
+     * <code>optional .mesos.v1.TTYInfo tty_info = 10;</code>
+     *
+     * <pre>
+     * If specified a tty will be attached to the container entrypoint.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.TTYInfoOrBuilder getTtyInfoOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.ContainerInfo}
+   *
+   * <pre>
+   **
+   * Describes a container configuration and allows extensible
+   * configurations for different container implementations.
+   *
+   * NOTE: `ContainerInfo` may be specified, e.g., by a task, even if no
+   * container image is provided. In this case neither `MesosInfo` nor
+   * `DockerInfo` is set, the required `type` must be `MESOS`. This is to
+   * address a case when a task without an image, e.g., a shell script
+   * with URIs, wants to use features originally designed for containers,
+   * for example custom network isolation via `NetworkInfo`.
+   * </pre>
+   */
+  public static final class ContainerInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements ContainerInfoOrBuilder {
+    // Use ContainerInfo.newBuilder() to construct.
+    private ContainerInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private ContainerInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final ContainerInfo defaultInstance;
+    public static ContainerInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public ContainerInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private ContainerInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 8: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.v1.Protos.ContainerInfo.Type value = org.apache.mesos.v1.Protos.ContainerInfo.Type.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(1, rawValue);
+              } else {
+                bitField0_ |= 0x00000001;
+                type_ = value;
+              }
+              break;
+            }
+            case 18: {
+              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+                volumes_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Volume>();
+                mutable_bitField0_ |= 0x00000002;
+              }
+              volumes_.add(input.readMessage(org.apache.mesos.v1.Protos.Volume.PARSER, extensionRegistry));
+              break;
+            }
+            case 26: {
+              org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                subBuilder = docker_.toBuilder();
+              }
+              docker_ = input.readMessage(org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(docker_);
+                docker_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000004;
+              break;
+            }
+            case 34: {
+              bitField0_ |= 0x00000002;
+              hostname_ = input.readBytes();
+              break;
+            }
+            case 42: {
+              org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                subBuilder = mesos_.toBuilder();
+              }
+              mesos_ = input.readMessage(org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(mesos_);
+                mesos_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000008;
+              break;
+            }
+            case 58: {
+              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
+                networkInfos_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.NetworkInfo>();
+                mutable_bitField0_ |= 0x00000020;
+              }
+              networkInfos_.add(input.readMessage(org.apache.mesos.v1.Protos.NetworkInfo.PARSER, extensionRegistry));
+              break;
+            }
+            case 66: {
+              org.apache.mesos.v1.Protos.LinuxInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000010) == 0x00000010)) {
+                subBuilder = linuxInfo_.toBuilder();
+              }
+              linuxInfo_ = input.readMessage(org.apache.mesos.v1.Protos.LinuxInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(linuxInfo_);
+                linuxInfo_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000010;
+              break;
+            }
+            case 74: {
+              org.apache.mesos.v1.Protos.RLimitInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000020) == 0x00000020)) {
+                subBuilder = rlimitInfo_.toBuilder();
+              }
+              rlimitInfo_ = input.readMessage(org.apache.mesos.v1.Protos.RLimitInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(rlimitInfo_);
+                rlimitInfo_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000020;
+              break;
+            }
+            case 82: {
+              org.apache.mesos.v1.Protos.TTYInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000040) == 0x00000040)) {
+                subBuilder = ttyInfo_.toBuilder();
+              }
+              ttyInfo_ = input.readMessage(org.apache.mesos.v1.Protos.TTYInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(ttyInfo_);
+                ttyInfo_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000040;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+          volumes_ = java.util.Collections.unmodifiableList(volumes_);
+        }
+        if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
+          networkInfos_ = java.util.Collections.unmodifiableList(networkInfos_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ContainerInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ContainerInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.ContainerInfo.class, org.apache.mesos.v1.Protos.ContainerInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<ContainerInfo> PARSER =
+        new com.google.protobuf.AbstractParser<ContainerInfo>() {
+      public ContainerInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new ContainerInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<ContainerInfo> getParserForType() {
+      return PARSER;
+    }
+
+    /**
+     * Protobuf enum {@code mesos.v1.ContainerInfo.Type}
+     *
+     * <pre>
+     * All container implementation types.
+     * </pre>
+     */
+    public enum Type
+        implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>DOCKER = 1;</code>
+       */
+      DOCKER(0, 1),
+      /**
+       * <code>MESOS = 2;</code>
+       */
+      MESOS(1, 2),
+      ;
+
+      /**
+       * <code>DOCKER = 1;</code>
+       */
+      public static final int DOCKER_VALUE = 1;
+      /**
+       * <code>MESOS = 2;</code>
+       */
+      public static final int MESOS_VALUE = 2;
+
+
+      public final int getNumber() { return value; }
+
+      public static Type valueOf(int value) {
+        switch (value) {
+          case 1: return DOCKER;
+          case 2: return MESOS;
+          default: return null;
+        }
+      }
+
+      public static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalGetValueMap() {
+        return internalValueMap;
+      }
+      private static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap<Type>() {
+              public Type findValueByNumber(int number) {
+                return Type.valueOf(number);
+              }
+            };
+
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
+          getValueDescriptor() {
+        return getDescriptor().getValues().get(index);
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptorForType() {
+        return getDescriptor();
+      }
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.ContainerInfo.getDescriptor().getEnumTypes().get(0);
+      }
+
+      private static final Type[] VALUES = values();
+
+      public static Type valueOf(
+          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+        if (desc.getType() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "EnumValueDescriptor is not for this type.");
+        }
+        return VALUES[desc.getIndex()];
+      }
+
+      private final int index;
+      private final int value;
+
+      private Type(int index, int value) {
+        this.index = index;
+        this.value = value;
+      }
+
+      // @@protoc_insertion_point(enum_scope:mesos.v1.ContainerInfo.Type)
+    }
+
+    public interface DockerInfoOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required string image = 1;
+      /**
+       * <code>required string image = 1;</code>
+       *
+       * <pre>
+       * The docker image that is going to be passed to the registry.
+       * </pre>
+       */
+      boolean hasImage();
+      /**
+       * <code>required string image = 1;</code>
+       *
+       * <pre>
+       * The docker image that is going to be passed to the registry.
+       * </pre>
+       */
+      java.lang.String getImage();
+      /**
+       * <code>required string image = 1;</code>
+       *
+       * <pre>
+       * The docker image that is going to be passed to the registry.
+       * </pre>
+       */
+      com.google.protobuf.ByteString
+          getImageBytes();
+
+      // optional .mesos.v1.ContainerInfo.DockerInfo.Network network = 2 [default = HOST];
+      /**
+       * <code>optional .mesos.v1.ContainerInfo.DockerInfo.Network network = 2 [default = HOST];</code>
+       */
+      boolean hasNetwork();
+      /**
+       * <code>optional .mesos.v1.ContainerInfo.DockerInfo.Network network = 2 [default = HOST];</code>
+       */
+      org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.Network getNetwork();
+
+      // repeated .mesos.v1.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;
+      /**
+       * <code>repeated .mesos.v1.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+       */
+      java.util.List<org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping> 
+          getPortMappingsList();
+      /**
+       * <code>repeated .mesos.v1.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+       */
+      org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping getPortMappings(int index);
+      /**
+       * <code>repeated .mesos.v1.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+       */
+      int getPortMappingsCount();
+      /**
+       * <code>repeated .mesos.v1.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+       */
+      java.util.List<? extends org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMappingOrBuilder> 
+          getPortMappingsOrBuilderList();
+      /**
+       * <code>repeated .mesos.v1.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+       */
+      org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMappingOrBuilder getPortMappingsOrBuilder(
+          int index);
+
+      // optional bool privileged = 4 [default = false];
+      /**
+       * <code>optional bool privileged = 4 [default = false];</code>
+       */
+      boolean hasPrivileged();
+      /**
+       * <code>optional bool privileged = 4 [default = false];</code>
+       */
+      boolean getPrivileged();
+
+      // repeated .mesos.v1.Parameter parameters = 5;
+      /**
+       * <code>repeated .mesos.v1.Parameter parameters = 5;</code>
+       *
+       * <pre>
+       * Allowing arbitrary parameters to be passed to docker CLI.
+       * Note that anything passed to this field is not guaranteed
+       * to be supported moving forward, as we might move away from
+       * the docker CLI.
+       * </pre>
+       */
+      java.util.List<org.apache.mesos.v1.Protos.Parameter> 
+          getParametersList();
+      /**
+       * <code>repeated .mesos.v1.Parameter parameters = 5;</code>
+       *
+       * <pre>
+       * Allowing arbitrary parameters to be passed to docker CLI.
+       * Note that anything passed to this field is not guaranteed
+       * to be supported moving forward, as we might move away from
+       * the docker CLI.
+       * </pre>
+       */
+      org.apache.mesos.v1.Protos.Parameter getParameters(int index);
+      /**
+       * <code>repeated .mesos.v1.Parameter parameters = 5;</code>
+       *
+       * <pre>
+       * Allowing arbitrary parameters to be passed to docker CLI.
+       * Note that anything passed to this field is not guaranteed
+       * to be supported moving forward, as we might move away from
+       * the docker CLI.
+       * </pre>
+       */
+      int getParametersCount();
+      /**
+       * <code>repeated .mesos.v1.Parameter parameters = 5;</code>
+       *
+       * <pre>
+       * Allowing arbitrary parameters to be passed to docker CLI.
+       * Note that anything passed to this field is not guaranteed
+       * to be supported moving forward, as we might move away from
+       * the docker CLI.
+       * </pre>
+       */
+      java.util.List<? extends org.apache.mesos.v1.Protos.ParameterOrBuilder> 
+          getParametersOrBuilderList();
+      /**
+       * <code>repeated .mesos.v1.Parameter parameters = 5;</code>
+       *
+       * <pre>
+       * Allowing arbitrary parameters to be passed to docker CLI.
+       * Note that anything passed to this field is not guaranteed
+       * to be supported moving forward, as we might move away from
+       * the docker CLI.
+       * </pre>
+       */
+      org.apache.mesos.v1.Protos.ParameterOrBuilder getParametersOrBuilder(
+          int index);
+
+      // optional bool force_pull_image = 6;
+      /**
+       * <code>optional bool force_pull_image = 6;</code>
+       *
+       * <pre>
+       * With this flag set to true, the docker containerizer will
+       * pull the docker image from the registry even if the image
+       * is already downloaded on the agent.
+       * </pre>
+       */
+      boolean hasForcePullImage();
+      /**
+       * <code>optional bool force_pull_image = 6;</code>
+       *
+       * <pre>
+       * With this flag set to true, the docker containerizer will
+       * pull the docker image from the registry even if the image
+       * is already downloaded on the agent.
+       * </pre>
+       */
+      boolean getForcePullImage();
+
+      // optional string volume_driver = 7 [deprecated = true];
+      /**
+       * <code>optional string volume_driver = 7 [deprecated = true];</code>
+       *
+       * <pre>
+       * The name of volume driver plugin.
+       * </pre>
+       */
+      @java.lang.Deprecated boolean hasVolumeDriver();
+      /**
+       * <code>optional string volume_driver = 7 [deprecated = true];</code>
+       *
+       * <pre>
+       * The name of volume driver plugin.
+       * </pre>
+       */
+      @java.lang.Deprecated java.lang.String getVolumeDriver();
+      /**
+       * <code>optional string volume_driver = 7 [deprecated = true];</code>
+       *
+       * <pre>
+       * The name of volume driver plugin.
+       * </pre>
+       */
+      @java.lang.Deprecated com.google.protobuf.ByteString
+          getVolumeDriverBytes();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.ContainerInfo.DockerInfo}
+     */
+    public static final class DockerInfo extends
+        com.google.protobuf.GeneratedMessage
+        implements DockerInfoOrBuilder {
+      // Use DockerInfo.newBuilder() to construct.
+      private DockerInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private DockerInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final DockerInfo defaultInstance;
+      public static DockerInfo getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public DockerInfo getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private DockerInfo(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                bitField0_ |= 0x00000001;
+                image_ = input.readBytes();
+                break;
+              }
+              case 16: {
+                int rawValue = input.readEnum();
+                org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.Network value = org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.Network.valueOf(rawValue);
+                if (value == null) {
+                  unknownFields.mergeVarintField(2, rawValue);
+                } else {
+                  bitField0_ |= 0x00000002;
+                  network_ = value;
+                }
+                break;
+              }
+              case 26: {
+                if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
+                  portMappings_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping>();
+                  mutable_bitField0_ |= 0x00000004;
+                }
+                portMappings_.add(input.readMessage(org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping.PARSER, extensionRegistry));
+                break;
+              }
+              case 32: {
+                bitField0_ |= 0x00000004;
+                privileged_ = input.readBool();
+                break;
+              }
+              case 42: {
+                if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
+                  parameters_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Parameter>();
+                  mutable_bitField0_ |= 0x00000010;
+                }
+                parameters_.add(input.readMessage(org.apache.mesos.v1.Protos.Parameter.PARSER, extensionRegistry));
+                break;
+              }
+              case 48: {
+                bitField0_ |= 0x00000008;
+                forcePullImage_ = input.readBool();
+                break;
+              }
+              case 58: {
+                bitField0_ |= 0x00000010;
+                volumeDriver_ = input.readBytes();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
+            portMappings_ = java.util.Collections.unmodifiableList(portMappings_);
+          }
+          if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
+            parameters_ = java.util.Collections.unmodifiableList(parameters_);
+          }
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ContainerInfo_DockerInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ContainerInfo_DockerInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.class, org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<DockerInfo> PARSER =
+          new com.google.protobuf.AbstractParser<DockerInfo>() {
+        public DockerInfo parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new DockerInfo(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<DockerInfo> getParserForType() {
+        return PARSER;
+      }
+
+      /**
+       * Protobuf enum {@code mesos.v1.ContainerInfo.DockerInfo.Network}
+       *
+       * <pre>
+       * Network options.
+       * </pre>
+       */
+      public enum Network
+          implements com.google.protobuf.ProtocolMessageEnum {
+        /**
+         * <code>HOST = 1;</code>
+         */
+        HOST(0, 1),
+        /**
+         * <code>BRIDGE = 2;</code>
+         */
+        BRIDGE(1, 2),
+        /**
+         * <code>NONE = 3;</code>
+         */
+        NONE(2, 3),
+        /**
+         * <code>USER = 4;</code>
+         */
+        USER(3, 4),
+        ;
+
+        /**
+         * <code>HOST = 1;</code>
+         */
+        public static final int HOST_VALUE = 1;
+        /**
+         * <code>BRIDGE = 2;</code>
+         */
+        public static final int BRIDGE_VALUE = 2;
+        /**
+         * <code>NONE = 3;</code>
+         */
+        public static final int NONE_VALUE = 3;
+        /**
+         * <code>USER = 4;</code>
+         */
+        public static final int USER_VALUE = 4;
+
+
+        public final int getNumber() { return value; }
+
+        public static Network valueOf(int value) {
+          switch (value) {
+            case 1: return HOST;
+            case 2: return BRIDGE;
+            case 3: return NONE;
+            case 4: return USER;
+            default: return null;
+          }
+        }
+
+        public static com.google.protobuf.Internal.EnumLiteMap<Network>
+            internalGetValueMap() {
+          return internalValueMap;
+        }
+        private static com.google.protobuf.Internal.EnumLiteMap<Network>
+            internalValueMap =
+              new com.google.protobuf.Internal.EnumLiteMap<Network>() {
+                public Network findValueByNumber(int number) {
+                  return Network.valueOf(number);
+                }
+              };
+
+        public final com.google.protobuf.Descriptors.EnumValueDescriptor
+            getValueDescriptor() {
+          return getDescriptor().getValues().get(index);
+        }
+        public final com.google.protobuf.Descriptors.EnumDescriptor
+            getDescriptorForType() {
+          return getDescriptor();
+        }
+        public static final com.google.protobuf.Descriptors.EnumDescriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.getDescriptor().getEnumTypes().get(0);
+        }
+
+        private static final Network[] VALUES = values();
+
+        public static Network valueOf(
+            com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+          if (desc.getType() != getDescriptor()) {
+            throw new java.lang.IllegalArgumentException(
+              "EnumValueDescriptor is not for this type.");
+          }
+          return VALUES[desc.getIndex()];
+        }
+
+        private final int index;
+        private final int value;
+
+        private Network(int index, int value) {
+          this.index = index;
+          this.value = value;
+        }
+
+        // @@protoc_insertion_point(enum_scope:mesos.v1.ContainerInfo.DockerInfo.Network)
+      }
+
+      public interface PortMappingOrBuilder
+          extends com.google.protobuf.MessageOrBuilder {
+
+        // required uint32 host_port = 1;
+        /**
+         * <code>required uint32 host_port = 1;</code>
+         */
+        boolean hasHostPort();
+        /**
+         * <code>required uint32 host_port = 1;</code>
+         */
+        int getHostPort();
+
+        // required uint32 container_port = 2;
+        /**
+         * <code>required uint32 container_port = 2;</code>
+         */
+        boolean hasContainerPort();
+        /**
+         * <code>required uint32 container_port = 2;</code>
+         */
+        int getContainerPort();
+
+        // optional string protocol = 3;
+        /**
+         * <code>optional string protocol = 3;</code>
+         *
+         * <pre>
+         * Protocol to expose as (ie: tcp, udp).
+         * </pre>
+         */
+        boolean hasProtocol();
+        /**
+         * <code>optional string protocol = 3;</code>
+         *
+         * <pre>
+         * Protocol to expose as (ie: tcp, udp).
+         * </pre>
+         */
+        java.lang.String getProtocol();
+        /**
+         * <code>optional string protocol = 3;</code>
+         *
+         * <pre>
+         * Protocol to expose as (ie: tcp, udp).
+         * </pre>
+         */
+        com.google.protobuf.ByteString
+            getProtocolBytes();
+      }
+      /**
+       * Protobuf type {@code mesos.v1.ContainerInfo.DockerInfo.PortMapping}
+       */
+      public static final class PortMapping extends
+          com.google.protobuf.GeneratedMessage
+          implements PortMappingOrBuilder {
+        // Use PortMapping.newBuilder() to construct.
+        private PortMapping(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+          super(builder);
+          this.unknownFields = builder.getUnknownFields();
+        }
+        private PortMapping(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+        private static final PortMapping defaultInstance;
+        public static PortMapping getDefaultInstance() {
+          return defaultInstance;
+        }
+
+        public PortMapping getDefaultInstanceForType() {
+          return defaultInstance;
+        }
+
+        private final com.google.protobuf.UnknownFieldSet unknownFields;
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet
+            getUnknownFields() {
+          return this.unknownFields;
+        }
+        private PortMapping(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          initFields();
+          int mutable_bitField0_ = 0;
+          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+              com.google.protobuf.UnknownFieldSet.newBuilder();
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(input, unknownFields,
+                                         extensionRegistry, tag)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 8: {
+                  bitField0_ |= 0x00000001;
+                  hostPort_ = input.readUInt32();
+                  break;
+                }
+                case 16: {
+                  bitField0_ |= 0x00000002;
+                  containerPort_ = input.readUInt32();
+                  break;
+                }
+                case 26: {
+                  bitField0_ |= 0x00000004;
+                  protocol_ = input.readBytes();
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw e.setUnfinishedMessage(this);
+          } catch (java.io.IOException e) {
+            throw new com.google.protobuf.InvalidProtocolBufferException(
+                e.getMessage()).setUnfinishedMessage(this);
+          } finally {
+            this.unknownFields = unknownFields.build();
+            makeExtensionsImmutable();
+          }
+        }
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ContainerInfo_DockerInfo_PortMapping_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ContainerInfo_DockerInfo_PortMapping_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping.class, org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping.Builder.class);
+        }
+
+        public static com.google.protobuf.Parser<PortMapping> PARSER =
+            new com.google.protobuf.AbstractParser<PortMapping>() {
+          public PortMapping parsePartialFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return new PortMapping(input, extensionRegistry);
+          }
+        };
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<PortMapping> getParserForType() {
+          return PARSER;
+        }
+
+        private int bitField0_;
+        // required uint32 host_port = 1;
+        public static final int HOST_PORT_FIELD_NUMBER = 1;
+        private int hostPort_;
+        /**
+         * <code>required uint32 host_port = 1;</code>
+         */
+        public boolean hasHostPort() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required uint32 host_port = 1;</code>
+         */
+        public int getHostPort() {
+          return hostPort_;
+        }
+
+        // required uint32 container_port = 2;
+        public static final int CONTAINER_PORT_FIELD_NUMBER = 2;
+        private int containerPort_;
+        /**
+         * <code>required uint32 container_port = 2;</code>
+         */
+        public boolean hasContainerPort() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>required uint32 container_port = 2;</code>
+         */
+        public int getContainerPort() {
+          return containerPort_;
+        }
+
+        // optional string protocol = 3;
+        public static final int PROTOCOL_FIELD_NUMBER = 3;
+        private java.lang.Object protocol_;
+        /**
+         * <code>optional string protocol = 3;</code>
+         *
+         * <pre>
+         * Protocol to expose as (ie: tcp, udp).
+         * </pre>
+         */
+        public boolean hasProtocol() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional string protocol = 3;</code>
+         *
+         * <pre>
+         * Protocol to expose as (ie: tcp, udp).
+         * </pre>
+         */
+        public java.lang.String getProtocol() {
+          java.lang.Object ref = protocol_;
+          if (ref instanceof java.lang.String) {
+            return (java.lang.String) ref;
+          } else {
+            com.google.protobuf.ByteString bs = 
+                (com.google.protobuf.ByteString) ref;
+            java.lang.String s = bs.toStringUtf8();
+            if (bs.isValidUtf8()) {
+              protocol_ = s;
+            }
+            return s;
+          }
+        }
+        /**
+         * <code>optional string protocol = 3;</code>
+         *
+         * <pre>
+         * Protocol to expose as (ie: tcp, udp).
+         * </pre>
+         */
+        public com.google.protobuf.ByteString
+            getProtocolBytes() {
+          java.lang.Object ref = protocol_;
+          if (ref instanceof java.lang.String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            protocol_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+
+        private void initFields() {
+          hostPort_ = 0;
+          containerPort_ = 0;
+          protocol_ = "";
+        }
+        private byte memoizedIsInitialized = -1;
+        public final boolean isInitialized() {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized != -1) return isInitialized == 1;
+
+          if (!hasHostPort()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+          if (!hasContainerPort()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+          memoizedIsInitialized = 1;
+          return true;
+        }
+
+        public void writeTo(com.google.protobuf.CodedOutputStream output)
+                            throws java.io.IOException {
+          getSerializedSize();
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            output.writeUInt32(1, hostPort_);
+          }
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            output.writeUInt32(2, containerPort_);
+          }
+          if (((bitField0_ & 0x00000004) == 0x00000004)) {
+            output.writeBytes(3, getProtocolBytes());
+          }
+          getUnknownFields().writeTo(output);
+        }
+
+        private int memoizedSerializedSize = -1;
+        public int getSerializedSize() {
+          int size = memoizedSerializedSize;
+          if (size != -1) return size;
+
+          size = 0;
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeUInt32Size(1, hostPort_);
+          }
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeUInt32Size(2, containerPort_);
+          }
+          if (((bitField0_ & 0x00000004) == 0x00000004)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeBytesSize(3, getProtocolBytes());
+          }
+          size += getUnknownFields().getSerializedSize();
+          memoizedSerializedSize = size;
+          return size;
+        }
+
+        private static final long serialVersionUID = 0L;
+        @java.lang.Override
+        protected java.lang.Object writeReplace()
+            throws java.io.ObjectStreamException {
+          return super.writeReplace();
+        }
+
+        public static org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping parseFrom(
+            com.google.protobuf.ByteString data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping parseFrom(
+            com.google.protobuf.ByteString data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping parseFrom(byte[] data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping parseFrom(
+            byte[] data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping parseFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping parseFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping parseDelimitedFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping parseDelimitedFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping parseFrom(
+            com.google.protobuf.CodedInputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping parseFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+
+        public static Builder newBuilder() { return Builder.create(); }
+        public Builder newBuilderForType() { return newBuilder(); }
+        public static Builder newBuilder(org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping prototype) {
+          return newBuilder().mergeFrom(prototype);
+        }
+        public Builder toBuilder() { return newBuilder(this); }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          Builder builder = new Builder(parent);
+          return builder;
+        }
+        /**
+         * Protobuf type {@code mesos.v1.ContainerInfo.DockerInfo.PortMapping}
+         */
+        public static final class Builder extends
+            com.google.protobuf.GeneratedMessage.Builder<Builder>
+           implements org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMappingOrBuilder {
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ContainerInfo_DockerInfo_PortMapping_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ContainerInfo_DockerInfo_PortMapping_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping.class, org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping.Builder.class);
+          }
+
+          // Construct using org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping.newBuilder()
+          private Builder() {
+            maybeForceBuilderInitialization();
+          }
+
+          private Builder(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            super(parent);
+            maybeForceBuilderInitialization();
+          }
+          private void maybeForceBuilderInitialization() {
+            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            }
+          }
+          private static Builder create() {
+            return new Builder();
+          }
+
+          public Builder clear() {
+            super.clear();
+            hostPort_ = 0;
+            bitField0_ = (bitField0_ & ~0x00000001);
+            containerPort_ = 0;
+            bitField0_ = (bitField0_ & ~0x00000002);
+            protocol_ = "";
+            bitField0_ = (bitField0_ & ~0x00000004);
+            return this;
+          }
+
+          public Builder clone() {
+            return create().mergeFrom(buildPartial());
+          }
+
+          public com.google.protobuf.Descriptors.Descriptor
+              getDescriptorForType() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ContainerInfo_DockerInfo_PortMapping_descriptor;
+          }
+
+          public org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping getDefaultInstanceForType() {
+            return org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping.getDefaultInstance();
+          }
+
+          public org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping build() {
+            org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping result = buildPartial();
+            if (!result.isInitialized()) {
+              throw newUninitializedMessageException(result);
+            }
+            return result;
+          }
+
+          public org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping buildPartial() {
+            org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping result = new org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping(this);
+            int from_bitField0_ = bitField0_;
+            int to_bitField0_ = 0;
+            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+              to_bitField0_ |= 0x00000001;
+            }
+            result.hostPort_ = hostPort_;
+            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+              to_bitField0_ |= 0x00000002;
+            }
+            result.containerPort_ = containerPort_;
+            if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+              to_bitField0_ |= 0x00000004;
+            }
+            result.protocol_ = protocol_;
+            result.bitField0_ = to_bitField0_;
+            onBuilt();
+            return result;
+          }
+
+          public Builder mergeFrom(com.google.protobuf.Message other) {
+            if (other instanceof org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping) {
+              return mergeFrom((org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping)other);
+            } else {
+              super.mergeFrom(other);
+              return this;
+            }
+          }
+
+          public Builder mergeFrom(org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping other) {
+            if (other == org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping.getDefaultInstance()) return this;
+            if (other.hasHostPort()) {
+              setHostPort(other.getHostPort());
+            }
+            if (other.hasContainerPort()) {
+              setContainerPort(other.getContainerPort());
+            }
+            if (other.hasProtocol()) {
+              bitField0_ |= 0x00000004;
+              protocol_ = other.protocol_;
+              onChanged();
+            }
+            this.mergeUnknownFields(other.getUnknownFields());
+            return this;
+          }
+
+          public final boolean isInitialized() {
+            if (!hasHostPort()) {
+              
+              return false;
+            }
+            if (!hasContainerPort()) {
+              
+              return false;
+            }
+            return true;
+          }
+
+          public Builder mergeFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping parsedMessage = null;
+            try {
+              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              parsedMessage = (org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping) e.getUnfinishedMessage();
+              throw e;
+            } finally {
+              if (parsedMessage != null) {
+                mergeFrom(parsedMessage);
+              }
+            }
+            return this;
+          }
+          private int bitField0_;
+
+          // required uint32 host_port = 1;
+          private int hostPort_ ;
+          /**
+           * <code>required uint32 host_port = 1;</code>
+           */
+          public boolean hasHostPort() {
+            return ((bitField0_ & 0x00000001) == 0x00000001);
+          }
+          /**
+           * <code>required uint32 host_port = 1;</code>
+           */
+          public int getHostPort() {
+            return hostPort_;
+          }
+          /**
+           * <code>required uint32 host_port = 1;</code>
+           */
+          public Builder setHostPort(int value) {
+            bitField0_ |= 0x00000001;
+            hostPort_ = value;
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>required uint32 host_port = 1;</code>
+           */
+          public Builder clearHostPort() {
+            bitField0_ = (bitField0_ & ~0x00000001);
+            hostPort_ = 0;
+            onChanged();
+            return this;
+          }
+
+          // required uint32 container_port = 2;
+          private int containerPort_ ;
+          /**
+           * <code>required uint32 container_port = 2;</code>
+           */
+          public boolean hasContainerPort() {
+            return ((bitField0_ & 0x00000002) == 0x00000002);
+          }
+          /**
+           * <code>required uint32 container_port = 2;</code>
+           */
+          public int getContainerPort() {
+            return containerPort_;
+          }
+          /**
+           * <code>required uint32 container_port = 2;</code>
+           */
+          public Builder setContainerPort(int value) {
+            bitField0_ |= 0x00000002;
+            containerPort_ = value;
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>required uint32 container_port = 2;</code>
+           */
+          public Builder clearContainerPort() {
+            bitField0_ = (bitField0_ & ~0x00000002);
+            containerPort_ = 0;
+            onChanged();
+            return this;
+          }
+
+          // optional string protocol = 3;
+          private java.lang.Object protocol_ = "";
+          /**
+           * <code>optional string protocol = 3;</code>
+           *
+           * <pre>
+           * Protocol to expose as (ie: tcp, udp).
+           * </pre>
+           */
+          public boolean hasProtocol() {
+            return ((bitField0_ & 0x00000004) == 0x00000004);
+          }
+          /**
+           * <code>optional string protocol = 3;</code>
+           *
+           * <pre>
+           * Protocol to expose as (ie: tcp, udp).
+           * </pre>
+           */
+          public java.lang.String getProtocol() {
+            java.lang.Object ref = protocol_;
+            if (!(ref instanceof java.lang.String)) {
+              java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                  .toStringUtf8();
+              protocol_ = s;
+              return s;
+            } else {
+              return (java.lang.String) ref;
+            }
+          }
+          /**
+           * <code>optional string protocol = 3;</code>
+           *
+           * <pre>
+           * Protocol to expose as (ie: tcp, udp).
+           * </pre>
+           */
+          public com.google.protobuf.ByteString
+              getProtocolBytes() {
+            java.lang.Object ref = protocol_;
+            if (ref instanceof String) {
+              com.google.protobuf.ByteString b = 
+                  com.google.protobuf.ByteString.copyFromUtf8(
+                      (java.lang.String) ref);
+              protocol_ = b;
+              return b;
+            } else {
+              return (com.google.protobuf.ByteString) ref;
+            }
+          }
+          /**
+           * <code>optional string protocol = 3;</code>
+           *
+           * <pre>
+           * Protocol to expose as (ie: tcp, udp).
+           * </pre>
+           */
+          public Builder setProtocol(
+              java.lang.String value) {
+            if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+            protocol_ = value;
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>optional string protocol = 3;</code>
+           *
+           * <pre>
+           * Protocol to expose as (ie: tcp, udp).
+           * </pre>
+           */
+          public Builder clearProtocol() {
+            bitField0_ = (bitField0_ & ~0x00000004);
+            protocol_ = getDefaultInstance().getProtocol();
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>optional string protocol = 3;</code>
+           *
+           * <pre>
+           * Protocol to expose as (ie: tcp, udp).
+           * </pre>
+           */
+          public Builder setProtocolBytes(
+              com.google.protobuf.ByteString value) {
+            if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+            protocol_ = value;
+            onChanged();
+            return this;
+          }
+
+          // @@protoc_insertion_point(builder_scope:mesos.v1.ContainerInfo.DockerInfo.PortMapping)
+        }
+
+        static {
+          defaultInstance = new PortMapping(true);
+          defaultInstance.initFields();
+        }
+
+        // @@protoc_insertion_point(class_scope:mesos.v1.ContainerInfo.DockerInfo.PortMapping)
+      }
+
+      private int bitField0_;
+      // required string image = 1;
+      public static final int IMAGE_FIELD_NUMBER = 1;
+      private java.lang.Object image_;
+      /**
+       * <code>required string image = 1;</code>
+       *
+       * <pre>
+       * The docker image that is going to be passed to the registry.
+       * </pre>
+       */
+      public boolean hasImage() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string image = 1;</code>
+       *
+       * <pre>
+       * The docker image that is going to be passed to the registry.
+       * </pre>
+       */
+      public java.lang.String getImage() {
+        java.lang.Object ref = image_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            image_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>required string image = 1;</code>
+       *
+       * <pre>
+       * The docker image that is going to be passed to the registry.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getImageBytes() {
+        java.lang.Object ref = image_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          image_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      // optional .mesos.v1.ContainerInfo.DockerInfo.Network network = 2 [default = HOST];
+      public static final int NETWORK_FIELD_NUMBER = 2;
+      private org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.Network network_;
+      /**
+       * <code>optional .mesos.v1.ContainerInfo.DockerInfo.Network network = 2 [default = HOST];</code>
+       */
+      public boolean hasNetwork() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerInfo.DockerInfo.Network network = 2 [default = HOST];</code>
+       */
+      public org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.Network getNetwork() {
+        return network_;
+      }
+
+      // repeated .mesos.v1.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;
+      public static final int PORT_MAPPINGS_FIELD_NUMBER = 3;
+      private java.util.List<org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping> portMappings_;
+      /**
+       * <code>repeated .mesos.v1.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping> getPortMappingsList() {
+        return portMappings_;
+      }
+      /**
+       * <code>repeated .mesos.v1.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMappingOrBuilder> 
+          getPortMappingsOrBuilderList() {
+        return portMappings_;
+      }
+      /**
+       * <code>repeated .mesos.v1.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+       */
+      public int getPortMappingsCount() {
+        return portMappings_.size();
+      }
+      /**
+       * <code>repeated .mesos.v1.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping getPortMappings(int index) {
+        return portMappings_.get(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMappingOrBuilder getPortMappingsOrBuilder(
+          int index) {
+        return portMappings_.get(index);
+      }
+
+      // optional bool privileged = 4 [default = false];
+      public static final int PRIVILEGED_FIELD_NUMBER = 4;
+      private boolean privileged_;
+      /**
+       * <code>optional bool privileged = 4 [default = false];</code>
+       */
+      public boolean hasPrivileged() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional bool privileged = 4 [default = false];</code>
+       */
+      public boolean getPrivileged() {
+        return privileged_;
+      }
+
+      // repeated .mesos.v1.Parameter parameters = 5;
+      public static final int PARAMETERS_FIELD_NUMBER = 5;
+      private java.util.List<org.apache.mesos.v1.Protos.Parameter> parameters_;
+      /**
+       * <code>repeated .mesos.v1.Parameter parameters = 5;</code>
+       *
+       * <pre>
+       * Allowing arbitrary parameters to be passed to docker CLI.
+       * Note that anything passed to this field is not guaranteed
+       * to be supported moving forward, as we might move away from
+       * the docker CLI.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Parameter> getParametersList() {
+        return parameters_;
+      }
+      /**
+       * <code>repeated .mesos.v1.Parameter parameters = 5;</code>
+       *
+       * <pre>
+       * Allowing arbitrary parameters to be passed to docker CLI.
+       * Note that anything passed to this field is not guaranteed
+       * to be supported moving forward, as we might move away from
+       * the docker CLI.
+       * </pre>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.ParameterOrBuilder> 
+          getParametersOrBuilderList() {
+        return parameters_;
+      }
+      /**
+       * <code>repeated .mesos.v1.Parameter parameters = 5;</code>
+       *
+       * <pre>
+       * Allowing arbitrary parameters to be passed to docker CLI.
+       * Note that anything passed to this field is not guaranteed
+       * to be supported moving forward, as we might move away from
+       * the docker CLI.
+       * </pre>
+       */
+      public int getParametersCount() {
+        return parameters_.size();
+      }
+      /**
+       * <code>repeated .mesos.v1.Parameter parameters = 5;</code>
+       *
+       * <pre>
+       * Allowing arbitrary parameters to be passed to docker CLI.
+       * Note that anything passed to this field is not guaranteed
+       * to be supported moving forward, as we might move away from
+       * the docker CLI.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Parameter getParameters(int index) {
+        return parameters_.get(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.Parameter parameters = 5;</code>
+       *
+       * <pre>
+       * Allowing arbitrary parameters to be passed to docker CLI.
+       * Note that anything passed to this field is not guaranteed
+       * to be supported moving forward, as we might move away from
+       * the docker CLI.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.ParameterOrBuilder getParametersOrBuilder(
+          int index) {
+        return parameters_.get(index);
+      }
+
+      // optional bool force_pull_image = 6;
+      public static final int FORCE_PULL_IMAGE_FIELD_NUMBER = 6;
+      private boolean forcePullImage_;
+      /**
+       * <code>optional bool force_pull_image = 6;</code>
+       *
+       * <pre>
+       * With this flag set to true, the docker containerizer will
+       * pull the docker image from the registry even if the image
+       * is already downloaded on the agent.
+       * </pre>
+       */
+      public boolean hasForcePullImage() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional bool force_pull_image = 6;</code>
+       *
+       * <pre>
+       * With this flag set to true, the docker containerizer will
+       * pull the docker image from the registry even if the image
+       * is already downloaded on the agent.
+       * </pre>
+       */
+      public boolean getForcePullImage() {
+        return forcePullImage_;
+      }
+
+      // optional string volume_driver = 7 [deprecated = true];
+      public static final int VOLUME_DRIVER_FIELD_NUMBER = 7;
+      private java.lang.Object volumeDriver_;
+      /**
+       * <code>optional string volume_driver = 7 [deprecated = true];</code>
+       *
+       * <pre>
+       * The name of volume driver plugin.
+       * </pre>
+       */
+      @java.lang.Deprecated public boolean hasVolumeDriver() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional string volume_driver = 7 [deprecated = true];</code>
+       *
+       * <pre>
+       * The name of volume driver plugin.
+       * </pre>
+       */
+      @java.lang.Deprecated public java.lang.String getVolumeDriver() {
+        java.lang.Object ref = volumeDriver_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            volumeDriver_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>optional string volume_driver = 7 [deprecated = true];</code>
+       *
+       * <pre>
+       * The name of volume driver plugin.
+       * </pre>
+       */
+      @java.lang.Deprecated public com.google.protobuf.ByteString
+          getVolumeDriverBytes() {
+        java.lang.Object ref = volumeDriver_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          volumeDriver_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      private void initFields() {
+        image_ = "";
+        network_ = org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.Network.HOST;
+        portMappings_ = java.util.Collections.emptyList();
+        privileged_ = false;
+        parameters_ = java.util.Collections.emptyList();
+        forcePullImage_ = false;
+        volumeDriver_ = "";
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasImage()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        for (int i = 0; i < getPortMappingsCount(); i++) {
+          if (!getPortMappings(i).isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        for (int i = 0; i < getParametersCount(); i++) {
+          if (!getParameters(i).isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeBytes(1, getImageBytes());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeEnum(2, network_.getNumber());
+        }
+        for (int i = 0; i < portMappings_.size(); i++) {
+          output.writeMessage(3, portMappings_.get(i));
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeBool(4, privileged_);
+        }
+        for (int i = 0; i < parameters_.size(); i++) {
+          output.writeMessage(5, parameters_.get(i));
+        }
+        if (((bitField0_ & 0x00000008) == 0x00000008)) {
+          output.writeBool(6, forcePullImage_);
+        }
+        if (((bitField0_ & 0x00000010) == 0x00000010)) {
+          output.writeBytes(7, getVolumeDriverBytes());
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(1, getImageBytes());
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeEnumSize(2, network_.getNumber());
+        }
+        for (int i = 0; i < portMappings_.size(); i++) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(3, portMappings_.get(i));
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBoolSize(4, privileged_);
+        }
+        for (int i = 0; i < parameters_.size(); i++) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(5, parameters_.get(i));
+        }
+        if (((bitField0_ & 0x00000008) == 0x00000008)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBoolSize(6, forcePullImage_);
+        }
+        if (((bitField0_ & 0x00000010) == 0x00000010)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(7, getVolumeDriverBytes());
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.ContainerInfo.DockerInfo}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.Protos.ContainerInfo.DockerInfoOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ContainerInfo_DockerInfo_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ContainerInfo_DockerInfo_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.class, org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getPortMappingsFieldBuilder();
+            getParametersFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          image_ = "";
+          bitField0_ = (bitField0_ & ~0x00000001);
+          network_ = org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.Network.HOST;
+          bitField0_ = (bitField0_ & ~0x00000002);
+          if (portMappingsBuilder_ == null) {
+            portMappings_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000004);
+          } else {
+            portMappingsBuilder_.clear();
+          }
+          privileged_ = false;
+          bitField0_ = (bitField0_ & ~0x00000008);
+          if (parametersBuilder_ == null) {
+            parameters_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000010);
+          } else {
+            parametersBuilder_.clear();
+          }
+          forcePullImage_ = false;
+          bitField0_ = (bitField0_ & ~0x00000020);
+          volumeDriver_ = "";
+          bitField0_ = (bitField0_ & ~0x00000040);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ContainerInfo_DockerInfo_descriptor;
+        }
+
+        public org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo getDefaultInstanceForType() {
+          return org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo build() {
+          org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo buildPartial() {
+          org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo result = new org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.image_ = image_;
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          result.network_ = network_;
+          if (portMappingsBuilder_ == null) {
+            if (((bitField0_ & 0x00000004) == 0x00000004)) {
+              portMappings_ = java.util.Collections.unmodifiableList(portMappings_);
+              bitField0_ = (bitField0_ & ~0x00000004);
+            }
+            result.portMappings_ = portMappings_;
+          } else {
+            result.portMappings_ = portMappingsBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          result.privileged_ = privileged_;
+          if (parametersBuilder_ == null) {
+            if (((bitField0_ & 0x00000010) == 0x00000010)) {
+              parameters_ = java.util.Collections.unmodifiableList(parameters_);
+              bitField0_ = (bitField0_ & ~0x00000010);
+            }
+            result.parameters_ = parameters_;
+          } else {
+            result.parameters_ = parametersBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+            to_bitField0_ |= 0x00000008;
+          }
+          result.forcePullImage_ = forcePullImage_;
+          if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+            to_bitField0_ |= 0x00000010;
+          }
+          result.volumeDriver_ = volumeDriver_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo) {
+            return mergeFrom((org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo other) {
+          if (other == org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.getDefaultInstance()) return this;
+          if (other.hasImage()) {
+            bitField0_ |= 0x00000001;
+            image_ = other.image_;
+            onChanged();
+          }
+          if (other.hasNetwork()) {
+            setNetwork(other.getNetwork());
+          }
+          if (portMappingsBuilder_ == null) {
+            if (!other.portMappings_.isEmpty()) {
+              if (portMappings_.isEmpty()) {
+                portMappings_ = other.portMappings_;
+                bitField0_ = (bitField0_ & ~0x00000004);
+              } else {
+                ensurePortMappingsIsMutable();
+                portMappings_.addAll(other.portMappings_);
+              }
+              onChanged();
+            }
+          } else {
+            if (!other.portMappings_.isEmpty()) {
+              if (portMappingsBuilder_.isEmpty()) {
+                portMappingsBuilder_.dispose();
+                portMappingsBuilder_ = null;
+                portMappings_ = other.portMappings_;
+                bitField0_ = (bitField0_ & ~0x00000004);
+                portMappingsBuilder_ = 
+                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                     getPortMappingsFieldBuilder() : null;
+              } else {
+                portMappingsBuilder_.addAllMessages(other.portMappings_);
+              }
+            }
+          }
+          if (other.hasPrivileged()) {
+            setPrivileged(other.getPrivileged());
+          }
+          if (parametersBuilder_ == null) {
+            if (!other.parameters_.isEmpty()) {
+              if (parameters_.isEmpty()) {
+                parameters_ = other.parameters_;
+                bitField0_ = (bitField0_ & ~0x00000010);
+              } else {
+                ensureParametersIsMutable();
+                parameters_.addAll(other.parameters_);
+              }
+              onChanged();
+            }
+          } else {
+            if (!other.parameters_.isEmpty()) {
+              if (parametersBuilder_.isEmpty()) {
+                parametersBuilder_.dispose();
+                parametersBuilder_ = null;
+                parameters_ = other.parameters_;
+                bitField0_ = (bitField0_ & ~0x00000010);
+                parametersBuilder_ = 
+                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                     getParametersFieldBuilder() : null;
+              } else {
+                parametersBuilder_.addAllMessages(other.parameters_);
+              }
+            }
+          }
+          if (other.hasForcePullImage()) {
+            setForcePullImage(other.getForcePullImage());
+          }
+          if (other.hasVolumeDriver()) {
+            bitField0_ |= 0x00000040;
+            volumeDriver_ = other.volumeDriver_;
+            onChanged();
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasImage()) {
+            
+            return false;
+          }
+          for (int i = 0; i < getPortMappingsCount(); i++) {
+            if (!getPortMappings(i).isInitialized()) {
+              
+              return false;
+            }
+          }
+          for (int i = 0; i < getParametersCount(); i++) {
+            if (!getParameters(i).isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required string image = 1;
+        private java.lang.Object image_ = "";
+        /**
+         * <code>required string image = 1;</code>
+         *
+         * <pre>
+         * The docker image that is going to be passed to the registry.
+         * </pre>
+         */
+        public boolean hasImage() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required string image = 1;</code>
+         *
+         * <pre>
+         * The docker image that is going to be passed to the registry.
+         * </pre>
+         */
+        public java.lang.String getImage() {
+          java.lang.Object ref = image_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            image_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>required string image = 1;</code>
+         *
+         * <pre>
+         * The docker image that is going to be passed to the registry.
+         * </pre>
+         */
+        public com.google.protobuf.ByteString
+            getImageBytes() {
+          java.lang.Object ref = image_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            image_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>required string image = 1;</code>
+         *
+         * <pre>
+         * The docker image that is going to be passed to the registry.
+         * </pre>
+         */
+        public Builder setImage(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          image_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required string image = 1;</code>
+         *
+         * <pre>
+         * The docker image that is going to be passed to the registry.
+         * </pre>
+         */
+        public Builder clearImage() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          image_ = getDefaultInstance().getImage();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required string image = 1;</code>
+         *
+         * <pre>
+         * The docker image that is going to be passed to the registry.
+         * </pre>
+         */
+        public Builder setImageBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          image_ = value;
+          onChanged();
+          return this;
+        }
+
+        // optional .mesos.v1.ContainerInfo.DockerInfo.Network network = 2 [default = HOST];
+        private org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.Network network_ = org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.Network.HOST;
+        /**
+         * <code>optional .mesos.v1.ContainerInfo.DockerInfo.Network network = 2 [default = HOST];</code>
+         */
+        public boolean hasNetwork() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional .mesos.v1.ContainerInfo.DockerInfo.Network network = 2 [default = HOST];</code>
+         */
+        public org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.Network getNetwork() {
+          return network_;
+        }
+        /**
+         * <code>optional .mesos.v1.ContainerInfo.DockerInfo.Network network = 2 [default = HOST];</code>
+         */
+        public Builder setNetwork(org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.Network value) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          bitField0_ |= 0x00000002;
+          network_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.ContainerInfo.DockerInfo.Network network = 2 [default = HOST];</code>
+         */
+        public Builder clearNetwork() {
+          bitField0_ = (bitField0_ & ~0x00000002);
+          network_ = org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.Network.HOST;
+          onChanged();
+          return this;
+        }
+
+        // repeated .mesos.v1.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;
+        private java.util.List<org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping> portMappings_ =
+          java.util.Collections.emptyList();
+        private void ensurePortMappingsIsMutable() {
+          if (!((bitField0_ & 0x00000004) == 0x00000004)) {
+            portMappings_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping>(portMappings_);
+            bitField0_ |= 0x00000004;
+           }
+        }
+
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping, org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping.Builder, org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMappingOrBuilder> portMappingsBuilder_;
+
+        /**
+         * <code>repeated .mesos.v1.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+         */
+        public java.util.List<org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping> getPortMappingsList() {
+          if (portMappingsBuilder_ == null) {
+            return java.util.Collections.unmodifiableList(portMappings_);
+          } else {
+            return portMappingsBuilder_.getMessageList();
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+         */
+        public int getPortMappingsCount() {
+          if (portMappingsBuilder_ == null) {
+            return portMappings_.size();
+          } else {
+            return portMappingsBuilder_.getCount();
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+         */
+        public org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping getPortMappings(int index) {
+          if (portMappingsBuilder_ == null) {
+            return portMappings_.get(index);
+          } else {
+            return portMappingsBuilder_.getMessage(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+         */
+        public Builder setPortMappings(
+            int index, org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping value) {
+          if (portMappingsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensurePortMappingsIsMutable();
+            portMappings_.set(index, value);
+            onChanged();
+          } else {
+            portMappingsBuilder_.setMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+         */
+        public Builder setPortMappings(
+            int index, org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping.Builder builderForValue) {
+          if (portMappingsBuilder_ == null) {
+            ensurePortMappingsIsMutable();
+            portMappings_.set(index, builderForValue.build());
+            onChanged();
+          } else {
+            portMappingsBuilder_.setMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+         */
+        public Builder addPortMappings(org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping value) {
+          if (portMappingsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensurePortMappingsIsMutable();
+            portMappings_.add(value);
+            onChanged();
+          } else {
+            portMappingsBuilder_.addMessage(value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+         */
+        public Builder addPortMappings(
+            int index, org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping value) {
+          if (portMappingsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensurePortMappingsIsMutable();
+            portMappings_.add(index, value);
+            onChanged();
+          } else {
+            portMappingsBuilder_.addMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+         */
+        public Builder addPortMappings(
+            org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping.Builder builderForValue) {
+          if (portMappingsBuilder_ == null) {
+            ensurePortMappingsIsMutable();
+            portMappings_.add(builderForValue.build());
+            onChanged();
+          } else {
+            portMappingsBuilder_.addMessage(builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+         */
+        public Builder addPortMappings(
+            int index, org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping.Builder builderForValue) {
+          if (portMappingsBuilder_ == null) {
+            ensurePortMappingsIsMutable();
+            portMappings_.add(index, builderForValue.build());
+            onChanged();
+          } else {
+            portMappingsBuilder_.addMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+         */
+        public Builder addAllPortMappings(
+            java.lang.Iterable<? extends org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping> values) {
+          if (portMappingsBuilder_ == null) {
+            ensurePortMappingsIsMutable();
+            super.addAll(values, portMappings_);
+            onChanged();
+          } else {
+            portMappingsBuilder_.addAllMessages(values);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+         */
+        public Builder clearPortMappings() {
+          if (portMappingsBuilder_ == null) {
+            portMappings_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000004);
+            onChanged();
+          } else {
+            portMappingsBuilder_.clear();
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+         */
+        public Builder removePortMappings(int index) {
+          if (portMappingsBuilder_ == null) {
+            ensurePortMappingsIsMutable();
+            portMappings_.remove(index);
+            onChanged();
+          } else {
+            portMappingsBuilder_.remove(index);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+         */
+        public org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping.Builder getPortMappingsBuilder(
+            int index) {
+          return getPortMappingsFieldBuilder().getBuilder(index);
+        }
+        /**
+         * <code>repeated .mesos.v1.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+         */
+        public org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMappingOrBuilder getPortMappingsOrBuilder(
+            int index) {
+          if (portMappingsBuilder_ == null) {
+            return portMappings_.get(index);  } else {
+            return portMappingsBuilder_.getMessageOrBuilder(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMappingOrBuilder> 
+             getPortMappingsOrBuilderList() {
+          if (portMappingsBuilder_ != null) {
+            return portMappingsBuilder_.getMessageOrBuilderList();
+          } else {
+            return java.util.Collections.unmodifiableList(portMappings_);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+         */
+        public org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping.Builder addPortMappingsBuilder() {
+          return getPortMappingsFieldBuilder().addBuilder(
+              org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.v1.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+         */
+        public org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping.Builder addPortMappingsBuilder(
+            int index) {
+          return getPortMappingsFieldBuilder().addBuilder(
+              index, org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.v1.ContainerInfo.DockerInfo.PortMapping port_mappings = 3;</code>
+         */
+        public java.util.List<org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping.Builder> 
+             getPortMappingsBuilderList() {
+          return getPortMappingsFieldBuilder().getBuilderList();
+        }
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping, org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping.Builder, org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMappingOrBuilder> 
+            getPortMappingsFieldBuilder() {
+          if (portMappingsBuilder_ == null) {
+            portMappingsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping, org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMapping.Builder, org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.PortMappingOrBuilder>(
+                    portMappings_,
+                    ((bitField0_ & 0x00000004) == 0x00000004),
+                    getParentForChildren(),
+                    isClean());
+            portMappings_ = null;
+          }
+          return portMappingsBuilder_;
+        }
+
+        // optional bool privileged = 4 [default = false];
+        private boolean privileged_ ;
+        /**
+         * <code>optional bool privileged = 4 [default = false];</code>
+         */
+        public boolean hasPrivileged() {
+          return ((bitField0_ & 0x00000008) == 0x00000008);
+        }
+        /**
+         * <code>optional bool privileged = 4 [default = false];</code>
+         */
+        public boolean getPrivileged() {
+          return privileged_;
+        }
+        /**
+         * <code>optional bool privileged = 4 [default = false];</code>
+         */
+        public Builder setPrivileged(boolean value) {
+          bitField0_ |= 0x00000008;
+          privileged_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional bool privileged = 4 [default = false];</code>
+         */
+        public Builder clearPrivileged() {
+          bitField0_ = (bitField0_ & ~0x00000008);
+          privileged_ = false;
+          onChanged();
+          return this;
+        }
+
+        // repeated .mesos.v1.Parameter parameters = 5;
+        private java.util.List<org.apache.mesos.v1.Protos.Parameter> parameters_ =
+          java.util.Collections.emptyList();
+        private void ensureParametersIsMutable() {
+          if (!((bitField0_ & 0x00000010) == 0x00000010)) {
+            parameters_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Parameter>(parameters_);
+            bitField0_ |= 0x00000010;
+           }
+        }
+
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.v1.Protos.Parameter, org.apache.mesos.v1.Protos.Parameter.Builder, org.apache.mesos.v1.Protos.ParameterOrBuilder> parametersBuilder_;
+
+        /**
+         * <code>repeated .mesos.v1.Parameter parameters = 5;</code>
+         *
+         * <pre>
+         * Allowing arbitrary parameters to be passed to docker CLI.
+         * Note that anything passed to this field is not guaranteed
+         * to be supported moving forward, as we might move away from
+         * the docker CLI.
+         * </pre>
+         */
+        public java.util.List<org.apache.mesos.v1.Protos.Parameter> getParametersList() {
+          if (parametersBuilder_ == null) {
+            return java.util.Collections.unmodifiableList(parameters_);
+          } else {
+            return parametersBuilder_.getMessageList();
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.Parameter parameters = 5;</code>
+         *
+         * <pre>
+         * Allowing arbitrary parameters to be passed to docker CLI.
+         * Note that anything passed to this field is not guaranteed
+         * to be supported moving forward, as we might move away from
+         * the docker CLI.
+         * </pre>
+         */
+        public int getParametersCount() {
+          if (parametersBuilder_ == null) {
+            return parameters_.size();
+          } else {
+            return parametersBuilder_.getCount();
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.Parameter parameters = 5;</code>
+         *
+         * <pre>
+         * Allowing arbitrary parameters to be passed to docker CLI.
+         * Note that anything passed to this field is not guaranteed
+         * to be supported moving forward, as we might move away from
+         * the docker CLI.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.Parameter getParameters(int index) {
+          if (parametersBuilder_ == null) {
+            return parameters_.get(index);
+          } else {
+            return parametersBuilder_.getMessage(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.Parameter parameters = 5;</code>
+         *
+         * <pre>
+         * Allowing arbitrary parameters to be passed to docker CLI.
+         * Note that anything passed to this field is not guaranteed
+         * to be supported moving forward, as we might move away from
+         * the docker CLI.
+         * </pre>
+         */
+        public Builder setParameters(
+            int index, org.apache.mesos.v1.Protos.Parameter value) {
+          if (parametersBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureParametersIsMutable();
+            parameters_.set(index, value);
+            onChanged();
+          } else {
+            parametersBuilder_.setMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Parameter parameters = 5;</code>
+         *
+         * <pre>
+         * Allowing arbitrary parameters to be passed to docker CLI.
+         * Note that anything passed to this field is not guaranteed
+         * to be supported moving forward, as we might move away from
+         * the docker CLI.
+         * </pre>
+         */
+        public Builder setParameters(
+            int index, org.apache.mesos.v1.Protos.Parameter.Builder builderForValue) {
+          if (parametersBuilder_ == null) {
+            ensureParametersIsMutable();
+            parameters_.set(index, builderForValue.build());
+            onChanged();
+          } else {
+            parametersBuilder_.setMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Parameter parameters = 5;</code>
+         *
+         * <pre>
+         * Allowing arbitrary parameters to be passed to docker CLI.
+         * Note that anything passed to this field is not guaranteed
+         * to be supported moving forward, as we might move away from
+         * the docker CLI.
+         * </pre>
+         */
+        public Builder addParameters(org.apache.mesos.v1.Protos.Parameter value) {
+          if (parametersBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureParametersIsMutable();
+            parameters_.add(value);
+            onChanged();
+          } else {
+            parametersBuilder_.addMessage(value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Parameter parameters = 5;</code>
+         *
+         * <pre>
+         * Allowing arbitrary parameters to be passed to docker CLI.
+         * Note that anything passed to this field is not guaranteed
+         * to be supported moving forward, as we might move away from
+         * the docker CLI.
+         * </pre>
+         */
+        public Builder addParameters(
+            int index, org.apache.mesos.v1.Protos.Parameter value) {
+          if (parametersBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureParametersIsMutable();
+            parameters_.add(index, value);
+            onChanged();
+          } else {
+            parametersBuilder_.addMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Parameter parameters = 5;</code>
+         *
+         * <pre>
+         * Allowing arbitrary parameters to be passed to docker CLI.
+         * Note that anything passed to this field is not guaranteed
+         * to be supported moving forward, as we might move away from
+         * the docker CLI.
+         * </pre>
+         */
+        public Builder addParameters(
+            org.apache.mesos.v1.Protos.Parameter.Builder builderForValue) {
+          if (parametersBuilder_ == null) {
+            ensureParametersIsMutable();
+            parameters_.add(builderForValue.build());
+            onChanged();
+          } else {
+            parametersBuilder_.addMessage(builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Parameter parameters = 5;</code>
+         *
+         * <pre>
+         * Allowing arbitrary parameters to be passed to docker CLI.
+         * Note that anything passed to this field is not guaranteed
+         * to be supported moving forward, as we might move away from
+         * the docker CLI.
+         * </pre>
+         */
+        public Builder addParameters(
+            int index, org.apache.mesos.v1.Protos.Parameter.Builder builderForValue) {
+          if (parametersBuilder_ == null) {
+            ensureParametersIsMutable();
+            parameters_.add(index, builderForValue.build());
+            onChanged();
+          } else {
+            parametersBuilder_.addMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Parameter parameters = 5;</code>
+         *
+         * <pre>
+         * Allowing arbitrary parameters to be passed to docker CLI.
+         * Note that anything passed to this field is not guaranteed
+         * to be supported moving forward, as we might move away from
+         * the docker CLI.
+         * </pre>
+         */
+        public Builder addAllParameters(
+            java.lang.Iterable<? extends org.apache.mesos.v1.Protos.Parameter> values) {
+          if (parametersBuilder_ == null) {
+            ensureParametersIsMutable();
+            super.addAll(values, parameters_);
+            onChanged();
+          } else {
+            parametersBuilder_.addAllMessages(values);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Parameter parameters = 5;</code>
+         *
+         * <pre>
+         * Allowing arbitrary parameters to be passed to docker CLI.
+         * Note that anything passed to this field is not guaranteed
+         * to be supported moving forward, as we might move away from
+         * the docker CLI.
+         * </pre>
+         */
+        public Builder clearParameters() {
+          if (parametersBuilder_ == null) {
+            parameters_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000010);
+            onChanged();
+          } else {
+            parametersBuilder_.clear();
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Parameter parameters = 5;</code>
+         *
+         * <pre>
+         * Allowing arbitrary parameters to be passed to docker CLI.
+         * Note that anything passed to this field is not guaranteed
+         * to be supported moving forward, as we might move away from
+         * the docker CLI.
+         * </pre>
+         */
+        public Builder removeParameters(int index) {
+          if (parametersBuilder_ == null) {
+            ensureParametersIsMutable();
+            parameters_.remove(index);
+            onChanged();
+          } else {
+            parametersBuilder_.remove(index);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Parameter parameters = 5;</code>
+         *
+         * <pre>
+         * Allowing arbitrary parameters to be passed to docker CLI.
+         * Note that anything passed to this field is not guaranteed
+         * to be supported moving forward, as we might move away from
+         * the docker CLI.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.Parameter.Builder getParametersBuilder(
+            int index) {
+          return getParametersFieldBuilder().getBuilder(index);
+        }
+        /**
+         * <code>repeated .mesos.v1.Parameter parameters = 5;</code>
+         *
+         * <pre>
+         * Allowing arbitrary parameters to be passed to docker CLI.
+         * Note that anything passed to this field is not guaranteed
+         * to be supported moving forward, as we might move away from
+         * the docker CLI.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.ParameterOrBuilder getParametersOrBuilder(
+            int index) {
+          if (parametersBuilder_ == null) {
+            return parameters_.get(index);  } else {
+            return parametersBuilder_.getMessageOrBuilder(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.Parameter parameters = 5;</code>
+         *
+         * <pre>
+         * Allowing arbitrary parameters to be passed to docker CLI.
+         * Note that anything passed to this field is not guaranteed
+         * to be supported moving forward, as we might move away from
+         * the docker CLI.
+         * </pre>
+         */
+        public java.util.List<? extends org.apache.mesos.v1.Protos.ParameterOrBuilder> 
+             getParametersOrBuilderList() {
+          if (parametersBuilder_ != null) {
+            return parametersBuilder_.getMessageOrBuilderList();
+          } else {
+            return java.util.Collections.unmodifiableList(parameters_);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.Parameter parameters = 5;</code>
+         *
+         * <pre>
+         * Allowing arbitrary parameters to be passed to docker CLI.
+         * Note that anything passed to this field is not guaranteed
+         * to be supported moving forward, as we might move away from
+         * the docker CLI.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.Parameter.Builder addParametersBuilder() {
+          return getParametersFieldBuilder().addBuilder(
+              org.apache.mesos.v1.Protos.Parameter.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.v1.Parameter parameters = 5;</code>
+         *
+         * <pre>
+         * Allowing arbitrary parameters to be passed to docker CLI.
+         * Note that anything passed to this field is not guaranteed
+         * to be supported moving forward, as we might move away from
+         * the docker CLI.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.Parameter.Builder addParametersBuilder(
+            int index) {
+          return getParametersFieldBuilder().addBuilder(
+              index, org.apache.mesos.v1.Protos.Parameter.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.v1.Parameter parameters = 5;</code>
+         *
+         * <pre>
+         * Allowing arbitrary parameters to be passed to docker CLI.
+         * Note that anything passed to this field is not guaranteed
+         * to be supported moving forward, as we might move away from
+         * the docker CLI.
+         * </pre>
+         */
+        public java.util.List<org.apache.mesos.v1.Protos.Parameter.Builder> 
+             getParametersBuilderList() {
+          return getParametersFieldBuilder().getBuilderList();
+        }
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.v1.Protos.Parameter, org.apache.mesos.v1.Protos.Parameter.Builder, org.apache.mesos.v1.Protos.ParameterOrBuilder> 
+            getParametersFieldBuilder() {
+          if (parametersBuilder_ == null) {
+            parametersBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.v1.Protos.Parameter, org.apache.mesos.v1.Protos.Parameter.Builder, org.apache.mesos.v1.Protos.ParameterOrBuilder>(
+                    parameters_,
+                    ((bitField0_ & 0x00000010) == 0x00000010),
+                    getParentForChildren(),
+                    isClean());
+            parameters_ = null;
+          }
+          return parametersBuilder_;
+        }
+
+        // optional bool force_pull_image = 6;
+        private boolean forcePullImage_ ;
+        /**
+         * <code>optional bool force_pull_image = 6;</code>
+         *
+         * <pre>
+         * With this flag set to true, the docker containerizer will
+         * pull the docker image from the registry even if the image
+         * is already downloaded on the agent.
+         * </pre>
+         */
+        public boolean hasForcePullImage() {
+          return ((bitField0_ & 0x00000020) == 0x00000020);
+        }
+        /**
+         * <code>optional bool force_pull_image = 6;</code>
+         *
+         * <pre>
+         * With this flag set to true, the docker containerizer will
+         * pull the docker image from the registry even if the image
+         * is already downloaded on the agent.
+         * </pre>
+         */
+        public boolean getForcePullImage() {
+          return forcePullImage_;
+        }
+        /**
+         * <code>optional bool force_pull_image = 6;</code>
+         *
+         * <pre>
+         * With this flag set to true, the docker containerizer will
+         * pull the docker image from the registry even if the image
+         * is already downloaded on the agent.
+         * </pre>
+         */
+        public Builder setForcePullImage(boolean value) {
+          bitField0_ |= 0x00000020;
+          forcePullImage_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional bool force_pull_image = 6;</code>
+         *
+         * <pre>
+         * With this flag set to true, the docker containerizer will
+         * pull the docker image from the registry even if the image
+         * is already downloaded on the agent.
+         * </pre>
+         */
+        public Builder clearForcePullImage() {
+          bitField0_ = (bitField0_ & ~0x00000020);
+          forcePullImage_ = false;
+          onChanged();
+          return this;
+        }
+
+        // optional string volume_driver = 7 [deprecated = true];
+        private java.lang.Object volumeDriver_ = "";
+        /**
+         * <code>optional string volume_driver = 7 [deprecated = true];</code>
+         *
+         * <pre>
+         * The name of volume driver plugin.
+         * </pre>
+         */
+        @java.lang.Deprecated public boolean hasVolumeDriver() {
+          return ((bitField0_ & 0x00000040) == 0x00000040);
+        }
+        /**
+         * <code>optional string volume_driver = 7 [deprecated = true];</code>
+         *
+         * <pre>
+         * The name of volume driver plugin.
+         * </pre>
+         */
+        @java.lang.Deprecated public java.lang.String getVolumeDriver() {
+          java.lang.Object ref = volumeDriver_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            volumeDriver_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>optional string volume_driver = 7 [deprecated = true];</code>
+         *
+         * <pre>
+         * The name of volume driver plugin.
+         * </pre>
+         */
+        @java.lang.Deprecated public com.google.protobuf.ByteString
+            getVolumeDriverBytes() {
+          java.lang.Object ref = volumeDriver_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            volumeDriver_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>optional string volume_driver = 7 [deprecated = true];</code>
+         *
+         * <pre>
+         * The name of volume driver plugin.
+         * </pre>
+         */
+        @java.lang.Deprecated public Builder setVolumeDriver(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000040;
+          volumeDriver_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string volume_driver = 7 [deprecated = true];</code>
+         *
+         * <pre>
+         * The name of volume driver plugin.
+         * </pre>
+         */
+        @java.lang.Deprecated public Builder clearVolumeDriver() {
+          bitField0_ = (bitField0_ & ~0x00000040);
+          volumeDriver_ = getDefaultInstance().getVolumeDriver();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string volume_driver = 7 [deprecated = true];</code>
+         *
+         * <pre>
+         * The name of volume driver plugin.
+         * </pre>
+         */
+        @java.lang.Deprecated public Builder setVolumeDriverBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000040;
+          volumeDriver_ = value;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.ContainerInfo.DockerInfo)
+      }
+
+      static {
+        defaultInstance = new DockerInfo(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.ContainerInfo.DockerInfo)
+    }
+
+    public interface MesosInfoOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // optional .mesos.v1.Image image = 1;
+      /**
+       * <code>optional .mesos.v1.Image image = 1;</code>
+       */
+      boolean hasImage();
+      /**
+       * <code>optional .mesos.v1.Image image = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.Image getImage();
+      /**
+       * <code>optional .mesos.v1.Image image = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.ImageOrBuilder getImageOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.ContainerInfo.MesosInfo}
+     */
+    public static final class MesosInfo extends
+        com.google.protobuf.GeneratedMessage
+        implements MesosInfoOrBuilder {
+      // Use MesosInfo.newBuilder() to construct.
+      private MesosInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private MesosInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final MesosInfo defaultInstance;
+      public static MesosInfo getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public MesosInfo getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private MesosInfo(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.v1.Protos.Image.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = image_.toBuilder();
+                }
+                image_ = input.readMessage(org.apache.mesos.v1.Protos.Image.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(image_);
+                  image_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ContainerInfo_MesosInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ContainerInfo_MesosInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo.class, org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<MesosInfo> PARSER =
+          new com.google.protobuf.AbstractParser<MesosInfo>() {
+        public MesosInfo parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new MesosInfo(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<MesosInfo> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // optional .mesos.v1.Image image = 1;
+      public static final int IMAGE_FIELD_NUMBER = 1;
+      private org.apache.mesos.v1.Protos.Image image_;
+      /**
+       * <code>optional .mesos.v1.Image image = 1;</code>
+       */
+      public boolean hasImage() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.v1.Image image = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.Image getImage() {
+        return image_;
+      }
+      /**
+       * <code>optional .mesos.v1.Image image = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.ImageOrBuilder getImageOrBuilder() {
+        return image_;
+      }
+
+      private void initFields() {
+        image_ = org.apache.mesos.v1.Protos.Image.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (hasImage()) {
+          if (!getImage().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, image_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, image_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.ContainerInfo.MesosInfo}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.Protos.ContainerInfo.MesosInfoOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ContainerInfo_MesosInfo_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ContainerInfo_MesosInfo_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo.class, org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getImageFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (imageBuilder_ == null) {
+            image_ = org.apache.mesos.v1.Protos.Image.getDefaultInstance();
+          } else {
+            imageBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ContainerInfo_MesosInfo_descriptor;
+        }
+
+        public org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo getDefaultInstanceForType() {
+          return org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo build() {
+          org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo buildPartial() {
+          org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo result = new org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (imageBuilder_ == null) {
+            result.image_ = image_;
+          } else {
+            result.image_ = imageBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo) {
+            return mergeFrom((org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo other) {
+          if (other == org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo.getDefaultInstance()) return this;
+          if (other.hasImage()) {
+            mergeImage(other.getImage());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (hasImage()) {
+            if (!getImage().isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // optional .mesos.v1.Image image = 1;
+        private org.apache.mesos.v1.Protos.Image image_ = org.apache.mesos.v1.Protos.Image.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Image, org.apache.mesos.v1.Protos.Image.Builder, org.apache.mesos.v1.Protos.ImageOrBuilder> imageBuilder_;
+        /**
+         * <code>optional .mesos.v1.Image image = 1;</code>
+         */
+        public boolean hasImage() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional .mesos.v1.Image image = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.Image getImage() {
+          if (imageBuilder_ == null) {
+            return image_;
+          } else {
+            return imageBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Image image = 1;</code>
+         */
+        public Builder setImage(org.apache.mesos.v1.Protos.Image value) {
+          if (imageBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            image_ = value;
+            onChanged();
+          } else {
+            imageBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Image image = 1;</code>
+         */
+        public Builder setImage(
+            org.apache.mesos.v1.Protos.Image.Builder builderForValue) {
+          if (imageBuilder_ == null) {
+            image_ = builderForValue.build();
+            onChanged();
+          } else {
+            imageBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Image image = 1;</code>
+         */
+        public Builder mergeImage(org.apache.mesos.v1.Protos.Image value) {
+          if (imageBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                image_ != org.apache.mesos.v1.Protos.Image.getDefaultInstance()) {
+              image_ =
+                org.apache.mesos.v1.Protos.Image.newBuilder(image_).mergeFrom(value).buildPartial();
+            } else {
+              image_ = value;
+            }
+            onChanged();
+          } else {
+            imageBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Image image = 1;</code>
+         */
+        public Builder clearImage() {
+          if (imageBuilder_ == null) {
+            image_ = org.apache.mesos.v1.Protos.Image.getDefaultInstance();
+            onChanged();
+          } else {
+            imageBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Image image = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.Image.Builder getImageBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getImageFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.v1.Image image = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.ImageOrBuilder getImageOrBuilder() {
+          if (imageBuilder_ != null) {
+            return imageBuilder_.getMessageOrBuilder();
+          } else {
+            return image_;
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Image image = 1;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Image, org.apache.mesos.v1.Protos.Image.Builder, org.apache.mesos.v1.Protos.ImageOrBuilder> 
+            getImageFieldBuilder() {
+          if (imageBuilder_ == null) {
+            imageBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.Image, org.apache.mesos.v1.Protos.Image.Builder, org.apache.mesos.v1.Protos.ImageOrBuilder>(
+                    image_,
+                    getParentForChildren(),
+                    isClean());
+            image_ = null;
+          }
+          return imageBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.ContainerInfo.MesosInfo)
+      }
+
+      static {
+        defaultInstance = new MesosInfo(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.ContainerInfo.MesosInfo)
+    }
+
+    private int bitField0_;
+    // required .mesos.v1.ContainerInfo.Type type = 1;
+    public static final int TYPE_FIELD_NUMBER = 1;
+    private org.apache.mesos.v1.Protos.ContainerInfo.Type type_;
+    /**
+     * <code>required .mesos.v1.ContainerInfo.Type type = 1;</code>
+     */
+    public boolean hasType() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required .mesos.v1.ContainerInfo.Type type = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.ContainerInfo.Type getType() {
+      return type_;
+    }
+
+    // repeated .mesos.v1.Volume volumes = 2;
+    public static final int VOLUMES_FIELD_NUMBER = 2;
+    private java.util.List<org.apache.mesos.v1.Protos.Volume> volumes_;
+    /**
+     * <code>repeated .mesos.v1.Volume volumes = 2;</code>
+     */
+    public java.util.List<org.apache.mesos.v1.Protos.Volume> getVolumesList() {
+      return volumes_;
+    }
+    /**
+     * <code>repeated .mesos.v1.Volume volumes = 2;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.v1.Protos.VolumeOrBuilder> 
+        getVolumesOrBuilderList() {
+      return volumes_;
+    }
+    /**
+     * <code>repeated .mesos.v1.Volume volumes = 2;</code>
+     */
+    public int getVolumesCount() {
+      return volumes_.size();
+    }
+    /**
+     * <code>repeated .mesos.v1.Volume volumes = 2;</code>
+     */
+    public org.apache.mesos.v1.Protos.Volume getVolumes(int index) {
+      return volumes_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.v1.Volume volumes = 2;</code>
+     */
+    public org.apache.mesos.v1.Protos.VolumeOrBuilder getVolumesOrBuilder(
+        int index) {
+      return volumes_.get(index);
+    }
+
+    // optional string hostname = 4;
+    public static final int HOSTNAME_FIELD_NUMBER = 4;
+    private java.lang.Object hostname_;
+    /**
+     * <code>optional string hostname = 4;</code>
+     */
+    public boolean hasHostname() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional string hostname = 4;</code>
+     */
+    public java.lang.String getHostname() {
+      java.lang.Object ref = hostname_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          hostname_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string hostname = 4;</code>
+     */
+    public com.google.protobuf.ByteString
+        getHostnameBytes() {
+      java.lang.Object ref = hostname_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        hostname_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional .mesos.v1.ContainerInfo.DockerInfo docker = 3;
+    public static final int DOCKER_FIELD_NUMBER = 3;
+    private org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo docker_;
+    /**
+     * <code>optional .mesos.v1.ContainerInfo.DockerInfo docker = 3;</code>
+     *
+     * <pre>
+     * Only one of the following *Info messages should be set to match
+     * the type.
+     * </pre>
+     */
+    public boolean hasDocker() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional .mesos.v1.ContainerInfo.DockerInfo docker = 3;</code>
+     *
+     * <pre>
+     * Only one of the following *Info messages should be set to match
+     * the type.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo getDocker() {
+      return docker_;
+    }
+    /**
+     * <code>optional .mesos.v1.ContainerInfo.DockerInfo docker = 3;</code>
+     *
+     * <pre>
+     * Only one of the following *Info messages should be set to match
+     * the type.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.ContainerInfo.DockerInfoOrBuilder getDockerOrBuilder() {
+      return docker_;
+    }
+
+    // optional .mesos.v1.ContainerInfo.MesosInfo mesos = 5;
+    public static final int MESOS_FIELD_NUMBER = 5;
+    private org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo mesos_;
+    /**
+     * <code>optional .mesos.v1.ContainerInfo.MesosInfo mesos = 5;</code>
+     */
+    public boolean hasMesos() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional .mesos.v1.ContainerInfo.MesosInfo mesos = 5;</code>
+     */
+    public org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo getMesos() {
+      return mesos_;
+    }
+    /**
+     * <code>optional .mesos.v1.ContainerInfo.MesosInfo mesos = 5;</code>
+     */
+    public org.apache.mesos.v1.Protos.ContainerInfo.MesosInfoOrBuilder getMesosOrBuilder() {
+      return mesos_;
+    }
+
+    // repeated .mesos.v1.NetworkInfo network_infos = 7;
+    public static final int NETWORK_INFOS_FIELD_NUMBER = 7;
+    private java.util.List<org.apache.mesos.v1.Protos.NetworkInfo> networkInfos_;
+    /**
+     * <code>repeated .mesos.v1.NetworkInfo network_infos = 7;</code>
+     *
+     * <pre>
+     * A list of network requests. A framework can request multiple IP addresses
+     * for the container.
+     * </pre>
+     */
+    public java.util.List<org.apache.mesos.v1.Protos.NetworkInfo> getNetworkInfosList() {
+      return networkInfos_;
+    }
+    /**
+     * <code>repeated .mesos.v1.NetworkInfo network_infos = 7;</code>
+     *
+     * <pre>
+     * A list of network requests. A framework can request multiple IP addresses
+     * for the container.
+     * </pre>
+     */
+    public java.util.List<? extends org.apache.mesos.v1.Protos.NetworkInfoOrBuilder> 
+        getNetworkInfosOrBuilderList() {
+      return networkInfos_;
+    }
+    /**
+     * <code>repeated .mesos.v1.NetworkInfo network_infos = 7;</code>
+     *
+     * <pre>
+     * A list of network requests. A framework can request multiple IP addresses
+     * for the container.
+     * </pre>
+     */
+    public int getNetworkInfosCount() {
+      return networkInfos_.size();
+    }
+    /**
+     * <code>repeated .mesos.v1.NetworkInfo network_infos = 7;</code>
+     *
+     * <pre>
+     * A list of network requests. A framework can request multiple IP addresses
+     * for the container.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.NetworkInfo getNetworkInfos(int index) {
+      return networkInfos_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.v1.NetworkInfo network_infos = 7;</code>
+     *
+     * <pre>
+     * A list of network requests. A framework can request multiple IP addresses
+     * for the container.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.NetworkInfoOrBuilder getNetworkInfosOrBuilder(
+        int index) {
+      return networkInfos_.get(index);
+    }
+
+    // optional .mesos.v1.LinuxInfo linux_info = 8;
+    public static final int LINUX_INFO_FIELD_NUMBER = 8;
+    private org.apache.mesos.v1.Protos.LinuxInfo linuxInfo_;
+    /**
+     * <code>optional .mesos.v1.LinuxInfo linux_info = 8;</code>
+     *
+     * <pre>
+     * Linux specific information for the container.
+     * </pre>
+     */
+    public boolean hasLinuxInfo() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional .mesos.v1.LinuxInfo linux_info = 8;</code>
+     *
+     * <pre>
+     * Linux specific information for the container.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.LinuxInfo getLinuxInfo() {
+      return linuxInfo_;
+    }
+    /**
+     * <code>optional .mesos.v1.LinuxInfo linux_info = 8;</code>
+     *
+     * <pre>
+     * Linux specific information for the container.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.LinuxInfoOrBuilder getLinuxInfoOrBuilder() {
+      return linuxInfo_;
+    }
+
+    // optional .mesos.v1.RLimitInfo rlimit_info = 9;
+    public static final int RLIMIT_INFO_FIELD_NUMBER = 9;
+    private org.apache.mesos.v1.Protos.RLimitInfo rlimitInfo_;
+    /**
+     * <code>optional .mesos.v1.RLimitInfo rlimit_info = 9;</code>
+     *
+     * <pre>
+     * (POSIX only) rlimits of the container.
+     * </pre>
+     */
+    public boolean hasRlimitInfo() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional .mesos.v1.RLimitInfo rlimit_info = 9;</code>
+     *
+     * <pre>
+     * (POSIX only) rlimits of the container.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.RLimitInfo getRlimitInfo() {
+      return rlimitInfo_;
+    }
+    /**
+     * <code>optional .mesos.v1.RLimitInfo rlimit_info = 9;</code>
+     *
+     * <pre>
+     * (POSIX only) rlimits of the container.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.RLimitInfoOrBuilder getRlimitInfoOrBuilder() {
+      return rlimitInfo_;
+    }
+
+    // optional .mesos.v1.TTYInfo tty_info = 10;
+    public static final int TTY_INFO_FIELD_NUMBER = 10;
+    private org.apache.mesos.v1.Protos.TTYInfo ttyInfo_;
+    /**
+     * <code>optional .mesos.v1.TTYInfo tty_info = 10;</code>
+     *
+     * <pre>
+     * If specified a tty will be attached to the container entrypoint.
+     * </pre>
+     */
+    public boolean hasTtyInfo() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional .mesos.v1.TTYInfo tty_info = 10;</code>
+     *
+     * <pre>
+     * If specified a tty will be attached to the container entrypoint.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.TTYInfo getTtyInfo() {
+      return ttyInfo_;
+    }
+    /**
+     * <code>optional .mesos.v1.TTYInfo tty_info = 10;</code>
+     *
+     * <pre>
+     * If specified a tty will be attached to the container entrypoint.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.TTYInfoOrBuilder getTtyInfoOrBuilder() {
+      return ttyInfo_;
+    }
+
+    private void initFields() {
+      type_ = org.apache.mesos.v1.Protos.ContainerInfo.Type.DOCKER;
+      volumes_ = java.util.Collections.emptyList();
+      hostname_ = "";
+      docker_ = org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.getDefaultInstance();
+      mesos_ = org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo.getDefaultInstance();
+      networkInfos_ = java.util.Collections.emptyList();
+      linuxInfo_ = org.apache.mesos.v1.Protos.LinuxInfo.getDefaultInstance();
+      rlimitInfo_ = org.apache.mesos.v1.Protos.RLimitInfo.getDefaultInstance();
+      ttyInfo_ = org.apache.mesos.v1.Protos.TTYInfo.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasType()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      for (int i = 0; i < getVolumesCount(); i++) {
+        if (!getVolumes(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasDocker()) {
+        if (!getDocker().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasMesos()) {
+        if (!getMesos().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      for (int i = 0; i < getNetworkInfosCount(); i++) {
+        if (!getNetworkInfos(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasTtyInfo()) {
+        if (!getTtyInfo().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeEnum(1, type_.getNumber());
+      }
+      for (int i = 0; i < volumes_.size(); i++) {
+        output.writeMessage(2, volumes_.get(i));
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeMessage(3, docker_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(4, getHostnameBytes());
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeMessage(5, mesos_);
+      }
+      for (int i = 0; i < networkInfos_.size(); i++) {
+        output.writeMessage(7, networkInfos_.get(i));
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeMessage(8, linuxInfo_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeMessage(9, rlimitInfo_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeMessage(10, ttyInfo_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(1, type_.getNumber());
+      }
+      for (int i = 0; i < volumes_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, volumes_.get(i));
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, docker_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(4, getHostnameBytes());
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(5, mesos_);
+      }
+      for (int i = 0; i < networkInfos_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(7, networkInfos_.get(i));
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(8, linuxInfo_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(9, rlimitInfo_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(10, ttyInfo_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.ContainerInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.ContainerInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.ContainerInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.ContainerInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.ContainerInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.ContainerInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.ContainerInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.ContainerInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.ContainerInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.ContainerInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.ContainerInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.ContainerInfo}
+     *
+     * <pre>
+     **
+     * Describes a container configuration and allows extensible
+     * configurations for different container implementations.
+     *
+     * NOTE: `ContainerInfo` may be specified, e.g., by a task, even if no
+     * container image is provided. In this case neither `MesosInfo` nor
+     * `DockerInfo` is set, the required `type` must be `MESOS`. This is to
+     * address a case when a task without an image, e.g., a shell script
+     * with URIs, wants to use features originally designed for containers,
+     * for example custom network isolation via `NetworkInfo`.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.ContainerInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ContainerInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ContainerInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.ContainerInfo.class, org.apache.mesos.v1.Protos.ContainerInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.ContainerInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getVolumesFieldBuilder();
+          getDockerFieldBuilder();
+          getMesosFieldBuilder();
+          getNetworkInfosFieldBuilder();
+          getLinuxInfoFieldBuilder();
+          getRlimitInfoFieldBuilder();
+          getTtyInfoFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        type_ = org.apache.mesos.v1.Protos.ContainerInfo.Type.DOCKER;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (volumesBuilder_ == null) {
+          volumes_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000002);
+        } else {
+          volumesBuilder_.clear();
+        }
+        hostname_ = "";
+        bitField0_ = (bitField0_ & ~0x00000004);
+        if (dockerBuilder_ == null) {
+          docker_ = org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.getDefaultInstance();
+        } else {
+          dockerBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        if (mesosBuilder_ == null) {
+          mesos_ = org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo.getDefaultInstance();
+        } else {
+          mesosBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        if (networkInfosBuilder_ == null) {
+          networkInfos_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000020);
+        } else {
+          networkInfosBuilder_.clear();
+        }
+        if (linuxInfoBuilder_ == null) {
+          linuxInfo_ = org.apache.mesos.v1.Protos.LinuxInfo.getDefaultInstance();
+        } else {
+          linuxInfoBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000040);
+        if (rlimitInfoBuilder_ == null) {
+          rlimitInfo_ = org.apache.mesos.v1.Protos.RLimitInfo.getDefaultInstance();
+        } else {
+          rlimitInfoBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000080);
+        if (ttyInfoBuilder_ == null) {
+          ttyInfo_ = org.apache.mesos.v1.Protos.TTYInfo.getDefaultInstance();
+        } else {
+          ttyInfoBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000100);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ContainerInfo_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.ContainerInfo getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.ContainerInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.ContainerInfo build() {
+        org.apache.mesos.v1.Protos.ContainerInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.ContainerInfo buildPartial() {
+        org.apache.mesos.v1.Protos.ContainerInfo result = new org.apache.mesos.v1.Protos.ContainerInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.type_ = type_;
+        if (volumesBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            volumes_ = java.util.Collections.unmodifiableList(volumes_);
+            bitField0_ = (bitField0_ & ~0x00000002);
+          }
+          result.volumes_ = volumes_;
+        } else {
+          result.volumes_ = volumesBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.hostname_ = hostname_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        if (dockerBuilder_ == null) {
+          result.docker_ = docker_;
+        } else {
+          result.docker_ = dockerBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        if (mesosBuilder_ == null) {
+          result.mesos_ = mesos_;
+        } else {
+          result.mesos_ = mesosBuilder_.build();
+        }
+        if (networkInfosBuilder_ == null) {
+          if (((bitField0_ & 0x00000020) == 0x00000020)) {
+            networkInfos_ = java.util.Collections.unmodifiableList(networkInfos_);
+            bitField0_ = (bitField0_ & ~0x00000020);
+          }
+          result.networkInfos_ = networkInfos_;
+        } else {
+          result.networkInfos_ = networkInfosBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        if (linuxInfoBuilder_ == null) {
+          result.linuxInfo_ = linuxInfo_;
+        } else {
+          result.linuxInfo_ = linuxInfoBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        if (rlimitInfoBuilder_ == null) {
+          result.rlimitInfo_ = rlimitInfo_;
+        } else {
+          result.rlimitInfo_ = rlimitInfoBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        if (ttyInfoBuilder_ == null) {
+          result.ttyInfo_ = ttyInfo_;
+        } else {
+          result.ttyInfo_ = ttyInfoBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.ContainerInfo) {
+          return mergeFrom((org.apache.mesos.v1.Protos.ContainerInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.ContainerInfo other) {
+        if (other == org.apache.mesos.v1.Protos.ContainerInfo.getDefaultInstance()) return this;
+        if (other.hasType()) {
+          setType(other.getType());
+        }
+        if (volumesBuilder_ == null) {
+          if (!other.volumes_.isEmpty()) {
+            if (volumes_.isEmpty()) {
+              volumes_ = other.volumes_;
+              bitField0_ = (bitField0_ & ~0x00000002);
+            } else {
+              ensureVolumesIsMutable();
+              volumes_.addAll(other.volumes_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.volumes_.isEmpty()) {
+            if (volumesBuilder_.isEmpty()) {
+              volumesBuilder_.dispose();
+              volumesBuilder_ = null;
+              volumes_ = other.volumes_;
+              bitField0_ = (bitField0_ & ~0x00000002);
+              volumesBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getVolumesFieldBuilder() : null;
+            } else {
+              volumesBuilder_.addAllMessages(other.volumes_);
+            }
+          }
+        }
+        if (other.hasHostname()) {
+          bitField0_ |= 0x00000004;
+          hostname_ = other.hostname_;
+          onChanged();
+        }
+        if (other.hasDocker()) {
+          mergeDocker(other.getDocker());
+        }
+        if (other.hasMesos()) {
+          mergeMesos(other.getMesos());
+        }
+        if (networkInfosBuilder_ == null) {
+          if (!other.networkInfos_.isEmpty()) {
+            if (networkInfos_.isEmpty()) {
+              networkInfos_ = other.networkInfos_;
+              bitField0_ = (bitField0_ & ~0x00000020);
+            } else {
+              ensureNetworkInfosIsMutable();
+              networkInfos_.addAll(other.networkInfos_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.networkInfos_.isEmpty()) {
+            if (networkInfosBuilder_.isEmpty()) {
+              networkInfosBuilder_.dispose();
+              networkInfosBuilder_ = null;
+              networkInfos_ = other.networkInfos_;
+              bitField0_ = (bitField0_ & ~0x00000020);
+              networkInfosBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getNetworkInfosFieldBuilder() : null;
+            } else {
+              networkInfosBuilder_.addAllMessages(other.networkInfos_);
+            }
+          }
+        }
+        if (other.hasLinuxInfo()) {
+          mergeLinuxInfo(other.getLinuxInfo());
+        }
+        if (other.hasRlimitInfo()) {
+          mergeRlimitInfo(other.getRlimitInfo());
+        }
+        if (other.hasTtyInfo()) {
+          mergeTtyInfo(other.getTtyInfo());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasType()) {
+          
+          return false;
+        }
+        for (int i = 0; i < getVolumesCount(); i++) {
+          if (!getVolumes(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasDocker()) {
+          if (!getDocker().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasMesos()) {
+          if (!getMesos().isInitialized()) {
+            
+            return false;
+          }
+        }
+        for (int i = 0; i < getNetworkInfosCount(); i++) {
+          if (!getNetworkInfos(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasTtyInfo()) {
+          if (!getTtyInfo().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.ContainerInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.ContainerInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required .mesos.v1.ContainerInfo.Type type = 1;
+      private org.apache.mesos.v1.Protos.ContainerInfo.Type type_ = org.apache.mesos.v1.Protos.ContainerInfo.Type.DOCKER;
+      /**
+       * <code>required .mesos.v1.ContainerInfo.Type type = 1;</code>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.v1.ContainerInfo.Type type = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.ContainerInfo.Type getType() {
+        return type_;
+      }
+      /**
+       * <code>required .mesos.v1.ContainerInfo.Type type = 1;</code>
+       */
+      public Builder setType(org.apache.mesos.v1.Protos.ContainerInfo.Type value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000001;
+        type_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.ContainerInfo.Type type = 1;</code>
+       */
+      public Builder clearType() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        type_ = org.apache.mesos.v1.Protos.ContainerInfo.Type.DOCKER;
+        onChanged();
+        return this;
+      }
+
+      // repeated .mesos.v1.Volume volumes = 2;
+      private java.util.List<org.apache.mesos.v1.Protos.Volume> volumes_ =
+        java.util.Collections.emptyList();
+      private void ensureVolumesIsMutable() {
+        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
+          volumes_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Volume>(volumes_);
+          bitField0_ |= 0x00000002;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.Volume, org.apache.mesos.v1.Protos.Volume.Builder, org.apache.mesos.v1.Protos.VolumeOrBuilder> volumesBuilder_;
+
+      /**
+       * <code>repeated .mesos.v1.Volume volumes = 2;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Volume> getVolumesList() {
+        if (volumesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(volumes_);
+        } else {
+          return volumesBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Volume volumes = 2;</code>
+       */
+      public int getVolumesCount() {
+        if (volumesBuilder_ == null) {
+          return volumes_.size();
+        } else {
+          return volumesBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Volume volumes = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.Volume getVolumes(int index) {
+        if (volumesBuilder_ == null) {
+          return volumes_.get(index);
+        } else {
+          return volumesBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Volume volumes = 2;</code>
+       */
+      public Builder setVolumes(
+          int index, org.apache.mesos.v1.Protos.Volume value) {
+        if (volumesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureVolumesIsMutable();
+          volumes_.set(index, value);
+          onChanged();
+        } else {
+          volumesBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Volume volumes = 2;</code>
+       */
+      public Builder setVolumes(
+          int index, org.apache.mesos.v1.Protos.Volume.Builder builderForValue) {
+        if (volumesBuilder_ == null) {
+          ensureVolumesIsMutable();
+          volumes_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          volumesBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Volume volumes = 2;</code>
+       */
+      public Builder addVolumes(org.apache.mesos.v1.Protos.Volume value) {
+        if (volumesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureVolumesIsMutable();
+          volumes_.add(value);
+          onChanged();
+        } else {
+          volumesBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Volume volumes = 2;</code>
+       */
+      public Builder addVolumes(
+          int index, org.apache.mesos.v1.Protos.Volume value) {
+        if (volumesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureVolumesIsMutable();
+          volumes_.add(index, value);
+          onChanged();
+        } else {
+          volumesBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Volume volumes = 2;</code>
+       */
+      public Builder addVolumes(
+          org.apache.mesos.v1.Protos.Volume.Builder builderForValue) {
+        if (volumesBuilder_ == null) {
+          ensureVolumesIsMutable();
+          volumes_.add(builderForValue.build());
+          onChanged();
+        } else {
+          volumesBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Volume volumes = 2;</code>
+       */
+      public Builder addVolumes(
+          int index, org.apache.mesos.v1.Protos.Volume.Builder builderForValue) {
+        if (volumesBuilder_ == null) {
+          ensureVolumesIsMutable();
+          volumes_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          volumesBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Volume volumes = 2;</code>
+       */
+      public Builder addAllVolumes(
+          java.lang.Iterable<? extends org.apache.mesos.v1.Protos.Volume> values) {
+        if (volumesBuilder_ == null) {
+          ensureVolumesIsMutable();
+          super.addAll(values, volumes_);
+          onChanged();
+        } else {
+          volumesBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Volume volumes = 2;</code>
+       */
+      public Builder clearVolumes() {
+        if (volumesBuilder_ == null) {
+          volumes_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000002);
+          onChanged();
+        } else {
+          volumesBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Volume volumes = 2;</code>
+       */
+      public Builder removeVolumes(int index) {
+        if (volumesBuilder_ == null) {
+          ensureVolumesIsMutable();
+          volumes_.remove(index);
+          onChanged();
+        } else {
+          volumesBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Volume volumes = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.Volume.Builder getVolumesBuilder(
+          int index) {
+        return getVolumesFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.Volume volumes = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.VolumeOrBuilder getVolumesOrBuilder(
+          int index) {
+        if (volumesBuilder_ == null) {
+          return volumes_.get(index);  } else {
+          return volumesBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Volume volumes = 2;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.VolumeOrBuilder> 
+           getVolumesOrBuilderList() {
+        if (volumesBuilder_ != null) {
+          return volumesBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(volumes_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Volume volumes = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.Volume.Builder addVolumesBuilder() {
+        return getVolumesFieldBuilder().addBuilder(
+            org.apache.mesos.v1.Protos.Volume.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.Volume volumes = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.Volume.Builder addVolumesBuilder(
+          int index) {
+        return getVolumesFieldBuilder().addBuilder(
+            index, org.apache.mesos.v1.Protos.Volume.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.Volume volumes = 2;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Volume.Builder> 
+           getVolumesBuilderList() {
+        return getVolumesFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.Volume, org.apache.mesos.v1.Protos.Volume.Builder, org.apache.mesos.v1.Protos.VolumeOrBuilder> 
+          getVolumesFieldBuilder() {
+        if (volumesBuilder_ == null) {
+          volumesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.Volume, org.apache.mesos.v1.Protos.Volume.Builder, org.apache.mesos.v1.Protos.VolumeOrBuilder>(
+                  volumes_,
+                  ((bitField0_ & 0x00000002) == 0x00000002),
+                  getParentForChildren(),
+                  isClean());
+          volumes_ = null;
+        }
+        return volumesBuilder_;
+      }
+
+      // optional string hostname = 4;
+      private java.lang.Object hostname_ = "";
+      /**
+       * <code>optional string hostname = 4;</code>
+       */
+      public boolean hasHostname() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional string hostname = 4;</code>
+       */
+      public java.lang.String getHostname() {
+        java.lang.Object ref = hostname_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          hostname_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string hostname = 4;</code>
+       */
+      public com.google.protobuf.ByteString
+          getHostnameBytes() {
+        java.lang.Object ref = hostname_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          hostname_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string hostname = 4;</code>
+       */
+      public Builder setHostname(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        hostname_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string hostname = 4;</code>
+       */
+      public Builder clearHostname() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        hostname_ = getDefaultInstance().getHostname();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string hostname = 4;</code>
+       */
+      public Builder setHostnameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        hostname_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.v1.ContainerInfo.DockerInfo docker = 3;
+      private org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo docker_ = org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo, org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.Builder, org.apache.mesos.v1.Protos.ContainerInfo.DockerInfoOrBuilder> dockerBuilder_;
+      /**
+       * <code>optional .mesos.v1.ContainerInfo.DockerInfo docker = 3;</code>
+       *
+       * <pre>
+       * Only one of the following *Info messages should be set to match
+       * the type.
+       * </pre>
+       */
+      public boolean hasDocker() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerInfo.DockerInfo docker = 3;</code>
+       *
+       * <pre>
+       * Only one of the following *Info messages should be set to match
+       * the type.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo getDocker() {
+        if (dockerBuilder_ == null) {
+          return docker_;
+        } else {
+          return dockerBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerInfo.DockerInfo docker = 3;</code>
+       *
+       * <pre>
+       * Only one of the following *Info messages should be set to match
+       * the type.
+       * </pre>
+       */
+      public Builder setDocker(org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo value) {
+        if (dockerBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          docker_ = value;
+          onChanged();
+        } else {
+          dockerBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerInfo.DockerInfo docker = 3;</code>
+       *
+       * <pre>
+       * Only one of the following *Info messages should be set to match
+       * the type.
+       * </pre>
+       */
+      public Builder setDocker(
+          org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.Builder builderForValue) {
+        if (dockerBuilder_ == null) {
+          docker_ = builderForValue.build();
+          onChanged();
+        } else {
+          dockerBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerInfo.DockerInfo docker = 3;</code>
+       *
+       * <pre>
+       * Only one of the following *Info messages should be set to match
+       * the type.
+       * </pre>
+       */
+      public Builder mergeDocker(org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo value) {
+        if (dockerBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008) &&
+              docker_ != org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.getDefaultInstance()) {
+            docker_ =
+              org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.newBuilder(docker_).mergeFrom(value).buildPartial();
+          } else {
+            docker_ = value;
+          }
+          onChanged();
+        } else {
+          dockerBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerInfo.DockerInfo docker = 3;</code>
+       *
+       * <pre>
+       * Only one of the following *Info messages should be set to match
+       * the type.
+       * </pre>
+       */
+      public Builder clearDocker() {
+        if (dockerBuilder_ == null) {
+          docker_ = org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          dockerBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerInfo.DockerInfo docker = 3;</code>
+       *
+       * <pre>
+       * Only one of the following *Info messages should be set to match
+       * the type.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.Builder getDockerBuilder() {
+        bitField0_ |= 0x00000008;
+        onChanged();
+        return getDockerFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerInfo.DockerInfo docker = 3;</code>
+       *
+       * <pre>
+       * Only one of the following *Info messages should be set to match
+       * the type.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.ContainerInfo.DockerInfoOrBuilder getDockerOrBuilder() {
+        if (dockerBuilder_ != null) {
+          return dockerBuilder_.getMessageOrBuilder();
+        } else {
+          return docker_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerInfo.DockerInfo docker = 3;</code>
+       *
+       * <pre>
+       * Only one of the following *Info messages should be set to match
+       * the type.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo, org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.Builder, org.apache.mesos.v1.Protos.ContainerInfo.DockerInfoOrBuilder> 
+          getDockerFieldBuilder() {
+        if (dockerBuilder_ == null) {
+          dockerBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo, org.apache.mesos.v1.Protos.ContainerInfo.DockerInfo.Builder, org.apache.mesos.v1.Protos.ContainerInfo.DockerInfoOrBuilder>(
+                  docker_,
+                  getParentForChildren(),
+                  isClean());
+          docker_ = null;
+        }
+        return dockerBuilder_;
+      }
+
+      // optional .mesos.v1.ContainerInfo.MesosInfo mesos = 5;
+      private org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo mesos_ = org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo, org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo.Builder, org.apache.mesos.v1.Protos.ContainerInfo.MesosInfoOrBuilder> mesosBuilder_;
+      /**
+       * <code>optional .mesos.v1.ContainerInfo.MesosInfo mesos = 5;</code>
+       */
+      public boolean hasMesos() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerInfo.MesosInfo mesos = 5;</code>
+       */
+      public org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo getMesos() {
+        if (mesosBuilder_ == null) {
+          return mesos_;
+        } else {
+          return mesosBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerInfo.MesosInfo mesos = 5;</code>
+       */
+      public Builder setMesos(org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo value) {
+        if (mesosBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          mesos_ = value;
+          onChanged();
+        } else {
+          mesosBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerInfo.MesosInfo mesos = 5;</code>
+       */
+      public Builder setMesos(
+          org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo.Builder builderForValue) {
+        if (mesosBuilder_ == null) {
+          mesos_ = builderForValue.build();
+          onChanged();
+        } else {
+          mesosBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerInfo.MesosInfo mesos = 5;</code>
+       */
+      public Builder mergeMesos(org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo value) {
+        if (mesosBuilder_ == null) {
+          if (((bitField0_ & 0x00000010) == 0x00000010) &&
+              mesos_ != org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo.getDefaultInstance()) {
+            mesos_ =
+              org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo.newBuilder(mesos_).mergeFrom(value).buildPartial();
+          } else {
+            mesos_ = value;
+          }
+          onChanged();
+        } else {
+          mesosBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerInfo.MesosInfo mesos = 5;</code>
+       */
+      public Builder clearMesos() {
+        if (mesosBuilder_ == null) {
+          mesos_ = org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          mesosBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerInfo.MesosInfo mesos = 5;</code>
+       */
+      public org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo.Builder getMesosBuilder() {
+        bitField0_ |= 0x00000010;
+        onChanged();
+        return getMesosFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerInfo.MesosInfo mesos = 5;</code>
+       */
+      public org.apache.mesos.v1.Protos.ContainerInfo.MesosInfoOrBuilder getMesosOrBuilder() {
+        if (mesosBuilder_ != null) {
+          return mesosBuilder_.getMessageOrBuilder();
+        } else {
+          return mesos_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerInfo.MesosInfo mesos = 5;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo, org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo.Builder, org.apache.mesos.v1.Protos.ContainerInfo.MesosInfoOrBuilder> 
+          getMesosFieldBuilder() {
+        if (mesosBuilder_ == null) {
+          mesosBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo, org.apache.mesos.v1.Protos.ContainerInfo.MesosInfo.Builder, org.apache.mesos.v1.Protos.ContainerInfo.MesosInfoOrBuilder>(
+                  mesos_,
+                  getParentForChildren(),
+                  isClean());
+          mesos_ = null;
+        }
+        return mesosBuilder_;
+      }
+
+      // repeated .mesos.v1.NetworkInfo network_infos = 7;
+      private java.util.List<org.apache.mesos.v1.Protos.NetworkInfo> networkInfos_ =
+        java.util.Collections.emptyList();
+      private void ensureNetworkInfosIsMutable() {
+        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
+          networkInfos_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.NetworkInfo>(networkInfos_);
+          bitField0_ |= 0x00000020;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.NetworkInfo, org.apache.mesos.v1.Protos.NetworkInfo.Builder, org.apache.mesos.v1.Protos.NetworkInfoOrBuilder> networkInfosBuilder_;
+
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo network_infos = 7;</code>
+       *
+       * <pre>
+       * A list of network requests. A framework can request multiple IP addresses
+       * for the container.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.NetworkInfo> getNetworkInfosList() {
+        if (networkInfosBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(networkInfos_);
+        } else {
+          return networkInfosBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo network_infos = 7;</code>
+       *
+       * <pre>
+       * A list of network requests. A framework can request multiple IP addresses
+       * for the container.
+       * </pre>
+       */
+      public int getNetworkInfosCount() {
+        if (networkInfosBuilder_ == null) {
+          return networkInfos_.size();
+        } else {
+          return networkInfosBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo network_infos = 7;</code>
+       *
+       * <pre>
+       * A list of network requests. A framework can request multiple IP addresses
+       * for the container.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.NetworkInfo getNetworkInfos(int index) {
+        if (networkInfosBuilder_ == null) {
+          return networkInfos_.get(index);
+        } else {
+          return networkInfosBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo network_infos = 7;</code>
+       *
+       * <pre>
+       * A list of network requests. A framework can request multiple IP addresses
+       * for the container.
+       * </pre>
+       */
+      public Builder setNetworkInfos(
+          int index, org.apache.mesos.v1.Protos.NetworkInfo value) {
+        if (networkInfosBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureNetworkInfosIsMutable();
+          networkInfos_.set(index, value);
+          onChanged();
+        } else {
+          networkInfosBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo network_infos = 7;</code>
+       *
+       * <pre>
+       * A list of network requests. A framework can request multiple IP addresses
+       * for the container.
+       * </pre>
+       */
+      public Builder setNetworkInfos(
+          int index, org.apache.mesos.v1.Protos.NetworkInfo.Builder builderForValue) {
+        if (networkInfosBuilder_ == null) {
+          ensureNetworkInfosIsMutable();
+          networkInfos_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          networkInfosBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo network_infos = 7;</code>
+       *
+       * <pre>
+       * A list of network requests. A framework can request multiple IP addresses
+       * for the container.
+       * </pre>
+       */
+      public Builder addNetworkInfos(org.apache.mesos.v1.Protos.NetworkInfo value) {
+        if (networkInfosBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureNetworkInfosIsMutable();
+          networkInfos_.add(value);
+          onChanged();
+        } else {
+          networkInfosBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo network_infos = 7;</code>
+       *
+       * <pre>
+       * A list of network requests. A framework can request multiple IP addresses
+       * for the container.
+       * </pre>
+       */
+      public Builder addNetworkInfos(
+          int index, org.apache.mesos.v1.Protos.NetworkInfo value) {
+        if (networkInfosBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureNetworkInfosIsMutable();
+          networkInfos_.add(index, value);
+          onChanged();
+        } else {
+          networkInfosBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo network_infos = 7;</code>
+       *
+       * <pre>
+       * A list of network requests. A framework can request multiple IP addresses
+       * for the container.
+       * </pre>
+       */
+      public Builder addNetworkInfos(
+          org.apache.mesos.v1.Protos.NetworkInfo.Builder builderForValue) {
+        if (networkInfosBuilder_ == null) {
+          ensureNetworkInfosIsMutable();
+          networkInfos_.add(builderForValue.build());
+          onChanged();
+        } else {
+          networkInfosBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo network_infos = 7;</code>
+       *
+       * <pre>
+       * A list of network requests. A framework can request multiple IP addresses
+       * for the container.
+       * </pre>
+       */
+      public Builder addNetworkInfos(
+          int index, org.apache.mesos.v1.Protos.NetworkInfo.Builder builderForValue) {
+        if (networkInfosBuilder_ == null) {
+          ensureNetworkInfosIsMutable();
+          networkInfos_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          networkInfosBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo network_infos = 7;</code>
+       *
+       * <pre>
+       * A list of network requests. A framework can request multiple IP addresses
+       * for the container.
+       * </pre>
+       */
+      public Builder addAllNetworkInfos(
+          java.lang.Iterable<? extends org.apache.mesos.v1.Protos.NetworkInfo> values) {
+        if (networkInfosBuilder_ == null) {
+          ensureNetworkInfosIsMutable();
+          super.addAll(values, networkInfos_);
+          onChanged();
+        } else {
+          networkInfosBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo network_infos = 7;</code>
+       *
+       * <pre>
+       * A list of network requests. A framework can request multiple IP addresses
+       * for the container.
+       * </pre>
+       */
+      public Builder clearNetworkInfos() {
+        if (networkInfosBuilder_ == null) {
+          networkInfos_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000020);
+          onChanged();
+        } else {
+          networkInfosBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo network_infos = 7;</code>
+       *
+       * <pre>
+       * A list of network requests. A framework can request multiple IP addresses
+       * for the container.
+       * </pre>
+       */
+      public Builder removeNetworkInfos(int index) {
+        if (networkInfosBuilder_ == null) {
+          ensureNetworkInfosIsMutable();
+          networkInfos_.remove(index);
+          onChanged();
+        } else {
+          networkInfosBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo network_infos = 7;</code>
+       *
+       * <pre>
+       * A list of network requests. A framework can request multiple IP addresses
+       * for the container.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.NetworkInfo.Builder getNetworkInfosBuilder(
+          int index) {
+        return getNetworkInfosFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo network_infos = 7;</code>
+       *
+       * <pre>
+       * A list of network requests. A framework can request multiple IP addresses
+       * for the container.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.NetworkInfoOrBuilder getNetworkInfosOrBuilder(
+          int index) {
+        if (networkInfosBuilder_ == null) {
+          return networkInfos_.get(index);  } else {
+          return networkInfosBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo network_infos = 7;</code>
+       *
+       * <pre>
+       * A list of network requests. A framework can request multiple IP addresses
+       * for the container.
+       * </pre>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.NetworkInfoOrBuilder> 
+           getNetworkInfosOrBuilderList() {
+        if (networkInfosBuilder_ != null) {
+          return networkInfosBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(networkInfos_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo network_infos = 7;</code>
+       *
+       * <pre>
+       * A list of network requests. A framework can request multiple IP addresses
+       * for the container.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.NetworkInfo.Builder addNetworkInfosBuilder() {
+        return getNetworkInfosFieldBuilder().addBuilder(
+            org.apache.mesos.v1.Protos.NetworkInfo.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo network_infos = 7;</code>
+       *
+       * <pre>
+       * A list of network requests. A framework can request multiple IP addresses
+       * for the container.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.NetworkInfo.Builder addNetworkInfosBuilder(
+          int index) {
+        return getNetworkInfosFieldBuilder().addBuilder(
+            index, org.apache.mesos.v1.Protos.NetworkInfo.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo network_infos = 7;</code>
+       *
+       * <pre>
+       * A list of network requests. A framework can request multiple IP addresses
+       * for the container.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.NetworkInfo.Builder> 
+           getNetworkInfosBuilderList() {
+        return getNetworkInfosFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.NetworkInfo, org.apache.mesos.v1.Protos.NetworkInfo.Builder, org.apache.mesos.v1.Protos.NetworkInfoOrBuilder> 
+          getNetworkInfosFieldBuilder() {
+        if (networkInfosBuilder_ == null) {
+          networkInfosBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.NetworkInfo, org.apache.mesos.v1.Protos.NetworkInfo.Builder, org.apache.mesos.v1.Protos.NetworkInfoOrBuilder>(
+                  networkInfos_,
+                  ((bitField0_ & 0x00000020) == 0x00000020),
+                  getParentForChildren(),
+                  isClean());
+          networkInfos_ = null;
+        }
+        return networkInfosBuilder_;
+      }
+
+      // optional .mesos.v1.LinuxInfo linux_info = 8;
+      private org.apache.mesos.v1.Protos.LinuxInfo linuxInfo_ = org.apache.mesos.v1.Protos.LinuxInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.LinuxInfo, org.apache.mesos.v1.Protos.LinuxInfo.Builder, org.apache.mesos.v1.Protos.LinuxInfoOrBuilder> linuxInfoBuilder_;
+      /**
+       * <code>optional .mesos.v1.LinuxInfo linux_info = 8;</code>
+       *
+       * <pre>
+       * Linux specific information for the container.
+       * </pre>
+       */
+      public boolean hasLinuxInfo() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional .mesos.v1.LinuxInfo linux_info = 8;</code>
+       *
+       * <pre>
+       * Linux specific information for the container.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.LinuxInfo getLinuxInfo() {
+        if (linuxInfoBuilder_ == null) {
+          return linuxInfo_;
+        } else {
+          return linuxInfoBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.LinuxInfo linux_info = 8;</code>
+       *
+       * <pre>
+       * Linux specific information for the container.
+       * </pre>
+       */
+      public Builder setLinuxInfo(org.apache.mesos.v1.Protos.LinuxInfo value) {
+        if (linuxInfoBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          linuxInfo_ = value;
+          onChanged();
+        } else {
+          linuxInfoBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.LinuxInfo linux_info = 8;</code>
+       *
+       * <pre>
+       * Linux specific information for the container.
+       * </pre>
+       */
+      public Builder setLinuxInfo(
+          org.apache.mesos.v1.Protos.LinuxInfo.Builder builderForValue) {
+        if (linuxInfoBuilder_ == null) {
+          linuxInfo_ = builderForValue.build();
+          onChanged();
+        } else {
+          linuxInfoBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.LinuxInfo linux_info = 8;</code>
+       *
+       * <pre>
+       * Linux specific information for the container.
+       * </pre>
+       */
+      public Builder mergeLinuxInfo(org.apache.mesos.v1.Protos.LinuxInfo value) {
+        if (linuxInfoBuilder_ == null) {
+          if (((bitField0_ & 0x00000040) == 0x00000040) &&
+              linuxInfo_ != org.apache.mesos.v1.Protos.LinuxInfo.getDefaultInstance()) {
+            linuxInfo_ =
+              org.apache.mesos.v1.Protos.LinuxInfo.newBuilder(linuxInfo_).mergeFrom(value).buildPartial();
+          } else {
+            linuxInfo_ = value;
+          }
+          onChanged();
+        } else {
+          linuxInfoBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.LinuxInfo linux_info = 8;</code>
+       *
+       * <pre>
+       * Linux specific information for the container.
+       * </pre>
+       */
+      public Builder clearLinuxInfo() {
+        if (linuxInfoBuilder_ == null) {
+          linuxInfo_ = org.apache.mesos.v1.Protos.LinuxInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          linuxInfoBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000040);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.LinuxInfo linux_info = 8;</code>
+       *
+       * <pre>
+       * Linux specific information for the container.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.LinuxInfo.Builder getLinuxInfoBuilder() {
+        bitField0_ |= 0x00000040;
+        onChanged();
+        return getLinuxInfoFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.LinuxInfo linux_info = 8;</code>
+       *
+       * <pre>
+       * Linux specific information for the container.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.LinuxInfoOrBuilder getLinuxInfoOrBuilder() {
+        if (linuxInfoBuilder_ != null) {
+          return linuxInfoBuilder_.getMessageOrBuilder();
+        } else {
+          return linuxInfo_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.LinuxInfo linux_info = 8;</code>
+       *
+       * <pre>
+       * Linux specific information for the container.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.LinuxInfo, org.apache.mesos.v1.Protos.LinuxInfo.Builder, org.apache.mesos.v1.Protos.LinuxInfoOrBuilder> 
+          getLinuxInfoFieldBuilder() {
+        if (linuxInfoBuilder_ == null) {
+          linuxInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.LinuxInfo, org.apache.mesos.v1.Protos.LinuxInfo.Builder, org.apache.mesos.v1.Protos.LinuxInfoOrBuilder>(
+                  linuxInfo_,
+                  getParentForChildren(),
+                  isClean());
+          linuxInfo_ = null;
+        }
+        return linuxInfoBuilder_;
+      }
+
+      // optional .mesos.v1.RLimitInfo rlimit_info = 9;
+      private org.apache.mesos.v1.Protos.RLimitInfo rlimitInfo_ = org.apache.mesos.v1.Protos.RLimitInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.RLimitInfo, org.apache.mesos.v1.Protos.RLimitInfo.Builder, org.apache.mesos.v1.Protos.RLimitInfoOrBuilder> rlimitInfoBuilder_;
+      /**
+       * <code>optional .mesos.v1.RLimitInfo rlimit_info = 9;</code>
+       *
+       * <pre>
+       * (POSIX only) rlimits of the container.
+       * </pre>
+       */
+      public boolean hasRlimitInfo() {
+        return ((bitField0_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional .mesos.v1.RLimitInfo rlimit_info = 9;</code>
+       *
+       * <pre>
+       * (POSIX only) rlimits of the container.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.RLimitInfo getRlimitInfo() {
+        if (rlimitInfoBuilder_ == null) {
+          return rlimitInfo_;
+        } else {
+          return rlimitInfoBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.RLimitInfo rlimit_info = 9;</code>
+       *
+       * <pre>
+       * (POSIX only) rlimits of the container.
+       * </pre>
+       */
+      public Builder setRlimitInfo(org.apache.mesos.v1.Protos.RLimitInfo value) {
+        if (rlimitInfoBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          rlimitInfo_ = value;
+          onChanged();
+        } else {
+          rlimitInfoBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.RLimitInfo rlimit_info = 9;</code>
+       *
+       * <pre>
+       * (POSIX only) rlimits of the container.
+       * </pre>
+       */
+      public Builder setRlimitInfo(
+          org.apache.mesos.v1.Protos.RLimitInfo.Builder builderForValue) {
+        if (rlimitInfoBuilder_ == null) {
+          rlimitInfo_ = builderForValue.build();
+          onChanged();
+        } else {
+          rlimitInfoBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.RLimitInfo rlimit_info = 9;</code>
+       *
+       * <pre>
+       * (POSIX only) rlimits of the container.
+       * </pre>
+       */
+      public Builder mergeRlimitInfo(org.apache.mesos.v1.Protos.RLimitInfo value) {
+        if (rlimitInfoBuilder_ == null) {
+          if (((bitField0_ & 0x00000080) == 0x00000080) &&
+              rlimitInfo_ != org.apache.mesos.v1.Protos.RLimitInfo.getDefaultInstance()) {
+            rlimitInfo_ =
+              org.apache.mesos.v1.Protos.RLimitInfo.newBuilder(rlimitInfo_).mergeFrom(value).buildPartial();
+          } else {
+            rlimitInfo_ = value;
+          }
+          onChanged();
+        } else {
+          rlimitInfoBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.RLimitInfo rlimit_info = 9;</code>
+       *
+       * <pre>
+       * (POSIX only) rlimits of the container.
+       * </pre>
+       */
+      public Builder clearRlimitInfo() {
+        if (rlimitInfoBuilder_ == null) {
+          rlimitInfo_ = org.apache.mesos.v1.Protos.RLimitInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          rlimitInfoBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000080);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.RLimitInfo rlimit_info = 9;</code>
+       *
+       * <pre>
+       * (POSIX only) rlimits of the container.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.RLimitInfo.Builder getRlimitInfoBuilder() {
+        bitField0_ |= 0x00000080;
+        onChanged();
+        return getRlimitInfoFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.RLimitInfo rlimit_info = 9;</code>
+       *
+       * <pre>
+       * (POSIX only) rlimits of the container.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.RLimitInfoOrBuilder getRlimitInfoOrBuilder() {
+        if (rlimitInfoBuilder_ != null) {
+          return rlimitInfoBuilder_.getMessageOrBuilder();
+        } else {
+          return rlimitInfo_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.RLimitInfo rlimit_info = 9;</code>
+       *
+       * <pre>
+       * (POSIX only) rlimits of the container.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.RLimitInfo, org.apache.mesos.v1.Protos.RLimitInfo.Builder, org.apache.mesos.v1.Protos.RLimitInfoOrBuilder> 
+          getRlimitInfoFieldBuilder() {
+        if (rlimitInfoBuilder_ == null) {
+          rlimitInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.RLimitInfo, org.apache.mesos.v1.Protos.RLimitInfo.Builder, org.apache.mesos.v1.Protos.RLimitInfoOrBuilder>(
+                  rlimitInfo_,
+                  getParentForChildren(),
+                  isClean());
+          rlimitInfo_ = null;
+        }
+        return rlimitInfoBuilder_;
+      }
+
+      // optional .mesos.v1.TTYInfo tty_info = 10;
+      private org.apache.mesos.v1.Protos.TTYInfo ttyInfo_ = org.apache.mesos.v1.Protos.TTYInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.TTYInfo, org.apache.mesos.v1.Protos.TTYInfo.Builder, org.apache.mesos.v1.Protos.TTYInfoOrBuilder> ttyInfoBuilder_;
+      /**
+       * <code>optional .mesos.v1.TTYInfo tty_info = 10;</code>
+       *
+       * <pre>
+       * If specified a tty will be attached to the container entrypoint.
+       * </pre>
+       */
+      public boolean hasTtyInfo() {
+        return ((bitField0_ & 0x00000100) == 0x00000100);
+      }
+      /**
+       * <code>optional .mesos.v1.TTYInfo tty_info = 10;</code>
+       *
+       * <pre>
+       * If specified a tty will be attached to the container entrypoint.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.TTYInfo getTtyInfo() {
+        if (ttyInfoBuilder_ == null) {
+          return ttyInfo_;
+        } else {
+          return ttyInfoBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.TTYInfo tty_info = 10;</code>
+       *
+       * <pre>
+       * If specified a tty will be attached to the container entrypoint.
+       * </pre>
+       */
+      public Builder setTtyInfo(org.apache.mesos.v1.Protos.TTYInfo value) {
+        if (ttyInfoBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ttyInfo_ = value;
+          onChanged();
+        } else {
+          ttyInfoBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000100;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.TTYInfo tty_info = 10;</code>
+       *
+       * <pre>
+       * If specified a tty will be attached to the container entrypoint.
+       * </pre>
+       */
+      public Builder setTtyInfo(
+          org.apache.mesos.v1.Protos.TTYInfo.Builder builderForValue) {
+        if (ttyInfoBuilder_ == null) {
+          ttyInfo_ = builderForValue.build();
+          onChanged();
+        } else {
+          ttyInfoBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000100;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.TTYInfo tty_info = 10;</code>
+       *
+       * <pre>
+       * If specified a tty will be attached to the container entrypoint.
+       * </pre>
+       */
+      public Builder mergeTtyInfo(org.apache.mesos.v1.Protos.TTYInfo value) {
+        if (ttyInfoBuilder_ == null) {
+          if (((bitField0_ & 0x00000100) == 0x00000100) &&
+              ttyInfo_ != org.apache.mesos.v1.Protos.TTYInfo.getDefaultInstance()) {
+            ttyInfo_ =
+              org.apache.mesos.v1.Protos.TTYInfo.newBuilder(ttyInfo_).mergeFrom(value).buildPartial();
+          } else {
+            ttyInfo_ = value;
+          }
+          onChanged();
+        } else {
+          ttyInfoBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000100;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.TTYInfo tty_info = 10;</code>
+       *
+       * <pre>
+       * If specified a tty will be attached to the container entrypoint.
+       * </pre>
+       */
+      public Builder clearTtyInfo() {
+        if (ttyInfoBuilder_ == null) {
+          ttyInfo_ = org.apache.mesos.v1.Protos.TTYInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          ttyInfoBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000100);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.TTYInfo tty_info = 10;</code>
+       *
+       * <pre>
+       * If specified a tty will be attached to the container entrypoint.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.TTYInfo.Builder getTtyInfoBuilder() {
+        bitField0_ |= 0x00000100;
+        onChanged();
+        return getTtyInfoFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.TTYInfo tty_info = 10;</code>
+       *
+       * <pre>
+       * If specified a tty will be attached to the container entrypoint.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.TTYInfoOrBuilder getTtyInfoOrBuilder() {
+        if (ttyInfoBuilder_ != null) {
+          return ttyInfoBuilder_.getMessageOrBuilder();
+        } else {
+          return ttyInfo_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.TTYInfo tty_info = 10;</code>
+       *
+       * <pre>
+       * If specified a tty will be attached to the container entrypoint.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.TTYInfo, org.apache.mesos.v1.Protos.TTYInfo.Builder, org.apache.mesos.v1.Protos.TTYInfoOrBuilder> 
+          getTtyInfoFieldBuilder() {
+        if (ttyInfoBuilder_ == null) {
+          ttyInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.TTYInfo, org.apache.mesos.v1.Protos.TTYInfo.Builder, org.apache.mesos.v1.Protos.TTYInfoOrBuilder>(
+                  ttyInfo_,
+                  getParentForChildren(),
+                  isClean());
+          ttyInfo_ = null;
+        }
+        return ttyInfoBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.ContainerInfo)
+    }
+
+    static {
+      defaultInstance = new ContainerInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.ContainerInfo)
+  }
+
+  public interface ContainerStatusOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional .mesos.v1.ContainerID container_id = 4;
+    /**
+     * <code>optional .mesos.v1.ContainerID container_id = 4;</code>
+     */
+    boolean hasContainerId();
+    /**
+     * <code>optional .mesos.v1.ContainerID container_id = 4;</code>
+     */
+    org.apache.mesos.v1.Protos.ContainerID getContainerId();
+    /**
+     * <code>optional .mesos.v1.ContainerID container_id = 4;</code>
+     */
+    org.apache.mesos.v1.Protos.ContainerIDOrBuilder getContainerIdOrBuilder();
+
+    // repeated .mesos.v1.NetworkInfo network_infos = 1;
+    /**
+     * <code>repeated .mesos.v1.NetworkInfo network_infos = 1;</code>
+     *
+     * <pre>
+     * This field can be reliably used to identify the container IP address.
+     * </pre>
+     */
+    java.util.List<org.apache.mesos.v1.Protos.NetworkInfo> 
+        getNetworkInfosList();
+    /**
+     * <code>repeated .mesos.v1.NetworkInfo network_infos = 1;</code>
+     *
+     * <pre>
+     * This field can be reliably used to identify the container IP address.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.NetworkInfo getNetworkInfos(int index);
+    /**
+     * <code>repeated .mesos.v1.NetworkInfo network_infos = 1;</code>
+     *
+     * <pre>
+     * This field can be reliably used to identify the container IP address.
+     * </pre>
+     */
+    int getNetworkInfosCount();
+    /**
+     * <code>repeated .mesos.v1.NetworkInfo network_infos = 1;</code>
+     *
+     * <pre>
+     * This field can be reliably used to identify the container IP address.
+     * </pre>
+     */
+    java.util.List<? extends org.apache.mesos.v1.Protos.NetworkInfoOrBuilder> 
+        getNetworkInfosOrBuilderList();
+    /**
+     * <code>repeated .mesos.v1.NetworkInfo network_infos = 1;</code>
+     *
+     * <pre>
+     * This field can be reliably used to identify the container IP address.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.NetworkInfoOrBuilder getNetworkInfosOrBuilder(
+        int index);
+
+    // optional .mesos.v1.CgroupInfo cgroup_info = 2;
+    /**
+     * <code>optional .mesos.v1.CgroupInfo cgroup_info = 2;</code>
+     *
+     * <pre>
+     * Information about Linux control group (cgroup).
+     * </pre>
+     */
+    boolean hasCgroupInfo();
+    /**
+     * <code>optional .mesos.v1.CgroupInfo cgroup_info = 2;</code>
+     *
+     * <pre>
+     * Information about Linux control group (cgroup).
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.CgroupInfo getCgroupInfo();
+    /**
+     * <code>optional .mesos.v1.CgroupInfo cgroup_info = 2;</code>
+     *
+     * <pre>
+     * Information about Linux control group (cgroup).
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.CgroupInfoOrBuilder getCgroupInfoOrBuilder();
+
+    // optional uint32 executor_pid = 3;
+    /**
+     * <code>optional uint32 executor_pid = 3;</code>
+     *
+     * <pre>
+     * Information about Executor PID.
+     * </pre>
+     */
+    boolean hasExecutorPid();
+    /**
+     * <code>optional uint32 executor_pid = 3;</code>
+     *
+     * <pre>
+     * Information about Executor PID.
+     * </pre>
+     */
+    int getExecutorPid();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.ContainerStatus}
+   *
+   * <pre>
+   **
+   * Container related information that is resolved during container
+   * setup. The information is sent back to the framework as part of the
+   * TaskStatus message.
+   * </pre>
+   */
+  public static final class ContainerStatus extends
+      com.google.protobuf.GeneratedMessage
+      implements ContainerStatusOrBuilder {
+    // Use ContainerStatus.newBuilder() to construct.
+    private ContainerStatus(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private ContainerStatus(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final ContainerStatus defaultInstance;
+    public static ContainerStatus getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public ContainerStatus getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private ContainerStatus(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+                networkInfos_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.NetworkInfo>();
+                mutable_bitField0_ |= 0x00000002;
+              }
+              networkInfos_.add(input.readMessage(org.apache.mesos.v1.Protos.NetworkInfo.PARSER, extensionRegistry));
+              break;
+            }
+            case 18: {
+              org.apache.mesos.v1.Protos.CgroupInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = cgroupInfo_.toBuilder();
+              }
+              cgroupInfo_ = input.readMessage(org.apache.mesos.v1.Protos.CgroupInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(cgroupInfo_);
+                cgroupInfo_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+            case 24: {
+              bitField0_ |= 0x00000004;
+              executorPid_ = input.readUInt32();
+              break;
+            }
+            case 34: {
+              org.apache.mesos.v1.Protos.ContainerID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                subBuilder = containerId_.toBuilder();
+              }
+              containerId_ = input.readMessage(org.apache.mesos.v1.Protos.ContainerID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(containerId_);
+                containerId_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+          networkInfos_ = java.util.Collections.unmodifiableList(networkInfos_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ContainerStatus_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ContainerStatus_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.ContainerStatus.class, org.apache.mesos.v1.Protos.ContainerStatus.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<ContainerStatus> PARSER =
+        new com.google.protobuf.AbstractParser<ContainerStatus>() {
+      public ContainerStatus parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new ContainerStatus(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<ContainerStatus> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // optional .mesos.v1.ContainerID container_id = 4;
+    public static final int CONTAINER_ID_FIELD_NUMBER = 4;
+    private org.apache.mesos.v1.Protos.ContainerID containerId_;
+    /**
+     * <code>optional .mesos.v1.ContainerID container_id = 4;</code>
+     */
+    public boolean hasContainerId() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional .mesos.v1.ContainerID container_id = 4;</code>
+     */
+    public org.apache.mesos.v1.Protos.ContainerID getContainerId() {
+      return containerId_;
+    }
+    /**
+     * <code>optional .mesos.v1.ContainerID container_id = 4;</code>
+     */
+    public org.apache.mesos.v1.Protos.ContainerIDOrBuilder getContainerIdOrBuilder() {
+      return containerId_;
+    }
+
+    // repeated .mesos.v1.NetworkInfo network_infos = 1;
+    public static final int NETWORK_INFOS_FIELD_NUMBER = 1;
+    private java.util.List<org.apache.mesos.v1.Protos.NetworkInfo> networkInfos_;
+    /**
+     * <code>repeated .mesos.v1.NetworkInfo network_infos = 1;</code>
+     *
+     * <pre>
+     * This field can be reliably used to identify the container IP address.
+     * </pre>
+     */
+    public java.util.List<org.apache.mesos.v1.Protos.NetworkInfo> getNetworkInfosList() {
+      return networkInfos_;
+    }
+    /**
+     * <code>repeated .mesos.v1.NetworkInfo network_infos = 1;</code>
+     *
+     * <pre>
+     * This field can be reliably used to identify the container IP address.
+     * </pre>
+     */
+    public java.util.List<? extends org.apache.mesos.v1.Protos.NetworkInfoOrBuilder> 
+        getNetworkInfosOrBuilderList() {
+      return networkInfos_;
+    }
+    /**
+     * <code>repeated .mesos.v1.NetworkInfo network_infos = 1;</code>
+     *
+     * <pre>
+     * This field can be reliably used to identify the container IP address.
+     * </pre>
+     */
+    public int getNetworkInfosCount() {
+      return networkInfos_.size();
+    }
+    /**
+     * <code>repeated .mesos.v1.NetworkInfo network_infos = 1;</code>
+     *
+     * <pre>
+     * This field can be reliably used to identify the container IP address.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.NetworkInfo getNetworkInfos(int index) {
+      return networkInfos_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.v1.NetworkInfo network_infos = 1;</code>
+     *
+     * <pre>
+     * This field can be reliably used to identify the container IP address.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.NetworkInfoOrBuilder getNetworkInfosOrBuilder(
+        int index) {
+      return networkInfos_.get(index);
+    }
+
+    // optional .mesos.v1.CgroupInfo cgroup_info = 2;
+    public static final int CGROUP_INFO_FIELD_NUMBER = 2;
+    private org.apache.mesos.v1.Protos.CgroupInfo cgroupInfo_;
+    /**
+     * <code>optional .mesos.v1.CgroupInfo cgroup_info = 2;</code>
+     *
+     * <pre>
+     * Information about Linux control group (cgroup).
+     * </pre>
+     */
+    public boolean hasCgroupInfo() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional .mesos.v1.CgroupInfo cgroup_info = 2;</code>
+     *
+     * <pre>
+     * Information about Linux control group (cgroup).
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.CgroupInfo getCgroupInfo() {
+      return cgroupInfo_;
+    }
+    /**
+     * <code>optional .mesos.v1.CgroupInfo cgroup_info = 2;</code>
+     *
+     * <pre>
+     * Information about Linux control group (cgroup).
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.CgroupInfoOrBuilder getCgroupInfoOrBuilder() {
+      return cgroupInfo_;
+    }
+
+    // optional uint32 executor_pid = 3;
+    public static final int EXECUTOR_PID_FIELD_NUMBER = 3;
+    private int executorPid_;
+    /**
+     * <code>optional uint32 executor_pid = 3;</code>
+     *
+     * <pre>
+     * Information about Executor PID.
+     * </pre>
+     */
+    public boolean hasExecutorPid() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional uint32 executor_pid = 3;</code>
+     *
+     * <pre>
+     * Information about Executor PID.
+     * </pre>
+     */
+    public int getExecutorPid() {
+      return executorPid_;
+    }
+
+    private void initFields() {
+      containerId_ = org.apache.mesos.v1.Protos.ContainerID.getDefaultInstance();
+      networkInfos_ = java.util.Collections.emptyList();
+      cgroupInfo_ = org.apache.mesos.v1.Protos.CgroupInfo.getDefaultInstance();
+      executorPid_ = 0;
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (hasContainerId()) {
+        if (!getContainerId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      for (int i = 0; i < getNetworkInfosCount(); i++) {
+        if (!getNetworkInfos(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      for (int i = 0; i < networkInfos_.size(); i++) {
+        output.writeMessage(1, networkInfos_.get(i));
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(2, cgroupInfo_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeUInt32(3, executorPid_);
+      }
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeMessage(4, containerId_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      for (int i = 0; i < networkInfos_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, networkInfos_.get(i));
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, cgroupInfo_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(3, executorPid_);
+      }
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, containerId_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.ContainerStatus parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.ContainerStatus parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.ContainerStatus parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.ContainerStatus parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.ContainerStatus parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.ContainerStatus parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.ContainerStatus parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.ContainerStatus parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.ContainerStatus parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.ContainerStatus parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.ContainerStatus prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.ContainerStatus}
+     *
+     * <pre>
+     **
+     * Container related information that is resolved during container
+     * setup. The information is sent back to the framework as part of the
+     * TaskStatus message.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.ContainerStatusOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ContainerStatus_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ContainerStatus_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.ContainerStatus.class, org.apache.mesos.v1.Protos.ContainerStatus.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.ContainerStatus.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getContainerIdFieldBuilder();
+          getNetworkInfosFieldBuilder();
+          getCgroupInfoFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (containerIdBuilder_ == null) {
+          containerId_ = org.apache.mesos.v1.Protos.ContainerID.getDefaultInstance();
+        } else {
+          containerIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (networkInfosBuilder_ == null) {
+          networkInfos_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000002);
+        } else {
+          networkInfosBuilder_.clear();
+        }
+        if (cgroupInfoBuilder_ == null) {
+          cgroupInfo_ = org.apache.mesos.v1.Protos.CgroupInfo.getDefaultInstance();
+        } else {
+          cgroupInfoBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        executorPid_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_ContainerStatus_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.ContainerStatus getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.ContainerStatus.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.ContainerStatus build() {
+        org.apache.mesos.v1.Protos.ContainerStatus result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.ContainerStatus buildPartial() {
+        org.apache.mesos.v1.Protos.ContainerStatus result = new org.apache.mesos.v1.Protos.ContainerStatus(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        if (containerIdBuilder_ == null) {
+          result.containerId_ = containerId_;
+        } else {
+          result.containerId_ = containerIdBuilder_.build();
+        }
+        if (networkInfosBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            networkInfos_ = java.util.Collections.unmodifiableList(networkInfos_);
+            bitField0_ = (bitField0_ & ~0x00000002);
+          }
+          result.networkInfos_ = networkInfos_;
+        } else {
+          result.networkInfos_ = networkInfosBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (cgroupInfoBuilder_ == null) {
+          result.cgroupInfo_ = cgroupInfo_;
+        } else {
+          result.cgroupInfo_ = cgroupInfoBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.executorPid_ = executorPid_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.ContainerStatus) {
+          return mergeFrom((org.apache.mesos.v1.Protos.ContainerStatus)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.ContainerStatus other) {
+        if (other == org.apache.mesos.v1.Protos.ContainerStatus.getDefaultInstance()) return this;
+        if (other.hasContainerId()) {
+          mergeContainerId(other.getContainerId());
+        }
+        if (networkInfosBuilder_ == null) {
+          if (!other.networkInfos_.isEmpty()) {
+            if (networkInfos_.isEmpty()) {
+              networkInfos_ = other.networkInfos_;
+              bitField0_ = (bitField0_ & ~0x00000002);
+            } else {
+              ensureNetworkInfosIsMutable();
+              networkInfos_.addAll(other.networkInfos_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.networkInfos_.isEmpty()) {
+            if (networkInfosBuilder_.isEmpty()) {
+              networkInfosBuilder_.dispose();
+              networkInfosBuilder_ = null;
+              networkInfos_ = other.networkInfos_;
+              bitField0_ = (bitField0_ & ~0x00000002);
+              networkInfosBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getNetworkInfosFieldBuilder() : null;
+            } else {
+              networkInfosBuilder_.addAllMessages(other.networkInfos_);
+            }
+          }
+        }
+        if (other.hasCgroupInfo()) {
+          mergeCgroupInfo(other.getCgroupInfo());
+        }
+        if (other.hasExecutorPid()) {
+          setExecutorPid(other.getExecutorPid());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (hasContainerId()) {
+          if (!getContainerId().isInitialized()) {
+            
+            return false;
+          }
+        }
+        for (int i = 0; i < getNetworkInfosCount(); i++) {
+          if (!getNetworkInfos(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.ContainerStatus parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.ContainerStatus) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional .mesos.v1.ContainerID container_id = 4;
+      private org.apache.mesos.v1.Protos.ContainerID containerId_ = org.apache.mesos.v1.Protos.ContainerID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.ContainerID, org.apache.mesos.v1.Protos.ContainerID.Builder, org.apache.mesos.v1.Protos.ContainerIDOrBuilder> containerIdBuilder_;
+      /**
+       * <code>optional .mesos.v1.ContainerID container_id = 4;</code>
+       */
+      public boolean hasContainerId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerID container_id = 4;</code>
+       */
+      public org.apache.mesos.v1.Protos.ContainerID getContainerId() {
+        if (containerIdBuilder_ == null) {
+          return containerId_;
+        } else {
+          return containerIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerID container_id = 4;</code>
+       */
+      public Builder setContainerId(org.apache.mesos.v1.Protos.ContainerID value) {
+        if (containerIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          containerId_ = value;
+          onChanged();
+        } else {
+          containerIdBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerID container_id = 4;</code>
+       */
+      public Builder setContainerId(
+          org.apache.mesos.v1.Protos.ContainerID.Builder builderForValue) {
+        if (containerIdBuilder_ == null) {
+          containerId_ = builderForValue.build();
+          onChanged();
+        } else {
+          containerIdBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerID container_id = 4;</code>
+       */
+      public Builder mergeContainerId(org.apache.mesos.v1.Protos.ContainerID value) {
+        if (containerIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001) &&
+              containerId_ != org.apache.mesos.v1.Protos.ContainerID.getDefaultInstance()) {
+            containerId_ =
+              org.apache.mesos.v1.Protos.ContainerID.newBuilder(containerId_).mergeFrom(value).buildPartial();
+          } else {
+            containerId_ = value;
+          }
+          onChanged();
+        } else {
+          containerIdBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerID container_id = 4;</code>
+       */
+      public Builder clearContainerId() {
+        if (containerIdBuilder_ == null) {
+          containerId_ = org.apache.mesos.v1.Protos.ContainerID.getDefaultInstance();
+          onChanged();
+        } else {
+          containerIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerID container_id = 4;</code>
+       */
+      public org.apache.mesos.v1.Protos.ContainerID.Builder getContainerIdBuilder() {
+        bitField0_ |= 0x00000001;
+        onChanged();
+        return getContainerIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerID container_id = 4;</code>
+       */
+      public org.apache.mesos.v1.Protos.ContainerIDOrBuilder getContainerIdOrBuilder() {
+        if (containerIdBuilder_ != null) {
+          return containerIdBuilder_.getMessageOrBuilder();
+        } else {
+          return containerId_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerID container_id = 4;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.ContainerID, org.apache.mesos.v1.Protos.ContainerID.Builder, org.apache.mesos.v1.Protos.ContainerIDOrBuilder> 
+          getContainerIdFieldBuilder() {
+        if (containerIdBuilder_ == null) {
+          containerIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.ContainerID, org.apache.mesos.v1.Protos.ContainerID.Builder, org.apache.mesos.v1.Protos.ContainerIDOrBuilder>(
+                  containerId_,
+                  getParentForChildren(),
+                  isClean());
+          containerId_ = null;
+        }
+        return containerIdBuilder_;
+      }
+
+      // repeated .mesos.v1.NetworkInfo network_infos = 1;
+      private java.util.List<org.apache.mesos.v1.Protos.NetworkInfo> networkInfos_ =
+        java.util.Collections.emptyList();
+      private void ensureNetworkInfosIsMutable() {
+        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
+          networkInfos_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.NetworkInfo>(networkInfos_);
+          bitField0_ |= 0x00000002;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.NetworkInfo, org.apache.mesos.v1.Protos.NetworkInfo.Builder, org.apache.mesos.v1.Protos.NetworkInfoOrBuilder> networkInfosBuilder_;
+
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo network_infos = 1;</code>
+       *
+       * <pre>
+       * This field can be reliably used to identify the container IP address.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.NetworkInfo> getNetworkInfosList() {
+        if (networkInfosBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(networkInfos_);
+        } else {
+          return networkInfosBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo network_infos = 1;</code>
+       *
+       * <pre>
+       * This field can be reliably used to identify the container IP address.
+       * </pre>
+       */
+      public int getNetworkInfosCount() {
+        if (networkInfosBuilder_ == null) {
+          return networkInfos_.size();
+        } else {
+          return networkInfosBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo network_infos = 1;</code>
+       *
+       * <pre>
+       * This field can be reliably used to identify the container IP address.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.NetworkInfo getNetworkInfos(int index) {
+        if (networkInfosBuilder_ == null) {
+          return networkInfos_.get(index);
+        } else {
+          return networkInfosBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo network_infos = 1;</code>
+       *
+       * <pre>
+       * This field can be reliably used to identify the container IP address.
+       * </pre>
+       */
+      public Builder setNetworkInfos(
+          int index, org.apache.mesos.v1.Protos.NetworkInfo value) {
+        if (networkInfosBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureNetworkInfosIsMutable();
+          networkInfos_.set(index, value);
+          onChanged();
+        } else {
+          networkInfosBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo network_infos = 1;</code>
+       *
+       * <pre>
+       * This field can be reliably used to identify the container IP address.
+       * </pre>
+       */
+      public Builder setNetworkInfos(
+          int index, org.apache.mesos.v1.Protos.NetworkInfo.Builder builderForValue) {
+        if (networkInfosBuilder_ == null) {
+          ensureNetworkInfosIsMutable();
+          networkInfos_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          networkInfosBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo network_infos = 1;</code>
+       *
+       * <pre>
+       * This field can be reliably used to identify the container IP address.
+       * </pre>
+       */
+      public Builder addNetworkInfos(org.apache.mesos.v1.Protos.NetworkInfo value) {
+        if (networkInfosBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureNetworkInfosIsMutable();
+          networkInfos_.add(value);
+          onChanged();
+        } else {
+          networkInfosBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo network_infos = 1;</code>
+       *
+       * <pre>
+       * This field can be reliably used to identify the container IP address.
+       * </pre>
+       */
+      public Builder addNetworkInfos(
+          int index, org.apache.mesos.v1.Protos.NetworkInfo value) {
+        if (networkInfosBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureNetworkInfosIsMutable();
+          networkInfos_.add(index, value);
+          onChanged();
+        } else {
+          networkInfosBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo network_infos = 1;</code>
+       *
+       * <pre>
+       * This field can be reliably used to identify the container IP address.
+       * </pre>
+       */
+      public Builder addNetworkInfos(
+          org.apache.mesos.v1.Protos.NetworkInfo.Builder builderForValue) {
+        if (networkInfosBuilder_ == null) {
+          ensureNetworkInfosIsMutable();
+          networkInfos_.add(builderForValue.build());
+          onChanged();
+        } else {
+          networkInfosBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo network_infos = 1;</code>
+       *
+       * <pre>
+       * This field can be reliably used to identify the container IP address.
+       * </pre>
+       */
+      public Builder addNetworkInfos(
+          int index, org.apache.mesos.v1.Protos.NetworkInfo.Builder builderForValue) {
+        if (networkInfosBuilder_ == null) {
+          ensureNetworkInfosIsMutable();
+          networkInfos_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          networkInfosBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo network_infos = 1;</code>
+       *
+       * <pre>
+       * This field can be reliably used to identify the container IP address.
+       * </pre>
+       */
+      public Builder addAllNetworkInfos(
+          java.lang.Iterable<? extends org.apache.mesos.v1.Protos.NetworkInfo> values) {
+        if (networkInfosBuilder_ == null) {
+          ensureNetworkInfosIsMutable();
+          super.addAll(values, networkInfos_);
+          onChanged();
+        } else {
+          networkInfosBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo network_infos = 1;</code>
+       *
+       * <pre>
+       * This field can be reliably used to identify the container IP address.
+       * </pre>
+       */
+      public Builder clearNetworkInfos() {
+        if (networkInfosBuilder_ == null) {
+          networkInfos_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000002);
+          onChanged();
+        } else {
+          networkInfosBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo network_infos = 1;</code>
+       *
+       * <pre>
+       * This field can be reliably used to identify the container IP address.
+       * </pre>
+       */
+      public Builder removeNetworkInfos(int index) {
+        if (networkInfosBuilder_ == null) {
+          ensureNetworkInfosIsMutable();
+          networkInfos_.remove(index);
+          onChanged();
+        } else {
+          networkInfosBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo network_infos = 1;</code>
+       *
+       * <pre>
+       * This field can be reliably used to identify the container IP address.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.NetworkInfo.Builder getNetworkInfosBuilder(
+          int index) {
+        return getNetworkInfosFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo network_infos = 1;</code>
+       *
+       * <pre>
+       * This field can be reliably used to identify the container IP address.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.NetworkInfoOrBuilder getNetworkInfosOrBuilder(
+          int index) {
+        if (networkInfosBuilder_ == null) {
+          return networkInfos_.get(index);  } else {
+          return networkInfosBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo network_infos = 1;</code>
+       *
+       * <pre>
+       * This field can be reliably used to identify the container IP address.
+       * </pre>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.NetworkInfoOrBuilder> 
+           getNetworkInfosOrBuilderList() {
+        if (networkInfosBuilder_ != null) {
+          return networkInfosBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(networkInfos_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo network_infos = 1;</code>
+       *
+       * <pre>
+       * This field can be reliably used to identify the container IP address.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.NetworkInfo.Builder addNetworkInfosBuilder() {
+        return getNetworkInfosFieldBuilder().addBuilder(
+            org.apache.mesos.v1.Protos.NetworkInfo.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo network_infos = 1;</code>
+       *
+       * <pre>
+       * This field can be reliably used to identify the container IP address.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.NetworkInfo.Builder addNetworkInfosBuilder(
+          int index) {
+        return getNetworkInfosFieldBuilder().addBuilder(
+            index, org.apache.mesos.v1.Protos.NetworkInfo.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.NetworkInfo network_infos = 1;</code>
+       *
+       * <pre>
+       * This field can be reliably used to identify the container IP address.
+       * </pre>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.NetworkInfo.Builder> 
+           getNetworkInfosBuilderList() {
+        return getNetworkInfosFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.NetworkInfo, org.apache.mesos.v1.Protos.NetworkInfo.Builder, org.apache.mesos.v1.Protos.NetworkInfoOrBuilder> 
+          getNetworkInfosFieldBuilder() {
+        if (networkInfosBuilder_ == null) {
+          networkInfosBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.NetworkInfo, org.apache.mesos.v1.Protos.NetworkInfo.Builder, org.apache.mesos.v1.Protos.NetworkInfoOrBuilder>(
+                  networkInfos_,
+                  ((bitField0_ & 0x00000002) == 0x00000002),
+                  getParentForChildren(),
+                  isClean());
+          networkInfos_ = null;
+        }
+        return networkInfosBuilder_;
+      }
+
+      // optional .mesos.v1.CgroupInfo cgroup_info = 2;
+      private org.apache.mesos.v1.Protos.CgroupInfo cgroupInfo_ = org.apache.mesos.v1.Protos.CgroupInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.CgroupInfo, org.apache.mesos.v1.Protos.CgroupInfo.Builder, org.apache.mesos.v1.Protos.CgroupInfoOrBuilder> cgroupInfoBuilder_;
+      /**
+       * <code>optional .mesos.v1.CgroupInfo cgroup_info = 2;</code>
+       *
+       * <pre>
+       * Information about Linux control group (cgroup).
+       * </pre>
+       */
+      public boolean hasCgroupInfo() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.v1.CgroupInfo cgroup_info = 2;</code>
+       *
+       * <pre>
+       * Information about Linux control group (cgroup).
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.CgroupInfo getCgroupInfo() {
+        if (cgroupInfoBuilder_ == null) {
+          return cgroupInfo_;
+        } else {
+          return cgroupInfoBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.CgroupInfo cgroup_info = 2;</code>
+       *
+       * <pre>
+       * Information about Linux control group (cgroup).
+       * </pre>
+       */
+      public Builder setCgroupInfo(org.apache.mesos.v1.Protos.CgroupInfo value) {
+        if (cgroupInfoBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          cgroupInfo_ = value;
+          onChanged();
+        } else {
+          cgroupInfoBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CgroupInfo cgroup_info = 2;</code>
+       *
+       * <pre>
+       * Information about Linux control group (cgroup).
+       * </pre>
+       */
+      public Builder setCgroupInfo(
+          org.apache.mesos.v1.Protos.CgroupInfo.Builder builderForValue) {
+        if (cgroupInfoBuilder_ == null) {
+          cgroupInfo_ = builderForValue.build();
+          onChanged();
+        } else {
+          cgroupInfoBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CgroupInfo cgroup_info = 2;</code>
+       *
+       * <pre>
+       * Information about Linux control group (cgroup).
+       * </pre>
+       */
+      public Builder mergeCgroupInfo(org.apache.mesos.v1.Protos.CgroupInfo value) {
+        if (cgroupInfoBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) == 0x00000004) &&
+              cgroupInfo_ != org.apache.mesos.v1.Protos.CgroupInfo.getDefaultInstance()) {
+            cgroupInfo_ =
+              org.apache.mesos.v1.Protos.CgroupInfo.newBuilder(cgroupInfo_).mergeFrom(value).buildPartial();
+          } else {
+            cgroupInfo_ = value;
+          }
+          onChanged();
+        } else {
+          cgroupInfoBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CgroupInfo cgroup_info = 2;</code>
+       *
+       * <pre>
+       * Information about Linux control group (cgroup).
+       * </pre>
+       */
+      public Builder clearCgroupInfo() {
+        if (cgroupInfoBuilder_ == null) {
+          cgroupInfo_ = org.apache.mesos.v1.Protos.CgroupInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          cgroupInfoBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CgroupInfo cgroup_info = 2;</code>
+       *
+       * <pre>
+       * Information about Linux control group (cgroup).
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.CgroupInfo.Builder getCgroupInfoBuilder() {
+        bitField0_ |= 0x00000004;
+        onChanged();
+        return getCgroupInfoFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.CgroupInfo cgroup_info = 2;</code>
+       *
+       * <pre>
+       * Information about Linux control group (cgroup).
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.CgroupInfoOrBuilder getCgroupInfoOrBuilder() {
+        if (cgroupInfoBuilder_ != null) {
+          return cgroupInfoBuilder_.getMessageOrBuilder();
+        } else {
+          return cgroupInfo_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.CgroupInfo cgroup_info = 2;</code>
+       *
+       * <pre>
+       * Information about Linux control group (cgroup).
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.CgroupInfo, org.apache.mesos.v1.Protos.CgroupInfo.Builder, org.apache.mesos.v1.Protos.CgroupInfoOrBuilder> 
+          getCgroupInfoFieldBuilder() {
+        if (cgroupInfoBuilder_ == null) {
+          cgroupInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.CgroupInfo, org.apache.mesos.v1.Protos.CgroupInfo.Builder, org.apache.mesos.v1.Protos.CgroupInfoOrBuilder>(
+                  cgroupInfo_,
+                  getParentForChildren(),
+                  isClean());
+          cgroupInfo_ = null;
+        }
+        return cgroupInfoBuilder_;
+      }
+
+      // optional uint32 executor_pid = 3;
+      private int executorPid_ ;
+      /**
+       * <code>optional uint32 executor_pid = 3;</code>
+       *
+       * <pre>
+       * Information about Executor PID.
+       * </pre>
+       */
+      public boolean hasExecutorPid() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional uint32 executor_pid = 3;</code>
+       *
+       * <pre>
+       * Information about Executor PID.
+       * </pre>
+       */
+      public int getExecutorPid() {
+        return executorPid_;
+      }
+      /**
+       * <code>optional uint32 executor_pid = 3;</code>
+       *
+       * <pre>
+       * Information about Executor PID.
+       * </pre>
+       */
+      public Builder setExecutorPid(int value) {
+        bitField0_ |= 0x00000008;
+        executorPid_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint32 executor_pid = 3;</code>
+       *
+       * <pre>
+       * Information about Executor PID.
+       * </pre>
+       */
+      public Builder clearExecutorPid() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        executorPid_ = 0;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.ContainerStatus)
+    }
+
+    static {
+      defaultInstance = new ContainerStatus(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.ContainerStatus)
+  }
+
+  public interface CgroupInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional .mesos.v1.CgroupInfo.NetCls net_cls = 1;
+    /**
+     * <code>optional .mesos.v1.CgroupInfo.NetCls net_cls = 1;</code>
+     */
+    boolean hasNetCls();
+    /**
+     * <code>optional .mesos.v1.CgroupInfo.NetCls net_cls = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.CgroupInfo.NetCls getNetCls();
+    /**
+     * <code>optional .mesos.v1.CgroupInfo.NetCls net_cls = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.CgroupInfo.NetClsOrBuilder getNetClsOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.CgroupInfo}
+   *
+   * <pre>
+   **
+   * Linux control group (cgroup) information.
+   * </pre>
+   */
+  public static final class CgroupInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements CgroupInfoOrBuilder {
+    // Use CgroupInfo.newBuilder() to construct.
+    private CgroupInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private CgroupInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final CgroupInfo defaultInstance;
+    public static CgroupInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public CgroupInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private CgroupInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              org.apache.mesos.v1.Protos.CgroupInfo.NetCls.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                subBuilder = netCls_.toBuilder();
+              }
+              netCls_ = input.readMessage(org.apache.mesos.v1.Protos.CgroupInfo.NetCls.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(netCls_);
+                netCls_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.CgroupInfo.class, org.apache.mesos.v1.Protos.CgroupInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<CgroupInfo> PARSER =
+        new com.google.protobuf.AbstractParser<CgroupInfo>() {
+      public CgroupInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new CgroupInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<CgroupInfo> getParserForType() {
+      return PARSER;
+    }
+
+    public interface BlkioOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+    }
+    /**
+     * Protobuf type {@code mesos.v1.CgroupInfo.Blkio}
+     *
+     * <pre>
+     * Configuration of a blkio cgroup subsystem.
+     * </pre>
+     */
+    public static final class Blkio extends
+        com.google.protobuf.GeneratedMessage
+        implements BlkioOrBuilder {
+      // Use Blkio.newBuilder() to construct.
+      private Blkio(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Blkio(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Blkio defaultInstance;
+      public static Blkio getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Blkio getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Blkio(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_Blkio_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_Blkio_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.CgroupInfo.Blkio.class, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Blkio> PARSER =
+          new com.google.protobuf.AbstractParser<Blkio>() {
+        public Blkio parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Blkio(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Blkio> getParserForType() {
+        return PARSER;
+      }
+
+      /**
+       * Protobuf enum {@code mesos.v1.CgroupInfo.Blkio.Operation}
+       */
+      public enum Operation
+          implements com.google.protobuf.ProtocolMessageEnum {
+        /**
+         * <code>UNKNOWN = 0;</code>
+         */
+        UNKNOWN(0, 0),
+        /**
+         * <code>TOTAL = 1;</code>
+         */
+        TOTAL(1, 1),
+        /**
+         * <code>READ = 2;</code>
+         */
+        READ(2, 2),
+        /**
+         * <code>WRITE = 3;</code>
+         */
+        WRITE(3, 3),
+        /**
+         * <code>SYNC = 4;</code>
+         */
+        SYNC(4, 4),
+        /**
+         * <code>ASYNC = 5;</code>
+         */
+        ASYNC(5, 5),
+        ;
+
+        /**
+         * <code>UNKNOWN = 0;</code>
+         */
+        public static final int UNKNOWN_VALUE = 0;
+        /**
+         * <code>TOTAL = 1;</code>
+         */
+        public static final int TOTAL_VALUE = 1;
+        /**
+         * <code>READ = 2;</code>
+         */
+        public static final int READ_VALUE = 2;
+        /**
+         * <code>WRITE = 3;</code>
+         */
+        public static final int WRITE_VALUE = 3;
+        /**
+         * <code>SYNC = 4;</code>
+         */
+        public static final int SYNC_VALUE = 4;
+        /**
+         * <code>ASYNC = 5;</code>
+         */
+        public static final int ASYNC_VALUE = 5;
+
+
+        public final int getNumber() { return value; }
+
+        public static Operation valueOf(int value) {
+          switch (value) {
+            case 0: return UNKNOWN;
+            case 1: return TOTAL;
+            case 2: return READ;
+            case 3: return WRITE;
+            case 4: return SYNC;
+            case 5: return ASYNC;
+            default: return null;
+          }
+        }
+
+        public static com.google.protobuf.Internal.EnumLiteMap<Operation>
+            internalGetValueMap() {
+          return internalValueMap;
+        }
+        private static com.google.protobuf.Internal.EnumLiteMap<Operation>
+            internalValueMap =
+              new com.google.protobuf.Internal.EnumLiteMap<Operation>() {
+                public Operation findValueByNumber(int number) {
+                  return Operation.valueOf(number);
+                }
+              };
+
+        public final com.google.protobuf.Descriptors.EnumValueDescriptor
+            getValueDescriptor() {
+          return getDescriptor().getValues().get(index);
+        }
+        public final com.google.protobuf.Descriptors.EnumDescriptor
+            getDescriptorForType() {
+          return getDescriptor();
+        }
+        public static final com.google.protobuf.Descriptors.EnumDescriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.CgroupInfo.Blkio.getDescriptor().getEnumTypes().get(0);
+        }
+
+        private static final Operation[] VALUES = values();
+
+        public static Operation valueOf(
+            com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+          if (desc.getType() != getDescriptor()) {
+            throw new java.lang.IllegalArgumentException(
+              "EnumValueDescriptor is not for this type.");
+          }
+          return VALUES[desc.getIndex()];
+        }
+
+        private final int index;
+        private final int value;
+
+        private Operation(int index, int value) {
+          this.index = index;
+          this.value = value;
+        }
+
+        // @@protoc_insertion_point(enum_scope:mesos.v1.CgroupInfo.Blkio.Operation)
+      }
+
+      public interface ValueOrBuilder
+          extends com.google.protobuf.MessageOrBuilder {
+
+        // optional .mesos.v1.CgroupInfo.Blkio.Operation op = 1;
+        /**
+         * <code>optional .mesos.v1.CgroupInfo.Blkio.Operation op = 1;</code>
+         *
+         * <pre>
+         * Required.
+         * </pre>
+         */
+        boolean hasOp();
+        /**
+         * <code>optional .mesos.v1.CgroupInfo.Blkio.Operation op = 1;</code>
+         *
+         * <pre>
+         * Required.
+         * </pre>
+         */
+        org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Operation getOp();
+
+        // optional uint64 value = 2;
+        /**
+         * <code>optional uint64 value = 2;</code>
+         *
+         * <pre>
+         * Required.
+         * </pre>
+         */
+        boolean hasValue();
+        /**
+         * <code>optional uint64 value = 2;</code>
+         *
+         * <pre>
+         * Required.
+         * </pre>
+         */
+        long getValue();
+      }
+      /**
+       * Protobuf type {@code mesos.v1.CgroupInfo.Blkio.Value}
+       *
+       * <pre>
+       * Describes a stat value without the device descriptor part.
+       * </pre>
+       */
+      public static final class Value extends
+          com.google.protobuf.GeneratedMessage
+          implements ValueOrBuilder {
+        // Use Value.newBuilder() to construct.
+        private Value(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+          super(builder);
+          this.unknownFields = builder.getUnknownFields();
+        }
+        private Value(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+        private static final Value defaultInstance;
+        public static Value getDefaultInstance() {
+          return defaultInstance;
+        }
+
+        public Value getDefaultInstanceForType() {
+          return defaultInstance;
+        }
+
+        private final com.google.protobuf.UnknownFieldSet unknownFields;
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet
+            getUnknownFields() {
+          return this.unknownFields;
+        }
+        private Value(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          initFields();
+          int mutable_bitField0_ = 0;
+          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+              com.google.protobuf.UnknownFieldSet.newBuilder();
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(input, unknownFields,
+                                         extensionRegistry, tag)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 8: {
+                  int rawValue = input.readEnum();
+                  org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Operation value = org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Operation.valueOf(rawValue);
+                  if (value == null) {
+                    unknownFields.mergeVarintField(1, rawValue);
+                  } else {
+                    bitField0_ |= 0x00000001;
+                    op_ = value;
+                  }
+                  break;
+                }
+                case 16: {
+                  bitField0_ |= 0x00000002;
+                  value_ = input.readUInt64();
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw e.setUnfinishedMessage(this);
+          } catch (java.io.IOException e) {
+            throw new com.google.protobuf.InvalidProtocolBufferException(
+                e.getMessage()).setUnfinishedMessage(this);
+          } finally {
+            this.unknownFields = unknownFields.build();
+            makeExtensionsImmutable();
+          }
+        }
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_Blkio_Value_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_Blkio_Value_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.class, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder.class);
+        }
+
+        public static com.google.protobuf.Parser<Value> PARSER =
+            new com.google.protobuf.AbstractParser<Value>() {
+          public Value parsePartialFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return new Value(input, extensionRegistry);
+          }
+        };
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<Value> getParserForType() {
+          return PARSER;
+        }
+
+        private int bitField0_;
+        // optional .mesos.v1.CgroupInfo.Blkio.Operation op = 1;
+        public static final int OP_FIELD_NUMBER = 1;
+        private org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Operation op_;
+        /**
+         * <code>optional .mesos.v1.CgroupInfo.Blkio.Operation op = 1;</code>
+         *
+         * <pre>
+         * Required.
+         * </pre>
+         */
+        public boolean hasOp() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional .mesos.v1.CgroupInfo.Blkio.Operation op = 1;</code>
+         *
+         * <pre>
+         * Required.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Operation getOp() {
+          return op_;
+        }
+
+        // optional uint64 value = 2;
+        public static final int VALUE_FIELD_NUMBER = 2;
+        private long value_;
+        /**
+         * <code>optional uint64 value = 2;</code>
+         *
+         * <pre>
+         * Required.
+         * </pre>
+         */
+        public boolean hasValue() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional uint64 value = 2;</code>
+         *
+         * <pre>
+         * Required.
+         * </pre>
+         */
+        public long getValue() {
+          return value_;
+        }
+
+        private void initFields() {
+          op_ = org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Operation.UNKNOWN;
+          value_ = 0L;
+        }
+        private byte memoizedIsInitialized = -1;
+        public final boolean isInitialized() {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized != -1) return isInitialized == 1;
+
+          memoizedIsInitialized = 1;
+          return true;
+        }
+
+        public void writeTo(com.google.protobuf.CodedOutputStream output)
+                            throws java.io.IOException {
+          getSerializedSize();
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            output.writeEnum(1, op_.getNumber());
+          }
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            output.writeUInt64(2, value_);
+          }
+          getUnknownFields().writeTo(output);
+        }
+
+        private int memoizedSerializedSize = -1;
+        public int getSerializedSize() {
+          int size = memoizedSerializedSize;
+          if (size != -1) return size;
+
+          size = 0;
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeEnumSize(1, op_.getNumber());
+          }
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeUInt64Size(2, value_);
+          }
+          size += getUnknownFields().getSerializedSize();
+          memoizedSerializedSize = size;
+          return size;
+        }
+
+        private static final long serialVersionUID = 0L;
+        @java.lang.Override
+        protected java.lang.Object writeReplace()
+            throws java.io.ObjectStreamException {
+          return super.writeReplace();
+        }
+
+        public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value parseFrom(
+            com.google.protobuf.ByteString data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value parseFrom(
+            com.google.protobuf.ByteString data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value parseFrom(byte[] data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value parseFrom(
+            byte[] data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value parseFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value parseFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value parseDelimitedFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value parseDelimitedFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value parseFrom(
+            com.google.protobuf.CodedInputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value parseFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+
+        public static Builder newBuilder() { return Builder.create(); }
+        public Builder newBuilderForType() { return newBuilder(); }
+        public static Builder newBuilder(org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value prototype) {
+          return newBuilder().mergeFrom(prototype);
+        }
+        public Builder toBuilder() { return newBuilder(this); }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          Builder builder = new Builder(parent);
+          return builder;
+        }
+        /**
+         * Protobuf type {@code mesos.v1.CgroupInfo.Blkio.Value}
+         *
+         * <pre>
+         * Describes a stat value without the device descriptor part.
+         * </pre>
+         */
+        public static final class Builder extends
+            com.google.protobuf.GeneratedMessage.Builder<Builder>
+           implements org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder {
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_Blkio_Value_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_Blkio_Value_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.class, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder.class);
+          }
+
+          // Construct using org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.newBuilder()
+          private Builder() {
+            maybeForceBuilderInitialization();
+          }
+
+          private Builder(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            super(parent);
+            maybeForceBuilderInitialization();
+          }
+          private void maybeForceBuilderInitialization() {
+            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            }
+          }
+          private static Builder create() {
+            return new Builder();
+          }
+
+          public Builder clear() {
+            super.clear();
+            op_ = org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Operation.UNKNOWN;
+            bitField0_ = (bitField0_ & ~0x00000001);
+            value_ = 0L;
+            bitField0_ = (bitField0_ & ~0x00000002);
+            return this;
+          }
+
+          public Builder clone() {
+            return create().mergeFrom(buildPartial());
+          }
+
+          public com.google.protobuf.Descriptors.Descriptor
+              getDescriptorForType() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_Blkio_Value_descriptor;
+          }
+
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value getDefaultInstanceForType() {
+            return org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.getDefaultInstance();
+          }
+
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value build() {
+            org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value result = buildPartial();
+            if (!result.isInitialized()) {
+              throw newUninitializedMessageException(result);
+            }
+            return result;
+          }
+
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value buildPartial() {
+            org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value result = new org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value(this);
+            int from_bitField0_ = bitField0_;
+            int to_bitField0_ = 0;
+            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+              to_bitField0_ |= 0x00000001;
+            }
+            result.op_ = op_;
+            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+              to_bitField0_ |= 0x00000002;
+            }
+            result.value_ = value_;
+            result.bitField0_ = to_bitField0_;
+            onBuilt();
+            return result;
+          }
+
+          public Builder mergeFrom(com.google.protobuf.Message other) {
+            if (other instanceof org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value) {
+              return mergeFrom((org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value)other);
+            } else {
+              super.mergeFrom(other);
+              return this;
+            }
+          }
+
+          public Builder mergeFrom(org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value other) {
+            if (other == org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.getDefaultInstance()) return this;
+            if (other.hasOp()) {
+              setOp(other.getOp());
+            }
+            if (other.hasValue()) {
+              setValue(other.getValue());
+            }
+            this.mergeUnknownFields(other.getUnknownFields());
+            return this;
+          }
+
+          public final boolean isInitialized() {
+            return true;
+          }
+
+          public Builder mergeFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value parsedMessage = null;
+            try {
+              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              parsedMessage = (org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value) e.getUnfinishedMessage();
+              throw e;
+            } finally {
+              if (parsedMessage != null) {
+                mergeFrom(parsedMessage);
+              }
+            }
+            return this;
+          }
+          private int bitField0_;
+
+          // optional .mesos.v1.CgroupInfo.Blkio.Operation op = 1;
+          private org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Operation op_ = org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Operation.UNKNOWN;
+          /**
+           * <code>optional .mesos.v1.CgroupInfo.Blkio.Operation op = 1;</code>
+           *
+           * <pre>
+           * Required.
+           * </pre>
+           */
+          public boolean hasOp() {
+            return ((bitField0_ & 0x00000001) == 0x00000001);
+          }
+          /**
+           * <code>optional .mesos.v1.CgroupInfo.Blkio.Operation op = 1;</code>
+           *
+           * <pre>
+           * Required.
+           * </pre>
+           */
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Operation getOp() {
+            return op_;
+          }
+          /**
+           * <code>optional .mesos.v1.CgroupInfo.Blkio.Operation op = 1;</code>
+           *
+           * <pre>
+           * Required.
+           * </pre>
+           */
+          public Builder setOp(org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Operation value) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            bitField0_ |= 0x00000001;
+            op_ = value;
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>optional .mesos.v1.CgroupInfo.Blkio.Operation op = 1;</code>
+           *
+           * <pre>
+           * Required.
+           * </pre>
+           */
+          public Builder clearOp() {
+            bitField0_ = (bitField0_ & ~0x00000001);
+            op_ = org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Operation.UNKNOWN;
+            onChanged();
+            return this;
+          }
+
+          // optional uint64 value = 2;
+          private long value_ ;
+          /**
+           * <code>optional uint64 value = 2;</code>
+           *
+           * <pre>
+           * Required.
+           * </pre>
+           */
+          public boolean hasValue() {
+            return ((bitField0_ & 0x00000002) == 0x00000002);
+          }
+          /**
+           * <code>optional uint64 value = 2;</code>
+           *
+           * <pre>
+           * Required.
+           * </pre>
+           */
+          public long getValue() {
+            return value_;
+          }
+          /**
+           * <code>optional uint64 value = 2;</code>
+           *
+           * <pre>
+           * Required.
+           * </pre>
+           */
+          public Builder setValue(long value) {
+            bitField0_ |= 0x00000002;
+            value_ = value;
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>optional uint64 value = 2;</code>
+           *
+           * <pre>
+           * Required.
+           * </pre>
+           */
+          public Builder clearValue() {
+            bitField0_ = (bitField0_ & ~0x00000002);
+            value_ = 0L;
+            onChanged();
+            return this;
+          }
+
+          // @@protoc_insertion_point(builder_scope:mesos.v1.CgroupInfo.Blkio.Value)
+        }
+
+        static {
+          defaultInstance = new Value(true);
+          defaultInstance.initFields();
+        }
+
+        // @@protoc_insertion_point(class_scope:mesos.v1.CgroupInfo.Blkio.Value)
+      }
+
+      public interface CFQOrBuilder
+          extends com.google.protobuf.MessageOrBuilder {
+      }
+      /**
+       * Protobuf type {@code mesos.v1.CgroupInfo.Blkio.CFQ}
+       */
+      public static final class CFQ extends
+          com.google.protobuf.GeneratedMessage
+          implements CFQOrBuilder {
+        // Use CFQ.newBuilder() to construct.
+        private CFQ(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+          super(builder);
+          this.unknownFields = builder.getUnknownFields();
+        }
+        private CFQ(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+        private static final CFQ defaultInstance;
+        public static CFQ getDefaultInstance() {
+          return defaultInstance;
+        }
+
+        public CFQ getDefaultInstanceForType() {
+          return defaultInstance;
+        }
+
+        private final com.google.protobuf.UnknownFieldSet unknownFields;
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet
+            getUnknownFields() {
+          return this.unknownFields;
+        }
+        private CFQ(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          initFields();
+          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+              com.google.protobuf.UnknownFieldSet.newBuilder();
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(input, unknownFields,
+                                         extensionRegistry, tag)) {
+                    done = true;
+                  }
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw e.setUnfinishedMessage(this);
+          } catch (java.io.IOException e) {
+            throw new com.google.protobuf.InvalidProtocolBufferException(
+                e.getMessage()).setUnfinishedMessage(this);
+          } finally {
+            this.unknownFields = unknownFields.build();
+            makeExtensionsImmutable();
+          }
+        }
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_Blkio_CFQ_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_Blkio_CFQ_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.class, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Builder.class);
+        }
+
+        public static com.google.protobuf.Parser<CFQ> PARSER =
+            new com.google.protobuf.AbstractParser<CFQ>() {
+          public CFQ parsePartialFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return new CFQ(input, extensionRegistry);
+          }
+        };
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<CFQ> getParserForType() {
+          return PARSER;
+        }
+
+        public interface StatisticsOrBuilder
+            extends com.google.protobuf.MessageOrBuilder {
+
+          // optional .mesos.v1.Device.Number device = 1;
+          /**
+           * <code>optional .mesos.v1.Device.Number device = 1;</code>
+           *
+           * <pre>
+           * Stats are grouped by block devices. If `device` is not
+           * set, it represents `Total`.
+           * </pre>
+           */
+          boolean hasDevice();
+          /**
+           * <code>optional .mesos.v1.Device.Number device = 1;</code>
+           *
+           * <pre>
+           * Stats are grouped by block devices. If `device` is not
+           * set, it represents `Total`.
+           * </pre>
+           */
+          org.apache.mesos.v1.Protos.Device.Number getDevice();
+          /**
+           * <code>optional .mesos.v1.Device.Number device = 1;</code>
+           *
+           * <pre>
+           * Stats are grouped by block devices. If `device` is not
+           * set, it represents `Total`.
+           * </pre>
+           */
+          org.apache.mesos.v1.Protos.Device.NumberOrBuilder getDeviceOrBuilder();
+
+          // optional uint64 sectors = 2;
+          /**
+           * <code>optional uint64 sectors = 2;</code>
+           *
+           * <pre>
+           * blkio.sectors
+           * </pre>
+           */
+          boolean hasSectors();
+          /**
+           * <code>optional uint64 sectors = 2;</code>
+           *
+           * <pre>
+           * blkio.sectors
+           * </pre>
+           */
+          long getSectors();
+
+          // optional uint64 time = 3;
+          /**
+           * <code>optional uint64 time = 3;</code>
+           *
+           * <pre>
+           * blkio.time
+           * </pre>
+           */
+          boolean hasTime();
+          /**
+           * <code>optional uint64 time = 3;</code>
+           *
+           * <pre>
+           * blkio.time
+           * </pre>
+           */
+          long getTime();
+
+          // repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 4;
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+           *
+           * <pre>
+           * blkio.io_serviced
+           * </pre>
+           */
+          java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> 
+              getIoServicedList();
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+           *
+           * <pre>
+           * blkio.io_serviced
+           * </pre>
+           */
+          org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value getIoServiced(int index);
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+           *
+           * <pre>
+           * blkio.io_serviced
+           * </pre>
+           */
+          int getIoServicedCount();
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+           *
+           * <pre>
+           * blkio.io_serviced
+           * </pre>
+           */
+          java.util.List<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+              getIoServicedOrBuilderList();
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+           *
+           * <pre>
+           * blkio.io_serviced
+           * </pre>
+           */
+          org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoServicedOrBuilder(
+              int index);
+
+          // repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 5;
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+           *
+           * <pre>
+           * blkio.io_service_bytes
+           * </pre>
+           */
+          java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> 
+              getIoServiceBytesList();
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+           *
+           * <pre>
+           * blkio.io_service_bytes
+           * </pre>
+           */
+          org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value getIoServiceBytes(int index);
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+           *
+           * <pre>
+           * blkio.io_service_bytes
+           * </pre>
+           */
+          int getIoServiceBytesCount();
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+           *
+           * <pre>
+           * blkio.io_service_bytes
+           * </pre>
+           */
+          java.util.List<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+              getIoServiceBytesOrBuilderList();
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+           *
+           * <pre>
+           * blkio.io_service_bytes
+           * </pre>
+           */
+          org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoServiceBytesOrBuilder(
+              int index);
+
+          // repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_time = 6;
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+           *
+           * <pre>
+           * blkio.io_service_time
+           * </pre>
+           */
+          java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> 
+              getIoServiceTimeList();
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+           *
+           * <pre>
+           * blkio.io_service_time
+           * </pre>
+           */
+          org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value getIoServiceTime(int index);
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+           *
+           * <pre>
+           * blkio.io_service_time
+           * </pre>
+           */
+          int getIoServiceTimeCount();
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+           *
+           * <pre>
+           * blkio.io_service_time
+           * </pre>
+           */
+          java.util.List<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+              getIoServiceTimeOrBuilderList();
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+           *
+           * <pre>
+           * blkio.io_service_time
+           * </pre>
+           */
+          org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoServiceTimeOrBuilder(
+              int index);
+
+          // repeated .mesos.v1.CgroupInfo.Blkio.Value io_wait_time = 7;
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+           *
+           * <pre>
+           * blkio.io_wait_time
+           * </pre>
+           */
+          java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> 
+              getIoWaitTimeList();
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+           *
+           * <pre>
+           * blkio.io_wait_time
+           * </pre>
+           */
+          org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value getIoWaitTime(int index);
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+           *
+           * <pre>
+           * blkio.io_wait_time
+           * </pre>
+           */
+          int getIoWaitTimeCount();
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+           *
+           * <pre>
+           * blkio.io_wait_time
+           * </pre>
+           */
+          java.util.List<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+              getIoWaitTimeOrBuilderList();
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+           *
+           * <pre>
+           * blkio.io_wait_time
+           * </pre>
+           */
+          org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoWaitTimeOrBuilder(
+              int index);
+
+          // repeated .mesos.v1.CgroupInfo.Blkio.Value io_merged = 8;
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_merged = 8;</code>
+           *
+           * <pre>
+           * blkio.io_merged
+           * </pre>
+           */
+          java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> 
+              getIoMergedList();
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_merged = 8;</code>
+           *
+           * <pre>
+           * blkio.io_merged
+           * </pre>
+           */
+          org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value getIoMerged(int index);
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_merged = 8;</code>
+           *
+           * <pre>
+           * blkio.io_merged
+           * </pre>
+           */
+          int getIoMergedCount();
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_merged = 8;</code>
+           *
+           * <pre>
+           * blkio.io_merged
+           * </pre>
+           */
+          java.util.List<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+              getIoMergedOrBuilderList();
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_merged = 8;</code>
+           *
+           * <pre>
+           * blkio.io_merged
+           * </pre>
+           */
+          org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoMergedOrBuilder(
+              int index);
+
+          // repeated .mesos.v1.CgroupInfo.Blkio.Value io_queued = 9;
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_queued = 9;</code>
+           *
+           * <pre>
+           * blkio.io_queued
+           * </pre>
+           */
+          java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> 
+              getIoQueuedList();
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_queued = 9;</code>
+           *
+           * <pre>
+           * blkio.io_queued
+           * </pre>
+           */
+          org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value getIoQueued(int index);
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_queued = 9;</code>
+           *
+           * <pre>
+           * blkio.io_queued
+           * </pre>
+           */
+          int getIoQueuedCount();
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_queued = 9;</code>
+           *
+           * <pre>
+           * blkio.io_queued
+           * </pre>
+           */
+          java.util.List<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+              getIoQueuedOrBuilderList();
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_queued = 9;</code>
+           *
+           * <pre>
+           * blkio.io_queued
+           * </pre>
+           */
+          org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoQueuedOrBuilder(
+              int index);
+        }
+        /**
+         * Protobuf type {@code mesos.v1.CgroupInfo.Blkio.CFQ.Statistics}
+         */
+        public static final class Statistics extends
+            com.google.protobuf.GeneratedMessage
+            implements StatisticsOrBuilder {
+          // Use Statistics.newBuilder() to construct.
+          private Statistics(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+            super(builder);
+            this.unknownFields = builder.getUnknownFields();
+          }
+          private Statistics(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+          private static final Statistics defaultInstance;
+          public static Statistics getDefaultInstance() {
+            return defaultInstance;
+          }
+
+          public Statistics getDefaultInstanceForType() {
+            return defaultInstance;
+          }
+
+          private final com.google.protobuf.UnknownFieldSet unknownFields;
+          @java.lang.Override
+          public final com.google.protobuf.UnknownFieldSet
+              getUnknownFields() {
+            return this.unknownFields;
+          }
+          private Statistics(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            initFields();
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+                com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+              boolean done = false;
+              while (!done) {
+                int tag = input.readTag();
+                switch (tag) {
+                  case 0:
+                    done = true;
+                    break;
+                  default: {
+                    if (!parseUnknownField(input, unknownFields,
+                                           extensionRegistry, tag)) {
+                      done = true;
+                    }
+                    break;
+                  }
+                  case 10: {
+                    org.apache.mesos.v1.Protos.Device.Number.Builder subBuilder = null;
+                    if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                      subBuilder = device_.toBuilder();
+                    }
+                    device_ = input.readMessage(org.apache.mesos.v1.Protos.Device.Number.PARSER, extensionRegistry);
+                    if (subBuilder != null) {
+                      subBuilder.mergeFrom(device_);
+                      device_ = subBuilder.buildPartial();
+                    }
+                    bitField0_ |= 0x00000001;
+                    break;
+                  }
+                  case 16: {
+                    bitField0_ |= 0x00000002;
+                    sectors_ = input.readUInt64();
+                    break;
+                  }
+                  case 24: {
+                    bitField0_ |= 0x00000004;
+                    time_ = input.readUInt64();
+                    break;
+                  }
+                  case 34: {
+                    if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
+                      ioServiced_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value>();
+                      mutable_bitField0_ |= 0x00000008;
+                    }
+                    ioServiced_.add(input.readMessage(org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.PARSER, extensionRegistry));
+                    break;
+                  }
+                  case 42: {
+                    if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
+                      ioServiceBytes_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value>();
+                      mutable_bitField0_ |= 0x00000010;
+                    }
+                    ioServiceBytes_.add(input.readMessage(org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.PARSER, extensionRegistry));
+                    break;
+                  }
+                  case 50: {
+                    if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
+                      ioServiceTime_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value>();
+                      mutable_bitField0_ |= 0x00000020;
+                    }
+                    ioServiceTime_.add(input.readMessage(org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.PARSER, extensionRegistry));
+                    break;
+                  }
+                  case 58: {
+                    if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
+                      ioWaitTime_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value>();
+                      mutable_bitField0_ |= 0x00000040;
+                    }
+                    ioWaitTime_.add(input.readMessage(org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.PARSER, extensionRegistry));
+                    break;
+                  }
+                  case 66: {
+                    if (!((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
+                      ioMerged_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value>();
+                      mutable_bitField0_ |= 0x00000080;
+                    }
+                    ioMerged_.add(input.readMessage(org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.PARSER, extensionRegistry));
+                    break;
+                  }
+                  case 74: {
+                    if (!((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
+                      ioQueued_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value>();
+                      mutable_bitField0_ |= 0x00000100;
+                    }
+                    ioQueued_.add(input.readMessage(org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.PARSER, extensionRegistry));
+                    break;
+                  }
+                }
+              }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+              throw new com.google.protobuf.InvalidProtocolBufferException(
+                  e.getMessage()).setUnfinishedMessage(this);
+            } finally {
+              if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
+                ioServiced_ = java.util.Collections.unmodifiableList(ioServiced_);
+              }
+              if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
+                ioServiceBytes_ = java.util.Collections.unmodifiableList(ioServiceBytes_);
+              }
+              if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
+                ioServiceTime_ = java.util.Collections.unmodifiableList(ioServiceTime_);
+              }
+              if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
+                ioWaitTime_ = java.util.Collections.unmodifiableList(ioWaitTime_);
+              }
+              if (((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
+                ioMerged_ = java.util.Collections.unmodifiableList(ioMerged_);
+              }
+              if (((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
+                ioQueued_ = java.util.Collections.unmodifiableList(ioQueued_);
+              }
+              this.unknownFields = unknownFields.build();
+              makeExtensionsImmutable();
+            }
+          }
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_Blkio_CFQ_Statistics_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_Blkio_CFQ_Statistics_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics.class, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder.class);
+          }
+
+          public static com.google.protobuf.Parser<Statistics> PARSER =
+              new com.google.protobuf.AbstractParser<Statistics>() {
+            public Statistics parsePartialFrom(
+                com.google.protobuf.CodedInputStream input,
+                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+                throws com.google.protobuf.InvalidProtocolBufferException {
+              return new Statistics(input, extensionRegistry);
+            }
+          };
+
+          @java.lang.Override
+          public com.google.protobuf.Parser<Statistics> getParserForType() {
+            return PARSER;
+          }
+
+          private int bitField0_;
+          // optional .mesos.v1.Device.Number device = 1;
+          public static final int DEVICE_FIELD_NUMBER = 1;
+          private org.apache.mesos.v1.Protos.Device.Number device_;
+          /**
+           * <code>optional .mesos.v1.Device.Number device = 1;</code>
+           *
+           * <pre>
+           * Stats are grouped by block devices. If `device` is not
+           * set, it represents `Total`.
+           * </pre>
+           */
+          public boolean hasDevice() {
+            return ((bitField0_ & 0x00000001) == 0x00000001);
+          }
+          /**
+           * <code>optional .mesos.v1.Device.Number device = 1;</code>
+           *
+           * <pre>
+           * Stats are grouped by block devices. If `device` is not
+           * set, it represents `Total`.
+           * </pre>
+           */
+          public org.apache.mesos.v1.Protos.Device.Number getDevice() {
+            return device_;
+          }
+          /**
+           * <code>optional .mesos.v1.Device.Number device = 1;</code>
+           *
+           * <pre>
+           * Stats are grouped by block devices. If `device` is not
+           * set, it represents `Total`.
+           * </pre>
+           */
+          public org.apache.mesos.v1.Protos.Device.NumberOrBuilder getDeviceOrBuilder() {
+            return device_;
+          }
+
+          // optional uint64 sectors = 2;
+          public static final int SECTORS_FIELD_NUMBER = 2;
+          private long sectors_;
+          /**
+           * <code>optional uint64 sectors = 2;</code>
+           *
+           * <pre>
+           * blkio.sectors
+           * </pre>
+           */
+          public boolean hasSectors() {
+            return ((bitField0_ & 0x00000002) == 0x00000002);
+          }
+          /**
+           * <code>optional uint64 sectors = 2;</code>
+           *
+           * <pre>
+           * blkio.sectors
+           * </pre>
+           */
+          public long getSectors() {
+            return sectors_;
+          }
+
+          // optional uint64 time = 3;
+          public static final int TIME_FIELD_NUMBER = 3;
+          private long time_;
+          /**
+           * <code>optional uint64 time = 3;</code>
+           *
+           * <pre>
+           * blkio.time
+           * </pre>
+           */
+          public boolean hasTime() {
+            return ((bitField0_ & 0x00000004) == 0x00000004);
+          }
+          /**
+           * <code>optional uint64 time = 3;</code>
+           *
+           * <pre>
+           * blkio.time
+           * </pre>
+           */
+          public long getTime() {
+            return time_;
+          }
+
+          // repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 4;
+          public static final int IO_SERVICED_FIELD_NUMBER = 4;
+          private java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> ioServiced_;
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+           *
+           * <pre>
+           * blkio.io_serviced
+           * </pre>
+           */
+          public java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> getIoServicedList() {
+            return ioServiced_;
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+           *
+           * <pre>
+           * blkio.io_serviced
+           * </pre>
+           */
+          public java.util.List<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+              getIoServicedOrBuilderList() {
+            return ioServiced_;
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+           *
+           * <pre>
+           * blkio.io_serviced
+           * </pre>
+           */
+          public int getIoServicedCount() {
+            return ioServiced_.size();
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+           *
+           * <pre>
+           * blkio.io_serviced
+           * </pre>
+           */
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value getIoServiced(int index) {
+            return ioServiced_.get(index);
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+           *
+           * <pre>
+           * blkio.io_serviced
+           * </pre>
+           */
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoServicedOrBuilder(
+              int index) {
+            return ioServiced_.get(index);
+          }
+
+          // repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 5;
+          public static final int IO_SERVICE_BYTES_FIELD_NUMBER = 5;
+          private java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> ioServiceBytes_;
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+           *
+           * <pre>
+           * blkio.io_service_bytes
+           * </pre>
+           */
+          public java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> getIoServiceBytesList() {
+            return ioServiceBytes_;
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+           *
+           * <pre>
+           * blkio.io_service_bytes
+           * </pre>
+           */
+          public java.util.List<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+              getIoServiceBytesOrBuilderList() {
+            return ioServiceBytes_;
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+           *
+           * <pre>
+           * blkio.io_service_bytes
+           * </pre>
+           */
+          public int getIoServiceBytesCount() {
+            return ioServiceBytes_.size();
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+           *
+           * <pre>
+           * blkio.io_service_bytes
+           * </pre>
+           */
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value getIoServiceBytes(int index) {
+            return ioServiceBytes_.get(index);
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+           *
+           * <pre>
+           * blkio.io_service_bytes
+           * </pre>
+           */
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoServiceBytesOrBuilder(
+              int index) {
+            return ioServiceBytes_.get(index);
+          }
+
+          // repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_time = 6;
+          public static final int IO_SERVICE_TIME_FIELD_NUMBER = 6;
+          private java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> ioServiceTime_;
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+           *
+           * <pre>
+           * blkio.io_service_time
+           * </pre>
+           */
+          public java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> getIoServiceTimeList() {
+            return ioServiceTime_;
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+           *
+           * <pre>
+           * blkio.io_service_time
+           * </pre>
+           */
+          public java.util.List<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+              getIoServiceTimeOrBuilderList() {
+            return ioServiceTime_;
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+           *
+           * <pre>
+           * blkio.io_service_time
+           * </pre>
+           */
+          public int getIoServiceTimeCount() {
+            return ioServiceTime_.size();
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+           *
+           * <pre>
+           * blkio.io_service_time
+           * </pre>
+           */
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value getIoServiceTime(int index) {
+            return ioServiceTime_.get(index);
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+           *
+           * <pre>
+           * blkio.io_service_time
+           * </pre>
+           */
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoServiceTimeOrBuilder(
+              int index) {
+            return ioServiceTime_.get(index);
+          }
+
+          // repeated .mesos.v1.CgroupInfo.Blkio.Value io_wait_time = 7;
+          public static final int IO_WAIT_TIME_FIELD_NUMBER = 7;
+          private java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> ioWaitTime_;
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+           *
+           * <pre>
+           * blkio.io_wait_time
+           * </pre>
+           */
+          public java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> getIoWaitTimeList() {
+            return ioWaitTime_;
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+           *
+           * <pre>
+           * blkio.io_wait_time
+           * </pre>
+           */
+          public java.util.List<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+              getIoWaitTimeOrBuilderList() {
+            return ioWaitTime_;
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+           *
+           * <pre>
+           * blkio.io_wait_time
+           * </pre>
+           */
+          public int getIoWaitTimeCount() {
+            return ioWaitTime_.size();
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+           *
+           * <pre>
+           * blkio.io_wait_time
+           * </pre>
+           */
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value getIoWaitTime(int index) {
+            return ioWaitTime_.get(index);
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+           *
+           * <pre>
+           * blkio.io_wait_time
+           * </pre>
+           */
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoWaitTimeOrBuilder(
+              int index) {
+            return ioWaitTime_.get(index);
+          }
+
+          // repeated .mesos.v1.CgroupInfo.Blkio.Value io_merged = 8;
+          public static final int IO_MERGED_FIELD_NUMBER = 8;
+          private java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> ioMerged_;
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_merged = 8;</code>
+           *
+           * <pre>
+           * blkio.io_merged
+           * </pre>
+           */
+          public java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> getIoMergedList() {
+            return ioMerged_;
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_merged = 8;</code>
+           *
+           * <pre>
+           * blkio.io_merged
+           * </pre>
+           */
+          public java.util.List<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+              getIoMergedOrBuilderList() {
+            return ioMerged_;
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_merged = 8;</code>
+           *
+           * <pre>
+           * blkio.io_merged
+           * </pre>
+           */
+          public int getIoMergedCount() {
+            return ioMerged_.size();
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_merged = 8;</code>
+           *
+           * <pre>
+           * blkio.io_merged
+           * </pre>
+           */
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value getIoMerged(int index) {
+            return ioMerged_.get(index);
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_merged = 8;</code>
+           *
+           * <pre>
+           * blkio.io_merged
+           * </pre>
+           */
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoMergedOrBuilder(
+              int index) {
+            return ioMerged_.get(index);
+          }
+
+          // repeated .mesos.v1.CgroupInfo.Blkio.Value io_queued = 9;
+          public static final int IO_QUEUED_FIELD_NUMBER = 9;
+          private java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> ioQueued_;
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_queued = 9;</code>
+           *
+           * <pre>
+           * blkio.io_queued
+           * </pre>
+           */
+          public java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> getIoQueuedList() {
+            return ioQueued_;
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_queued = 9;</code>
+           *
+           * <pre>
+           * blkio.io_queued
+           * </pre>
+           */
+          public java.util.List<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+              getIoQueuedOrBuilderList() {
+            return ioQueued_;
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_queued = 9;</code>
+           *
+           * <pre>
+           * blkio.io_queued
+           * </pre>
+           */
+          public int getIoQueuedCount() {
+            return ioQueued_.size();
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_queued = 9;</code>
+           *
+           * <pre>
+           * blkio.io_queued
+           * </pre>
+           */
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value getIoQueued(int index) {
+            return ioQueued_.get(index);
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_queued = 9;</code>
+           *
+           * <pre>
+           * blkio.io_queued
+           * </pre>
+           */
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoQueuedOrBuilder(
+              int index) {
+            return ioQueued_.get(index);
+          }
+
+          private void initFields() {
+            device_ = org.apache.mesos.v1.Protos.Device.Number.getDefaultInstance();
+            sectors_ = 0L;
+            time_ = 0L;
+            ioServiced_ = java.util.Collections.emptyList();
+            ioServiceBytes_ = java.util.Collections.emptyList();
+            ioServiceTime_ = java.util.Collections.emptyList();
+            ioWaitTime_ = java.util.Collections.emptyList();
+            ioMerged_ = java.util.Collections.emptyList();
+            ioQueued_ = java.util.Collections.emptyList();
+          }
+          private byte memoizedIsInitialized = -1;
+          public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized != -1) return isInitialized == 1;
+
+            if (hasDevice()) {
+              if (!getDevice().isInitialized()) {
+                memoizedIsInitialized = 0;
+                return false;
+              }
+            }
+            memoizedIsInitialized = 1;
+            return true;
+          }
+
+          public void writeTo(com.google.protobuf.CodedOutputStream output)
+                              throws java.io.IOException {
+            getSerializedSize();
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              output.writeMessage(1, device_);
+            }
+            if (((bitField0_ & 0x00000002) == 0x00000002)) {
+              output.writeUInt64(2, sectors_);
+            }
+            if (((bitField0_ & 0x00000004) == 0x00000004)) {
+              output.writeUInt64(3, time_);
+            }
+            for (int i = 0; i < ioServiced_.size(); i++) {
+              output.writeMessage(4, ioServiced_.get(i));
+            }
+            for (int i = 0; i < ioServiceBytes_.size(); i++) {
+              output.writeMessage(5, ioServiceBytes_.get(i));
+            }
+            for (int i = 0; i < ioServiceTime_.size(); i++) {
+              output.writeMessage(6, ioServiceTime_.get(i));
+            }
+            for (int i = 0; i < ioWaitTime_.size(); i++) {
+              output.writeMessage(7, ioWaitTime_.get(i));
+            }
+            for (int i = 0; i < ioMerged_.size(); i++) {
+              output.writeMessage(8, ioMerged_.get(i));
+            }
+            for (int i = 0; i < ioQueued_.size(); i++) {
+              output.writeMessage(9, ioQueued_.get(i));
+            }
+            getUnknownFields().writeTo(output);
+          }
+
+          private int memoizedSerializedSize = -1;
+          public int getSerializedSize() {
+            int size = memoizedSerializedSize;
+            if (size != -1) return size;
+
+            size = 0;
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              size += com.google.protobuf.CodedOutputStream
+                .computeMessageSize(1, device_);
+            }
+            if (((bitField0_ & 0x00000002) == 0x00000002)) {
+              size += com.google.protobuf.CodedOutputStream
+                .computeUInt64Size(2, sectors_);
+            }
+            if (((bitField0_ & 0x00000004) == 0x00000004)) {
+              size += com.google.protobuf.CodedOutputStream
+                .computeUInt64Size(3, time_);
+            }
+            for (int i = 0; i < ioServiced_.size(); i++) {
+              size += com.google.protobuf.CodedOutputStream
+                .computeMessageSize(4, ioServiced_.get(i));
+            }
+            for (int i = 0; i < ioServiceBytes_.size(); i++) {
+              size += com.google.protobuf.CodedOutputStream
+                .computeMessageSize(5, ioServiceBytes_.get(i));
+            }
+            for (int i = 0; i < ioServiceTime_.size(); i++) {
+              size += com.google.protobuf.CodedOutputStream
+                .computeMessageSize(6, ioServiceTime_.get(i));
+            }
+            for (int i = 0; i < ioWaitTime_.size(); i++) {
+              size += com.google.protobuf.CodedOutputStream
+                .computeMessageSize(7, ioWaitTime_.get(i));
+            }
+            for (int i = 0; i < ioMerged_.size(); i++) {
+              size += com.google.protobuf.CodedOutputStream
+                .computeMessageSize(8, ioMerged_.get(i));
+            }
+            for (int i = 0; i < ioQueued_.size(); i++) {
+              size += com.google.protobuf.CodedOutputStream
+                .computeMessageSize(9, ioQueued_.get(i));
+            }
+            size += getUnknownFields().getSerializedSize();
+            memoizedSerializedSize = size;
+            return size;
+          }
+
+          private static final long serialVersionUID = 0L;
+          @java.lang.Override
+          protected java.lang.Object writeReplace()
+              throws java.io.ObjectStreamException {
+            return super.writeReplace();
+          }
+
+          public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics parseFrom(
+              com.google.protobuf.ByteString data)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+          }
+          public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics parseFrom(
+              com.google.protobuf.ByteString data,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+          }
+          public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics parseFrom(byte[] data)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+          }
+          public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics parseFrom(
+              byte[] data,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+          }
+          public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics parseFrom(java.io.InputStream input)
+              throws java.io.IOException {
+            return PARSER.parseFrom(input);
+          }
+          public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics parseFrom(
+              java.io.InputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            return PARSER.parseFrom(input, extensionRegistry);
+          }
+          public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics parseDelimitedFrom(java.io.InputStream input)
+              throws java.io.IOException {
+            return PARSER.parseDelimitedFrom(input);
+          }
+          public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics parseDelimitedFrom(
+              java.io.InputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            return PARSER.parseDelimitedFrom(input, extensionRegistry);
+          }
+          public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics parseFrom(
+              com.google.protobuf.CodedInputStream input)
+              throws java.io.IOException {
+            return PARSER.parseFrom(input);
+          }
+          public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics parseFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            return PARSER.parseFrom(input, extensionRegistry);
+          }
+
+          public static Builder newBuilder() { return Builder.create(); }
+          public Builder newBuilderForType() { return newBuilder(); }
+          public static Builder newBuilder(org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics prototype) {
+            return newBuilder().mergeFrom(prototype);
+          }
+          public Builder toBuilder() { return newBuilder(this); }
+
+          @java.lang.Override
+          protected Builder newBuilderForType(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+          }
+          /**
+           * Protobuf type {@code mesos.v1.CgroupInfo.Blkio.CFQ.Statistics}
+           */
+          public static final class Builder extends
+              com.google.protobuf.GeneratedMessage.Builder<Builder>
+             implements org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.StatisticsOrBuilder {
+            public static final com.google.protobuf.Descriptors.Descriptor
+                getDescriptor() {
+              return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_Blkio_CFQ_Statistics_descriptor;
+            }
+
+            protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+                internalGetFieldAccessorTable() {
+              return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_Blkio_CFQ_Statistics_fieldAccessorTable
+                  .ensureFieldAccessorsInitialized(
+                      org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics.class, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder.class);
+            }
+
+            // Construct using org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics.newBuilder()
+            private Builder() {
+              maybeForceBuilderInitialization();
+            }
+
+            private Builder(
+                com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+              super(parent);
+              maybeForceBuilderInitialization();
+            }
+            private void maybeForceBuilderInitialization() {
+              if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+                getDeviceFieldBuilder();
+                getIoServicedFieldBuilder();
+                getIoServiceBytesFieldBuilder();
+                getIoServiceTimeFieldBuilder();
+                getIoWaitTimeFieldBuilder();
+                getIoMergedFieldBuilder();
+                getIoQueuedFieldBuilder();
+              }
+            }
+            private static Builder create() {
+              return new Builder();
+            }
+
+            public Builder clear() {
+              super.clear();
+              if (deviceBuilder_ == null) {
+                device_ = org.apache.mesos.v1.Protos.Device.Number.getDefaultInstance();
+              } else {
+                deviceBuilder_.clear();
+              }
+              bitField0_ = (bitField0_ & ~0x00000001);
+              sectors_ = 0L;
+              bitField0_ = (bitField0_ & ~0x00000002);
+              time_ = 0L;
+              bitField0_ = (bitField0_ & ~0x00000004);
+              if (ioServicedBuilder_ == null) {
+                ioServiced_ = java.util.Collections.emptyList();
+                bitField0_ = (bitField0_ & ~0x00000008);
+              } else {
+                ioServicedBuilder_.clear();
+              }
+              if (ioServiceBytesBuilder_ == null) {
+                ioServiceBytes_ = java.util.Collections.emptyList();
+                bitField0_ = (bitField0_ & ~0x00000010);
+              } else {
+                ioServiceBytesBuilder_.clear();
+              }
+              if (ioServiceTimeBuilder_ == null) {
+                ioServiceTime_ = java.util.Collections.emptyList();
+                bitField0_ = (bitField0_ & ~0x00000020);
+              } else {
+                ioServiceTimeBuilder_.clear();
+              }
+              if (ioWaitTimeBuilder_ == null) {
+                ioWaitTime_ = java.util.Collections.emptyList();
+                bitField0_ = (bitField0_ & ~0x00000040);
+              } else {
+                ioWaitTimeBuilder_.clear();
+              }
+              if (ioMergedBuilder_ == null) {
+                ioMerged_ = java.util.Collections.emptyList();
+                bitField0_ = (bitField0_ & ~0x00000080);
+              } else {
+                ioMergedBuilder_.clear();
+              }
+              if (ioQueuedBuilder_ == null) {
+                ioQueued_ = java.util.Collections.emptyList();
+                bitField0_ = (bitField0_ & ~0x00000100);
+              } else {
+                ioQueuedBuilder_.clear();
+              }
+              return this;
+            }
+
+            public Builder clone() {
+              return create().mergeFrom(buildPartial());
+            }
+
+            public com.google.protobuf.Descriptors.Descriptor
+                getDescriptorForType() {
+              return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_Blkio_CFQ_Statistics_descriptor;
+            }
+
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics getDefaultInstanceForType() {
+              return org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics.getDefaultInstance();
+            }
+
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics build() {
+              org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics result = buildPartial();
+              if (!result.isInitialized()) {
+                throw newUninitializedMessageException(result);
+              }
+              return result;
+            }
+
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics buildPartial() {
+              org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics result = new org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics(this);
+              int from_bitField0_ = bitField0_;
+              int to_bitField0_ = 0;
+              if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+                to_bitField0_ |= 0x00000001;
+              }
+              if (deviceBuilder_ == null) {
+                result.device_ = device_;
+              } else {
+                result.device_ = deviceBuilder_.build();
+              }
+              if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+                to_bitField0_ |= 0x00000002;
+              }
+              result.sectors_ = sectors_;
+              if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+                to_bitField0_ |= 0x00000004;
+              }
+              result.time_ = time_;
+              if (ioServicedBuilder_ == null) {
+                if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                  ioServiced_ = java.util.Collections.unmodifiableList(ioServiced_);
+                  bitField0_ = (bitField0_ & ~0x00000008);
+                }
+                result.ioServiced_ = ioServiced_;
+              } else {
+                result.ioServiced_ = ioServicedBuilder_.build();
+              }
+              if (ioServiceBytesBuilder_ == null) {
+                if (((bitField0_ & 0x00000010) == 0x00000010)) {
+                  ioServiceBytes_ = java.util.Collections.unmodifiableList(ioServiceBytes_);
+                  bitField0_ = (bitField0_ & ~0x00000010);
+                }
+                result.ioServiceBytes_ = ioServiceBytes_;
+              } else {
+                result.ioServiceBytes_ = ioServiceBytesBuilder_.build();
+              }
+              if (ioServiceTimeBuilder_ == null) {
+                if (((bitField0_ & 0x00000020) == 0x00000020)) {
+                  ioServiceTime_ = java.util.Collections.unmodifiableList(ioServiceTime_);
+                  bitField0_ = (bitField0_ & ~0x00000020);
+                }
+                result.ioServiceTime_ = ioServiceTime_;
+              } else {
+                result.ioServiceTime_ = ioServiceTimeBuilder_.build();
+              }
+              if (ioWaitTimeBuilder_ == null) {
+                if (((bitField0_ & 0x00000040) == 0x00000040)) {
+                  ioWaitTime_ = java.util.Collections.unmodifiableList(ioWaitTime_);
+                  bitField0_ = (bitField0_ & ~0x00000040);
+                }
+                result.ioWaitTime_ = ioWaitTime_;
+              } else {
+                result.ioWaitTime_ = ioWaitTimeBuilder_.build();
+              }
+              if (ioMergedBuilder_ == null) {
+                if (((bitField0_ & 0x00000080) == 0x00000080)) {
+                  ioMerged_ = java.util.Collections.unmodifiableList(ioMerged_);
+                  bitField0_ = (bitField0_ & ~0x00000080);
+                }
+                result.ioMerged_ = ioMerged_;
+              } else {
+                result.ioMerged_ = ioMergedBuilder_.build();
+              }
+              if (ioQueuedBuilder_ == null) {
+                if (((bitField0_ & 0x00000100) == 0x00000100)) {
+                  ioQueued_ = java.util.Collections.unmodifiableList(ioQueued_);
+                  bitField0_ = (bitField0_ & ~0x00000100);
+                }
+                result.ioQueued_ = ioQueued_;
+              } else {
+                result.ioQueued_ = ioQueuedBuilder_.build();
+              }
+              result.bitField0_ = to_bitField0_;
+              onBuilt();
+              return result;
+            }
+
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+              if (other instanceof org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics) {
+                return mergeFrom((org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics)other);
+              } else {
+                super.mergeFrom(other);
+                return this;
+              }
+            }
+
+            public Builder mergeFrom(org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics other) {
+              if (other == org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics.getDefaultInstance()) return this;
+              if (other.hasDevice()) {
+                mergeDevice(other.getDevice());
+              }
+              if (other.hasSectors()) {
+                setSectors(other.getSectors());
+              }
+              if (other.hasTime()) {
+                setTime(other.getTime());
+              }
+              if (ioServicedBuilder_ == null) {
+                if (!other.ioServiced_.isEmpty()) {
+                  if (ioServiced_.isEmpty()) {
+                    ioServiced_ = other.ioServiced_;
+                    bitField0_ = (bitField0_ & ~0x00000008);
+                  } else {
+                    ensureIoServicedIsMutable();
+                    ioServiced_.addAll(other.ioServiced_);
+                  }
+                  onChanged();
+                }
+              } else {
+                if (!other.ioServiced_.isEmpty()) {
+                  if (ioServicedBuilder_.isEmpty()) {
+                    ioServicedBuilder_.dispose();
+                    ioServicedBuilder_ = null;
+                    ioServiced_ = other.ioServiced_;
+                    bitField0_ = (bitField0_ & ~0x00000008);
+                    ioServicedBuilder_ = 
+                      com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                         getIoServicedFieldBuilder() : null;
+                  } else {
+                    ioServicedBuilder_.addAllMessages(other.ioServiced_);
+                  }
+                }
+              }
+              if (ioServiceBytesBuilder_ == null) {
+                if (!other.ioServiceBytes_.isEmpty()) {
+                  if (ioServiceBytes_.isEmpty()) {
+                    ioServiceBytes_ = other.ioServiceBytes_;
+                    bitField0_ = (bitField0_ & ~0x00000010);
+                  } else {
+                    ensureIoServiceBytesIsMutable();
+                    ioServiceBytes_.addAll(other.ioServiceBytes_);
+                  }
+                  onChanged();
+                }
+              } else {
+                if (!other.ioServiceBytes_.isEmpty()) {
+                  if (ioServiceBytesBuilder_.isEmpty()) {
+                    ioServiceBytesBuilder_.dispose();
+                    ioServiceBytesBuilder_ = null;
+                    ioServiceBytes_ = other.ioServiceBytes_;
+                    bitField0_ = (bitField0_ & ~0x00000010);
+                    ioServiceBytesBuilder_ = 
+                      com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                         getIoServiceBytesFieldBuilder() : null;
+                  } else {
+                    ioServiceBytesBuilder_.addAllMessages(other.ioServiceBytes_);
+                  }
+                }
+              }
+              if (ioServiceTimeBuilder_ == null) {
+                if (!other.ioServiceTime_.isEmpty()) {
+                  if (ioServiceTime_.isEmpty()) {
+                    ioServiceTime_ = other.ioServiceTime_;
+                    bitField0_ = (bitField0_ & ~0x00000020);
+                  } else {
+                    ensureIoServiceTimeIsMutable();
+                    ioServiceTime_.addAll(other.ioServiceTime_);
+                  }
+                  onChanged();
+                }
+              } else {
+                if (!other.ioServiceTime_.isEmpty()) {
+                  if (ioServiceTimeBuilder_.isEmpty()) {
+                    ioServiceTimeBuilder_.dispose();
+                    ioServiceTimeBuilder_ = null;
+                    ioServiceTime_ = other.ioServiceTime_;
+                    bitField0_ = (bitField0_ & ~0x00000020);
+                    ioServiceTimeBuilder_ = 
+                      com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                         getIoServiceTimeFieldBuilder() : null;
+                  } else {
+                    ioServiceTimeBuilder_.addAllMessages(other.ioServiceTime_);
+                  }
+                }
+              }
+              if (ioWaitTimeBuilder_ == null) {
+                if (!other.ioWaitTime_.isEmpty()) {
+                  if (ioWaitTime_.isEmpty()) {
+                    ioWaitTime_ = other.ioWaitTime_;
+                    bitField0_ = (bitField0_ & ~0x00000040);
+                  } else {
+                    ensureIoWaitTimeIsMutable();
+                    ioWaitTime_.addAll(other.ioWaitTime_);
+                  }
+                  onChanged();
+                }
+              } else {
+                if (!other.ioWaitTime_.isEmpty()) {
+                  if (ioWaitTimeBuilder_.isEmpty()) {
+                    ioWaitTimeBuilder_.dispose();
+                    ioWaitTimeBuilder_ = null;
+                    ioWaitTime_ = other.ioWaitTime_;
+                    bitField0_ = (bitField0_ & ~0x00000040);
+                    ioWaitTimeBuilder_ = 
+                      com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                         getIoWaitTimeFieldBuilder() : null;
+                  } else {
+                    ioWaitTimeBuilder_.addAllMessages(other.ioWaitTime_);
+                  }
+                }
+              }
+              if (ioMergedBuilder_ == null) {
+                if (!other.ioMerged_.isEmpty()) {
+                  if (ioMerged_.isEmpty()) {
+                    ioMerged_ = other.ioMerged_;
+                    bitField0_ = (bitField0_ & ~0x00000080);
+                  } else {
+                    ensureIoMergedIsMutable();
+                    ioMerged_.addAll(other.ioMerged_);
+                  }
+                  onChanged();
+                }
+              } else {
+                if (!other.ioMerged_.isEmpty()) {
+                  if (ioMergedBuilder_.isEmpty()) {
+                    ioMergedBuilder_.dispose();
+                    ioMergedBuilder_ = null;
+                    ioMerged_ = other.ioMerged_;
+                    bitField0_ = (bitField0_ & ~0x00000080);
+                    ioMergedBuilder_ = 
+                      com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                         getIoMergedFieldBuilder() : null;
+                  } else {
+                    ioMergedBuilder_.addAllMessages(other.ioMerged_);
+                  }
+                }
+              }
+              if (ioQueuedBuilder_ == null) {
+                if (!other.ioQueued_.isEmpty()) {
+                  if (ioQueued_.isEmpty()) {
+                    ioQueued_ = other.ioQueued_;
+                    bitField0_ = (bitField0_ & ~0x00000100);
+                  } else {
+                    ensureIoQueuedIsMutable();
+                    ioQueued_.addAll(other.ioQueued_);
+                  }
+                  onChanged();
+                }
+              } else {
+                if (!other.ioQueued_.isEmpty()) {
+                  if (ioQueuedBuilder_.isEmpty()) {
+                    ioQueuedBuilder_.dispose();
+                    ioQueuedBuilder_ = null;
+                    ioQueued_ = other.ioQueued_;
+                    bitField0_ = (bitField0_ & ~0x00000100);
+                    ioQueuedBuilder_ = 
+                      com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                         getIoQueuedFieldBuilder() : null;
+                  } else {
+                    ioQueuedBuilder_.addAllMessages(other.ioQueued_);
+                  }
+                }
+              }
+              this.mergeUnknownFields(other.getUnknownFields());
+              return this;
+            }
+
+            public final boolean isInitialized() {
+              if (hasDevice()) {
+                if (!getDevice().isInitialized()) {
+                  
+                  return false;
+                }
+              }
+              return true;
+            }
+
+            public Builder mergeFrom(
+                com.google.protobuf.CodedInputStream input,
+                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+                throws java.io.IOException {
+              org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics parsedMessage = null;
+              try {
+                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+              } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                parsedMessage = (org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics) e.getUnfinishedMessage();
+                throw e;
+              } finally {
+                if (parsedMessage != null) {
+                  mergeFrom(parsedMessage);
+                }
+              }
+              return this;
+            }
+            private int bitField0_;
+
+            // optional .mesos.v1.Device.Number device = 1;
+            private org.apache.mesos.v1.Protos.Device.Number device_ = org.apache.mesos.v1.Protos.Device.Number.getDefaultInstance();
+            private com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.Device.Number, org.apache.mesos.v1.Protos.Device.Number.Builder, org.apache.mesos.v1.Protos.Device.NumberOrBuilder> deviceBuilder_;
+            /**
+             * <code>optional .mesos.v1.Device.Number device = 1;</code>
+             *
+             * <pre>
+             * Stats are grouped by block devices. If `device` is not
+             * set, it represents `Total`.
+             * </pre>
+             */
+            public boolean hasDevice() {
+              return ((bitField0_ & 0x00000001) == 0x00000001);
+            }
+            /**
+             * <code>optional .mesos.v1.Device.Number device = 1;</code>
+             *
+             * <pre>
+             * Stats are grouped by block devices. If `device` is not
+             * set, it represents `Total`.
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.Device.Number getDevice() {
+              if (deviceBuilder_ == null) {
+                return device_;
+              } else {
+                return deviceBuilder_.getMessage();
+              }
+            }
+            /**
+             * <code>optional .mesos.v1.Device.Number device = 1;</code>
+             *
+             * <pre>
+             * Stats are grouped by block devices. If `device` is not
+             * set, it represents `Total`.
+             * </pre>
+             */
+            public Builder setDevice(org.apache.mesos.v1.Protos.Device.Number value) {
+              if (deviceBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                device_ = value;
+                onChanged();
+              } else {
+                deviceBuilder_.setMessage(value);
+              }
+              bitField0_ |= 0x00000001;
+              return this;
+            }
+            /**
+             * <code>optional .mesos.v1.Device.Number device = 1;</code>
+             *
+             * <pre>
+             * Stats are grouped by block devices. If `device` is not
+             * set, it represents `Total`.
+             * </pre>
+             */
+            public Builder setDevice(
+                org.apache.mesos.v1.Protos.Device.Number.Builder builderForValue) {
+              if (deviceBuilder_ == null) {
+                device_ = builderForValue.build();
+                onChanged();
+              } else {
+                deviceBuilder_.setMessage(builderForValue.build());
+              }
+              bitField0_ |= 0x00000001;
+              return this;
+            }
+            /**
+             * <code>optional .mesos.v1.Device.Number device = 1;</code>
+             *
+             * <pre>
+             * Stats are grouped by block devices. If `device` is not
+             * set, it represents `Total`.
+             * </pre>
+             */
+            public Builder mergeDevice(org.apache.mesos.v1.Protos.Device.Number value) {
+              if (deviceBuilder_ == null) {
+                if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                    device_ != org.apache.mesos.v1.Protos.Device.Number.getDefaultInstance()) {
+                  device_ =
+                    org.apache.mesos.v1.Protos.Device.Number.newBuilder(device_).mergeFrom(value).buildPartial();
+                } else {
+                  device_ = value;
+                }
+                onChanged();
+              } else {
+                deviceBuilder_.mergeFrom(value);
+              }
+              bitField0_ |= 0x00000001;
+              return this;
+            }
+            /**
+             * <code>optional .mesos.v1.Device.Number device = 1;</code>
+             *
+             * <pre>
+             * Stats are grouped by block devices. If `device` is not
+             * set, it represents `Total`.
+             * </pre>
+             */
+            public Builder clearDevice() {
+              if (deviceBuilder_ == null) {
+                device_ = org.apache.mesos.v1.Protos.Device.Number.getDefaultInstance();
+                onChanged();
+              } else {
+                deviceBuilder_.clear();
+              }
+              bitField0_ = (bitField0_ & ~0x00000001);
+              return this;
+            }
+            /**
+             * <code>optional .mesos.v1.Device.Number device = 1;</code>
+             *
+             * <pre>
+             * Stats are grouped by block devices. If `device` is not
+             * set, it represents `Total`.
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.Device.Number.Builder getDeviceBuilder() {
+              bitField0_ |= 0x00000001;
+              onChanged();
+              return getDeviceFieldBuilder().getBuilder();
+            }
+            /**
+             * <code>optional .mesos.v1.Device.Number device = 1;</code>
+             *
+             * <pre>
+             * Stats are grouped by block devices. If `device` is not
+             * set, it represents `Total`.
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.Device.NumberOrBuilder getDeviceOrBuilder() {
+              if (deviceBuilder_ != null) {
+                return deviceBuilder_.getMessageOrBuilder();
+              } else {
+                return device_;
+              }
+            }
+            /**
+             * <code>optional .mesos.v1.Device.Number device = 1;</code>
+             *
+             * <pre>
+             * Stats are grouped by block devices. If `device` is not
+             * set, it represents `Total`.
+             * </pre>
+             */
+            private com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.Device.Number, org.apache.mesos.v1.Protos.Device.Number.Builder, org.apache.mesos.v1.Protos.Device.NumberOrBuilder> 
+                getDeviceFieldBuilder() {
+              if (deviceBuilder_ == null) {
+                deviceBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                    org.apache.mesos.v1.Protos.Device.Number, org.apache.mesos.v1.Protos.Device.Number.Builder, org.apache.mesos.v1.Protos.Device.NumberOrBuilder>(
+                        device_,
+                        getParentForChildren(),
+                        isClean());
+                device_ = null;
+              }
+              return deviceBuilder_;
+            }
+
+            // optional uint64 sectors = 2;
+            private long sectors_ ;
+            /**
+             * <code>optional uint64 sectors = 2;</code>
+             *
+             * <pre>
+             * blkio.sectors
+             * </pre>
+             */
+            public boolean hasSectors() {
+              return ((bitField0_ & 0x00000002) == 0x00000002);
+            }
+            /**
+             * <code>optional uint64 sectors = 2;</code>
+             *
+             * <pre>
+             * blkio.sectors
+             * </pre>
+             */
+            public long getSectors() {
+              return sectors_;
+            }
+            /**
+             * <code>optional uint64 sectors = 2;</code>
+             *
+             * <pre>
+             * blkio.sectors
+             * </pre>
+             */
+            public Builder setSectors(long value) {
+              bitField0_ |= 0x00000002;
+              sectors_ = value;
+              onChanged();
+              return this;
+            }
+            /**
+             * <code>optional uint64 sectors = 2;</code>
+             *
+             * <pre>
+             * blkio.sectors
+             * </pre>
+             */
+            public Builder clearSectors() {
+              bitField0_ = (bitField0_ & ~0x00000002);
+              sectors_ = 0L;
+              onChanged();
+              return this;
+            }
+
+            // optional uint64 time = 3;
+            private long time_ ;
+            /**
+             * <code>optional uint64 time = 3;</code>
+             *
+             * <pre>
+             * blkio.time
+             * </pre>
+             */
+            public boolean hasTime() {
+              return ((bitField0_ & 0x00000004) == 0x00000004);
+            }
+            /**
+             * <code>optional uint64 time = 3;</code>
+             *
+             * <pre>
+             * blkio.time
+             * </pre>
+             */
+            public long getTime() {
+              return time_;
+            }
+            /**
+             * <code>optional uint64 time = 3;</code>
+             *
+             * <pre>
+             * blkio.time
+             * </pre>
+             */
+            public Builder setTime(long value) {
+              bitField0_ |= 0x00000004;
+              time_ = value;
+              onChanged();
+              return this;
+            }
+            /**
+             * <code>optional uint64 time = 3;</code>
+             *
+             * <pre>
+             * blkio.time
+             * </pre>
+             */
+            public Builder clearTime() {
+              bitField0_ = (bitField0_ & ~0x00000004);
+              time_ = 0L;
+              onChanged();
+              return this;
+            }
+
+            // repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 4;
+            private java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> ioServiced_ =
+              java.util.Collections.emptyList();
+            private void ensureIoServicedIsMutable() {
+              if (!((bitField0_ & 0x00000008) == 0x00000008)) {
+                ioServiced_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value>(ioServiced_);
+                bitField0_ |= 0x00000008;
+               }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder> ioServicedBuilder_;
+
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+             *
+             * <pre>
+             * blkio.io_serviced
+             * </pre>
+             */
+            public java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> getIoServicedList() {
+              if (ioServicedBuilder_ == null) {
+                return java.util.Collections.unmodifiableList(ioServiced_);
+              } else {
+                return ioServicedBuilder_.getMessageList();
+              }
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+             *
+             * <pre>
+             * blkio.io_serviced
+             * </pre>
+             */
+            public int getIoServicedCount() {
+              if (ioServicedBuilder_ == null) {
+                return ioServiced_.size();
+              } else {
+                return ioServicedBuilder_.getCount();
+              }
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+             *
+             * <pre>
+             * blkio.io_serviced
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value getIoServiced(int index) {
+              if (ioServicedBuilder_ == null) {
+                return ioServiced_.get(index);
+              } else {
+                return ioServicedBuilder_.getMessage(index);
+              }
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+             *
+             * <pre>
+             * blkio.io_serviced
+             * </pre>
+             */
+            public Builder setIoServiced(
+                int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioServicedBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoServicedIsMutable();
+                ioServiced_.set(index, value);
+                onChanged();
+              } else {
+                ioServicedBuilder_.setMessage(index, value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+             *
+             * <pre>
+             * blkio.io_serviced
+             * </pre>
+             */
+            public Builder setIoServiced(
+                int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioServicedBuilder_ == null) {
+                ensureIoServicedIsMutable();
+                ioServiced_.set(index, builderForValue.build());
+                onChanged();
+              } else {
+                ioServicedBuilder_.setMessage(index, builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+             *
+             * <pre>
+             * blkio.io_serviced
+             * </pre>
+             */
+            public Builder addIoServiced(org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioServicedBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoServicedIsMutable();
+                ioServiced_.add(value);
+                onChanged();
+              } else {
+                ioServicedBuilder_.addMessage(value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+             *
+             * <pre>
+             * blkio.io_serviced
+             * </pre>
+             */
+            public Builder addIoServiced(
+                int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioServicedBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoServicedIsMutable();
+                ioServiced_.add(index, value);
+                onChanged();
+              } else {
+                ioServicedBuilder_.addMessage(index, value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+             *
+             * <pre>
+             * blkio.io_serviced
+             * </pre>
+             */
+            public Builder addIoServiced(
+                org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioServicedBuilder_ == null) {
+                ensureIoServicedIsMutable();
+                ioServiced_.add(builderForValue.build());
+                onChanged();
+              } else {
+                ioServicedBuilder_.addMessage(builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+             *
+             * <pre>
+             * blkio.io_serviced
+             * </pre>
+             */
+            public Builder addIoServiced(
+                int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioServicedBuilder_ == null) {
+                ensureIoServicedIsMutable();
+                ioServiced_.add(index, builderForValue.build());
+                onChanged();
+              } else {
+                ioServicedBuilder_.addMessage(index, builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+             *
+             * <pre>
+             * blkio.io_serviced
+             * </pre>
+             */
+            public Builder addAllIoServiced(
+                java.lang.Iterable<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> values) {
+              if (ioServicedBuilder_ == null) {
+                ensureIoServicedIsMutable();
+                super.addAll(values, ioServiced_);
+                onChanged();
+              } else {
+                ioServicedBuilder_.addAllMessages(values);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+             *
+             * <pre>
+             * blkio.io_serviced
+             * </pre>
+             */
+            public Builder clearIoServiced() {
+              if (ioServicedBuilder_ == null) {
+                ioServiced_ = java.util.Collections.emptyList();
+                bitField0_ = (bitField0_ & ~0x00000008);
+                onChanged();
+              } else {
+                ioServicedBuilder_.clear();
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+             *
+             * <pre>
+             * blkio.io_serviced
+             * </pre>
+             */
+            public Builder removeIoServiced(int index) {
+              if (ioServicedBuilder_ == null) {
+                ensureIoServicedIsMutable();
+                ioServiced_.remove(index);
+                onChanged();
+              } else {
+                ioServicedBuilder_.remove(index);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+             *
+             * <pre>
+             * blkio.io_serviced
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder getIoServicedBuilder(
+                int index) {
+              return getIoServicedFieldBuilder().getBuilder(index);
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+             *
+             * <pre>
+             * blkio.io_serviced
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoServicedOrBuilder(
+                int index) {
+              if (ioServicedBuilder_ == null) {
+                return ioServiced_.get(index);  } else {
+                return ioServicedBuilder_.getMessageOrBuilder(index);
+              }
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+             *
+             * <pre>
+             * blkio.io_serviced
+             * </pre>
+             */
+            public java.util.List<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+                 getIoServicedOrBuilderList() {
+              if (ioServicedBuilder_ != null) {
+                return ioServicedBuilder_.getMessageOrBuilderList();
+              } else {
+                return java.util.Collections.unmodifiableList(ioServiced_);
+              }
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+             *
+             * <pre>
+             * blkio.io_serviced
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder addIoServicedBuilder() {
+              return getIoServicedFieldBuilder().addBuilder(
+                  org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.getDefaultInstance());
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+             *
+             * <pre>
+             * blkio.io_serviced
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder addIoServicedBuilder(
+                int index) {
+              return getIoServicedFieldBuilder().addBuilder(
+                  index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.getDefaultInstance());
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 4;</code>
+             *
+             * <pre>
+             * blkio.io_serviced
+             * </pre>
+             */
+            public java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder> 
+                 getIoServicedBuilderList() {
+              return getIoServicedFieldBuilder().getBuilderList();
+            }
+            private com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+                getIoServicedFieldBuilder() {
+              if (ioServicedBuilder_ == null) {
+                ioServicedBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                    org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder>(
+                        ioServiced_,
+                        ((bitField0_ & 0x00000008) == 0x00000008),
+                        getParentForChildren(),
+                        isClean());
+                ioServiced_ = null;
+              }
+              return ioServicedBuilder_;
+            }
+
+            // repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 5;
+            private java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> ioServiceBytes_ =
+              java.util.Collections.emptyList();
+            private void ensureIoServiceBytesIsMutable() {
+              if (!((bitField0_ & 0x00000010) == 0x00000010)) {
+                ioServiceBytes_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value>(ioServiceBytes_);
+                bitField0_ |= 0x00000010;
+               }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder> ioServiceBytesBuilder_;
+
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+             *
+             * <pre>
+             * blkio.io_service_bytes
+             * </pre>
+             */
+            public java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> getIoServiceBytesList() {
+              if (ioServiceBytesBuilder_ == null) {
+                return java.util.Collections.unmodifiableList(ioServiceBytes_);
+              } else {
+                return ioServiceBytesBuilder_.getMessageList();
+              }
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+             *
+             * <pre>
+             * blkio.io_service_bytes
+             * </pre>
+             */
+            public int getIoServiceBytesCount() {
+              if (ioServiceBytesBuilder_ == null) {
+                return ioServiceBytes_.size();
+              } else {
+                return ioServiceBytesBuilder_.getCount();
+              }
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+             *
+             * <pre>
+             * blkio.io_service_bytes
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value getIoServiceBytes(int index) {
+              if (ioServiceBytesBuilder_ == null) {
+                return ioServiceBytes_.get(index);
+              } else {
+                return ioServiceBytesBuilder_.getMessage(index);
+              }
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+             *
+             * <pre>
+             * blkio.io_service_bytes
+             * </pre>
+             */
+            public Builder setIoServiceBytes(
+                int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioServiceBytesBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoServiceBytesIsMutable();
+                ioServiceBytes_.set(index, value);
+                onChanged();
+              } else {
+                ioServiceBytesBuilder_.setMessage(index, value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+             *
+             * <pre>
+             * blkio.io_service_bytes
+             * </pre>
+             */
+            public Builder setIoServiceBytes(
+                int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioServiceBytesBuilder_ == null) {
+                ensureIoServiceBytesIsMutable();
+                ioServiceBytes_.set(index, builderForValue.build());
+                onChanged();
+              } else {
+                ioServiceBytesBuilder_.setMessage(index, builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+             *
+             * <pre>
+             * blkio.io_service_bytes
+             * </pre>
+             */
+            public Builder addIoServiceBytes(org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioServiceBytesBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoServiceBytesIsMutable();
+                ioServiceBytes_.add(value);
+                onChanged();
+              } else {
+                ioServiceBytesBuilder_.addMessage(value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+             *
+             * <pre>
+             * blkio.io_service_bytes
+             * </pre>
+             */
+            public Builder addIoServiceBytes(
+                int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioServiceBytesBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoServiceBytesIsMutable();
+                ioServiceBytes_.add(index, value);
+                onChanged();
+              } else {
+                ioServiceBytesBuilder_.addMessage(index, value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+             *
+             * <pre>
+             * blkio.io_service_bytes
+             * </pre>
+             */
+            public Builder addIoServiceBytes(
+                org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioServiceBytesBuilder_ == null) {
+                ensureIoServiceBytesIsMutable();
+                ioServiceBytes_.add(builderForValue.build());
+                onChanged();
+              } else {
+                ioServiceBytesBuilder_.addMessage(builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+             *
+             * <pre>
+             * blkio.io_service_bytes
+             * </pre>
+             */
+            public Builder addIoServiceBytes(
+                int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioServiceBytesBuilder_ == null) {
+                ensureIoServiceBytesIsMutable();
+                ioServiceBytes_.add(index, builderForValue.build());
+                onChanged();
+              } else {
+                ioServiceBytesBuilder_.addMessage(index, builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+             *
+             * <pre>
+             * blkio.io_service_bytes
+             * </pre>
+             */
+            public Builder addAllIoServiceBytes(
+                java.lang.Iterable<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> values) {
+              if (ioServiceBytesBuilder_ == null) {
+                ensureIoServiceBytesIsMutable();
+                super.addAll(values, ioServiceBytes_);
+                onChanged();
+              } else {
+                ioServiceBytesBuilder_.addAllMessages(values);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+             *
+             * <pre>
+             * blkio.io_service_bytes
+             * </pre>
+             */
+            public Builder clearIoServiceBytes() {
+              if (ioServiceBytesBuilder_ == null) {
+                ioServiceBytes_ = java.util.Collections.emptyList();
+                bitField0_ = (bitField0_ & ~0x00000010);
+                onChanged();
+              } else {
+                ioServiceBytesBuilder_.clear();
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+             *
+             * <pre>
+             * blkio.io_service_bytes
+             * </pre>
+             */
+            public Builder removeIoServiceBytes(int index) {
+              if (ioServiceBytesBuilder_ == null) {
+                ensureIoServiceBytesIsMutable();
+                ioServiceBytes_.remove(index);
+                onChanged();
+              } else {
+                ioServiceBytesBuilder_.remove(index);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+             *
+             * <pre>
+             * blkio.io_service_bytes
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder getIoServiceBytesBuilder(
+                int index) {
+              return getIoServiceBytesFieldBuilder().getBuilder(index);
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+             *
+             * <pre>
+             * blkio.io_service_bytes
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoServiceBytesOrBuilder(
+                int index) {
+              if (ioServiceBytesBuilder_ == null) {
+                return ioServiceBytes_.get(index);  } else {
+                return ioServiceBytesBuilder_.getMessageOrBuilder(index);
+              }
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+             *
+             * <pre>
+             * blkio.io_service_bytes
+             * </pre>
+             */
+            public java.util.List<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+                 getIoServiceBytesOrBuilderList() {
+              if (ioServiceBytesBuilder_ != null) {
+                return ioServiceBytesBuilder_.getMessageOrBuilderList();
+              } else {
+                return java.util.Collections.unmodifiableList(ioServiceBytes_);
+              }
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+             *
+             * <pre>
+             * blkio.io_service_bytes
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder addIoServiceBytesBuilder() {
+              return getIoServiceBytesFieldBuilder().addBuilder(
+                  org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.getDefaultInstance());
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+             *
+             * <pre>
+             * blkio.io_service_bytes
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder addIoServiceBytesBuilder(
+                int index) {
+              return getIoServiceBytesFieldBuilder().addBuilder(
+                  index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.getDefaultInstance());
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 5;</code>
+             *
+             * <pre>
+             * blkio.io_service_bytes
+             * </pre>
+             */
+            public java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder> 
+                 getIoServiceBytesBuilderList() {
+              return getIoServiceBytesFieldBuilder().getBuilderList();
+            }
+            private com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+                getIoServiceBytesFieldBuilder() {
+              if (ioServiceBytesBuilder_ == null) {
+                ioServiceBytesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                    org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder>(
+                        ioServiceBytes_,
+                        ((bitField0_ & 0x00000010) == 0x00000010),
+                        getParentForChildren(),
+                        isClean());
+                ioServiceBytes_ = null;
+              }
+              return ioServiceBytesBuilder_;
+            }
+
+            // repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_time = 6;
+            private java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> ioServiceTime_ =
+              java.util.Collections.emptyList();
+            private void ensureIoServiceTimeIsMutable() {
+              if (!((bitField0_ & 0x00000020) == 0x00000020)) {
+                ioServiceTime_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value>(ioServiceTime_);
+                bitField0_ |= 0x00000020;
+               }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder> ioServiceTimeBuilder_;
+
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+             *
+             * <pre>
+             * blkio.io_service_time
+             * </pre>
+             */
+            public java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> getIoServiceTimeList() {
+              if (ioServiceTimeBuilder_ == null) {
+                return java.util.Collections.unmodifiableList(ioServiceTime_);
+              } else {
+                return ioServiceTimeBuilder_.getMessageList();
+              }
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+             *
+             * <pre>
+             * blkio.io_service_time
+             * </pre>
+             */
+            public int getIoServiceTimeCount() {
+              if (ioServiceTimeBuilder_ == null) {
+                return ioServiceTime_.size();
+              } else {
+                return ioServiceTimeBuilder_.getCount();
+              }
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+             *
+             * <pre>
+             * blkio.io_service_time
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value getIoServiceTime(int index) {
+              if (ioServiceTimeBuilder_ == null) {
+                return ioServiceTime_.get(index);
+              } else {
+                return ioServiceTimeBuilder_.getMessage(index);
+              }
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+             *
+             * <pre>
+             * blkio.io_service_time
+             * </pre>
+             */
+            public Builder setIoServiceTime(
+                int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioServiceTimeBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoServiceTimeIsMutable();
+                ioServiceTime_.set(index, value);
+                onChanged();
+              } else {
+                ioServiceTimeBuilder_.setMessage(index, value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+             *
+             * <pre>
+             * blkio.io_service_time
+             * </pre>
+             */
+            public Builder setIoServiceTime(
+                int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioServiceTimeBuilder_ == null) {
+                ensureIoServiceTimeIsMutable();
+                ioServiceTime_.set(index, builderForValue.build());
+                onChanged();
+              } else {
+                ioServiceTimeBuilder_.setMessage(index, builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+             *
+             * <pre>
+             * blkio.io_service_time
+             * </pre>
+             */
+            public Builder addIoServiceTime(org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioServiceTimeBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoServiceTimeIsMutable();
+                ioServiceTime_.add(value);
+                onChanged();
+              } else {
+                ioServiceTimeBuilder_.addMessage(value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+             *
+             * <pre>
+             * blkio.io_service_time
+             * </pre>
+             */
+            public Builder addIoServiceTime(
+                int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioServiceTimeBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoServiceTimeIsMutable();
+                ioServiceTime_.add(index, value);
+                onChanged();
+              } else {
+                ioServiceTimeBuilder_.addMessage(index, value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+             *
+             * <pre>
+             * blkio.io_service_time
+             * </pre>
+             */
+            public Builder addIoServiceTime(
+                org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioServiceTimeBuilder_ == null) {
+                ensureIoServiceTimeIsMutable();
+                ioServiceTime_.add(builderForValue.build());
+                onChanged();
+              } else {
+                ioServiceTimeBuilder_.addMessage(builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+             *
+             * <pre>
+             * blkio.io_service_time
+             * </pre>
+             */
+            public Builder addIoServiceTime(
+                int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioServiceTimeBuilder_ == null) {
+                ensureIoServiceTimeIsMutable();
+                ioServiceTime_.add(index, builderForValue.build());
+                onChanged();
+              } else {
+                ioServiceTimeBuilder_.addMessage(index, builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+             *
+             * <pre>
+             * blkio.io_service_time
+             * </pre>
+             */
+            public Builder addAllIoServiceTime(
+                java.lang.Iterable<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> values) {
+              if (ioServiceTimeBuilder_ == null) {
+                ensureIoServiceTimeIsMutable();
+                super.addAll(values, ioServiceTime_);
+                onChanged();
+              } else {
+                ioServiceTimeBuilder_.addAllMessages(values);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+             *
+             * <pre>
+             * blkio.io_service_time
+             * </pre>
+             */
+            public Builder clearIoServiceTime() {
+              if (ioServiceTimeBuilder_ == null) {
+                ioServiceTime_ = java.util.Collections.emptyList();
+                bitField0_ = (bitField0_ & ~0x00000020);
+                onChanged();
+              } else {
+                ioServiceTimeBuilder_.clear();
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+             *
+             * <pre>
+             * blkio.io_service_time
+             * </pre>
+             */
+            public Builder removeIoServiceTime(int index) {
+              if (ioServiceTimeBuilder_ == null) {
+                ensureIoServiceTimeIsMutable();
+                ioServiceTime_.remove(index);
+                onChanged();
+              } else {
+                ioServiceTimeBuilder_.remove(index);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+             *
+             * <pre>
+             * blkio.io_service_time
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder getIoServiceTimeBuilder(
+                int index) {
+              return getIoServiceTimeFieldBuilder().getBuilder(index);
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+             *
+             * <pre>
+             * blkio.io_service_time
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoServiceTimeOrBuilder(
+                int index) {
+              if (ioServiceTimeBuilder_ == null) {
+                return ioServiceTime_.get(index);  } else {
+                return ioServiceTimeBuilder_.getMessageOrBuilder(index);
+              }
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+             *
+             * <pre>
+             * blkio.io_service_time
+             * </pre>
+             */
+            public java.util.List<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+                 getIoServiceTimeOrBuilderList() {
+              if (ioServiceTimeBuilder_ != null) {
+                return ioServiceTimeBuilder_.getMessageOrBuilderList();
+              } else {
+                return java.util.Collections.unmodifiableList(ioServiceTime_);
+              }
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+             *
+             * <pre>
+             * blkio.io_service_time
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder addIoServiceTimeBuilder() {
+              return getIoServiceTimeFieldBuilder().addBuilder(
+                  org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.getDefaultInstance());
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+             *
+             * <pre>
+             * blkio.io_service_time
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder addIoServiceTimeBuilder(
+                int index) {
+              return getIoServiceTimeFieldBuilder().addBuilder(
+                  index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.getDefaultInstance());
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_time = 6;</code>
+             *
+             * <pre>
+             * blkio.io_service_time
+             * </pre>
+             */
+            public java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder> 
+                 getIoServiceTimeBuilderList() {
+              return getIoServiceTimeFieldBuilder().getBuilderList();
+            }
+            private com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+                getIoServiceTimeFieldBuilder() {
+              if (ioServiceTimeBuilder_ == null) {
+                ioServiceTimeBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                    org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder>(
+                        ioServiceTime_,
+                        ((bitField0_ & 0x00000020) == 0x00000020),
+                        getParentForChildren(),
+                        isClean());
+                ioServiceTime_ = null;
+              }
+              return ioServiceTimeBuilder_;
+            }
+
+            // repeated .mesos.v1.CgroupInfo.Blkio.Value io_wait_time = 7;
+            private java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> ioWaitTime_ =
+              java.util.Collections.emptyList();
+            private void ensureIoWaitTimeIsMutable() {
+              if (!((bitField0_ & 0x00000040) == 0x00000040)) {
+                ioWaitTime_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value>(ioWaitTime_);
+                bitField0_ |= 0x00000040;
+               }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder> ioWaitTimeBuilder_;
+
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+             *
+             * <pre>
+             * blkio.io_wait_time
+             * </pre>
+             */
+            public java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> getIoWaitTimeList() {
+              if (ioWaitTimeBuilder_ == null) {
+                return java.util.Collections.unmodifiableList(ioWaitTime_);
+              } else {
+                return ioWaitTimeBuilder_.getMessageList();
+              }
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+             *
+             * <pre>
+             * blkio.io_wait_time
+             * </pre>
+             */
+            public int getIoWaitTimeCount() {
+              if (ioWaitTimeBuilder_ == null) {
+                return ioWaitTime_.size();
+              } else {
+                return ioWaitTimeBuilder_.getCount();
+              }
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+             *
+             * <pre>
+             * blkio.io_wait_time
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value getIoWaitTime(int index) {
+              if (ioWaitTimeBuilder_ == null) {
+                return ioWaitTime_.get(index);
+              } else {
+                return ioWaitTimeBuilder_.getMessage(index);
+              }
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+             *
+             * <pre>
+             * blkio.io_wait_time
+             * </pre>
+             */
+            public Builder setIoWaitTime(
+                int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioWaitTimeBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoWaitTimeIsMutable();
+                ioWaitTime_.set(index, value);
+                onChanged();
+              } else {
+                ioWaitTimeBuilder_.setMessage(index, value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+             *
+             * <pre>
+             * blkio.io_wait_time
+             * </pre>
+             */
+            public Builder setIoWaitTime(
+                int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioWaitTimeBuilder_ == null) {
+                ensureIoWaitTimeIsMutable();
+                ioWaitTime_.set(index, builderForValue.build());
+                onChanged();
+              } else {
+                ioWaitTimeBuilder_.setMessage(index, builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+             *
+             * <pre>
+             * blkio.io_wait_time
+             * </pre>
+             */
+            public Builder addIoWaitTime(org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioWaitTimeBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoWaitTimeIsMutable();
+                ioWaitTime_.add(value);
+                onChanged();
+              } else {
+                ioWaitTimeBuilder_.addMessage(value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+             *
+             * <pre>
+             * blkio.io_wait_time
+             * </pre>
+             */
+            public Builder addIoWaitTime(
+                int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioWaitTimeBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoWaitTimeIsMutable();
+                ioWaitTime_.add(index, value);
+                onChanged();
+              } else {
+                ioWaitTimeBuilder_.addMessage(index, value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+             *
+             * <pre>
+             * blkio.io_wait_time
+             * </pre>
+             */
+            public Builder addIoWaitTime(
+                org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioWaitTimeBuilder_ == null) {
+                ensureIoWaitTimeIsMutable();
+                ioWaitTime_.add(builderForValue.build());
+                onChanged();
+              } else {
+                ioWaitTimeBuilder_.addMessage(builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+             *
+             * <pre>
+             * blkio.io_wait_time
+             * </pre>
+             */
+            public Builder addIoWaitTime(
+                int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioWaitTimeBuilder_ == null) {
+                ensureIoWaitTimeIsMutable();
+                ioWaitTime_.add(index, builderForValue.build());
+                onChanged();
+              } else {
+                ioWaitTimeBuilder_.addMessage(index, builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+             *
+             * <pre>
+             * blkio.io_wait_time
+             * </pre>
+             */
+            public Builder addAllIoWaitTime(
+                java.lang.Iterable<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> values) {
+              if (ioWaitTimeBuilder_ == null) {
+                ensureIoWaitTimeIsMutable();
+                super.addAll(values, ioWaitTime_);
+                onChanged();
+              } else {
+                ioWaitTimeBuilder_.addAllMessages(values);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+             *
+             * <pre>
+             * blkio.io_wait_time
+             * </pre>
+             */
+            public Builder clearIoWaitTime() {
+              if (ioWaitTimeBuilder_ == null) {
+                ioWaitTime_ = java.util.Collections.emptyList();
+                bitField0_ = (bitField0_ & ~0x00000040);
+                onChanged();
+              } else {
+                ioWaitTimeBuilder_.clear();
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+             *
+             * <pre>
+             * blkio.io_wait_time
+             * </pre>
+             */
+            public Builder removeIoWaitTime(int index) {
+              if (ioWaitTimeBuilder_ == null) {
+                ensureIoWaitTimeIsMutable();
+                ioWaitTime_.remove(index);
+                onChanged();
+              } else {
+                ioWaitTimeBuilder_.remove(index);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+             *
+             * <pre>
+             * blkio.io_wait_time
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder getIoWaitTimeBuilder(
+                int index) {
+              return getIoWaitTimeFieldBuilder().getBuilder(index);
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+             *
+             * <pre>
+             * blkio.io_wait_time
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoWaitTimeOrBuilder(
+                int index) {
+              if (ioWaitTimeBuilder_ == null) {
+                return ioWaitTime_.get(index);  } else {
+                return ioWaitTimeBuilder_.getMessageOrBuilder(index);
+              }
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+             *
+             * <pre>
+             * blkio.io_wait_time
+             * </pre>
+             */
+            public java.util.List<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+                 getIoWaitTimeOrBuilderList() {
+              if (ioWaitTimeBuilder_ != null) {
+                return ioWaitTimeBuilder_.getMessageOrBuilderList();
+              } else {
+                return java.util.Collections.unmodifiableList(ioWaitTime_);
+              }
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+             *
+             * <pre>
+             * blkio.io_wait_time
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder addIoWaitTimeBuilder() {
+              return getIoWaitTimeFieldBuilder().addBuilder(
+                  org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.getDefaultInstance());
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+             *
+             * <pre>
+             * blkio.io_wait_time
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder addIoWaitTimeBuilder(
+                int index) {
+              return getIoWaitTimeFieldBuilder().addBuilder(
+                  index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.getDefaultInstance());
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_wait_time = 7;</code>
+             *
+             * <pre>
+             * blkio.io_wait_time
+             * </pre>
+             */
+            public java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder> 
+                 getIoWaitTimeBuilderList() {
+              return getIoWaitTimeFieldBuilder().getBuilderList();
+            }
+            private com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+                getIoWaitTimeFieldBuilder() {
+              if (ioWaitTimeBuilder_ == null) {
+                ioWaitTimeBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                    org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder>(
+                        ioWaitTime_,
+                        ((bitField0_ & 0x00000040) == 0x00000040),
+                        getParentForChildren(),
+                        isClean());
+                ioWaitTime_ = null;
+              }
+              return ioWaitTimeBuilder_;
+            }
+
+            // repeated .mesos.v1.CgroupInfo.Blkio.Value io_merged = 8;
+            private java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> ioMerged_ =
+              java.util.Collections.emptyList();
+            private void ensureIoMergedIsMutable() {
+              if (!((bitField0_ & 0x00000080) == 0x00000080)) {
+                ioMerged_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value>(ioMerged_);
+                bitField0_ |= 0x00000080;
+               }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder> ioMergedBuilder_;
+
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_merged = 8;</code>
+             *
+             * <pre>
+             * blkio.io_merged
+             * </pre>
+             */
+            public java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> getIoMergedList() {
+              if (ioMergedBuilder_ == null) {
+                return java.util.Collections.unmodifiableList(ioMerged_);
+              } else {
+                return ioMergedBuilder_.getMessageList();
+              }
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_merged = 8;</code>
+             *
+             * <pre>
+             * blkio.io_merged
+             * </pre>
+             */
+            public int getIoMergedCount() {
+              if (ioMergedBuilder_ == null) {
+                return ioMerged_.size();
+              } else {
+                return ioMergedBuilder_.getCount();
+              }
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_merged = 8;</code>
+             *
+             * <pre>
+             * blkio.io_merged
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value getIoMerged(int index) {
+              if (ioMergedBuilder_ == null) {
+                return ioMerged_.get(index);
+              } else {
+                return ioMergedBuilder_.getMessage(index);
+              }
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_merged = 8;</code>
+             *
+             * <pre>
+             * blkio.io_merged
+             * </pre>
+             */
+            public Builder setIoMerged(
+                int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioMergedBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoMergedIsMutable();
+                ioMerged_.set(index, value);
+                onChanged();
+              } else {
+                ioMergedBuilder_.setMessage(index, value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_merged = 8;</code>
+             *
+             * <pre>
+             * blkio.io_merged
+             * </pre>
+             */
+            public Builder setIoMerged(
+                int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioMergedBuilder_ == null) {
+                ensureIoMergedIsMutable();
+                ioMerged_.set(index, builderForValue.build());
+                onChanged();
+              } else {
+                ioMergedBuilder_.setMessage(index, builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_merged = 8;</code>
+             *
+             * <pre>
+             * blkio.io_merged
+             * </pre>
+             */
+            public Builder addIoMerged(org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioMergedBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoMergedIsMutable();
+                ioMerged_.add(value);
+                onChanged();
+              } else {
+                ioMergedBuilder_.addMessage(value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_merged = 8;</code>
+             *
+             * <pre>
+             * blkio.io_merged
+             * </pre>
+             */
+            public Builder addIoMerged(
+                int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioMergedBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoMergedIsMutable();
+                ioMerged_.add(index, value);
+                onChanged();
+              } else {
+                ioMergedBuilder_.addMessage(index, value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_merged = 8;</code>
+             *
+             * <pre>
+             * blkio.io_merged
+             * </pre>
+             */
+            public Builder addIoMerged(
+                org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioMergedBuilder_ == null) {
+                ensureIoMergedIsMutable();
+                ioMerged_.add(builderForValue.build());
+                onChanged();
+              } else {
+                ioMergedBuilder_.addMessage(builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_merged = 8;</code>
+             *
+             * <pre>
+             * blkio.io_merged
+             * </pre>
+             */
+            public Builder addIoMerged(
+                int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioMergedBuilder_ == null) {
+                ensureIoMergedIsMutable();
+                ioMerged_.add(index, builderForValue.build());
+                onChanged();
+              } else {
+                ioMergedBuilder_.addMessage(index, builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_merged = 8;</code>
+             *
+             * <pre>
+             * blkio.io_merged
+             * </pre>
+             */
+            public Builder addAllIoMerged(
+                java.lang.Iterable<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> values) {
+              if (ioMergedBuilder_ == null) {
+                ensureIoMergedIsMutable();
+                super.addAll(values, ioMerged_);
+                onChanged();
+              } else {
+                ioMergedBuilder_.addAllMessages(values);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_merged = 8;</code>
+             *
+             * <pre>
+             * blkio.io_merged
+             * </pre>
+             */
+            public Builder clearIoMerged() {
+              if (ioMergedBuilder_ == null) {
+                ioMerged_ = java.util.Collections.emptyList();
+                bitField0_ = (bitField0_ & ~0x00000080);
+                onChanged();
+              } else {
+                ioMergedBuilder_.clear();
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_merged = 8;</code>
+             *
+             * <pre>
+             * blkio.io_merged
+             * </pre>
+             */
+            public Builder removeIoMerged(int index) {
+              if (ioMergedBuilder_ == null) {
+                ensureIoMergedIsMutable();
+                ioMerged_.remove(index);
+                onChanged();
+              } else {
+                ioMergedBuilder_.remove(index);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_merged = 8;</code>
+             *
+             * <pre>
+             * blkio.io_merged
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder getIoMergedBuilder(
+                int index) {
+              return getIoMergedFieldBuilder().getBuilder(index);
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_merged = 8;</code>
+             *
+             * <pre>
+             * blkio.io_merged
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoMergedOrBuilder(
+                int index) {
+              if (ioMergedBuilder_ == null) {
+                return ioMerged_.get(index);  } else {
+                return ioMergedBuilder_.getMessageOrBuilder(index);
+              }
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_merged = 8;</code>
+             *
+             * <pre>
+             * blkio.io_merged
+             * </pre>
+             */
+            public java.util.List<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+                 getIoMergedOrBuilderList() {
+              if (ioMergedBuilder_ != null) {
+                return ioMergedBuilder_.getMessageOrBuilderList();
+              } else {
+                return java.util.Collections.unmodifiableList(ioMerged_);
+              }
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_merged = 8;</code>
+             *
+             * <pre>
+             * blkio.io_merged
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder addIoMergedBuilder() {
+              return getIoMergedFieldBuilder().addBuilder(
+                  org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.getDefaultInstance());
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_merged = 8;</code>
+             *
+             * <pre>
+             * blkio.io_merged
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder addIoMergedBuilder(
+                int index) {
+              return getIoMergedFieldBuilder().addBuilder(
+                  index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.getDefaultInstance());
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_merged = 8;</code>
+             *
+             * <pre>
+             * blkio.io_merged
+             * </pre>
+             */
+            public java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder> 
+                 getIoMergedBuilderList() {
+              return getIoMergedFieldBuilder().getBuilderList();
+            }
+            private com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+                getIoMergedFieldBuilder() {
+              if (ioMergedBuilder_ == null) {
+                ioMergedBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                    org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder>(
+                        ioMerged_,
+                        ((bitField0_ & 0x00000080) == 0x00000080),
+                        getParentForChildren(),
+                        isClean());
+                ioMerged_ = null;
+              }
+              return ioMergedBuilder_;
+            }
+
+            // repeated .mesos.v1.CgroupInfo.Blkio.Value io_queued = 9;
+            private java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> ioQueued_ =
+              java.util.Collections.emptyList();
+            private void ensureIoQueuedIsMutable() {
+              if (!((bitField0_ & 0x00000100) == 0x00000100)) {
+                ioQueued_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value>(ioQueued_);
+                bitField0_ |= 0x00000100;
+               }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder> ioQueuedBuilder_;
+
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_queued = 9;</code>
+             *
+             * <pre>
+             * blkio.io_queued
+             * </pre>
+             */
+            public java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> getIoQueuedList() {
+              if (ioQueuedBuilder_ == null) {
+                return java.util.Collections.unmodifiableList(ioQueued_);
+              } else {
+                return ioQueuedBuilder_.getMessageList();
+              }
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_queued = 9;</code>
+             *
+             * <pre>
+             * blkio.io_queued
+             * </pre>
+             */
+            public int getIoQueuedCount() {
+              if (ioQueuedBuilder_ == null) {
+                return ioQueued_.size();
+              } else {
+                return ioQueuedBuilder_.getCount();
+              }
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_queued = 9;</code>
+             *
+             * <pre>
+             * blkio.io_queued
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value getIoQueued(int index) {
+              if (ioQueuedBuilder_ == null) {
+                return ioQueued_.get(index);
+              } else {
+                return ioQueuedBuilder_.getMessage(index);
+              }
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_queued = 9;</code>
+             *
+             * <pre>
+             * blkio.io_queued
+             * </pre>
+             */
+            public Builder setIoQueued(
+                int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioQueuedBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoQueuedIsMutable();
+                ioQueued_.set(index, value);
+                onChanged();
+              } else {
+                ioQueuedBuilder_.setMessage(index, value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_queued = 9;</code>
+             *
+             * <pre>
+             * blkio.io_queued
+             * </pre>
+             */
+            public Builder setIoQueued(
+                int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioQueuedBuilder_ == null) {
+                ensureIoQueuedIsMutable();
+                ioQueued_.set(index, builderForValue.build());
+                onChanged();
+              } else {
+                ioQueuedBuilder_.setMessage(index, builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_queued = 9;</code>
+             *
+             * <pre>
+             * blkio.io_queued
+             * </pre>
+             */
+            public Builder addIoQueued(org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioQueuedBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoQueuedIsMutable();
+                ioQueued_.add(value);
+                onChanged();
+              } else {
+                ioQueuedBuilder_.addMessage(value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_queued = 9;</code>
+             *
+             * <pre>
+             * blkio.io_queued
+             * </pre>
+             */
+            public Builder addIoQueued(
+                int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioQueuedBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoQueuedIsMutable();
+                ioQueued_.add(index, value);
+                onChanged();
+              } else {
+                ioQueuedBuilder_.addMessage(index, value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_queued = 9;</code>
+             *
+             * <pre>
+             * blkio.io_queued
+             * </pre>
+             */
+            public Builder addIoQueued(
+                org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioQueuedBuilder_ == null) {
+                ensureIoQueuedIsMutable();
+                ioQueued_.add(builderForValue.build());
+                onChanged();
+              } else {
+                ioQueuedBuilder_.addMessage(builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_queued = 9;</code>
+             *
+             * <pre>
+             * blkio.io_queued
+             * </pre>
+             */
+            public Builder addIoQueued(
+                int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioQueuedBuilder_ == null) {
+                ensureIoQueuedIsMutable();
+                ioQueued_.add(index, builderForValue.build());
+                onChanged();
+              } else {
+                ioQueuedBuilder_.addMessage(index, builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_queued = 9;</code>
+             *
+             * <pre>
+             * blkio.io_queued
+             * </pre>
+             */
+            public Builder addAllIoQueued(
+                java.lang.Iterable<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> values) {
+              if (ioQueuedBuilder_ == null) {
+                ensureIoQueuedIsMutable();
+                super.addAll(values, ioQueued_);
+                onChanged();
+              } else {
+                ioQueuedBuilder_.addAllMessages(values);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_queued = 9;</code>
+             *
+             * <pre>
+             * blkio.io_queued
+             * </pre>
+             */
+            public Builder clearIoQueued() {
+              if (ioQueuedBuilder_ == null) {
+                ioQueued_ = java.util.Collections.emptyList();
+                bitField0_ = (bitField0_ & ~0x00000100);
+                onChanged();
+              } else {
+                ioQueuedBuilder_.clear();
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_queued = 9;</code>
+             *
+             * <pre>
+             * blkio.io_queued
+             * </pre>
+             */
+            public Builder removeIoQueued(int index) {
+              if (ioQueuedBuilder_ == null) {
+                ensureIoQueuedIsMutable();
+                ioQueued_.remove(index);
+                onChanged();
+              } else {
+                ioQueuedBuilder_.remove(index);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_queued = 9;</code>
+             *
+             * <pre>
+             * blkio.io_queued
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder getIoQueuedBuilder(
+                int index) {
+              return getIoQueuedFieldBuilder().getBuilder(index);
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_queued = 9;</code>
+             *
+             * <pre>
+             * blkio.io_queued
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoQueuedOrBuilder(
+                int index) {
+              if (ioQueuedBuilder_ == null) {
+                return ioQueued_.get(index);  } else {
+                return ioQueuedBuilder_.getMessageOrBuilder(index);
+              }
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_queued = 9;</code>
+             *
+             * <pre>
+             * blkio.io_queued
+             * </pre>
+             */
+            public java.util.List<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+                 getIoQueuedOrBuilderList() {
+              if (ioQueuedBuilder_ != null) {
+                return ioQueuedBuilder_.getMessageOrBuilderList();
+              } else {
+                return java.util.Collections.unmodifiableList(ioQueued_);
+              }
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_queued = 9;</code>
+             *
+             * <pre>
+             * blkio.io_queued
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder addIoQueuedBuilder() {
+              return getIoQueuedFieldBuilder().addBuilder(
+                  org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.getDefaultInstance());
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_queued = 9;</code>
+             *
+             * <pre>
+             * blkio.io_queued
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder addIoQueuedBuilder(
+                int index) {
+              return getIoQueuedFieldBuilder().addBuilder(
+                  index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.getDefaultInstance());
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_queued = 9;</code>
+             *
+             * <pre>
+             * blkio.io_queued
+             * </pre>
+             */
+            public java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder> 
+                 getIoQueuedBuilderList() {
+              return getIoQueuedFieldBuilder().getBuilderList();
+            }
+            private com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+                getIoQueuedFieldBuilder() {
+              if (ioQueuedBuilder_ == null) {
+                ioQueuedBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                    org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder>(
+                        ioQueued_,
+                        ((bitField0_ & 0x00000100) == 0x00000100),
+                        getParentForChildren(),
+                        isClean());
+                ioQueued_ = null;
+              }
+              return ioQueuedBuilder_;
+            }
+
+            // @@protoc_insertion_point(builder_scope:mesos.v1.CgroupInfo.Blkio.CFQ.Statistics)
+          }
+
+          static {
+            defaultInstance = new Statistics(true);
+            defaultInstance.initFields();
+          }
+
+          // @@protoc_insertion_point(class_scope:mesos.v1.CgroupInfo.Blkio.CFQ.Statistics)
+        }
+
+        private void initFields() {
+        }
+        private byte memoizedIsInitialized = -1;
+        public final boolean isInitialized() {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized != -1) return isInitialized == 1;
+
+          memoizedIsInitialized = 1;
+          return true;
+        }
+
+        public void writeTo(com.google.protobuf.CodedOutputStream output)
+                            throws java.io.IOException {
+          getSerializedSize();
+          getUnknownFields().writeTo(output);
+        }
+
+        private int memoizedSerializedSize = -1;
+        public int getSerializedSize() {
+          int size = memoizedSerializedSize;
+          if (size != -1) return size;
+
+          size = 0;
+          size += getUnknownFields().getSerializedSize();
+          memoizedSerializedSize = size;
+          return size;
+        }
+
+        private static final long serialVersionUID = 0L;
+        @java.lang.Override
+        protected java.lang.Object writeReplace()
+            throws java.io.ObjectStreamException {
+          return super.writeReplace();
+        }
+
+        public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ parseFrom(
+            com.google.protobuf.ByteString data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ parseFrom(
+            com.google.protobuf.ByteString data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ parseFrom(byte[] data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ parseFrom(
+            byte[] data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ parseFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ parseFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ parseDelimitedFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ parseDelimitedFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ parseFrom(
+            com.google.protobuf.CodedInputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ parseFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+
+        public static Builder newBuilder() { return Builder.create(); }
+        public Builder newBuilderForType() { return newBuilder(); }
+        public static Builder newBuilder(org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ prototype) {
+          return newBuilder().mergeFrom(prototype);
+        }
+        public Builder toBuilder() { return newBuilder(this); }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          Builder builder = new Builder(parent);
+          return builder;
+        }
+        /**
+         * Protobuf type {@code mesos.v1.CgroupInfo.Blkio.CFQ}
+         */
+        public static final class Builder extends
+            com.google.protobuf.GeneratedMessage.Builder<Builder>
+           implements org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQOrBuilder {
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_Blkio_CFQ_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_Blkio_CFQ_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.class, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Builder.class);
+          }
+
+          // Construct using org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.newBuilder()
+          private Builder() {
+            maybeForceBuilderInitialization();
+          }
+
+          private Builder(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            super(parent);
+            maybeForceBuilderInitialization();
+          }
+          private void maybeForceBuilderInitialization() {
+            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            }
+          }
+          private static Builder create() {
+            return new Builder();
+          }
+
+          public Builder clear() {
+            super.clear();
+            return this;
+          }
+
+          public Builder clone() {
+            return create().mergeFrom(buildPartial());
+          }
+
+          public com.google.protobuf.Descriptors.Descriptor
+              getDescriptorForType() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_Blkio_CFQ_descriptor;
+          }
+
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ getDefaultInstanceForType() {
+            return org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.getDefaultInstance();
+          }
+
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ build() {
+            org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ result = buildPartial();
+            if (!result.isInitialized()) {
+              throw newUninitializedMessageException(result);
+            }
+            return result;
+          }
+
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ buildPartial() {
+            org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ result = new org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ(this);
+            onBuilt();
+            return result;
+          }
+
+          public Builder mergeFrom(com.google.protobuf.Message other) {
+            if (other instanceof org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ) {
+              return mergeFrom((org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ)other);
+            } else {
+              super.mergeFrom(other);
+              return this;
+            }
+          }
+
+          public Builder mergeFrom(org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ other) {
+            if (other == org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.getDefaultInstance()) return this;
+            this.mergeUnknownFields(other.getUnknownFields());
+            return this;
+          }
+
+          public final boolean isInitialized() {
+            return true;
+          }
+
+          public Builder mergeFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ parsedMessage = null;
+            try {
+              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              parsedMessage = (org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ) e.getUnfinishedMessage();
+              throw e;
+            } finally {
+              if (parsedMessage != null) {
+                mergeFrom(parsedMessage);
+              }
+            }
+            return this;
+          }
+
+          // @@protoc_insertion_point(builder_scope:mesos.v1.CgroupInfo.Blkio.CFQ)
+        }
+
+        static {
+          defaultInstance = new CFQ(true);
+          defaultInstance.initFields();
+        }
+
+        // @@protoc_insertion_point(class_scope:mesos.v1.CgroupInfo.Blkio.CFQ)
+      }
+
+      public interface ThrottlingOrBuilder
+          extends com.google.protobuf.MessageOrBuilder {
+      }
+      /**
+       * Protobuf type {@code mesos.v1.CgroupInfo.Blkio.Throttling}
+       */
+      public static final class Throttling extends
+          com.google.protobuf.GeneratedMessage
+          implements ThrottlingOrBuilder {
+        // Use Throttling.newBuilder() to construct.
+        private Throttling(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+          super(builder);
+          this.unknownFields = builder.getUnknownFields();
+        }
+        private Throttling(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+        private static final Throttling defaultInstance;
+        public static Throttling getDefaultInstance() {
+          return defaultInstance;
+        }
+
+        public Throttling getDefaultInstanceForType() {
+          return defaultInstance;
+        }
+
+        private final com.google.protobuf.UnknownFieldSet unknownFields;
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet
+            getUnknownFields() {
+          return this.unknownFields;
+        }
+        private Throttling(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          initFields();
+          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+              com.google.protobuf.UnknownFieldSet.newBuilder();
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(input, unknownFields,
+                                         extensionRegistry, tag)) {
+                    done = true;
+                  }
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw e.setUnfinishedMessage(this);
+          } catch (java.io.IOException e) {
+            throw new com.google.protobuf.InvalidProtocolBufferException(
+                e.getMessage()).setUnfinishedMessage(this);
+          } finally {
+            this.unknownFields = unknownFields.build();
+            makeExtensionsImmutable();
+          }
+        }
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_Blkio_Throttling_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_Blkio_Throttling_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.class, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Builder.class);
+        }
+
+        public static com.google.protobuf.Parser<Throttling> PARSER =
+            new com.google.protobuf.AbstractParser<Throttling>() {
+          public Throttling parsePartialFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return new Throttling(input, extensionRegistry);
+          }
+        };
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<Throttling> getParserForType() {
+          return PARSER;
+        }
+
+        public interface StatisticsOrBuilder
+            extends com.google.protobuf.MessageOrBuilder {
+
+          // optional .mesos.v1.Device.Number device = 1;
+          /**
+           * <code>optional .mesos.v1.Device.Number device = 1;</code>
+           *
+           * <pre>
+           * Stats are grouped by block devices. If `device` is not
+           * set, it represents `Total`.
+           * </pre>
+           */
+          boolean hasDevice();
+          /**
+           * <code>optional .mesos.v1.Device.Number device = 1;</code>
+           *
+           * <pre>
+           * Stats are grouped by block devices. If `device` is not
+           * set, it represents `Total`.
+           * </pre>
+           */
+          org.apache.mesos.v1.Protos.Device.Number getDevice();
+          /**
+           * <code>optional .mesos.v1.Device.Number device = 1;</code>
+           *
+           * <pre>
+           * Stats are grouped by block devices. If `device` is not
+           * set, it represents `Total`.
+           * </pre>
+           */
+          org.apache.mesos.v1.Protos.Device.NumberOrBuilder getDeviceOrBuilder();
+
+          // repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 2;
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+           *
+           * <pre>
+           * blkio.throttle.io_serviced
+           * </pre>
+           */
+          java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> 
+              getIoServicedList();
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+           *
+           * <pre>
+           * blkio.throttle.io_serviced
+           * </pre>
+           */
+          org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value getIoServiced(int index);
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+           *
+           * <pre>
+           * blkio.throttle.io_serviced
+           * </pre>
+           */
+          int getIoServicedCount();
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+           *
+           * <pre>
+           * blkio.throttle.io_serviced
+           * </pre>
+           */
+          java.util.List<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+              getIoServicedOrBuilderList();
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+           *
+           * <pre>
+           * blkio.throttle.io_serviced
+           * </pre>
+           */
+          org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoServicedOrBuilder(
+              int index);
+
+          // repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 3;
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+           *
+           * <pre>
+           * blkio.throttle.io_service_bytes
+           * </pre>
+           */
+          java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> 
+              getIoServiceBytesList();
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+           *
+           * <pre>
+           * blkio.throttle.io_service_bytes
+           * </pre>
+           */
+          org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value getIoServiceBytes(int index);
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+           *
+           * <pre>
+           * blkio.throttle.io_service_bytes
+           * </pre>
+           */
+          int getIoServiceBytesCount();
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+           *
+           * <pre>
+           * blkio.throttle.io_service_bytes
+           * </pre>
+           */
+          java.util.List<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+              getIoServiceBytesOrBuilderList();
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+           *
+           * <pre>
+           * blkio.throttle.io_service_bytes
+           * </pre>
+           */
+          org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoServiceBytesOrBuilder(
+              int index);
+        }
+        /**
+         * Protobuf type {@code mesos.v1.CgroupInfo.Blkio.Throttling.Statistics}
+         */
+        public static final class Statistics extends
+            com.google.protobuf.GeneratedMessage
+            implements StatisticsOrBuilder {
+          // Use Statistics.newBuilder() to construct.
+          private Statistics(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+            super(builder);
+            this.unknownFields = builder.getUnknownFields();
+          }
+          private Statistics(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+          private static final Statistics defaultInstance;
+          public static Statistics getDefaultInstance() {
+            return defaultInstance;
+          }
+
+          public Statistics getDefaultInstanceForType() {
+            return defaultInstance;
+          }
+
+          private final com.google.protobuf.UnknownFieldSet unknownFields;
+          @java.lang.Override
+          public final com.google.protobuf.UnknownFieldSet
+              getUnknownFields() {
+            return this.unknownFields;
+          }
+          private Statistics(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            initFields();
+            int mutable_bitField0_ = 0;
+            com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+                com.google.protobuf.UnknownFieldSet.newBuilder();
+            try {
+              boolean done = false;
+              while (!done) {
+                int tag = input.readTag();
+                switch (tag) {
+                  case 0:
+                    done = true;
+                    break;
+                  default: {
+                    if (!parseUnknownField(input, unknownFields,
+                                           extensionRegistry, tag)) {
+                      done = true;
+                    }
+                    break;
+                  }
+                  case 10: {
+                    org.apache.mesos.v1.Protos.Device.Number.Builder subBuilder = null;
+                    if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                      subBuilder = device_.toBuilder();
+                    }
+                    device_ = input.readMessage(org.apache.mesos.v1.Protos.Device.Number.PARSER, extensionRegistry);
+                    if (subBuilder != null) {
+                      subBuilder.mergeFrom(device_);
+                      device_ = subBuilder.buildPartial();
+                    }
+                    bitField0_ |= 0x00000001;
+                    break;
+                  }
+                  case 18: {
+                    if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+                      ioServiced_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value>();
+                      mutable_bitField0_ |= 0x00000002;
+                    }
+                    ioServiced_.add(input.readMessage(org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.PARSER, extensionRegistry));
+                    break;
+                  }
+                  case 26: {
+                    if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
+                      ioServiceBytes_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value>();
+                      mutable_bitField0_ |= 0x00000004;
+                    }
+                    ioServiceBytes_.add(input.readMessage(org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.PARSER, extensionRegistry));
+                    break;
+                  }
+                }
+              }
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+              throw new com.google.protobuf.InvalidProtocolBufferException(
+                  e.getMessage()).setUnfinishedMessage(this);
+            } finally {
+              if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+                ioServiced_ = java.util.Collections.unmodifiableList(ioServiced_);
+              }
+              if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
+                ioServiceBytes_ = java.util.Collections.unmodifiableList(ioServiceBytes_);
+              }
+              this.unknownFields = unknownFields.build();
+              makeExtensionsImmutable();
+            }
+          }
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_Blkio_Throttling_Statistics_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_Blkio_Throttling_Statistics_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics.class, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics.Builder.class);
+          }
+
+          public static com.google.protobuf.Parser<Statistics> PARSER =
+              new com.google.protobuf.AbstractParser<Statistics>() {
+            public Statistics parsePartialFrom(
+                com.google.protobuf.CodedInputStream input,
+                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+                throws com.google.protobuf.InvalidProtocolBufferException {
+              return new Statistics(input, extensionRegistry);
+            }
+          };
+
+          @java.lang.Override
+          public com.google.protobuf.Parser<Statistics> getParserForType() {
+            return PARSER;
+          }
+
+          private int bitField0_;
+          // optional .mesos.v1.Device.Number device = 1;
+          public static final int DEVICE_FIELD_NUMBER = 1;
+          private org.apache.mesos.v1.Protos.Device.Number device_;
+          /**
+           * <code>optional .mesos.v1.Device.Number device = 1;</code>
+           *
+           * <pre>
+           * Stats are grouped by block devices. If `device` is not
+           * set, it represents `Total`.
+           * </pre>
+           */
+          public boolean hasDevice() {
+            return ((bitField0_ & 0x00000001) == 0x00000001);
+          }
+          /**
+           * <code>optional .mesos.v1.Device.Number device = 1;</code>
+           *
+           * <pre>
+           * Stats are grouped by block devices. If `device` is not
+           * set, it represents `Total`.
+           * </pre>
+           */
+          public org.apache.mesos.v1.Protos.Device.Number getDevice() {
+            return device_;
+          }
+          /**
+           * <code>optional .mesos.v1.Device.Number device = 1;</code>
+           *
+           * <pre>
+           * Stats are grouped by block devices. If `device` is not
+           * set, it represents `Total`.
+           * </pre>
+           */
+          public org.apache.mesos.v1.Protos.Device.NumberOrBuilder getDeviceOrBuilder() {
+            return device_;
+          }
+
+          // repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 2;
+          public static final int IO_SERVICED_FIELD_NUMBER = 2;
+          private java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> ioServiced_;
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+           *
+           * <pre>
+           * blkio.throttle.io_serviced
+           * </pre>
+           */
+          public java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> getIoServicedList() {
+            return ioServiced_;
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+           *
+           * <pre>
+           * blkio.throttle.io_serviced
+           * </pre>
+           */
+          public java.util.List<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+              getIoServicedOrBuilderList() {
+            return ioServiced_;
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+           *
+           * <pre>
+           * blkio.throttle.io_serviced
+           * </pre>
+           */
+          public int getIoServicedCount() {
+            return ioServiced_.size();
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+           *
+           * <pre>
+           * blkio.throttle.io_serviced
+           * </pre>
+           */
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value getIoServiced(int index) {
+            return ioServiced_.get(index);
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+           *
+           * <pre>
+           * blkio.throttle.io_serviced
+           * </pre>
+           */
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoServicedOrBuilder(
+              int index) {
+            return ioServiced_.get(index);
+          }
+
+          // repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 3;
+          public static final int IO_SERVICE_BYTES_FIELD_NUMBER = 3;
+          private java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> ioServiceBytes_;
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+           *
+           * <pre>
+           * blkio.throttle.io_service_bytes
+           * </pre>
+           */
+          public java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> getIoServiceBytesList() {
+            return ioServiceBytes_;
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+           *
+           * <pre>
+           * blkio.throttle.io_service_bytes
+           * </pre>
+           */
+          public java.util.List<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+              getIoServiceBytesOrBuilderList() {
+            return ioServiceBytes_;
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+           *
+           * <pre>
+           * blkio.throttle.io_service_bytes
+           * </pre>
+           */
+          public int getIoServiceBytesCount() {
+            return ioServiceBytes_.size();
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+           *
+           * <pre>
+           * blkio.throttle.io_service_bytes
+           * </pre>
+           */
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value getIoServiceBytes(int index) {
+            return ioServiceBytes_.get(index);
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+           *
+           * <pre>
+           * blkio.throttle.io_service_bytes
+           * </pre>
+           */
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoServiceBytesOrBuilder(
+              int index) {
+            return ioServiceBytes_.get(index);
+          }
+
+          private void initFields() {
+            device_ = org.apache.mesos.v1.Protos.Device.Number.getDefaultInstance();
+            ioServiced_ = java.util.Collections.emptyList();
+            ioServiceBytes_ = java.util.Collections.emptyList();
+          }
+          private byte memoizedIsInitialized = -1;
+          public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized != -1) return isInitialized == 1;
+
+            if (hasDevice()) {
+              if (!getDevice().isInitialized()) {
+                memoizedIsInitialized = 0;
+                return false;
+              }
+            }
+            memoizedIsInitialized = 1;
+            return true;
+          }
+
+          public void writeTo(com.google.protobuf.CodedOutputStream output)
+                              throws java.io.IOException {
+            getSerializedSize();
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              output.writeMessage(1, device_);
+            }
+            for (int i = 0; i < ioServiced_.size(); i++) {
+              output.writeMessage(2, ioServiced_.get(i));
+            }
+            for (int i = 0; i < ioServiceBytes_.size(); i++) {
+              output.writeMessage(3, ioServiceBytes_.get(i));
+            }
+            getUnknownFields().writeTo(output);
+          }
+
+          private int memoizedSerializedSize = -1;
+          public int getSerializedSize() {
+            int size = memoizedSerializedSize;
+            if (size != -1) return size;
+
+            size = 0;
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              size += com.google.protobuf.CodedOutputStream
+                .computeMessageSize(1, device_);
+            }
+            for (int i = 0; i < ioServiced_.size(); i++) {
+              size += com.google.protobuf.CodedOutputStream
+                .computeMessageSize(2, ioServiced_.get(i));
+            }
+            for (int i = 0; i < ioServiceBytes_.size(); i++) {
+              size += com.google.protobuf.CodedOutputStream
+                .computeMessageSize(3, ioServiceBytes_.get(i));
+            }
+            size += getUnknownFields().getSerializedSize();
+            memoizedSerializedSize = size;
+            return size;
+          }
+
+          private static final long serialVersionUID = 0L;
+          @java.lang.Override
+          protected java.lang.Object writeReplace()
+              throws java.io.ObjectStreamException {
+            return super.writeReplace();
+          }
+
+          public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics parseFrom(
+              com.google.protobuf.ByteString data)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+          }
+          public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics parseFrom(
+              com.google.protobuf.ByteString data,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+          }
+          public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics parseFrom(byte[] data)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+          }
+          public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics parseFrom(
+              byte[] data,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+          }
+          public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics parseFrom(java.io.InputStream input)
+              throws java.io.IOException {
+            return PARSER.parseFrom(input);
+          }
+          public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics parseFrom(
+              java.io.InputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            return PARSER.parseFrom(input, extensionRegistry);
+          }
+          public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics parseDelimitedFrom(java.io.InputStream input)
+              throws java.io.IOException {
+            return PARSER.parseDelimitedFrom(input);
+          }
+          public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics parseDelimitedFrom(
+              java.io.InputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            return PARSER.parseDelimitedFrom(input, extensionRegistry);
+          }
+          public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics parseFrom(
+              com.google.protobuf.CodedInputStream input)
+              throws java.io.IOException {
+            return PARSER.parseFrom(input);
+          }
+          public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics parseFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            return PARSER.parseFrom(input, extensionRegistry);
+          }
+
+          public static Builder newBuilder() { return Builder.create(); }
+          public Builder newBuilderForType() { return newBuilder(); }
+          public static Builder newBuilder(org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics prototype) {
+            return newBuilder().mergeFrom(prototype);
+          }
+          public Builder toBuilder() { return newBuilder(this); }
+
+          @java.lang.Override
+          protected Builder newBuilderForType(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+          }
+          /**
+           * Protobuf type {@code mesos.v1.CgroupInfo.Blkio.Throttling.Statistics}
+           */
+          public static final class Builder extends
+              com.google.protobuf.GeneratedMessage.Builder<Builder>
+             implements org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.StatisticsOrBuilder {
+            public static final com.google.protobuf.Descriptors.Descriptor
+                getDescriptor() {
+              return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_Blkio_Throttling_Statistics_descriptor;
+            }
+
+            protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+                internalGetFieldAccessorTable() {
+              return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_Blkio_Throttling_Statistics_fieldAccessorTable
+                  .ensureFieldAccessorsInitialized(
+                      org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics.class, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics.Builder.class);
+            }
+
+            // Construct using org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics.newBuilder()
+            private Builder() {
+              maybeForceBuilderInitialization();
+            }
+
+            private Builder(
+                com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+              super(parent);
+              maybeForceBuilderInitialization();
+            }
+            private void maybeForceBuilderInitialization() {
+              if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+                getDeviceFieldBuilder();
+                getIoServicedFieldBuilder();
+                getIoServiceBytesFieldBuilder();
+              }
+            }
+            private static Builder create() {
+              return new Builder();
+            }
+
+            public Builder clear() {
+              super.clear();
+              if (deviceBuilder_ == null) {
+                device_ = org.apache.mesos.v1.Protos.Device.Number.getDefaultInstance();
+              } else {
+                deviceBuilder_.clear();
+              }
+              bitField0_ = (bitField0_ & ~0x00000001);
+              if (ioServicedBuilder_ == null) {
+                ioServiced_ = java.util.Collections.emptyList();
+                bitField0_ = (bitField0_ & ~0x00000002);
+              } else {
+                ioServicedBuilder_.clear();
+              }
+              if (ioServiceBytesBuilder_ == null) {
+                ioServiceBytes_ = java.util.Collections.emptyList();
+                bitField0_ = (bitField0_ & ~0x00000004);
+              } else {
+                ioServiceBytesBuilder_.clear();
+              }
+              return this;
+            }
+
+            public Builder clone() {
+              return create().mergeFrom(buildPartial());
+            }
+
+            public com.google.protobuf.Descriptors.Descriptor
+                getDescriptorForType() {
+              return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_Blkio_Throttling_Statistics_descriptor;
+            }
+
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics getDefaultInstanceForType() {
+              return org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics.getDefaultInstance();
+            }
+
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics build() {
+              org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics result = buildPartial();
+              if (!result.isInitialized()) {
+                throw newUninitializedMessageException(result);
+              }
+              return result;
+            }
+
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics buildPartial() {
+              org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics result = new org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics(this);
+              int from_bitField0_ = bitField0_;
+              int to_bitField0_ = 0;
+              if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+                to_bitField0_ |= 0x00000001;
+              }
+              if (deviceBuilder_ == null) {
+                result.device_ = device_;
+              } else {
+                result.device_ = deviceBuilder_.build();
+              }
+              if (ioServicedBuilder_ == null) {
+                if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                  ioServiced_ = java.util.Collections.unmodifiableList(ioServiced_);
+                  bitField0_ = (bitField0_ & ~0x00000002);
+                }
+                result.ioServiced_ = ioServiced_;
+              } else {
+                result.ioServiced_ = ioServicedBuilder_.build();
+              }
+              if (ioServiceBytesBuilder_ == null) {
+                if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                  ioServiceBytes_ = java.util.Collections.unmodifiableList(ioServiceBytes_);
+                  bitField0_ = (bitField0_ & ~0x00000004);
+                }
+                result.ioServiceBytes_ = ioServiceBytes_;
+              } else {
+                result.ioServiceBytes_ = ioServiceBytesBuilder_.build();
+              }
+              result.bitField0_ = to_bitField0_;
+              onBuilt();
+              return result;
+            }
+
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+              if (other instanceof org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics) {
+                return mergeFrom((org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics)other);
+              } else {
+                super.mergeFrom(other);
+                return this;
+              }
+            }
+
+            public Builder mergeFrom(org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics other) {
+              if (other == org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics.getDefaultInstance()) return this;
+              if (other.hasDevice()) {
+                mergeDevice(other.getDevice());
+              }
+              if (ioServicedBuilder_ == null) {
+                if (!other.ioServiced_.isEmpty()) {
+                  if (ioServiced_.isEmpty()) {
+                    ioServiced_ = other.ioServiced_;
+                    bitField0_ = (bitField0_ & ~0x00000002);
+                  } else {
+                    ensureIoServicedIsMutable();
+                    ioServiced_.addAll(other.ioServiced_);
+                  }
+                  onChanged();
+                }
+              } else {
+                if (!other.ioServiced_.isEmpty()) {
+                  if (ioServicedBuilder_.isEmpty()) {
+                    ioServicedBuilder_.dispose();
+                    ioServicedBuilder_ = null;
+                    ioServiced_ = other.ioServiced_;
+                    bitField0_ = (bitField0_ & ~0x00000002);
+                    ioServicedBuilder_ = 
+                      com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                         getIoServicedFieldBuilder() : null;
+                  } else {
+                    ioServicedBuilder_.addAllMessages(other.ioServiced_);
+                  }
+                }
+              }
+              if (ioServiceBytesBuilder_ == null) {
+                if (!other.ioServiceBytes_.isEmpty()) {
+                  if (ioServiceBytes_.isEmpty()) {
+                    ioServiceBytes_ = other.ioServiceBytes_;
+                    bitField0_ = (bitField0_ & ~0x00000004);
+                  } else {
+                    ensureIoServiceBytesIsMutable();
+                    ioServiceBytes_.addAll(other.ioServiceBytes_);
+                  }
+                  onChanged();
+                }
+              } else {
+                if (!other.ioServiceBytes_.isEmpty()) {
+                  if (ioServiceBytesBuilder_.isEmpty()) {
+                    ioServiceBytesBuilder_.dispose();
+                    ioServiceBytesBuilder_ = null;
+                    ioServiceBytes_ = other.ioServiceBytes_;
+                    bitField0_ = (bitField0_ & ~0x00000004);
+                    ioServiceBytesBuilder_ = 
+                      com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                         getIoServiceBytesFieldBuilder() : null;
+                  } else {
+                    ioServiceBytesBuilder_.addAllMessages(other.ioServiceBytes_);
+                  }
+                }
+              }
+              this.mergeUnknownFields(other.getUnknownFields());
+              return this;
+            }
+
+            public final boolean isInitialized() {
+              if (hasDevice()) {
+                if (!getDevice().isInitialized()) {
+                  
+                  return false;
+                }
+              }
+              return true;
+            }
+
+            public Builder mergeFrom(
+                com.google.protobuf.CodedInputStream input,
+                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+                throws java.io.IOException {
+              org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics parsedMessage = null;
+              try {
+                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+              } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                parsedMessage = (org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics) e.getUnfinishedMessage();
+                throw e;
+              } finally {
+                if (parsedMessage != null) {
+                  mergeFrom(parsedMessage);
+                }
+              }
+              return this;
+            }
+            private int bitField0_;
+
+            // optional .mesos.v1.Device.Number device = 1;
+            private org.apache.mesos.v1.Protos.Device.Number device_ = org.apache.mesos.v1.Protos.Device.Number.getDefaultInstance();
+            private com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.Device.Number, org.apache.mesos.v1.Protos.Device.Number.Builder, org.apache.mesos.v1.Protos.Device.NumberOrBuilder> deviceBuilder_;
+            /**
+             * <code>optional .mesos.v1.Device.Number device = 1;</code>
+             *
+             * <pre>
+             * Stats are grouped by block devices. If `device` is not
+             * set, it represents `Total`.
+             * </pre>
+             */
+            public boolean hasDevice() {
+              return ((bitField0_ & 0x00000001) == 0x00000001);
+            }
+            /**
+             * <code>optional .mesos.v1.Device.Number device = 1;</code>
+             *
+             * <pre>
+             * Stats are grouped by block devices. If `device` is not
+             * set, it represents `Total`.
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.Device.Number getDevice() {
+              if (deviceBuilder_ == null) {
+                return device_;
+              } else {
+                return deviceBuilder_.getMessage();
+              }
+            }
+            /**
+             * <code>optional .mesos.v1.Device.Number device = 1;</code>
+             *
+             * <pre>
+             * Stats are grouped by block devices. If `device` is not
+             * set, it represents `Total`.
+             * </pre>
+             */
+            public Builder setDevice(org.apache.mesos.v1.Protos.Device.Number value) {
+              if (deviceBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                device_ = value;
+                onChanged();
+              } else {
+                deviceBuilder_.setMessage(value);
+              }
+              bitField0_ |= 0x00000001;
+              return this;
+            }
+            /**
+             * <code>optional .mesos.v1.Device.Number device = 1;</code>
+             *
+             * <pre>
+             * Stats are grouped by block devices. If `device` is not
+             * set, it represents `Total`.
+             * </pre>
+             */
+            public Builder setDevice(
+                org.apache.mesos.v1.Protos.Device.Number.Builder builderForValue) {
+              if (deviceBuilder_ == null) {
+                device_ = builderForValue.build();
+                onChanged();
+              } else {
+                deviceBuilder_.setMessage(builderForValue.build());
+              }
+              bitField0_ |= 0x00000001;
+              return this;
+            }
+            /**
+             * <code>optional .mesos.v1.Device.Number device = 1;</code>
+             *
+             * <pre>
+             * Stats are grouped by block devices. If `device` is not
+             * set, it represents `Total`.
+             * </pre>
+             */
+            public Builder mergeDevice(org.apache.mesos.v1.Protos.Device.Number value) {
+              if (deviceBuilder_ == null) {
+                if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                    device_ != org.apache.mesos.v1.Protos.Device.Number.getDefaultInstance()) {
+                  device_ =
+                    org.apache.mesos.v1.Protos.Device.Number.newBuilder(device_).mergeFrom(value).buildPartial();
+                } else {
+                  device_ = value;
+                }
+                onChanged();
+              } else {
+                deviceBuilder_.mergeFrom(value);
+              }
+              bitField0_ |= 0x00000001;
+              return this;
+            }
+            /**
+             * <code>optional .mesos.v1.Device.Number device = 1;</code>
+             *
+             * <pre>
+             * Stats are grouped by block devices. If `device` is not
+             * set, it represents `Total`.
+             * </pre>
+             */
+            public Builder clearDevice() {
+              if (deviceBuilder_ == null) {
+                device_ = org.apache.mesos.v1.Protos.Device.Number.getDefaultInstance();
+                onChanged();
+              } else {
+                deviceBuilder_.clear();
+              }
+              bitField0_ = (bitField0_ & ~0x00000001);
+              return this;
+            }
+            /**
+             * <code>optional .mesos.v1.Device.Number device = 1;</code>
+             *
+             * <pre>
+             * Stats are grouped by block devices. If `device` is not
+             * set, it represents `Total`.
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.Device.Number.Builder getDeviceBuilder() {
+              bitField0_ |= 0x00000001;
+              onChanged();
+              return getDeviceFieldBuilder().getBuilder();
+            }
+            /**
+             * <code>optional .mesos.v1.Device.Number device = 1;</code>
+             *
+             * <pre>
+             * Stats are grouped by block devices. If `device` is not
+             * set, it represents `Total`.
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.Device.NumberOrBuilder getDeviceOrBuilder() {
+              if (deviceBuilder_ != null) {
+                return deviceBuilder_.getMessageOrBuilder();
+              } else {
+                return device_;
+              }
+            }
+            /**
+             * <code>optional .mesos.v1.Device.Number device = 1;</code>
+             *
+             * <pre>
+             * Stats are grouped by block devices. If `device` is not
+             * set, it represents `Total`.
+             * </pre>
+             */
+            private com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.Device.Number, org.apache.mesos.v1.Protos.Device.Number.Builder, org.apache.mesos.v1.Protos.Device.NumberOrBuilder> 
+                getDeviceFieldBuilder() {
+              if (deviceBuilder_ == null) {
+                deviceBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                    org.apache.mesos.v1.Protos.Device.Number, org.apache.mesos.v1.Protos.Device.Number.Builder, org.apache.mesos.v1.Protos.Device.NumberOrBuilder>(
+                        device_,
+                        getParentForChildren(),
+                        isClean());
+                device_ = null;
+              }
+              return deviceBuilder_;
+            }
+
+            // repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 2;
+            private java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> ioServiced_ =
+              java.util.Collections.emptyList();
+            private void ensureIoServicedIsMutable() {
+              if (!((bitField0_ & 0x00000002) == 0x00000002)) {
+                ioServiced_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value>(ioServiced_);
+                bitField0_ |= 0x00000002;
+               }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder> ioServicedBuilder_;
+
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_serviced
+             * </pre>
+             */
+            public java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> getIoServicedList() {
+              if (ioServicedBuilder_ == null) {
+                return java.util.Collections.unmodifiableList(ioServiced_);
+              } else {
+                return ioServicedBuilder_.getMessageList();
+              }
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_serviced
+             * </pre>
+             */
+            public int getIoServicedCount() {
+              if (ioServicedBuilder_ == null) {
+                return ioServiced_.size();
+              } else {
+                return ioServicedBuilder_.getCount();
+              }
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_serviced
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value getIoServiced(int index) {
+              if (ioServicedBuilder_ == null) {
+                return ioServiced_.get(index);
+              } else {
+                return ioServicedBuilder_.getMessage(index);
+              }
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_serviced
+             * </pre>
+             */
+            public Builder setIoServiced(
+                int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioServicedBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoServicedIsMutable();
+                ioServiced_.set(index, value);
+                onChanged();
+              } else {
+                ioServicedBuilder_.setMessage(index, value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_serviced
+             * </pre>
+             */
+            public Builder setIoServiced(
+                int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioServicedBuilder_ == null) {
+                ensureIoServicedIsMutable();
+                ioServiced_.set(index, builderForValue.build());
+                onChanged();
+              } else {
+                ioServicedBuilder_.setMessage(index, builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_serviced
+             * </pre>
+             */
+            public Builder addIoServiced(org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioServicedBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoServicedIsMutable();
+                ioServiced_.add(value);
+                onChanged();
+              } else {
+                ioServicedBuilder_.addMessage(value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_serviced
+             * </pre>
+             */
+            public Builder addIoServiced(
+                int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioServicedBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoServicedIsMutable();
+                ioServiced_.add(index, value);
+                onChanged();
+              } else {
+                ioServicedBuilder_.addMessage(index, value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_serviced
+             * </pre>
+             */
+            public Builder addIoServiced(
+                org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioServicedBuilder_ == null) {
+                ensureIoServicedIsMutable();
+                ioServiced_.add(builderForValue.build());
+                onChanged();
+              } else {
+                ioServicedBuilder_.addMessage(builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_serviced
+             * </pre>
+             */
+            public Builder addIoServiced(
+                int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioServicedBuilder_ == null) {
+                ensureIoServicedIsMutable();
+                ioServiced_.add(index, builderForValue.build());
+                onChanged();
+              } else {
+                ioServicedBuilder_.addMessage(index, builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_serviced
+             * </pre>
+             */
+            public Builder addAllIoServiced(
+                java.lang.Iterable<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> values) {
+              if (ioServicedBuilder_ == null) {
+                ensureIoServicedIsMutable();
+                super.addAll(values, ioServiced_);
+                onChanged();
+              } else {
+                ioServicedBuilder_.addAllMessages(values);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_serviced
+             * </pre>
+             */
+            public Builder clearIoServiced() {
+              if (ioServicedBuilder_ == null) {
+                ioServiced_ = java.util.Collections.emptyList();
+                bitField0_ = (bitField0_ & ~0x00000002);
+                onChanged();
+              } else {
+                ioServicedBuilder_.clear();
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_serviced
+             * </pre>
+             */
+            public Builder removeIoServiced(int index) {
+              if (ioServicedBuilder_ == null) {
+                ensureIoServicedIsMutable();
+                ioServiced_.remove(index);
+                onChanged();
+              } else {
+                ioServicedBuilder_.remove(index);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_serviced
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder getIoServicedBuilder(
+                int index) {
+              return getIoServicedFieldBuilder().getBuilder(index);
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_serviced
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoServicedOrBuilder(
+                int index) {
+              if (ioServicedBuilder_ == null) {
+                return ioServiced_.get(index);  } else {
+                return ioServicedBuilder_.getMessageOrBuilder(index);
+              }
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_serviced
+             * </pre>
+             */
+            public java.util.List<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+                 getIoServicedOrBuilderList() {
+              if (ioServicedBuilder_ != null) {
+                return ioServicedBuilder_.getMessageOrBuilderList();
+              } else {
+                return java.util.Collections.unmodifiableList(ioServiced_);
+              }
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_serviced
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder addIoServicedBuilder() {
+              return getIoServicedFieldBuilder().addBuilder(
+                  org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.getDefaultInstance());
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_serviced
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder addIoServicedBuilder(
+                int index) {
+              return getIoServicedFieldBuilder().addBuilder(
+                  index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.getDefaultInstance());
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_serviced = 2;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_serviced
+             * </pre>
+             */
+            public java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder> 
+                 getIoServicedBuilderList() {
+              return getIoServicedFieldBuilder().getBuilderList();
+            }
+            private com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+                getIoServicedFieldBuilder() {
+              if (ioServicedBuilder_ == null) {
+                ioServicedBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                    org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder>(
+                        ioServiced_,
+                        ((bitField0_ & 0x00000002) == 0x00000002),
+                        getParentForChildren(),
+                        isClean());
+                ioServiced_ = null;
+              }
+              return ioServicedBuilder_;
+            }
+
+            // repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 3;
+            private java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> ioServiceBytes_ =
+              java.util.Collections.emptyList();
+            private void ensureIoServiceBytesIsMutable() {
+              if (!((bitField0_ & 0x00000004) == 0x00000004)) {
+                ioServiceBytes_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value>(ioServiceBytes_);
+                bitField0_ |= 0x00000004;
+               }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder> ioServiceBytesBuilder_;
+
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_service_bytes
+             * </pre>
+             */
+            public java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> getIoServiceBytesList() {
+              if (ioServiceBytesBuilder_ == null) {
+                return java.util.Collections.unmodifiableList(ioServiceBytes_);
+              } else {
+                return ioServiceBytesBuilder_.getMessageList();
+              }
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_service_bytes
+             * </pre>
+             */
+            public int getIoServiceBytesCount() {
+              if (ioServiceBytesBuilder_ == null) {
+                return ioServiceBytes_.size();
+              } else {
+                return ioServiceBytesBuilder_.getCount();
+              }
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_service_bytes
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value getIoServiceBytes(int index) {
+              if (ioServiceBytesBuilder_ == null) {
+                return ioServiceBytes_.get(index);
+              } else {
+                return ioServiceBytesBuilder_.getMessage(index);
+              }
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_service_bytes
+             * </pre>
+             */
+            public Builder setIoServiceBytes(
+                int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioServiceBytesBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoServiceBytesIsMutable();
+                ioServiceBytes_.set(index, value);
+                onChanged();
+              } else {
+                ioServiceBytesBuilder_.setMessage(index, value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_service_bytes
+             * </pre>
+             */
+            public Builder setIoServiceBytes(
+                int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioServiceBytesBuilder_ == null) {
+                ensureIoServiceBytesIsMutable();
+                ioServiceBytes_.set(index, builderForValue.build());
+                onChanged();
+              } else {
+                ioServiceBytesBuilder_.setMessage(index, builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_service_bytes
+             * </pre>
+             */
+            public Builder addIoServiceBytes(org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioServiceBytesBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoServiceBytesIsMutable();
+                ioServiceBytes_.add(value);
+                onChanged();
+              } else {
+                ioServiceBytesBuilder_.addMessage(value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_service_bytes
+             * </pre>
+             */
+            public Builder addIoServiceBytes(
+                int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value value) {
+              if (ioServiceBytesBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureIoServiceBytesIsMutable();
+                ioServiceBytes_.add(index, value);
+                onChanged();
+              } else {
+                ioServiceBytesBuilder_.addMessage(index, value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_service_bytes
+             * </pre>
+             */
+            public Builder addIoServiceBytes(
+                org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioServiceBytesBuilder_ == null) {
+                ensureIoServiceBytesIsMutable();
+                ioServiceBytes_.add(builderForValue.build());
+                onChanged();
+              } else {
+                ioServiceBytesBuilder_.addMessage(builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_service_bytes
+             * </pre>
+             */
+            public Builder addIoServiceBytes(
+                int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder builderForValue) {
+              if (ioServiceBytesBuilder_ == null) {
+                ensureIoServiceBytesIsMutable();
+                ioServiceBytes_.add(index, builderForValue.build());
+                onChanged();
+              } else {
+                ioServiceBytesBuilder_.addMessage(index, builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_service_bytes
+             * </pre>
+             */
+            public Builder addAllIoServiceBytes(
+                java.lang.Iterable<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value> values) {
+              if (ioServiceBytesBuilder_ == null) {
+                ensureIoServiceBytesIsMutable();
+                super.addAll(values, ioServiceBytes_);
+                onChanged();
+              } else {
+                ioServiceBytesBuilder_.addAllMessages(values);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_service_bytes
+             * </pre>
+             */
+            public Builder clearIoServiceBytes() {
+              if (ioServiceBytesBuilder_ == null) {
+                ioServiceBytes_ = java.util.Collections.emptyList();
+                bitField0_ = (bitField0_ & ~0x00000004);
+                onChanged();
+              } else {
+                ioServiceBytesBuilder_.clear();
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_service_bytes
+             * </pre>
+             */
+            public Builder removeIoServiceBytes(int index) {
+              if (ioServiceBytesBuilder_ == null) {
+                ensureIoServiceBytesIsMutable();
+                ioServiceBytes_.remove(index);
+                onChanged();
+              } else {
+                ioServiceBytesBuilder_.remove(index);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_service_bytes
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder getIoServiceBytesBuilder(
+                int index) {
+              return getIoServiceBytesFieldBuilder().getBuilder(index);
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_service_bytes
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder getIoServiceBytesOrBuilder(
+                int index) {
+              if (ioServiceBytesBuilder_ == null) {
+                return ioServiceBytes_.get(index);  } else {
+                return ioServiceBytesBuilder_.getMessageOrBuilder(index);
+              }
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_service_bytes
+             * </pre>
+             */
+            public java.util.List<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+                 getIoServiceBytesOrBuilderList() {
+              if (ioServiceBytesBuilder_ != null) {
+                return ioServiceBytesBuilder_.getMessageOrBuilderList();
+              } else {
+                return java.util.Collections.unmodifiableList(ioServiceBytes_);
+              }
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_service_bytes
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder addIoServiceBytesBuilder() {
+              return getIoServiceBytesFieldBuilder().addBuilder(
+                  org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.getDefaultInstance());
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_service_bytes
+             * </pre>
+             */
+            public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder addIoServiceBytesBuilder(
+                int index) {
+              return getIoServiceBytesFieldBuilder().addBuilder(
+                  index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.getDefaultInstance());
+            }
+            /**
+             * <code>repeated .mesos.v1.CgroupInfo.Blkio.Value io_service_bytes = 3;</code>
+             *
+             * <pre>
+             * blkio.throttle.io_service_bytes
+             * </pre>
+             */
+            public java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder> 
+                 getIoServiceBytesBuilderList() {
+              return getIoServiceBytesFieldBuilder().getBuilderList();
+            }
+            private com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder> 
+                getIoServiceBytesFieldBuilder() {
+              if (ioServiceBytesBuilder_ == null) {
+                ioServiceBytesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                    org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Value.Builder, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ValueOrBuilder>(
+                        ioServiceBytes_,
+                        ((bitField0_ & 0x00000004) == 0x00000004),
+                        getParentForChildren(),
+                        isClean());
+                ioServiceBytes_ = null;
+              }
+              return ioServiceBytesBuilder_;
+            }
+
+            // @@protoc_insertion_point(builder_scope:mesos.v1.CgroupInfo.Blkio.Throttling.Statistics)
+          }
+
+          static {
+            defaultInstance = new Statistics(true);
+            defaultInstance.initFields();
+          }
+
+          // @@protoc_insertion_point(class_scope:mesos.v1.CgroupInfo.Blkio.Throttling.Statistics)
+        }
+
+        private void initFields() {
+        }
+        private byte memoizedIsInitialized = -1;
+        public final boolean isInitialized() {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized != -1) return isInitialized == 1;
+
+          memoizedIsInitialized = 1;
+          return true;
+        }
+
+        public void writeTo(com.google.protobuf.CodedOutputStream output)
+                            throws java.io.IOException {
+          getSerializedSize();
+          getUnknownFields().writeTo(output);
+        }
+
+        private int memoizedSerializedSize = -1;
+        public int getSerializedSize() {
+          int size = memoizedSerializedSize;
+          if (size != -1) return size;
+
+          size = 0;
+          size += getUnknownFields().getSerializedSize();
+          memoizedSerializedSize = size;
+          return size;
+        }
+
+        private static final long serialVersionUID = 0L;
+        @java.lang.Override
+        protected java.lang.Object writeReplace()
+            throws java.io.ObjectStreamException {
+          return super.writeReplace();
+        }
+
+        public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling parseFrom(
+            com.google.protobuf.ByteString data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling parseFrom(
+            com.google.protobuf.ByteString data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling parseFrom(byte[] data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling parseFrom(
+            byte[] data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling parseFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling parseFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling parseDelimitedFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling parseDelimitedFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling parseFrom(
+            com.google.protobuf.CodedInputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling parseFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+
+        public static Builder newBuilder() { return Builder.create(); }
+        public Builder newBuilderForType() { return newBuilder(); }
+        public static Builder newBuilder(org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling prototype) {
+          return newBuilder().mergeFrom(prototype);
+        }
+        public Builder toBuilder() { return newBuilder(this); }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          Builder builder = new Builder(parent);
+          return builder;
+        }
+        /**
+         * Protobuf type {@code mesos.v1.CgroupInfo.Blkio.Throttling}
+         */
+        public static final class Builder extends
+            com.google.protobuf.GeneratedMessage.Builder<Builder>
+           implements org.apache.mesos.v1.Protos.CgroupInfo.Blkio.ThrottlingOrBuilder {
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_Blkio_Throttling_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_Blkio_Throttling_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.class, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Builder.class);
+          }
+
+          // Construct using org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.newBuilder()
+          private Builder() {
+            maybeForceBuilderInitialization();
+          }
+
+          private Builder(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            super(parent);
+            maybeForceBuilderInitialization();
+          }
+          private void maybeForceBuilderInitialization() {
+            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            }
+          }
+          private static Builder create() {
+            return new Builder();
+          }
+
+          public Builder clear() {
+            super.clear();
+            return this;
+          }
+
+          public Builder clone() {
+            return create().mergeFrom(buildPartial());
+          }
+
+          public com.google.protobuf.Descriptors.Descriptor
+              getDescriptorForType() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_Blkio_Throttling_descriptor;
+          }
+
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling getDefaultInstanceForType() {
+            return org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.getDefaultInstance();
+          }
+
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling build() {
+            org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling result = buildPartial();
+            if (!result.isInitialized()) {
+              throw newUninitializedMessageException(result);
+            }
+            return result;
+          }
+
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling buildPartial() {
+            org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling result = new org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling(this);
+            onBuilt();
+            return result;
+          }
+
+          public Builder mergeFrom(com.google.protobuf.Message other) {
+            if (other instanceof org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling) {
+              return mergeFrom((org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling)other);
+            } else {
+              super.mergeFrom(other);
+              return this;
+            }
+          }
+
+          public Builder mergeFrom(org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling other) {
+            if (other == org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.getDefaultInstance()) return this;
+            this.mergeUnknownFields(other.getUnknownFields());
+            return this;
+          }
+
+          public final boolean isInitialized() {
+            return true;
+          }
+
+          public Builder mergeFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling parsedMessage = null;
+            try {
+              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              parsedMessage = (org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling) e.getUnfinishedMessage();
+              throw e;
+            } finally {
+              if (parsedMessage != null) {
+                mergeFrom(parsedMessage);
+              }
+            }
+            return this;
+          }
+
+          // @@protoc_insertion_point(builder_scope:mesos.v1.CgroupInfo.Blkio.Throttling)
+        }
+
+        static {
+          defaultInstance = new Throttling(true);
+          defaultInstance.initFields();
+        }
+
+        // @@protoc_insertion_point(class_scope:mesos.v1.CgroupInfo.Blkio.Throttling)
+      }
+
+      public interface StatisticsOrBuilder
+          extends com.google.protobuf.MessageOrBuilder {
+
+        // repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;
+        /**
+         * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+         */
+        java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics> 
+            getCfqList();
+        /**
+         * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+         */
+        org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics getCfq(int index);
+        /**
+         * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+         */
+        int getCfqCount();
+        /**
+         * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+         */
+        java.util.List<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.StatisticsOrBuilder> 
+            getCfqOrBuilderList();
+        /**
+         * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+         */
+        org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.StatisticsOrBuilder getCfqOrBuilder(
+            int index);
+
+        // repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;
+        /**
+         * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+         */
+        java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics> 
+            getCfqRecursiveList();
+        /**
+         * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+         */
+        org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics getCfqRecursive(int index);
+        /**
+         * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+         */
+        int getCfqRecursiveCount();
+        /**
+         * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+         */
+        java.util.List<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.StatisticsOrBuilder> 
+            getCfqRecursiveOrBuilderList();
+        /**
+         * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+         */
+        org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.StatisticsOrBuilder getCfqRecursiveOrBuilder(
+            int index);
+
+        // repeated .mesos.v1.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;
+        /**
+         * <code>repeated .mesos.v1.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+         */
+        java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics> 
+            getThrottlingList();
+        /**
+         * <code>repeated .mesos.v1.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+         */
+        org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics getThrottling(int index);
+        /**
+         * <code>repeated .mesos.v1.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+         */
+        int getThrottlingCount();
+        /**
+         * <code>repeated .mesos.v1.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+         */
+        java.util.List<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.StatisticsOrBuilder> 
+            getThrottlingOrBuilderList();
+        /**
+         * <code>repeated .mesos.v1.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+         */
+        org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.StatisticsOrBuilder getThrottlingOrBuilder(
+            int index);
+      }
+      /**
+       * Protobuf type {@code mesos.v1.CgroupInfo.Blkio.Statistics}
+       */
+      public static final class Statistics extends
+          com.google.protobuf.GeneratedMessage
+          implements StatisticsOrBuilder {
+        // Use Statistics.newBuilder() to construct.
+        private Statistics(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+          super(builder);
+          this.unknownFields = builder.getUnknownFields();
+        }
+        private Statistics(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+        private static final Statistics defaultInstance;
+        public static Statistics getDefaultInstance() {
+          return defaultInstance;
+        }
+
+        public Statistics getDefaultInstanceForType() {
+          return defaultInstance;
+        }
+
+        private final com.google.protobuf.UnknownFieldSet unknownFields;
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet
+            getUnknownFields() {
+          return this.unknownFields;
+        }
+        private Statistics(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          initFields();
+          int mutable_bitField0_ = 0;
+          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+              com.google.protobuf.UnknownFieldSet.newBuilder();
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(input, unknownFields,
+                                         extensionRegistry, tag)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 10: {
+                  if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                    cfq_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics>();
+                    mutable_bitField0_ |= 0x00000001;
+                  }
+                  cfq_.add(input.readMessage(org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics.PARSER, extensionRegistry));
+                  break;
+                }
+                case 18: {
+                  if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+                    cfqRecursive_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics>();
+                    mutable_bitField0_ |= 0x00000002;
+                  }
+                  cfqRecursive_.add(input.readMessage(org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics.PARSER, extensionRegistry));
+                  break;
+                }
+                case 26: {
+                  if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
+                    throttling_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics>();
+                    mutable_bitField0_ |= 0x00000004;
+                  }
+                  throttling_.add(input.readMessage(org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics.PARSER, extensionRegistry));
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw e.setUnfinishedMessage(this);
+          } catch (java.io.IOException e) {
+            throw new com.google.protobuf.InvalidProtocolBufferException(
+                e.getMessage()).setUnfinishedMessage(this);
+          } finally {
+            if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+              cfq_ = java.util.Collections.unmodifiableList(cfq_);
+            }
+            if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+              cfqRecursive_ = java.util.Collections.unmodifiableList(cfqRecursive_);
+            }
+            if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
+              throttling_ = java.util.Collections.unmodifiableList(throttling_);
+            }
+            this.unknownFields = unknownFields.build();
+            makeExtensionsImmutable();
+          }
+        }
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_Blkio_Statistics_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_Blkio_Statistics_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics.class, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics.Builder.class);
+        }
+
+        public static com.google.protobuf.Parser<Statistics> PARSER =
+            new com.google.protobuf.AbstractParser<Statistics>() {
+          public Statistics parsePartialFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return new Statistics(input, extensionRegistry);
+          }
+        };
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<Statistics> getParserForType() {
+          return PARSER;
+        }
+
+        // repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;
+        public static final int CFQ_FIELD_NUMBER = 1;
+        private java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics> cfq_;
+        /**
+         * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics> getCfqList() {
+          return cfq_;
+        }
+        /**
+         * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.StatisticsOrBuilder> 
+            getCfqOrBuilderList() {
+          return cfq_;
+        }
+        /**
+         * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+         */
+        public int getCfqCount() {
+          return cfq_.size();
+        }
+        /**
+         * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics getCfq(int index) {
+          return cfq_.get(index);
+        }
+        /**
+         * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.StatisticsOrBuilder getCfqOrBuilder(
+            int index) {
+          return cfq_.get(index);
+        }
+
+        // repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;
+        public static final int CFQ_RECURSIVE_FIELD_NUMBER = 2;
+        private java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics> cfqRecursive_;
+        /**
+         * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+         */
+        public java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics> getCfqRecursiveList() {
+          return cfqRecursive_;
+        }
+        /**
+         * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.StatisticsOrBuilder> 
+            getCfqRecursiveOrBuilderList() {
+          return cfqRecursive_;
+        }
+        /**
+         * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+         */
+        public int getCfqRecursiveCount() {
+          return cfqRecursive_.size();
+        }
+        /**
+         * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics getCfqRecursive(int index) {
+          return cfqRecursive_.get(index);
+        }
+        /**
+         * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.StatisticsOrBuilder getCfqRecursiveOrBuilder(
+            int index) {
+          return cfqRecursive_.get(index);
+        }
+
+        // repeated .mesos.v1.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;
+        public static final int THROTTLING_FIELD_NUMBER = 3;
+        private java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics> throttling_;
+        /**
+         * <code>repeated .mesos.v1.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+         */
+        public java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics> getThrottlingList() {
+          return throttling_;
+        }
+        /**
+         * <code>repeated .mesos.v1.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.StatisticsOrBuilder> 
+            getThrottlingOrBuilderList() {
+          return throttling_;
+        }
+        /**
+         * <code>repeated .mesos.v1.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+         */
+        public int getThrottlingCount() {
+          return throttling_.size();
+        }
+        /**
+         * <code>repeated .mesos.v1.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+         */
+        public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics getThrottling(int index) {
+          return throttling_.get(index);
+        }
+        /**
+         * <code>repeated .mesos.v1.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+         */
+        public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.StatisticsOrBuilder getThrottlingOrBuilder(
+            int index) {
+          return throttling_.get(index);
+        }
+
+        private void initFields() {
+          cfq_ = java.util.Collections.emptyList();
+          cfqRecursive_ = java.util.Collections.emptyList();
+          throttling_ = java.util.Collections.emptyList();
+        }
+        private byte memoizedIsInitialized = -1;
+        public final boolean isInitialized() {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized != -1) return isInitialized == 1;
+
+          for (int i = 0; i < getCfqCount(); i++) {
+            if (!getCfq(i).isInitialized()) {
+              memoizedIsInitialized = 0;
+              return false;
+            }
+          }
+          for (int i = 0; i < getCfqRecursiveCount(); i++) {
+            if (!getCfqRecursive(i).isInitialized()) {
+              memoizedIsInitialized = 0;
+              return false;
+            }
+          }
+          for (int i = 0; i < getThrottlingCount(); i++) {
+            if (!getThrottling(i).isInitialized()) {
+              memoizedIsInitialized = 0;
+              return false;
+            }
+          }
+          memoizedIsInitialized = 1;
+          return true;
+        }
+
+        public void writeTo(com.google.protobuf.CodedOutputStream output)
+                            throws java.io.IOException {
+          getSerializedSize();
+          for (int i = 0; i < cfq_.size(); i++) {
+            output.writeMessage(1, cfq_.get(i));
+          }
+          for (int i = 0; i < cfqRecursive_.size(); i++) {
+            output.writeMessage(2, cfqRecursive_.get(i));
+          }
+          for (int i = 0; i < throttling_.size(); i++) {
+            output.writeMessage(3, throttling_.get(i));
+          }
+          getUnknownFields().writeTo(output);
+        }
+
+        private int memoizedSerializedSize = -1;
+        public int getSerializedSize() {
+          int size = memoizedSerializedSize;
+          if (size != -1) return size;
+
+          size = 0;
+          for (int i = 0; i < cfq_.size(); i++) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeMessageSize(1, cfq_.get(i));
+          }
+          for (int i = 0; i < cfqRecursive_.size(); i++) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeMessageSize(2, cfqRecursive_.get(i));
+          }
+          for (int i = 0; i < throttling_.size(); i++) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeMessageSize(3, throttling_.get(i));
+          }
+          size += getUnknownFields().getSerializedSize();
+          memoizedSerializedSize = size;
+          return size;
+        }
+
+        private static final long serialVersionUID = 0L;
+        @java.lang.Override
+        protected java.lang.Object writeReplace()
+            throws java.io.ObjectStreamException {
+          return super.writeReplace();
+        }
+
+        public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics parseFrom(
+            com.google.protobuf.ByteString data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics parseFrom(
+            com.google.protobuf.ByteString data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics parseFrom(byte[] data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics parseFrom(
+            byte[] data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics parseFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics parseFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics parseDelimitedFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics parseDelimitedFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics parseFrom(
+            com.google.protobuf.CodedInputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics parseFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+
+        public static Builder newBuilder() { return Builder.create(); }
+        public Builder newBuilderForType() { return newBuilder(); }
+        public static Builder newBuilder(org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics prototype) {
+          return newBuilder().mergeFrom(prototype);
+        }
+        public Builder toBuilder() { return newBuilder(this); }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          Builder builder = new Builder(parent);
+          return builder;
+        }
+        /**
+         * Protobuf type {@code mesos.v1.CgroupInfo.Blkio.Statistics}
+         */
+        public static final class Builder extends
+            com.google.protobuf.GeneratedMessage.Builder<Builder>
+           implements org.apache.mesos.v1.Protos.CgroupInfo.Blkio.StatisticsOrBuilder {
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_Blkio_Statistics_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_Blkio_Statistics_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics.class, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics.Builder.class);
+          }
+
+          // Construct using org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics.newBuilder()
+          private Builder() {
+            maybeForceBuilderInitialization();
+          }
+
+          private Builder(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            super(parent);
+            maybeForceBuilderInitialization();
+          }
+          private void maybeForceBuilderInitialization() {
+            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+              getCfqFieldBuilder();
+              getCfqRecursiveFieldBuilder();
+              getThrottlingFieldBuilder();
+            }
+          }
+          private static Builder create() {
+            return new Builder();
+          }
+
+          public Builder clear() {
+            super.clear();
+            if (cfqBuilder_ == null) {
+              cfq_ = java.util.Collections.emptyList();
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              cfqBuilder_.clear();
+            }
+            if (cfqRecursiveBuilder_ == null) {
+              cfqRecursive_ = java.util.Collections.emptyList();
+              bitField0_ = (bitField0_ & ~0x00000002);
+            } else {
+              cfqRecursiveBuilder_.clear();
+            }
+            if (throttlingBuilder_ == null) {
+              throttling_ = java.util.Collections.emptyList();
+              bitField0_ = (bitField0_ & ~0x00000004);
+            } else {
+              throttlingBuilder_.clear();
+            }
+            return this;
+          }
+
+          public Builder clone() {
+            return create().mergeFrom(buildPartial());
+          }
+
+          public com.google.protobuf.Descriptors.Descriptor
+              getDescriptorForType() {
+            return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_Blkio_Statistics_descriptor;
+          }
+
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics getDefaultInstanceForType() {
+            return org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics.getDefaultInstance();
+          }
+
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics build() {
+            org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics result = buildPartial();
+            if (!result.isInitialized()) {
+              throw newUninitializedMessageException(result);
+            }
+            return result;
+          }
+
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics buildPartial() {
+            org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics result = new org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics(this);
+            int from_bitField0_ = bitField0_;
+            if (cfqBuilder_ == null) {
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                cfq_ = java.util.Collections.unmodifiableList(cfq_);
+                bitField0_ = (bitField0_ & ~0x00000001);
+              }
+              result.cfq_ = cfq_;
+            } else {
+              result.cfq_ = cfqBuilder_.build();
+            }
+            if (cfqRecursiveBuilder_ == null) {
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                cfqRecursive_ = java.util.Collections.unmodifiableList(cfqRecursive_);
+                bitField0_ = (bitField0_ & ~0x00000002);
+              }
+              result.cfqRecursive_ = cfqRecursive_;
+            } else {
+              result.cfqRecursive_ = cfqRecursiveBuilder_.build();
+            }
+            if (throttlingBuilder_ == null) {
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                throttling_ = java.util.Collections.unmodifiableList(throttling_);
+                bitField0_ = (bitField0_ & ~0x00000004);
+              }
+              result.throttling_ = throttling_;
+            } else {
+              result.throttling_ = throttlingBuilder_.build();
+            }
+            onBuilt();
+            return result;
+          }
+
+          public Builder mergeFrom(com.google.protobuf.Message other) {
+            if (other instanceof org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics) {
+              return mergeFrom((org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics)other);
+            } else {
+              super.mergeFrom(other);
+              return this;
+            }
+          }
+
+          public Builder mergeFrom(org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics other) {
+            if (other == org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics.getDefaultInstance()) return this;
+            if (cfqBuilder_ == null) {
+              if (!other.cfq_.isEmpty()) {
+                if (cfq_.isEmpty()) {
+                  cfq_ = other.cfq_;
+                  bitField0_ = (bitField0_ & ~0x00000001);
+                } else {
+                  ensureCfqIsMutable();
+                  cfq_.addAll(other.cfq_);
+                }
+                onChanged();
+              }
+            } else {
+              if (!other.cfq_.isEmpty()) {
+                if (cfqBuilder_.isEmpty()) {
+                  cfqBuilder_.dispose();
+                  cfqBuilder_ = null;
+                  cfq_ = other.cfq_;
+                  bitField0_ = (bitField0_ & ~0x00000001);
+                  cfqBuilder_ = 
+                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                       getCfqFieldBuilder() : null;
+                } else {
+                  cfqBuilder_.addAllMessages(other.cfq_);
+                }
+              }
+            }
+            if (cfqRecursiveBuilder_ == null) {
+              if (!other.cfqRecursive_.isEmpty()) {
+                if (cfqRecursive_.isEmpty()) {
+                  cfqRecursive_ = other.cfqRecursive_;
+                  bitField0_ = (bitField0_ & ~0x00000002);
+                } else {
+                  ensureCfqRecursiveIsMutable();
+                  cfqRecursive_.addAll(other.cfqRecursive_);
+                }
+                onChanged();
+              }
+            } else {
+              if (!other.cfqRecursive_.isEmpty()) {
+                if (cfqRecursiveBuilder_.isEmpty()) {
+                  cfqRecursiveBuilder_.dispose();
+                  cfqRecursiveBuilder_ = null;
+                  cfqRecursive_ = other.cfqRecursive_;
+                  bitField0_ = (bitField0_ & ~0x00000002);
+                  cfqRecursiveBuilder_ = 
+                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                       getCfqRecursiveFieldBuilder() : null;
+                } else {
+                  cfqRecursiveBuilder_.addAllMessages(other.cfqRecursive_);
+                }
+              }
+            }
+            if (throttlingBuilder_ == null) {
+              if (!other.throttling_.isEmpty()) {
+                if (throttling_.isEmpty()) {
+                  throttling_ = other.throttling_;
+                  bitField0_ = (bitField0_ & ~0x00000004);
+                } else {
+                  ensureThrottlingIsMutable();
+                  throttling_.addAll(other.throttling_);
+                }
+                onChanged();
+              }
+            } else {
+              if (!other.throttling_.isEmpty()) {
+                if (throttlingBuilder_.isEmpty()) {
+                  throttlingBuilder_.dispose();
+                  throttlingBuilder_ = null;
+                  throttling_ = other.throttling_;
+                  bitField0_ = (bitField0_ & ~0x00000004);
+                  throttlingBuilder_ = 
+                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                       getThrottlingFieldBuilder() : null;
+                } else {
+                  throttlingBuilder_.addAllMessages(other.throttling_);
+                }
+              }
+            }
+            this.mergeUnknownFields(other.getUnknownFields());
+            return this;
+          }
+
+          public final boolean isInitialized() {
+            for (int i = 0; i < getCfqCount(); i++) {
+              if (!getCfq(i).isInitialized()) {
+                
+                return false;
+              }
+            }
+            for (int i = 0; i < getCfqRecursiveCount(); i++) {
+              if (!getCfqRecursive(i).isInitialized()) {
+                
+                return false;
+              }
+            }
+            for (int i = 0; i < getThrottlingCount(); i++) {
+              if (!getThrottling(i).isInitialized()) {
+                
+                return false;
+              }
+            }
+            return true;
+          }
+
+          public Builder mergeFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics parsedMessage = null;
+            try {
+              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              parsedMessage = (org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Statistics) e.getUnfinishedMessage();
+              throw e;
+            } finally {
+              if (parsedMessage != null) {
+                mergeFrom(parsedMessage);
+              }
+            }
+            return this;
+          }
+          private int bitField0_;
+
+          // repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;
+          private java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics> cfq_ =
+            java.util.Collections.emptyList();
+          private void ensureCfqIsMutable() {
+            if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+              cfq_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics>(cfq_);
+              bitField0_ |= 0x00000001;
+             }
+          }
+
+          private com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.StatisticsOrBuilder> cfqBuilder_;
+
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+           */
+          public java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics> getCfqList() {
+            if (cfqBuilder_ == null) {
+              return java.util.Collections.unmodifiableList(cfq_);
+            } else {
+              return cfqBuilder_.getMessageList();
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+           */
+          public int getCfqCount() {
+            if (cfqBuilder_ == null) {
+              return cfq_.size();
+            } else {
+              return cfqBuilder_.getCount();
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+           */
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics getCfq(int index) {
+            if (cfqBuilder_ == null) {
+              return cfq_.get(index);
+            } else {
+              return cfqBuilder_.getMessage(index);
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+           */
+          public Builder setCfq(
+              int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics value) {
+            if (cfqBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureCfqIsMutable();
+              cfq_.set(index, value);
+              onChanged();
+            } else {
+              cfqBuilder_.setMessage(index, value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+           */
+          public Builder setCfq(
+              int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder builderForValue) {
+            if (cfqBuilder_ == null) {
+              ensureCfqIsMutable();
+              cfq_.set(index, builderForValue.build());
+              onChanged();
+            } else {
+              cfqBuilder_.setMessage(index, builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+           */
+          public Builder addCfq(org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics value) {
+            if (cfqBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureCfqIsMutable();
+              cfq_.add(value);
+              onChanged();
+            } else {
+              cfqBuilder_.addMessage(value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+           */
+          public Builder addCfq(
+              int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics value) {
+            if (cfqBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureCfqIsMutable();
+              cfq_.add(index, value);
+              onChanged();
+            } else {
+              cfqBuilder_.addMessage(index, value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+           */
+          public Builder addCfq(
+              org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder builderForValue) {
+            if (cfqBuilder_ == null) {
+              ensureCfqIsMutable();
+              cfq_.add(builderForValue.build());
+              onChanged();
+            } else {
+              cfqBuilder_.addMessage(builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+           */
+          public Builder addCfq(
+              int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder builderForValue) {
+            if (cfqBuilder_ == null) {
+              ensureCfqIsMutable();
+              cfq_.add(index, builderForValue.build());
+              onChanged();
+            } else {
+              cfqBuilder_.addMessage(index, builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+           */
+          public Builder addAllCfq(
+              java.lang.Iterable<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics> values) {
+            if (cfqBuilder_ == null) {
+              ensureCfqIsMutable();
+              super.addAll(values, cfq_);
+              onChanged();
+            } else {
+              cfqBuilder_.addAllMessages(values);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+           */
+          public Builder clearCfq() {
+            if (cfqBuilder_ == null) {
+              cfq_ = java.util.Collections.emptyList();
+              bitField0_ = (bitField0_ & ~0x00000001);
+              onChanged();
+            } else {
+              cfqBuilder_.clear();
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+           */
+          public Builder removeCfq(int index) {
+            if (cfqBuilder_ == null) {
+              ensureCfqIsMutable();
+              cfq_.remove(index);
+              onChanged();
+            } else {
+              cfqBuilder_.remove(index);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+           */
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder getCfqBuilder(
+              int index) {
+            return getCfqFieldBuilder().getBuilder(index);
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+           */
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.StatisticsOrBuilder getCfqOrBuilder(
+              int index) {
+            if (cfqBuilder_ == null) {
+              return cfq_.get(index);  } else {
+              return cfqBuilder_.getMessageOrBuilder(index);
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+           */
+          public java.util.List<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.StatisticsOrBuilder> 
+               getCfqOrBuilderList() {
+            if (cfqBuilder_ != null) {
+              return cfqBuilder_.getMessageOrBuilderList();
+            } else {
+              return java.util.Collections.unmodifiableList(cfq_);
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+           */
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder addCfqBuilder() {
+            return getCfqFieldBuilder().addBuilder(
+                org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics.getDefaultInstance());
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+           */
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder addCfqBuilder(
+              int index) {
+            return getCfqFieldBuilder().addBuilder(
+                index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics.getDefaultInstance());
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq = 1;</code>
+           */
+          public java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder> 
+               getCfqBuilderList() {
+            return getCfqFieldBuilder().getBuilderList();
+          }
+          private com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.StatisticsOrBuilder> 
+              getCfqFieldBuilder() {
+            if (cfqBuilder_ == null) {
+              cfqBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                  org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.StatisticsOrBuilder>(
+                      cfq_,
+                      ((bitField0_ & 0x00000001) == 0x00000001),
+                      getParentForChildren(),
+                      isClean());
+              cfq_ = null;
+            }
+            return cfqBuilder_;
+          }
+
+          // repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;
+          private java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics> cfqRecursive_ =
+            java.util.Collections.emptyList();
+          private void ensureCfqRecursiveIsMutable() {
+            if (!((bitField0_ & 0x00000002) == 0x00000002)) {
+              cfqRecursive_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics>(cfqRecursive_);
+              bitField0_ |= 0x00000002;
+             }
+          }
+
+          private com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.StatisticsOrBuilder> cfqRecursiveBuilder_;
+
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+           */
+          public java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics> getCfqRecursiveList() {
+            if (cfqRecursiveBuilder_ == null) {
+              return java.util.Collections.unmodifiableList(cfqRecursive_);
+            } else {
+              return cfqRecursiveBuilder_.getMessageList();
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+           */
+          public int getCfqRecursiveCount() {
+            if (cfqRecursiveBuilder_ == null) {
+              return cfqRecursive_.size();
+            } else {
+              return cfqRecursiveBuilder_.getCount();
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+           */
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics getCfqRecursive(int index) {
+            if (cfqRecursiveBuilder_ == null) {
+              return cfqRecursive_.get(index);
+            } else {
+              return cfqRecursiveBuilder_.getMessage(index);
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+           */
+          public Builder setCfqRecursive(
+              int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics value) {
+            if (cfqRecursiveBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureCfqRecursiveIsMutable();
+              cfqRecursive_.set(index, value);
+              onChanged();
+            } else {
+              cfqRecursiveBuilder_.setMessage(index, value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+           */
+          public Builder setCfqRecursive(
+              int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder builderForValue) {
+            if (cfqRecursiveBuilder_ == null) {
+              ensureCfqRecursiveIsMutable();
+              cfqRecursive_.set(index, builderForValue.build());
+              onChanged();
+            } else {
+              cfqRecursiveBuilder_.setMessage(index, builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+           */
+          public Builder addCfqRecursive(org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics value) {
+            if (cfqRecursiveBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureCfqRecursiveIsMutable();
+              cfqRecursive_.add(value);
+              onChanged();
+            } else {
+              cfqRecursiveBuilder_.addMessage(value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+           */
+          public Builder addCfqRecursive(
+              int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics value) {
+            if (cfqRecursiveBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureCfqRecursiveIsMutable();
+              cfqRecursive_.add(index, value);
+              onChanged();
+            } else {
+              cfqRecursiveBuilder_.addMessage(index, value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+           */
+          public Builder addCfqRecursive(
+              org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder builderForValue) {
+            if (cfqRecursiveBuilder_ == null) {
+              ensureCfqRecursiveIsMutable();
+              cfqRecursive_.add(builderForValue.build());
+              onChanged();
+            } else {
+              cfqRecursiveBuilder_.addMessage(builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+           */
+          public Builder addCfqRecursive(
+              int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder builderForValue) {
+            if (cfqRecursiveBuilder_ == null) {
+              ensureCfqRecursiveIsMutable();
+              cfqRecursive_.add(index, builderForValue.build());
+              onChanged();
+            } else {
+              cfqRecursiveBuilder_.addMessage(index, builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+           */
+          public Builder addAllCfqRecursive(
+              java.lang.Iterable<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics> values) {
+            if (cfqRecursiveBuilder_ == null) {
+              ensureCfqRecursiveIsMutable();
+              super.addAll(values, cfqRecursive_);
+              onChanged();
+            } else {
+              cfqRecursiveBuilder_.addAllMessages(values);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+           */
+          public Builder clearCfqRecursive() {
+            if (cfqRecursiveBuilder_ == null) {
+              cfqRecursive_ = java.util.Collections.emptyList();
+              bitField0_ = (bitField0_ & ~0x00000002);
+              onChanged();
+            } else {
+              cfqRecursiveBuilder_.clear();
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+           */
+          public Builder removeCfqRecursive(int index) {
+            if (cfqRecursiveBuilder_ == null) {
+              ensureCfqRecursiveIsMutable();
+              cfqRecursive_.remove(index);
+              onChanged();
+            } else {
+              cfqRecursiveBuilder_.remove(index);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+           */
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder getCfqRecursiveBuilder(
+              int index) {
+            return getCfqRecursiveFieldBuilder().getBuilder(index);
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+           */
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.StatisticsOrBuilder getCfqRecursiveOrBuilder(
+              int index) {
+            if (cfqRecursiveBuilder_ == null) {
+              return cfqRecursive_.get(index);  } else {
+              return cfqRecursiveBuilder_.getMessageOrBuilder(index);
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+           */
+          public java.util.List<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.StatisticsOrBuilder> 
+               getCfqRecursiveOrBuilderList() {
+            if (cfqRecursiveBuilder_ != null) {
+              return cfqRecursiveBuilder_.getMessageOrBuilderList();
+            } else {
+              return java.util.Collections.unmodifiableList(cfqRecursive_);
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+           */
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder addCfqRecursiveBuilder() {
+            return getCfqRecursiveFieldBuilder().addBuilder(
+                org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics.getDefaultInstance());
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+           */
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder addCfqRecursiveBuilder(
+              int index) {
+            return getCfqRecursiveFieldBuilder().addBuilder(
+                index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics.getDefaultInstance());
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.CFQ.Statistics cfq_recursive = 2;</code>
+           */
+          public java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder> 
+               getCfqRecursiveBuilderList() {
+            return getCfqRecursiveFieldBuilder().getBuilderList();
+          }
+          private com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.StatisticsOrBuilder> 
+              getCfqRecursiveFieldBuilder() {
+            if (cfqRecursiveBuilder_ == null) {
+              cfqRecursiveBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                  org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.Statistics.Builder, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.CFQ.StatisticsOrBuilder>(
+                      cfqRecursive_,
+                      ((bitField0_ & 0x00000002) == 0x00000002),
+                      getParentForChildren(),
+                      isClean());
+              cfqRecursive_ = null;
+            }
+            return cfqRecursiveBuilder_;
+          }
+
+          // repeated .mesos.v1.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;
+          private java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics> throttling_ =
+            java.util.Collections.emptyList();
+          private void ensureThrottlingIsMutable() {
+            if (!((bitField0_ & 0x00000004) == 0x00000004)) {
+              throttling_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics>(throttling_);
+              bitField0_ |= 0x00000004;
+             }
+          }
+
+          private com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics.Builder, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.StatisticsOrBuilder> throttlingBuilder_;
+
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+           */
+          public java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics> getThrottlingList() {
+            if (throttlingBuilder_ == null) {
+              return java.util.Collections.unmodifiableList(throttling_);
+            } else {
+              return throttlingBuilder_.getMessageList();
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+           */
+          public int getThrottlingCount() {
+            if (throttlingBuilder_ == null) {
+              return throttling_.size();
+            } else {
+              return throttlingBuilder_.getCount();
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+           */
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics getThrottling(int index) {
+            if (throttlingBuilder_ == null) {
+              return throttling_.get(index);
+            } else {
+              return throttlingBuilder_.getMessage(index);
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+           */
+          public Builder setThrottling(
+              int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics value) {
+            if (throttlingBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureThrottlingIsMutable();
+              throttling_.set(index, value);
+              onChanged();
+            } else {
+              throttlingBuilder_.setMessage(index, value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+           */
+          public Builder setThrottling(
+              int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics.Builder builderForValue) {
+            if (throttlingBuilder_ == null) {
+              ensureThrottlingIsMutable();
+              throttling_.set(index, builderForValue.build());
+              onChanged();
+            } else {
+              throttlingBuilder_.setMessage(index, builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+           */
+          public Builder addThrottling(org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics value) {
+            if (throttlingBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureThrottlingIsMutable();
+              throttling_.add(value);
+              onChanged();
+            } else {
+              throttlingBuilder_.addMessage(value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+           */
+          public Builder addThrottling(
+              int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics value) {
+            if (throttlingBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              ensureThrottlingIsMutable();
+              throttling_.add(index, value);
+              onChanged();
+            } else {
+              throttlingBuilder_.addMessage(index, value);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+           */
+          public Builder addThrottling(
+              org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics.Builder builderForValue) {
+            if (throttlingBuilder_ == null) {
+              ensureThrottlingIsMutable();
+              throttling_.add(builderForValue.build());
+              onChanged();
+            } else {
+              throttlingBuilder_.addMessage(builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+           */
+          public Builder addThrottling(
+              int index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics.Builder builderForValue) {
+            if (throttlingBuilder_ == null) {
+              ensureThrottlingIsMutable();
+              throttling_.add(index, builderForValue.build());
+              onChanged();
+            } else {
+              throttlingBuilder_.addMessage(index, builderForValue.build());
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+           */
+          public Builder addAllThrottling(
+              java.lang.Iterable<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics> values) {
+            if (throttlingBuilder_ == null) {
+              ensureThrottlingIsMutable();
+              super.addAll(values, throttling_);
+              onChanged();
+            } else {
+              throttlingBuilder_.addAllMessages(values);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+           */
+          public Builder clearThrottling() {
+            if (throttlingBuilder_ == null) {
+              throttling_ = java.util.Collections.emptyList();
+              bitField0_ = (bitField0_ & ~0x00000004);
+              onChanged();
+            } else {
+              throttlingBuilder_.clear();
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+           */
+          public Builder removeThrottling(int index) {
+            if (throttlingBuilder_ == null) {
+              ensureThrottlingIsMutable();
+              throttling_.remove(index);
+              onChanged();
+            } else {
+              throttlingBuilder_.remove(index);
+            }
+            return this;
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+           */
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics.Builder getThrottlingBuilder(
+              int index) {
+            return getThrottlingFieldBuilder().getBuilder(index);
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+           */
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.StatisticsOrBuilder getThrottlingOrBuilder(
+              int index) {
+            if (throttlingBuilder_ == null) {
+              return throttling_.get(index);  } else {
+              return throttlingBuilder_.getMessageOrBuilder(index);
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+           */
+          public java.util.List<? extends org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.StatisticsOrBuilder> 
+               getThrottlingOrBuilderList() {
+            if (throttlingBuilder_ != null) {
+              return throttlingBuilder_.getMessageOrBuilderList();
+            } else {
+              return java.util.Collections.unmodifiableList(throttling_);
+            }
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+           */
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics.Builder addThrottlingBuilder() {
+            return getThrottlingFieldBuilder().addBuilder(
+                org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics.getDefaultInstance());
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+           */
+          public org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics.Builder addThrottlingBuilder(
+              int index) {
+            return getThrottlingFieldBuilder().addBuilder(
+                index, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics.getDefaultInstance());
+          }
+          /**
+           * <code>repeated .mesos.v1.CgroupInfo.Blkio.Throttling.Statistics throttling = 3;</code>
+           */
+          public java.util.List<org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics.Builder> 
+               getThrottlingBuilderList() {
+            return getThrottlingFieldBuilder().getBuilderList();
+          }
+          private com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics.Builder, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.StatisticsOrBuilder> 
+              getThrottlingFieldBuilder() {
+            if (throttlingBuilder_ == null) {
+              throttlingBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                  org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.Statistics.Builder, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Throttling.StatisticsOrBuilder>(
+                      throttling_,
+                      ((bitField0_ & 0x00000004) == 0x00000004),
+                      getParentForChildren(),
+                      isClean());
+              throttling_ = null;
+            }
+            return throttlingBuilder_;
+          }
+
+          // @@protoc_insertion_point(builder_scope:mesos.v1.CgroupInfo.Blkio.Statistics)
+        }
+
+        static {
+          defaultInstance = new Statistics(true);
+          defaultInstance.initFields();
+        }
+
+        // @@protoc_insertion_point(class_scope:mesos.v1.CgroupInfo.Blkio.Statistics)
+      }
+
+      private void initFields() {
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.CgroupInfo.Blkio parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.Protos.CgroupInfo.Blkio prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.CgroupInfo.Blkio}
+       *
+       * <pre>
+       * Configuration of a blkio cgroup subsystem.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.Protos.CgroupInfo.BlkioOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_Blkio_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_Blkio_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.CgroupInfo.Blkio.class, org.apache.mesos.v1.Protos.CgroupInfo.Blkio.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.Protos.CgroupInfo.Blkio.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_Blkio_descriptor;
+        }
+
+        public org.apache.mesos.v1.Protos.CgroupInfo.Blkio getDefaultInstanceForType() {
+          return org.apache.mesos.v1.Protos.CgroupInfo.Blkio.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.Protos.CgroupInfo.Blkio build() {
+          org.apache.mesos.v1.Protos.CgroupInfo.Blkio result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.Protos.CgroupInfo.Blkio buildPartial() {
+          org.apache.mesos.v1.Protos.CgroupInfo.Blkio result = new org.apache.mesos.v1.Protos.CgroupInfo.Blkio(this);
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.Protos.CgroupInfo.Blkio) {
+            return mergeFrom((org.apache.mesos.v1.Protos.CgroupInfo.Blkio)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.Protos.CgroupInfo.Blkio other) {
+          if (other == org.apache.mesos.v1.Protos.CgroupInfo.Blkio.getDefaultInstance()) return this;
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.Protos.CgroupInfo.Blkio parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.Protos.CgroupInfo.Blkio) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.CgroupInfo.Blkio)
+      }
+
+      static {
+        defaultInstance = new Blkio(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.CgroupInfo.Blkio)
+    }
+
+    public interface NetClsOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // optional uint32 classid = 1;
+      /**
+       * <code>optional uint32 classid = 1;</code>
+       *
+       * <pre>
+       * The 32-bit classid consists of two parts, a 16 bit major handle
+       * and a 16-bit minor handle. The major and minor handle are
+       * represented using the format 0xAAAABBBB, where 0xAAAA is the
+       * 16-bit major handle and 0xBBBB is the 16-bit minor handle.
+       * </pre>
+       */
+      boolean hasClassid();
+      /**
+       * <code>optional uint32 classid = 1;</code>
+       *
+       * <pre>
+       * The 32-bit classid consists of two parts, a 16 bit major handle
+       * and a 16-bit minor handle. The major and minor handle are
+       * represented using the format 0xAAAABBBB, where 0xAAAA is the
+       * 16-bit major handle and 0xBBBB is the 16-bit minor handle.
+       * </pre>
+       */
+      int getClassid();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.CgroupInfo.NetCls}
+     *
+     * <pre>
+     * Configuration of a net_cls cgroup subsystem.
+     * </pre>
+     */
+    public static final class NetCls extends
+        com.google.protobuf.GeneratedMessage
+        implements NetClsOrBuilder {
+      // Use NetCls.newBuilder() to construct.
+      private NetCls(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private NetCls(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final NetCls defaultInstance;
+      public static NetCls getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public NetCls getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private NetCls(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 8: {
+                bitField0_ |= 0x00000001;
+                classid_ = input.readUInt32();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_NetCls_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_NetCls_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.CgroupInfo.NetCls.class, org.apache.mesos.v1.Protos.CgroupInfo.NetCls.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<NetCls> PARSER =
+          new com.google.protobuf.AbstractParser<NetCls>() {
+        public NetCls parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new NetCls(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<NetCls> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // optional uint32 classid = 1;
+      public static final int CLASSID_FIELD_NUMBER = 1;
+      private int classid_;
+      /**
+       * <code>optional uint32 classid = 1;</code>
+       *
+       * <pre>
+       * The 32-bit classid consists of two parts, a 16 bit major handle
+       * and a 16-bit minor handle. The major and minor handle are
+       * represented using the format 0xAAAABBBB, where 0xAAAA is the
+       * 16-bit major handle and 0xBBBB is the 16-bit minor handle.
+       * </pre>
+       */
+      public boolean hasClassid() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional uint32 classid = 1;</code>
+       *
+       * <pre>
+       * The 32-bit classid consists of two parts, a 16 bit major handle
+       * and a 16-bit minor handle. The major and minor handle are
+       * represented using the format 0xAAAABBBB, where 0xAAAA is the
+       * 16-bit major handle and 0xBBBB is the 16-bit minor handle.
+       * </pre>
+       */
+      public int getClassid() {
+        return classid_;
+      }
+
+      private void initFields() {
+        classid_ = 0;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeUInt32(1, classid_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeUInt32Size(1, classid_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.Protos.CgroupInfo.NetCls parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.CgroupInfo.NetCls parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.CgroupInfo.NetCls parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.CgroupInfo.NetCls parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.CgroupInfo.NetCls parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.CgroupInfo.NetCls parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.CgroupInfo.NetCls parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.CgroupInfo.NetCls parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.CgroupInfo.NetCls parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.CgroupInfo.NetCls parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.Protos.CgroupInfo.NetCls prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.CgroupInfo.NetCls}
+       *
+       * <pre>
+       * Configuration of a net_cls cgroup subsystem.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.Protos.CgroupInfo.NetClsOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_NetCls_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_NetCls_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.CgroupInfo.NetCls.class, org.apache.mesos.v1.Protos.CgroupInfo.NetCls.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.Protos.CgroupInfo.NetCls.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          classid_ = 0;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_NetCls_descriptor;
+        }
+
+        public org.apache.mesos.v1.Protos.CgroupInfo.NetCls getDefaultInstanceForType() {
+          return org.apache.mesos.v1.Protos.CgroupInfo.NetCls.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.Protos.CgroupInfo.NetCls build() {
+          org.apache.mesos.v1.Protos.CgroupInfo.NetCls result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.Protos.CgroupInfo.NetCls buildPartial() {
+          org.apache.mesos.v1.Protos.CgroupInfo.NetCls result = new org.apache.mesos.v1.Protos.CgroupInfo.NetCls(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.classid_ = classid_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.Protos.CgroupInfo.NetCls) {
+            return mergeFrom((org.apache.mesos.v1.Protos.CgroupInfo.NetCls)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.Protos.CgroupInfo.NetCls other) {
+          if (other == org.apache.mesos.v1.Protos.CgroupInfo.NetCls.getDefaultInstance()) return this;
+          if (other.hasClassid()) {
+            setClassid(other.getClassid());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.Protos.CgroupInfo.NetCls parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.Protos.CgroupInfo.NetCls) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // optional uint32 classid = 1;
+        private int classid_ ;
+        /**
+         * <code>optional uint32 classid = 1;</code>
+         *
+         * <pre>
+         * The 32-bit classid consists of two parts, a 16 bit major handle
+         * and a 16-bit minor handle. The major and minor handle are
+         * represented using the format 0xAAAABBBB, where 0xAAAA is the
+         * 16-bit major handle and 0xBBBB is the 16-bit minor handle.
+         * </pre>
+         */
+        public boolean hasClassid() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional uint32 classid = 1;</code>
+         *
+         * <pre>
+         * The 32-bit classid consists of two parts, a 16 bit major handle
+         * and a 16-bit minor handle. The major and minor handle are
+         * represented using the format 0xAAAABBBB, where 0xAAAA is the
+         * 16-bit major handle and 0xBBBB is the 16-bit minor handle.
+         * </pre>
+         */
+        public int getClassid() {
+          return classid_;
+        }
+        /**
+         * <code>optional uint32 classid = 1;</code>
+         *
+         * <pre>
+         * The 32-bit classid consists of two parts, a 16 bit major handle
+         * and a 16-bit minor handle. The major and minor handle are
+         * represented using the format 0xAAAABBBB, where 0xAAAA is the
+         * 16-bit major handle and 0xBBBB is the 16-bit minor handle.
+         * </pre>
+         */
+        public Builder setClassid(int value) {
+          bitField0_ |= 0x00000001;
+          classid_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional uint32 classid = 1;</code>
+         *
+         * <pre>
+         * The 32-bit classid consists of two parts, a 16 bit major handle
+         * and a 16-bit minor handle. The major and minor handle are
+         * represented using the format 0xAAAABBBB, where 0xAAAA is the
+         * 16-bit major handle and 0xBBBB is the 16-bit minor handle.
+         * </pre>
+         */
+        public Builder clearClassid() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          classid_ = 0;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.CgroupInfo.NetCls)
+      }
+
+      static {
+        defaultInstance = new NetCls(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.CgroupInfo.NetCls)
+    }
+
+    private int bitField0_;
+    // optional .mesos.v1.CgroupInfo.NetCls net_cls = 1;
+    public static final int NET_CLS_FIELD_NUMBER = 1;
+    private org.apache.mesos.v1.Protos.CgroupInfo.NetCls netCls_;
+    /**
+     * <code>optional .mesos.v1.CgroupInfo.NetCls net_cls = 1;</code>
+     */
+    public boolean hasNetCls() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional .mesos.v1.CgroupInfo.NetCls net_cls = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.CgroupInfo.NetCls getNetCls() {
+      return netCls_;
+    }
+    /**
+     * <code>optional .mesos.v1.CgroupInfo.NetCls net_cls = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.CgroupInfo.NetClsOrBuilder getNetClsOrBuilder() {
+      return netCls_;
+    }
+
+    private void initFields() {
+      netCls_ = org.apache.mesos.v1.Protos.CgroupInfo.NetCls.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeMessage(1, netCls_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, netCls_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.CgroupInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.CgroupInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.CgroupInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.CgroupInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.CgroupInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.CgroupInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.CgroupInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.CgroupInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.CgroupInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.CgroupInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.CgroupInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.CgroupInfo}
+     *
+     * <pre>
+     **
+     * Linux control group (cgroup) information.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.CgroupInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.CgroupInfo.class, org.apache.mesos.v1.Protos.CgroupInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.CgroupInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getNetClsFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (netClsBuilder_ == null) {
+          netCls_ = org.apache.mesos.v1.Protos.CgroupInfo.NetCls.getDefaultInstance();
+        } else {
+          netClsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_CgroupInfo_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.CgroupInfo getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.CgroupInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.CgroupInfo build() {
+        org.apache.mesos.v1.Protos.CgroupInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.CgroupInfo buildPartial() {
+        org.apache.mesos.v1.Protos.CgroupInfo result = new org.apache.mesos.v1.Protos.CgroupInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        if (netClsBuilder_ == null) {
+          result.netCls_ = netCls_;
+        } else {
+          result.netCls_ = netClsBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.CgroupInfo) {
+          return mergeFrom((org.apache.mesos.v1.Protos.CgroupInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.CgroupInfo other) {
+        if (other == org.apache.mesos.v1.Protos.CgroupInfo.getDefaultInstance()) return this;
+        if (other.hasNetCls()) {
+          mergeNetCls(other.getNetCls());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.CgroupInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.CgroupInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional .mesos.v1.CgroupInfo.NetCls net_cls = 1;
+      private org.apache.mesos.v1.Protos.CgroupInfo.NetCls netCls_ = org.apache.mesos.v1.Protos.CgroupInfo.NetCls.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.CgroupInfo.NetCls, org.apache.mesos.v1.Protos.CgroupInfo.NetCls.Builder, org.apache.mesos.v1.Protos.CgroupInfo.NetClsOrBuilder> netClsBuilder_;
+      /**
+       * <code>optional .mesos.v1.CgroupInfo.NetCls net_cls = 1;</code>
+       */
+      public boolean hasNetCls() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.v1.CgroupInfo.NetCls net_cls = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.CgroupInfo.NetCls getNetCls() {
+        if (netClsBuilder_ == null) {
+          return netCls_;
+        } else {
+          return netClsBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.CgroupInfo.NetCls net_cls = 1;</code>
+       */
+      public Builder setNetCls(org.apache.mesos.v1.Protos.CgroupInfo.NetCls value) {
+        if (netClsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          netCls_ = value;
+          onChanged();
+        } else {
+          netClsBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CgroupInfo.NetCls net_cls = 1;</code>
+       */
+      public Builder setNetCls(
+          org.apache.mesos.v1.Protos.CgroupInfo.NetCls.Builder builderForValue) {
+        if (netClsBuilder_ == null) {
+          netCls_ = builderForValue.build();
+          onChanged();
+        } else {
+          netClsBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CgroupInfo.NetCls net_cls = 1;</code>
+       */
+      public Builder mergeNetCls(org.apache.mesos.v1.Protos.CgroupInfo.NetCls value) {
+        if (netClsBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001) &&
+              netCls_ != org.apache.mesos.v1.Protos.CgroupInfo.NetCls.getDefaultInstance()) {
+            netCls_ =
+              org.apache.mesos.v1.Protos.CgroupInfo.NetCls.newBuilder(netCls_).mergeFrom(value).buildPartial();
+          } else {
+            netCls_ = value;
+          }
+          onChanged();
+        } else {
+          netClsBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CgroupInfo.NetCls net_cls = 1;</code>
+       */
+      public Builder clearNetCls() {
+        if (netClsBuilder_ == null) {
+          netCls_ = org.apache.mesos.v1.Protos.CgroupInfo.NetCls.getDefaultInstance();
+          onChanged();
+        } else {
+          netClsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.CgroupInfo.NetCls net_cls = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.CgroupInfo.NetCls.Builder getNetClsBuilder() {
+        bitField0_ |= 0x00000001;
+        onChanged();
+        return getNetClsFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.CgroupInfo.NetCls net_cls = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.CgroupInfo.NetClsOrBuilder getNetClsOrBuilder() {
+        if (netClsBuilder_ != null) {
+          return netClsBuilder_.getMessageOrBuilder();
+        } else {
+          return netCls_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.CgroupInfo.NetCls net_cls = 1;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.CgroupInfo.NetCls, org.apache.mesos.v1.Protos.CgroupInfo.NetCls.Builder, org.apache.mesos.v1.Protos.CgroupInfo.NetClsOrBuilder> 
+          getNetClsFieldBuilder() {
+        if (netClsBuilder_ == null) {
+          netClsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.CgroupInfo.NetCls, org.apache.mesos.v1.Protos.CgroupInfo.NetCls.Builder, org.apache.mesos.v1.Protos.CgroupInfo.NetClsOrBuilder>(
+                  netCls_,
+                  getParentForChildren(),
+                  isClean());
+          netCls_ = null;
+        }
+        return netClsBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.CgroupInfo)
+    }
+
+    static {
+      defaultInstance = new CgroupInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.CgroupInfo)
+  }
+
+  public interface LabelsOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // repeated .mesos.v1.Label labels = 1;
+    /**
+     * <code>repeated .mesos.v1.Label labels = 1;</code>
+     */
+    java.util.List<org.apache.mesos.v1.Protos.Label> 
+        getLabelsList();
+    /**
+     * <code>repeated .mesos.v1.Label labels = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.Label getLabels(int index);
+    /**
+     * <code>repeated .mesos.v1.Label labels = 1;</code>
+     */
+    int getLabelsCount();
+    /**
+     * <code>repeated .mesos.v1.Label labels = 1;</code>
+     */
+    java.util.List<? extends org.apache.mesos.v1.Protos.LabelOrBuilder> 
+        getLabelsOrBuilderList();
+    /**
+     * <code>repeated .mesos.v1.Label labels = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.LabelOrBuilder getLabelsOrBuilder(
+        int index);
+  }
+  /**
+   * Protobuf type {@code mesos.v1.Labels}
+   *
+   * <pre>
+   **
+   * Collection of labels. Labels should not contain duplicate key-value
+   * pairs.
+   * </pre>
+   */
+  public static final class Labels extends
+      com.google.protobuf.GeneratedMessage
+      implements LabelsOrBuilder {
+    // Use Labels.newBuilder() to construct.
+    private Labels(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Labels(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Labels defaultInstance;
+    public static Labels getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Labels getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Labels(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                labels_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Label>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              labels_.add(input.readMessage(org.apache.mesos.v1.Protos.Label.PARSER, extensionRegistry));
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+          labels_ = java.util.Collections.unmodifiableList(labels_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Labels_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Labels_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.Labels.class, org.apache.mesos.v1.Protos.Labels.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Labels> PARSER =
+        new com.google.protobuf.AbstractParser<Labels>() {
+      public Labels parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Labels(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Labels> getParserForType() {
+      return PARSER;
+    }
+
+    // repeated .mesos.v1.Label labels = 1;
+    public static final int LABELS_FIELD_NUMBER = 1;
+    private java.util.List<org.apache.mesos.v1.Protos.Label> labels_;
+    /**
+     * <code>repeated .mesos.v1.Label labels = 1;</code>
+     */
+    public java.util.List<org.apache.mesos.v1.Protos.Label> getLabelsList() {
+      return labels_;
+    }
+    /**
+     * <code>repeated .mesos.v1.Label labels = 1;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.v1.Protos.LabelOrBuilder> 
+        getLabelsOrBuilderList() {
+      return labels_;
+    }
+    /**
+     * <code>repeated .mesos.v1.Label labels = 1;</code>
+     */
+    public int getLabelsCount() {
+      return labels_.size();
+    }
+    /**
+     * <code>repeated .mesos.v1.Label labels = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.Label getLabels(int index) {
+      return labels_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.v1.Label labels = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.LabelOrBuilder getLabelsOrBuilder(
+        int index) {
+      return labels_.get(index);
+    }
+
+    private void initFields() {
+      labels_ = java.util.Collections.emptyList();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      for (int i = 0; i < getLabelsCount(); i++) {
+        if (!getLabels(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      for (int i = 0; i < labels_.size(); i++) {
+        output.writeMessage(1, labels_.get(i));
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      for (int i = 0; i < labels_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, labels_.get(i));
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.Labels parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Labels parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Labels parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Labels parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Labels parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Labels parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Labels parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Labels parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Labels parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Labels parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.Labels prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.Labels}
+     *
+     * <pre>
+     **
+     * Collection of labels. Labels should not contain duplicate key-value
+     * pairs.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.LabelsOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Labels_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Labels_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.Labels.class, org.apache.mesos.v1.Protos.Labels.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.Labels.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getLabelsFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (labelsBuilder_ == null) {
+          labels_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+        } else {
+          labelsBuilder_.clear();
+        }
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Labels_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.Labels getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.Labels build() {
+        org.apache.mesos.v1.Protos.Labels result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.Labels buildPartial() {
+        org.apache.mesos.v1.Protos.Labels result = new org.apache.mesos.v1.Protos.Labels(this);
+        int from_bitField0_ = bitField0_;
+        if (labelsBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            labels_ = java.util.Collections.unmodifiableList(labels_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.labels_ = labels_;
+        } else {
+          result.labels_ = labelsBuilder_.build();
+        }
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.Labels) {
+          return mergeFrom((org.apache.mesos.v1.Protos.Labels)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.Labels other) {
+        if (other == org.apache.mesos.v1.Protos.Labels.getDefaultInstance()) return this;
+        if (labelsBuilder_ == null) {
+          if (!other.labels_.isEmpty()) {
+            if (labels_.isEmpty()) {
+              labels_ = other.labels_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureLabelsIsMutable();
+              labels_.addAll(other.labels_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.labels_.isEmpty()) {
+            if (labelsBuilder_.isEmpty()) {
+              labelsBuilder_.dispose();
+              labelsBuilder_ = null;
+              labels_ = other.labels_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              labelsBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getLabelsFieldBuilder() : null;
+            } else {
+              labelsBuilder_.addAllMessages(other.labels_);
+            }
+          }
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        for (int i = 0; i < getLabelsCount(); i++) {
+          if (!getLabels(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.Labels parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.Labels) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // repeated .mesos.v1.Label labels = 1;
+      private java.util.List<org.apache.mesos.v1.Protos.Label> labels_ =
+        java.util.Collections.emptyList();
+      private void ensureLabelsIsMutable() {
+        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+          labels_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Label>(labels_);
+          bitField0_ |= 0x00000001;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.Label, org.apache.mesos.v1.Protos.Label.Builder, org.apache.mesos.v1.Protos.LabelOrBuilder> labelsBuilder_;
+
+      /**
+       * <code>repeated .mesos.v1.Label labels = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Label> getLabelsList() {
+        if (labelsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(labels_);
+        } else {
+          return labelsBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Label labels = 1;</code>
+       */
+      public int getLabelsCount() {
+        if (labelsBuilder_ == null) {
+          return labels_.size();
+        } else {
+          return labelsBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Label labels = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.Label getLabels(int index) {
+        if (labelsBuilder_ == null) {
+          return labels_.get(index);
+        } else {
+          return labelsBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Label labels = 1;</code>
+       */
+      public Builder setLabels(
+          int index, org.apache.mesos.v1.Protos.Label value) {
+        if (labelsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureLabelsIsMutable();
+          labels_.set(index, value);
+          onChanged();
+        } else {
+          labelsBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Label labels = 1;</code>
+       */
+      public Builder setLabels(
+          int index, org.apache.mesos.v1.Protos.Label.Builder builderForValue) {
+        if (labelsBuilder_ == null) {
+          ensureLabelsIsMutable();
+          labels_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          labelsBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Label labels = 1;</code>
+       */
+      public Builder addLabels(org.apache.mesos.v1.Protos.Label value) {
+        if (labelsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureLabelsIsMutable();
+          labels_.add(value);
+          onChanged();
+        } else {
+          labelsBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Label labels = 1;</code>
+       */
+      public Builder addLabels(
+          int index, org.apache.mesos.v1.Protos.Label value) {
+        if (labelsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureLabelsIsMutable();
+          labels_.add(index, value);
+          onChanged();
+        } else {
+          labelsBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Label labels = 1;</code>
+       */
+      public Builder addLabels(
+          org.apache.mesos.v1.Protos.Label.Builder builderForValue) {
+        if (labelsBuilder_ == null) {
+          ensureLabelsIsMutable();
+          labels_.add(builderForValue.build());
+          onChanged();
+        } else {
+          labelsBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Label labels = 1;</code>
+       */
+      public Builder addLabels(
+          int index, org.apache.mesos.v1.Protos.Label.Builder builderForValue) {
+        if (labelsBuilder_ == null) {
+          ensureLabelsIsMutable();
+          labels_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          labelsBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Label labels = 1;</code>
+       */
+      public Builder addAllLabels(
+          java.lang.Iterable<? extends org.apache.mesos.v1.Protos.Label> values) {
+        if (labelsBuilder_ == null) {
+          ensureLabelsIsMutable();
+          super.addAll(values, labels_);
+          onChanged();
+        } else {
+          labelsBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Label labels = 1;</code>
+       */
+      public Builder clearLabels() {
+        if (labelsBuilder_ == null) {
+          labels_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+        } else {
+          labelsBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Label labels = 1;</code>
+       */
+      public Builder removeLabels(int index) {
+        if (labelsBuilder_ == null) {
+          ensureLabelsIsMutable();
+          labels_.remove(index);
+          onChanged();
+        } else {
+          labelsBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Label labels = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.Label.Builder getLabelsBuilder(
+          int index) {
+        return getLabelsFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.Label labels = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.LabelOrBuilder getLabelsOrBuilder(
+          int index) {
+        if (labelsBuilder_ == null) {
+          return labels_.get(index);  } else {
+          return labelsBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Label labels = 1;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.LabelOrBuilder> 
+           getLabelsOrBuilderList() {
+        if (labelsBuilder_ != null) {
+          return labelsBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(labels_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Label labels = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.Label.Builder addLabelsBuilder() {
+        return getLabelsFieldBuilder().addBuilder(
+            org.apache.mesos.v1.Protos.Label.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.Label labels = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.Label.Builder addLabelsBuilder(
+          int index) {
+        return getLabelsFieldBuilder().addBuilder(
+            index, org.apache.mesos.v1.Protos.Label.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.Label labels = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Label.Builder> 
+           getLabelsBuilderList() {
+        return getLabelsFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.Label, org.apache.mesos.v1.Protos.Label.Builder, org.apache.mesos.v1.Protos.LabelOrBuilder> 
+          getLabelsFieldBuilder() {
+        if (labelsBuilder_ == null) {
+          labelsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.Label, org.apache.mesos.v1.Protos.Label.Builder, org.apache.mesos.v1.Protos.LabelOrBuilder>(
+                  labels_,
+                  ((bitField0_ & 0x00000001) == 0x00000001),
+                  getParentForChildren(),
+                  isClean());
+          labels_ = null;
+        }
+        return labelsBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.Labels)
+    }
+
+    static {
+      defaultInstance = new Labels(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.Labels)
+  }
+
+  public interface LabelOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string key = 1;
+    /**
+     * <code>required string key = 1;</code>
+     */
+    boolean hasKey();
+    /**
+     * <code>required string key = 1;</code>
+     */
+    java.lang.String getKey();
+    /**
+     * <code>required string key = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getKeyBytes();
+
+    // optional string value = 2;
+    /**
+     * <code>optional string value = 2;</code>
+     */
+    boolean hasValue();
+    /**
+     * <code>optional string value = 2;</code>
+     */
+    java.lang.String getValue();
+    /**
+     * <code>optional string value = 2;</code>
+     */
+    com.google.protobuf.ByteString
+        getValueBytes();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.Label}
+   *
+   * <pre>
+   **
+   * Key, value pair used to store free form user-data.
+   * </pre>
+   */
+  public static final class Label extends
+      com.google.protobuf.GeneratedMessage
+      implements LabelOrBuilder {
+    // Use Label.newBuilder() to construct.
+    private Label(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Label(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Label defaultInstance;
+    public static Label getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Label getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Label(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              key_ = input.readBytes();
+              break;
+            }
+            case 18: {
+              bitField0_ |= 0x00000002;
+              value_ = input.readBytes();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Label_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Label_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.Label.class, org.apache.mesos.v1.Protos.Label.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Label> PARSER =
+        new com.google.protobuf.AbstractParser<Label>() {
+      public Label parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Label(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Label> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string key = 1;
+    public static final int KEY_FIELD_NUMBER = 1;
+    private java.lang.Object key_;
+    /**
+     * <code>required string key = 1;</code>
+     */
+    public boolean hasKey() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string key = 1;</code>
+     */
+    public java.lang.String getKey() {
+      java.lang.Object ref = key_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          key_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string key = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getKeyBytes() {
+      java.lang.Object ref = key_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        key_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional string value = 2;
+    public static final int VALUE_FIELD_NUMBER = 2;
+    private java.lang.Object value_;
+    /**
+     * <code>optional string value = 2;</code>
+     */
+    public boolean hasValue() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional string value = 2;</code>
+     */
+    public java.lang.String getValue() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          value_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string value = 2;</code>
+     */
+    public com.google.protobuf.ByteString
+        getValueBytes() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        value_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      key_ = "";
+      value_ = "";
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasKey()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getKeyBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(2, getValueBytes());
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getKeyBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(2, getValueBytes());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.Label parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Label parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Label parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Label parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Label parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Label parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Label parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Label parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Label parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Label parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.Label prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.Label}
+     *
+     * <pre>
+     **
+     * Key, value pair used to store free form user-data.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.LabelOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Label_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Label_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.Label.class, org.apache.mesos.v1.Protos.Label.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.Label.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        key_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        value_ = "";
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Label_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.Label getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.Label.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.Label build() {
+        org.apache.mesos.v1.Protos.Label result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.Label buildPartial() {
+        org.apache.mesos.v1.Protos.Label result = new org.apache.mesos.v1.Protos.Label(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.key_ = key_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.value_ = value_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.Label) {
+          return mergeFrom((org.apache.mesos.v1.Protos.Label)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.Label other) {
+        if (other == org.apache.mesos.v1.Protos.Label.getDefaultInstance()) return this;
+        if (other.hasKey()) {
+          bitField0_ |= 0x00000001;
+          key_ = other.key_;
+          onChanged();
+        }
+        if (other.hasValue()) {
+          bitField0_ |= 0x00000002;
+          value_ = other.value_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasKey()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.Label parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.Label) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string key = 1;
+      private java.lang.Object key_ = "";
+      /**
+       * <code>required string key = 1;</code>
+       */
+      public boolean hasKey() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string key = 1;</code>
+       */
+      public java.lang.String getKey() {
+        java.lang.Object ref = key_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          key_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string key = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getKeyBytes() {
+        java.lang.Object ref = key_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          key_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string key = 1;</code>
+       */
+      public Builder setKey(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        key_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string key = 1;</code>
+       */
+      public Builder clearKey() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        key_ = getDefaultInstance().getKey();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string key = 1;</code>
+       */
+      public Builder setKeyBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        key_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional string value = 2;
+      private java.lang.Object value_ = "";
+      /**
+       * <code>optional string value = 2;</code>
+       */
+      public boolean hasValue() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional string value = 2;</code>
+       */
+      public java.lang.String getValue() {
+        java.lang.Object ref = value_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          value_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string value = 2;</code>
+       */
+      public com.google.protobuf.ByteString
+          getValueBytes() {
+        java.lang.Object ref = value_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          value_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string value = 2;</code>
+       */
+      public Builder setValue(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string value = 2;</code>
+       */
+      public Builder clearValue() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        value_ = getDefaultInstance().getValue();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string value = 2;</code>
+       */
+      public Builder setValueBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.Label)
+    }
+
+    static {
+      defaultInstance = new Label(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.Label)
+  }
+
+  public interface PortOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required uint32 number = 1;
+    /**
+     * <code>required uint32 number = 1;</code>
+     *
+     * <pre>
+     * Port number on which the framework exposes a service.
+     * </pre>
+     */
+    boolean hasNumber();
+    /**
+     * <code>required uint32 number = 1;</code>
+     *
+     * <pre>
+     * Port number on which the framework exposes a service.
+     * </pre>
+     */
+    int getNumber();
+
+    // optional string name = 2;
+    /**
+     * <code>optional string name = 2;</code>
+     *
+     * <pre>
+     * Name of the service hosted on this port.
+     * </pre>
+     */
+    boolean hasName();
+    /**
+     * <code>optional string name = 2;</code>
+     *
+     * <pre>
+     * Name of the service hosted on this port.
+     * </pre>
+     */
+    java.lang.String getName();
+    /**
+     * <code>optional string name = 2;</code>
+     *
+     * <pre>
+     * Name of the service hosted on this port.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getNameBytes();
+
+    // optional string protocol = 3;
+    /**
+     * <code>optional string protocol = 3;</code>
+     *
+     * <pre>
+     * Layer 4-7 protocol on which the framework exposes its services.
+     * </pre>
+     */
+    boolean hasProtocol();
+    /**
+     * <code>optional string protocol = 3;</code>
+     *
+     * <pre>
+     * Layer 4-7 protocol on which the framework exposes its services.
+     * </pre>
+     */
+    java.lang.String getProtocol();
+    /**
+     * <code>optional string protocol = 3;</code>
+     *
+     * <pre>
+     * Layer 4-7 protocol on which the framework exposes its services.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getProtocolBytes();
+
+    // optional .mesos.v1.DiscoveryInfo.Visibility visibility = 4;
+    /**
+     * <code>optional .mesos.v1.DiscoveryInfo.Visibility visibility = 4;</code>
+     *
+     * <pre>
+     * This field restricts discovery within a framework (FRAMEWORK),
+     * within a Mesos cluster (CLUSTER), or places no restrictions (EXTERNAL).
+     * The visibility setting for a Port overrides the general visibility setting
+     * in the DiscoveryInfo.
+     * </pre>
+     */
+    boolean hasVisibility();
+    /**
+     * <code>optional .mesos.v1.DiscoveryInfo.Visibility visibility = 4;</code>
+     *
+     * <pre>
+     * This field restricts discovery within a framework (FRAMEWORK),
+     * within a Mesos cluster (CLUSTER), or places no restrictions (EXTERNAL).
+     * The visibility setting for a Port overrides the general visibility setting
+     * in the DiscoveryInfo.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.DiscoveryInfo.Visibility getVisibility();
+
+    // optional .mesos.v1.Labels labels = 5;
+    /**
+     * <code>optional .mesos.v1.Labels labels = 5;</code>
+     *
+     * <pre>
+     * This can be used to decorate the message with metadata to be
+     * interpreted by external applications such as firewalls.
+     * </pre>
+     */
+    boolean hasLabels();
+    /**
+     * <code>optional .mesos.v1.Labels labels = 5;</code>
+     *
+     * <pre>
+     * This can be used to decorate the message with metadata to be
+     * interpreted by external applications such as firewalls.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.Labels getLabels();
+    /**
+     * <code>optional .mesos.v1.Labels labels = 5;</code>
+     *
+     * <pre>
+     * This can be used to decorate the message with metadata to be
+     * interpreted by external applications such as firewalls.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.LabelsOrBuilder getLabelsOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.Port}
+   *
+   * <pre>
+   **
+   * Named port used for service discovery.
+   * </pre>
+   */
+  public static final class Port extends
+      com.google.protobuf.GeneratedMessage
+      implements PortOrBuilder {
+    // Use Port.newBuilder() to construct.
+    private Port(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Port(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Port defaultInstance;
+    public static Port getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Port getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Port(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 8: {
+              bitField0_ |= 0x00000001;
+              number_ = input.readUInt32();
+              break;
+            }
+            case 18: {
+              bitField0_ |= 0x00000002;
+              name_ = input.readBytes();
+              break;
+            }
+            case 26: {
+              bitField0_ |= 0x00000004;
+              protocol_ = input.readBytes();
+              break;
+            }
+            case 32: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.v1.Protos.DiscoveryInfo.Visibility value = org.apache.mesos.v1.Protos.DiscoveryInfo.Visibility.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(4, rawValue);
+              } else {
+                bitField0_ |= 0x00000008;
+                visibility_ = value;
+              }
+              break;
+            }
+            case 42: {
+              org.apache.mesos.v1.Protos.Labels.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000010) == 0x00000010)) {
+                subBuilder = labels_.toBuilder();
+              }
+              labels_ = input.readMessage(org.apache.mesos.v1.Protos.Labels.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(labels_);
+                labels_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000010;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Port_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Port_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.Port.class, org.apache.mesos.v1.Protos.Port.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Port> PARSER =
+        new com.google.protobuf.AbstractParser<Port>() {
+      public Port parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Port(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Port> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required uint32 number = 1;
+    public static final int NUMBER_FIELD_NUMBER = 1;
+    private int number_;
+    /**
+     * <code>required uint32 number = 1;</code>
+     *
+     * <pre>
+     * Port number on which the framework exposes a service.
+     * </pre>
+     */
+    public boolean hasNumber() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required uint32 number = 1;</code>
+     *
+     * <pre>
+     * Port number on which the framework exposes a service.
+     * </pre>
+     */
+    public int getNumber() {
+      return number_;
+    }
+
+    // optional string name = 2;
+    public static final int NAME_FIELD_NUMBER = 2;
+    private java.lang.Object name_;
+    /**
+     * <code>optional string name = 2;</code>
+     *
+     * <pre>
+     * Name of the service hosted on this port.
+     * </pre>
+     */
+    public boolean hasName() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional string name = 2;</code>
+     *
+     * <pre>
+     * Name of the service hosted on this port.
+     * </pre>
+     */
+    public java.lang.String getName() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          name_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string name = 2;</code>
+     *
+     * <pre>
+     * Name of the service hosted on this port.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getNameBytes() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        name_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional string protocol = 3;
+    public static final int PROTOCOL_FIELD_NUMBER = 3;
+    private java.lang.Object protocol_;
+    /**
+     * <code>optional string protocol = 3;</code>
+     *
+     * <pre>
+     * Layer 4-7 protocol on which the framework exposes its services.
+     * </pre>
+     */
+    public boolean hasProtocol() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional string protocol = 3;</code>
+     *
+     * <pre>
+     * Layer 4-7 protocol on which the framework exposes its services.
+     * </pre>
+     */
+    public java.lang.String getProtocol() {
+      java.lang.Object ref = protocol_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          protocol_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string protocol = 3;</code>
+     *
+     * <pre>
+     * Layer 4-7 protocol on which the framework exposes its services.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getProtocolBytes() {
+      java.lang.Object ref = protocol_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        protocol_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional .mesos.v1.DiscoveryInfo.Visibility visibility = 4;
+    public static final int VISIBILITY_FIELD_NUMBER = 4;
+    private org.apache.mesos.v1.Protos.DiscoveryInfo.Visibility visibility_;
+    /**
+     * <code>optional .mesos.v1.DiscoveryInfo.Visibility visibility = 4;</code>
+     *
+     * <pre>
+     * This field restricts discovery within a framework (FRAMEWORK),
+     * within a Mesos cluster (CLUSTER), or places no restrictions (EXTERNAL).
+     * The visibility setting for a Port overrides the general visibility setting
+     * in the DiscoveryInfo.
+     * </pre>
+     */
+    public boolean hasVisibility() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional .mesos.v1.DiscoveryInfo.Visibility visibility = 4;</code>
+     *
+     * <pre>
+     * This field restricts discovery within a framework (FRAMEWORK),
+     * within a Mesos cluster (CLUSTER), or places no restrictions (EXTERNAL).
+     * The visibility setting for a Port overrides the general visibility setting
+     * in the DiscoveryInfo.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.DiscoveryInfo.Visibility getVisibility() {
+      return visibility_;
+    }
+
+    // optional .mesos.v1.Labels labels = 5;
+    public static final int LABELS_FIELD_NUMBER = 5;
+    private org.apache.mesos.v1.Protos.Labels labels_;
+    /**
+     * <code>optional .mesos.v1.Labels labels = 5;</code>
+     *
+     * <pre>
+     * This can be used to decorate the message with metadata to be
+     * interpreted by external applications such as firewalls.
+     * </pre>
+     */
+    public boolean hasLabels() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional .mesos.v1.Labels labels = 5;</code>
+     *
+     * <pre>
+     * This can be used to decorate the message with metadata to be
+     * interpreted by external applications such as firewalls.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.Labels getLabels() {
+      return labels_;
+    }
+    /**
+     * <code>optional .mesos.v1.Labels labels = 5;</code>
+     *
+     * <pre>
+     * This can be used to decorate the message with metadata to be
+     * interpreted by external applications such as firewalls.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+      return labels_;
+    }
+
+    private void initFields() {
+      number_ = 0;
+      name_ = "";
+      protocol_ = "";
+      visibility_ = org.apache.mesos.v1.Protos.DiscoveryInfo.Visibility.FRAMEWORK;
+      labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasNumber()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (hasLabels()) {
+        if (!getLabels().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeUInt32(1, number_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(2, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeBytes(3, getProtocolBytes());
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeEnum(4, visibility_.getNumber());
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeMessage(5, labels_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(1, number_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(2, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(3, getProtocolBytes());
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(4, visibility_.getNumber());
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(5, labels_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.Port parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Port parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Port parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Port parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Port parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Port parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Port parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Port parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Port parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Port parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.Port prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.Port}
+     *
+     * <pre>
+     **
+     * Named port used for service discovery.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.PortOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Port_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Port_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.Port.class, org.apache.mesos.v1.Protos.Port.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.Port.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getLabelsFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        number_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        name_ = "";
+        bitField0_ = (bitField0_ & ~0x00000002);
+        protocol_ = "";
+        bitField0_ = (bitField0_ & ~0x00000004);
+        visibility_ = org.apache.mesos.v1.Protos.DiscoveryInfo.Visibility.FRAMEWORK;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        if (labelsBuilder_ == null) {
+          labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+        } else {
+          labelsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Port_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.Port getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.Port.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.Port build() {
+        org.apache.mesos.v1.Protos.Port result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.Port buildPartial() {
+        org.apache.mesos.v1.Protos.Port result = new org.apache.mesos.v1.Protos.Port(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.number_ = number_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.name_ = name_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.protocol_ = protocol_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.visibility_ = visibility_;
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        if (labelsBuilder_ == null) {
+          result.labels_ = labels_;
+        } else {
+          result.labels_ = labelsBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.Port) {
+          return mergeFrom((org.apache.mesos.v1.Protos.Port)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.Port other) {
+        if (other == org.apache.mesos.v1.Protos.Port.getDefaultInstance()) return this;
+        if (other.hasNumber()) {
+          setNumber(other.getNumber());
+        }
+        if (other.hasName()) {
+          bitField0_ |= 0x00000002;
+          name_ = other.name_;
+          onChanged();
+        }
+        if (other.hasProtocol()) {
+          bitField0_ |= 0x00000004;
+          protocol_ = other.protocol_;
+          onChanged();
+        }
+        if (other.hasVisibility()) {
+          setVisibility(other.getVisibility());
+        }
+        if (other.hasLabels()) {
+          mergeLabels(other.getLabels());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasNumber()) {
+          
+          return false;
+        }
+        if (hasLabels()) {
+          if (!getLabels().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.Port parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.Port) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required uint32 number = 1;
+      private int number_ ;
+      /**
+       * <code>required uint32 number = 1;</code>
+       *
+       * <pre>
+       * Port number on which the framework exposes a service.
+       * </pre>
+       */
+      public boolean hasNumber() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required uint32 number = 1;</code>
+       *
+       * <pre>
+       * Port number on which the framework exposes a service.
+       * </pre>
+       */
+      public int getNumber() {
+        return number_;
+      }
+      /**
+       * <code>required uint32 number = 1;</code>
+       *
+       * <pre>
+       * Port number on which the framework exposes a service.
+       * </pre>
+       */
+      public Builder setNumber(int value) {
+        bitField0_ |= 0x00000001;
+        number_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required uint32 number = 1;</code>
+       *
+       * <pre>
+       * Port number on which the framework exposes a service.
+       * </pre>
+       */
+      public Builder clearNumber() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        number_ = 0;
+        onChanged();
+        return this;
+      }
+
+      // optional string name = 2;
+      private java.lang.Object name_ = "";
+      /**
+       * <code>optional string name = 2;</code>
+       *
+       * <pre>
+       * Name of the service hosted on this port.
+       * </pre>
+       */
+      public boolean hasName() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional string name = 2;</code>
+       *
+       * <pre>
+       * Name of the service hosted on this port.
+       * </pre>
+       */
+      public java.lang.String getName() {
+        java.lang.Object ref = name_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          name_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string name = 2;</code>
+       *
+       * <pre>
+       * Name of the service hosted on this port.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        java.lang.Object ref = name_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          name_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string name = 2;</code>
+       *
+       * <pre>
+       * Name of the service hosted on this port.
+       * </pre>
+       */
+      public Builder setName(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string name = 2;</code>
+       *
+       * <pre>
+       * Name of the service hosted on this port.
+       * </pre>
+       */
+      public Builder clearName() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        name_ = getDefaultInstance().getName();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string name = 2;</code>
+       *
+       * <pre>
+       * Name of the service hosted on this port.
+       * </pre>
+       */
+      public Builder setNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional string protocol = 3;
+      private java.lang.Object protocol_ = "";
+      /**
+       * <code>optional string protocol = 3;</code>
+       *
+       * <pre>
+       * Layer 4-7 protocol on which the framework exposes its services.
+       * </pre>
+       */
+      public boolean hasProtocol() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional string protocol = 3;</code>
+       *
+       * <pre>
+       * Layer 4-7 protocol on which the framework exposes its services.
+       * </pre>
+       */
+      public java.lang.String getProtocol() {
+        java.lang.Object ref = protocol_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          protocol_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string protocol = 3;</code>
+       *
+       * <pre>
+       * Layer 4-7 protocol on which the framework exposes its services.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getProtocolBytes() {
+        java.lang.Object ref = protocol_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          protocol_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string protocol = 3;</code>
+       *
+       * <pre>
+       * Layer 4-7 protocol on which the framework exposes its services.
+       * </pre>
+       */
+      public Builder setProtocol(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        protocol_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string protocol = 3;</code>
+       *
+       * <pre>
+       * Layer 4-7 protocol on which the framework exposes its services.
+       * </pre>
+       */
+      public Builder clearProtocol() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        protocol_ = getDefaultInstance().getProtocol();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string protocol = 3;</code>
+       *
+       * <pre>
+       * Layer 4-7 protocol on which the framework exposes its services.
+       * </pre>
+       */
+      public Builder setProtocolBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        protocol_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.v1.DiscoveryInfo.Visibility visibility = 4;
+      private org.apache.mesos.v1.Protos.DiscoveryInfo.Visibility visibility_ = org.apache.mesos.v1.Protos.DiscoveryInfo.Visibility.FRAMEWORK;
+      /**
+       * <code>optional .mesos.v1.DiscoveryInfo.Visibility visibility = 4;</code>
+       *
+       * <pre>
+       * This field restricts discovery within a framework (FRAMEWORK),
+       * within a Mesos cluster (CLUSTER), or places no restrictions (EXTERNAL).
+       * The visibility setting for a Port overrides the general visibility setting
+       * in the DiscoveryInfo.
+       * </pre>
+       */
+      public boolean hasVisibility() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.v1.DiscoveryInfo.Visibility visibility = 4;</code>
+       *
+       * <pre>
+       * This field restricts discovery within a framework (FRAMEWORK),
+       * within a Mesos cluster (CLUSTER), or places no restrictions (EXTERNAL).
+       * The visibility setting for a Port overrides the general visibility setting
+       * in the DiscoveryInfo.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.DiscoveryInfo.Visibility getVisibility() {
+        return visibility_;
+      }
+      /**
+       * <code>optional .mesos.v1.DiscoveryInfo.Visibility visibility = 4;</code>
+       *
+       * <pre>
+       * This field restricts discovery within a framework (FRAMEWORK),
+       * within a Mesos cluster (CLUSTER), or places no restrictions (EXTERNAL).
+       * The visibility setting for a Port overrides the general visibility setting
+       * in the DiscoveryInfo.
+       * </pre>
+       */
+      public Builder setVisibility(org.apache.mesos.v1.Protos.DiscoveryInfo.Visibility value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000008;
+        visibility_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.DiscoveryInfo.Visibility visibility = 4;</code>
+       *
+       * <pre>
+       * This field restricts discovery within a framework (FRAMEWORK),
+       * within a Mesos cluster (CLUSTER), or places no restrictions (EXTERNAL).
+       * The visibility setting for a Port overrides the general visibility setting
+       * in the DiscoveryInfo.
+       * </pre>
+       */
+      public Builder clearVisibility() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        visibility_ = org.apache.mesos.v1.Protos.DiscoveryInfo.Visibility.FRAMEWORK;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.v1.Labels labels = 5;
+      private org.apache.mesos.v1.Protos.Labels labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Labels, org.apache.mesos.v1.Protos.Labels.Builder, org.apache.mesos.v1.Protos.LabelsOrBuilder> labelsBuilder_;
+      /**
+       * <code>optional .mesos.v1.Labels labels = 5;</code>
+       *
+       * <pre>
+       * This can be used to decorate the message with metadata to be
+       * interpreted by external applications such as firewalls.
+       * </pre>
+       */
+      public boolean hasLabels() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 5;</code>
+       *
+       * <pre>
+       * This can be used to decorate the message with metadata to be
+       * interpreted by external applications such as firewalls.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Labels getLabels() {
+        if (labelsBuilder_ == null) {
+          return labels_;
+        } else {
+          return labelsBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 5;</code>
+       *
+       * <pre>
+       * This can be used to decorate the message with metadata to be
+       * interpreted by external applications such as firewalls.
+       * </pre>
+       */
+      public Builder setLabels(org.apache.mesos.v1.Protos.Labels value) {
+        if (labelsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          labels_ = value;
+          onChanged();
+        } else {
+          labelsBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 5;</code>
+       *
+       * <pre>
+       * This can be used to decorate the message with metadata to be
+       * interpreted by external applications such as firewalls.
+       * </pre>
+       */
+      public Builder setLabels(
+          org.apache.mesos.v1.Protos.Labels.Builder builderForValue) {
+        if (labelsBuilder_ == null) {
+          labels_ = builderForValue.build();
+          onChanged();
+        } else {
+          labelsBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 5;</code>
+       *
+       * <pre>
+       * This can be used to decorate the message with metadata to be
+       * interpreted by external applications such as firewalls.
+       * </pre>
+       */
+      public Builder mergeLabels(org.apache.mesos.v1.Protos.Labels value) {
+        if (labelsBuilder_ == null) {
+          if (((bitField0_ & 0x00000010) == 0x00000010) &&
+              labels_ != org.apache.mesos.v1.Protos.Labels.getDefaultInstance()) {
+            labels_ =
+              org.apache.mesos.v1.Protos.Labels.newBuilder(labels_).mergeFrom(value).buildPartial();
+          } else {
+            labels_ = value;
+          }
+          onChanged();
+        } else {
+          labelsBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 5;</code>
+       *
+       * <pre>
+       * This can be used to decorate the message with metadata to be
+       * interpreted by external applications such as firewalls.
+       * </pre>
+       */
+      public Builder clearLabels() {
+        if (labelsBuilder_ == null) {
+          labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+          onChanged();
+        } else {
+          labelsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 5;</code>
+       *
+       * <pre>
+       * This can be used to decorate the message with metadata to be
+       * interpreted by external applications such as firewalls.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.Labels.Builder getLabelsBuilder() {
+        bitField0_ |= 0x00000010;
+        onChanged();
+        return getLabelsFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 5;</code>
+       *
+       * <pre>
+       * This can be used to decorate the message with metadata to be
+       * interpreted by external applications such as firewalls.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+        if (labelsBuilder_ != null) {
+          return labelsBuilder_.getMessageOrBuilder();
+        } else {
+          return labels_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 5;</code>
+       *
+       * <pre>
+       * This can be used to decorate the message with metadata to be
+       * interpreted by external applications such as firewalls.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Labels, org.apache.mesos.v1.Protos.Labels.Builder, org.apache.mesos.v1.Protos.LabelsOrBuilder> 
+          getLabelsFieldBuilder() {
+        if (labelsBuilder_ == null) {
+          labelsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Labels, org.apache.mesos.v1.Protos.Labels.Builder, org.apache.mesos.v1.Protos.LabelsOrBuilder>(
+                  labels_,
+                  getParentForChildren(),
+                  isClean());
+          labels_ = null;
+        }
+        return labelsBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.Port)
+    }
+
+    static {
+      defaultInstance = new Port(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.Port)
+  }
+
+  public interface PortsOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // repeated .mesos.v1.Port ports = 1;
+    /**
+     * <code>repeated .mesos.v1.Port ports = 1;</code>
+     */
+    java.util.List<org.apache.mesos.v1.Protos.Port> 
+        getPortsList();
+    /**
+     * <code>repeated .mesos.v1.Port ports = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.Port getPorts(int index);
+    /**
+     * <code>repeated .mesos.v1.Port ports = 1;</code>
+     */
+    int getPortsCount();
+    /**
+     * <code>repeated .mesos.v1.Port ports = 1;</code>
+     */
+    java.util.List<? extends org.apache.mesos.v1.Protos.PortOrBuilder> 
+        getPortsOrBuilderList();
+    /**
+     * <code>repeated .mesos.v1.Port ports = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.PortOrBuilder getPortsOrBuilder(
+        int index);
+  }
+  /**
+   * Protobuf type {@code mesos.v1.Ports}
+   *
+   * <pre>
+   **
+   * Collection of ports.
+   * </pre>
+   */
+  public static final class Ports extends
+      com.google.protobuf.GeneratedMessage
+      implements PortsOrBuilder {
+    // Use Ports.newBuilder() to construct.
+    private Ports(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Ports(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Ports defaultInstance;
+    public static Ports getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Ports getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Ports(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                ports_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Port>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              ports_.add(input.readMessage(org.apache.mesos.v1.Protos.Port.PARSER, extensionRegistry));
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+          ports_ = java.util.Collections.unmodifiableList(ports_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Ports_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Ports_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.Ports.class, org.apache.mesos.v1.Protos.Ports.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Ports> PARSER =
+        new com.google.protobuf.AbstractParser<Ports>() {
+      public Ports parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Ports(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Ports> getParserForType() {
+      return PARSER;
+    }
+
+    // repeated .mesos.v1.Port ports = 1;
+    public static final int PORTS_FIELD_NUMBER = 1;
+    private java.util.List<org.apache.mesos.v1.Protos.Port> ports_;
+    /**
+     * <code>repeated .mesos.v1.Port ports = 1;</code>
+     */
+    public java.util.List<org.apache.mesos.v1.Protos.Port> getPortsList() {
+      return ports_;
+    }
+    /**
+     * <code>repeated .mesos.v1.Port ports = 1;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.v1.Protos.PortOrBuilder> 
+        getPortsOrBuilderList() {
+      return ports_;
+    }
+    /**
+     * <code>repeated .mesos.v1.Port ports = 1;</code>
+     */
+    public int getPortsCount() {
+      return ports_.size();
+    }
+    /**
+     * <code>repeated .mesos.v1.Port ports = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.Port getPorts(int index) {
+      return ports_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.v1.Port ports = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.PortOrBuilder getPortsOrBuilder(
+        int index) {
+      return ports_.get(index);
+    }
+
+    private void initFields() {
+      ports_ = java.util.Collections.emptyList();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      for (int i = 0; i < getPortsCount(); i++) {
+        if (!getPorts(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      for (int i = 0; i < ports_.size(); i++) {
+        output.writeMessage(1, ports_.get(i));
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      for (int i = 0; i < ports_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, ports_.get(i));
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.Ports parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Ports parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Ports parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Ports parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Ports parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Ports parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Ports parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Ports parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Ports parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Ports parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.Ports prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.Ports}
+     *
+     * <pre>
+     **
+     * Collection of ports.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.PortsOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Ports_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Ports_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.Ports.class, org.apache.mesos.v1.Protos.Ports.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.Ports.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getPortsFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (portsBuilder_ == null) {
+          ports_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+        } else {
+          portsBuilder_.clear();
+        }
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Ports_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.Ports getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.Ports.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.Ports build() {
+        org.apache.mesos.v1.Protos.Ports result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.Ports buildPartial() {
+        org.apache.mesos.v1.Protos.Ports result = new org.apache.mesos.v1.Protos.Ports(this);
+        int from_bitField0_ = bitField0_;
+        if (portsBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            ports_ = java.util.Collections.unmodifiableList(ports_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.ports_ = ports_;
+        } else {
+          result.ports_ = portsBuilder_.build();
+        }
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.Ports) {
+          return mergeFrom((org.apache.mesos.v1.Protos.Ports)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.Ports other) {
+        if (other == org.apache.mesos.v1.Protos.Ports.getDefaultInstance()) return this;
+        if (portsBuilder_ == null) {
+          if (!other.ports_.isEmpty()) {
+            if (ports_.isEmpty()) {
+              ports_ = other.ports_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensurePortsIsMutable();
+              ports_.addAll(other.ports_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.ports_.isEmpty()) {
+            if (portsBuilder_.isEmpty()) {
+              portsBuilder_.dispose();
+              portsBuilder_ = null;
+              ports_ = other.ports_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              portsBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getPortsFieldBuilder() : null;
+            } else {
+              portsBuilder_.addAllMessages(other.ports_);
+            }
+          }
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        for (int i = 0; i < getPortsCount(); i++) {
+          if (!getPorts(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.Ports parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.Ports) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // repeated .mesos.v1.Port ports = 1;
+      private java.util.List<org.apache.mesos.v1.Protos.Port> ports_ =
+        java.util.Collections.emptyList();
+      private void ensurePortsIsMutable() {
+        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+          ports_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Port>(ports_);
+          bitField0_ |= 0x00000001;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.Port, org.apache.mesos.v1.Protos.Port.Builder, org.apache.mesos.v1.Protos.PortOrBuilder> portsBuilder_;
+
+      /**
+       * <code>repeated .mesos.v1.Port ports = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Port> getPortsList() {
+        if (portsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(ports_);
+        } else {
+          return portsBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Port ports = 1;</code>
+       */
+      public int getPortsCount() {
+        if (portsBuilder_ == null) {
+          return ports_.size();
+        } else {
+          return portsBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Port ports = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.Port getPorts(int index) {
+        if (portsBuilder_ == null) {
+          return ports_.get(index);
+        } else {
+          return portsBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Port ports = 1;</code>
+       */
+      public Builder setPorts(
+          int index, org.apache.mesos.v1.Protos.Port value) {
+        if (portsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensurePortsIsMutable();
+          ports_.set(index, value);
+          onChanged();
+        } else {
+          portsBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Port ports = 1;</code>
+       */
+      public Builder setPorts(
+          int index, org.apache.mesos.v1.Protos.Port.Builder builderForValue) {
+        if (portsBuilder_ == null) {
+          ensurePortsIsMutable();
+          ports_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          portsBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Port ports = 1;</code>
+       */
+      public Builder addPorts(org.apache.mesos.v1.Protos.Port value) {
+        if (portsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensurePortsIsMutable();
+          ports_.add(value);
+          onChanged();
+        } else {
+          portsBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Port ports = 1;</code>
+       */
+      public Builder addPorts(
+          int index, org.apache.mesos.v1.Protos.Port value) {
+        if (portsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensurePortsIsMutable();
+          ports_.add(index, value);
+          onChanged();
+        } else {
+          portsBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Port ports = 1;</code>
+       */
+      public Builder addPorts(
+          org.apache.mesos.v1.Protos.Port.Builder builderForValue) {
+        if (portsBuilder_ == null) {
+          ensurePortsIsMutable();
+          ports_.add(builderForValue.build());
+          onChanged();
+        } else {
+          portsBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Port ports = 1;</code>
+       */
+      public Builder addPorts(
+          int index, org.apache.mesos.v1.Protos.Port.Builder builderForValue) {
+        if (portsBuilder_ == null) {
+          ensurePortsIsMutable();
+          ports_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          portsBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Port ports = 1;</code>
+       */
+      public Builder addAllPorts(
+          java.lang.Iterable<? extends org.apache.mesos.v1.Protos.Port> values) {
+        if (portsBuilder_ == null) {
+          ensurePortsIsMutable();
+          super.addAll(values, ports_);
+          onChanged();
+        } else {
+          portsBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Port ports = 1;</code>
+       */
+      public Builder clearPorts() {
+        if (portsBuilder_ == null) {
+          ports_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+        } else {
+          portsBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Port ports = 1;</code>
+       */
+      public Builder removePorts(int index) {
+        if (portsBuilder_ == null) {
+          ensurePortsIsMutable();
+          ports_.remove(index);
+          onChanged();
+        } else {
+          portsBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Port ports = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.Port.Builder getPortsBuilder(
+          int index) {
+        return getPortsFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.Port ports = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.PortOrBuilder getPortsOrBuilder(
+          int index) {
+        if (portsBuilder_ == null) {
+          return ports_.get(index);  } else {
+          return portsBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Port ports = 1;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.PortOrBuilder> 
+           getPortsOrBuilderList() {
+        if (portsBuilder_ != null) {
+          return portsBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(ports_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Port ports = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.Port.Builder addPortsBuilder() {
+        return getPortsFieldBuilder().addBuilder(
+            org.apache.mesos.v1.Protos.Port.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.Port ports = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.Port.Builder addPortsBuilder(
+          int index) {
+        return getPortsFieldBuilder().addBuilder(
+            index, org.apache.mesos.v1.Protos.Port.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.Port ports = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Port.Builder> 
+           getPortsBuilderList() {
+        return getPortsFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.Port, org.apache.mesos.v1.Protos.Port.Builder, org.apache.mesos.v1.Protos.PortOrBuilder> 
+          getPortsFieldBuilder() {
+        if (portsBuilder_ == null) {
+          portsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.Port, org.apache.mesos.v1.Protos.Port.Builder, org.apache.mesos.v1.Protos.PortOrBuilder>(
+                  ports_,
+                  ((bitField0_ & 0x00000001) == 0x00000001),
+                  getParentForChildren(),
+                  isClean());
+          ports_ = null;
+        }
+        return portsBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.Ports)
+    }
+
+    static {
+      defaultInstance = new Ports(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.Ports)
+  }
+
+  public interface DiscoveryInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required .mesos.v1.DiscoveryInfo.Visibility visibility = 1;
+    /**
+     * <code>required .mesos.v1.DiscoveryInfo.Visibility visibility = 1;</code>
+     */
+    boolean hasVisibility();
+    /**
+     * <code>required .mesos.v1.DiscoveryInfo.Visibility visibility = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.DiscoveryInfo.Visibility getVisibility();
+
+    // optional string name = 2;
+    /**
+     * <code>optional string name = 2;</code>
+     */
+    boolean hasName();
+    /**
+     * <code>optional string name = 2;</code>
+     */
+    java.lang.String getName();
+    /**
+     * <code>optional string name = 2;</code>
+     */
+    com.google.protobuf.ByteString
+        getNameBytes();
+
+    // optional string environment = 3;
+    /**
+     * <code>optional string environment = 3;</code>
+     */
+    boolean hasEnvironment();
+    /**
+     * <code>optional string environment = 3;</code>
+     */
+    java.lang.String getEnvironment();
+    /**
+     * <code>optional string environment = 3;</code>
+     */
+    com.google.protobuf.ByteString
+        getEnvironmentBytes();
+
+    // optional string location = 4;
+    /**
+     * <code>optional string location = 4;</code>
+     */
+    boolean hasLocation();
+    /**
+     * <code>optional string location = 4;</code>
+     */
+    java.lang.String getLocation();
+    /**
+     * <code>optional string location = 4;</code>
+     */
+    com.google.protobuf.ByteString
+        getLocationBytes();
+
+    // optional string version = 5;
+    /**
+     * <code>optional string version = 5;</code>
+     */
+    boolean hasVersion();
+    /**
+     * <code>optional string version = 5;</code>
+     */
+    java.lang.String getVersion();
+    /**
+     * <code>optional string version = 5;</code>
+     */
+    com.google.protobuf.ByteString
+        getVersionBytes();
+
+    // optional .mesos.v1.Ports ports = 6;
+    /**
+     * <code>optional .mesos.v1.Ports ports = 6;</code>
+     */
+    boolean hasPorts();
+    /**
+     * <code>optional .mesos.v1.Ports ports = 6;</code>
+     */
+    org.apache.mesos.v1.Protos.Ports getPorts();
+    /**
+     * <code>optional .mesos.v1.Ports ports = 6;</code>
+     */
+    org.apache.mesos.v1.Protos.PortsOrBuilder getPortsOrBuilder();
+
+    // optional .mesos.v1.Labels labels = 7;
+    /**
+     * <code>optional .mesos.v1.Labels labels = 7;</code>
+     */
+    boolean hasLabels();
+    /**
+     * <code>optional .mesos.v1.Labels labels = 7;</code>
+     */
+    org.apache.mesos.v1.Protos.Labels getLabels();
+    /**
+     * <code>optional .mesos.v1.Labels labels = 7;</code>
+     */
+    org.apache.mesos.v1.Protos.LabelsOrBuilder getLabelsOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.DiscoveryInfo}
+   *
+   * <pre>
+   **
+   * Service discovery information.
+   * The visibility field restricts discovery within a framework (FRAMEWORK),
+   * within a Mesos cluster (CLUSTER), or places no restrictions (EXTERNAL).
+   * Each port in the ports field also has an optional visibility field.
+   * If visibility is specified for a port, it overrides the default service-wide
+   * DiscoveryInfo.visibility for that port.
+   * The environment, location, and version fields provide first class support for
+   * common attributes used to differentiate between similar services. The
+   * environment may receive values such as PROD/QA/DEV, the location field may
+   * receive values like EAST-US/WEST-US/EUROPE/AMEA, and the version field may
+   * receive values like v2.0/v0.9. The exact use of these fields is up to each
+   * service discovery system.
+   * </pre>
+   */
+  public static final class DiscoveryInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements DiscoveryInfoOrBuilder {
+    // Use DiscoveryInfo.newBuilder() to construct.
+    private DiscoveryInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private DiscoveryInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final DiscoveryInfo defaultInstance;
+    public static DiscoveryInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public DiscoveryInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private DiscoveryInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 8: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.v1.Protos.DiscoveryInfo.Visibility value = org.apache.mesos.v1.Protos.DiscoveryInfo.Visibility.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(1, rawValue);
+              } else {
+                bitField0_ |= 0x00000001;
+                visibility_ = value;
+              }
+              break;
+            }
+            case 18: {
+              bitField0_ |= 0x00000002;
+              name_ = input.readBytes();
+              break;
+            }
+            case 26: {
+              bitField0_ |= 0x00000004;
+              environment_ = input.readBytes();
+              break;
+            }
+            case 34: {
+              bitField0_ |= 0x00000008;
+              location_ = input.readBytes();
+              break;
+            }
+            case 42: {
+              bitField0_ |= 0x00000010;
+              version_ = input.readBytes();
+              break;
+            }
+            case 50: {
+              org.apache.mesos.v1.Protos.Ports.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000020) == 0x00000020)) {
+                subBuilder = ports_.toBuilder();
+              }
+              ports_ = input.readMessage(org.apache.mesos.v1.Protos.Ports.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(ports_);
+                ports_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000020;
+              break;
+            }
+            case 58: {
+              org.apache.mesos.v1.Protos.Labels.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000040) == 0x00000040)) {
+                subBuilder = labels_.toBuilder();
+              }
+              labels_ = input.readMessage(org.apache.mesos.v1.Protos.Labels.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(labels_);
+                labels_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000040;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DiscoveryInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DiscoveryInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.DiscoveryInfo.class, org.apache.mesos.v1.Protos.DiscoveryInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<DiscoveryInfo> PARSER =
+        new com.google.protobuf.AbstractParser<DiscoveryInfo>() {
+      public DiscoveryInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new DiscoveryInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<DiscoveryInfo> getParserForType() {
+      return PARSER;
+    }
+
+    /**
+     * Protobuf enum {@code mesos.v1.DiscoveryInfo.Visibility}
+     */
+    public enum Visibility
+        implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>FRAMEWORK = 0;</code>
+       */
+      FRAMEWORK(0, 0),
+      /**
+       * <code>CLUSTER = 1;</code>
+       */
+      CLUSTER(1, 1),
+      /**
+       * <code>EXTERNAL = 2;</code>
+       */
+      EXTERNAL(2, 2),
+      ;
+
+      /**
+       * <code>FRAMEWORK = 0;</code>
+       */
+      public static final int FRAMEWORK_VALUE = 0;
+      /**
+       * <code>CLUSTER = 1;</code>
+       */
+      public static final int CLUSTER_VALUE = 1;
+      /**
+       * <code>EXTERNAL = 2;</code>
+       */
+      public static final int EXTERNAL_VALUE = 2;
+
+
+      public final int getNumber() { return value; }
+
+      public static Visibility valueOf(int value) {
+        switch (value) {
+          case 0: return FRAMEWORK;
+          case 1: return CLUSTER;
+          case 2: return EXTERNAL;
+          default: return null;
+        }
+      }
+
+      public static com.google.protobuf.Internal.EnumLiteMap<Visibility>
+          internalGetValueMap() {
+        return internalValueMap;
+      }
+      private static com.google.protobuf.Internal.EnumLiteMap<Visibility>
+          internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap<Visibility>() {
+              public Visibility findValueByNumber(int number) {
+                return Visibility.valueOf(number);
+              }
+            };
+
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
+          getValueDescriptor() {
+        return getDescriptor().getValues().get(index);
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptorForType() {
+        return getDescriptor();
+      }
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.DiscoveryInfo.getDescriptor().getEnumTypes().get(0);
+      }
+
+      private static final Visibility[] VALUES = values();
+
+      public static Visibility valueOf(
+          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+        if (desc.getType() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "EnumValueDescriptor is not for this type.");
+        }
+        return VALUES[desc.getIndex()];
+      }
+
+      private final int index;
+      private final int value;
+
+      private Visibility(int index, int value) {
+        this.index = index;
+        this.value = value;
+      }
+
+      // @@protoc_insertion_point(enum_scope:mesos.v1.DiscoveryInfo.Visibility)
+    }
+
+    private int bitField0_;
+    // required .mesos.v1.DiscoveryInfo.Visibility visibility = 1;
+    public static final int VISIBILITY_FIELD_NUMBER = 1;
+    private org.apache.mesos.v1.Protos.DiscoveryInfo.Visibility visibility_;
+    /**
+     * <code>required .mesos.v1.DiscoveryInfo.Visibility visibility = 1;</code>
+     */
+    public boolean hasVisibility() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required .mesos.v1.DiscoveryInfo.Visibility visibility = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.DiscoveryInfo.Visibility getVisibility() {
+      return visibility_;
+    }
+
+    // optional string name = 2;
+    public static final int NAME_FIELD_NUMBER = 2;
+    private java.lang.Object name_;
+    /**
+     * <code>optional string name = 2;</code>
+     */
+    public boolean hasName() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional string name = 2;</code>
+     */
+    public java.lang.String getName() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          name_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string name = 2;</code>
+     */
+    public com.google.protobuf.ByteString
+        getNameBytes() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        name_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional string environment = 3;
+    public static final int ENVIRONMENT_FIELD_NUMBER = 3;
+    private java.lang.Object environment_;
+    /**
+     * <code>optional string environment = 3;</code>
+     */
+    public boolean hasEnvironment() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional string environment = 3;</code>
+     */
+    public java.lang.String getEnvironment() {
+      java.lang.Object ref = environment_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          environment_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string environment = 3;</code>
+     */
+    public com.google.protobuf.ByteString
+        getEnvironmentBytes() {
+      java.lang.Object ref = environment_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        environment_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional string location = 4;
+    public static final int LOCATION_FIELD_NUMBER = 4;
+    private java.lang.Object location_;
+    /**
+     * <code>optional string location = 4;</code>
+     */
+    public boolean hasLocation() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional string location = 4;</code>
+     */
+    public java.lang.String getLocation() {
+      java.lang.Object ref = location_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          location_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string location = 4;</code>
+     */
+    public com.google.protobuf.ByteString
+        getLocationBytes() {
+      java.lang.Object ref = location_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        location_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional string version = 5;
+    public static final int VERSION_FIELD_NUMBER = 5;
+    private java.lang.Object version_;
+    /**
+     * <code>optional string version = 5;</code>
+     */
+    public boolean hasVersion() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional string version = 5;</code>
+     */
+    public java.lang.String getVersion() {
+      java.lang.Object ref = version_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          version_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string version = 5;</code>
+     */
+    public com.google.protobuf.ByteString
+        getVersionBytes() {
+      java.lang.Object ref = version_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        version_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional .mesos.v1.Ports ports = 6;
+    public static final int PORTS_FIELD_NUMBER = 6;
+    private org.apache.mesos.v1.Protos.Ports ports_;
+    /**
+     * <code>optional .mesos.v1.Ports ports = 6;</code>
+     */
+    public boolean hasPorts() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional .mesos.v1.Ports ports = 6;</code>
+     */
+    public org.apache.mesos.v1.Protos.Ports getPorts() {
+      return ports_;
+    }
+    /**
+     * <code>optional .mesos.v1.Ports ports = 6;</code>
+     */
+    public org.apache.mesos.v1.Protos.PortsOrBuilder getPortsOrBuilder() {
+      return ports_;
+    }
+
+    // optional .mesos.v1.Labels labels = 7;
+    public static final int LABELS_FIELD_NUMBER = 7;
+    private org.apache.mesos.v1.Protos.Labels labels_;
+    /**
+     * <code>optional .mesos.v1.Labels labels = 7;</code>
+     */
+    public boolean hasLabels() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional .mesos.v1.Labels labels = 7;</code>
+     */
+    public org.apache.mesos.v1.Protos.Labels getLabels() {
+      return labels_;
+    }
+    /**
+     * <code>optional .mesos.v1.Labels labels = 7;</code>
+     */
+    public org.apache.mesos.v1.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+      return labels_;
+    }
+
+    private void initFields() {
+      visibility_ = org.apache.mesos.v1.Protos.DiscoveryInfo.Visibility.FRAMEWORK;
+      name_ = "";
+      environment_ = "";
+      location_ = "";
+      version_ = "";
+      ports_ = org.apache.mesos.v1.Protos.Ports.getDefaultInstance();
+      labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasVisibility()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (hasPorts()) {
+        if (!getPorts().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasLabels()) {
+        if (!getLabels().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeEnum(1, visibility_.getNumber());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(2, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeBytes(3, getEnvironmentBytes());
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeBytes(4, getLocationBytes());
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeBytes(5, getVersionBytes());
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeMessage(6, ports_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeMessage(7, labels_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(1, visibility_.getNumber());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(2, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(3, getEnvironmentBytes());
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(4, getLocationBytes());
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(5, getVersionBytes());
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(6, ports_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(7, labels_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.DiscoveryInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.DiscoveryInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.DiscoveryInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.DiscoveryInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.DiscoveryInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.DiscoveryInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.DiscoveryInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.DiscoveryInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.DiscoveryInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.DiscoveryInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.DiscoveryInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.DiscoveryInfo}
+     *
+     * <pre>
+     **
+     * Service discovery information.
+     * The visibility field restricts discovery within a framework (FRAMEWORK),
+     * within a Mesos cluster (CLUSTER), or places no restrictions (EXTERNAL).
+     * Each port in the ports field also has an optional visibility field.
+     * If visibility is specified for a port, it overrides the default service-wide
+     * DiscoveryInfo.visibility for that port.
+     * The environment, location, and version fields provide first class support for
+     * common attributes used to differentiate between similar services. The
+     * environment may receive values such as PROD/QA/DEV, the location field may
+     * receive values like EAST-US/WEST-US/EUROPE/AMEA, and the version field may
+     * receive values like v2.0/v0.9. The exact use of these fields is up to each
+     * service discovery system.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.DiscoveryInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DiscoveryInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DiscoveryInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.DiscoveryInfo.class, org.apache.mesos.v1.Protos.DiscoveryInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.DiscoveryInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getPortsFieldBuilder();
+          getLabelsFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        visibility_ = org.apache.mesos.v1.Protos.DiscoveryInfo.Visibility.FRAMEWORK;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        name_ = "";
+        bitField0_ = (bitField0_ & ~0x00000002);
+        environment_ = "";
+        bitField0_ = (bitField0_ & ~0x00000004);
+        location_ = "";
+        bitField0_ = (bitField0_ & ~0x00000008);
+        version_ = "";
+        bitField0_ = (bitField0_ & ~0x00000010);
+        if (portsBuilder_ == null) {
+          ports_ = org.apache.mesos.v1.Protos.Ports.getDefaultInstance();
+        } else {
+          portsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
+        if (labelsBuilder_ == null) {
+          labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+        } else {
+          labelsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000040);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DiscoveryInfo_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.DiscoveryInfo getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.DiscoveryInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.DiscoveryInfo build() {
+        org.apache.mesos.v1.Protos.DiscoveryInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.DiscoveryInfo buildPartial() {
+        org.apache.mesos.v1.Protos.DiscoveryInfo result = new org.apache.mesos.v1.Protos.DiscoveryInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.visibility_ = visibility_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.name_ = name_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.environment_ = environment_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.location_ = location_;
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.version_ = version_;
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        if (portsBuilder_ == null) {
+          result.ports_ = ports_;
+        } else {
+          result.ports_ = portsBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        if (labelsBuilder_ == null) {
+          result.labels_ = labels_;
+        } else {
+          result.labels_ = labelsBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.DiscoveryInfo) {
+          return mergeFrom((org.apache.mesos.v1.Protos.DiscoveryInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.DiscoveryInfo other) {
+        if (other == org.apache.mesos.v1.Protos.DiscoveryInfo.getDefaultInstance()) return this;
+        if (other.hasVisibility()) {
+          setVisibility(other.getVisibility());
+        }
+        if (other.hasName()) {
+          bitField0_ |= 0x00000002;
+          name_ = other.name_;
+          onChanged();
+        }
+        if (other.hasEnvironment()) {
+          bitField0_ |= 0x00000004;
+          environment_ = other.environment_;
+          onChanged();
+        }
+        if (other.hasLocation()) {
+          bitField0_ |= 0x00000008;
+          location_ = other.location_;
+          onChanged();
+        }
+        if (other.hasVersion()) {
+          bitField0_ |= 0x00000010;
+          version_ = other.version_;
+          onChanged();
+        }
+        if (other.hasPorts()) {
+          mergePorts(other.getPorts());
+        }
+        if (other.hasLabels()) {
+          mergeLabels(other.getLabels());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasVisibility()) {
+          
+          return false;
+        }
+        if (hasPorts()) {
+          if (!getPorts().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasLabels()) {
+          if (!getLabels().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.DiscoveryInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.DiscoveryInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required .mesos.v1.DiscoveryInfo.Visibility visibility = 1;
+      private org.apache.mesos.v1.Protos.DiscoveryInfo.Visibility visibility_ = org.apache.mesos.v1.Protos.DiscoveryInfo.Visibility.FRAMEWORK;
+      /**
+       * <code>required .mesos.v1.DiscoveryInfo.Visibility visibility = 1;</code>
+       */
+      public boolean hasVisibility() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.v1.DiscoveryInfo.Visibility visibility = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.DiscoveryInfo.Visibility getVisibility() {
+        return visibility_;
+      }
+      /**
+       * <code>required .mesos.v1.DiscoveryInfo.Visibility visibility = 1;</code>
+       */
+      public Builder setVisibility(org.apache.mesos.v1.Protos.DiscoveryInfo.Visibility value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000001;
+        visibility_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.DiscoveryInfo.Visibility visibility = 1;</code>
+       */
+      public Builder clearVisibility() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        visibility_ = org.apache.mesos.v1.Protos.DiscoveryInfo.Visibility.FRAMEWORK;
+        onChanged();
+        return this;
+      }
+
+      // optional string name = 2;
+      private java.lang.Object name_ = "";
+      /**
+       * <code>optional string name = 2;</code>
+       */
+      public boolean hasName() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional string name = 2;</code>
+       */
+      public java.lang.String getName() {
+        java.lang.Object ref = name_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          name_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string name = 2;</code>
+       */
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        java.lang.Object ref = name_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          name_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string name = 2;</code>
+       */
+      public Builder setName(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string name = 2;</code>
+       */
+      public Builder clearName() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        name_ = getDefaultInstance().getName();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string name = 2;</code>
+       */
+      public Builder setNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional string environment = 3;
+      private java.lang.Object environment_ = "";
+      /**
+       * <code>optional string environment = 3;</code>
+       */
+      public boolean hasEnvironment() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional string environment = 3;</code>
+       */
+      public java.lang.String getEnvironment() {
+        java.lang.Object ref = environment_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          environment_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string environment = 3;</code>
+       */
+      public com.google.protobuf.ByteString
+          getEnvironmentBytes() {
+        java.lang.Object ref = environment_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          environment_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string environment = 3;</code>
+       */
+      public Builder setEnvironment(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        environment_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string environment = 3;</code>
+       */
+      public Builder clearEnvironment() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        environment_ = getDefaultInstance().getEnvironment();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string environment = 3;</code>
+       */
+      public Builder setEnvironmentBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        environment_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional string location = 4;
+      private java.lang.Object location_ = "";
+      /**
+       * <code>optional string location = 4;</code>
+       */
+      public boolean hasLocation() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional string location = 4;</code>
+       */
+      public java.lang.String getLocation() {
+        java.lang.Object ref = location_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          location_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string location = 4;</code>
+       */
+      public com.google.protobuf.ByteString
+          getLocationBytes() {
+        java.lang.Object ref = location_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          location_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string location = 4;</code>
+       */
+      public Builder setLocation(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+        location_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string location = 4;</code>
+       */
+      public Builder clearLocation() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        location_ = getDefaultInstance().getLocation();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string location = 4;</code>
+       */
+      public Builder setLocationBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+        location_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional string version = 5;
+      private java.lang.Object version_ = "";
+      /**
+       * <code>optional string version = 5;</code>
+       */
+      public boolean hasVersion() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional string version = 5;</code>
+       */
+      public java.lang.String getVersion() {
+        java.lang.Object ref = version_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          version_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string version = 5;</code>
+       */
+      public com.google.protobuf.ByteString
+          getVersionBytes() {
+        java.lang.Object ref = version_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          version_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string version = 5;</code>
+       */
+      public Builder setVersion(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000010;
+        version_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string version = 5;</code>
+       */
+      public Builder clearVersion() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        version_ = getDefaultInstance().getVersion();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string version = 5;</code>
+       */
+      public Builder setVersionBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000010;
+        version_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.v1.Ports ports = 6;
+      private org.apache.mesos.v1.Protos.Ports ports_ = org.apache.mesos.v1.Protos.Ports.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Ports, org.apache.mesos.v1.Protos.Ports.Builder, org.apache.mesos.v1.Protos.PortsOrBuilder> portsBuilder_;
+      /**
+       * <code>optional .mesos.v1.Ports ports = 6;</code>
+       */
+      public boolean hasPorts() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional .mesos.v1.Ports ports = 6;</code>
+       */
+      public org.apache.mesos.v1.Protos.Ports getPorts() {
+        if (portsBuilder_ == null) {
+          return ports_;
+        } else {
+          return portsBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Ports ports = 6;</code>
+       */
+      public Builder setPorts(org.apache.mesos.v1.Protos.Ports value) {
+        if (portsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ports_ = value;
+          onChanged();
+        } else {
+          portsBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Ports ports = 6;</code>
+       */
+      public Builder setPorts(
+          org.apache.mesos.v1.Protos.Ports.Builder builderForValue) {
+        if (portsBuilder_ == null) {
+          ports_ = builderForValue.build();
+          onChanged();
+        } else {
+          portsBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Ports ports = 6;</code>
+       */
+      public Builder mergePorts(org.apache.mesos.v1.Protos.Ports value) {
+        if (portsBuilder_ == null) {
+          if (((bitField0_ & 0x00000020) == 0x00000020) &&
+              ports_ != org.apache.mesos.v1.Protos.Ports.getDefaultInstance()) {
+            ports_ =
+              org.apache.mesos.v1.Protos.Ports.newBuilder(ports_).mergeFrom(value).buildPartial();
+          } else {
+            ports_ = value;
+          }
+          onChanged();
+        } else {
+          portsBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Ports ports = 6;</code>
+       */
+      public Builder clearPorts() {
+        if (portsBuilder_ == null) {
+          ports_ = org.apache.mesos.v1.Protos.Ports.getDefaultInstance();
+          onChanged();
+        } else {
+          portsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Ports ports = 6;</code>
+       */
+      public org.apache.mesos.v1.Protos.Ports.Builder getPortsBuilder() {
+        bitField0_ |= 0x00000020;
+        onChanged();
+        return getPortsFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.Ports ports = 6;</code>
+       */
+      public org.apache.mesos.v1.Protos.PortsOrBuilder getPortsOrBuilder() {
+        if (portsBuilder_ != null) {
+          return portsBuilder_.getMessageOrBuilder();
+        } else {
+          return ports_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Ports ports = 6;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Ports, org.apache.mesos.v1.Protos.Ports.Builder, org.apache.mesos.v1.Protos.PortsOrBuilder> 
+          getPortsFieldBuilder() {
+        if (portsBuilder_ == null) {
+          portsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Ports, org.apache.mesos.v1.Protos.Ports.Builder, org.apache.mesos.v1.Protos.PortsOrBuilder>(
+                  ports_,
+                  getParentForChildren(),
+                  isClean());
+          ports_ = null;
+        }
+        return portsBuilder_;
+      }
+
+      // optional .mesos.v1.Labels labels = 7;
+      private org.apache.mesos.v1.Protos.Labels labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Labels, org.apache.mesos.v1.Protos.Labels.Builder, org.apache.mesos.v1.Protos.LabelsOrBuilder> labelsBuilder_;
+      /**
+       * <code>optional .mesos.v1.Labels labels = 7;</code>
+       */
+      public boolean hasLabels() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 7;</code>
+       */
+      public org.apache.mesos.v1.Protos.Labels getLabels() {
+        if (labelsBuilder_ == null) {
+          return labels_;
+        } else {
+          return labelsBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 7;</code>
+       */
+      public Builder setLabels(org.apache.mesos.v1.Protos.Labels value) {
+        if (labelsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          labels_ = value;
+          onChanged();
+        } else {
+          labelsBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 7;</code>
+       */
+      public Builder setLabels(
+          org.apache.mesos.v1.Protos.Labels.Builder builderForValue) {
+        if (labelsBuilder_ == null) {
+          labels_ = builderForValue.build();
+          onChanged();
+        } else {
+          labelsBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 7;</code>
+       */
+      public Builder mergeLabels(org.apache.mesos.v1.Protos.Labels value) {
+        if (labelsBuilder_ == null) {
+          if (((bitField0_ & 0x00000040) == 0x00000040) &&
+              labels_ != org.apache.mesos.v1.Protos.Labels.getDefaultInstance()) {
+            labels_ =
+              org.apache.mesos.v1.Protos.Labels.newBuilder(labels_).mergeFrom(value).buildPartial();
+          } else {
+            labels_ = value;
+          }
+          onChanged();
+        } else {
+          labelsBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 7;</code>
+       */
+      public Builder clearLabels() {
+        if (labelsBuilder_ == null) {
+          labels_ = org.apache.mesos.v1.Protos.Labels.getDefaultInstance();
+          onChanged();
+        } else {
+          labelsBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000040);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 7;</code>
+       */
+      public org.apache.mesos.v1.Protos.Labels.Builder getLabelsBuilder() {
+        bitField0_ |= 0x00000040;
+        onChanged();
+        return getLabelsFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 7;</code>
+       */
+      public org.apache.mesos.v1.Protos.LabelsOrBuilder getLabelsOrBuilder() {
+        if (labelsBuilder_ != null) {
+          return labelsBuilder_.getMessageOrBuilder();
+        } else {
+          return labels_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Labels labels = 7;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Labels, org.apache.mesos.v1.Protos.Labels.Builder, org.apache.mesos.v1.Protos.LabelsOrBuilder> 
+          getLabelsFieldBuilder() {
+        if (labelsBuilder_ == null) {
+          labelsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Labels, org.apache.mesos.v1.Protos.Labels.Builder, org.apache.mesos.v1.Protos.LabelsOrBuilder>(
+                  labels_,
+                  getParentForChildren(),
+                  isClean());
+          labels_ = null;
+        }
+        return labelsBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.DiscoveryInfo)
+    }
+
+    static {
+      defaultInstance = new DiscoveryInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.DiscoveryInfo)
+  }
+
+  public interface WeightInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required double weight = 1;
+    /**
+     * <code>required double weight = 1;</code>
+     */
+    boolean hasWeight();
+    /**
+     * <code>required double weight = 1;</code>
+     */
+    double getWeight();
+
+    // optional string role = 2;
+    /**
+     * <code>optional string role = 2;</code>
+     *
+     * <pre>
+     * Related role name.
+     * </pre>
+     */
+    boolean hasRole();
+    /**
+     * <code>optional string role = 2;</code>
+     *
+     * <pre>
+     * Related role name.
+     * </pre>
+     */
+    java.lang.String getRole();
+    /**
+     * <code>optional string role = 2;</code>
+     *
+     * <pre>
+     * Related role name.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getRoleBytes();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.WeightInfo}
+   *
+   * <pre>
+   **
+   * Named WeightInfo to indicate resource allocation
+   * priority between the different roles.
+   * </pre>
+   */
+  public static final class WeightInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements WeightInfoOrBuilder {
+    // Use WeightInfo.newBuilder() to construct.
+    private WeightInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private WeightInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final WeightInfo defaultInstance;
+    public static WeightInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public WeightInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private WeightInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 9: {
+              bitField0_ |= 0x00000001;
+              weight_ = input.readDouble();
+              break;
+            }
+            case 18: {
+              bitField0_ |= 0x00000002;
+              role_ = input.readBytes();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_WeightInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_WeightInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.WeightInfo.class, org.apache.mesos.v1.Protos.WeightInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<WeightInfo> PARSER =
+        new com.google.protobuf.AbstractParser<WeightInfo>() {
+      public WeightInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new WeightInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<WeightInfo> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required double weight = 1;
+    public static final int WEIGHT_FIELD_NUMBER = 1;
+    private double weight_;
+    /**
+     * <code>required double weight = 1;</code>
+     */
+    public boolean hasWeight() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required double weight = 1;</code>
+     */
+    public double getWeight() {
+      return weight_;
+    }
+
+    // optional string role = 2;
+    public static final int ROLE_FIELD_NUMBER = 2;
+    private java.lang.Object role_;
+    /**
+     * <code>optional string role = 2;</code>
+     *
+     * <pre>
+     * Related role name.
+     * </pre>
+     */
+    public boolean hasRole() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional string role = 2;</code>
+     *
+     * <pre>
+     * Related role name.
+     * </pre>
+     */
+    public java.lang.String getRole() {
+      java.lang.Object ref = role_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          role_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string role = 2;</code>
+     *
+     * <pre>
+     * Related role name.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getRoleBytes() {
+      java.lang.Object ref = role_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        role_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      weight_ = 0D;
+      role_ = "";
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasWeight()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeDouble(1, weight_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(2, getRoleBytes());
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(1, weight_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(2, getRoleBytes());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.WeightInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.WeightInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.WeightInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.WeightInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.WeightInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.WeightInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.WeightInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.WeightInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.WeightInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.WeightInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.WeightInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.WeightInfo}
+     *
+     * <pre>
+     **
+     * Named WeightInfo to indicate resource allocation
+     * priority between the different roles.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.WeightInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_WeightInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_WeightInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.WeightInfo.class, org.apache.mesos.v1.Protos.WeightInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.WeightInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        weight_ = 0D;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        role_ = "";
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_WeightInfo_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.WeightInfo getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.WeightInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.WeightInfo build() {
+        org.apache.mesos.v1.Protos.WeightInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.WeightInfo buildPartial() {
+        org.apache.mesos.v1.Protos.WeightInfo result = new org.apache.mesos.v1.Protos.WeightInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.weight_ = weight_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.role_ = role_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.WeightInfo) {
+          return mergeFrom((org.apache.mesos.v1.Protos.WeightInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.WeightInfo other) {
+        if (other == org.apache.mesos.v1.Protos.WeightInfo.getDefaultInstance()) return this;
+        if (other.hasWeight()) {
+          setWeight(other.getWeight());
+        }
+        if (other.hasRole()) {
+          bitField0_ |= 0x00000002;
+          role_ = other.role_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasWeight()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.WeightInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.WeightInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required double weight = 1;
+      private double weight_ ;
+      /**
+       * <code>required double weight = 1;</code>
+       */
+      public boolean hasWeight() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required double weight = 1;</code>
+       */
+      public double getWeight() {
+        return weight_;
+      }
+      /**
+       * <code>required double weight = 1;</code>
+       */
+      public Builder setWeight(double value) {
+        bitField0_ |= 0x00000001;
+        weight_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required double weight = 1;</code>
+       */
+      public Builder clearWeight() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        weight_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // optional string role = 2;
+      private java.lang.Object role_ = "";
+      /**
+       * <code>optional string role = 2;</code>
+       *
+       * <pre>
+       * Related role name.
+       * </pre>
+       */
+      public boolean hasRole() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional string role = 2;</code>
+       *
+       * <pre>
+       * Related role name.
+       * </pre>
+       */
+      public java.lang.String getRole() {
+        java.lang.Object ref = role_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          role_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string role = 2;</code>
+       *
+       * <pre>
+       * Related role name.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getRoleBytes() {
+        java.lang.Object ref = role_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          role_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string role = 2;</code>
+       *
+       * <pre>
+       * Related role name.
+       * </pre>
+       */
+      public Builder setRole(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        role_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string role = 2;</code>
+       *
+       * <pre>
+       * Related role name.
+       * </pre>
+       */
+      public Builder clearRole() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        role_ = getDefaultInstance().getRole();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string role = 2;</code>
+       *
+       * <pre>
+       * Related role name.
+       * </pre>
+       */
+      public Builder setRoleBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        role_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.WeightInfo)
+    }
+
+    static {
+      defaultInstance = new WeightInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.WeightInfo)
+  }
+
+  public interface VersionInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string version = 1;
+    /**
+     * <code>required string version = 1;</code>
+     */
+    boolean hasVersion();
+    /**
+     * <code>required string version = 1;</code>
+     */
+    java.lang.String getVersion();
+    /**
+     * <code>required string version = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getVersionBytes();
+
+    // optional string build_date = 2;
+    /**
+     * <code>optional string build_date = 2;</code>
+     */
+    boolean hasBuildDate();
+    /**
+     * <code>optional string build_date = 2;</code>
+     */
+    java.lang.String getBuildDate();
+    /**
+     * <code>optional string build_date = 2;</code>
+     */
+    com.google.protobuf.ByteString
+        getBuildDateBytes();
+
+    // optional double build_time = 3;
+    /**
+     * <code>optional double build_time = 3;</code>
+     */
+    boolean hasBuildTime();
+    /**
+     * <code>optional double build_time = 3;</code>
+     */
+    double getBuildTime();
+
+    // optional string build_user = 4;
+    /**
+     * <code>optional string build_user = 4;</code>
+     */
+    boolean hasBuildUser();
+    /**
+     * <code>optional string build_user = 4;</code>
+     */
+    java.lang.String getBuildUser();
+    /**
+     * <code>optional string build_user = 4;</code>
+     */
+    com.google.protobuf.ByteString
+        getBuildUserBytes();
+
+    // optional string git_sha = 5;
+    /**
+     * <code>optional string git_sha = 5;</code>
+     */
+    boolean hasGitSha();
+    /**
+     * <code>optional string git_sha = 5;</code>
+     */
+    java.lang.String getGitSha();
+    /**
+     * <code>optional string git_sha = 5;</code>
+     */
+    com.google.protobuf.ByteString
+        getGitShaBytes();
+
+    // optional string git_branch = 6;
+    /**
+     * <code>optional string git_branch = 6;</code>
+     */
+    boolean hasGitBranch();
+    /**
+     * <code>optional string git_branch = 6;</code>
+     */
+    java.lang.String getGitBranch();
+    /**
+     * <code>optional string git_branch = 6;</code>
+     */
+    com.google.protobuf.ByteString
+        getGitBranchBytes();
+
+    // optional string git_tag = 7;
+    /**
+     * <code>optional string git_tag = 7;</code>
+     */
+    boolean hasGitTag();
+    /**
+     * <code>optional string git_tag = 7;</code>
+     */
+    java.lang.String getGitTag();
+    /**
+     * <code>optional string git_tag = 7;</code>
+     */
+    com.google.protobuf.ByteString
+        getGitTagBytes();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.VersionInfo}
+   *
+   * <pre>
+   **
+   * Version information of a component.
+   * </pre>
+   */
+  public static final class VersionInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements VersionInfoOrBuilder {
+    // Use VersionInfo.newBuilder() to construct.
+    private VersionInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private VersionInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final VersionInfo defaultInstance;
+    public static VersionInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public VersionInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private VersionInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              version_ = input.readBytes();
+              break;
+            }
+            case 18: {
+              bitField0_ |= 0x00000002;
+              buildDate_ = input.readBytes();
+              break;
+            }
+            case 25: {
+              bitField0_ |= 0x00000004;
+              buildTime_ = input.readDouble();
+              break;
+            }
+            case 34: {
+              bitField0_ |= 0x00000008;
+              buildUser_ = input.readBytes();
+              break;
+            }
+            case 42: {
+              bitField0_ |= 0x00000010;
+              gitSha_ = input.readBytes();
+              break;
+            }
+            case 50: {
+              bitField0_ |= 0x00000020;
+              gitBranch_ = input.readBytes();
+              break;
+            }
+            case 58: {
+              bitField0_ |= 0x00000040;
+              gitTag_ = input.readBytes();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_VersionInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_VersionInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.VersionInfo.class, org.apache.mesos.v1.Protos.VersionInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<VersionInfo> PARSER =
+        new com.google.protobuf.AbstractParser<VersionInfo>() {
+      public VersionInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new VersionInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<VersionInfo> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string version = 1;
+    public static final int VERSION_FIELD_NUMBER = 1;
+    private java.lang.Object version_;
+    /**
+     * <code>required string version = 1;</code>
+     */
+    public boolean hasVersion() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string version = 1;</code>
+     */
+    public java.lang.String getVersion() {
+      java.lang.Object ref = version_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          version_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string version = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getVersionBytes() {
+      java.lang.Object ref = version_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        version_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional string build_date = 2;
+    public static final int BUILD_DATE_FIELD_NUMBER = 2;
+    private java.lang.Object buildDate_;
+    /**
+     * <code>optional string build_date = 2;</code>
+     */
+    public boolean hasBuildDate() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional string build_date = 2;</code>
+     */
+    public java.lang.String getBuildDate() {
+      java.lang.Object ref = buildDate_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          buildDate_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string build_date = 2;</code>
+     */
+    public com.google.protobuf.ByteString
+        getBuildDateBytes() {
+      java.lang.Object ref = buildDate_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        buildDate_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional double build_time = 3;
+    public static final int BUILD_TIME_FIELD_NUMBER = 3;
+    private double buildTime_;
+    /**
+     * <code>optional double build_time = 3;</code>
+     */
+    public boolean hasBuildTime() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional double build_time = 3;</code>
+     */
+    public double getBuildTime() {
+      return buildTime_;
+    }
+
+    // optional string build_user = 4;
+    public static final int BUILD_USER_FIELD_NUMBER = 4;
+    private java.lang.Object buildUser_;
+    /**
+     * <code>optional string build_user = 4;</code>
+     */
+    public boolean hasBuildUser() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional string build_user = 4;</code>
+     */
+    public java.lang.String getBuildUser() {
+      java.lang.Object ref = buildUser_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          buildUser_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string build_user = 4;</code>
+     */
+    public com.google.protobuf.ByteString
+        getBuildUserBytes() {
+      java.lang.Object ref = buildUser_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        buildUser_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional string git_sha = 5;
+    public static final int GIT_SHA_FIELD_NUMBER = 5;
+    private java.lang.Object gitSha_;
+    /**
+     * <code>optional string git_sha = 5;</code>
+     */
+    public boolean hasGitSha() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional string git_sha = 5;</code>
+     */
+    public java.lang.String getGitSha() {
+      java.lang.Object ref = gitSha_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          gitSha_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string git_sha = 5;</code>
+     */
+    public com.google.protobuf.ByteString
+        getGitShaBytes() {
+      java.lang.Object ref = gitSha_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        gitSha_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional string git_branch = 6;
+    public static final int GIT_BRANCH_FIELD_NUMBER = 6;
+    private java.lang.Object gitBranch_;
+    /**
+     * <code>optional string git_branch = 6;</code>
+     */
+    public boolean hasGitBranch() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional string git_branch = 6;</code>
+     */
+    public java.lang.String getGitBranch() {
+      java.lang.Object ref = gitBranch_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          gitBranch_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string git_branch = 6;</code>
+     */
+    public com.google.protobuf.ByteString
+        getGitBranchBytes() {
+      java.lang.Object ref = gitBranch_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        gitBranch_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional string git_tag = 7;
+    public static final int GIT_TAG_FIELD_NUMBER = 7;
+    private java.lang.Object gitTag_;
+    /**
+     * <code>optional string git_tag = 7;</code>
+     */
+    public boolean hasGitTag() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional string git_tag = 7;</code>
+     */
+    public java.lang.String getGitTag() {
+      java.lang.Object ref = gitTag_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          gitTag_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string git_tag = 7;</code>
+     */
+    public com.google.protobuf.ByteString
+        getGitTagBytes() {
+      java.lang.Object ref = gitTag_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        gitTag_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      version_ = "";
+      buildDate_ = "";
+      buildTime_ = 0D;
+      buildUser_ = "";
+      gitSha_ = "";
+      gitBranch_ = "";
+      gitTag_ = "";
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasVersion()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getVersionBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(2, getBuildDateBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeDouble(3, buildTime_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeBytes(4, getBuildUserBytes());
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeBytes(5, getGitShaBytes());
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeBytes(6, getGitBranchBytes());
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeBytes(7, getGitTagBytes());
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getVersionBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(2, getBuildDateBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(3, buildTime_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(4, getBuildUserBytes());
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(5, getGitShaBytes());
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(6, getGitBranchBytes());
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(7, getGitTagBytes());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.VersionInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.VersionInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.VersionInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.VersionInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.VersionInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.VersionInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.VersionInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.VersionInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.VersionInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.VersionInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.VersionInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.VersionInfo}
+     *
+     * <pre>
+     **
+     * Version information of a component.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.VersionInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_VersionInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_VersionInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.VersionInfo.class, org.apache.mesos.v1.Protos.VersionInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.VersionInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        version_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        buildDate_ = "";
+        bitField0_ = (bitField0_ & ~0x00000002);
+        buildTime_ = 0D;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        buildUser_ = "";
+        bitField0_ = (bitField0_ & ~0x00000008);
+        gitSha_ = "";
+        bitField0_ = (bitField0_ & ~0x00000010);
+        gitBranch_ = "";
+        bitField0_ = (bitField0_ & ~0x00000020);
+        gitTag_ = "";
+        bitField0_ = (bitField0_ & ~0x00000040);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_VersionInfo_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.VersionInfo getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.VersionInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.VersionInfo build() {
+        org.apache.mesos.v1.Protos.VersionInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.VersionInfo buildPartial() {
+        org.apache.mesos.v1.Protos.VersionInfo result = new org.apache.mesos.v1.Protos.VersionInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.version_ = version_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.buildDate_ = buildDate_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.buildTime_ = buildTime_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.buildUser_ = buildUser_;
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.gitSha_ = gitSha_;
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        result.gitBranch_ = gitBranch_;
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        result.gitTag_ = gitTag_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.VersionInfo) {
+          return mergeFrom((org.apache.mesos.v1.Protos.VersionInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.VersionInfo other) {
+        if (other == org.apache.mesos.v1.Protos.VersionInfo.getDefaultInstance()) return this;
+        if (other.hasVersion()) {
+          bitField0_ |= 0x00000001;
+          version_ = other.version_;
+          onChanged();
+        }
+        if (other.hasBuildDate()) {
+          bitField0_ |= 0x00000002;
+          buildDate_ = other.buildDate_;
+          onChanged();
+        }
+        if (other.hasBuildTime()) {
+          setBuildTime(other.getBuildTime());
+        }
+        if (other.hasBuildUser()) {
+          bitField0_ |= 0x00000008;
+          buildUser_ = other.buildUser_;
+          onChanged();
+        }
+        if (other.hasGitSha()) {
+          bitField0_ |= 0x00000010;
+          gitSha_ = other.gitSha_;
+          onChanged();
+        }
+        if (other.hasGitBranch()) {
+          bitField0_ |= 0x00000020;
+          gitBranch_ = other.gitBranch_;
+          onChanged();
+        }
+        if (other.hasGitTag()) {
+          bitField0_ |= 0x00000040;
+          gitTag_ = other.gitTag_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasVersion()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.VersionInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.VersionInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string version = 1;
+      private java.lang.Object version_ = "";
+      /**
+       * <code>required string version = 1;</code>
+       */
+      public boolean hasVersion() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string version = 1;</code>
+       */
+      public java.lang.String getVersion() {
+        java.lang.Object ref = version_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          version_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string version = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getVersionBytes() {
+        java.lang.Object ref = version_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          version_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string version = 1;</code>
+       */
+      public Builder setVersion(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        version_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string version = 1;</code>
+       */
+      public Builder clearVersion() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        version_ = getDefaultInstance().getVersion();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string version = 1;</code>
+       */
+      public Builder setVersionBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        version_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional string build_date = 2;
+      private java.lang.Object buildDate_ = "";
+      /**
+       * <code>optional string build_date = 2;</code>
+       */
+      public boolean hasBuildDate() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional string build_date = 2;</code>
+       */
+      public java.lang.String getBuildDate() {
+        java.lang.Object ref = buildDate_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          buildDate_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string build_date = 2;</code>
+       */
+      public com.google.protobuf.ByteString
+          getBuildDateBytes() {
+        java.lang.Object ref = buildDate_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          buildDate_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string build_date = 2;</code>
+       */
+      public Builder setBuildDate(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        buildDate_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string build_date = 2;</code>
+       */
+      public Builder clearBuildDate() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        buildDate_ = getDefaultInstance().getBuildDate();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string build_date = 2;</code>
+       */
+      public Builder setBuildDateBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        buildDate_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional double build_time = 3;
+      private double buildTime_ ;
+      /**
+       * <code>optional double build_time = 3;</code>
+       */
+      public boolean hasBuildTime() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional double build_time = 3;</code>
+       */
+      public double getBuildTime() {
+        return buildTime_;
+      }
+      /**
+       * <code>optional double build_time = 3;</code>
+       */
+      public Builder setBuildTime(double value) {
+        bitField0_ |= 0x00000004;
+        buildTime_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double build_time = 3;</code>
+       */
+      public Builder clearBuildTime() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        buildTime_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // optional string build_user = 4;
+      private java.lang.Object buildUser_ = "";
+      /**
+       * <code>optional string build_user = 4;</code>
+       */
+      public boolean hasBuildUser() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional string build_user = 4;</code>
+       */
+      public java.lang.String getBuildUser() {
+        java.lang.Object ref = buildUser_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          buildUser_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string build_user = 4;</code>
+       */
+      public com.google.protobuf.ByteString
+          getBuildUserBytes() {
+        java.lang.Object ref = buildUser_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          buildUser_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string build_user = 4;</code>
+       */
+      public Builder setBuildUser(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+        buildUser_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string build_user = 4;</code>
+       */
+      public Builder clearBuildUser() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        buildUser_ = getDefaultInstance().getBuildUser();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string build_user = 4;</code>
+       */
+      public Builder setBuildUserBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+        buildUser_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional string git_sha = 5;
+      private java.lang.Object gitSha_ = "";
+      /**
+       * <code>optional string git_sha = 5;</code>
+       */
+      public boolean hasGitSha() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional string git_sha = 5;</code>
+       */
+      public java.lang.String getGitSha() {
+        java.lang.Object ref = gitSha_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          gitSha_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string git_sha = 5;</code>
+       */
+      public com.google.protobuf.ByteString
+          getGitShaBytes() {
+        java.lang.Object ref = gitSha_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          gitSha_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string git_sha = 5;</code>
+       */
+      public Builder setGitSha(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000010;
+        gitSha_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string git_sha = 5;</code>
+       */
+      public Builder clearGitSha() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        gitSha_ = getDefaultInstance().getGitSha();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string git_sha = 5;</code>
+       */
+      public Builder setGitShaBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000010;
+        gitSha_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional string git_branch = 6;
+      private java.lang.Object gitBranch_ = "";
+      /**
+       * <code>optional string git_branch = 6;</code>
+       */
+      public boolean hasGitBranch() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional string git_branch = 6;</code>
+       */
+      public java.lang.String getGitBranch() {
+        java.lang.Object ref = gitBranch_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          gitBranch_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string git_branch = 6;</code>
+       */
+      public com.google.protobuf.ByteString
+          getGitBranchBytes() {
+        java.lang.Object ref = gitBranch_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          gitBranch_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string git_branch = 6;</code>
+       */
+      public Builder setGitBranch(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000020;
+        gitBranch_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string git_branch = 6;</code>
+       */
+      public Builder clearGitBranch() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        gitBranch_ = getDefaultInstance().getGitBranch();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string git_branch = 6;</code>
+       */
+      public Builder setGitBranchBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000020;
+        gitBranch_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional string git_tag = 7;
+      private java.lang.Object gitTag_ = "";
+      /**
+       * <code>optional string git_tag = 7;</code>
+       */
+      public boolean hasGitTag() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional string git_tag = 7;</code>
+       */
+      public java.lang.String getGitTag() {
+        java.lang.Object ref = gitTag_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          gitTag_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string git_tag = 7;</code>
+       */
+      public com.google.protobuf.ByteString
+          getGitTagBytes() {
+        java.lang.Object ref = gitTag_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          gitTag_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string git_tag = 7;</code>
+       */
+      public Builder setGitTag(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000040;
+        gitTag_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string git_tag = 7;</code>
+       */
+      public Builder clearGitTag() {
+        bitField0_ = (bitField0_ & ~0x00000040);
+        gitTag_ = getDefaultInstance().getGitTag();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string git_tag = 7;</code>
+       */
+      public Builder setGitTagBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000040;
+        gitTag_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.VersionInfo)
+    }
+
+    static {
+      defaultInstance = new VersionInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.VersionInfo)
+  }
+
+  public interface FlagOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string name = 1;
+    /**
+     * <code>required string name = 1;</code>
+     */
+    boolean hasName();
+    /**
+     * <code>required string name = 1;</code>
+     */
+    java.lang.String getName();
+    /**
+     * <code>required string name = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getNameBytes();
+
+    // optional string value = 2;
+    /**
+     * <code>optional string value = 2;</code>
+     */
+    boolean hasValue();
+    /**
+     * <code>optional string value = 2;</code>
+     */
+    java.lang.String getValue();
+    /**
+     * <code>optional string value = 2;</code>
+     */
+    com.google.protobuf.ByteString
+        getValueBytes();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.Flag}
+   *
+   * <pre>
+   **
+   * Flag consists of a name and optionally its value.
+   * </pre>
+   */
+  public static final class Flag extends
+      com.google.protobuf.GeneratedMessage
+      implements FlagOrBuilder {
+    // Use Flag.newBuilder() to construct.
+    private Flag(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Flag(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Flag defaultInstance;
+    public static Flag getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Flag getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Flag(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              name_ = input.readBytes();
+              break;
+            }
+            case 18: {
+              bitField0_ |= 0x00000002;
+              value_ = input.readBytes();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Flag_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Flag_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.Flag.class, org.apache.mesos.v1.Protos.Flag.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Flag> PARSER =
+        new com.google.protobuf.AbstractParser<Flag>() {
+      public Flag parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Flag(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Flag> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string name = 1;
+    public static final int NAME_FIELD_NUMBER = 1;
+    private java.lang.Object name_;
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public boolean hasName() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public java.lang.String getName() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          name_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getNameBytes() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        name_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional string value = 2;
+    public static final int VALUE_FIELD_NUMBER = 2;
+    private java.lang.Object value_;
+    /**
+     * <code>optional string value = 2;</code>
+     */
+    public boolean hasValue() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional string value = 2;</code>
+     */
+    public java.lang.String getValue() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          value_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string value = 2;</code>
+     */
+    public com.google.protobuf.ByteString
+        getValueBytes() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        value_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      name_ = "";
+      value_ = "";
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasName()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(2, getValueBytes());
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(2, getValueBytes());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.Flag parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Flag parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Flag parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Flag parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Flag parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Flag parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Flag parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Flag parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Flag parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Flag parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.Flag prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.Flag}
+     *
+     * <pre>
+     **
+     * Flag consists of a name and optionally its value.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.FlagOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Flag_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Flag_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.Flag.class, org.apache.mesos.v1.Protos.Flag.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.Flag.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        name_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        value_ = "";
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Flag_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.Flag getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.Flag.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.Flag build() {
+        org.apache.mesos.v1.Protos.Flag result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.Flag buildPartial() {
+        org.apache.mesos.v1.Protos.Flag result = new org.apache.mesos.v1.Protos.Flag(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.name_ = name_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.value_ = value_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.Flag) {
+          return mergeFrom((org.apache.mesos.v1.Protos.Flag)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.Flag other) {
+        if (other == org.apache.mesos.v1.Protos.Flag.getDefaultInstance()) return this;
+        if (other.hasName()) {
+          bitField0_ |= 0x00000001;
+          name_ = other.name_;
+          onChanged();
+        }
+        if (other.hasValue()) {
+          bitField0_ |= 0x00000002;
+          value_ = other.value_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasName()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.Flag parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.Flag) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string name = 1;
+      private java.lang.Object name_ = "";
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public boolean hasName() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public java.lang.String getName() {
+        java.lang.Object ref = name_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          name_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        java.lang.Object ref = name_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          name_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder setName(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder clearName() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        name_ = getDefaultInstance().getName();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder setNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional string value = 2;
+      private java.lang.Object value_ = "";
+      /**
+       * <code>optional string value = 2;</code>
+       */
+      public boolean hasValue() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional string value = 2;</code>
+       */
+      public java.lang.String getValue() {
+        java.lang.Object ref = value_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          value_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string value = 2;</code>
+       */
+      public com.google.protobuf.ByteString
+          getValueBytes() {
+        java.lang.Object ref = value_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          value_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string value = 2;</code>
+       */
+      public Builder setValue(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string value = 2;</code>
+       */
+      public Builder clearValue() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        value_ = getDefaultInstance().getValue();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string value = 2;</code>
+       */
+      public Builder setValueBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.Flag)
+    }
+
+    static {
+      defaultInstance = new Flag(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.Flag)
+  }
+
+  public interface RoleOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string name = 1;
+    /**
+     * <code>required string name = 1;</code>
+     */
+    boolean hasName();
+    /**
+     * <code>required string name = 1;</code>
+     */
+    java.lang.String getName();
+    /**
+     * <code>required string name = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getNameBytes();
+
+    // required double weight = 2;
+    /**
+     * <code>required double weight = 2;</code>
+     */
+    boolean hasWeight();
+    /**
+     * <code>required double weight = 2;</code>
+     */
+    double getWeight();
+
+    // repeated .mesos.v1.FrameworkID frameworks = 3;
+    /**
+     * <code>repeated .mesos.v1.FrameworkID frameworks = 3;</code>
+     */
+    java.util.List<org.apache.mesos.v1.Protos.FrameworkID> 
+        getFrameworksList();
+    /**
+     * <code>repeated .mesos.v1.FrameworkID frameworks = 3;</code>
+     */
+    org.apache.mesos.v1.Protos.FrameworkID getFrameworks(int index);
+    /**
+     * <code>repeated .mesos.v1.FrameworkID frameworks = 3;</code>
+     */
+    int getFrameworksCount();
+    /**
+     * <code>repeated .mesos.v1.FrameworkID frameworks = 3;</code>
+     */
+    java.util.List<? extends org.apache.mesos.v1.Protos.FrameworkIDOrBuilder> 
+        getFrameworksOrBuilderList();
+    /**
+     * <code>repeated .mesos.v1.FrameworkID frameworks = 3;</code>
+     */
+    org.apache.mesos.v1.Protos.FrameworkIDOrBuilder getFrameworksOrBuilder(
+        int index);
+
+    // repeated .mesos.v1.Resource resources = 4;
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 4;</code>
+     */
+    java.util.List<org.apache.mesos.v1.Protos.Resource> 
+        getResourcesList();
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 4;</code>
+     */
+    org.apache.mesos.v1.Protos.Resource getResources(int index);
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 4;</code>
+     */
+    int getResourcesCount();
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 4;</code>
+     */
+    java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+        getResourcesOrBuilderList();
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 4;</code>
+     */
+    org.apache.mesos.v1.Protos.ResourceOrBuilder getResourcesOrBuilder(
+        int index);
+  }
+  /**
+   * Protobuf type {@code mesos.v1.Role}
+   *
+   * <pre>
+   **
+   * Describes a Role. Roles can be used to specify that certain resources are
+   * reserved for the use of one or more frameworks.
+   * </pre>
+   */
+  public static final class Role extends
+      com.google.protobuf.GeneratedMessage
+      implements RoleOrBuilder {
+    // Use Role.newBuilder() to construct.
+    private Role(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Role(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Role defaultInstance;
+    public static Role getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Role getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Role(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              name_ = input.readBytes();
+              break;
+            }
+            case 17: {
+              bitField0_ |= 0x00000002;
+              weight_ = input.readDouble();
+              break;
+            }
+            case 26: {
+              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
+                frameworks_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.FrameworkID>();
+                mutable_bitField0_ |= 0x00000004;
+              }
+              frameworks_.add(input.readMessage(org.apache.mesos.v1.Protos.FrameworkID.PARSER, extensionRegistry));
+              break;
+            }
+            case 34: {
+              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
+                resources_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Resource>();
+                mutable_bitField0_ |= 0x00000008;
+              }
+              resources_.add(input.readMessage(org.apache.mesos.v1.Protos.Resource.PARSER, extensionRegistry));
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
+          frameworks_ = java.util.Collections.unmodifiableList(frameworks_);
+        }
+        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
+          resources_ = java.util.Collections.unmodifiableList(resources_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Role_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Role_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.Role.class, org.apache.mesos.v1.Protos.Role.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Role> PARSER =
+        new com.google.protobuf.AbstractParser<Role>() {
+      public Role parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Role(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Role> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string name = 1;
+    public static final int NAME_FIELD_NUMBER = 1;
+    private java.lang.Object name_;
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public boolean hasName() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public java.lang.String getName() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          name_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getNameBytes() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        name_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // required double weight = 2;
+    public static final int WEIGHT_FIELD_NUMBER = 2;
+    private double weight_;
+    /**
+     * <code>required double weight = 2;</code>
+     */
+    public boolean hasWeight() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>required double weight = 2;</code>
+     */
+    public double getWeight() {
+      return weight_;
+    }
+
+    // repeated .mesos.v1.FrameworkID frameworks = 3;
+    public static final int FRAMEWORKS_FIELD_NUMBER = 3;
+    private java.util.List<org.apache.mesos.v1.Protos.FrameworkID> frameworks_;
+    /**
+     * <code>repeated .mesos.v1.FrameworkID frameworks = 3;</code>
+     */
+    public java.util.List<org.apache.mesos.v1.Protos.FrameworkID> getFrameworksList() {
+      return frameworks_;
+    }
+    /**
+     * <code>repeated .mesos.v1.FrameworkID frameworks = 3;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.v1.Protos.FrameworkIDOrBuilder> 
+        getFrameworksOrBuilderList() {
+      return frameworks_;
+    }
+    /**
+     * <code>repeated .mesos.v1.FrameworkID frameworks = 3;</code>
+     */
+    public int getFrameworksCount() {
+      return frameworks_.size();
+    }
+    /**
+     * <code>repeated .mesos.v1.FrameworkID frameworks = 3;</code>
+     */
+    public org.apache.mesos.v1.Protos.FrameworkID getFrameworks(int index) {
+      return frameworks_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.v1.FrameworkID frameworks = 3;</code>
+     */
+    public org.apache.mesos.v1.Protos.FrameworkIDOrBuilder getFrameworksOrBuilder(
+        int index) {
+      return frameworks_.get(index);
+    }
+
+    // repeated .mesos.v1.Resource resources = 4;
+    public static final int RESOURCES_FIELD_NUMBER = 4;
+    private java.util.List<org.apache.mesos.v1.Protos.Resource> resources_;
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 4;</code>
+     */
+    public java.util.List<org.apache.mesos.v1.Protos.Resource> getResourcesList() {
+      return resources_;
+    }
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 4;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+        getResourcesOrBuilderList() {
+      return resources_;
+    }
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 4;</code>
+     */
+    public int getResourcesCount() {
+      return resources_.size();
+    }
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 4;</code>
+     */
+    public org.apache.mesos.v1.Protos.Resource getResources(int index) {
+      return resources_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.v1.Resource resources = 4;</code>
+     */
+    public org.apache.mesos.v1.Protos.ResourceOrBuilder getResourcesOrBuilder(
+        int index) {
+      return resources_.get(index);
+    }
+
+    private void initFields() {
+      name_ = "";
+      weight_ = 0D;
+      frameworks_ = java.util.Collections.emptyList();
+      resources_ = java.util.Collections.emptyList();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasName()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasWeight()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      for (int i = 0; i < getFrameworksCount(); i++) {
+        if (!getFrameworks(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      for (int i = 0; i < getResourcesCount(); i++) {
+        if (!getResources(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeDouble(2, weight_);
+      }
+      for (int i = 0; i < frameworks_.size(); i++) {
+        output.writeMessage(3, frameworks_.get(i));
+      }
+      for (int i = 0; i < resources_.size(); i++) {
+        output.writeMessage(4, resources_.get(i));
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(2, weight_);
+      }
+      for (int i = 0; i < frameworks_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, frameworks_.get(i));
+      }
+      for (int i = 0; i < resources_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, resources_.get(i));
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.Role parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Role parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Role parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Role parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Role parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Role parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Role parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Role parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Role parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Role parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.Role prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.Role}
+     *
+     * <pre>
+     **
+     * Describes a Role. Roles can be used to specify that certain resources are
+     * reserved for the use of one or more frameworks.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.RoleOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Role_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Role_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.Role.class, org.apache.mesos.v1.Protos.Role.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.Role.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getFrameworksFieldBuilder();
+          getResourcesFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        name_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        weight_ = 0D;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        if (frameworksBuilder_ == null) {
+          frameworks_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000004);
+        } else {
+          frameworksBuilder_.clear();
+        }
+        if (resourcesBuilder_ == null) {
+          resources_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000008);
+        } else {
+          resourcesBuilder_.clear();
+        }
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Role_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.Role getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.Role.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.Role build() {
+        org.apache.mesos.v1.Protos.Role result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.Role buildPartial() {
+        org.apache.mesos.v1.Protos.Role result = new org.apache.mesos.v1.Protos.Role(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.name_ = name_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.weight_ = weight_;
+        if (frameworksBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) == 0x00000004)) {
+            frameworks_ = java.util.Collections.unmodifiableList(frameworks_);
+            bitField0_ = (bitField0_ & ~0x00000004);
+          }
+          result.frameworks_ = frameworks_;
+        } else {
+          result.frameworks_ = frameworksBuilder_.build();
+        }
+        if (resourcesBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008)) {
+            resources_ = java.util.Collections.unmodifiableList(resources_);
+            bitField0_ = (bitField0_ & ~0x00000008);
+          }
+          result.resources_ = resources_;
+        } else {
+          result.resources_ = resourcesBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.Role) {
+          return mergeFrom((org.apache.mesos.v1.Protos.Role)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.Role other) {
+        if (other == org.apache.mesos.v1.Protos.Role.getDefaultInstance()) return this;
+        if (other.hasName()) {
+          bitField0_ |= 0x00000001;
+          name_ = other.name_;
+          onChanged();
+        }
+        if (other.hasWeight()) {
+          setWeight(other.getWeight());
+        }
+        if (frameworksBuilder_ == null) {
+          if (!other.frameworks_.isEmpty()) {
+            if (frameworks_.isEmpty()) {
+              frameworks_ = other.frameworks_;
+              bitField0_ = (bitField0_ & ~0x00000004);
+            } else {
+              ensureFrameworksIsMutable();
+              frameworks_.addAll(other.frameworks_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.frameworks_.isEmpty()) {
+            if (frameworksBuilder_.isEmpty()) {
+              frameworksBuilder_.dispose();
+              frameworksBuilder_ = null;
+              frameworks_ = other.frameworks_;
+              bitField0_ = (bitField0_ & ~0x00000004);
+              frameworksBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getFrameworksFieldBuilder() : null;
+            } else {
+              frameworksBuilder_.addAllMessages(other.frameworks_);
+            }
+          }
+        }
+        if (resourcesBuilder_ == null) {
+          if (!other.resources_.isEmpty()) {
+            if (resources_.isEmpty()) {
+              resources_ = other.resources_;
+              bitField0_ = (bitField0_ & ~0x00000008);
+            } else {
+              ensureResourcesIsMutable();
+              resources_.addAll(other.resources_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.resources_.isEmpty()) {
+            if (resourcesBuilder_.isEmpty()) {
+              resourcesBuilder_.dispose();
+              resourcesBuilder_ = null;
+              resources_ = other.resources_;
+              bitField0_ = (bitField0_ & ~0x00000008);
+              resourcesBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getResourcesFieldBuilder() : null;
+            } else {
+              resourcesBuilder_.addAllMessages(other.resources_);
+            }
+          }
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasName()) {
+          
+          return false;
+        }
+        if (!hasWeight()) {
+          
+          return false;
+        }
+        for (int i = 0; i < getFrameworksCount(); i++) {
+          if (!getFrameworks(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        for (int i = 0; i < getResourcesCount(); i++) {
+          if (!getResources(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.Role parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.Role) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string name = 1;
+      private java.lang.Object name_ = "";
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public boolean hasName() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public java.lang.String getName() {
+        java.lang.Object ref = name_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          name_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        java.lang.Object ref = name_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          name_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder setName(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder clearName() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        name_ = getDefaultInstance().getName();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder setNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+
+      // required double weight = 2;
+      private double weight_ ;
+      /**
+       * <code>required double weight = 2;</code>
+       */
+      public boolean hasWeight() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required double weight = 2;</code>
+       */
+      public double getWeight() {
+        return weight_;
+      }
+      /**
+       * <code>required double weight = 2;</code>
+       */
+      public Builder setWeight(double value) {
+        bitField0_ |= 0x00000002;
+        weight_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required double weight = 2;</code>
+       */
+      public Builder clearWeight() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        weight_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // repeated .mesos.v1.FrameworkID frameworks = 3;
+      private java.util.List<org.apache.mesos.v1.Protos.FrameworkID> frameworks_ =
+        java.util.Collections.emptyList();
+      private void ensureFrameworksIsMutable() {
+        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
+          frameworks_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.FrameworkID>(frameworks_);
+          bitField0_ |= 0x00000004;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.FrameworkID, org.apache.mesos.v1.Protos.FrameworkID.Builder, org.apache.mesos.v1.Protos.FrameworkIDOrBuilder> frameworksBuilder_;
+
+      /**
+       * <code>repeated .mesos.v1.FrameworkID frameworks = 3;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.FrameworkID> getFrameworksList() {
+        if (frameworksBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(frameworks_);
+        } else {
+          return frameworksBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.FrameworkID frameworks = 3;</code>
+       */
+      public int getFrameworksCount() {
+        if (frameworksBuilder_ == null) {
+          return frameworks_.size();
+        } else {
+          return frameworksBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.FrameworkID frameworks = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.FrameworkID getFrameworks(int index) {
+        if (frameworksBuilder_ == null) {
+          return frameworks_.get(index);
+        } else {
+          return frameworksBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.FrameworkID frameworks = 3;</code>
+       */
+      public Builder setFrameworks(
+          int index, org.apache.mesos.v1.Protos.FrameworkID value) {
+        if (frameworksBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureFrameworksIsMutable();
+          frameworks_.set(index, value);
+          onChanged();
+        } else {
+          frameworksBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.FrameworkID frameworks = 3;</code>
+       */
+      public Builder setFrameworks(
+          int index, org.apache.mesos.v1.Protos.FrameworkID.Builder builderForValue) {
+        if (frameworksBuilder_ == null) {
+          ensureFrameworksIsMutable();
+          frameworks_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          frameworksBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.FrameworkID frameworks = 3;</code>
+       */
+      public Builder addFrameworks(org.apache.mesos.v1.Protos.FrameworkID value) {
+        if (frameworksBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureFrameworksIsMutable();
+          frameworks_.add(value);
+          onChanged();
+        } else {
+          frameworksBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.FrameworkID frameworks = 3;</code>
+       */
+      public Builder addFrameworks(
+          int index, org.apache.mesos.v1.Protos.FrameworkID value) {
+        if (frameworksBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureFrameworksIsMutable();
+          frameworks_.add(index, value);
+          onChanged();
+        } else {
+          frameworksBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.FrameworkID frameworks = 3;</code>
+       */
+      public Builder addFrameworks(
+          org.apache.mesos.v1.Protos.FrameworkID.Builder builderForValue) {
+        if (frameworksBuilder_ == null) {
+          ensureFrameworksIsMutable();
+          frameworks_.add(builderForValue.build());
+          onChanged();
+        } else {
+          frameworksBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.FrameworkID frameworks = 3;</code>
+       */
+      public Builder addFrameworks(
+          int index, org.apache.mesos.v1.Protos.FrameworkID.Builder builderForValue) {
+        if (frameworksBuilder_ == null) {
+          ensureFrameworksIsMutable();
+          frameworks_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          frameworksBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.FrameworkID frameworks = 3;</code>
+       */
+      public Builder addAllFrameworks(
+          java.lang.Iterable<? extends org.apache.mesos.v1.Protos.FrameworkID> values) {
+        if (frameworksBuilder_ == null) {
+          ensureFrameworksIsMutable();
+          super.addAll(values, frameworks_);
+          onChanged();
+        } else {
+          frameworksBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.FrameworkID frameworks = 3;</code>
+       */
+      public Builder clearFrameworks() {
+        if (frameworksBuilder_ == null) {
+          frameworks_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000004);
+          onChanged();
+        } else {
+          frameworksBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.FrameworkID frameworks = 3;</code>
+       */
+      public Builder removeFrameworks(int index) {
+        if (frameworksBuilder_ == null) {
+          ensureFrameworksIsMutable();
+          frameworks_.remove(index);
+          onChanged();
+        } else {
+          frameworksBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.FrameworkID frameworks = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.FrameworkID.Builder getFrameworksBuilder(
+          int index) {
+        return getFrameworksFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.FrameworkID frameworks = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.FrameworkIDOrBuilder getFrameworksOrBuilder(
+          int index) {
+        if (frameworksBuilder_ == null) {
+          return frameworks_.get(index);  } else {
+          return frameworksBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.FrameworkID frameworks = 3;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.FrameworkIDOrBuilder> 
+           getFrameworksOrBuilderList() {
+        if (frameworksBuilder_ != null) {
+          return frameworksBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(frameworks_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.FrameworkID frameworks = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.FrameworkID.Builder addFrameworksBuilder() {
+        return getFrameworksFieldBuilder().addBuilder(
+            org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.FrameworkID frameworks = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.FrameworkID.Builder addFrameworksBuilder(
+          int index) {
+        return getFrameworksFieldBuilder().addBuilder(
+            index, org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.FrameworkID frameworks = 3;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.FrameworkID.Builder> 
+           getFrameworksBuilderList() {
+        return getFrameworksFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.FrameworkID, org.apache.mesos.v1.Protos.FrameworkID.Builder, org.apache.mesos.v1.Protos.FrameworkIDOrBuilder> 
+          getFrameworksFieldBuilder() {
+        if (frameworksBuilder_ == null) {
+          frameworksBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.FrameworkID, org.apache.mesos.v1.Protos.FrameworkID.Builder, org.apache.mesos.v1.Protos.FrameworkIDOrBuilder>(
+                  frameworks_,
+                  ((bitField0_ & 0x00000004) == 0x00000004),
+                  getParentForChildren(),
+                  isClean());
+          frameworks_ = null;
+        }
+        return frameworksBuilder_;
+      }
+
+      // repeated .mesos.v1.Resource resources = 4;
+      private java.util.List<org.apache.mesos.v1.Protos.Resource> resources_ =
+        java.util.Collections.emptyList();
+      private void ensureResourcesIsMutable() {
+        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
+          resources_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Resource>(resources_);
+          bitField0_ |= 0x00000008;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder> resourcesBuilder_;
+
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 4;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Resource> getResourcesList() {
+        if (resourcesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(resources_);
+        } else {
+          return resourcesBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 4;</code>
+       */
+      public int getResourcesCount() {
+        if (resourcesBuilder_ == null) {
+          return resources_.size();
+        } else {
+          return resourcesBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 4;</code>
+       */
+      public org.apache.mesos.v1.Protos.Resource getResources(int index) {
+        if (resourcesBuilder_ == null) {
+          return resources_.get(index);
+        } else {
+          return resourcesBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 4;</code>
+       */
+      public Builder setResources(
+          int index, org.apache.mesos.v1.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.set(index, value);
+          onChanged();
+        } else {
+          resourcesBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 4;</code>
+       */
+      public Builder setResources(
+          int index, org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 4;</code>
+       */
+      public Builder addResources(org.apache.mesos.v1.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.add(value);
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 4;</code>
+       */
+      public Builder addResources(
+          int index, org.apache.mesos.v1.Protos.Resource value) {
+        if (resourcesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResourcesIsMutable();
+          resources_.add(index, value);
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 4;</code>
+       */
+      public Builder addResources(
+          org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.add(builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 4;</code>
+       */
+      public Builder addResources(
+          int index, org.apache.mesos.v1.Protos.Resource.Builder builderForValue) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          resourcesBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 4;</code>
+       */
+      public Builder addAllResources(
+          java.lang.Iterable<? extends org.apache.mesos.v1.Protos.Resource> values) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          super.addAll(values, resources_);
+          onChanged();
+        } else {
+          resourcesBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 4;</code>
+       */
+      public Builder clearResources() {
+        if (resourcesBuilder_ == null) {
+          resources_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000008);
+          onChanged();
+        } else {
+          resourcesBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 4;</code>
+       */
+      public Builder removeResources(int index) {
+        if (resourcesBuilder_ == null) {
+          ensureResourcesIsMutable();
+          resources_.remove(index);
+          onChanged();
+        } else {
+          resourcesBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 4;</code>
+       */
+      public org.apache.mesos.v1.Protos.Resource.Builder getResourcesBuilder(
+          int index) {
+        return getResourcesFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 4;</code>
+       */
+      public org.apache.mesos.v1.Protos.ResourceOrBuilder getResourcesOrBuilder(
+          int index) {
+        if (resourcesBuilder_ == null) {
+          return resources_.get(index);  } else {
+          return resourcesBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 4;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+           getResourcesOrBuilderList() {
+        if (resourcesBuilder_ != null) {
+          return resourcesBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(resources_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 4;</code>
+       */
+      public org.apache.mesos.v1.Protos.Resource.Builder addResourcesBuilder() {
+        return getResourcesFieldBuilder().addBuilder(
+            org.apache.mesos.v1.Protos.Resource.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 4;</code>
+       */
+      public org.apache.mesos.v1.Protos.Resource.Builder addResourcesBuilder(
+          int index) {
+        return getResourcesFieldBuilder().addBuilder(
+            index, org.apache.mesos.v1.Protos.Resource.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.Resource resources = 4;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Resource.Builder> 
+           getResourcesBuilderList() {
+        return getResourcesFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder> 
+          getResourcesFieldBuilder() {
+        if (resourcesBuilder_ == null) {
+          resourcesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.Resource, org.apache.mesos.v1.Protos.Resource.Builder, org.apache.mesos.v1.Protos.ResourceOrBuilder>(
+                  resources_,
+                  ((bitField0_ & 0x00000008) == 0x00000008),
+                  getParentForChildren(),
+                  isClean());
+          resources_ = null;
+        }
+        return resourcesBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.Role)
+    }
+
+    static {
+      defaultInstance = new Role(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.Role)
+  }
+
+  public interface MetricOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string name = 1;
+    /**
+     * <code>required string name = 1;</code>
+     */
+    boolean hasName();
+    /**
+     * <code>required string name = 1;</code>
+     */
+    java.lang.String getName();
+    /**
+     * <code>required string name = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getNameBytes();
+
+    // optional double value = 2;
+    /**
+     * <code>optional double value = 2;</code>
+     */
+    boolean hasValue();
+    /**
+     * <code>optional double value = 2;</code>
+     */
+    double getValue();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.Metric}
+   *
+   * <pre>
+   **
+   * Metric consists of a name and optionally its value.
+   * </pre>
+   */
+  public static final class Metric extends
+      com.google.protobuf.GeneratedMessage
+      implements MetricOrBuilder {
+    // Use Metric.newBuilder() to construct.
+    private Metric(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Metric(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Metric defaultInstance;
+    public static Metric getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Metric getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Metric(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              name_ = input.readBytes();
+              break;
+            }
+            case 17: {
+              bitField0_ |= 0x00000002;
+              value_ = input.readDouble();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Metric_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Metric_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.Metric.class, org.apache.mesos.v1.Protos.Metric.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Metric> PARSER =
+        new com.google.protobuf.AbstractParser<Metric>() {
+      public Metric parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Metric(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Metric> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string name = 1;
+    public static final int NAME_FIELD_NUMBER = 1;
+    private java.lang.Object name_;
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public boolean hasName() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public java.lang.String getName() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          name_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string name = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getNameBytes() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        name_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional double value = 2;
+    public static final int VALUE_FIELD_NUMBER = 2;
+    private double value_;
+    /**
+     * <code>optional double value = 2;</code>
+     */
+    public boolean hasValue() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional double value = 2;</code>
+     */
+    public double getValue() {
+      return value_;
+    }
+
+    private void initFields() {
+      name_ = "";
+      value_ = 0D;
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasName()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeDouble(2, value_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getNameBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeDoubleSize(2, value_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.Metric parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Metric parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Metric parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Metric parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Metric parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Metric parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Metric parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Metric parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Metric parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Metric parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.Metric prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.Metric}
+     *
+     * <pre>
+     **
+     * Metric consists of a name and optionally its value.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.MetricOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Metric_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Metric_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.Metric.class, org.apache.mesos.v1.Protos.Metric.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.Metric.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        name_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        value_ = 0D;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Metric_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.Metric getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.Metric.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.Metric build() {
+        org.apache.mesos.v1.Protos.Metric result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.Metric buildPartial() {
+        org.apache.mesos.v1.Protos.Metric result = new org.apache.mesos.v1.Protos.Metric(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.name_ = name_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.value_ = value_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.Metric) {
+          return mergeFrom((org.apache.mesos.v1.Protos.Metric)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.Metric other) {
+        if (other == org.apache.mesos.v1.Protos.Metric.getDefaultInstance()) return this;
+        if (other.hasName()) {
+          bitField0_ |= 0x00000001;
+          name_ = other.name_;
+          onChanged();
+        }
+        if (other.hasValue()) {
+          setValue(other.getValue());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasName()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.Metric parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.Metric) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string name = 1;
+      private java.lang.Object name_ = "";
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public boolean hasName() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public java.lang.String getName() {
+        java.lang.Object ref = name_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          name_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        java.lang.Object ref = name_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          name_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder setName(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder clearName() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        name_ = getDefaultInstance().getName();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string name = 1;</code>
+       */
+      public Builder setNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        name_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional double value = 2;
+      private double value_ ;
+      /**
+       * <code>optional double value = 2;</code>
+       */
+      public boolean hasValue() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional double value = 2;</code>
+       */
+      public double getValue() {
+        return value_;
+      }
+      /**
+       * <code>optional double value = 2;</code>
+       */
+      public Builder setValue(double value) {
+        bitField0_ |= 0x00000002;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional double value = 2;</code>
+       */
+      public Builder clearValue() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        value_ = 0D;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.Metric)
+    }
+
+    static {
+      defaultInstance = new Metric(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.Metric)
+  }
+
+  public interface FileInfoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string path = 1;
+    /**
+     * <code>required string path = 1;</code>
+     *
+     * <pre>
+     * Absolute path to the file.
+     * </pre>
+     */
+    boolean hasPath();
+    /**
+     * <code>required string path = 1;</code>
+     *
+     * <pre>
+     * Absolute path to the file.
+     * </pre>
+     */
+    java.lang.String getPath();
+    /**
+     * <code>required string path = 1;</code>
+     *
+     * <pre>
+     * Absolute path to the file.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getPathBytes();
+
+    // optional int32 nlink = 2;
+    /**
+     * <code>optional int32 nlink = 2;</code>
+     *
+     * <pre>
+     * Number of hard links.
+     * </pre>
+     */
+    boolean hasNlink();
+    /**
+     * <code>optional int32 nlink = 2;</code>
+     *
+     * <pre>
+     * Number of hard links.
+     * </pre>
+     */
+    int getNlink();
+
+    // optional uint64 size = 3;
+    /**
+     * <code>optional uint64 size = 3;</code>
+     *
+     * <pre>
+     * Total size in bytes.
+     * </pre>
+     */
+    boolean hasSize();
+    /**
+     * <code>optional uint64 size = 3;</code>
+     *
+     * <pre>
+     * Total size in bytes.
+     * </pre>
+     */
+    long getSize();
+
+    // optional .mesos.v1.TimeInfo mtime = 4;
+    /**
+     * <code>optional .mesos.v1.TimeInfo mtime = 4;</code>
+     *
+     * <pre>
+     * Last modification time.
+     * </pre>
+     */
+    boolean hasMtime();
+    /**
+     * <code>optional .mesos.v1.TimeInfo mtime = 4;</code>
+     *
+     * <pre>
+     * Last modification time.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.TimeInfo getMtime();
+    /**
+     * <code>optional .mesos.v1.TimeInfo mtime = 4;</code>
+     *
+     * <pre>
+     * Last modification time.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.TimeInfoOrBuilder getMtimeOrBuilder();
+
+    // optional uint32 mode = 5;
+    /**
+     * <code>optional uint32 mode = 5;</code>
+     *
+     * <pre>
+     * Represents a file's mode and permission bits. The bits have the same
+     * definition on all systems and is portable.
+     * </pre>
+     */
+    boolean hasMode();
+    /**
+     * <code>optional uint32 mode = 5;</code>
+     *
+     * <pre>
+     * Represents a file's mode and permission bits. The bits have the same
+     * definition on all systems and is portable.
+     * </pre>
+     */
+    int getMode();
+
+    // optional string uid = 6;
+    /**
+     * <code>optional string uid = 6;</code>
+     *
+     * <pre>
+     * User ID of owner.
+     * </pre>
+     */
+    boolean hasUid();
+    /**
+     * <code>optional string uid = 6;</code>
+     *
+     * <pre>
+     * User ID of owner.
+     * </pre>
+     */
+    java.lang.String getUid();
+    /**
+     * <code>optional string uid = 6;</code>
+     *
+     * <pre>
+     * User ID of owner.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getUidBytes();
+
+    // optional string gid = 7;
+    /**
+     * <code>optional string gid = 7;</code>
+     *
+     * <pre>
+     * Group ID of owner.
+     * </pre>
+     */
+    boolean hasGid();
+    /**
+     * <code>optional string gid = 7;</code>
+     *
+     * <pre>
+     * Group ID of owner.
+     * </pre>
+     */
+    java.lang.String getGid();
+    /**
+     * <code>optional string gid = 7;</code>
+     *
+     * <pre>
+     * Group ID of owner.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getGidBytes();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.FileInfo}
+   *
+   * <pre>
+   **
+   * Describes a File.
+   * </pre>
+   */
+  public static final class FileInfo extends
+      com.google.protobuf.GeneratedMessage
+      implements FileInfoOrBuilder {
+    // Use FileInfo.newBuilder() to construct.
+    private FileInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private FileInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final FileInfo defaultInstance;
+    public static FileInfo getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public FileInfo getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private FileInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              path_ = input.readBytes();
+              break;
+            }
+            case 16: {
+              bitField0_ |= 0x00000002;
+              nlink_ = input.readInt32();
+              break;
+            }
+            case 24: {
+              bitField0_ |= 0x00000004;
+              size_ = input.readUInt64();
+              break;
+            }
+            case 34: {
+              org.apache.mesos.v1.Protos.TimeInfo.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                subBuilder = mtime_.toBuilder();
+              }
+              mtime_ = input.readMessage(org.apache.mesos.v1.Protos.TimeInfo.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(mtime_);
+                mtime_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000008;
+              break;
+            }
+            case 40: {
+              bitField0_ |= 0x00000010;
+              mode_ = input.readUInt32();
+              break;
+            }
+            case 50: {
+              bitField0_ |= 0x00000020;
+              uid_ = input.readBytes();
+              break;
+            }
+            case 58: {
+              bitField0_ |= 0x00000040;
+              gid_ = input.readBytes();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_FileInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_FileInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.FileInfo.class, org.apache.mesos.v1.Protos.FileInfo.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<FileInfo> PARSER =
+        new com.google.protobuf.AbstractParser<FileInfo>() {
+      public FileInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new FileInfo(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<FileInfo> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string path = 1;
+    public static final int PATH_FIELD_NUMBER = 1;
+    private java.lang.Object path_;
+    /**
+     * <code>required string path = 1;</code>
+     *
+     * <pre>
+     * Absolute path to the file.
+     * </pre>
+     */
+    public boolean hasPath() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string path = 1;</code>
+     *
+     * <pre>
+     * Absolute path to the file.
+     * </pre>
+     */
+    public java.lang.String getPath() {
+      java.lang.Object ref = path_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          path_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string path = 1;</code>
+     *
+     * <pre>
+     * Absolute path to the file.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getPathBytes() {
+      java.lang.Object ref = path_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        path_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional int32 nlink = 2;
+    public static final int NLINK_FIELD_NUMBER = 2;
+    private int nlink_;
+    /**
+     * <code>optional int32 nlink = 2;</code>
+     *
+     * <pre>
+     * Number of hard links.
+     * </pre>
+     */
+    public boolean hasNlink() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional int32 nlink = 2;</code>
+     *
+     * <pre>
+     * Number of hard links.
+     * </pre>
+     */
+    public int getNlink() {
+      return nlink_;
+    }
+
+    // optional uint64 size = 3;
+    public static final int SIZE_FIELD_NUMBER = 3;
+    private long size_;
+    /**
+     * <code>optional uint64 size = 3;</code>
+     *
+     * <pre>
+     * Total size in bytes.
+     * </pre>
+     */
+    public boolean hasSize() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional uint64 size = 3;</code>
+     *
+     * <pre>
+     * Total size in bytes.
+     * </pre>
+     */
+    public long getSize() {
+      return size_;
+    }
+
+    // optional .mesos.v1.TimeInfo mtime = 4;
+    public static final int MTIME_FIELD_NUMBER = 4;
+    private org.apache.mesos.v1.Protos.TimeInfo mtime_;
+    /**
+     * <code>optional .mesos.v1.TimeInfo mtime = 4;</code>
+     *
+     * <pre>
+     * Last modification time.
+     * </pre>
+     */
+    public boolean hasMtime() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional .mesos.v1.TimeInfo mtime = 4;</code>
+     *
+     * <pre>
+     * Last modification time.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.TimeInfo getMtime() {
+      return mtime_;
+    }
+    /**
+     * <code>optional .mesos.v1.TimeInfo mtime = 4;</code>
+     *
+     * <pre>
+     * Last modification time.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.TimeInfoOrBuilder getMtimeOrBuilder() {
+      return mtime_;
+    }
+
+    // optional uint32 mode = 5;
+    public static final int MODE_FIELD_NUMBER = 5;
+    private int mode_;
+    /**
+     * <code>optional uint32 mode = 5;</code>
+     *
+     * <pre>
+     * Represents a file's mode and permission bits. The bits have the same
+     * definition on all systems and is portable.
+     * </pre>
+     */
+    public boolean hasMode() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional uint32 mode = 5;</code>
+     *
+     * <pre>
+     * Represents a file's mode and permission bits. The bits have the same
+     * definition on all systems and is portable.
+     * </pre>
+     */
+    public int getMode() {
+      return mode_;
+    }
+
+    // optional string uid = 6;
+    public static final int UID_FIELD_NUMBER = 6;
+    private java.lang.Object uid_;
+    /**
+     * <code>optional string uid = 6;</code>
+     *
+     * <pre>
+     * User ID of owner.
+     * </pre>
+     */
+    public boolean hasUid() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional string uid = 6;</code>
+     *
+     * <pre>
+     * User ID of owner.
+     * </pre>
+     */
+    public java.lang.String getUid() {
+      java.lang.Object ref = uid_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          uid_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string uid = 6;</code>
+     *
+     * <pre>
+     * User ID of owner.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getUidBytes() {
+      java.lang.Object ref = uid_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        uid_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional string gid = 7;
+    public static final int GID_FIELD_NUMBER = 7;
+    private java.lang.Object gid_;
+    /**
+     * <code>optional string gid = 7;</code>
+     *
+     * <pre>
+     * Group ID of owner.
+     * </pre>
+     */
+    public boolean hasGid() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional string gid = 7;</code>
+     *
+     * <pre>
+     * Group ID of owner.
+     * </pre>
+     */
+    public java.lang.String getGid() {
+      java.lang.Object ref = gid_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          gid_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string gid = 7;</code>
+     *
+     * <pre>
+     * Group ID of owner.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getGidBytes() {
+      java.lang.Object ref = gid_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        gid_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      path_ = "";
+      nlink_ = 0;
+      size_ = 0L;
+      mtime_ = org.apache.mesos.v1.Protos.TimeInfo.getDefaultInstance();
+      mode_ = 0;
+      uid_ = "";
+      gid_ = "";
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasPath()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (hasMtime()) {
+        if (!getMtime().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getPathBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeInt32(2, nlink_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeUInt64(3, size_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeMessage(4, mtime_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeUInt32(5, mode_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeBytes(6, getUidBytes());
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeBytes(7, getGidBytes());
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getPathBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt32Size(2, nlink_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(3, size_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, mtime_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(5, mode_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(6, getUidBytes());
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(7, getGidBytes());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.FileInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.FileInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.FileInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.FileInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.FileInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.FileInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.FileInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.FileInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.FileInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.FileInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.FileInfo prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.FileInfo}
+     *
+     * <pre>
+     **
+     * Describes a File.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.FileInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_FileInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_FileInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.FileInfo.class, org.apache.mesos.v1.Protos.FileInfo.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.FileInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getMtimeFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        path_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        nlink_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        size_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        if (mtimeBuilder_ == null) {
+          mtime_ = org.apache.mesos.v1.Protos.TimeInfo.getDefaultInstance();
+        } else {
+          mtimeBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        mode_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000010);
+        uid_ = "";
+        bitField0_ = (bitField0_ & ~0x00000020);
+        gid_ = "";
+        bitField0_ = (bitField0_ & ~0x00000040);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_FileInfo_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.FileInfo getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.FileInfo.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.FileInfo build() {
+        org.apache.mesos.v1.Protos.FileInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.FileInfo buildPartial() {
+        org.apache.mesos.v1.Protos.FileInfo result = new org.apache.mesos.v1.Protos.FileInfo(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.path_ = path_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.nlink_ = nlink_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.size_ = size_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        if (mtimeBuilder_ == null) {
+          result.mtime_ = mtime_;
+        } else {
+          result.mtime_ = mtimeBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.mode_ = mode_;
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        result.uid_ = uid_;
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        result.gid_ = gid_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.FileInfo) {
+          return mergeFrom((org.apache.mesos.v1.Protos.FileInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.FileInfo other) {
+        if (other == org.apache.mesos.v1.Protos.FileInfo.getDefaultInstance()) return this;
+        if (other.hasPath()) {
+          bitField0_ |= 0x00000001;
+          path_ = other.path_;
+          onChanged();
+        }
+        if (other.hasNlink()) {
+          setNlink(other.getNlink());
+        }
+        if (other.hasSize()) {
+          setSize(other.getSize());
+        }
+        if (other.hasMtime()) {
+          mergeMtime(other.getMtime());
+        }
+        if (other.hasMode()) {
+          setMode(other.getMode());
+        }
+        if (other.hasUid()) {
+          bitField0_ |= 0x00000020;
+          uid_ = other.uid_;
+          onChanged();
+        }
+        if (other.hasGid()) {
+          bitField0_ |= 0x00000040;
+          gid_ = other.gid_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasPath()) {
+          
+          return false;
+        }
+        if (hasMtime()) {
+          if (!getMtime().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.FileInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.FileInfo) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string path = 1;
+      private java.lang.Object path_ = "";
+      /**
+       * <code>required string path = 1;</code>
+       *
+       * <pre>
+       * Absolute path to the file.
+       * </pre>
+       */
+      public boolean hasPath() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string path = 1;</code>
+       *
+       * <pre>
+       * Absolute path to the file.
+       * </pre>
+       */
+      public java.lang.String getPath() {
+        java.lang.Object ref = path_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          path_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string path = 1;</code>
+       *
+       * <pre>
+       * Absolute path to the file.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getPathBytes() {
+        java.lang.Object ref = path_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          path_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string path = 1;</code>
+       *
+       * <pre>
+       * Absolute path to the file.
+       * </pre>
+       */
+      public Builder setPath(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        path_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string path = 1;</code>
+       *
+       * <pre>
+       * Absolute path to the file.
+       * </pre>
+       */
+      public Builder clearPath() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        path_ = getDefaultInstance().getPath();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string path = 1;</code>
+       *
+       * <pre>
+       * Absolute path to the file.
+       * </pre>
+       */
+      public Builder setPathBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        path_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional int32 nlink = 2;
+      private int nlink_ ;
+      /**
+       * <code>optional int32 nlink = 2;</code>
+       *
+       * <pre>
+       * Number of hard links.
+       * </pre>
+       */
+      public boolean hasNlink() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional int32 nlink = 2;</code>
+       *
+       * <pre>
+       * Number of hard links.
+       * </pre>
+       */
+      public int getNlink() {
+        return nlink_;
+      }
+      /**
+       * <code>optional int32 nlink = 2;</code>
+       *
+       * <pre>
+       * Number of hard links.
+       * </pre>
+       */
+      public Builder setNlink(int value) {
+        bitField0_ |= 0x00000002;
+        nlink_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int32 nlink = 2;</code>
+       *
+       * <pre>
+       * Number of hard links.
+       * </pre>
+       */
+      public Builder clearNlink() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        nlink_ = 0;
+        onChanged();
+        return this;
+      }
+
+      // optional uint64 size = 3;
+      private long size_ ;
+      /**
+       * <code>optional uint64 size = 3;</code>
+       *
+       * <pre>
+       * Total size in bytes.
+       * </pre>
+       */
+      public boolean hasSize() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional uint64 size = 3;</code>
+       *
+       * <pre>
+       * Total size in bytes.
+       * </pre>
+       */
+      public long getSize() {
+        return size_;
+      }
+      /**
+       * <code>optional uint64 size = 3;</code>
+       *
+       * <pre>
+       * Total size in bytes.
+       * </pre>
+       */
+      public Builder setSize(long value) {
+        bitField0_ |= 0x00000004;
+        size_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 size = 3;</code>
+       *
+       * <pre>
+       * Total size in bytes.
+       * </pre>
+       */
+      public Builder clearSize() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        size_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.v1.TimeInfo mtime = 4;
+      private org.apache.mesos.v1.Protos.TimeInfo mtime_ = org.apache.mesos.v1.Protos.TimeInfo.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.TimeInfo, org.apache.mesos.v1.Protos.TimeInfo.Builder, org.apache.mesos.v1.Protos.TimeInfoOrBuilder> mtimeBuilder_;
+      /**
+       * <code>optional .mesos.v1.TimeInfo mtime = 4;</code>
+       *
+       * <pre>
+       * Last modification time.
+       * </pre>
+       */
+      public boolean hasMtime() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.v1.TimeInfo mtime = 4;</code>
+       *
+       * <pre>
+       * Last modification time.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.TimeInfo getMtime() {
+        if (mtimeBuilder_ == null) {
+          return mtime_;
+        } else {
+          return mtimeBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.TimeInfo mtime = 4;</code>
+       *
+       * <pre>
+       * Last modification time.
+       * </pre>
+       */
+      public Builder setMtime(org.apache.mesos.v1.Protos.TimeInfo value) {
+        if (mtimeBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          mtime_ = value;
+          onChanged();
+        } else {
+          mtimeBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.TimeInfo mtime = 4;</code>
+       *
+       * <pre>
+       * Last modification time.
+       * </pre>
+       */
+      public Builder setMtime(
+          org.apache.mesos.v1.Protos.TimeInfo.Builder builderForValue) {
+        if (mtimeBuilder_ == null) {
+          mtime_ = builderForValue.build();
+          onChanged();
+        } else {
+          mtimeBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.TimeInfo mtime = 4;</code>
+       *
+       * <pre>
+       * Last modification time.
+       * </pre>
+       */
+      public Builder mergeMtime(org.apache.mesos.v1.Protos.TimeInfo value) {
+        if (mtimeBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008) &&
+              mtime_ != org.apache.mesos.v1.Protos.TimeInfo.getDefaultInstance()) {
+            mtime_ =
+              org.apache.mesos.v1.Protos.TimeInfo.newBuilder(mtime_).mergeFrom(value).buildPartial();
+          } else {
+            mtime_ = value;
+          }
+          onChanged();
+        } else {
+          mtimeBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.TimeInfo mtime = 4;</code>
+       *
+       * <pre>
+       * Last modification time.
+       * </pre>
+       */
+      public Builder clearMtime() {
+        if (mtimeBuilder_ == null) {
+          mtime_ = org.apache.mesos.v1.Protos.TimeInfo.getDefaultInstance();
+          onChanged();
+        } else {
+          mtimeBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.TimeInfo mtime = 4;</code>
+       *
+       * <pre>
+       * Last modification time.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.TimeInfo.Builder getMtimeBuilder() {
+        bitField0_ |= 0x00000008;
+        onChanged();
+        return getMtimeFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.TimeInfo mtime = 4;</code>
+       *
+       * <pre>
+       * Last modification time.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.TimeInfoOrBuilder getMtimeOrBuilder() {
+        if (mtimeBuilder_ != null) {
+          return mtimeBuilder_.getMessageOrBuilder();
+        } else {
+          return mtime_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.TimeInfo mtime = 4;</code>
+       *
+       * <pre>
+       * Last modification time.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.TimeInfo, org.apache.mesos.v1.Protos.TimeInfo.Builder, org.apache.mesos.v1.Protos.TimeInfoOrBuilder> 
+          getMtimeFieldBuilder() {
+        if (mtimeBuilder_ == null) {
+          mtimeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.TimeInfo, org.apache.mesos.v1.Protos.TimeInfo.Builder, org.apache.mesos.v1.Protos.TimeInfoOrBuilder>(
+                  mtime_,
+                  getParentForChildren(),
+                  isClean());
+          mtime_ = null;
+        }
+        return mtimeBuilder_;
+      }
+
+      // optional uint32 mode = 5;
+      private int mode_ ;
+      /**
+       * <code>optional uint32 mode = 5;</code>
+       *
+       * <pre>
+       * Represents a file's mode and permission bits. The bits have the same
+       * definition on all systems and is portable.
+       * </pre>
+       */
+      public boolean hasMode() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional uint32 mode = 5;</code>
+       *
+       * <pre>
+       * Represents a file's mode and permission bits. The bits have the same
+       * definition on all systems and is portable.
+       * </pre>
+       */
+      public int getMode() {
+        return mode_;
+      }
+      /**
+       * <code>optional uint32 mode = 5;</code>
+       *
+       * <pre>
+       * Represents a file's mode and permission bits. The bits have the same
+       * definition on all systems and is portable.
+       * </pre>
+       */
+      public Builder setMode(int value) {
+        bitField0_ |= 0x00000010;
+        mode_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint32 mode = 5;</code>
+       *
+       * <pre>
+       * Represents a file's mode and permission bits. The bits have the same
+       * definition on all systems and is portable.
+       * </pre>
+       */
+      public Builder clearMode() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        mode_ = 0;
+        onChanged();
+        return this;
+      }
+
+      // optional string uid = 6;
+      private java.lang.Object uid_ = "";
+      /**
+       * <code>optional string uid = 6;</code>
+       *
+       * <pre>
+       * User ID of owner.
+       * </pre>
+       */
+      public boolean hasUid() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional string uid = 6;</code>
+       *
+       * <pre>
+       * User ID of owner.
+       * </pre>
+       */
+      public java.lang.String getUid() {
+        java.lang.Object ref = uid_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          uid_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string uid = 6;</code>
+       *
+       * <pre>
+       * User ID of owner.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getUidBytes() {
+        java.lang.Object ref = uid_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          uid_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string uid = 6;</code>
+       *
+       * <pre>
+       * User ID of owner.
+       * </pre>
+       */
+      public Builder setUid(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000020;
+        uid_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string uid = 6;</code>
+       *
+       * <pre>
+       * User ID of owner.
+       * </pre>
+       */
+      public Builder clearUid() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        uid_ = getDefaultInstance().getUid();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string uid = 6;</code>
+       *
+       * <pre>
+       * User ID of owner.
+       * </pre>
+       */
+      public Builder setUidBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000020;
+        uid_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional string gid = 7;
+      private java.lang.Object gid_ = "";
+      /**
+       * <code>optional string gid = 7;</code>
+       *
+       * <pre>
+       * Group ID of owner.
+       * </pre>
+       */
+      public boolean hasGid() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional string gid = 7;</code>
+       *
+       * <pre>
+       * Group ID of owner.
+       * </pre>
+       */
+      public java.lang.String getGid() {
+        java.lang.Object ref = gid_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          gid_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string gid = 7;</code>
+       *
+       * <pre>
+       * Group ID of owner.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getGidBytes() {
+        java.lang.Object ref = gid_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          gid_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string gid = 7;</code>
+       *
+       * <pre>
+       * Group ID of owner.
+       * </pre>
+       */
+      public Builder setGid(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000040;
+        gid_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string gid = 7;</code>
+       *
+       * <pre>
+       * Group ID of owner.
+       * </pre>
+       */
+      public Builder clearGid() {
+        bitField0_ = (bitField0_ & ~0x00000040);
+        gid_ = getDefaultInstance().getGid();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string gid = 7;</code>
+       *
+       * <pre>
+       * Group ID of owner.
+       * </pre>
+       */
+      public Builder setGidBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000040;
+        gid_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.FileInfo)
+    }
+
+    static {
+      defaultInstance = new FileInfo(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.FileInfo)
+  }
+
+  public interface DeviceOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional string path = 1;
+    /**
+     * <code>optional string path = 1;</code>
+     */
+    boolean hasPath();
+    /**
+     * <code>optional string path = 1;</code>
+     */
+    java.lang.String getPath();
+    /**
+     * <code>optional string path = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getPathBytes();
+
+    // optional .mesos.v1.Device.Number number = 2;
+    /**
+     * <code>optional .mesos.v1.Device.Number number = 2;</code>
+     */
+    boolean hasNumber();
+    /**
+     * <code>optional .mesos.v1.Device.Number number = 2;</code>
+     */
+    org.apache.mesos.v1.Protos.Device.Number getNumber();
+    /**
+     * <code>optional .mesos.v1.Device.Number number = 2;</code>
+     */
+    org.apache.mesos.v1.Protos.Device.NumberOrBuilder getNumberOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.Device}
+   *
+   * <pre>
+   **
+   * Describes information abount a device.
+   * </pre>
+   */
+  public static final class Device extends
+      com.google.protobuf.GeneratedMessage
+      implements DeviceOrBuilder {
+    // Use Device.newBuilder() to construct.
+    private Device(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Device(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Device defaultInstance;
+    public static Device getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Device getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Device(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              path_ = input.readBytes();
+              break;
+            }
+            case 18: {
+              org.apache.mesos.v1.Protos.Device.Number.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = number_.toBuilder();
+              }
+              number_ = input.readMessage(org.apache.mesos.v1.Protos.Device.Number.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(number_);
+                number_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Device_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Device_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.Device.class, org.apache.mesos.v1.Protos.Device.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Device> PARSER =
+        new com.google.protobuf.AbstractParser<Device>() {
+      public Device parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Device(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Device> getParserForType() {
+      return PARSER;
+    }
+
+    public interface NumberOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required uint64 major_number = 1;
+      /**
+       * <code>required uint64 major_number = 1;</code>
+       */
+      boolean hasMajorNumber();
+      /**
+       * <code>required uint64 major_number = 1;</code>
+       */
+      long getMajorNumber();
+
+      // required uint64 minor_number = 2;
+      /**
+       * <code>required uint64 minor_number = 2;</code>
+       */
+      boolean hasMinorNumber();
+      /**
+       * <code>required uint64 minor_number = 2;</code>
+       */
+      long getMinorNumber();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.Device.Number}
+     */
+    public static final class Number extends
+        com.google.protobuf.GeneratedMessage
+        implements NumberOrBuilder {
+      // Use Number.newBuilder() to construct.
+      private Number(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Number(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Number defaultInstance;
+      public static Number getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Number getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Number(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 8: {
+                bitField0_ |= 0x00000001;
+                majorNumber_ = input.readUInt64();
+                break;
+              }
+              case 16: {
+                bitField0_ |= 0x00000002;
+                minorNumber_ = input.readUInt64();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Device_Number_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Device_Number_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.Device.Number.class, org.apache.mesos.v1.Protos.Device.Number.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Number> PARSER =
+          new com.google.protobuf.AbstractParser<Number>() {
+        public Number parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Number(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Number> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required uint64 major_number = 1;
+      public static final int MAJOR_NUMBER_FIELD_NUMBER = 1;
+      private long majorNumber_;
+      /**
+       * <code>required uint64 major_number = 1;</code>
+       */
+      public boolean hasMajorNumber() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required uint64 major_number = 1;</code>
+       */
+      public long getMajorNumber() {
+        return majorNumber_;
+      }
+
+      // required uint64 minor_number = 2;
+      public static final int MINOR_NUMBER_FIELD_NUMBER = 2;
+      private long minorNumber_;
+      /**
+       * <code>required uint64 minor_number = 2;</code>
+       */
+      public boolean hasMinorNumber() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required uint64 minor_number = 2;</code>
+       */
+      public long getMinorNumber() {
+        return minorNumber_;
+      }
+
+      private void initFields() {
+        majorNumber_ = 0L;
+        minorNumber_ = 0L;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasMajorNumber()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!hasMinorNumber()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeUInt64(1, majorNumber_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeUInt64(2, minorNumber_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeUInt64Size(1, majorNumber_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeUInt64Size(2, minorNumber_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.Protos.Device.Number parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.Device.Number parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Device.Number parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.Device.Number parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Device.Number parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Device.Number parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Device.Number parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Device.Number parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.Device.Number parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.Device.Number parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.Protos.Device.Number prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.Device.Number}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.Protos.Device.NumberOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Device_Number_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Device_Number_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.Device.Number.class, org.apache.mesos.v1.Protos.Device.Number.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.Protos.Device.Number.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          majorNumber_ = 0L;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          minorNumber_ = 0L;
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Device_Number_descriptor;
+        }
+
+        public org.apache.mesos.v1.Protos.Device.Number getDefaultInstanceForType() {
+          return org.apache.mesos.v1.Protos.Device.Number.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.Protos.Device.Number build() {
+          org.apache.mesos.v1.Protos.Device.Number result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.Protos.Device.Number buildPartial() {
+          org.apache.mesos.v1.Protos.Device.Number result = new org.apache.mesos.v1.Protos.Device.Number(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.majorNumber_ = majorNumber_;
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          result.minorNumber_ = minorNumber_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.Protos.Device.Number) {
+            return mergeFrom((org.apache.mesos.v1.Protos.Device.Number)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.Protos.Device.Number other) {
+          if (other == org.apache.mesos.v1.Protos.Device.Number.getDefaultInstance()) return this;
+          if (other.hasMajorNumber()) {
+            setMajorNumber(other.getMajorNumber());
+          }
+          if (other.hasMinorNumber()) {
+            setMinorNumber(other.getMinorNumber());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasMajorNumber()) {
+            
+            return false;
+          }
+          if (!hasMinorNumber()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.Protos.Device.Number parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.Protos.Device.Number) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required uint64 major_number = 1;
+        private long majorNumber_ ;
+        /**
+         * <code>required uint64 major_number = 1;</code>
+         */
+        public boolean hasMajorNumber() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required uint64 major_number = 1;</code>
+         */
+        public long getMajorNumber() {
+          return majorNumber_;
+        }
+        /**
+         * <code>required uint64 major_number = 1;</code>
+         */
+        public Builder setMajorNumber(long value) {
+          bitField0_ |= 0x00000001;
+          majorNumber_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required uint64 major_number = 1;</code>
+         */
+        public Builder clearMajorNumber() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          majorNumber_ = 0L;
+          onChanged();
+          return this;
+        }
+
+        // required uint64 minor_number = 2;
+        private long minorNumber_ ;
+        /**
+         * <code>required uint64 minor_number = 2;</code>
+         */
+        public boolean hasMinorNumber() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>required uint64 minor_number = 2;</code>
+         */
+        public long getMinorNumber() {
+          return minorNumber_;
+        }
+        /**
+         * <code>required uint64 minor_number = 2;</code>
+         */
+        public Builder setMinorNumber(long value) {
+          bitField0_ |= 0x00000002;
+          minorNumber_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required uint64 minor_number = 2;</code>
+         */
+        public Builder clearMinorNumber() {
+          bitField0_ = (bitField0_ & ~0x00000002);
+          minorNumber_ = 0L;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.Device.Number)
+      }
+
+      static {
+        defaultInstance = new Number(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.Device.Number)
+    }
+
+    private int bitField0_;
+    // optional string path = 1;
+    public static final int PATH_FIELD_NUMBER = 1;
+    private java.lang.Object path_;
+    /**
+     * <code>optional string path = 1;</code>
+     */
+    public boolean hasPath() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional string path = 1;</code>
+     */
+    public java.lang.String getPath() {
+      java.lang.Object ref = path_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          path_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string path = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getPathBytes() {
+      java.lang.Object ref = path_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        path_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // optional .mesos.v1.Device.Number number = 2;
+    public static final int NUMBER_FIELD_NUMBER = 2;
+    private org.apache.mesos.v1.Protos.Device.Number number_;
+    /**
+     * <code>optional .mesos.v1.Device.Number number = 2;</code>
+     */
+    public boolean hasNumber() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional .mesos.v1.Device.Number number = 2;</code>
+     */
+    public org.apache.mesos.v1.Protos.Device.Number getNumber() {
+      return number_;
+    }
+    /**
+     * <code>optional .mesos.v1.Device.Number number = 2;</code>
+     */
+    public org.apache.mesos.v1.Protos.Device.NumberOrBuilder getNumberOrBuilder() {
+      return number_;
+    }
+
+    private void initFields() {
+      path_ = "";
+      number_ = org.apache.mesos.v1.Protos.Device.Number.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (hasNumber()) {
+        if (!getNumber().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getPathBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(2, number_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getPathBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, number_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.Device parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Device parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Device parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.Device parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Device parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Device parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Device parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Device parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.Device parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.Device parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.Device prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.Device}
+     *
+     * <pre>
+     **
+     * Describes information abount a device.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.DeviceOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Device_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Device_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.Device.class, org.apache.mesos.v1.Protos.Device.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.Device.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getNumberFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        path_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (numberBuilder_ == null) {
+          number_ = org.apache.mesos.v1.Protos.Device.Number.getDefaultInstance();
+        } else {
+          numberBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_Device_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.Device getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.Device.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.Device build() {
+        org.apache.mesos.v1.Protos.Device result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.Device buildPartial() {
+        org.apache.mesos.v1.Protos.Device result = new org.apache.mesos.v1.Protos.Device(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.path_ = path_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (numberBuilder_ == null) {
+          result.number_ = number_;
+        } else {
+          result.number_ = numberBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.Device) {
+          return mergeFrom((org.apache.mesos.v1.Protos.Device)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.Device other) {
+        if (other == org.apache.mesos.v1.Protos.Device.getDefaultInstance()) return this;
+        if (other.hasPath()) {
+          bitField0_ |= 0x00000001;
+          path_ = other.path_;
+          onChanged();
+        }
+        if (other.hasNumber()) {
+          mergeNumber(other.getNumber());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (hasNumber()) {
+          if (!getNumber().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.Device parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.Device) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional string path = 1;
+      private java.lang.Object path_ = "";
+      /**
+       * <code>optional string path = 1;</code>
+       */
+      public boolean hasPath() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional string path = 1;</code>
+       */
+      public java.lang.String getPath() {
+        java.lang.Object ref = path_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          path_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string path = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getPathBytes() {
+        java.lang.Object ref = path_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          path_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string path = 1;</code>
+       */
+      public Builder setPath(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        path_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string path = 1;</code>
+       */
+      public Builder clearPath() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        path_ = getDefaultInstance().getPath();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string path = 1;</code>
+       */
+      public Builder setPathBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        path_ = value;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.v1.Device.Number number = 2;
+      private org.apache.mesos.v1.Protos.Device.Number number_ = org.apache.mesos.v1.Protos.Device.Number.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Device.Number, org.apache.mesos.v1.Protos.Device.Number.Builder, org.apache.mesos.v1.Protos.Device.NumberOrBuilder> numberBuilder_;
+      /**
+       * <code>optional .mesos.v1.Device.Number number = 2;</code>
+       */
+      public boolean hasNumber() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.v1.Device.Number number = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.Device.Number getNumber() {
+        if (numberBuilder_ == null) {
+          return number_;
+        } else {
+          return numberBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Device.Number number = 2;</code>
+       */
+      public Builder setNumber(org.apache.mesos.v1.Protos.Device.Number value) {
+        if (numberBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          number_ = value;
+          onChanged();
+        } else {
+          numberBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Device.Number number = 2;</code>
+       */
+      public Builder setNumber(
+          org.apache.mesos.v1.Protos.Device.Number.Builder builderForValue) {
+        if (numberBuilder_ == null) {
+          number_ = builderForValue.build();
+          onChanged();
+        } else {
+          numberBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Device.Number number = 2;</code>
+       */
+      public Builder mergeNumber(org.apache.mesos.v1.Protos.Device.Number value) {
+        if (numberBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              number_ != org.apache.mesos.v1.Protos.Device.Number.getDefaultInstance()) {
+            number_ =
+              org.apache.mesos.v1.Protos.Device.Number.newBuilder(number_).mergeFrom(value).buildPartial();
+          } else {
+            number_ = value;
+          }
+          onChanged();
+        } else {
+          numberBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Device.Number number = 2;</code>
+       */
+      public Builder clearNumber() {
+        if (numberBuilder_ == null) {
+          number_ = org.apache.mesos.v1.Protos.Device.Number.getDefaultInstance();
+          onChanged();
+        } else {
+          numberBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.Device.Number number = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.Device.Number.Builder getNumberBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getNumberFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.Device.Number number = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.Device.NumberOrBuilder getNumberOrBuilder() {
+        if (numberBuilder_ != null) {
+          return numberBuilder_.getMessageOrBuilder();
+        } else {
+          return number_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.Device.Number number = 2;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Device.Number, org.apache.mesos.v1.Protos.Device.Number.Builder, org.apache.mesos.v1.Protos.Device.NumberOrBuilder> 
+          getNumberFieldBuilder() {
+        if (numberBuilder_ == null) {
+          numberBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Device.Number, org.apache.mesos.v1.Protos.Device.Number.Builder, org.apache.mesos.v1.Protos.Device.NumberOrBuilder>(
+                  number_,
+                  getParentForChildren(),
+                  isClean());
+          number_ = null;
+        }
+        return numberBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.Device)
+    }
+
+    static {
+      defaultInstance = new Device(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.Device)
+  }
+
+  public interface DeviceAccessOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required .mesos.v1.Device device = 1;
+    /**
+     * <code>required .mesos.v1.Device device = 1;</code>
+     */
+    boolean hasDevice();
+    /**
+     * <code>required .mesos.v1.Device device = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.Device getDevice();
+    /**
+     * <code>required .mesos.v1.Device device = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.DeviceOrBuilder getDeviceOrBuilder();
+
+    // required .mesos.v1.DeviceAccess.Access access = 2;
+    /**
+     * <code>required .mesos.v1.DeviceAccess.Access access = 2;</code>
+     */
+    boolean hasAccess();
+    /**
+     * <code>required .mesos.v1.DeviceAccess.Access access = 2;</code>
+     */
+    org.apache.mesos.v1.Protos.DeviceAccess.Access getAccess();
+    /**
+     * <code>required .mesos.v1.DeviceAccess.Access access = 2;</code>
+     */
+    org.apache.mesos.v1.Protos.DeviceAccess.AccessOrBuilder getAccessOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.DeviceAccess}
+   *
+   * <pre>
+   **
+   * Describes a device whitelist entry that expose from host to container.
+   * </pre>
+   */
+  public static final class DeviceAccess extends
+      com.google.protobuf.GeneratedMessage
+      implements DeviceAccessOrBuilder {
+    // Use DeviceAccess.newBuilder() to construct.
+    private DeviceAccess(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private DeviceAccess(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final DeviceAccess defaultInstance;
+    public static DeviceAccess getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public DeviceAccess getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private DeviceAccess(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              org.apache.mesos.v1.Protos.Device.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                subBuilder = device_.toBuilder();
+              }
+              device_ = input.readMessage(org.apache.mesos.v1.Protos.Device.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(device_);
+                device_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+            case 18: {
+              org.apache.mesos.v1.Protos.DeviceAccess.Access.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = access_.toBuilder();
+              }
+              access_ = input.readMessage(org.apache.mesos.v1.Protos.DeviceAccess.Access.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(access_);
+                access_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DeviceAccess_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DeviceAccess_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.DeviceAccess.class, org.apache.mesos.v1.Protos.DeviceAccess.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<DeviceAccess> PARSER =
+        new com.google.protobuf.AbstractParser<DeviceAccess>() {
+      public DeviceAccess parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new DeviceAccess(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<DeviceAccess> getParserForType() {
+      return PARSER;
+    }
+
+    public interface AccessOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // optional bool read = 1;
+      /**
+       * <code>optional bool read = 1;</code>
+       */
+      boolean hasRead();
+      /**
+       * <code>optional bool read = 1;</code>
+       */
+      boolean getRead();
+
+      // optional bool write = 2;
+      /**
+       * <code>optional bool write = 2;</code>
+       */
+      boolean hasWrite();
+      /**
+       * <code>optional bool write = 2;</code>
+       */
+      boolean getWrite();
+
+      // optional bool mknod = 3;
+      /**
+       * <code>optional bool mknod = 3;</code>
+       */
+      boolean hasMknod();
+      /**
+       * <code>optional bool mknod = 3;</code>
+       */
+      boolean getMknod();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.DeviceAccess.Access}
+     */
+    public static final class Access extends
+        com.google.protobuf.GeneratedMessage
+        implements AccessOrBuilder {
+      // Use Access.newBuilder() to construct.
+      private Access(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Access(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Access defaultInstance;
+      public static Access getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Access getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Access(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 8: {
+                bitField0_ |= 0x00000001;
+                read_ = input.readBool();
+                break;
+              }
+              case 16: {
+                bitField0_ |= 0x00000002;
+                write_ = input.readBool();
+                break;
+              }
+              case 24: {
+                bitField0_ |= 0x00000004;
+                mknod_ = input.readBool();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DeviceAccess_Access_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DeviceAccess_Access_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.DeviceAccess.Access.class, org.apache.mesos.v1.Protos.DeviceAccess.Access.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Access> PARSER =
+          new com.google.protobuf.AbstractParser<Access>() {
+        public Access parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Access(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Access> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // optional bool read = 1;
+      public static final int READ_FIELD_NUMBER = 1;
+      private boolean read_;
+      /**
+       * <code>optional bool read = 1;</code>
+       */
+      public boolean hasRead() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional bool read = 1;</code>
+       */
+      public boolean getRead() {
+        return read_;
+      }
+
+      // optional bool write = 2;
+      public static final int WRITE_FIELD_NUMBER = 2;
+      private boolean write_;
+      /**
+       * <code>optional bool write = 2;</code>
+       */
+      public boolean hasWrite() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional bool write = 2;</code>
+       */
+      public boolean getWrite() {
+        return write_;
+      }
+
+      // optional bool mknod = 3;
+      public static final int MKNOD_FIELD_NUMBER = 3;
+      private boolean mknod_;
+      /**
+       * <code>optional bool mknod = 3;</code>
+       */
+      public boolean hasMknod() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional bool mknod = 3;</code>
+       */
+      public boolean getMknod() {
+        return mknod_;
+      }
+
+      private void initFields() {
+        read_ = false;
+        write_ = false;
+        mknod_ = false;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeBool(1, read_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeBool(2, write_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeBool(3, mknod_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBoolSize(1, read_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBoolSize(2, write_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBoolSize(3, mknod_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.Protos.DeviceAccess.Access parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.DeviceAccess.Access parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.DeviceAccess.Access parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.Protos.DeviceAccess.Access parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.DeviceAccess.Access parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.DeviceAccess.Access parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.DeviceAccess.Access parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.DeviceAccess.Access parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.Protos.DeviceAccess.Access parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.Protos.DeviceAccess.Access parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.Protos.DeviceAccess.Access prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.DeviceAccess.Access}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.Protos.DeviceAccess.AccessOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DeviceAccess_Access_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DeviceAccess_Access_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.Protos.DeviceAccess.Access.class, org.apache.mesos.v1.Protos.DeviceAccess.Access.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.Protos.DeviceAccess.Access.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          read_ = false;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          write_ = false;
+          bitField0_ = (bitField0_ & ~0x00000002);
+          mknod_ = false;
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DeviceAccess_Access_descriptor;
+        }
+
+        public org.apache.mesos.v1.Protos.DeviceAccess.Access getDefaultInstanceForType() {
+          return org.apache.mesos.v1.Protos.DeviceAccess.Access.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.Protos.DeviceAccess.Access build() {
+          org.apache.mesos.v1.Protos.DeviceAccess.Access result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.Protos.DeviceAccess.Access buildPartial() {
+          org.apache.mesos.v1.Protos.DeviceAccess.Access result = new org.apache.mesos.v1.Protos.DeviceAccess.Access(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.read_ = read_;
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          result.write_ = write_;
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          result.mknod_ = mknod_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.Protos.DeviceAccess.Access) {
+            return mergeFrom((org.apache.mesos.v1.Protos.DeviceAccess.Access)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.Protos.DeviceAccess.Access other) {
+          if (other == org.apache.mesos.v1.Protos.DeviceAccess.Access.getDefaultInstance()) return this;
+          if (other.hasRead()) {
+            setRead(other.getRead());
+          }
+          if (other.hasWrite()) {
+            setWrite(other.getWrite());
+          }
+          if (other.hasMknod()) {
+            setMknod(other.getMknod());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.Protos.DeviceAccess.Access parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.Protos.DeviceAccess.Access) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // optional bool read = 1;
+        private boolean read_ ;
+        /**
+         * <code>optional bool read = 1;</code>
+         */
+        public boolean hasRead() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional bool read = 1;</code>
+         */
+        public boolean getRead() {
+          return read_;
+        }
+        /**
+         * <code>optional bool read = 1;</code>
+         */
+        public Builder setRead(boolean value) {
+          bitField0_ |= 0x00000001;
+          read_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional bool read = 1;</code>
+         */
+        public Builder clearRead() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          read_ = false;
+          onChanged();
+          return this;
+        }
+
+        // optional bool write = 2;
+        private boolean write_ ;
+        /**
+         * <code>optional bool write = 2;</code>
+         */
+        public boolean hasWrite() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional bool write = 2;</code>
+         */
+        public boolean getWrite() {
+          return write_;
+        }
+        /**
+         * <code>optional bool write = 2;</code>
+         */
+        public Builder setWrite(boolean value) {
+          bitField0_ |= 0x00000002;
+          write_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional bool write = 2;</code>
+         */
+        public Builder clearWrite() {
+          bitField0_ = (bitField0_ & ~0x00000002);
+          write_ = false;
+          onChanged();
+          return this;
+        }
+
+        // optional bool mknod = 3;
+        private boolean mknod_ ;
+        /**
+         * <code>optional bool mknod = 3;</code>
+         */
+        public boolean hasMknod() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional bool mknod = 3;</code>
+         */
+        public boolean getMknod() {
+          return mknod_;
+        }
+        /**
+         * <code>optional bool mknod = 3;</code>
+         */
+        public Builder setMknod(boolean value) {
+          bitField0_ |= 0x00000004;
+          mknod_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional bool mknod = 3;</code>
+         */
+        public Builder clearMknod() {
+          bitField0_ = (bitField0_ & ~0x00000004);
+          mknod_ = false;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.DeviceAccess.Access)
+      }
+
+      static {
+        defaultInstance = new Access(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.DeviceAccess.Access)
+    }
+
+    private int bitField0_;
+    // required .mesos.v1.Device device = 1;
+    public static final int DEVICE_FIELD_NUMBER = 1;
+    private org.apache.mesos.v1.Protos.Device device_;
+    /**
+     * <code>required .mesos.v1.Device device = 1;</code>
+     */
+    public boolean hasDevice() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required .mesos.v1.Device device = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.Device getDevice() {
+      return device_;
+    }
+    /**
+     * <code>required .mesos.v1.Device device = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.DeviceOrBuilder getDeviceOrBuilder() {
+      return device_;
+    }
+
+    // required .mesos.v1.DeviceAccess.Access access = 2;
+    public static final int ACCESS_FIELD_NUMBER = 2;
+    private org.apache.mesos.v1.Protos.DeviceAccess.Access access_;
+    /**
+     * <code>required .mesos.v1.DeviceAccess.Access access = 2;</code>
+     */
+    public boolean hasAccess() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>required .mesos.v1.DeviceAccess.Access access = 2;</code>
+     */
+    public org.apache.mesos.v1.Protos.DeviceAccess.Access getAccess() {
+      return access_;
+    }
+    /**
+     * <code>required .mesos.v1.DeviceAccess.Access access = 2;</code>
+     */
+    public org.apache.mesos.v1.Protos.DeviceAccess.AccessOrBuilder getAccessOrBuilder() {
+      return access_;
+    }
+
+    private void initFields() {
+      device_ = org.apache.mesos.v1.Protos.Device.getDefaultInstance();
+      access_ = org.apache.mesos.v1.Protos.DeviceAccess.Access.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasDevice()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasAccess()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!getDevice().isInitialized()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeMessage(1, device_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(2, access_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, device_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, access_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.DeviceAccess parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.DeviceAccess parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.DeviceAccess parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.DeviceAccess parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.DeviceAccess parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.DeviceAccess parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.DeviceAccess parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.DeviceAccess parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.DeviceAccess parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.DeviceAccess parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.DeviceAccess prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.DeviceAccess}
+     *
+     * <pre>
+     **
+     * Describes a device whitelist entry that expose from host to container.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.DeviceAccessOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DeviceAccess_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DeviceAccess_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.DeviceAccess.class, org.apache.mesos.v1.Protos.DeviceAccess.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.DeviceAccess.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getDeviceFieldBuilder();
+          getAccessFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (deviceBuilder_ == null) {
+          device_ = org.apache.mesos.v1.Protos.Device.getDefaultInstance();
+        } else {
+          deviceBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (accessBuilder_ == null) {
+          access_ = org.apache.mesos.v1.Protos.DeviceAccess.Access.getDefaultInstance();
+        } else {
+          accessBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DeviceAccess_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.DeviceAccess getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.DeviceAccess.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.DeviceAccess build() {
+        org.apache.mesos.v1.Protos.DeviceAccess result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.DeviceAccess buildPartial() {
+        org.apache.mesos.v1.Protos.DeviceAccess result = new org.apache.mesos.v1.Protos.DeviceAccess(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        if (deviceBuilder_ == null) {
+          result.device_ = device_;
+        } else {
+          result.device_ = deviceBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (accessBuilder_ == null) {
+          result.access_ = access_;
+        } else {
+          result.access_ = accessBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.DeviceAccess) {
+          return mergeFrom((org.apache.mesos.v1.Protos.DeviceAccess)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.DeviceAccess other) {
+        if (other == org.apache.mesos.v1.Protos.DeviceAccess.getDefaultInstance()) return this;
+        if (other.hasDevice()) {
+          mergeDevice(other.getDevice());
+        }
+        if (other.hasAccess()) {
+          mergeAccess(other.getAccess());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasDevice()) {
+          
+          return false;
+        }
+        if (!hasAccess()) {
+          
+          return false;
+        }
+        if (!getDevice().isInitialized()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.DeviceAccess parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.DeviceAccess) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required .mesos.v1.Device device = 1;
+      private org.apache.mesos.v1.Protos.Device device_ = org.apache.mesos.v1.Protos.Device.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Device, org.apache.mesos.v1.Protos.Device.Builder, org.apache.mesos.v1.Protos.DeviceOrBuilder> deviceBuilder_;
+      /**
+       * <code>required .mesos.v1.Device device = 1;</code>
+       */
+      public boolean hasDevice() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.v1.Device device = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.Device getDevice() {
+        if (deviceBuilder_ == null) {
+          return device_;
+        } else {
+          return deviceBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>required .mesos.v1.Device device = 1;</code>
+       */
+      public Builder setDevice(org.apache.mesos.v1.Protos.Device value) {
+        if (deviceBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          device_ = value;
+          onChanged();
+        } else {
+          deviceBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.Device device = 1;</code>
+       */
+      public Builder setDevice(
+          org.apache.mesos.v1.Protos.Device.Builder builderForValue) {
+        if (deviceBuilder_ == null) {
+          device_ = builderForValue.build();
+          onChanged();
+        } else {
+          deviceBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.Device device = 1;</code>
+       */
+      public Builder mergeDevice(org.apache.mesos.v1.Protos.Device value) {
+        if (deviceBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001) &&
+              device_ != org.apache.mesos.v1.Protos.Device.getDefaultInstance()) {
+            device_ =
+              org.apache.mesos.v1.Protos.Device.newBuilder(device_).mergeFrom(value).buildPartial();
+          } else {
+            device_ = value;
+          }
+          onChanged();
+        } else {
+          deviceBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.Device device = 1;</code>
+       */
+      public Builder clearDevice() {
+        if (deviceBuilder_ == null) {
+          device_ = org.apache.mesos.v1.Protos.Device.getDefaultInstance();
+          onChanged();
+        } else {
+          deviceBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.Device device = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.Device.Builder getDeviceBuilder() {
+        bitField0_ |= 0x00000001;
+        onChanged();
+        return getDeviceFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>required .mesos.v1.Device device = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.DeviceOrBuilder getDeviceOrBuilder() {
+        if (deviceBuilder_ != null) {
+          return deviceBuilder_.getMessageOrBuilder();
+        } else {
+          return device_;
+        }
+      }
+      /**
+       * <code>required .mesos.v1.Device device = 1;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.Device, org.apache.mesos.v1.Protos.Device.Builder, org.apache.mesos.v1.Protos.DeviceOrBuilder> 
+          getDeviceFieldBuilder() {
+        if (deviceBuilder_ == null) {
+          deviceBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.Device, org.apache.mesos.v1.Protos.Device.Builder, org.apache.mesos.v1.Protos.DeviceOrBuilder>(
+                  device_,
+                  getParentForChildren(),
+                  isClean());
+          device_ = null;
+        }
+        return deviceBuilder_;
+      }
+
+      // required .mesos.v1.DeviceAccess.Access access = 2;
+      private org.apache.mesos.v1.Protos.DeviceAccess.Access access_ = org.apache.mesos.v1.Protos.DeviceAccess.Access.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.DeviceAccess.Access, org.apache.mesos.v1.Protos.DeviceAccess.Access.Builder, org.apache.mesos.v1.Protos.DeviceAccess.AccessOrBuilder> accessBuilder_;
+      /**
+       * <code>required .mesos.v1.DeviceAccess.Access access = 2;</code>
+       */
+      public boolean hasAccess() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required .mesos.v1.DeviceAccess.Access access = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.DeviceAccess.Access getAccess() {
+        if (accessBuilder_ == null) {
+          return access_;
+        } else {
+          return accessBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>required .mesos.v1.DeviceAccess.Access access = 2;</code>
+       */
+      public Builder setAccess(org.apache.mesos.v1.Protos.DeviceAccess.Access value) {
+        if (accessBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          access_ = value;
+          onChanged();
+        } else {
+          accessBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.DeviceAccess.Access access = 2;</code>
+       */
+      public Builder setAccess(
+          org.apache.mesos.v1.Protos.DeviceAccess.Access.Builder builderForValue) {
+        if (accessBuilder_ == null) {
+          access_ = builderForValue.build();
+          onChanged();
+        } else {
+          accessBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.DeviceAccess.Access access = 2;</code>
+       */
+      public Builder mergeAccess(org.apache.mesos.v1.Protos.DeviceAccess.Access value) {
+        if (accessBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              access_ != org.apache.mesos.v1.Protos.DeviceAccess.Access.getDefaultInstance()) {
+            access_ =
+              org.apache.mesos.v1.Protos.DeviceAccess.Access.newBuilder(access_).mergeFrom(value).buildPartial();
+          } else {
+            access_ = value;
+          }
+          onChanged();
+        } else {
+          accessBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.DeviceAccess.Access access = 2;</code>
+       */
+      public Builder clearAccess() {
+        if (accessBuilder_ == null) {
+          access_ = org.apache.mesos.v1.Protos.DeviceAccess.Access.getDefaultInstance();
+          onChanged();
+        } else {
+          accessBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.DeviceAccess.Access access = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.DeviceAccess.Access.Builder getAccessBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getAccessFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>required .mesos.v1.DeviceAccess.Access access = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.DeviceAccess.AccessOrBuilder getAccessOrBuilder() {
+        if (accessBuilder_ != null) {
+          return accessBuilder_.getMessageOrBuilder();
+        } else {
+          return access_;
+        }
+      }
+      /**
+       * <code>required .mesos.v1.DeviceAccess.Access access = 2;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.DeviceAccess.Access, org.apache.mesos.v1.Protos.DeviceAccess.Access.Builder, org.apache.mesos.v1.Protos.DeviceAccess.AccessOrBuilder> 
+          getAccessFieldBuilder() {
+        if (accessBuilder_ == null) {
+          accessBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.DeviceAccess.Access, org.apache.mesos.v1.Protos.DeviceAccess.Access.Builder, org.apache.mesos.v1.Protos.DeviceAccess.AccessOrBuilder>(
+                  access_,
+                  getParentForChildren(),
+                  isClean());
+          access_ = null;
+        }
+        return accessBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.DeviceAccess)
+    }
+
+    static {
+      defaultInstance = new DeviceAccess(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.DeviceAccess)
+  }
+
+  public interface DeviceWhitelistOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // repeated .mesos.v1.DeviceAccess allowed_devices = 1;
+    /**
+     * <code>repeated .mesos.v1.DeviceAccess allowed_devices = 1;</code>
+     */
+    java.util.List<org.apache.mesos.v1.Protos.DeviceAccess> 
+        getAllowedDevicesList();
+    /**
+     * <code>repeated .mesos.v1.DeviceAccess allowed_devices = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.DeviceAccess getAllowedDevices(int index);
+    /**
+     * <code>repeated .mesos.v1.DeviceAccess allowed_devices = 1;</code>
+     */
+    int getAllowedDevicesCount();
+    /**
+     * <code>repeated .mesos.v1.DeviceAccess allowed_devices = 1;</code>
+     */
+    java.util.List<? extends org.apache.mesos.v1.Protos.DeviceAccessOrBuilder> 
+        getAllowedDevicesOrBuilderList();
+    /**
+     * <code>repeated .mesos.v1.DeviceAccess allowed_devices = 1;</code>
+     */
+    org.apache.mesos.v1.Protos.DeviceAccessOrBuilder getAllowedDevicesOrBuilder(
+        int index);
+  }
+  /**
+   * Protobuf type {@code mesos.v1.DeviceWhitelist}
+   */
+  public static final class DeviceWhitelist extends
+      com.google.protobuf.GeneratedMessage
+      implements DeviceWhitelistOrBuilder {
+    // Use DeviceWhitelist.newBuilder() to construct.
+    private DeviceWhitelist(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private DeviceWhitelist(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final DeviceWhitelist defaultInstance;
+    public static DeviceWhitelist getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public DeviceWhitelist getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private DeviceWhitelist(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                allowedDevices_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.DeviceAccess>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              allowedDevices_.add(input.readMessage(org.apache.mesos.v1.Protos.DeviceAccess.PARSER, extensionRegistry));
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+          allowedDevices_ = java.util.Collections.unmodifiableList(allowedDevices_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DeviceWhitelist_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DeviceWhitelist_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.Protos.DeviceWhitelist.class, org.apache.mesos.v1.Protos.DeviceWhitelist.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<DeviceWhitelist> PARSER =
+        new com.google.protobuf.AbstractParser<DeviceWhitelist>() {
+      public DeviceWhitelist parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new DeviceWhitelist(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<DeviceWhitelist> getParserForType() {
+      return PARSER;
+    }
+
+    // repeated .mesos.v1.DeviceAccess allowed_devices = 1;
+    public static final int ALLOWED_DEVICES_FIELD_NUMBER = 1;
+    private java.util.List<org.apache.mesos.v1.Protos.DeviceAccess> allowedDevices_;
+    /**
+     * <code>repeated .mesos.v1.DeviceAccess allowed_devices = 1;</code>
+     */
+    public java.util.List<org.apache.mesos.v1.Protos.DeviceAccess> getAllowedDevicesList() {
+      return allowedDevices_;
+    }
+    /**
+     * <code>repeated .mesos.v1.DeviceAccess allowed_devices = 1;</code>
+     */
+    public java.util.List<? extends org.apache.mesos.v1.Protos.DeviceAccessOrBuilder> 
+        getAllowedDevicesOrBuilderList() {
+      return allowedDevices_;
+    }
+    /**
+     * <code>repeated .mesos.v1.DeviceAccess allowed_devices = 1;</code>
+     */
+    public int getAllowedDevicesCount() {
+      return allowedDevices_.size();
+    }
+    /**
+     * <code>repeated .mesos.v1.DeviceAccess allowed_devices = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.DeviceAccess getAllowedDevices(int index) {
+      return allowedDevices_.get(index);
+    }
+    /**
+     * <code>repeated .mesos.v1.DeviceAccess allowed_devices = 1;</code>
+     */
+    public org.apache.mesos.v1.Protos.DeviceAccessOrBuilder getAllowedDevicesOrBuilder(
+        int index) {
+      return allowedDevices_.get(index);
+    }
+
+    private void initFields() {
+      allowedDevices_ = java.util.Collections.emptyList();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      for (int i = 0; i < getAllowedDevicesCount(); i++) {
+        if (!getAllowedDevices(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      for (int i = 0; i < allowedDevices_.size(); i++) {
+        output.writeMessage(1, allowedDevices_.get(i));
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      for (int i = 0; i < allowedDevices_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, allowedDevices_.get(i));
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.Protos.DeviceWhitelist parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.DeviceWhitelist parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.DeviceWhitelist parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.Protos.DeviceWhitelist parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.DeviceWhitelist parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.DeviceWhitelist parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.DeviceWhitelist parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.DeviceWhitelist parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.Protos.DeviceWhitelist parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.Protos.DeviceWhitelist parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.Protos.DeviceWhitelist prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.DeviceWhitelist}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.Protos.DeviceWhitelistOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DeviceWhitelist_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DeviceWhitelist_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.Protos.DeviceWhitelist.class, org.apache.mesos.v1.Protos.DeviceWhitelist.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.Protos.DeviceWhitelist.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getAllowedDevicesFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (allowedDevicesBuilder_ == null) {
+          allowedDevices_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+        } else {
+          allowedDevicesBuilder_.clear();
+        }
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.Protos.internal_static_mesos_v1_DeviceWhitelist_descriptor;
+      }
+
+      public org.apache.mesos.v1.Protos.DeviceWhitelist getDefaultInstanceForType() {
+        return org.apache.mesos.v1.Protos.DeviceWhitelist.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.Protos.DeviceWhitelist build() {
+        org.apache.mesos.v1.Protos.DeviceWhitelist result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.Protos.DeviceWhitelist buildPartial() {
+        org.apache.mesos.v1.Protos.DeviceWhitelist result = new org.apache.mesos.v1.Protos.DeviceWhitelist(this);
+        int from_bitField0_ = bitField0_;
+        if (allowedDevicesBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            allowedDevices_ = java.util.Collections.unmodifiableList(allowedDevices_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.allowedDevices_ = allowedDevices_;
+        } else {
+          result.allowedDevices_ = allowedDevicesBuilder_.build();
+        }
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.Protos.DeviceWhitelist) {
+          return mergeFrom((org.apache.mesos.v1.Protos.DeviceWhitelist)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.Protos.DeviceWhitelist other) {
+        if (other == org.apache.mesos.v1.Protos.DeviceWhitelist.getDefaultInstance()) return this;
+        if (allowedDevicesBuilder_ == null) {
+          if (!other.allowedDevices_.isEmpty()) {
+            if (allowedDevices_.isEmpty()) {
+              allowedDevices_ = other.allowedDevices_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureAllowedDevicesIsMutable();
+              allowedDevices_.addAll(other.allowedDevices_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.allowedDevices_.isEmpty()) {
+            if (allowedDevicesBuilder_.isEmpty()) {
+              allowedDevicesBuilder_.dispose();
+              allowedDevicesBuilder_ = null;
+              allowedDevices_ = other.allowedDevices_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              allowedDevicesBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getAllowedDevicesFieldBuilder() : null;
+            } else {
+              allowedDevicesBuilder_.addAllMessages(other.allowedDevices_);
+            }
+          }
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        for (int i = 0; i < getAllowedDevicesCount(); i++) {
+          if (!getAllowedDevices(i).isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.Protos.DeviceWhitelist parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.Protos.DeviceWhitelist) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // repeated .mesos.v1.DeviceAccess allowed_devices = 1;
+      private java.util.List<org.apache.mesos.v1.Protos.DeviceAccess> allowedDevices_ =
+        java.util.Collections.emptyList();
+      private void ensureAllowedDevicesIsMutable() {
+        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+          allowedDevices_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.DeviceAccess>(allowedDevices_);
+          bitField0_ |= 0x00000001;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.DeviceAccess, org.apache.mesos.v1.Protos.DeviceAccess.Builder, org.apache.mesos.v1.Protos.DeviceAccessOrBuilder> allowedDevicesBuilder_;
+
+      /**
+       * <code>repeated .mesos.v1.DeviceAccess allowed_devices = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.DeviceAccess> getAllowedDevicesList() {
+        if (allowedDevicesBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(allowedDevices_);
+        } else {
+          return allowedDevicesBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.DeviceAccess allowed_devices = 1;</code>
+       */
+      public int getAllowedDevicesCount() {
+        if (allowedDevicesBuilder_ == null) {
+          return allowedDevices_.size();
+        } else {
+          return allowedDevicesBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.DeviceAccess allowed_devices = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.DeviceAccess getAllowedDevices(int index) {
+        if (allowedDevicesBuilder_ == null) {
+          return allowedDevices_.get(index);
+        } else {
+          return allowedDevicesBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.DeviceAccess allowed_devices = 1;</code>
+       */
+      public Builder setAllowedDevices(
+          int index, org.apache.mesos.v1.Protos.DeviceAccess value) {
+        if (allowedDevicesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureAllowedDevicesIsMutable();
+          allowedDevices_.set(index, value);
+          onChanged();
+        } else {
+          allowedDevicesBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.DeviceAccess allowed_devices = 1;</code>
+       */
+      public Builder setAllowedDevices(
+          int index, org.apache.mesos.v1.Protos.DeviceAccess.Builder builderForValue) {
+        if (allowedDevicesBuilder_ == null) {
+          ensureAllowedDevicesIsMutable();
+          allowedDevices_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          allowedDevicesBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.DeviceAccess allowed_devices = 1;</code>
+       */
+      public Builder addAllowedDevices(org.apache.mesos.v1.Protos.DeviceAccess value) {
+        if (allowedDevicesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureAllowedDevicesIsMutable();
+          allowedDevices_.add(value);
+          onChanged();
+        } else {
+          allowedDevicesBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.DeviceAccess allowed_devices = 1;</code>
+       */
+      public Builder addAllowedDevices(
+          int index, org.apache.mesos.v1.Protos.DeviceAccess value) {
+        if (allowedDevicesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureAllowedDevicesIsMutable();
+          allowedDevices_.add(index, value);
+          onChanged();
+        } else {
+          allowedDevicesBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.DeviceAccess allowed_devices = 1;</code>
+       */
+      public Builder addAllowedDevices(
+          org.apache.mesos.v1.Protos.DeviceAccess.Builder builderForValue) {
+        if (allowedDevicesBuilder_ == null) {
+          ensureAllowedDevicesIsMutable();
+          allowedDevices_.add(builderForValue.build());
+          onChanged();
+        } else {
+          allowedDevicesBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.DeviceAccess allowed_devices = 1;</code>
+       */
+      public Builder addAllowedDevices(
+          int index, org.apache.mesos.v1.Protos.DeviceAccess.Builder builderForValue) {
+        if (allowedDevicesBuilder_ == null) {
+          ensureAllowedDevicesIsMutable();
+          allowedDevices_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          allowedDevicesBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.DeviceAccess allowed_devices = 1;</code>
+       */
+      public Builder addAllAllowedDevices(
+          java.lang.Iterable<? extends org.apache.mesos.v1.Protos.DeviceAccess> values) {
+        if (allowedDevicesBuilder_ == null) {
+          ensureAllowedDevicesIsMutable();
+          super.addAll(values, allowedDevices_);
+          onChanged();
+        } else {
+          allowedDevicesBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.DeviceAccess allowed_devices = 1;</code>
+       */
+      public Builder clearAllowedDevices() {
+        if (allowedDevicesBuilder_ == null) {
+          allowedDevices_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+        } else {
+          allowedDevicesBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.DeviceAccess allowed_devices = 1;</code>
+       */
+      public Builder removeAllowedDevices(int index) {
+        if (allowedDevicesBuilder_ == null) {
+          ensureAllowedDevicesIsMutable();
+          allowedDevices_.remove(index);
+          onChanged();
+        } else {
+          allowedDevicesBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .mesos.v1.DeviceAccess allowed_devices = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.DeviceAccess.Builder getAllowedDevicesBuilder(
+          int index) {
+        return getAllowedDevicesFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.DeviceAccess allowed_devices = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.DeviceAccessOrBuilder getAllowedDevicesOrBuilder(
+          int index) {
+        if (allowedDevicesBuilder_ == null) {
+          return allowedDevices_.get(index);  } else {
+          return allowedDevicesBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.DeviceAccess allowed_devices = 1;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.DeviceAccessOrBuilder> 
+           getAllowedDevicesOrBuilderList() {
+        if (allowedDevicesBuilder_ != null) {
+          return allowedDevicesBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(allowedDevices_);
+        }
+      }
+      /**
+       * <code>repeated .mesos.v1.DeviceAccess allowed_devices = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.DeviceAccess.Builder addAllowedDevicesBuilder() {
+        return getAllowedDevicesFieldBuilder().addBuilder(
+            org.apache.mesos.v1.Protos.DeviceAccess.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.DeviceAccess allowed_devices = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.DeviceAccess.Builder addAllowedDevicesBuilder(
+          int index) {
+        return getAllowedDevicesFieldBuilder().addBuilder(
+            index, org.apache.mesos.v1.Protos.DeviceAccess.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .mesos.v1.DeviceAccess allowed_devices = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.DeviceAccess.Builder> 
+           getAllowedDevicesBuilderList() {
+        return getAllowedDevicesFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.mesos.v1.Protos.DeviceAccess, org.apache.mesos.v1.Protos.DeviceAccess.Builder, org.apache.mesos.v1.Protos.DeviceAccessOrBuilder> 
+          getAllowedDevicesFieldBuilder() {
+        if (allowedDevicesBuilder_ == null) {
+          allowedDevicesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.mesos.v1.Protos.DeviceAccess, org.apache.mesos.v1.Protos.DeviceAccess.Builder, org.apache.mesos.v1.Protos.DeviceAccessOrBuilder>(
+                  allowedDevices_,
+                  ((bitField0_ & 0x00000001) == 0x00000001),
+                  getParentForChildren(),
+                  isClean());
+          allowedDevices_ = null;
+        }
+        return allowedDevicesBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.DeviceWhitelist)
+    }
+
+    static {
+      defaultInstance = new DeviceWhitelist(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.DeviceWhitelist)
+  }
+
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_FrameworkID_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_FrameworkID_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_OfferID_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_OfferID_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_AgentID_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_AgentID_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_TaskID_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_TaskID_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_ExecutorID_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_ExecutorID_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_ContainerID_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_ContainerID_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_ResourceProviderID_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_ResourceProviderID_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_TimeInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_TimeInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_DurationInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_DurationInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Address_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Address_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_URL_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_URL_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Unavailability_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Unavailability_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_MachineID_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_MachineID_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_MachineInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_MachineInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_FrameworkInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_FrameworkInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_FrameworkInfo_Capability_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_FrameworkInfo_Capability_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_CheckInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_CheckInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_CheckInfo_Command_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_CheckInfo_Command_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_CheckInfo_Http_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_CheckInfo_Http_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_CheckInfo_Tcp_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_CheckInfo_Tcp_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_HealthCheck_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_HealthCheck_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_HealthCheck_HTTPCheckInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_HealthCheck_HTTPCheckInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_HealthCheck_TCPCheckInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_HealthCheck_TCPCheckInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_KillPolicy_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_KillPolicy_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_CommandInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_CommandInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_CommandInfo_URI_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_CommandInfo_URI_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_ExecutorInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_ExecutorInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_DomainInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_DomainInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_DomainInfo_FaultDomain_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_DomainInfo_FaultDomain_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_DomainInfo_FaultDomain_RegionInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_DomainInfo_FaultDomain_RegionInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_DomainInfo_FaultDomain_ZoneInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_DomainInfo_FaultDomain_ZoneInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_MasterInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_MasterInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_AgentInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_AgentInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_AgentInfo_Capability_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_AgentInfo_Capability_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_ResourceProviderInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_ResourceProviderInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Value_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Value_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Value_Scalar_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Value_Scalar_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Value_Range_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Value_Range_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Value_Ranges_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Value_Ranges_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Value_Set_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Value_Set_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Value_Text_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Value_Text_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Attribute_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Attribute_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Resource_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Resource_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Resource_AllocationInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Resource_AllocationInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Resource_ReservationInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Resource_ReservationInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Resource_DiskInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Resource_DiskInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Resource_DiskInfo_Persistence_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Resource_DiskInfo_Persistence_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Resource_DiskInfo_Source_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Resource_DiskInfo_Source_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Resource_DiskInfo_Source_Path_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Resource_DiskInfo_Source_Path_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Resource_DiskInfo_Source_Mount_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Resource_DiskInfo_Source_Mount_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Resource_RevocableInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Resource_RevocableInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Resource_SharedInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Resource_SharedInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_TrafficControlStatistics_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_TrafficControlStatistics_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_IpStatistics_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_IpStatistics_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_IcmpStatistics_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_IcmpStatistics_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_TcpStatistics_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_TcpStatistics_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_UdpStatistics_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_UdpStatistics_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_SNMPStatistics_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_SNMPStatistics_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_DiskStatistics_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_DiskStatistics_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_ResourceStatistics_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_ResourceStatistics_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_ResourceUsage_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_ResourceUsage_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_ResourceUsage_Executor_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_ResourceUsage_Executor_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_ResourceUsage_Executor_Task_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_ResourceUsage_Executor_Task_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_PerfStatistics_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_PerfStatistics_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Request_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Request_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Offer_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Offer_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Offer_Operation_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Offer_Operation_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Offer_Operation_Launch_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Offer_Operation_Launch_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Offer_Operation_LaunchGroup_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Offer_Operation_LaunchGroup_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Offer_Operation_Reserve_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Offer_Operation_Reserve_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Offer_Operation_Unreserve_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Offer_Operation_Unreserve_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Offer_Operation_Create_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Offer_Operation_Create_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Offer_Operation_Destroy_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Offer_Operation_Destroy_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_InverseOffer_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_InverseOffer_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_TaskInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_TaskInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_TaskGroupInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_TaskGroupInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Task_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Task_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_CheckStatusInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_CheckStatusInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_CheckStatusInfo_Command_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_CheckStatusInfo_Command_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_CheckStatusInfo_Http_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_CheckStatusInfo_Http_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_CheckStatusInfo_Tcp_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_CheckStatusInfo_Tcp_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_TaskStatus_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_TaskStatus_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Filters_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Filters_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Environment_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Environment_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Environment_Variable_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Environment_Variable_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Parameter_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Parameter_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Parameters_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Parameters_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Credential_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Credential_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Credentials_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Credentials_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Secret_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Secret_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Secret_Reference_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Secret_Reference_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Secret_Value_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Secret_Value_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_RateLimit_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_RateLimit_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_RateLimits_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_RateLimits_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Image_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Image_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Image_Appc_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Image_Appc_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Image_Docker_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Image_Docker_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Volume_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Volume_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Volume_Source_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Volume_Source_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Volume_Source_DockerVolume_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Volume_Source_DockerVolume_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Volume_Source_SandboxPath_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Volume_Source_SandboxPath_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_NetworkInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_NetworkInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_NetworkInfo_IPAddress_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_NetworkInfo_IPAddress_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_NetworkInfo_PortMapping_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_NetworkInfo_PortMapping_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_CapabilityInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_CapabilityInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_LinuxInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_LinuxInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_RLimitInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_RLimitInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_RLimitInfo_RLimit_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_RLimitInfo_RLimit_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_TTYInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_TTYInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_TTYInfo_WindowSize_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_TTYInfo_WindowSize_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_ContainerInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_ContainerInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_ContainerInfo_DockerInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_ContainerInfo_DockerInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_ContainerInfo_DockerInfo_PortMapping_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_ContainerInfo_DockerInfo_PortMapping_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_ContainerInfo_MesosInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_ContainerInfo_MesosInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_ContainerStatus_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_ContainerStatus_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_CgroupInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_CgroupInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_CgroupInfo_Blkio_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_CgroupInfo_Blkio_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_CgroupInfo_Blkio_Value_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_CgroupInfo_Blkio_Value_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_CgroupInfo_Blkio_CFQ_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_CgroupInfo_Blkio_CFQ_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_CgroupInfo_Blkio_CFQ_Statistics_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_CgroupInfo_Blkio_CFQ_Statistics_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_CgroupInfo_Blkio_Throttling_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_CgroupInfo_Blkio_Throttling_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_CgroupInfo_Blkio_Throttling_Statistics_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_CgroupInfo_Blkio_Throttling_Statistics_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_CgroupInfo_Blkio_Statistics_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_CgroupInfo_Blkio_Statistics_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_CgroupInfo_NetCls_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_CgroupInfo_NetCls_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Labels_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Labels_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Label_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Label_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Port_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Port_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Ports_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Ports_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_DiscoveryInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_DiscoveryInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_WeightInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_WeightInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_VersionInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_VersionInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Flag_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Flag_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Role_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Role_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Metric_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Metric_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_FileInfo_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_FileInfo_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Device_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Device_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_Device_Number_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_Device_Number_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_DeviceAccess_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_DeviceAccess_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_DeviceAccess_Access_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_DeviceAccess_Access_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_DeviceWhitelist_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_DeviceWhitelist_fieldAccessorTable;
+
+  public static com.google.protobuf.Descriptors.FileDescriptor
+      getDescriptor() {
+    return descriptor;
+  }
+  private static com.google.protobuf.Descriptors.FileDescriptor
+      descriptor;
+  static {
+    java.lang.String[] descriptorData = {
+      "\n\024mesos/v1/mesos.proto\022\010mesos.v1\"\034\n\013Fram" +
+      "eworkID\022\r\n\005value\030\001 \002(\t\"\030\n\007OfferID\022\r\n\005val" +
+      "ue\030\001 \002(\t\"\030\n\007AgentID\022\r\n\005value\030\001 \002(\t\"\027\n\006Ta" +
+      "skID\022\r\n\005value\030\001 \002(\t\"\033\n\nExecutorID\022\r\n\005val" +
+      "ue\030\001 \002(\t\"C\n\013ContainerID\022\r\n\005value\030\001 \002(\t\022%" +
+      "\n\006parent\030\002 \001(\0132\025.mesos.v1.ContainerID\"#\n" +
+      "\022ResourceProviderID\022\r\n\005value\030\001 \002(\t\"\037\n\010Ti" +
+      "meInfo\022\023\n\013nanoseconds\030\001 \002(\003\"#\n\014DurationI" +
+      "nfo\022\023\n\013nanoseconds\030\001 \002(\003\"5\n\007Address\022\020\n\010h" +
+      "ostname\030\001 \001(\t\022\n\n\002ip\030\002 \001(\t\022\014\n\004port\030\003 \002(\005\"",
+      "}\n\003URL\022\016\n\006scheme\030\001 \002(\t\022\"\n\007address\030\002 \002(\0132" +
+      "\021.mesos.v1.Address\022\014\n\004path\030\003 \001(\t\022\"\n\005quer" +
+      "y\030\004 \003(\0132\023.mesos.v1.Parameter\022\020\n\010fragment" +
+      "\030\005 \001(\t\"]\n\016Unavailability\022!\n\005start\030\001 \002(\0132" +
+      "\022.mesos.v1.TimeInfo\022(\n\010duration\030\002 \001(\0132\026." +
+      "mesos.v1.DurationInfo\")\n\tMachineID\022\020\n\010ho" +
+      "stname\030\001 \001(\t\022\n\n\002ip\030\002 \001(\t\"\262\001\n\013MachineInfo" +
+      "\022\037\n\002id\030\001 \002(\0132\023.mesos.v1.MachineID\022(\n\004mod" +
+      "e\030\002 \001(\0162\032.mesos.v1.MachineInfo.Mode\0220\n\016u" +
+      "navailability\030\003 \001(\0132\030.mesos.v1.Unavailab",
+      "ility\"&\n\004Mode\022\006\n\002UP\020\001\022\014\n\010DRAINING\020\002\022\010\n\004D" +
+      "OWN\020\003\"\307\004\n\rFrameworkInfo\022\014\n\004user\030\001 \002(\t\022\014\n" +
+      "\004name\030\002 \002(\t\022!\n\002id\030\003 \001(\0132\025.mesos.v1.Frame" +
+      "workID\022\033\n\020failover_timeout\030\004 \001(\001:\0010\022\031\n\nc" +
+      "heckpoint\030\005 \001(\010:\005false\022\023\n\004role\030\006 \001(\t:\001*B" +
+      "\002\030\001\022\r\n\005roles\030\014 \003(\t\022\020\n\010hostname\030\007 \001(\t\022\021\n\t" +
+      "principal\030\010 \001(\t\022\021\n\twebui_url\030\t \001(\t\0228\n\014ca" +
+      "pabilities\030\n \003(\0132\".mesos.v1.FrameworkInf" +
+      "o.Capability\022 \n\006labels\030\013 \001(\0132\020.mesos.v1." +
+      "Labels\032\206\002\n\nCapability\0225\n\004type\030\001 \001(\0162\'.me",
+      "sos.v1.FrameworkInfo.Capability.Type\"\300\001\n" +
+      "\004Type\022\013\n\007UNKNOWN\020\000\022\027\n\023REVOCABLE_RESOURCE" +
+      "S\020\001\022\026\n\022TASK_KILLING_STATE\020\002\022\021\n\rGPU_RESOU" +
+      "RCES\020\003\022\024\n\020SHARED_RESOURCES\020\004\022\023\n\017PARTITIO" +
+      "N_AWARE\020\005\022\016\n\nMULTI_ROLE\020\006\022\032\n\026RESERVATION" +
+      "_REFINEMENT\020\007\022\020\n\014REGION_AWARE\020\010\"\246\003\n\tChec" +
+      "kInfo\022&\n\004type\030\001 \001(\0162\030.mesos.v1.CheckInfo" +
+      ".Type\022,\n\007command\030\002 \001(\0132\033.mesos.v1.CheckI" +
+      "nfo.Command\022&\n\004http\030\003 \001(\0132\030.mesos.v1.Che" +
+      "ckInfo.Http\022$\n\003tcp\030\007 \001(\0132\027.mesos.v1.Chec",
+      "kInfo.Tcp\022\031\n\rdelay_seconds\030\004 \001(\001:\00215\022\034\n\020" +
+      "interval_seconds\030\005 \001(\001:\00210\022\033\n\017timeout_se" +
+      "conds\030\006 \001(\001:\00220\0321\n\007Command\022&\n\007command\030\001 " +
+      "\002(\0132\025.mesos.v1.CommandInfo\032\"\n\004Http\022\014\n\004po" +
+      "rt\030\001 \002(\r\022\014\n\004path\030\002 \001(\t\032\023\n\003Tcp\022\014\n\004port\030\001 " +
+      "\002(\r\"3\n\004Type\022\013\n\007UNKNOWN\020\000\022\013\n\007COMMAND\020\001\022\010\n" +
+      "\004HTTP\020\002\022\007\n\003TCP\020\003\"\376\003\n\013HealthCheck\022\031\n\rdela" +
+      "y_seconds\030\002 \001(\001:\00215\022\034\n\020interval_seconds\030" +
+      "\003 \001(\001:\00210\022\033\n\017timeout_seconds\030\004 \001(\001:\00220\022\037" +
+      "\n\024consecutive_failures\030\005 \001(\r:\0013\022 \n\024grace",
+      "_period_seconds\030\006 \001(\001:\00210\022(\n\004type\030\010 \001(\0162" +
+      "\032.mesos.v1.HealthCheck.Type\022&\n\007command\030\007" +
+      " \001(\0132\025.mesos.v1.CommandInfo\0221\n\004http\030\001 \001(" +
+      "\0132#.mesos.v1.HealthCheck.HTTPCheckInfo\022/" +
+      "\n\003tcp\030\t \001(\0132\".mesos.v1.HealthCheck.TCPCh" +
+      "eckInfo\032M\n\rHTTPCheckInfo\022\016\n\006scheme\030\003 \001(\t" +
+      "\022\014\n\004port\030\001 \002(\r\022\014\n\004path\030\002 \001(\t\022\020\n\010statuses" +
+      "\030\004 \003(\r\032\034\n\014TCPCheckInfo\022\014\n\004port\030\001 \002(\r\"3\n\004" +
+      "Type\022\013\n\007UNKNOWN\020\000\022\013\n\007COMMAND\020\001\022\010\n\004HTTP\020\002" +
+      "\022\007\n\003TCP\020\003\":\n\nKillPolicy\022,\n\014grace_period\030",
+      "\001 \001(\0132\026.mesos.v1.DurationInfo\"\214\002\n\013Comman" +
+      "dInfo\022\'\n\004uris\030\001 \003(\0132\031.mesos.v1.CommandIn" +
+      "fo.URI\022*\n\013environment\030\002 \001(\0132\025.mesos.v1.E" +
+      "nvironment\022\023\n\005shell\030\006 \001(\010:\004true\022\r\n\005value" +
+      "\030\003 \001(\t\022\021\n\targuments\030\007 \003(\t\022\014\n\004user\030\005 \001(\t\032" +
+      "c\n\003URI\022\r\n\005value\030\001 \002(\t\022\022\n\nexecutable\030\002 \001(" +
+      "\010\022\025\n\007extract\030\003 \001(\010:\004true\022\r\n\005cache\030\004 \001(\010\022" +
+      "\023\n\013output_file\030\005 \001(\t\"\357\003\n\014ExecutorInfo\022)\n" +
+      "\004type\030\017 \001(\0162\033.mesos.v1.ExecutorInfo.Type" +
+      "\022)\n\013executor_id\030\001 \002(\0132\024.mesos.v1.Executo",
+      "rID\022+\n\014framework_id\030\010 \001(\0132\025.mesos.v1.Fra" +
+      "meworkID\022&\n\007command\030\007 \001(\0132\025.mesos.v1.Com" +
+      "mandInfo\022*\n\tcontainer\030\013 \001(\0132\027.mesos.v1.C" +
+      "ontainerInfo\022%\n\tresources\030\005 \003(\0132\022.mesos." +
+      "v1.Resource\022\014\n\004name\030\t \001(\t\022\022\n\006source\030\n \001(" +
+      "\tB\002\030\001\022\014\n\004data\030\004 \001(\014\022*\n\tdiscovery\030\014 \001(\0132\027" +
+      ".mesos.v1.DiscoveryInfo\0225\n\025shutdown_grac" +
+      "e_period\030\r \001(\0132\026.mesos.v1.DurationInfo\022 " +
+      "\n\006labels\030\016 \001(\0132\020.mesos.v1.Labels\",\n\004Type" +
+      "\022\013\n\007UNKNOWN\020\000\022\013\n\007DEFAULT\020\001\022\n\n\006CUSTOM\020\002\"\200",
+      "\002\n\nDomainInfo\0226\n\014fault_domain\030\001 \001(\0132 .me" +
+      "sos.v1.DomainInfo.FaultDomain\032\271\001\n\013FaultD" +
+      "omain\022;\n\006region\030\001 \002(\0132+.mesos.v1.DomainI" +
+      "nfo.FaultDomain.RegionInfo\0227\n\004zone\030\002 \002(\013" +
+      "2).mesos.v1.DomainInfo.FaultDomain.ZoneI" +
+      "nfo\032\032\n\nRegionInfo\022\014\n\004name\030\001 \002(\t\032\030\n\010ZoneI" +
+      "nfo\022\014\n\004name\030\001 \002(\t\"\262\001\n\nMasterInfo\022\n\n\002id\030\001" +
+      " \002(\t\022\n\n\002ip\030\002 \002(\r\022\022\n\004port\030\003 \002(\r:\0045050\022\013\n\003" +
+      "pid\030\004 \001(\t\022\020\n\010hostname\030\005 \001(\t\022\017\n\007version\030\006" +
+      " \001(\t\022\"\n\007address\030\007 \001(\0132\021.mesos.v1.Address",
+      "\022$\n\006domain\030\010 \001(\0132\024.mesos.v1.DomainInfo\"\340" +
+      "\002\n\tAgentInfo\022\020\n\010hostname\030\001 \002(\t\022\022\n\004port\030\010" +
+      " \001(\005:\0045051\022%\n\tresources\030\003 \003(\0132\022.mesos.v1" +
+      ".Resource\022\'\n\nattributes\030\005 \003(\0132\023.mesos.v1" +
+      ".Attribute\022\035\n\002id\030\006 \001(\0132\021.mesos.v1.AgentI" +
+      "D\022$\n\006domain\030\n \001(\0132\024.mesos.v1.DomainInfo\032" +
+      "\227\001\n\nCapability\0221\n\004type\030\001 \001(\0162#.mesos.v1." +
+      "AgentInfo.Capability.Type\"V\n\004Type\022\013\n\007UNK" +
+      "NOWN\020\000\022\016\n\nMULTI_ROLE\020\001\022\025\n\021HIERARCHICAL_R" +
+      "OLE\020\002\022\032\n\026RESERVATION_REFINEMENT\020\003\"\205\001\n\024Re",
+      "sourceProviderInfo\022(\n\002id\030\001 \001(\0132\034.mesos.v" +
+      "1.ResourceProviderID\022\'\n\nattributes\030\002 \003(\013" +
+      "2\023.mesos.v1.Attribute\022\014\n\004type\030\003 \002(\t\022\014\n\004n" +
+      "ame\030\004 \002(\t\"\216\003\n\005Value\022\"\n\004type\030\001 \002(\0162\024.meso" +
+      "s.v1.Value.Type\022&\n\006scalar\030\002 \001(\0132\026.mesos." +
+      "v1.Value.Scalar\022&\n\006ranges\030\003 \001(\0132\026.mesos." +
+      "v1.Value.Ranges\022 \n\003set\030\004 \001(\0132\023.mesos.v1." +
+      "Value.Set\022\"\n\004text\030\005 \001(\0132\024.mesos.v1.Value" +
+      ".Text\032\027\n\006Scalar\022\r\n\005value\030\001 \002(\001\032#\n\005Range\022" +
+      "\r\n\005begin\030\001 \002(\004\022\013\n\003end\030\002 \002(\004\032.\n\006Ranges\022$\n",
+      "\005range\030\001 \003(\0132\025.mesos.v1.Value.Range\032\023\n\003S" +
+      "et\022\014\n\004item\030\001 \003(\t\032\025\n\004Text\022\r\n\005value\030\001 \002(\t\"" +
+      "1\n\004Type\022\n\n\006SCALAR\020\000\022\n\n\006RANGES\020\001\022\007\n\003SET\020\002" +
+      "\022\010\n\004TEXT\020\003\"\323\001\n\tAttribute\022\014\n\004name\030\001 \002(\t\022\"" +
+      "\n\004type\030\002 \002(\0162\024.mesos.v1.Value.Type\022&\n\006sc" +
+      "alar\030\003 \001(\0132\026.mesos.v1.Value.Scalar\022&\n\006ra" +
+      "nges\030\004 \001(\0132\026.mesos.v1.Value.Ranges\022 \n\003se" +
+      "t\030\006 \001(\0132\023.mesos.v1.Value.Set\022\"\n\004text\030\005 \001" +
+      "(\0132\024.mesos.v1.Value.Text\"\207\n\n\010Resource\0221\n" +
+      "\013provider_id\030\014 \001(\0132\034.mesos.v1.ResourcePr",
+      "oviderID\022\014\n\004name\030\001 \002(\t\022\"\n\004type\030\002 \002(\0162\024.m" +
+      "esos.v1.Value.Type\022&\n\006scalar\030\003 \001(\0132\026.mes" +
+      "os.v1.Value.Scalar\022&\n\006ranges\030\004 \001(\0132\026.mes" +
+      "os.v1.Value.Ranges\022 \n\003set\030\005 \001(\0132\023.mesos." +
+      "v1.Value.Set\022\023\n\004role\030\006 \001(\t:\001*B\002\030\001\022:\n\017all" +
+      "ocation_info\030\013 \001(\0132!.mesos.v1.Resource.A" +
+      "llocationInfo\0227\n\013reservation\030\010 \001(\0132\".mes" +
+      "os.v1.Resource.ReservationInfo\0228\n\014reserv" +
+      "ations\030\r \003(\0132\".mesos.v1.Resource.Reserva" +
+      "tionInfo\022)\n\004disk\030\007 \001(\0132\033.mesos.v1.Resour",
+      "ce.DiskInfo\0223\n\trevocable\030\t \001(\0132 .mesos.v" +
+      "1.Resource.RevocableInfo\022-\n\006shared\030\n \001(\013" +
+      "2\035.mesos.v1.Resource.SharedInfo\032\036\n\016Alloc" +
+      "ationInfo\022\014\n\004role\030\001 \001(\t\032\271\001\n\017ReservationI" +
+      "nfo\0225\n\004type\030\004 \001(\0162\'.mesos.v1.Resource.Re" +
+      "servationInfo.Type\022\014\n\004role\030\003 \001(\t\022\021\n\tprin" +
+      "cipal\030\001 \001(\t\022 \n\006labels\030\002 \001(\0132\020.mesos.v1.L" +
+      "abels\",\n\004Type\022\013\n\007UNKNOWN\020\000\022\n\n\006STATIC\020\001\022\013" +
+      "\n\007DYNAMIC\020\002\032\325\003\n\010DiskInfo\022<\n\013persistence\030" +
+      "\001 \001(\0132\'.mesos.v1.Resource.DiskInfo.Persi",
+      "stence\022 \n\006volume\030\002 \001(\0132\020.mesos.v1.Volume" +
+      "\0222\n\006source\030\003 \001(\0132\".mesos.v1.Resource.Dis" +
+      "kInfo.Source\032,\n\013Persistence\022\n\n\002id\030\001 \002(\t\022" +
+      "\021\n\tprincipal\030\002 \001(\t\032\206\002\n\006Source\0225\n\004type\030\001 " +
+      "\002(\0162\'.mesos.v1.Resource.DiskInfo.Source." +
+      "Type\0225\n\004path\030\002 \001(\0132\'.mesos.v1.Resource.D" +
+      "iskInfo.Source.Path\0227\n\005mount\030\003 \001(\0132(.mes" +
+      "os.v1.Resource.DiskInfo.Source.Mount\032\024\n\004" +
+      "Path\022\014\n\004root\030\001 \001(\t\032\025\n\005Mount\022\014\n\004root\030\001 \001(" +
+      "\t\"(\n\004Type\022\013\n\007UNKNOWN\020\000\022\010\n\004PATH\020\001\022\t\n\005MOUN",
+      "T\020\002\032\017\n\rRevocableInfo\032\014\n\nSharedInfo\"\274\001\n\030T" +
+      "rafficControlStatistics\022\n\n\002id\030\001 \002(\t\022\017\n\007b" +
+      "acklog\030\002 \001(\004\022\r\n\005bytes\030\003 \001(\004\022\r\n\005drops\030\004 \001" +
+      "(\004\022\022\n\noverlimits\030\005 \001(\004\022\017\n\007packets\030\006 \001(\004\022" +
+      "\014\n\004qlen\030\007 \001(\004\022\017\n\007ratebps\030\010 \001(\004\022\017\n\007ratepp" +
+      "s\030\t \001(\004\022\020\n\010requeues\030\n \001(\004\"\225\003\n\014IpStatisti" +
+      "cs\022\022\n\nForwarding\030\001 \001(\003\022\022\n\nDefaultTTL\030\002 \001" +
+      "(\003\022\022\n\nInReceives\030\003 \001(\003\022\023\n\013InHdrErrors\030\004 " +
+      "\001(\003\022\024\n\014InAddrErrors\030\005 \001(\003\022\025\n\rForwDatagra" +
+      "ms\030\006 \001(\003\022\027\n\017InUnknownProtos\030\007 \001(\003\022\022\n\nInD",
+      "iscards\030\010 \001(\003\022\022\n\nInDelivers\030\t \001(\003\022\023\n\013Out" +
+      "Requests\030\n \001(\003\022\023\n\013OutDiscards\030\013 \001(\003\022\023\n\013O" +
+      "utNoRoutes\030\014 \001(\003\022\024\n\014ReasmTimeout\030\r \001(\003\022\022" +
+      "\n\nReasmReqds\030\016 \001(\003\022\020\n\010ReasmOKs\030\017 \001(\003\022\022\n\n" +
+      "ReasmFails\030\020 \001(\003\022\017\n\007FragOKs\030\021 \001(\003\022\021\n\tFra" +
+      "gFails\030\022 \001(\003\022\023\n\013FragCreates\030\023 \001(\003\"\323\004\n\016Ic" +
+      "mpStatistics\022\016\n\006InMsgs\030\001 \001(\003\022\020\n\010InErrors" +
+      "\030\002 \001(\003\022\024\n\014InCsumErrors\030\003 \001(\003\022\026\n\016InDestUn" +
+      "reachs\030\004 \001(\003\022\023\n\013InTimeExcds\030\005 \001(\003\022\023\n\013InP" +
+      "armProbs\030\006 \001(\003\022\024\n\014InSrcQuenchs\030\007 \001(\003\022\023\n\013",
+      "InRedirects\030\010 \001(\003\022\017\n\007InEchos\030\t \001(\003\022\022\n\nIn" +
+      "EchoReps\030\n \001(\003\022\024\n\014InTimestamps\030\013 \001(\003\022\027\n\017" +
+      "InTimestampReps\030\014 \001(\003\022\023\n\013InAddrMasks\030\r \001" +
+      "(\003\022\026\n\016InAddrMaskReps\030\016 \001(\003\022\017\n\007OutMsgs\030\017 " +
+      "\001(\003\022\021\n\tOutErrors\030\020 \001(\003\022\027\n\017OutDestUnreach" +
+      "s\030\021 \001(\003\022\024\n\014OutTimeExcds\030\022 \001(\003\022\024\n\014OutParm" +
+      "Probs\030\023 \001(\003\022\025\n\rOutSrcQuenchs\030\024 \001(\003\022\024\n\014Ou" +
+      "tRedirects\030\025 \001(\003\022\020\n\010OutEchos\030\026 \001(\003\022\023\n\013Ou" +
+      "tEchoReps\030\027 \001(\003\022\025\n\rOutTimestamps\030\030 \001(\003\022\030" +
+      "\n\020OutTimestampReps\030\031 \001(\003\022\024\n\014OutAddrMasks",
+      "\030\032 \001(\003\022\027\n\017OutAddrMaskReps\030\033 \001(\003\"\254\002\n\rTcpS" +
+      "tatistics\022\024\n\014RtoAlgorithm\030\001 \001(\003\022\016\n\006RtoMi" +
+      "n\030\002 \001(\003\022\016\n\006RtoMax\030\003 \001(\003\022\017\n\007MaxConn\030\004 \001(\003" +
+      "\022\023\n\013ActiveOpens\030\005 \001(\003\022\024\n\014PassiveOpens\030\006 " +
+      "\001(\003\022\024\n\014AttemptFails\030\007 \001(\003\022\023\n\013EstabResets" +
+      "\030\010 \001(\003\022\021\n\tCurrEstab\030\t \001(\003\022\016\n\006InSegs\030\n \001(" +
+      "\003\022\017\n\007OutSegs\030\013 \001(\003\022\023\n\013RetransSegs\030\014 \001(\003\022" +
+      "\016\n\006InErrs\030\r \001(\003\022\017\n\007OutRsts\030\016 \001(\003\022\024\n\014InCs" +
+      "umErrors\030\017 \001(\003\"\265\001\n\rUdpStatistics\022\023\n\013InDa" +
+      "tagrams\030\001 \001(\003\022\017\n\007NoPorts\030\002 \001(\003\022\020\n\010InErro",
+      "rs\030\003 \001(\003\022\024\n\014OutDatagrams\030\004 \001(\003\022\024\n\014Rcvbuf" +
+      "Errors\030\005 \001(\003\022\024\n\014SndbufErrors\030\006 \001(\003\022\024\n\014In" +
+      "CsumErrors\030\007 \001(\003\022\024\n\014IgnoredMulti\030\010 \001(\003\"\300" +
+      "\001\n\016SNMPStatistics\022(\n\010ip_stats\030\001 \001(\0132\026.me" +
+      "sos.v1.IpStatistics\022,\n\nicmp_stats\030\002 \001(\0132" +
+      "\030.mesos.v1.IcmpStatistics\022*\n\ttcp_stats\030\003" +
+      " \001(\0132\027.mesos.v1.TcpStatistics\022*\n\tudp_sta" +
+      "ts\030\004 \001(\0132\027.mesos.v1.UdpStatistics\"\253\001\n\016Di" +
+      "skStatistics\0222\n\006source\030\001 \001(\0132\".mesos.v1." +
+      "Resource.DiskInfo.Source\022<\n\013persistence\030",
+      "\002 \001(\0132\'.mesos.v1.Resource.DiskInfo.Persi" +
+      "stence\022\023\n\013limit_bytes\030\003 \001(\004\022\022\n\nused_byte" +
+      "s\030\004 \001(\004\"\347\n\n\022ResourceStatistics\022\021\n\ttimest" +
+      "amp\030\001 \002(\001\022\021\n\tprocesses\030\036 \001(\r\022\017\n\007threads\030" +
+      "\037 \001(\r\022\033\n\023cpus_user_time_secs\030\002 \001(\001\022\035\n\025cp" +
+      "us_system_time_secs\030\003 \001(\001\022\022\n\ncpus_limit\030" +
+      "\004 \001(\001\022\027\n\017cpus_nr_periods\030\007 \001(\r\022\031\n\021cpus_n" +
+      "r_throttled\030\010 \001(\r\022 \n\030cpus_throttled_time" +
+      "_secs\030\t \001(\001\022\027\n\017mem_total_bytes\030$ \001(\004\022\035\n\025" +
+      "mem_total_memsw_bytes\030% \001(\004\022\027\n\017mem_limit",
+      "_bytes\030\006 \001(\004\022\034\n\024mem_soft_limit_bytes\030& \001" +
+      "(\004\022\026\n\016mem_file_bytes\030\n \001(\004\022\026\n\016mem_anon_b" +
+      "ytes\030\013 \001(\004\022\027\n\017mem_cache_bytes\030\' \001(\004\022\025\n\rm" +
+      "em_rss_bytes\030\005 \001(\004\022\035\n\025mem_mapped_file_by" +
+      "tes\030\014 \001(\004\022\026\n\016mem_swap_bytes\030( \001(\004\022\035\n\025mem" +
+      "_unevictable_bytes\030) \001(\004\022 \n\030mem_low_pres" +
+      "sure_counter\030  \001(\004\022#\n\033mem_medium_pressur" +
+      "e_counter\030! \001(\004\022%\n\035mem_critical_pressure" +
+      "_counter\030\" \001(\004\022\030\n\020disk_limit_bytes\030\032 \001(\004" +
+      "\022\027\n\017disk_used_bytes\030\033 \001(\004\0221\n\017disk_statis",
+      "tics\030+ \003(\0132\030.mesos.v1.DiskStatistics\022?\n\020" +
+      "blkio_statistics\030, \001(\0132%.mesos.v1.Cgroup" +
+      "Info.Blkio.Statistics\022&\n\004perf\030\r \001(\0132\030.me" +
+      "sos.v1.PerfStatistics\022\026\n\016net_rx_packets\030" +
+      "\016 \001(\004\022\024\n\014net_rx_bytes\030\017 \001(\004\022\025\n\rnet_rx_er" +
+      "rors\030\020 \001(\004\022\026\n\016net_rx_dropped\030\021 \001(\004\022\026\n\016ne" +
+      "t_tx_packets\030\022 \001(\004\022\024\n\014net_tx_bytes\030\023 \001(\004" +
+      "\022\025\n\rnet_tx_errors\030\024 \001(\004\022\026\n\016net_tx_droppe" +
+      "d\030\025 \001(\004\022!\n\031net_tcp_rtt_microsecs_p50\030\026 \001" +
+      "(\001\022!\n\031net_tcp_rtt_microsecs_p90\030\027 \001(\001\022!\n",
+      "\031net_tcp_rtt_microsecs_p95\030\030 \001(\001\022!\n\031net_" +
+      "tcp_rtt_microsecs_p99\030\031 \001(\001\022\"\n\032net_tcp_a" +
+      "ctive_connections\030\034 \001(\001\022%\n\035net_tcp_time_" +
+      "wait_connections\030\035 \001(\001\022J\n\036net_traffic_co" +
+      "ntrol_statistics\030# \003(\0132\".mesos.v1.Traffi" +
+      "cControlStatistics\0225\n\023net_snmp_statistic" +
+      "s\030* \001(\0132\030.mesos.v1.SNMPStatistics\"\334\003\n\rRe" +
+      "sourceUsage\0223\n\texecutors\030\001 \003(\0132 .mesos.v" +
+      "1.ResourceUsage.Executor\022!\n\005total\030\002 \003(\0132" +
+      "\022.mesos.v1.Resource\032\362\002\n\010Executor\022-\n\rexec",
+      "utor_info\030\001 \002(\0132\026.mesos.v1.ExecutorInfo\022" +
+      "%\n\tallocated\030\002 \003(\0132\022.mesos.v1.Resource\0220" +
+      "\n\nstatistics\030\003 \001(\0132\034.mesos.v1.ResourceSt" +
+      "atistics\022+\n\014container_id\030\004 \002(\0132\025.mesos.v" +
+      "1.ContainerID\0224\n\005tasks\030\005 \003(\0132%.mesos.v1." +
+      "ResourceUsage.Executor.Task\032{\n\004Task\022\014\n\004n" +
+      "ame\030\001 \002(\t\022\034\n\002id\030\002 \002(\0132\020.mesos.v1.TaskID\022" +
+      "%\n\tresources\030\003 \003(\0132\022.mesos.v1.Resource\022 " +
+      "\n\006labels\030\004 \001(\0132\020.mesos.v1.Labels\"\260\n\n\016Per" +
+      "fStatistics\022\021\n\ttimestamp\030\001 \002(\001\022\020\n\010durati",
+      "on\030\002 \002(\001\022\016\n\006cycles\030\003 \001(\004\022\037\n\027stalled_cycl" +
+      "es_frontend\030\004 \001(\004\022\036\n\026stalled_cycles_back" +
+      "end\030\005 \001(\004\022\024\n\014instructions\030\006 \001(\004\022\030\n\020cache" +
+      "_references\030\007 \001(\004\022\024\n\014cache_misses\030\010 \001(\004\022" +
+      "\020\n\010branches\030\t \001(\004\022\025\n\rbranch_misses\030\n \001(\004" +
+      "\022\022\n\nbus_cycles\030\013 \001(\004\022\022\n\nref_cycles\030\014 \001(\004" +
+      "\022\021\n\tcpu_clock\030\r \001(\001\022\022\n\ntask_clock\030\016 \001(\001\022" +
+      "\023\n\013page_faults\030\017 \001(\004\022\024\n\014minor_faults\030\020 \001" +
+      "(\004\022\024\n\014major_faults\030\021 \001(\004\022\030\n\020context_swit" +
+      "ches\030\022 \001(\004\022\026\n\016cpu_migrations\030\023 \001(\004\022\030\n\020al",
+      "ignment_faults\030\024 \001(\004\022\030\n\020emulation_faults" +
+      "\030\025 \001(\004\022\027\n\017l1_dcache_loads\030\026 \001(\004\022\035\n\025l1_dc" +
+      "ache_load_misses\030\027 \001(\004\022\030\n\020l1_dcache_stor" +
+      "es\030\030 \001(\004\022\036\n\026l1_dcache_store_misses\030\031 \001(\004" +
+      "\022\034\n\024l1_dcache_prefetches\030\032 \001(\004\022!\n\031l1_dca" +
+      "che_prefetch_misses\030\033 \001(\004\022\027\n\017l1_icache_l" +
+      "oads\030\034 \001(\004\022\035\n\025l1_icache_load_misses\030\035 \001(" +
+      "\004\022\034\n\024l1_icache_prefetches\030\036 \001(\004\022!\n\031l1_ic" +
+      "ache_prefetch_misses\030\037 \001(\004\022\021\n\tllc_loads\030" +
+      "  \001(\004\022\027\n\017llc_load_misses\030! \001(\004\022\022\n\nllc_st",
+      "ores\030\" \001(\004\022\030\n\020llc_store_misses\030# \001(\004\022\026\n\016" +
+      "llc_prefetches\030$ \001(\004\022\033\n\023llc_prefetch_mis" +
+      "ses\030% \001(\004\022\022\n\ndtlb_loads\030& \001(\004\022\030\n\020dtlb_lo" +
+      "ad_misses\030\' \001(\004\022\023\n\013dtlb_stores\030( \001(\004\022\031\n\021" +
+      "dtlb_store_misses\030) \001(\004\022\027\n\017dtlb_prefetch" +
+      "es\030* \001(\004\022\034\n\024dtlb_prefetch_misses\030+ \001(\004\022\022" +
+      "\n\nitlb_loads\030, \001(\004\022\030\n\020itlb_load_misses\030-" +
+      " \001(\004\022\024\n\014branch_loads\030. \001(\004\022\032\n\022branch_loa" +
+      "d_misses\030/ \001(\004\022\022\n\nnode_loads\0300 \001(\004\022\030\n\020no" +
+      "de_load_misses\0301 \001(\004\022\023\n\013node_stores\0302 \001(",
+      "\004\022\031\n\021node_store_misses\0303 \001(\004\022\027\n\017node_pre" +
+      "fetches\0304 \001(\004\022\034\n\024node_prefetch_misses\0305 " +
+      "\001(\004\"U\n\007Request\022#\n\010agent_id\030\001 \001(\0132\021.mesos" +
+      ".v1.AgentID\022%\n\tresources\030\002 \003(\0132\022.mesos.v" +
+      "1.Resource\"\370\t\n\005Offer\022\035\n\002id\030\001 \002(\0132\021.mesos" +
+      ".v1.OfferID\022+\n\014framework_id\030\002 \002(\0132\025.meso" +
+      "s.v1.FrameworkID\022#\n\010agent_id\030\003 \002(\0132\021.mes" +
+      "os.v1.AgentID\022\020\n\010hostname\030\004 \002(\t\022\032\n\003url\030\010" +
+      " \001(\0132\r.mesos.v1.URL\022$\n\006domain\030\013 \001(\0132\024.me" +
+      "sos.v1.DomainInfo\022%\n\tresources\030\005 \003(\0132\022.m",
+      "esos.v1.Resource\022\'\n\nattributes\030\007 \003(\0132\023.m" +
+      "esos.v1.Attribute\022*\n\014executor_ids\030\006 \003(\0132" +
+      "\024.mesos.v1.ExecutorID\0220\n\016unavailability\030" +
+      "\t \001(\0132\030.mesos.v1.Unavailability\022:\n\017alloc" +
+      "ation_info\030\n \001(\0132!.mesos.v1.Resource.All" +
+      "ocationInfo\032\277\006\n\tOperation\022,\n\004type\030\001 \001(\0162" +
+      "\036.mesos.v1.Offer.Operation.Type\0220\n\006launc" +
+      "h\030\002 \001(\0132 .mesos.v1.Offer.Operation.Launc" +
+      "h\022;\n\014launch_group\030\007 \001(\0132%.mesos.v1.Offer" +
+      ".Operation.LaunchGroup\0222\n\007reserve\030\003 \001(\0132",
+      "!.mesos.v1.Offer.Operation.Reserve\0226\n\tun" +
+      "reserve\030\004 \001(\0132#.mesos.v1.Offer.Operation" +
+      ".Unreserve\0220\n\006create\030\005 \001(\0132 .mesos.v1.Of" +
+      "fer.Operation.Create\0222\n\007destroy\030\006 \001(\0132!." +
+      "mesos.v1.Offer.Operation.Destroy\0320\n\006Laun" +
+      "ch\022&\n\ntask_infos\030\001 \003(\0132\022.mesos.v1.TaskIn" +
+      "fo\032d\n\013LaunchGroup\022(\n\010executor\030\001 \002(\0132\026.me" +
+      "sos.v1.ExecutorInfo\022+\n\ntask_group\030\002 \002(\0132" +
+      "\027.mesos.v1.TaskGroupInfo\0320\n\007Reserve\022%\n\tr" +
+      "esources\030\001 \003(\0132\022.mesos.v1.Resource\0322\n\tUn",
+      "reserve\022%\n\tresources\030\001 \003(\0132\022.mesos.v1.Re" +
+      "source\032-\n\006Create\022#\n\007volumes\030\001 \003(\0132\022.meso" +
+      "s.v1.Resource\032.\n\007Destroy\022#\n\007volumes\030\001 \003(" +
+      "\0132\022.mesos.v1.Resource\"f\n\004Type\022\013\n\007UNKNOWN" +
+      "\020\000\022\n\n\006LAUNCH\020\001\022\020\n\014LAUNCH_GROUP\020\006\022\013\n\007RESE" +
+      "RVE\020\002\022\r\n\tUNRESERVE\020\003\022\n\n\006CREATE\020\004\022\013\n\007DEST" +
+      "ROY\020\005\"\364\001\n\014InverseOffer\022\035\n\002id\030\001 \002(\0132\021.mes" +
+      "os.v1.OfferID\022\032\n\003url\030\002 \001(\0132\r.mesos.v1.UR" +
+      "L\022+\n\014framework_id\030\003 \002(\0132\025.mesos.v1.Frame" +
+      "workID\022#\n\010agent_id\030\004 \001(\0132\021.mesos.v1.Agen",
+      "tID\0220\n\016unavailability\030\005 \002(\0132\030.mesos.v1.U" +
+      "navailability\022%\n\tresources\030\006 \003(\0132\022.mesos" +
+      ".v1.Resource\"\335\003\n\010TaskInfo\022\014\n\004name\030\001 \002(\t\022" +
+      "!\n\007task_id\030\002 \002(\0132\020.mesos.v1.TaskID\022#\n\010ag" +
+      "ent_id\030\003 \002(\0132\021.mesos.v1.AgentID\022%\n\tresou" +
+      "rces\030\004 \003(\0132\022.mesos.v1.Resource\022(\n\010execut" +
+      "or\030\005 \001(\0132\026.mesos.v1.ExecutorInfo\022&\n\007comm" +
+      "and\030\007 \001(\0132\025.mesos.v1.CommandInfo\022*\n\tcont" +
+      "ainer\030\t \001(\0132\027.mesos.v1.ContainerInfo\022+\n\014" +
+      "health_check\030\010 \001(\0132\025.mesos.v1.HealthChec",
+      "k\022\"\n\005check\030\r \001(\0132\023.mesos.v1.CheckInfo\022)\n" +
+      "\013kill_policy\030\014 \001(\0132\024.mesos.v1.KillPolicy" +
+      "\022\014\n\004data\030\006 \001(\014\022 \n\006labels\030\n \001(\0132\020.mesos.v" +
+      "1.Labels\022*\n\tdiscovery\030\013 \001(\0132\027.mesos.v1.D" +
+      "iscoveryInfo\"2\n\rTaskGroupInfo\022!\n\005tasks\030\001" +
+      " \003(\0132\022.mesos.v1.TaskInfo\"\375\003\n\004Task\022\014\n\004nam" +
+      "e\030\001 \002(\t\022!\n\007task_id\030\002 \002(\0132\020.mesos.v1.Task" +
+      "ID\022+\n\014framework_id\030\003 \002(\0132\025.mesos.v1.Fram" +
+      "eworkID\022)\n\013executor_id\030\004 \001(\0132\024.mesos.v1." +
+      "ExecutorID\022#\n\010agent_id\030\005 \002(\0132\021.mesos.v1.",
+      "AgentID\022\"\n\005state\030\006 \002(\0162\023.mesos.v1.TaskSt" +
+      "ate\022%\n\tresources\030\007 \003(\0132\022.mesos.v1.Resour" +
+      "ce\022&\n\010statuses\030\010 \003(\0132\024.mesos.v1.TaskStat" +
+      "us\0220\n\023status_update_state\030\t \001(\0162\023.mesos." +
+      "v1.TaskState\022\032\n\022status_update_uuid\030\n \001(\014" +
+      "\022 \n\006labels\030\013 \001(\0132\020.mesos.v1.Labels\022*\n\tdi" +
+      "scovery\030\014 \001(\0132\027.mesos.v1.DiscoveryInfo\022*" +
+      "\n\tcontainer\030\r \001(\0132\027.mesos.v1.ContainerIn" +
+      "fo\022\014\n\004user\030\016 \001(\t\"\234\002\n\017CheckStatusInfo\022&\n\004" +
+      "type\030\001 \001(\0162\030.mesos.v1.CheckInfo.Type\0222\n\007",
+      "command\030\002 \001(\0132!.mesos.v1.CheckStatusInfo" +
+      ".Command\022,\n\004http\030\003 \001(\0132\036.mesos.v1.CheckS" +
+      "tatusInfo.Http\022*\n\003tcp\030\004 \001(\0132\035.mesos.v1.C" +
+      "heckStatusInfo.Tcp\032\034\n\007Command\022\021\n\texit_co" +
+      "de\030\001 \001(\005\032\033\n\004Http\022\023\n\013status_code\030\001 \001(\r\032\030\n" +
+      "\003Tcp\022\021\n\tsucceeded\030\001 \001(\010\"\312\014\n\nTaskStatus\022!" +
+      "\n\007task_id\030\001 \002(\0132\020.mesos.v1.TaskID\022\"\n\005sta" +
+      "te\030\002 \002(\0162\023.mesos.v1.TaskState\022\017\n\007message" +
+      "\030\004 \001(\t\022+\n\006source\030\t \001(\0162\033.mesos.v1.TaskSt" +
+      "atus.Source\022+\n\006reason\030\n \001(\0162\033.mesos.v1.T",
+      "askStatus.Reason\022\014\n\004data\030\003 \001(\014\022#\n\010agent_" +
+      "id\030\005 \001(\0132\021.mesos.v1.AgentID\022)\n\013executor_" +
+      "id\030\007 \001(\0132\024.mesos.v1.ExecutorID\022\021\n\ttimest" +
+      "amp\030\006 \001(\001\022\014\n\004uuid\030\013 \001(\014\022\017\n\007healthy\030\010 \001(\010" +
+      "\022/\n\014check_status\030\017 \001(\0132\031.mesos.v1.CheckS" +
+      "tatusInfo\022 \n\006labels\030\014 \001(\0132\020.mesos.v1.Lab" +
+      "els\0223\n\020container_status\030\r \001(\0132\031.mesos.v1" +
+      ".ContainerStatus\022,\n\020unreachable_time\030\016 \001" +
+      "(\0132\022.mesos.v1.TimeInfo\"B\n\006Source\022\021\n\rSOUR" +
+      "CE_MASTER\020\000\022\020\n\014SOURCE_AGENT\020\001\022\023\n\017SOURCE_",
+      "EXECUTOR\020\002\"\377\007\n\006Reason\022\"\n\036REASON_COMMAND_" +
+      "EXECUTOR_FAILED\020\000\022\"\n\036REASON_CONTAINER_LA" +
+      "UNCH_FAILED\020\025\022\037\n\033REASON_CONTAINER_LIMITA" +
+      "TION\020\023\022$\n REASON_CONTAINER_LIMITATION_DI" +
+      "SK\020\024\022&\n\"REASON_CONTAINER_LIMITATION_MEMO" +
+      "RY\020\010\022\036\n\032REASON_CONTAINER_PREEMPTED\020\021\022\"\n\036" +
+      "REASON_CONTAINER_UPDATE_FAILED\020\026\022(\n$REAS" +
+      "ON_EXECUTOR_REGISTRATION_TIMEOUT\020\027\022*\n&RE" +
+      "ASON_EXECUTOR_REREGISTRATION_TIMEOUT\020\030\022\036" +
+      "\n\032REASON_EXECUTOR_TERMINATED\020\001\022 \n\034REASON",
+      "_EXECUTOR_UNREGISTERED\020\002\022\034\n\030REASON_FRAME" +
+      "WORK_REMOVED\020\003\022\023\n\017REASON_GC_ERROR\020\004\022\036\n\032R" +
+      "EASON_INVALID_FRAMEWORKID\020\005\022\031\n\025REASON_IN" +
+      "VALID_OFFERS\020\006\022 \n\034REASON_IO_SWITCHBOARD_" +
+      "EXITED\020\033\022\036\n\032REASON_MASTER_DISCONNECTED\020\007" +
+      "\022\031\n\025REASON_RECONCILIATION\020\t\022\034\n\030REASON_RE" +
+      "SOURCES_UNKNOWN\020\022\022\035\n\031REASON_AGENT_DISCON" +
+      "NECTED\020\n\022\030\n\024REASON_AGENT_REMOVED\020\013\022\032\n\026RE" +
+      "ASON_AGENT_RESTARTED\020\014\022\030\n\024REASON_AGENT_U" +
+      "NKNOWN\020\r\022$\n REASON_TASK_KILLED_DURING_LA",
+      "UNCH\020\036\022$\n REASON_TASK_CHECK_STATUS_UPDAT" +
+      "ED\020\034\022+\n\'REASON_TASK_HEALTH_CHECK_STATUS_" +
+      "UPDATED\020\035\022\035\n\031REASON_TASK_GROUP_INVALID\020\031" +
+      "\022\"\n\036REASON_TASK_GROUP_UNAUTHORIZED\020\032\022\027\n\023" +
+      "REASON_TASK_INVALID\020\016\022\034\n\030REASON_TASK_UNA" +
+      "UTHORIZED\020\017\022\027\n\023REASON_TASK_UNKNOWN\020\020\"$\n\007" +
+      "Filters\022\031\n\016refuse_seconds\030\001 \001(\001:\0015\"\362\001\n\013E" +
+      "nvironment\0221\n\tvariables\030\001 \003(\0132\036.mesos.v1" +
+      ".Environment.Variable\032\257\001\n\010Variable\022\014\n\004na" +
+      "me\030\001 \002(\t\0228\n\004type\030\003 \001(\0162#.mesos.v1.Enviro",
+      "nment.Variable.Type:\005VALUE\022\r\n\005value\030\002 \001(" +
+      "\t\022 \n\006secret\030\004 \001(\0132\020.mesos.v1.Secret\"*\n\004T" +
+      "ype\022\013\n\007UNKNOWN\020\000\022\t\n\005VALUE\020\001\022\n\n\006SECRET\020\002\"" +
+      "\'\n\tParameter\022\013\n\003key\030\001 \002(\t\022\r\n\005value\030\002 \002(\t" +
+      "\"4\n\nParameters\022&\n\tparameter\030\001 \003(\0132\023.meso" +
+      "s.v1.Parameter\"/\n\nCredential\022\021\n\tprincipa" +
+      "l\030\001 \002(\t\022\016\n\006secret\030\002 \001(\t\"8\n\013Credentials\022)" +
+      "\n\013credentials\030\001 \003(\0132\024.mesos.v1.Credentia" +
+      "l\"\361\001\n\006Secret\022#\n\004type\030\001 \001(\0162\025.mesos.v1.Se" +
+      "cret.Type\022-\n\treference\030\002 \001(\0132\032.mesos.v1.",
+      "Secret.Reference\022%\n\005value\030\003 \001(\0132\026.mesos." +
+      "v1.Secret.Value\032&\n\tReference\022\014\n\004name\030\001 \002" +
+      "(\t\022\013\n\003key\030\002 \001(\t\032\025\n\005Value\022\014\n\004data\030\001 \002(\014\"-" +
+      "\n\004Type\022\013\n\007UNKNOWN\020\000\022\r\n\tREFERENCE\020\001\022\t\n\005VA" +
+      "LUE\020\002\"=\n\tRateLimit\022\013\n\003qps\030\001 \001(\001\022\021\n\tprinc" +
+      "ipal\030\002 \002(\t\022\020\n\010capacity\030\003 \001(\004\"t\n\nRateLimi" +
+      "ts\022#\n\006limits\030\001 \003(\0132\023.mesos.v1.RateLimit\022" +
+      "\035\n\025aggregate_default_qps\030\002 \001(\001\022\"\n\032aggreg" +
+      "ate_default_capacity\030\003 \001(\004\"\327\002\n\005Image\022\"\n\004" +
+      "type\030\001 \002(\0162\024.mesos.v1.Image.Type\022\"\n\004appc",
+      "\030\002 \001(\0132\024.mesos.v1.Image.Appc\022&\n\006docker\030\003" +
+      " \001(\0132\026.mesos.v1.Image.Docker\022\024\n\006cached\030\004" +
+      " \001(\010:\004true\032B\n\004Appc\022\014\n\004name\030\001 \002(\t\022\n\n\002id\030\002" +
+      " \001(\t\022 \n\006labels\030\003 \001(\0132\020.mesos.v1.Labels\032f" +
+      "\n\006Docker\022\014\n\004name\030\001 \002(\t\022,\n\ncredential\030\002 \001" +
+      "(\0132\024.mesos.v1.CredentialB\002\030\001\022 \n\006config\030\003" +
+      " \001(\0132\020.mesos.v1.Secret\"\034\n\004Type\022\010\n\004APPC\020\001" +
+      "\022\n\n\006DOCKER\020\002\"\254\005\n\006Volume\022#\n\004mode\030\003 \002(\0162\025." +
+      "mesos.v1.Volume.Mode\022\026\n\016container_path\030\001" +
+      " \002(\t\022\021\n\thost_path\030\002 \001(\t\022\036\n\005image\030\004 \001(\0132\017",
+      ".mesos.v1.Image\022\'\n\006source\030\005 \001(\0132\027.mesos." +
+      "v1.Volume.Source\032\360\003\n\006Source\022*\n\004type\030\001 \001(" +
+      "\0162\034.mesos.v1.Volume.Source.Type\022;\n\rdocke" +
+      "r_volume\030\002 \001(\0132$.mesos.v1.Volume.Source." +
+      "DockerVolume\0229\n\014sandbox_path\030\003 \001(\0132#.mes" +
+      "os.v1.Volume.Source.SandboxPath\022 \n\006secre" +
+      "t\030\004 \001(\0132\020.mesos.v1.Secret\032Z\n\014DockerVolum" +
+      "e\022\016\n\006driver\030\001 \001(\t\022\014\n\004name\030\002 \002(\t\022,\n\016drive" +
+      "r_options\030\003 \001(\0132\024.mesos.v1.Parameters\032~\n" +
+      "\013SandboxPath\0226\n\004type\030\001 \001(\0162(.mesos.v1.Vo",
+      "lume.Source.SandboxPath.Type\022\014\n\004path\030\002 \002" +
+      "(\t\")\n\004Type\022\013\n\007UNKNOWN\020\000\022\010\n\004SELF\020\001\022\n\n\006PAR" +
+      "ENT\020\002\"D\n\004Type\022\013\n\007UNKNOWN\020\000\022\021\n\rDOCKER_VOL" +
+      "UME\020\001\022\020\n\014SANDBOX_PATH\020\002\022\n\n\006SECRET\020\003\"\026\n\004M" +
+      "ode\022\006\n\002RW\020\001\022\006\n\002RO\020\002\"\203\003\n\013NetworkInfo\0225\n\014i" +
+      "p_addresses\030\005 \003(\0132\037.mesos.v1.NetworkInfo" +
+      ".IPAddress\022\014\n\004name\030\006 \001(\t\022\016\n\006groups\030\003 \003(\t" +
+      "\022 \n\006labels\030\004 \001(\0132\020.mesos.v1.Labels\0228\n\rpo" +
+      "rt_mappings\030\007 \003(\0132!.mesos.v1.NetworkInfo" +
+      ".PortMapping\032W\n\tIPAddress\0226\n\010protocol\030\001 ",
+      "\001(\0162\036.mesos.v1.NetworkInfo.Protocol:\004IPv" +
+      "4\022\022\n\nip_address\030\002 \001(\t\032J\n\013PortMapping\022\021\n\t" +
+      "host_port\030\001 \002(\r\022\026\n\016container_port\030\002 \002(\r\022" +
+      "\020\n\010protocol\030\003 \001(\t\"\036\n\010Protocol\022\010\n\004IPv4\020\001\022" +
+      "\010\n\004IPv6\020\002\"\321\005\n\016CapabilityInfo\0229\n\014capabili" +
+      "ties\030\001 \003(\0162#.mesos.v1.CapabilityInfo.Cap" +
+      "ability\"\203\005\n\nCapability\022\013\n\007UNKNOWN\020\000\022\n\n\005C" +
+      "HOWN\020\350\007\022\021\n\014DAC_OVERRIDE\020\351\007\022\024\n\017DAC_READ_S" +
+      "EARCH\020\352\007\022\013\n\006FOWNER\020\353\007\022\013\n\006FSETID\020\354\007\022\t\n\004KI" +
+      "LL\020\355\007\022\013\n\006SETGID\020\356\007\022\013\n\006SETUID\020\357\007\022\014\n\007SETPC",
+      "AP\020\360\007\022\024\n\017LINUX_IMMUTABLE\020\361\007\022\025\n\020NET_BIND_" +
+      "SERVICE\020\362\007\022\022\n\rNET_BROADCAST\020\363\007\022\016\n\tNET_AD" +
+      "MIN\020\364\007\022\014\n\007NET_RAW\020\365\007\022\r\n\010IPC_LOCK\020\366\007\022\016\n\tI" +
+      "PC_OWNER\020\367\007\022\017\n\nSYS_MODULE\020\370\007\022\016\n\tSYS_RAWI" +
+      "O\020\371\007\022\017\n\nSYS_CHROOT\020\372\007\022\017\n\nSYS_PTRACE\020\373\007\022\016" +
+      "\n\tSYS_PACCT\020\374\007\022\016\n\tSYS_ADMIN\020\375\007\022\r\n\010SYS_BO" +
+      "OT\020\376\007\022\r\n\010SYS_NICE\020\377\007\022\021\n\014SYS_RESOURCE\020\200\010\022" +
+      "\r\n\010SYS_TIME\020\201\010\022\023\n\016SYS_TTY_CONFIG\020\202\010\022\n\n\005M" +
+      "KNOD\020\203\010\022\n\n\005LEASE\020\204\010\022\020\n\013AUDIT_WRITE\020\205\010\022\022\n" +
+      "\rAUDIT_CONTROL\020\206\010\022\014\n\007SETFCAP\020\207\010\022\021\n\014MAC_O",
+      "VERRIDE\020\210\010\022\016\n\tMAC_ADMIN\020\211\010\022\013\n\006SYSLOG\020\212\010\022" +
+      "\017\n\nWAKE_ALARM\020\213\010\022\022\n\rBLOCK_SUSPEND\020\214\010\022\017\n\n" +
+      "AUDIT_READ\020\215\010\"\322\001\n\tLinuxInfo\0225\n\017capabilit" +
+      "y_info\030\001 \001(\0132\030.mesos.v1.CapabilityInfoB\002" +
+      "\030\001\0227\n\025bounding_capabilities\030\002 \001(\0132\030.meso" +
+      "s.v1.CapabilityInfo\0228\n\026effective_capabil" +
+      "ities\030\003 \001(\0132\030.mesos.v1.CapabilityInfo\022\033\n" +
+      "\023share_pid_namespace\030\004 \001(\010\"\252\003\n\nRLimitInf" +
+      "o\022,\n\007rlimits\030\001 \003(\0132\033.mesos.v1.RLimitInfo" +
+      ".RLimit\032\355\002\n\006RLimit\022.\n\004type\030\001 \001(\0162 .mesos",
+      ".v1.RLimitInfo.RLimit.Type\022\014\n\004hard\030\002 \001(\004" +
+      "\022\014\n\004soft\030\003 \001(\004\"\226\002\n\004Type\022\013\n\007UNKNOWN\020\000\022\013\n\007" +
+      "RLMT_AS\020\001\022\r\n\tRLMT_CORE\020\002\022\014\n\010RLMT_CPU\020\003\022\r" +
+      "\n\tRLMT_DATA\020\004\022\016\n\nRLMT_FSIZE\020\005\022\016\n\nRLMT_LO" +
+      "CKS\020\006\022\020\n\014RLMT_MEMLOCK\020\007\022\021\n\rRLMT_MSGQUEUE" +
+      "\020\010\022\r\n\tRLMT_NICE\020\t\022\017\n\013RLMT_NOFILE\020\n\022\016\n\nRL" +
+      "MT_NPROC\020\013\022\014\n\010RLMT_RSS\020\014\022\017\n\013RLMT_RTPRIO\020" +
+      "\r\022\017\n\013RLMT_RTTIME\020\016\022\023\n\017RLMT_SIGPENDING\020\017\022" +
+      "\016\n\nRLMT_STACK\020\020\"i\n\007TTYInfo\0221\n\013window_siz" +
+      "e\030\001 \001(\0132\034.mesos.v1.TTYInfo.WindowSize\032+\n",
+      "\nWindowSize\022\014\n\004rows\030\001 \002(\r\022\017\n\007columns\030\002 \002" +
+      "(\r\"\353\006\n\rContainerInfo\022*\n\004type\030\001 \002(\0162\034.mes" +
+      "os.v1.ContainerInfo.Type\022!\n\007volumes\030\002 \003(" +
+      "\0132\020.mesos.v1.Volume\022\020\n\010hostname\030\004 \001(\t\0222\n" +
+      "\006docker\030\003 \001(\0132\".mesos.v1.ContainerInfo.D" +
+      "ockerInfo\0220\n\005mesos\030\005 \001(\0132!.mesos.v1.Cont" +
+      "ainerInfo.MesosInfo\022,\n\rnetwork_infos\030\007 \003" +
+      "(\0132\025.mesos.v1.NetworkInfo\022\'\n\nlinux_info\030" +
+      "\010 \001(\0132\023.mesos.v1.LinuxInfo\022)\n\013rlimit_inf" +
+      "o\030\t \001(\0132\024.mesos.v1.RLimitInfo\022#\n\010tty_inf",
+      "o\030\n \001(\0132\021.mesos.v1.TTYInfo\032\237\003\n\nDockerInf" +
+      "o\022\r\n\005image\030\001 \002(\t\022A\n\007network\030\002 \001(\0162*.meso" +
+      "s.v1.ContainerInfo.DockerInfo.Network:\004H" +
+      "OST\022E\n\rport_mappings\030\003 \003(\0132..mesos.v1.Co" +
+      "ntainerInfo.DockerInfo.PortMapping\022\031\n\npr" +
+      "ivileged\030\004 \001(\010:\005false\022\'\n\nparameters\030\005 \003(" +
+      "\0132\023.mesos.v1.Parameter\022\030\n\020force_pull_ima" +
+      "ge\030\006 \001(\010\022\031\n\rvolume_driver\030\007 \001(\tB\002\030\001\032J\n\013P" +
+      "ortMapping\022\021\n\thost_port\030\001 \002(\r\022\026\n\016contain" +
+      "er_port\030\002 \002(\r\022\020\n\010protocol\030\003 \001(\t\"3\n\007Netwo",
+      "rk\022\010\n\004HOST\020\001\022\n\n\006BRIDGE\020\002\022\010\n\004NONE\020\003\022\010\n\004US" +
+      "ER\020\004\032+\n\tMesosInfo\022\036\n\005image\030\001 \001(\0132\017.mesos" +
+      ".v1.Image\"\035\n\004Type\022\n\n\006DOCKER\020\001\022\t\n\005MESOS\020\002" +
+      "\"\255\001\n\017ContainerStatus\022+\n\014container_id\030\004 \001" +
+      "(\0132\025.mesos.v1.ContainerID\022,\n\rnetwork_inf" +
+      "os\030\001 \003(\0132\025.mesos.v1.NetworkInfo\022)\n\013cgrou" +
+      "p_info\030\002 \001(\0132\024.mesos.v1.CgroupInfo\022\024\n\014ex" +
+      "ecutor_pid\030\003 \001(\r\"\260\010\n\nCgroupInfo\022,\n\007net_c" +
+      "ls\030\001 \001(\0132\033.mesos.v1.CgroupInfo.NetCls\032\330\007" +
+      "\n\005Blkio\032H\n\005Value\0220\n\002op\030\001 \001(\0162$.mesos.v1.",
+      "CgroupInfo.Blkio.Operation\022\r\n\005value\030\002 \001(" +
+      "\004\032\254\003\n\003CFQ\032\244\003\n\nStatistics\022\'\n\006device\030\001 \001(\013" +
+      "2\027.mesos.v1.Device.Number\022\017\n\007sectors\030\002 \001" +
+      "(\004\022\014\n\004time\030\003 \001(\004\0225\n\013io_serviced\030\004 \003(\0132 ." +
+      "mesos.v1.CgroupInfo.Blkio.Value\022:\n\020io_se" +
+      "rvice_bytes\030\005 \003(\0132 .mesos.v1.CgroupInfo." +
+      "Blkio.Value\0229\n\017io_service_time\030\006 \003(\0132 .m" +
+      "esos.v1.CgroupInfo.Blkio.Value\0226\n\014io_wai" +
+      "t_time\030\007 \003(\0132 .mesos.v1.CgroupInfo.Blkio" +
+      ".Value\0223\n\tio_merged\030\010 \003(\0132 .mesos.v1.Cgr",
+      "oupInfo.Blkio.Value\0223\n\tio_queued\030\t \003(\0132 " +
+      ".mesos.v1.CgroupInfo.Blkio.Value\032\267\001\n\nThr" +
+      "ottling\032\250\001\n\nStatistics\022\'\n\006device\030\001 \001(\0132\027" +
+      ".mesos.v1.Device.Number\0225\n\013io_serviced\030\002" +
+      " \003(\0132 .mesos.v1.CgroupInfo.Blkio.Value\022:" +
+      "\n\020io_service_bytes\030\003 \003(\0132 .mesos.v1.Cgro" +
+      "upInfo.Blkio.Value\032\314\001\n\nStatistics\0226\n\003cfq" +
+      "\030\001 \003(\0132).mesos.v1.CgroupInfo.Blkio.CFQ.S" +
+      "tatistics\022@\n\rcfq_recursive\030\002 \003(\0132).mesos" +
+      ".v1.CgroupInfo.Blkio.CFQ.Statistics\022D\n\nt",
+      "hrottling\030\003 \003(\01320.mesos.v1.CgroupInfo.Bl" +
+      "kio.Throttling.Statistics\"M\n\tOperation\022\013" +
+      "\n\007UNKNOWN\020\000\022\t\n\005TOTAL\020\001\022\010\n\004READ\020\002\022\t\n\005WRIT" +
+      "E\020\003\022\010\n\004SYNC\020\004\022\t\n\005ASYNC\020\005\032\031\n\006NetCls\022\017\n\007cl" +
+      "assid\030\001 \001(\r\")\n\006Labels\022\037\n\006labels\030\001 \003(\0132\017." +
+      "mesos.v1.Label\"#\n\005Label\022\013\n\003key\030\001 \002(\t\022\r\n\005" +
+      "value\030\002 \001(\t\"\220\001\n\004Port\022\016\n\006number\030\001 \002(\r\022\014\n\004" +
+      "name\030\002 \001(\t\022\020\n\010protocol\030\003 \001(\t\0226\n\nvisibili" +
+      "ty\030\004 \001(\0162\".mesos.v1.DiscoveryInfo.Visibi" +
+      "lity\022 \n\006labels\030\005 \001(\0132\020.mesos.v1.Labels\"&",
+      "\n\005Ports\022\035\n\005ports\030\001 \003(\0132\016.mesos.v1.Port\"\207" +
+      "\002\n\rDiscoveryInfo\0226\n\nvisibility\030\001 \002(\0162\".m" +
+      "esos.v1.DiscoveryInfo.Visibility\022\014\n\004name" +
+      "\030\002 \001(\t\022\023\n\013environment\030\003 \001(\t\022\020\n\010location\030" +
+      "\004 \001(\t\022\017\n\007version\030\005 \001(\t\022\036\n\005ports\030\006 \001(\0132\017." +
+      "mesos.v1.Ports\022 \n\006labels\030\007 \001(\0132\020.mesos.v" +
+      "1.Labels\"6\n\nVisibility\022\r\n\tFRAMEWORK\020\000\022\013\n" +
+      "\007CLUSTER\020\001\022\014\n\010EXTERNAL\020\002\"*\n\nWeightInfo\022\016" +
+      "\n\006weight\030\001 \002(\001\022\014\n\004role\030\002 \001(\t\"\220\001\n\013Version" +
+      "Info\022\017\n\007version\030\001 \002(\t\022\022\n\nbuild_date\030\002 \001(",
+      "\t\022\022\n\nbuild_time\030\003 \001(\001\022\022\n\nbuild_user\030\004 \001(" +
+      "\t\022\017\n\007git_sha\030\005 \001(\t\022\022\n\ngit_branch\030\006 \001(\t\022\017" +
+      "\n\007git_tag\030\007 \001(\t\"#\n\004Flag\022\014\n\004name\030\001 \002(\t\022\r\n" +
+      "\005value\030\002 \001(\t\"v\n\004Role\022\014\n\004name\030\001 \002(\t\022\016\n\006we" +
+      "ight\030\002 \002(\001\022)\n\nframeworks\030\003 \003(\0132\025.mesos.v" +
+      "1.FrameworkID\022%\n\tresources\030\004 \003(\0132\022.mesos" +
+      ".v1.Resource\"%\n\006Metric\022\014\n\004name\030\001 \002(\t\022\r\n\005" +
+      "value\030\002 \001(\001\"\200\001\n\010FileInfo\022\014\n\004path\030\001 \002(\t\022\r" +
+      "\n\005nlink\030\002 \001(\005\022\014\n\004size\030\003 \001(\004\022!\n\005mtime\030\004 \001" +
+      "(\0132\022.mesos.v1.TimeInfo\022\014\n\004mode\030\005 \001(\r\022\013\n\003",
+      "uid\030\006 \001(\t\022\013\n\003gid\030\007 \001(\t\"u\n\006Device\022\014\n\004path" +
+      "\030\001 \001(\t\022\'\n\006number\030\002 \001(\0132\027.mesos.v1.Device" +
+      ".Number\0324\n\006Number\022\024\n\014major_number\030\001 \002(\004\022" +
+      "\024\n\014minor_number\030\002 \002(\004\"\225\001\n\014DeviceAccess\022 " +
+      "\n\006device\030\001 \002(\0132\020.mesos.v1.Device\022-\n\006acce" +
+      "ss\030\002 \002(\0132\035.mesos.v1.DeviceAccess.Access\032" +
+      "4\n\006Access\022\014\n\004read\030\001 \001(\010\022\r\n\005write\030\002 \001(\010\022\r" +
+      "\n\005mknod\030\003 \001(\010\"B\n\017DeviceWhitelist\022/\n\017allo" +
+      "wed_devices\030\001 \003(\0132\026.mesos.v1.DeviceAcces" +
+      "s*\\\n\006Status\022\026\n\022DRIVER_NOT_STARTED\020\001\022\022\n\016D",
+      "RIVER_RUNNING\020\002\022\022\n\016DRIVER_ABORTED\020\003\022\022\n\016D" +
+      "RIVER_STOPPED\020\004*\214\002\n\tTaskState\022\020\n\014TASK_ST" +
+      "AGING\020\006\022\021\n\rTASK_STARTING\020\000\022\020\n\014TASK_RUNNI" +
+      "NG\020\001\022\020\n\014TASK_KILLING\020\010\022\021\n\rTASK_FINISHED\020" +
+      "\002\022\017\n\013TASK_FAILED\020\003\022\017\n\013TASK_KILLED\020\004\022\016\n\nT" +
+      "ASK_ERROR\020\007\022\r\n\tTASK_LOST\020\005\022\020\n\014TASK_DROPP" +
+      "ED\020\t\022\024\n\020TASK_UNREACHABLE\020\n\022\r\n\tTASK_GONE\020" +
+      "\013\022\031\n\025TASK_GONE_BY_OPERATOR\020\014\022\020\n\014TASK_UNK" +
+      "NOWN\020\rB\035\n\023org.apache.mesos.v1B\006Protos"
+    };
+    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
+      new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
+        public com.google.protobuf.ExtensionRegistry assignDescriptors(
+            com.google.protobuf.Descriptors.FileDescriptor root) {
+          descriptor = root;
+          internal_static_mesos_v1_FrameworkID_descriptor =
+            getDescriptor().getMessageTypes().get(0);
+          internal_static_mesos_v1_FrameworkID_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_FrameworkID_descriptor,
+              new java.lang.String[] { "Value", });
+          internal_static_mesos_v1_OfferID_descriptor =
+            getDescriptor().getMessageTypes().get(1);
+          internal_static_mesos_v1_OfferID_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_OfferID_descriptor,
+              new java.lang.String[] { "Value", });
+          internal_static_mesos_v1_AgentID_descriptor =
+            getDescriptor().getMessageTypes().get(2);
+          internal_static_mesos_v1_AgentID_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_AgentID_descriptor,
+              new java.lang.String[] { "Value", });
+          internal_static_mesos_v1_TaskID_descriptor =
+            getDescriptor().getMessageTypes().get(3);
+          internal_static_mesos_v1_TaskID_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_TaskID_descriptor,
+              new java.lang.String[] { "Value", });
+          internal_static_mesos_v1_ExecutorID_descriptor =
+            getDescriptor().getMessageTypes().get(4);
+          internal_static_mesos_v1_ExecutorID_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_ExecutorID_descriptor,
+              new java.lang.String[] { "Value", });
+          internal_static_mesos_v1_ContainerID_descriptor =
+            getDescriptor().getMessageTypes().get(5);
+          internal_static_mesos_v1_ContainerID_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_ContainerID_descriptor,
+              new java.lang.String[] { "Value", "Parent", });
+          internal_static_mesos_v1_ResourceProviderID_descriptor =
+            getDescriptor().getMessageTypes().get(6);
+          internal_static_mesos_v1_ResourceProviderID_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_ResourceProviderID_descriptor,
+              new java.lang.String[] { "Value", });
+          internal_static_mesos_v1_TimeInfo_descriptor =
+            getDescriptor().getMessageTypes().get(7);
+          internal_static_mesos_v1_TimeInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_TimeInfo_descriptor,
+              new java.lang.String[] { "Nanoseconds", });
+          internal_static_mesos_v1_DurationInfo_descriptor =
+            getDescriptor().getMessageTypes().get(8);
+          internal_static_mesos_v1_DurationInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_DurationInfo_descriptor,
+              new java.lang.String[] { "Nanoseconds", });
+          internal_static_mesos_v1_Address_descriptor =
+            getDescriptor().getMessageTypes().get(9);
+          internal_static_mesos_v1_Address_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Address_descriptor,
+              new java.lang.String[] { "Hostname", "Ip", "Port", });
+          internal_static_mesos_v1_URL_descriptor =
+            getDescriptor().getMessageTypes().get(10);
+          internal_static_mesos_v1_URL_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_URL_descriptor,
+              new java.lang.String[] { "Scheme", "Address", "Path", "Query", "Fragment", });
+          internal_static_mesos_v1_Unavailability_descriptor =
+            getDescriptor().getMessageTypes().get(11);
+          internal_static_mesos_v1_Unavailability_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Unavailability_descriptor,
+              new java.lang.String[] { "Start", "Duration", });
+          internal_static_mesos_v1_MachineID_descriptor =
+            getDescriptor().getMessageTypes().get(12);
+          internal_static_mesos_v1_MachineID_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_MachineID_descriptor,
+              new java.lang.String[] { "Hostname", "Ip", });
+          internal_static_mesos_v1_MachineInfo_descriptor =
+            getDescriptor().getMessageTypes().get(13);
+          internal_static_mesos_v1_MachineInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_MachineInfo_descriptor,
+              new java.lang.String[] { "Id", "Mode", "Unavailability", });
+          internal_static_mesos_v1_FrameworkInfo_descriptor =
+            getDescriptor().getMessageTypes().get(14);
+          internal_static_mesos_v1_FrameworkInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_FrameworkInfo_descriptor,
+              new java.lang.String[] { "User", "Name", "Id", "FailoverTimeout", "Checkpoint", "Role", "Roles", "Hostname", "Principal", "WebuiUrl", "Capabilities", "Labels", });
+          internal_static_mesos_v1_FrameworkInfo_Capability_descriptor =
+            internal_static_mesos_v1_FrameworkInfo_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_v1_FrameworkInfo_Capability_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_FrameworkInfo_Capability_descriptor,
+              new java.lang.String[] { "Type", });
+          internal_static_mesos_v1_CheckInfo_descriptor =
+            getDescriptor().getMessageTypes().get(15);
+          internal_static_mesos_v1_CheckInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_CheckInfo_descriptor,
+              new java.lang.String[] { "Type", "Command", "Http", "Tcp", "DelaySeconds", "IntervalSeconds", "TimeoutSeconds", });
+          internal_static_mesos_v1_CheckInfo_Command_descriptor =
+            internal_static_mesos_v1_CheckInfo_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_v1_CheckInfo_Command_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_CheckInfo_Command_descriptor,
+              new java.lang.String[] { "Command", });
+          internal_static_mesos_v1_CheckInfo_Http_descriptor =
+            internal_static_mesos_v1_CheckInfo_descriptor.getNestedTypes().get(1);
+          internal_static_mesos_v1_CheckInfo_Http_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_CheckInfo_Http_descriptor,
+              new java.lang.String[] { "Port", "Path", });
+          internal_static_mesos_v1_CheckInfo_Tcp_descriptor =
+            internal_static_mesos_v1_CheckInfo_descriptor.getNestedTypes().get(2);
+          internal_static_mesos_v1_CheckInfo_Tcp_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_CheckInfo_Tcp_descriptor,
+              new java.lang.String[] { "Port", });
+          internal_static_mesos_v1_HealthCheck_descriptor =
+            getDescriptor().getMessageTypes().get(16);
+          internal_static_mesos_v1_HealthCheck_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_HealthCheck_descriptor,
+              new java.lang.String[] { "DelaySeconds", "IntervalSeconds", "TimeoutSeconds", "ConsecutiveFailures", "GracePeriodSeconds", "Type", "Command", "Http", "Tcp", });
+          internal_static_mesos_v1_HealthCheck_HTTPCheckInfo_descriptor =
+            internal_static_mesos_v1_HealthCheck_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_v1_HealthCheck_HTTPCheckInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_HealthCheck_HTTPCheckInfo_descriptor,
+              new java.lang.String[] { "Scheme", "Port", "Path", "Statuses", });
+          internal_static_mesos_v1_HealthCheck_TCPCheckInfo_descriptor =
+            internal_static_mesos_v1_HealthCheck_descriptor.getNestedTypes().get(1);
+          internal_static_mesos_v1_HealthCheck_TCPCheckInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_HealthCheck_TCPCheckInfo_descriptor,
+              new java.lang.String[] { "Port", });
+          internal_static_mesos_v1_KillPolicy_descriptor =
+            getDescriptor().getMessageTypes().get(17);
+          internal_static_mesos_v1_KillPolicy_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_KillPolicy_descriptor,
+              new java.lang.String[] { "GracePeriod", });
+          internal_static_mesos_v1_CommandInfo_descriptor =
+            getDescriptor().getMessageTypes().get(18);
+          internal_static_mesos_v1_CommandInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_CommandInfo_descriptor,
+              new java.lang.String[] { "Uris", "Environment", "Shell", "Value", "Arguments", "User", });
+          internal_static_mesos_v1_CommandInfo_URI_descriptor =
+            internal_static_mesos_v1_CommandInfo_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_v1_CommandInfo_URI_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_CommandInfo_URI_descriptor,
+              new java.lang.String[] { "Value", "Executable", "Extract", "Cache", "OutputFile", });
+          internal_static_mesos_v1_ExecutorInfo_descriptor =
+            getDescriptor().getMessageTypes().get(19);
+          internal_static_mesos_v1_ExecutorInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_ExecutorInfo_descriptor,
+              new java.lang.String[] { "Type", "ExecutorId", "FrameworkId", "Command", "Container", "Resources", "Name", "Source", "Data", "Discovery", "ShutdownGracePeriod", "Labels", });
+          internal_static_mesos_v1_DomainInfo_descriptor =
+            getDescriptor().getMessageTypes().get(20);
+          internal_static_mesos_v1_DomainInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_DomainInfo_descriptor,
+              new java.lang.String[] { "FaultDomain", });
+          internal_static_mesos_v1_DomainInfo_FaultDomain_descriptor =
+            internal_static_mesos_v1_DomainInfo_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_v1_DomainInfo_FaultDomain_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_DomainInfo_FaultDomain_descriptor,
+              new java.lang.String[] { "Region", "Zone", });
+          internal_static_mesos_v1_DomainInfo_FaultDomain_RegionInfo_descriptor =
+            internal_static_mesos_v1_DomainInfo_FaultDomain_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_v1_DomainInfo_FaultDomain_RegionInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_DomainInfo_FaultDomain_RegionInfo_descriptor,
+              new java.lang.String[] { "Name", });
+          internal_static_mesos_v1_DomainInfo_FaultDomain_ZoneInfo_descriptor =
+            internal_static_mesos_v1_DomainInfo_FaultDomain_descriptor.getNestedTypes().get(1);
+          internal_static_mesos_v1_DomainInfo_FaultDomain_ZoneInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_DomainInfo_FaultDomain_ZoneInfo_descriptor,
+              new java.lang.String[] { "Name", });
+          internal_static_mesos_v1_MasterInfo_descriptor =
+            getDescriptor().getMessageTypes().get(21);
+          internal_static_mesos_v1_MasterInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_MasterInfo_descriptor,
+              new java.lang.String[] { "Id", "Ip", "Port", "Pid", "Hostname", "Version", "Address", "Domain", });
+          internal_static_mesos_v1_AgentInfo_descriptor =
+            getDescriptor().getMessageTypes().get(22);
+          internal_static_mesos_v1_AgentInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_AgentInfo_descriptor,
+              new java.lang.String[] { "Hostname", "Port", "Resources", "Attributes", "Id", "Domain", });
+          internal_static_mesos_v1_AgentInfo_Capability_descriptor =
+            internal_static_mesos_v1_AgentInfo_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_v1_AgentInfo_Capability_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_AgentInfo_Capability_descriptor,
+              new java.lang.String[] { "Type", });
+          internal_static_mesos_v1_ResourceProviderInfo_descriptor =
+            getDescriptor().getMessageTypes().get(23);
+          internal_static_mesos_v1_ResourceProviderInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_ResourceProviderInfo_descriptor,
+              new java.lang.String[] { "Id", "Attributes", "Type", "Name", });
+          internal_static_mesos_v1_Value_descriptor =
+            getDescriptor().getMessageTypes().get(24);
+          internal_static_mesos_v1_Value_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Value_descriptor,
+              new java.lang.String[] { "Type", "Scalar", "Ranges", "Set", "Text", });
+          internal_static_mesos_v1_Value_Scalar_descriptor =
+            internal_static_mesos_v1_Value_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_v1_Value_Scalar_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Value_Scalar_descriptor,
+              new java.lang.String[] { "Value", });
+          internal_static_mesos_v1_Value_Range_descriptor =
+            internal_static_mesos_v1_Value_descriptor.getNestedTypes().get(1);
+          internal_static_mesos_v1_Value_Range_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Value_Range_descriptor,
+              new java.lang.String[] { "Begin", "End", });
+          internal_static_mesos_v1_Value_Ranges_descriptor =
+            internal_static_mesos_v1_Value_descriptor.getNestedTypes().get(2);
+          internal_static_mesos_v1_Value_Ranges_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Value_Ranges_descriptor,
+              new java.lang.String[] { "Range", });
+          internal_static_mesos_v1_Value_Set_descriptor =
+            internal_static_mesos_v1_Value_descriptor.getNestedTypes().get(3);
+          internal_static_mesos_v1_Value_Set_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Value_Set_descriptor,
+              new java.lang.String[] { "Item", });
+          internal_static_mesos_v1_Value_Text_descriptor =
+            internal_static_mesos_v1_Value_descriptor.getNestedTypes().get(4);
+          internal_static_mesos_v1_Value_Text_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Value_Text_descriptor,
+              new java.lang.String[] { "Value", });
+          internal_static_mesos_v1_Attribute_descriptor =
+            getDescriptor().getMessageTypes().get(25);
+          internal_static_mesos_v1_Attribute_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Attribute_descriptor,
+              new java.lang.String[] { "Name", "Type", "Scalar", "Ranges", "Set", "Text", });
+          internal_static_mesos_v1_Resource_descriptor =
+            getDescriptor().getMessageTypes().get(26);
+          internal_static_mesos_v1_Resource_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Resource_descriptor,
+              new java.lang.String[] { "ProviderId", "Name", "Type", "Scalar", "Ranges", "Set", "Role", "AllocationInfo", "Reservation", "Reservations", "Disk", "Revocable", "Shared", });
+          internal_static_mesos_v1_Resource_AllocationInfo_descriptor =
+            internal_static_mesos_v1_Resource_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_v1_Resource_AllocationInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Resource_AllocationInfo_descriptor,
+              new java.lang.String[] { "Role", });
+          internal_static_mesos_v1_Resource_ReservationInfo_descriptor =
+            internal_static_mesos_v1_Resource_descriptor.getNestedTypes().get(1);
+          internal_static_mesos_v1_Resource_ReservationInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Resource_ReservationInfo_descriptor,
+              new java.lang.String[] { "Type", "Role", "Principal", "Labels", });
+          internal_static_mesos_v1_Resource_DiskInfo_descriptor =
+            internal_static_mesos_v1_Resource_descriptor.getNestedTypes().get(2);
+          internal_static_mesos_v1_Resource_DiskInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Resource_DiskInfo_descriptor,
+              new java.lang.String[] { "Persistence", "Volume", "Source", });
+          internal_static_mesos_v1_Resource_DiskInfo_Persistence_descriptor =
+            internal_static_mesos_v1_Resource_DiskInfo_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_v1_Resource_DiskInfo_Persistence_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Resource_DiskInfo_Persistence_descriptor,
+              new java.lang.String[] { "Id", "Principal", });
+          internal_static_mesos_v1_Resource_DiskInfo_Source_descriptor =
+            internal_static_mesos_v1_Resource_DiskInfo_descriptor.getNestedTypes().get(1);
+          internal_static_mesos_v1_Resource_DiskInfo_Source_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Resource_DiskInfo_Source_descriptor,
+              new java.lang.String[] { "Type", "Path", "Mount", });
+          internal_static_mesos_v1_Resource_DiskInfo_Source_Path_descriptor =
+            internal_static_mesos_v1_Resource_DiskInfo_Source_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_v1_Resource_DiskInfo_Source_Path_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Resource_DiskInfo_Source_Path_descriptor,
+              new java.lang.String[] { "Root", });
+          internal_static_mesos_v1_Resource_DiskInfo_Source_Mount_descriptor =
+            internal_static_mesos_v1_Resource_DiskInfo_Source_descriptor.getNestedTypes().get(1);
+          internal_static_mesos_v1_Resource_DiskInfo_Source_Mount_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Resource_DiskInfo_Source_Mount_descriptor,
+              new java.lang.String[] { "Root", });
+          internal_static_mesos_v1_Resource_RevocableInfo_descriptor =
+            internal_static_mesos_v1_Resource_descriptor.getNestedTypes().get(3);
+          internal_static_mesos_v1_Resource_RevocableInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Resource_RevocableInfo_descriptor,
+              new java.lang.String[] { });
+          internal_static_mesos_v1_Resource_SharedInfo_descriptor =
+            internal_static_mesos_v1_Resource_descriptor.getNestedTypes().get(4);
+          internal_static_mesos_v1_Resource_SharedInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Resource_SharedInfo_descriptor,
+              new java.lang.String[] { });
+          internal_static_mesos_v1_TrafficControlStatistics_descriptor =
+            getDescriptor().getMessageTypes().get(27);
+          internal_static_mesos_v1_TrafficControlStatistics_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_TrafficControlStatistics_descriptor,
+              new java.lang.String[] { "Id", "Backlog", "Bytes", "Drops", "Overlimits", "Packets", "Qlen", "Ratebps", "Ratepps", "Requeues", });
+          internal_static_mesos_v1_IpStatistics_descriptor =
+            getDescriptor().getMessageTypes().get(28);
+          internal_static_mesos_v1_IpStatistics_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_IpStatistics_descriptor,
+              new java.lang.String[] { "Forwarding", "DefaultTTL", "InReceives", "InHdrErrors", "InAddrErrors", "ForwDatagrams", "InUnknownProtos", "InDiscards", "InDelivers", "OutRequests", "OutDiscards", "OutNoRoutes", "ReasmTimeout", "ReasmReqds", "ReasmOKs", "ReasmFails", "FragOKs", "FragFails", "FragCreates", });
+          internal_static_mesos_v1_IcmpStatistics_descriptor =
+            getDescriptor().getMessageTypes().get(29);
+          internal_static_mesos_v1_IcmpStatistics_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_IcmpStatistics_descriptor,
+              new java.lang.String[] { "InMsgs", "InErrors", "InCsumErrors", "InDestUnreachs", "InTimeExcds", "InParmProbs", "InSrcQuenchs", "InRedirects", "InEchos", "InEchoReps", "InTimestamps", "InTimestampReps", "InAddrMasks", "InAddrMaskReps", "OutMsgs", "OutErrors", "OutDestUnreachs", "OutTimeExcds", "OutParmProbs", "OutSrcQuenchs", "OutRedirects", "OutEchos", "OutEchoReps", "OutTimestamps", "OutTimestampReps", "OutAddrMasks", "OutAddrMaskReps", });
+          internal_static_mesos_v1_TcpStatistics_descriptor =
+            getDescriptor().getMessageTypes().get(30);
+          internal_static_mesos_v1_TcpStatistics_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_TcpStatistics_descriptor,
+              new java.lang.String[] { "RtoAlgorithm", "RtoMin", "RtoMax", "MaxConn", "ActiveOpens", "PassiveOpens", "AttemptFails", "EstabResets", "CurrEstab", "InSegs", "OutSegs", "RetransSegs", "InErrs", "OutRsts", "InCsumErrors", });
+          internal_static_mesos_v1_UdpStatistics_descriptor =
+            getDescriptor().getMessageTypes().get(31);
+          internal_static_mesos_v1_UdpStatistics_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_UdpStatistics_descriptor,
+              new java.lang.String[] { "InDatagrams", "NoPorts", "InErrors", "OutDatagrams", "RcvbufErrors", "SndbufErrors", "InCsumErrors", "IgnoredMulti", });
+          internal_static_mesos_v1_SNMPStatistics_descriptor =
+            getDescriptor().getMessageTypes().get(32);
+          internal_static_mesos_v1_SNMPStatistics_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_SNMPStatistics_descriptor,
+              new java.lang.String[] { "IpStats", "IcmpStats", "TcpStats", "UdpStats", });
+          internal_static_mesos_v1_DiskStatistics_descriptor =
+            getDescriptor().getMessageTypes().get(33);
+          internal_static_mesos_v1_DiskStatistics_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_DiskStatistics_descriptor,
+              new java.lang.String[] { "Source", "Persistence", "LimitBytes", "UsedBytes", });
+          internal_static_mesos_v1_ResourceStatistics_descriptor =
+            getDescriptor().getMessageTypes().get(34);
+          internal_static_mesos_v1_ResourceStatistics_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_ResourceStatistics_descriptor,
+              new java.lang.String[] { "Timestamp", "Processes", "Threads", "CpusUserTimeSecs", "CpusSystemTimeSecs", "CpusLimit", "CpusNrPeriods", "CpusNrThrottled", "CpusThrottledTimeSecs", "MemTotalBytes", "MemTotalMemswBytes", "MemLimitBytes", "MemSoftLimitBytes", "MemFileBytes", "MemAnonBytes", "MemCacheBytes", "MemRssBytes", "MemMappedFileBytes", "MemSwapBytes", "MemUnevictableBytes", "MemLowPressureCounter", "MemMediumPressureCounter", "MemCriticalPressureCounter", "DiskLimitBytes", "DiskUsedBytes", "DiskStatistics", "BlkioStatistics", "Perf", "NetRxPackets", "NetRxBytes", "NetRxErrors", "NetRxDropped", "NetTxPackets", "NetTxBytes", "NetTxErrors", "NetTxDropped", "NetTcpRttMicrosecsP50", "NetTcpRttMicrosecsP90", "NetTcpRttMicrosecsP95", "NetTcpRttMicrosecsP99", "NetTcpActiveConnections", "NetTcpTimeWaitConnections", "NetTrafficControlStatistics", "NetSnmpStatistics", });
+          internal_static_mesos_v1_ResourceUsage_descriptor =
+            getDescriptor().getMessageTypes().get(35);
+          internal_static_mesos_v1_ResourceUsage_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_ResourceUsage_descriptor,
+              new java.lang.String[] { "Executors", "Total", });
+          internal_static_mesos_v1_ResourceUsage_Executor_descriptor =
+            internal_static_mesos_v1_ResourceUsage_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_v1_ResourceUsage_Executor_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_ResourceUsage_Executor_descriptor,
+              new java.lang.String[] { "ExecutorInfo", "Allocated", "Statistics", "ContainerId", "Tasks", });
+          internal_static_mesos_v1_ResourceUsage_Executor_Task_descriptor =
+            internal_static_mesos_v1_ResourceUsage_Executor_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_v1_ResourceUsage_Executor_Task_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_ResourceUsage_Executor_Task_descriptor,
+              new java.lang.String[] { "Name", "Id", "Resources", "Labels", });
+          internal_static_mesos_v1_PerfStatistics_descriptor =
+            getDescriptor().getMessageTypes().get(36);
+          internal_static_mesos_v1_PerfStatistics_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_PerfStatistics_descriptor,
+              new java.lang.String[] { "Timestamp", "Duration", "Cycles", "StalledCyclesFrontend", "StalledCyclesBackend", "Instructions", "CacheReferences", "CacheMisses", "Branches", "BranchMisses", "BusCycles", "RefCycles", "CpuClock", "TaskClock", "PageFaults", "MinorFaults", "MajorFaults", "ContextSwitches", "CpuMigrations", "AlignmentFaults", "EmulationFaults", "L1DcacheLoads", "L1DcacheLoadMisses", "L1DcacheStores", "L1DcacheStoreMisses", "L1DcachePrefetches", "L1DcachePrefetchMisses", "L1IcacheLoads", "L1IcacheLoadMisses", "L1IcachePrefetches", "L1IcachePrefetchMisses", "LlcLoads", "LlcLoadMisses", "LlcStores", "LlcStoreMisses", "LlcPrefetches", "LlcPrefetchMisses", "DtlbLoads", "DtlbLoadMisses", "DtlbStores", "DtlbStoreMisses", "DtlbPrefetches", "DtlbPrefetchMisses", "ItlbLoads", "ItlbLoadMisses", "BranchLoads", "BranchLoadMisses", "NodeLoads", "NodeLoadMisses", "NodeStores", "NodeStoreMisses", "NodePrefetches", "NodePrefetchMisses", });
+          internal_static_mesos_v1_Request_descriptor =
+            getDescriptor().getMessageTypes().get(37);
+          internal_static_mesos_v1_Request_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Request_descriptor,
+              new java.lang.String[] { "AgentId", "Resources", });
+          internal_static_mesos_v1_Offer_descriptor =
+            getDescriptor().getMessageTypes().get(38);
+          internal_static_mesos_v1_Offer_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Offer_descriptor,
+              new java.lang.String[] { "Id", "FrameworkId", "AgentId", "Hostname", "Url", "Domain", "Resources", "Attributes", "ExecutorIds", "Unavailability", "AllocationInfo", });
+          internal_static_mesos_v1_Offer_Operation_descriptor =
+            internal_static_mesos_v1_Offer_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_v1_Offer_Operation_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Offer_Operation_descriptor,
+              new java.lang.String[] { "Type", "Launch", "LaunchGroup", "Reserve", "Unreserve", "Create", "Destroy", });
+          internal_static_mesos_v1_Offer_Operation_Launch_descriptor =
+            internal_static_mesos_v1_Offer_Operation_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_v1_Offer_Operation_Launch_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Offer_Operation_Launch_descriptor,
+              new java.lang.String[] { "TaskInfos", });
+          internal_static_mesos_v1_Offer_Operation_LaunchGroup_descriptor =
+            internal_static_mesos_v1_Offer_Operation_descriptor.getNestedTypes().get(1);
+          internal_static_mesos_v1_Offer_Operation_LaunchGroup_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Offer_Operation_LaunchGroup_descriptor,
+              new java.lang.String[] { "Executor", "TaskGroup", });
+          internal_static_mesos_v1_Offer_Operation_Reserve_descriptor =
+            internal_static_mesos_v1_Offer_Operation_descriptor.getNestedTypes().get(2);
+          internal_static_mesos_v1_Offer_Operation_Reserve_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Offer_Operation_Reserve_descriptor,
+              new java.lang.String[] { "Resources", });
+          internal_static_mesos_v1_Offer_Operation_Unreserve_descriptor =
+            internal_static_mesos_v1_Offer_Operation_descriptor.getNestedTypes().get(3);
+          internal_static_mesos_v1_Offer_Operation_Unreserve_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Offer_Operation_Unreserve_descriptor,
+              new java.lang.String[] { "Resources", });
+          internal_static_mesos_v1_Offer_Operation_Create_descriptor =
+            internal_static_mesos_v1_Offer_Operation_descriptor.getNestedTypes().get(4);
+          internal_static_mesos_v1_Offer_Operation_Create_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Offer_Operation_Create_descriptor,
+              new java.lang.String[] { "Volumes", });
+          internal_static_mesos_v1_Offer_Operation_Destroy_descriptor =
+            internal_static_mesos_v1_Offer_Operation_descriptor.getNestedTypes().get(5);
+          internal_static_mesos_v1_Offer_Operation_Destroy_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Offer_Operation_Destroy_descriptor,
+              new java.lang.String[] { "Volumes", });
+          internal_static_mesos_v1_InverseOffer_descriptor =
+            getDescriptor().getMessageTypes().get(39);
+          internal_static_mesos_v1_InverseOffer_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_InverseOffer_descriptor,
+              new java.lang.String[] { "Id", "Url", "FrameworkId", "AgentId", "Unavailability", "Resources", });
+          internal_static_mesos_v1_TaskInfo_descriptor =
+            getDescriptor().getMessageTypes().get(40);
+          internal_static_mesos_v1_TaskInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_TaskInfo_descriptor,
+              new java.lang.String[] { "Name", "TaskId", "AgentId", "Resources", "Executor", "Command", "Container", "HealthCheck", "Check", "KillPolicy", "Data", "Labels", "Discovery", });
+          internal_static_mesos_v1_TaskGroupInfo_descriptor =
+            getDescriptor().getMessageTypes().get(41);
+          internal_static_mesos_v1_TaskGroupInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_TaskGroupInfo_descriptor,
+              new java.lang.String[] { "Tasks", });
+          internal_static_mesos_v1_Task_descriptor =
+            getDescriptor().getMessageTypes().get(42);
+          internal_static_mesos_v1_Task_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Task_descriptor,
+              new java.lang.String[] { "Name", "TaskId", "FrameworkId", "ExecutorId", "AgentId", "State", "Resources", "Statuses", "StatusUpdateState", "StatusUpdateUuid", "Labels", "Discovery", "Container", "User", });
+          internal_static_mesos_v1_CheckStatusInfo_descriptor =
+            getDescriptor().getMessageTypes().get(43);
+          internal_static_mesos_v1_CheckStatusInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_CheckStatusInfo_descriptor,
+              new java.lang.String[] { "Type", "Command", "Http", "Tcp", });
+          internal_static_mesos_v1_CheckStatusInfo_Command_descriptor =
+            internal_static_mesos_v1_CheckStatusInfo_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_v1_CheckStatusInfo_Command_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_CheckStatusInfo_Command_descriptor,
+              new java.lang.String[] { "ExitCode", });
+          internal_static_mesos_v1_CheckStatusInfo_Http_descriptor =
+            internal_static_mesos_v1_CheckStatusInfo_descriptor.getNestedTypes().get(1);
+          internal_static_mesos_v1_CheckStatusInfo_Http_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_CheckStatusInfo_Http_descriptor,
+              new java.lang.String[] { "StatusCode", });
+          internal_static_mesos_v1_CheckStatusInfo_Tcp_descriptor =
+            internal_static_mesos_v1_CheckStatusInfo_descriptor.getNestedTypes().get(2);
+          internal_static_mesos_v1_CheckStatusInfo_Tcp_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_CheckStatusInfo_Tcp_descriptor,
+              new java.lang.String[] { "Succeeded", });
+          internal_static_mesos_v1_TaskStatus_descriptor =
+            getDescriptor().getMessageTypes().get(44);
+          internal_static_mesos_v1_TaskStatus_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_TaskStatus_descriptor,
+              new java.lang.String[] { "TaskId", "State", "Message", "Source", "Reason", "Data", "AgentId", "ExecutorId", "Timestamp", "Uuid", "Healthy", "CheckStatus", "Labels", "ContainerStatus", "UnreachableTime", });
+          internal_static_mesos_v1_Filters_descriptor =
+            getDescriptor().getMessageTypes().get(45);
+          internal_static_mesos_v1_Filters_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Filters_descriptor,
+              new java.lang.String[] { "RefuseSeconds", });
+          internal_static_mesos_v1_Environment_descriptor =
+            getDescriptor().getMessageTypes().get(46);
+          internal_static_mesos_v1_Environment_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Environment_descriptor,
+              new java.lang.String[] { "Variables", });
+          internal_static_mesos_v1_Environment_Variable_descriptor =
+            internal_static_mesos_v1_Environment_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_v1_Environment_Variable_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Environment_Variable_descriptor,
+              new java.lang.String[] { "Name", "Type", "Value", "Secret", });
+          internal_static_mesos_v1_Parameter_descriptor =
+            getDescriptor().getMessageTypes().get(47);
+          internal_static_mesos_v1_Parameter_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Parameter_descriptor,
+              new java.lang.String[] { "Key", "Value", });
+          internal_static_mesos_v1_Parameters_descriptor =
+            getDescriptor().getMessageTypes().get(48);
+          internal_static_mesos_v1_Parameters_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Parameters_descriptor,
+              new java.lang.String[] { "Parameter", });
+          internal_static_mesos_v1_Credential_descriptor =
+            getDescriptor().getMessageTypes().get(49);
+          internal_static_mesos_v1_Credential_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Credential_descriptor,
+              new java.lang.String[] { "Principal", "Secret", });
+          internal_static_mesos_v1_Credentials_descriptor =
+            getDescriptor().getMessageTypes().get(50);
+          internal_static_mesos_v1_Credentials_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Credentials_descriptor,
+              new java.lang.String[] { "Credentials", });
+          internal_static_mesos_v1_Secret_descriptor =
+            getDescriptor().getMessageTypes().get(51);
+          internal_static_mesos_v1_Secret_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Secret_descriptor,
+              new java.lang.String[] { "Type", "Reference", "Value", });
+          internal_static_mesos_v1_Secret_Reference_descriptor =
+            internal_static_mesos_v1_Secret_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_v1_Secret_Reference_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Secret_Reference_descriptor,
+              new java.lang.String[] { "Name", "Key", });
+          internal_static_mesos_v1_Secret_Value_descriptor =
+            internal_static_mesos_v1_Secret_descriptor.getNestedTypes().get(1);
+          internal_static_mesos_v1_Secret_Value_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Secret_Value_descriptor,
+              new java.lang.String[] { "Data", });
+          internal_static_mesos_v1_RateLimit_descriptor =
+            getDescriptor().getMessageTypes().get(52);
+          internal_static_mesos_v1_RateLimit_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_RateLimit_descriptor,
+              new java.lang.String[] { "Qps", "Principal", "Capacity", });
+          internal_static_mesos_v1_RateLimits_descriptor =
+            getDescriptor().getMessageTypes().get(53);
+          internal_static_mesos_v1_RateLimits_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_RateLimits_descriptor,
+              new java.lang.String[] { "Limits", "AggregateDefaultQps", "AggregateDefaultCapacity", });
+          internal_static_mesos_v1_Image_descriptor =
+            getDescriptor().getMessageTypes().get(54);
+          internal_static_mesos_v1_Image_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Image_descriptor,
+              new java.lang.String[] { "Type", "Appc", "Docker", "Cached", });
+          internal_static_mesos_v1_Image_Appc_descriptor =
+            internal_static_mesos_v1_Image_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_v1_Image_Appc_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Image_Appc_descriptor,
+              new java.lang.String[] { "Name", "Id", "Labels", });
+          internal_static_mesos_v1_Image_Docker_descriptor =
+            internal_static_mesos_v1_Image_descriptor.getNestedTypes().get(1);
+          internal_static_mesos_v1_Image_Docker_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Image_Docker_descriptor,
+              new java.lang.String[] { "Name", "Credential", "Config", });
+          internal_static_mesos_v1_Volume_descriptor =
+            getDescriptor().getMessageTypes().get(55);
+          internal_static_mesos_v1_Volume_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Volume_descriptor,
+              new java.lang.String[] { "Mode", "ContainerPath", "HostPath", "Image", "Source", });
+          internal_static_mesos_v1_Volume_Source_descriptor =
+            internal_static_mesos_v1_Volume_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_v1_Volume_Source_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Volume_Source_descriptor,
+              new java.lang.String[] { "Type", "DockerVolume", "SandboxPath", "Secret", });
+          internal_static_mesos_v1_Volume_Source_DockerVolume_descriptor =
+            internal_static_mesos_v1_Volume_Source_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_v1_Volume_Source_DockerVolume_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Volume_Source_DockerVolume_descriptor,
+              new java.lang.String[] { "Driver", "Name", "DriverOptions", });
+          internal_static_mesos_v1_Volume_Source_SandboxPath_descriptor =
+            internal_static_mesos_v1_Volume_Source_descriptor.getNestedTypes().get(1);
+          internal_static_mesos_v1_Volume_Source_SandboxPath_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Volume_Source_SandboxPath_descriptor,
+              new java.lang.String[] { "Type", "Path", });
+          internal_static_mesos_v1_NetworkInfo_descriptor =
+            getDescriptor().getMessageTypes().get(56);
+          internal_static_mesos_v1_NetworkInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_NetworkInfo_descriptor,
+              new java.lang.String[] { "IpAddresses", "Name", "Groups", "Labels", "PortMappings", });
+          internal_static_mesos_v1_NetworkInfo_IPAddress_descriptor =
+            internal_static_mesos_v1_NetworkInfo_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_v1_NetworkInfo_IPAddress_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_NetworkInfo_IPAddress_descriptor,
+              new java.lang.String[] { "Protocol", "IpAddress", });
+          internal_static_mesos_v1_NetworkInfo_PortMapping_descriptor =
+            internal_static_mesos_v1_NetworkInfo_descriptor.getNestedTypes().get(1);
+          internal_static_mesos_v1_NetworkInfo_PortMapping_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_NetworkInfo_PortMapping_descriptor,
+              new java.lang.String[] { "HostPort", "ContainerPort", "Protocol", });
+          internal_static_mesos_v1_CapabilityInfo_descriptor =
+            getDescriptor().getMessageTypes().get(57);
+          internal_static_mesos_v1_CapabilityInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_CapabilityInfo_descriptor,
+              new java.lang.String[] { "Capabilities", });
+          internal_static_mesos_v1_LinuxInfo_descriptor =
+            getDescriptor().getMessageTypes().get(58);
+          internal_static_mesos_v1_LinuxInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_LinuxInfo_descriptor,
+              new java.lang.String[] { "CapabilityInfo", "BoundingCapabilities", "EffectiveCapabilities", "SharePidNamespace", });
+          internal_static_mesos_v1_RLimitInfo_descriptor =
+            getDescriptor().getMessageTypes().get(59);
+          internal_static_mesos_v1_RLimitInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_RLimitInfo_descriptor,
+              new java.lang.String[] { "Rlimits", });
+          internal_static_mesos_v1_RLimitInfo_RLimit_descriptor =
+            internal_static_mesos_v1_RLimitInfo_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_v1_RLimitInfo_RLimit_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_RLimitInfo_RLimit_descriptor,
+              new java.lang.String[] { "Type", "Hard", "Soft", });
+          internal_static_mesos_v1_TTYInfo_descriptor =
+            getDescriptor().getMessageTypes().get(60);
+          internal_static_mesos_v1_TTYInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_TTYInfo_descriptor,
+              new java.lang.String[] { "WindowSize", });
+          internal_static_mesos_v1_TTYInfo_WindowSize_descriptor =
+            internal_static_mesos_v1_TTYInfo_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_v1_TTYInfo_WindowSize_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_TTYInfo_WindowSize_descriptor,
+              new java.lang.String[] { "Rows", "Columns", });
+          internal_static_mesos_v1_ContainerInfo_descriptor =
+            getDescriptor().getMessageTypes().get(61);
+          internal_static_mesos_v1_ContainerInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_ContainerInfo_descriptor,
+              new java.lang.String[] { "Type", "Volumes", "Hostname", "Docker", "Mesos", "NetworkInfos", "LinuxInfo", "RlimitInfo", "TtyInfo", });
+          internal_static_mesos_v1_ContainerInfo_DockerInfo_descriptor =
+            internal_static_mesos_v1_ContainerInfo_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_v1_ContainerInfo_DockerInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_ContainerInfo_DockerInfo_descriptor,
+              new java.lang.String[] { "Image", "Network", "PortMappings", "Privileged", "Parameters", "ForcePullImage", "VolumeDriver", });
+          internal_static_mesos_v1_ContainerInfo_DockerInfo_PortMapping_descriptor =
+            internal_static_mesos_v1_ContainerInfo_DockerInfo_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_v1_ContainerInfo_DockerInfo_PortMapping_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_ContainerInfo_DockerInfo_PortMapping_descriptor,
+              new java.lang.String[] { "HostPort", "ContainerPort", "Protocol", });
+          internal_static_mesos_v1_ContainerInfo_MesosInfo_descriptor =
+            internal_static_mesos_v1_ContainerInfo_descriptor.getNestedTypes().get(1);
+          internal_static_mesos_v1_ContainerInfo_MesosInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_ContainerInfo_MesosInfo_descriptor,
+              new java.lang.String[] { "Image", });
+          internal_static_mesos_v1_ContainerStatus_descriptor =
+            getDescriptor().getMessageTypes().get(62);
+          internal_static_mesos_v1_ContainerStatus_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_ContainerStatus_descriptor,
+              new java.lang.String[] { "ContainerId", "NetworkInfos", "CgroupInfo", "ExecutorPid", });
+          internal_static_mesos_v1_CgroupInfo_descriptor =
+            getDescriptor().getMessageTypes().get(63);
+          internal_static_mesos_v1_CgroupInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_CgroupInfo_descriptor,
+              new java.lang.String[] { "NetCls", });
+          internal_static_mesos_v1_CgroupInfo_Blkio_descriptor =
+            internal_static_mesos_v1_CgroupInfo_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_v1_CgroupInfo_Blkio_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_CgroupInfo_Blkio_descriptor,
+              new java.lang.String[] { });
+          internal_static_mesos_v1_CgroupInfo_Blkio_Value_descriptor =
+            internal_static_mesos_v1_CgroupInfo_Blkio_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_v1_CgroupInfo_Blkio_Value_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_CgroupInfo_Blkio_Value_descriptor,
+              new java.lang.String[] { "Op", "Value", });
+          internal_static_mesos_v1_CgroupInfo_Blkio_CFQ_descriptor =
+            internal_static_mesos_v1_CgroupInfo_Blkio_descriptor.getNestedTypes().get(1);
+          internal_static_mesos_v1_CgroupInfo_Blkio_CFQ_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_CgroupInfo_Blkio_CFQ_descriptor,
+              new java.lang.String[] { });
+          internal_static_mesos_v1_CgroupInfo_Blkio_CFQ_Statistics_descriptor =
+            internal_static_mesos_v1_CgroupInfo_Blkio_CFQ_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_v1_CgroupInfo_Blkio_CFQ_Statistics_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_CgroupInfo_Blkio_CFQ_Statistics_descriptor,
+              new java.lang.String[] { "Device", "Sectors", "Time", "IoServiced", "IoServiceBytes", "IoServiceTime", "IoWaitTime", "IoMerged", "IoQueued", });
+          internal_static_mesos_v1_CgroupInfo_Blkio_Throttling_descriptor =
+            internal_static_mesos_v1_CgroupInfo_Blkio_descriptor.getNestedTypes().get(2);
+          internal_static_mesos_v1_CgroupInfo_Blkio_Throttling_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_CgroupInfo_Blkio_Throttling_descriptor,
+              new java.lang.String[] { });
+          internal_static_mesos_v1_CgroupInfo_Blkio_Throttling_Statistics_descriptor =
+            internal_static_mesos_v1_CgroupInfo_Blkio_Throttling_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_v1_CgroupInfo_Blkio_Throttling_Statistics_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_CgroupInfo_Blkio_Throttling_Statistics_descriptor,
+              new java.lang.String[] { "Device", "IoServiced", "IoServiceBytes", });
+          internal_static_mesos_v1_CgroupInfo_Blkio_Statistics_descriptor =
+            internal_static_mesos_v1_CgroupInfo_Blkio_descriptor.getNestedTypes().get(3);
+          internal_static_mesos_v1_CgroupInfo_Blkio_Statistics_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_CgroupInfo_Blkio_Statistics_descriptor,
+              new java.lang.String[] { "Cfq", "CfqRecursive", "Throttling", });
+          internal_static_mesos_v1_CgroupInfo_NetCls_descriptor =
+            internal_static_mesos_v1_CgroupInfo_descriptor.getNestedTypes().get(1);
+          internal_static_mesos_v1_CgroupInfo_NetCls_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_CgroupInfo_NetCls_descriptor,
+              new java.lang.String[] { "Classid", });
+          internal_static_mesos_v1_Labels_descriptor =
+            getDescriptor().getMessageTypes().get(64);
+          internal_static_mesos_v1_Labels_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Labels_descriptor,
+              new java.lang.String[] { "Labels", });
+          internal_static_mesos_v1_Label_descriptor =
+            getDescriptor().getMessageTypes().get(65);
+          internal_static_mesos_v1_Label_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Label_descriptor,
+              new java.lang.String[] { "Key", "Value", });
+          internal_static_mesos_v1_Port_descriptor =
+            getDescriptor().getMessageTypes().get(66);
+          internal_static_mesos_v1_Port_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Port_descriptor,
+              new java.lang.String[] { "Number", "Name", "Protocol", "Visibility", "Labels", });
+          internal_static_mesos_v1_Ports_descriptor =
+            getDescriptor().getMessageTypes().get(67);
+          internal_static_mesos_v1_Ports_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Ports_descriptor,
+              new java.lang.String[] { "Ports", });
+          internal_static_mesos_v1_DiscoveryInfo_descriptor =
+            getDescriptor().getMessageTypes().get(68);
+          internal_static_mesos_v1_DiscoveryInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_DiscoveryInfo_descriptor,
+              new java.lang.String[] { "Visibility", "Name", "Environment", "Location", "Version", "Ports", "Labels", });
+          internal_static_mesos_v1_WeightInfo_descriptor =
+            getDescriptor().getMessageTypes().get(69);
+          internal_static_mesos_v1_WeightInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_WeightInfo_descriptor,
+              new java.lang.String[] { "Weight", "Role", });
+          internal_static_mesos_v1_VersionInfo_descriptor =
+            getDescriptor().getMessageTypes().get(70);
+          internal_static_mesos_v1_VersionInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_VersionInfo_descriptor,
+              new java.lang.String[] { "Version", "BuildDate", "BuildTime", "BuildUser", "GitSha", "GitBranch", "GitTag", });
+          internal_static_mesos_v1_Flag_descriptor =
+            getDescriptor().getMessageTypes().get(71);
+          internal_static_mesos_v1_Flag_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Flag_descriptor,
+              new java.lang.String[] { "Name", "Value", });
+          internal_static_mesos_v1_Role_descriptor =
+            getDescriptor().getMessageTypes().get(72);
+          internal_static_mesos_v1_Role_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Role_descriptor,
+              new java.lang.String[] { "Name", "Weight", "Frameworks", "Resources", });
+          internal_static_mesos_v1_Metric_descriptor =
+            getDescriptor().getMessageTypes().get(73);
+          internal_static_mesos_v1_Metric_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Metric_descriptor,
+              new java.lang.String[] { "Name", "Value", });
+          internal_static_mesos_v1_FileInfo_descriptor =
+            getDescriptor().getMessageTypes().get(74);
+          internal_static_mesos_v1_FileInfo_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_FileInfo_descriptor,
+              new java.lang.String[] { "Path", "Nlink", "Size", "Mtime", "Mode", "Uid", "Gid", });
+          internal_static_mesos_v1_Device_descriptor =
+            getDescriptor().getMessageTypes().get(75);
+          internal_static_mesos_v1_Device_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Device_descriptor,
+              new java.lang.String[] { "Path", "Number", });
+          internal_static_mesos_v1_Device_Number_descriptor =
+            internal_static_mesos_v1_Device_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_v1_Device_Number_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_Device_Number_descriptor,
+              new java.lang.String[] { "MajorNumber", "MinorNumber", });
+          internal_static_mesos_v1_DeviceAccess_descriptor =
+            getDescriptor().getMessageTypes().get(76);
+          internal_static_mesos_v1_DeviceAccess_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_DeviceAccess_descriptor,
+              new java.lang.String[] { "Device", "Access", });
+          internal_static_mesos_v1_DeviceAccess_Access_descriptor =
+            internal_static_mesos_v1_DeviceAccess_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_v1_DeviceAccess_Access_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_DeviceAccess_Access_descriptor,
+              new java.lang.String[] { "Read", "Write", "Mknod", });
+          internal_static_mesos_v1_DeviceWhitelist_descriptor =
+            getDescriptor().getMessageTypes().get(77);
+          internal_static_mesos_v1_DeviceWhitelist_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_DeviceWhitelist_descriptor,
+              new java.lang.String[] { "AllowedDevices", });
+          return null;
+        }
+      };
+    com.google.protobuf.Descriptors.FileDescriptor
+      .internalBuildGeneratedFileFrom(descriptorData,
+        new com.google.protobuf.Descriptors.FileDescriptor[] {
+        }, assigner);
+  }
+
+  // @@protoc_insertion_point(outer_class_scope)
+}
diff --git a/myriad-commons/src/main/java/org/apache/mesos/v1/executor/Protos.java b/myriad-commons/src/main/java/org/apache/mesos/v1/executor/Protos.java
new file mode 100644
index 0000000..c83d2a4
--- /dev/null
+++ b/myriad-commons/src/main/java/org/apache/mesos/v1/executor/Protos.java
@@ -0,0 +1,10785 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: mesos/v1/executor.proto
+
+package org.apache.mesos.v1.executor;
+
+public final class Protos {
+  private Protos() {}
+  public static void registerAllExtensions(
+      com.google.protobuf.ExtensionRegistry registry) {
+  }
+  public interface EventOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional .mesos.v1.executor.Event.Type type = 1;
+    /**
+     * <code>optional .mesos.v1.executor.Event.Type type = 1;</code>
+     *
+     * <pre>
+     * Type of the event, indicates which optional field below should be
+     * present if that type has a nested message definition.
+     * Enum fields should be optional, see: MESOS-4997.
+     * </pre>
+     */
+    boolean hasType();
+    /**
+     * <code>optional .mesos.v1.executor.Event.Type type = 1;</code>
+     *
+     * <pre>
+     * Type of the event, indicates which optional field below should be
+     * present if that type has a nested message definition.
+     * Enum fields should be optional, see: MESOS-4997.
+     * </pre>
+     */
+    org.apache.mesos.v1.executor.Protos.Event.Type getType();
+
+    // optional .mesos.v1.executor.Event.Subscribed subscribed = 2;
+    /**
+     * <code>optional .mesos.v1.executor.Event.Subscribed subscribed = 2;</code>
+     */
+    boolean hasSubscribed();
+    /**
+     * <code>optional .mesos.v1.executor.Event.Subscribed subscribed = 2;</code>
+     */
+    org.apache.mesos.v1.executor.Protos.Event.Subscribed getSubscribed();
+    /**
+     * <code>optional .mesos.v1.executor.Event.Subscribed subscribed = 2;</code>
+     */
+    org.apache.mesos.v1.executor.Protos.Event.SubscribedOrBuilder getSubscribedOrBuilder();
+
+    // optional .mesos.v1.executor.Event.Acknowledged acknowledged = 3;
+    /**
+     * <code>optional .mesos.v1.executor.Event.Acknowledged acknowledged = 3;</code>
+     */
+    boolean hasAcknowledged();
+    /**
+     * <code>optional .mesos.v1.executor.Event.Acknowledged acknowledged = 3;</code>
+     */
+    org.apache.mesos.v1.executor.Protos.Event.Acknowledged getAcknowledged();
+    /**
+     * <code>optional .mesos.v1.executor.Event.Acknowledged acknowledged = 3;</code>
+     */
+    org.apache.mesos.v1.executor.Protos.Event.AcknowledgedOrBuilder getAcknowledgedOrBuilder();
+
+    // optional .mesos.v1.executor.Event.Launch launch = 4;
+    /**
+     * <code>optional .mesos.v1.executor.Event.Launch launch = 4;</code>
+     */
+    boolean hasLaunch();
+    /**
+     * <code>optional .mesos.v1.executor.Event.Launch launch = 4;</code>
+     */
+    org.apache.mesos.v1.executor.Protos.Event.Launch getLaunch();
+    /**
+     * <code>optional .mesos.v1.executor.Event.Launch launch = 4;</code>
+     */
+    org.apache.mesos.v1.executor.Protos.Event.LaunchOrBuilder getLaunchOrBuilder();
+
+    // optional .mesos.v1.executor.Event.LaunchGroup launch_group = 8;
+    /**
+     * <code>optional .mesos.v1.executor.Event.LaunchGroup launch_group = 8;</code>
+     */
+    boolean hasLaunchGroup();
+    /**
+     * <code>optional .mesos.v1.executor.Event.LaunchGroup launch_group = 8;</code>
+     */
+    org.apache.mesos.v1.executor.Protos.Event.LaunchGroup getLaunchGroup();
+    /**
+     * <code>optional .mesos.v1.executor.Event.LaunchGroup launch_group = 8;</code>
+     */
+    org.apache.mesos.v1.executor.Protos.Event.LaunchGroupOrBuilder getLaunchGroupOrBuilder();
+
+    // optional .mesos.v1.executor.Event.Kill kill = 5;
+    /**
+     * <code>optional .mesos.v1.executor.Event.Kill kill = 5;</code>
+     */
+    boolean hasKill();
+    /**
+     * <code>optional .mesos.v1.executor.Event.Kill kill = 5;</code>
+     */
+    org.apache.mesos.v1.executor.Protos.Event.Kill getKill();
+    /**
+     * <code>optional .mesos.v1.executor.Event.Kill kill = 5;</code>
+     */
+    org.apache.mesos.v1.executor.Protos.Event.KillOrBuilder getKillOrBuilder();
+
+    // optional .mesos.v1.executor.Event.Message message = 6;
+    /**
+     * <code>optional .mesos.v1.executor.Event.Message message = 6;</code>
+     */
+    boolean hasMessage();
+    /**
+     * <code>optional .mesos.v1.executor.Event.Message message = 6;</code>
+     */
+    org.apache.mesos.v1.executor.Protos.Event.Message getMessage();
+    /**
+     * <code>optional .mesos.v1.executor.Event.Message message = 6;</code>
+     */
+    org.apache.mesos.v1.executor.Protos.Event.MessageOrBuilder getMessageOrBuilder();
+
+    // optional .mesos.v1.executor.Event.Error error = 7;
+    /**
+     * <code>optional .mesos.v1.executor.Event.Error error = 7;</code>
+     */
+    boolean hasError();
+    /**
+     * <code>optional .mesos.v1.executor.Event.Error error = 7;</code>
+     */
+    org.apache.mesos.v1.executor.Protos.Event.Error getError();
+    /**
+     * <code>optional .mesos.v1.executor.Event.Error error = 7;</code>
+     */
+    org.apache.mesos.v1.executor.Protos.Event.ErrorOrBuilder getErrorOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.executor.Event}
+   *
+   * <pre>
+   **
+   * Executor event API.
+   *
+   * An event is described using the standard protocol buffer "union"
+   * trick, see https://developers.google.com/protocol-buffers/docs/techniques#union.
+   * </pre>
+   */
+  public static final class Event extends
+      com.google.protobuf.GeneratedMessage
+      implements EventOrBuilder {
+    // Use Event.newBuilder() to construct.
+    private Event(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Event(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Event defaultInstance;
+    public static Event getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Event getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Event(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 8: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.v1.executor.Protos.Event.Type value = org.apache.mesos.v1.executor.Protos.Event.Type.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(1, rawValue);
+              } else {
+                bitField0_ |= 0x00000001;
+                type_ = value;
+              }
+              break;
+            }
+            case 18: {
+              org.apache.mesos.v1.executor.Protos.Event.Subscribed.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = subscribed_.toBuilder();
+              }
+              subscribed_ = input.readMessage(org.apache.mesos.v1.executor.Protos.Event.Subscribed.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(subscribed_);
+                subscribed_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+            case 26: {
+              org.apache.mesos.v1.executor.Protos.Event.Acknowledged.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                subBuilder = acknowledged_.toBuilder();
+              }
+              acknowledged_ = input.readMessage(org.apache.mesos.v1.executor.Protos.Event.Acknowledged.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(acknowledged_);
+                acknowledged_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000004;
+              break;
+            }
+            case 34: {
+              org.apache.mesos.v1.executor.Protos.Event.Launch.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                subBuilder = launch_.toBuilder();
+              }
+              launch_ = input.readMessage(org.apache.mesos.v1.executor.Protos.Event.Launch.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(launch_);
+                launch_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000008;
+              break;
+            }
+            case 42: {
+              org.apache.mesos.v1.executor.Protos.Event.Kill.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000020) == 0x00000020)) {
+                subBuilder = kill_.toBuilder();
+              }
+              kill_ = input.readMessage(org.apache.mesos.v1.executor.Protos.Event.Kill.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(kill_);
+                kill_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000020;
+              break;
+            }
+            case 50: {
+              org.apache.mesos.v1.executor.Protos.Event.Message.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000040) == 0x00000040)) {
+                subBuilder = message_.toBuilder();
+              }
+              message_ = input.readMessage(org.apache.mesos.v1.executor.Protos.Event.Message.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(message_);
+                message_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000040;
+              break;
+            }
+            case 58: {
+              org.apache.mesos.v1.executor.Protos.Event.Error.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000080) == 0x00000080)) {
+                subBuilder = error_.toBuilder();
+              }
+              error_ = input.readMessage(org.apache.mesos.v1.executor.Protos.Event.Error.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(error_);
+                error_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000080;
+              break;
+            }
+            case 66: {
+              org.apache.mesos.v1.executor.Protos.Event.LaunchGroup.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000010) == 0x00000010)) {
+                subBuilder = launchGroup_.toBuilder();
+              }
+              launchGroup_ = input.readMessage(org.apache.mesos.v1.executor.Protos.Event.LaunchGroup.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(launchGroup_);
+                launchGroup_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000010;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Event_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Event_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.executor.Protos.Event.class, org.apache.mesos.v1.executor.Protos.Event.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Event> PARSER =
+        new com.google.protobuf.AbstractParser<Event>() {
+      public Event parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Event(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Event> getParserForType() {
+      return PARSER;
+    }
+
+    /**
+     * Protobuf enum {@code mesos.v1.executor.Event.Type}
+     *
+     * <pre>
+     * Possible event types, followed by message definitions if
+     * applicable.
+     * </pre>
+     */
+    public enum Type
+        implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>UNKNOWN = 0;</code>
+       *
+       * <pre>
+       * This must be the first enum value in this list, to
+       * ensure that if 'type' is not set, the default value
+       * is UNKNOWN. This enables enum values to be added
+       * in a backwards-compatible way. See: MESOS-4997.
+       * </pre>
+       */
+      UNKNOWN(0, 0),
+      /**
+       * <code>SUBSCRIBED = 1;</code>
+       *
+       * <pre>
+       * See 'Subscribed' below.
+       * </pre>
+       */
+      SUBSCRIBED(1, 1),
+      /**
+       * <code>LAUNCH = 2;</code>
+       *
+       * <pre>
+       * See 'Launch' below.
+       * </pre>
+       */
+      LAUNCH(2, 2),
+      /**
+       * <code>LAUNCH_GROUP = 8;</code>
+       *
+       * <pre>
+       * See 'LaunchGroup' below.
+       * </pre>
+       */
+      LAUNCH_GROUP(3, 8),
+      /**
+       * <code>KILL = 3;</code>
+       *
+       * <pre>
+       * See 'Kill' below.
+       * </pre>
+       */
+      KILL(4, 3),
+      /**
+       * <code>ACKNOWLEDGED = 4;</code>
+       *
+       * <pre>
+       * See 'Acknowledged' below.
+       * </pre>
+       */
+      ACKNOWLEDGED(5, 4),
+      /**
+       * <code>MESSAGE = 5;</code>
+       *
+       * <pre>
+       * See 'Message' below.
+       * </pre>
+       */
+      MESSAGE(6, 5),
+      /**
+       * <code>ERROR = 6;</code>
+       *
+       * <pre>
+       * See 'Error' below.
+       * </pre>
+       */
+      ERROR(7, 6),
+      /**
+       * <code>SHUTDOWN = 7;</code>
+       *
+       * <pre>
+       * Received when the agent asks the executor to shutdown/kill itself.
+       * The executor is then required to kill all its active tasks, send
+       * `TASK_KILLED` status updates and gracefully exit. The executor
+       * should terminate within a `MESOS_EXECUTOR_SHUTDOWN_GRACE_PERIOD`
+       * (an environment variable set by the agent upon executor startup);
+       * it can be configured via `ExecutorInfo.shutdown_grace_period`. If
+       * the executor fails to do so, the agent will forcefully destroy the
+       * container where the executor is running. The agent would then send
+       * `TASK_LOST` updates for any remaining active tasks of this executor.
+       *
+       * NOTE: The executor must not assume that it will always be allotted
+       * the full grace period, as the agent may decide to allot a shorter
+       * period and failures / forcible terminations may occur.
+       *
+       * TODO(alexr): Consider adding a duration field into the `Shutdown`
+       * message so that the agent can communicate when a shorter period
+       * has been allotted.
+       * </pre>
+       */
+      SHUTDOWN(8, 7),
+      ;
+
+      /**
+       * <code>UNKNOWN = 0;</code>
+       *
+       * <pre>
+       * This must be the first enum value in this list, to
+       * ensure that if 'type' is not set, the default value
+       * is UNKNOWN. This enables enum values to be added
+       * in a backwards-compatible way. See: MESOS-4997.
+       * </pre>
+       */
+      public static final int UNKNOWN_VALUE = 0;
+      /**
+       * <code>SUBSCRIBED = 1;</code>
+       *
+       * <pre>
+       * See 'Subscribed' below.
+       * </pre>
+       */
+      public static final int SUBSCRIBED_VALUE = 1;
+      /**
+       * <code>LAUNCH = 2;</code>
+       *
+       * <pre>
+       * See 'Launch' below.
+       * </pre>
+       */
+      public static final int LAUNCH_VALUE = 2;
+      /**
+       * <code>LAUNCH_GROUP = 8;</code>
+       *
+       * <pre>
+       * See 'LaunchGroup' below.
+       * </pre>
+       */
+      public static final int LAUNCH_GROUP_VALUE = 8;
+      /**
+       * <code>KILL = 3;</code>
+       *
+       * <pre>
+       * See 'Kill' below.
+       * </pre>
+       */
+      public static final int KILL_VALUE = 3;
+      /**
+       * <code>ACKNOWLEDGED = 4;</code>
+       *
+       * <pre>
+       * See 'Acknowledged' below.
+       * </pre>
+       */
+      public static final int ACKNOWLEDGED_VALUE = 4;
+      /**
+       * <code>MESSAGE = 5;</code>
+       *
+       * <pre>
+       * See 'Message' below.
+       * </pre>
+       */
+      public static final int MESSAGE_VALUE = 5;
+      /**
+       * <code>ERROR = 6;</code>
+       *
+       * <pre>
+       * See 'Error' below.
+       * </pre>
+       */
+      public static final int ERROR_VALUE = 6;
+      /**
+       * <code>SHUTDOWN = 7;</code>
+       *
+       * <pre>
+       * Received when the agent asks the executor to shutdown/kill itself.
+       * The executor is then required to kill all its active tasks, send
+       * `TASK_KILLED` status updates and gracefully exit. The executor
+       * should terminate within a `MESOS_EXECUTOR_SHUTDOWN_GRACE_PERIOD`
+       * (an environment variable set by the agent upon executor startup);
+       * it can be configured via `ExecutorInfo.shutdown_grace_period`. If
+       * the executor fails to do so, the agent will forcefully destroy the
+       * container where the executor is running. The agent would then send
+       * `TASK_LOST` updates for any remaining active tasks of this executor.
+       *
+       * NOTE: The executor must not assume that it will always be allotted
+       * the full grace period, as the agent may decide to allot a shorter
+       * period and failures / forcible terminations may occur.
+       *
+       * TODO(alexr): Consider adding a duration field into the `Shutdown`
+       * message so that the agent can communicate when a shorter period
+       * has been allotted.
+       * </pre>
+       */
+      public static final int SHUTDOWN_VALUE = 7;
+
+
+      public final int getNumber() { return value; }
+
+      public static Type valueOf(int value) {
+        switch (value) {
+          case 0: return UNKNOWN;
+          case 1: return SUBSCRIBED;
+          case 2: return LAUNCH;
+          case 8: return LAUNCH_GROUP;
+          case 3: return KILL;
+          case 4: return ACKNOWLEDGED;
+          case 5: return MESSAGE;
+          case 6: return ERROR;
+          case 7: return SHUTDOWN;
+          default: return null;
+        }
+      }
+
+      public static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalGetValueMap() {
+        return internalValueMap;
+      }
+      private static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap<Type>() {
+              public Type findValueByNumber(int number) {
+                return Type.valueOf(number);
+              }
+            };
+
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
+          getValueDescriptor() {
+        return getDescriptor().getValues().get(index);
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptorForType() {
+        return getDescriptor();
+      }
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.executor.Protos.Event.getDescriptor().getEnumTypes().get(0);
+      }
+
+      private static final Type[] VALUES = values();
+
+      public static Type valueOf(
+          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+        if (desc.getType() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "EnumValueDescriptor is not for this type.");
+        }
+        return VALUES[desc.getIndex()];
+      }
+
+      private final int index;
+      private final int value;
+
+      private Type(int index, int value) {
+        this.index = index;
+        this.value = value;
+      }
+
+      // @@protoc_insertion_point(enum_scope:mesos.v1.executor.Event.Type)
+    }
+
+    public interface SubscribedOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required .mesos.v1.ExecutorInfo executor_info = 1;
+      /**
+       * <code>required .mesos.v1.ExecutorInfo executor_info = 1;</code>
+       */
+      boolean hasExecutorInfo();
+      /**
+       * <code>required .mesos.v1.ExecutorInfo executor_info = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.ExecutorInfo getExecutorInfo();
+      /**
+       * <code>required .mesos.v1.ExecutorInfo executor_info = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.ExecutorInfoOrBuilder getExecutorInfoOrBuilder();
+
+      // required .mesos.v1.FrameworkInfo framework_info = 2;
+      /**
+       * <code>required .mesos.v1.FrameworkInfo framework_info = 2;</code>
+       */
+      boolean hasFrameworkInfo();
+      /**
+       * <code>required .mesos.v1.FrameworkInfo framework_info = 2;</code>
+       */
+      org.apache.mesos.v1.Protos.FrameworkInfo getFrameworkInfo();
+      /**
+       * <code>required .mesos.v1.FrameworkInfo framework_info = 2;</code>
+       */
+      org.apache.mesos.v1.Protos.FrameworkInfoOrBuilder getFrameworkInfoOrBuilder();
+
+      // required .mesos.v1.AgentInfo agent_info = 3;
+      /**
+       * <code>required .mesos.v1.AgentInfo agent_info = 3;</code>
+       */
+      boolean hasAgentInfo();
+      /**
+       * <code>required .mesos.v1.AgentInfo agent_info = 3;</code>
+       */
+      org.apache.mesos.v1.Protos.AgentInfo getAgentInfo();
+      /**
+       * <code>required .mesos.v1.AgentInfo agent_info = 3;</code>
+       */
+      org.apache.mesos.v1.Protos.AgentInfoOrBuilder getAgentInfoOrBuilder();
+
+      // optional .mesos.v1.ContainerID container_id = 4;
+      /**
+       * <code>optional .mesos.v1.ContainerID container_id = 4;</code>
+       *
+       * <pre>
+       * Uniquely identifies the container of an executor run.
+       * </pre>
+       */
+      boolean hasContainerId();
+      /**
+       * <code>optional .mesos.v1.ContainerID container_id = 4;</code>
+       *
+       * <pre>
+       * Uniquely identifies the container of an executor run.
+       * </pre>
+       */
+      org.apache.mesos.v1.Protos.ContainerID getContainerId();
+      /**
+       * <code>optional .mesos.v1.ContainerID container_id = 4;</code>
+       *
+       * <pre>
+       * Uniquely identifies the container of an executor run.
+       * </pre>
+       */
+      org.apache.mesos.v1.Protos.ContainerIDOrBuilder getContainerIdOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.executor.Event.Subscribed}
+     *
+     * <pre>
+     * First event received when the executor subscribes.
+     * The 'id' field in the 'framework_info' will be set.
+     * </pre>
+     */
+    public static final class Subscribed extends
+        com.google.protobuf.GeneratedMessage
+        implements SubscribedOrBuilder {
+      // Use Subscribed.newBuilder() to construct.
+      private Subscribed(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Subscribed(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Subscribed defaultInstance;
+      public static Subscribed getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Subscribed getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Subscribed(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.v1.Protos.ExecutorInfo.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = executorInfo_.toBuilder();
+                }
+                executorInfo_ = input.readMessage(org.apache.mesos.v1.Protos.ExecutorInfo.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(executorInfo_);
+                  executorInfo_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+              case 18: {
+                org.apache.mesos.v1.Protos.FrameworkInfo.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                  subBuilder = frameworkInfo_.toBuilder();
+                }
+                frameworkInfo_ = input.readMessage(org.apache.mesos.v1.Protos.FrameworkInfo.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(frameworkInfo_);
+                  frameworkInfo_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000002;
+                break;
+              }
+              case 26: {
+                org.apache.mesos.v1.Protos.AgentInfo.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                  subBuilder = agentInfo_.toBuilder();
+                }
+                agentInfo_ = input.readMessage(org.apache.mesos.v1.Protos.AgentInfo.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(agentInfo_);
+                  agentInfo_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000004;
+                break;
+              }
+              case 34: {
+                org.apache.mesos.v1.Protos.ContainerID.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                  subBuilder = containerId_.toBuilder();
+                }
+                containerId_ = input.readMessage(org.apache.mesos.v1.Protos.ContainerID.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(containerId_);
+                  containerId_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000008;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Event_Subscribed_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Event_Subscribed_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.executor.Protos.Event.Subscribed.class, org.apache.mesos.v1.executor.Protos.Event.Subscribed.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Subscribed> PARSER =
+          new com.google.protobuf.AbstractParser<Subscribed>() {
+        public Subscribed parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Subscribed(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Subscribed> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required .mesos.v1.ExecutorInfo executor_info = 1;
+      public static final int EXECUTOR_INFO_FIELD_NUMBER = 1;
+      private org.apache.mesos.v1.Protos.ExecutorInfo executorInfo_;
+      /**
+       * <code>required .mesos.v1.ExecutorInfo executor_info = 1;</code>
+       */
+      public boolean hasExecutorInfo() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.v1.ExecutorInfo executor_info = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.ExecutorInfo getExecutorInfo() {
+        return executorInfo_;
+      }
+      /**
+       * <code>required .mesos.v1.ExecutorInfo executor_info = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.ExecutorInfoOrBuilder getExecutorInfoOrBuilder() {
+        return executorInfo_;
+      }
+
+      // required .mesos.v1.FrameworkInfo framework_info = 2;
+      public static final int FRAMEWORK_INFO_FIELD_NUMBER = 2;
+      private org.apache.mesos.v1.Protos.FrameworkInfo frameworkInfo_;
+      /**
+       * <code>required .mesos.v1.FrameworkInfo framework_info = 2;</code>
+       */
+      public boolean hasFrameworkInfo() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required .mesos.v1.FrameworkInfo framework_info = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.FrameworkInfo getFrameworkInfo() {
+        return frameworkInfo_;
+      }
+      /**
+       * <code>required .mesos.v1.FrameworkInfo framework_info = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.FrameworkInfoOrBuilder getFrameworkInfoOrBuilder() {
+        return frameworkInfo_;
+      }
+
+      // required .mesos.v1.AgentInfo agent_info = 3;
+      public static final int AGENT_INFO_FIELD_NUMBER = 3;
+      private org.apache.mesos.v1.Protos.AgentInfo agentInfo_;
+      /**
+       * <code>required .mesos.v1.AgentInfo agent_info = 3;</code>
+       */
+      public boolean hasAgentInfo() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>required .mesos.v1.AgentInfo agent_info = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.AgentInfo getAgentInfo() {
+        return agentInfo_;
+      }
+      /**
+       * <code>required .mesos.v1.AgentInfo agent_info = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.AgentInfoOrBuilder getAgentInfoOrBuilder() {
+        return agentInfo_;
+      }
+
+      // optional .mesos.v1.ContainerID container_id = 4;
+      public static final int CONTAINER_ID_FIELD_NUMBER = 4;
+      private org.apache.mesos.v1.Protos.ContainerID containerId_;
+      /**
+       * <code>optional .mesos.v1.ContainerID container_id = 4;</code>
+       *
+       * <pre>
+       * Uniquely identifies the container of an executor run.
+       * </pre>
+       */
+      public boolean hasContainerId() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerID container_id = 4;</code>
+       *
+       * <pre>
+       * Uniquely identifies the container of an executor run.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.ContainerID getContainerId() {
+        return containerId_;
+      }
+      /**
+       * <code>optional .mesos.v1.ContainerID container_id = 4;</code>
+       *
+       * <pre>
+       * Uniquely identifies the container of an executor run.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.ContainerIDOrBuilder getContainerIdOrBuilder() {
+        return containerId_;
+      }
+
+      private void initFields() {
+        executorInfo_ = org.apache.mesos.v1.Protos.ExecutorInfo.getDefaultInstance();
+        frameworkInfo_ = org.apache.mesos.v1.Protos.FrameworkInfo.getDefaultInstance();
+        agentInfo_ = org.apache.mesos.v1.Protos.AgentInfo.getDefaultInstance();
+        containerId_ = org.apache.mesos.v1.Protos.ContainerID.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasExecutorInfo()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!hasFrameworkInfo()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!hasAgentInfo()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getExecutorInfo().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getFrameworkInfo().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getAgentInfo().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (hasContainerId()) {
+          if (!getContainerId().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, executorInfo_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeMessage(2, frameworkInfo_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeMessage(3, agentInfo_);
+        }
+        if (((bitField0_ & 0x00000008) == 0x00000008)) {
+          output.writeMessage(4, containerId_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, executorInfo_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(2, frameworkInfo_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(3, agentInfo_);
+        }
+        if (((bitField0_ & 0x00000008) == 0x00000008)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(4, containerId_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.executor.Protos.Event.Subscribed parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Subscribed parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Subscribed parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Subscribed parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Subscribed parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Subscribed parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Subscribed parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Subscribed parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Subscribed parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Subscribed parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.executor.Protos.Event.Subscribed prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.executor.Event.Subscribed}
+       *
+       * <pre>
+       * First event received when the executor subscribes.
+       * The 'id' field in the 'framework_info' will be set.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.executor.Protos.Event.SubscribedOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Event_Subscribed_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Event_Subscribed_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.executor.Protos.Event.Subscribed.class, org.apache.mesos.v1.executor.Protos.Event.Subscribed.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.executor.Protos.Event.Subscribed.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getExecutorInfoFieldBuilder();
+            getFrameworkInfoFieldBuilder();
+            getAgentInfoFieldBuilder();
+            getContainerIdFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (executorInfoBuilder_ == null) {
+            executorInfo_ = org.apache.mesos.v1.Protos.ExecutorInfo.getDefaultInstance();
+          } else {
+            executorInfoBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          if (frameworkInfoBuilder_ == null) {
+            frameworkInfo_ = org.apache.mesos.v1.Protos.FrameworkInfo.getDefaultInstance();
+          } else {
+            frameworkInfoBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          if (agentInfoBuilder_ == null) {
+            agentInfo_ = org.apache.mesos.v1.Protos.AgentInfo.getDefaultInstance();
+          } else {
+            agentInfoBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
+          if (containerIdBuilder_ == null) {
+            containerId_ = org.apache.mesos.v1.Protos.ContainerID.getDefaultInstance();
+          } else {
+            containerIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000008);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Event_Subscribed_descriptor;
+        }
+
+        public org.apache.mesos.v1.executor.Protos.Event.Subscribed getDefaultInstanceForType() {
+          return org.apache.mesos.v1.executor.Protos.Event.Subscribed.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.executor.Protos.Event.Subscribed build() {
+          org.apache.mesos.v1.executor.Protos.Event.Subscribed result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.executor.Protos.Event.Subscribed buildPartial() {
+          org.apache.mesos.v1.executor.Protos.Event.Subscribed result = new org.apache.mesos.v1.executor.Protos.Event.Subscribed(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (executorInfoBuilder_ == null) {
+            result.executorInfo_ = executorInfo_;
+          } else {
+            result.executorInfo_ = executorInfoBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          if (frameworkInfoBuilder_ == null) {
+            result.frameworkInfo_ = frameworkInfo_;
+          } else {
+            result.frameworkInfo_ = frameworkInfoBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          if (agentInfoBuilder_ == null) {
+            result.agentInfo_ = agentInfo_;
+          } else {
+            result.agentInfo_ = agentInfoBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+            to_bitField0_ |= 0x00000008;
+          }
+          if (containerIdBuilder_ == null) {
+            result.containerId_ = containerId_;
+          } else {
+            result.containerId_ = containerIdBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.executor.Protos.Event.Subscribed) {
+            return mergeFrom((org.apache.mesos.v1.executor.Protos.Event.Subscribed)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.executor.Protos.Event.Subscribed other) {
+          if (other == org.apache.mesos.v1.executor.Protos.Event.Subscribed.getDefaultInstance()) return this;
+          if (other.hasExecutorInfo()) {
+            mergeExecutorInfo(other.getExecutorInfo());
+          }
+          if (other.hasFrameworkInfo()) {
+            mergeFrameworkInfo(other.getFrameworkInfo());
+          }
+          if (other.hasAgentInfo()) {
+            mergeAgentInfo(other.getAgentInfo());
+          }
+          if (other.hasContainerId()) {
+            mergeContainerId(other.getContainerId());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasExecutorInfo()) {
+            
+            return false;
+          }
+          if (!hasFrameworkInfo()) {
+            
+            return false;
+          }
+          if (!hasAgentInfo()) {
+            
+            return false;
+          }
+          if (!getExecutorInfo().isInitialized()) {
+            
+            return false;
+          }
+          if (!getFrameworkInfo().isInitialized()) {
+            
+            return false;
+          }
+          if (!getAgentInfo().isInitialized()) {
+            
+            return false;
+          }
+          if (hasContainerId()) {
+            if (!getContainerId().isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.executor.Protos.Event.Subscribed parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.executor.Protos.Event.Subscribed) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required .mesos.v1.ExecutorInfo executor_info = 1;
+        private org.apache.mesos.v1.Protos.ExecutorInfo executorInfo_ = org.apache.mesos.v1.Protos.ExecutorInfo.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.ExecutorInfo, org.apache.mesos.v1.Protos.ExecutorInfo.Builder, org.apache.mesos.v1.Protos.ExecutorInfoOrBuilder> executorInfoBuilder_;
+        /**
+         * <code>required .mesos.v1.ExecutorInfo executor_info = 1;</code>
+         */
+        public boolean hasExecutorInfo() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.v1.ExecutorInfo executor_info = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.ExecutorInfo getExecutorInfo() {
+          if (executorInfoBuilder_ == null) {
+            return executorInfo_;
+          } else {
+            return executorInfoBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.v1.ExecutorInfo executor_info = 1;</code>
+         */
+        public Builder setExecutorInfo(org.apache.mesos.v1.Protos.ExecutorInfo value) {
+          if (executorInfoBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            executorInfo_ = value;
+            onChanged();
+          } else {
+            executorInfoBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.ExecutorInfo executor_info = 1;</code>
+         */
+        public Builder setExecutorInfo(
+            org.apache.mesos.v1.Protos.ExecutorInfo.Builder builderForValue) {
+          if (executorInfoBuilder_ == null) {
+            executorInfo_ = builderForValue.build();
+            onChanged();
+          } else {
+            executorInfoBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.ExecutorInfo executor_info = 1;</code>
+         */
+        public Builder mergeExecutorInfo(org.apache.mesos.v1.Protos.ExecutorInfo value) {
+          if (executorInfoBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                executorInfo_ != org.apache.mesos.v1.Protos.ExecutorInfo.getDefaultInstance()) {
+              executorInfo_ =
+                org.apache.mesos.v1.Protos.ExecutorInfo.newBuilder(executorInfo_).mergeFrom(value).buildPartial();
+            } else {
+              executorInfo_ = value;
+            }
+            onChanged();
+          } else {
+            executorInfoBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.ExecutorInfo executor_info = 1;</code>
+         */
+        public Builder clearExecutorInfo() {
+          if (executorInfoBuilder_ == null) {
+            executorInfo_ = org.apache.mesos.v1.Protos.ExecutorInfo.getDefaultInstance();
+            onChanged();
+          } else {
+            executorInfoBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.ExecutorInfo executor_info = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.ExecutorInfo.Builder getExecutorInfoBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getExecutorInfoFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.v1.ExecutorInfo executor_info = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.ExecutorInfoOrBuilder getExecutorInfoOrBuilder() {
+          if (executorInfoBuilder_ != null) {
+            return executorInfoBuilder_.getMessageOrBuilder();
+          } else {
+            return executorInfo_;
+          }
+        }
+        /**
+         * <code>required .mesos.v1.ExecutorInfo executor_info = 1;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.ExecutorInfo, org.apache.mesos.v1.Protos.ExecutorInfo.Builder, org.apache.mesos.v1.Protos.ExecutorInfoOrBuilder> 
+            getExecutorInfoFieldBuilder() {
+          if (executorInfoBuilder_ == null) {
+            executorInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.ExecutorInfo, org.apache.mesos.v1.Protos.ExecutorInfo.Builder, org.apache.mesos.v1.Protos.ExecutorInfoOrBuilder>(
+                    executorInfo_,
+                    getParentForChildren(),
+                    isClean());
+            executorInfo_ = null;
+          }
+          return executorInfoBuilder_;
+        }
+
+        // required .mesos.v1.FrameworkInfo framework_info = 2;
+        private org.apache.mesos.v1.Protos.FrameworkInfo frameworkInfo_ = org.apache.mesos.v1.Protos.FrameworkInfo.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.FrameworkInfo, org.apache.mesos.v1.Protos.FrameworkInfo.Builder, org.apache.mesos.v1.Protos.FrameworkInfoOrBuilder> frameworkInfoBuilder_;
+        /**
+         * <code>required .mesos.v1.FrameworkInfo framework_info = 2;</code>
+         */
+        public boolean hasFrameworkInfo() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>required .mesos.v1.FrameworkInfo framework_info = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.FrameworkInfo getFrameworkInfo() {
+          if (frameworkInfoBuilder_ == null) {
+            return frameworkInfo_;
+          } else {
+            return frameworkInfoBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.v1.FrameworkInfo framework_info = 2;</code>
+         */
+        public Builder setFrameworkInfo(org.apache.mesos.v1.Protos.FrameworkInfo value) {
+          if (frameworkInfoBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            frameworkInfo_ = value;
+            onChanged();
+          } else {
+            frameworkInfoBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.FrameworkInfo framework_info = 2;</code>
+         */
+        public Builder setFrameworkInfo(
+            org.apache.mesos.v1.Protos.FrameworkInfo.Builder builderForValue) {
+          if (frameworkInfoBuilder_ == null) {
+            frameworkInfo_ = builderForValue.build();
+            onChanged();
+          } else {
+            frameworkInfoBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.FrameworkInfo framework_info = 2;</code>
+         */
+        public Builder mergeFrameworkInfo(org.apache.mesos.v1.Protos.FrameworkInfo value) {
+          if (frameworkInfoBuilder_ == null) {
+            if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                frameworkInfo_ != org.apache.mesos.v1.Protos.FrameworkInfo.getDefaultInstance()) {
+              frameworkInfo_ =
+                org.apache.mesos.v1.Protos.FrameworkInfo.newBuilder(frameworkInfo_).mergeFrom(value).buildPartial();
+            } else {
+              frameworkInfo_ = value;
+            }
+            onChanged();
+          } else {
+            frameworkInfoBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.FrameworkInfo framework_info = 2;</code>
+         */
+        public Builder clearFrameworkInfo() {
+          if (frameworkInfoBuilder_ == null) {
+            frameworkInfo_ = org.apache.mesos.v1.Protos.FrameworkInfo.getDefaultInstance();
+            onChanged();
+          } else {
+            frameworkInfoBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.FrameworkInfo framework_info = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.FrameworkInfo.Builder getFrameworkInfoBuilder() {
+          bitField0_ |= 0x00000002;
+          onChanged();
+          return getFrameworkInfoFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.v1.FrameworkInfo framework_info = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.FrameworkInfoOrBuilder getFrameworkInfoOrBuilder() {
+          if (frameworkInfoBuilder_ != null) {
+            return frameworkInfoBuilder_.getMessageOrBuilder();
+          } else {
+            return frameworkInfo_;
+          }
+        }
+        /**
+         * <code>required .mesos.v1.FrameworkInfo framework_info = 2;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.FrameworkInfo, org.apache.mesos.v1.Protos.FrameworkInfo.Builder, org.apache.mesos.v1.Protos.FrameworkInfoOrBuilder> 
+            getFrameworkInfoFieldBuilder() {
+          if (frameworkInfoBuilder_ == null) {
+            frameworkInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.FrameworkInfo, org.apache.mesos.v1.Protos.FrameworkInfo.Builder, org.apache.mesos.v1.Protos.FrameworkInfoOrBuilder>(
+                    frameworkInfo_,
+                    getParentForChildren(),
+                    isClean());
+            frameworkInfo_ = null;
+          }
+          return frameworkInfoBuilder_;
+        }
+
+        // required .mesos.v1.AgentInfo agent_info = 3;
+        private org.apache.mesos.v1.Protos.AgentInfo agentInfo_ = org.apache.mesos.v1.Protos.AgentInfo.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.AgentInfo, org.apache.mesos.v1.Protos.AgentInfo.Builder, org.apache.mesos.v1.Protos.AgentInfoOrBuilder> agentInfoBuilder_;
+        /**
+         * <code>required .mesos.v1.AgentInfo agent_info = 3;</code>
+         */
+        public boolean hasAgentInfo() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>required .mesos.v1.AgentInfo agent_info = 3;</code>
+         */
+        public org.apache.mesos.v1.Protos.AgentInfo getAgentInfo() {
+          if (agentInfoBuilder_ == null) {
+            return agentInfo_;
+          } else {
+            return agentInfoBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.v1.AgentInfo agent_info = 3;</code>
+         */
+        public Builder setAgentInfo(org.apache.mesos.v1.Protos.AgentInfo value) {
+          if (agentInfoBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            agentInfo_ = value;
+            onChanged();
+          } else {
+            agentInfoBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.AgentInfo agent_info = 3;</code>
+         */
+        public Builder setAgentInfo(
+            org.apache.mesos.v1.Protos.AgentInfo.Builder builderForValue) {
+          if (agentInfoBuilder_ == null) {
+            agentInfo_ = builderForValue.build();
+            onChanged();
+          } else {
+            agentInfoBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.AgentInfo agent_info = 3;</code>
+         */
+        public Builder mergeAgentInfo(org.apache.mesos.v1.Protos.AgentInfo value) {
+          if (agentInfoBuilder_ == null) {
+            if (((bitField0_ & 0x00000004) == 0x00000004) &&
+                agentInfo_ != org.apache.mesos.v1.Protos.AgentInfo.getDefaultInstance()) {
+              agentInfo_ =
+                org.apache.mesos.v1.Protos.AgentInfo.newBuilder(agentInfo_).mergeFrom(value).buildPartial();
+            } else {
+              agentInfo_ = value;
+            }
+            onChanged();
+          } else {
+            agentInfoBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.AgentInfo agent_info = 3;</code>
+         */
+        public Builder clearAgentInfo() {
+          if (agentInfoBuilder_ == null) {
+            agentInfo_ = org.apache.mesos.v1.Protos.AgentInfo.getDefaultInstance();
+            onChanged();
+          } else {
+            agentInfoBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.AgentInfo agent_info = 3;</code>
+         */
+        public org.apache.mesos.v1.Protos.AgentInfo.Builder getAgentInfoBuilder() {
+          bitField0_ |= 0x00000004;
+          onChanged();
+          return getAgentInfoFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.v1.AgentInfo agent_info = 3;</code>
+         */
+        public org.apache.mesos.v1.Protos.AgentInfoOrBuilder getAgentInfoOrBuilder() {
+          if (agentInfoBuilder_ != null) {
+            return agentInfoBuilder_.getMessageOrBuilder();
+          } else {
+            return agentInfo_;
+          }
+        }
+        /**
+         * <code>required .mesos.v1.AgentInfo agent_info = 3;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.AgentInfo, org.apache.mesos.v1.Protos.AgentInfo.Builder, org.apache.mesos.v1.Protos.AgentInfoOrBuilder> 
+            getAgentInfoFieldBuilder() {
+          if (agentInfoBuilder_ == null) {
+            agentInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.AgentInfo, org.apache.mesos.v1.Protos.AgentInfo.Builder, org.apache.mesos.v1.Protos.AgentInfoOrBuilder>(
+                    agentInfo_,
+                    getParentForChildren(),
+                    isClean());
+            agentInfo_ = null;
+          }
+          return agentInfoBuilder_;
+        }
+
+        // optional .mesos.v1.ContainerID container_id = 4;
+        private org.apache.mesos.v1.Protos.ContainerID containerId_ = org.apache.mesos.v1.Protos.ContainerID.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.ContainerID, org.apache.mesos.v1.Protos.ContainerID.Builder, org.apache.mesos.v1.Protos.ContainerIDOrBuilder> containerIdBuilder_;
+        /**
+         * <code>optional .mesos.v1.ContainerID container_id = 4;</code>
+         *
+         * <pre>
+         * Uniquely identifies the container of an executor run.
+         * </pre>
+         */
+        public boolean hasContainerId() {
+          return ((bitField0_ & 0x00000008) == 0x00000008);
+        }
+        /**
+         * <code>optional .mesos.v1.ContainerID container_id = 4;</code>
+         *
+         * <pre>
+         * Uniquely identifies the container of an executor run.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.ContainerID getContainerId() {
+          if (containerIdBuilder_ == null) {
+            return containerId_;
+          } else {
+            return containerIdBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.ContainerID container_id = 4;</code>
+         *
+         * <pre>
+         * Uniquely identifies the container of an executor run.
+         * </pre>
+         */
+        public Builder setContainerId(org.apache.mesos.v1.Protos.ContainerID value) {
+          if (containerIdBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            containerId_ = value;
+            onChanged();
+          } else {
+            containerIdBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000008;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.ContainerID container_id = 4;</code>
+         *
+         * <pre>
+         * Uniquely identifies the container of an executor run.
+         * </pre>
+         */
+        public Builder setContainerId(
+            org.apache.mesos.v1.Protos.ContainerID.Builder builderForValue) {
+          if (containerIdBuilder_ == null) {
+            containerId_ = builderForValue.build();
+            onChanged();
+          } else {
+            containerIdBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000008;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.ContainerID container_id = 4;</code>
+         *
+         * <pre>
+         * Uniquely identifies the container of an executor run.
+         * </pre>
+         */
+        public Builder mergeContainerId(org.apache.mesos.v1.Protos.ContainerID value) {
+          if (containerIdBuilder_ == null) {
+            if (((bitField0_ & 0x00000008) == 0x00000008) &&
+                containerId_ != org.apache.mesos.v1.Protos.ContainerID.getDefaultInstance()) {
+              containerId_ =
+                org.apache.mesos.v1.Protos.ContainerID.newBuilder(containerId_).mergeFrom(value).buildPartial();
+            } else {
+              containerId_ = value;
+            }
+            onChanged();
+          } else {
+            containerIdBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000008;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.ContainerID container_id = 4;</code>
+         *
+         * <pre>
+         * Uniquely identifies the container of an executor run.
+         * </pre>
+         */
+        public Builder clearContainerId() {
+          if (containerIdBuilder_ == null) {
+            containerId_ = org.apache.mesos.v1.Protos.ContainerID.getDefaultInstance();
+            onChanged();
+          } else {
+            containerIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000008);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.ContainerID container_id = 4;</code>
+         *
+         * <pre>
+         * Uniquely identifies the container of an executor run.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.ContainerID.Builder getContainerIdBuilder() {
+          bitField0_ |= 0x00000008;
+          onChanged();
+          return getContainerIdFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.v1.ContainerID container_id = 4;</code>
+         *
+         * <pre>
+         * Uniquely identifies the container of an executor run.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.ContainerIDOrBuilder getContainerIdOrBuilder() {
+          if (containerIdBuilder_ != null) {
+            return containerIdBuilder_.getMessageOrBuilder();
+          } else {
+            return containerId_;
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.ContainerID container_id = 4;</code>
+         *
+         * <pre>
+         * Uniquely identifies the container of an executor run.
+         * </pre>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.ContainerID, org.apache.mesos.v1.Protos.ContainerID.Builder, org.apache.mesos.v1.Protos.ContainerIDOrBuilder> 
+            getContainerIdFieldBuilder() {
+          if (containerIdBuilder_ == null) {
+            containerIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.ContainerID, org.apache.mesos.v1.Protos.ContainerID.Builder, org.apache.mesos.v1.Protos.ContainerIDOrBuilder>(
+                    containerId_,
+                    getParentForChildren(),
+                    isClean());
+            containerId_ = null;
+          }
+          return containerIdBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.executor.Event.Subscribed)
+      }
+
+      static {
+        defaultInstance = new Subscribed(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.executor.Event.Subscribed)
+    }
+
+    public interface LaunchOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required .mesos.v1.TaskInfo task = 1;
+      /**
+       * <code>required .mesos.v1.TaskInfo task = 1;</code>
+       */
+      boolean hasTask();
+      /**
+       * <code>required .mesos.v1.TaskInfo task = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.TaskInfo getTask();
+      /**
+       * <code>required .mesos.v1.TaskInfo task = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.TaskInfoOrBuilder getTaskOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.executor.Event.Launch}
+     *
+     * <pre>
+     * Received when the framework attempts to launch a task. Once
+     * the task is successfully launched, the executor must respond with
+     * a TASK_RUNNING update (See TaskState in v1/mesos.proto).
+     * </pre>
+     */
+    public static final class Launch extends
+        com.google.protobuf.GeneratedMessage
+        implements LaunchOrBuilder {
+      // Use Launch.newBuilder() to construct.
+      private Launch(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Launch(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Launch defaultInstance;
+      public static Launch getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Launch getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Launch(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.v1.Protos.TaskInfo.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = task_.toBuilder();
+                }
+                task_ = input.readMessage(org.apache.mesos.v1.Protos.TaskInfo.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(task_);
+                  task_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Event_Launch_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Event_Launch_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.executor.Protos.Event.Launch.class, org.apache.mesos.v1.executor.Protos.Event.Launch.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Launch> PARSER =
+          new com.google.protobuf.AbstractParser<Launch>() {
+        public Launch parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Launch(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Launch> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required .mesos.v1.TaskInfo task = 1;
+      public static final int TASK_FIELD_NUMBER = 1;
+      private org.apache.mesos.v1.Protos.TaskInfo task_;
+      /**
+       * <code>required .mesos.v1.TaskInfo task = 1;</code>
+       */
+      public boolean hasTask() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.v1.TaskInfo task = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.TaskInfo getTask() {
+        return task_;
+      }
+      /**
+       * <code>required .mesos.v1.TaskInfo task = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.TaskInfoOrBuilder getTaskOrBuilder() {
+        return task_;
+      }
+
+      private void initFields() {
+        task_ = org.apache.mesos.v1.Protos.TaskInfo.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasTask()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getTask().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, task_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, task_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.executor.Protos.Event.Launch parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Launch parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Launch parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Launch parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Launch parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Launch parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Launch parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Launch parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Launch parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Launch parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.executor.Protos.Event.Launch prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.executor.Event.Launch}
+       *
+       * <pre>
+       * Received when the framework attempts to launch a task. Once
+       * the task is successfully launched, the executor must respond with
+       * a TASK_RUNNING update (See TaskState in v1/mesos.proto).
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.executor.Protos.Event.LaunchOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Event_Launch_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Event_Launch_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.executor.Protos.Event.Launch.class, org.apache.mesos.v1.executor.Protos.Event.Launch.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.executor.Protos.Event.Launch.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getTaskFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (taskBuilder_ == null) {
+            task_ = org.apache.mesos.v1.Protos.TaskInfo.getDefaultInstance();
+          } else {
+            taskBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Event_Launch_descriptor;
+        }
+
+        public org.apache.mesos.v1.executor.Protos.Event.Launch getDefaultInstanceForType() {
+          return org.apache.mesos.v1.executor.Protos.Event.Launch.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.executor.Protos.Event.Launch build() {
+          org.apache.mesos.v1.executor.Protos.Event.Launch result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.executor.Protos.Event.Launch buildPartial() {
+          org.apache.mesos.v1.executor.Protos.Event.Launch result = new org.apache.mesos.v1.executor.Protos.Event.Launch(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (taskBuilder_ == null) {
+            result.task_ = task_;
+          } else {
+            result.task_ = taskBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.executor.Protos.Event.Launch) {
+            return mergeFrom((org.apache.mesos.v1.executor.Protos.Event.Launch)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.executor.Protos.Event.Launch other) {
+          if (other == org.apache.mesos.v1.executor.Protos.Event.Launch.getDefaultInstance()) return this;
+          if (other.hasTask()) {
+            mergeTask(other.getTask());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasTask()) {
+            
+            return false;
+          }
+          if (!getTask().isInitialized()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.executor.Protos.Event.Launch parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.executor.Protos.Event.Launch) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required .mesos.v1.TaskInfo task = 1;
+        private org.apache.mesos.v1.Protos.TaskInfo task_ = org.apache.mesos.v1.Protos.TaskInfo.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.TaskInfo, org.apache.mesos.v1.Protos.TaskInfo.Builder, org.apache.mesos.v1.Protos.TaskInfoOrBuilder> taskBuilder_;
+        /**
+         * <code>required .mesos.v1.TaskInfo task = 1;</code>
+         */
+        public boolean hasTask() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.v1.TaskInfo task = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.TaskInfo getTask() {
+          if (taskBuilder_ == null) {
+            return task_;
+          } else {
+            return taskBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.v1.TaskInfo task = 1;</code>
+         */
+        public Builder setTask(org.apache.mesos.v1.Protos.TaskInfo value) {
+          if (taskBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            task_ = value;
+            onChanged();
+          } else {
+            taskBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.TaskInfo task = 1;</code>
+         */
+        public Builder setTask(
+            org.apache.mesos.v1.Protos.TaskInfo.Builder builderForValue) {
+          if (taskBuilder_ == null) {
+            task_ = builderForValue.build();
+            onChanged();
+          } else {
+            taskBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.TaskInfo task = 1;</code>
+         */
+        public Builder mergeTask(org.apache.mesos.v1.Protos.TaskInfo value) {
+          if (taskBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                task_ != org.apache.mesos.v1.Protos.TaskInfo.getDefaultInstance()) {
+              task_ =
+                org.apache.mesos.v1.Protos.TaskInfo.newBuilder(task_).mergeFrom(value).buildPartial();
+            } else {
+              task_ = value;
+            }
+            onChanged();
+          } else {
+            taskBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.TaskInfo task = 1;</code>
+         */
+        public Builder clearTask() {
+          if (taskBuilder_ == null) {
+            task_ = org.apache.mesos.v1.Protos.TaskInfo.getDefaultInstance();
+            onChanged();
+          } else {
+            taskBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.TaskInfo task = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.TaskInfo.Builder getTaskBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getTaskFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.v1.TaskInfo task = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.TaskInfoOrBuilder getTaskOrBuilder() {
+          if (taskBuilder_ != null) {
+            return taskBuilder_.getMessageOrBuilder();
+          } else {
+            return task_;
+          }
+        }
+        /**
+         * <code>required .mesos.v1.TaskInfo task = 1;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.TaskInfo, org.apache.mesos.v1.Protos.TaskInfo.Builder, org.apache.mesos.v1.Protos.TaskInfoOrBuilder> 
+            getTaskFieldBuilder() {
+          if (taskBuilder_ == null) {
+            taskBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.TaskInfo, org.apache.mesos.v1.Protos.TaskInfo.Builder, org.apache.mesos.v1.Protos.TaskInfoOrBuilder>(
+                    task_,
+                    getParentForChildren(),
+                    isClean());
+            task_ = null;
+          }
+          return taskBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.executor.Event.Launch)
+      }
+
+      static {
+        defaultInstance = new Launch(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.executor.Event.Launch)
+    }
+
+    public interface LaunchGroupOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required .mesos.v1.TaskGroupInfo task_group = 1;
+      /**
+       * <code>required .mesos.v1.TaskGroupInfo task_group = 1;</code>
+       */
+      boolean hasTaskGroup();
+      /**
+       * <code>required .mesos.v1.TaskGroupInfo task_group = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.TaskGroupInfo getTaskGroup();
+      /**
+       * <code>required .mesos.v1.TaskGroupInfo task_group = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.TaskGroupInfoOrBuilder getTaskGroupOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.executor.Event.LaunchGroup}
+     *
+     * <pre>
+     * Received when the framework attempts to launch a group of tasks atomically.
+     * Similar to `Launch` above the executor must send TASK_RUNNING updates for
+     * tasks that are successfully launched.
+     * </pre>
+     */
+    public static final class LaunchGroup extends
+        com.google.protobuf.GeneratedMessage
+        implements LaunchGroupOrBuilder {
+      // Use LaunchGroup.newBuilder() to construct.
+      private LaunchGroup(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private LaunchGroup(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final LaunchGroup defaultInstance;
+      public static LaunchGroup getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public LaunchGroup getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private LaunchGroup(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.v1.Protos.TaskGroupInfo.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = taskGroup_.toBuilder();
+                }
+                taskGroup_ = input.readMessage(org.apache.mesos.v1.Protos.TaskGroupInfo.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(taskGroup_);
+                  taskGroup_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Event_LaunchGroup_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Event_LaunchGroup_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.executor.Protos.Event.LaunchGroup.class, org.apache.mesos.v1.executor.Protos.Event.LaunchGroup.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<LaunchGroup> PARSER =
+          new com.google.protobuf.AbstractParser<LaunchGroup>() {
+        public LaunchGroup parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new LaunchGroup(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<LaunchGroup> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required .mesos.v1.TaskGroupInfo task_group = 1;
+      public static final int TASK_GROUP_FIELD_NUMBER = 1;
+      private org.apache.mesos.v1.Protos.TaskGroupInfo taskGroup_;
+      /**
+       * <code>required .mesos.v1.TaskGroupInfo task_group = 1;</code>
+       */
+      public boolean hasTaskGroup() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.v1.TaskGroupInfo task_group = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.TaskGroupInfo getTaskGroup() {
+        return taskGroup_;
+      }
+      /**
+       * <code>required .mesos.v1.TaskGroupInfo task_group = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.TaskGroupInfoOrBuilder getTaskGroupOrBuilder() {
+        return taskGroup_;
+      }
+
+      private void initFields() {
+        taskGroup_ = org.apache.mesos.v1.Protos.TaskGroupInfo.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasTaskGroup()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getTaskGroup().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, taskGroup_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, taskGroup_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.executor.Protos.Event.LaunchGroup parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.LaunchGroup parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.LaunchGroup parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.LaunchGroup parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.LaunchGroup parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.LaunchGroup parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.LaunchGroup parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.LaunchGroup parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.LaunchGroup parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.LaunchGroup parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.executor.Protos.Event.LaunchGroup prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.executor.Event.LaunchGroup}
+       *
+       * <pre>
+       * Received when the framework attempts to launch a group of tasks atomically.
+       * Similar to `Launch` above the executor must send TASK_RUNNING updates for
+       * tasks that are successfully launched.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.executor.Protos.Event.LaunchGroupOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Event_LaunchGroup_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Event_LaunchGroup_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.executor.Protos.Event.LaunchGroup.class, org.apache.mesos.v1.executor.Protos.Event.LaunchGroup.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.executor.Protos.Event.LaunchGroup.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getTaskGroupFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (taskGroupBuilder_ == null) {
+            taskGroup_ = org.apache.mesos.v1.Protos.TaskGroupInfo.getDefaultInstance();
+          } else {
+            taskGroupBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Event_LaunchGroup_descriptor;
+        }
+
+        public org.apache.mesos.v1.executor.Protos.Event.LaunchGroup getDefaultInstanceForType() {
+          return org.apache.mesos.v1.executor.Protos.Event.LaunchGroup.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.executor.Protos.Event.LaunchGroup build() {
+          org.apache.mesos.v1.executor.Protos.Event.LaunchGroup result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.executor.Protos.Event.LaunchGroup buildPartial() {
+          org.apache.mesos.v1.executor.Protos.Event.LaunchGroup result = new org.apache.mesos.v1.executor.Protos.Event.LaunchGroup(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (taskGroupBuilder_ == null) {
+            result.taskGroup_ = taskGroup_;
+          } else {
+            result.taskGroup_ = taskGroupBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.executor.Protos.Event.LaunchGroup) {
+            return mergeFrom((org.apache.mesos.v1.executor.Protos.Event.LaunchGroup)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.executor.Protos.Event.LaunchGroup other) {
+          if (other == org.apache.mesos.v1.executor.Protos.Event.LaunchGroup.getDefaultInstance()) return this;
+          if (other.hasTaskGroup()) {
+            mergeTaskGroup(other.getTaskGroup());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasTaskGroup()) {
+            
+            return false;
+          }
+          if (!getTaskGroup().isInitialized()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.executor.Protos.Event.LaunchGroup parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.executor.Protos.Event.LaunchGroup) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required .mesos.v1.TaskGroupInfo task_group = 1;
+        private org.apache.mesos.v1.Protos.TaskGroupInfo taskGroup_ = org.apache.mesos.v1.Protos.TaskGroupInfo.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.TaskGroupInfo, org.apache.mesos.v1.Protos.TaskGroupInfo.Builder, org.apache.mesos.v1.Protos.TaskGroupInfoOrBuilder> taskGroupBuilder_;
+        /**
+         * <code>required .mesos.v1.TaskGroupInfo task_group = 1;</code>
+         */
+        public boolean hasTaskGroup() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.v1.TaskGroupInfo task_group = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.TaskGroupInfo getTaskGroup() {
+          if (taskGroupBuilder_ == null) {
+            return taskGroup_;
+          } else {
+            return taskGroupBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.v1.TaskGroupInfo task_group = 1;</code>
+         */
+        public Builder setTaskGroup(org.apache.mesos.v1.Protos.TaskGroupInfo value) {
+          if (taskGroupBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            taskGroup_ = value;
+            onChanged();
+          } else {
+            taskGroupBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.TaskGroupInfo task_group = 1;</code>
+         */
+        public Builder setTaskGroup(
+            org.apache.mesos.v1.Protos.TaskGroupInfo.Builder builderForValue) {
+          if (taskGroupBuilder_ == null) {
+            taskGroup_ = builderForValue.build();
+            onChanged();
+          } else {
+            taskGroupBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.TaskGroupInfo task_group = 1;</code>
+         */
+        public Builder mergeTaskGroup(org.apache.mesos.v1.Protos.TaskGroupInfo value) {
+          if (taskGroupBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                taskGroup_ != org.apache.mesos.v1.Protos.TaskGroupInfo.getDefaultInstance()) {
+              taskGroup_ =
+                org.apache.mesos.v1.Protos.TaskGroupInfo.newBuilder(taskGroup_).mergeFrom(value).buildPartial();
+            } else {
+              taskGroup_ = value;
+            }
+            onChanged();
+          } else {
+            taskGroupBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.TaskGroupInfo task_group = 1;</code>
+         */
+        public Builder clearTaskGroup() {
+          if (taskGroupBuilder_ == null) {
+            taskGroup_ = org.apache.mesos.v1.Protos.TaskGroupInfo.getDefaultInstance();
+            onChanged();
+          } else {
+            taskGroupBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.TaskGroupInfo task_group = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.TaskGroupInfo.Builder getTaskGroupBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getTaskGroupFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.v1.TaskGroupInfo task_group = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.TaskGroupInfoOrBuilder getTaskGroupOrBuilder() {
+          if (taskGroupBuilder_ != null) {
+            return taskGroupBuilder_.getMessageOrBuilder();
+          } else {
+            return taskGroup_;
+          }
+        }
+        /**
+         * <code>required .mesos.v1.TaskGroupInfo task_group = 1;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.TaskGroupInfo, org.apache.mesos.v1.Protos.TaskGroupInfo.Builder, org.apache.mesos.v1.Protos.TaskGroupInfoOrBuilder> 
+            getTaskGroupFieldBuilder() {
+          if (taskGroupBuilder_ == null) {
+            taskGroupBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.TaskGroupInfo, org.apache.mesos.v1.Protos.TaskGroupInfo.Builder, org.apache.mesos.v1.Protos.TaskGroupInfoOrBuilder>(
+                    taskGroup_,
+                    getParentForChildren(),
+                    isClean());
+            taskGroup_ = null;
+          }
+          return taskGroupBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.executor.Event.LaunchGroup)
+      }
+
+      static {
+        defaultInstance = new LaunchGroup(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.executor.Event.LaunchGroup)
+    }
+
+    public interface KillOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required .mesos.v1.TaskID task_id = 1;
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 1;</code>
+       */
+      boolean hasTaskId();
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.TaskID getTaskId();
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.TaskIDOrBuilder getTaskIdOrBuilder();
+
+      // optional .mesos.v1.KillPolicy kill_policy = 2;
+      /**
+       * <code>optional .mesos.v1.KillPolicy kill_policy = 2;</code>
+       *
+       * <pre>
+       * If set, overrides any previously specified kill policy for this task.
+       * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+       * Can be used to forcefully kill a task which is already being killed.
+       * </pre>
+       */
+      boolean hasKillPolicy();
+      /**
+       * <code>optional .mesos.v1.KillPolicy kill_policy = 2;</code>
+       *
+       * <pre>
+       * If set, overrides any previously specified kill policy for this task.
+       * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+       * Can be used to forcefully kill a task which is already being killed.
+       * </pre>
+       */
+      org.apache.mesos.v1.Protos.KillPolicy getKillPolicy();
+      /**
+       * <code>optional .mesos.v1.KillPolicy kill_policy = 2;</code>
+       *
+       * <pre>
+       * If set, overrides any previously specified kill policy for this task.
+       * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+       * Can be used to forcefully kill a task which is already being killed.
+       * </pre>
+       */
+      org.apache.mesos.v1.Protos.KillPolicyOrBuilder getKillPolicyOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.executor.Event.Kill}
+     *
+     * <pre>
+     * Received when the scheduler wants to kill a specific task. Once
+     * the task is terminated, the executor should send a TASK_KILLED
+     * (or TASK_FAILED) update. The terminal update is necessary so
+     * Mesos can release the resources associated with the task.
+     * </pre>
+     */
+    public static final class Kill extends
+        com.google.protobuf.GeneratedMessage
+        implements KillOrBuilder {
+      // Use Kill.newBuilder() to construct.
+      private Kill(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Kill(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Kill defaultInstance;
+      public static Kill getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Kill getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Kill(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.v1.Protos.TaskID.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = taskId_.toBuilder();
+                }
+                taskId_ = input.readMessage(org.apache.mesos.v1.Protos.TaskID.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(taskId_);
+                  taskId_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+              case 18: {
+                org.apache.mesos.v1.Protos.KillPolicy.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                  subBuilder = killPolicy_.toBuilder();
+                }
+                killPolicy_ = input.readMessage(org.apache.mesos.v1.Protos.KillPolicy.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(killPolicy_);
+                  killPolicy_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000002;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Event_Kill_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Event_Kill_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.executor.Protos.Event.Kill.class, org.apache.mesos.v1.executor.Protos.Event.Kill.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Kill> PARSER =
+          new com.google.protobuf.AbstractParser<Kill>() {
+        public Kill parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Kill(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Kill> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required .mesos.v1.TaskID task_id = 1;
+      public static final int TASK_ID_FIELD_NUMBER = 1;
+      private org.apache.mesos.v1.Protos.TaskID taskId_;
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 1;</code>
+       */
+      public boolean hasTaskId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.TaskID getTaskId() {
+        return taskId_;
+      }
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.TaskIDOrBuilder getTaskIdOrBuilder() {
+        return taskId_;
+      }
+
+      // optional .mesos.v1.KillPolicy kill_policy = 2;
+      public static final int KILL_POLICY_FIELD_NUMBER = 2;
+      private org.apache.mesos.v1.Protos.KillPolicy killPolicy_;
+      /**
+       * <code>optional .mesos.v1.KillPolicy kill_policy = 2;</code>
+       *
+       * <pre>
+       * If set, overrides any previously specified kill policy for this task.
+       * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+       * Can be used to forcefully kill a task which is already being killed.
+       * </pre>
+       */
+      public boolean hasKillPolicy() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.v1.KillPolicy kill_policy = 2;</code>
+       *
+       * <pre>
+       * If set, overrides any previously specified kill policy for this task.
+       * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+       * Can be used to forcefully kill a task which is already being killed.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.KillPolicy getKillPolicy() {
+        return killPolicy_;
+      }
+      /**
+       * <code>optional .mesos.v1.KillPolicy kill_policy = 2;</code>
+       *
+       * <pre>
+       * If set, overrides any previously specified kill policy for this task.
+       * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+       * Can be used to forcefully kill a task which is already being killed.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.KillPolicyOrBuilder getKillPolicyOrBuilder() {
+        return killPolicy_;
+      }
+
+      private void initFields() {
+        taskId_ = org.apache.mesos.v1.Protos.TaskID.getDefaultInstance();
+        killPolicy_ = org.apache.mesos.v1.Protos.KillPolicy.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasTaskId()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getTaskId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (hasKillPolicy()) {
+          if (!getKillPolicy().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, taskId_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeMessage(2, killPolicy_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, taskId_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(2, killPolicy_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.executor.Protos.Event.Kill parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Kill parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Kill parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Kill parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Kill parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Kill parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Kill parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Kill parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Kill parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Kill parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.executor.Protos.Event.Kill prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.executor.Event.Kill}
+       *
+       * <pre>
+       * Received when the scheduler wants to kill a specific task. Once
+       * the task is terminated, the executor should send a TASK_KILLED
+       * (or TASK_FAILED) update. The terminal update is necessary so
+       * Mesos can release the resources associated with the task.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.executor.Protos.Event.KillOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Event_Kill_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Event_Kill_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.executor.Protos.Event.Kill.class, org.apache.mesos.v1.executor.Protos.Event.Kill.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.executor.Protos.Event.Kill.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getTaskIdFieldBuilder();
+            getKillPolicyFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (taskIdBuilder_ == null) {
+            taskId_ = org.apache.mesos.v1.Protos.TaskID.getDefaultInstance();
+          } else {
+            taskIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          if (killPolicyBuilder_ == null) {
+            killPolicy_ = org.apache.mesos.v1.Protos.KillPolicy.getDefaultInstance();
+          } else {
+            killPolicyBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Event_Kill_descriptor;
+        }
+
+        public org.apache.mesos.v1.executor.Protos.Event.Kill getDefaultInstanceForType() {
+          return org.apache.mesos.v1.executor.Protos.Event.Kill.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.executor.Protos.Event.Kill build() {
+          org.apache.mesos.v1.executor.Protos.Event.Kill result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.executor.Protos.Event.Kill buildPartial() {
+          org.apache.mesos.v1.executor.Protos.Event.Kill result = new org.apache.mesos.v1.executor.Protos.Event.Kill(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (taskIdBuilder_ == null) {
+            result.taskId_ = taskId_;
+          } else {
+            result.taskId_ = taskIdBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          if (killPolicyBuilder_ == null) {
+            result.killPolicy_ = killPolicy_;
+          } else {
+            result.killPolicy_ = killPolicyBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.executor.Protos.Event.Kill) {
+            return mergeFrom((org.apache.mesos.v1.executor.Protos.Event.Kill)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.executor.Protos.Event.Kill other) {
+          if (other == org.apache.mesos.v1.executor.Protos.Event.Kill.getDefaultInstance()) return this;
+          if (other.hasTaskId()) {
+            mergeTaskId(other.getTaskId());
+          }
+          if (other.hasKillPolicy()) {
+            mergeKillPolicy(other.getKillPolicy());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasTaskId()) {
+            
+            return false;
+          }
+          if (!getTaskId().isInitialized()) {
+            
+            return false;
+          }
+          if (hasKillPolicy()) {
+            if (!getKillPolicy().isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.executor.Protos.Event.Kill parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.executor.Protos.Event.Kill) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required .mesos.v1.TaskID task_id = 1;
+        private org.apache.mesos.v1.Protos.TaskID taskId_ = org.apache.mesos.v1.Protos.TaskID.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.TaskID, org.apache.mesos.v1.Protos.TaskID.Builder, org.apache.mesos.v1.Protos.TaskIDOrBuilder> taskIdBuilder_;
+        /**
+         * <code>required .mesos.v1.TaskID task_id = 1;</code>
+         */
+        public boolean hasTaskId() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.v1.TaskID task_id = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.TaskID getTaskId() {
+          if (taskIdBuilder_ == null) {
+            return taskId_;
+          } else {
+            return taskIdBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.v1.TaskID task_id = 1;</code>
+         */
+        public Builder setTaskId(org.apache.mesos.v1.Protos.TaskID value) {
+          if (taskIdBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            taskId_ = value;
+            onChanged();
+          } else {
+            taskIdBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.TaskID task_id = 1;</code>
+         */
+        public Builder setTaskId(
+            org.apache.mesos.v1.Protos.TaskID.Builder builderForValue) {
+          if (taskIdBuilder_ == null) {
+            taskId_ = builderForValue.build();
+            onChanged();
+          } else {
+            taskIdBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.TaskID task_id = 1;</code>
+         */
+        public Builder mergeTaskId(org.apache.mesos.v1.Protos.TaskID value) {
+          if (taskIdBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                taskId_ != org.apache.mesos.v1.Protos.TaskID.getDefaultInstance()) {
+              taskId_ =
+                org.apache.mesos.v1.Protos.TaskID.newBuilder(taskId_).mergeFrom(value).buildPartial();
+            } else {
+              taskId_ = value;
+            }
+            onChanged();
+          } else {
+            taskIdBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.TaskID task_id = 1;</code>
+         */
+        public Builder clearTaskId() {
+          if (taskIdBuilder_ == null) {
+            taskId_ = org.apache.mesos.v1.Protos.TaskID.getDefaultInstance();
+            onChanged();
+          } else {
+            taskIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.TaskID task_id = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.TaskID.Builder getTaskIdBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getTaskIdFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.v1.TaskID task_id = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.TaskIDOrBuilder getTaskIdOrBuilder() {
+          if (taskIdBuilder_ != null) {
+            return taskIdBuilder_.getMessageOrBuilder();
+          } else {
+            return taskId_;
+          }
+        }
+        /**
+         * <code>required .mesos.v1.TaskID task_id = 1;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.TaskID, org.apache.mesos.v1.Protos.TaskID.Builder, org.apache.mesos.v1.Protos.TaskIDOrBuilder> 
+            getTaskIdFieldBuilder() {
+          if (taskIdBuilder_ == null) {
+            taskIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.TaskID, org.apache.mesos.v1.Protos.TaskID.Builder, org.apache.mesos.v1.Protos.TaskIDOrBuilder>(
+                    taskId_,
+                    getParentForChildren(),
+                    isClean());
+            taskId_ = null;
+          }
+          return taskIdBuilder_;
+        }
+
+        // optional .mesos.v1.KillPolicy kill_policy = 2;
+        private org.apache.mesos.v1.Protos.KillPolicy killPolicy_ = org.apache.mesos.v1.Protos.KillPolicy.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.KillPolicy, org.apache.mesos.v1.Protos.KillPolicy.Builder, org.apache.mesos.v1.Protos.KillPolicyOrBuilder> killPolicyBuilder_;
+        /**
+         * <code>optional .mesos.v1.KillPolicy kill_policy = 2;</code>
+         *
+         * <pre>
+         * If set, overrides any previously specified kill policy for this task.
+         * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+         * Can be used to forcefully kill a task which is already being killed.
+         * </pre>
+         */
+        public boolean hasKillPolicy() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional .mesos.v1.KillPolicy kill_policy = 2;</code>
+         *
+         * <pre>
+         * If set, overrides any previously specified kill policy for this task.
+         * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+         * Can be used to forcefully kill a task which is already being killed.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.KillPolicy getKillPolicy() {
+          if (killPolicyBuilder_ == null) {
+            return killPolicy_;
+          } else {
+            return killPolicyBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.KillPolicy kill_policy = 2;</code>
+         *
+         * <pre>
+         * If set, overrides any previously specified kill policy for this task.
+         * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+         * Can be used to forcefully kill a task which is already being killed.
+         * </pre>
+         */
+        public Builder setKillPolicy(org.apache.mesos.v1.Protos.KillPolicy value) {
+          if (killPolicyBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            killPolicy_ = value;
+            onChanged();
+          } else {
+            killPolicyBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.KillPolicy kill_policy = 2;</code>
+         *
+         * <pre>
+         * If set, overrides any previously specified kill policy for this task.
+         * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+         * Can be used to forcefully kill a task which is already being killed.
+         * </pre>
+         */
+        public Builder setKillPolicy(
+            org.apache.mesos.v1.Protos.KillPolicy.Builder builderForValue) {
+          if (killPolicyBuilder_ == null) {
+            killPolicy_ = builderForValue.build();
+            onChanged();
+          } else {
+            killPolicyBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.KillPolicy kill_policy = 2;</code>
+         *
+         * <pre>
+         * If set, overrides any previously specified kill policy for this task.
+         * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+         * Can be used to forcefully kill a task which is already being killed.
+         * </pre>
+         */
+        public Builder mergeKillPolicy(org.apache.mesos.v1.Protos.KillPolicy value) {
+          if (killPolicyBuilder_ == null) {
+            if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                killPolicy_ != org.apache.mesos.v1.Protos.KillPolicy.getDefaultInstance()) {
+              killPolicy_ =
+                org.apache.mesos.v1.Protos.KillPolicy.newBuilder(killPolicy_).mergeFrom(value).buildPartial();
+            } else {
+              killPolicy_ = value;
+            }
+            onChanged();
+          } else {
+            killPolicyBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.KillPolicy kill_policy = 2;</code>
+         *
+         * <pre>
+         * If set, overrides any previously specified kill policy for this task.
+         * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+         * Can be used to forcefully kill a task which is already being killed.
+         * </pre>
+         */
+        public Builder clearKillPolicy() {
+          if (killPolicyBuilder_ == null) {
+            killPolicy_ = org.apache.mesos.v1.Protos.KillPolicy.getDefaultInstance();
+            onChanged();
+          } else {
+            killPolicyBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.KillPolicy kill_policy = 2;</code>
+         *
+         * <pre>
+         * If set, overrides any previously specified kill policy for this task.
+         * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+         * Can be used to forcefully kill a task which is already being killed.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.KillPolicy.Builder getKillPolicyBuilder() {
+          bitField0_ |= 0x00000002;
+          onChanged();
+          return getKillPolicyFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.v1.KillPolicy kill_policy = 2;</code>
+         *
+         * <pre>
+         * If set, overrides any previously specified kill policy for this task.
+         * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+         * Can be used to forcefully kill a task which is already being killed.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.KillPolicyOrBuilder getKillPolicyOrBuilder() {
+          if (killPolicyBuilder_ != null) {
+            return killPolicyBuilder_.getMessageOrBuilder();
+          } else {
+            return killPolicy_;
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.KillPolicy kill_policy = 2;</code>
+         *
+         * <pre>
+         * If set, overrides any previously specified kill policy for this task.
+         * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+         * Can be used to forcefully kill a task which is already being killed.
+         * </pre>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.KillPolicy, org.apache.mesos.v1.Protos.KillPolicy.Builder, org.apache.mesos.v1.Protos.KillPolicyOrBuilder> 
+            getKillPolicyFieldBuilder() {
+          if (killPolicyBuilder_ == null) {
+            killPolicyBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.KillPolicy, org.apache.mesos.v1.Protos.KillPolicy.Builder, org.apache.mesos.v1.Protos.KillPolicyOrBuilder>(
+                    killPolicy_,
+                    getParentForChildren(),
+                    isClean());
+            killPolicy_ = null;
+          }
+          return killPolicyBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.executor.Event.Kill)
+      }
+
+      static {
+        defaultInstance = new Kill(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.executor.Event.Kill)
+    }
+
+    public interface AcknowledgedOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required .mesos.v1.TaskID task_id = 1;
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 1;</code>
+       */
+      boolean hasTaskId();
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.TaskID getTaskId();
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.TaskIDOrBuilder getTaskIdOrBuilder();
+
+      // required bytes uuid = 2;
+      /**
+       * <code>required bytes uuid = 2;</code>
+       */
+      boolean hasUuid();
+      /**
+       * <code>required bytes uuid = 2;</code>
+       */
+      com.google.protobuf.ByteString getUuid();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.executor.Event.Acknowledged}
+     *
+     * <pre>
+     * Received when the agent acknowledges the receipt of status
+     * update. Schedulers are responsible for explicitly acknowledging
+     * the receipt of status updates that have 'update.status().uuid()'
+     * field set. Unacknowledged updates can be retried by the executor.
+     * They should also be sent by the executor whenever it
+     * re-subscribes.
+     * </pre>
+     */
+    public static final class Acknowledged extends
+        com.google.protobuf.GeneratedMessage
+        implements AcknowledgedOrBuilder {
+      // Use Acknowledged.newBuilder() to construct.
+      private Acknowledged(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Acknowledged(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Acknowledged defaultInstance;
+      public static Acknowledged getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Acknowledged getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Acknowledged(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.v1.Protos.TaskID.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = taskId_.toBuilder();
+                }
+                taskId_ = input.readMessage(org.apache.mesos.v1.Protos.TaskID.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(taskId_);
+                  taskId_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+              case 18: {
+                bitField0_ |= 0x00000002;
+                uuid_ = input.readBytes();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Event_Acknowledged_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Event_Acknowledged_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.executor.Protos.Event.Acknowledged.class, org.apache.mesos.v1.executor.Protos.Event.Acknowledged.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Acknowledged> PARSER =
+          new com.google.protobuf.AbstractParser<Acknowledged>() {
+        public Acknowledged parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Acknowledged(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Acknowledged> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required .mesos.v1.TaskID task_id = 1;
+      public static final int TASK_ID_FIELD_NUMBER = 1;
+      private org.apache.mesos.v1.Protos.TaskID taskId_;
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 1;</code>
+       */
+      public boolean hasTaskId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.TaskID getTaskId() {
+        return taskId_;
+      }
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.TaskIDOrBuilder getTaskIdOrBuilder() {
+        return taskId_;
+      }
+
+      // required bytes uuid = 2;
+      public static final int UUID_FIELD_NUMBER = 2;
+      private com.google.protobuf.ByteString uuid_;
+      /**
+       * <code>required bytes uuid = 2;</code>
+       */
+      public boolean hasUuid() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required bytes uuid = 2;</code>
+       */
+      public com.google.protobuf.ByteString getUuid() {
+        return uuid_;
+      }
+
+      private void initFields() {
+        taskId_ = org.apache.mesos.v1.Protos.TaskID.getDefaultInstance();
+        uuid_ = com.google.protobuf.ByteString.EMPTY;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasTaskId()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!hasUuid()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getTaskId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, taskId_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeBytes(2, uuid_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, taskId_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(2, uuid_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.executor.Protos.Event.Acknowledged parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Acknowledged parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Acknowledged parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Acknowledged parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Acknowledged parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Acknowledged parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Acknowledged parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Acknowledged parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Acknowledged parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Acknowledged parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.executor.Protos.Event.Acknowledged prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.executor.Event.Acknowledged}
+       *
+       * <pre>
+       * Received when the agent acknowledges the receipt of status
+       * update. Schedulers are responsible for explicitly acknowledging
+       * the receipt of status updates that have 'update.status().uuid()'
+       * field set. Unacknowledged updates can be retried by the executor.
+       * They should also be sent by the executor whenever it
+       * re-subscribes.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.executor.Protos.Event.AcknowledgedOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Event_Acknowledged_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Event_Acknowledged_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.executor.Protos.Event.Acknowledged.class, org.apache.mesos.v1.executor.Protos.Event.Acknowledged.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.executor.Protos.Event.Acknowledged.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getTaskIdFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (taskIdBuilder_ == null) {
+            taskId_ = org.apache.mesos.v1.Protos.TaskID.getDefaultInstance();
+          } else {
+            taskIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          uuid_ = com.google.protobuf.ByteString.EMPTY;
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Event_Acknowledged_descriptor;
+        }
+
+        public org.apache.mesos.v1.executor.Protos.Event.Acknowledged getDefaultInstanceForType() {
+          return org.apache.mesos.v1.executor.Protos.Event.Acknowledged.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.executor.Protos.Event.Acknowledged build() {
+          org.apache.mesos.v1.executor.Protos.Event.Acknowledged result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.executor.Protos.Event.Acknowledged buildPartial() {
+          org.apache.mesos.v1.executor.Protos.Event.Acknowledged result = new org.apache.mesos.v1.executor.Protos.Event.Acknowledged(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (taskIdBuilder_ == null) {
+            result.taskId_ = taskId_;
+          } else {
+            result.taskId_ = taskIdBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          result.uuid_ = uuid_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.executor.Protos.Event.Acknowledged) {
+            return mergeFrom((org.apache.mesos.v1.executor.Protos.Event.Acknowledged)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.executor.Protos.Event.Acknowledged other) {
+          if (other == org.apache.mesos.v1.executor.Protos.Event.Acknowledged.getDefaultInstance()) return this;
+          if (other.hasTaskId()) {
+            mergeTaskId(other.getTaskId());
+          }
+          if (other.hasUuid()) {
+            setUuid(other.getUuid());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasTaskId()) {
+            
+            return false;
+          }
+          if (!hasUuid()) {
+            
+            return false;
+          }
+          if (!getTaskId().isInitialized()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.executor.Protos.Event.Acknowledged parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.executor.Protos.Event.Acknowledged) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required .mesos.v1.TaskID task_id = 1;
+        private org.apache.mesos.v1.Protos.TaskID taskId_ = org.apache.mesos.v1.Protos.TaskID.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.TaskID, org.apache.mesos.v1.Protos.TaskID.Builder, org.apache.mesos.v1.Protos.TaskIDOrBuilder> taskIdBuilder_;
+        /**
+         * <code>required .mesos.v1.TaskID task_id = 1;</code>
+         */
+        public boolean hasTaskId() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.v1.TaskID task_id = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.TaskID getTaskId() {
+          if (taskIdBuilder_ == null) {
+            return taskId_;
+          } else {
+            return taskIdBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.v1.TaskID task_id = 1;</code>
+         */
+        public Builder setTaskId(org.apache.mesos.v1.Protos.TaskID value) {
+          if (taskIdBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            taskId_ = value;
+            onChanged();
+          } else {
+            taskIdBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.TaskID task_id = 1;</code>
+         */
+        public Builder setTaskId(
+            org.apache.mesos.v1.Protos.TaskID.Builder builderForValue) {
+          if (taskIdBuilder_ == null) {
+            taskId_ = builderForValue.build();
+            onChanged();
+          } else {
+            taskIdBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.TaskID task_id = 1;</code>
+         */
+        public Builder mergeTaskId(org.apache.mesos.v1.Protos.TaskID value) {
+          if (taskIdBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                taskId_ != org.apache.mesos.v1.Protos.TaskID.getDefaultInstance()) {
+              taskId_ =
+                org.apache.mesos.v1.Protos.TaskID.newBuilder(taskId_).mergeFrom(value).buildPartial();
+            } else {
+              taskId_ = value;
+            }
+            onChanged();
+          } else {
+            taskIdBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.TaskID task_id = 1;</code>
+         */
+        public Builder clearTaskId() {
+          if (taskIdBuilder_ == null) {
+            taskId_ = org.apache.mesos.v1.Protos.TaskID.getDefaultInstance();
+            onChanged();
+          } else {
+            taskIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.TaskID task_id = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.TaskID.Builder getTaskIdBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getTaskIdFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.v1.TaskID task_id = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.TaskIDOrBuilder getTaskIdOrBuilder() {
+          if (taskIdBuilder_ != null) {
+            return taskIdBuilder_.getMessageOrBuilder();
+          } else {
+            return taskId_;
+          }
+        }
+        /**
+         * <code>required .mesos.v1.TaskID task_id = 1;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.TaskID, org.apache.mesos.v1.Protos.TaskID.Builder, org.apache.mesos.v1.Protos.TaskIDOrBuilder> 
+            getTaskIdFieldBuilder() {
+          if (taskIdBuilder_ == null) {
+            taskIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.TaskID, org.apache.mesos.v1.Protos.TaskID.Builder, org.apache.mesos.v1.Protos.TaskIDOrBuilder>(
+                    taskId_,
+                    getParentForChildren(),
+                    isClean());
+            taskId_ = null;
+          }
+          return taskIdBuilder_;
+        }
+
+        // required bytes uuid = 2;
+        private com.google.protobuf.ByteString uuid_ = com.google.protobuf.ByteString.EMPTY;
+        /**
+         * <code>required bytes uuid = 2;</code>
+         */
+        public boolean hasUuid() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>required bytes uuid = 2;</code>
+         */
+        public com.google.protobuf.ByteString getUuid() {
+          return uuid_;
+        }
+        /**
+         * <code>required bytes uuid = 2;</code>
+         */
+        public Builder setUuid(com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+          uuid_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required bytes uuid = 2;</code>
+         */
+        public Builder clearUuid() {
+          bitField0_ = (bitField0_ & ~0x00000002);
+          uuid_ = getDefaultInstance().getUuid();
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.executor.Event.Acknowledged)
+      }
+
+      static {
+        defaultInstance = new Acknowledged(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.executor.Event.Acknowledged)
+    }
+
+    public interface MessageOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required bytes data = 1;
+      /**
+       * <code>required bytes data = 1;</code>
+       */
+      boolean hasData();
+      /**
+       * <code>required bytes data = 1;</code>
+       */
+      com.google.protobuf.ByteString getData();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.executor.Event.Message}
+     *
+     * <pre>
+     * Received when a custom message generated by the scheduler is
+     * forwarded by the agent. Note that this message is not
+     * interpreted by Mesos and is only forwarded (without reliability
+     * guarantees) to the executor. It is up to the scheduler to retry
+     * if the message is dropped for any reason.
+     * </pre>
+     */
+    public static final class Message extends
+        com.google.protobuf.GeneratedMessage
+        implements MessageOrBuilder {
+      // Use Message.newBuilder() to construct.
+      private Message(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Message(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Message defaultInstance;
+      public static Message getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Message getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Message(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                bitField0_ |= 0x00000001;
+                data_ = input.readBytes();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Event_Message_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Event_Message_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.executor.Protos.Event.Message.class, org.apache.mesos.v1.executor.Protos.Event.Message.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Message> PARSER =
+          new com.google.protobuf.AbstractParser<Message>() {
+        public Message parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Message(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Message> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required bytes data = 1;
+      public static final int DATA_FIELD_NUMBER = 1;
+      private com.google.protobuf.ByteString data_;
+      /**
+       * <code>required bytes data = 1;</code>
+       */
+      public boolean hasData() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required bytes data = 1;</code>
+       */
+      public com.google.protobuf.ByteString getData() {
+        return data_;
+      }
+
+      private void initFields() {
+        data_ = com.google.protobuf.ByteString.EMPTY;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasData()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeBytes(1, data_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(1, data_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.executor.Protos.Event.Message parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Message parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Message parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Message parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Message parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Message parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Message parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Message parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Message parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Message parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.executor.Protos.Event.Message prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.executor.Event.Message}
+       *
+       * <pre>
+       * Received when a custom message generated by the scheduler is
+       * forwarded by the agent. Note that this message is not
+       * interpreted by Mesos and is only forwarded (without reliability
+       * guarantees) to the executor. It is up to the scheduler to retry
+       * if the message is dropped for any reason.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.executor.Protos.Event.MessageOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Event_Message_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Event_Message_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.executor.Protos.Event.Message.class, org.apache.mesos.v1.executor.Protos.Event.Message.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.executor.Protos.Event.Message.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          data_ = com.google.protobuf.ByteString.EMPTY;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Event_Message_descriptor;
+        }
+
+        public org.apache.mesos.v1.executor.Protos.Event.Message getDefaultInstanceForType() {
+          return org.apache.mesos.v1.executor.Protos.Event.Message.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.executor.Protos.Event.Message build() {
+          org.apache.mesos.v1.executor.Protos.Event.Message result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.executor.Protos.Event.Message buildPartial() {
+          org.apache.mesos.v1.executor.Protos.Event.Message result = new org.apache.mesos.v1.executor.Protos.Event.Message(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.data_ = data_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.executor.Protos.Event.Message) {
+            return mergeFrom((org.apache.mesos.v1.executor.Protos.Event.Message)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.executor.Protos.Event.Message other) {
+          if (other == org.apache.mesos.v1.executor.Protos.Event.Message.getDefaultInstance()) return this;
+          if (other.hasData()) {
+            setData(other.getData());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasData()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.executor.Protos.Event.Message parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.executor.Protos.Event.Message) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required bytes data = 1;
+        private com.google.protobuf.ByteString data_ = com.google.protobuf.ByteString.EMPTY;
+        /**
+         * <code>required bytes data = 1;</code>
+         */
+        public boolean hasData() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required bytes data = 1;</code>
+         */
+        public com.google.protobuf.ByteString getData() {
+          return data_;
+        }
+        /**
+         * <code>required bytes data = 1;</code>
+         */
+        public Builder setData(com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          data_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required bytes data = 1;</code>
+         */
+        public Builder clearData() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          data_ = getDefaultInstance().getData();
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.executor.Event.Message)
+      }
+
+      static {
+        defaultInstance = new Message(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.executor.Event.Message)
+    }
+
+    public interface ErrorOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required string message = 1;
+      /**
+       * <code>required string message = 1;</code>
+       */
+      boolean hasMessage();
+      /**
+       * <code>required string message = 1;</code>
+       */
+      java.lang.String getMessage();
+      /**
+       * <code>required string message = 1;</code>
+       */
+      com.google.protobuf.ByteString
+          getMessageBytes();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.executor.Event.Error}
+     *
+     * <pre>
+     * Received in case the executor sends invalid calls (e.g.,
+     * required values not set).
+     * TODO(arojas): Remove this once the old executor driver is no
+     * longer supported. With HTTP API all errors will be signaled via
+     * HTTP response codes.
+     * </pre>
+     */
+    public static final class Error extends
+        com.google.protobuf.GeneratedMessage
+        implements ErrorOrBuilder {
+      // Use Error.newBuilder() to construct.
+      private Error(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Error(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Error defaultInstance;
+      public static Error getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Error getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Error(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                bitField0_ |= 0x00000001;
+                message_ = input.readBytes();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Event_Error_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Event_Error_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.executor.Protos.Event.Error.class, org.apache.mesos.v1.executor.Protos.Event.Error.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Error> PARSER =
+          new com.google.protobuf.AbstractParser<Error>() {
+        public Error parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Error(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Error> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required string message = 1;
+      public static final int MESSAGE_FIELD_NUMBER = 1;
+      private java.lang.Object message_;
+      /**
+       * <code>required string message = 1;</code>
+       */
+      public boolean hasMessage() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string message = 1;</code>
+       */
+      public java.lang.String getMessage() {
+        java.lang.Object ref = message_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            message_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>required string message = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getMessageBytes() {
+        java.lang.Object ref = message_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          message_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      private void initFields() {
+        message_ = "";
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasMessage()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeBytes(1, getMessageBytes());
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(1, getMessageBytes());
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.executor.Protos.Event.Error parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Error parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Error parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Error parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Error parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Error parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Error parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Error parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Error parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Event.Error parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.executor.Protos.Event.Error prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.executor.Event.Error}
+       *
+       * <pre>
+       * Received in case the executor sends invalid calls (e.g.,
+       * required values not set).
+       * TODO(arojas): Remove this once the old executor driver is no
+       * longer supported. With HTTP API all errors will be signaled via
+       * HTTP response codes.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.executor.Protos.Event.ErrorOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Event_Error_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Event_Error_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.executor.Protos.Event.Error.class, org.apache.mesos.v1.executor.Protos.Event.Error.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.executor.Protos.Event.Error.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          message_ = "";
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Event_Error_descriptor;
+        }
+
+        public org.apache.mesos.v1.executor.Protos.Event.Error getDefaultInstanceForType() {
+          return org.apache.mesos.v1.executor.Protos.Event.Error.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.executor.Protos.Event.Error build() {
+          org.apache.mesos.v1.executor.Protos.Event.Error result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.executor.Protos.Event.Error buildPartial() {
+          org.apache.mesos.v1.executor.Protos.Event.Error result = new org.apache.mesos.v1.executor.Protos.Event.Error(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.message_ = message_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.executor.Protos.Event.Error) {
+            return mergeFrom((org.apache.mesos.v1.executor.Protos.Event.Error)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.executor.Protos.Event.Error other) {
+          if (other == org.apache.mesos.v1.executor.Protos.Event.Error.getDefaultInstance()) return this;
+          if (other.hasMessage()) {
+            bitField0_ |= 0x00000001;
+            message_ = other.message_;
+            onChanged();
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasMessage()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.executor.Protos.Event.Error parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.executor.Protos.Event.Error) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required string message = 1;
+        private java.lang.Object message_ = "";
+        /**
+         * <code>required string message = 1;</code>
+         */
+        public boolean hasMessage() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required string message = 1;</code>
+         */
+        public java.lang.String getMessage() {
+          java.lang.Object ref = message_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            message_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>required string message = 1;</code>
+         */
+        public com.google.protobuf.ByteString
+            getMessageBytes() {
+          java.lang.Object ref = message_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            message_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>required string message = 1;</code>
+         */
+        public Builder setMessage(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          message_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required string message = 1;</code>
+         */
+        public Builder clearMessage() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          message_ = getDefaultInstance().getMessage();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required string message = 1;</code>
+         */
+        public Builder setMessageBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          message_ = value;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.executor.Event.Error)
+      }
+
+      static {
+        defaultInstance = new Error(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.executor.Event.Error)
+    }
+
+    private int bitField0_;
+    // optional .mesos.v1.executor.Event.Type type = 1;
+    public static final int TYPE_FIELD_NUMBER = 1;
+    private org.apache.mesos.v1.executor.Protos.Event.Type type_;
+    /**
+     * <code>optional .mesos.v1.executor.Event.Type type = 1;</code>
+     *
+     * <pre>
+     * Type of the event, indicates which optional field below should be
+     * present if that type has a nested message definition.
+     * Enum fields should be optional, see: MESOS-4997.
+     * </pre>
+     */
+    public boolean hasType() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional .mesos.v1.executor.Event.Type type = 1;</code>
+     *
+     * <pre>
+     * Type of the event, indicates which optional field below should be
+     * present if that type has a nested message definition.
+     * Enum fields should be optional, see: MESOS-4997.
+     * </pre>
+     */
+    public org.apache.mesos.v1.executor.Protos.Event.Type getType() {
+      return type_;
+    }
+
+    // optional .mesos.v1.executor.Event.Subscribed subscribed = 2;
+    public static final int SUBSCRIBED_FIELD_NUMBER = 2;
+    private org.apache.mesos.v1.executor.Protos.Event.Subscribed subscribed_;
+    /**
+     * <code>optional .mesos.v1.executor.Event.Subscribed subscribed = 2;</code>
+     */
+    public boolean hasSubscribed() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional .mesos.v1.executor.Event.Subscribed subscribed = 2;</code>
+     */
+    public org.apache.mesos.v1.executor.Protos.Event.Subscribed getSubscribed() {
+      return subscribed_;
+    }
+    /**
+     * <code>optional .mesos.v1.executor.Event.Subscribed subscribed = 2;</code>
+     */
+    public org.apache.mesos.v1.executor.Protos.Event.SubscribedOrBuilder getSubscribedOrBuilder() {
+      return subscribed_;
+    }
+
+    // optional .mesos.v1.executor.Event.Acknowledged acknowledged = 3;
+    public static final int ACKNOWLEDGED_FIELD_NUMBER = 3;
+    private org.apache.mesos.v1.executor.Protos.Event.Acknowledged acknowledged_;
+    /**
+     * <code>optional .mesos.v1.executor.Event.Acknowledged acknowledged = 3;</code>
+     */
+    public boolean hasAcknowledged() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional .mesos.v1.executor.Event.Acknowledged acknowledged = 3;</code>
+     */
+    public org.apache.mesos.v1.executor.Protos.Event.Acknowledged getAcknowledged() {
+      return acknowledged_;
+    }
+    /**
+     * <code>optional .mesos.v1.executor.Event.Acknowledged acknowledged = 3;</code>
+     */
+    public org.apache.mesos.v1.executor.Protos.Event.AcknowledgedOrBuilder getAcknowledgedOrBuilder() {
+      return acknowledged_;
+    }
+
+    // optional .mesos.v1.executor.Event.Launch launch = 4;
+    public static final int LAUNCH_FIELD_NUMBER = 4;
+    private org.apache.mesos.v1.executor.Protos.Event.Launch launch_;
+    /**
+     * <code>optional .mesos.v1.executor.Event.Launch launch = 4;</code>
+     */
+    public boolean hasLaunch() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional .mesos.v1.executor.Event.Launch launch = 4;</code>
+     */
+    public org.apache.mesos.v1.executor.Protos.Event.Launch getLaunch() {
+      return launch_;
+    }
+    /**
+     * <code>optional .mesos.v1.executor.Event.Launch launch = 4;</code>
+     */
+    public org.apache.mesos.v1.executor.Protos.Event.LaunchOrBuilder getLaunchOrBuilder() {
+      return launch_;
+    }
+
+    // optional .mesos.v1.executor.Event.LaunchGroup launch_group = 8;
+    public static final int LAUNCH_GROUP_FIELD_NUMBER = 8;
+    private org.apache.mesos.v1.executor.Protos.Event.LaunchGroup launchGroup_;
+    /**
+     * <code>optional .mesos.v1.executor.Event.LaunchGroup launch_group = 8;</code>
+     */
+    public boolean hasLaunchGroup() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional .mesos.v1.executor.Event.LaunchGroup launch_group = 8;</code>
+     */
+    public org.apache.mesos.v1.executor.Protos.Event.LaunchGroup getLaunchGroup() {
+      return launchGroup_;
+    }
+    /**
+     * <code>optional .mesos.v1.executor.Event.LaunchGroup launch_group = 8;</code>
+     */
+    public org.apache.mesos.v1.executor.Protos.Event.LaunchGroupOrBuilder getLaunchGroupOrBuilder() {
+      return launchGroup_;
+    }
+
+    // optional .mesos.v1.executor.Event.Kill kill = 5;
+    public static final int KILL_FIELD_NUMBER = 5;
+    private org.apache.mesos.v1.executor.Protos.Event.Kill kill_;
+    /**
+     * <code>optional .mesos.v1.executor.Event.Kill kill = 5;</code>
+     */
+    public boolean hasKill() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional .mesos.v1.executor.Event.Kill kill = 5;</code>
+     */
+    public org.apache.mesos.v1.executor.Protos.Event.Kill getKill() {
+      return kill_;
+    }
+    /**
+     * <code>optional .mesos.v1.executor.Event.Kill kill = 5;</code>
+     */
+    public org.apache.mesos.v1.executor.Protos.Event.KillOrBuilder getKillOrBuilder() {
+      return kill_;
+    }
+
+    // optional .mesos.v1.executor.Event.Message message = 6;
+    public static final int MESSAGE_FIELD_NUMBER = 6;
+    private org.apache.mesos.v1.executor.Protos.Event.Message message_;
+    /**
+     * <code>optional .mesos.v1.executor.Event.Message message = 6;</code>
+     */
+    public boolean hasMessage() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional .mesos.v1.executor.Event.Message message = 6;</code>
+     */
+    public org.apache.mesos.v1.executor.Protos.Event.Message getMessage() {
+      return message_;
+    }
+    /**
+     * <code>optional .mesos.v1.executor.Event.Message message = 6;</code>
+     */
+    public org.apache.mesos.v1.executor.Protos.Event.MessageOrBuilder getMessageOrBuilder() {
+      return message_;
+    }
+
+    // optional .mesos.v1.executor.Event.Error error = 7;
+    public static final int ERROR_FIELD_NUMBER = 7;
+    private org.apache.mesos.v1.executor.Protos.Event.Error error_;
+    /**
+     * <code>optional .mesos.v1.executor.Event.Error error = 7;</code>
+     */
+    public boolean hasError() {
+      return ((bitField0_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional .mesos.v1.executor.Event.Error error = 7;</code>
+     */
+    public org.apache.mesos.v1.executor.Protos.Event.Error getError() {
+      return error_;
+    }
+    /**
+     * <code>optional .mesos.v1.executor.Event.Error error = 7;</code>
+     */
+    public org.apache.mesos.v1.executor.Protos.Event.ErrorOrBuilder getErrorOrBuilder() {
+      return error_;
+    }
+
+    private void initFields() {
+      type_ = org.apache.mesos.v1.executor.Protos.Event.Type.UNKNOWN;
+      subscribed_ = org.apache.mesos.v1.executor.Protos.Event.Subscribed.getDefaultInstance();
+      acknowledged_ = org.apache.mesos.v1.executor.Protos.Event.Acknowledged.getDefaultInstance();
+      launch_ = org.apache.mesos.v1.executor.Protos.Event.Launch.getDefaultInstance();
+      launchGroup_ = org.apache.mesos.v1.executor.Protos.Event.LaunchGroup.getDefaultInstance();
+      kill_ = org.apache.mesos.v1.executor.Protos.Event.Kill.getDefaultInstance();
+      message_ = org.apache.mesos.v1.executor.Protos.Event.Message.getDefaultInstance();
+      error_ = org.apache.mesos.v1.executor.Protos.Event.Error.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (hasSubscribed()) {
+        if (!getSubscribed().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasAcknowledged()) {
+        if (!getAcknowledged().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasLaunch()) {
+        if (!getLaunch().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasLaunchGroup()) {
+        if (!getLaunchGroup().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasKill()) {
+        if (!getKill().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasMessage()) {
+        if (!getMessage().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasError()) {
+        if (!getError().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeEnum(1, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(2, subscribed_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeMessage(3, acknowledged_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeMessage(4, launch_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeMessage(5, kill_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeMessage(6, message_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        output.writeMessage(7, error_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeMessage(8, launchGroup_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(1, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, subscribed_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, acknowledged_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, launch_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(5, kill_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(6, message_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(7, error_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(8, launchGroup_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.executor.Protos.Event parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.executor.Protos.Event parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.executor.Protos.Event parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.executor.Protos.Event parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.executor.Protos.Event parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.executor.Protos.Event parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.executor.Protos.Event parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.executor.Protos.Event parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.executor.Protos.Event parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.executor.Protos.Event parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.executor.Protos.Event prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.executor.Event}
+     *
+     * <pre>
+     **
+     * Executor event API.
+     *
+     * An event is described using the standard protocol buffer "union"
+     * trick, see https://developers.google.com/protocol-buffers/docs/techniques#union.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.executor.Protos.EventOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Event_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Event_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.executor.Protos.Event.class, org.apache.mesos.v1.executor.Protos.Event.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.executor.Protos.Event.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getSubscribedFieldBuilder();
+          getAcknowledgedFieldBuilder();
+          getLaunchFieldBuilder();
+          getLaunchGroupFieldBuilder();
+          getKillFieldBuilder();
+          getMessageFieldBuilder();
+          getErrorFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        type_ = org.apache.mesos.v1.executor.Protos.Event.Type.UNKNOWN;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (subscribedBuilder_ == null) {
+          subscribed_ = org.apache.mesos.v1.executor.Protos.Event.Subscribed.getDefaultInstance();
+        } else {
+          subscribedBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        if (acknowledgedBuilder_ == null) {
+          acknowledged_ = org.apache.mesos.v1.executor.Protos.Event.Acknowledged.getDefaultInstance();
+        } else {
+          acknowledgedBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        if (launchBuilder_ == null) {
+          launch_ = org.apache.mesos.v1.executor.Protos.Event.Launch.getDefaultInstance();
+        } else {
+          launchBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        if (launchGroupBuilder_ == null) {
+          launchGroup_ = org.apache.mesos.v1.executor.Protos.Event.LaunchGroup.getDefaultInstance();
+        } else {
+          launchGroupBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        if (killBuilder_ == null) {
+          kill_ = org.apache.mesos.v1.executor.Protos.Event.Kill.getDefaultInstance();
+        } else {
+          killBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
+        if (messageBuilder_ == null) {
+          message_ = org.apache.mesos.v1.executor.Protos.Event.Message.getDefaultInstance();
+        } else {
+          messageBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000040);
+        if (errorBuilder_ == null) {
+          error_ = org.apache.mesos.v1.executor.Protos.Event.Error.getDefaultInstance();
+        } else {
+          errorBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000080);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Event_descriptor;
+      }
+
+      public org.apache.mesos.v1.executor.Protos.Event getDefaultInstanceForType() {
+        return org.apache.mesos.v1.executor.Protos.Event.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.executor.Protos.Event build() {
+        org.apache.mesos.v1.executor.Protos.Event result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.executor.Protos.Event buildPartial() {
+        org.apache.mesos.v1.executor.Protos.Event result = new org.apache.mesos.v1.executor.Protos.Event(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.type_ = type_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (subscribedBuilder_ == null) {
+          result.subscribed_ = subscribed_;
+        } else {
+          result.subscribed_ = subscribedBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        if (acknowledgedBuilder_ == null) {
+          result.acknowledged_ = acknowledged_;
+        } else {
+          result.acknowledged_ = acknowledgedBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        if (launchBuilder_ == null) {
+          result.launch_ = launch_;
+        } else {
+          result.launch_ = launchBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        if (launchGroupBuilder_ == null) {
+          result.launchGroup_ = launchGroup_;
+        } else {
+          result.launchGroup_ = launchGroupBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        if (killBuilder_ == null) {
+          result.kill_ = kill_;
+        } else {
+          result.kill_ = killBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        if (messageBuilder_ == null) {
+          result.message_ = message_;
+        } else {
+          result.message_ = messageBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+          to_bitField0_ |= 0x00000080;
+        }
+        if (errorBuilder_ == null) {
+          result.error_ = error_;
+        } else {
+          result.error_ = errorBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.executor.Protos.Event) {
+          return mergeFrom((org.apache.mesos.v1.executor.Protos.Event)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.executor.Protos.Event other) {
+        if (other == org.apache.mesos.v1.executor.Protos.Event.getDefaultInstance()) return this;
+        if (other.hasType()) {
+          setType(other.getType());
+        }
+        if (other.hasSubscribed()) {
+          mergeSubscribed(other.getSubscribed());
+        }
+        if (other.hasAcknowledged()) {
+          mergeAcknowledged(other.getAcknowledged());
+        }
+        if (other.hasLaunch()) {
+          mergeLaunch(other.getLaunch());
+        }
+        if (other.hasLaunchGroup()) {
+          mergeLaunchGroup(other.getLaunchGroup());
+        }
+        if (other.hasKill()) {
+          mergeKill(other.getKill());
+        }
+        if (other.hasMessage()) {
+          mergeMessage(other.getMessage());
+        }
+        if (other.hasError()) {
+          mergeError(other.getError());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (hasSubscribed()) {
+          if (!getSubscribed().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasAcknowledged()) {
+          if (!getAcknowledged().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasLaunch()) {
+          if (!getLaunch().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasLaunchGroup()) {
+          if (!getLaunchGroup().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasKill()) {
+          if (!getKill().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasMessage()) {
+          if (!getMessage().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasError()) {
+          if (!getError().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.executor.Protos.Event parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.executor.Protos.Event) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional .mesos.v1.executor.Event.Type type = 1;
+      private org.apache.mesos.v1.executor.Protos.Event.Type type_ = org.apache.mesos.v1.executor.Protos.Event.Type.UNKNOWN;
+      /**
+       * <code>optional .mesos.v1.executor.Event.Type type = 1;</code>
+       *
+       * <pre>
+       * Type of the event, indicates which optional field below should be
+       * present if that type has a nested message definition.
+       * Enum fields should be optional, see: MESOS-4997.
+       * </pre>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Type type = 1;</code>
+       *
+       * <pre>
+       * Type of the event, indicates which optional field below should be
+       * present if that type has a nested message definition.
+       * Enum fields should be optional, see: MESOS-4997.
+       * </pre>
+       */
+      public org.apache.mesos.v1.executor.Protos.Event.Type getType() {
+        return type_;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Type type = 1;</code>
+       *
+       * <pre>
+       * Type of the event, indicates which optional field below should be
+       * present if that type has a nested message definition.
+       * Enum fields should be optional, see: MESOS-4997.
+       * </pre>
+       */
+      public Builder setType(org.apache.mesos.v1.executor.Protos.Event.Type value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000001;
+        type_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Type type = 1;</code>
+       *
+       * <pre>
+       * Type of the event, indicates which optional field below should be
+       * present if that type has a nested message definition.
+       * Enum fields should be optional, see: MESOS-4997.
+       * </pre>
+       */
+      public Builder clearType() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        type_ = org.apache.mesos.v1.executor.Protos.Event.Type.UNKNOWN;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.v1.executor.Event.Subscribed subscribed = 2;
+      private org.apache.mesos.v1.executor.Protos.Event.Subscribed subscribed_ = org.apache.mesos.v1.executor.Protos.Event.Subscribed.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.executor.Protos.Event.Subscribed, org.apache.mesos.v1.executor.Protos.Event.Subscribed.Builder, org.apache.mesos.v1.executor.Protos.Event.SubscribedOrBuilder> subscribedBuilder_;
+      /**
+       * <code>optional .mesos.v1.executor.Event.Subscribed subscribed = 2;</code>
+       */
+      public boolean hasSubscribed() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Subscribed subscribed = 2;</code>
+       */
+      public org.apache.mesos.v1.executor.Protos.Event.Subscribed getSubscribed() {
+        if (subscribedBuilder_ == null) {
+          return subscribed_;
+        } else {
+          return subscribedBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Subscribed subscribed = 2;</code>
+       */
+      public Builder setSubscribed(org.apache.mesos.v1.executor.Protos.Event.Subscribed value) {
+        if (subscribedBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          subscribed_ = value;
+          onChanged();
+        } else {
+          subscribedBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Subscribed subscribed = 2;</code>
+       */
+      public Builder setSubscribed(
+          org.apache.mesos.v1.executor.Protos.Event.Subscribed.Builder builderForValue) {
+        if (subscribedBuilder_ == null) {
+          subscribed_ = builderForValue.build();
+          onChanged();
+        } else {
+          subscribedBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Subscribed subscribed = 2;</code>
+       */
+      public Builder mergeSubscribed(org.apache.mesos.v1.executor.Protos.Event.Subscribed value) {
+        if (subscribedBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              subscribed_ != org.apache.mesos.v1.executor.Protos.Event.Subscribed.getDefaultInstance()) {
+            subscribed_ =
+              org.apache.mesos.v1.executor.Protos.Event.Subscribed.newBuilder(subscribed_).mergeFrom(value).buildPartial();
+          } else {
+            subscribed_ = value;
+          }
+          onChanged();
+        } else {
+          subscribedBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Subscribed subscribed = 2;</code>
+       */
+      public Builder clearSubscribed() {
+        if (subscribedBuilder_ == null) {
+          subscribed_ = org.apache.mesos.v1.executor.Protos.Event.Subscribed.getDefaultInstance();
+          onChanged();
+        } else {
+          subscribedBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Subscribed subscribed = 2;</code>
+       */
+      public org.apache.mesos.v1.executor.Protos.Event.Subscribed.Builder getSubscribedBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getSubscribedFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Subscribed subscribed = 2;</code>
+       */
+      public org.apache.mesos.v1.executor.Protos.Event.SubscribedOrBuilder getSubscribedOrBuilder() {
+        if (subscribedBuilder_ != null) {
+          return subscribedBuilder_.getMessageOrBuilder();
+        } else {
+          return subscribed_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Subscribed subscribed = 2;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.executor.Protos.Event.Subscribed, org.apache.mesos.v1.executor.Protos.Event.Subscribed.Builder, org.apache.mesos.v1.executor.Protos.Event.SubscribedOrBuilder> 
+          getSubscribedFieldBuilder() {
+        if (subscribedBuilder_ == null) {
+          subscribedBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.executor.Protos.Event.Subscribed, org.apache.mesos.v1.executor.Protos.Event.Subscribed.Builder, org.apache.mesos.v1.executor.Protos.Event.SubscribedOrBuilder>(
+                  subscribed_,
+                  getParentForChildren(),
+                  isClean());
+          subscribed_ = null;
+        }
+        return subscribedBuilder_;
+      }
+
+      // optional .mesos.v1.executor.Event.Acknowledged acknowledged = 3;
+      private org.apache.mesos.v1.executor.Protos.Event.Acknowledged acknowledged_ = org.apache.mesos.v1.executor.Protos.Event.Acknowledged.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.executor.Protos.Event.Acknowledged, org.apache.mesos.v1.executor.Protos.Event.Acknowledged.Builder, org.apache.mesos.v1.executor.Protos.Event.AcknowledgedOrBuilder> acknowledgedBuilder_;
+      /**
+       * <code>optional .mesos.v1.executor.Event.Acknowledged acknowledged = 3;</code>
+       */
+      public boolean hasAcknowledged() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Acknowledged acknowledged = 3;</code>
+       */
+      public org.apache.mesos.v1.executor.Protos.Event.Acknowledged getAcknowledged() {
+        if (acknowledgedBuilder_ == null) {
+          return acknowledged_;
+        } else {
+          return acknowledgedBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Acknowledged acknowledged = 3;</code>
+       */
+      public Builder setAcknowledged(org.apache.mesos.v1.executor.Protos.Event.Acknowledged value) {
+        if (acknowledgedBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          acknowledged_ = value;
+          onChanged();
+        } else {
+          acknowledgedBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Acknowledged acknowledged = 3;</code>
+       */
+      public Builder setAcknowledged(
+          org.apache.mesos.v1.executor.Protos.Event.Acknowledged.Builder builderForValue) {
+        if (acknowledgedBuilder_ == null) {
+          acknowledged_ = builderForValue.build();
+          onChanged();
+        } else {
+          acknowledgedBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Acknowledged acknowledged = 3;</code>
+       */
+      public Builder mergeAcknowledged(org.apache.mesos.v1.executor.Protos.Event.Acknowledged value) {
+        if (acknowledgedBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) == 0x00000004) &&
+              acknowledged_ != org.apache.mesos.v1.executor.Protos.Event.Acknowledged.getDefaultInstance()) {
+            acknowledged_ =
+              org.apache.mesos.v1.executor.Protos.Event.Acknowledged.newBuilder(acknowledged_).mergeFrom(value).buildPartial();
+          } else {
+            acknowledged_ = value;
+          }
+          onChanged();
+        } else {
+          acknowledgedBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Acknowledged acknowledged = 3;</code>
+       */
+      public Builder clearAcknowledged() {
+        if (acknowledgedBuilder_ == null) {
+          acknowledged_ = org.apache.mesos.v1.executor.Protos.Event.Acknowledged.getDefaultInstance();
+          onChanged();
+        } else {
+          acknowledgedBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Acknowledged acknowledged = 3;</code>
+       */
+      public org.apache.mesos.v1.executor.Protos.Event.Acknowledged.Builder getAcknowledgedBuilder() {
+        bitField0_ |= 0x00000004;
+        onChanged();
+        return getAcknowledgedFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Acknowledged acknowledged = 3;</code>
+       */
+      public org.apache.mesos.v1.executor.Protos.Event.AcknowledgedOrBuilder getAcknowledgedOrBuilder() {
+        if (acknowledgedBuilder_ != null) {
+          return acknowledgedBuilder_.getMessageOrBuilder();
+        } else {
+          return acknowledged_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Acknowledged acknowledged = 3;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.executor.Protos.Event.Acknowledged, org.apache.mesos.v1.executor.Protos.Event.Acknowledged.Builder, org.apache.mesos.v1.executor.Protos.Event.AcknowledgedOrBuilder> 
+          getAcknowledgedFieldBuilder() {
+        if (acknowledgedBuilder_ == null) {
+          acknowledgedBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.executor.Protos.Event.Acknowledged, org.apache.mesos.v1.executor.Protos.Event.Acknowledged.Builder, org.apache.mesos.v1.executor.Protos.Event.AcknowledgedOrBuilder>(
+                  acknowledged_,
+                  getParentForChildren(),
+                  isClean());
+          acknowledged_ = null;
+        }
+        return acknowledgedBuilder_;
+      }
+
+      // optional .mesos.v1.executor.Event.Launch launch = 4;
+      private org.apache.mesos.v1.executor.Protos.Event.Launch launch_ = org.apache.mesos.v1.executor.Protos.Event.Launch.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.executor.Protos.Event.Launch, org.apache.mesos.v1.executor.Protos.Event.Launch.Builder, org.apache.mesos.v1.executor.Protos.Event.LaunchOrBuilder> launchBuilder_;
+      /**
+       * <code>optional .mesos.v1.executor.Event.Launch launch = 4;</code>
+       */
+      public boolean hasLaunch() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Launch launch = 4;</code>
+       */
+      public org.apache.mesos.v1.executor.Protos.Event.Launch getLaunch() {
+        if (launchBuilder_ == null) {
+          return launch_;
+        } else {
+          return launchBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Launch launch = 4;</code>
+       */
+      public Builder setLaunch(org.apache.mesos.v1.executor.Protos.Event.Launch value) {
+        if (launchBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          launch_ = value;
+          onChanged();
+        } else {
+          launchBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Launch launch = 4;</code>
+       */
+      public Builder setLaunch(
+          org.apache.mesos.v1.executor.Protos.Event.Launch.Builder builderForValue) {
+        if (launchBuilder_ == null) {
+          launch_ = builderForValue.build();
+          onChanged();
+        } else {
+          launchBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Launch launch = 4;</code>
+       */
+      public Builder mergeLaunch(org.apache.mesos.v1.executor.Protos.Event.Launch value) {
+        if (launchBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008) &&
+              launch_ != org.apache.mesos.v1.executor.Protos.Event.Launch.getDefaultInstance()) {
+            launch_ =
+              org.apache.mesos.v1.executor.Protos.Event.Launch.newBuilder(launch_).mergeFrom(value).buildPartial();
+          } else {
+            launch_ = value;
+          }
+          onChanged();
+        } else {
+          launchBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Launch launch = 4;</code>
+       */
+      public Builder clearLaunch() {
+        if (launchBuilder_ == null) {
+          launch_ = org.apache.mesos.v1.executor.Protos.Event.Launch.getDefaultInstance();
+          onChanged();
+        } else {
+          launchBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Launch launch = 4;</code>
+       */
+      public org.apache.mesos.v1.executor.Protos.Event.Launch.Builder getLaunchBuilder() {
+        bitField0_ |= 0x00000008;
+        onChanged();
+        return getLaunchFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Launch launch = 4;</code>
+       */
+      public org.apache.mesos.v1.executor.Protos.Event.LaunchOrBuilder getLaunchOrBuilder() {
+        if (launchBuilder_ != null) {
+          return launchBuilder_.getMessageOrBuilder();
+        } else {
+          return launch_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Launch launch = 4;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.executor.Protos.Event.Launch, org.apache.mesos.v1.executor.Protos.Event.Launch.Builder, org.apache.mesos.v1.executor.Protos.Event.LaunchOrBuilder> 
+          getLaunchFieldBuilder() {
+        if (launchBuilder_ == null) {
+          launchBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.executor.Protos.Event.Launch, org.apache.mesos.v1.executor.Protos.Event.Launch.Builder, org.apache.mesos.v1.executor.Protos.Event.LaunchOrBuilder>(
+                  launch_,
+                  getParentForChildren(),
+                  isClean());
+          launch_ = null;
+        }
+        return launchBuilder_;
+      }
+
+      // optional .mesos.v1.executor.Event.LaunchGroup launch_group = 8;
+      private org.apache.mesos.v1.executor.Protos.Event.LaunchGroup launchGroup_ = org.apache.mesos.v1.executor.Protos.Event.LaunchGroup.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.executor.Protos.Event.LaunchGroup, org.apache.mesos.v1.executor.Protos.Event.LaunchGroup.Builder, org.apache.mesos.v1.executor.Protos.Event.LaunchGroupOrBuilder> launchGroupBuilder_;
+      /**
+       * <code>optional .mesos.v1.executor.Event.LaunchGroup launch_group = 8;</code>
+       */
+      public boolean hasLaunchGroup() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.LaunchGroup launch_group = 8;</code>
+       */
+      public org.apache.mesos.v1.executor.Protos.Event.LaunchGroup getLaunchGroup() {
+        if (launchGroupBuilder_ == null) {
+          return launchGroup_;
+        } else {
+          return launchGroupBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.LaunchGroup launch_group = 8;</code>
+       */
+      public Builder setLaunchGroup(org.apache.mesos.v1.executor.Protos.Event.LaunchGroup value) {
+        if (launchGroupBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          launchGroup_ = value;
+          onChanged();
+        } else {
+          launchGroupBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.LaunchGroup launch_group = 8;</code>
+       */
+      public Builder setLaunchGroup(
+          org.apache.mesos.v1.executor.Protos.Event.LaunchGroup.Builder builderForValue) {
+        if (launchGroupBuilder_ == null) {
+          launchGroup_ = builderForValue.build();
+          onChanged();
+        } else {
+          launchGroupBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.LaunchGroup launch_group = 8;</code>
+       */
+      public Builder mergeLaunchGroup(org.apache.mesos.v1.executor.Protos.Event.LaunchGroup value) {
+        if (launchGroupBuilder_ == null) {
+          if (((bitField0_ & 0x00000010) == 0x00000010) &&
+              launchGroup_ != org.apache.mesos.v1.executor.Protos.Event.LaunchGroup.getDefaultInstance()) {
+            launchGroup_ =
+              org.apache.mesos.v1.executor.Protos.Event.LaunchGroup.newBuilder(launchGroup_).mergeFrom(value).buildPartial();
+          } else {
+            launchGroup_ = value;
+          }
+          onChanged();
+        } else {
+          launchGroupBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.LaunchGroup launch_group = 8;</code>
+       */
+      public Builder clearLaunchGroup() {
+        if (launchGroupBuilder_ == null) {
+          launchGroup_ = org.apache.mesos.v1.executor.Protos.Event.LaunchGroup.getDefaultInstance();
+          onChanged();
+        } else {
+          launchGroupBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.LaunchGroup launch_group = 8;</code>
+       */
+      public org.apache.mesos.v1.executor.Protos.Event.LaunchGroup.Builder getLaunchGroupBuilder() {
+        bitField0_ |= 0x00000010;
+        onChanged();
+        return getLaunchGroupFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.LaunchGroup launch_group = 8;</code>
+       */
+      public org.apache.mesos.v1.executor.Protos.Event.LaunchGroupOrBuilder getLaunchGroupOrBuilder() {
+        if (launchGroupBuilder_ != null) {
+          return launchGroupBuilder_.getMessageOrBuilder();
+        } else {
+          return launchGroup_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.LaunchGroup launch_group = 8;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.executor.Protos.Event.LaunchGroup, org.apache.mesos.v1.executor.Protos.Event.LaunchGroup.Builder, org.apache.mesos.v1.executor.Protos.Event.LaunchGroupOrBuilder> 
+          getLaunchGroupFieldBuilder() {
+        if (launchGroupBuilder_ == null) {
+          launchGroupBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.executor.Protos.Event.LaunchGroup, org.apache.mesos.v1.executor.Protos.Event.LaunchGroup.Builder, org.apache.mesos.v1.executor.Protos.Event.LaunchGroupOrBuilder>(
+                  launchGroup_,
+                  getParentForChildren(),
+                  isClean());
+          launchGroup_ = null;
+        }
+        return launchGroupBuilder_;
+      }
+
+      // optional .mesos.v1.executor.Event.Kill kill = 5;
+      private org.apache.mesos.v1.executor.Protos.Event.Kill kill_ = org.apache.mesos.v1.executor.Protos.Event.Kill.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.executor.Protos.Event.Kill, org.apache.mesos.v1.executor.Protos.Event.Kill.Builder, org.apache.mesos.v1.executor.Protos.Event.KillOrBuilder> killBuilder_;
+      /**
+       * <code>optional .mesos.v1.executor.Event.Kill kill = 5;</code>
+       */
+      public boolean hasKill() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Kill kill = 5;</code>
+       */
+      public org.apache.mesos.v1.executor.Protos.Event.Kill getKill() {
+        if (killBuilder_ == null) {
+          return kill_;
+        } else {
+          return killBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Kill kill = 5;</code>
+       */
+      public Builder setKill(org.apache.mesos.v1.executor.Protos.Event.Kill value) {
+        if (killBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          kill_ = value;
+          onChanged();
+        } else {
+          killBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Kill kill = 5;</code>
+       */
+      public Builder setKill(
+          org.apache.mesos.v1.executor.Protos.Event.Kill.Builder builderForValue) {
+        if (killBuilder_ == null) {
+          kill_ = builderForValue.build();
+          onChanged();
+        } else {
+          killBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Kill kill = 5;</code>
+       */
+      public Builder mergeKill(org.apache.mesos.v1.executor.Protos.Event.Kill value) {
+        if (killBuilder_ == null) {
+          if (((bitField0_ & 0x00000020) == 0x00000020) &&
+              kill_ != org.apache.mesos.v1.executor.Protos.Event.Kill.getDefaultInstance()) {
+            kill_ =
+              org.apache.mesos.v1.executor.Protos.Event.Kill.newBuilder(kill_).mergeFrom(value).buildPartial();
+          } else {
+            kill_ = value;
+          }
+          onChanged();
+        } else {
+          killBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Kill kill = 5;</code>
+       */
+      public Builder clearKill() {
+        if (killBuilder_ == null) {
+          kill_ = org.apache.mesos.v1.executor.Protos.Event.Kill.getDefaultInstance();
+          onChanged();
+        } else {
+          killBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Kill kill = 5;</code>
+       */
+      public org.apache.mesos.v1.executor.Protos.Event.Kill.Builder getKillBuilder() {
+        bitField0_ |= 0x00000020;
+        onChanged();
+        return getKillFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Kill kill = 5;</code>
+       */
+      public org.apache.mesos.v1.executor.Protos.Event.KillOrBuilder getKillOrBuilder() {
+        if (killBuilder_ != null) {
+          return killBuilder_.getMessageOrBuilder();
+        } else {
+          return kill_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Kill kill = 5;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.executor.Protos.Event.Kill, org.apache.mesos.v1.executor.Protos.Event.Kill.Builder, org.apache.mesos.v1.executor.Protos.Event.KillOrBuilder> 
+          getKillFieldBuilder() {
+        if (killBuilder_ == null) {
+          killBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.executor.Protos.Event.Kill, org.apache.mesos.v1.executor.Protos.Event.Kill.Builder, org.apache.mesos.v1.executor.Protos.Event.KillOrBuilder>(
+                  kill_,
+                  getParentForChildren(),
+                  isClean());
+          kill_ = null;
+        }
+        return killBuilder_;
+      }
+
+      // optional .mesos.v1.executor.Event.Message message = 6;
+      private org.apache.mesos.v1.executor.Protos.Event.Message message_ = org.apache.mesos.v1.executor.Protos.Event.Message.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.executor.Protos.Event.Message, org.apache.mesos.v1.executor.Protos.Event.Message.Builder, org.apache.mesos.v1.executor.Protos.Event.MessageOrBuilder> messageBuilder_;
+      /**
+       * <code>optional .mesos.v1.executor.Event.Message message = 6;</code>
+       */
+      public boolean hasMessage() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Message message = 6;</code>
+       */
+      public org.apache.mesos.v1.executor.Protos.Event.Message getMessage() {
+        if (messageBuilder_ == null) {
+          return message_;
+        } else {
+          return messageBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Message message = 6;</code>
+       */
+      public Builder setMessage(org.apache.mesos.v1.executor.Protos.Event.Message value) {
+        if (messageBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          message_ = value;
+          onChanged();
+        } else {
+          messageBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Message message = 6;</code>
+       */
+      public Builder setMessage(
+          org.apache.mesos.v1.executor.Protos.Event.Message.Builder builderForValue) {
+        if (messageBuilder_ == null) {
+          message_ = builderForValue.build();
+          onChanged();
+        } else {
+          messageBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Message message = 6;</code>
+       */
+      public Builder mergeMessage(org.apache.mesos.v1.executor.Protos.Event.Message value) {
+        if (messageBuilder_ == null) {
+          if (((bitField0_ & 0x00000040) == 0x00000040) &&
+              message_ != org.apache.mesos.v1.executor.Protos.Event.Message.getDefaultInstance()) {
+            message_ =
+              org.apache.mesos.v1.executor.Protos.Event.Message.newBuilder(message_).mergeFrom(value).buildPartial();
+          } else {
+            message_ = value;
+          }
+          onChanged();
+        } else {
+          messageBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Message message = 6;</code>
+       */
+      public Builder clearMessage() {
+        if (messageBuilder_ == null) {
+          message_ = org.apache.mesos.v1.executor.Protos.Event.Message.getDefaultInstance();
+          onChanged();
+        } else {
+          messageBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000040);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Message message = 6;</code>
+       */
+      public org.apache.mesos.v1.executor.Protos.Event.Message.Builder getMessageBuilder() {
+        bitField0_ |= 0x00000040;
+        onChanged();
+        return getMessageFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Message message = 6;</code>
+       */
+      public org.apache.mesos.v1.executor.Protos.Event.MessageOrBuilder getMessageOrBuilder() {
+        if (messageBuilder_ != null) {
+          return messageBuilder_.getMessageOrBuilder();
+        } else {
+          return message_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Message message = 6;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.executor.Protos.Event.Message, org.apache.mesos.v1.executor.Protos.Event.Message.Builder, org.apache.mesos.v1.executor.Protos.Event.MessageOrBuilder> 
+          getMessageFieldBuilder() {
+        if (messageBuilder_ == null) {
+          messageBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.executor.Protos.Event.Message, org.apache.mesos.v1.executor.Protos.Event.Message.Builder, org.apache.mesos.v1.executor.Protos.Event.MessageOrBuilder>(
+                  message_,
+                  getParentForChildren(),
+                  isClean());
+          message_ = null;
+        }
+        return messageBuilder_;
+      }
+
+      // optional .mesos.v1.executor.Event.Error error = 7;
+      private org.apache.mesos.v1.executor.Protos.Event.Error error_ = org.apache.mesos.v1.executor.Protos.Event.Error.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.executor.Protos.Event.Error, org.apache.mesos.v1.executor.Protos.Event.Error.Builder, org.apache.mesos.v1.executor.Protos.Event.ErrorOrBuilder> errorBuilder_;
+      /**
+       * <code>optional .mesos.v1.executor.Event.Error error = 7;</code>
+       */
+      public boolean hasError() {
+        return ((bitField0_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Error error = 7;</code>
+       */
+      public org.apache.mesos.v1.executor.Protos.Event.Error getError() {
+        if (errorBuilder_ == null) {
+          return error_;
+        } else {
+          return errorBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Error error = 7;</code>
+       */
+      public Builder setError(org.apache.mesos.v1.executor.Protos.Event.Error value) {
+        if (errorBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          error_ = value;
+          onChanged();
+        } else {
+          errorBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Error error = 7;</code>
+       */
+      public Builder setError(
+          org.apache.mesos.v1.executor.Protos.Event.Error.Builder builderForValue) {
+        if (errorBuilder_ == null) {
+          error_ = builderForValue.build();
+          onChanged();
+        } else {
+          errorBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Error error = 7;</code>
+       */
+      public Builder mergeError(org.apache.mesos.v1.executor.Protos.Event.Error value) {
+        if (errorBuilder_ == null) {
+          if (((bitField0_ & 0x00000080) == 0x00000080) &&
+              error_ != org.apache.mesos.v1.executor.Protos.Event.Error.getDefaultInstance()) {
+            error_ =
+              org.apache.mesos.v1.executor.Protos.Event.Error.newBuilder(error_).mergeFrom(value).buildPartial();
+          } else {
+            error_ = value;
+          }
+          onChanged();
+        } else {
+          errorBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Error error = 7;</code>
+       */
+      public Builder clearError() {
+        if (errorBuilder_ == null) {
+          error_ = org.apache.mesos.v1.executor.Protos.Event.Error.getDefaultInstance();
+          onChanged();
+        } else {
+          errorBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000080);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Error error = 7;</code>
+       */
+      public org.apache.mesos.v1.executor.Protos.Event.Error.Builder getErrorBuilder() {
+        bitField0_ |= 0x00000080;
+        onChanged();
+        return getErrorFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Error error = 7;</code>
+       */
+      public org.apache.mesos.v1.executor.Protos.Event.ErrorOrBuilder getErrorOrBuilder() {
+        if (errorBuilder_ != null) {
+          return errorBuilder_.getMessageOrBuilder();
+        } else {
+          return error_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Event.Error error = 7;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.executor.Protos.Event.Error, org.apache.mesos.v1.executor.Protos.Event.Error.Builder, org.apache.mesos.v1.executor.Protos.Event.ErrorOrBuilder> 
+          getErrorFieldBuilder() {
+        if (errorBuilder_ == null) {
+          errorBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.executor.Protos.Event.Error, org.apache.mesos.v1.executor.Protos.Event.Error.Builder, org.apache.mesos.v1.executor.Protos.Event.ErrorOrBuilder>(
+                  error_,
+                  getParentForChildren(),
+                  isClean());
+          error_ = null;
+        }
+        return errorBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.executor.Event)
+    }
+
+    static {
+      defaultInstance = new Event(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.executor.Event)
+  }
+
+  public interface CallOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required .mesos.v1.ExecutorID executor_id = 1;
+    /**
+     * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+     *
+     * <pre>
+     * Identifies the executor which generated this call.
+     * </pre>
+     */
+    boolean hasExecutorId();
+    /**
+     * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+     *
+     * <pre>
+     * Identifies the executor which generated this call.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.ExecutorID getExecutorId();
+    /**
+     * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+     *
+     * <pre>
+     * Identifies the executor which generated this call.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder();
+
+    // required .mesos.v1.FrameworkID framework_id = 2;
+    /**
+     * <code>required .mesos.v1.FrameworkID framework_id = 2;</code>
+     */
+    boolean hasFrameworkId();
+    /**
+     * <code>required .mesos.v1.FrameworkID framework_id = 2;</code>
+     */
+    org.apache.mesos.v1.Protos.FrameworkID getFrameworkId();
+    /**
+     * <code>required .mesos.v1.FrameworkID framework_id = 2;</code>
+     */
+    org.apache.mesos.v1.Protos.FrameworkIDOrBuilder getFrameworkIdOrBuilder();
+
+    // optional .mesos.v1.executor.Call.Type type = 3;
+    /**
+     * <code>optional .mesos.v1.executor.Call.Type type = 3;</code>
+     *
+     * <pre>
+     * Type of the call, indicates which optional field below should be
+     * present if that type has a nested message definition.
+     * In case type is SUBSCRIBED, no message needs to be set.
+     * See comments on `Event::Type` above on the reasoning behind this
+     * field being optional.
+     * </pre>
+     */
+    boolean hasType();
+    /**
+     * <code>optional .mesos.v1.executor.Call.Type type = 3;</code>
+     *
+     * <pre>
+     * Type of the call, indicates which optional field below should be
+     * present if that type has a nested message definition.
+     * In case type is SUBSCRIBED, no message needs to be set.
+     * See comments on `Event::Type` above on the reasoning behind this
+     * field being optional.
+     * </pre>
+     */
+    org.apache.mesos.v1.executor.Protos.Call.Type getType();
+
+    // optional .mesos.v1.executor.Call.Subscribe subscribe = 4;
+    /**
+     * <code>optional .mesos.v1.executor.Call.Subscribe subscribe = 4;</code>
+     */
+    boolean hasSubscribe();
+    /**
+     * <code>optional .mesos.v1.executor.Call.Subscribe subscribe = 4;</code>
+     */
+    org.apache.mesos.v1.executor.Protos.Call.Subscribe getSubscribe();
+    /**
+     * <code>optional .mesos.v1.executor.Call.Subscribe subscribe = 4;</code>
+     */
+    org.apache.mesos.v1.executor.Protos.Call.SubscribeOrBuilder getSubscribeOrBuilder();
+
+    // optional .mesos.v1.executor.Call.Update update = 5;
+    /**
+     * <code>optional .mesos.v1.executor.Call.Update update = 5;</code>
+     */
+    boolean hasUpdate();
+    /**
+     * <code>optional .mesos.v1.executor.Call.Update update = 5;</code>
+     */
+    org.apache.mesos.v1.executor.Protos.Call.Update getUpdate();
+    /**
+     * <code>optional .mesos.v1.executor.Call.Update update = 5;</code>
+     */
+    org.apache.mesos.v1.executor.Protos.Call.UpdateOrBuilder getUpdateOrBuilder();
+
+    // optional .mesos.v1.executor.Call.Message message = 6;
+    /**
+     * <code>optional .mesos.v1.executor.Call.Message message = 6;</code>
+     */
+    boolean hasMessage();
+    /**
+     * <code>optional .mesos.v1.executor.Call.Message message = 6;</code>
+     */
+    org.apache.mesos.v1.executor.Protos.Call.Message getMessage();
+    /**
+     * <code>optional .mesos.v1.executor.Call.Message message = 6;</code>
+     */
+    org.apache.mesos.v1.executor.Protos.Call.MessageOrBuilder getMessageOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.executor.Call}
+   *
+   * <pre>
+   **
+   * Executor call API.
+   *
+   * Like Event, a Call is described using the standard protocol buffer
+   * "union" trick (see above).
+   * </pre>
+   */
+  public static final class Call extends
+      com.google.protobuf.GeneratedMessage
+      implements CallOrBuilder {
+    // Use Call.newBuilder() to construct.
+    private Call(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Call(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Call defaultInstance;
+    public static Call getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Call getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Call(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              org.apache.mesos.v1.Protos.ExecutorID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                subBuilder = executorId_.toBuilder();
+              }
+              executorId_ = input.readMessage(org.apache.mesos.v1.Protos.ExecutorID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(executorId_);
+                executorId_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+            case 18: {
+              org.apache.mesos.v1.Protos.FrameworkID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = frameworkId_.toBuilder();
+              }
+              frameworkId_ = input.readMessage(org.apache.mesos.v1.Protos.FrameworkID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(frameworkId_);
+                frameworkId_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+            case 24: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.v1.executor.Protos.Call.Type value = org.apache.mesos.v1.executor.Protos.Call.Type.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(3, rawValue);
+              } else {
+                bitField0_ |= 0x00000004;
+                type_ = value;
+              }
+              break;
+            }
+            case 34: {
+              org.apache.mesos.v1.executor.Protos.Call.Subscribe.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                subBuilder = subscribe_.toBuilder();
+              }
+              subscribe_ = input.readMessage(org.apache.mesos.v1.executor.Protos.Call.Subscribe.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(subscribe_);
+                subscribe_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000008;
+              break;
+            }
+            case 42: {
+              org.apache.mesos.v1.executor.Protos.Call.Update.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000010) == 0x00000010)) {
+                subBuilder = update_.toBuilder();
+              }
+              update_ = input.readMessage(org.apache.mesos.v1.executor.Protos.Call.Update.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(update_);
+                update_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000010;
+              break;
+            }
+            case 50: {
+              org.apache.mesos.v1.executor.Protos.Call.Message.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000020) == 0x00000020)) {
+                subBuilder = message_.toBuilder();
+              }
+              message_ = input.readMessage(org.apache.mesos.v1.executor.Protos.Call.Message.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(message_);
+                message_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000020;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Call_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Call_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.executor.Protos.Call.class, org.apache.mesos.v1.executor.Protos.Call.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Call> PARSER =
+        new com.google.protobuf.AbstractParser<Call>() {
+      public Call parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Call(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Call> getParserForType() {
+      return PARSER;
+    }
+
+    /**
+     * Protobuf enum {@code mesos.v1.executor.Call.Type}
+     *
+     * <pre>
+     * Possible call types, followed by message definitions if
+     * applicable.
+     * </pre>
+     */
+    public enum Type
+        implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>UNKNOWN = 0;</code>
+       *
+       * <pre>
+       * See comments above on `Event::Type` for more details on this enum value.
+       * </pre>
+       */
+      UNKNOWN(0, 0),
+      /**
+       * <code>SUBSCRIBE = 1;</code>
+       *
+       * <pre>
+       * See 'Subscribe' below.
+       * </pre>
+       */
+      SUBSCRIBE(1, 1),
+      /**
+       * <code>UPDATE = 2;</code>
+       *
+       * <pre>
+       * See 'Update' below.
+       * </pre>
+       */
+      UPDATE(2, 2),
+      /**
+       * <code>MESSAGE = 3;</code>
+       *
+       * <pre>
+       * See 'Message' below.
+       * </pre>
+       */
+      MESSAGE(3, 3),
+      ;
+
+      /**
+       * <code>UNKNOWN = 0;</code>
+       *
+       * <pre>
+       * See comments above on `Event::Type` for more details on this enum value.
+       * </pre>
+       */
+      public static final int UNKNOWN_VALUE = 0;
+      /**
+       * <code>SUBSCRIBE = 1;</code>
+       *
+       * <pre>
+       * See 'Subscribe' below.
+       * </pre>
+       */
+      public static final int SUBSCRIBE_VALUE = 1;
+      /**
+       * <code>UPDATE = 2;</code>
+       *
+       * <pre>
+       * See 'Update' below.
+       * </pre>
+       */
+      public static final int UPDATE_VALUE = 2;
+      /**
+       * <code>MESSAGE = 3;</code>
+       *
+       * <pre>
+       * See 'Message' below.
+       * </pre>
+       */
+      public static final int MESSAGE_VALUE = 3;
+
+
+      public final int getNumber() { return value; }
+
+      public static Type valueOf(int value) {
+        switch (value) {
+          case 0: return UNKNOWN;
+          case 1: return SUBSCRIBE;
+          case 2: return UPDATE;
+          case 3: return MESSAGE;
+          default: return null;
+        }
+      }
+
+      public static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalGetValueMap() {
+        return internalValueMap;
+      }
+      private static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap<Type>() {
+              public Type findValueByNumber(int number) {
+                return Type.valueOf(number);
+              }
+            };
+
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
+          getValueDescriptor() {
+        return getDescriptor().getValues().get(index);
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptorForType() {
+        return getDescriptor();
+      }
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.executor.Protos.Call.getDescriptor().getEnumTypes().get(0);
+      }
+
+      private static final Type[] VALUES = values();
+
+      public static Type valueOf(
+          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+        if (desc.getType() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "EnumValueDescriptor is not for this type.");
+        }
+        return VALUES[desc.getIndex()];
+      }
+
+      private final int index;
+      private final int value;
+
+      private Type(int index, int value) {
+        this.index = index;
+        this.value = value;
+      }
+
+      // @@protoc_insertion_point(enum_scope:mesos.v1.executor.Call.Type)
+    }
+
+    public interface SubscribeOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // repeated .mesos.v1.TaskInfo unacknowledged_tasks = 1;
+      /**
+       * <code>repeated .mesos.v1.TaskInfo unacknowledged_tasks = 1;</code>
+       */
+      java.util.List<org.apache.mesos.v1.Protos.TaskInfo> 
+          getUnacknowledgedTasksList();
+      /**
+       * <code>repeated .mesos.v1.TaskInfo unacknowledged_tasks = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.TaskInfo getUnacknowledgedTasks(int index);
+      /**
+       * <code>repeated .mesos.v1.TaskInfo unacknowledged_tasks = 1;</code>
+       */
+      int getUnacknowledgedTasksCount();
+      /**
+       * <code>repeated .mesos.v1.TaskInfo unacknowledged_tasks = 1;</code>
+       */
+      java.util.List<? extends org.apache.mesos.v1.Protos.TaskInfoOrBuilder> 
+          getUnacknowledgedTasksOrBuilderList();
+      /**
+       * <code>repeated .mesos.v1.TaskInfo unacknowledged_tasks = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.TaskInfoOrBuilder getUnacknowledgedTasksOrBuilder(
+          int index);
+
+      // repeated .mesos.v1.executor.Call.Update unacknowledged_updates = 2;
+      /**
+       * <code>repeated .mesos.v1.executor.Call.Update unacknowledged_updates = 2;</code>
+       */
+      java.util.List<org.apache.mesos.v1.executor.Protos.Call.Update> 
+          getUnacknowledgedUpdatesList();
+      /**
+       * <code>repeated .mesos.v1.executor.Call.Update unacknowledged_updates = 2;</code>
+       */
+      org.apache.mesos.v1.executor.Protos.Call.Update getUnacknowledgedUpdates(int index);
+      /**
+       * <code>repeated .mesos.v1.executor.Call.Update unacknowledged_updates = 2;</code>
+       */
+      int getUnacknowledgedUpdatesCount();
+      /**
+       * <code>repeated .mesos.v1.executor.Call.Update unacknowledged_updates = 2;</code>
+       */
+      java.util.List<? extends org.apache.mesos.v1.executor.Protos.Call.UpdateOrBuilder> 
+          getUnacknowledgedUpdatesOrBuilderList();
+      /**
+       * <code>repeated .mesos.v1.executor.Call.Update unacknowledged_updates = 2;</code>
+       */
+      org.apache.mesos.v1.executor.Protos.Call.UpdateOrBuilder getUnacknowledgedUpdatesOrBuilder(
+          int index);
+    }
+    /**
+     * Protobuf type {@code mesos.v1.executor.Call.Subscribe}
+     *
+     * <pre>
+     * Request to subscribe with the agent. If subscribing after a disconnection,
+     * it must include a list of all the tasks and updates which haven't been
+     * acknowledged by the scheduler.
+     * </pre>
+     */
+    public static final class Subscribe extends
+        com.google.protobuf.GeneratedMessage
+        implements SubscribeOrBuilder {
+      // Use Subscribe.newBuilder() to construct.
+      private Subscribe(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Subscribe(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Subscribe defaultInstance;
+      public static Subscribe getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Subscribe getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Subscribe(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                  unacknowledgedTasks_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.TaskInfo>();
+                  mutable_bitField0_ |= 0x00000001;
+                }
+                unacknowledgedTasks_.add(input.readMessage(org.apache.mesos.v1.Protos.TaskInfo.PARSER, extensionRegistry));
+                break;
+              }
+              case 18: {
+                if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+                  unacknowledgedUpdates_ = new java.util.ArrayList<org.apache.mesos.v1.executor.Protos.Call.Update>();
+                  mutable_bitField0_ |= 0x00000002;
+                }
+                unacknowledgedUpdates_.add(input.readMessage(org.apache.mesos.v1.executor.Protos.Call.Update.PARSER, extensionRegistry));
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+            unacknowledgedTasks_ = java.util.Collections.unmodifiableList(unacknowledgedTasks_);
+          }
+          if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+            unacknowledgedUpdates_ = java.util.Collections.unmodifiableList(unacknowledgedUpdates_);
+          }
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Call_Subscribe_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Call_Subscribe_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.executor.Protos.Call.Subscribe.class, org.apache.mesos.v1.executor.Protos.Call.Subscribe.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Subscribe> PARSER =
+          new com.google.protobuf.AbstractParser<Subscribe>() {
+        public Subscribe parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Subscribe(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Subscribe> getParserForType() {
+        return PARSER;
+      }
+
+      // repeated .mesos.v1.TaskInfo unacknowledged_tasks = 1;
+      public static final int UNACKNOWLEDGED_TASKS_FIELD_NUMBER = 1;
+      private java.util.List<org.apache.mesos.v1.Protos.TaskInfo> unacknowledgedTasks_;
+      /**
+       * <code>repeated .mesos.v1.TaskInfo unacknowledged_tasks = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.TaskInfo> getUnacknowledgedTasksList() {
+        return unacknowledgedTasks_;
+      }
+      /**
+       * <code>repeated .mesos.v1.TaskInfo unacknowledged_tasks = 1;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.TaskInfoOrBuilder> 
+          getUnacknowledgedTasksOrBuilderList() {
+        return unacknowledgedTasks_;
+      }
+      /**
+       * <code>repeated .mesos.v1.TaskInfo unacknowledged_tasks = 1;</code>
+       */
+      public int getUnacknowledgedTasksCount() {
+        return unacknowledgedTasks_.size();
+      }
+      /**
+       * <code>repeated .mesos.v1.TaskInfo unacknowledged_tasks = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.TaskInfo getUnacknowledgedTasks(int index) {
+        return unacknowledgedTasks_.get(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.TaskInfo unacknowledged_tasks = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.TaskInfoOrBuilder getUnacknowledgedTasksOrBuilder(
+          int index) {
+        return unacknowledgedTasks_.get(index);
+      }
+
+      // repeated .mesos.v1.executor.Call.Update unacknowledged_updates = 2;
+      public static final int UNACKNOWLEDGED_UPDATES_FIELD_NUMBER = 2;
+      private java.util.List<org.apache.mesos.v1.executor.Protos.Call.Update> unacknowledgedUpdates_;
+      /**
+       * <code>repeated .mesos.v1.executor.Call.Update unacknowledged_updates = 2;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.executor.Protos.Call.Update> getUnacknowledgedUpdatesList() {
+        return unacknowledgedUpdates_;
+      }
+      /**
+       * <code>repeated .mesos.v1.executor.Call.Update unacknowledged_updates = 2;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.executor.Protos.Call.UpdateOrBuilder> 
+          getUnacknowledgedUpdatesOrBuilderList() {
+        return unacknowledgedUpdates_;
+      }
+      /**
+       * <code>repeated .mesos.v1.executor.Call.Update unacknowledged_updates = 2;</code>
+       */
+      public int getUnacknowledgedUpdatesCount() {
+        return unacknowledgedUpdates_.size();
+      }
+      /**
+       * <code>repeated .mesos.v1.executor.Call.Update unacknowledged_updates = 2;</code>
+       */
+      public org.apache.mesos.v1.executor.Protos.Call.Update getUnacknowledgedUpdates(int index) {
+        return unacknowledgedUpdates_.get(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.executor.Call.Update unacknowledged_updates = 2;</code>
+       */
+      public org.apache.mesos.v1.executor.Protos.Call.UpdateOrBuilder getUnacknowledgedUpdatesOrBuilder(
+          int index) {
+        return unacknowledgedUpdates_.get(index);
+      }
+
+      private void initFields() {
+        unacknowledgedTasks_ = java.util.Collections.emptyList();
+        unacknowledgedUpdates_ = java.util.Collections.emptyList();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        for (int i = 0; i < getUnacknowledgedTasksCount(); i++) {
+          if (!getUnacknowledgedTasks(i).isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        for (int i = 0; i < getUnacknowledgedUpdatesCount(); i++) {
+          if (!getUnacknowledgedUpdates(i).isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        for (int i = 0; i < unacknowledgedTasks_.size(); i++) {
+          output.writeMessage(1, unacknowledgedTasks_.get(i));
+        }
+        for (int i = 0; i < unacknowledgedUpdates_.size(); i++) {
+          output.writeMessage(2, unacknowledgedUpdates_.get(i));
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        for (int i = 0; i < unacknowledgedTasks_.size(); i++) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, unacknowledgedTasks_.get(i));
+        }
+        for (int i = 0; i < unacknowledgedUpdates_.size(); i++) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(2, unacknowledgedUpdates_.get(i));
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.executor.Protos.Call.Subscribe parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Call.Subscribe parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Call.Subscribe parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Call.Subscribe parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Call.Subscribe parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Call.Subscribe parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Call.Subscribe parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Call.Subscribe parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Call.Subscribe parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Call.Subscribe parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.executor.Protos.Call.Subscribe prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.executor.Call.Subscribe}
+       *
+       * <pre>
+       * Request to subscribe with the agent. If subscribing after a disconnection,
+       * it must include a list of all the tasks and updates which haven't been
+       * acknowledged by the scheduler.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.executor.Protos.Call.SubscribeOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Call_Subscribe_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Call_Subscribe_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.executor.Protos.Call.Subscribe.class, org.apache.mesos.v1.executor.Protos.Call.Subscribe.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.executor.Protos.Call.Subscribe.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getUnacknowledgedTasksFieldBuilder();
+            getUnacknowledgedUpdatesFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (unacknowledgedTasksBuilder_ == null) {
+            unacknowledgedTasks_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000001);
+          } else {
+            unacknowledgedTasksBuilder_.clear();
+          }
+          if (unacknowledgedUpdatesBuilder_ == null) {
+            unacknowledgedUpdates_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000002);
+          } else {
+            unacknowledgedUpdatesBuilder_.clear();
+          }
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Call_Subscribe_descriptor;
+        }
+
+        public org.apache.mesos.v1.executor.Protos.Call.Subscribe getDefaultInstanceForType() {
+          return org.apache.mesos.v1.executor.Protos.Call.Subscribe.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.executor.Protos.Call.Subscribe build() {
+          org.apache.mesos.v1.executor.Protos.Call.Subscribe result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.executor.Protos.Call.Subscribe buildPartial() {
+          org.apache.mesos.v1.executor.Protos.Call.Subscribe result = new org.apache.mesos.v1.executor.Protos.Call.Subscribe(this);
+          int from_bitField0_ = bitField0_;
+          if (unacknowledgedTasksBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              unacknowledgedTasks_ = java.util.Collections.unmodifiableList(unacknowledgedTasks_);
+              bitField0_ = (bitField0_ & ~0x00000001);
+            }
+            result.unacknowledgedTasks_ = unacknowledgedTasks_;
+          } else {
+            result.unacknowledgedTasks_ = unacknowledgedTasksBuilder_.build();
+          }
+          if (unacknowledgedUpdatesBuilder_ == null) {
+            if (((bitField0_ & 0x00000002) == 0x00000002)) {
+              unacknowledgedUpdates_ = java.util.Collections.unmodifiableList(unacknowledgedUpdates_);
+              bitField0_ = (bitField0_ & ~0x00000002);
+            }
+            result.unacknowledgedUpdates_ = unacknowledgedUpdates_;
+          } else {
+            result.unacknowledgedUpdates_ = unacknowledgedUpdatesBuilder_.build();
+          }
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.executor.Protos.Call.Subscribe) {
+            return mergeFrom((org.apache.mesos.v1.executor.Protos.Call.Subscribe)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.executor.Protos.Call.Subscribe other) {
+          if (other == org.apache.mesos.v1.executor.Protos.Call.Subscribe.getDefaultInstance()) return this;
+          if (unacknowledgedTasksBuilder_ == null) {
+            if (!other.unacknowledgedTasks_.isEmpty()) {
+              if (unacknowledgedTasks_.isEmpty()) {
+                unacknowledgedTasks_ = other.unacknowledgedTasks_;
+                bitField0_ = (bitField0_ & ~0x00000001);
+              } else {
+                ensureUnacknowledgedTasksIsMutable();
+                unacknowledgedTasks_.addAll(other.unacknowledgedTasks_);
+              }
+              onChanged();
+            }
+          } else {
+            if (!other.unacknowledgedTasks_.isEmpty()) {
+              if (unacknowledgedTasksBuilder_.isEmpty()) {
+                unacknowledgedTasksBuilder_.dispose();
+                unacknowledgedTasksBuilder_ = null;
+                unacknowledgedTasks_ = other.unacknowledgedTasks_;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                unacknowledgedTasksBuilder_ = 
+                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                     getUnacknowledgedTasksFieldBuilder() : null;
+              } else {
+                unacknowledgedTasksBuilder_.addAllMessages(other.unacknowledgedTasks_);
+              }
+            }
+          }
+          if (unacknowledgedUpdatesBuilder_ == null) {
+            if (!other.unacknowledgedUpdates_.isEmpty()) {
+              if (unacknowledgedUpdates_.isEmpty()) {
+                unacknowledgedUpdates_ = other.unacknowledgedUpdates_;
+                bitField0_ = (bitField0_ & ~0x00000002);
+              } else {
+                ensureUnacknowledgedUpdatesIsMutable();
+                unacknowledgedUpdates_.addAll(other.unacknowledgedUpdates_);
+              }
+              onChanged();
+            }
+          } else {
+            if (!other.unacknowledgedUpdates_.isEmpty()) {
+              if (unacknowledgedUpdatesBuilder_.isEmpty()) {
+                unacknowledgedUpdatesBuilder_.dispose();
+                unacknowledgedUpdatesBuilder_ = null;
+                unacknowledgedUpdates_ = other.unacknowledgedUpdates_;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                unacknowledgedUpdatesBuilder_ = 
+                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                     getUnacknowledgedUpdatesFieldBuilder() : null;
+              } else {
+                unacknowledgedUpdatesBuilder_.addAllMessages(other.unacknowledgedUpdates_);
+              }
+            }
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          for (int i = 0; i < getUnacknowledgedTasksCount(); i++) {
+            if (!getUnacknowledgedTasks(i).isInitialized()) {
+              
+              return false;
+            }
+          }
+          for (int i = 0; i < getUnacknowledgedUpdatesCount(); i++) {
+            if (!getUnacknowledgedUpdates(i).isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.executor.Protos.Call.Subscribe parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.executor.Protos.Call.Subscribe) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // repeated .mesos.v1.TaskInfo unacknowledged_tasks = 1;
+        private java.util.List<org.apache.mesos.v1.Protos.TaskInfo> unacknowledgedTasks_ =
+          java.util.Collections.emptyList();
+        private void ensureUnacknowledgedTasksIsMutable() {
+          if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+            unacknowledgedTasks_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.TaskInfo>(unacknowledgedTasks_);
+            bitField0_ |= 0x00000001;
+           }
+        }
+
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.v1.Protos.TaskInfo, org.apache.mesos.v1.Protos.TaskInfo.Builder, org.apache.mesos.v1.Protos.TaskInfoOrBuilder> unacknowledgedTasksBuilder_;
+
+        /**
+         * <code>repeated .mesos.v1.TaskInfo unacknowledged_tasks = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.v1.Protos.TaskInfo> getUnacknowledgedTasksList() {
+          if (unacknowledgedTasksBuilder_ == null) {
+            return java.util.Collections.unmodifiableList(unacknowledgedTasks_);
+          } else {
+            return unacknowledgedTasksBuilder_.getMessageList();
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.TaskInfo unacknowledged_tasks = 1;</code>
+         */
+        public int getUnacknowledgedTasksCount() {
+          if (unacknowledgedTasksBuilder_ == null) {
+            return unacknowledgedTasks_.size();
+          } else {
+            return unacknowledgedTasksBuilder_.getCount();
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.TaskInfo unacknowledged_tasks = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.TaskInfo getUnacknowledgedTasks(int index) {
+          if (unacknowledgedTasksBuilder_ == null) {
+            return unacknowledgedTasks_.get(index);
+          } else {
+            return unacknowledgedTasksBuilder_.getMessage(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.TaskInfo unacknowledged_tasks = 1;</code>
+         */
+        public Builder setUnacknowledgedTasks(
+            int index, org.apache.mesos.v1.Protos.TaskInfo value) {
+          if (unacknowledgedTasksBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureUnacknowledgedTasksIsMutable();
+            unacknowledgedTasks_.set(index, value);
+            onChanged();
+          } else {
+            unacknowledgedTasksBuilder_.setMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.TaskInfo unacknowledged_tasks = 1;</code>
+         */
+        public Builder setUnacknowledgedTasks(
+            int index, org.apache.mesos.v1.Protos.TaskInfo.Builder builderForValue) {
+          if (unacknowledgedTasksBuilder_ == null) {
+            ensureUnacknowledgedTasksIsMutable();
+            unacknowledgedTasks_.set(index, builderForValue.build());
+            onChanged();
+          } else {
+            unacknowledgedTasksBuilder_.setMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.TaskInfo unacknowledged_tasks = 1;</code>
+         */
+        public Builder addUnacknowledgedTasks(org.apache.mesos.v1.Protos.TaskInfo value) {
+          if (unacknowledgedTasksBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureUnacknowledgedTasksIsMutable();
+            unacknowledgedTasks_.add(value);
+            onChanged();
+          } else {
+            unacknowledgedTasksBuilder_.addMessage(value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.TaskInfo unacknowledged_tasks = 1;</code>
+         */
+        public Builder addUnacknowledgedTasks(
+            int index, org.apache.mesos.v1.Protos.TaskInfo value) {
+          if (unacknowledgedTasksBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureUnacknowledgedTasksIsMutable();
+            unacknowledgedTasks_.add(index, value);
+            onChanged();
+          } else {
+            unacknowledgedTasksBuilder_.addMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.TaskInfo unacknowledged_tasks = 1;</code>
+         */
+        public Builder addUnacknowledgedTasks(
+            org.apache.mesos.v1.Protos.TaskInfo.Builder builderForValue) {
+          if (unacknowledgedTasksBuilder_ == null) {
+            ensureUnacknowledgedTasksIsMutable();
+            unacknowledgedTasks_.add(builderForValue.build());
+            onChanged();
+          } else {
+            unacknowledgedTasksBuilder_.addMessage(builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.TaskInfo unacknowledged_tasks = 1;</code>
+         */
+        public Builder addUnacknowledgedTasks(
+            int index, org.apache.mesos.v1.Protos.TaskInfo.Builder builderForValue) {
+          if (unacknowledgedTasksBuilder_ == null) {
+            ensureUnacknowledgedTasksIsMutable();
+            unacknowledgedTasks_.add(index, builderForValue.build());
+            onChanged();
+          } else {
+            unacknowledgedTasksBuilder_.addMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.TaskInfo unacknowledged_tasks = 1;</code>
+         */
+        public Builder addAllUnacknowledgedTasks(
+            java.lang.Iterable<? extends org.apache.mesos.v1.Protos.TaskInfo> values) {
+          if (unacknowledgedTasksBuilder_ == null) {
+            ensureUnacknowledgedTasksIsMutable();
+            super.addAll(values, unacknowledgedTasks_);
+            onChanged();
+          } else {
+            unacknowledgedTasksBuilder_.addAllMessages(values);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.TaskInfo unacknowledged_tasks = 1;</code>
+         */
+        public Builder clearUnacknowledgedTasks() {
+          if (unacknowledgedTasksBuilder_ == null) {
+            unacknowledgedTasks_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000001);
+            onChanged();
+          } else {
+            unacknowledgedTasksBuilder_.clear();
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.TaskInfo unacknowledged_tasks = 1;</code>
+         */
+        public Builder removeUnacknowledgedTasks(int index) {
+          if (unacknowledgedTasksBuilder_ == null) {
+            ensureUnacknowledgedTasksIsMutable();
+            unacknowledgedTasks_.remove(index);
+            onChanged();
+          } else {
+            unacknowledgedTasksBuilder_.remove(index);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.TaskInfo unacknowledged_tasks = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.TaskInfo.Builder getUnacknowledgedTasksBuilder(
+            int index) {
+          return getUnacknowledgedTasksFieldBuilder().getBuilder(index);
+        }
+        /**
+         * <code>repeated .mesos.v1.TaskInfo unacknowledged_tasks = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.TaskInfoOrBuilder getUnacknowledgedTasksOrBuilder(
+            int index) {
+          if (unacknowledgedTasksBuilder_ == null) {
+            return unacknowledgedTasks_.get(index);  } else {
+            return unacknowledgedTasksBuilder_.getMessageOrBuilder(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.TaskInfo unacknowledged_tasks = 1;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.v1.Protos.TaskInfoOrBuilder> 
+             getUnacknowledgedTasksOrBuilderList() {
+          if (unacknowledgedTasksBuilder_ != null) {
+            return unacknowledgedTasksBuilder_.getMessageOrBuilderList();
+          } else {
+            return java.util.Collections.unmodifiableList(unacknowledgedTasks_);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.TaskInfo unacknowledged_tasks = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.TaskInfo.Builder addUnacknowledgedTasksBuilder() {
+          return getUnacknowledgedTasksFieldBuilder().addBuilder(
+              org.apache.mesos.v1.Protos.TaskInfo.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.v1.TaskInfo unacknowledged_tasks = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.TaskInfo.Builder addUnacknowledgedTasksBuilder(
+            int index) {
+          return getUnacknowledgedTasksFieldBuilder().addBuilder(
+              index, org.apache.mesos.v1.Protos.TaskInfo.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.v1.TaskInfo unacknowledged_tasks = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.v1.Protos.TaskInfo.Builder> 
+             getUnacknowledgedTasksBuilderList() {
+          return getUnacknowledgedTasksFieldBuilder().getBuilderList();
+        }
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.v1.Protos.TaskInfo, org.apache.mesos.v1.Protos.TaskInfo.Builder, org.apache.mesos.v1.Protos.TaskInfoOrBuilder> 
+            getUnacknowledgedTasksFieldBuilder() {
+          if (unacknowledgedTasksBuilder_ == null) {
+            unacknowledgedTasksBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.v1.Protos.TaskInfo, org.apache.mesos.v1.Protos.TaskInfo.Builder, org.apache.mesos.v1.Protos.TaskInfoOrBuilder>(
+                    unacknowledgedTasks_,
+                    ((bitField0_ & 0x00000001) == 0x00000001),
+                    getParentForChildren(),
+                    isClean());
+            unacknowledgedTasks_ = null;
+          }
+          return unacknowledgedTasksBuilder_;
+        }
+
+        // repeated .mesos.v1.executor.Call.Update unacknowledged_updates = 2;
+        private java.util.List<org.apache.mesos.v1.executor.Protos.Call.Update> unacknowledgedUpdates_ =
+          java.util.Collections.emptyList();
+        private void ensureUnacknowledgedUpdatesIsMutable() {
+          if (!((bitField0_ & 0x00000002) == 0x00000002)) {
+            unacknowledgedUpdates_ = new java.util.ArrayList<org.apache.mesos.v1.executor.Protos.Call.Update>(unacknowledgedUpdates_);
+            bitField0_ |= 0x00000002;
+           }
+        }
+
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.v1.executor.Protos.Call.Update, org.apache.mesos.v1.executor.Protos.Call.Update.Builder, org.apache.mesos.v1.executor.Protos.Call.UpdateOrBuilder> unacknowledgedUpdatesBuilder_;
+
+        /**
+         * <code>repeated .mesos.v1.executor.Call.Update unacknowledged_updates = 2;</code>
+         */
+        public java.util.List<org.apache.mesos.v1.executor.Protos.Call.Update> getUnacknowledgedUpdatesList() {
+          if (unacknowledgedUpdatesBuilder_ == null) {
+            return java.util.Collections.unmodifiableList(unacknowledgedUpdates_);
+          } else {
+            return unacknowledgedUpdatesBuilder_.getMessageList();
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.executor.Call.Update unacknowledged_updates = 2;</code>
+         */
+        public int getUnacknowledgedUpdatesCount() {
+          if (unacknowledgedUpdatesBuilder_ == null) {
+            return unacknowledgedUpdates_.size();
+          } else {
+            return unacknowledgedUpdatesBuilder_.getCount();
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.executor.Call.Update unacknowledged_updates = 2;</code>
+         */
+        public org.apache.mesos.v1.executor.Protos.Call.Update getUnacknowledgedUpdates(int index) {
+          if (unacknowledgedUpdatesBuilder_ == null) {
+            return unacknowledgedUpdates_.get(index);
+          } else {
+            return unacknowledgedUpdatesBuilder_.getMessage(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.executor.Call.Update unacknowledged_updates = 2;</code>
+         */
+        public Builder setUnacknowledgedUpdates(
+            int index, org.apache.mesos.v1.executor.Protos.Call.Update value) {
+          if (unacknowledgedUpdatesBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureUnacknowledgedUpdatesIsMutable();
+            unacknowledgedUpdates_.set(index, value);
+            onChanged();
+          } else {
+            unacknowledgedUpdatesBuilder_.setMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.executor.Call.Update unacknowledged_updates = 2;</code>
+         */
+        public Builder setUnacknowledgedUpdates(
+            int index, org.apache.mesos.v1.executor.Protos.Call.Update.Builder builderForValue) {
+          if (unacknowledgedUpdatesBuilder_ == null) {
+            ensureUnacknowledgedUpdatesIsMutable();
+            unacknowledgedUpdates_.set(index, builderForValue.build());
+            onChanged();
+          } else {
+            unacknowledgedUpdatesBuilder_.setMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.executor.Call.Update unacknowledged_updates = 2;</code>
+         */
+        public Builder addUnacknowledgedUpdates(org.apache.mesos.v1.executor.Protos.Call.Update value) {
+          if (unacknowledgedUpdatesBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureUnacknowledgedUpdatesIsMutable();
+            unacknowledgedUpdates_.add(value);
+            onChanged();
+          } else {
+            unacknowledgedUpdatesBuilder_.addMessage(value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.executor.Call.Update unacknowledged_updates = 2;</code>
+         */
+        public Builder addUnacknowledgedUpdates(
+            int index, org.apache.mesos.v1.executor.Protos.Call.Update value) {
+          if (unacknowledgedUpdatesBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureUnacknowledgedUpdatesIsMutable();
+            unacknowledgedUpdates_.add(index, value);
+            onChanged();
+          } else {
+            unacknowledgedUpdatesBuilder_.addMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.executor.Call.Update unacknowledged_updates = 2;</code>
+         */
+        public Builder addUnacknowledgedUpdates(
+            org.apache.mesos.v1.executor.Protos.Call.Update.Builder builderForValue) {
+          if (unacknowledgedUpdatesBuilder_ == null) {
+            ensureUnacknowledgedUpdatesIsMutable();
+            unacknowledgedUpdates_.add(builderForValue.build());
+            onChanged();
+          } else {
+            unacknowledgedUpdatesBuilder_.addMessage(builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.executor.Call.Update unacknowledged_updates = 2;</code>
+         */
+        public Builder addUnacknowledgedUpdates(
+            int index, org.apache.mesos.v1.executor.Protos.Call.Update.Builder builderForValue) {
+          if (unacknowledgedUpdatesBuilder_ == null) {
+            ensureUnacknowledgedUpdatesIsMutable();
+            unacknowledgedUpdates_.add(index, builderForValue.build());
+            onChanged();
+          } else {
+            unacknowledgedUpdatesBuilder_.addMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.executor.Call.Update unacknowledged_updates = 2;</code>
+         */
+        public Builder addAllUnacknowledgedUpdates(
+            java.lang.Iterable<? extends org.apache.mesos.v1.executor.Protos.Call.Update> values) {
+          if (unacknowledgedUpdatesBuilder_ == null) {
+            ensureUnacknowledgedUpdatesIsMutable();
+            super.addAll(values, unacknowledgedUpdates_);
+            onChanged();
+          } else {
+            unacknowledgedUpdatesBuilder_.addAllMessages(values);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.executor.Call.Update unacknowledged_updates = 2;</code>
+         */
+        public Builder clearUnacknowledgedUpdates() {
+          if (unacknowledgedUpdatesBuilder_ == null) {
+            unacknowledgedUpdates_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000002);
+            onChanged();
+          } else {
+            unacknowledgedUpdatesBuilder_.clear();
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.executor.Call.Update unacknowledged_updates = 2;</code>
+         */
+        public Builder removeUnacknowledgedUpdates(int index) {
+          if (unacknowledgedUpdatesBuilder_ == null) {
+            ensureUnacknowledgedUpdatesIsMutable();
+            unacknowledgedUpdates_.remove(index);
+            onChanged();
+          } else {
+            unacknowledgedUpdatesBuilder_.remove(index);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.executor.Call.Update unacknowledged_updates = 2;</code>
+         */
+        public org.apache.mesos.v1.executor.Protos.Call.Update.Builder getUnacknowledgedUpdatesBuilder(
+            int index) {
+          return getUnacknowledgedUpdatesFieldBuilder().getBuilder(index);
+        }
+        /**
+         * <code>repeated .mesos.v1.executor.Call.Update unacknowledged_updates = 2;</code>
+         */
+        public org.apache.mesos.v1.executor.Protos.Call.UpdateOrBuilder getUnacknowledgedUpdatesOrBuilder(
+            int index) {
+          if (unacknowledgedUpdatesBuilder_ == null) {
+            return unacknowledgedUpdates_.get(index);  } else {
+            return unacknowledgedUpdatesBuilder_.getMessageOrBuilder(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.executor.Call.Update unacknowledged_updates = 2;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.v1.executor.Protos.Call.UpdateOrBuilder> 
+             getUnacknowledgedUpdatesOrBuilderList() {
+          if (unacknowledgedUpdatesBuilder_ != null) {
+            return unacknowledgedUpdatesBuilder_.getMessageOrBuilderList();
+          } else {
+            return java.util.Collections.unmodifiableList(unacknowledgedUpdates_);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.executor.Call.Update unacknowledged_updates = 2;</code>
+         */
+        public org.apache.mesos.v1.executor.Protos.Call.Update.Builder addUnacknowledgedUpdatesBuilder() {
+          return getUnacknowledgedUpdatesFieldBuilder().addBuilder(
+              org.apache.mesos.v1.executor.Protos.Call.Update.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.v1.executor.Call.Update unacknowledged_updates = 2;</code>
+         */
+        public org.apache.mesos.v1.executor.Protos.Call.Update.Builder addUnacknowledgedUpdatesBuilder(
+            int index) {
+          return getUnacknowledgedUpdatesFieldBuilder().addBuilder(
+              index, org.apache.mesos.v1.executor.Protos.Call.Update.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.v1.executor.Call.Update unacknowledged_updates = 2;</code>
+         */
+        public java.util.List<org.apache.mesos.v1.executor.Protos.Call.Update.Builder> 
+             getUnacknowledgedUpdatesBuilderList() {
+          return getUnacknowledgedUpdatesFieldBuilder().getBuilderList();
+        }
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.v1.executor.Protos.Call.Update, org.apache.mesos.v1.executor.Protos.Call.Update.Builder, org.apache.mesos.v1.executor.Protos.Call.UpdateOrBuilder> 
+            getUnacknowledgedUpdatesFieldBuilder() {
+          if (unacknowledgedUpdatesBuilder_ == null) {
+            unacknowledgedUpdatesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.v1.executor.Protos.Call.Update, org.apache.mesos.v1.executor.Protos.Call.Update.Builder, org.apache.mesos.v1.executor.Protos.Call.UpdateOrBuilder>(
+                    unacknowledgedUpdates_,
+                    ((bitField0_ & 0x00000002) == 0x00000002),
+                    getParentForChildren(),
+                    isClean());
+            unacknowledgedUpdates_ = null;
+          }
+          return unacknowledgedUpdatesBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.executor.Call.Subscribe)
+      }
+
+      static {
+        defaultInstance = new Subscribe(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.executor.Call.Subscribe)
+    }
+
+    public interface UpdateOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required .mesos.v1.TaskStatus status = 1;
+      /**
+       * <code>required .mesos.v1.TaskStatus status = 1;</code>
+       */
+      boolean hasStatus();
+      /**
+       * <code>required .mesos.v1.TaskStatus status = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.TaskStatus getStatus();
+      /**
+       * <code>required .mesos.v1.TaskStatus status = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.TaskStatusOrBuilder getStatusOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.executor.Call.Update}
+     *
+     * <pre>
+     * Notifies the scheduler that a task has transitioned from one
+     * state to another. Status updates should be used by executors
+     * to reliably communicate the status of the tasks that they
+     * manage. It is crucial that a terminal update (see TaskState
+     * in v1/mesos.proto) is sent to the scheduler as soon as the task
+     * terminates, in order for Mesos to release the resources allocated
+     * to the task. It is the responsibility of the scheduler to
+     * explicitly acknowledge the receipt of a status update. See
+     * 'Acknowledged' in the 'Events' section above for the semantics.
+     * </pre>
+     */
+    public static final class Update extends
+        com.google.protobuf.GeneratedMessage
+        implements UpdateOrBuilder {
+      // Use Update.newBuilder() to construct.
+      private Update(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Update(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Update defaultInstance;
+      public static Update getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Update getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Update(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.v1.Protos.TaskStatus.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = status_.toBuilder();
+                }
+                status_ = input.readMessage(org.apache.mesos.v1.Protos.TaskStatus.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(status_);
+                  status_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Call_Update_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Call_Update_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.executor.Protos.Call.Update.class, org.apache.mesos.v1.executor.Protos.Call.Update.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Update> PARSER =
+          new com.google.protobuf.AbstractParser<Update>() {
+        public Update parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Update(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Update> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required .mesos.v1.TaskStatus status = 1;
+      public static final int STATUS_FIELD_NUMBER = 1;
+      private org.apache.mesos.v1.Protos.TaskStatus status_;
+      /**
+       * <code>required .mesos.v1.TaskStatus status = 1;</code>
+       */
+      public boolean hasStatus() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.v1.TaskStatus status = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.TaskStatus getStatus() {
+        return status_;
+      }
+      /**
+       * <code>required .mesos.v1.TaskStatus status = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.TaskStatusOrBuilder getStatusOrBuilder() {
+        return status_;
+      }
+
+      private void initFields() {
+        status_ = org.apache.mesos.v1.Protos.TaskStatus.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasStatus()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getStatus().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, status_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, status_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.executor.Protos.Call.Update parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Call.Update parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Call.Update parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Call.Update parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Call.Update parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Call.Update parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Call.Update parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Call.Update parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Call.Update parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Call.Update parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.executor.Protos.Call.Update prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.executor.Call.Update}
+       *
+       * <pre>
+       * Notifies the scheduler that a task has transitioned from one
+       * state to another. Status updates should be used by executors
+       * to reliably communicate the status of the tasks that they
+       * manage. It is crucial that a terminal update (see TaskState
+       * in v1/mesos.proto) is sent to the scheduler as soon as the task
+       * terminates, in order for Mesos to release the resources allocated
+       * to the task. It is the responsibility of the scheduler to
+       * explicitly acknowledge the receipt of a status update. See
+       * 'Acknowledged' in the 'Events' section above for the semantics.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.executor.Protos.Call.UpdateOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Call_Update_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Call_Update_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.executor.Protos.Call.Update.class, org.apache.mesos.v1.executor.Protos.Call.Update.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.executor.Protos.Call.Update.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getStatusFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (statusBuilder_ == null) {
+            status_ = org.apache.mesos.v1.Protos.TaskStatus.getDefaultInstance();
+          } else {
+            statusBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Call_Update_descriptor;
+        }
+
+        public org.apache.mesos.v1.executor.Protos.Call.Update getDefaultInstanceForType() {
+          return org.apache.mesos.v1.executor.Protos.Call.Update.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.executor.Protos.Call.Update build() {
+          org.apache.mesos.v1.executor.Protos.Call.Update result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.executor.Protos.Call.Update buildPartial() {
+          org.apache.mesos.v1.executor.Protos.Call.Update result = new org.apache.mesos.v1.executor.Protos.Call.Update(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (statusBuilder_ == null) {
+            result.status_ = status_;
+          } else {
+            result.status_ = statusBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.executor.Protos.Call.Update) {
+            return mergeFrom((org.apache.mesos.v1.executor.Protos.Call.Update)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.executor.Protos.Call.Update other) {
+          if (other == org.apache.mesos.v1.executor.Protos.Call.Update.getDefaultInstance()) return this;
+          if (other.hasStatus()) {
+            mergeStatus(other.getStatus());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasStatus()) {
+            
+            return false;
+          }
+          if (!getStatus().isInitialized()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.executor.Protos.Call.Update parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.executor.Protos.Call.Update) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required .mesos.v1.TaskStatus status = 1;
+        private org.apache.mesos.v1.Protos.TaskStatus status_ = org.apache.mesos.v1.Protos.TaskStatus.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.TaskStatus, org.apache.mesos.v1.Protos.TaskStatus.Builder, org.apache.mesos.v1.Protos.TaskStatusOrBuilder> statusBuilder_;
+        /**
+         * <code>required .mesos.v1.TaskStatus status = 1;</code>
+         */
+        public boolean hasStatus() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.v1.TaskStatus status = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.TaskStatus getStatus() {
+          if (statusBuilder_ == null) {
+            return status_;
+          } else {
+            return statusBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.v1.TaskStatus status = 1;</code>
+         */
+        public Builder setStatus(org.apache.mesos.v1.Protos.TaskStatus value) {
+          if (statusBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            status_ = value;
+            onChanged();
+          } else {
+            statusBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.TaskStatus status = 1;</code>
+         */
+        public Builder setStatus(
+            org.apache.mesos.v1.Protos.TaskStatus.Builder builderForValue) {
+          if (statusBuilder_ == null) {
+            status_ = builderForValue.build();
+            onChanged();
+          } else {
+            statusBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.TaskStatus status = 1;</code>
+         */
+        public Builder mergeStatus(org.apache.mesos.v1.Protos.TaskStatus value) {
+          if (statusBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                status_ != org.apache.mesos.v1.Protos.TaskStatus.getDefaultInstance()) {
+              status_ =
+                org.apache.mesos.v1.Protos.TaskStatus.newBuilder(status_).mergeFrom(value).buildPartial();
+            } else {
+              status_ = value;
+            }
+            onChanged();
+          } else {
+            statusBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.TaskStatus status = 1;</code>
+         */
+        public Builder clearStatus() {
+          if (statusBuilder_ == null) {
+            status_ = org.apache.mesos.v1.Protos.TaskStatus.getDefaultInstance();
+            onChanged();
+          } else {
+            statusBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.TaskStatus status = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.TaskStatus.Builder getStatusBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getStatusFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.v1.TaskStatus status = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.TaskStatusOrBuilder getStatusOrBuilder() {
+          if (statusBuilder_ != null) {
+            return statusBuilder_.getMessageOrBuilder();
+          } else {
+            return status_;
+          }
+        }
+        /**
+         * <code>required .mesos.v1.TaskStatus status = 1;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.TaskStatus, org.apache.mesos.v1.Protos.TaskStatus.Builder, org.apache.mesos.v1.Protos.TaskStatusOrBuilder> 
+            getStatusFieldBuilder() {
+          if (statusBuilder_ == null) {
+            statusBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.TaskStatus, org.apache.mesos.v1.Protos.TaskStatus.Builder, org.apache.mesos.v1.Protos.TaskStatusOrBuilder>(
+                    status_,
+                    getParentForChildren(),
+                    isClean());
+            status_ = null;
+          }
+          return statusBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.executor.Call.Update)
+      }
+
+      static {
+        defaultInstance = new Update(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.executor.Call.Update)
+    }
+
+    public interface MessageOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required bytes data = 2;
+      /**
+       * <code>required bytes data = 2;</code>
+       */
+      boolean hasData();
+      /**
+       * <code>required bytes data = 2;</code>
+       */
+      com.google.protobuf.ByteString getData();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.executor.Call.Message}
+     *
+     * <pre>
+     * Sends arbitrary binary data to the scheduler. Note that Mesos
+     * neither interprets this data nor makes any guarantees about the
+     * delivery of this message to the scheduler.
+     * See 'Message' in the 'Events' section.
+     * </pre>
+     */
+    public static final class Message extends
+        com.google.protobuf.GeneratedMessage
+        implements MessageOrBuilder {
+      // Use Message.newBuilder() to construct.
+      private Message(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Message(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Message defaultInstance;
+      public static Message getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Message getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Message(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 18: {
+                bitField0_ |= 0x00000001;
+                data_ = input.readBytes();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Call_Message_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Call_Message_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.executor.Protos.Call.Message.class, org.apache.mesos.v1.executor.Protos.Call.Message.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Message> PARSER =
+          new com.google.protobuf.AbstractParser<Message>() {
+        public Message parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Message(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Message> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required bytes data = 2;
+      public static final int DATA_FIELD_NUMBER = 2;
+      private com.google.protobuf.ByteString data_;
+      /**
+       * <code>required bytes data = 2;</code>
+       */
+      public boolean hasData() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required bytes data = 2;</code>
+       */
+      public com.google.protobuf.ByteString getData() {
+        return data_;
+      }
+
+      private void initFields() {
+        data_ = com.google.protobuf.ByteString.EMPTY;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasData()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeBytes(2, data_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(2, data_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.executor.Protos.Call.Message parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Call.Message parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Call.Message parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Call.Message parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Call.Message parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Call.Message parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Call.Message parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Call.Message parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Call.Message parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.executor.Protos.Call.Message parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.executor.Protos.Call.Message prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.executor.Call.Message}
+       *
+       * <pre>
+       * Sends arbitrary binary data to the scheduler. Note that Mesos
+       * neither interprets this data nor makes any guarantees about the
+       * delivery of this message to the scheduler.
+       * See 'Message' in the 'Events' section.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.executor.Protos.Call.MessageOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Call_Message_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Call_Message_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.executor.Protos.Call.Message.class, org.apache.mesos.v1.executor.Protos.Call.Message.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.executor.Protos.Call.Message.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          data_ = com.google.protobuf.ByteString.EMPTY;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Call_Message_descriptor;
+        }
+
+        public org.apache.mesos.v1.executor.Protos.Call.Message getDefaultInstanceForType() {
+          return org.apache.mesos.v1.executor.Protos.Call.Message.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.executor.Protos.Call.Message build() {
+          org.apache.mesos.v1.executor.Protos.Call.Message result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.executor.Protos.Call.Message buildPartial() {
+          org.apache.mesos.v1.executor.Protos.Call.Message result = new org.apache.mesos.v1.executor.Protos.Call.Message(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.data_ = data_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.executor.Protos.Call.Message) {
+            return mergeFrom((org.apache.mesos.v1.executor.Protos.Call.Message)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.executor.Protos.Call.Message other) {
+          if (other == org.apache.mesos.v1.executor.Protos.Call.Message.getDefaultInstance()) return this;
+          if (other.hasData()) {
+            setData(other.getData());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasData()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.executor.Protos.Call.Message parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.executor.Protos.Call.Message) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required bytes data = 2;
+        private com.google.protobuf.ByteString data_ = com.google.protobuf.ByteString.EMPTY;
+        /**
+         * <code>required bytes data = 2;</code>
+         */
+        public boolean hasData() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required bytes data = 2;</code>
+         */
+        public com.google.protobuf.ByteString getData() {
+          return data_;
+        }
+        /**
+         * <code>required bytes data = 2;</code>
+         */
+        public Builder setData(com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          data_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required bytes data = 2;</code>
+         */
+        public Builder clearData() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          data_ = getDefaultInstance().getData();
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.executor.Call.Message)
+      }
+
+      static {
+        defaultInstance = new Message(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.executor.Call.Message)
+    }
+
+    private int bitField0_;
+    // required .mesos.v1.ExecutorID executor_id = 1;
+    public static final int EXECUTOR_ID_FIELD_NUMBER = 1;
+    private org.apache.mesos.v1.Protos.ExecutorID executorId_;
+    /**
+     * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+     *
+     * <pre>
+     * Identifies the executor which generated this call.
+     * </pre>
+     */
+    public boolean hasExecutorId() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+     *
+     * <pre>
+     * Identifies the executor which generated this call.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.ExecutorID getExecutorId() {
+      return executorId_;
+    }
+    /**
+     * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+     *
+     * <pre>
+     * Identifies the executor which generated this call.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder() {
+      return executorId_;
+    }
+
+    // required .mesos.v1.FrameworkID framework_id = 2;
+    public static final int FRAMEWORK_ID_FIELD_NUMBER = 2;
+    private org.apache.mesos.v1.Protos.FrameworkID frameworkId_;
+    /**
+     * <code>required .mesos.v1.FrameworkID framework_id = 2;</code>
+     */
+    public boolean hasFrameworkId() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>required .mesos.v1.FrameworkID framework_id = 2;</code>
+     */
+    public org.apache.mesos.v1.Protos.FrameworkID getFrameworkId() {
+      return frameworkId_;
+    }
+    /**
+     * <code>required .mesos.v1.FrameworkID framework_id = 2;</code>
+     */
+    public org.apache.mesos.v1.Protos.FrameworkIDOrBuilder getFrameworkIdOrBuilder() {
+      return frameworkId_;
+    }
+
+    // optional .mesos.v1.executor.Call.Type type = 3;
+    public static final int TYPE_FIELD_NUMBER = 3;
+    private org.apache.mesos.v1.executor.Protos.Call.Type type_;
+    /**
+     * <code>optional .mesos.v1.executor.Call.Type type = 3;</code>
+     *
+     * <pre>
+     * Type of the call, indicates which optional field below should be
+     * present if that type has a nested message definition.
+     * In case type is SUBSCRIBED, no message needs to be set.
+     * See comments on `Event::Type` above on the reasoning behind this
+     * field being optional.
+     * </pre>
+     */
+    public boolean hasType() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional .mesos.v1.executor.Call.Type type = 3;</code>
+     *
+     * <pre>
+     * Type of the call, indicates which optional field below should be
+     * present if that type has a nested message definition.
+     * In case type is SUBSCRIBED, no message needs to be set.
+     * See comments on `Event::Type` above on the reasoning behind this
+     * field being optional.
+     * </pre>
+     */
+    public org.apache.mesos.v1.executor.Protos.Call.Type getType() {
+      return type_;
+    }
+
+    // optional .mesos.v1.executor.Call.Subscribe subscribe = 4;
+    public static final int SUBSCRIBE_FIELD_NUMBER = 4;
+    private org.apache.mesos.v1.executor.Protos.Call.Subscribe subscribe_;
+    /**
+     * <code>optional .mesos.v1.executor.Call.Subscribe subscribe = 4;</code>
+     */
+    public boolean hasSubscribe() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional .mesos.v1.executor.Call.Subscribe subscribe = 4;</code>
+     */
+    public org.apache.mesos.v1.executor.Protos.Call.Subscribe getSubscribe() {
+      return subscribe_;
+    }
+    /**
+     * <code>optional .mesos.v1.executor.Call.Subscribe subscribe = 4;</code>
+     */
+    public org.apache.mesos.v1.executor.Protos.Call.SubscribeOrBuilder getSubscribeOrBuilder() {
+      return subscribe_;
+    }
+
+    // optional .mesos.v1.executor.Call.Update update = 5;
+    public static final int UPDATE_FIELD_NUMBER = 5;
+    private org.apache.mesos.v1.executor.Protos.Call.Update update_;
+    /**
+     * <code>optional .mesos.v1.executor.Call.Update update = 5;</code>
+     */
+    public boolean hasUpdate() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional .mesos.v1.executor.Call.Update update = 5;</code>
+     */
+    public org.apache.mesos.v1.executor.Protos.Call.Update getUpdate() {
+      return update_;
+    }
+    /**
+     * <code>optional .mesos.v1.executor.Call.Update update = 5;</code>
+     */
+    public org.apache.mesos.v1.executor.Protos.Call.UpdateOrBuilder getUpdateOrBuilder() {
+      return update_;
+    }
+
+    // optional .mesos.v1.executor.Call.Message message = 6;
+    public static final int MESSAGE_FIELD_NUMBER = 6;
+    private org.apache.mesos.v1.executor.Protos.Call.Message message_;
+    /**
+     * <code>optional .mesos.v1.executor.Call.Message message = 6;</code>
+     */
+    public boolean hasMessage() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional .mesos.v1.executor.Call.Message message = 6;</code>
+     */
+    public org.apache.mesos.v1.executor.Protos.Call.Message getMessage() {
+      return message_;
+    }
+    /**
+     * <code>optional .mesos.v1.executor.Call.Message message = 6;</code>
+     */
+    public org.apache.mesos.v1.executor.Protos.Call.MessageOrBuilder getMessageOrBuilder() {
+      return message_;
+    }
+
+    private void initFields() {
+      executorId_ = org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance();
+      frameworkId_ = org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance();
+      type_ = org.apache.mesos.v1.executor.Protos.Call.Type.UNKNOWN;
+      subscribe_ = org.apache.mesos.v1.executor.Protos.Call.Subscribe.getDefaultInstance();
+      update_ = org.apache.mesos.v1.executor.Protos.Call.Update.getDefaultInstance();
+      message_ = org.apache.mesos.v1.executor.Protos.Call.Message.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasExecutorId()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasFrameworkId()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!getExecutorId().isInitialized()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!getFrameworkId().isInitialized()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (hasSubscribe()) {
+        if (!getSubscribe().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasUpdate()) {
+        if (!getUpdate().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasMessage()) {
+        if (!getMessage().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeMessage(1, executorId_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(2, frameworkId_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeEnum(3, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeMessage(4, subscribe_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeMessage(5, update_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeMessage(6, message_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, executorId_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, frameworkId_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(3, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, subscribe_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(5, update_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(6, message_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.executor.Protos.Call parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.executor.Protos.Call parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.executor.Protos.Call parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.executor.Protos.Call parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.executor.Protos.Call parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.executor.Protos.Call parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.executor.Protos.Call parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.executor.Protos.Call parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.executor.Protos.Call parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.executor.Protos.Call parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.executor.Protos.Call prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.executor.Call}
+     *
+     * <pre>
+     **
+     * Executor call API.
+     *
+     * Like Event, a Call is described using the standard protocol buffer
+     * "union" trick (see above).
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.executor.Protos.CallOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Call_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Call_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.executor.Protos.Call.class, org.apache.mesos.v1.executor.Protos.Call.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.executor.Protos.Call.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getExecutorIdFieldBuilder();
+          getFrameworkIdFieldBuilder();
+          getSubscribeFieldBuilder();
+          getUpdateFieldBuilder();
+          getMessageFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (executorIdBuilder_ == null) {
+          executorId_ = org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance();
+        } else {
+          executorIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (frameworkIdBuilder_ == null) {
+          frameworkId_ = org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance();
+        } else {
+          frameworkIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        type_ = org.apache.mesos.v1.executor.Protos.Call.Type.UNKNOWN;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        if (subscribeBuilder_ == null) {
+          subscribe_ = org.apache.mesos.v1.executor.Protos.Call.Subscribe.getDefaultInstance();
+        } else {
+          subscribeBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        if (updateBuilder_ == null) {
+          update_ = org.apache.mesos.v1.executor.Protos.Call.Update.getDefaultInstance();
+        } else {
+          updateBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        if (messageBuilder_ == null) {
+          message_ = org.apache.mesos.v1.executor.Protos.Call.Message.getDefaultInstance();
+        } else {
+          messageBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.executor.Protos.internal_static_mesos_v1_executor_Call_descriptor;
+      }
+
+      public org.apache.mesos.v1.executor.Protos.Call getDefaultInstanceForType() {
+        return org.apache.mesos.v1.executor.Protos.Call.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.executor.Protos.Call build() {
+        org.apache.mesos.v1.executor.Protos.Call result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.executor.Protos.Call buildPartial() {
+        org.apache.mesos.v1.executor.Protos.Call result = new org.apache.mesos.v1.executor.Protos.Call(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        if (executorIdBuilder_ == null) {
+          result.executorId_ = executorId_;
+        } else {
+          result.executorId_ = executorIdBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (frameworkIdBuilder_ == null) {
+          result.frameworkId_ = frameworkId_;
+        } else {
+          result.frameworkId_ = frameworkIdBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.type_ = type_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        if (subscribeBuilder_ == null) {
+          result.subscribe_ = subscribe_;
+        } else {
+          result.subscribe_ = subscribeBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        if (updateBuilder_ == null) {
+          result.update_ = update_;
+        } else {
+          result.update_ = updateBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        if (messageBuilder_ == null) {
+          result.message_ = message_;
+        } else {
+          result.message_ = messageBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.executor.Protos.Call) {
+          return mergeFrom((org.apache.mesos.v1.executor.Protos.Call)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.executor.Protos.Call other) {
+        if (other == org.apache.mesos.v1.executor.Protos.Call.getDefaultInstance()) return this;
+        if (other.hasExecutorId()) {
+          mergeExecutorId(other.getExecutorId());
+        }
+        if (other.hasFrameworkId()) {
+          mergeFrameworkId(other.getFrameworkId());
+        }
+        if (other.hasType()) {
+          setType(other.getType());
+        }
+        if (other.hasSubscribe()) {
+          mergeSubscribe(other.getSubscribe());
+        }
+        if (other.hasUpdate()) {
+          mergeUpdate(other.getUpdate());
+        }
+        if (other.hasMessage()) {
+          mergeMessage(other.getMessage());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasExecutorId()) {
+          
+          return false;
+        }
+        if (!hasFrameworkId()) {
+          
+          return false;
+        }
+        if (!getExecutorId().isInitialized()) {
+          
+          return false;
+        }
+        if (!getFrameworkId().isInitialized()) {
+          
+          return false;
+        }
+        if (hasSubscribe()) {
+          if (!getSubscribe().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasUpdate()) {
+          if (!getUpdate().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasMessage()) {
+          if (!getMessage().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.executor.Protos.Call parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.executor.Protos.Call) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required .mesos.v1.ExecutorID executor_id = 1;
+      private org.apache.mesos.v1.Protos.ExecutorID executorId_ = org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.ExecutorID, org.apache.mesos.v1.Protos.ExecutorID.Builder, org.apache.mesos.v1.Protos.ExecutorIDOrBuilder> executorIdBuilder_;
+      /**
+       * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+       *
+       * <pre>
+       * Identifies the executor which generated this call.
+       * </pre>
+       */
+      public boolean hasExecutorId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+       *
+       * <pre>
+       * Identifies the executor which generated this call.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.ExecutorID getExecutorId() {
+        if (executorIdBuilder_ == null) {
+          return executorId_;
+        } else {
+          return executorIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+       *
+       * <pre>
+       * Identifies the executor which generated this call.
+       * </pre>
+       */
+      public Builder setExecutorId(org.apache.mesos.v1.Protos.ExecutorID value) {
+        if (executorIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          executorId_ = value;
+          onChanged();
+        } else {
+          executorIdBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+       *
+       * <pre>
+       * Identifies the executor which generated this call.
+       * </pre>
+       */
+      public Builder setExecutorId(
+          org.apache.mesos.v1.Protos.ExecutorID.Builder builderForValue) {
+        if (executorIdBuilder_ == null) {
+          executorId_ = builderForValue.build();
+          onChanged();
+        } else {
+          executorIdBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+       *
+       * <pre>
+       * Identifies the executor which generated this call.
+       * </pre>
+       */
+      public Builder mergeExecutorId(org.apache.mesos.v1.Protos.ExecutorID value) {
+        if (executorIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001) &&
+              executorId_ != org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance()) {
+            executorId_ =
+              org.apache.mesos.v1.Protos.ExecutorID.newBuilder(executorId_).mergeFrom(value).buildPartial();
+          } else {
+            executorId_ = value;
+          }
+          onChanged();
+        } else {
+          executorIdBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+       *
+       * <pre>
+       * Identifies the executor which generated this call.
+       * </pre>
+       */
+      public Builder clearExecutorId() {
+        if (executorIdBuilder_ == null) {
+          executorId_ = org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance();
+          onChanged();
+        } else {
+          executorIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+       *
+       * <pre>
+       * Identifies the executor which generated this call.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.ExecutorID.Builder getExecutorIdBuilder() {
+        bitField0_ |= 0x00000001;
+        onChanged();
+        return getExecutorIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+       *
+       * <pre>
+       * Identifies the executor which generated this call.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder() {
+        if (executorIdBuilder_ != null) {
+          return executorIdBuilder_.getMessageOrBuilder();
+        } else {
+          return executorId_;
+        }
+      }
+      /**
+       * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+       *
+       * <pre>
+       * Identifies the executor which generated this call.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.ExecutorID, org.apache.mesos.v1.Protos.ExecutorID.Builder, org.apache.mesos.v1.Protos.ExecutorIDOrBuilder> 
+          getExecutorIdFieldBuilder() {
+        if (executorIdBuilder_ == null) {
+          executorIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.ExecutorID, org.apache.mesos.v1.Protos.ExecutorID.Builder, org.apache.mesos.v1.Protos.ExecutorIDOrBuilder>(
+                  executorId_,
+                  getParentForChildren(),
+                  isClean());
+          executorId_ = null;
+        }
+        return executorIdBuilder_;
+      }
+
+      // required .mesos.v1.FrameworkID framework_id = 2;
+      private org.apache.mesos.v1.Protos.FrameworkID frameworkId_ = org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.FrameworkID, org.apache.mesos.v1.Protos.FrameworkID.Builder, org.apache.mesos.v1.Protos.FrameworkIDOrBuilder> frameworkIdBuilder_;
+      /**
+       * <code>required .mesos.v1.FrameworkID framework_id = 2;</code>
+       */
+      public boolean hasFrameworkId() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required .mesos.v1.FrameworkID framework_id = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.FrameworkID getFrameworkId() {
+        if (frameworkIdBuilder_ == null) {
+          return frameworkId_;
+        } else {
+          return frameworkIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>required .mesos.v1.FrameworkID framework_id = 2;</code>
+       */
+      public Builder setFrameworkId(org.apache.mesos.v1.Protos.FrameworkID value) {
+        if (frameworkIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          frameworkId_ = value;
+          onChanged();
+        } else {
+          frameworkIdBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.FrameworkID framework_id = 2;</code>
+       */
+      public Builder setFrameworkId(
+          org.apache.mesos.v1.Protos.FrameworkID.Builder builderForValue) {
+        if (frameworkIdBuilder_ == null) {
+          frameworkId_ = builderForValue.build();
+          onChanged();
+        } else {
+          frameworkIdBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.FrameworkID framework_id = 2;</code>
+       */
+      public Builder mergeFrameworkId(org.apache.mesos.v1.Protos.FrameworkID value) {
+        if (frameworkIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              frameworkId_ != org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance()) {
+            frameworkId_ =
+              org.apache.mesos.v1.Protos.FrameworkID.newBuilder(frameworkId_).mergeFrom(value).buildPartial();
+          } else {
+            frameworkId_ = value;
+          }
+          onChanged();
+        } else {
+          frameworkIdBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.FrameworkID framework_id = 2;</code>
+       */
+      public Builder clearFrameworkId() {
+        if (frameworkIdBuilder_ == null) {
+          frameworkId_ = org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance();
+          onChanged();
+        } else {
+          frameworkIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>required .mesos.v1.FrameworkID framework_id = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.FrameworkID.Builder getFrameworkIdBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getFrameworkIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>required .mesos.v1.FrameworkID framework_id = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.FrameworkIDOrBuilder getFrameworkIdOrBuilder() {
+        if (frameworkIdBuilder_ != null) {
+          return frameworkIdBuilder_.getMessageOrBuilder();
+        } else {
+          return frameworkId_;
+        }
+      }
+      /**
+       * <code>required .mesos.v1.FrameworkID framework_id = 2;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.FrameworkID, org.apache.mesos.v1.Protos.FrameworkID.Builder, org.apache.mesos.v1.Protos.FrameworkIDOrBuilder> 
+          getFrameworkIdFieldBuilder() {
+        if (frameworkIdBuilder_ == null) {
+          frameworkIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.FrameworkID, org.apache.mesos.v1.Protos.FrameworkID.Builder, org.apache.mesos.v1.Protos.FrameworkIDOrBuilder>(
+                  frameworkId_,
+                  getParentForChildren(),
+                  isClean());
+          frameworkId_ = null;
+        }
+        return frameworkIdBuilder_;
+      }
+
+      // optional .mesos.v1.executor.Call.Type type = 3;
+      private org.apache.mesos.v1.executor.Protos.Call.Type type_ = org.apache.mesos.v1.executor.Protos.Call.Type.UNKNOWN;
+      /**
+       * <code>optional .mesos.v1.executor.Call.Type type = 3;</code>
+       *
+       * <pre>
+       * Type of the call, indicates which optional field below should be
+       * present if that type has a nested message definition.
+       * In case type is SUBSCRIBED, no message needs to be set.
+       * See comments on `Event::Type` above on the reasoning behind this
+       * field being optional.
+       * </pre>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Call.Type type = 3;</code>
+       *
+       * <pre>
+       * Type of the call, indicates which optional field below should be
+       * present if that type has a nested message definition.
+       * In case type is SUBSCRIBED, no message needs to be set.
+       * See comments on `Event::Type` above on the reasoning behind this
+       * field being optional.
+       * </pre>
+       */
+      public org.apache.mesos.v1.executor.Protos.Call.Type getType() {
+        return type_;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Call.Type type = 3;</code>
+       *
+       * <pre>
+       * Type of the call, indicates which optional field below should be
+       * present if that type has a nested message definition.
+       * In case type is SUBSCRIBED, no message needs to be set.
+       * See comments on `Event::Type` above on the reasoning behind this
+       * field being optional.
+       * </pre>
+       */
+      public Builder setType(org.apache.mesos.v1.executor.Protos.Call.Type value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000004;
+        type_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Call.Type type = 3;</code>
+       *
+       * <pre>
+       * Type of the call, indicates which optional field below should be
+       * present if that type has a nested message definition.
+       * In case type is SUBSCRIBED, no message needs to be set.
+       * See comments on `Event::Type` above on the reasoning behind this
+       * field being optional.
+       * </pre>
+       */
+      public Builder clearType() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        type_ = org.apache.mesos.v1.executor.Protos.Call.Type.UNKNOWN;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.v1.executor.Call.Subscribe subscribe = 4;
+      private org.apache.mesos.v1.executor.Protos.Call.Subscribe subscribe_ = org.apache.mesos.v1.executor.Protos.Call.Subscribe.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.executor.Protos.Call.Subscribe, org.apache.mesos.v1.executor.Protos.Call.Subscribe.Builder, org.apache.mesos.v1.executor.Protos.Call.SubscribeOrBuilder> subscribeBuilder_;
+      /**
+       * <code>optional .mesos.v1.executor.Call.Subscribe subscribe = 4;</code>
+       */
+      public boolean hasSubscribe() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Call.Subscribe subscribe = 4;</code>
+       */
+      public org.apache.mesos.v1.executor.Protos.Call.Subscribe getSubscribe() {
+        if (subscribeBuilder_ == null) {
+          return subscribe_;
+        } else {
+          return subscribeBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Call.Subscribe subscribe = 4;</code>
+       */
+      public Builder setSubscribe(org.apache.mesos.v1.executor.Protos.Call.Subscribe value) {
+        if (subscribeBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          subscribe_ = value;
+          onChanged();
+        } else {
+          subscribeBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Call.Subscribe subscribe = 4;</code>
+       */
+      public Builder setSubscribe(
+          org.apache.mesos.v1.executor.Protos.Call.Subscribe.Builder builderForValue) {
+        if (subscribeBuilder_ == null) {
+          subscribe_ = builderForValue.build();
+          onChanged();
+        } else {
+          subscribeBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Call.Subscribe subscribe = 4;</code>
+       */
+      public Builder mergeSubscribe(org.apache.mesos.v1.executor.Protos.Call.Subscribe value) {
+        if (subscribeBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008) &&
+              subscribe_ != org.apache.mesos.v1.executor.Protos.Call.Subscribe.getDefaultInstance()) {
+            subscribe_ =
+              org.apache.mesos.v1.executor.Protos.Call.Subscribe.newBuilder(subscribe_).mergeFrom(value).buildPartial();
+          } else {
+            subscribe_ = value;
+          }
+          onChanged();
+        } else {
+          subscribeBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Call.Subscribe subscribe = 4;</code>
+       */
+      public Builder clearSubscribe() {
+        if (subscribeBuilder_ == null) {
+          subscribe_ = org.apache.mesos.v1.executor.Protos.Call.Subscribe.getDefaultInstance();
+          onChanged();
+        } else {
+          subscribeBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Call.Subscribe subscribe = 4;</code>
+       */
+      public org.apache.mesos.v1.executor.Protos.Call.Subscribe.Builder getSubscribeBuilder() {
+        bitField0_ |= 0x00000008;
+        onChanged();
+        return getSubscribeFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Call.Subscribe subscribe = 4;</code>
+       */
+      public org.apache.mesos.v1.executor.Protos.Call.SubscribeOrBuilder getSubscribeOrBuilder() {
+        if (subscribeBuilder_ != null) {
+          return subscribeBuilder_.getMessageOrBuilder();
+        } else {
+          return subscribe_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Call.Subscribe subscribe = 4;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.executor.Protos.Call.Subscribe, org.apache.mesos.v1.executor.Protos.Call.Subscribe.Builder, org.apache.mesos.v1.executor.Protos.Call.SubscribeOrBuilder> 
+          getSubscribeFieldBuilder() {
+        if (subscribeBuilder_ == null) {
+          subscribeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.executor.Protos.Call.Subscribe, org.apache.mesos.v1.executor.Protos.Call.Subscribe.Builder, org.apache.mesos.v1.executor.Protos.Call.SubscribeOrBuilder>(
+                  subscribe_,
+                  getParentForChildren(),
+                  isClean());
+          subscribe_ = null;
+        }
+        return subscribeBuilder_;
+      }
+
+      // optional .mesos.v1.executor.Call.Update update = 5;
+      private org.apache.mesos.v1.executor.Protos.Call.Update update_ = org.apache.mesos.v1.executor.Protos.Call.Update.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.executor.Protos.Call.Update, org.apache.mesos.v1.executor.Protos.Call.Update.Builder, org.apache.mesos.v1.executor.Protos.Call.UpdateOrBuilder> updateBuilder_;
+      /**
+       * <code>optional .mesos.v1.executor.Call.Update update = 5;</code>
+       */
+      public boolean hasUpdate() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Call.Update update = 5;</code>
+       */
+      public org.apache.mesos.v1.executor.Protos.Call.Update getUpdate() {
+        if (updateBuilder_ == null) {
+          return update_;
+        } else {
+          return updateBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Call.Update update = 5;</code>
+       */
+      public Builder setUpdate(org.apache.mesos.v1.executor.Protos.Call.Update value) {
+        if (updateBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          update_ = value;
+          onChanged();
+        } else {
+          updateBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Call.Update update = 5;</code>
+       */
+      public Builder setUpdate(
+          org.apache.mesos.v1.executor.Protos.Call.Update.Builder builderForValue) {
+        if (updateBuilder_ == null) {
+          update_ = builderForValue.build();
+          onChanged();
+        } else {
+          updateBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Call.Update update = 5;</code>
+       */
+      public Builder mergeUpdate(org.apache.mesos.v1.executor.Protos.Call.Update value) {
+        if (updateBuilder_ == null) {
+          if (((bitField0_ & 0x00000010) == 0x00000010) &&
+              update_ != org.apache.mesos.v1.executor.Protos.Call.Update.getDefaultInstance()) {
+            update_ =
+              org.apache.mesos.v1.executor.Protos.Call.Update.newBuilder(update_).mergeFrom(value).buildPartial();
+          } else {
+            update_ = value;
+          }
+          onChanged();
+        } else {
+          updateBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Call.Update update = 5;</code>
+       */
+      public Builder clearUpdate() {
+        if (updateBuilder_ == null) {
+          update_ = org.apache.mesos.v1.executor.Protos.Call.Update.getDefaultInstance();
+          onChanged();
+        } else {
+          updateBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Call.Update update = 5;</code>
+       */
+      public org.apache.mesos.v1.executor.Protos.Call.Update.Builder getUpdateBuilder() {
+        bitField0_ |= 0x00000010;
+        onChanged();
+        return getUpdateFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Call.Update update = 5;</code>
+       */
+      public org.apache.mesos.v1.executor.Protos.Call.UpdateOrBuilder getUpdateOrBuilder() {
+        if (updateBuilder_ != null) {
+          return updateBuilder_.getMessageOrBuilder();
+        } else {
+          return update_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Call.Update update = 5;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.executor.Protos.Call.Update, org.apache.mesos.v1.executor.Protos.Call.Update.Builder, org.apache.mesos.v1.executor.Protos.Call.UpdateOrBuilder> 
+          getUpdateFieldBuilder() {
+        if (updateBuilder_ == null) {
+          updateBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.executor.Protos.Call.Update, org.apache.mesos.v1.executor.Protos.Call.Update.Builder, org.apache.mesos.v1.executor.Protos.Call.UpdateOrBuilder>(
+                  update_,
+                  getParentForChildren(),
+                  isClean());
+          update_ = null;
+        }
+        return updateBuilder_;
+      }
+
+      // optional .mesos.v1.executor.Call.Message message = 6;
+      private org.apache.mesos.v1.executor.Protos.Call.Message message_ = org.apache.mesos.v1.executor.Protos.Call.Message.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.executor.Protos.Call.Message, org.apache.mesos.v1.executor.Protos.Call.Message.Builder, org.apache.mesos.v1.executor.Protos.Call.MessageOrBuilder> messageBuilder_;
+      /**
+       * <code>optional .mesos.v1.executor.Call.Message message = 6;</code>
+       */
+      public boolean hasMessage() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Call.Message message = 6;</code>
+       */
+      public org.apache.mesos.v1.executor.Protos.Call.Message getMessage() {
+        if (messageBuilder_ == null) {
+          return message_;
+        } else {
+          return messageBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Call.Message message = 6;</code>
+       */
+      public Builder setMessage(org.apache.mesos.v1.executor.Protos.Call.Message value) {
+        if (messageBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          message_ = value;
+          onChanged();
+        } else {
+          messageBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Call.Message message = 6;</code>
+       */
+      public Builder setMessage(
+          org.apache.mesos.v1.executor.Protos.Call.Message.Builder builderForValue) {
+        if (messageBuilder_ == null) {
+          message_ = builderForValue.build();
+          onChanged();
+        } else {
+          messageBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Call.Message message = 6;</code>
+       */
+      public Builder mergeMessage(org.apache.mesos.v1.executor.Protos.Call.Message value) {
+        if (messageBuilder_ == null) {
+          if (((bitField0_ & 0x00000020) == 0x00000020) &&
+              message_ != org.apache.mesos.v1.executor.Protos.Call.Message.getDefaultInstance()) {
+            message_ =
+              org.apache.mesos.v1.executor.Protos.Call.Message.newBuilder(message_).mergeFrom(value).buildPartial();
+          } else {
+            message_ = value;
+          }
+          onChanged();
+        } else {
+          messageBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Call.Message message = 6;</code>
+       */
+      public Builder clearMessage() {
+        if (messageBuilder_ == null) {
+          message_ = org.apache.mesos.v1.executor.Protos.Call.Message.getDefaultInstance();
+          onChanged();
+        } else {
+          messageBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Call.Message message = 6;</code>
+       */
+      public org.apache.mesos.v1.executor.Protos.Call.Message.Builder getMessageBuilder() {
+        bitField0_ |= 0x00000020;
+        onChanged();
+        return getMessageFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Call.Message message = 6;</code>
+       */
+      public org.apache.mesos.v1.executor.Protos.Call.MessageOrBuilder getMessageOrBuilder() {
+        if (messageBuilder_ != null) {
+          return messageBuilder_.getMessageOrBuilder();
+        } else {
+          return message_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.executor.Call.Message message = 6;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.executor.Protos.Call.Message, org.apache.mesos.v1.executor.Protos.Call.Message.Builder, org.apache.mesos.v1.executor.Protos.Call.MessageOrBuilder> 
+          getMessageFieldBuilder() {
+        if (messageBuilder_ == null) {
+          messageBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.executor.Protos.Call.Message, org.apache.mesos.v1.executor.Protos.Call.Message.Builder, org.apache.mesos.v1.executor.Protos.Call.MessageOrBuilder>(
+                  message_,
+                  getParentForChildren(),
+                  isClean());
+          message_ = null;
+        }
+        return messageBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.executor.Call)
+    }
+
+    static {
+      defaultInstance = new Call(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.executor.Call)
+  }
+
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_executor_Event_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_executor_Event_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_executor_Event_Subscribed_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_executor_Event_Subscribed_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_executor_Event_Launch_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_executor_Event_Launch_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_executor_Event_LaunchGroup_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_executor_Event_LaunchGroup_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_executor_Event_Kill_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_executor_Event_Kill_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_executor_Event_Acknowledged_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_executor_Event_Acknowledged_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_executor_Event_Message_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_executor_Event_Message_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_executor_Event_Error_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_executor_Event_Error_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_executor_Call_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_executor_Call_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_executor_Call_Subscribe_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_executor_Call_Subscribe_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_executor_Call_Update_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_executor_Call_Update_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_executor_Call_Message_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_executor_Call_Message_fieldAccessorTable;
+
+  public static com.google.protobuf.Descriptors.FileDescriptor
+      getDescriptor() {
+    return descriptor;
+  }
+  private static com.google.protobuf.Descriptors.FileDescriptor
+      descriptor;
+  static {
+    java.lang.String[] descriptorData = {
+      "\n\027mesos/v1/executor.proto\022\021mesos.v1.exec" +
+      "utor\032\024mesos/v1/mesos.proto\"\243\010\n\005Event\022+\n\004" +
+      "type\030\001 \001(\0162\035.mesos.v1.executor.Event.Typ" +
+      "e\0227\n\nsubscribed\030\002 \001(\0132#.mesos.v1.executo" +
+      "r.Event.Subscribed\022;\n\014acknowledged\030\003 \001(\013" +
+      "2%.mesos.v1.executor.Event.Acknowledged\022" +
+      "/\n\006launch\030\004 \001(\0132\037.mesos.v1.executor.Even" +
+      "t.Launch\022:\n\014launch_group\030\010 \001(\0132$.mesos.v" +
+      "1.executor.Event.LaunchGroup\022+\n\004kill\030\005 \001" +
+      "(\0132\035.mesos.v1.executor.Event.Kill\0221\n\007mes",
+      "sage\030\006 \001(\0132 .mesos.v1.executor.Event.Mes" +
+      "sage\022-\n\005error\030\007 \001(\0132\036.mesos.v1.executor." +
+      "Event.Error\032\302\001\n\nSubscribed\022-\n\rexecutor_i" +
+      "nfo\030\001 \002(\0132\026.mesos.v1.ExecutorInfo\022/\n\016fra" +
+      "mework_info\030\002 \002(\0132\027.mesos.v1.FrameworkIn" +
+      "fo\022\'\n\nagent_info\030\003 \002(\0132\023.mesos.v1.AgentI" +
+      "nfo\022+\n\014container_id\030\004 \001(\0132\025.mesos.v1.Con" +
+      "tainerID\032*\n\006Launch\022 \n\004task\030\001 \002(\0132\022.mesos" +
+      ".v1.TaskInfo\032:\n\013LaunchGroup\022+\n\ntask_grou" +
+      "p\030\001 \002(\0132\027.mesos.v1.TaskGroupInfo\032T\n\004Kill",
+      "\022!\n\007task_id\030\001 \002(\0132\020.mesos.v1.TaskID\022)\n\013k" +
+      "ill_policy\030\002 \001(\0132\024.mesos.v1.KillPolicy\032?" +
+      "\n\014Acknowledged\022!\n\007task_id\030\001 \002(\0132\020.mesos." +
+      "v1.TaskID\022\014\n\004uuid\030\002 \002(\014\032\027\n\007Message\022\014\n\004da" +
+      "ta\030\001 \002(\014\032\030\n\005Error\022\017\n\007message\030\001 \002(\t\"\203\001\n\004T" +
+      "ype\022\013\n\007UNKNOWN\020\000\022\016\n\nSUBSCRIBED\020\001\022\n\n\006LAUN" +
+      "CH\020\002\022\020\n\014LAUNCH_GROUP\020\010\022\010\n\004KILL\020\003\022\020\n\014ACKN" +
+      "OWLEDGED\020\004\022\013\n\007MESSAGE\020\005\022\t\n\005ERROR\020\006\022\014\n\010SH" +
+      "UTDOWN\020\007\"\247\004\n\004Call\022)\n\013executor_id\030\001 \002(\0132\024" +
+      ".mesos.v1.ExecutorID\022+\n\014framework_id\030\002 \002",
+      "(\0132\025.mesos.v1.FrameworkID\022*\n\004type\030\003 \001(\0162" +
+      "\034.mesos.v1.executor.Call.Type\0224\n\tsubscri" +
+      "be\030\004 \001(\0132!.mesos.v1.executor.Call.Subscr" +
+      "ibe\022.\n\006update\030\005 \001(\0132\036.mesos.v1.executor." +
+      "Call.Update\0220\n\007message\030\006 \001(\0132\037.mesos.v1." +
+      "executor.Call.Message\032}\n\tSubscribe\0220\n\024un" +
+      "acknowledged_tasks\030\001 \003(\0132\022.mesos.v1.Task" +
+      "Info\022>\n\026unacknowledged_updates\030\002 \003(\0132\036.m" +
+      "esos.v1.executor.Call.Update\032.\n\006Update\022$" +
+      "\n\006status\030\001 \002(\0132\024.mesos.v1.TaskStatus\032\027\n\007",
+      "Message\022\014\n\004data\030\002 \002(\014\";\n\004Type\022\013\n\007UNKNOWN" +
+      "\020\000\022\r\n\tSUBSCRIBE\020\001\022\n\n\006UPDATE\020\002\022\013\n\007MESSAGE" +
+      "\020\003B&\n\034org.apache.mesos.v1.executorB\006Prot" +
+      "os"
+    };
+    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
+      new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
+        public com.google.protobuf.ExtensionRegistry assignDescriptors(
+            com.google.protobuf.Descriptors.FileDescriptor root) {
+          descriptor = root;
+          internal_static_mesos_v1_executor_Event_descriptor =
+            getDescriptor().getMessageTypes().get(0);
+          internal_static_mesos_v1_executor_Event_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_executor_Event_descriptor,
+              new java.lang.String[] { "Type", "Subscribed", "Acknowledged", "Launch", "LaunchGroup", "Kill", "Message", "Error", });
+          internal_static_mesos_v1_executor_Event_Subscribed_descriptor =
+            internal_static_mesos_v1_executor_Event_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_v1_executor_Event_Subscribed_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_executor_Event_Subscribed_descriptor,
+              new java.lang.String[] { "ExecutorInfo", "FrameworkInfo", "AgentInfo", "ContainerId", });
+          internal_static_mesos_v1_executor_Event_Launch_descriptor =
+            internal_static_mesos_v1_executor_Event_descriptor.getNestedTypes().get(1);
+          internal_static_mesos_v1_executor_Event_Launch_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_executor_Event_Launch_descriptor,
+              new java.lang.String[] { "Task", });
+          internal_static_mesos_v1_executor_Event_LaunchGroup_descriptor =
+            internal_static_mesos_v1_executor_Event_descriptor.getNestedTypes().get(2);
+          internal_static_mesos_v1_executor_Event_LaunchGroup_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_executor_Event_LaunchGroup_descriptor,
+              new java.lang.String[] { "TaskGroup", });
+          internal_static_mesos_v1_executor_Event_Kill_descriptor =
+            internal_static_mesos_v1_executor_Event_descriptor.getNestedTypes().get(3);
+          internal_static_mesos_v1_executor_Event_Kill_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_executor_Event_Kill_descriptor,
+              new java.lang.String[] { "TaskId", "KillPolicy", });
+          internal_static_mesos_v1_executor_Event_Acknowledged_descriptor =
+            internal_static_mesos_v1_executor_Event_descriptor.getNestedTypes().get(4);
+          internal_static_mesos_v1_executor_Event_Acknowledged_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_executor_Event_Acknowledged_descriptor,
+              new java.lang.String[] { "TaskId", "Uuid", });
+          internal_static_mesos_v1_executor_Event_Message_descriptor =
+            internal_static_mesos_v1_executor_Event_descriptor.getNestedTypes().get(5);
+          internal_static_mesos_v1_executor_Event_Message_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_executor_Event_Message_descriptor,
+              new java.lang.String[] { "Data", });
+          internal_static_mesos_v1_executor_Event_Error_descriptor =
+            internal_static_mesos_v1_executor_Event_descriptor.getNestedTypes().get(6);
+          internal_static_mesos_v1_executor_Event_Error_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_executor_Event_Error_descriptor,
+              new java.lang.String[] { "Message", });
+          internal_static_mesos_v1_executor_Call_descriptor =
+            getDescriptor().getMessageTypes().get(1);
+          internal_static_mesos_v1_executor_Call_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_executor_Call_descriptor,
+              new java.lang.String[] { "ExecutorId", "FrameworkId", "Type", "Subscribe", "Update", "Message", });
+          internal_static_mesos_v1_executor_Call_Subscribe_descriptor =
+            internal_static_mesos_v1_executor_Call_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_v1_executor_Call_Subscribe_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_executor_Call_Subscribe_descriptor,
+              new java.lang.String[] { "UnacknowledgedTasks", "UnacknowledgedUpdates", });
+          internal_static_mesos_v1_executor_Call_Update_descriptor =
+            internal_static_mesos_v1_executor_Call_descriptor.getNestedTypes().get(1);
+          internal_static_mesos_v1_executor_Call_Update_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_executor_Call_Update_descriptor,
+              new java.lang.String[] { "Status", });
+          internal_static_mesos_v1_executor_Call_Message_descriptor =
+            internal_static_mesos_v1_executor_Call_descriptor.getNestedTypes().get(2);
+          internal_static_mesos_v1_executor_Call_Message_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_executor_Call_Message_descriptor,
+              new java.lang.String[] { "Data", });
+          return null;
+        }
+      };
+    com.google.protobuf.Descriptors.FileDescriptor
+      .internalBuildGeneratedFileFrom(descriptorData,
+        new com.google.protobuf.Descriptors.FileDescriptor[] {
+          org.apache.mesos.v1.Protos.getDescriptor(),
+        }, assigner);
+  }
+
+  // @@protoc_insertion_point(outer_class_scope)
+}
diff --git a/myriad-commons/src/main/java/org/apache/mesos/v1/scheduler/Mesos.java b/myriad-commons/src/main/java/org/apache/mesos/v1/scheduler/Mesos.java
new file mode 100644
index 0000000..f8842ce
--- /dev/null
+++ b/myriad-commons/src/main/java/org/apache/mesos/v1/scheduler/Mesos.java
@@ -0,0 +1,58 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.mesos.v1.scheduler;
+
+import org.apache.mesos.v1.scheduler.Protos.Call;
+
+/**
+ * Abstract interface for connecting a scheduler to Mesos. This interface
+ * is used to send Call's to Mesos (e.g., launch tasks, kill tasks, etc.).
+ */
+public interface Mesos {
+    /**
+     * Sends a Call to the Mesos master. The scheduler should only invoke this
+     * method once it has received the 'connected' callback. Otherwise, all calls
+     * would be dropped while disconnected.
+     *
+     * Some local validation of calls is performed which may generate
+     * events without ever being sent to the master.
+     *
+     * These comments are copied from include/mesos/v1/scheduler.hpp and should
+     * be kept in sync.
+     */
+    void send(Call call);
+
+    /**
+     * Force a reconnection with the Mesos master.
+     *
+     * In the case of a one-way network partition, the connection between the
+     * scheduler and master might not necessarily break. If the scheduler detects
+     * a partition, due to lack of `HEARTBEAT` events (e.g., 5) within a time
+     * window, it can explicitly ask the library to force a reconnection with
+     * the master.
+     *
+     * This call would be ignored if the scheduler is already disconnected with
+     * the master (e.g., no new master has been elected). Otherwise, the scheduler
+     * would get a 'disconnected' callback followed by a 'connected' callback.
+     *
+     * These comments are copied from include/mesos/v1/scheduler.hpp and should
+     * be kept in sync.
+     */
+    void reconnect();
+}
diff --git a/myriad-commons/src/main/java/org/apache/mesos/v1/scheduler/Protos.java b/myriad-commons/src/main/java/org/apache/mesos/v1/scheduler/Protos.java
new file mode 100644
index 0000000..ff599d8
--- /dev/null
+++ b/myriad-commons/src/main/java/org/apache/mesos/v1/scheduler/Protos.java
@@ -0,0 +1,24570 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: mesos/v1/scheduler.proto
+
+package org.apache.mesos.v1.scheduler;
+
+public final class Protos {
+  private Protos() {}
+  public static void registerAllExtensions(
+      com.google.protobuf.ExtensionRegistry registry) {
+  }
+  public interface EventOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional .mesos.v1.scheduler.Event.Type type = 1;
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Type type = 1;</code>
+     *
+     * <pre>
+     * Type of the event, indicates which optional field below should be
+     * present if that type has a nested message definition.
+     * Enum fields should be optional, see: MESOS-4997.
+     * </pre>
+     */
+    boolean hasType();
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Type type = 1;</code>
+     *
+     * <pre>
+     * Type of the event, indicates which optional field below should be
+     * present if that type has a nested message definition.
+     * Enum fields should be optional, see: MESOS-4997.
+     * </pre>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Event.Type getType();
+
+    // optional .mesos.v1.scheduler.Event.Subscribed subscribed = 2;
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Subscribed subscribed = 2;</code>
+     */
+    boolean hasSubscribed();
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Subscribed subscribed = 2;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Event.Subscribed getSubscribed();
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Subscribed subscribed = 2;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Event.SubscribedOrBuilder getSubscribedOrBuilder();
+
+    // optional .mesos.v1.scheduler.Event.Offers offers = 3;
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Offers offers = 3;</code>
+     */
+    boolean hasOffers();
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Offers offers = 3;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Event.Offers getOffers();
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Offers offers = 3;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Event.OffersOrBuilder getOffersOrBuilder();
+
+    // optional .mesos.v1.scheduler.Event.InverseOffers inverse_offers = 9;
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.InverseOffers inverse_offers = 9;</code>
+     */
+    boolean hasInverseOffers();
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.InverseOffers inverse_offers = 9;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers getInverseOffers();
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.InverseOffers inverse_offers = 9;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Event.InverseOffersOrBuilder getInverseOffersOrBuilder();
+
+    // optional .mesos.v1.scheduler.Event.Rescind rescind = 4;
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Rescind rescind = 4;</code>
+     */
+    boolean hasRescind();
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Rescind rescind = 4;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Event.Rescind getRescind();
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Rescind rescind = 4;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Event.RescindOrBuilder getRescindOrBuilder();
+
+    // optional .mesos.v1.scheduler.Event.RescindInverseOffer rescind_inverse_offer = 10;
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.RescindInverseOffer rescind_inverse_offer = 10;</code>
+     */
+    boolean hasRescindInverseOffer();
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.RescindInverseOffer rescind_inverse_offer = 10;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer getRescindInverseOffer();
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.RescindInverseOffer rescind_inverse_offer = 10;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOfferOrBuilder getRescindInverseOfferOrBuilder();
+
+    // optional .mesos.v1.scheduler.Event.Update update = 5;
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Update update = 5;</code>
+     */
+    boolean hasUpdate();
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Update update = 5;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Event.Update getUpdate();
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Update update = 5;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Event.UpdateOrBuilder getUpdateOrBuilder();
+
+    // optional .mesos.v1.scheduler.Event.Message message = 6;
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Message message = 6;</code>
+     */
+    boolean hasMessage();
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Message message = 6;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Event.Message getMessage();
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Message message = 6;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Event.MessageOrBuilder getMessageOrBuilder();
+
+    // optional .mesos.v1.scheduler.Event.Failure failure = 7;
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Failure failure = 7;</code>
+     */
+    boolean hasFailure();
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Failure failure = 7;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Event.Failure getFailure();
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Failure failure = 7;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Event.FailureOrBuilder getFailureOrBuilder();
+
+    // optional .mesos.v1.scheduler.Event.Error error = 8;
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Error error = 8;</code>
+     */
+    boolean hasError();
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Error error = 8;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Event.Error getError();
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Error error = 8;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Event.ErrorOrBuilder getErrorOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.scheduler.Event}
+   *
+   * <pre>
+   **
+   * Scheduler event API.
+   *
+   * An event is described using the standard protocol buffer "union"
+   * trick, see:
+   * https://developers.google.com/protocol-buffers/docs/techniques#union.
+   * </pre>
+   */
+  public static final class Event extends
+      com.google.protobuf.GeneratedMessage
+      implements EventOrBuilder {
+    // Use Event.newBuilder() to construct.
+    private Event(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Event(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Event defaultInstance;
+    public static Event getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Event getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Event(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 8: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.v1.scheduler.Protos.Event.Type value = org.apache.mesos.v1.scheduler.Protos.Event.Type.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(1, rawValue);
+              } else {
+                bitField0_ |= 0x00000001;
+                type_ = value;
+              }
+              break;
+            }
+            case 18: {
+              org.apache.mesos.v1.scheduler.Protos.Event.Subscribed.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                subBuilder = subscribed_.toBuilder();
+              }
+              subscribed_ = input.readMessage(org.apache.mesos.v1.scheduler.Protos.Event.Subscribed.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(subscribed_);
+                subscribed_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+            case 26: {
+              org.apache.mesos.v1.scheduler.Protos.Event.Offers.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                subBuilder = offers_.toBuilder();
+              }
+              offers_ = input.readMessage(org.apache.mesos.v1.scheduler.Protos.Event.Offers.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(offers_);
+                offers_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000004;
+              break;
+            }
+            case 34: {
+              org.apache.mesos.v1.scheduler.Protos.Event.Rescind.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000010) == 0x00000010)) {
+                subBuilder = rescind_.toBuilder();
+              }
+              rescind_ = input.readMessage(org.apache.mesos.v1.scheduler.Protos.Event.Rescind.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(rescind_);
+                rescind_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000010;
+              break;
+            }
+            case 42: {
+              org.apache.mesos.v1.scheduler.Protos.Event.Update.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000040) == 0x00000040)) {
+                subBuilder = update_.toBuilder();
+              }
+              update_ = input.readMessage(org.apache.mesos.v1.scheduler.Protos.Event.Update.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(update_);
+                update_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000040;
+              break;
+            }
+            case 50: {
+              org.apache.mesos.v1.scheduler.Protos.Event.Message.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000080) == 0x00000080)) {
+                subBuilder = message_.toBuilder();
+              }
+              message_ = input.readMessage(org.apache.mesos.v1.scheduler.Protos.Event.Message.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(message_);
+                message_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000080;
+              break;
+            }
+            case 58: {
+              org.apache.mesos.v1.scheduler.Protos.Event.Failure.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000100) == 0x00000100)) {
+                subBuilder = failure_.toBuilder();
+              }
+              failure_ = input.readMessage(org.apache.mesos.v1.scheduler.Protos.Event.Failure.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(failure_);
+                failure_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000100;
+              break;
+            }
+            case 66: {
+              org.apache.mesos.v1.scheduler.Protos.Event.Error.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000200) == 0x00000200)) {
+                subBuilder = error_.toBuilder();
+              }
+              error_ = input.readMessage(org.apache.mesos.v1.scheduler.Protos.Event.Error.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(error_);
+                error_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000200;
+              break;
+            }
+            case 74: {
+              org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                subBuilder = inverseOffers_.toBuilder();
+              }
+              inverseOffers_ = input.readMessage(org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(inverseOffers_);
+                inverseOffers_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000008;
+              break;
+            }
+            case 82: {
+              org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000020) == 0x00000020)) {
+                subBuilder = rescindInverseOffer_.toBuilder();
+              }
+              rescindInverseOffer_ = input.readMessage(org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(rescindInverseOffer_);
+                rescindInverseOffer_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000020;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.scheduler.Protos.Event.class, org.apache.mesos.v1.scheduler.Protos.Event.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Event> PARSER =
+        new com.google.protobuf.AbstractParser<Event>() {
+      public Event parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Event(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Event> getParserForType() {
+      return PARSER;
+    }
+
+    /**
+     * Protobuf enum {@code mesos.v1.scheduler.Event.Type}
+     *
+     * <pre>
+     * Possible event types, followed by message definitions if
+     * applicable.
+     * </pre>
+     */
+    public enum Type
+        implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>UNKNOWN = 0;</code>
+       *
+       * <pre>
+       * This must be the first enum value in this list, to
+       * ensure that if 'type' is not set, the default value
+       * is UNKNOWN. This enables enum values to be added
+       * in a backwards-compatible way. See: MESOS-4997.
+       * </pre>
+       */
+      UNKNOWN(0, 0),
+      /**
+       * <code>SUBSCRIBED = 1;</code>
+       *
+       * <pre>
+       * See 'Subscribed' below.
+       * </pre>
+       */
+      SUBSCRIBED(1, 1),
+      /**
+       * <code>OFFERS = 2;</code>
+       *
+       * <pre>
+       * See 'Offers' below.
+       * </pre>
+       */
+      OFFERS(2, 2),
+      /**
+       * <code>INVERSE_OFFERS = 9;</code>
+       *
+       * <pre>
+       * See 'InverseOffers' below.
+       * </pre>
+       */
+      INVERSE_OFFERS(3, 9),
+      /**
+       * <code>RESCIND = 3;</code>
+       *
+       * <pre>
+       * See 'Rescind' below.
+       * </pre>
+       */
+      RESCIND(4, 3),
+      /**
+       * <code>RESCIND_INVERSE_OFFER = 10;</code>
+       *
+       * <pre>
+       * See 'RescindInverseOffer' below.
+       * </pre>
+       */
+      RESCIND_INVERSE_OFFER(5, 10),
+      /**
+       * <code>UPDATE = 4;</code>
+       *
+       * <pre>
+       * See 'Update' below.
+       * </pre>
+       */
+      UPDATE(6, 4),
+      /**
+       * <code>MESSAGE = 5;</code>
+       *
+       * <pre>
+       * See 'Message' below.
+       * </pre>
+       */
+      MESSAGE(7, 5),
+      /**
+       * <code>FAILURE = 6;</code>
+       *
+       * <pre>
+       * See 'Failure' below.
+       * </pre>
+       */
+      FAILURE(8, 6),
+      /**
+       * <code>ERROR = 7;</code>
+       *
+       * <pre>
+       * See 'Error' below.
+       * </pre>
+       */
+      ERROR(9, 7),
+      /**
+       * <code>HEARTBEAT = 8;</code>
+       *
+       * <pre>
+       * Periodic message sent by the Mesos master according to
+       * 'Subscribed.heartbeat_interval_seconds'. If the scheduler does
+       * not receive any events (including heartbeats) for an extended
+       * period of time (e.g., 5 x heartbeat_interval_seconds), there is
+       * likely a network partition. In such a case the scheduler should
+       * close the existing subscription connection and resubscribe
+       * using a backoff strategy.
+       * </pre>
+       */
+      HEARTBEAT(10, 8),
+      ;
+
+      /**
+       * <code>UNKNOWN = 0;</code>
+       *
+       * <pre>
+       * This must be the first enum value in this list, to
+       * ensure that if 'type' is not set, the default value
+       * is UNKNOWN. This enables enum values to be added
+       * in a backwards-compatible way. See: MESOS-4997.
+       * </pre>
+       */
+      public static final int UNKNOWN_VALUE = 0;
+      /**
+       * <code>SUBSCRIBED = 1;</code>
+       *
+       * <pre>
+       * See 'Subscribed' below.
+       * </pre>
+       */
+      public static final int SUBSCRIBED_VALUE = 1;
+      /**
+       * <code>OFFERS = 2;</code>
+       *
+       * <pre>
+       * See 'Offers' below.
+       * </pre>
+       */
+      public static final int OFFERS_VALUE = 2;
+      /**
+       * <code>INVERSE_OFFERS = 9;</code>
+       *
+       * <pre>
+       * See 'InverseOffers' below.
+       * </pre>
+       */
+      public static final int INVERSE_OFFERS_VALUE = 9;
+      /**
+       * <code>RESCIND = 3;</code>
+       *
+       * <pre>
+       * See 'Rescind' below.
+       * </pre>
+       */
+      public static final int RESCIND_VALUE = 3;
+      /**
+       * <code>RESCIND_INVERSE_OFFER = 10;</code>
+       *
+       * <pre>
+       * See 'RescindInverseOffer' below.
+       * </pre>
+       */
+      public static final int RESCIND_INVERSE_OFFER_VALUE = 10;
+      /**
+       * <code>UPDATE = 4;</code>
+       *
+       * <pre>
+       * See 'Update' below.
+       * </pre>
+       */
+      public static final int UPDATE_VALUE = 4;
+      /**
+       * <code>MESSAGE = 5;</code>
+       *
+       * <pre>
+       * See 'Message' below.
+       * </pre>
+       */
+      public static final int MESSAGE_VALUE = 5;
+      /**
+       * <code>FAILURE = 6;</code>
+       *
+       * <pre>
+       * See 'Failure' below.
+       * </pre>
+       */
+      public static final int FAILURE_VALUE = 6;
+      /**
+       * <code>ERROR = 7;</code>
+       *
+       * <pre>
+       * See 'Error' below.
+       * </pre>
+       */
+      public static final int ERROR_VALUE = 7;
+      /**
+       * <code>HEARTBEAT = 8;</code>
+       *
+       * <pre>
+       * Periodic message sent by the Mesos master according to
+       * 'Subscribed.heartbeat_interval_seconds'. If the scheduler does
+       * not receive any events (including heartbeats) for an extended
+       * period of time (e.g., 5 x heartbeat_interval_seconds), there is
+       * likely a network partition. In such a case the scheduler should
+       * close the existing subscription connection and resubscribe
+       * using a backoff strategy.
+       * </pre>
+       */
+      public static final int HEARTBEAT_VALUE = 8;
+
+
+      public final int getNumber() { return value; }
+
+      public static Type valueOf(int value) {
+        switch (value) {
+          case 0: return UNKNOWN;
+          case 1: return SUBSCRIBED;
+          case 2: return OFFERS;
+          case 9: return INVERSE_OFFERS;
+          case 3: return RESCIND;
+          case 10: return RESCIND_INVERSE_OFFER;
+          case 4: return UPDATE;
+          case 5: return MESSAGE;
+          case 6: return FAILURE;
+          case 7: return ERROR;
+          case 8: return HEARTBEAT;
+          default: return null;
+        }
+      }
+
+      public static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalGetValueMap() {
+        return internalValueMap;
+      }
+      private static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap<Type>() {
+              public Type findValueByNumber(int number) {
+                return Type.valueOf(number);
+              }
+            };
+
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
+          getValueDescriptor() {
+        return getDescriptor().getValues().get(index);
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptorForType() {
+        return getDescriptor();
+      }
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.scheduler.Protos.Event.getDescriptor().getEnumTypes().get(0);
+      }
+
+      private static final Type[] VALUES = values();
+
+      public static Type valueOf(
+          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+        if (desc.getType() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "EnumValueDescriptor is not for this type.");
+        }
+        return VALUES[desc.getIndex()];
+      }
+
+      private final int index;
+      private final int value;
+
+      private Type(int index, int value) {
+        this.index = index;
+        this.value = value;
+      }
+
+      // @@protoc_insertion_point(enum_scope:mesos.v1.scheduler.Event.Type)
+    }
+
+    public interface SubscribedOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required .mesos.v1.FrameworkID framework_id = 1;
+      /**
+       * <code>required .mesos.v1.FrameworkID framework_id = 1;</code>
+       */
+      boolean hasFrameworkId();
+      /**
+       * <code>required .mesos.v1.FrameworkID framework_id = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.FrameworkID getFrameworkId();
+      /**
+       * <code>required .mesos.v1.FrameworkID framework_id = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.FrameworkIDOrBuilder getFrameworkIdOrBuilder();
+
+      // optional double heartbeat_interval_seconds = 2;
+      /**
+       * <code>optional double heartbeat_interval_seconds = 2;</code>
+       *
+       * <pre>
+       * This value will be set if the master is sending heartbeats. See
+       * the comment above on 'HEARTBEAT' for more details.
+       * </pre>
+       */
+      boolean hasHeartbeatIntervalSeconds();
+      /**
+       * <code>optional double heartbeat_interval_seconds = 2;</code>
+       *
+       * <pre>
+       * This value will be set if the master is sending heartbeats. See
+       * the comment above on 'HEARTBEAT' for more details.
+       * </pre>
+       */
+      double getHeartbeatIntervalSeconds();
+
+      // optional .mesos.v1.MasterInfo master_info = 3;
+      /**
+       * <code>optional .mesos.v1.MasterInfo master_info = 3;</code>
+       *
+       * <pre>
+       * Since Mesos 1.1.
+       * </pre>
+       */
+      boolean hasMasterInfo();
+      /**
+       * <code>optional .mesos.v1.MasterInfo master_info = 3;</code>
+       *
+       * <pre>
+       * Since Mesos 1.1.
+       * </pre>
+       */
+      org.apache.mesos.v1.Protos.MasterInfo getMasterInfo();
+      /**
+       * <code>optional .mesos.v1.MasterInfo master_info = 3;</code>
+       *
+       * <pre>
+       * Since Mesos 1.1.
+       * </pre>
+       */
+      org.apache.mesos.v1.Protos.MasterInfoOrBuilder getMasterInfoOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.scheduler.Event.Subscribed}
+     *
+     * <pre>
+     * First event received when the scheduler subscribes.
+     * </pre>
+     */
+    public static final class Subscribed extends
+        com.google.protobuf.GeneratedMessage
+        implements SubscribedOrBuilder {
+      // Use Subscribed.newBuilder() to construct.
+      private Subscribed(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Subscribed(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Subscribed defaultInstance;
+      public static Subscribed getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Subscribed getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Subscribed(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.v1.Protos.FrameworkID.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = frameworkId_.toBuilder();
+                }
+                frameworkId_ = input.readMessage(org.apache.mesos.v1.Protos.FrameworkID.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(frameworkId_);
+                  frameworkId_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+              case 17: {
+                bitField0_ |= 0x00000002;
+                heartbeatIntervalSeconds_ = input.readDouble();
+                break;
+              }
+              case 26: {
+                org.apache.mesos.v1.Protos.MasterInfo.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                  subBuilder = masterInfo_.toBuilder();
+                }
+                masterInfo_ = input.readMessage(org.apache.mesos.v1.Protos.MasterInfo.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(masterInfo_);
+                  masterInfo_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000004;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_Subscribed_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_Subscribed_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.scheduler.Protos.Event.Subscribed.class, org.apache.mesos.v1.scheduler.Protos.Event.Subscribed.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Subscribed> PARSER =
+          new com.google.protobuf.AbstractParser<Subscribed>() {
+        public Subscribed parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Subscribed(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Subscribed> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required .mesos.v1.FrameworkID framework_id = 1;
+      public static final int FRAMEWORK_ID_FIELD_NUMBER = 1;
+      private org.apache.mesos.v1.Protos.FrameworkID frameworkId_;
+      /**
+       * <code>required .mesos.v1.FrameworkID framework_id = 1;</code>
+       */
+      public boolean hasFrameworkId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.v1.FrameworkID framework_id = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.FrameworkID getFrameworkId() {
+        return frameworkId_;
+      }
+      /**
+       * <code>required .mesos.v1.FrameworkID framework_id = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.FrameworkIDOrBuilder getFrameworkIdOrBuilder() {
+        return frameworkId_;
+      }
+
+      // optional double heartbeat_interval_seconds = 2;
+      public static final int HEARTBEAT_INTERVAL_SECONDS_FIELD_NUMBER = 2;
+      private double heartbeatIntervalSeconds_;
+      /**
+       * <code>optional double heartbeat_interval_seconds = 2;</code>
+       *
+       * <pre>
+       * This value will be set if the master is sending heartbeats. See
+       * the comment above on 'HEARTBEAT' for more details.
+       * </pre>
+       */
+      public boolean hasHeartbeatIntervalSeconds() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional double heartbeat_interval_seconds = 2;</code>
+       *
+       * <pre>
+       * This value will be set if the master is sending heartbeats. See
+       * the comment above on 'HEARTBEAT' for more details.
+       * </pre>
+       */
+      public double getHeartbeatIntervalSeconds() {
+        return heartbeatIntervalSeconds_;
+      }
+
+      // optional .mesos.v1.MasterInfo master_info = 3;
+      public static final int MASTER_INFO_FIELD_NUMBER = 3;
+      private org.apache.mesos.v1.Protos.MasterInfo masterInfo_;
+      /**
+       * <code>optional .mesos.v1.MasterInfo master_info = 3;</code>
+       *
+       * <pre>
+       * Since Mesos 1.1.
+       * </pre>
+       */
+      public boolean hasMasterInfo() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.v1.MasterInfo master_info = 3;</code>
+       *
+       * <pre>
+       * Since Mesos 1.1.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.MasterInfo getMasterInfo() {
+        return masterInfo_;
+      }
+      /**
+       * <code>optional .mesos.v1.MasterInfo master_info = 3;</code>
+       *
+       * <pre>
+       * Since Mesos 1.1.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.MasterInfoOrBuilder getMasterInfoOrBuilder() {
+        return masterInfo_;
+      }
+
+      private void initFields() {
+        frameworkId_ = org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance();
+        heartbeatIntervalSeconds_ = 0D;
+        masterInfo_ = org.apache.mesos.v1.Protos.MasterInfo.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasFrameworkId()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getFrameworkId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (hasMasterInfo()) {
+          if (!getMasterInfo().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, frameworkId_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeDouble(2, heartbeatIntervalSeconds_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeMessage(3, masterInfo_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, frameworkId_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeDoubleSize(2, heartbeatIntervalSeconds_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(3, masterInfo_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Subscribed parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Subscribed parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Subscribed parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Subscribed parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Subscribed parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Subscribed parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Subscribed parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Subscribed parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Subscribed parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Subscribed parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.scheduler.Protos.Event.Subscribed prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.scheduler.Event.Subscribed}
+       *
+       * <pre>
+       * First event received when the scheduler subscribes.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.scheduler.Protos.Event.SubscribedOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_Subscribed_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_Subscribed_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.scheduler.Protos.Event.Subscribed.class, org.apache.mesos.v1.scheduler.Protos.Event.Subscribed.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.scheduler.Protos.Event.Subscribed.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getFrameworkIdFieldBuilder();
+            getMasterInfoFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (frameworkIdBuilder_ == null) {
+            frameworkId_ = org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance();
+          } else {
+            frameworkIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          heartbeatIntervalSeconds_ = 0D;
+          bitField0_ = (bitField0_ & ~0x00000002);
+          if (masterInfoBuilder_ == null) {
+            masterInfo_ = org.apache.mesos.v1.Protos.MasterInfo.getDefaultInstance();
+          } else {
+            masterInfoBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_Subscribed_descriptor;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Event.Subscribed getDefaultInstanceForType() {
+          return org.apache.mesos.v1.scheduler.Protos.Event.Subscribed.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Event.Subscribed build() {
+          org.apache.mesos.v1.scheduler.Protos.Event.Subscribed result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Event.Subscribed buildPartial() {
+          org.apache.mesos.v1.scheduler.Protos.Event.Subscribed result = new org.apache.mesos.v1.scheduler.Protos.Event.Subscribed(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (frameworkIdBuilder_ == null) {
+            result.frameworkId_ = frameworkId_;
+          } else {
+            result.frameworkId_ = frameworkIdBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          result.heartbeatIntervalSeconds_ = heartbeatIntervalSeconds_;
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          if (masterInfoBuilder_ == null) {
+            result.masterInfo_ = masterInfo_;
+          } else {
+            result.masterInfo_ = masterInfoBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.scheduler.Protos.Event.Subscribed) {
+            return mergeFrom((org.apache.mesos.v1.scheduler.Protos.Event.Subscribed)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.scheduler.Protos.Event.Subscribed other) {
+          if (other == org.apache.mesos.v1.scheduler.Protos.Event.Subscribed.getDefaultInstance()) return this;
+          if (other.hasFrameworkId()) {
+            mergeFrameworkId(other.getFrameworkId());
+          }
+          if (other.hasHeartbeatIntervalSeconds()) {
+            setHeartbeatIntervalSeconds(other.getHeartbeatIntervalSeconds());
+          }
+          if (other.hasMasterInfo()) {
+            mergeMasterInfo(other.getMasterInfo());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasFrameworkId()) {
+            
+            return false;
+          }
+          if (!getFrameworkId().isInitialized()) {
+            
+            return false;
+          }
+          if (hasMasterInfo()) {
+            if (!getMasterInfo().isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.scheduler.Protos.Event.Subscribed parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.scheduler.Protos.Event.Subscribed) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required .mesos.v1.FrameworkID framework_id = 1;
+        private org.apache.mesos.v1.Protos.FrameworkID frameworkId_ = org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.FrameworkID, org.apache.mesos.v1.Protos.FrameworkID.Builder, org.apache.mesos.v1.Protos.FrameworkIDOrBuilder> frameworkIdBuilder_;
+        /**
+         * <code>required .mesos.v1.FrameworkID framework_id = 1;</code>
+         */
+        public boolean hasFrameworkId() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.v1.FrameworkID framework_id = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.FrameworkID getFrameworkId() {
+          if (frameworkIdBuilder_ == null) {
+            return frameworkId_;
+          } else {
+            return frameworkIdBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.v1.FrameworkID framework_id = 1;</code>
+         */
+        public Builder setFrameworkId(org.apache.mesos.v1.Protos.FrameworkID value) {
+          if (frameworkIdBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            frameworkId_ = value;
+            onChanged();
+          } else {
+            frameworkIdBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.FrameworkID framework_id = 1;</code>
+         */
+        public Builder setFrameworkId(
+            org.apache.mesos.v1.Protos.FrameworkID.Builder builderForValue) {
+          if (frameworkIdBuilder_ == null) {
+            frameworkId_ = builderForValue.build();
+            onChanged();
+          } else {
+            frameworkIdBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.FrameworkID framework_id = 1;</code>
+         */
+        public Builder mergeFrameworkId(org.apache.mesos.v1.Protos.FrameworkID value) {
+          if (frameworkIdBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                frameworkId_ != org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance()) {
+              frameworkId_ =
+                org.apache.mesos.v1.Protos.FrameworkID.newBuilder(frameworkId_).mergeFrom(value).buildPartial();
+            } else {
+              frameworkId_ = value;
+            }
+            onChanged();
+          } else {
+            frameworkIdBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.FrameworkID framework_id = 1;</code>
+         */
+        public Builder clearFrameworkId() {
+          if (frameworkIdBuilder_ == null) {
+            frameworkId_ = org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance();
+            onChanged();
+          } else {
+            frameworkIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.FrameworkID framework_id = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.FrameworkID.Builder getFrameworkIdBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getFrameworkIdFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.v1.FrameworkID framework_id = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.FrameworkIDOrBuilder getFrameworkIdOrBuilder() {
+          if (frameworkIdBuilder_ != null) {
+            return frameworkIdBuilder_.getMessageOrBuilder();
+          } else {
+            return frameworkId_;
+          }
+        }
+        /**
+         * <code>required .mesos.v1.FrameworkID framework_id = 1;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.FrameworkID, org.apache.mesos.v1.Protos.FrameworkID.Builder, org.apache.mesos.v1.Protos.FrameworkIDOrBuilder> 
+            getFrameworkIdFieldBuilder() {
+          if (frameworkIdBuilder_ == null) {
+            frameworkIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.FrameworkID, org.apache.mesos.v1.Protos.FrameworkID.Builder, org.apache.mesos.v1.Protos.FrameworkIDOrBuilder>(
+                    frameworkId_,
+                    getParentForChildren(),
+                    isClean());
+            frameworkId_ = null;
+          }
+          return frameworkIdBuilder_;
+        }
+
+        // optional double heartbeat_interval_seconds = 2;
+        private double heartbeatIntervalSeconds_ ;
+        /**
+         * <code>optional double heartbeat_interval_seconds = 2;</code>
+         *
+         * <pre>
+         * This value will be set if the master is sending heartbeats. See
+         * the comment above on 'HEARTBEAT' for more details.
+         * </pre>
+         */
+        public boolean hasHeartbeatIntervalSeconds() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional double heartbeat_interval_seconds = 2;</code>
+         *
+         * <pre>
+         * This value will be set if the master is sending heartbeats. See
+         * the comment above on 'HEARTBEAT' for more details.
+         * </pre>
+         */
+        public double getHeartbeatIntervalSeconds() {
+          return heartbeatIntervalSeconds_;
+        }
+        /**
+         * <code>optional double heartbeat_interval_seconds = 2;</code>
+         *
+         * <pre>
+         * This value will be set if the master is sending heartbeats. See
+         * the comment above on 'HEARTBEAT' for more details.
+         * </pre>
+         */
+        public Builder setHeartbeatIntervalSeconds(double value) {
+          bitField0_ |= 0x00000002;
+          heartbeatIntervalSeconds_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional double heartbeat_interval_seconds = 2;</code>
+         *
+         * <pre>
+         * This value will be set if the master is sending heartbeats. See
+         * the comment above on 'HEARTBEAT' for more details.
+         * </pre>
+         */
+        public Builder clearHeartbeatIntervalSeconds() {
+          bitField0_ = (bitField0_ & ~0x00000002);
+          heartbeatIntervalSeconds_ = 0D;
+          onChanged();
+          return this;
+        }
+
+        // optional .mesos.v1.MasterInfo master_info = 3;
+        private org.apache.mesos.v1.Protos.MasterInfo masterInfo_ = org.apache.mesos.v1.Protos.MasterInfo.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.MasterInfo, org.apache.mesos.v1.Protos.MasterInfo.Builder, org.apache.mesos.v1.Protos.MasterInfoOrBuilder> masterInfoBuilder_;
+        /**
+         * <code>optional .mesos.v1.MasterInfo master_info = 3;</code>
+         *
+         * <pre>
+         * Since Mesos 1.1.
+         * </pre>
+         */
+        public boolean hasMasterInfo() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional .mesos.v1.MasterInfo master_info = 3;</code>
+         *
+         * <pre>
+         * Since Mesos 1.1.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.MasterInfo getMasterInfo() {
+          if (masterInfoBuilder_ == null) {
+            return masterInfo_;
+          } else {
+            return masterInfoBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.MasterInfo master_info = 3;</code>
+         *
+         * <pre>
+         * Since Mesos 1.1.
+         * </pre>
+         */
+        public Builder setMasterInfo(org.apache.mesos.v1.Protos.MasterInfo value) {
+          if (masterInfoBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            masterInfo_ = value;
+            onChanged();
+          } else {
+            masterInfoBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.MasterInfo master_info = 3;</code>
+         *
+         * <pre>
+         * Since Mesos 1.1.
+         * </pre>
+         */
+        public Builder setMasterInfo(
+            org.apache.mesos.v1.Protos.MasterInfo.Builder builderForValue) {
+          if (masterInfoBuilder_ == null) {
+            masterInfo_ = builderForValue.build();
+            onChanged();
+          } else {
+            masterInfoBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.MasterInfo master_info = 3;</code>
+         *
+         * <pre>
+         * Since Mesos 1.1.
+         * </pre>
+         */
+        public Builder mergeMasterInfo(org.apache.mesos.v1.Protos.MasterInfo value) {
+          if (masterInfoBuilder_ == null) {
+            if (((bitField0_ & 0x00000004) == 0x00000004) &&
+                masterInfo_ != org.apache.mesos.v1.Protos.MasterInfo.getDefaultInstance()) {
+              masterInfo_ =
+                org.apache.mesos.v1.Protos.MasterInfo.newBuilder(masterInfo_).mergeFrom(value).buildPartial();
+            } else {
+              masterInfo_ = value;
+            }
+            onChanged();
+          } else {
+            masterInfoBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.MasterInfo master_info = 3;</code>
+         *
+         * <pre>
+         * Since Mesos 1.1.
+         * </pre>
+         */
+        public Builder clearMasterInfo() {
+          if (masterInfoBuilder_ == null) {
+            masterInfo_ = org.apache.mesos.v1.Protos.MasterInfo.getDefaultInstance();
+            onChanged();
+          } else {
+            masterInfoBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.MasterInfo master_info = 3;</code>
+         *
+         * <pre>
+         * Since Mesos 1.1.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.MasterInfo.Builder getMasterInfoBuilder() {
+          bitField0_ |= 0x00000004;
+          onChanged();
+          return getMasterInfoFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.v1.MasterInfo master_info = 3;</code>
+         *
+         * <pre>
+         * Since Mesos 1.1.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.MasterInfoOrBuilder getMasterInfoOrBuilder() {
+          if (masterInfoBuilder_ != null) {
+            return masterInfoBuilder_.getMessageOrBuilder();
+          } else {
+            return masterInfo_;
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.MasterInfo master_info = 3;</code>
+         *
+         * <pre>
+         * Since Mesos 1.1.
+         * </pre>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.MasterInfo, org.apache.mesos.v1.Protos.MasterInfo.Builder, org.apache.mesos.v1.Protos.MasterInfoOrBuilder> 
+            getMasterInfoFieldBuilder() {
+          if (masterInfoBuilder_ == null) {
+            masterInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.MasterInfo, org.apache.mesos.v1.Protos.MasterInfo.Builder, org.apache.mesos.v1.Protos.MasterInfoOrBuilder>(
+                    masterInfo_,
+                    getParentForChildren(),
+                    isClean());
+            masterInfo_ = null;
+          }
+          return masterInfoBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.scheduler.Event.Subscribed)
+      }
+
+      static {
+        defaultInstance = new Subscribed(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.scheduler.Event.Subscribed)
+    }
+
+    public interface OffersOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // repeated .mesos.v1.Offer offers = 1;
+      /**
+       * <code>repeated .mesos.v1.Offer offers = 1;</code>
+       */
+      java.util.List<org.apache.mesos.v1.Protos.Offer> 
+          getOffersList();
+      /**
+       * <code>repeated .mesos.v1.Offer offers = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.Offer getOffers(int index);
+      /**
+       * <code>repeated .mesos.v1.Offer offers = 1;</code>
+       */
+      int getOffersCount();
+      /**
+       * <code>repeated .mesos.v1.Offer offers = 1;</code>
+       */
+      java.util.List<? extends org.apache.mesos.v1.Protos.OfferOrBuilder> 
+          getOffersOrBuilderList();
+      /**
+       * <code>repeated .mesos.v1.Offer offers = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.OfferOrBuilder getOffersOrBuilder(
+          int index);
+    }
+    /**
+     * Protobuf type {@code mesos.v1.scheduler.Event.Offers}
+     *
+     * <pre>
+     * Received whenever there are new resources that are offered to the
+     * scheduler. Each offer corresponds to a set of resources on an
+     * agent. Until the scheduler accepts or declines an offer the
+     * resources are considered allocated to the scheduler.
+     * </pre>
+     */
+    public static final class Offers extends
+        com.google.protobuf.GeneratedMessage
+        implements OffersOrBuilder {
+      // Use Offers.newBuilder() to construct.
+      private Offers(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Offers(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Offers defaultInstance;
+      public static Offers getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Offers getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Offers(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                  offers_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Offer>();
+                  mutable_bitField0_ |= 0x00000001;
+                }
+                offers_.add(input.readMessage(org.apache.mesos.v1.Protos.Offer.PARSER, extensionRegistry));
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+            offers_ = java.util.Collections.unmodifiableList(offers_);
+          }
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_Offers_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_Offers_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.scheduler.Protos.Event.Offers.class, org.apache.mesos.v1.scheduler.Protos.Event.Offers.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Offers> PARSER =
+          new com.google.protobuf.AbstractParser<Offers>() {
+        public Offers parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Offers(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Offers> getParserForType() {
+        return PARSER;
+      }
+
+      // repeated .mesos.v1.Offer offers = 1;
+      public static final int OFFERS_FIELD_NUMBER = 1;
+      private java.util.List<org.apache.mesos.v1.Protos.Offer> offers_;
+      /**
+       * <code>repeated .mesos.v1.Offer offers = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Offer> getOffersList() {
+        return offers_;
+      }
+      /**
+       * <code>repeated .mesos.v1.Offer offers = 1;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.OfferOrBuilder> 
+          getOffersOrBuilderList() {
+        return offers_;
+      }
+      /**
+       * <code>repeated .mesos.v1.Offer offers = 1;</code>
+       */
+      public int getOffersCount() {
+        return offers_.size();
+      }
+      /**
+       * <code>repeated .mesos.v1.Offer offers = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.Offer getOffers(int index) {
+        return offers_.get(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.Offer offers = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.OfferOrBuilder getOffersOrBuilder(
+          int index) {
+        return offers_.get(index);
+      }
+
+      private void initFields() {
+        offers_ = java.util.Collections.emptyList();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        for (int i = 0; i < getOffersCount(); i++) {
+          if (!getOffers(i).isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        for (int i = 0; i < offers_.size(); i++) {
+          output.writeMessage(1, offers_.get(i));
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        for (int i = 0; i < offers_.size(); i++) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, offers_.get(i));
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Offers parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Offers parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Offers parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Offers parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Offers parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Offers parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Offers parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Offers parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Offers parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Offers parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.scheduler.Protos.Event.Offers prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.scheduler.Event.Offers}
+       *
+       * <pre>
+       * Received whenever there are new resources that are offered to the
+       * scheduler. Each offer corresponds to a set of resources on an
+       * agent. Until the scheduler accepts or declines an offer the
+       * resources are considered allocated to the scheduler.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.scheduler.Protos.Event.OffersOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_Offers_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_Offers_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.scheduler.Protos.Event.Offers.class, org.apache.mesos.v1.scheduler.Protos.Event.Offers.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.scheduler.Protos.Event.Offers.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getOffersFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (offersBuilder_ == null) {
+            offers_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000001);
+          } else {
+            offersBuilder_.clear();
+          }
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_Offers_descriptor;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Event.Offers getDefaultInstanceForType() {
+          return org.apache.mesos.v1.scheduler.Protos.Event.Offers.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Event.Offers build() {
+          org.apache.mesos.v1.scheduler.Protos.Event.Offers result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Event.Offers buildPartial() {
+          org.apache.mesos.v1.scheduler.Protos.Event.Offers result = new org.apache.mesos.v1.scheduler.Protos.Event.Offers(this);
+          int from_bitField0_ = bitField0_;
+          if (offersBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              offers_ = java.util.Collections.unmodifiableList(offers_);
+              bitField0_ = (bitField0_ & ~0x00000001);
+            }
+            result.offers_ = offers_;
+          } else {
+            result.offers_ = offersBuilder_.build();
+          }
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.scheduler.Protos.Event.Offers) {
+            return mergeFrom((org.apache.mesos.v1.scheduler.Protos.Event.Offers)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.scheduler.Protos.Event.Offers other) {
+          if (other == org.apache.mesos.v1.scheduler.Protos.Event.Offers.getDefaultInstance()) return this;
+          if (offersBuilder_ == null) {
+            if (!other.offers_.isEmpty()) {
+              if (offers_.isEmpty()) {
+                offers_ = other.offers_;
+                bitField0_ = (bitField0_ & ~0x00000001);
+              } else {
+                ensureOffersIsMutable();
+                offers_.addAll(other.offers_);
+              }
+              onChanged();
+            }
+          } else {
+            if (!other.offers_.isEmpty()) {
+              if (offersBuilder_.isEmpty()) {
+                offersBuilder_.dispose();
+                offersBuilder_ = null;
+                offers_ = other.offers_;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                offersBuilder_ = 
+                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                     getOffersFieldBuilder() : null;
+              } else {
+                offersBuilder_.addAllMessages(other.offers_);
+              }
+            }
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          for (int i = 0; i < getOffersCount(); i++) {
+            if (!getOffers(i).isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.scheduler.Protos.Event.Offers parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.scheduler.Protos.Event.Offers) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // repeated .mesos.v1.Offer offers = 1;
+        private java.util.List<org.apache.mesos.v1.Protos.Offer> offers_ =
+          java.util.Collections.emptyList();
+        private void ensureOffersIsMutable() {
+          if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+            offers_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Offer>(offers_);
+            bitField0_ |= 0x00000001;
+           }
+        }
+
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.v1.Protos.Offer, org.apache.mesos.v1.Protos.Offer.Builder, org.apache.mesos.v1.Protos.OfferOrBuilder> offersBuilder_;
+
+        /**
+         * <code>repeated .mesos.v1.Offer offers = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.v1.Protos.Offer> getOffersList() {
+          if (offersBuilder_ == null) {
+            return java.util.Collections.unmodifiableList(offers_);
+          } else {
+            return offersBuilder_.getMessageList();
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.Offer offers = 1;</code>
+         */
+        public int getOffersCount() {
+          if (offersBuilder_ == null) {
+            return offers_.size();
+          } else {
+            return offersBuilder_.getCount();
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.Offer offers = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.Offer getOffers(int index) {
+          if (offersBuilder_ == null) {
+            return offers_.get(index);
+          } else {
+            return offersBuilder_.getMessage(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.Offer offers = 1;</code>
+         */
+        public Builder setOffers(
+            int index, org.apache.mesos.v1.Protos.Offer value) {
+          if (offersBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureOffersIsMutable();
+            offers_.set(index, value);
+            onChanged();
+          } else {
+            offersBuilder_.setMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Offer offers = 1;</code>
+         */
+        public Builder setOffers(
+            int index, org.apache.mesos.v1.Protos.Offer.Builder builderForValue) {
+          if (offersBuilder_ == null) {
+            ensureOffersIsMutable();
+            offers_.set(index, builderForValue.build());
+            onChanged();
+          } else {
+            offersBuilder_.setMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Offer offers = 1;</code>
+         */
+        public Builder addOffers(org.apache.mesos.v1.Protos.Offer value) {
+          if (offersBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureOffersIsMutable();
+            offers_.add(value);
+            onChanged();
+          } else {
+            offersBuilder_.addMessage(value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Offer offers = 1;</code>
+         */
+        public Builder addOffers(
+            int index, org.apache.mesos.v1.Protos.Offer value) {
+          if (offersBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureOffersIsMutable();
+            offers_.add(index, value);
+            onChanged();
+          } else {
+            offersBuilder_.addMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Offer offers = 1;</code>
+         */
+        public Builder addOffers(
+            org.apache.mesos.v1.Protos.Offer.Builder builderForValue) {
+          if (offersBuilder_ == null) {
+            ensureOffersIsMutable();
+            offers_.add(builderForValue.build());
+            onChanged();
+          } else {
+            offersBuilder_.addMessage(builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Offer offers = 1;</code>
+         */
+        public Builder addOffers(
+            int index, org.apache.mesos.v1.Protos.Offer.Builder builderForValue) {
+          if (offersBuilder_ == null) {
+            ensureOffersIsMutable();
+            offers_.add(index, builderForValue.build());
+            onChanged();
+          } else {
+            offersBuilder_.addMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Offer offers = 1;</code>
+         */
+        public Builder addAllOffers(
+            java.lang.Iterable<? extends org.apache.mesos.v1.Protos.Offer> values) {
+          if (offersBuilder_ == null) {
+            ensureOffersIsMutable();
+            super.addAll(values, offers_);
+            onChanged();
+          } else {
+            offersBuilder_.addAllMessages(values);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Offer offers = 1;</code>
+         */
+        public Builder clearOffers() {
+          if (offersBuilder_ == null) {
+            offers_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000001);
+            onChanged();
+          } else {
+            offersBuilder_.clear();
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Offer offers = 1;</code>
+         */
+        public Builder removeOffers(int index) {
+          if (offersBuilder_ == null) {
+            ensureOffersIsMutable();
+            offers_.remove(index);
+            onChanged();
+          } else {
+            offersBuilder_.remove(index);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Offer offers = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.Offer.Builder getOffersBuilder(
+            int index) {
+          return getOffersFieldBuilder().getBuilder(index);
+        }
+        /**
+         * <code>repeated .mesos.v1.Offer offers = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.OfferOrBuilder getOffersOrBuilder(
+            int index) {
+          if (offersBuilder_ == null) {
+            return offers_.get(index);  } else {
+            return offersBuilder_.getMessageOrBuilder(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.Offer offers = 1;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.v1.Protos.OfferOrBuilder> 
+             getOffersOrBuilderList() {
+          if (offersBuilder_ != null) {
+            return offersBuilder_.getMessageOrBuilderList();
+          } else {
+            return java.util.Collections.unmodifiableList(offers_);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.Offer offers = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.Offer.Builder addOffersBuilder() {
+          return getOffersFieldBuilder().addBuilder(
+              org.apache.mesos.v1.Protos.Offer.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.v1.Offer offers = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.Offer.Builder addOffersBuilder(
+            int index) {
+          return getOffersFieldBuilder().addBuilder(
+              index, org.apache.mesos.v1.Protos.Offer.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.v1.Offer offers = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.v1.Protos.Offer.Builder> 
+             getOffersBuilderList() {
+          return getOffersFieldBuilder().getBuilderList();
+        }
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.v1.Protos.Offer, org.apache.mesos.v1.Protos.Offer.Builder, org.apache.mesos.v1.Protos.OfferOrBuilder> 
+            getOffersFieldBuilder() {
+          if (offersBuilder_ == null) {
+            offersBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.v1.Protos.Offer, org.apache.mesos.v1.Protos.Offer.Builder, org.apache.mesos.v1.Protos.OfferOrBuilder>(
+                    offers_,
+                    ((bitField0_ & 0x00000001) == 0x00000001),
+                    getParentForChildren(),
+                    isClean());
+            offers_ = null;
+          }
+          return offersBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.scheduler.Event.Offers)
+      }
+
+      static {
+        defaultInstance = new Offers(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.scheduler.Event.Offers)
+    }
+
+    public interface InverseOffersOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // repeated .mesos.v1.InverseOffer inverse_offers = 1;
+      /**
+       * <code>repeated .mesos.v1.InverseOffer inverse_offers = 1;</code>
+       */
+      java.util.List<org.apache.mesos.v1.Protos.InverseOffer> 
+          getInverseOffersList();
+      /**
+       * <code>repeated .mesos.v1.InverseOffer inverse_offers = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.InverseOffer getInverseOffers(int index);
+      /**
+       * <code>repeated .mesos.v1.InverseOffer inverse_offers = 1;</code>
+       */
+      int getInverseOffersCount();
+      /**
+       * <code>repeated .mesos.v1.InverseOffer inverse_offers = 1;</code>
+       */
+      java.util.List<? extends org.apache.mesos.v1.Protos.InverseOfferOrBuilder> 
+          getInverseOffersOrBuilderList();
+      /**
+       * <code>repeated .mesos.v1.InverseOffer inverse_offers = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.InverseOfferOrBuilder getInverseOffersOrBuilder(
+          int index);
+    }
+    /**
+     * Protobuf type {@code mesos.v1.scheduler.Event.InverseOffers}
+     *
+     * <pre>
+     * Received whenever there are resources requested back from the
+     * scheduler. Each inverse offer specifies the agent, and
+     * optionally specific resources. Accepting or Declining an inverse
+     * offer informs the allocator of the scheduler's ability to release
+     * the specified resources without violating an SLA. If no resources
+     * are specified then all resources on the agent are requested to be
+     * released.
+     * </pre>
+     */
+    public static final class InverseOffers extends
+        com.google.protobuf.GeneratedMessage
+        implements InverseOffersOrBuilder {
+      // Use InverseOffers.newBuilder() to construct.
+      private InverseOffers(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private InverseOffers(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final InverseOffers defaultInstance;
+      public static InverseOffers getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public InverseOffers getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private InverseOffers(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                  inverseOffers_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.InverseOffer>();
+                  mutable_bitField0_ |= 0x00000001;
+                }
+                inverseOffers_.add(input.readMessage(org.apache.mesos.v1.Protos.InverseOffer.PARSER, extensionRegistry));
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+            inverseOffers_ = java.util.Collections.unmodifiableList(inverseOffers_);
+          }
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_InverseOffers_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_InverseOffers_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers.class, org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<InverseOffers> PARSER =
+          new com.google.protobuf.AbstractParser<InverseOffers>() {
+        public InverseOffers parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new InverseOffers(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<InverseOffers> getParserForType() {
+        return PARSER;
+      }
+
+      // repeated .mesos.v1.InverseOffer inverse_offers = 1;
+      public static final int INVERSE_OFFERS_FIELD_NUMBER = 1;
+      private java.util.List<org.apache.mesos.v1.Protos.InverseOffer> inverseOffers_;
+      /**
+       * <code>repeated .mesos.v1.InverseOffer inverse_offers = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.InverseOffer> getInverseOffersList() {
+        return inverseOffers_;
+      }
+      /**
+       * <code>repeated .mesos.v1.InverseOffer inverse_offers = 1;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.InverseOfferOrBuilder> 
+          getInverseOffersOrBuilderList() {
+        return inverseOffers_;
+      }
+      /**
+       * <code>repeated .mesos.v1.InverseOffer inverse_offers = 1;</code>
+       */
+      public int getInverseOffersCount() {
+        return inverseOffers_.size();
+      }
+      /**
+       * <code>repeated .mesos.v1.InverseOffer inverse_offers = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.InverseOffer getInverseOffers(int index) {
+        return inverseOffers_.get(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.InverseOffer inverse_offers = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.InverseOfferOrBuilder getInverseOffersOrBuilder(
+          int index) {
+        return inverseOffers_.get(index);
+      }
+
+      private void initFields() {
+        inverseOffers_ = java.util.Collections.emptyList();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        for (int i = 0; i < getInverseOffersCount(); i++) {
+          if (!getInverseOffers(i).isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        for (int i = 0; i < inverseOffers_.size(); i++) {
+          output.writeMessage(1, inverseOffers_.get(i));
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        for (int i = 0; i < inverseOffers_.size(); i++) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, inverseOffers_.get(i));
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.scheduler.Event.InverseOffers}
+       *
+       * <pre>
+       * Received whenever there are resources requested back from the
+       * scheduler. Each inverse offer specifies the agent, and
+       * optionally specific resources. Accepting or Declining an inverse
+       * offer informs the allocator of the scheduler's ability to release
+       * the specified resources without violating an SLA. If no resources
+       * are specified then all resources on the agent are requested to be
+       * released.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.scheduler.Protos.Event.InverseOffersOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_InverseOffers_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_InverseOffers_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers.class, org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getInverseOffersFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (inverseOffersBuilder_ == null) {
+            inverseOffers_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000001);
+          } else {
+            inverseOffersBuilder_.clear();
+          }
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_InverseOffers_descriptor;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers getDefaultInstanceForType() {
+          return org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers build() {
+          org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers buildPartial() {
+          org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers result = new org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers(this);
+          int from_bitField0_ = bitField0_;
+          if (inverseOffersBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              inverseOffers_ = java.util.Collections.unmodifiableList(inverseOffers_);
+              bitField0_ = (bitField0_ & ~0x00000001);
+            }
+            result.inverseOffers_ = inverseOffers_;
+          } else {
+            result.inverseOffers_ = inverseOffersBuilder_.build();
+          }
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers) {
+            return mergeFrom((org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers other) {
+          if (other == org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers.getDefaultInstance()) return this;
+          if (inverseOffersBuilder_ == null) {
+            if (!other.inverseOffers_.isEmpty()) {
+              if (inverseOffers_.isEmpty()) {
+                inverseOffers_ = other.inverseOffers_;
+                bitField0_ = (bitField0_ & ~0x00000001);
+              } else {
+                ensureInverseOffersIsMutable();
+                inverseOffers_.addAll(other.inverseOffers_);
+              }
+              onChanged();
+            }
+          } else {
+            if (!other.inverseOffers_.isEmpty()) {
+              if (inverseOffersBuilder_.isEmpty()) {
+                inverseOffersBuilder_.dispose();
+                inverseOffersBuilder_ = null;
+                inverseOffers_ = other.inverseOffers_;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                inverseOffersBuilder_ = 
+                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                     getInverseOffersFieldBuilder() : null;
+              } else {
+                inverseOffersBuilder_.addAllMessages(other.inverseOffers_);
+              }
+            }
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          for (int i = 0; i < getInverseOffersCount(); i++) {
+            if (!getInverseOffers(i).isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // repeated .mesos.v1.InverseOffer inverse_offers = 1;
+        private java.util.List<org.apache.mesos.v1.Protos.InverseOffer> inverseOffers_ =
+          java.util.Collections.emptyList();
+        private void ensureInverseOffersIsMutable() {
+          if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+            inverseOffers_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.InverseOffer>(inverseOffers_);
+            bitField0_ |= 0x00000001;
+           }
+        }
+
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.v1.Protos.InverseOffer, org.apache.mesos.v1.Protos.InverseOffer.Builder, org.apache.mesos.v1.Protos.InverseOfferOrBuilder> inverseOffersBuilder_;
+
+        /**
+         * <code>repeated .mesos.v1.InverseOffer inverse_offers = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.v1.Protos.InverseOffer> getInverseOffersList() {
+          if (inverseOffersBuilder_ == null) {
+            return java.util.Collections.unmodifiableList(inverseOffers_);
+          } else {
+            return inverseOffersBuilder_.getMessageList();
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.InverseOffer inverse_offers = 1;</code>
+         */
+        public int getInverseOffersCount() {
+          if (inverseOffersBuilder_ == null) {
+            return inverseOffers_.size();
+          } else {
+            return inverseOffersBuilder_.getCount();
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.InverseOffer inverse_offers = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.InverseOffer getInverseOffers(int index) {
+          if (inverseOffersBuilder_ == null) {
+            return inverseOffers_.get(index);
+          } else {
+            return inverseOffersBuilder_.getMessage(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.InverseOffer inverse_offers = 1;</code>
+         */
+        public Builder setInverseOffers(
+            int index, org.apache.mesos.v1.Protos.InverseOffer value) {
+          if (inverseOffersBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureInverseOffersIsMutable();
+            inverseOffers_.set(index, value);
+            onChanged();
+          } else {
+            inverseOffersBuilder_.setMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.InverseOffer inverse_offers = 1;</code>
+         */
+        public Builder setInverseOffers(
+            int index, org.apache.mesos.v1.Protos.InverseOffer.Builder builderForValue) {
+          if (inverseOffersBuilder_ == null) {
+            ensureInverseOffersIsMutable();
+            inverseOffers_.set(index, builderForValue.build());
+            onChanged();
+          } else {
+            inverseOffersBuilder_.setMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.InverseOffer inverse_offers = 1;</code>
+         */
+        public Builder addInverseOffers(org.apache.mesos.v1.Protos.InverseOffer value) {
+          if (inverseOffersBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureInverseOffersIsMutable();
+            inverseOffers_.add(value);
+            onChanged();
+          } else {
+            inverseOffersBuilder_.addMessage(value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.InverseOffer inverse_offers = 1;</code>
+         */
+        public Builder addInverseOffers(
+            int index, org.apache.mesos.v1.Protos.InverseOffer value) {
+          if (inverseOffersBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureInverseOffersIsMutable();
+            inverseOffers_.add(index, value);
+            onChanged();
+          } else {
+            inverseOffersBuilder_.addMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.InverseOffer inverse_offers = 1;</code>
+         */
+        public Builder addInverseOffers(
+            org.apache.mesos.v1.Protos.InverseOffer.Builder builderForValue) {
+          if (inverseOffersBuilder_ == null) {
+            ensureInverseOffersIsMutable();
+            inverseOffers_.add(builderForValue.build());
+            onChanged();
+          } else {
+            inverseOffersBuilder_.addMessage(builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.InverseOffer inverse_offers = 1;</code>
+         */
+        public Builder addInverseOffers(
+            int index, org.apache.mesos.v1.Protos.InverseOffer.Builder builderForValue) {
+          if (inverseOffersBuilder_ == null) {
+            ensureInverseOffersIsMutable();
+            inverseOffers_.add(index, builderForValue.build());
+            onChanged();
+          } else {
+            inverseOffersBuilder_.addMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.InverseOffer inverse_offers = 1;</code>
+         */
+        public Builder addAllInverseOffers(
+            java.lang.Iterable<? extends org.apache.mesos.v1.Protos.InverseOffer> values) {
+          if (inverseOffersBuilder_ == null) {
+            ensureInverseOffersIsMutable();
+            super.addAll(values, inverseOffers_);
+            onChanged();
+          } else {
+            inverseOffersBuilder_.addAllMessages(values);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.InverseOffer inverse_offers = 1;</code>
+         */
+        public Builder clearInverseOffers() {
+          if (inverseOffersBuilder_ == null) {
+            inverseOffers_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000001);
+            onChanged();
+          } else {
+            inverseOffersBuilder_.clear();
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.InverseOffer inverse_offers = 1;</code>
+         */
+        public Builder removeInverseOffers(int index) {
+          if (inverseOffersBuilder_ == null) {
+            ensureInverseOffersIsMutable();
+            inverseOffers_.remove(index);
+            onChanged();
+          } else {
+            inverseOffersBuilder_.remove(index);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.InverseOffer inverse_offers = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.InverseOffer.Builder getInverseOffersBuilder(
+            int index) {
+          return getInverseOffersFieldBuilder().getBuilder(index);
+        }
+        /**
+         * <code>repeated .mesos.v1.InverseOffer inverse_offers = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.InverseOfferOrBuilder getInverseOffersOrBuilder(
+            int index) {
+          if (inverseOffersBuilder_ == null) {
+            return inverseOffers_.get(index);  } else {
+            return inverseOffersBuilder_.getMessageOrBuilder(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.InverseOffer inverse_offers = 1;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.v1.Protos.InverseOfferOrBuilder> 
+             getInverseOffersOrBuilderList() {
+          if (inverseOffersBuilder_ != null) {
+            return inverseOffersBuilder_.getMessageOrBuilderList();
+          } else {
+            return java.util.Collections.unmodifiableList(inverseOffers_);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.InverseOffer inverse_offers = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.InverseOffer.Builder addInverseOffersBuilder() {
+          return getInverseOffersFieldBuilder().addBuilder(
+              org.apache.mesos.v1.Protos.InverseOffer.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.v1.InverseOffer inverse_offers = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.InverseOffer.Builder addInverseOffersBuilder(
+            int index) {
+          return getInverseOffersFieldBuilder().addBuilder(
+              index, org.apache.mesos.v1.Protos.InverseOffer.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.v1.InverseOffer inverse_offers = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.v1.Protos.InverseOffer.Builder> 
+             getInverseOffersBuilderList() {
+          return getInverseOffersFieldBuilder().getBuilderList();
+        }
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.v1.Protos.InverseOffer, org.apache.mesos.v1.Protos.InverseOffer.Builder, org.apache.mesos.v1.Protos.InverseOfferOrBuilder> 
+            getInverseOffersFieldBuilder() {
+          if (inverseOffersBuilder_ == null) {
+            inverseOffersBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.v1.Protos.InverseOffer, org.apache.mesos.v1.Protos.InverseOffer.Builder, org.apache.mesos.v1.Protos.InverseOfferOrBuilder>(
+                    inverseOffers_,
+                    ((bitField0_ & 0x00000001) == 0x00000001),
+                    getParentForChildren(),
+                    isClean());
+            inverseOffers_ = null;
+          }
+          return inverseOffersBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.scheduler.Event.InverseOffers)
+      }
+
+      static {
+        defaultInstance = new InverseOffers(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.scheduler.Event.InverseOffers)
+    }
+
+    public interface RescindOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required .mesos.v1.OfferID offer_id = 1;
+      /**
+       * <code>required .mesos.v1.OfferID offer_id = 1;</code>
+       */
+      boolean hasOfferId();
+      /**
+       * <code>required .mesos.v1.OfferID offer_id = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.OfferID getOfferId();
+      /**
+       * <code>required .mesos.v1.OfferID offer_id = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.OfferIDOrBuilder getOfferIdOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.scheduler.Event.Rescind}
+     *
+     * <pre>
+     * Received when a particular offer is no longer valid (e.g., the
+     * agent corresponding to the offer has been removed) and hence
+     * needs to be rescinded. Any future calls ('Accept' / 'Decline') made
+     * by the scheduler regarding this offer will be invalid.
+     * </pre>
+     */
+    public static final class Rescind extends
+        com.google.protobuf.GeneratedMessage
+        implements RescindOrBuilder {
+      // Use Rescind.newBuilder() to construct.
+      private Rescind(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Rescind(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Rescind defaultInstance;
+      public static Rescind getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Rescind getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Rescind(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.v1.Protos.OfferID.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = offerId_.toBuilder();
+                }
+                offerId_ = input.readMessage(org.apache.mesos.v1.Protos.OfferID.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(offerId_);
+                  offerId_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_Rescind_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_Rescind_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.scheduler.Protos.Event.Rescind.class, org.apache.mesos.v1.scheduler.Protos.Event.Rescind.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Rescind> PARSER =
+          new com.google.protobuf.AbstractParser<Rescind>() {
+        public Rescind parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Rescind(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Rescind> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required .mesos.v1.OfferID offer_id = 1;
+      public static final int OFFER_ID_FIELD_NUMBER = 1;
+      private org.apache.mesos.v1.Protos.OfferID offerId_;
+      /**
+       * <code>required .mesos.v1.OfferID offer_id = 1;</code>
+       */
+      public boolean hasOfferId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.v1.OfferID offer_id = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.OfferID getOfferId() {
+        return offerId_;
+      }
+      /**
+       * <code>required .mesos.v1.OfferID offer_id = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.OfferIDOrBuilder getOfferIdOrBuilder() {
+        return offerId_;
+      }
+
+      private void initFields() {
+        offerId_ = org.apache.mesos.v1.Protos.OfferID.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasOfferId()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getOfferId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, offerId_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, offerId_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Rescind parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Rescind parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Rescind parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Rescind parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Rescind parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Rescind parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Rescind parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Rescind parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Rescind parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Rescind parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.scheduler.Protos.Event.Rescind prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.scheduler.Event.Rescind}
+       *
+       * <pre>
+       * Received when a particular offer is no longer valid (e.g., the
+       * agent corresponding to the offer has been removed) and hence
+       * needs to be rescinded. Any future calls ('Accept' / 'Decline') made
+       * by the scheduler regarding this offer will be invalid.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.scheduler.Protos.Event.RescindOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_Rescind_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_Rescind_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.scheduler.Protos.Event.Rescind.class, org.apache.mesos.v1.scheduler.Protos.Event.Rescind.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.scheduler.Protos.Event.Rescind.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getOfferIdFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (offerIdBuilder_ == null) {
+            offerId_ = org.apache.mesos.v1.Protos.OfferID.getDefaultInstance();
+          } else {
+            offerIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_Rescind_descriptor;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Event.Rescind getDefaultInstanceForType() {
+          return org.apache.mesos.v1.scheduler.Protos.Event.Rescind.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Event.Rescind build() {
+          org.apache.mesos.v1.scheduler.Protos.Event.Rescind result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Event.Rescind buildPartial() {
+          org.apache.mesos.v1.scheduler.Protos.Event.Rescind result = new org.apache.mesos.v1.scheduler.Protos.Event.Rescind(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (offerIdBuilder_ == null) {
+            result.offerId_ = offerId_;
+          } else {
+            result.offerId_ = offerIdBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.scheduler.Protos.Event.Rescind) {
+            return mergeFrom((org.apache.mesos.v1.scheduler.Protos.Event.Rescind)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.scheduler.Protos.Event.Rescind other) {
+          if (other == org.apache.mesos.v1.scheduler.Protos.Event.Rescind.getDefaultInstance()) return this;
+          if (other.hasOfferId()) {
+            mergeOfferId(other.getOfferId());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasOfferId()) {
+            
+            return false;
+          }
+          if (!getOfferId().isInitialized()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.scheduler.Protos.Event.Rescind parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.scheduler.Protos.Event.Rescind) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required .mesos.v1.OfferID offer_id = 1;
+        private org.apache.mesos.v1.Protos.OfferID offerId_ = org.apache.mesos.v1.Protos.OfferID.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.OfferID, org.apache.mesos.v1.Protos.OfferID.Builder, org.apache.mesos.v1.Protos.OfferIDOrBuilder> offerIdBuilder_;
+        /**
+         * <code>required .mesos.v1.OfferID offer_id = 1;</code>
+         */
+        public boolean hasOfferId() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.v1.OfferID offer_id = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.OfferID getOfferId() {
+          if (offerIdBuilder_ == null) {
+            return offerId_;
+          } else {
+            return offerIdBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.v1.OfferID offer_id = 1;</code>
+         */
+        public Builder setOfferId(org.apache.mesos.v1.Protos.OfferID value) {
+          if (offerIdBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            offerId_ = value;
+            onChanged();
+          } else {
+            offerIdBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.OfferID offer_id = 1;</code>
+         */
+        public Builder setOfferId(
+            org.apache.mesos.v1.Protos.OfferID.Builder builderForValue) {
+          if (offerIdBuilder_ == null) {
+            offerId_ = builderForValue.build();
+            onChanged();
+          } else {
+            offerIdBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.OfferID offer_id = 1;</code>
+         */
+        public Builder mergeOfferId(org.apache.mesos.v1.Protos.OfferID value) {
+          if (offerIdBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                offerId_ != org.apache.mesos.v1.Protos.OfferID.getDefaultInstance()) {
+              offerId_ =
+                org.apache.mesos.v1.Protos.OfferID.newBuilder(offerId_).mergeFrom(value).buildPartial();
+            } else {
+              offerId_ = value;
+            }
+            onChanged();
+          } else {
+            offerIdBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.OfferID offer_id = 1;</code>
+         */
+        public Builder clearOfferId() {
+          if (offerIdBuilder_ == null) {
+            offerId_ = org.apache.mesos.v1.Protos.OfferID.getDefaultInstance();
+            onChanged();
+          } else {
+            offerIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.OfferID offer_id = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.OfferID.Builder getOfferIdBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getOfferIdFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.v1.OfferID offer_id = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.OfferIDOrBuilder getOfferIdOrBuilder() {
+          if (offerIdBuilder_ != null) {
+            return offerIdBuilder_.getMessageOrBuilder();
+          } else {
+            return offerId_;
+          }
+        }
+        /**
+         * <code>required .mesos.v1.OfferID offer_id = 1;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.OfferID, org.apache.mesos.v1.Protos.OfferID.Builder, org.apache.mesos.v1.Protos.OfferIDOrBuilder> 
+            getOfferIdFieldBuilder() {
+          if (offerIdBuilder_ == null) {
+            offerIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.OfferID, org.apache.mesos.v1.Protos.OfferID.Builder, org.apache.mesos.v1.Protos.OfferIDOrBuilder>(
+                    offerId_,
+                    getParentForChildren(),
+                    isClean());
+            offerId_ = null;
+          }
+          return offerIdBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.scheduler.Event.Rescind)
+      }
+
+      static {
+        defaultInstance = new Rescind(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.scheduler.Event.Rescind)
+    }
+
+    public interface RescindInverseOfferOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required .mesos.v1.OfferID inverse_offer_id = 1;
+      /**
+       * <code>required .mesos.v1.OfferID inverse_offer_id = 1;</code>
+       */
+      boolean hasInverseOfferId();
+      /**
+       * <code>required .mesos.v1.OfferID inverse_offer_id = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.OfferID getInverseOfferId();
+      /**
+       * <code>required .mesos.v1.OfferID inverse_offer_id = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.OfferIDOrBuilder getInverseOfferIdOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.scheduler.Event.RescindInverseOffer}
+     *
+     * <pre>
+     * Received when a particular inverse offer is no longer valid
+     * (e.g., the agent corresponding to the offer has been removed)
+     * and hence needs to be rescinded. Any future calls ('Accept' /
+     * 'Decline') made by the scheduler regarding this inverse offer
+     * will be invalid.
+     * </pre>
+     */
+    public static final class RescindInverseOffer extends
+        com.google.protobuf.GeneratedMessage
+        implements RescindInverseOfferOrBuilder {
+      // Use RescindInverseOffer.newBuilder() to construct.
+      private RescindInverseOffer(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private RescindInverseOffer(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final RescindInverseOffer defaultInstance;
+      public static RescindInverseOffer getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public RescindInverseOffer getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private RescindInverseOffer(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.v1.Protos.OfferID.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = inverseOfferId_.toBuilder();
+                }
+                inverseOfferId_ = input.readMessage(org.apache.mesos.v1.Protos.OfferID.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(inverseOfferId_);
+                  inverseOfferId_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_RescindInverseOffer_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_RescindInverseOffer_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer.class, org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<RescindInverseOffer> PARSER =
+          new com.google.protobuf.AbstractParser<RescindInverseOffer>() {
+        public RescindInverseOffer parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new RescindInverseOffer(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<RescindInverseOffer> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required .mesos.v1.OfferID inverse_offer_id = 1;
+      public static final int INVERSE_OFFER_ID_FIELD_NUMBER = 1;
+      private org.apache.mesos.v1.Protos.OfferID inverseOfferId_;
+      /**
+       * <code>required .mesos.v1.OfferID inverse_offer_id = 1;</code>
+       */
+      public boolean hasInverseOfferId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.v1.OfferID inverse_offer_id = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.OfferID getInverseOfferId() {
+        return inverseOfferId_;
+      }
+      /**
+       * <code>required .mesos.v1.OfferID inverse_offer_id = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.OfferIDOrBuilder getInverseOfferIdOrBuilder() {
+        return inverseOfferId_;
+      }
+
+      private void initFields() {
+        inverseOfferId_ = org.apache.mesos.v1.Protos.OfferID.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasInverseOfferId()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getInverseOfferId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, inverseOfferId_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, inverseOfferId_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.scheduler.Event.RescindInverseOffer}
+       *
+       * <pre>
+       * Received when a particular inverse offer is no longer valid
+       * (e.g., the agent corresponding to the offer has been removed)
+       * and hence needs to be rescinded. Any future calls ('Accept' /
+       * 'Decline') made by the scheduler regarding this inverse offer
+       * will be invalid.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOfferOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_RescindInverseOffer_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_RescindInverseOffer_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer.class, org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getInverseOfferIdFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (inverseOfferIdBuilder_ == null) {
+            inverseOfferId_ = org.apache.mesos.v1.Protos.OfferID.getDefaultInstance();
+          } else {
+            inverseOfferIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_RescindInverseOffer_descriptor;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer getDefaultInstanceForType() {
+          return org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer build() {
+          org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer buildPartial() {
+          org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer result = new org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (inverseOfferIdBuilder_ == null) {
+            result.inverseOfferId_ = inverseOfferId_;
+          } else {
+            result.inverseOfferId_ = inverseOfferIdBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer) {
+            return mergeFrom((org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer other) {
+          if (other == org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer.getDefaultInstance()) return this;
+          if (other.hasInverseOfferId()) {
+            mergeInverseOfferId(other.getInverseOfferId());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasInverseOfferId()) {
+            
+            return false;
+          }
+          if (!getInverseOfferId().isInitialized()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required .mesos.v1.OfferID inverse_offer_id = 1;
+        private org.apache.mesos.v1.Protos.OfferID inverseOfferId_ = org.apache.mesos.v1.Protos.OfferID.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.OfferID, org.apache.mesos.v1.Protos.OfferID.Builder, org.apache.mesos.v1.Protos.OfferIDOrBuilder> inverseOfferIdBuilder_;
+        /**
+         * <code>required .mesos.v1.OfferID inverse_offer_id = 1;</code>
+         */
+        public boolean hasInverseOfferId() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.v1.OfferID inverse_offer_id = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.OfferID getInverseOfferId() {
+          if (inverseOfferIdBuilder_ == null) {
+            return inverseOfferId_;
+          } else {
+            return inverseOfferIdBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.v1.OfferID inverse_offer_id = 1;</code>
+         */
+        public Builder setInverseOfferId(org.apache.mesos.v1.Protos.OfferID value) {
+          if (inverseOfferIdBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            inverseOfferId_ = value;
+            onChanged();
+          } else {
+            inverseOfferIdBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.OfferID inverse_offer_id = 1;</code>
+         */
+        public Builder setInverseOfferId(
+            org.apache.mesos.v1.Protos.OfferID.Builder builderForValue) {
+          if (inverseOfferIdBuilder_ == null) {
+            inverseOfferId_ = builderForValue.build();
+            onChanged();
+          } else {
+            inverseOfferIdBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.OfferID inverse_offer_id = 1;</code>
+         */
+        public Builder mergeInverseOfferId(org.apache.mesos.v1.Protos.OfferID value) {
+          if (inverseOfferIdBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                inverseOfferId_ != org.apache.mesos.v1.Protos.OfferID.getDefaultInstance()) {
+              inverseOfferId_ =
+                org.apache.mesos.v1.Protos.OfferID.newBuilder(inverseOfferId_).mergeFrom(value).buildPartial();
+            } else {
+              inverseOfferId_ = value;
+            }
+            onChanged();
+          } else {
+            inverseOfferIdBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.OfferID inverse_offer_id = 1;</code>
+         */
+        public Builder clearInverseOfferId() {
+          if (inverseOfferIdBuilder_ == null) {
+            inverseOfferId_ = org.apache.mesos.v1.Protos.OfferID.getDefaultInstance();
+            onChanged();
+          } else {
+            inverseOfferIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.OfferID inverse_offer_id = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.OfferID.Builder getInverseOfferIdBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getInverseOfferIdFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.v1.OfferID inverse_offer_id = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.OfferIDOrBuilder getInverseOfferIdOrBuilder() {
+          if (inverseOfferIdBuilder_ != null) {
+            return inverseOfferIdBuilder_.getMessageOrBuilder();
+          } else {
+            return inverseOfferId_;
+          }
+        }
+        /**
+         * <code>required .mesos.v1.OfferID inverse_offer_id = 1;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.OfferID, org.apache.mesos.v1.Protos.OfferID.Builder, org.apache.mesos.v1.Protos.OfferIDOrBuilder> 
+            getInverseOfferIdFieldBuilder() {
+          if (inverseOfferIdBuilder_ == null) {
+            inverseOfferIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.OfferID, org.apache.mesos.v1.Protos.OfferID.Builder, org.apache.mesos.v1.Protos.OfferIDOrBuilder>(
+                    inverseOfferId_,
+                    getParentForChildren(),
+                    isClean());
+            inverseOfferId_ = null;
+          }
+          return inverseOfferIdBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.scheduler.Event.RescindInverseOffer)
+      }
+
+      static {
+        defaultInstance = new RescindInverseOffer(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.scheduler.Event.RescindInverseOffer)
+    }
+
+    public interface UpdateOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required .mesos.v1.TaskStatus status = 1;
+      /**
+       * <code>required .mesos.v1.TaskStatus status = 1;</code>
+       */
+      boolean hasStatus();
+      /**
+       * <code>required .mesos.v1.TaskStatus status = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.TaskStatus getStatus();
+      /**
+       * <code>required .mesos.v1.TaskStatus status = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.TaskStatusOrBuilder getStatusOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.scheduler.Event.Update}
+     *
+     * <pre>
+     * Received whenever there is a status update that is generated by
+     * the executor or agent or master. Status updates should be used by
+     * executors to reliably communicate the status of the tasks that
+     * they manage. It is crucial that a terminal update (see TaskState
+     * in v1/mesos.proto) is sent by the executor as soon as the task
+     * terminates, in order for Mesos to release the resources allocated
+     * to the task. It is also the responsibility of the scheduler to
+     * explicitly acknowledge the receipt of a status update. See
+     * 'Acknowledge' in the 'Call' section below for the semantics.
+     *
+     * A task status update may be used for guaranteed delivery of some
+     * task-related information, e.g., task's health update. Such
+     * information may be shadowed by subsequent task status updates, that
+     * do not preserve fields of the previously sent message.
+     * </pre>
+     */
+    public static final class Update extends
+        com.google.protobuf.GeneratedMessage
+        implements UpdateOrBuilder {
+      // Use Update.newBuilder() to construct.
+      private Update(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Update(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Update defaultInstance;
+      public static Update getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Update getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Update(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.v1.Protos.TaskStatus.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = status_.toBuilder();
+                }
+                status_ = input.readMessage(org.apache.mesos.v1.Protos.TaskStatus.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(status_);
+                  status_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_Update_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_Update_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.scheduler.Protos.Event.Update.class, org.apache.mesos.v1.scheduler.Protos.Event.Update.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Update> PARSER =
+          new com.google.protobuf.AbstractParser<Update>() {
+        public Update parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Update(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Update> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required .mesos.v1.TaskStatus status = 1;
+      public static final int STATUS_FIELD_NUMBER = 1;
+      private org.apache.mesos.v1.Protos.TaskStatus status_;
+      /**
+       * <code>required .mesos.v1.TaskStatus status = 1;</code>
+       */
+      public boolean hasStatus() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.v1.TaskStatus status = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.TaskStatus getStatus() {
+        return status_;
+      }
+      /**
+       * <code>required .mesos.v1.TaskStatus status = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.TaskStatusOrBuilder getStatusOrBuilder() {
+        return status_;
+      }
+
+      private void initFields() {
+        status_ = org.apache.mesos.v1.Protos.TaskStatus.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasStatus()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getStatus().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, status_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, status_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Update parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Update parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Update parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Update parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Update parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Update parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Update parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Update parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Update parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Update parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.scheduler.Protos.Event.Update prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.scheduler.Event.Update}
+       *
+       * <pre>
+       * Received whenever there is a status update that is generated by
+       * the executor or agent or master. Status updates should be used by
+       * executors to reliably communicate the status of the tasks that
+       * they manage. It is crucial that a terminal update (see TaskState
+       * in v1/mesos.proto) is sent by the executor as soon as the task
+       * terminates, in order for Mesos to release the resources allocated
+       * to the task. It is also the responsibility of the scheduler to
+       * explicitly acknowledge the receipt of a status update. See
+       * 'Acknowledge' in the 'Call' section below for the semantics.
+       *
+       * A task status update may be used for guaranteed delivery of some
+       * task-related information, e.g., task's health update. Such
+       * information may be shadowed by subsequent task status updates, that
+       * do not preserve fields of the previously sent message.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.scheduler.Protos.Event.UpdateOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_Update_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_Update_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.scheduler.Protos.Event.Update.class, org.apache.mesos.v1.scheduler.Protos.Event.Update.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.scheduler.Protos.Event.Update.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getStatusFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (statusBuilder_ == null) {
+            status_ = org.apache.mesos.v1.Protos.TaskStatus.getDefaultInstance();
+          } else {
+            statusBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_Update_descriptor;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Event.Update getDefaultInstanceForType() {
+          return org.apache.mesos.v1.scheduler.Protos.Event.Update.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Event.Update build() {
+          org.apache.mesos.v1.scheduler.Protos.Event.Update result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Event.Update buildPartial() {
+          org.apache.mesos.v1.scheduler.Protos.Event.Update result = new org.apache.mesos.v1.scheduler.Protos.Event.Update(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (statusBuilder_ == null) {
+            result.status_ = status_;
+          } else {
+            result.status_ = statusBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.scheduler.Protos.Event.Update) {
+            return mergeFrom((org.apache.mesos.v1.scheduler.Protos.Event.Update)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.scheduler.Protos.Event.Update other) {
+          if (other == org.apache.mesos.v1.scheduler.Protos.Event.Update.getDefaultInstance()) return this;
+          if (other.hasStatus()) {
+            mergeStatus(other.getStatus());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasStatus()) {
+            
+            return false;
+          }
+          if (!getStatus().isInitialized()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.scheduler.Protos.Event.Update parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.scheduler.Protos.Event.Update) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required .mesos.v1.TaskStatus status = 1;
+        private org.apache.mesos.v1.Protos.TaskStatus status_ = org.apache.mesos.v1.Protos.TaskStatus.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.TaskStatus, org.apache.mesos.v1.Protos.TaskStatus.Builder, org.apache.mesos.v1.Protos.TaskStatusOrBuilder> statusBuilder_;
+        /**
+         * <code>required .mesos.v1.TaskStatus status = 1;</code>
+         */
+        public boolean hasStatus() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.v1.TaskStatus status = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.TaskStatus getStatus() {
+          if (statusBuilder_ == null) {
+            return status_;
+          } else {
+            return statusBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.v1.TaskStatus status = 1;</code>
+         */
+        public Builder setStatus(org.apache.mesos.v1.Protos.TaskStatus value) {
+          if (statusBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            status_ = value;
+            onChanged();
+          } else {
+            statusBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.TaskStatus status = 1;</code>
+         */
+        public Builder setStatus(
+            org.apache.mesos.v1.Protos.TaskStatus.Builder builderForValue) {
+          if (statusBuilder_ == null) {
+            status_ = builderForValue.build();
+            onChanged();
+          } else {
+            statusBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.TaskStatus status = 1;</code>
+         */
+        public Builder mergeStatus(org.apache.mesos.v1.Protos.TaskStatus value) {
+          if (statusBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                status_ != org.apache.mesos.v1.Protos.TaskStatus.getDefaultInstance()) {
+              status_ =
+                org.apache.mesos.v1.Protos.TaskStatus.newBuilder(status_).mergeFrom(value).buildPartial();
+            } else {
+              status_ = value;
+            }
+            onChanged();
+          } else {
+            statusBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.TaskStatus status = 1;</code>
+         */
+        public Builder clearStatus() {
+          if (statusBuilder_ == null) {
+            status_ = org.apache.mesos.v1.Protos.TaskStatus.getDefaultInstance();
+            onChanged();
+          } else {
+            statusBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.TaskStatus status = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.TaskStatus.Builder getStatusBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getStatusFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.v1.TaskStatus status = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.TaskStatusOrBuilder getStatusOrBuilder() {
+          if (statusBuilder_ != null) {
+            return statusBuilder_.getMessageOrBuilder();
+          } else {
+            return status_;
+          }
+        }
+        /**
+         * <code>required .mesos.v1.TaskStatus status = 1;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.TaskStatus, org.apache.mesos.v1.Protos.TaskStatus.Builder, org.apache.mesos.v1.Protos.TaskStatusOrBuilder> 
+            getStatusFieldBuilder() {
+          if (statusBuilder_ == null) {
+            statusBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.TaskStatus, org.apache.mesos.v1.Protos.TaskStatus.Builder, org.apache.mesos.v1.Protos.TaskStatusOrBuilder>(
+                    status_,
+                    getParentForChildren(),
+                    isClean());
+            status_ = null;
+          }
+          return statusBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.scheduler.Event.Update)
+      }
+
+      static {
+        defaultInstance = new Update(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.scheduler.Event.Update)
+    }
+
+    public interface MessageOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required .mesos.v1.AgentID agent_id = 1;
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+       */
+      boolean hasAgentId();
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.AgentID getAgentId();
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.AgentIDOrBuilder getAgentIdOrBuilder();
+
+      // required .mesos.v1.ExecutorID executor_id = 2;
+      /**
+       * <code>required .mesos.v1.ExecutorID executor_id = 2;</code>
+       */
+      boolean hasExecutorId();
+      /**
+       * <code>required .mesos.v1.ExecutorID executor_id = 2;</code>
+       */
+      org.apache.mesos.v1.Protos.ExecutorID getExecutorId();
+      /**
+       * <code>required .mesos.v1.ExecutorID executor_id = 2;</code>
+       */
+      org.apache.mesos.v1.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder();
+
+      // required bytes data = 3;
+      /**
+       * <code>required bytes data = 3;</code>
+       */
+      boolean hasData();
+      /**
+       * <code>required bytes data = 3;</code>
+       */
+      com.google.protobuf.ByteString getData();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.scheduler.Event.Message}
+     *
+     * <pre>
+     * Received when a custom message generated by the executor is
+     * forwarded by the master. Note that this message is not
+     * interpreted by Mesos and is only forwarded (without reliability
+     * guarantees) to the scheduler. It is up to the executor to retry
+     * if the message is dropped for any reason.
+     * </pre>
+     */
+    public static final class Message extends
+        com.google.protobuf.GeneratedMessage
+        implements MessageOrBuilder {
+      // Use Message.newBuilder() to construct.
+      private Message(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Message(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Message defaultInstance;
+      public static Message getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Message getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Message(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.v1.Protos.AgentID.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = agentId_.toBuilder();
+                }
+                agentId_ = input.readMessage(org.apache.mesos.v1.Protos.AgentID.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(agentId_);
+                  agentId_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+              case 18: {
+                org.apache.mesos.v1.Protos.ExecutorID.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                  subBuilder = executorId_.toBuilder();
+                }
+                executorId_ = input.readMessage(org.apache.mesos.v1.Protos.ExecutorID.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(executorId_);
+                  executorId_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000002;
+                break;
+              }
+              case 26: {
+                bitField0_ |= 0x00000004;
+                data_ = input.readBytes();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_Message_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_Message_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.scheduler.Protos.Event.Message.class, org.apache.mesos.v1.scheduler.Protos.Event.Message.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Message> PARSER =
+          new com.google.protobuf.AbstractParser<Message>() {
+        public Message parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Message(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Message> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required .mesos.v1.AgentID agent_id = 1;
+      public static final int AGENT_ID_FIELD_NUMBER = 1;
+      private org.apache.mesos.v1.Protos.AgentID agentId_;
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+       */
+      public boolean hasAgentId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.AgentID getAgentId() {
+        return agentId_;
+      }
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.AgentIDOrBuilder getAgentIdOrBuilder() {
+        return agentId_;
+      }
+
+      // required .mesos.v1.ExecutorID executor_id = 2;
+      public static final int EXECUTOR_ID_FIELD_NUMBER = 2;
+      private org.apache.mesos.v1.Protos.ExecutorID executorId_;
+      /**
+       * <code>required .mesos.v1.ExecutorID executor_id = 2;</code>
+       */
+      public boolean hasExecutorId() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required .mesos.v1.ExecutorID executor_id = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.ExecutorID getExecutorId() {
+        return executorId_;
+      }
+      /**
+       * <code>required .mesos.v1.ExecutorID executor_id = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder() {
+        return executorId_;
+      }
+
+      // required bytes data = 3;
+      public static final int DATA_FIELD_NUMBER = 3;
+      private com.google.protobuf.ByteString data_;
+      /**
+       * <code>required bytes data = 3;</code>
+       */
+      public boolean hasData() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>required bytes data = 3;</code>
+       */
+      public com.google.protobuf.ByteString getData() {
+        return data_;
+      }
+
+      private void initFields() {
+        agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+        executorId_ = org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance();
+        data_ = com.google.protobuf.ByteString.EMPTY;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasAgentId()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!hasExecutorId()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!hasData()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getAgentId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getExecutorId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, agentId_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeMessage(2, executorId_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeBytes(3, data_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, agentId_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(2, executorId_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(3, data_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Message parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Message parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Message parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Message parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Message parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Message parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Message parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Message parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Message parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Message parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.scheduler.Protos.Event.Message prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.scheduler.Event.Message}
+       *
+       * <pre>
+       * Received when a custom message generated by the executor is
+       * forwarded by the master. Note that this message is not
+       * interpreted by Mesos and is only forwarded (without reliability
+       * guarantees) to the scheduler. It is up to the executor to retry
+       * if the message is dropped for any reason.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.scheduler.Protos.Event.MessageOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_Message_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_Message_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.scheduler.Protos.Event.Message.class, org.apache.mesos.v1.scheduler.Protos.Event.Message.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.scheduler.Protos.Event.Message.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getAgentIdFieldBuilder();
+            getExecutorIdFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (agentIdBuilder_ == null) {
+            agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+          } else {
+            agentIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          if (executorIdBuilder_ == null) {
+            executorId_ = org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance();
+          } else {
+            executorIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          data_ = com.google.protobuf.ByteString.EMPTY;
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_Message_descriptor;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Event.Message getDefaultInstanceForType() {
+          return org.apache.mesos.v1.scheduler.Protos.Event.Message.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Event.Message build() {
+          org.apache.mesos.v1.scheduler.Protos.Event.Message result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Event.Message buildPartial() {
+          org.apache.mesos.v1.scheduler.Protos.Event.Message result = new org.apache.mesos.v1.scheduler.Protos.Event.Message(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (agentIdBuilder_ == null) {
+            result.agentId_ = agentId_;
+          } else {
+            result.agentId_ = agentIdBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          if (executorIdBuilder_ == null) {
+            result.executorId_ = executorId_;
+          } else {
+            result.executorId_ = executorIdBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          result.data_ = data_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.scheduler.Protos.Event.Message) {
+            return mergeFrom((org.apache.mesos.v1.scheduler.Protos.Event.Message)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.scheduler.Protos.Event.Message other) {
+          if (other == org.apache.mesos.v1.scheduler.Protos.Event.Message.getDefaultInstance()) return this;
+          if (other.hasAgentId()) {
+            mergeAgentId(other.getAgentId());
+          }
+          if (other.hasExecutorId()) {
+            mergeExecutorId(other.getExecutorId());
+          }
+          if (other.hasData()) {
+            setData(other.getData());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasAgentId()) {
+            
+            return false;
+          }
+          if (!hasExecutorId()) {
+            
+            return false;
+          }
+          if (!hasData()) {
+            
+            return false;
+          }
+          if (!getAgentId().isInitialized()) {
+            
+            return false;
+          }
+          if (!getExecutorId().isInitialized()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.scheduler.Protos.Event.Message parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.scheduler.Protos.Event.Message) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required .mesos.v1.AgentID agent_id = 1;
+        private org.apache.mesos.v1.Protos.AgentID agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.AgentID, org.apache.mesos.v1.Protos.AgentID.Builder, org.apache.mesos.v1.Protos.AgentIDOrBuilder> agentIdBuilder_;
+        /**
+         * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+         */
+        public boolean hasAgentId() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.AgentID getAgentId() {
+          if (agentIdBuilder_ == null) {
+            return agentId_;
+          } else {
+            return agentIdBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+         */
+        public Builder setAgentId(org.apache.mesos.v1.Protos.AgentID value) {
+          if (agentIdBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            agentId_ = value;
+            onChanged();
+          } else {
+            agentIdBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+         */
+        public Builder setAgentId(
+            org.apache.mesos.v1.Protos.AgentID.Builder builderForValue) {
+          if (agentIdBuilder_ == null) {
+            agentId_ = builderForValue.build();
+            onChanged();
+          } else {
+            agentIdBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+         */
+        public Builder mergeAgentId(org.apache.mesos.v1.Protos.AgentID value) {
+          if (agentIdBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                agentId_ != org.apache.mesos.v1.Protos.AgentID.getDefaultInstance()) {
+              agentId_ =
+                org.apache.mesos.v1.Protos.AgentID.newBuilder(agentId_).mergeFrom(value).buildPartial();
+            } else {
+              agentId_ = value;
+            }
+            onChanged();
+          } else {
+            agentIdBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+         */
+        public Builder clearAgentId() {
+          if (agentIdBuilder_ == null) {
+            agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+            onChanged();
+          } else {
+            agentIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.AgentID.Builder getAgentIdBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getAgentIdFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.AgentIDOrBuilder getAgentIdOrBuilder() {
+          if (agentIdBuilder_ != null) {
+            return agentIdBuilder_.getMessageOrBuilder();
+          } else {
+            return agentId_;
+          }
+        }
+        /**
+         * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.AgentID, org.apache.mesos.v1.Protos.AgentID.Builder, org.apache.mesos.v1.Protos.AgentIDOrBuilder> 
+            getAgentIdFieldBuilder() {
+          if (agentIdBuilder_ == null) {
+            agentIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.AgentID, org.apache.mesos.v1.Protos.AgentID.Builder, org.apache.mesos.v1.Protos.AgentIDOrBuilder>(
+                    agentId_,
+                    getParentForChildren(),
+                    isClean());
+            agentId_ = null;
+          }
+          return agentIdBuilder_;
+        }
+
+        // required .mesos.v1.ExecutorID executor_id = 2;
+        private org.apache.mesos.v1.Protos.ExecutorID executorId_ = org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.ExecutorID, org.apache.mesos.v1.Protos.ExecutorID.Builder, org.apache.mesos.v1.Protos.ExecutorIDOrBuilder> executorIdBuilder_;
+        /**
+         * <code>required .mesos.v1.ExecutorID executor_id = 2;</code>
+         */
+        public boolean hasExecutorId() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>required .mesos.v1.ExecutorID executor_id = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.ExecutorID getExecutorId() {
+          if (executorIdBuilder_ == null) {
+            return executorId_;
+          } else {
+            return executorIdBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.v1.ExecutorID executor_id = 2;</code>
+         */
+        public Builder setExecutorId(org.apache.mesos.v1.Protos.ExecutorID value) {
+          if (executorIdBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            executorId_ = value;
+            onChanged();
+          } else {
+            executorIdBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.ExecutorID executor_id = 2;</code>
+         */
+        public Builder setExecutorId(
+            org.apache.mesos.v1.Protos.ExecutorID.Builder builderForValue) {
+          if (executorIdBuilder_ == null) {
+            executorId_ = builderForValue.build();
+            onChanged();
+          } else {
+            executorIdBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.ExecutorID executor_id = 2;</code>
+         */
+        public Builder mergeExecutorId(org.apache.mesos.v1.Protos.ExecutorID value) {
+          if (executorIdBuilder_ == null) {
+            if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                executorId_ != org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance()) {
+              executorId_ =
+                org.apache.mesos.v1.Protos.ExecutorID.newBuilder(executorId_).mergeFrom(value).buildPartial();
+            } else {
+              executorId_ = value;
+            }
+            onChanged();
+          } else {
+            executorIdBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.ExecutorID executor_id = 2;</code>
+         */
+        public Builder clearExecutorId() {
+          if (executorIdBuilder_ == null) {
+            executorId_ = org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance();
+            onChanged();
+          } else {
+            executorIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.ExecutorID executor_id = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.ExecutorID.Builder getExecutorIdBuilder() {
+          bitField0_ |= 0x00000002;
+          onChanged();
+          return getExecutorIdFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.v1.ExecutorID executor_id = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder() {
+          if (executorIdBuilder_ != null) {
+            return executorIdBuilder_.getMessageOrBuilder();
+          } else {
+            return executorId_;
+          }
+        }
+        /**
+         * <code>required .mesos.v1.ExecutorID executor_id = 2;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.ExecutorID, org.apache.mesos.v1.Protos.ExecutorID.Builder, org.apache.mesos.v1.Protos.ExecutorIDOrBuilder> 
+            getExecutorIdFieldBuilder() {
+          if (executorIdBuilder_ == null) {
+            executorIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.ExecutorID, org.apache.mesos.v1.Protos.ExecutorID.Builder, org.apache.mesos.v1.Protos.ExecutorIDOrBuilder>(
+                    executorId_,
+                    getParentForChildren(),
+                    isClean());
+            executorId_ = null;
+          }
+          return executorIdBuilder_;
+        }
+
+        // required bytes data = 3;
+        private com.google.protobuf.ByteString data_ = com.google.protobuf.ByteString.EMPTY;
+        /**
+         * <code>required bytes data = 3;</code>
+         */
+        public boolean hasData() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>required bytes data = 3;</code>
+         */
+        public com.google.protobuf.ByteString getData() {
+          return data_;
+        }
+        /**
+         * <code>required bytes data = 3;</code>
+         */
+        public Builder setData(com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+          data_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required bytes data = 3;</code>
+         */
+        public Builder clearData() {
+          bitField0_ = (bitField0_ & ~0x00000004);
+          data_ = getDefaultInstance().getData();
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.scheduler.Event.Message)
+      }
+
+      static {
+        defaultInstance = new Message(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.scheduler.Event.Message)
+    }
+
+    public interface FailureOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // optional .mesos.v1.AgentID agent_id = 1;
+      /**
+       * <code>optional .mesos.v1.AgentID agent_id = 1;</code>
+       */
+      boolean hasAgentId();
+      /**
+       * <code>optional .mesos.v1.AgentID agent_id = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.AgentID getAgentId();
+      /**
+       * <code>optional .mesos.v1.AgentID agent_id = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.AgentIDOrBuilder getAgentIdOrBuilder();
+
+      // optional .mesos.v1.ExecutorID executor_id = 2;
+      /**
+       * <code>optional .mesos.v1.ExecutorID executor_id = 2;</code>
+       *
+       * <pre>
+       * If this was just a failure of an executor on an agent then
+       * 'executor_id' will be set and possibly 'status' (if we were
+       * able to determine the exit status).
+       * </pre>
+       */
+      boolean hasExecutorId();
+      /**
+       * <code>optional .mesos.v1.ExecutorID executor_id = 2;</code>
+       *
+       * <pre>
+       * If this was just a failure of an executor on an agent then
+       * 'executor_id' will be set and possibly 'status' (if we were
+       * able to determine the exit status).
+       * </pre>
+       */
+      org.apache.mesos.v1.Protos.ExecutorID getExecutorId();
+      /**
+       * <code>optional .mesos.v1.ExecutorID executor_id = 2;</code>
+       *
+       * <pre>
+       * If this was just a failure of an executor on an agent then
+       * 'executor_id' will be set and possibly 'status' (if we were
+       * able to determine the exit status).
+       * </pre>
+       */
+      org.apache.mesos.v1.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder();
+
+      // optional int32 status = 3;
+      /**
+       * <code>optional int32 status = 3;</code>
+       *
+       * <pre>
+       * On Posix, `status` corresponds to termination information in the
+       * `stat_loc` area returned from a `waitpid` call. On Windows, `status`
+       * is obtained via calling the `GetExitCodeProcess()` function. For
+       * messages coming from Posix agents, schedulers need to apply
+       * `WEXITSTATUS` family macros or equivalent transformations to obtain
+       * exit codes.
+       *
+       * TODO(alexr): Consider unifying Windows and Posix behavior by returning
+       * exit code here, see MESOS-7241.
+       * </pre>
+       */
+      boolean hasStatus();
+      /**
+       * <code>optional int32 status = 3;</code>
+       *
+       * <pre>
+       * On Posix, `status` corresponds to termination information in the
+       * `stat_loc` area returned from a `waitpid` call. On Windows, `status`
+       * is obtained via calling the `GetExitCodeProcess()` function. For
+       * messages coming from Posix agents, schedulers need to apply
+       * `WEXITSTATUS` family macros or equivalent transformations to obtain
+       * exit codes.
+       *
+       * TODO(alexr): Consider unifying Windows and Posix behavior by returning
+       * exit code here, see MESOS-7241.
+       * </pre>
+       */
+      int getStatus();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.scheduler.Event.Failure}
+     *
+     * <pre>
+     * Received when an agent is removed from the cluster (e.g., failed
+     * health checks) or when an executor is terminated. Note that, this
+     * event coincides with receipt of terminal UPDATE events for any
+     * active tasks belonging to the agent or executor and receipt of
+     * 'Rescind' events for any outstanding offers belonging to the
+     * agent. Note that there is no guaranteed order between the
+     * 'Failure', 'Update' and 'Rescind' events when an agent or executor
+     * is removed.
+     * TODO(vinod): Consider splitting the lost agent and terminated
+     * executor into separate events and ensure it's reliably generated.
+     * </pre>
+     */
+    public static final class Failure extends
+        com.google.protobuf.GeneratedMessage
+        implements FailureOrBuilder {
+      // Use Failure.newBuilder() to construct.
+      private Failure(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Failure(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Failure defaultInstance;
+      public static Failure getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Failure getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Failure(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.v1.Protos.AgentID.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = agentId_.toBuilder();
+                }
+                agentId_ = input.readMessage(org.apache.mesos.v1.Protos.AgentID.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(agentId_);
+                  agentId_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+              case 18: {
+                org.apache.mesos.v1.Protos.ExecutorID.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                  subBuilder = executorId_.toBuilder();
+                }
+                executorId_ = input.readMessage(org.apache.mesos.v1.Protos.ExecutorID.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(executorId_);
+                  executorId_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000002;
+                break;
+              }
+              case 24: {
+                bitField0_ |= 0x00000004;
+                status_ = input.readInt32();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_Failure_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_Failure_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.scheduler.Protos.Event.Failure.class, org.apache.mesos.v1.scheduler.Protos.Event.Failure.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Failure> PARSER =
+          new com.google.protobuf.AbstractParser<Failure>() {
+        public Failure parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Failure(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Failure> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // optional .mesos.v1.AgentID agent_id = 1;
+      public static final int AGENT_ID_FIELD_NUMBER = 1;
+      private org.apache.mesos.v1.Protos.AgentID agentId_;
+      /**
+       * <code>optional .mesos.v1.AgentID agent_id = 1;</code>
+       */
+      public boolean hasAgentId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.v1.AgentID agent_id = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.AgentID getAgentId() {
+        return agentId_;
+      }
+      /**
+       * <code>optional .mesos.v1.AgentID agent_id = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.AgentIDOrBuilder getAgentIdOrBuilder() {
+        return agentId_;
+      }
+
+      // optional .mesos.v1.ExecutorID executor_id = 2;
+      public static final int EXECUTOR_ID_FIELD_NUMBER = 2;
+      private org.apache.mesos.v1.Protos.ExecutorID executorId_;
+      /**
+       * <code>optional .mesos.v1.ExecutorID executor_id = 2;</code>
+       *
+       * <pre>
+       * If this was just a failure of an executor on an agent then
+       * 'executor_id' will be set and possibly 'status' (if we were
+       * able to determine the exit status).
+       * </pre>
+       */
+      public boolean hasExecutorId() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.v1.ExecutorID executor_id = 2;</code>
+       *
+       * <pre>
+       * If this was just a failure of an executor on an agent then
+       * 'executor_id' will be set and possibly 'status' (if we were
+       * able to determine the exit status).
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.ExecutorID getExecutorId() {
+        return executorId_;
+      }
+      /**
+       * <code>optional .mesos.v1.ExecutorID executor_id = 2;</code>
+       *
+       * <pre>
+       * If this was just a failure of an executor on an agent then
+       * 'executor_id' will be set and possibly 'status' (if we were
+       * able to determine the exit status).
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder() {
+        return executorId_;
+      }
+
+      // optional int32 status = 3;
+      public static final int STATUS_FIELD_NUMBER = 3;
+      private int status_;
+      /**
+       * <code>optional int32 status = 3;</code>
+       *
+       * <pre>
+       * On Posix, `status` corresponds to termination information in the
+       * `stat_loc` area returned from a `waitpid` call. On Windows, `status`
+       * is obtained via calling the `GetExitCodeProcess()` function. For
+       * messages coming from Posix agents, schedulers need to apply
+       * `WEXITSTATUS` family macros or equivalent transformations to obtain
+       * exit codes.
+       *
+       * TODO(alexr): Consider unifying Windows and Posix behavior by returning
+       * exit code here, see MESOS-7241.
+       * </pre>
+       */
+      public boolean hasStatus() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional int32 status = 3;</code>
+       *
+       * <pre>
+       * On Posix, `status` corresponds to termination information in the
+       * `stat_loc` area returned from a `waitpid` call. On Windows, `status`
+       * is obtained via calling the `GetExitCodeProcess()` function. For
+       * messages coming from Posix agents, schedulers need to apply
+       * `WEXITSTATUS` family macros or equivalent transformations to obtain
+       * exit codes.
+       *
+       * TODO(alexr): Consider unifying Windows and Posix behavior by returning
+       * exit code here, see MESOS-7241.
+       * </pre>
+       */
+      public int getStatus() {
+        return status_;
+      }
+
+      private void initFields() {
+        agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+        executorId_ = org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance();
+        status_ = 0;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (hasAgentId()) {
+          if (!getAgentId().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        if (hasExecutorId()) {
+          if (!getExecutorId().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, agentId_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeMessage(2, executorId_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeInt32(3, status_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, agentId_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(2, executorId_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeInt32Size(3, status_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Failure parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Failure parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Failure parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Failure parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Failure parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Failure parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Failure parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Failure parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Failure parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Failure parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.scheduler.Protos.Event.Failure prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.scheduler.Event.Failure}
+       *
+       * <pre>
+       * Received when an agent is removed from the cluster (e.g., failed
+       * health checks) or when an executor is terminated. Note that, this
+       * event coincides with receipt of terminal UPDATE events for any
+       * active tasks belonging to the agent or executor and receipt of
+       * 'Rescind' events for any outstanding offers belonging to the
+       * agent. Note that there is no guaranteed order between the
+       * 'Failure', 'Update' and 'Rescind' events when an agent or executor
+       * is removed.
+       * TODO(vinod): Consider splitting the lost agent and terminated
+       * executor into separate events and ensure it's reliably generated.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.scheduler.Protos.Event.FailureOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_Failure_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_Failure_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.scheduler.Protos.Event.Failure.class, org.apache.mesos.v1.scheduler.Protos.Event.Failure.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.scheduler.Protos.Event.Failure.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getAgentIdFieldBuilder();
+            getExecutorIdFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (agentIdBuilder_ == null) {
+            agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+          } else {
+            agentIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          if (executorIdBuilder_ == null) {
+            executorId_ = org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance();
+          } else {
+            executorIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          status_ = 0;
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_Failure_descriptor;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Event.Failure getDefaultInstanceForType() {
+          return org.apache.mesos.v1.scheduler.Protos.Event.Failure.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Event.Failure build() {
+          org.apache.mesos.v1.scheduler.Protos.Event.Failure result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Event.Failure buildPartial() {
+          org.apache.mesos.v1.scheduler.Protos.Event.Failure result = new org.apache.mesos.v1.scheduler.Protos.Event.Failure(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (agentIdBuilder_ == null) {
+            result.agentId_ = agentId_;
+          } else {
+            result.agentId_ = agentIdBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          if (executorIdBuilder_ == null) {
+            result.executorId_ = executorId_;
+          } else {
+            result.executorId_ = executorIdBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          result.status_ = status_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.scheduler.Protos.Event.Failure) {
+            return mergeFrom((org.apache.mesos.v1.scheduler.Protos.Event.Failure)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.scheduler.Protos.Event.Failure other) {
+          if (other == org.apache.mesos.v1.scheduler.Protos.Event.Failure.getDefaultInstance()) return this;
+          if (other.hasAgentId()) {
+            mergeAgentId(other.getAgentId());
+          }
+          if (other.hasExecutorId()) {
+            mergeExecutorId(other.getExecutorId());
+          }
+          if (other.hasStatus()) {
+            setStatus(other.getStatus());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (hasAgentId()) {
+            if (!getAgentId().isInitialized()) {
+              
+              return false;
+            }
+          }
+          if (hasExecutorId()) {
+            if (!getExecutorId().isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.scheduler.Protos.Event.Failure parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.scheduler.Protos.Event.Failure) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // optional .mesos.v1.AgentID agent_id = 1;
+        private org.apache.mesos.v1.Protos.AgentID agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.AgentID, org.apache.mesos.v1.Protos.AgentID.Builder, org.apache.mesos.v1.Protos.AgentIDOrBuilder> agentIdBuilder_;
+        /**
+         * <code>optional .mesos.v1.AgentID agent_id = 1;</code>
+         */
+        public boolean hasAgentId() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional .mesos.v1.AgentID agent_id = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.AgentID getAgentId() {
+          if (agentIdBuilder_ == null) {
+            return agentId_;
+          } else {
+            return agentIdBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.AgentID agent_id = 1;</code>
+         */
+        public Builder setAgentId(org.apache.mesos.v1.Protos.AgentID value) {
+          if (agentIdBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            agentId_ = value;
+            onChanged();
+          } else {
+            agentIdBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.AgentID agent_id = 1;</code>
+         */
+        public Builder setAgentId(
+            org.apache.mesos.v1.Protos.AgentID.Builder builderForValue) {
+          if (agentIdBuilder_ == null) {
+            agentId_ = builderForValue.build();
+            onChanged();
+          } else {
+            agentIdBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.AgentID agent_id = 1;</code>
+         */
+        public Builder mergeAgentId(org.apache.mesos.v1.Protos.AgentID value) {
+          if (agentIdBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                agentId_ != org.apache.mesos.v1.Protos.AgentID.getDefaultInstance()) {
+              agentId_ =
+                org.apache.mesos.v1.Protos.AgentID.newBuilder(agentId_).mergeFrom(value).buildPartial();
+            } else {
+              agentId_ = value;
+            }
+            onChanged();
+          } else {
+            agentIdBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.AgentID agent_id = 1;</code>
+         */
+        public Builder clearAgentId() {
+          if (agentIdBuilder_ == null) {
+            agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+            onChanged();
+          } else {
+            agentIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.AgentID agent_id = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.AgentID.Builder getAgentIdBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getAgentIdFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.v1.AgentID agent_id = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.AgentIDOrBuilder getAgentIdOrBuilder() {
+          if (agentIdBuilder_ != null) {
+            return agentIdBuilder_.getMessageOrBuilder();
+          } else {
+            return agentId_;
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.AgentID agent_id = 1;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.AgentID, org.apache.mesos.v1.Protos.AgentID.Builder, org.apache.mesos.v1.Protos.AgentIDOrBuilder> 
+            getAgentIdFieldBuilder() {
+          if (agentIdBuilder_ == null) {
+            agentIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.AgentID, org.apache.mesos.v1.Protos.AgentID.Builder, org.apache.mesos.v1.Protos.AgentIDOrBuilder>(
+                    agentId_,
+                    getParentForChildren(),
+                    isClean());
+            agentId_ = null;
+          }
+          return agentIdBuilder_;
+        }
+
+        // optional .mesos.v1.ExecutorID executor_id = 2;
+        private org.apache.mesos.v1.Protos.ExecutorID executorId_ = org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.ExecutorID, org.apache.mesos.v1.Protos.ExecutorID.Builder, org.apache.mesos.v1.Protos.ExecutorIDOrBuilder> executorIdBuilder_;
+        /**
+         * <code>optional .mesos.v1.ExecutorID executor_id = 2;</code>
+         *
+         * <pre>
+         * If this was just a failure of an executor on an agent then
+         * 'executor_id' will be set and possibly 'status' (if we were
+         * able to determine the exit status).
+         * </pre>
+         */
+        public boolean hasExecutorId() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional .mesos.v1.ExecutorID executor_id = 2;</code>
+         *
+         * <pre>
+         * If this was just a failure of an executor on an agent then
+         * 'executor_id' will be set and possibly 'status' (if we were
+         * able to determine the exit status).
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.ExecutorID getExecutorId() {
+          if (executorIdBuilder_ == null) {
+            return executorId_;
+          } else {
+            return executorIdBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.ExecutorID executor_id = 2;</code>
+         *
+         * <pre>
+         * If this was just a failure of an executor on an agent then
+         * 'executor_id' will be set and possibly 'status' (if we were
+         * able to determine the exit status).
+         * </pre>
+         */
+        public Builder setExecutorId(org.apache.mesos.v1.Protos.ExecutorID value) {
+          if (executorIdBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            executorId_ = value;
+            onChanged();
+          } else {
+            executorIdBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.ExecutorID executor_id = 2;</code>
+         *
+         * <pre>
+         * If this was just a failure of an executor on an agent then
+         * 'executor_id' will be set and possibly 'status' (if we were
+         * able to determine the exit status).
+         * </pre>
+         */
+        public Builder setExecutorId(
+            org.apache.mesos.v1.Protos.ExecutorID.Builder builderForValue) {
+          if (executorIdBuilder_ == null) {
+            executorId_ = builderForValue.build();
+            onChanged();
+          } else {
+            executorIdBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.ExecutorID executor_id = 2;</code>
+         *
+         * <pre>
+         * If this was just a failure of an executor on an agent then
+         * 'executor_id' will be set and possibly 'status' (if we were
+         * able to determine the exit status).
+         * </pre>
+         */
+        public Builder mergeExecutorId(org.apache.mesos.v1.Protos.ExecutorID value) {
+          if (executorIdBuilder_ == null) {
+            if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                executorId_ != org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance()) {
+              executorId_ =
+                org.apache.mesos.v1.Protos.ExecutorID.newBuilder(executorId_).mergeFrom(value).buildPartial();
+            } else {
+              executorId_ = value;
+            }
+            onChanged();
+          } else {
+            executorIdBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.ExecutorID executor_id = 2;</code>
+         *
+         * <pre>
+         * If this was just a failure of an executor on an agent then
+         * 'executor_id' will be set and possibly 'status' (if we were
+         * able to determine the exit status).
+         * </pre>
+         */
+        public Builder clearExecutorId() {
+          if (executorIdBuilder_ == null) {
+            executorId_ = org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance();
+            onChanged();
+          } else {
+            executorIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.ExecutorID executor_id = 2;</code>
+         *
+         * <pre>
+         * If this was just a failure of an executor on an agent then
+         * 'executor_id' will be set and possibly 'status' (if we were
+         * able to determine the exit status).
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.ExecutorID.Builder getExecutorIdBuilder() {
+          bitField0_ |= 0x00000002;
+          onChanged();
+          return getExecutorIdFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.v1.ExecutorID executor_id = 2;</code>
+         *
+         * <pre>
+         * If this was just a failure of an executor on an agent then
+         * 'executor_id' will be set and possibly 'status' (if we were
+         * able to determine the exit status).
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder() {
+          if (executorIdBuilder_ != null) {
+            return executorIdBuilder_.getMessageOrBuilder();
+          } else {
+            return executorId_;
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.ExecutorID executor_id = 2;</code>
+         *
+         * <pre>
+         * If this was just a failure of an executor on an agent then
+         * 'executor_id' will be set and possibly 'status' (if we were
+         * able to determine the exit status).
+         * </pre>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.ExecutorID, org.apache.mesos.v1.Protos.ExecutorID.Builder, org.apache.mesos.v1.Protos.ExecutorIDOrBuilder> 
+            getExecutorIdFieldBuilder() {
+          if (executorIdBuilder_ == null) {
+            executorIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.ExecutorID, org.apache.mesos.v1.Protos.ExecutorID.Builder, org.apache.mesos.v1.Protos.ExecutorIDOrBuilder>(
+                    executorId_,
+                    getParentForChildren(),
+                    isClean());
+            executorId_ = null;
+          }
+          return executorIdBuilder_;
+        }
+
+        // optional int32 status = 3;
+        private int status_ ;
+        /**
+         * <code>optional int32 status = 3;</code>
+         *
+         * <pre>
+         * On Posix, `status` corresponds to termination information in the
+         * `stat_loc` area returned from a `waitpid` call. On Windows, `status`
+         * is obtained via calling the `GetExitCodeProcess()` function. For
+         * messages coming from Posix agents, schedulers need to apply
+         * `WEXITSTATUS` family macros or equivalent transformations to obtain
+         * exit codes.
+         *
+         * TODO(alexr): Consider unifying Windows and Posix behavior by returning
+         * exit code here, see MESOS-7241.
+         * </pre>
+         */
+        public boolean hasStatus() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional int32 status = 3;</code>
+         *
+         * <pre>
+         * On Posix, `status` corresponds to termination information in the
+         * `stat_loc` area returned from a `waitpid` call. On Windows, `status`
+         * is obtained via calling the `GetExitCodeProcess()` function. For
+         * messages coming from Posix agents, schedulers need to apply
+         * `WEXITSTATUS` family macros or equivalent transformations to obtain
+         * exit codes.
+         *
+         * TODO(alexr): Consider unifying Windows and Posix behavior by returning
+         * exit code here, see MESOS-7241.
+         * </pre>
+         */
+        public int getStatus() {
+          return status_;
+        }
+        /**
+         * <code>optional int32 status = 3;</code>
+         *
+         * <pre>
+         * On Posix, `status` corresponds to termination information in the
+         * `stat_loc` area returned from a `waitpid` call. On Windows, `status`
+         * is obtained via calling the `GetExitCodeProcess()` function. For
+         * messages coming from Posix agents, schedulers need to apply
+         * `WEXITSTATUS` family macros or equivalent transformations to obtain
+         * exit codes.
+         *
+         * TODO(alexr): Consider unifying Windows and Posix behavior by returning
+         * exit code here, see MESOS-7241.
+         * </pre>
+         */
+        public Builder setStatus(int value) {
+          bitField0_ |= 0x00000004;
+          status_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional int32 status = 3;</code>
+         *
+         * <pre>
+         * On Posix, `status` corresponds to termination information in the
+         * `stat_loc` area returned from a `waitpid` call. On Windows, `status`
+         * is obtained via calling the `GetExitCodeProcess()` function. For
+         * messages coming from Posix agents, schedulers need to apply
+         * `WEXITSTATUS` family macros or equivalent transformations to obtain
+         * exit codes.
+         *
+         * TODO(alexr): Consider unifying Windows and Posix behavior by returning
+         * exit code here, see MESOS-7241.
+         * </pre>
+         */
+        public Builder clearStatus() {
+          bitField0_ = (bitField0_ & ~0x00000004);
+          status_ = 0;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.scheduler.Event.Failure)
+      }
+
+      static {
+        defaultInstance = new Failure(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.scheduler.Event.Failure)
+    }
+
+    public interface ErrorOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required string message = 1;
+      /**
+       * <code>required string message = 1;</code>
+       */
+      boolean hasMessage();
+      /**
+       * <code>required string message = 1;</code>
+       */
+      java.lang.String getMessage();
+      /**
+       * <code>required string message = 1;</code>
+       */
+      com.google.protobuf.ByteString
+          getMessageBytes();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.scheduler.Event.Error}
+     *
+     * <pre>
+     * Received when there is an unrecoverable error in the scheduler (e.g.,
+     * scheduler failed over, rate limiting, authorization errors etc.). The
+     * scheduler should abort on receiving this event.
+     * </pre>
+     */
+    public static final class Error extends
+        com.google.protobuf.GeneratedMessage
+        implements ErrorOrBuilder {
+      // Use Error.newBuilder() to construct.
+      private Error(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Error(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Error defaultInstance;
+      public static Error getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Error getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Error(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                bitField0_ |= 0x00000001;
+                message_ = input.readBytes();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_Error_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_Error_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.scheduler.Protos.Event.Error.class, org.apache.mesos.v1.scheduler.Protos.Event.Error.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Error> PARSER =
+          new com.google.protobuf.AbstractParser<Error>() {
+        public Error parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Error(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Error> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required string message = 1;
+      public static final int MESSAGE_FIELD_NUMBER = 1;
+      private java.lang.Object message_;
+      /**
+       * <code>required string message = 1;</code>
+       */
+      public boolean hasMessage() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string message = 1;</code>
+       */
+      public java.lang.String getMessage() {
+        java.lang.Object ref = message_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = 
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            message_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>required string message = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getMessageBytes() {
+        java.lang.Object ref = message_;
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          message_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      private void initFields() {
+        message_ = "";
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasMessage()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeBytes(1, getMessageBytes());
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(1, getMessageBytes());
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Error parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Error parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Error parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Error parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Error parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Error parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Error parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Error parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Error parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Event.Error parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.scheduler.Protos.Event.Error prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.scheduler.Event.Error}
+       *
+       * <pre>
+       * Received when there is an unrecoverable error in the scheduler (e.g.,
+       * scheduler failed over, rate limiting, authorization errors etc.). The
+       * scheduler should abort on receiving this event.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.scheduler.Protos.Event.ErrorOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_Error_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_Error_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.scheduler.Protos.Event.Error.class, org.apache.mesos.v1.scheduler.Protos.Event.Error.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.scheduler.Protos.Event.Error.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          message_ = "";
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_Error_descriptor;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Event.Error getDefaultInstanceForType() {
+          return org.apache.mesos.v1.scheduler.Protos.Event.Error.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Event.Error build() {
+          org.apache.mesos.v1.scheduler.Protos.Event.Error result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Event.Error buildPartial() {
+          org.apache.mesos.v1.scheduler.Protos.Event.Error result = new org.apache.mesos.v1.scheduler.Protos.Event.Error(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.message_ = message_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.scheduler.Protos.Event.Error) {
+            return mergeFrom((org.apache.mesos.v1.scheduler.Protos.Event.Error)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.scheduler.Protos.Event.Error other) {
+          if (other == org.apache.mesos.v1.scheduler.Protos.Event.Error.getDefaultInstance()) return this;
+          if (other.hasMessage()) {
+            bitField0_ |= 0x00000001;
+            message_ = other.message_;
+            onChanged();
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasMessage()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.scheduler.Protos.Event.Error parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.scheduler.Protos.Event.Error) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required string message = 1;
+        private java.lang.Object message_ = "";
+        /**
+         * <code>required string message = 1;</code>
+         */
+        public boolean hasMessage() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required string message = 1;</code>
+         */
+        public java.lang.String getMessage() {
+          java.lang.Object ref = message_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.protobuf.ByteString) ref)
+                .toStringUtf8();
+            message_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>required string message = 1;</code>
+         */
+        public com.google.protobuf.ByteString
+            getMessageBytes() {
+          java.lang.Object ref = message_;
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b = 
+                com.google.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            message_ = b;
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>required string message = 1;</code>
+         */
+        public Builder setMessage(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          message_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required string message = 1;</code>
+         */
+        public Builder clearMessage() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          message_ = getDefaultInstance().getMessage();
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required string message = 1;</code>
+         */
+        public Builder setMessageBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+          message_ = value;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.scheduler.Event.Error)
+      }
+
+      static {
+        defaultInstance = new Error(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.scheduler.Event.Error)
+    }
+
+    private int bitField0_;
+    // optional .mesos.v1.scheduler.Event.Type type = 1;
+    public static final int TYPE_FIELD_NUMBER = 1;
+    private org.apache.mesos.v1.scheduler.Protos.Event.Type type_;
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Type type = 1;</code>
+     *
+     * <pre>
+     * Type of the event, indicates which optional field below should be
+     * present if that type has a nested message definition.
+     * Enum fields should be optional, see: MESOS-4997.
+     * </pre>
+     */
+    public boolean hasType() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Type type = 1;</code>
+     *
+     * <pre>
+     * Type of the event, indicates which optional field below should be
+     * present if that type has a nested message definition.
+     * Enum fields should be optional, see: MESOS-4997.
+     * </pre>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Event.Type getType() {
+      return type_;
+    }
+
+    // optional .mesos.v1.scheduler.Event.Subscribed subscribed = 2;
+    public static final int SUBSCRIBED_FIELD_NUMBER = 2;
+    private org.apache.mesos.v1.scheduler.Protos.Event.Subscribed subscribed_;
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Subscribed subscribed = 2;</code>
+     */
+    public boolean hasSubscribed() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Subscribed subscribed = 2;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Event.Subscribed getSubscribed() {
+      return subscribed_;
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Subscribed subscribed = 2;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Event.SubscribedOrBuilder getSubscribedOrBuilder() {
+      return subscribed_;
+    }
+
+    // optional .mesos.v1.scheduler.Event.Offers offers = 3;
+    public static final int OFFERS_FIELD_NUMBER = 3;
+    private org.apache.mesos.v1.scheduler.Protos.Event.Offers offers_;
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Offers offers = 3;</code>
+     */
+    public boolean hasOffers() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Offers offers = 3;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Event.Offers getOffers() {
+      return offers_;
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Offers offers = 3;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Event.OffersOrBuilder getOffersOrBuilder() {
+      return offers_;
+    }
+
+    // optional .mesos.v1.scheduler.Event.InverseOffers inverse_offers = 9;
+    public static final int INVERSE_OFFERS_FIELD_NUMBER = 9;
+    private org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers inverseOffers_;
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.InverseOffers inverse_offers = 9;</code>
+     */
+    public boolean hasInverseOffers() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.InverseOffers inverse_offers = 9;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers getInverseOffers() {
+      return inverseOffers_;
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.InverseOffers inverse_offers = 9;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Event.InverseOffersOrBuilder getInverseOffersOrBuilder() {
+      return inverseOffers_;
+    }
+
+    // optional .mesos.v1.scheduler.Event.Rescind rescind = 4;
+    public static final int RESCIND_FIELD_NUMBER = 4;
+    private org.apache.mesos.v1.scheduler.Protos.Event.Rescind rescind_;
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Rescind rescind = 4;</code>
+     */
+    public boolean hasRescind() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Rescind rescind = 4;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Event.Rescind getRescind() {
+      return rescind_;
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Rescind rescind = 4;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Event.RescindOrBuilder getRescindOrBuilder() {
+      return rescind_;
+    }
+
+    // optional .mesos.v1.scheduler.Event.RescindInverseOffer rescind_inverse_offer = 10;
+    public static final int RESCIND_INVERSE_OFFER_FIELD_NUMBER = 10;
+    private org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer rescindInverseOffer_;
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.RescindInverseOffer rescind_inverse_offer = 10;</code>
+     */
+    public boolean hasRescindInverseOffer() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.RescindInverseOffer rescind_inverse_offer = 10;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer getRescindInverseOffer() {
+      return rescindInverseOffer_;
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.RescindInverseOffer rescind_inverse_offer = 10;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOfferOrBuilder getRescindInverseOfferOrBuilder() {
+      return rescindInverseOffer_;
+    }
+
+    // optional .mesos.v1.scheduler.Event.Update update = 5;
+    public static final int UPDATE_FIELD_NUMBER = 5;
+    private org.apache.mesos.v1.scheduler.Protos.Event.Update update_;
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Update update = 5;</code>
+     */
+    public boolean hasUpdate() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Update update = 5;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Event.Update getUpdate() {
+      return update_;
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Update update = 5;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Event.UpdateOrBuilder getUpdateOrBuilder() {
+      return update_;
+    }
+
+    // optional .mesos.v1.scheduler.Event.Message message = 6;
+    public static final int MESSAGE_FIELD_NUMBER = 6;
+    private org.apache.mesos.v1.scheduler.Protos.Event.Message message_;
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Message message = 6;</code>
+     */
+    public boolean hasMessage() {
+      return ((bitField0_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Message message = 6;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Event.Message getMessage() {
+      return message_;
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Message message = 6;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Event.MessageOrBuilder getMessageOrBuilder() {
+      return message_;
+    }
+
+    // optional .mesos.v1.scheduler.Event.Failure failure = 7;
+    public static final int FAILURE_FIELD_NUMBER = 7;
+    private org.apache.mesos.v1.scheduler.Protos.Event.Failure failure_;
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Failure failure = 7;</code>
+     */
+    public boolean hasFailure() {
+      return ((bitField0_ & 0x00000100) == 0x00000100);
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Failure failure = 7;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Event.Failure getFailure() {
+      return failure_;
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Failure failure = 7;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Event.FailureOrBuilder getFailureOrBuilder() {
+      return failure_;
+    }
+
+    // optional .mesos.v1.scheduler.Event.Error error = 8;
+    public static final int ERROR_FIELD_NUMBER = 8;
+    private org.apache.mesos.v1.scheduler.Protos.Event.Error error_;
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Error error = 8;</code>
+     */
+    public boolean hasError() {
+      return ((bitField0_ & 0x00000200) == 0x00000200);
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Error error = 8;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Event.Error getError() {
+      return error_;
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Event.Error error = 8;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Event.ErrorOrBuilder getErrorOrBuilder() {
+      return error_;
+    }
+
+    private void initFields() {
+      type_ = org.apache.mesos.v1.scheduler.Protos.Event.Type.UNKNOWN;
+      subscribed_ = org.apache.mesos.v1.scheduler.Protos.Event.Subscribed.getDefaultInstance();
+      offers_ = org.apache.mesos.v1.scheduler.Protos.Event.Offers.getDefaultInstance();
+      inverseOffers_ = org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers.getDefaultInstance();
+      rescind_ = org.apache.mesos.v1.scheduler.Protos.Event.Rescind.getDefaultInstance();
+      rescindInverseOffer_ = org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer.getDefaultInstance();
+      update_ = org.apache.mesos.v1.scheduler.Protos.Event.Update.getDefaultInstance();
+      message_ = org.apache.mesos.v1.scheduler.Protos.Event.Message.getDefaultInstance();
+      failure_ = org.apache.mesos.v1.scheduler.Protos.Event.Failure.getDefaultInstance();
+      error_ = org.apache.mesos.v1.scheduler.Protos.Event.Error.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (hasSubscribed()) {
+        if (!getSubscribed().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasOffers()) {
+        if (!getOffers().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasInverseOffers()) {
+        if (!getInverseOffers().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasRescind()) {
+        if (!getRescind().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasRescindInverseOffer()) {
+        if (!getRescindInverseOffer().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasUpdate()) {
+        if (!getUpdate().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasMessage()) {
+        if (!getMessage().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasFailure()) {
+        if (!getFailure().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasError()) {
+        if (!getError().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeEnum(1, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeMessage(2, subscribed_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeMessage(3, offers_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeMessage(4, rescind_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeMessage(5, update_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        output.writeMessage(6, message_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        output.writeMessage(7, failure_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        output.writeMessage(8, error_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeMessage(9, inverseOffers_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeMessage(10, rescindInverseOffer_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(1, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, subscribed_);
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, offers_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, rescind_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(5, update_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(6, message_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(7, failure_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(8, error_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(9, inverseOffers_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(10, rescindInverseOffer_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.scheduler.Protos.Event parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.scheduler.Protos.Event parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.scheduler.Protos.Event parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.scheduler.Protos.Event parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.scheduler.Protos.Event parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.scheduler.Protos.Event parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.scheduler.Protos.Event parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.scheduler.Protos.Event parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.scheduler.Protos.Event parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.scheduler.Protos.Event parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.scheduler.Protos.Event prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.scheduler.Event}
+     *
+     * <pre>
+     **
+     * Scheduler event API.
+     *
+     * An event is described using the standard protocol buffer "union"
+     * trick, see:
+     * https://developers.google.com/protocol-buffers/docs/techniques#union.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.scheduler.Protos.EventOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.scheduler.Protos.Event.class, org.apache.mesos.v1.scheduler.Protos.Event.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.scheduler.Protos.Event.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getSubscribedFieldBuilder();
+          getOffersFieldBuilder();
+          getInverseOffersFieldBuilder();
+          getRescindFieldBuilder();
+          getRescindInverseOfferFieldBuilder();
+          getUpdateFieldBuilder();
+          getMessageFieldBuilder();
+          getFailureFieldBuilder();
+          getErrorFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        type_ = org.apache.mesos.v1.scheduler.Protos.Event.Type.UNKNOWN;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (subscribedBuilder_ == null) {
+          subscribed_ = org.apache.mesos.v1.scheduler.Protos.Event.Subscribed.getDefaultInstance();
+        } else {
+          subscribedBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        if (offersBuilder_ == null) {
+          offers_ = org.apache.mesos.v1.scheduler.Protos.Event.Offers.getDefaultInstance();
+        } else {
+          offersBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        if (inverseOffersBuilder_ == null) {
+          inverseOffers_ = org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers.getDefaultInstance();
+        } else {
+          inverseOffersBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        if (rescindBuilder_ == null) {
+          rescind_ = org.apache.mesos.v1.scheduler.Protos.Event.Rescind.getDefaultInstance();
+        } else {
+          rescindBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        if (rescindInverseOfferBuilder_ == null) {
+          rescindInverseOffer_ = org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer.getDefaultInstance();
+        } else {
+          rescindInverseOfferBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
+        if (updateBuilder_ == null) {
+          update_ = org.apache.mesos.v1.scheduler.Protos.Event.Update.getDefaultInstance();
+        } else {
+          updateBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000040);
+        if (messageBuilder_ == null) {
+          message_ = org.apache.mesos.v1.scheduler.Protos.Event.Message.getDefaultInstance();
+        } else {
+          messageBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000080);
+        if (failureBuilder_ == null) {
+          failure_ = org.apache.mesos.v1.scheduler.Protos.Event.Failure.getDefaultInstance();
+        } else {
+          failureBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000100);
+        if (errorBuilder_ == null) {
+          error_ = org.apache.mesos.v1.scheduler.Protos.Event.Error.getDefaultInstance();
+        } else {
+          errorBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000200);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Event_descriptor;
+      }
+
+      public org.apache.mesos.v1.scheduler.Protos.Event getDefaultInstanceForType() {
+        return org.apache.mesos.v1.scheduler.Protos.Event.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.scheduler.Protos.Event build() {
+        org.apache.mesos.v1.scheduler.Protos.Event result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.scheduler.Protos.Event buildPartial() {
+        org.apache.mesos.v1.scheduler.Protos.Event result = new org.apache.mesos.v1.scheduler.Protos.Event(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.type_ = type_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        if (subscribedBuilder_ == null) {
+          result.subscribed_ = subscribed_;
+        } else {
+          result.subscribed_ = subscribedBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        if (offersBuilder_ == null) {
+          result.offers_ = offers_;
+        } else {
+          result.offers_ = offersBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        if (inverseOffersBuilder_ == null) {
+          result.inverseOffers_ = inverseOffers_;
+        } else {
+          result.inverseOffers_ = inverseOffersBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        if (rescindBuilder_ == null) {
+          result.rescind_ = rescind_;
+        } else {
+          result.rescind_ = rescindBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        if (rescindInverseOfferBuilder_ == null) {
+          result.rescindInverseOffer_ = rescindInverseOffer_;
+        } else {
+          result.rescindInverseOffer_ = rescindInverseOfferBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        if (updateBuilder_ == null) {
+          result.update_ = update_;
+        } else {
+          result.update_ = updateBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+          to_bitField0_ |= 0x00000080;
+        }
+        if (messageBuilder_ == null) {
+          result.message_ = message_;
+        } else {
+          result.message_ = messageBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
+          to_bitField0_ |= 0x00000100;
+        }
+        if (failureBuilder_ == null) {
+          result.failure_ = failure_;
+        } else {
+          result.failure_ = failureBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
+          to_bitField0_ |= 0x00000200;
+        }
+        if (errorBuilder_ == null) {
+          result.error_ = error_;
+        } else {
+          result.error_ = errorBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.scheduler.Protos.Event) {
+          return mergeFrom((org.apache.mesos.v1.scheduler.Protos.Event)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.scheduler.Protos.Event other) {
+        if (other == org.apache.mesos.v1.scheduler.Protos.Event.getDefaultInstance()) return this;
+        if (other.hasType()) {
+          setType(other.getType());
+        }
+        if (other.hasSubscribed()) {
+          mergeSubscribed(other.getSubscribed());
+        }
+        if (other.hasOffers()) {
+          mergeOffers(other.getOffers());
+        }
+        if (other.hasInverseOffers()) {
+          mergeInverseOffers(other.getInverseOffers());
+        }
+        if (other.hasRescind()) {
+          mergeRescind(other.getRescind());
+        }
+        if (other.hasRescindInverseOffer()) {
+          mergeRescindInverseOffer(other.getRescindInverseOffer());
+        }
+        if (other.hasUpdate()) {
+          mergeUpdate(other.getUpdate());
+        }
+        if (other.hasMessage()) {
+          mergeMessage(other.getMessage());
+        }
+        if (other.hasFailure()) {
+          mergeFailure(other.getFailure());
+        }
+        if (other.hasError()) {
+          mergeError(other.getError());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (hasSubscribed()) {
+          if (!getSubscribed().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasOffers()) {
+          if (!getOffers().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasInverseOffers()) {
+          if (!getInverseOffers().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasRescind()) {
+          if (!getRescind().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasRescindInverseOffer()) {
+          if (!getRescindInverseOffer().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasUpdate()) {
+          if (!getUpdate().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasMessage()) {
+          if (!getMessage().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasFailure()) {
+          if (!getFailure().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasError()) {
+          if (!getError().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.scheduler.Protos.Event parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.scheduler.Protos.Event) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional .mesos.v1.scheduler.Event.Type type = 1;
+      private org.apache.mesos.v1.scheduler.Protos.Event.Type type_ = org.apache.mesos.v1.scheduler.Protos.Event.Type.UNKNOWN;
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Type type = 1;</code>
+       *
+       * <pre>
+       * Type of the event, indicates which optional field below should be
+       * present if that type has a nested message definition.
+       * Enum fields should be optional, see: MESOS-4997.
+       * </pre>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Type type = 1;</code>
+       *
+       * <pre>
+       * Type of the event, indicates which optional field below should be
+       * present if that type has a nested message definition.
+       * Enum fields should be optional, see: MESOS-4997.
+       * </pre>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Event.Type getType() {
+        return type_;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Type type = 1;</code>
+       *
+       * <pre>
+       * Type of the event, indicates which optional field below should be
+       * present if that type has a nested message definition.
+       * Enum fields should be optional, see: MESOS-4997.
+       * </pre>
+       */
+      public Builder setType(org.apache.mesos.v1.scheduler.Protos.Event.Type value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000001;
+        type_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Type type = 1;</code>
+       *
+       * <pre>
+       * Type of the event, indicates which optional field below should be
+       * present if that type has a nested message definition.
+       * Enum fields should be optional, see: MESOS-4997.
+       * </pre>
+       */
+      public Builder clearType() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        type_ = org.apache.mesos.v1.scheduler.Protos.Event.Type.UNKNOWN;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.v1.scheduler.Event.Subscribed subscribed = 2;
+      private org.apache.mesos.v1.scheduler.Protos.Event.Subscribed subscribed_ = org.apache.mesos.v1.scheduler.Protos.Event.Subscribed.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Event.Subscribed, org.apache.mesos.v1.scheduler.Protos.Event.Subscribed.Builder, org.apache.mesos.v1.scheduler.Protos.Event.SubscribedOrBuilder> subscribedBuilder_;
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Subscribed subscribed = 2;</code>
+       */
+      public boolean hasSubscribed() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Subscribed subscribed = 2;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Event.Subscribed getSubscribed() {
+        if (subscribedBuilder_ == null) {
+          return subscribed_;
+        } else {
+          return subscribedBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Subscribed subscribed = 2;</code>
+       */
+      public Builder setSubscribed(org.apache.mesos.v1.scheduler.Protos.Event.Subscribed value) {
+        if (subscribedBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          subscribed_ = value;
+          onChanged();
+        } else {
+          subscribedBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Subscribed subscribed = 2;</code>
+       */
+      public Builder setSubscribed(
+          org.apache.mesos.v1.scheduler.Protos.Event.Subscribed.Builder builderForValue) {
+        if (subscribedBuilder_ == null) {
+          subscribed_ = builderForValue.build();
+          onChanged();
+        } else {
+          subscribedBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Subscribed subscribed = 2;</code>
+       */
+      public Builder mergeSubscribed(org.apache.mesos.v1.scheduler.Protos.Event.Subscribed value) {
+        if (subscribedBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) == 0x00000002) &&
+              subscribed_ != org.apache.mesos.v1.scheduler.Protos.Event.Subscribed.getDefaultInstance()) {
+            subscribed_ =
+              org.apache.mesos.v1.scheduler.Protos.Event.Subscribed.newBuilder(subscribed_).mergeFrom(value).buildPartial();
+          } else {
+            subscribed_ = value;
+          }
+          onChanged();
+        } else {
+          subscribedBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Subscribed subscribed = 2;</code>
+       */
+      public Builder clearSubscribed() {
+        if (subscribedBuilder_ == null) {
+          subscribed_ = org.apache.mesos.v1.scheduler.Protos.Event.Subscribed.getDefaultInstance();
+          onChanged();
+        } else {
+          subscribedBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Subscribed subscribed = 2;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Event.Subscribed.Builder getSubscribedBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getSubscribedFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Subscribed subscribed = 2;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Event.SubscribedOrBuilder getSubscribedOrBuilder() {
+        if (subscribedBuilder_ != null) {
+          return subscribedBuilder_.getMessageOrBuilder();
+        } else {
+          return subscribed_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Subscribed subscribed = 2;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Event.Subscribed, org.apache.mesos.v1.scheduler.Protos.Event.Subscribed.Builder, org.apache.mesos.v1.scheduler.Protos.Event.SubscribedOrBuilder> 
+          getSubscribedFieldBuilder() {
+        if (subscribedBuilder_ == null) {
+          subscribedBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.scheduler.Protos.Event.Subscribed, org.apache.mesos.v1.scheduler.Protos.Event.Subscribed.Builder, org.apache.mesos.v1.scheduler.Protos.Event.SubscribedOrBuilder>(
+                  subscribed_,
+                  getParentForChildren(),
+                  isClean());
+          subscribed_ = null;
+        }
+        return subscribedBuilder_;
+      }
+
+      // optional .mesos.v1.scheduler.Event.Offers offers = 3;
+      private org.apache.mesos.v1.scheduler.Protos.Event.Offers offers_ = org.apache.mesos.v1.scheduler.Protos.Event.Offers.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Event.Offers, org.apache.mesos.v1.scheduler.Protos.Event.Offers.Builder, org.apache.mesos.v1.scheduler.Protos.Event.OffersOrBuilder> offersBuilder_;
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Offers offers = 3;</code>
+       */
+      public boolean hasOffers() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Offers offers = 3;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Event.Offers getOffers() {
+        if (offersBuilder_ == null) {
+          return offers_;
+        } else {
+          return offersBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Offers offers = 3;</code>
+       */
+      public Builder setOffers(org.apache.mesos.v1.scheduler.Protos.Event.Offers value) {
+        if (offersBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          offers_ = value;
+          onChanged();
+        } else {
+          offersBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Offers offers = 3;</code>
+       */
+      public Builder setOffers(
+          org.apache.mesos.v1.scheduler.Protos.Event.Offers.Builder builderForValue) {
+        if (offersBuilder_ == null) {
+          offers_ = builderForValue.build();
+          onChanged();
+        } else {
+          offersBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Offers offers = 3;</code>
+       */
+      public Builder mergeOffers(org.apache.mesos.v1.scheduler.Protos.Event.Offers value) {
+        if (offersBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) == 0x00000004) &&
+              offers_ != org.apache.mesos.v1.scheduler.Protos.Event.Offers.getDefaultInstance()) {
+            offers_ =
+              org.apache.mesos.v1.scheduler.Protos.Event.Offers.newBuilder(offers_).mergeFrom(value).buildPartial();
+          } else {
+            offers_ = value;
+          }
+          onChanged();
+        } else {
+          offersBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Offers offers = 3;</code>
+       */
+      public Builder clearOffers() {
+        if (offersBuilder_ == null) {
+          offers_ = org.apache.mesos.v1.scheduler.Protos.Event.Offers.getDefaultInstance();
+          onChanged();
+        } else {
+          offersBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Offers offers = 3;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Event.Offers.Builder getOffersBuilder() {
+        bitField0_ |= 0x00000004;
+        onChanged();
+        return getOffersFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Offers offers = 3;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Event.OffersOrBuilder getOffersOrBuilder() {
+        if (offersBuilder_ != null) {
+          return offersBuilder_.getMessageOrBuilder();
+        } else {
+          return offers_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Offers offers = 3;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Event.Offers, org.apache.mesos.v1.scheduler.Protos.Event.Offers.Builder, org.apache.mesos.v1.scheduler.Protos.Event.OffersOrBuilder> 
+          getOffersFieldBuilder() {
+        if (offersBuilder_ == null) {
+          offersBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.scheduler.Protos.Event.Offers, org.apache.mesos.v1.scheduler.Protos.Event.Offers.Builder, org.apache.mesos.v1.scheduler.Protos.Event.OffersOrBuilder>(
+                  offers_,
+                  getParentForChildren(),
+                  isClean());
+          offers_ = null;
+        }
+        return offersBuilder_;
+      }
+
+      // optional .mesos.v1.scheduler.Event.InverseOffers inverse_offers = 9;
+      private org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers inverseOffers_ = org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers, org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers.Builder, org.apache.mesos.v1.scheduler.Protos.Event.InverseOffersOrBuilder> inverseOffersBuilder_;
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.InverseOffers inverse_offers = 9;</code>
+       */
+      public boolean hasInverseOffers() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.InverseOffers inverse_offers = 9;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers getInverseOffers() {
+        if (inverseOffersBuilder_ == null) {
+          return inverseOffers_;
+        } else {
+          return inverseOffersBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.InverseOffers inverse_offers = 9;</code>
+       */
+      public Builder setInverseOffers(org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers value) {
+        if (inverseOffersBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          inverseOffers_ = value;
+          onChanged();
+        } else {
+          inverseOffersBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.InverseOffers inverse_offers = 9;</code>
+       */
+      public Builder setInverseOffers(
+          org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers.Builder builderForValue) {
+        if (inverseOffersBuilder_ == null) {
+          inverseOffers_ = builderForValue.build();
+          onChanged();
+        } else {
+          inverseOffersBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.InverseOffers inverse_offers = 9;</code>
+       */
+      public Builder mergeInverseOffers(org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers value) {
+        if (inverseOffersBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008) &&
+              inverseOffers_ != org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers.getDefaultInstance()) {
+            inverseOffers_ =
+              org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers.newBuilder(inverseOffers_).mergeFrom(value).buildPartial();
+          } else {
+            inverseOffers_ = value;
+          }
+          onChanged();
+        } else {
+          inverseOffersBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.InverseOffers inverse_offers = 9;</code>
+       */
+      public Builder clearInverseOffers() {
+        if (inverseOffersBuilder_ == null) {
+          inverseOffers_ = org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers.getDefaultInstance();
+          onChanged();
+        } else {
+          inverseOffersBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.InverseOffers inverse_offers = 9;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers.Builder getInverseOffersBuilder() {
+        bitField0_ |= 0x00000008;
+        onChanged();
+        return getInverseOffersFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.InverseOffers inverse_offers = 9;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Event.InverseOffersOrBuilder getInverseOffersOrBuilder() {
+        if (inverseOffersBuilder_ != null) {
+          return inverseOffersBuilder_.getMessageOrBuilder();
+        } else {
+          return inverseOffers_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.InverseOffers inverse_offers = 9;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers, org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers.Builder, org.apache.mesos.v1.scheduler.Protos.Event.InverseOffersOrBuilder> 
+          getInverseOffersFieldBuilder() {
+        if (inverseOffersBuilder_ == null) {
+          inverseOffersBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers, org.apache.mesos.v1.scheduler.Protos.Event.InverseOffers.Builder, org.apache.mesos.v1.scheduler.Protos.Event.InverseOffersOrBuilder>(
+                  inverseOffers_,
+                  getParentForChildren(),
+                  isClean());
+          inverseOffers_ = null;
+        }
+        return inverseOffersBuilder_;
+      }
+
+      // optional .mesos.v1.scheduler.Event.Rescind rescind = 4;
+      private org.apache.mesos.v1.scheduler.Protos.Event.Rescind rescind_ = org.apache.mesos.v1.scheduler.Protos.Event.Rescind.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Event.Rescind, org.apache.mesos.v1.scheduler.Protos.Event.Rescind.Builder, org.apache.mesos.v1.scheduler.Protos.Event.RescindOrBuilder> rescindBuilder_;
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Rescind rescind = 4;</code>
+       */
+      public boolean hasRescind() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Rescind rescind = 4;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Event.Rescind getRescind() {
+        if (rescindBuilder_ == null) {
+          return rescind_;
+        } else {
+          return rescindBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Rescind rescind = 4;</code>
+       */
+      public Builder setRescind(org.apache.mesos.v1.scheduler.Protos.Event.Rescind value) {
+        if (rescindBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          rescind_ = value;
+          onChanged();
+        } else {
+          rescindBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Rescind rescind = 4;</code>
+       */
+      public Builder setRescind(
+          org.apache.mesos.v1.scheduler.Protos.Event.Rescind.Builder builderForValue) {
+        if (rescindBuilder_ == null) {
+          rescind_ = builderForValue.build();
+          onChanged();
+        } else {
+          rescindBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Rescind rescind = 4;</code>
+       */
+      public Builder mergeRescind(org.apache.mesos.v1.scheduler.Protos.Event.Rescind value) {
+        if (rescindBuilder_ == null) {
+          if (((bitField0_ & 0x00000010) == 0x00000010) &&
+              rescind_ != org.apache.mesos.v1.scheduler.Protos.Event.Rescind.getDefaultInstance()) {
+            rescind_ =
+              org.apache.mesos.v1.scheduler.Protos.Event.Rescind.newBuilder(rescind_).mergeFrom(value).buildPartial();
+          } else {
+            rescind_ = value;
+          }
+          onChanged();
+        } else {
+          rescindBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Rescind rescind = 4;</code>
+       */
+      public Builder clearRescind() {
+        if (rescindBuilder_ == null) {
+          rescind_ = org.apache.mesos.v1.scheduler.Protos.Event.Rescind.getDefaultInstance();
+          onChanged();
+        } else {
+          rescindBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Rescind rescind = 4;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Event.Rescind.Builder getRescindBuilder() {
+        bitField0_ |= 0x00000010;
+        onChanged();
+        return getRescindFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Rescind rescind = 4;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Event.RescindOrBuilder getRescindOrBuilder() {
+        if (rescindBuilder_ != null) {
+          return rescindBuilder_.getMessageOrBuilder();
+        } else {
+          return rescind_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Rescind rescind = 4;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Event.Rescind, org.apache.mesos.v1.scheduler.Protos.Event.Rescind.Builder, org.apache.mesos.v1.scheduler.Protos.Event.RescindOrBuilder> 
+          getRescindFieldBuilder() {
+        if (rescindBuilder_ == null) {
+          rescindBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.scheduler.Protos.Event.Rescind, org.apache.mesos.v1.scheduler.Protos.Event.Rescind.Builder, org.apache.mesos.v1.scheduler.Protos.Event.RescindOrBuilder>(
+                  rescind_,
+                  getParentForChildren(),
+                  isClean());
+          rescind_ = null;
+        }
+        return rescindBuilder_;
+      }
+
+      // optional .mesos.v1.scheduler.Event.RescindInverseOffer rescind_inverse_offer = 10;
+      private org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer rescindInverseOffer_ = org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer, org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer.Builder, org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOfferOrBuilder> rescindInverseOfferBuilder_;
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.RescindInverseOffer rescind_inverse_offer = 10;</code>
+       */
+      public boolean hasRescindInverseOffer() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.RescindInverseOffer rescind_inverse_offer = 10;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer getRescindInverseOffer() {
+        if (rescindInverseOfferBuilder_ == null) {
+          return rescindInverseOffer_;
+        } else {
+          return rescindInverseOfferBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.RescindInverseOffer rescind_inverse_offer = 10;</code>
+       */
+      public Builder setRescindInverseOffer(org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer value) {
+        if (rescindInverseOfferBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          rescindInverseOffer_ = value;
+          onChanged();
+        } else {
+          rescindInverseOfferBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.RescindInverseOffer rescind_inverse_offer = 10;</code>
+       */
+      public Builder setRescindInverseOffer(
+          org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer.Builder builderForValue) {
+        if (rescindInverseOfferBuilder_ == null) {
+          rescindInverseOffer_ = builderForValue.build();
+          onChanged();
+        } else {
+          rescindInverseOfferBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.RescindInverseOffer rescind_inverse_offer = 10;</code>
+       */
+      public Builder mergeRescindInverseOffer(org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer value) {
+        if (rescindInverseOfferBuilder_ == null) {
+          if (((bitField0_ & 0x00000020) == 0x00000020) &&
+              rescindInverseOffer_ != org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer.getDefaultInstance()) {
+            rescindInverseOffer_ =
+              org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer.newBuilder(rescindInverseOffer_).mergeFrom(value).buildPartial();
+          } else {
+            rescindInverseOffer_ = value;
+          }
+          onChanged();
+        } else {
+          rescindInverseOfferBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.RescindInverseOffer rescind_inverse_offer = 10;</code>
+       */
+      public Builder clearRescindInverseOffer() {
+        if (rescindInverseOfferBuilder_ == null) {
+          rescindInverseOffer_ = org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer.getDefaultInstance();
+          onChanged();
+        } else {
+          rescindInverseOfferBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.RescindInverseOffer rescind_inverse_offer = 10;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer.Builder getRescindInverseOfferBuilder() {
+        bitField0_ |= 0x00000020;
+        onChanged();
+        return getRescindInverseOfferFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.RescindInverseOffer rescind_inverse_offer = 10;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOfferOrBuilder getRescindInverseOfferOrBuilder() {
+        if (rescindInverseOfferBuilder_ != null) {
+          return rescindInverseOfferBuilder_.getMessageOrBuilder();
+        } else {
+          return rescindInverseOffer_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.RescindInverseOffer rescind_inverse_offer = 10;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer, org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer.Builder, org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOfferOrBuilder> 
+          getRescindInverseOfferFieldBuilder() {
+        if (rescindInverseOfferBuilder_ == null) {
+          rescindInverseOfferBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer, org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOffer.Builder, org.apache.mesos.v1.scheduler.Protos.Event.RescindInverseOfferOrBuilder>(
+                  rescindInverseOffer_,
+                  getParentForChildren(),
+                  isClean());
+          rescindInverseOffer_ = null;
+        }
+        return rescindInverseOfferBuilder_;
+      }
+
+      // optional .mesos.v1.scheduler.Event.Update update = 5;
+      private org.apache.mesos.v1.scheduler.Protos.Event.Update update_ = org.apache.mesos.v1.scheduler.Protos.Event.Update.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Event.Update, org.apache.mesos.v1.scheduler.Protos.Event.Update.Builder, org.apache.mesos.v1.scheduler.Protos.Event.UpdateOrBuilder> updateBuilder_;
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Update update = 5;</code>
+       */
+      public boolean hasUpdate() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Update update = 5;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Event.Update getUpdate() {
+        if (updateBuilder_ == null) {
+          return update_;
+        } else {
+          return updateBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Update update = 5;</code>
+       */
+      public Builder setUpdate(org.apache.mesos.v1.scheduler.Protos.Event.Update value) {
+        if (updateBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          update_ = value;
+          onChanged();
+        } else {
+          updateBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Update update = 5;</code>
+       */
+      public Builder setUpdate(
+          org.apache.mesos.v1.scheduler.Protos.Event.Update.Builder builderForValue) {
+        if (updateBuilder_ == null) {
+          update_ = builderForValue.build();
+          onChanged();
+        } else {
+          updateBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Update update = 5;</code>
+       */
+      public Builder mergeUpdate(org.apache.mesos.v1.scheduler.Protos.Event.Update value) {
+        if (updateBuilder_ == null) {
+          if (((bitField0_ & 0x00000040) == 0x00000040) &&
+              update_ != org.apache.mesos.v1.scheduler.Protos.Event.Update.getDefaultInstance()) {
+            update_ =
+              org.apache.mesos.v1.scheduler.Protos.Event.Update.newBuilder(update_).mergeFrom(value).buildPartial();
+          } else {
+            update_ = value;
+          }
+          onChanged();
+        } else {
+          updateBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Update update = 5;</code>
+       */
+      public Builder clearUpdate() {
+        if (updateBuilder_ == null) {
+          update_ = org.apache.mesos.v1.scheduler.Protos.Event.Update.getDefaultInstance();
+          onChanged();
+        } else {
+          updateBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000040);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Update update = 5;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Event.Update.Builder getUpdateBuilder() {
+        bitField0_ |= 0x00000040;
+        onChanged();
+        return getUpdateFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Update update = 5;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Event.UpdateOrBuilder getUpdateOrBuilder() {
+        if (updateBuilder_ != null) {
+          return updateBuilder_.getMessageOrBuilder();
+        } else {
+          return update_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Update update = 5;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Event.Update, org.apache.mesos.v1.scheduler.Protos.Event.Update.Builder, org.apache.mesos.v1.scheduler.Protos.Event.UpdateOrBuilder> 
+          getUpdateFieldBuilder() {
+        if (updateBuilder_ == null) {
+          updateBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.scheduler.Protos.Event.Update, org.apache.mesos.v1.scheduler.Protos.Event.Update.Builder, org.apache.mesos.v1.scheduler.Protos.Event.UpdateOrBuilder>(
+                  update_,
+                  getParentForChildren(),
+                  isClean());
+          update_ = null;
+        }
+        return updateBuilder_;
+      }
+
+      // optional .mesos.v1.scheduler.Event.Message message = 6;
+      private org.apache.mesos.v1.scheduler.Protos.Event.Message message_ = org.apache.mesos.v1.scheduler.Protos.Event.Message.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Event.Message, org.apache.mesos.v1.scheduler.Protos.Event.Message.Builder, org.apache.mesos.v1.scheduler.Protos.Event.MessageOrBuilder> messageBuilder_;
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Message message = 6;</code>
+       */
+      public boolean hasMessage() {
+        return ((bitField0_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Message message = 6;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Event.Message getMessage() {
+        if (messageBuilder_ == null) {
+          return message_;
+        } else {
+          return messageBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Message message = 6;</code>
+       */
+      public Builder setMessage(org.apache.mesos.v1.scheduler.Protos.Event.Message value) {
+        if (messageBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          message_ = value;
+          onChanged();
+        } else {
+          messageBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Message message = 6;</code>
+       */
+      public Builder setMessage(
+          org.apache.mesos.v1.scheduler.Protos.Event.Message.Builder builderForValue) {
+        if (messageBuilder_ == null) {
+          message_ = builderForValue.build();
+          onChanged();
+        } else {
+          messageBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Message message = 6;</code>
+       */
+      public Builder mergeMessage(org.apache.mesos.v1.scheduler.Protos.Event.Message value) {
+        if (messageBuilder_ == null) {
+          if (((bitField0_ & 0x00000080) == 0x00000080) &&
+              message_ != org.apache.mesos.v1.scheduler.Protos.Event.Message.getDefaultInstance()) {
+            message_ =
+              org.apache.mesos.v1.scheduler.Protos.Event.Message.newBuilder(message_).mergeFrom(value).buildPartial();
+          } else {
+            message_ = value;
+          }
+          onChanged();
+        } else {
+          messageBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Message message = 6;</code>
+       */
+      public Builder clearMessage() {
+        if (messageBuilder_ == null) {
+          message_ = org.apache.mesos.v1.scheduler.Protos.Event.Message.getDefaultInstance();
+          onChanged();
+        } else {
+          messageBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000080);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Message message = 6;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Event.Message.Builder getMessageBuilder() {
+        bitField0_ |= 0x00000080;
+        onChanged();
+        return getMessageFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Message message = 6;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Event.MessageOrBuilder getMessageOrBuilder() {
+        if (messageBuilder_ != null) {
+          return messageBuilder_.getMessageOrBuilder();
+        } else {
+          return message_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Message message = 6;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Event.Message, org.apache.mesos.v1.scheduler.Protos.Event.Message.Builder, org.apache.mesos.v1.scheduler.Protos.Event.MessageOrBuilder> 
+          getMessageFieldBuilder() {
+        if (messageBuilder_ == null) {
+          messageBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.scheduler.Protos.Event.Message, org.apache.mesos.v1.scheduler.Protos.Event.Message.Builder, org.apache.mesos.v1.scheduler.Protos.Event.MessageOrBuilder>(
+                  message_,
+                  getParentForChildren(),
+                  isClean());
+          message_ = null;
+        }
+        return messageBuilder_;
+      }
+
+      // optional .mesos.v1.scheduler.Event.Failure failure = 7;
+      private org.apache.mesos.v1.scheduler.Protos.Event.Failure failure_ = org.apache.mesos.v1.scheduler.Protos.Event.Failure.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Event.Failure, org.apache.mesos.v1.scheduler.Protos.Event.Failure.Builder, org.apache.mesos.v1.scheduler.Protos.Event.FailureOrBuilder> failureBuilder_;
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Failure failure = 7;</code>
+       */
+      public boolean hasFailure() {
+        return ((bitField0_ & 0x00000100) == 0x00000100);
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Failure failure = 7;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Event.Failure getFailure() {
+        if (failureBuilder_ == null) {
+          return failure_;
+        } else {
+          return failureBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Failure failure = 7;</code>
+       */
+      public Builder setFailure(org.apache.mesos.v1.scheduler.Protos.Event.Failure value) {
+        if (failureBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          failure_ = value;
+          onChanged();
+        } else {
+          failureBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000100;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Failure failure = 7;</code>
+       */
+      public Builder setFailure(
+          org.apache.mesos.v1.scheduler.Protos.Event.Failure.Builder builderForValue) {
+        if (failureBuilder_ == null) {
+          failure_ = builderForValue.build();
+          onChanged();
+        } else {
+          failureBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000100;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Failure failure = 7;</code>
+       */
+      public Builder mergeFailure(org.apache.mesos.v1.scheduler.Protos.Event.Failure value) {
+        if (failureBuilder_ == null) {
+          if (((bitField0_ & 0x00000100) == 0x00000100) &&
+              failure_ != org.apache.mesos.v1.scheduler.Protos.Event.Failure.getDefaultInstance()) {
+            failure_ =
+              org.apache.mesos.v1.scheduler.Protos.Event.Failure.newBuilder(failure_).mergeFrom(value).buildPartial();
+          } else {
+            failure_ = value;
+          }
+          onChanged();
+        } else {
+          failureBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000100;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Failure failure = 7;</code>
+       */
+      public Builder clearFailure() {
+        if (failureBuilder_ == null) {
+          failure_ = org.apache.mesos.v1.scheduler.Protos.Event.Failure.getDefaultInstance();
+          onChanged();
+        } else {
+          failureBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000100);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Failure failure = 7;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Event.Failure.Builder getFailureBuilder() {
+        bitField0_ |= 0x00000100;
+        onChanged();
+        return getFailureFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Failure failure = 7;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Event.FailureOrBuilder getFailureOrBuilder() {
+        if (failureBuilder_ != null) {
+          return failureBuilder_.getMessageOrBuilder();
+        } else {
+          return failure_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Failure failure = 7;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Event.Failure, org.apache.mesos.v1.scheduler.Protos.Event.Failure.Builder, org.apache.mesos.v1.scheduler.Protos.Event.FailureOrBuilder> 
+          getFailureFieldBuilder() {
+        if (failureBuilder_ == null) {
+          failureBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.scheduler.Protos.Event.Failure, org.apache.mesos.v1.scheduler.Protos.Event.Failure.Builder, org.apache.mesos.v1.scheduler.Protos.Event.FailureOrBuilder>(
+                  failure_,
+                  getParentForChildren(),
+                  isClean());
+          failure_ = null;
+        }
+        return failureBuilder_;
+      }
+
+      // optional .mesos.v1.scheduler.Event.Error error = 8;
+      private org.apache.mesos.v1.scheduler.Protos.Event.Error error_ = org.apache.mesos.v1.scheduler.Protos.Event.Error.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Event.Error, org.apache.mesos.v1.scheduler.Protos.Event.Error.Builder, org.apache.mesos.v1.scheduler.Protos.Event.ErrorOrBuilder> errorBuilder_;
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Error error = 8;</code>
+       */
+      public boolean hasError() {
+        return ((bitField0_ & 0x00000200) == 0x00000200);
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Error error = 8;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Event.Error getError() {
+        if (errorBuilder_ == null) {
+          return error_;
+        } else {
+          return errorBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Error error = 8;</code>
+       */
+      public Builder setError(org.apache.mesos.v1.scheduler.Protos.Event.Error value) {
+        if (errorBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          error_ = value;
+          onChanged();
+        } else {
+          errorBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000200;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Error error = 8;</code>
+       */
+      public Builder setError(
+          org.apache.mesos.v1.scheduler.Protos.Event.Error.Builder builderForValue) {
+        if (errorBuilder_ == null) {
+          error_ = builderForValue.build();
+          onChanged();
+        } else {
+          errorBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000200;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Error error = 8;</code>
+       */
+      public Builder mergeError(org.apache.mesos.v1.scheduler.Protos.Event.Error value) {
+        if (errorBuilder_ == null) {
+          if (((bitField0_ & 0x00000200) == 0x00000200) &&
+              error_ != org.apache.mesos.v1.scheduler.Protos.Event.Error.getDefaultInstance()) {
+            error_ =
+              org.apache.mesos.v1.scheduler.Protos.Event.Error.newBuilder(error_).mergeFrom(value).buildPartial();
+          } else {
+            error_ = value;
+          }
+          onChanged();
+        } else {
+          errorBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000200;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Error error = 8;</code>
+       */
+      public Builder clearError() {
+        if (errorBuilder_ == null) {
+          error_ = org.apache.mesos.v1.scheduler.Protos.Event.Error.getDefaultInstance();
+          onChanged();
+        } else {
+          errorBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000200);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Error error = 8;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Event.Error.Builder getErrorBuilder() {
+        bitField0_ |= 0x00000200;
+        onChanged();
+        return getErrorFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Error error = 8;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Event.ErrorOrBuilder getErrorOrBuilder() {
+        if (errorBuilder_ != null) {
+          return errorBuilder_.getMessageOrBuilder();
+        } else {
+          return error_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Event.Error error = 8;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Event.Error, org.apache.mesos.v1.scheduler.Protos.Event.Error.Builder, org.apache.mesos.v1.scheduler.Protos.Event.ErrorOrBuilder> 
+          getErrorFieldBuilder() {
+        if (errorBuilder_ == null) {
+          errorBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.scheduler.Protos.Event.Error, org.apache.mesos.v1.scheduler.Protos.Event.Error.Builder, org.apache.mesos.v1.scheduler.Protos.Event.ErrorOrBuilder>(
+                  error_,
+                  getParentForChildren(),
+                  isClean());
+          error_ = null;
+        }
+        return errorBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.scheduler.Event)
+    }
+
+    static {
+      defaultInstance = new Event(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.scheduler.Event)
+  }
+
+  public interface CallOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // optional .mesos.v1.FrameworkID framework_id = 1;
+    /**
+     * <code>optional .mesos.v1.FrameworkID framework_id = 1;</code>
+     *
+     * <pre>
+     * Identifies who generated this call. Master assigns a framework id
+     * when a new scheduler subscribes for the first time. Once assigned,
+     * the scheduler must set the 'framework_id' here and within its
+     * FrameworkInfo (in any further 'Subscribe' calls). This allows the
+     * master to identify a scheduler correctly across disconnections,
+     * failovers, etc.
+     * </pre>
+     */
+    boolean hasFrameworkId();
+    /**
+     * <code>optional .mesos.v1.FrameworkID framework_id = 1;</code>
+     *
+     * <pre>
+     * Identifies who generated this call. Master assigns a framework id
+     * when a new scheduler subscribes for the first time. Once assigned,
+     * the scheduler must set the 'framework_id' here and within its
+     * FrameworkInfo (in any further 'Subscribe' calls). This allows the
+     * master to identify a scheduler correctly across disconnections,
+     * failovers, etc.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.FrameworkID getFrameworkId();
+    /**
+     * <code>optional .mesos.v1.FrameworkID framework_id = 1;</code>
+     *
+     * <pre>
+     * Identifies who generated this call. Master assigns a framework id
+     * when a new scheduler subscribes for the first time. Once assigned,
+     * the scheduler must set the 'framework_id' here and within its
+     * FrameworkInfo (in any further 'Subscribe' calls). This allows the
+     * master to identify a scheduler correctly across disconnections,
+     * failovers, etc.
+     * </pre>
+     */
+    org.apache.mesos.v1.Protos.FrameworkIDOrBuilder getFrameworkIdOrBuilder();
+
+    // optional .mesos.v1.scheduler.Call.Type type = 2;
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Type type = 2;</code>
+     *
+     * <pre>
+     * Type of the call, indicates which optional field below should be
+     * present if that type has a nested message definition.
+     * See comments on `Event::Type` above on the reasoning behind this field being optional.
+     * </pre>
+     */
+    boolean hasType();
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Type type = 2;</code>
+     *
+     * <pre>
+     * Type of the call, indicates which optional field below should be
+     * present if that type has a nested message definition.
+     * See comments on `Event::Type` above on the reasoning behind this field being optional.
+     * </pre>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Call.Type getType();
+
+    // optional .mesos.v1.scheduler.Call.Subscribe subscribe = 3;
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Subscribe subscribe = 3;</code>
+     */
+    boolean hasSubscribe();
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Subscribe subscribe = 3;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Call.Subscribe getSubscribe();
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Subscribe subscribe = 3;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Call.SubscribeOrBuilder getSubscribeOrBuilder();
+
+    // optional .mesos.v1.scheduler.Call.Accept accept = 4;
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Accept accept = 4;</code>
+     */
+    boolean hasAccept();
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Accept accept = 4;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Call.Accept getAccept();
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Accept accept = 4;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Call.AcceptOrBuilder getAcceptOrBuilder();
+
+    // optional .mesos.v1.scheduler.Call.Decline decline = 5;
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Decline decline = 5;</code>
+     */
+    boolean hasDecline();
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Decline decline = 5;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Call.Decline getDecline();
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Decline decline = 5;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Call.DeclineOrBuilder getDeclineOrBuilder();
+
+    // optional .mesos.v1.scheduler.Call.AcceptInverseOffers accept_inverse_offers = 13;
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.AcceptInverseOffers accept_inverse_offers = 13;</code>
+     */
+    boolean hasAcceptInverseOffers();
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.AcceptInverseOffers accept_inverse_offers = 13;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers getAcceptInverseOffers();
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.AcceptInverseOffers accept_inverse_offers = 13;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffersOrBuilder getAcceptInverseOffersOrBuilder();
+
+    // optional .mesos.v1.scheduler.Call.DeclineInverseOffers decline_inverse_offers = 14;
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.DeclineInverseOffers decline_inverse_offers = 14;</code>
+     */
+    boolean hasDeclineInverseOffers();
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.DeclineInverseOffers decline_inverse_offers = 14;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers getDeclineInverseOffers();
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.DeclineInverseOffers decline_inverse_offers = 14;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffersOrBuilder getDeclineInverseOffersOrBuilder();
+
+    // optional .mesos.v1.scheduler.Call.Revive revive = 15;
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Revive revive = 15;</code>
+     */
+    boolean hasRevive();
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Revive revive = 15;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Call.Revive getRevive();
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Revive revive = 15;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Call.ReviveOrBuilder getReviveOrBuilder();
+
+    // optional .mesos.v1.scheduler.Call.Kill kill = 6;
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Kill kill = 6;</code>
+     */
+    boolean hasKill();
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Kill kill = 6;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Call.Kill getKill();
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Kill kill = 6;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Call.KillOrBuilder getKillOrBuilder();
+
+    // optional .mesos.v1.scheduler.Call.Shutdown shutdown = 7;
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Shutdown shutdown = 7;</code>
+     */
+    boolean hasShutdown();
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Shutdown shutdown = 7;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Call.Shutdown getShutdown();
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Shutdown shutdown = 7;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Call.ShutdownOrBuilder getShutdownOrBuilder();
+
+    // optional .mesos.v1.scheduler.Call.Acknowledge acknowledge = 8;
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Acknowledge acknowledge = 8;</code>
+     */
+    boolean hasAcknowledge();
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Acknowledge acknowledge = 8;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge getAcknowledge();
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Acknowledge acknowledge = 8;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Call.AcknowledgeOrBuilder getAcknowledgeOrBuilder();
+
+    // optional .mesos.v1.scheduler.Call.Reconcile reconcile = 9;
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Reconcile reconcile = 9;</code>
+     */
+    boolean hasReconcile();
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Reconcile reconcile = 9;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Call.Reconcile getReconcile();
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Reconcile reconcile = 9;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Call.ReconcileOrBuilder getReconcileOrBuilder();
+
+    // optional .mesos.v1.scheduler.Call.Message message = 10;
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Message message = 10;</code>
+     */
+    boolean hasMessage();
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Message message = 10;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Call.Message getMessage();
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Message message = 10;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Call.MessageOrBuilder getMessageOrBuilder();
+
+    // optional .mesos.v1.scheduler.Call.Request request = 11;
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Request request = 11;</code>
+     */
+    boolean hasRequest();
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Request request = 11;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Call.Request getRequest();
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Request request = 11;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Call.RequestOrBuilder getRequestOrBuilder();
+
+    // optional .mesos.v1.scheduler.Call.Suppress suppress = 16;
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Suppress suppress = 16;</code>
+     */
+    boolean hasSuppress();
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Suppress suppress = 16;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Call.Suppress getSuppress();
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Suppress suppress = 16;</code>
+     */
+    org.apache.mesos.v1.scheduler.Protos.Call.SuppressOrBuilder getSuppressOrBuilder();
+  }
+  /**
+   * Protobuf type {@code mesos.v1.scheduler.Call}
+   *
+   * <pre>
+   **
+   * Scheduler call API.
+   *
+   * Like Event, a Call is described using the standard protocol buffer
+   * "union" trick (see above).
+   * </pre>
+   */
+  public static final class Call extends
+      com.google.protobuf.GeneratedMessage
+      implements CallOrBuilder {
+    // Use Call.newBuilder() to construct.
+    private Call(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Call(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Call defaultInstance;
+    public static Call getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public Call getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Call(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              org.apache.mesos.v1.Protos.FrameworkID.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                subBuilder = frameworkId_.toBuilder();
+              }
+              frameworkId_ = input.readMessage(org.apache.mesos.v1.Protos.FrameworkID.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(frameworkId_);
+                frameworkId_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+            case 16: {
+              int rawValue = input.readEnum();
+              org.apache.mesos.v1.scheduler.Protos.Call.Type value = org.apache.mesos.v1.scheduler.Protos.Call.Type.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(2, rawValue);
+              } else {
+                bitField0_ |= 0x00000002;
+                type_ = value;
+              }
+              break;
+            }
+            case 26: {
+              org.apache.mesos.v1.scheduler.Protos.Call.Subscribe.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                subBuilder = subscribe_.toBuilder();
+              }
+              subscribe_ = input.readMessage(org.apache.mesos.v1.scheduler.Protos.Call.Subscribe.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(subscribe_);
+                subscribe_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000004;
+              break;
+            }
+            case 34: {
+              org.apache.mesos.v1.scheduler.Protos.Call.Accept.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                subBuilder = accept_.toBuilder();
+              }
+              accept_ = input.readMessage(org.apache.mesos.v1.scheduler.Protos.Call.Accept.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(accept_);
+                accept_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000008;
+              break;
+            }
+            case 42: {
+              org.apache.mesos.v1.scheduler.Protos.Call.Decline.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000010) == 0x00000010)) {
+                subBuilder = decline_.toBuilder();
+              }
+              decline_ = input.readMessage(org.apache.mesos.v1.scheduler.Protos.Call.Decline.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(decline_);
+                decline_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000010;
+              break;
+            }
+            case 50: {
+              org.apache.mesos.v1.scheduler.Protos.Call.Kill.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000100) == 0x00000100)) {
+                subBuilder = kill_.toBuilder();
+              }
+              kill_ = input.readMessage(org.apache.mesos.v1.scheduler.Protos.Call.Kill.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(kill_);
+                kill_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000100;
+              break;
+            }
+            case 58: {
+              org.apache.mesos.v1.scheduler.Protos.Call.Shutdown.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000200) == 0x00000200)) {
+                subBuilder = shutdown_.toBuilder();
+              }
+              shutdown_ = input.readMessage(org.apache.mesos.v1.scheduler.Protos.Call.Shutdown.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(shutdown_);
+                shutdown_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000200;
+              break;
+            }
+            case 66: {
+              org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000400) == 0x00000400)) {
+                subBuilder = acknowledge_.toBuilder();
+              }
+              acknowledge_ = input.readMessage(org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(acknowledge_);
+                acknowledge_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000400;
+              break;
+            }
+            case 74: {
+              org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000800) == 0x00000800)) {
+                subBuilder = reconcile_.toBuilder();
+              }
+              reconcile_ = input.readMessage(org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(reconcile_);
+                reconcile_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000800;
+              break;
+            }
+            case 82: {
+              org.apache.mesos.v1.scheduler.Protos.Call.Message.Builder subBuilder = null;
+              if (((bitField0_ & 0x00001000) == 0x00001000)) {
+                subBuilder = message_.toBuilder();
+              }
+              message_ = input.readMessage(org.apache.mesos.v1.scheduler.Protos.Call.Message.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(message_);
+                message_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00001000;
+              break;
+            }
+            case 90: {
+              org.apache.mesos.v1.scheduler.Protos.Call.Request.Builder subBuilder = null;
+              if (((bitField0_ & 0x00002000) == 0x00002000)) {
+                subBuilder = request_.toBuilder();
+              }
+              request_ = input.readMessage(org.apache.mesos.v1.scheduler.Protos.Call.Request.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(request_);
+                request_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00002000;
+              break;
+            }
+            case 106: {
+              org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000020) == 0x00000020)) {
+                subBuilder = acceptInverseOffers_.toBuilder();
+              }
+              acceptInverseOffers_ = input.readMessage(org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(acceptInverseOffers_);
+                acceptInverseOffers_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000020;
+              break;
+            }
+            case 114: {
+              org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000040) == 0x00000040)) {
+                subBuilder = declineInverseOffers_.toBuilder();
+              }
+              declineInverseOffers_ = input.readMessage(org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(declineInverseOffers_);
+                declineInverseOffers_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000040;
+              break;
+            }
+            case 122: {
+              org.apache.mesos.v1.scheduler.Protos.Call.Revive.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000080) == 0x00000080)) {
+                subBuilder = revive_.toBuilder();
+              }
+              revive_ = input.readMessage(org.apache.mesos.v1.scheduler.Protos.Call.Revive.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(revive_);
+                revive_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000080;
+              break;
+            }
+            case 130: {
+              org.apache.mesos.v1.scheduler.Protos.Call.Suppress.Builder subBuilder = null;
+              if (((bitField0_ & 0x00004000) == 0x00004000)) {
+                subBuilder = suppress_.toBuilder();
+              }
+              suppress_ = input.readMessage(org.apache.mesos.v1.scheduler.Protos.Call.Suppress.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(suppress_);
+                suppress_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00004000;
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.mesos.v1.scheduler.Protos.Call.class, org.apache.mesos.v1.scheduler.Protos.Call.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<Call> PARSER =
+        new com.google.protobuf.AbstractParser<Call>() {
+      public Call parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Call(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Call> getParserForType() {
+      return PARSER;
+    }
+
+    /**
+     * Protobuf enum {@code mesos.v1.scheduler.Call.Type}
+     *
+     * <pre>
+     * Possible call types, followed by message definitions if
+     * applicable.
+     * </pre>
+     */
+    public enum Type
+        implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>UNKNOWN = 0;</code>
+       *
+       * <pre>
+       * See comments above on `Event::Type` for more details on this enum value.
+       * </pre>
+       */
+      UNKNOWN(0, 0),
+      /**
+       * <code>SUBSCRIBE = 1;</code>
+       *
+       * <pre>
+       * See 'Subscribe' below.
+       * </pre>
+       */
+      SUBSCRIBE(1, 1),
+      /**
+       * <code>TEARDOWN = 2;</code>
+       *
+       * <pre>
+       * Shuts down all tasks/executors and removes framework.
+       * </pre>
+       */
+      TEARDOWN(2, 2),
+      /**
+       * <code>ACCEPT = 3;</code>
+       *
+       * <pre>
+       * See 'Accept' below.
+       * </pre>
+       */
+      ACCEPT(3, 3),
+      /**
+       * <code>DECLINE = 4;</code>
+       *
+       * <pre>
+       * See 'Decline' below.
+       * </pre>
+       */
+      DECLINE(4, 4),
+      /**
+       * <code>ACCEPT_INVERSE_OFFERS = 13;</code>
+       *
+       * <pre>
+       * See 'AcceptInverseOffers' below.
+       * </pre>
+       */
+      ACCEPT_INVERSE_OFFERS(5, 13),
+      /**
+       * <code>DECLINE_INVERSE_OFFERS = 14;</code>
+       *
+       * <pre>
+       * See 'DeclineInverseOffers' below.
+       * </pre>
+       */
+      DECLINE_INVERSE_OFFERS(6, 14),
+      /**
+       * <code>REVIVE = 5;</code>
+       *
+       * <pre>
+       * Removes any previous filters set via ACCEPT or DECLINE.
+       * </pre>
+       */
+      REVIVE(7, 5),
+      /**
+       * <code>KILL = 6;</code>
+       *
+       * <pre>
+       * See 'Kill' below.
+       * </pre>
+       */
+      KILL(8, 6),
+      /**
+       * <code>SHUTDOWN = 7;</code>
+       *
+       * <pre>
+       * See 'Shutdown' below.
+       * </pre>
+       */
+      SHUTDOWN(9, 7),
+      /**
+       * <code>ACKNOWLEDGE = 8;</code>
+       *
+       * <pre>
+       * See 'Acknowledge' below.
+       * </pre>
+       */
+      ACKNOWLEDGE(10, 8),
+      /**
+       * <code>RECONCILE = 9;</code>
+       *
+       * <pre>
+       * See 'Reconcile' below.
+       * </pre>
+       */
+      RECONCILE(11, 9),
+      /**
+       * <code>MESSAGE = 10;</code>
+       *
+       * <pre>
+       * See 'Message' below.
+       * </pre>
+       */
+      MESSAGE(12, 10),
+      /**
+       * <code>REQUEST = 11;</code>
+       *
+       * <pre>
+       * See 'Request' below.
+       * </pre>
+       */
+      REQUEST(13, 11),
+      /**
+       * <code>SUPPRESS = 12;</code>
+       *
+       * <pre>
+       * Inform master to stop sending offers to the framework.
+       * </pre>
+       */
+      SUPPRESS(14, 12),
+      ;
+
+      /**
+       * <code>UNKNOWN = 0;</code>
+       *
+       * <pre>
+       * See comments above on `Event::Type` for more details on this enum value.
+       * </pre>
+       */
+      public static final int UNKNOWN_VALUE = 0;
+      /**
+       * <code>SUBSCRIBE = 1;</code>
+       *
+       * <pre>
+       * See 'Subscribe' below.
+       * </pre>
+       */
+      public static final int SUBSCRIBE_VALUE = 1;
+      /**
+       * <code>TEARDOWN = 2;</code>
+       *
+       * <pre>
+       * Shuts down all tasks/executors and removes framework.
+       * </pre>
+       */
+      public static final int TEARDOWN_VALUE = 2;
+      /**
+       * <code>ACCEPT = 3;</code>
+       *
+       * <pre>
+       * See 'Accept' below.
+       * </pre>
+       */
+      public static final int ACCEPT_VALUE = 3;
+      /**
+       * <code>DECLINE = 4;</code>
+       *
+       * <pre>
+       * See 'Decline' below.
+       * </pre>
+       */
+      public static final int DECLINE_VALUE = 4;
+      /**
+       * <code>ACCEPT_INVERSE_OFFERS = 13;</code>
+       *
+       * <pre>
+       * See 'AcceptInverseOffers' below.
+       * </pre>
+       */
+      public static final int ACCEPT_INVERSE_OFFERS_VALUE = 13;
+      /**
+       * <code>DECLINE_INVERSE_OFFERS = 14;</code>
+       *
+       * <pre>
+       * See 'DeclineInverseOffers' below.
+       * </pre>
+       */
+      public static final int DECLINE_INVERSE_OFFERS_VALUE = 14;
+      /**
+       * <code>REVIVE = 5;</code>
+       *
+       * <pre>
+       * Removes any previous filters set via ACCEPT or DECLINE.
+       * </pre>
+       */
+      public static final int REVIVE_VALUE = 5;
+      /**
+       * <code>KILL = 6;</code>
+       *
+       * <pre>
+       * See 'Kill' below.
+       * </pre>
+       */
+      public static final int KILL_VALUE = 6;
+      /**
+       * <code>SHUTDOWN = 7;</code>
+       *
+       * <pre>
+       * See 'Shutdown' below.
+       * </pre>
+       */
+      public static final int SHUTDOWN_VALUE = 7;
+      /**
+       * <code>ACKNOWLEDGE = 8;</code>
+       *
+       * <pre>
+       * See 'Acknowledge' below.
+       * </pre>
+       */
+      public static final int ACKNOWLEDGE_VALUE = 8;
+      /**
+       * <code>RECONCILE = 9;</code>
+       *
+       * <pre>
+       * See 'Reconcile' below.
+       * </pre>
+       */
+      public static final int RECONCILE_VALUE = 9;
+      /**
+       * <code>MESSAGE = 10;</code>
+       *
+       * <pre>
+       * See 'Message' below.
+       * </pre>
+       */
+      public static final int MESSAGE_VALUE = 10;
+      /**
+       * <code>REQUEST = 11;</code>
+       *
+       * <pre>
+       * See 'Request' below.
+       * </pre>
+       */
+      public static final int REQUEST_VALUE = 11;
+      /**
+       * <code>SUPPRESS = 12;</code>
+       *
+       * <pre>
+       * Inform master to stop sending offers to the framework.
+       * </pre>
+       */
+      public static final int SUPPRESS_VALUE = 12;
+
+
+      public final int getNumber() { return value; }
+
+      public static Type valueOf(int value) {
+        switch (value) {
+          case 0: return UNKNOWN;
+          case 1: return SUBSCRIBE;
+          case 2: return TEARDOWN;
+          case 3: return ACCEPT;
+          case 4: return DECLINE;
+          case 13: return ACCEPT_INVERSE_OFFERS;
+          case 14: return DECLINE_INVERSE_OFFERS;
+          case 5: return REVIVE;
+          case 6: return KILL;
+          case 7: return SHUTDOWN;
+          case 8: return ACKNOWLEDGE;
+          case 9: return RECONCILE;
+          case 10: return MESSAGE;
+          case 11: return REQUEST;
+          case 12: return SUPPRESS;
+          default: return null;
+        }
+      }
+
+      public static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalGetValueMap() {
+        return internalValueMap;
+      }
+      private static com.google.protobuf.Internal.EnumLiteMap<Type>
+          internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap<Type>() {
+              public Type findValueByNumber(int number) {
+                return Type.valueOf(number);
+              }
+            };
+
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
+          getValueDescriptor() {
+        return getDescriptor().getValues().get(index);
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptorForType() {
+        return getDescriptor();
+      }
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.scheduler.Protos.Call.getDescriptor().getEnumTypes().get(0);
+      }
+
+      private static final Type[] VALUES = values();
+
+      public static Type valueOf(
+          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+        if (desc.getType() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "EnumValueDescriptor is not for this type.");
+        }
+        return VALUES[desc.getIndex()];
+      }
+
+      private final int index;
+      private final int value;
+
+      private Type(int index, int value) {
+        this.index = index;
+        this.value = value;
+      }
+
+      // @@protoc_insertion_point(enum_scope:mesos.v1.scheduler.Call.Type)
+    }
+
+    public interface SubscribeOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required .mesos.v1.FrameworkInfo framework_info = 1;
+      /**
+       * <code>required .mesos.v1.FrameworkInfo framework_info = 1;</code>
+       *
+       * <pre>
+       * See the comments below on 'framework_id' on the semantics for
+       * 'framework_info.id'.
+       * </pre>
+       */
+      boolean hasFrameworkInfo();
+      /**
+       * <code>required .mesos.v1.FrameworkInfo framework_info = 1;</code>
+       *
+       * <pre>
+       * See the comments below on 'framework_id' on the semantics for
+       * 'framework_info.id'.
+       * </pre>
+       */
+      org.apache.mesos.v1.Protos.FrameworkInfo getFrameworkInfo();
+      /**
+       * <code>required .mesos.v1.FrameworkInfo framework_info = 1;</code>
+       *
+       * <pre>
+       * See the comments below on 'framework_id' on the semantics for
+       * 'framework_info.id'.
+       * </pre>
+       */
+      org.apache.mesos.v1.Protos.FrameworkInfoOrBuilder getFrameworkInfoOrBuilder();
+
+      // repeated string suppressed_roles = 2;
+      /**
+       * <code>repeated string suppressed_roles = 2;</code>
+       *
+       * <pre>
+       * List of suppressed roles for which the framework does not wish to be
+       * offered resources. The framework can decide to suppress all or a subset
+       * of roles the framework (re)registers as.
+       * </pre>
+       */
+      java.util.List<java.lang.String>
+      getSuppressedRolesList();
+      /**
+       * <code>repeated string suppressed_roles = 2;</code>
+       *
+       * <pre>
+       * List of suppressed roles for which the framework does not wish to be
+       * offered resources. The framework can decide to suppress all or a subset
+       * of roles the framework (re)registers as.
+       * </pre>
+       */
+      int getSuppressedRolesCount();
+      /**
+       * <code>repeated string suppressed_roles = 2;</code>
+       *
+       * <pre>
+       * List of suppressed roles for which the framework does not wish to be
+       * offered resources. The framework can decide to suppress all or a subset
+       * of roles the framework (re)registers as.
+       * </pre>
+       */
+      java.lang.String getSuppressedRoles(int index);
+      /**
+       * <code>repeated string suppressed_roles = 2;</code>
+       *
+       * <pre>
+       * List of suppressed roles for which the framework does not wish to be
+       * offered resources. The framework can decide to suppress all or a subset
+       * of roles the framework (re)registers as.
+       * </pre>
+       */
+      com.google.protobuf.ByteString
+          getSuppressedRolesBytes(int index);
+    }
+    /**
+     * Protobuf type {@code mesos.v1.scheduler.Call.Subscribe}
+     *
+     * <pre>
+     * Subscribes the scheduler with the master to receive events. A
+     * scheduler must send other calls only after it has received the
+     * SUBCRIBED event.
+     * </pre>
+     */
+    public static final class Subscribe extends
+        com.google.protobuf.GeneratedMessage
+        implements SubscribeOrBuilder {
+      // Use Subscribe.newBuilder() to construct.
+      private Subscribe(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Subscribe(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Subscribe defaultInstance;
+      public static Subscribe getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Subscribe getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Subscribe(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.v1.Protos.FrameworkInfo.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = frameworkInfo_.toBuilder();
+                }
+                frameworkInfo_ = input.readMessage(org.apache.mesos.v1.Protos.FrameworkInfo.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(frameworkInfo_);
+                  frameworkInfo_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+              case 18: {
+                if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+                  suppressedRoles_ = new com.google.protobuf.LazyStringArrayList();
+                  mutable_bitField0_ |= 0x00000002;
+                }
+                suppressedRoles_.add(input.readBytes());
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+            suppressedRoles_ = new com.google.protobuf.UnmodifiableLazyStringList(suppressedRoles_);
+          }
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Subscribe_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Subscribe_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.scheduler.Protos.Call.Subscribe.class, org.apache.mesos.v1.scheduler.Protos.Call.Subscribe.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Subscribe> PARSER =
+          new com.google.protobuf.AbstractParser<Subscribe>() {
+        public Subscribe parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Subscribe(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Subscribe> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required .mesos.v1.FrameworkInfo framework_info = 1;
+      public static final int FRAMEWORK_INFO_FIELD_NUMBER = 1;
+      private org.apache.mesos.v1.Protos.FrameworkInfo frameworkInfo_;
+      /**
+       * <code>required .mesos.v1.FrameworkInfo framework_info = 1;</code>
+       *
+       * <pre>
+       * See the comments below on 'framework_id' on the semantics for
+       * 'framework_info.id'.
+       * </pre>
+       */
+      public boolean hasFrameworkInfo() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.v1.FrameworkInfo framework_info = 1;</code>
+       *
+       * <pre>
+       * See the comments below on 'framework_id' on the semantics for
+       * 'framework_info.id'.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.FrameworkInfo getFrameworkInfo() {
+        return frameworkInfo_;
+      }
+      /**
+       * <code>required .mesos.v1.FrameworkInfo framework_info = 1;</code>
+       *
+       * <pre>
+       * See the comments below on 'framework_id' on the semantics for
+       * 'framework_info.id'.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.FrameworkInfoOrBuilder getFrameworkInfoOrBuilder() {
+        return frameworkInfo_;
+      }
+
+      // repeated string suppressed_roles = 2;
+      public static final int SUPPRESSED_ROLES_FIELD_NUMBER = 2;
+      private com.google.protobuf.LazyStringList suppressedRoles_;
+      /**
+       * <code>repeated string suppressed_roles = 2;</code>
+       *
+       * <pre>
+       * List of suppressed roles for which the framework does not wish to be
+       * offered resources. The framework can decide to suppress all or a subset
+       * of roles the framework (re)registers as.
+       * </pre>
+       */
+      public java.util.List<java.lang.String>
+          getSuppressedRolesList() {
+        return suppressedRoles_;
+      }
+      /**
+       * <code>repeated string suppressed_roles = 2;</code>
+       *
+       * <pre>
+       * List of suppressed roles for which the framework does not wish to be
+       * offered resources. The framework can decide to suppress all or a subset
+       * of roles the framework (re)registers as.
+       * </pre>
+       */
+      public int getSuppressedRolesCount() {
+        return suppressedRoles_.size();
+      }
+      /**
+       * <code>repeated string suppressed_roles = 2;</code>
+       *
+       * <pre>
+       * List of suppressed roles for which the framework does not wish to be
+       * offered resources. The framework can decide to suppress all or a subset
+       * of roles the framework (re)registers as.
+       * </pre>
+       */
+      public java.lang.String getSuppressedRoles(int index) {
+        return suppressedRoles_.get(index);
+      }
+      /**
+       * <code>repeated string suppressed_roles = 2;</code>
+       *
+       * <pre>
+       * List of suppressed roles for which the framework does not wish to be
+       * offered resources. The framework can decide to suppress all or a subset
+       * of roles the framework (re)registers as.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getSuppressedRolesBytes(int index) {
+        return suppressedRoles_.getByteString(index);
+      }
+
+      private void initFields() {
+        frameworkInfo_ = org.apache.mesos.v1.Protos.FrameworkInfo.getDefaultInstance();
+        suppressedRoles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasFrameworkInfo()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getFrameworkInfo().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, frameworkInfo_);
+        }
+        for (int i = 0; i < suppressedRoles_.size(); i++) {
+          output.writeBytes(2, suppressedRoles_.getByteString(i));
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, frameworkInfo_);
+        }
+        {
+          int dataSize = 0;
+          for (int i = 0; i < suppressedRoles_.size(); i++) {
+            dataSize += com.google.protobuf.CodedOutputStream
+              .computeBytesSizeNoTag(suppressedRoles_.getByteString(i));
+          }
+          size += dataSize;
+          size += 1 * getSuppressedRolesList().size();
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Subscribe parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Subscribe parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Subscribe parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Subscribe parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Subscribe parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Subscribe parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Subscribe parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Subscribe parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Subscribe parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Subscribe parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.scheduler.Protos.Call.Subscribe prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.scheduler.Call.Subscribe}
+       *
+       * <pre>
+       * Subscribes the scheduler with the master to receive events. A
+       * scheduler must send other calls only after it has received the
+       * SUBCRIBED event.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.scheduler.Protos.Call.SubscribeOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Subscribe_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Subscribe_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.scheduler.Protos.Call.Subscribe.class, org.apache.mesos.v1.scheduler.Protos.Call.Subscribe.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.scheduler.Protos.Call.Subscribe.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getFrameworkInfoFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (frameworkInfoBuilder_ == null) {
+            frameworkInfo_ = org.apache.mesos.v1.Protos.FrameworkInfo.getDefaultInstance();
+          } else {
+            frameworkInfoBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          suppressedRoles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Subscribe_descriptor;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Call.Subscribe getDefaultInstanceForType() {
+          return org.apache.mesos.v1.scheduler.Protos.Call.Subscribe.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Call.Subscribe build() {
+          org.apache.mesos.v1.scheduler.Protos.Call.Subscribe result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Call.Subscribe buildPartial() {
+          org.apache.mesos.v1.scheduler.Protos.Call.Subscribe result = new org.apache.mesos.v1.scheduler.Protos.Call.Subscribe(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (frameworkInfoBuilder_ == null) {
+            result.frameworkInfo_ = frameworkInfo_;
+          } else {
+            result.frameworkInfo_ = frameworkInfoBuilder_.build();
+          }
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            suppressedRoles_ = new com.google.protobuf.UnmodifiableLazyStringList(
+                suppressedRoles_);
+            bitField0_ = (bitField0_ & ~0x00000002);
+          }
+          result.suppressedRoles_ = suppressedRoles_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.scheduler.Protos.Call.Subscribe) {
+            return mergeFrom((org.apache.mesos.v1.scheduler.Protos.Call.Subscribe)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.scheduler.Protos.Call.Subscribe other) {
+          if (other == org.apache.mesos.v1.scheduler.Protos.Call.Subscribe.getDefaultInstance()) return this;
+          if (other.hasFrameworkInfo()) {
+            mergeFrameworkInfo(other.getFrameworkInfo());
+          }
+          if (!other.suppressedRoles_.isEmpty()) {
+            if (suppressedRoles_.isEmpty()) {
+              suppressedRoles_ = other.suppressedRoles_;
+              bitField0_ = (bitField0_ & ~0x00000002);
+            } else {
+              ensureSuppressedRolesIsMutable();
+              suppressedRoles_.addAll(other.suppressedRoles_);
+            }
+            onChanged();
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasFrameworkInfo()) {
+            
+            return false;
+          }
+          if (!getFrameworkInfo().isInitialized()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.scheduler.Protos.Call.Subscribe parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.scheduler.Protos.Call.Subscribe) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required .mesos.v1.FrameworkInfo framework_info = 1;
+        private org.apache.mesos.v1.Protos.FrameworkInfo frameworkInfo_ = org.apache.mesos.v1.Protos.FrameworkInfo.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.FrameworkInfo, org.apache.mesos.v1.Protos.FrameworkInfo.Builder, org.apache.mesos.v1.Protos.FrameworkInfoOrBuilder> frameworkInfoBuilder_;
+        /**
+         * <code>required .mesos.v1.FrameworkInfo framework_info = 1;</code>
+         *
+         * <pre>
+         * See the comments below on 'framework_id' on the semantics for
+         * 'framework_info.id'.
+         * </pre>
+         */
+        public boolean hasFrameworkInfo() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.v1.FrameworkInfo framework_info = 1;</code>
+         *
+         * <pre>
+         * See the comments below on 'framework_id' on the semantics for
+         * 'framework_info.id'.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.FrameworkInfo getFrameworkInfo() {
+          if (frameworkInfoBuilder_ == null) {
+            return frameworkInfo_;
+          } else {
+            return frameworkInfoBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.v1.FrameworkInfo framework_info = 1;</code>
+         *
+         * <pre>
+         * See the comments below on 'framework_id' on the semantics for
+         * 'framework_info.id'.
+         * </pre>
+         */
+        public Builder setFrameworkInfo(org.apache.mesos.v1.Protos.FrameworkInfo value) {
+          if (frameworkInfoBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            frameworkInfo_ = value;
+            onChanged();
+          } else {
+            frameworkInfoBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.FrameworkInfo framework_info = 1;</code>
+         *
+         * <pre>
+         * See the comments below on 'framework_id' on the semantics for
+         * 'framework_info.id'.
+         * </pre>
+         */
+        public Builder setFrameworkInfo(
+            org.apache.mesos.v1.Protos.FrameworkInfo.Builder builderForValue) {
+          if (frameworkInfoBuilder_ == null) {
+            frameworkInfo_ = builderForValue.build();
+            onChanged();
+          } else {
+            frameworkInfoBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.FrameworkInfo framework_info = 1;</code>
+         *
+         * <pre>
+         * See the comments below on 'framework_id' on the semantics for
+         * 'framework_info.id'.
+         * </pre>
+         */
+        public Builder mergeFrameworkInfo(org.apache.mesos.v1.Protos.FrameworkInfo value) {
+          if (frameworkInfoBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                frameworkInfo_ != org.apache.mesos.v1.Protos.FrameworkInfo.getDefaultInstance()) {
+              frameworkInfo_ =
+                org.apache.mesos.v1.Protos.FrameworkInfo.newBuilder(frameworkInfo_).mergeFrom(value).buildPartial();
+            } else {
+              frameworkInfo_ = value;
+            }
+            onChanged();
+          } else {
+            frameworkInfoBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.FrameworkInfo framework_info = 1;</code>
+         *
+         * <pre>
+         * See the comments below on 'framework_id' on the semantics for
+         * 'framework_info.id'.
+         * </pre>
+         */
+        public Builder clearFrameworkInfo() {
+          if (frameworkInfoBuilder_ == null) {
+            frameworkInfo_ = org.apache.mesos.v1.Protos.FrameworkInfo.getDefaultInstance();
+            onChanged();
+          } else {
+            frameworkInfoBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.FrameworkInfo framework_info = 1;</code>
+         *
+         * <pre>
+         * See the comments below on 'framework_id' on the semantics for
+         * 'framework_info.id'.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.FrameworkInfo.Builder getFrameworkInfoBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getFrameworkInfoFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.v1.FrameworkInfo framework_info = 1;</code>
+         *
+         * <pre>
+         * See the comments below on 'framework_id' on the semantics for
+         * 'framework_info.id'.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.FrameworkInfoOrBuilder getFrameworkInfoOrBuilder() {
+          if (frameworkInfoBuilder_ != null) {
+            return frameworkInfoBuilder_.getMessageOrBuilder();
+          } else {
+            return frameworkInfo_;
+          }
+        }
+        /**
+         * <code>required .mesos.v1.FrameworkInfo framework_info = 1;</code>
+         *
+         * <pre>
+         * See the comments below on 'framework_id' on the semantics for
+         * 'framework_info.id'.
+         * </pre>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.FrameworkInfo, org.apache.mesos.v1.Protos.FrameworkInfo.Builder, org.apache.mesos.v1.Protos.FrameworkInfoOrBuilder> 
+            getFrameworkInfoFieldBuilder() {
+          if (frameworkInfoBuilder_ == null) {
+            frameworkInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.FrameworkInfo, org.apache.mesos.v1.Protos.FrameworkInfo.Builder, org.apache.mesos.v1.Protos.FrameworkInfoOrBuilder>(
+                    frameworkInfo_,
+                    getParentForChildren(),
+                    isClean());
+            frameworkInfo_ = null;
+          }
+          return frameworkInfoBuilder_;
+        }
+
+        // repeated string suppressed_roles = 2;
+        private com.google.protobuf.LazyStringList suppressedRoles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+        private void ensureSuppressedRolesIsMutable() {
+          if (!((bitField0_ & 0x00000002) == 0x00000002)) {
+            suppressedRoles_ = new com.google.protobuf.LazyStringArrayList(suppressedRoles_);
+            bitField0_ |= 0x00000002;
+           }
+        }
+        /**
+         * <code>repeated string suppressed_roles = 2;</code>
+         *
+         * <pre>
+         * List of suppressed roles for which the framework does not wish to be
+         * offered resources. The framework can decide to suppress all or a subset
+         * of roles the framework (re)registers as.
+         * </pre>
+         */
+        public java.util.List<java.lang.String>
+            getSuppressedRolesList() {
+          return java.util.Collections.unmodifiableList(suppressedRoles_);
+        }
+        /**
+         * <code>repeated string suppressed_roles = 2;</code>
+         *
+         * <pre>
+         * List of suppressed roles for which the framework does not wish to be
+         * offered resources. The framework can decide to suppress all or a subset
+         * of roles the framework (re)registers as.
+         * </pre>
+         */
+        public int getSuppressedRolesCount() {
+          return suppressedRoles_.size();
+        }
+        /**
+         * <code>repeated string suppressed_roles = 2;</code>
+         *
+         * <pre>
+         * List of suppressed roles for which the framework does not wish to be
+         * offered resources. The framework can decide to suppress all or a subset
+         * of roles the framework (re)registers as.
+         * </pre>
+         */
+        public java.lang.String getSuppressedRoles(int index) {
+          return suppressedRoles_.get(index);
+        }
+        /**
+         * <code>repeated string suppressed_roles = 2;</code>
+         *
+         * <pre>
+         * List of suppressed roles for which the framework does not wish to be
+         * offered resources. The framework can decide to suppress all or a subset
+         * of roles the framework (re)registers as.
+         * </pre>
+         */
+        public com.google.protobuf.ByteString
+            getSuppressedRolesBytes(int index) {
+          return suppressedRoles_.getByteString(index);
+        }
+        /**
+         * <code>repeated string suppressed_roles = 2;</code>
+         *
+         * <pre>
+         * List of suppressed roles for which the framework does not wish to be
+         * offered resources. The framework can decide to suppress all or a subset
+         * of roles the framework (re)registers as.
+         * </pre>
+         */
+        public Builder setSuppressedRoles(
+            int index, java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureSuppressedRolesIsMutable();
+          suppressedRoles_.set(index, value);
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>repeated string suppressed_roles = 2;</code>
+         *
+         * <pre>
+         * List of suppressed roles for which the framework does not wish to be
+         * offered resources. The framework can decide to suppress all or a subset
+         * of roles the framework (re)registers as.
+         * </pre>
+         */
+        public Builder addSuppressedRoles(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureSuppressedRolesIsMutable();
+          suppressedRoles_.add(value);
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>repeated string suppressed_roles = 2;</code>
+         *
+         * <pre>
+         * List of suppressed roles for which the framework does not wish to be
+         * offered resources. The framework can decide to suppress all or a subset
+         * of roles the framework (re)registers as.
+         * </pre>
+         */
+        public Builder addAllSuppressedRoles(
+            java.lang.Iterable<java.lang.String> values) {
+          ensureSuppressedRolesIsMutable();
+          super.addAll(values, suppressedRoles_);
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>repeated string suppressed_roles = 2;</code>
+         *
+         * <pre>
+         * List of suppressed roles for which the framework does not wish to be
+         * offered resources. The framework can decide to suppress all or a subset
+         * of roles the framework (re)registers as.
+         * </pre>
+         */
+        public Builder clearSuppressedRoles() {
+          suppressedRoles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+          bitField0_ = (bitField0_ & ~0x00000002);
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>repeated string suppressed_roles = 2;</code>
+         *
+         * <pre>
+         * List of suppressed roles for which the framework does not wish to be
+         * offered resources. The framework can decide to suppress all or a subset
+         * of roles the framework (re)registers as.
+         * </pre>
+         */
+        public Builder addSuppressedRolesBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureSuppressedRolesIsMutable();
+          suppressedRoles_.add(value);
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.scheduler.Call.Subscribe)
+      }
+
+      static {
+        defaultInstance = new Subscribe(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.scheduler.Call.Subscribe)
+    }
+
+    public interface AcceptOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // repeated .mesos.v1.OfferID offer_ids = 1;
+      /**
+       * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+       */
+      java.util.List<org.apache.mesos.v1.Protos.OfferID> 
+          getOfferIdsList();
+      /**
+       * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.OfferID getOfferIds(int index);
+      /**
+       * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+       */
+      int getOfferIdsCount();
+      /**
+       * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+       */
+      java.util.List<? extends org.apache.mesos.v1.Protos.OfferIDOrBuilder> 
+          getOfferIdsOrBuilderList();
+      /**
+       * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.OfferIDOrBuilder getOfferIdsOrBuilder(
+          int index);
+
+      // repeated .mesos.v1.Offer.Operation operations = 2;
+      /**
+       * <code>repeated .mesos.v1.Offer.Operation operations = 2;</code>
+       */
+      java.util.List<org.apache.mesos.v1.Protos.Offer.Operation> 
+          getOperationsList();
+      /**
+       * <code>repeated .mesos.v1.Offer.Operation operations = 2;</code>
+       */
+      org.apache.mesos.v1.Protos.Offer.Operation getOperations(int index);
+      /**
+       * <code>repeated .mesos.v1.Offer.Operation operations = 2;</code>
+       */
+      int getOperationsCount();
+      /**
+       * <code>repeated .mesos.v1.Offer.Operation operations = 2;</code>
+       */
+      java.util.List<? extends org.apache.mesos.v1.Protos.Offer.OperationOrBuilder> 
+          getOperationsOrBuilderList();
+      /**
+       * <code>repeated .mesos.v1.Offer.Operation operations = 2;</code>
+       */
+      org.apache.mesos.v1.Protos.Offer.OperationOrBuilder getOperationsOrBuilder(
+          int index);
+
+      // optional .mesos.v1.Filters filters = 3;
+      /**
+       * <code>optional .mesos.v1.Filters filters = 3;</code>
+       */
+      boolean hasFilters();
+      /**
+       * <code>optional .mesos.v1.Filters filters = 3;</code>
+       */
+      org.apache.mesos.v1.Protos.Filters getFilters();
+      /**
+       * <code>optional .mesos.v1.Filters filters = 3;</code>
+       */
+      org.apache.mesos.v1.Protos.FiltersOrBuilder getFiltersOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.scheduler.Call.Accept}
+     *
+     * <pre>
+     * Accepts an offer, performing the specified operations
+     * in a sequential manner.
+     *
+     * E.g. Launch a task with a newly reserved persistent volume:
+     *
+     *   Accept {
+     *     offer_ids: [ ... ]
+     *     operations: [
+     *       { type: RESERVE,
+     *         reserve: { resources: [ disk(role):2 ] } }
+     *       { type: CREATE,
+     *         create: { volumes: [ disk(role):1+persistence ] } }
+     *       { type: LAUNCH,
+     *         launch: { task_infos ... disk(role):1;disk(role):1+persistence } }
+     *     ]
+     *   }
+     *
+     * Note that any of the offer’s resources not used in the 'Accept'
+     * call (e.g., to launch a task) are considered unused and might be
+     * reoffered to other frameworks. In other words, the same OfferID
+     * cannot be used in more than one 'Accept' call.
+     * </pre>
+     */
+    public static final class Accept extends
+        com.google.protobuf.GeneratedMessage
+        implements AcceptOrBuilder {
+      // Use Accept.newBuilder() to construct.
+      private Accept(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Accept(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Accept defaultInstance;
+      public static Accept getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Accept getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Accept(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                  offerIds_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.OfferID>();
+                  mutable_bitField0_ |= 0x00000001;
+                }
+                offerIds_.add(input.readMessage(org.apache.mesos.v1.Protos.OfferID.PARSER, extensionRegistry));
+                break;
+              }
+              case 18: {
+                if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+                  operations_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Offer.Operation>();
+                  mutable_bitField0_ |= 0x00000002;
+                }
+                operations_.add(input.readMessage(org.apache.mesos.v1.Protos.Offer.Operation.PARSER, extensionRegistry));
+                break;
+              }
+              case 26: {
+                org.apache.mesos.v1.Protos.Filters.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = filters_.toBuilder();
+                }
+                filters_ = input.readMessage(org.apache.mesos.v1.Protos.Filters.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(filters_);
+                  filters_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+            offerIds_ = java.util.Collections.unmodifiableList(offerIds_);
+          }
+          if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+            operations_ = java.util.Collections.unmodifiableList(operations_);
+          }
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Accept_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Accept_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.scheduler.Protos.Call.Accept.class, org.apache.mesos.v1.scheduler.Protos.Call.Accept.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Accept> PARSER =
+          new com.google.protobuf.AbstractParser<Accept>() {
+        public Accept parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Accept(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Accept> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // repeated .mesos.v1.OfferID offer_ids = 1;
+      public static final int OFFER_IDS_FIELD_NUMBER = 1;
+      private java.util.List<org.apache.mesos.v1.Protos.OfferID> offerIds_;
+      /**
+       * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.OfferID> getOfferIdsList() {
+        return offerIds_;
+      }
+      /**
+       * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.OfferIDOrBuilder> 
+          getOfferIdsOrBuilderList() {
+        return offerIds_;
+      }
+      /**
+       * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+       */
+      public int getOfferIdsCount() {
+        return offerIds_.size();
+      }
+      /**
+       * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.OfferID getOfferIds(int index) {
+        return offerIds_.get(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.OfferIDOrBuilder getOfferIdsOrBuilder(
+          int index) {
+        return offerIds_.get(index);
+      }
+
+      // repeated .mesos.v1.Offer.Operation operations = 2;
+      public static final int OPERATIONS_FIELD_NUMBER = 2;
+      private java.util.List<org.apache.mesos.v1.Protos.Offer.Operation> operations_;
+      /**
+       * <code>repeated .mesos.v1.Offer.Operation operations = 2;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Offer.Operation> getOperationsList() {
+        return operations_;
+      }
+      /**
+       * <code>repeated .mesos.v1.Offer.Operation operations = 2;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.Offer.OperationOrBuilder> 
+          getOperationsOrBuilderList() {
+        return operations_;
+      }
+      /**
+       * <code>repeated .mesos.v1.Offer.Operation operations = 2;</code>
+       */
+      public int getOperationsCount() {
+        return operations_.size();
+      }
+      /**
+       * <code>repeated .mesos.v1.Offer.Operation operations = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.Offer.Operation getOperations(int index) {
+        return operations_.get(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.Offer.Operation operations = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.Offer.OperationOrBuilder getOperationsOrBuilder(
+          int index) {
+        return operations_.get(index);
+      }
+
+      // optional .mesos.v1.Filters filters = 3;
+      public static final int FILTERS_FIELD_NUMBER = 3;
+      private org.apache.mesos.v1.Protos.Filters filters_;
+      /**
+       * <code>optional .mesos.v1.Filters filters = 3;</code>
+       */
+      public boolean hasFilters() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.v1.Filters filters = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.Filters getFilters() {
+        return filters_;
+      }
+      /**
+       * <code>optional .mesos.v1.Filters filters = 3;</code>
+       */
+      public org.apache.mesos.v1.Protos.FiltersOrBuilder getFiltersOrBuilder() {
+        return filters_;
+      }
+
+      private void initFields() {
+        offerIds_ = java.util.Collections.emptyList();
+        operations_ = java.util.Collections.emptyList();
+        filters_ = org.apache.mesos.v1.Protos.Filters.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        for (int i = 0; i < getOfferIdsCount(); i++) {
+          if (!getOfferIds(i).isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        for (int i = 0; i < getOperationsCount(); i++) {
+          if (!getOperations(i).isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        for (int i = 0; i < offerIds_.size(); i++) {
+          output.writeMessage(1, offerIds_.get(i));
+        }
+        for (int i = 0; i < operations_.size(); i++) {
+          output.writeMessage(2, operations_.get(i));
+        }
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(3, filters_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        for (int i = 0; i < offerIds_.size(); i++) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, offerIds_.get(i));
+        }
+        for (int i = 0; i < operations_.size(); i++) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(2, operations_.get(i));
+        }
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(3, filters_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Accept parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Accept parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Accept parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Accept parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Accept parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Accept parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Accept parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Accept parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Accept parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Accept parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.scheduler.Protos.Call.Accept prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.scheduler.Call.Accept}
+       *
+       * <pre>
+       * Accepts an offer, performing the specified operations
+       * in a sequential manner.
+       *
+       * E.g. Launch a task with a newly reserved persistent volume:
+       *
+       *   Accept {
+       *     offer_ids: [ ... ]
+       *     operations: [
+       *       { type: RESERVE,
+       *         reserve: { resources: [ disk(role):2 ] } }
+       *       { type: CREATE,
+       *         create: { volumes: [ disk(role):1+persistence ] } }
+       *       { type: LAUNCH,
+       *         launch: { task_infos ... disk(role):1;disk(role):1+persistence } }
+       *     ]
+       *   }
+       *
+       * Note that any of the offer’s resources not used in the 'Accept'
+       * call (e.g., to launch a task) are considered unused and might be
+       * reoffered to other frameworks. In other words, the same OfferID
+       * cannot be used in more than one 'Accept' call.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.scheduler.Protos.Call.AcceptOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Accept_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Accept_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.scheduler.Protos.Call.Accept.class, org.apache.mesos.v1.scheduler.Protos.Call.Accept.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.scheduler.Protos.Call.Accept.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getOfferIdsFieldBuilder();
+            getOperationsFieldBuilder();
+            getFiltersFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (offerIdsBuilder_ == null) {
+            offerIds_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000001);
+          } else {
+            offerIdsBuilder_.clear();
+          }
+          if (operationsBuilder_ == null) {
+            operations_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000002);
+          } else {
+            operationsBuilder_.clear();
+          }
+          if (filtersBuilder_ == null) {
+            filters_ = org.apache.mesos.v1.Protos.Filters.getDefaultInstance();
+          } else {
+            filtersBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Accept_descriptor;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Call.Accept getDefaultInstanceForType() {
+          return org.apache.mesos.v1.scheduler.Protos.Call.Accept.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Call.Accept build() {
+          org.apache.mesos.v1.scheduler.Protos.Call.Accept result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Call.Accept buildPartial() {
+          org.apache.mesos.v1.scheduler.Protos.Call.Accept result = new org.apache.mesos.v1.scheduler.Protos.Call.Accept(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (offerIdsBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              offerIds_ = java.util.Collections.unmodifiableList(offerIds_);
+              bitField0_ = (bitField0_ & ~0x00000001);
+            }
+            result.offerIds_ = offerIds_;
+          } else {
+            result.offerIds_ = offerIdsBuilder_.build();
+          }
+          if (operationsBuilder_ == null) {
+            if (((bitField0_ & 0x00000002) == 0x00000002)) {
+              operations_ = java.util.Collections.unmodifiableList(operations_);
+              bitField0_ = (bitField0_ & ~0x00000002);
+            }
+            result.operations_ = operations_;
+          } else {
+            result.operations_ = operationsBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (filtersBuilder_ == null) {
+            result.filters_ = filters_;
+          } else {
+            result.filters_ = filtersBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.scheduler.Protos.Call.Accept) {
+            return mergeFrom((org.apache.mesos.v1.scheduler.Protos.Call.Accept)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.scheduler.Protos.Call.Accept other) {
+          if (other == org.apache.mesos.v1.scheduler.Protos.Call.Accept.getDefaultInstance()) return this;
+          if (offerIdsBuilder_ == null) {
+            if (!other.offerIds_.isEmpty()) {
+              if (offerIds_.isEmpty()) {
+                offerIds_ = other.offerIds_;
+                bitField0_ = (bitField0_ & ~0x00000001);
+              } else {
+                ensureOfferIdsIsMutable();
+                offerIds_.addAll(other.offerIds_);
+              }
+              onChanged();
+            }
+          } else {
+            if (!other.offerIds_.isEmpty()) {
+              if (offerIdsBuilder_.isEmpty()) {
+                offerIdsBuilder_.dispose();
+                offerIdsBuilder_ = null;
+                offerIds_ = other.offerIds_;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                offerIdsBuilder_ = 
+                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                     getOfferIdsFieldBuilder() : null;
+              } else {
+                offerIdsBuilder_.addAllMessages(other.offerIds_);
+              }
+            }
+          }
+          if (operationsBuilder_ == null) {
+            if (!other.operations_.isEmpty()) {
+              if (operations_.isEmpty()) {
+                operations_ = other.operations_;
+                bitField0_ = (bitField0_ & ~0x00000002);
+              } else {
+                ensureOperationsIsMutable();
+                operations_.addAll(other.operations_);
+              }
+              onChanged();
+            }
+          } else {
+            if (!other.operations_.isEmpty()) {
+              if (operationsBuilder_.isEmpty()) {
+                operationsBuilder_.dispose();
+                operationsBuilder_ = null;
+                operations_ = other.operations_;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                operationsBuilder_ = 
+                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                     getOperationsFieldBuilder() : null;
+              } else {
+                operationsBuilder_.addAllMessages(other.operations_);
+              }
+            }
+          }
+          if (other.hasFilters()) {
+            mergeFilters(other.getFilters());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          for (int i = 0; i < getOfferIdsCount(); i++) {
+            if (!getOfferIds(i).isInitialized()) {
+              
+              return false;
+            }
+          }
+          for (int i = 0; i < getOperationsCount(); i++) {
+            if (!getOperations(i).isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.scheduler.Protos.Call.Accept parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.scheduler.Protos.Call.Accept) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // repeated .mesos.v1.OfferID offer_ids = 1;
+        private java.util.List<org.apache.mesos.v1.Protos.OfferID> offerIds_ =
+          java.util.Collections.emptyList();
+        private void ensureOfferIdsIsMutable() {
+          if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+            offerIds_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.OfferID>(offerIds_);
+            bitField0_ |= 0x00000001;
+           }
+        }
+
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.v1.Protos.OfferID, org.apache.mesos.v1.Protos.OfferID.Builder, org.apache.mesos.v1.Protos.OfferIDOrBuilder> offerIdsBuilder_;
+
+        /**
+         * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.v1.Protos.OfferID> getOfferIdsList() {
+          if (offerIdsBuilder_ == null) {
+            return java.util.Collections.unmodifiableList(offerIds_);
+          } else {
+            return offerIdsBuilder_.getMessageList();
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+         */
+        public int getOfferIdsCount() {
+          if (offerIdsBuilder_ == null) {
+            return offerIds_.size();
+          } else {
+            return offerIdsBuilder_.getCount();
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.OfferID getOfferIds(int index) {
+          if (offerIdsBuilder_ == null) {
+            return offerIds_.get(index);
+          } else {
+            return offerIdsBuilder_.getMessage(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+         */
+        public Builder setOfferIds(
+            int index, org.apache.mesos.v1.Protos.OfferID value) {
+          if (offerIdsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureOfferIdsIsMutable();
+            offerIds_.set(index, value);
+            onChanged();
+          } else {
+            offerIdsBuilder_.setMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+         */
+        public Builder setOfferIds(
+            int index, org.apache.mesos.v1.Protos.OfferID.Builder builderForValue) {
+          if (offerIdsBuilder_ == null) {
+            ensureOfferIdsIsMutable();
+            offerIds_.set(index, builderForValue.build());
+            onChanged();
+          } else {
+            offerIdsBuilder_.setMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+         */
+        public Builder addOfferIds(org.apache.mesos.v1.Protos.OfferID value) {
+          if (offerIdsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureOfferIdsIsMutable();
+            offerIds_.add(value);
+            onChanged();
+          } else {
+            offerIdsBuilder_.addMessage(value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+         */
+        public Builder addOfferIds(
+            int index, org.apache.mesos.v1.Protos.OfferID value) {
+          if (offerIdsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureOfferIdsIsMutable();
+            offerIds_.add(index, value);
+            onChanged();
+          } else {
+            offerIdsBuilder_.addMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+         */
+        public Builder addOfferIds(
+            org.apache.mesos.v1.Protos.OfferID.Builder builderForValue) {
+          if (offerIdsBuilder_ == null) {
+            ensureOfferIdsIsMutable();
+            offerIds_.add(builderForValue.build());
+            onChanged();
+          } else {
+            offerIdsBuilder_.addMessage(builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+         */
+        public Builder addOfferIds(
+            int index, org.apache.mesos.v1.Protos.OfferID.Builder builderForValue) {
+          if (offerIdsBuilder_ == null) {
+            ensureOfferIdsIsMutable();
+            offerIds_.add(index, builderForValue.build());
+            onChanged();
+          } else {
+            offerIdsBuilder_.addMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+         */
+        public Builder addAllOfferIds(
+            java.lang.Iterable<? extends org.apache.mesos.v1.Protos.OfferID> values) {
+          if (offerIdsBuilder_ == null) {
+            ensureOfferIdsIsMutable();
+            super.addAll(values, offerIds_);
+            onChanged();
+          } else {
+            offerIdsBuilder_.addAllMessages(values);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+         */
+        public Builder clearOfferIds() {
+          if (offerIdsBuilder_ == null) {
+            offerIds_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000001);
+            onChanged();
+          } else {
+            offerIdsBuilder_.clear();
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+         */
+        public Builder removeOfferIds(int index) {
+          if (offerIdsBuilder_ == null) {
+            ensureOfferIdsIsMutable();
+            offerIds_.remove(index);
+            onChanged();
+          } else {
+            offerIdsBuilder_.remove(index);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.OfferID.Builder getOfferIdsBuilder(
+            int index) {
+          return getOfferIdsFieldBuilder().getBuilder(index);
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.OfferIDOrBuilder getOfferIdsOrBuilder(
+            int index) {
+          if (offerIdsBuilder_ == null) {
+            return offerIds_.get(index);  } else {
+            return offerIdsBuilder_.getMessageOrBuilder(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.v1.Protos.OfferIDOrBuilder> 
+             getOfferIdsOrBuilderList() {
+          if (offerIdsBuilder_ != null) {
+            return offerIdsBuilder_.getMessageOrBuilderList();
+          } else {
+            return java.util.Collections.unmodifiableList(offerIds_);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.OfferID.Builder addOfferIdsBuilder() {
+          return getOfferIdsFieldBuilder().addBuilder(
+              org.apache.mesos.v1.Protos.OfferID.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.OfferID.Builder addOfferIdsBuilder(
+            int index) {
+          return getOfferIdsFieldBuilder().addBuilder(
+              index, org.apache.mesos.v1.Protos.OfferID.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.v1.Protos.OfferID.Builder> 
+             getOfferIdsBuilderList() {
+          return getOfferIdsFieldBuilder().getBuilderList();
+        }
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.v1.Protos.OfferID, org.apache.mesos.v1.Protos.OfferID.Builder, org.apache.mesos.v1.Protos.OfferIDOrBuilder> 
+            getOfferIdsFieldBuilder() {
+          if (offerIdsBuilder_ == null) {
+            offerIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.v1.Protos.OfferID, org.apache.mesos.v1.Protos.OfferID.Builder, org.apache.mesos.v1.Protos.OfferIDOrBuilder>(
+                    offerIds_,
+                    ((bitField0_ & 0x00000001) == 0x00000001),
+                    getParentForChildren(),
+                    isClean());
+            offerIds_ = null;
+          }
+          return offerIdsBuilder_;
+        }
+
+        // repeated .mesos.v1.Offer.Operation operations = 2;
+        private java.util.List<org.apache.mesos.v1.Protos.Offer.Operation> operations_ =
+          java.util.Collections.emptyList();
+        private void ensureOperationsIsMutable() {
+          if (!((bitField0_ & 0x00000002) == 0x00000002)) {
+            operations_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Offer.Operation>(operations_);
+            bitField0_ |= 0x00000002;
+           }
+        }
+
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.v1.Protos.Offer.Operation, org.apache.mesos.v1.Protos.Offer.Operation.Builder, org.apache.mesos.v1.Protos.Offer.OperationOrBuilder> operationsBuilder_;
+
+        /**
+         * <code>repeated .mesos.v1.Offer.Operation operations = 2;</code>
+         */
+        public java.util.List<org.apache.mesos.v1.Protos.Offer.Operation> getOperationsList() {
+          if (operationsBuilder_ == null) {
+            return java.util.Collections.unmodifiableList(operations_);
+          } else {
+            return operationsBuilder_.getMessageList();
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.Offer.Operation operations = 2;</code>
+         */
+        public int getOperationsCount() {
+          if (operationsBuilder_ == null) {
+            return operations_.size();
+          } else {
+            return operationsBuilder_.getCount();
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.Offer.Operation operations = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.Offer.Operation getOperations(int index) {
+          if (operationsBuilder_ == null) {
+            return operations_.get(index);
+          } else {
+            return operationsBuilder_.getMessage(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.Offer.Operation operations = 2;</code>
+         */
+        public Builder setOperations(
+            int index, org.apache.mesos.v1.Protos.Offer.Operation value) {
+          if (operationsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureOperationsIsMutable();
+            operations_.set(index, value);
+            onChanged();
+          } else {
+            operationsBuilder_.setMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Offer.Operation operations = 2;</code>
+         */
+        public Builder setOperations(
+            int index, org.apache.mesos.v1.Protos.Offer.Operation.Builder builderForValue) {
+          if (operationsBuilder_ == null) {
+            ensureOperationsIsMutable();
+            operations_.set(index, builderForValue.build());
+            onChanged();
+          } else {
+            operationsBuilder_.setMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Offer.Operation operations = 2;</code>
+         */
+        public Builder addOperations(org.apache.mesos.v1.Protos.Offer.Operation value) {
+          if (operationsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureOperationsIsMutable();
+            operations_.add(value);
+            onChanged();
+          } else {
+            operationsBuilder_.addMessage(value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Offer.Operation operations = 2;</code>
+         */
+        public Builder addOperations(
+            int index, org.apache.mesos.v1.Protos.Offer.Operation value) {
+          if (operationsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureOperationsIsMutable();
+            operations_.add(index, value);
+            onChanged();
+          } else {
+            operationsBuilder_.addMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Offer.Operation operations = 2;</code>
+         */
+        public Builder addOperations(
+            org.apache.mesos.v1.Protos.Offer.Operation.Builder builderForValue) {
+          if (operationsBuilder_ == null) {
+            ensureOperationsIsMutable();
+            operations_.add(builderForValue.build());
+            onChanged();
+          } else {
+            operationsBuilder_.addMessage(builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Offer.Operation operations = 2;</code>
+         */
+        public Builder addOperations(
+            int index, org.apache.mesos.v1.Protos.Offer.Operation.Builder builderForValue) {
+          if (operationsBuilder_ == null) {
+            ensureOperationsIsMutable();
+            operations_.add(index, builderForValue.build());
+            onChanged();
+          } else {
+            operationsBuilder_.addMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Offer.Operation operations = 2;</code>
+         */
+        public Builder addAllOperations(
+            java.lang.Iterable<? extends org.apache.mesos.v1.Protos.Offer.Operation> values) {
+          if (operationsBuilder_ == null) {
+            ensureOperationsIsMutable();
+            super.addAll(values, operations_);
+            onChanged();
+          } else {
+            operationsBuilder_.addAllMessages(values);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Offer.Operation operations = 2;</code>
+         */
+        public Builder clearOperations() {
+          if (operationsBuilder_ == null) {
+            operations_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000002);
+            onChanged();
+          } else {
+            operationsBuilder_.clear();
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Offer.Operation operations = 2;</code>
+         */
+        public Builder removeOperations(int index) {
+          if (operationsBuilder_ == null) {
+            ensureOperationsIsMutable();
+            operations_.remove(index);
+            onChanged();
+          } else {
+            operationsBuilder_.remove(index);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Offer.Operation operations = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.Offer.Operation.Builder getOperationsBuilder(
+            int index) {
+          return getOperationsFieldBuilder().getBuilder(index);
+        }
+        /**
+         * <code>repeated .mesos.v1.Offer.Operation operations = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.Offer.OperationOrBuilder getOperationsOrBuilder(
+            int index) {
+          if (operationsBuilder_ == null) {
+            return operations_.get(index);  } else {
+            return operationsBuilder_.getMessageOrBuilder(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.Offer.Operation operations = 2;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.v1.Protos.Offer.OperationOrBuilder> 
+             getOperationsOrBuilderList() {
+          if (operationsBuilder_ != null) {
+            return operationsBuilder_.getMessageOrBuilderList();
+          } else {
+            return java.util.Collections.unmodifiableList(operations_);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.Offer.Operation operations = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.Offer.Operation.Builder addOperationsBuilder() {
+          return getOperationsFieldBuilder().addBuilder(
+              org.apache.mesos.v1.Protos.Offer.Operation.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.v1.Offer.Operation operations = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.Offer.Operation.Builder addOperationsBuilder(
+            int index) {
+          return getOperationsFieldBuilder().addBuilder(
+              index, org.apache.mesos.v1.Protos.Offer.Operation.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.v1.Offer.Operation operations = 2;</code>
+         */
+        public java.util.List<org.apache.mesos.v1.Protos.Offer.Operation.Builder> 
+             getOperationsBuilderList() {
+          return getOperationsFieldBuilder().getBuilderList();
+        }
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.v1.Protos.Offer.Operation, org.apache.mesos.v1.Protos.Offer.Operation.Builder, org.apache.mesos.v1.Protos.Offer.OperationOrBuilder> 
+            getOperationsFieldBuilder() {
+          if (operationsBuilder_ == null) {
+            operationsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.v1.Protos.Offer.Operation, org.apache.mesos.v1.Protos.Offer.Operation.Builder, org.apache.mesos.v1.Protos.Offer.OperationOrBuilder>(
+                    operations_,
+                    ((bitField0_ & 0x00000002) == 0x00000002),
+                    getParentForChildren(),
+                    isClean());
+            operations_ = null;
+          }
+          return operationsBuilder_;
+        }
+
+        // optional .mesos.v1.Filters filters = 3;
+        private org.apache.mesos.v1.Protos.Filters filters_ = org.apache.mesos.v1.Protos.Filters.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Filters, org.apache.mesos.v1.Protos.Filters.Builder, org.apache.mesos.v1.Protos.FiltersOrBuilder> filtersBuilder_;
+        /**
+         * <code>optional .mesos.v1.Filters filters = 3;</code>
+         */
+        public boolean hasFilters() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional .mesos.v1.Filters filters = 3;</code>
+         */
+        public org.apache.mesos.v1.Protos.Filters getFilters() {
+          if (filtersBuilder_ == null) {
+            return filters_;
+          } else {
+            return filtersBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Filters filters = 3;</code>
+         */
+        public Builder setFilters(org.apache.mesos.v1.Protos.Filters value) {
+          if (filtersBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            filters_ = value;
+            onChanged();
+          } else {
+            filtersBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Filters filters = 3;</code>
+         */
+        public Builder setFilters(
+            org.apache.mesos.v1.Protos.Filters.Builder builderForValue) {
+          if (filtersBuilder_ == null) {
+            filters_ = builderForValue.build();
+            onChanged();
+          } else {
+            filtersBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Filters filters = 3;</code>
+         */
+        public Builder mergeFilters(org.apache.mesos.v1.Protos.Filters value) {
+          if (filtersBuilder_ == null) {
+            if (((bitField0_ & 0x00000004) == 0x00000004) &&
+                filters_ != org.apache.mesos.v1.Protos.Filters.getDefaultInstance()) {
+              filters_ =
+                org.apache.mesos.v1.Protos.Filters.newBuilder(filters_).mergeFrom(value).buildPartial();
+            } else {
+              filters_ = value;
+            }
+            onChanged();
+          } else {
+            filtersBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Filters filters = 3;</code>
+         */
+        public Builder clearFilters() {
+          if (filtersBuilder_ == null) {
+            filters_ = org.apache.mesos.v1.Protos.Filters.getDefaultInstance();
+            onChanged();
+          } else {
+            filtersBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Filters filters = 3;</code>
+         */
+        public org.apache.mesos.v1.Protos.Filters.Builder getFiltersBuilder() {
+          bitField0_ |= 0x00000004;
+          onChanged();
+          return getFiltersFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.v1.Filters filters = 3;</code>
+         */
+        public org.apache.mesos.v1.Protos.FiltersOrBuilder getFiltersOrBuilder() {
+          if (filtersBuilder_ != null) {
+            return filtersBuilder_.getMessageOrBuilder();
+          } else {
+            return filters_;
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Filters filters = 3;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Filters, org.apache.mesos.v1.Protos.Filters.Builder, org.apache.mesos.v1.Protos.FiltersOrBuilder> 
+            getFiltersFieldBuilder() {
+          if (filtersBuilder_ == null) {
+            filtersBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.Filters, org.apache.mesos.v1.Protos.Filters.Builder, org.apache.mesos.v1.Protos.FiltersOrBuilder>(
+                    filters_,
+                    getParentForChildren(),
+                    isClean());
+            filters_ = null;
+          }
+          return filtersBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.scheduler.Call.Accept)
+      }
+
+      static {
+        defaultInstance = new Accept(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.scheduler.Call.Accept)
+    }
+
+    public interface DeclineOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // repeated .mesos.v1.OfferID offer_ids = 1;
+      /**
+       * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+       */
+      java.util.List<org.apache.mesos.v1.Protos.OfferID> 
+          getOfferIdsList();
+      /**
+       * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.OfferID getOfferIds(int index);
+      /**
+       * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+       */
+      int getOfferIdsCount();
+      /**
+       * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+       */
+      java.util.List<? extends org.apache.mesos.v1.Protos.OfferIDOrBuilder> 
+          getOfferIdsOrBuilderList();
+      /**
+       * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.OfferIDOrBuilder getOfferIdsOrBuilder(
+          int index);
+
+      // optional .mesos.v1.Filters filters = 2;
+      /**
+       * <code>optional .mesos.v1.Filters filters = 2;</code>
+       */
+      boolean hasFilters();
+      /**
+       * <code>optional .mesos.v1.Filters filters = 2;</code>
+       */
+      org.apache.mesos.v1.Protos.Filters getFilters();
+      /**
+       * <code>optional .mesos.v1.Filters filters = 2;</code>
+       */
+      org.apache.mesos.v1.Protos.FiltersOrBuilder getFiltersOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.scheduler.Call.Decline}
+     *
+     * <pre>
+     * Declines an offer, signaling the master to potentially reoffer
+     * the resources to a different framework. Note that this is same
+     * as sending an Accept call with no operations. See comments on
+     * top of 'Accept' for semantics.
+     * </pre>
+     */
+    public static final class Decline extends
+        com.google.protobuf.GeneratedMessage
+        implements DeclineOrBuilder {
+      // Use Decline.newBuilder() to construct.
+      private Decline(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Decline(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Decline defaultInstance;
+      public static Decline getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Decline getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Decline(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                  offerIds_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.OfferID>();
+                  mutable_bitField0_ |= 0x00000001;
+                }
+                offerIds_.add(input.readMessage(org.apache.mesos.v1.Protos.OfferID.PARSER, extensionRegistry));
+                break;
+              }
+              case 18: {
+                org.apache.mesos.v1.Protos.Filters.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = filters_.toBuilder();
+                }
+                filters_ = input.readMessage(org.apache.mesos.v1.Protos.Filters.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(filters_);
+                  filters_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+            offerIds_ = java.util.Collections.unmodifiableList(offerIds_);
+          }
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Decline_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Decline_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.scheduler.Protos.Call.Decline.class, org.apache.mesos.v1.scheduler.Protos.Call.Decline.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Decline> PARSER =
+          new com.google.protobuf.AbstractParser<Decline>() {
+        public Decline parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Decline(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Decline> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // repeated .mesos.v1.OfferID offer_ids = 1;
+      public static final int OFFER_IDS_FIELD_NUMBER = 1;
+      private java.util.List<org.apache.mesos.v1.Protos.OfferID> offerIds_;
+      /**
+       * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.OfferID> getOfferIdsList() {
+        return offerIds_;
+      }
+      /**
+       * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.OfferIDOrBuilder> 
+          getOfferIdsOrBuilderList() {
+        return offerIds_;
+      }
+      /**
+       * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+       */
+      public int getOfferIdsCount() {
+        return offerIds_.size();
+      }
+      /**
+       * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.OfferID getOfferIds(int index) {
+        return offerIds_.get(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.OfferIDOrBuilder getOfferIdsOrBuilder(
+          int index) {
+        return offerIds_.get(index);
+      }
+
+      // optional .mesos.v1.Filters filters = 2;
+      public static final int FILTERS_FIELD_NUMBER = 2;
+      private org.apache.mesos.v1.Protos.Filters filters_;
+      /**
+       * <code>optional .mesos.v1.Filters filters = 2;</code>
+       */
+      public boolean hasFilters() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.v1.Filters filters = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.Filters getFilters() {
+        return filters_;
+      }
+      /**
+       * <code>optional .mesos.v1.Filters filters = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.FiltersOrBuilder getFiltersOrBuilder() {
+        return filters_;
+      }
+
+      private void initFields() {
+        offerIds_ = java.util.Collections.emptyList();
+        filters_ = org.apache.mesos.v1.Protos.Filters.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        for (int i = 0; i < getOfferIdsCount(); i++) {
+          if (!getOfferIds(i).isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        for (int i = 0; i < offerIds_.size(); i++) {
+          output.writeMessage(1, offerIds_.get(i));
+        }
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(2, filters_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        for (int i = 0; i < offerIds_.size(); i++) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, offerIds_.get(i));
+        }
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(2, filters_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Decline parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Decline parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Decline parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Decline parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Decline parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Decline parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Decline parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Decline parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Decline parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Decline parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.scheduler.Protos.Call.Decline prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.scheduler.Call.Decline}
+       *
+       * <pre>
+       * Declines an offer, signaling the master to potentially reoffer
+       * the resources to a different framework. Note that this is same
+       * as sending an Accept call with no operations. See comments on
+       * top of 'Accept' for semantics.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.scheduler.Protos.Call.DeclineOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Decline_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Decline_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.scheduler.Protos.Call.Decline.class, org.apache.mesos.v1.scheduler.Protos.Call.Decline.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.scheduler.Protos.Call.Decline.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getOfferIdsFieldBuilder();
+            getFiltersFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (offerIdsBuilder_ == null) {
+            offerIds_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000001);
+          } else {
+            offerIdsBuilder_.clear();
+          }
+          if (filtersBuilder_ == null) {
+            filters_ = org.apache.mesos.v1.Protos.Filters.getDefaultInstance();
+          } else {
+            filtersBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Decline_descriptor;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Call.Decline getDefaultInstanceForType() {
+          return org.apache.mesos.v1.scheduler.Protos.Call.Decline.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Call.Decline build() {
+          org.apache.mesos.v1.scheduler.Protos.Call.Decline result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Call.Decline buildPartial() {
+          org.apache.mesos.v1.scheduler.Protos.Call.Decline result = new org.apache.mesos.v1.scheduler.Protos.Call.Decline(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (offerIdsBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              offerIds_ = java.util.Collections.unmodifiableList(offerIds_);
+              bitField0_ = (bitField0_ & ~0x00000001);
+            }
+            result.offerIds_ = offerIds_;
+          } else {
+            result.offerIds_ = offerIdsBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (filtersBuilder_ == null) {
+            result.filters_ = filters_;
+          } else {
+            result.filters_ = filtersBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.scheduler.Protos.Call.Decline) {
+            return mergeFrom((org.apache.mesos.v1.scheduler.Protos.Call.Decline)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.scheduler.Protos.Call.Decline other) {
+          if (other == org.apache.mesos.v1.scheduler.Protos.Call.Decline.getDefaultInstance()) return this;
+          if (offerIdsBuilder_ == null) {
+            if (!other.offerIds_.isEmpty()) {
+              if (offerIds_.isEmpty()) {
+                offerIds_ = other.offerIds_;
+                bitField0_ = (bitField0_ & ~0x00000001);
+              } else {
+                ensureOfferIdsIsMutable();
+                offerIds_.addAll(other.offerIds_);
+              }
+              onChanged();
+            }
+          } else {
+            if (!other.offerIds_.isEmpty()) {
+              if (offerIdsBuilder_.isEmpty()) {
+                offerIdsBuilder_.dispose();
+                offerIdsBuilder_ = null;
+                offerIds_ = other.offerIds_;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                offerIdsBuilder_ = 
+                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                     getOfferIdsFieldBuilder() : null;
+              } else {
+                offerIdsBuilder_.addAllMessages(other.offerIds_);
+              }
+            }
+          }
+          if (other.hasFilters()) {
+            mergeFilters(other.getFilters());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          for (int i = 0; i < getOfferIdsCount(); i++) {
+            if (!getOfferIds(i).isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.scheduler.Protos.Call.Decline parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.scheduler.Protos.Call.Decline) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // repeated .mesos.v1.OfferID offer_ids = 1;
+        private java.util.List<org.apache.mesos.v1.Protos.OfferID> offerIds_ =
+          java.util.Collections.emptyList();
+        private void ensureOfferIdsIsMutable() {
+          if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+            offerIds_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.OfferID>(offerIds_);
+            bitField0_ |= 0x00000001;
+           }
+        }
+
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.v1.Protos.OfferID, org.apache.mesos.v1.Protos.OfferID.Builder, org.apache.mesos.v1.Protos.OfferIDOrBuilder> offerIdsBuilder_;
+
+        /**
+         * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.v1.Protos.OfferID> getOfferIdsList() {
+          if (offerIdsBuilder_ == null) {
+            return java.util.Collections.unmodifiableList(offerIds_);
+          } else {
+            return offerIdsBuilder_.getMessageList();
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+         */
+        public int getOfferIdsCount() {
+          if (offerIdsBuilder_ == null) {
+            return offerIds_.size();
+          } else {
+            return offerIdsBuilder_.getCount();
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.OfferID getOfferIds(int index) {
+          if (offerIdsBuilder_ == null) {
+            return offerIds_.get(index);
+          } else {
+            return offerIdsBuilder_.getMessage(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+         */
+        public Builder setOfferIds(
+            int index, org.apache.mesos.v1.Protos.OfferID value) {
+          if (offerIdsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureOfferIdsIsMutable();
+            offerIds_.set(index, value);
+            onChanged();
+          } else {
+            offerIdsBuilder_.setMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+         */
+        public Builder setOfferIds(
+            int index, org.apache.mesos.v1.Protos.OfferID.Builder builderForValue) {
+          if (offerIdsBuilder_ == null) {
+            ensureOfferIdsIsMutable();
+            offerIds_.set(index, builderForValue.build());
+            onChanged();
+          } else {
+            offerIdsBuilder_.setMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+         */
+        public Builder addOfferIds(org.apache.mesos.v1.Protos.OfferID value) {
+          if (offerIdsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureOfferIdsIsMutable();
+            offerIds_.add(value);
+            onChanged();
+          } else {
+            offerIdsBuilder_.addMessage(value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+         */
+        public Builder addOfferIds(
+            int index, org.apache.mesos.v1.Protos.OfferID value) {
+          if (offerIdsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureOfferIdsIsMutable();
+            offerIds_.add(index, value);
+            onChanged();
+          } else {
+            offerIdsBuilder_.addMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+         */
+        public Builder addOfferIds(
+            org.apache.mesos.v1.Protos.OfferID.Builder builderForValue) {
+          if (offerIdsBuilder_ == null) {
+            ensureOfferIdsIsMutable();
+            offerIds_.add(builderForValue.build());
+            onChanged();
+          } else {
+            offerIdsBuilder_.addMessage(builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+         */
+        public Builder addOfferIds(
+            int index, org.apache.mesos.v1.Protos.OfferID.Builder builderForValue) {
+          if (offerIdsBuilder_ == null) {
+            ensureOfferIdsIsMutable();
+            offerIds_.add(index, builderForValue.build());
+            onChanged();
+          } else {
+            offerIdsBuilder_.addMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+         */
+        public Builder addAllOfferIds(
+            java.lang.Iterable<? extends org.apache.mesos.v1.Protos.OfferID> values) {
+          if (offerIdsBuilder_ == null) {
+            ensureOfferIdsIsMutable();
+            super.addAll(values, offerIds_);
+            onChanged();
+          } else {
+            offerIdsBuilder_.addAllMessages(values);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+         */
+        public Builder clearOfferIds() {
+          if (offerIdsBuilder_ == null) {
+            offerIds_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000001);
+            onChanged();
+          } else {
+            offerIdsBuilder_.clear();
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+         */
+        public Builder removeOfferIds(int index) {
+          if (offerIdsBuilder_ == null) {
+            ensureOfferIdsIsMutable();
+            offerIds_.remove(index);
+            onChanged();
+          } else {
+            offerIdsBuilder_.remove(index);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.OfferID.Builder getOfferIdsBuilder(
+            int index) {
+          return getOfferIdsFieldBuilder().getBuilder(index);
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.OfferIDOrBuilder getOfferIdsOrBuilder(
+            int index) {
+          if (offerIdsBuilder_ == null) {
+            return offerIds_.get(index);  } else {
+            return offerIdsBuilder_.getMessageOrBuilder(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.v1.Protos.OfferIDOrBuilder> 
+             getOfferIdsOrBuilderList() {
+          if (offerIdsBuilder_ != null) {
+            return offerIdsBuilder_.getMessageOrBuilderList();
+          } else {
+            return java.util.Collections.unmodifiableList(offerIds_);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.OfferID.Builder addOfferIdsBuilder() {
+          return getOfferIdsFieldBuilder().addBuilder(
+              org.apache.mesos.v1.Protos.OfferID.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.OfferID.Builder addOfferIdsBuilder(
+            int index) {
+          return getOfferIdsFieldBuilder().addBuilder(
+              index, org.apache.mesos.v1.Protos.OfferID.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID offer_ids = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.v1.Protos.OfferID.Builder> 
+             getOfferIdsBuilderList() {
+          return getOfferIdsFieldBuilder().getBuilderList();
+        }
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.v1.Protos.OfferID, org.apache.mesos.v1.Protos.OfferID.Builder, org.apache.mesos.v1.Protos.OfferIDOrBuilder> 
+            getOfferIdsFieldBuilder() {
+          if (offerIdsBuilder_ == null) {
+            offerIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.v1.Protos.OfferID, org.apache.mesos.v1.Protos.OfferID.Builder, org.apache.mesos.v1.Protos.OfferIDOrBuilder>(
+                    offerIds_,
+                    ((bitField0_ & 0x00000001) == 0x00000001),
+                    getParentForChildren(),
+                    isClean());
+            offerIds_ = null;
+          }
+          return offerIdsBuilder_;
+        }
+
+        // optional .mesos.v1.Filters filters = 2;
+        private org.apache.mesos.v1.Protos.Filters filters_ = org.apache.mesos.v1.Protos.Filters.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Filters, org.apache.mesos.v1.Protos.Filters.Builder, org.apache.mesos.v1.Protos.FiltersOrBuilder> filtersBuilder_;
+        /**
+         * <code>optional .mesos.v1.Filters filters = 2;</code>
+         */
+        public boolean hasFilters() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional .mesos.v1.Filters filters = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.Filters getFilters() {
+          if (filtersBuilder_ == null) {
+            return filters_;
+          } else {
+            return filtersBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Filters filters = 2;</code>
+         */
+        public Builder setFilters(org.apache.mesos.v1.Protos.Filters value) {
+          if (filtersBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            filters_ = value;
+            onChanged();
+          } else {
+            filtersBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Filters filters = 2;</code>
+         */
+        public Builder setFilters(
+            org.apache.mesos.v1.Protos.Filters.Builder builderForValue) {
+          if (filtersBuilder_ == null) {
+            filters_ = builderForValue.build();
+            onChanged();
+          } else {
+            filtersBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Filters filters = 2;</code>
+         */
+        public Builder mergeFilters(org.apache.mesos.v1.Protos.Filters value) {
+          if (filtersBuilder_ == null) {
+            if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                filters_ != org.apache.mesos.v1.Protos.Filters.getDefaultInstance()) {
+              filters_ =
+                org.apache.mesos.v1.Protos.Filters.newBuilder(filters_).mergeFrom(value).buildPartial();
+            } else {
+              filters_ = value;
+            }
+            onChanged();
+          } else {
+            filtersBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Filters filters = 2;</code>
+         */
+        public Builder clearFilters() {
+          if (filtersBuilder_ == null) {
+            filters_ = org.apache.mesos.v1.Protos.Filters.getDefaultInstance();
+            onChanged();
+          } else {
+            filtersBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Filters filters = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.Filters.Builder getFiltersBuilder() {
+          bitField0_ |= 0x00000002;
+          onChanged();
+          return getFiltersFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.v1.Filters filters = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.FiltersOrBuilder getFiltersOrBuilder() {
+          if (filtersBuilder_ != null) {
+            return filtersBuilder_.getMessageOrBuilder();
+          } else {
+            return filters_;
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Filters filters = 2;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Filters, org.apache.mesos.v1.Protos.Filters.Builder, org.apache.mesos.v1.Protos.FiltersOrBuilder> 
+            getFiltersFieldBuilder() {
+          if (filtersBuilder_ == null) {
+            filtersBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.Filters, org.apache.mesos.v1.Protos.Filters.Builder, org.apache.mesos.v1.Protos.FiltersOrBuilder>(
+                    filters_,
+                    getParentForChildren(),
+                    isClean());
+            filters_ = null;
+          }
+          return filtersBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.scheduler.Call.Decline)
+      }
+
+      static {
+        defaultInstance = new Decline(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.scheduler.Call.Decline)
+    }
+
+    public interface AcceptInverseOffersOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // repeated .mesos.v1.OfferID inverse_offer_ids = 1;
+      /**
+       * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+       */
+      java.util.List<org.apache.mesos.v1.Protos.OfferID> 
+          getInverseOfferIdsList();
+      /**
+       * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.OfferID getInverseOfferIds(int index);
+      /**
+       * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+       */
+      int getInverseOfferIdsCount();
+      /**
+       * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+       */
+      java.util.List<? extends org.apache.mesos.v1.Protos.OfferIDOrBuilder> 
+          getInverseOfferIdsOrBuilderList();
+      /**
+       * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.OfferIDOrBuilder getInverseOfferIdsOrBuilder(
+          int index);
+
+      // optional .mesos.v1.Filters filters = 2;
+      /**
+       * <code>optional .mesos.v1.Filters filters = 2;</code>
+       */
+      boolean hasFilters();
+      /**
+       * <code>optional .mesos.v1.Filters filters = 2;</code>
+       */
+      org.apache.mesos.v1.Protos.Filters getFilters();
+      /**
+       * <code>optional .mesos.v1.Filters filters = 2;</code>
+       */
+      org.apache.mesos.v1.Protos.FiltersOrBuilder getFiltersOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.scheduler.Call.AcceptInverseOffers}
+     *
+     * <pre>
+     * Accepts an inverse offer. Inverse offers should only be accepted
+     * if the resources in the offer can be safely evacuated before the
+     * provided unavailability.
+     * </pre>
+     */
+    public static final class AcceptInverseOffers extends
+        com.google.protobuf.GeneratedMessage
+        implements AcceptInverseOffersOrBuilder {
+      // Use AcceptInverseOffers.newBuilder() to construct.
+      private AcceptInverseOffers(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private AcceptInverseOffers(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final AcceptInverseOffers defaultInstance;
+      public static AcceptInverseOffers getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public AcceptInverseOffers getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private AcceptInverseOffers(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                  inverseOfferIds_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.OfferID>();
+                  mutable_bitField0_ |= 0x00000001;
+                }
+                inverseOfferIds_.add(input.readMessage(org.apache.mesos.v1.Protos.OfferID.PARSER, extensionRegistry));
+                break;
+              }
+              case 18: {
+                org.apache.mesos.v1.Protos.Filters.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = filters_.toBuilder();
+                }
+                filters_ = input.readMessage(org.apache.mesos.v1.Protos.Filters.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(filters_);
+                  filters_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+            inverseOfferIds_ = java.util.Collections.unmodifiableList(inverseOfferIds_);
+          }
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_AcceptInverseOffers_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_AcceptInverseOffers_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers.class, org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<AcceptInverseOffers> PARSER =
+          new com.google.protobuf.AbstractParser<AcceptInverseOffers>() {
+        public AcceptInverseOffers parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new AcceptInverseOffers(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<AcceptInverseOffers> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // repeated .mesos.v1.OfferID inverse_offer_ids = 1;
+      public static final int INVERSE_OFFER_IDS_FIELD_NUMBER = 1;
+      private java.util.List<org.apache.mesos.v1.Protos.OfferID> inverseOfferIds_;
+      /**
+       * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.OfferID> getInverseOfferIdsList() {
+        return inverseOfferIds_;
+      }
+      /**
+       * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.OfferIDOrBuilder> 
+          getInverseOfferIdsOrBuilderList() {
+        return inverseOfferIds_;
+      }
+      /**
+       * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+       */
+      public int getInverseOfferIdsCount() {
+        return inverseOfferIds_.size();
+      }
+      /**
+       * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.OfferID getInverseOfferIds(int index) {
+        return inverseOfferIds_.get(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.OfferIDOrBuilder getInverseOfferIdsOrBuilder(
+          int index) {
+        return inverseOfferIds_.get(index);
+      }
+
+      // optional .mesos.v1.Filters filters = 2;
+      public static final int FILTERS_FIELD_NUMBER = 2;
+      private org.apache.mesos.v1.Protos.Filters filters_;
+      /**
+       * <code>optional .mesos.v1.Filters filters = 2;</code>
+       */
+      public boolean hasFilters() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.v1.Filters filters = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.Filters getFilters() {
+        return filters_;
+      }
+      /**
+       * <code>optional .mesos.v1.Filters filters = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.FiltersOrBuilder getFiltersOrBuilder() {
+        return filters_;
+      }
+
+      private void initFields() {
+        inverseOfferIds_ = java.util.Collections.emptyList();
+        filters_ = org.apache.mesos.v1.Protos.Filters.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        for (int i = 0; i < getInverseOfferIdsCount(); i++) {
+          if (!getInverseOfferIds(i).isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        for (int i = 0; i < inverseOfferIds_.size(); i++) {
+          output.writeMessage(1, inverseOfferIds_.get(i));
+        }
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(2, filters_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        for (int i = 0; i < inverseOfferIds_.size(); i++) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, inverseOfferIds_.get(i));
+        }
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(2, filters_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.scheduler.Call.AcceptInverseOffers}
+       *
+       * <pre>
+       * Accepts an inverse offer. Inverse offers should only be accepted
+       * if the resources in the offer can be safely evacuated before the
+       * provided unavailability.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffersOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_AcceptInverseOffers_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_AcceptInverseOffers_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers.class, org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getInverseOfferIdsFieldBuilder();
+            getFiltersFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (inverseOfferIdsBuilder_ == null) {
+            inverseOfferIds_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000001);
+          } else {
+            inverseOfferIdsBuilder_.clear();
+          }
+          if (filtersBuilder_ == null) {
+            filters_ = org.apache.mesos.v1.Protos.Filters.getDefaultInstance();
+          } else {
+            filtersBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_AcceptInverseOffers_descriptor;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers getDefaultInstanceForType() {
+          return org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers build() {
+          org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers buildPartial() {
+          org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers result = new org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (inverseOfferIdsBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              inverseOfferIds_ = java.util.Collections.unmodifiableList(inverseOfferIds_);
+              bitField0_ = (bitField0_ & ~0x00000001);
+            }
+            result.inverseOfferIds_ = inverseOfferIds_;
+          } else {
+            result.inverseOfferIds_ = inverseOfferIdsBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (filtersBuilder_ == null) {
+            result.filters_ = filters_;
+          } else {
+            result.filters_ = filtersBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers) {
+            return mergeFrom((org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers other) {
+          if (other == org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers.getDefaultInstance()) return this;
+          if (inverseOfferIdsBuilder_ == null) {
+            if (!other.inverseOfferIds_.isEmpty()) {
+              if (inverseOfferIds_.isEmpty()) {
+                inverseOfferIds_ = other.inverseOfferIds_;
+                bitField0_ = (bitField0_ & ~0x00000001);
+              } else {
+                ensureInverseOfferIdsIsMutable();
+                inverseOfferIds_.addAll(other.inverseOfferIds_);
+              }
+              onChanged();
+            }
+          } else {
+            if (!other.inverseOfferIds_.isEmpty()) {
+              if (inverseOfferIdsBuilder_.isEmpty()) {
+                inverseOfferIdsBuilder_.dispose();
+                inverseOfferIdsBuilder_ = null;
+                inverseOfferIds_ = other.inverseOfferIds_;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                inverseOfferIdsBuilder_ = 
+                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                     getInverseOfferIdsFieldBuilder() : null;
+              } else {
+                inverseOfferIdsBuilder_.addAllMessages(other.inverseOfferIds_);
+              }
+            }
+          }
+          if (other.hasFilters()) {
+            mergeFilters(other.getFilters());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          for (int i = 0; i < getInverseOfferIdsCount(); i++) {
+            if (!getInverseOfferIds(i).isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // repeated .mesos.v1.OfferID inverse_offer_ids = 1;
+        private java.util.List<org.apache.mesos.v1.Protos.OfferID> inverseOfferIds_ =
+          java.util.Collections.emptyList();
+        private void ensureInverseOfferIdsIsMutable() {
+          if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+            inverseOfferIds_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.OfferID>(inverseOfferIds_);
+            bitField0_ |= 0x00000001;
+           }
+        }
+
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.v1.Protos.OfferID, org.apache.mesos.v1.Protos.OfferID.Builder, org.apache.mesos.v1.Protos.OfferIDOrBuilder> inverseOfferIdsBuilder_;
+
+        /**
+         * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.v1.Protos.OfferID> getInverseOfferIdsList() {
+          if (inverseOfferIdsBuilder_ == null) {
+            return java.util.Collections.unmodifiableList(inverseOfferIds_);
+          } else {
+            return inverseOfferIdsBuilder_.getMessageList();
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+         */
+        public int getInverseOfferIdsCount() {
+          if (inverseOfferIdsBuilder_ == null) {
+            return inverseOfferIds_.size();
+          } else {
+            return inverseOfferIdsBuilder_.getCount();
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.OfferID getInverseOfferIds(int index) {
+          if (inverseOfferIdsBuilder_ == null) {
+            return inverseOfferIds_.get(index);
+          } else {
+            return inverseOfferIdsBuilder_.getMessage(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+         */
+        public Builder setInverseOfferIds(
+            int index, org.apache.mesos.v1.Protos.OfferID value) {
+          if (inverseOfferIdsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureInverseOfferIdsIsMutable();
+            inverseOfferIds_.set(index, value);
+            onChanged();
+          } else {
+            inverseOfferIdsBuilder_.setMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+         */
+        public Builder setInverseOfferIds(
+            int index, org.apache.mesos.v1.Protos.OfferID.Builder builderForValue) {
+          if (inverseOfferIdsBuilder_ == null) {
+            ensureInverseOfferIdsIsMutable();
+            inverseOfferIds_.set(index, builderForValue.build());
+            onChanged();
+          } else {
+            inverseOfferIdsBuilder_.setMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+         */
+        public Builder addInverseOfferIds(org.apache.mesos.v1.Protos.OfferID value) {
+          if (inverseOfferIdsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureInverseOfferIdsIsMutable();
+            inverseOfferIds_.add(value);
+            onChanged();
+          } else {
+            inverseOfferIdsBuilder_.addMessage(value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+         */
+        public Builder addInverseOfferIds(
+            int index, org.apache.mesos.v1.Protos.OfferID value) {
+          if (inverseOfferIdsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureInverseOfferIdsIsMutable();
+            inverseOfferIds_.add(index, value);
+            onChanged();
+          } else {
+            inverseOfferIdsBuilder_.addMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+         */
+        public Builder addInverseOfferIds(
+            org.apache.mesos.v1.Protos.OfferID.Builder builderForValue) {
+          if (inverseOfferIdsBuilder_ == null) {
+            ensureInverseOfferIdsIsMutable();
+            inverseOfferIds_.add(builderForValue.build());
+            onChanged();
+          } else {
+            inverseOfferIdsBuilder_.addMessage(builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+         */
+        public Builder addInverseOfferIds(
+            int index, org.apache.mesos.v1.Protos.OfferID.Builder builderForValue) {
+          if (inverseOfferIdsBuilder_ == null) {
+            ensureInverseOfferIdsIsMutable();
+            inverseOfferIds_.add(index, builderForValue.build());
+            onChanged();
+          } else {
+            inverseOfferIdsBuilder_.addMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+         */
+        public Builder addAllInverseOfferIds(
+            java.lang.Iterable<? extends org.apache.mesos.v1.Protos.OfferID> values) {
+          if (inverseOfferIdsBuilder_ == null) {
+            ensureInverseOfferIdsIsMutable();
+            super.addAll(values, inverseOfferIds_);
+            onChanged();
+          } else {
+            inverseOfferIdsBuilder_.addAllMessages(values);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+         */
+        public Builder clearInverseOfferIds() {
+          if (inverseOfferIdsBuilder_ == null) {
+            inverseOfferIds_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000001);
+            onChanged();
+          } else {
+            inverseOfferIdsBuilder_.clear();
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+         */
+        public Builder removeInverseOfferIds(int index) {
+          if (inverseOfferIdsBuilder_ == null) {
+            ensureInverseOfferIdsIsMutable();
+            inverseOfferIds_.remove(index);
+            onChanged();
+          } else {
+            inverseOfferIdsBuilder_.remove(index);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.OfferID.Builder getInverseOfferIdsBuilder(
+            int index) {
+          return getInverseOfferIdsFieldBuilder().getBuilder(index);
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.OfferIDOrBuilder getInverseOfferIdsOrBuilder(
+            int index) {
+          if (inverseOfferIdsBuilder_ == null) {
+            return inverseOfferIds_.get(index);  } else {
+            return inverseOfferIdsBuilder_.getMessageOrBuilder(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.v1.Protos.OfferIDOrBuilder> 
+             getInverseOfferIdsOrBuilderList() {
+          if (inverseOfferIdsBuilder_ != null) {
+            return inverseOfferIdsBuilder_.getMessageOrBuilderList();
+          } else {
+            return java.util.Collections.unmodifiableList(inverseOfferIds_);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.OfferID.Builder addInverseOfferIdsBuilder() {
+          return getInverseOfferIdsFieldBuilder().addBuilder(
+              org.apache.mesos.v1.Protos.OfferID.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.OfferID.Builder addInverseOfferIdsBuilder(
+            int index) {
+          return getInverseOfferIdsFieldBuilder().addBuilder(
+              index, org.apache.mesos.v1.Protos.OfferID.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.v1.Protos.OfferID.Builder> 
+             getInverseOfferIdsBuilderList() {
+          return getInverseOfferIdsFieldBuilder().getBuilderList();
+        }
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.v1.Protos.OfferID, org.apache.mesos.v1.Protos.OfferID.Builder, org.apache.mesos.v1.Protos.OfferIDOrBuilder> 
+            getInverseOfferIdsFieldBuilder() {
+          if (inverseOfferIdsBuilder_ == null) {
+            inverseOfferIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.v1.Protos.OfferID, org.apache.mesos.v1.Protos.OfferID.Builder, org.apache.mesos.v1.Protos.OfferIDOrBuilder>(
+                    inverseOfferIds_,
+                    ((bitField0_ & 0x00000001) == 0x00000001),
+                    getParentForChildren(),
+                    isClean());
+            inverseOfferIds_ = null;
+          }
+          return inverseOfferIdsBuilder_;
+        }
+
+        // optional .mesos.v1.Filters filters = 2;
+        private org.apache.mesos.v1.Protos.Filters filters_ = org.apache.mesos.v1.Protos.Filters.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Filters, org.apache.mesos.v1.Protos.Filters.Builder, org.apache.mesos.v1.Protos.FiltersOrBuilder> filtersBuilder_;
+        /**
+         * <code>optional .mesos.v1.Filters filters = 2;</code>
+         */
+        public boolean hasFilters() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional .mesos.v1.Filters filters = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.Filters getFilters() {
+          if (filtersBuilder_ == null) {
+            return filters_;
+          } else {
+            return filtersBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Filters filters = 2;</code>
+         */
+        public Builder setFilters(org.apache.mesos.v1.Protos.Filters value) {
+          if (filtersBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            filters_ = value;
+            onChanged();
+          } else {
+            filtersBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Filters filters = 2;</code>
+         */
+        public Builder setFilters(
+            org.apache.mesos.v1.Protos.Filters.Builder builderForValue) {
+          if (filtersBuilder_ == null) {
+            filters_ = builderForValue.build();
+            onChanged();
+          } else {
+            filtersBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Filters filters = 2;</code>
+         */
+        public Builder mergeFilters(org.apache.mesos.v1.Protos.Filters value) {
+          if (filtersBuilder_ == null) {
+            if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                filters_ != org.apache.mesos.v1.Protos.Filters.getDefaultInstance()) {
+              filters_ =
+                org.apache.mesos.v1.Protos.Filters.newBuilder(filters_).mergeFrom(value).buildPartial();
+            } else {
+              filters_ = value;
+            }
+            onChanged();
+          } else {
+            filtersBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Filters filters = 2;</code>
+         */
+        public Builder clearFilters() {
+          if (filtersBuilder_ == null) {
+            filters_ = org.apache.mesos.v1.Protos.Filters.getDefaultInstance();
+            onChanged();
+          } else {
+            filtersBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Filters filters = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.Filters.Builder getFiltersBuilder() {
+          bitField0_ |= 0x00000002;
+          onChanged();
+          return getFiltersFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.v1.Filters filters = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.FiltersOrBuilder getFiltersOrBuilder() {
+          if (filtersBuilder_ != null) {
+            return filtersBuilder_.getMessageOrBuilder();
+          } else {
+            return filters_;
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Filters filters = 2;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Filters, org.apache.mesos.v1.Protos.Filters.Builder, org.apache.mesos.v1.Protos.FiltersOrBuilder> 
+            getFiltersFieldBuilder() {
+          if (filtersBuilder_ == null) {
+            filtersBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.Filters, org.apache.mesos.v1.Protos.Filters.Builder, org.apache.mesos.v1.Protos.FiltersOrBuilder>(
+                    filters_,
+                    getParentForChildren(),
+                    isClean());
+            filters_ = null;
+          }
+          return filtersBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.scheduler.Call.AcceptInverseOffers)
+      }
+
+      static {
+        defaultInstance = new AcceptInverseOffers(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.scheduler.Call.AcceptInverseOffers)
+    }
+
+    public interface DeclineInverseOffersOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // repeated .mesos.v1.OfferID inverse_offer_ids = 1;
+      /**
+       * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+       */
+      java.util.List<org.apache.mesos.v1.Protos.OfferID> 
+          getInverseOfferIdsList();
+      /**
+       * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.OfferID getInverseOfferIds(int index);
+      /**
+       * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+       */
+      int getInverseOfferIdsCount();
+      /**
+       * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+       */
+      java.util.List<? extends org.apache.mesos.v1.Protos.OfferIDOrBuilder> 
+          getInverseOfferIdsOrBuilderList();
+      /**
+       * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.OfferIDOrBuilder getInverseOfferIdsOrBuilder(
+          int index);
+
+      // optional .mesos.v1.Filters filters = 2;
+      /**
+       * <code>optional .mesos.v1.Filters filters = 2;</code>
+       */
+      boolean hasFilters();
+      /**
+       * <code>optional .mesos.v1.Filters filters = 2;</code>
+       */
+      org.apache.mesos.v1.Protos.Filters getFilters();
+      /**
+       * <code>optional .mesos.v1.Filters filters = 2;</code>
+       */
+      org.apache.mesos.v1.Protos.FiltersOrBuilder getFiltersOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.scheduler.Call.DeclineInverseOffers}
+     *
+     * <pre>
+     * Declines an inverse offer. Inverse offers should be declined if
+     * the resources in the offer might not be safely evacuated before
+     * the provided unavailability.
+     * </pre>
+     */
+    public static final class DeclineInverseOffers extends
+        com.google.protobuf.GeneratedMessage
+        implements DeclineInverseOffersOrBuilder {
+      // Use DeclineInverseOffers.newBuilder() to construct.
+      private DeclineInverseOffers(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private DeclineInverseOffers(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final DeclineInverseOffers defaultInstance;
+      public static DeclineInverseOffers getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public DeclineInverseOffers getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private DeclineInverseOffers(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                  inverseOfferIds_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.OfferID>();
+                  mutable_bitField0_ |= 0x00000001;
+                }
+                inverseOfferIds_.add(input.readMessage(org.apache.mesos.v1.Protos.OfferID.PARSER, extensionRegistry));
+                break;
+              }
+              case 18: {
+                org.apache.mesos.v1.Protos.Filters.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = filters_.toBuilder();
+                }
+                filters_ = input.readMessage(org.apache.mesos.v1.Protos.Filters.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(filters_);
+                  filters_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+            inverseOfferIds_ = java.util.Collections.unmodifiableList(inverseOfferIds_);
+          }
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_DeclineInverseOffers_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_DeclineInverseOffers_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers.class, org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<DeclineInverseOffers> PARSER =
+          new com.google.protobuf.AbstractParser<DeclineInverseOffers>() {
+        public DeclineInverseOffers parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new DeclineInverseOffers(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<DeclineInverseOffers> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // repeated .mesos.v1.OfferID inverse_offer_ids = 1;
+      public static final int INVERSE_OFFER_IDS_FIELD_NUMBER = 1;
+      private java.util.List<org.apache.mesos.v1.Protos.OfferID> inverseOfferIds_;
+      /**
+       * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.OfferID> getInverseOfferIdsList() {
+        return inverseOfferIds_;
+      }
+      /**
+       * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.OfferIDOrBuilder> 
+          getInverseOfferIdsOrBuilderList() {
+        return inverseOfferIds_;
+      }
+      /**
+       * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+       */
+      public int getInverseOfferIdsCount() {
+        return inverseOfferIds_.size();
+      }
+      /**
+       * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.OfferID getInverseOfferIds(int index) {
+        return inverseOfferIds_.get(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.OfferIDOrBuilder getInverseOfferIdsOrBuilder(
+          int index) {
+        return inverseOfferIds_.get(index);
+      }
+
+      // optional .mesos.v1.Filters filters = 2;
+      public static final int FILTERS_FIELD_NUMBER = 2;
+      private org.apache.mesos.v1.Protos.Filters filters_;
+      /**
+       * <code>optional .mesos.v1.Filters filters = 2;</code>
+       */
+      public boolean hasFilters() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.v1.Filters filters = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.Filters getFilters() {
+        return filters_;
+      }
+      /**
+       * <code>optional .mesos.v1.Filters filters = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.FiltersOrBuilder getFiltersOrBuilder() {
+        return filters_;
+      }
+
+      private void initFields() {
+        inverseOfferIds_ = java.util.Collections.emptyList();
+        filters_ = org.apache.mesos.v1.Protos.Filters.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        for (int i = 0; i < getInverseOfferIdsCount(); i++) {
+          if (!getInverseOfferIds(i).isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        for (int i = 0; i < inverseOfferIds_.size(); i++) {
+          output.writeMessage(1, inverseOfferIds_.get(i));
+        }
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(2, filters_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        for (int i = 0; i < inverseOfferIds_.size(); i++) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, inverseOfferIds_.get(i));
+        }
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(2, filters_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.scheduler.Call.DeclineInverseOffers}
+       *
+       * <pre>
+       * Declines an inverse offer. Inverse offers should be declined if
+       * the resources in the offer might not be safely evacuated before
+       * the provided unavailability.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffersOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_DeclineInverseOffers_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_DeclineInverseOffers_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers.class, org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getInverseOfferIdsFieldBuilder();
+            getFiltersFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (inverseOfferIdsBuilder_ == null) {
+            inverseOfferIds_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000001);
+          } else {
+            inverseOfferIdsBuilder_.clear();
+          }
+          if (filtersBuilder_ == null) {
+            filters_ = org.apache.mesos.v1.Protos.Filters.getDefaultInstance();
+          } else {
+            filtersBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_DeclineInverseOffers_descriptor;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers getDefaultInstanceForType() {
+          return org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers build() {
+          org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers buildPartial() {
+          org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers result = new org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (inverseOfferIdsBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              inverseOfferIds_ = java.util.Collections.unmodifiableList(inverseOfferIds_);
+              bitField0_ = (bitField0_ & ~0x00000001);
+            }
+            result.inverseOfferIds_ = inverseOfferIds_;
+          } else {
+            result.inverseOfferIds_ = inverseOfferIdsBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (filtersBuilder_ == null) {
+            result.filters_ = filters_;
+          } else {
+            result.filters_ = filtersBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers) {
+            return mergeFrom((org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers other) {
+          if (other == org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers.getDefaultInstance()) return this;
+          if (inverseOfferIdsBuilder_ == null) {
+            if (!other.inverseOfferIds_.isEmpty()) {
+              if (inverseOfferIds_.isEmpty()) {
+                inverseOfferIds_ = other.inverseOfferIds_;
+                bitField0_ = (bitField0_ & ~0x00000001);
+              } else {
+                ensureInverseOfferIdsIsMutable();
+                inverseOfferIds_.addAll(other.inverseOfferIds_);
+              }
+              onChanged();
+            }
+          } else {
+            if (!other.inverseOfferIds_.isEmpty()) {
+              if (inverseOfferIdsBuilder_.isEmpty()) {
+                inverseOfferIdsBuilder_.dispose();
+                inverseOfferIdsBuilder_ = null;
+                inverseOfferIds_ = other.inverseOfferIds_;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                inverseOfferIdsBuilder_ = 
+                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                     getInverseOfferIdsFieldBuilder() : null;
+              } else {
+                inverseOfferIdsBuilder_.addAllMessages(other.inverseOfferIds_);
+              }
+            }
+          }
+          if (other.hasFilters()) {
+            mergeFilters(other.getFilters());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          for (int i = 0; i < getInverseOfferIdsCount(); i++) {
+            if (!getInverseOfferIds(i).isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // repeated .mesos.v1.OfferID inverse_offer_ids = 1;
+        private java.util.List<org.apache.mesos.v1.Protos.OfferID> inverseOfferIds_ =
+          java.util.Collections.emptyList();
+        private void ensureInverseOfferIdsIsMutable() {
+          if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+            inverseOfferIds_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.OfferID>(inverseOfferIds_);
+            bitField0_ |= 0x00000001;
+           }
+        }
+
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.v1.Protos.OfferID, org.apache.mesos.v1.Protos.OfferID.Builder, org.apache.mesos.v1.Protos.OfferIDOrBuilder> inverseOfferIdsBuilder_;
+
+        /**
+         * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.v1.Protos.OfferID> getInverseOfferIdsList() {
+          if (inverseOfferIdsBuilder_ == null) {
+            return java.util.Collections.unmodifiableList(inverseOfferIds_);
+          } else {
+            return inverseOfferIdsBuilder_.getMessageList();
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+         */
+        public int getInverseOfferIdsCount() {
+          if (inverseOfferIdsBuilder_ == null) {
+            return inverseOfferIds_.size();
+          } else {
+            return inverseOfferIdsBuilder_.getCount();
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.OfferID getInverseOfferIds(int index) {
+          if (inverseOfferIdsBuilder_ == null) {
+            return inverseOfferIds_.get(index);
+          } else {
+            return inverseOfferIdsBuilder_.getMessage(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+         */
+        public Builder setInverseOfferIds(
+            int index, org.apache.mesos.v1.Protos.OfferID value) {
+          if (inverseOfferIdsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureInverseOfferIdsIsMutable();
+            inverseOfferIds_.set(index, value);
+            onChanged();
+          } else {
+            inverseOfferIdsBuilder_.setMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+         */
+        public Builder setInverseOfferIds(
+            int index, org.apache.mesos.v1.Protos.OfferID.Builder builderForValue) {
+          if (inverseOfferIdsBuilder_ == null) {
+            ensureInverseOfferIdsIsMutable();
+            inverseOfferIds_.set(index, builderForValue.build());
+            onChanged();
+          } else {
+            inverseOfferIdsBuilder_.setMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+         */
+        public Builder addInverseOfferIds(org.apache.mesos.v1.Protos.OfferID value) {
+          if (inverseOfferIdsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureInverseOfferIdsIsMutable();
+            inverseOfferIds_.add(value);
+            onChanged();
+          } else {
+            inverseOfferIdsBuilder_.addMessage(value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+         */
+        public Builder addInverseOfferIds(
+            int index, org.apache.mesos.v1.Protos.OfferID value) {
+          if (inverseOfferIdsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureInverseOfferIdsIsMutable();
+            inverseOfferIds_.add(index, value);
+            onChanged();
+          } else {
+            inverseOfferIdsBuilder_.addMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+         */
+        public Builder addInverseOfferIds(
+            org.apache.mesos.v1.Protos.OfferID.Builder builderForValue) {
+          if (inverseOfferIdsBuilder_ == null) {
+            ensureInverseOfferIdsIsMutable();
+            inverseOfferIds_.add(builderForValue.build());
+            onChanged();
+          } else {
+            inverseOfferIdsBuilder_.addMessage(builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+         */
+        public Builder addInverseOfferIds(
+            int index, org.apache.mesos.v1.Protos.OfferID.Builder builderForValue) {
+          if (inverseOfferIdsBuilder_ == null) {
+            ensureInverseOfferIdsIsMutable();
+            inverseOfferIds_.add(index, builderForValue.build());
+            onChanged();
+          } else {
+            inverseOfferIdsBuilder_.addMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+         */
+        public Builder addAllInverseOfferIds(
+            java.lang.Iterable<? extends org.apache.mesos.v1.Protos.OfferID> values) {
+          if (inverseOfferIdsBuilder_ == null) {
+            ensureInverseOfferIdsIsMutable();
+            super.addAll(values, inverseOfferIds_);
+            onChanged();
+          } else {
+            inverseOfferIdsBuilder_.addAllMessages(values);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+         */
+        public Builder clearInverseOfferIds() {
+          if (inverseOfferIdsBuilder_ == null) {
+            inverseOfferIds_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000001);
+            onChanged();
+          } else {
+            inverseOfferIdsBuilder_.clear();
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+         */
+        public Builder removeInverseOfferIds(int index) {
+          if (inverseOfferIdsBuilder_ == null) {
+            ensureInverseOfferIdsIsMutable();
+            inverseOfferIds_.remove(index);
+            onChanged();
+          } else {
+            inverseOfferIdsBuilder_.remove(index);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.OfferID.Builder getInverseOfferIdsBuilder(
+            int index) {
+          return getInverseOfferIdsFieldBuilder().getBuilder(index);
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.OfferIDOrBuilder getInverseOfferIdsOrBuilder(
+            int index) {
+          if (inverseOfferIdsBuilder_ == null) {
+            return inverseOfferIds_.get(index);  } else {
+            return inverseOfferIdsBuilder_.getMessageOrBuilder(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.v1.Protos.OfferIDOrBuilder> 
+             getInverseOfferIdsOrBuilderList() {
+          if (inverseOfferIdsBuilder_ != null) {
+            return inverseOfferIdsBuilder_.getMessageOrBuilderList();
+          } else {
+            return java.util.Collections.unmodifiableList(inverseOfferIds_);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.OfferID.Builder addInverseOfferIdsBuilder() {
+          return getInverseOfferIdsFieldBuilder().addBuilder(
+              org.apache.mesos.v1.Protos.OfferID.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.OfferID.Builder addInverseOfferIdsBuilder(
+            int index) {
+          return getInverseOfferIdsFieldBuilder().addBuilder(
+              index, org.apache.mesos.v1.Protos.OfferID.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.v1.OfferID inverse_offer_ids = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.v1.Protos.OfferID.Builder> 
+             getInverseOfferIdsBuilderList() {
+          return getInverseOfferIdsFieldBuilder().getBuilderList();
+        }
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.v1.Protos.OfferID, org.apache.mesos.v1.Protos.OfferID.Builder, org.apache.mesos.v1.Protos.OfferIDOrBuilder> 
+            getInverseOfferIdsFieldBuilder() {
+          if (inverseOfferIdsBuilder_ == null) {
+            inverseOfferIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.v1.Protos.OfferID, org.apache.mesos.v1.Protos.OfferID.Builder, org.apache.mesos.v1.Protos.OfferIDOrBuilder>(
+                    inverseOfferIds_,
+                    ((bitField0_ & 0x00000001) == 0x00000001),
+                    getParentForChildren(),
+                    isClean());
+            inverseOfferIds_ = null;
+          }
+          return inverseOfferIdsBuilder_;
+        }
+
+        // optional .mesos.v1.Filters filters = 2;
+        private org.apache.mesos.v1.Protos.Filters filters_ = org.apache.mesos.v1.Protos.Filters.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Filters, org.apache.mesos.v1.Protos.Filters.Builder, org.apache.mesos.v1.Protos.FiltersOrBuilder> filtersBuilder_;
+        /**
+         * <code>optional .mesos.v1.Filters filters = 2;</code>
+         */
+        public boolean hasFilters() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional .mesos.v1.Filters filters = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.Filters getFilters() {
+          if (filtersBuilder_ == null) {
+            return filters_;
+          } else {
+            return filtersBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Filters filters = 2;</code>
+         */
+        public Builder setFilters(org.apache.mesos.v1.Protos.Filters value) {
+          if (filtersBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            filters_ = value;
+            onChanged();
+          } else {
+            filtersBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Filters filters = 2;</code>
+         */
+        public Builder setFilters(
+            org.apache.mesos.v1.Protos.Filters.Builder builderForValue) {
+          if (filtersBuilder_ == null) {
+            filters_ = builderForValue.build();
+            onChanged();
+          } else {
+            filtersBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Filters filters = 2;</code>
+         */
+        public Builder mergeFilters(org.apache.mesos.v1.Protos.Filters value) {
+          if (filtersBuilder_ == null) {
+            if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                filters_ != org.apache.mesos.v1.Protos.Filters.getDefaultInstance()) {
+              filters_ =
+                org.apache.mesos.v1.Protos.Filters.newBuilder(filters_).mergeFrom(value).buildPartial();
+            } else {
+              filters_ = value;
+            }
+            onChanged();
+          } else {
+            filtersBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Filters filters = 2;</code>
+         */
+        public Builder clearFilters() {
+          if (filtersBuilder_ == null) {
+            filters_ = org.apache.mesos.v1.Protos.Filters.getDefaultInstance();
+            onChanged();
+          } else {
+            filtersBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.Filters filters = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.Filters.Builder getFiltersBuilder() {
+          bitField0_ |= 0x00000002;
+          onChanged();
+          return getFiltersFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.v1.Filters filters = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.FiltersOrBuilder getFiltersOrBuilder() {
+          if (filtersBuilder_ != null) {
+            return filtersBuilder_.getMessageOrBuilder();
+          } else {
+            return filters_;
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.Filters filters = 2;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.Filters, org.apache.mesos.v1.Protos.Filters.Builder, org.apache.mesos.v1.Protos.FiltersOrBuilder> 
+            getFiltersFieldBuilder() {
+          if (filtersBuilder_ == null) {
+            filtersBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.Filters, org.apache.mesos.v1.Protos.Filters.Builder, org.apache.mesos.v1.Protos.FiltersOrBuilder>(
+                    filters_,
+                    getParentForChildren(),
+                    isClean());
+            filters_ = null;
+          }
+          return filtersBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.scheduler.Call.DeclineInverseOffers)
+      }
+
+      static {
+        defaultInstance = new DeclineInverseOffers(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.scheduler.Call.DeclineInverseOffers)
+    }
+
+    public interface ReviveOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // repeated string roles = 1;
+      /**
+       * <code>repeated string roles = 1;</code>
+       */
+      java.util.List<java.lang.String>
+      getRolesList();
+      /**
+       * <code>repeated string roles = 1;</code>
+       */
+      int getRolesCount();
+      /**
+       * <code>repeated string roles = 1;</code>
+       */
+      java.lang.String getRoles(int index);
+      /**
+       * <code>repeated string roles = 1;</code>
+       */
+      com.google.protobuf.ByteString
+          getRolesBytes(int index);
+    }
+    /**
+     * Protobuf type {@code mesos.v1.scheduler.Call.Revive}
+     *
+     * <pre>
+     * Revive offers for the specified roles. If `roles` is empty,
+     * the `REVIVE` call will revive offers for all of the roles
+     * the framework is currently subscribed to.
+     * </pre>
+     */
+    public static final class Revive extends
+        com.google.protobuf.GeneratedMessage
+        implements ReviveOrBuilder {
+      // Use Revive.newBuilder() to construct.
+      private Revive(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Revive(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Revive defaultInstance;
+      public static Revive getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Revive getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Revive(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                  roles_ = new com.google.protobuf.LazyStringArrayList();
+                  mutable_bitField0_ |= 0x00000001;
+                }
+                roles_.add(input.readBytes());
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+            roles_ = new com.google.protobuf.UnmodifiableLazyStringList(roles_);
+          }
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Revive_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Revive_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.scheduler.Protos.Call.Revive.class, org.apache.mesos.v1.scheduler.Protos.Call.Revive.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Revive> PARSER =
+          new com.google.protobuf.AbstractParser<Revive>() {
+        public Revive parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Revive(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Revive> getParserForType() {
+        return PARSER;
+      }
+
+      // repeated string roles = 1;
+      public static final int ROLES_FIELD_NUMBER = 1;
+      private com.google.protobuf.LazyStringList roles_;
+      /**
+       * <code>repeated string roles = 1;</code>
+       */
+      public java.util.List<java.lang.String>
+          getRolesList() {
+        return roles_;
+      }
+      /**
+       * <code>repeated string roles = 1;</code>
+       */
+      public int getRolesCount() {
+        return roles_.size();
+      }
+      /**
+       * <code>repeated string roles = 1;</code>
+       */
+      public java.lang.String getRoles(int index) {
+        return roles_.get(index);
+      }
+      /**
+       * <code>repeated string roles = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getRolesBytes(int index) {
+        return roles_.getByteString(index);
+      }
+
+      private void initFields() {
+        roles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        for (int i = 0; i < roles_.size(); i++) {
+          output.writeBytes(1, roles_.getByteString(i));
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        {
+          int dataSize = 0;
+          for (int i = 0; i < roles_.size(); i++) {
+            dataSize += com.google.protobuf.CodedOutputStream
+              .computeBytesSizeNoTag(roles_.getByteString(i));
+          }
+          size += dataSize;
+          size += 1 * getRolesList().size();
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Revive parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Revive parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Revive parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Revive parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Revive parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Revive parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Revive parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Revive parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Revive parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Revive parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.scheduler.Protos.Call.Revive prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.scheduler.Call.Revive}
+       *
+       * <pre>
+       * Revive offers for the specified roles. If `roles` is empty,
+       * the `REVIVE` call will revive offers for all of the roles
+       * the framework is currently subscribed to.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.scheduler.Protos.Call.ReviveOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Revive_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Revive_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.scheduler.Protos.Call.Revive.class, org.apache.mesos.v1.scheduler.Protos.Call.Revive.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.scheduler.Protos.Call.Revive.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          roles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Revive_descriptor;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Call.Revive getDefaultInstanceForType() {
+          return org.apache.mesos.v1.scheduler.Protos.Call.Revive.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Call.Revive build() {
+          org.apache.mesos.v1.scheduler.Protos.Call.Revive result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Call.Revive buildPartial() {
+          org.apache.mesos.v1.scheduler.Protos.Call.Revive result = new org.apache.mesos.v1.scheduler.Protos.Call.Revive(this);
+          int from_bitField0_ = bitField0_;
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            roles_ = new com.google.protobuf.UnmodifiableLazyStringList(
+                roles_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.roles_ = roles_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.scheduler.Protos.Call.Revive) {
+            return mergeFrom((org.apache.mesos.v1.scheduler.Protos.Call.Revive)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.scheduler.Protos.Call.Revive other) {
+          if (other == org.apache.mesos.v1.scheduler.Protos.Call.Revive.getDefaultInstance()) return this;
+          if (!other.roles_.isEmpty()) {
+            if (roles_.isEmpty()) {
+              roles_ = other.roles_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureRolesIsMutable();
+              roles_.addAll(other.roles_);
+            }
+            onChanged();
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.scheduler.Protos.Call.Revive parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.scheduler.Protos.Call.Revive) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // repeated string roles = 1;
+        private com.google.protobuf.LazyStringList roles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+        private void ensureRolesIsMutable() {
+          if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+            roles_ = new com.google.protobuf.LazyStringArrayList(roles_);
+            bitField0_ |= 0x00000001;
+           }
+        }
+        /**
+         * <code>repeated string roles = 1;</code>
+         */
+        public java.util.List<java.lang.String>
+            getRolesList() {
+          return java.util.Collections.unmodifiableList(roles_);
+        }
+        /**
+         * <code>repeated string roles = 1;</code>
+         */
+        public int getRolesCount() {
+          return roles_.size();
+        }
+        /**
+         * <code>repeated string roles = 1;</code>
+         */
+        public java.lang.String getRoles(int index) {
+          return roles_.get(index);
+        }
+        /**
+         * <code>repeated string roles = 1;</code>
+         */
+        public com.google.protobuf.ByteString
+            getRolesBytes(int index) {
+          return roles_.getByteString(index);
+        }
+        /**
+         * <code>repeated string roles = 1;</code>
+         */
+        public Builder setRoles(
+            int index, java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureRolesIsMutable();
+          roles_.set(index, value);
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>repeated string roles = 1;</code>
+         */
+        public Builder addRoles(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureRolesIsMutable();
+          roles_.add(value);
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>repeated string roles = 1;</code>
+         */
+        public Builder addAllRoles(
+            java.lang.Iterable<java.lang.String> values) {
+          ensureRolesIsMutable();
+          super.addAll(values, roles_);
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>repeated string roles = 1;</code>
+         */
+        public Builder clearRoles() {
+          roles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>repeated string roles = 1;</code>
+         */
+        public Builder addRolesBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureRolesIsMutable();
+          roles_.add(value);
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.scheduler.Call.Revive)
+      }
+
+      static {
+        defaultInstance = new Revive(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.scheduler.Call.Revive)
+    }
+
+    public interface KillOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required .mesos.v1.TaskID task_id = 1;
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 1;</code>
+       */
+      boolean hasTaskId();
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.TaskID getTaskId();
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.TaskIDOrBuilder getTaskIdOrBuilder();
+
+      // optional .mesos.v1.AgentID agent_id = 2;
+      /**
+       * <code>optional .mesos.v1.AgentID agent_id = 2;</code>
+       */
+      boolean hasAgentId();
+      /**
+       * <code>optional .mesos.v1.AgentID agent_id = 2;</code>
+       */
+      org.apache.mesos.v1.Protos.AgentID getAgentId();
+      /**
+       * <code>optional .mesos.v1.AgentID agent_id = 2;</code>
+       */
+      org.apache.mesos.v1.Protos.AgentIDOrBuilder getAgentIdOrBuilder();
+
+      // optional .mesos.v1.KillPolicy kill_policy = 3;
+      /**
+       * <code>optional .mesos.v1.KillPolicy kill_policy = 3;</code>
+       *
+       * <pre>
+       * If set, overrides any previously specified kill policy for this task.
+       * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+       * Can be used to forcefully kill a task which is already being killed.
+       * </pre>
+       */
+      boolean hasKillPolicy();
+      /**
+       * <code>optional .mesos.v1.KillPolicy kill_policy = 3;</code>
+       *
+       * <pre>
+       * If set, overrides any previously specified kill policy for this task.
+       * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+       * Can be used to forcefully kill a task which is already being killed.
+       * </pre>
+       */
+      org.apache.mesos.v1.Protos.KillPolicy getKillPolicy();
+      /**
+       * <code>optional .mesos.v1.KillPolicy kill_policy = 3;</code>
+       *
+       * <pre>
+       * If set, overrides any previously specified kill policy for this task.
+       * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+       * Can be used to forcefully kill a task which is already being killed.
+       * </pre>
+       */
+      org.apache.mesos.v1.Protos.KillPolicyOrBuilder getKillPolicyOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.scheduler.Call.Kill}
+     *
+     * <pre>
+     * Kills a specific task. If the scheduler has a custom executor,
+     * the kill is forwarded to the executor and it is up to the
+     * executor to kill the task and send a TASK_KILLED (or TASK_FAILED)
+     * update. Note that Mesos releases the resources for a task once it
+     * receives a terminal update (See TaskState in v1/mesos.proto) for
+     * it. If the task is unknown to the master, a TASK_LOST update is
+     * generated.
+     *
+     * If a task within a task group is killed before the group is
+     * delivered to the executor, all tasks in the task group are
+     * killed. When a task group has been delivered to the executor,
+     * it is up to the executor to decide how to deal with the kill.
+     * Note The default Mesos executor will currently kill all the
+     * tasks in the task group if it gets a kill for any task.
+     * </pre>
+     */
+    public static final class Kill extends
+        com.google.protobuf.GeneratedMessage
+        implements KillOrBuilder {
+      // Use Kill.newBuilder() to construct.
+      private Kill(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Kill(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Kill defaultInstance;
+      public static Kill getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Kill getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Kill(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.v1.Protos.TaskID.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = taskId_.toBuilder();
+                }
+                taskId_ = input.readMessage(org.apache.mesos.v1.Protos.TaskID.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(taskId_);
+                  taskId_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+              case 18: {
+                org.apache.mesos.v1.Protos.AgentID.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                  subBuilder = agentId_.toBuilder();
+                }
+                agentId_ = input.readMessage(org.apache.mesos.v1.Protos.AgentID.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(agentId_);
+                  agentId_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000002;
+                break;
+              }
+              case 26: {
+                org.apache.mesos.v1.Protos.KillPolicy.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                  subBuilder = killPolicy_.toBuilder();
+                }
+                killPolicy_ = input.readMessage(org.apache.mesos.v1.Protos.KillPolicy.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(killPolicy_);
+                  killPolicy_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000004;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Kill_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Kill_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.scheduler.Protos.Call.Kill.class, org.apache.mesos.v1.scheduler.Protos.Call.Kill.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Kill> PARSER =
+          new com.google.protobuf.AbstractParser<Kill>() {
+        public Kill parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Kill(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Kill> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required .mesos.v1.TaskID task_id = 1;
+      public static final int TASK_ID_FIELD_NUMBER = 1;
+      private org.apache.mesos.v1.Protos.TaskID taskId_;
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 1;</code>
+       */
+      public boolean hasTaskId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.TaskID getTaskId() {
+        return taskId_;
+      }
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.TaskIDOrBuilder getTaskIdOrBuilder() {
+        return taskId_;
+      }
+
+      // optional .mesos.v1.AgentID agent_id = 2;
+      public static final int AGENT_ID_FIELD_NUMBER = 2;
+      private org.apache.mesos.v1.Protos.AgentID agentId_;
+      /**
+       * <code>optional .mesos.v1.AgentID agent_id = 2;</code>
+       */
+      public boolean hasAgentId() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.v1.AgentID agent_id = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.AgentID getAgentId() {
+        return agentId_;
+      }
+      /**
+       * <code>optional .mesos.v1.AgentID agent_id = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.AgentIDOrBuilder getAgentIdOrBuilder() {
+        return agentId_;
+      }
+
+      // optional .mesos.v1.KillPolicy kill_policy = 3;
+      public static final int KILL_POLICY_FIELD_NUMBER = 3;
+      private org.apache.mesos.v1.Protos.KillPolicy killPolicy_;
+      /**
+       * <code>optional .mesos.v1.KillPolicy kill_policy = 3;</code>
+       *
+       * <pre>
+       * If set, overrides any previously specified kill policy for this task.
+       * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+       * Can be used to forcefully kill a task which is already being killed.
+       * </pre>
+       */
+      public boolean hasKillPolicy() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.v1.KillPolicy kill_policy = 3;</code>
+       *
+       * <pre>
+       * If set, overrides any previously specified kill policy for this task.
+       * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+       * Can be used to forcefully kill a task which is already being killed.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.KillPolicy getKillPolicy() {
+        return killPolicy_;
+      }
+      /**
+       * <code>optional .mesos.v1.KillPolicy kill_policy = 3;</code>
+       *
+       * <pre>
+       * If set, overrides any previously specified kill policy for this task.
+       * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+       * Can be used to forcefully kill a task which is already being killed.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.KillPolicyOrBuilder getKillPolicyOrBuilder() {
+        return killPolicy_;
+      }
+
+      private void initFields() {
+        taskId_ = org.apache.mesos.v1.Protos.TaskID.getDefaultInstance();
+        agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+        killPolicy_ = org.apache.mesos.v1.Protos.KillPolicy.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasTaskId()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getTaskId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (hasAgentId()) {
+          if (!getAgentId().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        if (hasKillPolicy()) {
+          if (!getKillPolicy().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, taskId_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeMessage(2, agentId_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeMessage(3, killPolicy_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, taskId_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(2, agentId_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(3, killPolicy_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Kill parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Kill parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Kill parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Kill parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Kill parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Kill parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Kill parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Kill parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Kill parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Kill parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.scheduler.Protos.Call.Kill prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.scheduler.Call.Kill}
+       *
+       * <pre>
+       * Kills a specific task. If the scheduler has a custom executor,
+       * the kill is forwarded to the executor and it is up to the
+       * executor to kill the task and send a TASK_KILLED (or TASK_FAILED)
+       * update. Note that Mesos releases the resources for a task once it
+       * receives a terminal update (See TaskState in v1/mesos.proto) for
+       * it. If the task is unknown to the master, a TASK_LOST update is
+       * generated.
+       *
+       * If a task within a task group is killed before the group is
+       * delivered to the executor, all tasks in the task group are
+       * killed. When a task group has been delivered to the executor,
+       * it is up to the executor to decide how to deal with the kill.
+       * Note The default Mesos executor will currently kill all the
+       * tasks in the task group if it gets a kill for any task.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.scheduler.Protos.Call.KillOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Kill_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Kill_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.scheduler.Protos.Call.Kill.class, org.apache.mesos.v1.scheduler.Protos.Call.Kill.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.scheduler.Protos.Call.Kill.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getTaskIdFieldBuilder();
+            getAgentIdFieldBuilder();
+            getKillPolicyFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (taskIdBuilder_ == null) {
+            taskId_ = org.apache.mesos.v1.Protos.TaskID.getDefaultInstance();
+          } else {
+            taskIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          if (agentIdBuilder_ == null) {
+            agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+          } else {
+            agentIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          if (killPolicyBuilder_ == null) {
+            killPolicy_ = org.apache.mesos.v1.Protos.KillPolicy.getDefaultInstance();
+          } else {
+            killPolicyBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Kill_descriptor;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Call.Kill getDefaultInstanceForType() {
+          return org.apache.mesos.v1.scheduler.Protos.Call.Kill.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Call.Kill build() {
+          org.apache.mesos.v1.scheduler.Protos.Call.Kill result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Call.Kill buildPartial() {
+          org.apache.mesos.v1.scheduler.Protos.Call.Kill result = new org.apache.mesos.v1.scheduler.Protos.Call.Kill(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (taskIdBuilder_ == null) {
+            result.taskId_ = taskId_;
+          } else {
+            result.taskId_ = taskIdBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          if (agentIdBuilder_ == null) {
+            result.agentId_ = agentId_;
+          } else {
+            result.agentId_ = agentIdBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          if (killPolicyBuilder_ == null) {
+            result.killPolicy_ = killPolicy_;
+          } else {
+            result.killPolicy_ = killPolicyBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.scheduler.Protos.Call.Kill) {
+            return mergeFrom((org.apache.mesos.v1.scheduler.Protos.Call.Kill)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.scheduler.Protos.Call.Kill other) {
+          if (other == org.apache.mesos.v1.scheduler.Protos.Call.Kill.getDefaultInstance()) return this;
+          if (other.hasTaskId()) {
+            mergeTaskId(other.getTaskId());
+          }
+          if (other.hasAgentId()) {
+            mergeAgentId(other.getAgentId());
+          }
+          if (other.hasKillPolicy()) {
+            mergeKillPolicy(other.getKillPolicy());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasTaskId()) {
+            
+            return false;
+          }
+          if (!getTaskId().isInitialized()) {
+            
+            return false;
+          }
+          if (hasAgentId()) {
+            if (!getAgentId().isInitialized()) {
+              
+              return false;
+            }
+          }
+          if (hasKillPolicy()) {
+            if (!getKillPolicy().isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.scheduler.Protos.Call.Kill parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.scheduler.Protos.Call.Kill) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required .mesos.v1.TaskID task_id = 1;
+        private org.apache.mesos.v1.Protos.TaskID taskId_ = org.apache.mesos.v1.Protos.TaskID.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.TaskID, org.apache.mesos.v1.Protos.TaskID.Builder, org.apache.mesos.v1.Protos.TaskIDOrBuilder> taskIdBuilder_;
+        /**
+         * <code>required .mesos.v1.TaskID task_id = 1;</code>
+         */
+        public boolean hasTaskId() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.v1.TaskID task_id = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.TaskID getTaskId() {
+          if (taskIdBuilder_ == null) {
+            return taskId_;
+          } else {
+            return taskIdBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.v1.TaskID task_id = 1;</code>
+         */
+        public Builder setTaskId(org.apache.mesos.v1.Protos.TaskID value) {
+          if (taskIdBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            taskId_ = value;
+            onChanged();
+          } else {
+            taskIdBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.TaskID task_id = 1;</code>
+         */
+        public Builder setTaskId(
+            org.apache.mesos.v1.Protos.TaskID.Builder builderForValue) {
+          if (taskIdBuilder_ == null) {
+            taskId_ = builderForValue.build();
+            onChanged();
+          } else {
+            taskIdBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.TaskID task_id = 1;</code>
+         */
+        public Builder mergeTaskId(org.apache.mesos.v1.Protos.TaskID value) {
+          if (taskIdBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                taskId_ != org.apache.mesos.v1.Protos.TaskID.getDefaultInstance()) {
+              taskId_ =
+                org.apache.mesos.v1.Protos.TaskID.newBuilder(taskId_).mergeFrom(value).buildPartial();
+            } else {
+              taskId_ = value;
+            }
+            onChanged();
+          } else {
+            taskIdBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.TaskID task_id = 1;</code>
+         */
+        public Builder clearTaskId() {
+          if (taskIdBuilder_ == null) {
+            taskId_ = org.apache.mesos.v1.Protos.TaskID.getDefaultInstance();
+            onChanged();
+          } else {
+            taskIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.TaskID task_id = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.TaskID.Builder getTaskIdBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getTaskIdFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.v1.TaskID task_id = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.TaskIDOrBuilder getTaskIdOrBuilder() {
+          if (taskIdBuilder_ != null) {
+            return taskIdBuilder_.getMessageOrBuilder();
+          } else {
+            return taskId_;
+          }
+        }
+        /**
+         * <code>required .mesos.v1.TaskID task_id = 1;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.TaskID, org.apache.mesos.v1.Protos.TaskID.Builder, org.apache.mesos.v1.Protos.TaskIDOrBuilder> 
+            getTaskIdFieldBuilder() {
+          if (taskIdBuilder_ == null) {
+            taskIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.TaskID, org.apache.mesos.v1.Protos.TaskID.Builder, org.apache.mesos.v1.Protos.TaskIDOrBuilder>(
+                    taskId_,
+                    getParentForChildren(),
+                    isClean());
+            taskId_ = null;
+          }
+          return taskIdBuilder_;
+        }
+
+        // optional .mesos.v1.AgentID agent_id = 2;
+        private org.apache.mesos.v1.Protos.AgentID agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.AgentID, org.apache.mesos.v1.Protos.AgentID.Builder, org.apache.mesos.v1.Protos.AgentIDOrBuilder> agentIdBuilder_;
+        /**
+         * <code>optional .mesos.v1.AgentID agent_id = 2;</code>
+         */
+        public boolean hasAgentId() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional .mesos.v1.AgentID agent_id = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.AgentID getAgentId() {
+          if (agentIdBuilder_ == null) {
+            return agentId_;
+          } else {
+            return agentIdBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.AgentID agent_id = 2;</code>
+         */
+        public Builder setAgentId(org.apache.mesos.v1.Protos.AgentID value) {
+          if (agentIdBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            agentId_ = value;
+            onChanged();
+          } else {
+            agentIdBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.AgentID agent_id = 2;</code>
+         */
+        public Builder setAgentId(
+            org.apache.mesos.v1.Protos.AgentID.Builder builderForValue) {
+          if (agentIdBuilder_ == null) {
+            agentId_ = builderForValue.build();
+            onChanged();
+          } else {
+            agentIdBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.AgentID agent_id = 2;</code>
+         */
+        public Builder mergeAgentId(org.apache.mesos.v1.Protos.AgentID value) {
+          if (agentIdBuilder_ == null) {
+            if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                agentId_ != org.apache.mesos.v1.Protos.AgentID.getDefaultInstance()) {
+              agentId_ =
+                org.apache.mesos.v1.Protos.AgentID.newBuilder(agentId_).mergeFrom(value).buildPartial();
+            } else {
+              agentId_ = value;
+            }
+            onChanged();
+          } else {
+            agentIdBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.AgentID agent_id = 2;</code>
+         */
+        public Builder clearAgentId() {
+          if (agentIdBuilder_ == null) {
+            agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+            onChanged();
+          } else {
+            agentIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.AgentID agent_id = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.AgentID.Builder getAgentIdBuilder() {
+          bitField0_ |= 0x00000002;
+          onChanged();
+          return getAgentIdFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.v1.AgentID agent_id = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.AgentIDOrBuilder getAgentIdOrBuilder() {
+          if (agentIdBuilder_ != null) {
+            return agentIdBuilder_.getMessageOrBuilder();
+          } else {
+            return agentId_;
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.AgentID agent_id = 2;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.AgentID, org.apache.mesos.v1.Protos.AgentID.Builder, org.apache.mesos.v1.Protos.AgentIDOrBuilder> 
+            getAgentIdFieldBuilder() {
+          if (agentIdBuilder_ == null) {
+            agentIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.AgentID, org.apache.mesos.v1.Protos.AgentID.Builder, org.apache.mesos.v1.Protos.AgentIDOrBuilder>(
+                    agentId_,
+                    getParentForChildren(),
+                    isClean());
+            agentId_ = null;
+          }
+          return agentIdBuilder_;
+        }
+
+        // optional .mesos.v1.KillPolicy kill_policy = 3;
+        private org.apache.mesos.v1.Protos.KillPolicy killPolicy_ = org.apache.mesos.v1.Protos.KillPolicy.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.KillPolicy, org.apache.mesos.v1.Protos.KillPolicy.Builder, org.apache.mesos.v1.Protos.KillPolicyOrBuilder> killPolicyBuilder_;
+        /**
+         * <code>optional .mesos.v1.KillPolicy kill_policy = 3;</code>
+         *
+         * <pre>
+         * If set, overrides any previously specified kill policy for this task.
+         * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+         * Can be used to forcefully kill a task which is already being killed.
+         * </pre>
+         */
+        public boolean hasKillPolicy() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional .mesos.v1.KillPolicy kill_policy = 3;</code>
+         *
+         * <pre>
+         * If set, overrides any previously specified kill policy for this task.
+         * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+         * Can be used to forcefully kill a task which is already being killed.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.KillPolicy getKillPolicy() {
+          if (killPolicyBuilder_ == null) {
+            return killPolicy_;
+          } else {
+            return killPolicyBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.KillPolicy kill_policy = 3;</code>
+         *
+         * <pre>
+         * If set, overrides any previously specified kill policy for this task.
+         * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+         * Can be used to forcefully kill a task which is already being killed.
+         * </pre>
+         */
+        public Builder setKillPolicy(org.apache.mesos.v1.Protos.KillPolicy value) {
+          if (killPolicyBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            killPolicy_ = value;
+            onChanged();
+          } else {
+            killPolicyBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.KillPolicy kill_policy = 3;</code>
+         *
+         * <pre>
+         * If set, overrides any previously specified kill policy for this task.
+         * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+         * Can be used to forcefully kill a task which is already being killed.
+         * </pre>
+         */
+        public Builder setKillPolicy(
+            org.apache.mesos.v1.Protos.KillPolicy.Builder builderForValue) {
+          if (killPolicyBuilder_ == null) {
+            killPolicy_ = builderForValue.build();
+            onChanged();
+          } else {
+            killPolicyBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.KillPolicy kill_policy = 3;</code>
+         *
+         * <pre>
+         * If set, overrides any previously specified kill policy for this task.
+         * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+         * Can be used to forcefully kill a task which is already being killed.
+         * </pre>
+         */
+        public Builder mergeKillPolicy(org.apache.mesos.v1.Protos.KillPolicy value) {
+          if (killPolicyBuilder_ == null) {
+            if (((bitField0_ & 0x00000004) == 0x00000004) &&
+                killPolicy_ != org.apache.mesos.v1.Protos.KillPolicy.getDefaultInstance()) {
+              killPolicy_ =
+                org.apache.mesos.v1.Protos.KillPolicy.newBuilder(killPolicy_).mergeFrom(value).buildPartial();
+            } else {
+              killPolicy_ = value;
+            }
+            onChanged();
+          } else {
+            killPolicyBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.KillPolicy kill_policy = 3;</code>
+         *
+         * <pre>
+         * If set, overrides any previously specified kill policy for this task.
+         * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+         * Can be used to forcefully kill a task which is already being killed.
+         * </pre>
+         */
+        public Builder clearKillPolicy() {
+          if (killPolicyBuilder_ == null) {
+            killPolicy_ = org.apache.mesos.v1.Protos.KillPolicy.getDefaultInstance();
+            onChanged();
+          } else {
+            killPolicyBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+        /**
+         * <code>optional .mesos.v1.KillPolicy kill_policy = 3;</code>
+         *
+         * <pre>
+         * If set, overrides any previously specified kill policy for this task.
+         * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+         * Can be used to forcefully kill a task which is already being killed.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.KillPolicy.Builder getKillPolicyBuilder() {
+          bitField0_ |= 0x00000004;
+          onChanged();
+          return getKillPolicyFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .mesos.v1.KillPolicy kill_policy = 3;</code>
+         *
+         * <pre>
+         * If set, overrides any previously specified kill policy for this task.
+         * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+         * Can be used to forcefully kill a task which is already being killed.
+         * </pre>
+         */
+        public org.apache.mesos.v1.Protos.KillPolicyOrBuilder getKillPolicyOrBuilder() {
+          if (killPolicyBuilder_ != null) {
+            return killPolicyBuilder_.getMessageOrBuilder();
+          } else {
+            return killPolicy_;
+          }
+        }
+        /**
+         * <code>optional .mesos.v1.KillPolicy kill_policy = 3;</code>
+         *
+         * <pre>
+         * If set, overrides any previously specified kill policy for this task.
+         * This includes 'TaskInfo.kill_policy' and 'Executor.kill.kill_policy'.
+         * Can be used to forcefully kill a task which is already being killed.
+         * </pre>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.KillPolicy, org.apache.mesos.v1.Protos.KillPolicy.Builder, org.apache.mesos.v1.Protos.KillPolicyOrBuilder> 
+            getKillPolicyFieldBuilder() {
+          if (killPolicyBuilder_ == null) {
+            killPolicyBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.KillPolicy, org.apache.mesos.v1.Protos.KillPolicy.Builder, org.apache.mesos.v1.Protos.KillPolicyOrBuilder>(
+                    killPolicy_,
+                    getParentForChildren(),
+                    isClean());
+            killPolicy_ = null;
+          }
+          return killPolicyBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.scheduler.Call.Kill)
+      }
+
+      static {
+        defaultInstance = new Kill(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.scheduler.Call.Kill)
+    }
+
+    public interface ShutdownOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required .mesos.v1.ExecutorID executor_id = 1;
+      /**
+       * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+       */
+      boolean hasExecutorId();
+      /**
+       * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.ExecutorID getExecutorId();
+      /**
+       * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder();
+
+      // required .mesos.v1.AgentID agent_id = 2;
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 2;</code>
+       */
+      boolean hasAgentId();
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 2;</code>
+       */
+      org.apache.mesos.v1.Protos.AgentID getAgentId();
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 2;</code>
+       */
+      org.apache.mesos.v1.Protos.AgentIDOrBuilder getAgentIdOrBuilder();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.scheduler.Call.Shutdown}
+     *
+     * <pre>
+     * Shuts down a custom executor. When the executor gets a shutdown
+     * event, it is expected to kill all its tasks (and send TASK_KILLED
+     * updates) and terminate. If the executor doesn’t terminate within
+     * a certain timeout (configurable via
+     * '--executor_shutdown_grace_period' agent flag), the agent will
+     * forcefully destroy the container (executor and its tasks) and
+     * transition its active tasks to TASK_LOST.
+     * </pre>
+     */
+    public static final class Shutdown extends
+        com.google.protobuf.GeneratedMessage
+        implements ShutdownOrBuilder {
+      // Use Shutdown.newBuilder() to construct.
+      private Shutdown(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Shutdown(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Shutdown defaultInstance;
+      public static Shutdown getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Shutdown getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Shutdown(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.v1.Protos.ExecutorID.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = executorId_.toBuilder();
+                }
+                executorId_ = input.readMessage(org.apache.mesos.v1.Protos.ExecutorID.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(executorId_);
+                  executorId_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+              case 18: {
+                org.apache.mesos.v1.Protos.AgentID.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                  subBuilder = agentId_.toBuilder();
+                }
+                agentId_ = input.readMessage(org.apache.mesos.v1.Protos.AgentID.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(agentId_);
+                  agentId_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000002;
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Shutdown_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Shutdown_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.scheduler.Protos.Call.Shutdown.class, org.apache.mesos.v1.scheduler.Protos.Call.Shutdown.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Shutdown> PARSER =
+          new com.google.protobuf.AbstractParser<Shutdown>() {
+        public Shutdown parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Shutdown(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Shutdown> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required .mesos.v1.ExecutorID executor_id = 1;
+      public static final int EXECUTOR_ID_FIELD_NUMBER = 1;
+      private org.apache.mesos.v1.Protos.ExecutorID executorId_;
+      /**
+       * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+       */
+      public boolean hasExecutorId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.ExecutorID getExecutorId() {
+        return executorId_;
+      }
+      /**
+       * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder() {
+        return executorId_;
+      }
+
+      // required .mesos.v1.AgentID agent_id = 2;
+      public static final int AGENT_ID_FIELD_NUMBER = 2;
+      private org.apache.mesos.v1.Protos.AgentID agentId_;
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 2;</code>
+       */
+      public boolean hasAgentId() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.AgentID getAgentId() {
+        return agentId_;
+      }
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.AgentIDOrBuilder getAgentIdOrBuilder() {
+        return agentId_;
+      }
+
+      private void initFields() {
+        executorId_ = org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance();
+        agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasExecutorId()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!hasAgentId()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getExecutorId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getAgentId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, executorId_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeMessage(2, agentId_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, executorId_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(2, agentId_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Shutdown parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Shutdown parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Shutdown parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Shutdown parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Shutdown parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Shutdown parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Shutdown parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Shutdown parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Shutdown parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Shutdown parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.scheduler.Protos.Call.Shutdown prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.scheduler.Call.Shutdown}
+       *
+       * <pre>
+       * Shuts down a custom executor. When the executor gets a shutdown
+       * event, it is expected to kill all its tasks (and send TASK_KILLED
+       * updates) and terminate. If the executor doesn’t terminate within
+       * a certain timeout (configurable via
+       * '--executor_shutdown_grace_period' agent flag), the agent will
+       * forcefully destroy the container (executor and its tasks) and
+       * transition its active tasks to TASK_LOST.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.scheduler.Protos.Call.ShutdownOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Shutdown_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Shutdown_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.scheduler.Protos.Call.Shutdown.class, org.apache.mesos.v1.scheduler.Protos.Call.Shutdown.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.scheduler.Protos.Call.Shutdown.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getExecutorIdFieldBuilder();
+            getAgentIdFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (executorIdBuilder_ == null) {
+            executorId_ = org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance();
+          } else {
+            executorIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          if (agentIdBuilder_ == null) {
+            agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+          } else {
+            agentIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Shutdown_descriptor;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Call.Shutdown getDefaultInstanceForType() {
+          return org.apache.mesos.v1.scheduler.Protos.Call.Shutdown.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Call.Shutdown build() {
+          org.apache.mesos.v1.scheduler.Protos.Call.Shutdown result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Call.Shutdown buildPartial() {
+          org.apache.mesos.v1.scheduler.Protos.Call.Shutdown result = new org.apache.mesos.v1.scheduler.Protos.Call.Shutdown(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (executorIdBuilder_ == null) {
+            result.executorId_ = executorId_;
+          } else {
+            result.executorId_ = executorIdBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          if (agentIdBuilder_ == null) {
+            result.agentId_ = agentId_;
+          } else {
+            result.agentId_ = agentIdBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.scheduler.Protos.Call.Shutdown) {
+            return mergeFrom((org.apache.mesos.v1.scheduler.Protos.Call.Shutdown)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.scheduler.Protos.Call.Shutdown other) {
+          if (other == org.apache.mesos.v1.scheduler.Protos.Call.Shutdown.getDefaultInstance()) return this;
+          if (other.hasExecutorId()) {
+            mergeExecutorId(other.getExecutorId());
+          }
+          if (other.hasAgentId()) {
+            mergeAgentId(other.getAgentId());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasExecutorId()) {
+            
+            return false;
+          }
+          if (!hasAgentId()) {
+            
+            return false;
+          }
+          if (!getExecutorId().isInitialized()) {
+            
+            return false;
+          }
+          if (!getAgentId().isInitialized()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.scheduler.Protos.Call.Shutdown parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.scheduler.Protos.Call.Shutdown) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required .mesos.v1.ExecutorID executor_id = 1;
+        private org.apache.mesos.v1.Protos.ExecutorID executorId_ = org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.ExecutorID, org.apache.mesos.v1.Protos.ExecutorID.Builder, org.apache.mesos.v1.Protos.ExecutorIDOrBuilder> executorIdBuilder_;
+        /**
+         * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+         */
+        public boolean hasExecutorId() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.ExecutorID getExecutorId() {
+          if (executorIdBuilder_ == null) {
+            return executorId_;
+          } else {
+            return executorIdBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+         */
+        public Builder setExecutorId(org.apache.mesos.v1.Protos.ExecutorID value) {
+          if (executorIdBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            executorId_ = value;
+            onChanged();
+          } else {
+            executorIdBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+         */
+        public Builder setExecutorId(
+            org.apache.mesos.v1.Protos.ExecutorID.Builder builderForValue) {
+          if (executorIdBuilder_ == null) {
+            executorId_ = builderForValue.build();
+            onChanged();
+          } else {
+            executorIdBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+         */
+        public Builder mergeExecutorId(org.apache.mesos.v1.Protos.ExecutorID value) {
+          if (executorIdBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                executorId_ != org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance()) {
+              executorId_ =
+                org.apache.mesos.v1.Protos.ExecutorID.newBuilder(executorId_).mergeFrom(value).buildPartial();
+            } else {
+              executorId_ = value;
+            }
+            onChanged();
+          } else {
+            executorIdBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+         */
+        public Builder clearExecutorId() {
+          if (executorIdBuilder_ == null) {
+            executorId_ = org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance();
+            onChanged();
+          } else {
+            executorIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.ExecutorID.Builder getExecutorIdBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getExecutorIdFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder() {
+          if (executorIdBuilder_ != null) {
+            return executorIdBuilder_.getMessageOrBuilder();
+          } else {
+            return executorId_;
+          }
+        }
+        /**
+         * <code>required .mesos.v1.ExecutorID executor_id = 1;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.ExecutorID, org.apache.mesos.v1.Protos.ExecutorID.Builder, org.apache.mesos.v1.Protos.ExecutorIDOrBuilder> 
+            getExecutorIdFieldBuilder() {
+          if (executorIdBuilder_ == null) {
+            executorIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.ExecutorID, org.apache.mesos.v1.Protos.ExecutorID.Builder, org.apache.mesos.v1.Protos.ExecutorIDOrBuilder>(
+                    executorId_,
+                    getParentForChildren(),
+                    isClean());
+            executorId_ = null;
+          }
+          return executorIdBuilder_;
+        }
+
+        // required .mesos.v1.AgentID agent_id = 2;
+        private org.apache.mesos.v1.Protos.AgentID agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.AgentID, org.apache.mesos.v1.Protos.AgentID.Builder, org.apache.mesos.v1.Protos.AgentIDOrBuilder> agentIdBuilder_;
+        /**
+         * <code>required .mesos.v1.AgentID agent_id = 2;</code>
+         */
+        public boolean hasAgentId() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>required .mesos.v1.AgentID agent_id = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.AgentID getAgentId() {
+          if (agentIdBuilder_ == null) {
+            return agentId_;
+          } else {
+            return agentIdBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.v1.AgentID agent_id = 2;</code>
+         */
+        public Builder setAgentId(org.apache.mesos.v1.Protos.AgentID value) {
+          if (agentIdBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            agentId_ = value;
+            onChanged();
+          } else {
+            agentIdBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.AgentID agent_id = 2;</code>
+         */
+        public Builder setAgentId(
+            org.apache.mesos.v1.Protos.AgentID.Builder builderForValue) {
+          if (agentIdBuilder_ == null) {
+            agentId_ = builderForValue.build();
+            onChanged();
+          } else {
+            agentIdBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.AgentID agent_id = 2;</code>
+         */
+        public Builder mergeAgentId(org.apache.mesos.v1.Protos.AgentID value) {
+          if (agentIdBuilder_ == null) {
+            if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                agentId_ != org.apache.mesos.v1.Protos.AgentID.getDefaultInstance()) {
+              agentId_ =
+                org.apache.mesos.v1.Protos.AgentID.newBuilder(agentId_).mergeFrom(value).buildPartial();
+            } else {
+              agentId_ = value;
+            }
+            onChanged();
+          } else {
+            agentIdBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.AgentID agent_id = 2;</code>
+         */
+        public Builder clearAgentId() {
+          if (agentIdBuilder_ == null) {
+            agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+            onChanged();
+          } else {
+            agentIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.AgentID agent_id = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.AgentID.Builder getAgentIdBuilder() {
+          bitField0_ |= 0x00000002;
+          onChanged();
+          return getAgentIdFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.v1.AgentID agent_id = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.AgentIDOrBuilder getAgentIdOrBuilder() {
+          if (agentIdBuilder_ != null) {
+            return agentIdBuilder_.getMessageOrBuilder();
+          } else {
+            return agentId_;
+          }
+        }
+        /**
+         * <code>required .mesos.v1.AgentID agent_id = 2;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.AgentID, org.apache.mesos.v1.Protos.AgentID.Builder, org.apache.mesos.v1.Protos.AgentIDOrBuilder> 
+            getAgentIdFieldBuilder() {
+          if (agentIdBuilder_ == null) {
+            agentIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.AgentID, org.apache.mesos.v1.Protos.AgentID.Builder, org.apache.mesos.v1.Protos.AgentIDOrBuilder>(
+                    agentId_,
+                    getParentForChildren(),
+                    isClean());
+            agentId_ = null;
+          }
+          return agentIdBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.scheduler.Call.Shutdown)
+      }
+
+      static {
+        defaultInstance = new Shutdown(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.scheduler.Call.Shutdown)
+    }
+
+    public interface AcknowledgeOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required .mesos.v1.AgentID agent_id = 1;
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+       */
+      boolean hasAgentId();
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.AgentID getAgentId();
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.AgentIDOrBuilder getAgentIdOrBuilder();
+
+      // required .mesos.v1.TaskID task_id = 2;
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 2;</code>
+       */
+      boolean hasTaskId();
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 2;</code>
+       */
+      org.apache.mesos.v1.Protos.TaskID getTaskId();
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 2;</code>
+       */
+      org.apache.mesos.v1.Protos.TaskIDOrBuilder getTaskIdOrBuilder();
+
+      // required bytes uuid = 3;
+      /**
+       * <code>required bytes uuid = 3;</code>
+       */
+      boolean hasUuid();
+      /**
+       * <code>required bytes uuid = 3;</code>
+       */
+      com.google.protobuf.ByteString getUuid();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.scheduler.Call.Acknowledge}
+     *
+     * <pre>
+     * Acknowledges the receipt of status update. Schedulers are
+     * responsible for explicitly acknowledging the receipt of status
+     * updates that have 'Update.status().uuid()' field set. Such status
+     * updates are retried by the agent until they are acknowledged by
+     * the scheduler.
+     * </pre>
+     */
+    public static final class Acknowledge extends
+        com.google.protobuf.GeneratedMessage
+        implements AcknowledgeOrBuilder {
+      // Use Acknowledge.newBuilder() to construct.
+      private Acknowledge(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Acknowledge(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Acknowledge defaultInstance;
+      public static Acknowledge getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Acknowledge getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Acknowledge(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.v1.Protos.AgentID.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = agentId_.toBuilder();
+                }
+                agentId_ = input.readMessage(org.apache.mesos.v1.Protos.AgentID.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(agentId_);
+                  agentId_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+              case 18: {
+                org.apache.mesos.v1.Protos.TaskID.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                  subBuilder = taskId_.toBuilder();
+                }
+                taskId_ = input.readMessage(org.apache.mesos.v1.Protos.TaskID.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(taskId_);
+                  taskId_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000002;
+                break;
+              }
+              case 26: {
+                bitField0_ |= 0x00000004;
+                uuid_ = input.readBytes();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Acknowledge_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Acknowledge_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge.class, org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Acknowledge> PARSER =
+          new com.google.protobuf.AbstractParser<Acknowledge>() {
+        public Acknowledge parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Acknowledge(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Acknowledge> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required .mesos.v1.AgentID agent_id = 1;
+      public static final int AGENT_ID_FIELD_NUMBER = 1;
+      private org.apache.mesos.v1.Protos.AgentID agentId_;
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+       */
+      public boolean hasAgentId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.AgentID getAgentId() {
+        return agentId_;
+      }
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.AgentIDOrBuilder getAgentIdOrBuilder() {
+        return agentId_;
+      }
+
+      // required .mesos.v1.TaskID task_id = 2;
+      public static final int TASK_ID_FIELD_NUMBER = 2;
+      private org.apache.mesos.v1.Protos.TaskID taskId_;
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 2;</code>
+       */
+      public boolean hasTaskId() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.TaskID getTaskId() {
+        return taskId_;
+      }
+      /**
+       * <code>required .mesos.v1.TaskID task_id = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.TaskIDOrBuilder getTaskIdOrBuilder() {
+        return taskId_;
+      }
+
+      // required bytes uuid = 3;
+      public static final int UUID_FIELD_NUMBER = 3;
+      private com.google.protobuf.ByteString uuid_;
+      /**
+       * <code>required bytes uuid = 3;</code>
+       */
+      public boolean hasUuid() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>required bytes uuid = 3;</code>
+       */
+      public com.google.protobuf.ByteString getUuid() {
+        return uuid_;
+      }
+
+      private void initFields() {
+        agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+        taskId_ = org.apache.mesos.v1.Protos.TaskID.getDefaultInstance();
+        uuid_ = com.google.protobuf.ByteString.EMPTY;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasAgentId()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!hasTaskId()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!hasUuid()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getAgentId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getTaskId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, agentId_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeMessage(2, taskId_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeBytes(3, uuid_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, agentId_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(2, taskId_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(3, uuid_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.scheduler.Call.Acknowledge}
+       *
+       * <pre>
+       * Acknowledges the receipt of status update. Schedulers are
+       * responsible for explicitly acknowledging the receipt of status
+       * updates that have 'Update.status().uuid()' field set. Such status
+       * updates are retried by the agent until they are acknowledged by
+       * the scheduler.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.scheduler.Protos.Call.AcknowledgeOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Acknowledge_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Acknowledge_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge.class, org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getAgentIdFieldBuilder();
+            getTaskIdFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (agentIdBuilder_ == null) {
+            agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+          } else {
+            agentIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          if (taskIdBuilder_ == null) {
+            taskId_ = org.apache.mesos.v1.Protos.TaskID.getDefaultInstance();
+          } else {
+            taskIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          uuid_ = com.google.protobuf.ByteString.EMPTY;
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Acknowledge_descriptor;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge getDefaultInstanceForType() {
+          return org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge build() {
+          org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge buildPartial() {
+          org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge result = new org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (agentIdBuilder_ == null) {
+            result.agentId_ = agentId_;
+          } else {
+            result.agentId_ = agentIdBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          if (taskIdBuilder_ == null) {
+            result.taskId_ = taskId_;
+          } else {
+            result.taskId_ = taskIdBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          result.uuid_ = uuid_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge) {
+            return mergeFrom((org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge other) {
+          if (other == org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge.getDefaultInstance()) return this;
+          if (other.hasAgentId()) {
+            mergeAgentId(other.getAgentId());
+          }
+          if (other.hasTaskId()) {
+            mergeTaskId(other.getTaskId());
+          }
+          if (other.hasUuid()) {
+            setUuid(other.getUuid());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasAgentId()) {
+            
+            return false;
+          }
+          if (!hasTaskId()) {
+            
+            return false;
+          }
+          if (!hasUuid()) {
+            
+            return false;
+          }
+          if (!getAgentId().isInitialized()) {
+            
+            return false;
+          }
+          if (!getTaskId().isInitialized()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required .mesos.v1.AgentID agent_id = 1;
+        private org.apache.mesos.v1.Protos.AgentID agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.AgentID, org.apache.mesos.v1.Protos.AgentID.Builder, org.apache.mesos.v1.Protos.AgentIDOrBuilder> agentIdBuilder_;
+        /**
+         * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+         */
+        public boolean hasAgentId() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.AgentID getAgentId() {
+          if (agentIdBuilder_ == null) {
+            return agentId_;
+          } else {
+            return agentIdBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+         */
+        public Builder setAgentId(org.apache.mesos.v1.Protos.AgentID value) {
+          if (agentIdBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            agentId_ = value;
+            onChanged();
+          } else {
+            agentIdBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+         */
+        public Builder setAgentId(
+            org.apache.mesos.v1.Protos.AgentID.Builder builderForValue) {
+          if (agentIdBuilder_ == null) {
+            agentId_ = builderForValue.build();
+            onChanged();
+          } else {
+            agentIdBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+         */
+        public Builder mergeAgentId(org.apache.mesos.v1.Protos.AgentID value) {
+          if (agentIdBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                agentId_ != org.apache.mesos.v1.Protos.AgentID.getDefaultInstance()) {
+              agentId_ =
+                org.apache.mesos.v1.Protos.AgentID.newBuilder(agentId_).mergeFrom(value).buildPartial();
+            } else {
+              agentId_ = value;
+            }
+            onChanged();
+          } else {
+            agentIdBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+         */
+        public Builder clearAgentId() {
+          if (agentIdBuilder_ == null) {
+            agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+            onChanged();
+          } else {
+            agentIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.AgentID.Builder getAgentIdBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getAgentIdFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.AgentIDOrBuilder getAgentIdOrBuilder() {
+          if (agentIdBuilder_ != null) {
+            return agentIdBuilder_.getMessageOrBuilder();
+          } else {
+            return agentId_;
+          }
+        }
+        /**
+         * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.AgentID, org.apache.mesos.v1.Protos.AgentID.Builder, org.apache.mesos.v1.Protos.AgentIDOrBuilder> 
+            getAgentIdFieldBuilder() {
+          if (agentIdBuilder_ == null) {
+            agentIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.AgentID, org.apache.mesos.v1.Protos.AgentID.Builder, org.apache.mesos.v1.Protos.AgentIDOrBuilder>(
+                    agentId_,
+                    getParentForChildren(),
+                    isClean());
+            agentId_ = null;
+          }
+          return agentIdBuilder_;
+        }
+
+        // required .mesos.v1.TaskID task_id = 2;
+        private org.apache.mesos.v1.Protos.TaskID taskId_ = org.apache.mesos.v1.Protos.TaskID.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.TaskID, org.apache.mesos.v1.Protos.TaskID.Builder, org.apache.mesos.v1.Protos.TaskIDOrBuilder> taskIdBuilder_;
+        /**
+         * <code>required .mesos.v1.TaskID task_id = 2;</code>
+         */
+        public boolean hasTaskId() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>required .mesos.v1.TaskID task_id = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.TaskID getTaskId() {
+          if (taskIdBuilder_ == null) {
+            return taskId_;
+          } else {
+            return taskIdBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.v1.TaskID task_id = 2;</code>
+         */
+        public Builder setTaskId(org.apache.mesos.v1.Protos.TaskID value) {
+          if (taskIdBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            taskId_ = value;
+            onChanged();
+          } else {
+            taskIdBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.TaskID task_id = 2;</code>
+         */
+        public Builder setTaskId(
+            org.apache.mesos.v1.Protos.TaskID.Builder builderForValue) {
+          if (taskIdBuilder_ == null) {
+            taskId_ = builderForValue.build();
+            onChanged();
+          } else {
+            taskIdBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.TaskID task_id = 2;</code>
+         */
+        public Builder mergeTaskId(org.apache.mesos.v1.Protos.TaskID value) {
+          if (taskIdBuilder_ == null) {
+            if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                taskId_ != org.apache.mesos.v1.Protos.TaskID.getDefaultInstance()) {
+              taskId_ =
+                org.apache.mesos.v1.Protos.TaskID.newBuilder(taskId_).mergeFrom(value).buildPartial();
+            } else {
+              taskId_ = value;
+            }
+            onChanged();
+          } else {
+            taskIdBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.TaskID task_id = 2;</code>
+         */
+        public Builder clearTaskId() {
+          if (taskIdBuilder_ == null) {
+            taskId_ = org.apache.mesos.v1.Protos.TaskID.getDefaultInstance();
+            onChanged();
+          } else {
+            taskIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.TaskID task_id = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.TaskID.Builder getTaskIdBuilder() {
+          bitField0_ |= 0x00000002;
+          onChanged();
+          return getTaskIdFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.v1.TaskID task_id = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.TaskIDOrBuilder getTaskIdOrBuilder() {
+          if (taskIdBuilder_ != null) {
+            return taskIdBuilder_.getMessageOrBuilder();
+          } else {
+            return taskId_;
+          }
+        }
+        /**
+         * <code>required .mesos.v1.TaskID task_id = 2;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.TaskID, org.apache.mesos.v1.Protos.TaskID.Builder, org.apache.mesos.v1.Protos.TaskIDOrBuilder> 
+            getTaskIdFieldBuilder() {
+          if (taskIdBuilder_ == null) {
+            taskIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.TaskID, org.apache.mesos.v1.Protos.TaskID.Builder, org.apache.mesos.v1.Protos.TaskIDOrBuilder>(
+                    taskId_,
+                    getParentForChildren(),
+                    isClean());
+            taskId_ = null;
+          }
+          return taskIdBuilder_;
+        }
+
+        // required bytes uuid = 3;
+        private com.google.protobuf.ByteString uuid_ = com.google.protobuf.ByteString.EMPTY;
+        /**
+         * <code>required bytes uuid = 3;</code>
+         */
+        public boolean hasUuid() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>required bytes uuid = 3;</code>
+         */
+        public com.google.protobuf.ByteString getUuid() {
+          return uuid_;
+        }
+        /**
+         * <code>required bytes uuid = 3;</code>
+         */
+        public Builder setUuid(com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+          uuid_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required bytes uuid = 3;</code>
+         */
+        public Builder clearUuid() {
+          bitField0_ = (bitField0_ & ~0x00000004);
+          uuid_ = getDefaultInstance().getUuid();
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.scheduler.Call.Acknowledge)
+      }
+
+      static {
+        defaultInstance = new Acknowledge(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.scheduler.Call.Acknowledge)
+    }
+
+    public interface ReconcileOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // repeated .mesos.v1.scheduler.Call.Reconcile.Task tasks = 1;
+      /**
+       * <code>repeated .mesos.v1.scheduler.Call.Reconcile.Task tasks = 1;</code>
+       */
+      java.util.List<org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task> 
+          getTasksList();
+      /**
+       * <code>repeated .mesos.v1.scheduler.Call.Reconcile.Task tasks = 1;</code>
+       */
+      org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task getTasks(int index);
+      /**
+       * <code>repeated .mesos.v1.scheduler.Call.Reconcile.Task tasks = 1;</code>
+       */
+      int getTasksCount();
+      /**
+       * <code>repeated .mesos.v1.scheduler.Call.Reconcile.Task tasks = 1;</code>
+       */
+      java.util.List<? extends org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.TaskOrBuilder> 
+          getTasksOrBuilderList();
+      /**
+       * <code>repeated .mesos.v1.scheduler.Call.Reconcile.Task tasks = 1;</code>
+       */
+      org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.TaskOrBuilder getTasksOrBuilder(
+          int index);
+    }
+    /**
+     * Protobuf type {@code mesos.v1.scheduler.Call.Reconcile}
+     *
+     * <pre>
+     * Allows the scheduler to query the status for non-terminal tasks.
+     * This causes the master to send back the latest task status for
+     * each task in 'tasks', if possible. Tasks that are no longer known
+     * will result in a TASK_LOST, TASK_UNKNOWN, or TASK_UNREACHABLE update.
+     * If 'tasks' is empty, then the master will send the latest status
+     * for each task currently known.
+     * </pre>
+     */
+    public static final class Reconcile extends
+        com.google.protobuf.GeneratedMessage
+        implements ReconcileOrBuilder {
+      // Use Reconcile.newBuilder() to construct.
+      private Reconcile(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Reconcile(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Reconcile defaultInstance;
+      public static Reconcile getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Reconcile getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Reconcile(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                  tasks_ = new java.util.ArrayList<org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task>();
+                  mutable_bitField0_ |= 0x00000001;
+                }
+                tasks_.add(input.readMessage(org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task.PARSER, extensionRegistry));
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+            tasks_ = java.util.Collections.unmodifiableList(tasks_);
+          }
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Reconcile_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Reconcile_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.class, org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Reconcile> PARSER =
+          new com.google.protobuf.AbstractParser<Reconcile>() {
+        public Reconcile parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Reconcile(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Reconcile> getParserForType() {
+        return PARSER;
+      }
+
+      public interface TaskOrBuilder
+          extends com.google.protobuf.MessageOrBuilder {
+
+        // required .mesos.v1.TaskID task_id = 1;
+        /**
+         * <code>required .mesos.v1.TaskID task_id = 1;</code>
+         */
+        boolean hasTaskId();
+        /**
+         * <code>required .mesos.v1.TaskID task_id = 1;</code>
+         */
+        org.apache.mesos.v1.Protos.TaskID getTaskId();
+        /**
+         * <code>required .mesos.v1.TaskID task_id = 1;</code>
+         */
+        org.apache.mesos.v1.Protos.TaskIDOrBuilder getTaskIdOrBuilder();
+
+        // optional .mesos.v1.AgentID agent_id = 2;
+        /**
+         * <code>optional .mesos.v1.AgentID agent_id = 2;</code>
+         */
+        boolean hasAgentId();
+        /**
+         * <code>optional .mesos.v1.AgentID agent_id = 2;</code>
+         */
+        org.apache.mesos.v1.Protos.AgentID getAgentId();
+        /**
+         * <code>optional .mesos.v1.AgentID agent_id = 2;</code>
+         */
+        org.apache.mesos.v1.Protos.AgentIDOrBuilder getAgentIdOrBuilder();
+      }
+      /**
+       * Protobuf type {@code mesos.v1.scheduler.Call.Reconcile.Task}
+       *
+       * <pre>
+       * TODO(vinod): Support arbitrary queries than just state of tasks.
+       * </pre>
+       */
+      public static final class Task extends
+          com.google.protobuf.GeneratedMessage
+          implements TaskOrBuilder {
+        // Use Task.newBuilder() to construct.
+        private Task(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+          super(builder);
+          this.unknownFields = builder.getUnknownFields();
+        }
+        private Task(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+        private static final Task defaultInstance;
+        public static Task getDefaultInstance() {
+          return defaultInstance;
+        }
+
+        public Task getDefaultInstanceForType() {
+          return defaultInstance;
+        }
+
+        private final com.google.protobuf.UnknownFieldSet unknownFields;
+        @java.lang.Override
+        public final com.google.protobuf.UnknownFieldSet
+            getUnknownFields() {
+          return this.unknownFields;
+        }
+        private Task(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          initFields();
+          int mutable_bitField0_ = 0;
+          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+              com.google.protobuf.UnknownFieldSet.newBuilder();
+          try {
+            boolean done = false;
+            while (!done) {
+              int tag = input.readTag();
+              switch (tag) {
+                case 0:
+                  done = true;
+                  break;
+                default: {
+                  if (!parseUnknownField(input, unknownFields,
+                                         extensionRegistry, tag)) {
+                    done = true;
+                  }
+                  break;
+                }
+                case 10: {
+                  org.apache.mesos.v1.Protos.TaskID.Builder subBuilder = null;
+                  if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                    subBuilder = taskId_.toBuilder();
+                  }
+                  taskId_ = input.readMessage(org.apache.mesos.v1.Protos.TaskID.PARSER, extensionRegistry);
+                  if (subBuilder != null) {
+                    subBuilder.mergeFrom(taskId_);
+                    taskId_ = subBuilder.buildPartial();
+                  }
+                  bitField0_ |= 0x00000001;
+                  break;
+                }
+                case 18: {
+                  org.apache.mesos.v1.Protos.AgentID.Builder subBuilder = null;
+                  if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                    subBuilder = agentId_.toBuilder();
+                  }
+                  agentId_ = input.readMessage(org.apache.mesos.v1.Protos.AgentID.PARSER, extensionRegistry);
+                  if (subBuilder != null) {
+                    subBuilder.mergeFrom(agentId_);
+                    agentId_ = subBuilder.buildPartial();
+                  }
+                  bitField0_ |= 0x00000002;
+                  break;
+                }
+              }
+            }
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            throw e.setUnfinishedMessage(this);
+          } catch (java.io.IOException e) {
+            throw new com.google.protobuf.InvalidProtocolBufferException(
+                e.getMessage()).setUnfinishedMessage(this);
+          } finally {
+            this.unknownFields = unknownFields.build();
+            makeExtensionsImmutable();
+          }
+        }
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Reconcile_Task_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Reconcile_Task_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task.class, org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task.Builder.class);
+        }
+
+        public static com.google.protobuf.Parser<Task> PARSER =
+            new com.google.protobuf.AbstractParser<Task>() {
+          public Task parsePartialFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+            return new Task(input, extensionRegistry);
+          }
+        };
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<Task> getParserForType() {
+          return PARSER;
+        }
+
+        private int bitField0_;
+        // required .mesos.v1.TaskID task_id = 1;
+        public static final int TASK_ID_FIELD_NUMBER = 1;
+        private org.apache.mesos.v1.Protos.TaskID taskId_;
+        /**
+         * <code>required .mesos.v1.TaskID task_id = 1;</code>
+         */
+        public boolean hasTaskId() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.v1.TaskID task_id = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.TaskID getTaskId() {
+          return taskId_;
+        }
+        /**
+         * <code>required .mesos.v1.TaskID task_id = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.TaskIDOrBuilder getTaskIdOrBuilder() {
+          return taskId_;
+        }
+
+        // optional .mesos.v1.AgentID agent_id = 2;
+        public static final int AGENT_ID_FIELD_NUMBER = 2;
+        private org.apache.mesos.v1.Protos.AgentID agentId_;
+        /**
+         * <code>optional .mesos.v1.AgentID agent_id = 2;</code>
+         */
+        public boolean hasAgentId() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional .mesos.v1.AgentID agent_id = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.AgentID getAgentId() {
+          return agentId_;
+        }
+        /**
+         * <code>optional .mesos.v1.AgentID agent_id = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.AgentIDOrBuilder getAgentIdOrBuilder() {
+          return agentId_;
+        }
+
+        private void initFields() {
+          taskId_ = org.apache.mesos.v1.Protos.TaskID.getDefaultInstance();
+          agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+        }
+        private byte memoizedIsInitialized = -1;
+        public final boolean isInitialized() {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized != -1) return isInitialized == 1;
+
+          if (!hasTaskId()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+          if (!getTaskId().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+          if (hasAgentId()) {
+            if (!getAgentId().isInitialized()) {
+              memoizedIsInitialized = 0;
+              return false;
+            }
+          }
+          memoizedIsInitialized = 1;
+          return true;
+        }
+
+        public void writeTo(com.google.protobuf.CodedOutputStream output)
+                            throws java.io.IOException {
+          getSerializedSize();
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            output.writeMessage(1, taskId_);
+          }
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            output.writeMessage(2, agentId_);
+          }
+          getUnknownFields().writeTo(output);
+        }
+
+        private int memoizedSerializedSize = -1;
+        public int getSerializedSize() {
+          int size = memoizedSerializedSize;
+          if (size != -1) return size;
+
+          size = 0;
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeMessageSize(1, taskId_);
+          }
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            size += com.google.protobuf.CodedOutputStream
+              .computeMessageSize(2, agentId_);
+          }
+          size += getUnknownFields().getSerializedSize();
+          memoizedSerializedSize = size;
+          return size;
+        }
+
+        private static final long serialVersionUID = 0L;
+        @java.lang.Override
+        protected java.lang.Object writeReplace()
+            throws java.io.ObjectStreamException {
+          return super.writeReplace();
+        }
+
+        public static org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task parseFrom(
+            com.google.protobuf.ByteString data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task parseFrom(
+            com.google.protobuf.ByteString data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task parseFrom(byte[] data)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data);
+        }
+        public static org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task parseFrom(
+            byte[] data,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return PARSER.parseFrom(data, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task parseFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task parseFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task parseDelimitedFrom(java.io.InputStream input)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input);
+        }
+        public static org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task parseDelimitedFrom(
+            java.io.InputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseDelimitedFrom(input, extensionRegistry);
+        }
+        public static org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task parseFrom(
+            com.google.protobuf.CodedInputStream input)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input);
+        }
+        public static org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task parseFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          return PARSER.parseFrom(input, extensionRegistry);
+        }
+
+        public static Builder newBuilder() { return Builder.create(); }
+        public Builder newBuilderForType() { return newBuilder(); }
+        public static Builder newBuilder(org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task prototype) {
+          return newBuilder().mergeFrom(prototype);
+        }
+        public Builder toBuilder() { return newBuilder(this); }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          Builder builder = new Builder(parent);
+          return builder;
+        }
+        /**
+         * Protobuf type {@code mesos.v1.scheduler.Call.Reconcile.Task}
+         *
+         * <pre>
+         * TODO(vinod): Support arbitrary queries than just state of tasks.
+         * </pre>
+         */
+        public static final class Builder extends
+            com.google.protobuf.GeneratedMessage.Builder<Builder>
+           implements org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.TaskOrBuilder {
+          public static final com.google.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Reconcile_Task_descriptor;
+          }
+
+          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Reconcile_Task_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task.class, org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task.Builder.class);
+          }
+
+          // Construct using org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task.newBuilder()
+          private Builder() {
+            maybeForceBuilderInitialization();
+          }
+
+          private Builder(
+              com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+            super(parent);
+            maybeForceBuilderInitialization();
+          }
+          private void maybeForceBuilderInitialization() {
+            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+              getTaskIdFieldBuilder();
+              getAgentIdFieldBuilder();
+            }
+          }
+          private static Builder create() {
+            return new Builder();
+          }
+
+          public Builder clear() {
+            super.clear();
+            if (taskIdBuilder_ == null) {
+              taskId_ = org.apache.mesos.v1.Protos.TaskID.getDefaultInstance();
+            } else {
+              taskIdBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000001);
+            if (agentIdBuilder_ == null) {
+              agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+            } else {
+              agentIdBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000002);
+            return this;
+          }
+
+          public Builder clone() {
+            return create().mergeFrom(buildPartial());
+          }
+
+          public com.google.protobuf.Descriptors.Descriptor
+              getDescriptorForType() {
+            return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Reconcile_Task_descriptor;
+          }
+
+          public org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task getDefaultInstanceForType() {
+            return org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task.getDefaultInstance();
+          }
+
+          public org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task build() {
+            org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task result = buildPartial();
+            if (!result.isInitialized()) {
+              throw newUninitializedMessageException(result);
+            }
+            return result;
+          }
+
+          public org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task buildPartial() {
+            org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task result = new org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task(this);
+            int from_bitField0_ = bitField0_;
+            int to_bitField0_ = 0;
+            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+              to_bitField0_ |= 0x00000001;
+            }
+            if (taskIdBuilder_ == null) {
+              result.taskId_ = taskId_;
+            } else {
+              result.taskId_ = taskIdBuilder_.build();
+            }
+            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+              to_bitField0_ |= 0x00000002;
+            }
+            if (agentIdBuilder_ == null) {
+              result.agentId_ = agentId_;
+            } else {
+              result.agentId_ = agentIdBuilder_.build();
+            }
+            result.bitField0_ = to_bitField0_;
+            onBuilt();
+            return result;
+          }
+
+          public Builder mergeFrom(com.google.protobuf.Message other) {
+            if (other instanceof org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task) {
+              return mergeFrom((org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task)other);
+            } else {
+              super.mergeFrom(other);
+              return this;
+            }
+          }
+
+          public Builder mergeFrom(org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task other) {
+            if (other == org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task.getDefaultInstance()) return this;
+            if (other.hasTaskId()) {
+              mergeTaskId(other.getTaskId());
+            }
+            if (other.hasAgentId()) {
+              mergeAgentId(other.getAgentId());
+            }
+            this.mergeUnknownFields(other.getUnknownFields());
+            return this;
+          }
+
+          public final boolean isInitialized() {
+            if (!hasTaskId()) {
+              
+              return false;
+            }
+            if (!getTaskId().isInitialized()) {
+              
+              return false;
+            }
+            if (hasAgentId()) {
+              if (!getAgentId().isInitialized()) {
+                
+                return false;
+              }
+            }
+            return true;
+          }
+
+          public Builder mergeFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+            org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task parsedMessage = null;
+            try {
+              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+              parsedMessage = (org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task) e.getUnfinishedMessage();
+              throw e;
+            } finally {
+              if (parsedMessage != null) {
+                mergeFrom(parsedMessage);
+              }
+            }
+            return this;
+          }
+          private int bitField0_;
+
+          // required .mesos.v1.TaskID task_id = 1;
+          private org.apache.mesos.v1.Protos.TaskID taskId_ = org.apache.mesos.v1.Protos.TaskID.getDefaultInstance();
+          private com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.TaskID, org.apache.mesos.v1.Protos.TaskID.Builder, org.apache.mesos.v1.Protos.TaskIDOrBuilder> taskIdBuilder_;
+          /**
+           * <code>required .mesos.v1.TaskID task_id = 1;</code>
+           */
+          public boolean hasTaskId() {
+            return ((bitField0_ & 0x00000001) == 0x00000001);
+          }
+          /**
+           * <code>required .mesos.v1.TaskID task_id = 1;</code>
+           */
+          public org.apache.mesos.v1.Protos.TaskID getTaskId() {
+            if (taskIdBuilder_ == null) {
+              return taskId_;
+            } else {
+              return taskIdBuilder_.getMessage();
+            }
+          }
+          /**
+           * <code>required .mesos.v1.TaskID task_id = 1;</code>
+           */
+          public Builder setTaskId(org.apache.mesos.v1.Protos.TaskID value) {
+            if (taskIdBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              taskId_ = value;
+              onChanged();
+            } else {
+              taskIdBuilder_.setMessage(value);
+            }
+            bitField0_ |= 0x00000001;
+            return this;
+          }
+          /**
+           * <code>required .mesos.v1.TaskID task_id = 1;</code>
+           */
+          public Builder setTaskId(
+              org.apache.mesos.v1.Protos.TaskID.Builder builderForValue) {
+            if (taskIdBuilder_ == null) {
+              taskId_ = builderForValue.build();
+              onChanged();
+            } else {
+              taskIdBuilder_.setMessage(builderForValue.build());
+            }
+            bitField0_ |= 0x00000001;
+            return this;
+          }
+          /**
+           * <code>required .mesos.v1.TaskID task_id = 1;</code>
+           */
+          public Builder mergeTaskId(org.apache.mesos.v1.Protos.TaskID value) {
+            if (taskIdBuilder_ == null) {
+              if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                  taskId_ != org.apache.mesos.v1.Protos.TaskID.getDefaultInstance()) {
+                taskId_ =
+                  org.apache.mesos.v1.Protos.TaskID.newBuilder(taskId_).mergeFrom(value).buildPartial();
+              } else {
+                taskId_ = value;
+              }
+              onChanged();
+            } else {
+              taskIdBuilder_.mergeFrom(value);
+            }
+            bitField0_ |= 0x00000001;
+            return this;
+          }
+          /**
+           * <code>required .mesos.v1.TaskID task_id = 1;</code>
+           */
+          public Builder clearTaskId() {
+            if (taskIdBuilder_ == null) {
+              taskId_ = org.apache.mesos.v1.Protos.TaskID.getDefaultInstance();
+              onChanged();
+            } else {
+              taskIdBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000001);
+            return this;
+          }
+          /**
+           * <code>required .mesos.v1.TaskID task_id = 1;</code>
+           */
+          public org.apache.mesos.v1.Protos.TaskID.Builder getTaskIdBuilder() {
+            bitField0_ |= 0x00000001;
+            onChanged();
+            return getTaskIdFieldBuilder().getBuilder();
+          }
+          /**
+           * <code>required .mesos.v1.TaskID task_id = 1;</code>
+           */
+          public org.apache.mesos.v1.Protos.TaskIDOrBuilder getTaskIdOrBuilder() {
+            if (taskIdBuilder_ != null) {
+              return taskIdBuilder_.getMessageOrBuilder();
+            } else {
+              return taskId_;
+            }
+          }
+          /**
+           * <code>required .mesos.v1.TaskID task_id = 1;</code>
+           */
+          private com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.TaskID, org.apache.mesos.v1.Protos.TaskID.Builder, org.apache.mesos.v1.Protos.TaskIDOrBuilder> 
+              getTaskIdFieldBuilder() {
+            if (taskIdBuilder_ == null) {
+              taskIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                  org.apache.mesos.v1.Protos.TaskID, org.apache.mesos.v1.Protos.TaskID.Builder, org.apache.mesos.v1.Protos.TaskIDOrBuilder>(
+                      taskId_,
+                      getParentForChildren(),
+                      isClean());
+              taskId_ = null;
+            }
+            return taskIdBuilder_;
+          }
+
+          // optional .mesos.v1.AgentID agent_id = 2;
+          private org.apache.mesos.v1.Protos.AgentID agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+          private com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.AgentID, org.apache.mesos.v1.Protos.AgentID.Builder, org.apache.mesos.v1.Protos.AgentIDOrBuilder> agentIdBuilder_;
+          /**
+           * <code>optional .mesos.v1.AgentID agent_id = 2;</code>
+           */
+          public boolean hasAgentId() {
+            return ((bitField0_ & 0x00000002) == 0x00000002);
+          }
+          /**
+           * <code>optional .mesos.v1.AgentID agent_id = 2;</code>
+           */
+          public org.apache.mesos.v1.Protos.AgentID getAgentId() {
+            if (agentIdBuilder_ == null) {
+              return agentId_;
+            } else {
+              return agentIdBuilder_.getMessage();
+            }
+          }
+          /**
+           * <code>optional .mesos.v1.AgentID agent_id = 2;</code>
+           */
+          public Builder setAgentId(org.apache.mesos.v1.Protos.AgentID value) {
+            if (agentIdBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              agentId_ = value;
+              onChanged();
+            } else {
+              agentIdBuilder_.setMessage(value);
+            }
+            bitField0_ |= 0x00000002;
+            return this;
+          }
+          /**
+           * <code>optional .mesos.v1.AgentID agent_id = 2;</code>
+           */
+          public Builder setAgentId(
+              org.apache.mesos.v1.Protos.AgentID.Builder builderForValue) {
+            if (agentIdBuilder_ == null) {
+              agentId_ = builderForValue.build();
+              onChanged();
+            } else {
+              agentIdBuilder_.setMessage(builderForValue.build());
+            }
+            bitField0_ |= 0x00000002;
+            return this;
+          }
+          /**
+           * <code>optional .mesos.v1.AgentID agent_id = 2;</code>
+           */
+          public Builder mergeAgentId(org.apache.mesos.v1.Protos.AgentID value) {
+            if (agentIdBuilder_ == null) {
+              if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                  agentId_ != org.apache.mesos.v1.Protos.AgentID.getDefaultInstance()) {
+                agentId_ =
+                  org.apache.mesos.v1.Protos.AgentID.newBuilder(agentId_).mergeFrom(value).buildPartial();
+              } else {
+                agentId_ = value;
+              }
+              onChanged();
+            } else {
+              agentIdBuilder_.mergeFrom(value);
+            }
+            bitField0_ |= 0x00000002;
+            return this;
+          }
+          /**
+           * <code>optional .mesos.v1.AgentID agent_id = 2;</code>
+           */
+          public Builder clearAgentId() {
+            if (agentIdBuilder_ == null) {
+              agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+              onChanged();
+            } else {
+              agentIdBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000002);
+            return this;
+          }
+          /**
+           * <code>optional .mesos.v1.AgentID agent_id = 2;</code>
+           */
+          public org.apache.mesos.v1.Protos.AgentID.Builder getAgentIdBuilder() {
+            bitField0_ |= 0x00000002;
+            onChanged();
+            return getAgentIdFieldBuilder().getBuilder();
+          }
+          /**
+           * <code>optional .mesos.v1.AgentID agent_id = 2;</code>
+           */
+          public org.apache.mesos.v1.Protos.AgentIDOrBuilder getAgentIdOrBuilder() {
+            if (agentIdBuilder_ != null) {
+              return agentIdBuilder_.getMessageOrBuilder();
+            } else {
+              return agentId_;
+            }
+          }
+          /**
+           * <code>optional .mesos.v1.AgentID agent_id = 2;</code>
+           */
+          private com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.AgentID, org.apache.mesos.v1.Protos.AgentID.Builder, org.apache.mesos.v1.Protos.AgentIDOrBuilder> 
+              getAgentIdFieldBuilder() {
+            if (agentIdBuilder_ == null) {
+              agentIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                  org.apache.mesos.v1.Protos.AgentID, org.apache.mesos.v1.Protos.AgentID.Builder, org.apache.mesos.v1.Protos.AgentIDOrBuilder>(
+                      agentId_,
+                      getParentForChildren(),
+                      isClean());
+              agentId_ = null;
+            }
+            return agentIdBuilder_;
+          }
+
+          // @@protoc_insertion_point(builder_scope:mesos.v1.scheduler.Call.Reconcile.Task)
+        }
+
+        static {
+          defaultInstance = new Task(true);
+          defaultInstance.initFields();
+        }
+
+        // @@protoc_insertion_point(class_scope:mesos.v1.scheduler.Call.Reconcile.Task)
+      }
+
+      // repeated .mesos.v1.scheduler.Call.Reconcile.Task tasks = 1;
+      public static final int TASKS_FIELD_NUMBER = 1;
+      private java.util.List<org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task> tasks_;
+      /**
+       * <code>repeated .mesos.v1.scheduler.Call.Reconcile.Task tasks = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task> getTasksList() {
+        return tasks_;
+      }
+      /**
+       * <code>repeated .mesos.v1.scheduler.Call.Reconcile.Task tasks = 1;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.TaskOrBuilder> 
+          getTasksOrBuilderList() {
+        return tasks_;
+      }
+      /**
+       * <code>repeated .mesos.v1.scheduler.Call.Reconcile.Task tasks = 1;</code>
+       */
+      public int getTasksCount() {
+        return tasks_.size();
+      }
+      /**
+       * <code>repeated .mesos.v1.scheduler.Call.Reconcile.Task tasks = 1;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task getTasks(int index) {
+        return tasks_.get(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.scheduler.Call.Reconcile.Task tasks = 1;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.TaskOrBuilder getTasksOrBuilder(
+          int index) {
+        return tasks_.get(index);
+      }
+
+      private void initFields() {
+        tasks_ = java.util.Collections.emptyList();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        for (int i = 0; i < getTasksCount(); i++) {
+          if (!getTasks(i).isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        for (int i = 0; i < tasks_.size(); i++) {
+          output.writeMessage(1, tasks_.get(i));
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        for (int i = 0; i < tasks_.size(); i++) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, tasks_.get(i));
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Reconcile parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Reconcile parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Reconcile parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Reconcile parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Reconcile parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Reconcile parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Reconcile parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Reconcile parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Reconcile parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Reconcile parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.scheduler.Protos.Call.Reconcile prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.scheduler.Call.Reconcile}
+       *
+       * <pre>
+       * Allows the scheduler to query the status for non-terminal tasks.
+       * This causes the master to send back the latest task status for
+       * each task in 'tasks', if possible. Tasks that are no longer known
+       * will result in a TASK_LOST, TASK_UNKNOWN, or TASK_UNREACHABLE update.
+       * If 'tasks' is empty, then the master will send the latest status
+       * for each task currently known.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.scheduler.Protos.Call.ReconcileOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Reconcile_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Reconcile_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.class, org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getTasksFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (tasksBuilder_ == null) {
+            tasks_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000001);
+          } else {
+            tasksBuilder_.clear();
+          }
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Reconcile_descriptor;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Call.Reconcile getDefaultInstanceForType() {
+          return org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Call.Reconcile build() {
+          org.apache.mesos.v1.scheduler.Protos.Call.Reconcile result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Call.Reconcile buildPartial() {
+          org.apache.mesos.v1.scheduler.Protos.Call.Reconcile result = new org.apache.mesos.v1.scheduler.Protos.Call.Reconcile(this);
+          int from_bitField0_ = bitField0_;
+          if (tasksBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              tasks_ = java.util.Collections.unmodifiableList(tasks_);
+              bitField0_ = (bitField0_ & ~0x00000001);
+            }
+            result.tasks_ = tasks_;
+          } else {
+            result.tasks_ = tasksBuilder_.build();
+          }
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.scheduler.Protos.Call.Reconcile) {
+            return mergeFrom((org.apache.mesos.v1.scheduler.Protos.Call.Reconcile)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.scheduler.Protos.Call.Reconcile other) {
+          if (other == org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.getDefaultInstance()) return this;
+          if (tasksBuilder_ == null) {
+            if (!other.tasks_.isEmpty()) {
+              if (tasks_.isEmpty()) {
+                tasks_ = other.tasks_;
+                bitField0_ = (bitField0_ & ~0x00000001);
+              } else {
+                ensureTasksIsMutable();
+                tasks_.addAll(other.tasks_);
+              }
+              onChanged();
+            }
+          } else {
+            if (!other.tasks_.isEmpty()) {
+              if (tasksBuilder_.isEmpty()) {
+                tasksBuilder_.dispose();
+                tasksBuilder_ = null;
+                tasks_ = other.tasks_;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                tasksBuilder_ = 
+                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                     getTasksFieldBuilder() : null;
+              } else {
+                tasksBuilder_.addAllMessages(other.tasks_);
+              }
+            }
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          for (int i = 0; i < getTasksCount(); i++) {
+            if (!getTasks(i).isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.scheduler.Protos.Call.Reconcile parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.scheduler.Protos.Call.Reconcile) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // repeated .mesos.v1.scheduler.Call.Reconcile.Task tasks = 1;
+        private java.util.List<org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task> tasks_ =
+          java.util.Collections.emptyList();
+        private void ensureTasksIsMutable() {
+          if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+            tasks_ = new java.util.ArrayList<org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task>(tasks_);
+            bitField0_ |= 0x00000001;
+           }
+        }
+
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task, org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task.Builder, org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.TaskOrBuilder> tasksBuilder_;
+
+        /**
+         * <code>repeated .mesos.v1.scheduler.Call.Reconcile.Task tasks = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task> getTasksList() {
+          if (tasksBuilder_ == null) {
+            return java.util.Collections.unmodifiableList(tasks_);
+          } else {
+            return tasksBuilder_.getMessageList();
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.scheduler.Call.Reconcile.Task tasks = 1;</code>
+         */
+        public int getTasksCount() {
+          if (tasksBuilder_ == null) {
+            return tasks_.size();
+          } else {
+            return tasksBuilder_.getCount();
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.scheduler.Call.Reconcile.Task tasks = 1;</code>
+         */
+        public org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task getTasks(int index) {
+          if (tasksBuilder_ == null) {
+            return tasks_.get(index);
+          } else {
+            return tasksBuilder_.getMessage(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.scheduler.Call.Reconcile.Task tasks = 1;</code>
+         */
+        public Builder setTasks(
+            int index, org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task value) {
+          if (tasksBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureTasksIsMutable();
+            tasks_.set(index, value);
+            onChanged();
+          } else {
+            tasksBuilder_.setMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.scheduler.Call.Reconcile.Task tasks = 1;</code>
+         */
+        public Builder setTasks(
+            int index, org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task.Builder builderForValue) {
+          if (tasksBuilder_ == null) {
+            ensureTasksIsMutable();
+            tasks_.set(index, builderForValue.build());
+            onChanged();
+          } else {
+            tasksBuilder_.setMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.scheduler.Call.Reconcile.Task tasks = 1;</code>
+         */
+        public Builder addTasks(org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task value) {
+          if (tasksBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureTasksIsMutable();
+            tasks_.add(value);
+            onChanged();
+          } else {
+            tasksBuilder_.addMessage(value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.scheduler.Call.Reconcile.Task tasks = 1;</code>
+         */
+        public Builder addTasks(
+            int index, org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task value) {
+          if (tasksBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureTasksIsMutable();
+            tasks_.add(index, value);
+            onChanged();
+          } else {
+            tasksBuilder_.addMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.scheduler.Call.Reconcile.Task tasks = 1;</code>
+         */
+        public Builder addTasks(
+            org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task.Builder builderForValue) {
+          if (tasksBuilder_ == null) {
+            ensureTasksIsMutable();
+            tasks_.add(builderForValue.build());
+            onChanged();
+          } else {
+            tasksBuilder_.addMessage(builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.scheduler.Call.Reconcile.Task tasks = 1;</code>
+         */
+        public Builder addTasks(
+            int index, org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task.Builder builderForValue) {
+          if (tasksBuilder_ == null) {
+            ensureTasksIsMutable();
+            tasks_.add(index, builderForValue.build());
+            onChanged();
+          } else {
+            tasksBuilder_.addMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.scheduler.Call.Reconcile.Task tasks = 1;</code>
+         */
+        public Builder addAllTasks(
+            java.lang.Iterable<? extends org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task> values) {
+          if (tasksBuilder_ == null) {
+            ensureTasksIsMutable();
+            super.addAll(values, tasks_);
+            onChanged();
+          } else {
+            tasksBuilder_.addAllMessages(values);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.scheduler.Call.Reconcile.Task tasks = 1;</code>
+         */
+        public Builder clearTasks() {
+          if (tasksBuilder_ == null) {
+            tasks_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000001);
+            onChanged();
+          } else {
+            tasksBuilder_.clear();
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.scheduler.Call.Reconcile.Task tasks = 1;</code>
+         */
+        public Builder removeTasks(int index) {
+          if (tasksBuilder_ == null) {
+            ensureTasksIsMutable();
+            tasks_.remove(index);
+            onChanged();
+          } else {
+            tasksBuilder_.remove(index);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.scheduler.Call.Reconcile.Task tasks = 1;</code>
+         */
+        public org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task.Builder getTasksBuilder(
+            int index) {
+          return getTasksFieldBuilder().getBuilder(index);
+        }
+        /**
+         * <code>repeated .mesos.v1.scheduler.Call.Reconcile.Task tasks = 1;</code>
+         */
+        public org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.TaskOrBuilder getTasksOrBuilder(
+            int index) {
+          if (tasksBuilder_ == null) {
+            return tasks_.get(index);  } else {
+            return tasksBuilder_.getMessageOrBuilder(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.scheduler.Call.Reconcile.Task tasks = 1;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.TaskOrBuilder> 
+             getTasksOrBuilderList() {
+          if (tasksBuilder_ != null) {
+            return tasksBuilder_.getMessageOrBuilderList();
+          } else {
+            return java.util.Collections.unmodifiableList(tasks_);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.scheduler.Call.Reconcile.Task tasks = 1;</code>
+         */
+        public org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task.Builder addTasksBuilder() {
+          return getTasksFieldBuilder().addBuilder(
+              org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.v1.scheduler.Call.Reconcile.Task tasks = 1;</code>
+         */
+        public org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task.Builder addTasksBuilder(
+            int index) {
+          return getTasksFieldBuilder().addBuilder(
+              index, org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.v1.scheduler.Call.Reconcile.Task tasks = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task.Builder> 
+             getTasksBuilderList() {
+          return getTasksFieldBuilder().getBuilderList();
+        }
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task, org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task.Builder, org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.TaskOrBuilder> 
+            getTasksFieldBuilder() {
+          if (tasksBuilder_ == null) {
+            tasksBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task, org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Task.Builder, org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.TaskOrBuilder>(
+                    tasks_,
+                    ((bitField0_ & 0x00000001) == 0x00000001),
+                    getParentForChildren(),
+                    isClean());
+            tasks_ = null;
+          }
+          return tasksBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.scheduler.Call.Reconcile)
+      }
+
+      static {
+        defaultInstance = new Reconcile(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.scheduler.Call.Reconcile)
+    }
+
+    public interface MessageOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // required .mesos.v1.AgentID agent_id = 1;
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+       */
+      boolean hasAgentId();
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.AgentID getAgentId();
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.AgentIDOrBuilder getAgentIdOrBuilder();
+
+      // required .mesos.v1.ExecutorID executor_id = 2;
+      /**
+       * <code>required .mesos.v1.ExecutorID executor_id = 2;</code>
+       */
+      boolean hasExecutorId();
+      /**
+       * <code>required .mesos.v1.ExecutorID executor_id = 2;</code>
+       */
+      org.apache.mesos.v1.Protos.ExecutorID getExecutorId();
+      /**
+       * <code>required .mesos.v1.ExecutorID executor_id = 2;</code>
+       */
+      org.apache.mesos.v1.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder();
+
+      // required bytes data = 3;
+      /**
+       * <code>required bytes data = 3;</code>
+       */
+      boolean hasData();
+      /**
+       * <code>required bytes data = 3;</code>
+       */
+      com.google.protobuf.ByteString getData();
+    }
+    /**
+     * Protobuf type {@code mesos.v1.scheduler.Call.Message}
+     *
+     * <pre>
+     * Sends arbitrary binary data to the executor. Note that Mesos
+     * neither interprets this data nor makes any guarantees about the
+     * delivery of this message to the executor.
+     * </pre>
+     */
+    public static final class Message extends
+        com.google.protobuf.GeneratedMessage
+        implements MessageOrBuilder {
+      // Use Message.newBuilder() to construct.
+      private Message(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Message(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Message defaultInstance;
+      public static Message getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Message getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Message(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                org.apache.mesos.v1.Protos.AgentID.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = agentId_.toBuilder();
+                }
+                agentId_ = input.readMessage(org.apache.mesos.v1.Protos.AgentID.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(agentId_);
+                  agentId_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+              case 18: {
+                org.apache.mesos.v1.Protos.ExecutorID.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                  subBuilder = executorId_.toBuilder();
+                }
+                executorId_ = input.readMessage(org.apache.mesos.v1.Protos.ExecutorID.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(executorId_);
+                  executorId_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000002;
+                break;
+              }
+              case 26: {
+                bitField0_ |= 0x00000004;
+                data_ = input.readBytes();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Message_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Message_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.scheduler.Protos.Call.Message.class, org.apache.mesos.v1.scheduler.Protos.Call.Message.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Message> PARSER =
+          new com.google.protobuf.AbstractParser<Message>() {
+        public Message parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Message(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Message> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
+      // required .mesos.v1.AgentID agent_id = 1;
+      public static final int AGENT_ID_FIELD_NUMBER = 1;
+      private org.apache.mesos.v1.Protos.AgentID agentId_;
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+       */
+      public boolean hasAgentId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.AgentID getAgentId() {
+        return agentId_;
+      }
+      /**
+       * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.AgentIDOrBuilder getAgentIdOrBuilder() {
+        return agentId_;
+      }
+
+      // required .mesos.v1.ExecutorID executor_id = 2;
+      public static final int EXECUTOR_ID_FIELD_NUMBER = 2;
+      private org.apache.mesos.v1.Protos.ExecutorID executorId_;
+      /**
+       * <code>required .mesos.v1.ExecutorID executor_id = 2;</code>
+       */
+      public boolean hasExecutorId() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required .mesos.v1.ExecutorID executor_id = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.ExecutorID getExecutorId() {
+        return executorId_;
+      }
+      /**
+       * <code>required .mesos.v1.ExecutorID executor_id = 2;</code>
+       */
+      public org.apache.mesos.v1.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder() {
+        return executorId_;
+      }
+
+      // required bytes data = 3;
+      public static final int DATA_FIELD_NUMBER = 3;
+      private com.google.protobuf.ByteString data_;
+      /**
+       * <code>required bytes data = 3;</code>
+       */
+      public boolean hasData() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>required bytes data = 3;</code>
+       */
+      public com.google.protobuf.ByteString getData() {
+        return data_;
+      }
+
+      private void initFields() {
+        agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+        executorId_ = org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance();
+        data_ = com.google.protobuf.ByteString.EMPTY;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        if (!hasAgentId()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!hasExecutorId()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!hasData()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getAgentId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        if (!getExecutorId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, agentId_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeMessage(2, executorId_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeBytes(3, data_);
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, agentId_);
+        }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(2, executorId_);
+        }
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(3, data_);
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Message parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Message parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Message parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Message parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Message parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Message parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Message parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Message parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Message parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Message parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.scheduler.Protos.Call.Message prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.scheduler.Call.Message}
+       *
+       * <pre>
+       * Sends arbitrary binary data to the executor. Note that Mesos
+       * neither interprets this data nor makes any guarantees about the
+       * delivery of this message to the executor.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.scheduler.Protos.Call.MessageOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Message_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Message_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.scheduler.Protos.Call.Message.class, org.apache.mesos.v1.scheduler.Protos.Call.Message.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.scheduler.Protos.Call.Message.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getAgentIdFieldBuilder();
+            getExecutorIdFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (agentIdBuilder_ == null) {
+            agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+          } else {
+            agentIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          if (executorIdBuilder_ == null) {
+            executorId_ = org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance();
+          } else {
+            executorIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          data_ = com.google.protobuf.ByteString.EMPTY;
+          bitField0_ = (bitField0_ & ~0x00000004);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Message_descriptor;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Call.Message getDefaultInstanceForType() {
+          return org.apache.mesos.v1.scheduler.Protos.Call.Message.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Call.Message build() {
+          org.apache.mesos.v1.scheduler.Protos.Call.Message result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Call.Message buildPartial() {
+          org.apache.mesos.v1.scheduler.Protos.Call.Message result = new org.apache.mesos.v1.scheduler.Protos.Call.Message(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          if (agentIdBuilder_ == null) {
+            result.agentId_ = agentId_;
+          } else {
+            result.agentId_ = agentIdBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          if (executorIdBuilder_ == null) {
+            result.executorId_ = executorId_;
+          } else {
+            result.executorId_ = executorIdBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          result.data_ = data_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.scheduler.Protos.Call.Message) {
+            return mergeFrom((org.apache.mesos.v1.scheduler.Protos.Call.Message)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.scheduler.Protos.Call.Message other) {
+          if (other == org.apache.mesos.v1.scheduler.Protos.Call.Message.getDefaultInstance()) return this;
+          if (other.hasAgentId()) {
+            mergeAgentId(other.getAgentId());
+          }
+          if (other.hasExecutorId()) {
+            mergeExecutorId(other.getExecutorId());
+          }
+          if (other.hasData()) {
+            setData(other.getData());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          if (!hasAgentId()) {
+            
+            return false;
+          }
+          if (!hasExecutorId()) {
+            
+            return false;
+          }
+          if (!hasData()) {
+            
+            return false;
+          }
+          if (!getAgentId().isInitialized()) {
+            
+            return false;
+          }
+          if (!getExecutorId().isInitialized()) {
+            
+            return false;
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.scheduler.Protos.Call.Message parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.scheduler.Protos.Call.Message) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // required .mesos.v1.AgentID agent_id = 1;
+        private org.apache.mesos.v1.Protos.AgentID agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.AgentID, org.apache.mesos.v1.Protos.AgentID.Builder, org.apache.mesos.v1.Protos.AgentIDOrBuilder> agentIdBuilder_;
+        /**
+         * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+         */
+        public boolean hasAgentId() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.AgentID getAgentId() {
+          if (agentIdBuilder_ == null) {
+            return agentId_;
+          } else {
+            return agentIdBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+         */
+        public Builder setAgentId(org.apache.mesos.v1.Protos.AgentID value) {
+          if (agentIdBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            agentId_ = value;
+            onChanged();
+          } else {
+            agentIdBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+         */
+        public Builder setAgentId(
+            org.apache.mesos.v1.Protos.AgentID.Builder builderForValue) {
+          if (agentIdBuilder_ == null) {
+            agentId_ = builderForValue.build();
+            onChanged();
+          } else {
+            agentIdBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+         */
+        public Builder mergeAgentId(org.apache.mesos.v1.Protos.AgentID value) {
+          if (agentIdBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                agentId_ != org.apache.mesos.v1.Protos.AgentID.getDefaultInstance()) {
+              agentId_ =
+                org.apache.mesos.v1.Protos.AgentID.newBuilder(agentId_).mergeFrom(value).buildPartial();
+            } else {
+              agentId_ = value;
+            }
+            onChanged();
+          } else {
+            agentIdBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+         */
+        public Builder clearAgentId() {
+          if (agentIdBuilder_ == null) {
+            agentId_ = org.apache.mesos.v1.Protos.AgentID.getDefaultInstance();
+            onChanged();
+          } else {
+            agentIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.AgentID.Builder getAgentIdBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getAgentIdFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.AgentIDOrBuilder getAgentIdOrBuilder() {
+          if (agentIdBuilder_ != null) {
+            return agentIdBuilder_.getMessageOrBuilder();
+          } else {
+            return agentId_;
+          }
+        }
+        /**
+         * <code>required .mesos.v1.AgentID agent_id = 1;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.AgentID, org.apache.mesos.v1.Protos.AgentID.Builder, org.apache.mesos.v1.Protos.AgentIDOrBuilder> 
+            getAgentIdFieldBuilder() {
+          if (agentIdBuilder_ == null) {
+            agentIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.AgentID, org.apache.mesos.v1.Protos.AgentID.Builder, org.apache.mesos.v1.Protos.AgentIDOrBuilder>(
+                    agentId_,
+                    getParentForChildren(),
+                    isClean());
+            agentId_ = null;
+          }
+          return agentIdBuilder_;
+        }
+
+        // required .mesos.v1.ExecutorID executor_id = 2;
+        private org.apache.mesos.v1.Protos.ExecutorID executorId_ = org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance();
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.ExecutorID, org.apache.mesos.v1.Protos.ExecutorID.Builder, org.apache.mesos.v1.Protos.ExecutorIDOrBuilder> executorIdBuilder_;
+        /**
+         * <code>required .mesos.v1.ExecutorID executor_id = 2;</code>
+         */
+        public boolean hasExecutorId() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>required .mesos.v1.ExecutorID executor_id = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.ExecutorID getExecutorId() {
+          if (executorIdBuilder_ == null) {
+            return executorId_;
+          } else {
+            return executorIdBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>required .mesos.v1.ExecutorID executor_id = 2;</code>
+         */
+        public Builder setExecutorId(org.apache.mesos.v1.Protos.ExecutorID value) {
+          if (executorIdBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            executorId_ = value;
+            onChanged();
+          } else {
+            executorIdBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.ExecutorID executor_id = 2;</code>
+         */
+        public Builder setExecutorId(
+            org.apache.mesos.v1.Protos.ExecutorID.Builder builderForValue) {
+          if (executorIdBuilder_ == null) {
+            executorId_ = builderForValue.build();
+            onChanged();
+          } else {
+            executorIdBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.ExecutorID executor_id = 2;</code>
+         */
+        public Builder mergeExecutorId(org.apache.mesos.v1.Protos.ExecutorID value) {
+          if (executorIdBuilder_ == null) {
+            if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                executorId_ != org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance()) {
+              executorId_ =
+                org.apache.mesos.v1.Protos.ExecutorID.newBuilder(executorId_).mergeFrom(value).buildPartial();
+            } else {
+              executorId_ = value;
+            }
+            onChanged();
+          } else {
+            executorIdBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.ExecutorID executor_id = 2;</code>
+         */
+        public Builder clearExecutorId() {
+          if (executorIdBuilder_ == null) {
+            executorId_ = org.apache.mesos.v1.Protos.ExecutorID.getDefaultInstance();
+            onChanged();
+          } else {
+            executorIdBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+        /**
+         * <code>required .mesos.v1.ExecutorID executor_id = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.ExecutorID.Builder getExecutorIdBuilder() {
+          bitField0_ |= 0x00000002;
+          onChanged();
+          return getExecutorIdFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>required .mesos.v1.ExecutorID executor_id = 2;</code>
+         */
+        public org.apache.mesos.v1.Protos.ExecutorIDOrBuilder getExecutorIdOrBuilder() {
+          if (executorIdBuilder_ != null) {
+            return executorIdBuilder_.getMessageOrBuilder();
+          } else {
+            return executorId_;
+          }
+        }
+        /**
+         * <code>required .mesos.v1.ExecutorID executor_id = 2;</code>
+         */
+        private com.google.protobuf.SingleFieldBuilder<
+            org.apache.mesos.v1.Protos.ExecutorID, org.apache.mesos.v1.Protos.ExecutorID.Builder, org.apache.mesos.v1.Protos.ExecutorIDOrBuilder> 
+            getExecutorIdFieldBuilder() {
+          if (executorIdBuilder_ == null) {
+            executorIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+                org.apache.mesos.v1.Protos.ExecutorID, org.apache.mesos.v1.Protos.ExecutorID.Builder, org.apache.mesos.v1.Protos.ExecutorIDOrBuilder>(
+                    executorId_,
+                    getParentForChildren(),
+                    isClean());
+            executorId_ = null;
+          }
+          return executorIdBuilder_;
+        }
+
+        // required bytes data = 3;
+        private com.google.protobuf.ByteString data_ = com.google.protobuf.ByteString.EMPTY;
+        /**
+         * <code>required bytes data = 3;</code>
+         */
+        public boolean hasData() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>required bytes data = 3;</code>
+         */
+        public com.google.protobuf.ByteString getData() {
+          return data_;
+        }
+        /**
+         * <code>required bytes data = 3;</code>
+         */
+        public Builder setData(com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+          data_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>required bytes data = 3;</code>
+         */
+        public Builder clearData() {
+          bitField0_ = (bitField0_ & ~0x00000004);
+          data_ = getDefaultInstance().getData();
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.scheduler.Call.Message)
+      }
+
+      static {
+        defaultInstance = new Message(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.scheduler.Call.Message)
+    }
+
+    public interface RequestOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // repeated .mesos.v1.Request requests = 1;
+      /**
+       * <code>repeated .mesos.v1.Request requests = 1;</code>
+       */
+      java.util.List<org.apache.mesos.v1.Protos.Request> 
+          getRequestsList();
+      /**
+       * <code>repeated .mesos.v1.Request requests = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.Request getRequests(int index);
+      /**
+       * <code>repeated .mesos.v1.Request requests = 1;</code>
+       */
+      int getRequestsCount();
+      /**
+       * <code>repeated .mesos.v1.Request requests = 1;</code>
+       */
+      java.util.List<? extends org.apache.mesos.v1.Protos.RequestOrBuilder> 
+          getRequestsOrBuilderList();
+      /**
+       * <code>repeated .mesos.v1.Request requests = 1;</code>
+       */
+      org.apache.mesos.v1.Protos.RequestOrBuilder getRequestsOrBuilder(
+          int index);
+    }
+    /**
+     * Protobuf type {@code mesos.v1.scheduler.Call.Request}
+     *
+     * <pre>
+     * Requests a specific set of resources from Mesos's allocator. If
+     * the allocator has support for this, corresponding offers will be
+     * sent asynchronously via the OFFERS event(s).
+     *
+     * NOTE: The built-in hierarchical allocator doesn't have support
+     * for this call and hence simply ignores it.
+     * </pre>
+     */
+    public static final class Request extends
+        com.google.protobuf.GeneratedMessage
+        implements RequestOrBuilder {
+      // Use Request.newBuilder() to construct.
+      private Request(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Request(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Request defaultInstance;
+      public static Request getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Request getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Request(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                  requests_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Request>();
+                  mutable_bitField0_ |= 0x00000001;
+                }
+                requests_.add(input.readMessage(org.apache.mesos.v1.Protos.Request.PARSER, extensionRegistry));
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+            requests_ = java.util.Collections.unmodifiableList(requests_);
+          }
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Request_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Request_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.scheduler.Protos.Call.Request.class, org.apache.mesos.v1.scheduler.Protos.Call.Request.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Request> PARSER =
+          new com.google.protobuf.AbstractParser<Request>() {
+        public Request parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Request(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Request> getParserForType() {
+        return PARSER;
+      }
+
+      // repeated .mesos.v1.Request requests = 1;
+      public static final int REQUESTS_FIELD_NUMBER = 1;
+      private java.util.List<org.apache.mesos.v1.Protos.Request> requests_;
+      /**
+       * <code>repeated .mesos.v1.Request requests = 1;</code>
+       */
+      public java.util.List<org.apache.mesos.v1.Protos.Request> getRequestsList() {
+        return requests_;
+      }
+      /**
+       * <code>repeated .mesos.v1.Request requests = 1;</code>
+       */
+      public java.util.List<? extends org.apache.mesos.v1.Protos.RequestOrBuilder> 
+          getRequestsOrBuilderList() {
+        return requests_;
+      }
+      /**
+       * <code>repeated .mesos.v1.Request requests = 1;</code>
+       */
+      public int getRequestsCount() {
+        return requests_.size();
+      }
+      /**
+       * <code>repeated .mesos.v1.Request requests = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.Request getRequests(int index) {
+        return requests_.get(index);
+      }
+      /**
+       * <code>repeated .mesos.v1.Request requests = 1;</code>
+       */
+      public org.apache.mesos.v1.Protos.RequestOrBuilder getRequestsOrBuilder(
+          int index) {
+        return requests_.get(index);
+      }
+
+      private void initFields() {
+        requests_ = java.util.Collections.emptyList();
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        for (int i = 0; i < getRequestsCount(); i++) {
+          if (!getRequests(i).isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        for (int i = 0; i < requests_.size(); i++) {
+          output.writeMessage(1, requests_.get(i));
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        for (int i = 0; i < requests_.size(); i++) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(1, requests_.get(i));
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Request parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Request parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Request parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Request parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Request parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Request parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Request parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Request parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Request parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Request parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.scheduler.Protos.Call.Request prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.scheduler.Call.Request}
+       *
+       * <pre>
+       * Requests a specific set of resources from Mesos's allocator. If
+       * the allocator has support for this, corresponding offers will be
+       * sent asynchronously via the OFFERS event(s).
+       *
+       * NOTE: The built-in hierarchical allocator doesn't have support
+       * for this call and hence simply ignores it.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.scheduler.Protos.Call.RequestOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Request_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Request_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.scheduler.Protos.Call.Request.class, org.apache.mesos.v1.scheduler.Protos.Call.Request.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.scheduler.Protos.Call.Request.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getRequestsFieldBuilder();
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (requestsBuilder_ == null) {
+            requests_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000001);
+          } else {
+            requestsBuilder_.clear();
+          }
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Request_descriptor;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Call.Request getDefaultInstanceForType() {
+          return org.apache.mesos.v1.scheduler.Protos.Call.Request.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Call.Request build() {
+          org.apache.mesos.v1.scheduler.Protos.Call.Request result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Call.Request buildPartial() {
+          org.apache.mesos.v1.scheduler.Protos.Call.Request result = new org.apache.mesos.v1.scheduler.Protos.Call.Request(this);
+          int from_bitField0_ = bitField0_;
+          if (requestsBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              requests_ = java.util.Collections.unmodifiableList(requests_);
+              bitField0_ = (bitField0_ & ~0x00000001);
+            }
+            result.requests_ = requests_;
+          } else {
+            result.requests_ = requestsBuilder_.build();
+          }
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.scheduler.Protos.Call.Request) {
+            return mergeFrom((org.apache.mesos.v1.scheduler.Protos.Call.Request)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.scheduler.Protos.Call.Request other) {
+          if (other == org.apache.mesos.v1.scheduler.Protos.Call.Request.getDefaultInstance()) return this;
+          if (requestsBuilder_ == null) {
+            if (!other.requests_.isEmpty()) {
+              if (requests_.isEmpty()) {
+                requests_ = other.requests_;
+                bitField0_ = (bitField0_ & ~0x00000001);
+              } else {
+                ensureRequestsIsMutable();
+                requests_.addAll(other.requests_);
+              }
+              onChanged();
+            }
+          } else {
+            if (!other.requests_.isEmpty()) {
+              if (requestsBuilder_.isEmpty()) {
+                requestsBuilder_.dispose();
+                requestsBuilder_ = null;
+                requests_ = other.requests_;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                requestsBuilder_ = 
+                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                     getRequestsFieldBuilder() : null;
+              } else {
+                requestsBuilder_.addAllMessages(other.requests_);
+              }
+            }
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          for (int i = 0; i < getRequestsCount(); i++) {
+            if (!getRequests(i).isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.scheduler.Protos.Call.Request parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.scheduler.Protos.Call.Request) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // repeated .mesos.v1.Request requests = 1;
+        private java.util.List<org.apache.mesos.v1.Protos.Request> requests_ =
+          java.util.Collections.emptyList();
+        private void ensureRequestsIsMutable() {
+          if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+            requests_ = new java.util.ArrayList<org.apache.mesos.v1.Protos.Request>(requests_);
+            bitField0_ |= 0x00000001;
+           }
+        }
+
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.v1.Protos.Request, org.apache.mesos.v1.Protos.Request.Builder, org.apache.mesos.v1.Protos.RequestOrBuilder> requestsBuilder_;
+
+        /**
+         * <code>repeated .mesos.v1.Request requests = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.v1.Protos.Request> getRequestsList() {
+          if (requestsBuilder_ == null) {
+            return java.util.Collections.unmodifiableList(requests_);
+          } else {
+            return requestsBuilder_.getMessageList();
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.Request requests = 1;</code>
+         */
+        public int getRequestsCount() {
+          if (requestsBuilder_ == null) {
+            return requests_.size();
+          } else {
+            return requestsBuilder_.getCount();
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.Request requests = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.Request getRequests(int index) {
+          if (requestsBuilder_ == null) {
+            return requests_.get(index);
+          } else {
+            return requestsBuilder_.getMessage(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.Request requests = 1;</code>
+         */
+        public Builder setRequests(
+            int index, org.apache.mesos.v1.Protos.Request value) {
+          if (requestsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureRequestsIsMutable();
+            requests_.set(index, value);
+            onChanged();
+          } else {
+            requestsBuilder_.setMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Request requests = 1;</code>
+         */
+        public Builder setRequests(
+            int index, org.apache.mesos.v1.Protos.Request.Builder builderForValue) {
+          if (requestsBuilder_ == null) {
+            ensureRequestsIsMutable();
+            requests_.set(index, builderForValue.build());
+            onChanged();
+          } else {
+            requestsBuilder_.setMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Request requests = 1;</code>
+         */
+        public Builder addRequests(org.apache.mesos.v1.Protos.Request value) {
+          if (requestsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureRequestsIsMutable();
+            requests_.add(value);
+            onChanged();
+          } else {
+            requestsBuilder_.addMessage(value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Request requests = 1;</code>
+         */
+        public Builder addRequests(
+            int index, org.apache.mesos.v1.Protos.Request value) {
+          if (requestsBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            ensureRequestsIsMutable();
+            requests_.add(index, value);
+            onChanged();
+          } else {
+            requestsBuilder_.addMessage(index, value);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Request requests = 1;</code>
+         */
+        public Builder addRequests(
+            org.apache.mesos.v1.Protos.Request.Builder builderForValue) {
+          if (requestsBuilder_ == null) {
+            ensureRequestsIsMutable();
+            requests_.add(builderForValue.build());
+            onChanged();
+          } else {
+            requestsBuilder_.addMessage(builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Request requests = 1;</code>
+         */
+        public Builder addRequests(
+            int index, org.apache.mesos.v1.Protos.Request.Builder builderForValue) {
+          if (requestsBuilder_ == null) {
+            ensureRequestsIsMutable();
+            requests_.add(index, builderForValue.build());
+            onChanged();
+          } else {
+            requestsBuilder_.addMessage(index, builderForValue.build());
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Request requests = 1;</code>
+         */
+        public Builder addAllRequests(
+            java.lang.Iterable<? extends org.apache.mesos.v1.Protos.Request> values) {
+          if (requestsBuilder_ == null) {
+            ensureRequestsIsMutable();
+            super.addAll(values, requests_);
+            onChanged();
+          } else {
+            requestsBuilder_.addAllMessages(values);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Request requests = 1;</code>
+         */
+        public Builder clearRequests() {
+          if (requestsBuilder_ == null) {
+            requests_ = java.util.Collections.emptyList();
+            bitField0_ = (bitField0_ & ~0x00000001);
+            onChanged();
+          } else {
+            requestsBuilder_.clear();
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Request requests = 1;</code>
+         */
+        public Builder removeRequests(int index) {
+          if (requestsBuilder_ == null) {
+            ensureRequestsIsMutable();
+            requests_.remove(index);
+            onChanged();
+          } else {
+            requestsBuilder_.remove(index);
+          }
+          return this;
+        }
+        /**
+         * <code>repeated .mesos.v1.Request requests = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.Request.Builder getRequestsBuilder(
+            int index) {
+          return getRequestsFieldBuilder().getBuilder(index);
+        }
+        /**
+         * <code>repeated .mesos.v1.Request requests = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.RequestOrBuilder getRequestsOrBuilder(
+            int index) {
+          if (requestsBuilder_ == null) {
+            return requests_.get(index);  } else {
+            return requestsBuilder_.getMessageOrBuilder(index);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.Request requests = 1;</code>
+         */
+        public java.util.List<? extends org.apache.mesos.v1.Protos.RequestOrBuilder> 
+             getRequestsOrBuilderList() {
+          if (requestsBuilder_ != null) {
+            return requestsBuilder_.getMessageOrBuilderList();
+          } else {
+            return java.util.Collections.unmodifiableList(requests_);
+          }
+        }
+        /**
+         * <code>repeated .mesos.v1.Request requests = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.Request.Builder addRequestsBuilder() {
+          return getRequestsFieldBuilder().addBuilder(
+              org.apache.mesos.v1.Protos.Request.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.v1.Request requests = 1;</code>
+         */
+        public org.apache.mesos.v1.Protos.Request.Builder addRequestsBuilder(
+            int index) {
+          return getRequestsFieldBuilder().addBuilder(
+              index, org.apache.mesos.v1.Protos.Request.getDefaultInstance());
+        }
+        /**
+         * <code>repeated .mesos.v1.Request requests = 1;</code>
+         */
+        public java.util.List<org.apache.mesos.v1.Protos.Request.Builder> 
+             getRequestsBuilderList() {
+          return getRequestsFieldBuilder().getBuilderList();
+        }
+        private com.google.protobuf.RepeatedFieldBuilder<
+            org.apache.mesos.v1.Protos.Request, org.apache.mesos.v1.Protos.Request.Builder, org.apache.mesos.v1.Protos.RequestOrBuilder> 
+            getRequestsFieldBuilder() {
+          if (requestsBuilder_ == null) {
+            requestsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+                org.apache.mesos.v1.Protos.Request, org.apache.mesos.v1.Protos.Request.Builder, org.apache.mesos.v1.Protos.RequestOrBuilder>(
+                    requests_,
+                    ((bitField0_ & 0x00000001) == 0x00000001),
+                    getParentForChildren(),
+                    isClean());
+            requests_ = null;
+          }
+          return requestsBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.scheduler.Call.Request)
+      }
+
+      static {
+        defaultInstance = new Request(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.scheduler.Call.Request)
+    }
+
+    public interface SuppressOrBuilder
+        extends com.google.protobuf.MessageOrBuilder {
+
+      // repeated string roles = 1;
+      /**
+       * <code>repeated string roles = 1;</code>
+       */
+      java.util.List<java.lang.String>
+      getRolesList();
+      /**
+       * <code>repeated string roles = 1;</code>
+       */
+      int getRolesCount();
+      /**
+       * <code>repeated string roles = 1;</code>
+       */
+      java.lang.String getRoles(int index);
+      /**
+       * <code>repeated string roles = 1;</code>
+       */
+      com.google.protobuf.ByteString
+          getRolesBytes(int index);
+    }
+    /**
+     * Protobuf type {@code mesos.v1.scheduler.Call.Suppress}
+     *
+     * <pre>
+     * Suppress offers for the specified roles. If `roles` is empty,
+     * the `SUPPRESS` call will suppress offers for all of the roles
+     * the framework is currently subscribed to.
+     * </pre>
+     */
+    public static final class Suppress extends
+        com.google.protobuf.GeneratedMessage
+        implements SuppressOrBuilder {
+      // Use Suppress.newBuilder() to construct.
+      private Suppress(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Suppress(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Suppress defaultInstance;
+      public static Suppress getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Suppress getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Suppress(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                  roles_ = new com.google.protobuf.LazyStringArrayList();
+                  mutable_bitField0_ |= 0x00000001;
+                }
+                roles_.add(input.readBytes());
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+            roles_ = new com.google.protobuf.UnmodifiableLazyStringList(roles_);
+          }
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Suppress_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Suppress_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.scheduler.Protos.Call.Suppress.class, org.apache.mesos.v1.scheduler.Protos.Call.Suppress.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Suppress> PARSER =
+          new com.google.protobuf.AbstractParser<Suppress>() {
+        public Suppress parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Suppress(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Suppress> getParserForType() {
+        return PARSER;
+      }
+
+      // repeated string roles = 1;
+      public static final int ROLES_FIELD_NUMBER = 1;
+      private com.google.protobuf.LazyStringList roles_;
+      /**
+       * <code>repeated string roles = 1;</code>
+       */
+      public java.util.List<java.lang.String>
+          getRolesList() {
+        return roles_;
+      }
+      /**
+       * <code>repeated string roles = 1;</code>
+       */
+      public int getRolesCount() {
+        return roles_.size();
+      }
+      /**
+       * <code>repeated string roles = 1;</code>
+       */
+      public java.lang.String getRoles(int index) {
+        return roles_.get(index);
+      }
+      /**
+       * <code>repeated string roles = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getRolesBytes(int index) {
+        return roles_.getByteString(index);
+      }
+
+      private void initFields() {
+        roles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+      }
+      private byte memoizedIsInitialized = -1;
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        getSerializedSize();
+        for (int i = 0; i < roles_.size(); i++) {
+          output.writeBytes(1, roles_.getByteString(i));
+        }
+        getUnknownFields().writeTo(output);
+      }
+
+      private int memoizedSerializedSize = -1;
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        {
+          int dataSize = 0;
+          for (int i = 0; i < roles_.size(); i++) {
+            dataSize += com.google.protobuf.CodedOutputStream
+              .computeBytesSizeNoTag(roles_.getByteString(i));
+          }
+          size += dataSize;
+          size += 1 * getRolesList().size();
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+
+      private static final long serialVersionUID = 0L;
+      @java.lang.Override
+      protected java.lang.Object writeReplace()
+          throws java.io.ObjectStreamException {
+        return super.writeReplace();
+      }
+
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Suppress parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Suppress parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Suppress parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Suppress parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Suppress parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Suppress parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Suppress parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Suppress parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Suppress parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input);
+      }
+      public static org.apache.mesos.v1.scheduler.Protos.Call.Suppress parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return PARSER.parseFrom(input, extensionRegistry);
+      }
+
+      public static Builder newBuilder() { return Builder.create(); }
+      public Builder newBuilderForType() { return newBuilder(); }
+      public static Builder newBuilder(org.apache.mesos.v1.scheduler.Protos.Call.Suppress prototype) {
+        return newBuilder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code mesos.v1.scheduler.Call.Suppress}
+       *
+       * <pre>
+       * Suppress offers for the specified roles. If `roles` is empty,
+       * the `SUPPRESS` call will suppress offers for all of the roles
+       * the framework is currently subscribed to.
+       * </pre>
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder>
+         implements org.apache.mesos.v1.scheduler.Protos.Call.SuppressOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Suppress_descriptor;
+        }
+
+        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Suppress_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.mesos.v1.scheduler.Protos.Call.Suppress.class, org.apache.mesos.v1.scheduler.Protos.Call.Suppress.Builder.class);
+        }
+
+        // Construct using org.apache.mesos.v1.scheduler.Protos.Call.Suppress.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          }
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          roles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        public Builder clone() {
+          return create().mergeFrom(buildPartial());
+        }
+
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_Suppress_descriptor;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Call.Suppress getDefaultInstanceForType() {
+          return org.apache.mesos.v1.scheduler.Protos.Call.Suppress.getDefaultInstance();
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Call.Suppress build() {
+          org.apache.mesos.v1.scheduler.Protos.Call.Suppress result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        public org.apache.mesos.v1.scheduler.Protos.Call.Suppress buildPartial() {
+          org.apache.mesos.v1.scheduler.Protos.Call.Suppress result = new org.apache.mesos.v1.scheduler.Protos.Call.Suppress(this);
+          int from_bitField0_ = bitField0_;
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            roles_ = new com.google.protobuf.UnmodifiableLazyStringList(
+                roles_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.roles_ = roles_;
+          onBuilt();
+          return result;
+        }
+
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.mesos.v1.scheduler.Protos.Call.Suppress) {
+            return mergeFrom((org.apache.mesos.v1.scheduler.Protos.Call.Suppress)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.mesos.v1.scheduler.Protos.Call.Suppress other) {
+          if (other == org.apache.mesos.v1.scheduler.Protos.Call.Suppress.getDefaultInstance()) return this;
+          if (!other.roles_.isEmpty()) {
+            if (roles_.isEmpty()) {
+              roles_ = other.roles_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureRolesIsMutable();
+              roles_.addAll(other.roles_);
+            }
+            onChanged();
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+
+        public final boolean isInitialized() {
+          return true;
+        }
+
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          org.apache.mesos.v1.scheduler.Protos.Call.Suppress parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.mesos.v1.scheduler.Protos.Call.Suppress) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // repeated string roles = 1;
+        private com.google.protobuf.LazyStringList roles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+        private void ensureRolesIsMutable() {
+          if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+            roles_ = new com.google.protobuf.LazyStringArrayList(roles_);
+            bitField0_ |= 0x00000001;
+           }
+        }
+        /**
+         * <code>repeated string roles = 1;</code>
+         */
+        public java.util.List<java.lang.String>
+            getRolesList() {
+          return java.util.Collections.unmodifiableList(roles_);
+        }
+        /**
+         * <code>repeated string roles = 1;</code>
+         */
+        public int getRolesCount() {
+          return roles_.size();
+        }
+        /**
+         * <code>repeated string roles = 1;</code>
+         */
+        public java.lang.String getRoles(int index) {
+          return roles_.get(index);
+        }
+        /**
+         * <code>repeated string roles = 1;</code>
+         */
+        public com.google.protobuf.ByteString
+            getRolesBytes(int index) {
+          return roles_.getByteString(index);
+        }
+        /**
+         * <code>repeated string roles = 1;</code>
+         */
+        public Builder setRoles(
+            int index, java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureRolesIsMutable();
+          roles_.set(index, value);
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>repeated string roles = 1;</code>
+         */
+        public Builder addRoles(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureRolesIsMutable();
+          roles_.add(value);
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>repeated string roles = 1;</code>
+         */
+        public Builder addAllRoles(
+            java.lang.Iterable<java.lang.String> values) {
+          ensureRolesIsMutable();
+          super.addAll(values, roles_);
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>repeated string roles = 1;</code>
+         */
+        public Builder clearRoles() {
+          roles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>repeated string roles = 1;</code>
+         */
+        public Builder addRolesBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureRolesIsMutable();
+          roles_.add(value);
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:mesos.v1.scheduler.Call.Suppress)
+      }
+
+      static {
+        defaultInstance = new Suppress(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:mesos.v1.scheduler.Call.Suppress)
+    }
+
+    private int bitField0_;
+    // optional .mesos.v1.FrameworkID framework_id = 1;
+    public static final int FRAMEWORK_ID_FIELD_NUMBER = 1;
+    private org.apache.mesos.v1.Protos.FrameworkID frameworkId_;
+    /**
+     * <code>optional .mesos.v1.FrameworkID framework_id = 1;</code>
+     *
+     * <pre>
+     * Identifies who generated this call. Master assigns a framework id
+     * when a new scheduler subscribes for the first time. Once assigned,
+     * the scheduler must set the 'framework_id' here and within its
+     * FrameworkInfo (in any further 'Subscribe' calls). This allows the
+     * master to identify a scheduler correctly across disconnections,
+     * failovers, etc.
+     * </pre>
+     */
+    public boolean hasFrameworkId() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional .mesos.v1.FrameworkID framework_id = 1;</code>
+     *
+     * <pre>
+     * Identifies who generated this call. Master assigns a framework id
+     * when a new scheduler subscribes for the first time. Once assigned,
+     * the scheduler must set the 'framework_id' here and within its
+     * FrameworkInfo (in any further 'Subscribe' calls). This allows the
+     * master to identify a scheduler correctly across disconnections,
+     * failovers, etc.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.FrameworkID getFrameworkId() {
+      return frameworkId_;
+    }
+    /**
+     * <code>optional .mesos.v1.FrameworkID framework_id = 1;</code>
+     *
+     * <pre>
+     * Identifies who generated this call. Master assigns a framework id
+     * when a new scheduler subscribes for the first time. Once assigned,
+     * the scheduler must set the 'framework_id' here and within its
+     * FrameworkInfo (in any further 'Subscribe' calls). This allows the
+     * master to identify a scheduler correctly across disconnections,
+     * failovers, etc.
+     * </pre>
+     */
+    public org.apache.mesos.v1.Protos.FrameworkIDOrBuilder getFrameworkIdOrBuilder() {
+      return frameworkId_;
+    }
+
+    // optional .mesos.v1.scheduler.Call.Type type = 2;
+    public static final int TYPE_FIELD_NUMBER = 2;
+    private org.apache.mesos.v1.scheduler.Protos.Call.Type type_;
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Type type = 2;</code>
+     *
+     * <pre>
+     * Type of the call, indicates which optional field below should be
+     * present if that type has a nested message definition.
+     * See comments on `Event::Type` above on the reasoning behind this field being optional.
+     * </pre>
+     */
+    public boolean hasType() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Type type = 2;</code>
+     *
+     * <pre>
+     * Type of the call, indicates which optional field below should be
+     * present if that type has a nested message definition.
+     * See comments on `Event::Type` above on the reasoning behind this field being optional.
+     * </pre>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Call.Type getType() {
+      return type_;
+    }
+
+    // optional .mesos.v1.scheduler.Call.Subscribe subscribe = 3;
+    public static final int SUBSCRIBE_FIELD_NUMBER = 3;
+    private org.apache.mesos.v1.scheduler.Protos.Call.Subscribe subscribe_;
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Subscribe subscribe = 3;</code>
+     */
+    public boolean hasSubscribe() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Subscribe subscribe = 3;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Call.Subscribe getSubscribe() {
+      return subscribe_;
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Subscribe subscribe = 3;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Call.SubscribeOrBuilder getSubscribeOrBuilder() {
+      return subscribe_;
+    }
+
+    // optional .mesos.v1.scheduler.Call.Accept accept = 4;
+    public static final int ACCEPT_FIELD_NUMBER = 4;
+    private org.apache.mesos.v1.scheduler.Protos.Call.Accept accept_;
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Accept accept = 4;</code>
+     */
+    public boolean hasAccept() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Accept accept = 4;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Call.Accept getAccept() {
+      return accept_;
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Accept accept = 4;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Call.AcceptOrBuilder getAcceptOrBuilder() {
+      return accept_;
+    }
+
+    // optional .mesos.v1.scheduler.Call.Decline decline = 5;
+    public static final int DECLINE_FIELD_NUMBER = 5;
+    private org.apache.mesos.v1.scheduler.Protos.Call.Decline decline_;
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Decline decline = 5;</code>
+     */
+    public boolean hasDecline() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Decline decline = 5;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Call.Decline getDecline() {
+      return decline_;
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Decline decline = 5;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Call.DeclineOrBuilder getDeclineOrBuilder() {
+      return decline_;
+    }
+
+    // optional .mesos.v1.scheduler.Call.AcceptInverseOffers accept_inverse_offers = 13;
+    public static final int ACCEPT_INVERSE_OFFERS_FIELD_NUMBER = 13;
+    private org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers acceptInverseOffers_;
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.AcceptInverseOffers accept_inverse_offers = 13;</code>
+     */
+    public boolean hasAcceptInverseOffers() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.AcceptInverseOffers accept_inverse_offers = 13;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers getAcceptInverseOffers() {
+      return acceptInverseOffers_;
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.AcceptInverseOffers accept_inverse_offers = 13;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffersOrBuilder getAcceptInverseOffersOrBuilder() {
+      return acceptInverseOffers_;
+    }
+
+    // optional .mesos.v1.scheduler.Call.DeclineInverseOffers decline_inverse_offers = 14;
+    public static final int DECLINE_INVERSE_OFFERS_FIELD_NUMBER = 14;
+    private org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers declineInverseOffers_;
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.DeclineInverseOffers decline_inverse_offers = 14;</code>
+     */
+    public boolean hasDeclineInverseOffers() {
+      return ((bitField0_ & 0x00000040) == 0x00000040);
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.DeclineInverseOffers decline_inverse_offers = 14;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers getDeclineInverseOffers() {
+      return declineInverseOffers_;
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.DeclineInverseOffers decline_inverse_offers = 14;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffersOrBuilder getDeclineInverseOffersOrBuilder() {
+      return declineInverseOffers_;
+    }
+
+    // optional .mesos.v1.scheduler.Call.Revive revive = 15;
+    public static final int REVIVE_FIELD_NUMBER = 15;
+    private org.apache.mesos.v1.scheduler.Protos.Call.Revive revive_;
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Revive revive = 15;</code>
+     */
+    public boolean hasRevive() {
+      return ((bitField0_ & 0x00000080) == 0x00000080);
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Revive revive = 15;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Call.Revive getRevive() {
+      return revive_;
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Revive revive = 15;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Call.ReviveOrBuilder getReviveOrBuilder() {
+      return revive_;
+    }
+
+    // optional .mesos.v1.scheduler.Call.Kill kill = 6;
+    public static final int KILL_FIELD_NUMBER = 6;
+    private org.apache.mesos.v1.scheduler.Protos.Call.Kill kill_;
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Kill kill = 6;</code>
+     */
+    public boolean hasKill() {
+      return ((bitField0_ & 0x00000100) == 0x00000100);
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Kill kill = 6;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Call.Kill getKill() {
+      return kill_;
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Kill kill = 6;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Call.KillOrBuilder getKillOrBuilder() {
+      return kill_;
+    }
+
+    // optional .mesos.v1.scheduler.Call.Shutdown shutdown = 7;
+    public static final int SHUTDOWN_FIELD_NUMBER = 7;
+    private org.apache.mesos.v1.scheduler.Protos.Call.Shutdown shutdown_;
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Shutdown shutdown = 7;</code>
+     */
+    public boolean hasShutdown() {
+      return ((bitField0_ & 0x00000200) == 0x00000200);
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Shutdown shutdown = 7;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Call.Shutdown getShutdown() {
+      return shutdown_;
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Shutdown shutdown = 7;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Call.ShutdownOrBuilder getShutdownOrBuilder() {
+      return shutdown_;
+    }
+
+    // optional .mesos.v1.scheduler.Call.Acknowledge acknowledge = 8;
+    public static final int ACKNOWLEDGE_FIELD_NUMBER = 8;
+    private org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge acknowledge_;
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Acknowledge acknowledge = 8;</code>
+     */
+    public boolean hasAcknowledge() {
+      return ((bitField0_ & 0x00000400) == 0x00000400);
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Acknowledge acknowledge = 8;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge getAcknowledge() {
+      return acknowledge_;
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Acknowledge acknowledge = 8;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Call.AcknowledgeOrBuilder getAcknowledgeOrBuilder() {
+      return acknowledge_;
+    }
+
+    // optional .mesos.v1.scheduler.Call.Reconcile reconcile = 9;
+    public static final int RECONCILE_FIELD_NUMBER = 9;
+    private org.apache.mesos.v1.scheduler.Protos.Call.Reconcile reconcile_;
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Reconcile reconcile = 9;</code>
+     */
+    public boolean hasReconcile() {
+      return ((bitField0_ & 0x00000800) == 0x00000800);
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Reconcile reconcile = 9;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Call.Reconcile getReconcile() {
+      return reconcile_;
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Reconcile reconcile = 9;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Call.ReconcileOrBuilder getReconcileOrBuilder() {
+      return reconcile_;
+    }
+
+    // optional .mesos.v1.scheduler.Call.Message message = 10;
+    public static final int MESSAGE_FIELD_NUMBER = 10;
+    private org.apache.mesos.v1.scheduler.Protos.Call.Message message_;
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Message message = 10;</code>
+     */
+    public boolean hasMessage() {
+      return ((bitField0_ & 0x00001000) == 0x00001000);
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Message message = 10;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Call.Message getMessage() {
+      return message_;
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Message message = 10;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Call.MessageOrBuilder getMessageOrBuilder() {
+      return message_;
+    }
+
+    // optional .mesos.v1.scheduler.Call.Request request = 11;
+    public static final int REQUEST_FIELD_NUMBER = 11;
+    private org.apache.mesos.v1.scheduler.Protos.Call.Request request_;
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Request request = 11;</code>
+     */
+    public boolean hasRequest() {
+      return ((bitField0_ & 0x00002000) == 0x00002000);
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Request request = 11;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Call.Request getRequest() {
+      return request_;
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Request request = 11;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Call.RequestOrBuilder getRequestOrBuilder() {
+      return request_;
+    }
+
+    // optional .mesos.v1.scheduler.Call.Suppress suppress = 16;
+    public static final int SUPPRESS_FIELD_NUMBER = 16;
+    private org.apache.mesos.v1.scheduler.Protos.Call.Suppress suppress_;
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Suppress suppress = 16;</code>
+     */
+    public boolean hasSuppress() {
+      return ((bitField0_ & 0x00004000) == 0x00004000);
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Suppress suppress = 16;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Call.Suppress getSuppress() {
+      return suppress_;
+    }
+    /**
+     * <code>optional .mesos.v1.scheduler.Call.Suppress suppress = 16;</code>
+     */
+    public org.apache.mesos.v1.scheduler.Protos.Call.SuppressOrBuilder getSuppressOrBuilder() {
+      return suppress_;
+    }
+
+    private void initFields() {
+      frameworkId_ = org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance();
+      type_ = org.apache.mesos.v1.scheduler.Protos.Call.Type.UNKNOWN;
+      subscribe_ = org.apache.mesos.v1.scheduler.Protos.Call.Subscribe.getDefaultInstance();
+      accept_ = org.apache.mesos.v1.scheduler.Protos.Call.Accept.getDefaultInstance();
+      decline_ = org.apache.mesos.v1.scheduler.Protos.Call.Decline.getDefaultInstance();
+      acceptInverseOffers_ = org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers.getDefaultInstance();
+      declineInverseOffers_ = org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers.getDefaultInstance();
+      revive_ = org.apache.mesos.v1.scheduler.Protos.Call.Revive.getDefaultInstance();
+      kill_ = org.apache.mesos.v1.scheduler.Protos.Call.Kill.getDefaultInstance();
+      shutdown_ = org.apache.mesos.v1.scheduler.Protos.Call.Shutdown.getDefaultInstance();
+      acknowledge_ = org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge.getDefaultInstance();
+      reconcile_ = org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.getDefaultInstance();
+      message_ = org.apache.mesos.v1.scheduler.Protos.Call.Message.getDefaultInstance();
+      request_ = org.apache.mesos.v1.scheduler.Protos.Call.Request.getDefaultInstance();
+      suppress_ = org.apache.mesos.v1.scheduler.Protos.Call.Suppress.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (hasFrameworkId()) {
+        if (!getFrameworkId().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasSubscribe()) {
+        if (!getSubscribe().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasAccept()) {
+        if (!getAccept().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasDecline()) {
+        if (!getDecline().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasAcceptInverseOffers()) {
+        if (!getAcceptInverseOffers().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasDeclineInverseOffers()) {
+        if (!getDeclineInverseOffers().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasKill()) {
+        if (!getKill().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasShutdown()) {
+        if (!getShutdown().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasAcknowledge()) {
+        if (!getAcknowledge().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasReconcile()) {
+        if (!getReconcile().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasMessage()) {
+        if (!getMessage().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasRequest()) {
+        if (!getRequest().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeMessage(1, frameworkId_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeEnum(2, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeMessage(3, subscribe_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeMessage(4, accept_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeMessage(5, decline_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        output.writeMessage(6, kill_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        output.writeMessage(7, shutdown_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        output.writeMessage(8, acknowledge_);
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        output.writeMessage(9, reconcile_);
+      }
+      if (((bitField0_ & 0x00001000) == 0x00001000)) {
+        output.writeMessage(10, message_);
+      }
+      if (((bitField0_ & 0x00002000) == 0x00002000)) {
+        output.writeMessage(11, request_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeMessage(13, acceptInverseOffers_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        output.writeMessage(14, declineInverseOffers_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        output.writeMessage(15, revive_);
+      }
+      if (((bitField0_ & 0x00004000) == 0x00004000)) {
+        output.writeMessage(16, suppress_);
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, frameworkId_);
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(2, type_.getNumber());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, subscribe_);
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, accept_);
+      }
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(5, decline_);
+      }
+      if (((bitField0_ & 0x00000100) == 0x00000100)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(6, kill_);
+      }
+      if (((bitField0_ & 0x00000200) == 0x00000200)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(7, shutdown_);
+      }
+      if (((bitField0_ & 0x00000400) == 0x00000400)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(8, acknowledge_);
+      }
+      if (((bitField0_ & 0x00000800) == 0x00000800)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(9, reconcile_);
+      }
+      if (((bitField0_ & 0x00001000) == 0x00001000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(10, message_);
+      }
+      if (((bitField0_ & 0x00002000) == 0x00002000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(11, request_);
+      }
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(13, acceptInverseOffers_);
+      }
+      if (((bitField0_ & 0x00000040) == 0x00000040)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(14, declineInverseOffers_);
+      }
+      if (((bitField0_ & 0x00000080) == 0x00000080)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(15, revive_);
+      }
+      if (((bitField0_ & 0x00004000) == 0x00004000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(16, suppress_);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    public static org.apache.mesos.v1.scheduler.Protos.Call parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.scheduler.Protos.Call parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.scheduler.Protos.Call parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.mesos.v1.scheduler.Protos.Call parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.scheduler.Protos.Call parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.scheduler.Protos.Call parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.scheduler.Protos.Call parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.mesos.v1.scheduler.Protos.Call parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.mesos.v1.scheduler.Protos.Call parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.mesos.v1.scheduler.Protos.Call parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.mesos.v1.scheduler.Protos.Call prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code mesos.v1.scheduler.Call}
+     *
+     * <pre>
+     **
+     * Scheduler call API.
+     *
+     * Like Event, a Call is described using the standard protocol buffer
+     * "union" trick (see above).
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.mesos.v1.scheduler.Protos.CallOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.mesos.v1.scheduler.Protos.Call.class, org.apache.mesos.v1.scheduler.Protos.Call.Builder.class);
+      }
+
+      // Construct using org.apache.mesos.v1.scheduler.Protos.Call.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getFrameworkIdFieldBuilder();
+          getSubscribeFieldBuilder();
+          getAcceptFieldBuilder();
+          getDeclineFieldBuilder();
+          getAcceptInverseOffersFieldBuilder();
+          getDeclineInverseOffersFieldBuilder();
+          getReviveFieldBuilder();
+          getKillFieldBuilder();
+          getShutdownFieldBuilder();
+          getAcknowledgeFieldBuilder();
+          getReconcileFieldBuilder();
+          getMessageFieldBuilder();
+          getRequestFieldBuilder();
+          getSuppressFieldBuilder();
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        if (frameworkIdBuilder_ == null) {
+          frameworkId_ = org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance();
+        } else {
+          frameworkIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        type_ = org.apache.mesos.v1.scheduler.Protos.Call.Type.UNKNOWN;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        if (subscribeBuilder_ == null) {
+          subscribe_ = org.apache.mesos.v1.scheduler.Protos.Call.Subscribe.getDefaultInstance();
+        } else {
+          subscribeBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        if (acceptBuilder_ == null) {
+          accept_ = org.apache.mesos.v1.scheduler.Protos.Call.Accept.getDefaultInstance();
+        } else {
+          acceptBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        if (declineBuilder_ == null) {
+          decline_ = org.apache.mesos.v1.scheduler.Protos.Call.Decline.getDefaultInstance();
+        } else {
+          declineBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        if (acceptInverseOffersBuilder_ == null) {
+          acceptInverseOffers_ = org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers.getDefaultInstance();
+        } else {
+          acceptInverseOffersBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
+        if (declineInverseOffersBuilder_ == null) {
+          declineInverseOffers_ = org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers.getDefaultInstance();
+        } else {
+          declineInverseOffersBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000040);
+        if (reviveBuilder_ == null) {
+          revive_ = org.apache.mesos.v1.scheduler.Protos.Call.Revive.getDefaultInstance();
+        } else {
+          reviveBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000080);
+        if (killBuilder_ == null) {
+          kill_ = org.apache.mesos.v1.scheduler.Protos.Call.Kill.getDefaultInstance();
+        } else {
+          killBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000100);
+        if (shutdownBuilder_ == null) {
+          shutdown_ = org.apache.mesos.v1.scheduler.Protos.Call.Shutdown.getDefaultInstance();
+        } else {
+          shutdownBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000200);
+        if (acknowledgeBuilder_ == null) {
+          acknowledge_ = org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge.getDefaultInstance();
+        } else {
+          acknowledgeBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000400);
+        if (reconcileBuilder_ == null) {
+          reconcile_ = org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.getDefaultInstance();
+        } else {
+          reconcileBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000800);
+        if (messageBuilder_ == null) {
+          message_ = org.apache.mesos.v1.scheduler.Protos.Call.Message.getDefaultInstance();
+        } else {
+          messageBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00001000);
+        if (requestBuilder_ == null) {
+          request_ = org.apache.mesos.v1.scheduler.Protos.Call.Request.getDefaultInstance();
+        } else {
+          requestBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00002000);
+        if (suppressBuilder_ == null) {
+          suppress_ = org.apache.mesos.v1.scheduler.Protos.Call.Suppress.getDefaultInstance();
+        } else {
+          suppressBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00004000);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.mesos.v1.scheduler.Protos.internal_static_mesos_v1_scheduler_Call_descriptor;
+      }
+
+      public org.apache.mesos.v1.scheduler.Protos.Call getDefaultInstanceForType() {
+        return org.apache.mesos.v1.scheduler.Protos.Call.getDefaultInstance();
+      }
+
+      public org.apache.mesos.v1.scheduler.Protos.Call build() {
+        org.apache.mesos.v1.scheduler.Protos.Call result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.mesos.v1.scheduler.Protos.Call buildPartial() {
+        org.apache.mesos.v1.scheduler.Protos.Call result = new org.apache.mesos.v1.scheduler.Protos.Call(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        if (frameworkIdBuilder_ == null) {
+          result.frameworkId_ = frameworkId_;
+        } else {
+          result.frameworkId_ = frameworkIdBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.type_ = type_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        if (subscribeBuilder_ == null) {
+          result.subscribe_ = subscribe_;
+        } else {
+          result.subscribe_ = subscribeBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        if (acceptBuilder_ == null) {
+          result.accept_ = accept_;
+        } else {
+          result.accept_ = acceptBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        if (declineBuilder_ == null) {
+          result.decline_ = decline_;
+        } else {
+          result.decline_ = declineBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        if (acceptInverseOffersBuilder_ == null) {
+          result.acceptInverseOffers_ = acceptInverseOffers_;
+        } else {
+          result.acceptInverseOffers_ = acceptInverseOffersBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+          to_bitField0_ |= 0x00000040;
+        }
+        if (declineInverseOffersBuilder_ == null) {
+          result.declineInverseOffers_ = declineInverseOffers_;
+        } else {
+          result.declineInverseOffers_ = declineInverseOffersBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+          to_bitField0_ |= 0x00000080;
+        }
+        if (reviveBuilder_ == null) {
+          result.revive_ = revive_;
+        } else {
+          result.revive_ = reviveBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
+          to_bitField0_ |= 0x00000100;
+        }
+        if (killBuilder_ == null) {
+          result.kill_ = kill_;
+        } else {
+          result.kill_ = killBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
+          to_bitField0_ |= 0x00000200;
+        }
+        if (shutdownBuilder_ == null) {
+          result.shutdown_ = shutdown_;
+        } else {
+          result.shutdown_ = shutdownBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
+          to_bitField0_ |= 0x00000400;
+        }
+        if (acknowledgeBuilder_ == null) {
+          result.acknowledge_ = acknowledge_;
+        } else {
+          result.acknowledge_ = acknowledgeBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
+          to_bitField0_ |= 0x00000800;
+        }
+        if (reconcileBuilder_ == null) {
+          result.reconcile_ = reconcile_;
+        } else {
+          result.reconcile_ = reconcileBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
+          to_bitField0_ |= 0x00001000;
+        }
+        if (messageBuilder_ == null) {
+          result.message_ = message_;
+        } else {
+          result.message_ = messageBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00002000) == 0x00002000)) {
+          to_bitField0_ |= 0x00002000;
+        }
+        if (requestBuilder_ == null) {
+          result.request_ = request_;
+        } else {
+          result.request_ = requestBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00004000) == 0x00004000)) {
+          to_bitField0_ |= 0x00004000;
+        }
+        if (suppressBuilder_ == null) {
+          result.suppress_ = suppress_;
+        } else {
+          result.suppress_ = suppressBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.mesos.v1.scheduler.Protos.Call) {
+          return mergeFrom((org.apache.mesos.v1.scheduler.Protos.Call)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.mesos.v1.scheduler.Protos.Call other) {
+        if (other == org.apache.mesos.v1.scheduler.Protos.Call.getDefaultInstance()) return this;
+        if (other.hasFrameworkId()) {
+          mergeFrameworkId(other.getFrameworkId());
+        }
+        if (other.hasType()) {
+          setType(other.getType());
+        }
+        if (other.hasSubscribe()) {
+          mergeSubscribe(other.getSubscribe());
+        }
+        if (other.hasAccept()) {
+          mergeAccept(other.getAccept());
+        }
+        if (other.hasDecline()) {
+          mergeDecline(other.getDecline());
+        }
+        if (other.hasAcceptInverseOffers()) {
+          mergeAcceptInverseOffers(other.getAcceptInverseOffers());
+        }
+        if (other.hasDeclineInverseOffers()) {
+          mergeDeclineInverseOffers(other.getDeclineInverseOffers());
+        }
+        if (other.hasRevive()) {
+          mergeRevive(other.getRevive());
+        }
+        if (other.hasKill()) {
+          mergeKill(other.getKill());
+        }
+        if (other.hasShutdown()) {
+          mergeShutdown(other.getShutdown());
+        }
+        if (other.hasAcknowledge()) {
+          mergeAcknowledge(other.getAcknowledge());
+        }
+        if (other.hasReconcile()) {
+          mergeReconcile(other.getReconcile());
+        }
+        if (other.hasMessage()) {
+          mergeMessage(other.getMessage());
+        }
+        if (other.hasRequest()) {
+          mergeRequest(other.getRequest());
+        }
+        if (other.hasSuppress()) {
+          mergeSuppress(other.getSuppress());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (hasFrameworkId()) {
+          if (!getFrameworkId().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasSubscribe()) {
+          if (!getSubscribe().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasAccept()) {
+          if (!getAccept().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasDecline()) {
+          if (!getDecline().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasAcceptInverseOffers()) {
+          if (!getAcceptInverseOffers().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasDeclineInverseOffers()) {
+          if (!getDeclineInverseOffers().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasKill()) {
+          if (!getKill().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasShutdown()) {
+          if (!getShutdown().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasAcknowledge()) {
+          if (!getAcknowledge().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasReconcile()) {
+          if (!getReconcile().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasMessage()) {
+          if (!getMessage().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasRequest()) {
+          if (!getRequest().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.mesos.v1.scheduler.Protos.Call parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.mesos.v1.scheduler.Protos.Call) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // optional .mesos.v1.FrameworkID framework_id = 1;
+      private org.apache.mesos.v1.Protos.FrameworkID frameworkId_ = org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.FrameworkID, org.apache.mesos.v1.Protos.FrameworkID.Builder, org.apache.mesos.v1.Protos.FrameworkIDOrBuilder> frameworkIdBuilder_;
+      /**
+       * <code>optional .mesos.v1.FrameworkID framework_id = 1;</code>
+       *
+       * <pre>
+       * Identifies who generated this call. Master assigns a framework id
+       * when a new scheduler subscribes for the first time. Once assigned,
+       * the scheduler must set the 'framework_id' here and within its
+       * FrameworkInfo (in any further 'Subscribe' calls). This allows the
+       * master to identify a scheduler correctly across disconnections,
+       * failovers, etc.
+       * </pre>
+       */
+      public boolean hasFrameworkId() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .mesos.v1.FrameworkID framework_id = 1;</code>
+       *
+       * <pre>
+       * Identifies who generated this call. Master assigns a framework id
+       * when a new scheduler subscribes for the first time. Once assigned,
+       * the scheduler must set the 'framework_id' here and within its
+       * FrameworkInfo (in any further 'Subscribe' calls). This allows the
+       * master to identify a scheduler correctly across disconnections,
+       * failovers, etc.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.FrameworkID getFrameworkId() {
+        if (frameworkIdBuilder_ == null) {
+          return frameworkId_;
+        } else {
+          return frameworkIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.FrameworkID framework_id = 1;</code>
+       *
+       * <pre>
+       * Identifies who generated this call. Master assigns a framework id
+       * when a new scheduler subscribes for the first time. Once assigned,
+       * the scheduler must set the 'framework_id' here and within its
+       * FrameworkInfo (in any further 'Subscribe' calls). This allows the
+       * master to identify a scheduler correctly across disconnections,
+       * failovers, etc.
+       * </pre>
+       */
+      public Builder setFrameworkId(org.apache.mesos.v1.Protos.FrameworkID value) {
+        if (frameworkIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          frameworkId_ = value;
+          onChanged();
+        } else {
+          frameworkIdBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.FrameworkID framework_id = 1;</code>
+       *
+       * <pre>
+       * Identifies who generated this call. Master assigns a framework id
+       * when a new scheduler subscribes for the first time. Once assigned,
+       * the scheduler must set the 'framework_id' here and within its
+       * FrameworkInfo (in any further 'Subscribe' calls). This allows the
+       * master to identify a scheduler correctly across disconnections,
+       * failovers, etc.
+       * </pre>
+       */
+      public Builder setFrameworkId(
+          org.apache.mesos.v1.Protos.FrameworkID.Builder builderForValue) {
+        if (frameworkIdBuilder_ == null) {
+          frameworkId_ = builderForValue.build();
+          onChanged();
+        } else {
+          frameworkIdBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.FrameworkID framework_id = 1;</code>
+       *
+       * <pre>
+       * Identifies who generated this call. Master assigns a framework id
+       * when a new scheduler subscribes for the first time. Once assigned,
+       * the scheduler must set the 'framework_id' here and within its
+       * FrameworkInfo (in any further 'Subscribe' calls). This allows the
+       * master to identify a scheduler correctly across disconnections,
+       * failovers, etc.
+       * </pre>
+       */
+      public Builder mergeFrameworkId(org.apache.mesos.v1.Protos.FrameworkID value) {
+        if (frameworkIdBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) == 0x00000001) &&
+              frameworkId_ != org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance()) {
+            frameworkId_ =
+              org.apache.mesos.v1.Protos.FrameworkID.newBuilder(frameworkId_).mergeFrom(value).buildPartial();
+          } else {
+            frameworkId_ = value;
+          }
+          onChanged();
+        } else {
+          frameworkIdBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.FrameworkID framework_id = 1;</code>
+       *
+       * <pre>
+       * Identifies who generated this call. Master assigns a framework id
+       * when a new scheduler subscribes for the first time. Once assigned,
+       * the scheduler must set the 'framework_id' here and within its
+       * FrameworkInfo (in any further 'Subscribe' calls). This allows the
+       * master to identify a scheduler correctly across disconnections,
+       * failovers, etc.
+       * </pre>
+       */
+      public Builder clearFrameworkId() {
+        if (frameworkIdBuilder_ == null) {
+          frameworkId_ = org.apache.mesos.v1.Protos.FrameworkID.getDefaultInstance();
+          onChanged();
+        } else {
+          frameworkIdBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.FrameworkID framework_id = 1;</code>
+       *
+       * <pre>
+       * Identifies who generated this call. Master assigns a framework id
+       * when a new scheduler subscribes for the first time. Once assigned,
+       * the scheduler must set the 'framework_id' here and within its
+       * FrameworkInfo (in any further 'Subscribe' calls). This allows the
+       * master to identify a scheduler correctly across disconnections,
+       * failovers, etc.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.FrameworkID.Builder getFrameworkIdBuilder() {
+        bitField0_ |= 0x00000001;
+        onChanged();
+        return getFrameworkIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.FrameworkID framework_id = 1;</code>
+       *
+       * <pre>
+       * Identifies who generated this call. Master assigns a framework id
+       * when a new scheduler subscribes for the first time. Once assigned,
+       * the scheduler must set the 'framework_id' here and within its
+       * FrameworkInfo (in any further 'Subscribe' calls). This allows the
+       * master to identify a scheduler correctly across disconnections,
+       * failovers, etc.
+       * </pre>
+       */
+      public org.apache.mesos.v1.Protos.FrameworkIDOrBuilder getFrameworkIdOrBuilder() {
+        if (frameworkIdBuilder_ != null) {
+          return frameworkIdBuilder_.getMessageOrBuilder();
+        } else {
+          return frameworkId_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.FrameworkID framework_id = 1;</code>
+       *
+       * <pre>
+       * Identifies who generated this call. Master assigns a framework id
+       * when a new scheduler subscribes for the first time. Once assigned,
+       * the scheduler must set the 'framework_id' here and within its
+       * FrameworkInfo (in any further 'Subscribe' calls). This allows the
+       * master to identify a scheduler correctly across disconnections,
+       * failovers, etc.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.Protos.FrameworkID, org.apache.mesos.v1.Protos.FrameworkID.Builder, org.apache.mesos.v1.Protos.FrameworkIDOrBuilder> 
+          getFrameworkIdFieldBuilder() {
+        if (frameworkIdBuilder_ == null) {
+          frameworkIdBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.Protos.FrameworkID, org.apache.mesos.v1.Protos.FrameworkID.Builder, org.apache.mesos.v1.Protos.FrameworkIDOrBuilder>(
+                  frameworkId_,
+                  getParentForChildren(),
+                  isClean());
+          frameworkId_ = null;
+        }
+        return frameworkIdBuilder_;
+      }
+
+      // optional .mesos.v1.scheduler.Call.Type type = 2;
+      private org.apache.mesos.v1.scheduler.Protos.Call.Type type_ = org.apache.mesos.v1.scheduler.Protos.Call.Type.UNKNOWN;
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Type type = 2;</code>
+       *
+       * <pre>
+       * Type of the call, indicates which optional field below should be
+       * present if that type has a nested message definition.
+       * See comments on `Event::Type` above on the reasoning behind this field being optional.
+       * </pre>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Type type = 2;</code>
+       *
+       * <pre>
+       * Type of the call, indicates which optional field below should be
+       * present if that type has a nested message definition.
+       * See comments on `Event::Type` above on the reasoning behind this field being optional.
+       * </pre>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Call.Type getType() {
+        return type_;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Type type = 2;</code>
+       *
+       * <pre>
+       * Type of the call, indicates which optional field below should be
+       * present if that type has a nested message definition.
+       * See comments on `Event::Type` above on the reasoning behind this field being optional.
+       * </pre>
+       */
+      public Builder setType(org.apache.mesos.v1.scheduler.Protos.Call.Type value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000002;
+        type_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Type type = 2;</code>
+       *
+       * <pre>
+       * Type of the call, indicates which optional field below should be
+       * present if that type has a nested message definition.
+       * See comments on `Event::Type` above on the reasoning behind this field being optional.
+       * </pre>
+       */
+      public Builder clearType() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        type_ = org.apache.mesos.v1.scheduler.Protos.Call.Type.UNKNOWN;
+        onChanged();
+        return this;
+      }
+
+      // optional .mesos.v1.scheduler.Call.Subscribe subscribe = 3;
+      private org.apache.mesos.v1.scheduler.Protos.Call.Subscribe subscribe_ = org.apache.mesos.v1.scheduler.Protos.Call.Subscribe.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Call.Subscribe, org.apache.mesos.v1.scheduler.Protos.Call.Subscribe.Builder, org.apache.mesos.v1.scheduler.Protos.Call.SubscribeOrBuilder> subscribeBuilder_;
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Subscribe subscribe = 3;</code>
+       */
+      public boolean hasSubscribe() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Subscribe subscribe = 3;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Call.Subscribe getSubscribe() {
+        if (subscribeBuilder_ == null) {
+          return subscribe_;
+        } else {
+          return subscribeBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Subscribe subscribe = 3;</code>
+       */
+      public Builder setSubscribe(org.apache.mesos.v1.scheduler.Protos.Call.Subscribe value) {
+        if (subscribeBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          subscribe_ = value;
+          onChanged();
+        } else {
+          subscribeBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Subscribe subscribe = 3;</code>
+       */
+      public Builder setSubscribe(
+          org.apache.mesos.v1.scheduler.Protos.Call.Subscribe.Builder builderForValue) {
+        if (subscribeBuilder_ == null) {
+          subscribe_ = builderForValue.build();
+          onChanged();
+        } else {
+          subscribeBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Subscribe subscribe = 3;</code>
+       */
+      public Builder mergeSubscribe(org.apache.mesos.v1.scheduler.Protos.Call.Subscribe value) {
+        if (subscribeBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) == 0x00000004) &&
+              subscribe_ != org.apache.mesos.v1.scheduler.Protos.Call.Subscribe.getDefaultInstance()) {
+            subscribe_ =
+              org.apache.mesos.v1.scheduler.Protos.Call.Subscribe.newBuilder(subscribe_).mergeFrom(value).buildPartial();
+          } else {
+            subscribe_ = value;
+          }
+          onChanged();
+        } else {
+          subscribeBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Subscribe subscribe = 3;</code>
+       */
+      public Builder clearSubscribe() {
+        if (subscribeBuilder_ == null) {
+          subscribe_ = org.apache.mesos.v1.scheduler.Protos.Call.Subscribe.getDefaultInstance();
+          onChanged();
+        } else {
+          subscribeBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Subscribe subscribe = 3;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Call.Subscribe.Builder getSubscribeBuilder() {
+        bitField0_ |= 0x00000004;
+        onChanged();
+        return getSubscribeFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Subscribe subscribe = 3;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Call.SubscribeOrBuilder getSubscribeOrBuilder() {
+        if (subscribeBuilder_ != null) {
+          return subscribeBuilder_.getMessageOrBuilder();
+        } else {
+          return subscribe_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Subscribe subscribe = 3;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Call.Subscribe, org.apache.mesos.v1.scheduler.Protos.Call.Subscribe.Builder, org.apache.mesos.v1.scheduler.Protos.Call.SubscribeOrBuilder> 
+          getSubscribeFieldBuilder() {
+        if (subscribeBuilder_ == null) {
+          subscribeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.scheduler.Protos.Call.Subscribe, org.apache.mesos.v1.scheduler.Protos.Call.Subscribe.Builder, org.apache.mesos.v1.scheduler.Protos.Call.SubscribeOrBuilder>(
+                  subscribe_,
+                  getParentForChildren(),
+                  isClean());
+          subscribe_ = null;
+        }
+        return subscribeBuilder_;
+      }
+
+      // optional .mesos.v1.scheduler.Call.Accept accept = 4;
+      private org.apache.mesos.v1.scheduler.Protos.Call.Accept accept_ = org.apache.mesos.v1.scheduler.Protos.Call.Accept.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Call.Accept, org.apache.mesos.v1.scheduler.Protos.Call.Accept.Builder, org.apache.mesos.v1.scheduler.Protos.Call.AcceptOrBuilder> acceptBuilder_;
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Accept accept = 4;</code>
+       */
+      public boolean hasAccept() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Accept accept = 4;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Call.Accept getAccept() {
+        if (acceptBuilder_ == null) {
+          return accept_;
+        } else {
+          return acceptBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Accept accept = 4;</code>
+       */
+      public Builder setAccept(org.apache.mesos.v1.scheduler.Protos.Call.Accept value) {
+        if (acceptBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          accept_ = value;
+          onChanged();
+        } else {
+          acceptBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Accept accept = 4;</code>
+       */
+      public Builder setAccept(
+          org.apache.mesos.v1.scheduler.Protos.Call.Accept.Builder builderForValue) {
+        if (acceptBuilder_ == null) {
+          accept_ = builderForValue.build();
+          onChanged();
+        } else {
+          acceptBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Accept accept = 4;</code>
+       */
+      public Builder mergeAccept(org.apache.mesos.v1.scheduler.Protos.Call.Accept value) {
+        if (acceptBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008) &&
+              accept_ != org.apache.mesos.v1.scheduler.Protos.Call.Accept.getDefaultInstance()) {
+            accept_ =
+              org.apache.mesos.v1.scheduler.Protos.Call.Accept.newBuilder(accept_).mergeFrom(value).buildPartial();
+          } else {
+            accept_ = value;
+          }
+          onChanged();
+        } else {
+          acceptBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Accept accept = 4;</code>
+       */
+      public Builder clearAccept() {
+        if (acceptBuilder_ == null) {
+          accept_ = org.apache.mesos.v1.scheduler.Protos.Call.Accept.getDefaultInstance();
+          onChanged();
+        } else {
+          acceptBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Accept accept = 4;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Call.Accept.Builder getAcceptBuilder() {
+        bitField0_ |= 0x00000008;
+        onChanged();
+        return getAcceptFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Accept accept = 4;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Call.AcceptOrBuilder getAcceptOrBuilder() {
+        if (acceptBuilder_ != null) {
+          return acceptBuilder_.getMessageOrBuilder();
+        } else {
+          return accept_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Accept accept = 4;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Call.Accept, org.apache.mesos.v1.scheduler.Protos.Call.Accept.Builder, org.apache.mesos.v1.scheduler.Protos.Call.AcceptOrBuilder> 
+          getAcceptFieldBuilder() {
+        if (acceptBuilder_ == null) {
+          acceptBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.scheduler.Protos.Call.Accept, org.apache.mesos.v1.scheduler.Protos.Call.Accept.Builder, org.apache.mesos.v1.scheduler.Protos.Call.AcceptOrBuilder>(
+                  accept_,
+                  getParentForChildren(),
+                  isClean());
+          accept_ = null;
+        }
+        return acceptBuilder_;
+      }
+
+      // optional .mesos.v1.scheduler.Call.Decline decline = 5;
+      private org.apache.mesos.v1.scheduler.Protos.Call.Decline decline_ = org.apache.mesos.v1.scheduler.Protos.Call.Decline.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Call.Decline, org.apache.mesos.v1.scheduler.Protos.Call.Decline.Builder, org.apache.mesos.v1.scheduler.Protos.Call.DeclineOrBuilder> declineBuilder_;
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Decline decline = 5;</code>
+       */
+      public boolean hasDecline() {
+        return ((bitField0_ & 0x00000010) == 0x00000010);
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Decline decline = 5;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Call.Decline getDecline() {
+        if (declineBuilder_ == null) {
+          return decline_;
+        } else {
+          return declineBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Decline decline = 5;</code>
+       */
+      public Builder setDecline(org.apache.mesos.v1.scheduler.Protos.Call.Decline value) {
+        if (declineBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          decline_ = value;
+          onChanged();
+        } else {
+          declineBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Decline decline = 5;</code>
+       */
+      public Builder setDecline(
+          org.apache.mesos.v1.scheduler.Protos.Call.Decline.Builder builderForValue) {
+        if (declineBuilder_ == null) {
+          decline_ = builderForValue.build();
+          onChanged();
+        } else {
+          declineBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Decline decline = 5;</code>
+       */
+      public Builder mergeDecline(org.apache.mesos.v1.scheduler.Protos.Call.Decline value) {
+        if (declineBuilder_ == null) {
+          if (((bitField0_ & 0x00000010) == 0x00000010) &&
+              decline_ != org.apache.mesos.v1.scheduler.Protos.Call.Decline.getDefaultInstance()) {
+            decline_ =
+              org.apache.mesos.v1.scheduler.Protos.Call.Decline.newBuilder(decline_).mergeFrom(value).buildPartial();
+          } else {
+            decline_ = value;
+          }
+          onChanged();
+        } else {
+          declineBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Decline decline = 5;</code>
+       */
+      public Builder clearDecline() {
+        if (declineBuilder_ == null) {
+          decline_ = org.apache.mesos.v1.scheduler.Protos.Call.Decline.getDefaultInstance();
+          onChanged();
+        } else {
+          declineBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Decline decline = 5;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Call.Decline.Builder getDeclineBuilder() {
+        bitField0_ |= 0x00000010;
+        onChanged();
+        return getDeclineFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Decline decline = 5;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Call.DeclineOrBuilder getDeclineOrBuilder() {
+        if (declineBuilder_ != null) {
+          return declineBuilder_.getMessageOrBuilder();
+        } else {
+          return decline_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Decline decline = 5;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Call.Decline, org.apache.mesos.v1.scheduler.Protos.Call.Decline.Builder, org.apache.mesos.v1.scheduler.Protos.Call.DeclineOrBuilder> 
+          getDeclineFieldBuilder() {
+        if (declineBuilder_ == null) {
+          declineBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.scheduler.Protos.Call.Decline, org.apache.mesos.v1.scheduler.Protos.Call.Decline.Builder, org.apache.mesos.v1.scheduler.Protos.Call.DeclineOrBuilder>(
+                  decline_,
+                  getParentForChildren(),
+                  isClean());
+          decline_ = null;
+        }
+        return declineBuilder_;
+      }
+
+      // optional .mesos.v1.scheduler.Call.AcceptInverseOffers accept_inverse_offers = 13;
+      private org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers acceptInverseOffers_ = org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers, org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers.Builder, org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffersOrBuilder> acceptInverseOffersBuilder_;
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.AcceptInverseOffers accept_inverse_offers = 13;</code>
+       */
+      public boolean hasAcceptInverseOffers() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.AcceptInverseOffers accept_inverse_offers = 13;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers getAcceptInverseOffers() {
+        if (acceptInverseOffersBuilder_ == null) {
+          return acceptInverseOffers_;
+        } else {
+          return acceptInverseOffersBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.AcceptInverseOffers accept_inverse_offers = 13;</code>
+       */
+      public Builder setAcceptInverseOffers(org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers value) {
+        if (acceptInverseOffersBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          acceptInverseOffers_ = value;
+          onChanged();
+        } else {
+          acceptInverseOffersBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.AcceptInverseOffers accept_inverse_offers = 13;</code>
+       */
+      public Builder setAcceptInverseOffers(
+          org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers.Builder builderForValue) {
+        if (acceptInverseOffersBuilder_ == null) {
+          acceptInverseOffers_ = builderForValue.build();
+          onChanged();
+        } else {
+          acceptInverseOffersBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.AcceptInverseOffers accept_inverse_offers = 13;</code>
+       */
+      public Builder mergeAcceptInverseOffers(org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers value) {
+        if (acceptInverseOffersBuilder_ == null) {
+          if (((bitField0_ & 0x00000020) == 0x00000020) &&
+              acceptInverseOffers_ != org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers.getDefaultInstance()) {
+            acceptInverseOffers_ =
+              org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers.newBuilder(acceptInverseOffers_).mergeFrom(value).buildPartial();
+          } else {
+            acceptInverseOffers_ = value;
+          }
+          onChanged();
+        } else {
+          acceptInverseOffersBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.AcceptInverseOffers accept_inverse_offers = 13;</code>
+       */
+      public Builder clearAcceptInverseOffers() {
+        if (acceptInverseOffersBuilder_ == null) {
+          acceptInverseOffers_ = org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers.getDefaultInstance();
+          onChanged();
+        } else {
+          acceptInverseOffersBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.AcceptInverseOffers accept_inverse_offers = 13;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers.Builder getAcceptInverseOffersBuilder() {
+        bitField0_ |= 0x00000020;
+        onChanged();
+        return getAcceptInverseOffersFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.AcceptInverseOffers accept_inverse_offers = 13;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffersOrBuilder getAcceptInverseOffersOrBuilder() {
+        if (acceptInverseOffersBuilder_ != null) {
+          return acceptInverseOffersBuilder_.getMessageOrBuilder();
+        } else {
+          return acceptInverseOffers_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.AcceptInverseOffers accept_inverse_offers = 13;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers, org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers.Builder, org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffersOrBuilder> 
+          getAcceptInverseOffersFieldBuilder() {
+        if (acceptInverseOffersBuilder_ == null) {
+          acceptInverseOffersBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers, org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffers.Builder, org.apache.mesos.v1.scheduler.Protos.Call.AcceptInverseOffersOrBuilder>(
+                  acceptInverseOffers_,
+                  getParentForChildren(),
+                  isClean());
+          acceptInverseOffers_ = null;
+        }
+        return acceptInverseOffersBuilder_;
+      }
+
+      // optional .mesos.v1.scheduler.Call.DeclineInverseOffers decline_inverse_offers = 14;
+      private org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers declineInverseOffers_ = org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers, org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers.Builder, org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffersOrBuilder> declineInverseOffersBuilder_;
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.DeclineInverseOffers decline_inverse_offers = 14;</code>
+       */
+      public boolean hasDeclineInverseOffers() {
+        return ((bitField0_ & 0x00000040) == 0x00000040);
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.DeclineInverseOffers decline_inverse_offers = 14;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers getDeclineInverseOffers() {
+        if (declineInverseOffersBuilder_ == null) {
+          return declineInverseOffers_;
+        } else {
+          return declineInverseOffersBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.DeclineInverseOffers decline_inverse_offers = 14;</code>
+       */
+      public Builder setDeclineInverseOffers(org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers value) {
+        if (declineInverseOffersBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          declineInverseOffers_ = value;
+          onChanged();
+        } else {
+          declineInverseOffersBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.DeclineInverseOffers decline_inverse_offers = 14;</code>
+       */
+      public Builder setDeclineInverseOffers(
+          org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers.Builder builderForValue) {
+        if (declineInverseOffersBuilder_ == null) {
+          declineInverseOffers_ = builderForValue.build();
+          onChanged();
+        } else {
+          declineInverseOffersBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.DeclineInverseOffers decline_inverse_offers = 14;</code>
+       */
+      public Builder mergeDeclineInverseOffers(org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers value) {
+        if (declineInverseOffersBuilder_ == null) {
+          if (((bitField0_ & 0x00000040) == 0x00000040) &&
+              declineInverseOffers_ != org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers.getDefaultInstance()) {
+            declineInverseOffers_ =
+              org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers.newBuilder(declineInverseOffers_).mergeFrom(value).buildPartial();
+          } else {
+            declineInverseOffers_ = value;
+          }
+          onChanged();
+        } else {
+          declineInverseOffersBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.DeclineInverseOffers decline_inverse_offers = 14;</code>
+       */
+      public Builder clearDeclineInverseOffers() {
+        if (declineInverseOffersBuilder_ == null) {
+          declineInverseOffers_ = org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers.getDefaultInstance();
+          onChanged();
+        } else {
+          declineInverseOffersBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000040);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.DeclineInverseOffers decline_inverse_offers = 14;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers.Builder getDeclineInverseOffersBuilder() {
+        bitField0_ |= 0x00000040;
+        onChanged();
+        return getDeclineInverseOffersFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.DeclineInverseOffers decline_inverse_offers = 14;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffersOrBuilder getDeclineInverseOffersOrBuilder() {
+        if (declineInverseOffersBuilder_ != null) {
+          return declineInverseOffersBuilder_.getMessageOrBuilder();
+        } else {
+          return declineInverseOffers_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.DeclineInverseOffers decline_inverse_offers = 14;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers, org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers.Builder, org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffersOrBuilder> 
+          getDeclineInverseOffersFieldBuilder() {
+        if (declineInverseOffersBuilder_ == null) {
+          declineInverseOffersBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers, org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffers.Builder, org.apache.mesos.v1.scheduler.Protos.Call.DeclineInverseOffersOrBuilder>(
+                  declineInverseOffers_,
+                  getParentForChildren(),
+                  isClean());
+          declineInverseOffers_ = null;
+        }
+        return declineInverseOffersBuilder_;
+      }
+
+      // optional .mesos.v1.scheduler.Call.Revive revive = 15;
+      private org.apache.mesos.v1.scheduler.Protos.Call.Revive revive_ = org.apache.mesos.v1.scheduler.Protos.Call.Revive.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Call.Revive, org.apache.mesos.v1.scheduler.Protos.Call.Revive.Builder, org.apache.mesos.v1.scheduler.Protos.Call.ReviveOrBuilder> reviveBuilder_;
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Revive revive = 15;</code>
+       */
+      public boolean hasRevive() {
+        return ((bitField0_ & 0x00000080) == 0x00000080);
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Revive revive = 15;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Call.Revive getRevive() {
+        if (reviveBuilder_ == null) {
+          return revive_;
+        } else {
+          return reviveBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Revive revive = 15;</code>
+       */
+      public Builder setRevive(org.apache.mesos.v1.scheduler.Protos.Call.Revive value) {
+        if (reviveBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          revive_ = value;
+          onChanged();
+        } else {
+          reviveBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Revive revive = 15;</code>
+       */
+      public Builder setRevive(
+          org.apache.mesos.v1.scheduler.Protos.Call.Revive.Builder builderForValue) {
+        if (reviveBuilder_ == null) {
+          revive_ = builderForValue.build();
+          onChanged();
+        } else {
+          reviveBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Revive revive = 15;</code>
+       */
+      public Builder mergeRevive(org.apache.mesos.v1.scheduler.Protos.Call.Revive value) {
+        if (reviveBuilder_ == null) {
+          if (((bitField0_ & 0x00000080) == 0x00000080) &&
+              revive_ != org.apache.mesos.v1.scheduler.Protos.Call.Revive.getDefaultInstance()) {
+            revive_ =
+              org.apache.mesos.v1.scheduler.Protos.Call.Revive.newBuilder(revive_).mergeFrom(value).buildPartial();
+          } else {
+            revive_ = value;
+          }
+          onChanged();
+        } else {
+          reviveBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Revive revive = 15;</code>
+       */
+      public Builder clearRevive() {
+        if (reviveBuilder_ == null) {
+          revive_ = org.apache.mesos.v1.scheduler.Protos.Call.Revive.getDefaultInstance();
+          onChanged();
+        } else {
+          reviveBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000080);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Revive revive = 15;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Call.Revive.Builder getReviveBuilder() {
+        bitField0_ |= 0x00000080;
+        onChanged();
+        return getReviveFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Revive revive = 15;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Call.ReviveOrBuilder getReviveOrBuilder() {
+        if (reviveBuilder_ != null) {
+          return reviveBuilder_.getMessageOrBuilder();
+        } else {
+          return revive_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Revive revive = 15;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Call.Revive, org.apache.mesos.v1.scheduler.Protos.Call.Revive.Builder, org.apache.mesos.v1.scheduler.Protos.Call.ReviveOrBuilder> 
+          getReviveFieldBuilder() {
+        if (reviveBuilder_ == null) {
+          reviveBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.scheduler.Protos.Call.Revive, org.apache.mesos.v1.scheduler.Protos.Call.Revive.Builder, org.apache.mesos.v1.scheduler.Protos.Call.ReviveOrBuilder>(
+                  revive_,
+                  getParentForChildren(),
+                  isClean());
+          revive_ = null;
+        }
+        return reviveBuilder_;
+      }
+
+      // optional .mesos.v1.scheduler.Call.Kill kill = 6;
+      private org.apache.mesos.v1.scheduler.Protos.Call.Kill kill_ = org.apache.mesos.v1.scheduler.Protos.Call.Kill.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Call.Kill, org.apache.mesos.v1.scheduler.Protos.Call.Kill.Builder, org.apache.mesos.v1.scheduler.Protos.Call.KillOrBuilder> killBuilder_;
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Kill kill = 6;</code>
+       */
+      public boolean hasKill() {
+        return ((bitField0_ & 0x00000100) == 0x00000100);
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Kill kill = 6;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Call.Kill getKill() {
+        if (killBuilder_ == null) {
+          return kill_;
+        } else {
+          return killBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Kill kill = 6;</code>
+       */
+      public Builder setKill(org.apache.mesos.v1.scheduler.Protos.Call.Kill value) {
+        if (killBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          kill_ = value;
+          onChanged();
+        } else {
+          killBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000100;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Kill kill = 6;</code>
+       */
+      public Builder setKill(
+          org.apache.mesos.v1.scheduler.Protos.Call.Kill.Builder builderForValue) {
+        if (killBuilder_ == null) {
+          kill_ = builderForValue.build();
+          onChanged();
+        } else {
+          killBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000100;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Kill kill = 6;</code>
+       */
+      public Builder mergeKill(org.apache.mesos.v1.scheduler.Protos.Call.Kill value) {
+        if (killBuilder_ == null) {
+          if (((bitField0_ & 0x00000100) == 0x00000100) &&
+              kill_ != org.apache.mesos.v1.scheduler.Protos.Call.Kill.getDefaultInstance()) {
+            kill_ =
+              org.apache.mesos.v1.scheduler.Protos.Call.Kill.newBuilder(kill_).mergeFrom(value).buildPartial();
+          } else {
+            kill_ = value;
+          }
+          onChanged();
+        } else {
+          killBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000100;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Kill kill = 6;</code>
+       */
+      public Builder clearKill() {
+        if (killBuilder_ == null) {
+          kill_ = org.apache.mesos.v1.scheduler.Protos.Call.Kill.getDefaultInstance();
+          onChanged();
+        } else {
+          killBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000100);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Kill kill = 6;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Call.Kill.Builder getKillBuilder() {
+        bitField0_ |= 0x00000100;
+        onChanged();
+        return getKillFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Kill kill = 6;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Call.KillOrBuilder getKillOrBuilder() {
+        if (killBuilder_ != null) {
+          return killBuilder_.getMessageOrBuilder();
+        } else {
+          return kill_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Kill kill = 6;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Call.Kill, org.apache.mesos.v1.scheduler.Protos.Call.Kill.Builder, org.apache.mesos.v1.scheduler.Protos.Call.KillOrBuilder> 
+          getKillFieldBuilder() {
+        if (killBuilder_ == null) {
+          killBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.scheduler.Protos.Call.Kill, org.apache.mesos.v1.scheduler.Protos.Call.Kill.Builder, org.apache.mesos.v1.scheduler.Protos.Call.KillOrBuilder>(
+                  kill_,
+                  getParentForChildren(),
+                  isClean());
+          kill_ = null;
+        }
+        return killBuilder_;
+      }
+
+      // optional .mesos.v1.scheduler.Call.Shutdown shutdown = 7;
+      private org.apache.mesos.v1.scheduler.Protos.Call.Shutdown shutdown_ = org.apache.mesos.v1.scheduler.Protos.Call.Shutdown.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Call.Shutdown, org.apache.mesos.v1.scheduler.Protos.Call.Shutdown.Builder, org.apache.mesos.v1.scheduler.Protos.Call.ShutdownOrBuilder> shutdownBuilder_;
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Shutdown shutdown = 7;</code>
+       */
+      public boolean hasShutdown() {
+        return ((bitField0_ & 0x00000200) == 0x00000200);
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Shutdown shutdown = 7;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Call.Shutdown getShutdown() {
+        if (shutdownBuilder_ == null) {
+          return shutdown_;
+        } else {
+          return shutdownBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Shutdown shutdown = 7;</code>
+       */
+      public Builder setShutdown(org.apache.mesos.v1.scheduler.Protos.Call.Shutdown value) {
+        if (shutdownBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          shutdown_ = value;
+          onChanged();
+        } else {
+          shutdownBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000200;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Shutdown shutdown = 7;</code>
+       */
+      public Builder setShutdown(
+          org.apache.mesos.v1.scheduler.Protos.Call.Shutdown.Builder builderForValue) {
+        if (shutdownBuilder_ == null) {
+          shutdown_ = builderForValue.build();
+          onChanged();
+        } else {
+          shutdownBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000200;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Shutdown shutdown = 7;</code>
+       */
+      public Builder mergeShutdown(org.apache.mesos.v1.scheduler.Protos.Call.Shutdown value) {
+        if (shutdownBuilder_ == null) {
+          if (((bitField0_ & 0x00000200) == 0x00000200) &&
+              shutdown_ != org.apache.mesos.v1.scheduler.Protos.Call.Shutdown.getDefaultInstance()) {
+            shutdown_ =
+              org.apache.mesos.v1.scheduler.Protos.Call.Shutdown.newBuilder(shutdown_).mergeFrom(value).buildPartial();
+          } else {
+            shutdown_ = value;
+          }
+          onChanged();
+        } else {
+          shutdownBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000200;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Shutdown shutdown = 7;</code>
+       */
+      public Builder clearShutdown() {
+        if (shutdownBuilder_ == null) {
+          shutdown_ = org.apache.mesos.v1.scheduler.Protos.Call.Shutdown.getDefaultInstance();
+          onChanged();
+        } else {
+          shutdownBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000200);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Shutdown shutdown = 7;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Call.Shutdown.Builder getShutdownBuilder() {
+        bitField0_ |= 0x00000200;
+        onChanged();
+        return getShutdownFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Shutdown shutdown = 7;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Call.ShutdownOrBuilder getShutdownOrBuilder() {
+        if (shutdownBuilder_ != null) {
+          return shutdownBuilder_.getMessageOrBuilder();
+        } else {
+          return shutdown_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Shutdown shutdown = 7;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Call.Shutdown, org.apache.mesos.v1.scheduler.Protos.Call.Shutdown.Builder, org.apache.mesos.v1.scheduler.Protos.Call.ShutdownOrBuilder> 
+          getShutdownFieldBuilder() {
+        if (shutdownBuilder_ == null) {
+          shutdownBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.scheduler.Protos.Call.Shutdown, org.apache.mesos.v1.scheduler.Protos.Call.Shutdown.Builder, org.apache.mesos.v1.scheduler.Protos.Call.ShutdownOrBuilder>(
+                  shutdown_,
+                  getParentForChildren(),
+                  isClean());
+          shutdown_ = null;
+        }
+        return shutdownBuilder_;
+      }
+
+      // optional .mesos.v1.scheduler.Call.Acknowledge acknowledge = 8;
+      private org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge acknowledge_ = org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge, org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge.Builder, org.apache.mesos.v1.scheduler.Protos.Call.AcknowledgeOrBuilder> acknowledgeBuilder_;
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Acknowledge acknowledge = 8;</code>
+       */
+      public boolean hasAcknowledge() {
+        return ((bitField0_ & 0x00000400) == 0x00000400);
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Acknowledge acknowledge = 8;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge getAcknowledge() {
+        if (acknowledgeBuilder_ == null) {
+          return acknowledge_;
+        } else {
+          return acknowledgeBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Acknowledge acknowledge = 8;</code>
+       */
+      public Builder setAcknowledge(org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge value) {
+        if (acknowledgeBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          acknowledge_ = value;
+          onChanged();
+        } else {
+          acknowledgeBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000400;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Acknowledge acknowledge = 8;</code>
+       */
+      public Builder setAcknowledge(
+          org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge.Builder builderForValue) {
+        if (acknowledgeBuilder_ == null) {
+          acknowledge_ = builderForValue.build();
+          onChanged();
+        } else {
+          acknowledgeBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000400;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Acknowledge acknowledge = 8;</code>
+       */
+      public Builder mergeAcknowledge(org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge value) {
+        if (acknowledgeBuilder_ == null) {
+          if (((bitField0_ & 0x00000400) == 0x00000400) &&
+              acknowledge_ != org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge.getDefaultInstance()) {
+            acknowledge_ =
+              org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge.newBuilder(acknowledge_).mergeFrom(value).buildPartial();
+          } else {
+            acknowledge_ = value;
+          }
+          onChanged();
+        } else {
+          acknowledgeBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000400;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Acknowledge acknowledge = 8;</code>
+       */
+      public Builder clearAcknowledge() {
+        if (acknowledgeBuilder_ == null) {
+          acknowledge_ = org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge.getDefaultInstance();
+          onChanged();
+        } else {
+          acknowledgeBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000400);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Acknowledge acknowledge = 8;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge.Builder getAcknowledgeBuilder() {
+        bitField0_ |= 0x00000400;
+        onChanged();
+        return getAcknowledgeFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Acknowledge acknowledge = 8;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Call.AcknowledgeOrBuilder getAcknowledgeOrBuilder() {
+        if (acknowledgeBuilder_ != null) {
+          return acknowledgeBuilder_.getMessageOrBuilder();
+        } else {
+          return acknowledge_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Acknowledge acknowledge = 8;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge, org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge.Builder, org.apache.mesos.v1.scheduler.Protos.Call.AcknowledgeOrBuilder> 
+          getAcknowledgeFieldBuilder() {
+        if (acknowledgeBuilder_ == null) {
+          acknowledgeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge, org.apache.mesos.v1.scheduler.Protos.Call.Acknowledge.Builder, org.apache.mesos.v1.scheduler.Protos.Call.AcknowledgeOrBuilder>(
+                  acknowledge_,
+                  getParentForChildren(),
+                  isClean());
+          acknowledge_ = null;
+        }
+        return acknowledgeBuilder_;
+      }
+
+      // optional .mesos.v1.scheduler.Call.Reconcile reconcile = 9;
+      private org.apache.mesos.v1.scheduler.Protos.Call.Reconcile reconcile_ = org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Call.Reconcile, org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Builder, org.apache.mesos.v1.scheduler.Protos.Call.ReconcileOrBuilder> reconcileBuilder_;
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Reconcile reconcile = 9;</code>
+       */
+      public boolean hasReconcile() {
+        return ((bitField0_ & 0x00000800) == 0x00000800);
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Reconcile reconcile = 9;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Call.Reconcile getReconcile() {
+        if (reconcileBuilder_ == null) {
+          return reconcile_;
+        } else {
+          return reconcileBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Reconcile reconcile = 9;</code>
+       */
+      public Builder setReconcile(org.apache.mesos.v1.scheduler.Protos.Call.Reconcile value) {
+        if (reconcileBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          reconcile_ = value;
+          onChanged();
+        } else {
+          reconcileBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Reconcile reconcile = 9;</code>
+       */
+      public Builder setReconcile(
+          org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Builder builderForValue) {
+        if (reconcileBuilder_ == null) {
+          reconcile_ = builderForValue.build();
+          onChanged();
+        } else {
+          reconcileBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Reconcile reconcile = 9;</code>
+       */
+      public Builder mergeReconcile(org.apache.mesos.v1.scheduler.Protos.Call.Reconcile value) {
+        if (reconcileBuilder_ == null) {
+          if (((bitField0_ & 0x00000800) == 0x00000800) &&
+              reconcile_ != org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.getDefaultInstance()) {
+            reconcile_ =
+              org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.newBuilder(reconcile_).mergeFrom(value).buildPartial();
+          } else {
+            reconcile_ = value;
+          }
+          onChanged();
+        } else {
+          reconcileBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000800;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Reconcile reconcile = 9;</code>
+       */
+      public Builder clearReconcile() {
+        if (reconcileBuilder_ == null) {
+          reconcile_ = org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.getDefaultInstance();
+          onChanged();
+        } else {
+          reconcileBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000800);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Reconcile reconcile = 9;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Builder getReconcileBuilder() {
+        bitField0_ |= 0x00000800;
+        onChanged();
+        return getReconcileFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Reconcile reconcile = 9;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Call.ReconcileOrBuilder getReconcileOrBuilder() {
+        if (reconcileBuilder_ != null) {
+          return reconcileBuilder_.getMessageOrBuilder();
+        } else {
+          return reconcile_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Reconcile reconcile = 9;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Call.Reconcile, org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Builder, org.apache.mesos.v1.scheduler.Protos.Call.ReconcileOrBuilder> 
+          getReconcileFieldBuilder() {
+        if (reconcileBuilder_ == null) {
+          reconcileBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.scheduler.Protos.Call.Reconcile, org.apache.mesos.v1.scheduler.Protos.Call.Reconcile.Builder, org.apache.mesos.v1.scheduler.Protos.Call.ReconcileOrBuilder>(
+                  reconcile_,
+                  getParentForChildren(),
+                  isClean());
+          reconcile_ = null;
+        }
+        return reconcileBuilder_;
+      }
+
+      // optional .mesos.v1.scheduler.Call.Message message = 10;
+      private org.apache.mesos.v1.scheduler.Protos.Call.Message message_ = org.apache.mesos.v1.scheduler.Protos.Call.Message.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Call.Message, org.apache.mesos.v1.scheduler.Protos.Call.Message.Builder, org.apache.mesos.v1.scheduler.Protos.Call.MessageOrBuilder> messageBuilder_;
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Message message = 10;</code>
+       */
+      public boolean hasMessage() {
+        return ((bitField0_ & 0x00001000) == 0x00001000);
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Message message = 10;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Call.Message getMessage() {
+        if (messageBuilder_ == null) {
+          return message_;
+        } else {
+          return messageBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Message message = 10;</code>
+       */
+      public Builder setMessage(org.apache.mesos.v1.scheduler.Protos.Call.Message value) {
+        if (messageBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          message_ = value;
+          onChanged();
+        } else {
+          messageBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00001000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Message message = 10;</code>
+       */
+      public Builder setMessage(
+          org.apache.mesos.v1.scheduler.Protos.Call.Message.Builder builderForValue) {
+        if (messageBuilder_ == null) {
+          message_ = builderForValue.build();
+          onChanged();
+        } else {
+          messageBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00001000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Message message = 10;</code>
+       */
+      public Builder mergeMessage(org.apache.mesos.v1.scheduler.Protos.Call.Message value) {
+        if (messageBuilder_ == null) {
+          if (((bitField0_ & 0x00001000) == 0x00001000) &&
+              message_ != org.apache.mesos.v1.scheduler.Protos.Call.Message.getDefaultInstance()) {
+            message_ =
+              org.apache.mesos.v1.scheduler.Protos.Call.Message.newBuilder(message_).mergeFrom(value).buildPartial();
+          } else {
+            message_ = value;
+          }
+          onChanged();
+        } else {
+          messageBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00001000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Message message = 10;</code>
+       */
+      public Builder clearMessage() {
+        if (messageBuilder_ == null) {
+          message_ = org.apache.mesos.v1.scheduler.Protos.Call.Message.getDefaultInstance();
+          onChanged();
+        } else {
+          messageBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00001000);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Message message = 10;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Call.Message.Builder getMessageBuilder() {
+        bitField0_ |= 0x00001000;
+        onChanged();
+        return getMessageFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Message message = 10;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Call.MessageOrBuilder getMessageOrBuilder() {
+        if (messageBuilder_ != null) {
+          return messageBuilder_.getMessageOrBuilder();
+        } else {
+          return message_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Message message = 10;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Call.Message, org.apache.mesos.v1.scheduler.Protos.Call.Message.Builder, org.apache.mesos.v1.scheduler.Protos.Call.MessageOrBuilder> 
+          getMessageFieldBuilder() {
+        if (messageBuilder_ == null) {
+          messageBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.scheduler.Protos.Call.Message, org.apache.mesos.v1.scheduler.Protos.Call.Message.Builder, org.apache.mesos.v1.scheduler.Protos.Call.MessageOrBuilder>(
+                  message_,
+                  getParentForChildren(),
+                  isClean());
+          message_ = null;
+        }
+        return messageBuilder_;
+      }
+
+      // optional .mesos.v1.scheduler.Call.Request request = 11;
+      private org.apache.mesos.v1.scheduler.Protos.Call.Request request_ = org.apache.mesos.v1.scheduler.Protos.Call.Request.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Call.Request, org.apache.mesos.v1.scheduler.Protos.Call.Request.Builder, org.apache.mesos.v1.scheduler.Protos.Call.RequestOrBuilder> requestBuilder_;
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Request request = 11;</code>
+       */
+      public boolean hasRequest() {
+        return ((bitField0_ & 0x00002000) == 0x00002000);
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Request request = 11;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Call.Request getRequest() {
+        if (requestBuilder_ == null) {
+          return request_;
+        } else {
+          return requestBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Request request = 11;</code>
+       */
+      public Builder setRequest(org.apache.mesos.v1.scheduler.Protos.Call.Request value) {
+        if (requestBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          request_ = value;
+          onChanged();
+        } else {
+          requestBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00002000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Request request = 11;</code>
+       */
+      public Builder setRequest(
+          org.apache.mesos.v1.scheduler.Protos.Call.Request.Builder builderForValue) {
+        if (requestBuilder_ == null) {
+          request_ = builderForValue.build();
+          onChanged();
+        } else {
+          requestBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00002000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Request request = 11;</code>
+       */
+      public Builder mergeRequest(org.apache.mesos.v1.scheduler.Protos.Call.Request value) {
+        if (requestBuilder_ == null) {
+          if (((bitField0_ & 0x00002000) == 0x00002000) &&
+              request_ != org.apache.mesos.v1.scheduler.Protos.Call.Request.getDefaultInstance()) {
+            request_ =
+              org.apache.mesos.v1.scheduler.Protos.Call.Request.newBuilder(request_).mergeFrom(value).buildPartial();
+          } else {
+            request_ = value;
+          }
+          onChanged();
+        } else {
+          requestBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00002000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Request request = 11;</code>
+       */
+      public Builder clearRequest() {
+        if (requestBuilder_ == null) {
+          request_ = org.apache.mesos.v1.scheduler.Protos.Call.Request.getDefaultInstance();
+          onChanged();
+        } else {
+          requestBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00002000);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Request request = 11;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Call.Request.Builder getRequestBuilder() {
+        bitField0_ |= 0x00002000;
+        onChanged();
+        return getRequestFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Request request = 11;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Call.RequestOrBuilder getRequestOrBuilder() {
+        if (requestBuilder_ != null) {
+          return requestBuilder_.getMessageOrBuilder();
+        } else {
+          return request_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Request request = 11;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Call.Request, org.apache.mesos.v1.scheduler.Protos.Call.Request.Builder, org.apache.mesos.v1.scheduler.Protos.Call.RequestOrBuilder> 
+          getRequestFieldBuilder() {
+        if (requestBuilder_ == null) {
+          requestBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.scheduler.Protos.Call.Request, org.apache.mesos.v1.scheduler.Protos.Call.Request.Builder, org.apache.mesos.v1.scheduler.Protos.Call.RequestOrBuilder>(
+                  request_,
+                  getParentForChildren(),
+                  isClean());
+          request_ = null;
+        }
+        return requestBuilder_;
+      }
+
+      // optional .mesos.v1.scheduler.Call.Suppress suppress = 16;
+      private org.apache.mesos.v1.scheduler.Protos.Call.Suppress suppress_ = org.apache.mesos.v1.scheduler.Protos.Call.Suppress.getDefaultInstance();
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Call.Suppress, org.apache.mesos.v1.scheduler.Protos.Call.Suppress.Builder, org.apache.mesos.v1.scheduler.Protos.Call.SuppressOrBuilder> suppressBuilder_;
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Suppress suppress = 16;</code>
+       */
+      public boolean hasSuppress() {
+        return ((bitField0_ & 0x00004000) == 0x00004000);
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Suppress suppress = 16;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Call.Suppress getSuppress() {
+        if (suppressBuilder_ == null) {
+          return suppress_;
+        } else {
+          return suppressBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Suppress suppress = 16;</code>
+       */
+      public Builder setSuppress(org.apache.mesos.v1.scheduler.Protos.Call.Suppress value) {
+        if (suppressBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          suppress_ = value;
+          onChanged();
+        } else {
+          suppressBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00004000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Suppress suppress = 16;</code>
+       */
+      public Builder setSuppress(
+          org.apache.mesos.v1.scheduler.Protos.Call.Suppress.Builder builderForValue) {
+        if (suppressBuilder_ == null) {
+          suppress_ = builderForValue.build();
+          onChanged();
+        } else {
+          suppressBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00004000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Suppress suppress = 16;</code>
+       */
+      public Builder mergeSuppress(org.apache.mesos.v1.scheduler.Protos.Call.Suppress value) {
+        if (suppressBuilder_ == null) {
+          if (((bitField0_ & 0x00004000) == 0x00004000) &&
+              suppress_ != org.apache.mesos.v1.scheduler.Protos.Call.Suppress.getDefaultInstance()) {
+            suppress_ =
+              org.apache.mesos.v1.scheduler.Protos.Call.Suppress.newBuilder(suppress_).mergeFrom(value).buildPartial();
+          } else {
+            suppress_ = value;
+          }
+          onChanged();
+        } else {
+          suppressBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00004000;
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Suppress suppress = 16;</code>
+       */
+      public Builder clearSuppress() {
+        if (suppressBuilder_ == null) {
+          suppress_ = org.apache.mesos.v1.scheduler.Protos.Call.Suppress.getDefaultInstance();
+          onChanged();
+        } else {
+          suppressBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00004000);
+        return this;
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Suppress suppress = 16;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Call.Suppress.Builder getSuppressBuilder() {
+        bitField0_ |= 0x00004000;
+        onChanged();
+        return getSuppressFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Suppress suppress = 16;</code>
+       */
+      public org.apache.mesos.v1.scheduler.Protos.Call.SuppressOrBuilder getSuppressOrBuilder() {
+        if (suppressBuilder_ != null) {
+          return suppressBuilder_.getMessageOrBuilder();
+        } else {
+          return suppress_;
+        }
+      }
+      /**
+       * <code>optional .mesos.v1.scheduler.Call.Suppress suppress = 16;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.mesos.v1.scheduler.Protos.Call.Suppress, org.apache.mesos.v1.scheduler.Protos.Call.Suppress.Builder, org.apache.mesos.v1.scheduler.Protos.Call.SuppressOrBuilder> 
+          getSuppressFieldBuilder() {
+        if (suppressBuilder_ == null) {
+          suppressBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.mesos.v1.scheduler.Protos.Call.Suppress, org.apache.mesos.v1.scheduler.Protos.Call.Suppress.Builder, org.apache.mesos.v1.scheduler.Protos.Call.SuppressOrBuilder>(
+                  suppress_,
+                  getParentForChildren(),
+                  isClean());
+          suppress_ = null;
+        }
+        return suppressBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:mesos.v1.scheduler.Call)
+    }
+
+    static {
+      defaultInstance = new Call(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:mesos.v1.scheduler.Call)
+  }
+
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_scheduler_Event_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_scheduler_Event_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_scheduler_Event_Subscribed_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_scheduler_Event_Subscribed_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_scheduler_Event_Offers_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_scheduler_Event_Offers_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_scheduler_Event_InverseOffers_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_scheduler_Event_InverseOffers_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_scheduler_Event_Rescind_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_scheduler_Event_Rescind_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_scheduler_Event_RescindInverseOffer_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_scheduler_Event_RescindInverseOffer_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_scheduler_Event_Update_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_scheduler_Event_Update_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_scheduler_Event_Message_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_scheduler_Event_Message_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_scheduler_Event_Failure_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_scheduler_Event_Failure_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_scheduler_Event_Error_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_scheduler_Event_Error_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_scheduler_Call_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_scheduler_Call_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_scheduler_Call_Subscribe_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_scheduler_Call_Subscribe_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_scheduler_Call_Accept_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_scheduler_Call_Accept_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_scheduler_Call_Decline_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_scheduler_Call_Decline_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_scheduler_Call_AcceptInverseOffers_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_scheduler_Call_AcceptInverseOffers_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_scheduler_Call_DeclineInverseOffers_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_scheduler_Call_DeclineInverseOffers_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_scheduler_Call_Revive_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_scheduler_Call_Revive_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_scheduler_Call_Kill_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_scheduler_Call_Kill_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_scheduler_Call_Shutdown_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_scheduler_Call_Shutdown_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_scheduler_Call_Acknowledge_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_scheduler_Call_Acknowledge_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_scheduler_Call_Reconcile_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_scheduler_Call_Reconcile_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_scheduler_Call_Reconcile_Task_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_scheduler_Call_Reconcile_Task_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_scheduler_Call_Message_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_scheduler_Call_Message_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_scheduler_Call_Request_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_scheduler_Call_Request_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_mesos_v1_scheduler_Call_Suppress_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_mesos_v1_scheduler_Call_Suppress_fieldAccessorTable;
+
+  public static com.google.protobuf.Descriptors.FileDescriptor
+      getDescriptor() {
+    return descriptor;
+  }
+  private static com.google.protobuf.Descriptors.FileDescriptor
+      descriptor;
+  static {
+    java.lang.String[] descriptorData = {
+      "\n\030mesos/v1/scheduler.proto\022\022mesos.v1.sch" +
+      "eduler\032\024mesos/v1/mesos.proto\"\345\n\n\005Event\022," +
+      "\n\004type\030\001 \001(\0162\036.mesos.v1.scheduler.Event." +
+      "Type\0228\n\nsubscribed\030\002 \001(\0132$.mesos.v1.sche" +
+      "duler.Event.Subscribed\0220\n\006offers\030\003 \001(\0132 " +
+      ".mesos.v1.scheduler.Event.Offers\022?\n\016inve" +
+      "rse_offers\030\t \001(\0132\'.mesos.v1.scheduler.Ev" +
+      "ent.InverseOffers\0222\n\007rescind\030\004 \001(\0132!.mes" +
+      "os.v1.scheduler.Event.Rescind\022L\n\025rescind" +
+      "_inverse_offer\030\n \001(\0132-.mesos.v1.schedule",
+      "r.Event.RescindInverseOffer\0220\n\006update\030\005 " +
+      "\001(\0132 .mesos.v1.scheduler.Event.Update\0222\n" +
+      "\007message\030\006 \001(\0132!.mesos.v1.scheduler.Even" +
+      "t.Message\0222\n\007failure\030\007 \001(\0132!.mesos.v1.sc" +
+      "heduler.Event.Failure\022.\n\005error\030\010 \001(\0132\037.m" +
+      "esos.v1.scheduler.Event.Error\032\210\001\n\nSubscr" +
+      "ibed\022+\n\014framework_id\030\001 \002(\0132\025.mesos.v1.Fr" +
+      "ameworkID\022\"\n\032heartbeat_interval_seconds\030" +
+      "\002 \001(\001\022)\n\013master_info\030\003 \001(\0132\024.mesos.v1.Ma" +
+      "sterInfo\032)\n\006Offers\022\037\n\006offers\030\001 \003(\0132\017.mes",
+      "os.v1.Offer\032?\n\rInverseOffers\022.\n\016inverse_" +
+      "offers\030\001 \003(\0132\026.mesos.v1.InverseOffer\032.\n\007" +
+      "Rescind\022#\n\010offer_id\030\001 \002(\0132\021.mesos.v1.Off" +
+      "erID\032B\n\023RescindInverseOffer\022+\n\020inverse_o" +
+      "ffer_id\030\001 \002(\0132\021.mesos.v1.OfferID\032.\n\006Upda" +
+      "te\022$\n\006status\030\001 \002(\0132\024.mesos.v1.TaskStatus" +
+      "\032g\n\007Message\022#\n\010agent_id\030\001 \002(\0132\021.mesos.v1" +
+      ".AgentID\022)\n\013executor_id\030\002 \002(\0132\024.mesos.v1" +
+      ".ExecutorID\022\014\n\004data\030\003 \002(\014\032i\n\007Failure\022#\n\010" +
+      "agent_id\030\001 \001(\0132\021.mesos.v1.AgentID\022)\n\013exe",
+      "cutor_id\030\002 \001(\0132\024.mesos.v1.ExecutorID\022\016\n\006" +
+      "status\030\003 \001(\005\032\030\n\005Error\022\017\n\007message\030\001 \002(\t\"\253" +
+      "\001\n\004Type\022\013\n\007UNKNOWN\020\000\022\016\n\nSUBSCRIBED\020\001\022\n\n\006" +
+      "OFFERS\020\002\022\022\n\016INVERSE_OFFERS\020\t\022\013\n\007RESCIND\020" +
+      "\003\022\031\n\025RESCIND_INVERSE_OFFER\020\n\022\n\n\006UPDATE\020\004" +
+      "\022\013\n\007MESSAGE\020\005\022\013\n\007FAILURE\020\006\022\t\n\005ERROR\020\007\022\r\n" +
+      "\tHEARTBEAT\020\010\"\311\021\n\004Call\022+\n\014framework_id\030\001 " +
+      "\001(\0132\025.mesos.v1.FrameworkID\022+\n\004type\030\002 \001(\016" +
+      "2\035.mesos.v1.scheduler.Call.Type\0225\n\tsubsc" +
+      "ribe\030\003 \001(\0132\".mesos.v1.scheduler.Call.Sub",
+      "scribe\022/\n\006accept\030\004 \001(\0132\037.mesos.v1.schedu" +
+      "ler.Call.Accept\0221\n\007decline\030\005 \001(\0132 .mesos" +
+      ".v1.scheduler.Call.Decline\022K\n\025accept_inv" +
+      "erse_offers\030\r \001(\0132,.mesos.v1.scheduler.C" +
+      "all.AcceptInverseOffers\022M\n\026decline_inver" +
+      "se_offers\030\016 \001(\0132-.mesos.v1.scheduler.Cal" +
+      "l.DeclineInverseOffers\022/\n\006revive\030\017 \001(\0132\037" +
+      ".mesos.v1.scheduler.Call.Revive\022+\n\004kill\030" +
+      "\006 \001(\0132\035.mesos.v1.scheduler.Call.Kill\0223\n\010" +
+      "shutdown\030\007 \001(\0132!.mesos.v1.scheduler.Call",
+      ".Shutdown\0229\n\013acknowledge\030\010 \001(\0132$.mesos.v" +
+      "1.scheduler.Call.Acknowledge\0225\n\treconcil" +
+      "e\030\t \001(\0132\".mesos.v1.scheduler.Call.Reconc" +
+      "ile\0221\n\007message\030\n \001(\0132 .mesos.v1.schedule" +
+      "r.Call.Message\0221\n\007request\030\013 \001(\0132 .mesos." +
+      "v1.scheduler.Call.Request\0223\n\010suppress\030\020 " +
+      "\001(\0132!.mesos.v1.scheduler.Call.Suppress\032V" +
+      "\n\tSubscribe\022/\n\016framework_info\030\001 \002(\0132\027.me" +
+      "sos.v1.FrameworkInfo\022\030\n\020suppressed_roles" +
+      "\030\002 \003(\t\032\201\001\n\006Accept\022$\n\toffer_ids\030\001 \003(\0132\021.m",
+      "esos.v1.OfferID\022-\n\noperations\030\002 \003(\0132\031.me" +
+      "sos.v1.Offer.Operation\022\"\n\007filters\030\003 \001(\0132" +
+      "\021.mesos.v1.Filters\032S\n\007Decline\022$\n\toffer_i" +
+      "ds\030\001 \003(\0132\021.mesos.v1.OfferID\022\"\n\007filters\030\002" +
+      " \001(\0132\021.mesos.v1.Filters\032g\n\023AcceptInverse" +
+      "Offers\022,\n\021inverse_offer_ids\030\001 \003(\0132\021.meso" +
+      "s.v1.OfferID\022\"\n\007filters\030\002 \001(\0132\021.mesos.v1" +
+      ".Filters\032h\n\024DeclineInverseOffers\022,\n\021inve" +
+      "rse_offer_ids\030\001 \003(\0132\021.mesos.v1.OfferID\022\"" +
+      "\n\007filters\030\002 \001(\0132\021.mesos.v1.Filters\032\027\n\006Re",
+      "vive\022\r\n\005roles\030\001 \003(\t\032y\n\004Kill\022!\n\007task_id\030\001" +
+      " \002(\0132\020.mesos.v1.TaskID\022#\n\010agent_id\030\002 \001(\013" +
+      "2\021.mesos.v1.AgentID\022)\n\013kill_policy\030\003 \001(\013" +
+      "2\024.mesos.v1.KillPolicy\032Z\n\010Shutdown\022)\n\013ex" +
+      "ecutor_id\030\001 \002(\0132\024.mesos.v1.ExecutorID\022#\n" +
+      "\010agent_id\030\002 \002(\0132\021.mesos.v1.AgentID\032c\n\013Ac" +
+      "knowledge\022#\n\010agent_id\030\001 \002(\0132\021.mesos.v1.A" +
+      "gentID\022!\n\007task_id\030\002 \002(\0132\020.mesos.v1.TaskI" +
+      "D\022\014\n\004uuid\030\003 \002(\014\032\223\001\n\tReconcile\0226\n\005tasks\030\001" +
+      " \003(\0132\'.mesos.v1.scheduler.Call.Reconcile",
+      ".Task\032N\n\004Task\022!\n\007task_id\030\001 \002(\0132\020.mesos.v" +
+      "1.TaskID\022#\n\010agent_id\030\002 \001(\0132\021.mesos.v1.Ag" +
+      "entID\032g\n\007Message\022#\n\010agent_id\030\001 \002(\0132\021.mes" +
+      "os.v1.AgentID\022)\n\013executor_id\030\002 \002(\0132\024.mes" +
+      "os.v1.ExecutorID\022\014\n\004data\030\003 \002(\014\032.\n\007Reques" +
+      "t\022#\n\010requests\030\001 \003(\0132\021.mesos.v1.Request\032\031" +
+      "\n\010Suppress\022\r\n\005roles\030\001 \003(\t\"\354\001\n\004Type\022\013\n\007UN" +
+      "KNOWN\020\000\022\r\n\tSUBSCRIBE\020\001\022\014\n\010TEARDOWN\020\002\022\n\n\006" +
+      "ACCEPT\020\003\022\013\n\007DECLINE\020\004\022\031\n\025ACCEPT_INVERSE_" +
+      "OFFERS\020\r\022\032\n\026DECLINE_INVERSE_OFFERS\020\016\022\n\n\006",
+      "REVIVE\020\005\022\010\n\004KILL\020\006\022\014\n\010SHUTDOWN\020\007\022\017\n\013ACKN" +
+      "OWLEDGE\020\010\022\r\n\tRECONCILE\020\t\022\013\n\007MESSAGE\020\n\022\013\n" +
+      "\007REQUEST\020\013\022\014\n\010SUPPRESS\020\014B\'\n\035org.apache.m" +
+      "esos.v1.schedulerB\006Protos"
+    };
+    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
+      new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
+        public com.google.protobuf.ExtensionRegistry assignDescriptors(
+            com.google.protobuf.Descriptors.FileDescriptor root) {
+          descriptor = root;
+          internal_static_mesos_v1_scheduler_Event_descriptor =
+            getDescriptor().getMessageTypes().get(0);
+          internal_static_mesos_v1_scheduler_Event_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_scheduler_Event_descriptor,
+              new java.lang.String[] { "Type", "Subscribed", "Offers", "InverseOffers", "Rescind", "RescindInverseOffer", "Update", "Message", "Failure", "Error", });
+          internal_static_mesos_v1_scheduler_Event_Subscribed_descriptor =
+            internal_static_mesos_v1_scheduler_Event_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_v1_scheduler_Event_Subscribed_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_scheduler_Event_Subscribed_descriptor,
+              new java.lang.String[] { "FrameworkId", "HeartbeatIntervalSeconds", "MasterInfo", });
+          internal_static_mesos_v1_scheduler_Event_Offers_descriptor =
+            internal_static_mesos_v1_scheduler_Event_descriptor.getNestedTypes().get(1);
+          internal_static_mesos_v1_scheduler_Event_Offers_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_scheduler_Event_Offers_descriptor,
+              new java.lang.String[] { "Offers", });
+          internal_static_mesos_v1_scheduler_Event_InverseOffers_descriptor =
+            internal_static_mesos_v1_scheduler_Event_descriptor.getNestedTypes().get(2);
+          internal_static_mesos_v1_scheduler_Event_InverseOffers_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_scheduler_Event_InverseOffers_descriptor,
+              new java.lang.String[] { "InverseOffers", });
+          internal_static_mesos_v1_scheduler_Event_Rescind_descriptor =
+            internal_static_mesos_v1_scheduler_Event_descriptor.getNestedTypes().get(3);
+          internal_static_mesos_v1_scheduler_Event_Rescind_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_scheduler_Event_Rescind_descriptor,
+              new java.lang.String[] { "OfferId", });
+          internal_static_mesos_v1_scheduler_Event_RescindInverseOffer_descriptor =
+            internal_static_mesos_v1_scheduler_Event_descriptor.getNestedTypes().get(4);
+          internal_static_mesos_v1_scheduler_Event_RescindInverseOffer_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_scheduler_Event_RescindInverseOffer_descriptor,
+              new java.lang.String[] { "InverseOfferId", });
+          internal_static_mesos_v1_scheduler_Event_Update_descriptor =
+            internal_static_mesos_v1_scheduler_Event_descriptor.getNestedTypes().get(5);
+          internal_static_mesos_v1_scheduler_Event_Update_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_scheduler_Event_Update_descriptor,
+              new java.lang.String[] { "Status", });
+          internal_static_mesos_v1_scheduler_Event_Message_descriptor =
+            internal_static_mesos_v1_scheduler_Event_descriptor.getNestedTypes().get(6);
+          internal_static_mesos_v1_scheduler_Event_Message_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_scheduler_Event_Message_descriptor,
+              new java.lang.String[] { "AgentId", "ExecutorId", "Data", });
+          internal_static_mesos_v1_scheduler_Event_Failure_descriptor =
+            internal_static_mesos_v1_scheduler_Event_descriptor.getNestedTypes().get(7);
+          internal_static_mesos_v1_scheduler_Event_Failure_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_scheduler_Event_Failure_descriptor,
+              new java.lang.String[] { "AgentId", "ExecutorId", "Status", });
+          internal_static_mesos_v1_scheduler_Event_Error_descriptor =
+            internal_static_mesos_v1_scheduler_Event_descriptor.getNestedTypes().get(8);
+          internal_static_mesos_v1_scheduler_Event_Error_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_scheduler_Event_Error_descriptor,
+              new java.lang.String[] { "Message", });
+          internal_static_mesos_v1_scheduler_Call_descriptor =
+            getDescriptor().getMessageTypes().get(1);
+          internal_static_mesos_v1_scheduler_Call_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_scheduler_Call_descriptor,
+              new java.lang.String[] { "FrameworkId", "Type", "Subscribe", "Accept", "Decline", "AcceptInverseOffers", "DeclineInverseOffers", "Revive", "Kill", "Shutdown", "Acknowledge", "Reconcile", "Message", "Request", "Suppress", });
+          internal_static_mesos_v1_scheduler_Call_Subscribe_descriptor =
+            internal_static_mesos_v1_scheduler_Call_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_v1_scheduler_Call_Subscribe_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_scheduler_Call_Subscribe_descriptor,
+              new java.lang.String[] { "FrameworkInfo", "SuppressedRoles", });
+          internal_static_mesos_v1_scheduler_Call_Accept_descriptor =
+            internal_static_mesos_v1_scheduler_Call_descriptor.getNestedTypes().get(1);
+          internal_static_mesos_v1_scheduler_Call_Accept_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_scheduler_Call_Accept_descriptor,
+              new java.lang.String[] { "OfferIds", "Operations", "Filters", });
+          internal_static_mesos_v1_scheduler_Call_Decline_descriptor =
+            internal_static_mesos_v1_scheduler_Call_descriptor.getNestedTypes().get(2);
+          internal_static_mesos_v1_scheduler_Call_Decline_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_scheduler_Call_Decline_descriptor,
+              new java.lang.String[] { "OfferIds", "Filters", });
+          internal_static_mesos_v1_scheduler_Call_AcceptInverseOffers_descriptor =
+            internal_static_mesos_v1_scheduler_Call_descriptor.getNestedTypes().get(3);
+          internal_static_mesos_v1_scheduler_Call_AcceptInverseOffers_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_scheduler_Call_AcceptInverseOffers_descriptor,
+              new java.lang.String[] { "InverseOfferIds", "Filters", });
+          internal_static_mesos_v1_scheduler_Call_DeclineInverseOffers_descriptor =
+            internal_static_mesos_v1_scheduler_Call_descriptor.getNestedTypes().get(4);
+          internal_static_mesos_v1_scheduler_Call_DeclineInverseOffers_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_scheduler_Call_DeclineInverseOffers_descriptor,
+              new java.lang.String[] { "InverseOfferIds", "Filters", });
+          internal_static_mesos_v1_scheduler_Call_Revive_descriptor =
+            internal_static_mesos_v1_scheduler_Call_descriptor.getNestedTypes().get(5);
+          internal_static_mesos_v1_scheduler_Call_Revive_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_scheduler_Call_Revive_descriptor,
+              new java.lang.String[] { "Roles", });
+          internal_static_mesos_v1_scheduler_Call_Kill_descriptor =
+            internal_static_mesos_v1_scheduler_Call_descriptor.getNestedTypes().get(6);
+          internal_static_mesos_v1_scheduler_Call_Kill_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_scheduler_Call_Kill_descriptor,
+              new java.lang.String[] { "TaskId", "AgentId", "KillPolicy", });
+          internal_static_mesos_v1_scheduler_Call_Shutdown_descriptor =
+            internal_static_mesos_v1_scheduler_Call_descriptor.getNestedTypes().get(7);
+          internal_static_mesos_v1_scheduler_Call_Shutdown_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_scheduler_Call_Shutdown_descriptor,
+              new java.lang.String[] { "ExecutorId", "AgentId", });
+          internal_static_mesos_v1_scheduler_Call_Acknowledge_descriptor =
+            internal_static_mesos_v1_scheduler_Call_descriptor.getNestedTypes().get(8);
+          internal_static_mesos_v1_scheduler_Call_Acknowledge_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_scheduler_Call_Acknowledge_descriptor,
+              new java.lang.String[] { "AgentId", "TaskId", "Uuid", });
+          internal_static_mesos_v1_scheduler_Call_Reconcile_descriptor =
+            internal_static_mesos_v1_scheduler_Call_descriptor.getNestedTypes().get(9);
+          internal_static_mesos_v1_scheduler_Call_Reconcile_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_scheduler_Call_Reconcile_descriptor,
+              new java.lang.String[] { "Tasks", });
+          internal_static_mesos_v1_scheduler_Call_Reconcile_Task_descriptor =
+            internal_static_mesos_v1_scheduler_Call_Reconcile_descriptor.getNestedTypes().get(0);
+          internal_static_mesos_v1_scheduler_Call_Reconcile_Task_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_scheduler_Call_Reconcile_Task_descriptor,
+              new java.lang.String[] { "TaskId", "AgentId", });
+          internal_static_mesos_v1_scheduler_Call_Message_descriptor =
+            internal_static_mesos_v1_scheduler_Call_descriptor.getNestedTypes().get(10);
+          internal_static_mesos_v1_scheduler_Call_Message_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_scheduler_Call_Message_descriptor,
+              new java.lang.String[] { "AgentId", "ExecutorId", "Data", });
+          internal_static_mesos_v1_scheduler_Call_Request_descriptor =
+            internal_static_mesos_v1_scheduler_Call_descriptor.getNestedTypes().get(11);
+          internal_static_mesos_v1_scheduler_Call_Request_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_scheduler_Call_Request_descriptor,
+              new java.lang.String[] { "Requests", });
+          internal_static_mesos_v1_scheduler_Call_Suppress_descriptor =
+            internal_static_mesos_v1_scheduler_Call_descriptor.getNestedTypes().get(12);
+          internal_static_mesos_v1_scheduler_Call_Suppress_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_mesos_v1_scheduler_Call_Suppress_descriptor,
+              new java.lang.String[] { "Roles", });
+          return null;
+        }
+      };
+    com.google.protobuf.Descriptors.FileDescriptor
+      .internalBuildGeneratedFileFrom(descriptorData,
+        new com.google.protobuf.Descriptors.FileDescriptor[] {
+          org.apache.mesos.v1.Protos.getDescriptor(),
+        }, assigner);
+  }
+
+  // @@protoc_insertion_point(outer_class_scope)
+}
diff --git a/myriad-commons/src/main/java/org/apache/mesos/v1/scheduler/Scheduler.java b/myriad-commons/src/main/java/org/apache/mesos/v1/scheduler/Scheduler.java
new file mode 100644
index 0000000..002acef
--- /dev/null
+++ b/myriad-commons/src/main/java/org/apache/mesos/v1/scheduler/Scheduler.java
@@ -0,0 +1,53 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.mesos.v1.scheduler;
+
+import org.apache.mesos.v1.scheduler.Protos.Event;
+
+/**
+ * Callback interface to be implemented by schedulers.
+ * Note that only one callback will be invoked at a time,
+ * so it is not recommended that you block within a callback because
+ * it may cause a deadlock.
+ * <p>
+ * Each callback includes a reference to the Mesos interface that was
+ * used to run this scheduler. The reference will not change for the
+ * duration of a scheduler from the time it is instantiated.
+ * This is intended for convenience so that a scheduler doesn't need to
+ * store a reference to the interface itself.
+ */
+
+public interface Scheduler {
+    /**
+     * Invoked when a connection is established with the master upon a
+     * master (re-)detection.
+     */
+    void connected(Mesos mesos);
+
+    /**
+     * Invoked when no master is detected or when the existing persistent
+     * connection is interrupted.
+     */
+    void disconnected(Mesos mesos);
+
+    /**
+     * Invoked when a new event is received from the Mesos master.
+     */
+    void received(Mesos mesos, Event event);
+}
diff --git a/myriad-commons/src/main/java/org/apache/mesos/v1/scheduler/V0Mesos.java b/myriad-commons/src/main/java/org/apache/mesos/v1/scheduler/V0Mesos.java
new file mode 100644
index 0000000..753de63
--- /dev/null
+++ b/myriad-commons/src/main/java/org/apache/mesos/v1/scheduler/V0Mesos.java
@@ -0,0 +1,84 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.mesos.v1.scheduler;
+
+import org.apache.mesos.MesosNativeLibrary;
+
+import org.apache.mesos.v1.Protos.Credential;
+import org.apache.mesos.v1.Protos.FrameworkInfo;
+
+import org.apache.mesos.v1.scheduler.Protos.Call;
+import org.apache.mesos.v1.scheduler.Protos.Event;
+
+/**
+ * This implementation acts as an adapter from the v0 (driver + scheduler)
+ * to the v1 Scheduler interface. It uses the MesosSchedulerDriver under
+ * the hood for interacting with Mesos. This class is thread-safe.
+ */
+public class V0Mesos implements Mesos {
+    static {
+        MesosNativeLibrary.load();
+    }
+
+    public V0Mesos(Scheduler scheduler, FrameworkInfo framework, String master) {
+        this(scheduler, framework, master, null);
+    }
+
+    public V0Mesos(Scheduler scheduler,
+                   FrameworkInfo framework,
+                   String master,
+                   Credential credential) {
+        if (scheduler == null) {
+            throw new NullPointerException("Not expecting a null scheduler");
+        }
+
+        if (framework == null) {
+            throw new NullPointerException("Not expecting a null framework");
+        }
+
+        if (master == null) {
+            throw new NullPointerException("Not expecting a null master");
+        }
+
+        this.scheduler = scheduler;
+        this.framework = framework;
+        this.master = master;
+        this.credential = credential;
+
+        initialize();
+    }
+
+    @Override
+    public native void send(Call call);
+
+    // This is currently a no-op for the driver as it does not expose semantics
+    // to force reconnection.
+    @Override
+    public void reconnect() {}
+
+    protected native void initialize();
+    protected native void finalize();
+
+    private final Scheduler scheduler;
+    private final FrameworkInfo framework;
+    private final String master;
+    private final Credential credential;
+
+    private long __mesos;
+}
diff --git a/myriad-commons/src/main/java/org/apache/mesos/v1/scheduler/V1Mesos.java b/myriad-commons/src/main/java/org/apache/mesos/v1/scheduler/V1Mesos.java
new file mode 100644
index 0000000..59a0a35
--- /dev/null
+++ b/myriad-commons/src/main/java/org/apache/mesos/v1/scheduler/V1Mesos.java
@@ -0,0 +1,84 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.mesos.v1.scheduler;
+
+import org.apache.mesos.MesosNativeLibrary;
+
+import org.apache.mesos.v1.Protos.Credential;
+import org.apache.mesos.v1.Protos.FrameworkInfo;
+
+import org.apache.mesos.v1.scheduler.Protos.Call;
+
+/**
+ * Concrete implementation of the Mesos interface that connects a Scheduler
+ * with a Mesos master. This class is thread-safe.
+ * <p>
+ * This implementation uses the scheduler library (src/scheduler/scheduler.cpp)
+ * based on the V1 Mesos Scheduler API. The library is responsible for
+ * invoking the Scheduler callbacks as it communicates with the Mesos master.
+ * <p>
+ * <p>
+ * Note that the scheduler library uses GLOG to do its own logging. GLOG flags
+ * can be set via environment variables, prefixing the flag name with
+ * "GLOG_", e.g., "GLOG_v=1". For Mesos specific logging flags see
+ * src/logging/flags.hpp. Mesos flags can also be set via environment
+ * variables, prefixing the flag name with "MESOS_", e.g., "MESOS_QUIET=1".
+ * <p>
+ * See src/examples/java/V1TestFramework.java for an example of using this.
+ */
+public class V1Mesos implements Mesos {
+    static {
+        MesosNativeLibrary.load();
+    }
+
+    public V1Mesos(Scheduler scheduler, String master) {
+        this(scheduler, master, null);
+    }
+
+    public V1Mesos(Scheduler scheduler, String master, Credential credential) {
+        if (scheduler == null) {
+            throw new NullPointerException("Not expecting a null scheduler");
+        }
+
+        if (master == null) {
+            throw new NullPointerException("Not expecting a null master");
+        }
+
+        this.scheduler = scheduler;
+        this.master = master;
+        this.credential = credential;
+
+        initialize();
+    }
+
+    @Override
+    public native void send(Call call);
+
+    @Override
+    public native void reconnect();
+
+    protected native void initialize();
+    protected native void finalize();
+
+    private final Scheduler scheduler;
+    private final String master;
+    private final Credential credential;
+
+    private long __mesos;
+}